语音工坊(dsh-plugin-voice-studio):把 TTS、翻唱与 QQ 语音放进 DSH 插件

前言

在 DeepSeek Harness(DSH)里做带「声音」的智能体,常见做法是各自接 TTS API、自己管参考音频、翻唱再另起脚本,QQ 侧还要再对接一层桥接。链路一多,配置分散,Agent 也很难用同一套设置去合成、翻唱和发语音。

下面介绍社区插件 语音工坊(仓库 keduoli-lovely/dsh-plugin-voice-studio),维护者为 keduoli-lovely,在 DSH 插件目录中归类为 模型推理。它把多提供商语音合成、参考音色库、RVC 歌曲翻唱、情绪控制,以及通过 qq-bridge 发送语音(含随机语音回复)收进一个插件;设置集中在 设置 → 语音工坊,Agent 通过 voice_generate、song_cover、voice_studio_info、voice_random_check 四个工具共用同一配置。

这是什么

语音工坊 的定位可以概括为:把「说话、唱歌、换音色、发到 QQ」做成一件事。插件本体仅依赖 Node.js ≥ 18 内置模块(无额外 npm 依赖);可选能力依赖本机或局域网上的 IndexTTS、GPT-SoVITS、RVC、MSST、硅基流动 / MiniMax / 小米 MiMo / OpenAI 兼容 API,以及 qq-bridge。缺某服务时对应能力不可用,不会导致插件加载失败。

运行环境要求 DeepSeek Harness ≥ 0.1.7(桌面版或 web profile)。插件通过 settings.section 出现在设置里;当前 package.json 中版本为 0.4.0,许可证 MIT。

核心功能

多提供商语音合成

内置 6 个 TTS 适配器,在线与本地配置字段统一为 baseUrl / apiKey / model / voice;本地提供商使用 refAudioId。

提供商 id 类型 说明摘要
indextts 本地 Gradio gen_single,支持 8 维情绪向量
gptsovits 本地 api_v2.py 的 /tts;9874 为 WebUI,无 TTS API
siliconflow 在线 /audio/speech,情绪用指令前缀
minimax 在线 /t2a_v2,返回 hex 音频由插件解码
mimo 在线 Chat Completions + audio
openai 在线 OpenAI 兼容 /audio/speech

配置持久化在 ~/.dsh-voice-studio/config.json。本地提供商需先有参考音色;未设默认音色时会用库里第一个可用条目。

参考音色库

支持上传、从路径导入、整目录递归导入(最多 200 个)。音频复制到 ~/.dsh-voice-studio/refs/,不引用原路径。同名导入返回 409 VOICE_CONFLICT,页面可选择替换或另存为新音色。

情绪系统

来源链为:调用方显式参数 → 已安装的 DSH 情绪插件(Service / get_mood / POST {DSH}/emotion/api/state)→ 内置词典(开心、生气、悲伤等)。缺情绪插件也不会失败。GPT-SoVITS 与 RVC 无情绪参数,结果中会如实标注。

歌曲翻唱

流程:本机绝对路径给歌 → 人声分离 → RVC 换声(HTTP)→ 本地 Node 混音母带。换声直接调用 RVC WebUI 的 Gradio /run/*;人声分离需 MSST_WebUI(填 msstUrl 时优先)或插件自带的 server/rvc-api.py 的 /separate(因 RVC WebUI 分离按钮对应流式生成器且队列路由不可用,HTTP 无法等分离跑完)。混音在本地按分离人声 RMS 对齐伴奏,有 ffmpeg 时可 loudnorm 并输出 MP3。

QQ 发送与随机语音

生成音频后复制进 qq-bridge 语音库,调用其 qq_send_voice;插件不接管 QQ 连接。随机语音由宿主端概率、冷却与每小时上限控制;唱歌不走随机。

可观测与 API

状态页会展示 DSH 地址/端口、qq-bridge 与 DSH 地址是否一致,并按当前选择探测服务。除 Agent 工具外,插件还提供 HTTP API(详见仓库 README)。

安装与启用

从 GitHub 安装(web profile):

dsh plugin --profile web add github:keduoli-lovely/dsh-plugin-voice-studio

本地目录安装:

dsh plugin --profile web add /path/to/dsh-plugin-voice-studio

安装后刷新设置页,即可看到「语音工坊」。插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证。

典型用法

快速开始(设置页)

  1. 配置语音提供商:设置 → 语音工坊 → 语音合成,选择提供商并填写 baseUrl(本地)或 apiKey(在线)。
  2. 导入参考音色:在语音合成或「参考音色」页上传/导入约 3~15 秒干净人声。
  3. 试听:语音合成页底部输入文字,点「生成」,确认音色与出声正常。
  4. (可选)翻唱:在 RVC 机器启动 server/rvc-api.py,歌曲翻唱页填写地址并「重新扫描模型」;输入本机绝对路径开始翻唱。
  5. (可选)QQ:QQ 发送页启用并确认 qq-bridge 路径;点「把当前 DSH 地址写入 qq-bridge」,重启 qq-bridge。

提供商配置示例

下面片段说明 config.json 中 tts.providers 的常见写法(密钥需替换为自己的):

{
  "tts": {
    "provider": "indextts",
    "providers": {
      "indextts": {
        "baseUrl": "http://127.0.0.1:7860",
        "refAudioId": "v_xxx",
        "lang": "ZH",
        "emoWeight": 0.8
      },
      "siliconflow": {
        "baseUrl": "https://api.siliconflow.cn/v1",
        "apiKey": "sk-...",
        "model": "FunAudioLLM/CosyVoice2-0.5B",
        "voice": "FunAudioLLM/CosyVoice2-0.5B:alex"
      }
    }
  }
}

可选 RVC 分离服务

需要自动分离且未配置 MSST 时,可在 RVC 根目录启动插件附带脚本(默认端口 7866,示例来自 README):

runtime\python.exe <插件目录>\server\rvc-api.py --host 0.0.0.0 --port 7866 --rvc-root D:\path\to\RVC

浏览器访问 http://<RVC机器IP>:7866/ 应看到服务自述 JSON,而非 WebUI 页面。

适用场景与注意

适合谁:希望在 DSH Agent 里统一做 TTS、带参考音色的角色声线、情绪随对话变化、偶尔 RVC 翻唱,并把结果发到 QQ 的开发者;已有 IndexTTS / GPT-SoVITS / RVC / qq-bridge 栈的用户可以按需启用子能力。

应注意:

  • 歌曲翻唱 song 只接受本机绝对路径;音乐目录匹配、链接下载、yt-dlp 等能力已移除。
  • RVC 换声与 WebUI 列表/转换可共用一个 rvcUrl;分离必须 MSST 或 rvc-api.py 之一。
  • 社区插件目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以你安装时的仓库为准。

结尾

经过上面的步骤,语音工坊把合成、音色库、情绪、翻唱与 QQ 语音发送收敛到 DSH 一套配置与四个 Agent 工具里,减少自建胶水代码。进一步了解参数、HTTP API、故障排查与已知限制,请阅读仓库 README:

羽毛球分组比赛记分
小程序二维码

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

小夜