前言¶
在 DeepSeek Harness(DSH)里做带语音反馈的智能体时,常见做法是走云端 TTS 或 OpenAI 兼容的 /v1/audio/speech。若你已经在 Windows 上部署了 GPT-SoVITS,引擎侧只有 api_v2.py 的 /tts 接口,参数名与 DSH 内置 TTS 客户端并不一致,无法直接对接。
下面介绍社区插件 dsh-gsv-local(维护者 naili0712):随 DSH 启停本机引擎,在本地提供 OpenAI 兼容端点,并在浏览器侧按约定只朗读该念出的那一行。
这是什么¶
dsh-gsv-local 的定位是适配层,不是完整的 TTS 引擎。没有 GPT-SoVITS 运行时与模型权重时,它无法单独产出语音;也不打包权重,听写需用 DSH 自带的语音输入插件。
插件承担三件事:生命周期(随 DSH 拉起/退出 api_v2.py,不长期占显存)、转译(默认在 9881 监听,把 OpenAI 格式请求转成 GPT-SoVITS /tts)、发声(对话轮次结束后由 client.js 选句合成并播放)。
DSH 启动 ──► 插件 ──► 拉起 api_v2.py (9880)
└──► 监听 9881(OpenAI 兼容)
▲
一轮对话结束 ──► client.js ──────┘ 选取一行、合成、播放
DSH 关闭 ──► 插件 ──► taskkill /T /F,引擎连同子进程一并退出
仓库:GitHub — naili0712/dsh-gsv-local(当前 package 版本 0.4.0,MIT)。目录页:SkillHub — dsh-gsv-local。DSH 生态是「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
生命周期与端口¶
DSH 启动时插件一并启动 GPT-SoVITS(默认引擎端口 9880,代理端口 9881)。关闭 DSH 时通过 Windows 的 taskkill /T /F 结束引擎及子进程。若 DSH 异常退出,进程可能残留;下次启动会检测端口,已在运行则复用。
OpenAI 兼容转译¶
DSH 侧 TTS 客户端只认 /v1/audio/speech;本插件在中间做参数映射,使现有客户端无需改协议即可调用本机 /tts。
浏览器侧朗读约定¶
不朗读整段回复,只识别带 〔声〕 前缀的一行,例如:
〔声〕これで、ちゃんと喋れるよ。
〔译〕这样就能好好说话了。
〔声〕 行送合成;〔译〕 仅供阅读。缺少 〔声〕 时当轮不发声。README 说明:textLang 须与待朗读文本一致;日语模型念中文时汉字会按音读处理,因此 client 只念 〔声〕 行。
内置默认音色¶
首次启动会将包内三段默认音色解压到 ~/.dsh/gsv-local/voices/。配置里可选 voice: ja(默认,日语)/ female / male(中文)。来源说明见仓库 assets/default-voice/NOTICE.md;如需来源链条更清晰的默认音色,README 建议选用 female / male 或自备参考音频。
界面开关¶
输入框工具行、表情按钮右侧有喇叭图标:高亮为开启,变暗为关闭。初次开启旁会显示「加载中」(引擎加载约 20–30 秒)。状态保存在 ~/.dsh/gsv-local/prefs.json。关闭开关时会停止由插件拉起的引擎以释放显存。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前请自行审阅源码与 MIT 许可证,并确认 runtimeDir 指向的环境可信。
从 GitHub(README 推荐)¶
git clone https://github.com/naili0712/dsh-gsv-local.git D:/app/dsh-gsv-local
dsh plugin --profile <你的 profile> add D:/app/dsh-gsv-local
dsh plugin add <本地目录> 在 Windows 上安装的是 junction 链接,不是复制;clone 目录不可删,也不宜放在临时目录。
从 profile 目录¶
dsh plugin add dsh-gsv-local
安装完成后需重启 DSH。
安装后自检¶
node <clone 目录>/scripts/setup.mjs
脚本逐项报告缺失项;正常情况下通常只需补全 runtimeDir。GPT-SoVITS 本体与数十 GB 权重需自行从 RVC-Boss/GPT-SoVITS 上游获取,setup.mjs 不下载大文件。
配置¶
编辑 profile 的 cordis.patch.yml,按 id: gsv-local 覆盖。唯一必填项是 runtimeDir(须包含 api_v2.py 与 runtime/python.exe 的 GPT-SoVITS 根目录):
- id: gsv-local
config:
runtimeDir: 'D:/path/to/GPT-SoVITS'
更换内置音色可追加(与 refAudio 二选一逻辑见 README):
voice: male
自备声音须成对提供 refAudio(8–10 秒单人清晰录音)与 promptText(与录音逐字一致)。其余可选字段包括 promptLang、textLang(默认均为 ja)、enginePort(默认 9880)、proxyPort(默认 9881)。
典型用法¶
- 安装插件并配置
runtimeDir,重启 DSH。 - 在界面打开喇叭开关,等待「加载中」消失。
- 在系统或 Agent 提示中让模型按约定输出
〔声〕/〔译〕两行;轮次结束后仅〔声〕会被朗读。
本地检测运行时是否可启动(在 clone 目录下):
node scripts/setup.mjs
适用场景与注意¶
适合:已在 Windows 上部署 GPT-SoVITS,希望在 DSH 对话里用本地音色、且希望引擎随 DSH 启停、不占常驻显存的使用者。
不适合或需知:
- 未安装 GPT-SoVITS 运行时与权重时无法发声。
- README 写明仅在 Windows 上验证;macOS / Linux 理论上可行,尚未测试。
- 引擎首载约 20–30 秒;DSH 可先使用,第一句语音需等待。
- 参考音频质量决定音色相似度;自备
refAudio/promptText必须严格对应。
结尾¶
dsh-gsv-local 解决的是 GPT-SoVITS /tts 与 DSH OpenAI TTS 客户端之间的接口鸿沟,并把「念哪一句」收敛到 〔声〕 行,避免长文朗读噪音与跨语言模型误读。需要细节、Issue 与更新时,请以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/naili0712/dsh-gsv-local
- GitHub:https://github.com/naili0712/dsh-gsv-local