dsh-plugin-tts: TTS in DeepSeek Harness and Direct QQ Voice Sending

前言

在 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:设置里从本地安装(推荐)

  1. DSH → 设置 → 插件管理 → 从本地安装,选中解压后的 dsh-plugin-tts 目录。
  2. 刷新页面,打开 设置 → 语音合成,看状态点:灰 = 关;黄 = 开但未填 Key;绿 = 可合成。
  3. 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye