让 DSH 用你喜欢的系统声音开口汇报内容
28.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/fangqian616/dsh-say.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 43 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 52 处,展示前 51 条)
- 读取本地文件bin/cli.mjs:48
const known = existsSync(join(profileDir, 'package.json')) - 读取本地文件bin/cli.mjs:49
if (!known && existsSync(join(homedir(), '.dsh', 'profiles'))) { - 执行外部命令固定命令bin/cli.mjs:62
const result = spawnSync('dsh', command, { stdio: 'inherit', shell: process.platform === 'win32' }) - 读取本地文件lib/config.js:165
if (existsSync(portable)) return portable - 读取本地文件lib/engines/genie.js:83
if (!python || !existsSync(python)) { - 执行外部命令来自配置/变量lib/engines/genie.js:154
child = spawn(python, [PROBE_PATH], { windowsHide: true, env: workerEnv(config), cwd: config.root }) - 执行外部命令来自配置/变量lib/engines/genie.js:208
const child = spawn(config.python, [WORKER_PATH], { - 读取本地文件lib/engines/genie.js:375
if (!existsSync(pack.onnxDir)) { - 写入本地文件lib/engines/gptsovits.js:192
writeFileSync(path, HELPER_SOURCE, 'utf8') - 读取本地文件lib/engines/gptsovits.js:234
entries = readdirSync(drive, { withFileTypes: true }) - 读取本地文件lib/engines/gptsovits.js:249
return existsSync(join(root, 'api_v2.py')) && existsSync(join(root, 'GPT_SoVITS', 'pretrained_models')) - 读取本地文件lib/engines/gptsovits.js:289
entries = readdirSync(engineRoot) - 读取本地文件lib/engines/gptsovits.js:296
if (!statSync(dir).isDirectory()) continue - 读取本地文件lib/engines/gptsovits.js:315
return readdirSync(dir).filter((name) => { - 读取本地文件lib/engines/gptsovits.js:317
return statSync(join(dir, name)).isFile() - 发起网络请求lib/engines/gptsovits.js:332
const response = await fetch(url, { signal: controller.signal }) - 写入本地文件lib/engines/gptsovits.js:480
writeFileSync(requestPath, JSON.stringify(payload), 'utf8') - 发起网络请求lib/engines/gptsovits.js:526
const response = await fetch(`${serverUrl}/tts`, { - 写入本地文件lib/engines/gptsovits.js:538
writeFileSync(output, bytes) - 读取本地文件lib/onboarding.js:37
return JSON.parse(readFileSync(statePath(), 'utf8').replace(/^ FEFF/, '')) - 写入本地文件lib/onboarding.js:46
mkdirSync(dir, { recursive: true }) - 写入本地文件lib/onboarding.js:48
writeFileSync(statePath(), `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 读取本地文件lib/onboarding.js:338
return existsSync(statePath()) - 读取本地文件lib/settings.js:30
if (!existsSync(path)) return {} - 读取本地文件lib/settings.js:32
const parsed = JSON.parse(readFileSync(path, 'utf8').replace(/^ FEFF/, '')) - 写入本地文件lib/settings.js:53
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件lib/settings.js:54
writeFileSync(path, `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 读取本地文件lib/tools.js:48
files = readdirSync(dir) - 读取本地文件lib/tools.js:57
const raw = readFileSync(join(dir, 'voice-pack.json'), 'utf8').replace(/^ FEFF/, '') - 读取本地文件lib/tools.js:69
notes = readFileSync(join(dir, active), 'utf8').replace(/^ FEFF/, '').trim() - 读取本地文件lib/tools.js:493
if (onnx && !existsSync(onnx)) { - 写入本地文件lib/tools.js:498
mkdirSync(dir, { recursive: true }) - 写入本地文件lib/tools.js:500
copyFileSync(refAudio, join(dir, 'ref.wav')) - 写入本地文件lib/tools.js:504
writeFileSync(join(dir, 'ref.txt'), typeof args.promptText === 'string' ? args.promptText : '', 'utf8') - 写入本地文件lib/tools.js:521
writeFileSync(join(dir, 'pack.json'), `${JSON.stringify(entry, null, 2)}\n`, 'utf8') - 写入本地文件lib/util.js:19
mkdirSync(dir, { recursive: true }) - 删除本地文件lib/util.js:33
rmSync(path, { force: true }) - 执行外部命令来自配置/变量lib/util.js:56
child = spawn(file, args, { windowsHide: true }) - 读取本地文件lib/util.js:152
buffer = readFileSync(file) - 读取本地文件lib/voice-store.js:26
return JSON.parse(readFileSync(path, 'utf8').replace(/^ FEFF/, '')) - 读取本地文件lib/voice-store.js:35
return readdirSync(dir) - 读取本地文件lib/voice-store.js:38
return statSync(join(dir, entry)).isDirectory() - 读取本地文件lib/voice-store.js:52
return readdirSync(dir) - 读取本地文件lib/voice-store.js:125
if (!existsSync(path)) continue - 读取本地文件lib/voice-store.js:127
return readFileSync(path, 'utf8').replace(/^ FEFF/, '').trim() - 写入本地文件lib/voice-store.js:152
mkdirSync(voicesDir, { recursive: true }) - 写入本地文件lib/engines/builtin.js:116
writeFileSync(path, source, 'utf8') - 写入本地文件lib/engines/builtin.js:223
writeFileSync(textPath, request.text, 'utf8') - 读取本地文件lib/engines/builtin.js:249
if (!existsSync(audio)) { - 读取本地文件lib/engines/builtin.js:250
if (!existsSync(fallbackOutput)) { - 写入本地文件lib/engines/builtin.js:257
copyFileSync(audio, request.outputPath)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 用系统声音播报内容
让你的 DSH 用你喜欢的声音开口说话、汇报内容!
README
由 DeepSeek 最新模型翻译生成dsh-say
让你的 DSH 用你喜欢的声音开口说话、汇报内容!
三分钟上手 ·工具 ·配置 ·排错 ·
⚡ 三分钟上手
不需要下载任何东西。 默认走你操作系统自带的语音 —— 不用 Python、不用显卡、不用账号。
1 · 装插件
npx dsh-say
就这一条,不用参数。 它默认装进 web profile;用别的 profile 加 --profile <名字>,想看它要执行什么加 --print。
等价的手写命令(npx 那条就是替你跑这个):
dsh plugin --profile web add dsh-say
然后重启 profile —— 这一步必须由你做,命令行没法替你重启你正开着的会话。npx 跑完会把这句再说一遍,因为它只负责装,重启不了你的会话。
装完就结束。这条命令会把包装好、登记进 profile、并自动应用本包自带的组合层,tts_* 工具在重启后出现。
展开完整文档(README 剩余 1 节)
dsh-say
让你的 DSH 用你喜欢的声音开口说话、汇报内容!
三分钟上手 ·工具 ·配置 ·排错 ·
⚡ 三分钟上手
不需要下载任何东西。 默认走你操作系统自带的语音 —— 不用 Python、不用显卡、不用账号。
1 · 装插件
npx dsh-say
就这一条,不用参数。 它默认装进 web profile;用别的 profile 加 --profile <名字>,想看它要执行什么加 --print。
等价的手写命令(npx 那条就是替你跑这个):
dsh plugin --profile web add dsh-say
然后重启 profile —— 这一步必须由你做,命令行没法替你重启你正开着的会话。npx 跑完会把这句再说一遍,因为它只负责装,重启不了你的会话。
装完就结束。这条命令会把包装好、登记进 profile、并自动应用本包自带的组合层,tts_* 工具在重启后出现。
从源码装 / 用 git 地址(git 来源首次需要放行构建)
git clone https://github.com/fangqian616/dsh-say
dsh plugin --profile web add "file:E:/path/to/dsh-say" # 或用 git 地址:
dsh plugin --profile web add github:fangqian616/dsh-say
git 来源的插件靠 prepare 脚本构建,pnpm 默认拦着。dsh plugin 会直接打印出要放行的那个键 —— 把它加到 profile 目录的 pnpm-workspace.yaml 的 allowBuilds 下,再重跑一次即可。
本地 file: 路径要用绝对路径:pnpm 的工作目录是 profile 目录,相对路径 . 会指到 profile 自己。
它在 profile 里动什么
profile 根目录的 cordis.yml 是空的,它自己写着不要改它。真正的用户层是 cordis.patch.yml,但这里也不用你手写 —— 本包声明了:
"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
dsh plugin add 识别到这个声明后,会把它列进 profile 的 dsh.profile.bundles 层栈,并在启动时套用包内那一行:
- insert:
- id: say
name: dsh-say
这是 dsh 插件的标准打包方式,所以升级、卸载、dsh plugin list 都能正常跟踪。
如果智能体已经能读到仓库,直接说一句 "装上这个语音插件" 就行。它会用 voice-setup skill 走完这一步,并且在没重启之前不会谎称装好了。
2 · 让它说话
对智能体说:
把"你好,我现在会说话了"念出来
它会调用 tts_speak,声音从音响里出来。安装到此结束。
3 · 确认后端状态
跑一下 tts_engines
selected: builtin (configured: auto)
built-in: available, 3 voice(s)
gpt-sovits: unavailable — no GPT-SoVITS checkout found voice packs: 0 in ~/.dsh/voice-packs
没声音时先跑这个 —— 它会指出确切原因。
4 · 想要角色声线(可选)
main 是插件本体,releases 是声线素材。
| | main(本仓库) | Releases |
| 是什么 | 插件本体 | 推理素材:模型 + 声线 + 参考音 |
| 下载量 | 0(用你系统自带的语音) | 见下面 |
两条路,先选一条
想要角色声线,不需要先有 GPT-SoVITS。
| | ONNX 那条 | GPT-SoVITS 那条 |
| 你要先准备什么 | 什么都不用(本机连 Python 都不用有) | 本机得有一个能跑的 GPT-SoVITS |
| 下载量 | 约 697 MB | 约 7.7 GB(1.34 GB 声线包 + 6.4 GB 官方整合包) |
| 什么时候选它 | 本机没有 GPT-SoVITS | 已经有了:零下载,而且更快 |
两条路跑的是同一套声线模型,只是运行时不同(onnxruntime / PyTorch)。
sample-full-v2ProPlus.zip 里有什么
| | 在包里吗 | 内容 |
| 4 个 base 模型(推理必需) | ✅ 在 | chinese-roberta、chinese-hubert、s1v3、s2Gv2ProPlus,约 1.14 GB |
| 声线权重 + 参考音 | ✅ 在 | 约 316 MB |
| GPT-SoVITS 程序本身 | ❌ 不在 | 需要本机已有一个能跑的检出 |
| Python + torch 运行时 | ❌ 不在 | 约 6 GB,分 Windows/Linux、分 CUDA 版本 |
sample-onnx-v2ProPlus.zip 里有什么
| | 在包里吗 | 内容 |
| ONNX 模型(推理必需) | ✅ 在 | 9 个文件,320.4 MB |
| 参考音 + 逐字文本 | ✅ 在 | ref.wav + ref.txt |
| base 模型 | ➖ 不需要 | Genie-TTS 自带 hubert 和 BERT |
| GPT-SoVITS / PyTorch | ➖ 不需要 | 用 onnxruntime 跑 |
dsh-say-onnx-runtime-win-x64.zip 里有什么(便携运行时,406.7 MB)
| | 在包里吗 | 内容 |
| Python 运行时 | ✅ 在 | 便携版 CPython 3.10 + 标准库,27 MB |
| 引擎依赖 | ✅ 在 | genie-tts、onnxruntime 等,已装好 |
| Genie 运行时数据 | ✅ 在 | hubert 和 BERT,392 MB,所有人一样 |
安装 GPT-SoVITS
前置条件:本机需要 GPT-SoVITS 检出加 Python 环境。 如果没有,官方 Windows 整合包解压双击即可(下载,6.4 GB)
把 sample-full-v2ProPlus.zip 下载好,对你的 AI 说一句:
安装试听音频
它会在 Downloads 找到那个包、解压、铺好 base 模型和声线权重、登记声线包。已经存在的文件会跳过。
想自己动手 / AI 没有自动做
一条命令,不用传路径 —— 它会去 Downloads、当前目录找这个包:
node scripts/install-voice.mjs
要指定别的包或别的 GPT-SoVITS:
node scripts/install-voice.mjs --from "D:/downloads/某个.zip" --engine "D:/GPT-SoVITS"
安装 ONNX
node scripts/install-onnx.mjs --voice
一条命令,本机不需要有 Python、不需要 PyTorch、不需要 GPT-SoVITS。脚本会下载一个预构建的便携运行时(406.7 MB,里面是便携版 Python + 装好的依赖 + Genie 运行时数据),再铺好声线(290.8 MB)。对 AI 说「安装试听音频」也行。
合计约 697 MB。要日文再加 --with-japanese(约 317 MB,默认不装)。--check 随时复查状态。
本试用声音资源仅供学习交流,严禁用于商业用途,如有侵权,请联系作者,作者得知后会于24小时内删除。
🛠 工具
| 工具 | 作用 |
| tts_speak | 短句直接念 |
| tts_report | 长汇报:先压缩再念,避免把整篇念完 |
| tts_engines | 诊断后端 + 返回当前人设 |
| tts_voices | 列出或登记声线包 |
| tts_config | 读改设置,不用碰配置文件 |
为什么汇报要先压缩
中文语音实测约 5 字/秒 —— 一份 500 字的汇报整篇念完要 100 秒,比读它还慢,用户会直接关掉声音。
tts_report 会先把长报告压成短稿再朗读,并返回它实际念出来的文本,方便确认没漏关键信息:
| | 字数 | 约合时长 |
| 原文 | 500 | 100 秒 |
| 朗读 | 120 | 24 秒 |
压缩是本地句序排序,零额外模型调用。要更多细节就调大 budget。
⚙️ 配置
需要你配什么(大多数情况下是「什么都不用」)
| 项 | 默认 | 什么时候要动 |
| GPT-SoVITS 目录 | 自动找 | 找不到时(见下) |
| 声线包目录 | ~/.dsh/voice-packs | 一般不动 |
| 系统语音(默认引擎) | 用系统自带的 | 不用配 |
| Python 环境 | 引擎目录里的 / conda / PATH 上的 | 引擎能用就不用管 |
| profile | 你装插件时指定的那个(web 等) | 用别的 profile 时 |
| 环境变量 | 一个都不需要 | — |
环境变量全都不必需。 DSH_VOICE_ENGINE_ROOT、DSH_VOICE_VOICES_DIR、DSH_VOICE_CONFIG 都只是覆盖项,设了会优先于配置文件。下面这些走配置文件就够。
GPT-SoVITS 目录是怎么找到的
自动搜索,不需要你填。 顺序是:
1. 配置里的 engines.gptSovits.engineRoot(你手动指定时)
2. 环境变量 DSH_VOICE_ENGINE_ROOT(一般不用)
3. ~/GPT-SoVITS、~/GPT-SoVITS-main、~/gpt-sovits
4. 每个盘符根目录下名字像 GPT-SoVITS… 的文件夹(所以解压到 E:\ 或 F:\ 也能找到)
5. 已经跑起来的 API(配了 serverUrl 时)
第 4 条是关键:官方整合包是个 7z,大家通常解压到空间大的盘根目录,不是 C:\。以前写死 C:\/D:\,引擎明明在那儿却报"找不到"。
真的找不到时(引擎在很深的子目录里之类),跟智能体说一句就行:
GPT-SoVITS 在 E:\tools\GPT-SoVITS-main,帮我配上它会用 tts_config 写进 engines.gptSovits.engineRoot。不用你手改文件。
设置文件
你不用手改配置文件。 插件自己维护一份设置,存在你家目录:
~/.dsh/voice/config.json
首次加载时它会问你三个问题(声线、人设、要不要自动播报),答案直接写进去。之后想改,跟智能体说就行:
把语速调到 1.2 默认声线换成 XX 看看现在的配置
可用的键
| 键 | 作用 |
| engine | auto \| builtin \| gpt-sovits |
| defaultVoice / defaultVoiceBuiltin | 默认声线包 / 默认系统语音 |
| speed | 语速 0.5–2.0 |
| textLang | 朗读文本的语言 |
| reportBudget | 汇报保留字数 |
| keepAudio | 是否保留 wav |
| engines.gptSovits.engineRoot | GPT-SoVITS 目录 |
| engines.gptSovits.serverUrl | 或指向已运行的 API |
| engines.gptSovits.python | 指定用哪个 python |
| engines.gptSovits.version | 模型版本(v2ProPlus 等) |
优先级:用户文件 > 组合里的 config > 内置默认。部署方仍可在组合里固定值,但用户自己设的赢。
🎚 三种后端
| | 系统语音(默认) | ONNX | GPT-SoVITS |
| 安装成本 | 零 | 约 1 GB | 约 6.4 GB |
| 音质 | 清晰但机械 | 角色声线 | 角色声线、零样本克隆 |
| 报告长度一句话(生成 12 秒音频) | 瞬时 | 8.9s | 4.7s |
| 语速调节 | 支持 | 不支持 | 支持 |
| 依赖 | Windows SAPI | Python | 本地检出或远端 API |
engine: auto(默认):有 GPT-SoVITS 就用它,没有就用 ONNX,都没有就用系统语音。登记声线包之后它会自己切,不用改配置。
想强制某一条:
tts_config set engine=onnx # 或 gpt-sovits / builtin / auto
两个后端可以共存。tts_engines 会把两边各自的可用性、缺什么、以及 ONNX 实际在跑哪个 provider 都报出来。
[!NOTE]
ONNX 的 GPU 是碰运气的。 onnxruntime 找不到 CUDA 运行库时会静默回退到 CPU,连最高 verbose 级别都不打一条日志。插件会遍历已建好的会话,把实际在用的 provider 报给你。
🔧 排错
常见问题
| 现象 | 原因 |
| 没声音但 played: true | 输出设备选错或静音 |
| System.Speech is unavailable | 系统没装 SAPI 语音,或 PowerShell 被策略拦截 |
| no GPT-SoVITS checkout found | 设 engines.gptSovits.engineRoot |
| the ONNX engine is not installed | 跑 node scripts/install-onnx.mjs |
| ONNX 报 "running on the CPU" | 正常,见下 |
| ONNX 下 speed 没反应 | ONNX 引擎没有语速控制,不是 bug |
| voice pack ... is incomplete | 声线包缺 ref.wav、ref.txt 或权重 |
| GPT-SoVITS 太慢 | 把 sampleSteps 从 32 降到 16 |
关于 ONNX 在用 CPU:如果你的 onnxruntime 是 GPU 版但会话拿到了 CPU,插件会明说。
onnxruntime 找不到 CUDA 12 / cuDNN 9 运行库时不报错、只回退,所以插件不信它报的 "可用 provider",而是遍历已建会话问实际拿到了什么。想试 GPU:
node scripts/install-onnx.mjs --gpu
node scripts/install-onnx.mjs --check # 装完实测到底有没有生效
注意:本机实测即使把 CUDA 库加进搜索路径仍然回退到 CPU,原因未查明。 所以 --gpu 是"可以试",不是"这样就修好了"。
先跑 tts_engines —— 它会给出后端不可用的确切原因,以及 ONNX 实际在跑哪个 provider。
环境要求
- 内置引擎:Windows(SAPI)。目前仅此平台;macOS / Linux 后端欢迎 PR
- GPT-SoVITS 引擎:Windows 或 Linux,需一个带 Python 环境的检出。显卡可选
- Node 20+
📦 开发
git clone https://github.com/fangqian616/dsh-say && cd dsh-say
npm test # 13 个测试,不出声
npm run test:audible # 真实播放检查
无构建步骤,纯 ESM JavaScript。改代码必须让 npm test 通过 —— 详见 CONTRIBUTING.md。
仓库不含任何模型权重、声音数据或音频。 参考音和声线定义在仓库里,权重单独取(单个文件 148 MB,超过 GitHub 的 100 MB 上限)。
Give your DSH agent a voice — speak and report in one you like. 默认后端就是你操作系统里已有的语音,所以第 1 步和第 2 步不用下载任何东西:不用 Python,不用 GPU,不用账号。
dsh plugin --profile web add dsh-say
重启配置档,然后让智能体「say hello out loud」。npx dsh-say 不带参数时做的是同一件事,之后会重复重启这一步,因为安装是它唯一能做的事——它没法重启你的会话。
| 工具 | 用途 |
| tts_speak | 朗读一小段话 |
| tts_report | 压缩长报告,然后朗读 |
| tts_engines | 诊断后端,返回当前生效的人设 |
| tts_voices | 列出或注册语音包 |
| tts_config | 读取和修改设置,不用编辑文件 |
报告为什么要压缩: 中文语音大约每秒 5 个字,所以 500 字的报告全文读下来要 100 秒——比直接看还慢。
配置放在 ~/.dsh/voice/config.json,由首次运行的引导流程写入,可以通过 tts_config 修改。优先级是用户文件 > 组合 > 默认值。
引擎: 内置引擎在 Windows 上驱动 SAPI,不需要外部媒体程序。
两个可选引擎能加上角色语音,auto 会优先用你已有的 GPT-SoVITS (不用下载,也是两者中更快的),然后是 ONNX 引擎,最后是系统语音。
tts_engines 会报告每个引擎在这台机器上能做什么、为什么不能,包括 ONNX 会话实际拿到的执行服务商。
角色语音(可选)
上面这些用你系统已有的语音就能跑,零下载。角色语音需要 Releases 里两个包中的一个——而且你不需要 GPT-SoVITS 也能拿到。
| | ONNX 路线 | GPT-SoVITS 路线 |
| 先要准备什么 | 什么都不用 | 一份能用的 GPT-SoVITS 检出 |
| 语音包 | sample-onnx-v2ProPlus.zip 290.8 MB | sample-full-v2ProPlus.zip 1,343.8 MB |
| 什么时候选它 | 机器上没有 GPT-SoVITS | 你已经有:不用下载,而且更快 |
两条路线跑的是同一个语音模型,只是运行时不同(onnxruntime 对 PyTorch)。
sample-full-v2ProPlus.zip 里有什么:
| | 在包里 | 内容 |
| 推理需要的四个基础模型 | 有 | chinese-roberta、chinese-hubert、s1v3、s2Gv2ProPlus,约 1.14 GB |
| 语音权重 + 参考音频 | 有 | 约 316 MB |
| GPT-SoVITS 本身 | 没有 | 需要机器上有一份能用的检出 |
| Python + torch | 没有 | 约 6 GB,按平台和 CUDA 版本区分 |
dsh-say-onnx-runtime-win-x64.zip 里有什么(便携运行时,406.7 MB):
| | 在包里 | 内容 |
| Python 运行时 | 有 | 可重定位的 CPython 3.10 加标准库,27 MB |
| 引擎的依赖 | 有 | genie-tts、onnxruntime 等,已经装好 |
| Genie 运行时数据 | 有 | hubert 和 BERT,392 MB——所有人都一样 |
sample-onnx-v2ProPlus.zip 里有什么:
| | 是否在包里 | 内容 |
| ONNX 模型 | 是 | 9 个文件,320.4 MB |
| 参考音频 + 对应文本 | 是 | |
| 基础模型 | 不适用 | Genie-TTS 自带 hubert 和 BERT |
| GPT-SoVITS / PyTorch | 不适用 | 跑在 onnxruntime 上 |
安装
ONNX 路线 —— 机器不需要 Python,不需要 PyTorch,也不需要 GPT-SoVITS:
node scripts/install-onnx.mjs --voice
一条命令搞定。它会下载预构建的便携运行时(406.7 MB:可重定位的 Python、已装好引擎依赖、以及 Genie 的运行时数据)和声音包(290.8 MB)。总共约 697 MB。加 --with-japanese 可装日语(约 317 MB,默认关闭)。node scripts/install-onnx.mjs --check 可随时重新查看状态。
GPT-SoVITS 路线。 前提:有一份能跑的 GPT-SoVITS 代码,并装好 Python。没有的话,官方 Windows 包解压即可运行(下载,6.4 GB)。下载 sample-full-v2ProPlus.zip,然后告诉你的智能体:
install the sample audio
它会在 Downloads 里找到压缩包,解压,放好基础模型和声音权重,并注册这个包。已存在的文件会跳过,所以你调好的引擎不会被覆盖。
六段参考音频 是给你挑音色用的样本,其中一段还能拿来训练:
| reference/中立.wav + reference/中立.txt | 音频带对应文本 | 试听,并把这一对导入做微调 |
| 另外五段(开心/吃惊/生气/难过/恐惧) | 只有音频,没有文本 | 试听,挑音色 |
错误的文本比没有文本更糟,所以这五段都没有编造文本:文件名里的情绪是给听的人看的标签,不是台词本身。
安装前先读 voice/NOTICE.txt:本声音资源仅供学习交流,严禁商用;如有侵权请联系作者,24 小时内删除。
MIT · 不附带任何模型权重、声音数据或音频
代码 MIT · 角色、声音与参考音的权利归其所有者 · Code is MIT; character, voice, and reference-audio rights belong to their owners预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fangqian616/dsh-say
让 DSH 用你喜欢的系统声音开口汇报内容
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1
这是你的仓库?认领条目