🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

音色工坊 liye0803/dsh-voice-studio

DeepSeek Harness
liye08033 天前有提交已提供中文文档扫描:含敏感能力

在侧边栏管理音色并制作 RVC 翻唱歌曲

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liye0803/dsh-voice-studio
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · browser
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 132 处,展示前 30 条)
  • 写入本地文件
    lib/app.js:32
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/app.js:37
    mkdirSync(uploadDir, { recursive: true })
  • 读取本地文件
    lib/app.js:41
    return JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    lib/app.js:47
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    lib/app.js:48
    writeFileSync(file, JSON.stringify(value, null, 2), 'utf8')
  • 读取本地文件
    lib/app.js:93
    out.push(check('venv', 'Python 运行环境', existsSync(d.py), d.py, '按 README 重新部署,或改「安装根目录」'))
  • 读取本地文件
    lib/app.js:94
    out.push(check('asr', '转写环境', existsSync(d.asrPy), d.asrPy, '同上'))
  • 读取本地文件
    lib/app.js:95
    out.push(check('repo', 'GPT-SoVITS 源码', existsSync(join(d.gpt, 'api_v2.py')), d.gpt, '把整合包解压到安装根目录下的 gpt-sovits'))
  • 读取本地文件
    lib/app.js:97
    const missing = need.filter((f) => !existsSync(join(d.models, f)))
  • 读取本地文件
    lib/app.js:99
    out.push(check('ref', '参考音', existsSync(s.refAudio), s.refAudio, '选一段 5~10 秒干净人声,或上传后填路径'))
  • 发起网络请求
    lib/app.js:104
    const r = await fetch(`${s.ttsUrl}/control?command=config`, { signal: AbortSignal.timeout(4000) })
  • 写入本地文件
    lib/app.js:132
    mkdirSync(d.gptW, { recursive: true })
  • 发起网络请求
    lib/app.js:151
    online = (await fetch(`${s.ttsUrl}/control?command=config`, { signal: AbortSignal.timeout(2500) })).ok
  • 发起网络请求
    lib/app.js:176
    const r = await fetch(`${s.ttsUrl}/control?command=config`, { signal: AbortSignal.timeout(2500) })
  • 写入本地文件
    lib/app.js:200
    try { writeFileSync(join(d.root, 'logs', 'start.log'), '[' + new Date().toISOString() + '] startTts called\n', { flag: 'a' }) } catch {}
  • 执行外部命令来自配置/变量
    lib/app.js:210
    spawn(d.py, ['api_v2.py', '-a', '127.0.0.1', '-p', '9880', '-c', 'GPT_SoVITS/configs/tts_infer.yaml'], {
  • 删除本地文件
    lib/app.js:292
    if (f && existsSync(f)) unlinkSync(f)
  • 执行外部命令来自配置/变量
    lib/app.js:370
    const child = spawn(d.py, args, { cwd: d.gpt, windowsHide: true })
  • 执行外部命令来自配置/变量
    lib/app.js:504
    execFileSync(sevenZip, ['x', src, '-o' + tmp, '-y'], { windowsHide: true })
  • 执行外部命令固定命令
    lib/app.js:510
    execFileSync('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', `Expand-Archive -LiteralPath '${src}' -DestinationPath '${tmp}' -Force`],
  • 删除本地文件递归
    lib/app.js:530
    rmSync(tmp, { recursive: true, force: true })
  • 执行外部命令来自配置/变量
    lib/app.js:559
    const child = spawn(cmd, args, { cwd: opts.cwd, windowsHide: true, env: { ...process.env, PATH: basePath, PYTHONIOENCODING: 'utf-8', PYTHONUTF8: '1' }
  • 执行外部命令固定命令
    lib/app.js:691
    if (job.pid) execFileSync('taskkill.exe', ['/PID', String(job.pid), '/T', '/F'], { windowsHide: true })
  • 删除本地文件递归
    lib/app.js:804
    rmSync(tmp, { recursive: true, force: true })
  • 删除本地文件递归
    lib/app.js:813
    rmSync(tmp, { recursive: true, force: true })
  • 删除本地文件递归
    lib/app.js:816
    rmSync(tmp, { recursive: true, force: true })
  • 发起网络请求
    lib/app.js:880
    const r = await fetch(`${s.ttsUrl}/tts?${q}`, { signal: AbortSignal.timeout(180000) })
  • 发起网络请求
    lib/app.js:942
    engine = (await fetch(`${s.ttsUrl}/control?command=config`, { signal: AbortSignal.timeout(2500) })).ok
  • 发起网络请求
    lib/app.js:1116
    const r = await fetch(s.ttsUrl + '/control?command=config', { signal: AbortSignal.timeout(2500) })
  • 删除本地文件递归
    lib/app.js:1141
    rmSync(p, { recursive: true, force: true })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的侧边栏语音工作室:GPT-SoVITS 音色 + RVC 翻唱

README

由 DeepSeek 最新模型翻译生成
dsh-voice-studio · 音色工坊 DeepSeek Harness 的语音工作台插件:在侧边栏里管理 GPT-SoVITS 音色(训练 / 切换 / 试听),以及基于 RVC 的翻唱变声(人声分离 → 变声 → 混音出一首歌)。 平台:Windows 10/11(依赖 PowerShell、WMI、explorer) 许可:MIT English quickstart dsh-voice-studio is a Windows-only plugin for DeepSeek Harness that puts a voice workbench in the sidebar: manage GPT-SoVITS voices (zero-shot preview, fine-tuning, switching, A/B), and run RVC covers (separate vocals → voice conversion → mix → mp3). The plugin ships no models or engines. You need: - DeepSeek Harness (plugin host) - GPT-SoVITS with api_v2.py running on 127.0.0.1:9880
展开完整文档(README 剩余 1 节)
dsh-voice-studio · 音色工坊

DeepSeek Harness 的语音工作台插件:在侧边栏里管理 GPT-SoVITS 音色(训练 / 切换 / 试听),以及基于 RVC 的翻唱变声(人声分离 → 变声 → 混音出一首歌)。

平台:Windows 10/11(依赖 PowerShell、WMI、explorer) 许可:MIT

English quickstart

dsh-voice-studio is a Windows-only plugin for DeepSeek Harness that puts a voice workbench in the
sidebar: manage GPT-SoVITS voices (zero-shot preview, fine-tuning, switching, A/B), and run RVC covers
(separate vocals → voice conversion → mix → mp3).

The plugin ships no models or engines. You need:

- DeepSeek Harness (plugin host)
- GPT-SoVITS with api_v2.py running on 127.0.0.1:9880
- optionally an RVC environment (Applio + audio-separator + ffmpeg) for covers

Install (after publishing):

dsh plugin --profile desktop add dsh-voice-studio
or from git
dsh plugin --profile desktop add github:liye0803/dsh-voice-studio

Restart DSH, open the sidebar entry, and the 3-step wizard will ask where your engines live.
HTTP API: GET /voice-studio/say?text=hello&voice=zero-shot returns a wav.

截图

说话:音色列表、试听、语速/温度、A/B、批量合成、新建训练

说话页

翻唱:选音频、RVC 音色、变调、模式、人声/伴奏音量、只处理前 N 秒

翻唱页

设置 · 系统:一键导入、安装位置、输出位置、维护与 Aurabot 同步

设置页

它能做什么

说话(GPT-SoVITS)

- 零样本试听:选一段 5~10 秒参考音,立刻用底模合成
- 训练专属音色:切片 → 打标 → 预处理 → s1/s2 训练,全自动;6GB 显存可用 v2 小模型
- 音色管理:多套权重切换、备注、改名、删除
- 参数:语速 0.6~1.6、温度 0.1~1.2
- A/B 对比:同一句话,当前音色 vs 零样本
- 批量合成:一行一句,最多 30 句,逐条下载
- 参考音库:列出候选音频,一键转写(whisper)、设为全局参考音、绑到某个音色
- 对外接口:GET /voice-studio/say?text=… 直接返回 wav,任何软件可用

翻唱(RVC)

- 完整翻唱:整首歌 → 人声分离 → RVC 变声 → 混音,导出 mp3
- 只变声:输入已经是人声时跳过分离混音
- 可调:变调 -12~+12 半音、人声/伴奏音量、只处理前 N 秒
- 模型管理:导入 .pth / .index / .zip,同名自动配对
- 组件自检:Python / Applio / audio-separator / ffmpeg / rmvpe 五项状态一目了然

通用

- 环境自检:显卡、显存档位、Python、转写环境、底模、参考音、引擎、端口、权重目录
- 一键导入:把 json / pth / index / zip / wav 拖进来,按类型自动归位
- 输出位置:成品存哪个文件夹自己选
- 引擎保活:60 秒看门狗;用 WMI 独立启动,DSH 退出不会带走引擎
- 同步到 Aurabot:把当前音色的参考音/文字写进 Aurabot 配置,不用两边手填
- 诊断包 / 清理缓存 / 配置导出导入

环境要求

| 依赖 | 说明 |
| DeepSeek Harness | 提供插件宿主与侧边栏 |
| GPT-SoVITS | 说话引擎(api_v2.py,默认 127.0.0.1:9880) |
| RVC 环境(可选) | 翻唱用:Applio + audio-separator + ffmpeg,装在独立目录 |
| NVIDIA 显卡 | 4GB 以上可零样本;6GB 可训 v2 小模型;8GB+ 可用 v2ProPlus |

本插件不包含模型与环境,只做“编排 + 界面 + 保活”。引擎需要你自己装好。

安装

本地开发(link: 安装,改动即时生效):

dsh plugin --profile desktop add "link:D:/path/to/dsh-voice-studio"

从 npm / GitHub 安装(发布后):

dsh plugin --profile desktop add dsh-voice-studio

装完重启 DSH,侧边栏出现「音色工坊」。

首次配置

1. 打开侧边栏「音色工坊」,向导会跑三步:环境体检 → 选玩法 → 完成
2. 设置 → 语音引擎 → 「安装位置」填 GPT-SoVITS 所在目录(含 venv、gpt-sovits)
3. 设置 → 翻唱引擎 → 「RVC 根目录」填 RVC 环境目录(含 env、Applio)
4. 「语音引擎」填参考音路径与参考文字(文字必须和音频逐字一致)
5. 点「重新检测」,红项会写修复方法

使用

试听:说话页 → 输入一句 → 试听当前音色 → 拖语速/温度再试

训练:说话页 → 新建训练 → 名字 + 音频 + 版本(6GB 选 v2)→ 开始训练期间语音服务暂停,结束后自动恢复。

翻唱:翻唱页 → 选歌 → RVC 音色 → 模式(完整翻唱/只变声)→ 开始 → 试听/下载

给别的软件用:

GET http://127.0.0.1:<DSH端口>/voice-studio/say?text=你好&voice=zero-shot

目录结构

lib/
index.js 宿主路由 + 引擎看门狗(独立模式 --standalone <port>) app.js 核心:自检、训练、翻唱、导入、同步 page.html 整个界面(HTML+CSS+JS 单文件,热加载) client.js 侧边栏入口 tools/ train_pipeline.py GPT-SoVITS 训练流水线 label.py 打标

运行数据(不进仓库):

~/.dsh/voice-studio/
settings.json voices.json jobs.json
logs/ samples/ uploads/ dataset/ rvc-work/

开发

| 改什么 | 怎么生效 |
| lib/page.html | 面板 F5 刷新即可(热加载) |
| lib/app.js / index.js / client.js | 重启 DSH |
| tools/*.py | 下次任务生效 |

自测(初装态逐项打接口,CI 也跑这个):

npm test # 或 node scripts/test-api.mjs
npm run check # 三个 JS 文件语法检查

独立调试(不开 DSH 也能看界面):

node lib/index.js --standalone 9909
打开 http://127.0.0.1:9909/voice-studio/app

已知限制

- 仅 Windows(依赖 PowerShell / WMI / explorer)
- 翻唱需要 Aurabot 风格的 RVC 目录布局,或自行在设置里指到等价结构
- 6GB 显存:TTS 引擎与 RVC 不能同时常驻,翻唱/训练会自动暂停引擎
- 训练小模型(GPT-SoVITS s1/s2)在 6GB 上只能选 v2,v2ProPlus 会 OOM

常见问题

显示“引擎离线”/ 说不了话 先看 设置 → 语音引擎 → 环境自检;引擎加载约 40 秒,启动中会显示“启动中”。

翻唱报“找不到模型” 确认 设置 → 翻唱引擎 五个组件全绿,且 models 里有 .pth。

面板点了没反应 页面脚本出错时整页 JS 会失效;按 F5,或看开发者工具 Console 的第一条报错。

合规与免责

- 本插件只做本地编排,不下载、不分发任何模型、音色或音频内容
- GPT-SoVITS、RVC/Applio、audio-separator、ffmpeg 各自遵循其开源许可,请自行遵守
- 音色克隆须获得权利人授权:使用他人声音训练或发布内容可能侵犯人格权/著作权,风险由使用者承担
- 抓取音乐平台歌曲(如网易云、QQ 音乐)可能违反其服务条款,本插件不提供任何平台接入
- 项目按 MIT 提供,不对因使用产生的任何后果负责

相关文档

- docs/PUBLISHING.md:开源插件发布流程(阶段清单 + 踩坑速查)
- AGENTS.md:接手速查(路径、改哪生效、命令)
- CHANGELOG.md:版本记录

许可

MIT,见 LICENSE。

第三方组件(GPT-SoVITS、RVC/Applio、audio-separator、ffmpeg)遵循各自许可;音色素材请确保你有权使用。
预览分享卡片长什么样 ↓liye0803/dsh-voice-studio
分享 · DeepSeek Harness Hub
liye0803/dsh-voice-studio

在侧边栏管理音色并制作 RVC 翻唱歌曲

这是你的仓库?认领条目

回到顶部