前言¶
DeepSeek Harness (DSH) 采用插件化架构,开发者若想接入实时语音对话能力,通常需要自行处理 WebSocket 升级、流式识别与合成、麦克风权限管理等底层逻辑。dsh-voice-live 插件旨在解决这一痛点,将麦克风采集、火山引擎流式语音识别(ASR)、语音合成(TTS)以及浏览器端的语音控制整合在一起,提供开箱即用的实时双工语音支持。
这是什么¶
这是一个为 DeepSeek Harness 提供实时双工语音能力的插件,由用户 tangzheng202202 维护。插件通过主机端注册 /voice WebSocket 路由与客户端端渲染控制相结合的方式,实现了从用户说话到助手回复的全流程自动化。
核心功能¶
插件包含以下核心能力:
* 实时语音交互:支持点击麦克风开始采集,助手即时响应并朗读。
* 流式处理:集成火山引擎流式 ASR 与 TTS,延迟低。
* 服务端端点检测:服务器端检测约 1.5 秒静音后自动提交识别结果,无需手动停止。
* 打断与唤醒:支持在播放过程中打断,并提供唤醒词支持(默认关闭)。
* 实时字幕:将识别内容实时渲染到编辑器草稿中。
* 浏览器回声消除:利用浏览器原生 AEC 技术减少回声。
安装与启用¶
目前该插件尚未通过 npm 正式发布。建议直接在 DSH 仓库的 monorepo 中构建和运行。请克隆以下 fork 仓库并按照 DSH 的构建流程操作:
# 克隆 DSH Monorepo Fork
git clone https://github.com/tangzheng202202/deepseek-harness.git
cd deepseek-harness
# 在 monorepo 中构建并运行
# 具体路径需参考 DSH 官方文档,或自行 vendor 缺失的依赖包
典型用法¶
- 启动语音:在编辑器中点击麦克风按钮,系统开始采集语音并在草稿中实时显示识别结果。
- 自动提交:说话结束后,系统等待约 1.5 秒静音,自动触发识别结果提交,无需再次点击停止。
- 回复优先:默认开启“回复优先”模式,系统会先朗读一句确认语(如“好的,我去查一下”),随后再播放真正的回答。
- 打断交互:在助手回复过程中,如果用户再次说话,系统会立即停止播放并取消当前正在进行的语音合成任务,开始新的识别。
适用场景与注意¶
- 适用场景:适合需要在 Web 端快速集成实时语音对话能力的开发者。
- 注意事项:
- 发布状态:目前 npm 发布被上游阻塞,因缺少
@deepseek-ai/dsh-compact依赖,无法作为独立插件安装。 - 唤醒词限制:唤醒词功能依赖 Web Speech API,默认关闭。Chrome 在中国大陆无法使用 Google 云识别服务,仅 Safari (macOS) 可用;本地离线引擎 sherpa-onnx 暂不可用。
- 回声消除:依赖浏览器原生 AEC,受限于 Chrome 某些 Bug,当前为半双工模式(播放时停止采集)。
- 实时字幕:目前仅显示在编辑器草稿中,暂无浮动字幕。
- 服务端端点:需确保使用
bigmodel_async并开启enable_nonstream参数。
- 发布状态:目前 npm 发布被上游阻塞,因缺少
- 插件以主机进程权限运行,使用前请仔细检查源码与 MIT 许可证。
结语¶
dsh-voice-live 为 DSH 提供了基础的语音交互骨架,通过火山引擎实现流式语音能力。开发者可参考其源码实现,在 Monorepo 中集成使用。