dsh-voice-wake:DSH 本地「叫醒 → 请讲」语音唤醒

前言

在 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 显示「聆听中 / 已唤醒」和音量,可拖动、折叠、关闭;设置页可「归位」。

唤醒与发送逻辑

  1. 只喊唤醒词(默认「鲸鱼」,建议 2–3 字),不要接内容。
  2. 快速探测在约 0.6 秒静音处切句,完整识别确认「只有唤醒词」后响「叮-咚」,HUD 变为「已唤醒」。
  3. 「叮-咚」后 5 秒内说正文;一旦检测到有效说话,5 秒倒计时取消,改为按 silenceMs(默认 2000 ms)静音判定一句结束并发送。
  4. 发送完成响「嗒」,回到「聆听中」;5 秒内无有效内容则视为误触发,收回聆听。
  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。

装之前

  1. DSH 里「设置 → 语音输入」确认识别模型就绪;未就绪时插件仍可安装,设置页会提示「识别还不能用」。
  2. 允许麦克风;插件启用时会听麦,默认不写识别文字到日志(除非开启 logTranscript)。
  3. 首次启动后模型加载约 5 秒,再试唤醒。

安装与启用

推荐:在 DSH 市场「插件」里搜索 语音唤醒 安装(收录后)。

CLI(把 desktop 换成你的 profile 名):

dsh plugin --profile desktop add dsh-voice-wake

注意:单独 npm install dsh-voice-wake 只会下载包,不会注册插件;必须走市场或 dsh plugin add。

启用步骤:

  1. 打开「设置 → 语音唤醒」,打开总开关 enabled。
  2. 按需改唤醒词 wakeWords、灵敏度 wakeSensitivity、说完静音 silenceMs 等;一页平铺、改完立即生效,无「保存」按钮。

典型用法

经过上面的安装与启用,日常使用可以按下面顺序:

  1. 只喊唤醒词(默认「鲸鱼」),不要带后面的任务描述。
  2. 听到「叮-咚」、HUD 显示「已唤醒」后,在 5 秒内说出要问 agent 的内容。
  3. 说完停一下;听到「嗒」表示已送入会话(默认进「语音唤醒会话」,除非开启「发到当前会话」)。

调试可在设置页「调试」区做麦克风测试、复制/导出诊断信息;导出可能包含最近一次识别文本(若开过诊断日志)。

主要配置项

字段定义在 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 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye