
qishuilalala/dsh-voice-mode
dsh-voice-mode
dsh-voice-mode is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-voice-modeRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-voice-mode)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from qishuilalala/dsh-voice-mode, cleaned of badges and images.
Full-duplex voice mode for DeepSeek Harness —— 在会话内用语音完成整轮对话:说话时边说边出字、停顿后自动发送;回复按句朗读并跟随实时字幕;朗读中开口即打断。识别在本地推理、无需 API Key;朗读默认 Edge 云端(快且自然),本地 VITS / Kokoro 可选(隐私优先)。兼容 dsh 0.1.1-rc.2 起全版本(含 0.1.7-rc.1 真机验证,完整矩阵见 docs/compat-contract.md §10/§11)。380 项测试全绿(28 套件);当前版本见上方 npm 徽章与 Releases。
💡 它是什么
在 DeepSeek Harness 的会话里,点一下麦克风就能用语音完成整轮对话:
- 🎤 你说 —— 一边说一边实时出字(流式识别),停顿约 1500ms 自动发送;
- 🔊 它答 —— 最终回复按句朗读,全程实时字幕跟随;
- ⏸️ 随时打断 —— AI 还在朗读时开口即打断,你的话直接被听见。
零 API Key:识别在宿主端本地推理(zipformer2 流式 + SenseVoice 定稿);朗读默认 Edge 云端(快、自然),可选本地 VITS 纯中文 / Kokoro 中英混读(回复文本不出本机,隐私优先)。
🤔 为什么值得用(3 个真痛点)
| # | 痛点 | 我们的应对 |
|---|---|---|
| 1 | 字幕看不清 —— 字小、窄屏被输入框挡住 | captionFontSize 4 档(12/14/18/24px)+ captionMaxWidth 3 档(50/70/90vw) |
| 2 | 让位误打断 —— AI 朗读时插一句「嗯/对」就被硬打断 | backchannelYield 让位语义:短词自动让位 1.5s,真要说走才硬打断 |
| 3 | 本地 TTS 太机械 —— 一句话读完停顿 3-5 秒 | 本地 VITS / Kokoro 原生 addon + epoch 队列管理,按句流式朗读、句间无停顿 |
✨ 功能(按用户价值)
- 🎙️ 识别准 —— SenseVoice 多语种定稿 + ITN(数字/日期/货币自动规范化)
- 🗣️ 不说错 —— 唤醒词待机、唤醒词前缀语气词白名单(
嗯/那个不再误触) - 🤝 让位 —— 让位语义 + 三档打断灵敏度(
interruptLevel),外放也能精准打断 - 💬 有感情 —— 本地 Kokoro 103 音色 + Edge 322 音色,行内可试听;分段朗读不漏句
- 👁️ 字幕 a11y —— 4 档字号 + 3 档宽度,浅色主题变量跟随 dsh 主题
🎬 Demo
上方为当前界面的真实录制(由
screenshots/scripts/capture-demo.mjs驱动真实链路产出,非 UI 摆拍);下图为静态总览。
真实录屏脚本见
demos/RECORDING-SCRIPT.md(60s/30s/15s 三段脚本)。
真机截图清单见screenshots/MANIFEST.md(10 张)。
🚀 5 分钟上手(Quick Start)
dsh plugin --profile web add dsh-voice-mode
systemctl restart dsh # Linux;其他平台重启 dsh 进程
第一次用:
- 进入任一会话,按
Ctrl+Shift+V(或点输入区麦克风按钮)进入语音模式,状态条显示「聆听中…」; - 说一句完整的话(如「帮我看看今天的天气」)→ 实时字幕立即出现,停顿后自动发送;
- AI 回复开始朗读时,开口说话 → 朗读即刻停止,你的话被听见(这就是 barge-in)。
操作手势
| 手势 | 作用 |
|---|---|
Ctrl+Shift+V | 进入 / 退出语音模式 |
| 直接说话(toggle) | 边说边出字,停顿 1500ms 自动发送;按住 Ctrl 强制立即发送 |
| 按住麦克风按钮(hold) | 松手发送;短按退出;滑出 / Esc / 失焦放弃本段 |
| 点输入框旁模式按钮 | 在「持续聆听 ⇄ 按住说」间切换(保存到设置) |
| AI 朗读时开口说话 | 打断朗读并取消当前回合 |
| 点状态条「退出」 | 退出语音模式 |
| 点字幕浮层「跳过」 | 跳过当前句朗读 |
⚙️ 配置(4 新设置字段 + 3 默认值微调)
设置 → Plugins → 插件配置 → 语音模式(voice-mode)。
4 新设置字段(11 批次周全修复落地)
| 你想调什么 | 改哪个键 | 默认 | 说明 |
|---|---|---|---|
| 逆文本归一化 | senseITN | true | SenseVoice 数字/日期/货币规范化(默认开,关掉保留原文) |
| 字幕字号 | captionFontSize | 0 | 档位 0=12px / 1=14px / 2=18px / 3=24px |
| 字幕宽度 | captionMaxWidth | 1 | 档位 0=50vw / 1=70vw / 2=90vw |
| 让位语义 | backchannelYield | true | 朗读期说「嗯/对」自动让位 1.5s,真要说走硬打断(ADR-0008) |
3 默认值微调(批 J)
| 字段 | 旧 | 新 | 理由 |
|---|---|---|---|
rate | 1.0 | 1.1 | Edge 默认略慢,统一提速 10% 改善体验 |
idleTimeoutMinutes | 10 | 5 | 空闲退出更灵敏(朗读仍计为活动) |
interruptLevel description | 旧描述 | 新描述 | 明确「3/2/1 帧确认」机制 |
字段名零变化,旧
~/.dsh/settings.yaml100% 兼容。
完整 19 项设置表见 plugin/dsh-voice-mode/README.md。
🏛️ 架构(Architecture)
…
