JS 语音插件
JS 插件把语音服务的识别协议写在一个 .js 文件里,在中州鹅内置的 QuickJS 中运行。输入法负责录音、会话和结果回填;使用内置插件时无需另外安装语音 APK。
从这里开始
- 打开 设置 → 输入与候选 → 语音输入 → 语音插件设置。
- 选择一个插件,填写它所需的普通参数和密钥。
- 核对并批准该插件声明的完整网络主机清单。内置插件同样需要授权。
- 在“首选语音输入”选择它,授予录音权限,在普通输入框点击语音按钮测试。
工具栏语音按钮短按开始识别,长按打开引擎选择器;JS 项旁的设置入口可直接打开对应插件。隐藏语音按钮后仍能在设置中选择首选引擎。 语音按钮可在工具栏配置中调整位置、图标和动作,收起键盘按钮独立保留;密码框不会显示语音按钮。
四个内置插件
| 插件 | 使用方式 | 需要准备 |
|---|---|---|
通义千问 qwen-asr | 实时流式或单次请求 | 对应服务的 API key,按所选模式配置模型与端点 |
豆包 doubao-asr | 火山引擎流式或单次结果 | 新版 API key,或旧版 access token 与 App ID;核对资源授权 |
腾讯云识别 tencent-asr | 实时语音识别 | AppID、SecretId、SecretKey |
腾讯云翻译 tencent-translate | 实时语音识别与翻译,按插件选项输出 | AppID、SecretId、SecretKey,以及源语言、目标语言和模型 |
内置脚本不附送云端账号或服务额度。账号权限、模型可用性和计费由对应服务管理。 腾讯云插件的 AppID 应填项目的 10 位 APPID,不是 12 位账号 ID(UIN)。 豆包切换鉴权方式时会联动资源 ID:新版 X-Api-Key 默认使用 2.0 小时版,旧版鉴权默认使用 1.0 小时版;仍应按自己账号已授权的资源调整。
导入、覆盖与移除
在插件页选择“导入插件…”,导入自包含的 .js 文件,源码上限 256 KiB。确认窗口会显示名称、ID、版本、网络主机和设置项等信息,确认后安装。
- 同一个已导入插件 ID 表示覆盖升级,保留已有普通设置与密钥。
- 内置插件 ID 保留,外部文件不能覆盖内置项。
- 新增主机需要重新批准完整清单。修改端点设置不会扩大可访问范围。
- 外部插件可在自己的设置页移除;脚本与注册项移除后,原设置和密钥保留,同 ID 重新导入可继续使用。当前首选指向已移除插件时会清空并提示。
网络授权与密钥
网络访问必须同时满足 脚本声明主机 + 用户批准该插件 + HTTPS/WSS。授权互相独立,可以在对应插件设置页撤销;撤销后新会话与已有连接的后续网络操作都会受阻。
密钥由宿主加密保存,脚本只引用字段名,不能读取明文。不要把密钥直接写进脚本源码或普通文本设置项。 完整备份包含导入脚本、普通设置、授权记录和密钥密文,但不包含 Android Keystore 的解密密钥。换设备、卸载重装或清除应用数据后,必须重新填写密钥,详见备份与恢复。
常见问题
| 现象 | 先检查 |
|---|---|
| 插件导入失败 | 文件大小、语法、插件 ID、voice.asr 声明与合法主机清单;普通 JS 文件不一定是语音插件 |
| 显示主机未授权 | 打开该插件设置,检查当前脚本的主机清单并明确批准;不要只改端点 |
| 鉴权失败 | 密钥是否重填、鉴权模式是否正确、账号是否开通对应模型或资源;腾讯云核对 APPID 与 UIN |
| 点击后无法录音 | 系统录音权限、当前首选引擎、插件配置及页面错误提示 |
| 结束后还在等待 | 单次请求模式需上传整段音频再等待结果,宿主收尾最多等 40 秒;不要立即切换输入框 |
| 长录音或插件异常中止 | 宿主对内存、消息、缓冲与回调时间设有限额,超限会结束会话;缩短录音或修正插件 |
插件开发
注册、设置字段、生命周期、二进制处理、HMAC 签名与资源预算集中在JS 宿主与开发接口。 需要本地模型、Android API 或厂商 SDK 时,使用外部 AIDL 提供方。
旧开发章节已集中到上述接口页;Foxy 英文参考原文继续保留。