Breeze 语音对话 · DSH 插件
给现有 DSH 会话增加连续语音交流:本机检测人声、停顿后识别、送入当前会话、按句流式播放回答。继续使用该会话的模型、上下文、工具与审批。
使用
安装加载后,左侧出现「语音」工作台;如果升级后插件页已恢复正常、入口仍未出现,请在方便时手动退出并重新打开 DSH。输入框旁「语音」开始通话。「结束」关闭麦克风,「打断回答」停止播报并取消本轮回复,「说完了」结束本次录音。
工作台分为四页:
- 音色:选择服务器保存的固定音色;描述预设只用于设计声音。填写描述与名称后「生成并保存固定音色」会生成一次参考片段,后续各句复用该片段。先试听,再「保存设置」应用。描述草稿不等于固定参考音色。
- 对话角色:分别设置适合语音交流的默认提示词与角色提示词。通过 DSH 原生系统提示词扩展,只作用于正在通话的会话;停止或连接失效后撤销,不插入重复的隐藏用户消息。保存后用于后续模型请求。
- 交互与资源:停顿时间 400–3000 毫秒(新配置默认 1200);可关闭开口打断,开启识别后编辑确认,配置服务器识别热词。空闲卸载 0–120 分钟,0 表示不自动卸载;保存会同步服务器。支持查看真实模型状态、立即释放显存。
- 服务连接:SSH 主机别名、已部署的 Windows 计划任务名、端口和私有密钥。测试使用已保存的连接。若服务器离线,本机设置仍可保存,但界面明确提示同步失败。
旧的设置值会保留,包括原先配置的停顿时间。麦克风参数与识别确认开关在下一次开启通话时生效;音色、角色、服务器热词用于后续相应请求。建议佩戴耳机;外放时可以关闭自动打断,改用按钮。
复用 DSH 原生识别
「交互与资源」可选择服务器识别,或 DSH 自带的本机 SenseVoice。后者需要先在 DSH 中启用原生「语音输入」插件并完成模型准备,再点击「检测 DSH 原生识别」。本插件只复用 speechToText 的本机识别服务,不改变其默认提供方、不自动下载模型,也不在失败时把音频发送到其他提供方。录音、连续交流、打断和语音回答仍由本插件负责。
原生模式目前固定使用 sensevoice-local 和中文提示,不支持传入热词;服务器模式支持热词。是否更适合你的口音和术语,应以同一段真实录音对比为准。
安装与构建
从 GitHub Releases 下载 0.4.1 安装包及 SHA256SUMS.txt,在下载目录校验后安装。以下命令针对 desktop profile,其他 profile 请替换名称。
shasum -a 256 -c SHA256SUMS.txt
dsh plugin --profile desktop add "$PWD/dsh-breeze-voice-0.4.1.tgz"
也可在 DSH 的「插件 → 发现」添加共享插件市场,选择 Breeze Voice。配置自己的语音服务器请参阅部署指南。
macOS 桌面版 CLI 位于 /Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh,可通过 /bin/sh 调用。插件不会自动重启 DSH。版本包请使用包含内容哈希的独立文件名,避免包管理器复用同名旧压缩包。
默认本机转发端口 19889,服务器网关端口 8870。SSH 留空时使用已有本机转发。私有密钥只保存在本机配置和服务器部署配置中,不写入源码或安装包。
源码构建:npm install --ignore-scripts,然后 npm run check 和 npm pack。lib/client.js 使用 DSH ModuleLoader;lib/index.js 注册同源代理、原生提示词扩展。assets/vad/ 包含本地 Silero / ONNX Runtime 资源,不依赖 CDN。
数据与资源
录音最长约 24 秒,使用 16 kHz 单声道 PCM16 WAV,插件只在内存中保留录音。识别结果和回答由正常 DSH 会话历史保存。固定音色的参考片段保存在私有服务器,用于保持声线;DSH 的语言模型请求仍遵循当前会话配置。
语音模型按需加载,空闲后卸载。DSH 原生识别的资源生命周期由原生插件管理;工作台「立即释放显存」控制远程语音模型。新通话预热所需服务,模型未就绪时显示加载状态。
边界与验收
这是 ASR → 当前 DSH 模型 → TTS 的连续语音链路,不是端到端全双工模型。Silero 人声概率、较长的打断确认和浏览器回声消除能减少误触发,不能保证外放回声完全消失。识别错误时可用「发送前确认识别内容」修改再发。代码块与推理内容不会朗读;工具审批仍在原有 DSH 界面完成。
0.4.1 的兼容范围为 >=0.2.1-rc.5 <0.2.2-0 || 0.2.2-rc.1。测试包括原生宿主侧栏、配置表单、系统提示词与识别注册表契约、本地神经 VAD 和音频生命周期;这些不能替代用户实际麦克风、口音、外放环境的体验验收。详见 docs/ACCEPTANCE.md。
参考
参考了上述插件的交互与原生集成方式,没有安装这些第三方插件。Breeze 模型及本地 VAD 资源保留各自许可;本插件的 Apache-2.0 许可不改变它们的许可。
界面 v0.2.1:使用 DSH 原生主题颜色、字号、分段标签和设置行。音色选择与试听优先显示,创建音色和提示词预览可按需展开,支持浅色、深色及窄窗口。
通过 DSH 聊天修改(0.3.0)
启用插件后,原生工具目录自动提供 breeze_voice_settings、breeze_voice_voices、breeze_voice_service,技能目录自动提供 breeze-voice。不用另装其他语音插件。
可直接说:“闲置五分钟释放语音显存”、“等我停两秒再发送”、“切换已有的沉稳男声”、“保存一个耐心的英语老师角色”。完整操作说明随包放在 skills/breeze-voice/SKILL.md。角色目前是一份当前角色,未提供多角色库。
工具与侧栏共用 DSH 原生持久设置,使用修订号防止并发覆盖,只写指定字段,保存后回读。固定音色、热词和提示词在下一次相关请求生效;断句、打断、发送前确认在下次通话生效。切换识别引擎需要先结束通话。闲置策略保存后同步服务器,失败会报告“本机已保存、服务器未确认”。工具不暴露或修改连接密钥,不启动麦克风,不替用户发消息。
实现参考:
- dsh-breeze-tts:将声音使用与声音创建分开,配置写后回读。
- dsh-agent-persona:明确角色作用域与生效时机。
- 本机 Qwen Studio 的原生
tools、settings.mutate、skills.register集成方式。
参考的是交互和集成原则;未复制这些项目的代码,也未安装第二套语音服务。
对话内通话界面(0.4.0)
点击当前聊天输入区的「语音」,会在输入框上方展开通话面板,显示听取、识别、思考、朗读状态、通话时长、最近一轮文字和当前角色。可以静音麦克风、打断回答、收起为小通话栏或结束。静音会停用麦克风音轨并丢弃尚未发送的半句话;恢复后重新收音。收起不结束通话。
语音默认提示词与角色仅在正在语音连接的那个会话生效;同一会话在通话中打字也受它们影响。正常结束后停止添加,意外断连的租约最多 90 秒过期。语音期间的聊天记录不会删除,因此结束后原有上下文仍可能影响语气。
No comments yet. Be the first to write one.