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

语音朗读 1624318455/dsh-plugin-tts

DeepSeek Harnessv0.6.7
162431845521 天前有提交已提供中文文档扫描:含敏感能力

使用手册执行手册第一次用,逐步骤上手

46.6/100
综合分
25
GitHub 星标
4,726
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @memef1f1y/dsh-plugin-tts
npm 源 · @memef1f1y/dsh-plugin-tts 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 21 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@memef1f1y/dsh-plugin-tts @ 0.6.7
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 00:26:07

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 109 处,展示前 30 条)
  • 执行外部命令来自配置/变量
    lib/index.mjs:230
    const child = spawn(process.execPath, argv, {
  • 发起网络请求
    lib/index.mjs:421
    res = await fetch(baseUrl + route, {
  • 读取本地文件
    lib/index.mjs:479
    const audioBytes = readFileSync(mp3Path);
  • 写入本地文件
    lib/index.mjs:497
    writeFileSync(wavPath, wavBytes);
  • 执行外部命令来自配置/变量
    lib/index.mjs:559
    const p = spawn(cfg.binary, ['--model', cfg.model, '--output_file', wavPath], {
  • 发起网络请求
    lib/index.mjs:646
    res = await fetch(cfg.baseUrl + route, {
  • 写入本地文件
    lib/index.mjs:695
    writeFileSync(wavPath, buf);
  • 发起网络请求
    lib/index.mjs:750
    res = await fetch(cfg.baseUrl + route, {
  • 写入本地文件
    lib/index.mjs:789
    writeFileSync(wavPath, buf);
  • 读取本地文件
    lib/index.mjs:931
    if (!existsSync(SETTINGS_FILE)) return {};
  • 读取本地文件
    lib/index.mjs:932
    const data = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8'));
  • 读取本地文件
    lib/index.mjs:945
    if (existsSync(SETTINGS_FILE)) data = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8')) || data;
  • 读取本地文件
    lib/index.mjs:945
    if (existsSync(SETTINGS_FILE)) data = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8')) || data;
  • 写入本地文件
    lib/index.mjs:960
    mkdirSync(CAL_DIR, { recursive: true });
  • 写入本地文件
    lib/index.mjs:961
    writeFileSync(SETTINGS_FILE, JSON.stringify(data, null, 2));
  • 读取本地文件
    lib/index.mjs:984
    if (!existsSync(cloudUsageFile())) return { version: 1, months: {} };
  • 写入本地文件
    lib/index.mjs:996
    mkdirSync(CAL_DIR, { recursive: true });
  • 发起网络请求
    lib/index.mjs:1076
    res = await fetch(url, {
  • 发起网络请求
    lib/index.mjs:1505
    const r = await fetch(cfg.baseUrl + '/health', { signal: AbortSignal.timeout(8000) });
  • 发起网络请求
    lib/index.mjs:1690
    const r = await fetch(url, { signal: AbortSignal.timeout(timeoutMs) });
  • 删除本地文件
    lib/index.mjs:1832
    rmSync(modelPath, { force: true });
  • 删除本地文件
    lib/index.mjs:1833
    rmSync(indexPath, { force: true });
  • 删除本地文件递归
    lib/index.mjs:2632
    rmSync(dir, { recursive: true, force: true });
  • 发起网络请求
    lib/client.js:1238
    fetch("/dsh-tts-api/rvc-config-save", {
  • 发起网络请求
    lib/client.js:1247
    fetch("/dsh-tts-api/index-config-save", {
  • 发起网络请求
    lib/client.js:1256
    fetch("/dsh-tts-api/cosy-config-save", {
  • 发起网络请求
    lib/client.js:1268
    fetch("/dsh-tts-api/cloud-config-save", {
  • 发起网络请求
    lib/client.js:1277
    fetch("/dsh-tts-api/cloud-config")
  • 发起网络请求
    lib/client.js:1302
    fetch("/dsh-tts-api/rvc-config")
  • 写入剪贴板
    lib/client.js:5146
    await navigator.clipboard.writeText(text);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-base@deepseek-ai/dsh-web
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 朗读助手回复
  • 自动朗读开关
  • 语音设置面板

DeepSeek Harness 的 Edge TTS 语音插件:朗读助手回复、自动朗读开关、语音设置面板(免费,无需 API key)

v0.3.12026-09-11
修复新版 DSH 上语音面板不显示的问题(client 未声明 slots inject 导致整个 UI 静默不加载)。包含 a00b357。安装后重启 dsh web,设置-插件里会出现语音选项。
v0.3.02026-08-19
· v0.3.0 dsh-plugin-tts — Edge TTS + RVC 语音插件。Phase 1-3 累计更新。 · 新增功能 · 音频下载:每条消息操作行新增下载按钮,把合成音频(Edge/RVC)保存为 MP3(复用进程内缓存,秒下)。 · 朗读选中文本:消息里选中文本会弹出「朗读选中」悬浮按钮,只朗读选中片段。 · 长读流式(Edge 也支持):纯 Edge 长文本也走自适应分块渐进播放,第一块先响、其余边播边合成,不再干等整段合成。 · TTS Provider 抽象 + 本地 Piper 提供者:registerProvider/getProvider 可插拔接口;local-piper 未配置时优雅报错。 · RVC 首次上手引导:设置面板内嵌分 OS 启动命令 + 一键诊断。 · 体验护栏(Phase 2) · 自动朗读改为「耳机图标 + 自动朗读」带状态圆点的 pill(不再被误读成语音输入)。 · 长读显示可见「第 x/y 段」进度;mini 播放器支持暂停/继续 + 倍速 1x/1.25x/1.5x。 · tooltip 主题化(--dsw-*);slider 当前值右对齐读数。 · 首次用户手势自动解锁自动播放。 · 可靠性(Phase 1) · 显式取消:停止朗读会立即取消 RVC 分块 job,及时释放本机 GPU/内存。 · 设置持久化:音色/自动朗读/提供者/RVC 配置写入 localStorage,刷新不丢 + 恢复默认。 · 音色下线自愈(1007 自动剔除+回退默认);Esc/S 键停止朗读;音频缓存复用+失效回退。 · 其他 · 文档:README/README.zh 更新,新增 ANALYSIS.md(路线图 + 落地记录)。 · 测试:npm run test:all 全绿(smoke 50 / live 18 / patch 4 / i18n 6 / client 29)。
v0.2.02026-08-17
· v0.2.0 · 🌍 国际化(中/英) · 设置面板、气泡/朗读按钮、诊断、语音包面板、RVC 服务错误与进度全部界面文案已本地化。 · 设置面板新增「界面语言」选择器:自动(跟随浏览器)/ 中文 / English,即时生效并持久保存(localStorage dsh-tts-lang)。 · 宿主侧错误与进度阶段现在带 i18n 标记(向后兼容,保留中文回退)。 · 新增 tests/i18n-keys.mjs 和 tests/client-load.mjs 回归测试。 · 🐛 macOS 修复(来自 Apple Silicon 真机测试) · tools/mac-verify.sh:RIFF 检查现在兼容 macOS od 输出中的双空格(此前会误报 FAIL)。 · tools/package-runtime.py:仅在 darwin 上自动给 infer/lib/audio.py 打补丁,适配新版 PyAV(av.open("rb"/"wb") -> "r"/"w")。 · rvc-server.py:audio_base64 错误、音频为空、f0_method 未知时现在返回 400,不再 500 崩溃。 · 文档记录了 macOS 依赖与 infer 标签的排查结论。 · ✅ 测试套件标准化 · 新增实景场景 + 边界测试套件(tests/rvc-server-live.mjs)、darwin 补丁边界测试、i18n/client-load 测试。 · npm run test:all = smoke 43 + live 18 + patch 4 + i18n 6 + client-load 14(共 85 项检查)。 · .github/workflows/test.yml:在 Node 20/22/24 上跑 CI。 附件:dsh-external-dsh-plugin-tts-0.2.0.tgz(npm pack)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-tts 跳转 - English README(English,与本页逐节对应) - 使用手册(执行手册)(第一次用,逐步骤上手) - RVC 自定义音色指南(自定义音色 · 分块渐进播放 · 紧凑索引 · 音色包 · 便携运行时) - Index-TTS2 指南(本机参考音频音色) - CosyVoice 指南(本机提示音频零样本克隆,CosyVoice-2.0-0.5B) - Cloud TTS 指南(谷歌付费音色 · API Key · 用量与计费口径) - Edge TTS 指南(默认在线朗读) - 自适应分块设计文档(长文无缝朗读的设计与实测) dsh-plugin-tts — Edge TTS + RVC / Index-TTS2 / CosyVoice / Cloud 语音大集成 DeepSeek Harness 语音插件:给 AI 回复加朗读——开箱即用微软免费在线音色(Edge TTS),也能用你自己训练的 RVC 音色、本机 Index-TTS2 参考音频音色、本机 CosyVoice 提示音频零样本克隆或谷歌 Cloud TTS 付费音色朗读;长回复自适应分块渐进播放、段间无缝;音色可从音色包仓库一键安装;还提供免装 RVC WebUI 的便携运行时。 📖 第一次用?
展开完整文档(README 剩余 1 节)
dsh-plugin-tts

跳转

- English README(English,与本页逐节对应)
- 使用手册(执行手册)(第一次用,逐步骤上手)
- RVC 自定义音色指南(自定义音色 · 分块渐进播放 · 紧凑索引 · 音色包 · 便携运行时)
- Index-TTS2 指南(本机参考音频音色)
- CosyVoice 指南(本机提示音频零样本克隆,CosyVoice-2.0-0.5B)
- Cloud TTS 指南(谷歌付费音色 · API Key · 用量与计费口径)
- Edge TTS 指南(默认在线朗读)
- 自适应分块设计文档(长文无缝朗读的设计与实测)

dsh-plugin-tts — Edge TTS + RVC / Index-TTS2 / CosyVoice / Cloud 语音大集成

DeepSeek Harness 语音插件:给 AI 回复加朗读——开箱即用微软免费在线音色(Edge TTS),也能用你自己训练的 RVC 音色、本机 Index-TTS2 参考音频音色、本机 CosyVoice 提示音频零样本克隆或谷歌 Cloud TTS 付费音色朗读;长回复自适应分块渐进播放、段间无缝;音色可从音色包仓库一键安装;还提供免装 RVC WebUI 的便携运行时。

📖 第一次用?看《使用手册(执行手册)》——每一步都有 "做什么 / 怎么做 / 怎么算成功",从朗读、RVC 音色到音色包下载全覆盖。

功能

1. 消息朗读按钮:每条 AI 回复左下角操作行新增「朗读」按钮,点击朗读该条消息(按钮显示音柱跳动动画),再次点击停止。
2. 自动朗读开关:输入框左下角的喇叭按钮;开启后每条新完成的 AI 回复自动朗读(按钮带圆形高亮),关闭则不自动朗读。

朗读按钮与自动朗读开关朗读中状态

3. 语音设置面板:侧边栏「设置 → 插件」新增「语音」标签页:
- TTS提供者:Edge TTS(免费在线)/ 自定义音色(RVC)/ 本地音色(Index-TTS2)/ 本地克隆(CosyVoice)/ Cloud TTS(谷歌付费)
- 朗读音色:22 个经实测可用的 Edge TTS 音色(默认 晓萱 zh-CN-XiaoxuanNeural); Cloud 组 8 个 cmn-CN 音色(默认 cmn-CN-Wavenet-A,也可手输 voice id)
- 声音调节:语速 / 音调 / 音量(0 = 默认,Edge 与 Cloud 共用)
- RVC 配置:服务地址 + 模型(.pth)/ 索引(.index)选择、原声音色、声音调节与高级参数——详见《RVC 指南》
- Index-TTS2 配置:服务地址(默认 7880)+ 参考音色选择/刷新/上传 + 朗读前清洗开关 + 情感控制 + 采样参数——详见《Index-TTS2 指南》
- CosyVoice 配置:服务地址(默认 7890)+ 提示音频选择/刷新/上传 + 提示文字稿(必填,按顺序全文填写)+ 语速(0.5–2.0)+ 随机种子(0 = 随机)——详见《CosyVoice 指南》
- Cloud 配置:API Key(只存本机 Host 文件,输入框写后即清)+ Project ID(可选)+ 测试连接 + 本月分档用量(Standard 400 万 / Wavenet·Neural2·Chirp3 各 100 万)——详见《Cloud 指南》
- 音色包:从音色包仓库一键下载安装音色
- 试听测试:输入文本 + 播放按钮(播放中显示旋转 loading,可点击停止;失败时红字提示)
4. RVC 自定义音色:用你自己训练的 RVC 模型朗读,全程本机计算,支持免索引模式、高级参数(详见《RVC 指南》)。
5. 长文本无缝朗读:自适应分块渐进播放——探测校准块大小、边播边合成、Web Audio 采样级拼接、段间无停顿(详见设计文档)。
6. 朗读时 mini 播放器:暂停/继续 + 倍速(1x / 1.25x / 1.5x),分块长读显示可见的「第 x/y 段」计数。
7. 主题化 tooltip + RVC 首次引导:悬浮提示用主题 token(--dsw-)渲染;RVC 面板顶部内嵌首次使用三步引导(分 OS 启动命令 + 一键诊断)。
8. 音频下载:每条消息操作行新增下载按钮保存合成音频——Edge/Cloud 读出 MP3,本地链路(RVC/Index-TTS2/CosyVoice)读出 WAV;复用进程内缓存,刚读过的消息一点即下。
分段长文目前没有单个输出文件,会提示"暂不支持导出"而非做无用功的重合成。
9. 朗读选中文本:在消息里选中文本会在选区上方出现「朗读选中」悬浮按钮,点按只朗读该选中片段。
10. 长读流式(Edge 同样支持):纯 Edge 长文本也走自适应分块渐进播放——第一块先响、其余边播边合成,不再干等整段合成完成。
11. 审批语音提醒:可选地把 Agent 审批事件用语音播报。开启后:审批请求(approval/asked)会 打断当前朗读(Agent 正在等这个决定),审批结果(approval/decided)仅在空闲时播报。
播报固定走 Edge TTS(不依赖 RVC 服务)、用自己的提醒音色、按审批 id 去重、默认关闭。
(范围说明:任务完成播报留待后续阶段——jobs 子系统目前没有本插件可观察的会话事件通道。)
12. 干净朗读、RVC 静默:朗读前清洗消息 Markdown(代码块、表格、链接、引用、任务列表),不再读出一堆符号;可选「朗读原始 Markdown 符号」开关保留逐字朗读(适合读源码)。
Edge 模式下 RVC 面板完全隐藏,只留一行「需要克隆音色?」入口,普通朗读零配置零感知。

要求

- DeepSeek Harness web profile(dsh web)
- Node.js ≥ 22(worker 使用原生 WebSocket)
- 仅本地音色链路需要额外准备(Edge/Cloud 开箱即用):
- RVC 自定义音色:本机 RVC 推理环境(RVC WebUI 或便携运行时,并在使用前启动 rvc-server.py)——见《RVC 指南》 「启动本地 RVC 服务」和《使用手册》 §4.2,macOS 用户同样先看这里。
- Index-TTS2 音色:本机 index-tts2-nvidia 包的 API 服务(启动api服务.bat,默认端口 7880)——见《Index-TTS2 指南》。
- CosyVoice 克隆:本机 CosyVoice-2.0-0.5B 包的 cosy-server.py (启动cosy服务.bat,默认端口 7890)——见《CosyVoice 指南》。

安装

四种等价方式(任选其一):

dsh-market 界面:在 market 里搜索插件名安装
npm 包:
dsh plugin --profile web add "@memef1f1y/dsh-plugin-tts"
GitHub 源码:
dsh plugin --profile web add "github:1624318455/dsh-plugin-tts#main"
或本地开发:
dsh plugin --profile web add "file:/path/to/dsh-plugin-tts/plugin"

重启 dsh web 后作为 profile bundle 自动加载,无需手动启用。
注意先卸载已有的再装另一种来源:它们注册的是同一个 loader 条目 id(tts),安装器遇到重复 id 会直接回滚而不是覆盖。

可用音色(经实测,Edge TTS)

| 区域 | 音色 |
| 简体中文 | 晓萱 Xiaoxuan · 晓伊 Xiaoyi · 云希 Yunxi · 云扬 Yunyang · 晓晓 Xiaoxiao · 云健 Yunjian · 云夏 Yunxia · 晓北(辽宁) liaoning-Xiaobei · 晓妮(陕西) shaanxi-Xiaoni |
| 台湾 | 曉臻 HsiaoChen · 曉雨 HsiaoYu · 雲哲 YunJhe |
| 香港 | 曉佳 HiuGaai · 曉曼 HiuMaan · 雲龍 WanLung |
| 英文 | Aria · Jenny · Guy · Sonia(英) |
| 日/韩/法 | 七海 Nanami · SunHi · Denise |

注:Xiaohan / Xiaomeng / Xiaorui / Xiaoshuang 等旧音色已被 Edge 端点移除(返回 1007 Unsupported voice),未列入。

架构

| 层 | 位置 | 职责 |
| Host | lib/index.mjs | 注册 webServer 路由:/dsh-tts-api/speak(全链路合成/分块队列)、/dsh-tts-audio/<id>(音频字节)、/dsh-tts-api/rvc-next(取下一段/取消任务)、/dsh-tts-api/rvc-files + /rvc-compact-index + /rvc-packs(RVC 服务代理/音色包)、/dsh-tts-api/index- 与 /dsh-tts-api/cosy-(本地服务代理+配置)、/dsh-tts-api/cloud-(Cloud Key/用量/连通测试)、/dsh-tts-api/notify(审批提醒队列)、/dsh-tts-api/diagnose(一键诊断);用 node -e 运行零依赖 Edge worker |
| Client | lib/client.js | shell.overlay 里的 Web Audio 分块播放器(采样级拼接, 降级)+ UI(朗读按钮 / 自动朗读开关 / 语音设置面板),通过 fetch 调 Host 路由 |

TTS 引擎:worker 协议镜像 node-edge-tts@1.2.10: Sec-MS-GEC 查询参数(ticks 向下取整到 5 分钟边界)、 Sec-MS-GEC-Version=1-143.0.3650.75、二进制帧 Path:audio 前缀、 xml:lang 由音色 locale 推导、1006 异常关闭自动重试一次。音频输出 audio-24khz-48kbitrate-mono-mp3。

边界行为

- 自动朗读中点击同一消息朗读按钮 → 停止;点击另一消息 → 打断自动、改手动朗读。
- 手动朗读中关闭自动开关 → 不打断手动;自动朗读中关闭 → 停止自动朗读。
- 新消息完成(自动开启)→ 打断当前、朗读最新;无文本消息跳过;切换会话只停自动来源。
- 停止 / 换消息时立即取消当前分块 job(RVC job 会通知 Host),本地转换服务停止调度后续块、及时释放 GPU/内存(不必等惰性回收)。
- 同一段文本+音色重复朗读 → 复用进程内音频缓存(不重复合成);若缓存底层文件已被系统清理,会自动重新合成而非返回失效的 404 URL。
- Edge 音色被端点移除(1007 Unsupported voice)→ 从选择列表剔除并自动回退默认音色。
- 分段播放严格按序号供应:后台预热绝不会超过按需请求,某段合成失败(重试一次仍失败)会弹
「某段音频加载失败,已跳过 (x/y)」toast 并继续播下一段,顺序永不错乱。
- 首次用户手势即解锁自动播放(resume Web Audio 上下文 + 播放静音片段),朗读不会因浏览器自动播放策略被静默拦截。
- Esc / S(非输入框内)停止当前朗读。
- 合成/播放失败(消息朗读与自动朗读路径)→ 弹出主题化 toast 提示(不再静默失败;试听面板仍保留内联红字)。RVC 模式下错误 toast 带一键「改用 Edge TTS 朗读」动作;若在 RVC 设置里开启「RVC 失败时自动改用 Edge TTS」(默认关闭——RVC 为纯本地处理,自动降级会把文本发送给微软在线端点),RVC 朗读失败会自动改用 RVC 底噪音色经 Edge 重读,并弹 warn toast 提示。
- 智能分句:分块切分绝不切断 URL / 邮箱 / 小数 / 版本号(如"3.14");硬切会滑到词/标点边界;末尾的极短句会并入前一块,避免听感像结巴。
- 审批语音提醒(opt-in):Host 订阅 session/event 火线(approval/asked / approval/decided)并按审批 id 去重;客户端轮询 /dsh-tts-api/notify?s=N——首次轮询只做基线同步(刷新不重播旧提醒);播报失败静默(不弹错误 toast,避免 Agent 循环期间刷屏)。

设置持久化

分层存储:

- Host 文件(~/.dsh/tts-rvc/settings.json, { version: 1, rvc: …, index: …, cosy: …, cloud: … }):服务类配置——RVC 服务地址/模型与索引路径、Index-TTS2 与 CosyVoice 服务地址、 Cloud API Key(+ 可选 Project ID)。多浏览器共享,清浏览器数据、无痕模式、换浏览器都不丢;经 GET /dsh-tts-api/rvc-config + POST /dsh-tts-api/rvc-config-save(以及对应的 index-config、cosy-config、 cloud-config 路由)读写,老 localStorage 值一次性上迁,之后以文件为准。
- localStorage(dsh-tts-settings):只存 UI 偏好——音色、自动朗读开关、提供者、声音调节、原始 Markdown 开关、审批提醒与其余 RVC 偏好。不再存服务地址 / 模型 / 索引。

设置面板「恢复默认设置」一键复位并清除两层(Host 文件为 best-effort)。

RVC 自定义音色

用你本地训练的 RVC 模型做音色转换:设置面板把 TTS提供者切到「自定义音色(RVC)」即可。第一次用 RVC 先做两件事:①准备模型文件(.pth);②启动本地 RVC 服务—— macOS/Windows/Linux 的启动命令见 《RVC 指南》 或《使用手册》 §4.2。涵盖服务启动、面板配置、长文无缝播放、紧凑索引、音色包一键安装、便携运行时、设置项详解与排查——完整内容见 《RVC 自定义音色指南》。

RVC 配置面板

RVC 高级参数

RVC 音色包

公开音色仓库示例:rvc-for-tts (设置 → 语音 → 音色包 → 仓库地址填 https://raw.githubusercontent.com/1624318455/rvc-for-tts/main)。

疑难排查(Edge TTS)

- 403 / Sec-MS-GEC 被拒:Edge 端点协议或版本校验变更,更新 lib/index.mjs 内 worker 的 CHROMIUM_FULL_VERSION / TRUSTED_CLIENT_TOKEN。
- 1007 Unsupported voice:所选音色已被端点移除,换用上表列出的音色。
- 无声音:确认系统音量、浏览器自动播放策略(先与页面交互一次)或合成日志(dsh web 控制台 [tts] 前缀错误)。
- 分段朗读跳段/乱序:先确认控制台第一行构建号是最新的(含按序号供应修复的老版本会有 1/3/2 错序);若新版仍跳并弹出「已跳过」toast,把设置 → 语音 → 诊断 →「导出诊断日志」发给开发者。

RVC 相关排查见 《RVC 指南》疑难排查。
Index-TTS2 / CosyVoice / Cloud 排查见各自指南的疑难排查节。

常见问题(FAQ)

Q:体积大吗?
- 默认体验(Edge TTS):插件本体很小(MB 级),不需要下载任何服务或模型。
- 想用自定义音色(RVC)才需要本地 RVC 便携包,体积主要来自自带的离线 Python 运行时 + 推理依赖 + 预训练模型:
| 平台 | 压缩包 | 解压后 |
| macOS(Apple Silicon) | ~660 MB | ~1.3 GB |
| Windows(纯 CPU 精简版) | ~1–2 GB | ~2–3 GB |
| Windows(保留 NVIDIA GPU 加速) | ~6 GB | ~7 GB |
- 上面这些是自包含运行包的体积;完整版 RVC WebUI 有 7.8GB,本插件用不到的 WebUI/训练/实时变声都不会带。
- Index-TTS2 / CosyVoice 同样是本地包(体积随版本变,见各自指南的准备节)。

Q:依赖大吗?
- 不小,但完全不需要你安装:RVC 便携包自包含 Python、ffmpeg(Windows)/PyAV(macOS)以及全部推理依赖,解压即用,无编译、无环境配置。
- 插件本体依赖极简,只在确实用到时才加载。

Q:需要本地 TTS 模型吗?
- 用默认 Edge TTS 或 Cloud TTS:不需要本地模型(在线合成)。
- 用自定义音色(RVC):需要你自己的 RVC 音色模型(.pth),可选加一个 .index 索引;预训练的 hubert / rmvpe 已随便携包带好,你只需提供自己训练的模型。
- 用 Index-TTS2 / CosyVoice:不用训练——给本地包准备参考/提示音频(几秒清晰人声)并在面板里选中即可,详见《Index-TTS2 指南》与《CosyVoice 指南》。

Q:好装吗?
- 插件按常规方式安装即可。
- 用 RVC 时:下载对应平台的便携包 → 解压 → 运行启动脚本(mac 双击 .command,Windows 双击 .bat)→ 把 .pth 放进 assets/weights → 在插件面板里点「浏览」选模型即可。
- Index-TTS2 / CosyVoice 同样三步(备包 → 保持服务运行 → 面板选音色);Cloud 只需往设置里粘 API Key。各指南里都有 walkthrough。
- 无需编译、无需手动装 Python/ffmpeg。注意 mac 首次启动会慢几十秒(macOS 首次扫描解压出的运行库,一次性行为),之后启动只要几秒。

Q:需要付费 API 吗?
- 不需要:默认 Edge TTS 免费(无 API key),RVC / Index-TTS2 / CosyVoice 完全本地推理、免费(但各需自己的本地服务包先跑起来,见上文「要求」)。
- 谷歌 Cloud TTS 按量付费,需自备 API Key:中文标准音色每月前 400 万字符免费,Wavenet/Neural2/Chirp 每月前 100 万字符免费(本地计数,官方以 Google Cloud Billing 为准),详见《Cloud 指南》。
- 提示:Edge TTS 是微软公开的端侧免费能力,个人使用没问题;商用 / 高并发请留意微软服务条款。

Q:改动 DSH 本体了吗?
- 没改。这是一个独立插件,通过 dsh 的插件机制加载,不修改 DSH 主程序本体,可随时安装 / 停用 / 卸载,不影响 DSH 与其它插件。

其他常见疑问
- 需要显卡吗? 不需要,CPU 就能跑。要更快可用 Apple Silicon 的 MPS(macOS)或 NVIDIA GPU(Windows,需用 CUDA 版 torch,体积随之增大)。
- 隐私如何? RVC / Index-TTS2 / CosyVoice 转换完全在本地进行,音频不上传;Edge TTS 与 Cloud TTS 会把要朗读的文本发到在线端点合成(选择合适的音色前请注意)。
- 只支持 Apple Silicon 吗? macOS 版目前是 arm64,支持 M1–M5;Intel Mac 需另行提供 x86_64 版。

界面语言(i18n)

插件设置面板顶部有「界面语言」选择:自动(跟随浏览器)/ 中文 / English。
- 默认「自动」:按浏览器/系统语言显示(简体中文及其他 → 中文,其余 → English)。
- 切换后立即生效,并持久化到 localStorage(dsh-tts-lang),刷新/重开面板不丢。
- 覆盖范围:整个设置面板 + 气泡/朗读按钮 + 诊断 + 音色包面板,以及 RVC 服务的报错/进度提示。

开发

node tests/smoke.mjs # 冒烟测试:fake ctx 注册路由 + 真实 Edge TTS 合成 + 音频回放断言
npm run test:all # 全量:smoke + live + patch + i18n + client-load

改 lib/ 后的热更新(Windows 下 file: 安装是复制而非符号链接,运行中的 dsh 读的是 profile 副本):

Copy-Item lib/ $env:USERPROFILE\.dsh\profiles\web\node_modules\@memef1f1y\dsh-plugin-tts\lib\ -Recurse -Force
然后刷新浏览器即可(bundle 每次请求重新读盘;勿用 pnpm install --force 覆盖)

已知限制

- 音色 / 自动朗读开关 / TTS 提供者 / RVC 配置已分层持久化(服务类走 Host 文件, UI 偏好走 localStorage,见上文「设置持久化」)并跨刷新保留(见上文「设置持久化」);但音频缓存本身仅进程内(音频写在 OS 临时目录,由系统清理),完全重启后每段文本第一次朗读会重新合成。
- 合成音频写入 OS 临时目录,由系统清理。
- 中英文布局/视觉(英文文本较长可能换行/溢出,主题变量 --dsw-* 适配)需在装有所插件的真实 dsh 界面里人工确认——本插件无独立 HTML,UI 由 dsh web 宿主注入 slots 渲染,无法脱离宿主做 headless 截图对比(tests/client-load.mjs 只做内存渲染断言,不生成真实 DOM/CSS)。

License

MIT
预览分享卡片长什么样 ↓1624318455/dsh-plugin-tts
分享 · DeepSeek Harness Hub
1624318455/dsh-plugin-tts

使用手册执行手册第一次用,逐步骤上手

回到顶部