前言¶
在 DSH 里跑智能体时,文本回复很容易,语音往往要另接脚本:自己调 TTS API、落盘音频,再想办法塞进 QQ 或 OneBot。链路一多,Key、音色、参考音频和发送网关分散在不同地方,调试也费事。
下面介绍社区插件 dsh-plugin-tts(维护者 LotusPrimeUmbra):把小米 MiMo 与 Breeze(BreezeBlue)两套合成协议、试听与克隆、以及本机 OneBot HTTP 发 QQ 语音收进 DSH 的设置页、AI 工具与 HTTP 路由。插件归类为「模型推理」,当前 Release 包版本 0.4.2,许可证 MIT;上游 API Key 需自行到对应官网注册,插件不自带密钥。
这是什么¶
dsh-plugin-tts 是 profile 级 DeepSeek Harness 插件:装进哪个 profile,对该 profile 下全部会话生效。装好后通常有三块能力:
| 面 | 内容 |
|---|---|
| UI | 设置 →「语音合成」:开关、调用优先级、小米 / Breeze 双协议面板、参考音频、请求模板、试听、发 QQ 语音、通道探活、日志 |
| AI 工具 | tts_speak(合成 / 合成并发 QQ 语音)、tts_voices(音色与通道状态) |
| HTTP | /dsh-tts/*:配置、探活、试听、克隆参考音频、发语音、日志等 |
README 写明:小米 MiMo 与 Breeze 模型只测试过这两个;理论上小米模板兼容 OpenAI 协议的其他音色克隆模型。Breeze 在官网克隆音色后可在插件里直接拉取,因此 Breeze 模板没有「上传参考文件克隆」那一套。语音发送走本机(或云服务器)上的 OneBot HTTP 网关(文档示例默认 http://127.0.0.1:3000)。若通过 qqbridge 等桥接让 QQ 侧 AI 调用工具,可能需在桥接白名单中加入 tts_speak、tts_voices。
核心功能¶
双协议合成与路由¶
- 小米 MiMo:预置音色(文档示例提到 9 个内置音色)、音色设计、克隆音色、自定义模式;说话 / 唱歌风格、请求头与请求体模板可配。
- Breeze:baseUrl、Key、model_id / voice_id(可拉取列表);格式 mp3/wav;引导强度、语速、音量等。
- 调用优先级:只走 MiMo、只走 Breeze,或 smart。smart 下:字数或估算时长超过分界则走小米,否则按最近成功合成的平均耗时选更快一侧;分界可在设置里调整。
克隆与参考音频¶
克隆参考音频放在 $DSH_HOME/dsh-tts/state/tts-clone/。上传时可前端剪成 24kHz WAV;文档提醒参考音频有效语音不宜过短(过短会导致克隆音色不稳定,建议 10~30 秒连续说话)。可选 ffmpeg 做音量归一与参考音频转码;未安装会跳过相关步骤,合成与克隆仍可用。
OneBot 与 QQ 语音¶
设置里可填 OneBot HTTP 地址与 Access Token(SnowLuma 的 HTTP token,非 WS token)。「发语音」区块支持目标 group:群号 / private:QQ号,合成后直接经网关发送。
数据落盘¶
配置与运行数据在 $DSH_HOME/dsh-tts/(可用环境变量 DSH_HOME 改根目录,默认 ~/.dsh):
$DSH_HOME/dsh-tts/
├── config.json
├── dsh-tts.log
└── state/
├── tts-clone/
├── tts-cache/
└── tts-latency.json
API Key 以明文保存在 config.json,文档要求勿提交仓库或外传。插件声明不联网收集数据,请求只发往用户配置的上游 TTS 接口。
安装与启用¶
前提:DeepSeek Harness 已能正常打开设置;Node.js ≥ 22.19.0;插件零 npm 依赖,解压即用。官方 README 未提供 dsh plugin add github:... 一类命令;推荐从 GitHub Releases 下载 dsh-plugin-tts-0.4.2.zip,校验 Release 页公布的 SHA256 后解压,选中与 package.json 同级的 dsh-plugin-tts 目录(常见失败原因是多套一层目录)。
方式 A:设置里从本地安装(推荐)¶
- DSH → 设置 → 插件管理 → 从本地安装,选中解压后的
dsh-plugin-tts目录。 - 刷新页面,打开 设置 → 语音合成,看状态点:灰 = 关;黄 = 开但未填 Key;绿 = 可合成。
- Host 自检(端口换成你的 DSH 端口):
curl http://127.0.0.1:6831/dsh-tts/state
返回含 "ok":true 表示 Host 侧已起来;其余为填 Key 与上游配置。
装前可在解压目录执行:
node bin/install.mjs --check
看到「校验通过:文件齐全、元数据完整、所有 JS 通过 node –check。」再装更稳妥。
方式 B:让 DSH 安装本地包路径¶
若目录已在本地,在 DSH 对话中给出绝对路径,由 DSH 调用 plugin_manager install_bundle,例如:
安装本地插件包 /home/you/dsh-plugin-tts
Windows 示例路径形式:D:\path\to\dsh-plugin-tts。
首次填 Key¶
在 设置 → 语音合成 至少配置一套:
- 小米 MiMo:小米模板里填 API Key(接口文档指向
https://api.xiaomimimo.com)。 - Breeze:Breeze 面板填 API Key。
两套可同时启用;routeMode=smart 时按上述规则选路。
典型用法¶
设置页¶
- 填 Key 后点「测试连接」或各面板底部「保存配置并检查」。
- 各协议面板自带试听;可勾选唱歌模式就地播放。
- 「发语音」填文案与
group:/private:目标,一键合成并发送。 - 「测试 OneBot」会调用
get_login_info,失败时文档说明会带端口提示。
AI 工具¶
对 DSH 说「有哪些 TTS 音色」时,可触发 tts_voices,返回内置音色与通道状态(文档示例为 9 个内置音色)。合成或合成并发 QQ 语音走 tts_speak;插件关闭或禁止 AI 调用时,tts_speak 会直接拒绝。
HTTP¶
除 state 外,README 将 /dsh-tts/* 作为配置、试听、克隆、发语音、日志等入口;具体路径以实现为准,装好后用 state 做连通性检查即可。
适用场景与注意¶
适合:已在 DSH 里跑智能体、需要 MiMo 或 Breeze 合成、并希望通过 OneBot 把结果当 QQ 语音发到群或好友的开发者;也希望在设置页统一管理 Key、音色、克隆参考与路由,而不是散落脚本。
注意:
- 插件以当前 DSH profile 进程权限运行,能读写
$DSH_HOME/dsh-tts/;安装前应阅读仓库源码与 MIT 许可证,自行评估信任边界。 voicePolicy.allowAbsolutePath默认 false,禁止任意绝对路径读音频。- OneBot 网关需自行部署与保活;Key 与参考音频都在本机数据目录,移除插件不会自动删除
$DSH_HOME/dsh-tts/,需手动清理才不可恢复。 - README 注明插件由 AI 制作,遇问题需自行排查或修复;社区目录 skillhub.cn 插件页 与 GitHub 仓库为独立信息源,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-plugin-tts 把 TTS 合成、双协议路由、克隆与 OneBot 发语音收进 DSH 的统一界面与工具面,适合要把「能说话的 agent」和 QQ 通道接在同一条 profile 里的场景。
- 目录页:https://www.skillhub.cn/plugins/LotusPrimeUmbra/dsh-plugin-tts
- 源码与 README:https://github.com/LotusPrimeUmbra/dsh-plugin-tts