前言¶
在 DSH 里和 agent 对话,多数时候仍靠键盘。官方语音输入能转文字,但若一直开着麦克风、或把唤醒词和内容连说,容易误发、也不清楚当前处于「在听唤醒词」还是「在录正文」。维护者 ljz970803 的 dsh-voice-wake 把流程收成固定几步:单独说唤醒词 → 听到提示音 → 再说内容 → 停顿后自动进会话。识别走 DSH 的 speechToText(默认本机 SenseVoice),音频不落盘;插件归类为模型推理,当前版本 1.1.0,许可证 MIT。社区目录页:skillhub.cn/plugins/ljz970803/dsh-voice-wake;源码:github.com/ljz970803/dsh-voice-wake。
下面介绍它解决什么问题、如何安装启用,以及使用时的边界。
这是什么¶
dsh-voice-wake 是 DSH 的本地语音唤醒插件:常听麦克风,先用唤醒词「叫醒」,确认后再录正文,说完按静音规则自动发送到对话。效果上接近「快问快答、记一件事、手被占用时的短输入」,不是全功能语音助手。
和「唤醒词后面直接带指令」不同,本插件故意要求唤醒词独占一句(例如默认「鲸鱼」后不接内容),以减少误唤醒;「鲸鱼,今天几号」这种连说不会触发。
核心功能¶
本地识别与提示音¶
- 默认复用 DSH 自带 SenseVoice,音频不落盘、不上传、不消耗 token;若 DSH 改为云端识别,音频去向以 DSH 配置为准。
- 两句提示音:叮-咚(确认只有唤醒词,可以讲正文)、嗒(正文已发进会话);不看屏幕也能感知阶段。
- 右下角 HUD 显示「聆听中 / 已唤醒」和音量,可拖动、折叠、关闭;设置页可「归位」。
唤醒与发送逻辑¶
- 只喊唤醒词(默认「鲸鱼」,建议 2–3 字),不要接内容。
- 快速探测在约 0.6 秒静音处切句,完整识别确认「只有唤醒词」后响「叮-咚」,HUD 变为「已唤醒」。
- 「叮-咚」后 5 秒内说正文;一旦检测到有效说话,5 秒倒计时取消,改为按
silenceMs(默认 2000 ms)静音判定一句结束并发送。 - 发送完成响「嗒」,回到「聆听中」;5 秒内无有效内容则视为误触发,收回聆听。
- 连续说话按
maxSegmentMs切段(默认 1 分钟,可选 2 / 5 分钟或不限)。
唤醒词支持宽容匹配(同音、前后鼻音、平翘舌、约 1 个音节偏差);默认「鲸鱼」含别名「金鱼」。灵敏度 1–10 档,设置页可「校准」按环境底噪选档。
会话去向与打断¶
- followActive 默认关:消息发到专用「语音唤醒会话」,首次使用主窗口会跳转过去。
- 开启「发到当前会话」:跟着当前聊天走;若当前不在聊天页,会落回语音唤醒会话。
- 上一轮未完成时,可再次唤醒并讲新指令以打断(部署不支持时自动排队,避免丢消息)。
安全与高风险提醒(1.1.0)¶
- 每个会话第一条语音消息会说明内容可能来自语音转写,只提醒不拦截。
- 命中
riskWords(如删除、覆盖、发布、付款、rm -rf等,可自定义)时,消息末尾追加识别误差提示;不拦截、不弹确认,高风险仍依赖 DSH 审批/沙箱。 - 插件说明:删除、覆盖、发布、付款、改权限等不可逆操作,尽量不要用本功能。
扩展点¶
README 列出 beforeSend、onTranscript、onStateChange 与独立展示文件 hud.js;架构与改 HUD、换提示音等见仓库 ARCHITECTURE.md。
装之前¶
- DSH 里「设置 → 语音输入」确认识别模型就绪;未就绪时插件仍可安装,设置页会提示「识别还不能用」。
- 允许麦克风;插件启用时会听麦,默认不写识别文字到日志(除非开启
logTranscript)。 - 首次启动后模型加载约 5 秒,再试唤醒。
安装与启用¶
推荐:在 DSH 市场「插件」里搜索 语音唤醒 安装(收录后)。
CLI(把 desktop 换成你的 profile 名):
dsh plugin --profile desktop add dsh-voice-wake
注意:单独 npm install dsh-voice-wake 只会下载包,不会注册插件;必须走市场或 dsh plugin add。
启用步骤:
- 打开「设置 → 语音唤醒」,打开总开关
enabled。 - 按需改唤醒词
wakeWords、灵敏度wakeSensitivity、说完静音silenceMs等;一页平铺、改完立即生效,无「保存」按钮。
典型用法¶
经过上面的安装与启用,日常使用可以按下面顺序:
- 只喊唤醒词(默认「鲸鱼」),不要带后面的任务描述。
- 听到「叮-咚」、HUD 显示「已唤醒」后,在 5 秒内说出要问 agent 的内容。
- 说完停一下;听到「嗒」表示已送入会话(默认进「语音唤醒会话」,除非开启「发到当前会话」)。
调试可在设置页「调试」区做麦克风测试、复制/导出诊断信息;导出可能包含最近一次识别文本(若开过诊断日志)。
主要配置项¶
字段定义在 lib/config.js 的 CONFIG_SCHEMA,配置版本 17。常用项如下(完整表见 README):
| 字段 | 默认值 | 作用摘要 |
|---|---|---|
wakeWords |
鲸鱼 |
英文逗号分隔多个唤醒词 |
wakeSensitivity |
5 |
1–10,1 最灵敏 |
silenceMs |
2000 |
正文说完后静音多久算一句(400–8000 ms) |
followActive |
false |
是否发到当前会话 |
riskNotice / riskWords |
开 / 默认词表 | 敏感词末尾提醒 |
logTranscript |
false |
诊断日志是否记录识别文字 |
适用场景与注意¶
适合:手被占用、不想打字、需要短句进 DSH 会话;本地 SenseVoice 场景下隐私与 token 压力相对可控。
不适合:依赖精确路径、数字、人名的操作;无发送前预览,识别错误会自动发出,需自行撤回或纠正。
权限:插件以当前 DSH 进程权限运行,会向会话发消息(等同手动输入)。安装前请阅读 源码与 LICENSE,自行评估是否满足环境要求。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
常见问题:没有「叮」——先看设置页是否「识别还不能用」、麦克风与唤醒词是否独占一句;消息总在「语音唤醒会话」——默认行为,可开 followActive。
结尾¶
dsh-voice-wake 把 DSH 语音输入收成「叫醒 → 请讲 → 停顿发送」,配合提示音与 HUD,适合轻量、本地的语音进会话。进一步了解实现与扩展,见 GitHub README 与 ARCHITECTURE.md;安装入口见 SkillHub 目录页。