前言¶
DeepSeek Harness(DSH)桌面版自带语音输入,可以把录音转成文字发给模型,但没有把 assistant 的最终文字回答读出来的能力。长时间盯屏幕看长回答,或者想边做别的事边听结论时,这一半能力就缺了。dsh-tts 是社区维护的 DSH 插件,在宿主进程里监听不含工具调用的 assistant 消息,经净化后交给 TTS 引擎播放;新消息发出时会打断正在读的旧回答。下面介绍它的定位、引擎与配置,以及在本机环境下的启用方式。
这是什么¶
- 名称:
@dsh-tts/speech(仓库 KarBurKi/dsh-tts,目录页 skillhub.cn/plugins/KarBurKi/dsh-tts) - 维护者:KarBurKi
- 分类:模型推理(社区目录归类)
- 版本(package.json):0.8.2,MIT 许可证
- 一句话:DSH 回答朗读——GPT-SoVITS / CosyVoice 本机模型、微软 Edge 在线音色、Windows SAPI 离线语音;按语种路由,并支持按
sessionId绑定音色
插件以 DSH「一切皆插件」的方式挂载:源码在 <home>\.dsh\plugins\dsh-tts,由 <home>\.dsh\profiles\desktop\package.json 的 dsh.profile.bundles 引入 @dsh-tts/speech;依赖用 link: 指向插件目录,改代码后重启 DSH 即可,无需反复安装包。
核心功能¶
多引擎与兜底¶
| 引擎 | 条件 |
|---|---|
edge(默认) |
Python 3、edge-tts、PATH 中的 ffplay(ffmpeg 自带)、联网 |
sapi |
Windows 自带,断网或 Edge 合成失败时自动回退 |
gpt_sovits |
本机 GPT-SoVITS 服务(资料注明维护者本机当前使用该引擎) |
cosyvoice |
本机零样本克隆(可选) |
config.json 的 engine 在上述值之间切换;未命中本机模型或在线失败时,逻辑会落到 Edge / SAPI。
触发与打断¶
完全退出 DSH 桌面版再打开(托盘退出,不是只关窗口)后生效。每条不含工具调用的 assistant 消息会被朗读;你在对话框发新问题时,正在读的旧回答会被打断。
按语种与会话选音色¶
中文 / 日文 / 英文各可配置独立的 GPT-SoVITS 端口与权重(gsvApi、gsvJa、gsvEn 等)。优先级为:sessionVoices[sessionId] > 按语种路由 > Edge / SAPI 兜底。同一会话绑定后整段回答用同一副嗓子;逐句仍可按检测语言切换 text_lang。绑定相关脚本在 ~/.dsh/skills/roleplay/scripts/voices.py(如 bind --session current --name <角色> --lang <ja|zh>)。
朗读稿净化(polish)¶
朗读前用 polish.js 把 Markdown 转成更适合念出口的稿子:跳过代码块与表格、路径只念文件名、书面词换口语(COLLOQUIAL 表)、句段间停顿(chunkGapMs / paraGapMs)等。可选 rewrite: "ollama",合成前用本地 Ollama 小模型改口播,失败则读原文。
显存与进程管理(GPT-SoVITS)¶
GSV 中文 / 英文 / 日文三路全开约 7.8 GB 显存。启动仅预热 gsvPrewarm 指定语言(默认 zh);空闲超过 gsvIdleExitMinutes(默认 20 分钟)会结束进程;双击插件目录下的 release.bat 可立刻释放。旁路 HTTP 默认 127.0.0.1:9889(stopPort 可改),提供 /stop、/status、/release。
客户端停止按钮¶
Web 客户端通过 client.js 在输入区挂载「停止朗读」按钮,请求 http://127.0.0.1:9889/stop。也可发任意新消息、stop.bat、或浏览器访问 /stop。GUI 结构变更可能导致按钮失效,host 侧入口仍可用。
安装与启用¶
资料中的部署方式以「已放入插件目录 + profile 挂载」为准,未给出统一的 dsh plugin add 一行命令;安装前应自行阅读仓库源码与 MIT 许可证,并确认插件与 DSH 以当前用户权限运行。
1、将插件置于 <home>\.dsh\plugins\dsh-tts。
2、确认 desktop profile 的 dsh.profile.bundles 已包含 @dsh-tts/speech。
3、若使用 Edge 引擎,确保已安装 Python 依赖(资料示例):
python -m pip install edge-tts
4、完全退出 DSH 后再启动。
总开关与引擎在插件目录下的 config.json;修改后多数项可热生效(0.8.2 起 enabled 切换会联动本地 9889 服务的起停)。
典型用法¶
不经过 DSH,试听 Edge 音色¶
python -m edge_tts --text "你好,我是深海,这是晓晓的声音。" --write-media "$env:TEMP\t.mp3" --voice zh-CN-XiaoxiaoNeural
ffplay -nodisp -autoexit -loglevel quiet "$env:TEMP\t.mp3"
试听离线 SAPI¶
powershell -NoProfile -ExecutionPolicy Bypass -File "<home>\.dsh\plugins\dsh-tts\speak.ps1" -Text "你好,我是深海。"
常用配置字段(节选)¶
{
"enabled": true,
"engine": "edge",
"finalOnly": true,
"edgeVoice": "zh-CN-XiaoxiaoNeural",
"maxChars": 1200,
"skipCodeBlocks": true,
"polish": "rules",
"stopPort": 9889
}
Edge 可选音色包括 zh-CN-YunxiNeural、zh-CN-XiaoyiNeural、zh-CN-YunyangNeural 等;语速、音量见 README 表格中的 edgeRate、edgeVolume、playerVolume。
查看朗读服务状态¶
curl http://127.0.0.1:9889/status
返回示例形如 {"ok":true,"speaking":false,"queued":0};本机 GSV 就绪时 models 字段会列出各 API 端口与 ready 状态。
适用场景与注意¶
适合:已在 Windows 上使用 DSH 桌面版,希望 assistant 最终回答自动朗读;需要 Edge 快速试听、或本机 GPT-SoVITS / CosyVoice 定制音色;多会话、多语言并希望按 sessionId 固定角色声线。
注意:
- 默认平台与脚本示例以 Windows、PowerShell 为主;SAPI 与
speak.ps1依赖 Windows。 - 本机 GSV 冷启动可能需数十秒(
gsvStartTimeoutMs默认 120 秒上限);频繁 idle 退出会反复冷启动。 - 停止服务与释放显存仅监听本机回环地址,但仍建议不要在不信任的环境中开启未知插件。
- 社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与目录页为准。
结尾¶
dsh-tts 补的是 DSH 缺失的「朗读输出」:从 Edge / SAPI 到本机 GPT-SoVITS,配合净化、打断与会话绑定,把最终回答变成可听的内容。细节与完整配置表见 GitHub README:https://github.com/KarBurKi/dsh-tts;目录入口:https://www.skillhub.cn/plugins/KarBurKi/dsh-tts。