dsh-voice-mode: Full-duplex voice input and sentence-by-sentence playback within DSH sessions

前言

在 DeepSeek Harness(DSH)里做智能体对话,常见做法是键盘输入或外挂第三方语音识别服务。前者在长对话、移动场景下不够顺手;后者往往要单独申请 API Key、把音频或文本送到云端,成本和隐私边界也要自己管。若希望在同一会话界面里完成「边说边出字 → 编辑或自动发送 → 回复按句朗读并可开口打断」,且识别在宿主端本地推理、不必为 ASR 再配密钥,社区维护的客户端插件 dsh-voice-mode 就是针对这条链路做的集成。下面按安装、操作和配置说明其能力与边界。

这是什么

dsh-voice-mode(仓库 qishuilalala/dsh-voice-mode)是 DSH 的全双工语音插件:流式语音识别写入可编辑草稿,文本合成按句朗读并带实时字幕,朗读过程中可发声打断;可选唤醒词待机。维护者为 qishuilalala,在 SkillHub 等社区目录中归类为客户端插件。识别使用宿主端 zipformer2 流式 + SenseVoice 定稿(含 ITN 等),无需额外语音 API Key;朗读默认走 Edge 云端(访问微软在线服务),也可选本地 VITS(偏中文)或 Kokoro(中英混读),合成在宿主端完成。宿主 LLM 的密钥、网络与费用仍由 DSH 自身配置决定。

插件以 npm 包 dsh-voice-mode 发布(资料中当前版本 0.7.34,MIT 许可证);package.json 声明宿主兼容范围为 dsh >=0.1.1-rc.2 <0.3.0-0,Node >=18。README 注明已对 dsh 0.2.1-rc.5 做过兼容复核,但不等于所有设备上的麦克风闭环或跨平台均已验收。

核心功能

语音输入与发送

进入语音模式后,麦克风采集经客户端 VAD 分段,partial 结果约 0.9s 级别流式出字并可在字幕浮层展示;定稿在宿主端完成。默认行为(可调):停顿约 1500ms 断句进草稿,再静音约 1.2s(合计约 2.7s)自动发送;按住 Ctrl 可强制立即发送。

朗读、字幕与打断

模型回复经句子切分进入 TTS 队列,按句朗读,字幕跟随。AI 朗读时用户开口可打断(效果受设备、回声消除与噪声影响;不可靠时可改用「按住说话」)。设置中的 让位语义(backchannelYield,默认开)可在朗读期对短反馈词(如「嗯」「对」)让位约 1.5s,避免误打断。

交互模式

支持持续聆听、按住说话、说完就关(mode: once:一句 → 自动发送 → 读完回复后退出)等;朗读范围可选仅在语音模式朗读、总是朗读(readAloud: always,打字消息也可读,代码块会跳过)或关闭。麦克风按钮可显示聆听/朗读状态条,右键可切换交互模式、朗读范围、字幕、状态条等(详见 README 操作表)。

无障碍与细节

字幕字号 captionFontSize、宽度 captionMaxWidth 多档可调;读屏相关优化在版本说明中有单独条目。唤醒词待机、语气词白名单等用于减少误触发。

安装与启用

安装命令以 README「快速开始」为准:

dsh plugin --profile web add dsh-voice-mode
# 安装到 web profile 后,按实际部署方式重启宿主

首次使用会下载识别相关模型,耗时取决于网络与硬件。插件声明为 web 客户端注入(dsh.client.platform: web),需在对应 profile 下安装并重启宿主后再试。

典型用法

  1. 进入任一会话,按 Ctrl+Shift+V 或点输入区麦克风按钮进入语音模式,状态条显示「聆听中…」(应用内快捷键可在设置中修改)。
  2. 说一句完整的话(例如「帮我看看今天的天气」)→ 实时字幕出现,停顿后进草稿、静音片刻后自动发送。
  3. AI 开始按句朗读时,可尝试发声打断,确认朗读停止及后续转写是否符合预期。

输入框内快捷键:光标在输入框时 Alt+Enter(Mac 为 Option+Enter)进入/退出语音模式且不插入换行,对应设置键 composerShortcut,留空可禁用。

按住麦克风按钮:空闲时按住即录,松手发送;等回复读完(若开启朗读)后自动退出;等待或朗读期间单击麦克风可停止朗读并完全退出。完整手势表见 GitHub README。

配置入口与常用项

通用入口:DSH 设置(Settings)→ 语音模式(Voice Mode)。

dsh 版本 次要入口 设置存放
≤ 0.1.5 设置 → Plugins → 插件配置 → 语音模式 dsh 官方设置存储
0.1.6-alpha 及以后 左侧 Plugins → 已安装的 dsh-voice-mode → 详情页「语音模式」卡片 0.1.6:官方设置存储;0.1.7+(含 0.2.0):~/.dsh/voice-mode.settings.json($DSH_HOME 下),优先级高于 profile 中同名键

设置生效分即时、下次识别、下一段话、下次进入语音模式等档位;卡片顶部会列出「已保存但未生效」项。常用键示例:

用途 键 默认
数字/日期/货币规范化 senseITN true
静音断句时长 silenceMs 1500
让位语义 backchannelYield true
字幕字号 / 宽度 captionFontSize / captionMaxWidth 0 / 1
Edge 语速 / 空闲退出 rate / idleTimeoutMinutes 1.1 / 5

完整设置项(README 称共 29 项)见仓库内 使用说明。

适用场景与注意

适合:希望在 DSH Web 会话里用语音完成整轮对话、减少单独 ASR 服务配置、需要按句朗读与字幕、并能在朗读中打断的开发者或日常用户。

务必知晓:

  • 插件在当前 dsh 进程权限下运行;安装前应查看源码与 MIT 许可证,自行评估信任边界。
  • 默认 Edge 朗读依赖微软在线服务;离线或隐私敏感场景应改用本地 VITS/Kokoro,并接受首次模型下载与硬件性能差异。
  • README 明确区分「CI/兼容声明」与「真实听感、麦克风闭环、跨平台」——不存在「所有设备都能精准打断」或「后续所有宿主版本自动兼容」的承诺;升级宿主或插件前可看 CHANGELOG 与 兼容契约。
  • DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-voice-mode 把本地流式识别、草稿编辑、按句 TTS 与打断收进 DSH 会话,默认安装命令为 dsh plugin --profile web add dsh-voice-mode。进一步说明、架构图与 Demo 见 GitHub 仓库 与 SkillHub 插件页。

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

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

Xiaoye