音色工程 · 02 so-vits-svc(实验线,已暂停)¶
配套:
音色工程_00_公用.md(素材 / 清洗 / 混音 / 指标)、音色工程_01_RVC.md(在用)。 现状:2026-11-08 试到 60 轮,主人判定「问题比 RVC 版多多了」,暂停投入;翻唱继续用 RVC。
0. 为什么暂停¶
| 现象 | 原因 | 现状 |
|---|---|---|
| 咬字不像中文("这、谁"发飘) | text-free,用 whisper-ppg,语言信息跟着学进去 | 需纯中文素材重训,成本高 |
| 声音一大一小 | 分段合成,段间响度不对齐 | 后期响度骑手可压到 3.51dB,但治不干净 |
| 更闷更暗 | 44.1k + 高频保留少 | 2.8kHz 提亮可补一点 |
| 起音偏慢 | 声码器 + 分段特性 | 改不动 |
结论:SVC 要「一门语言一套声线」,性价比不如 RVC。 除非以后明确要做「更像唱出来」的成品,否则不开工。
1. 它是什么¶
- 仓库:https://github.com/svc-develop-team/so-vits-svc(我们用 4.1-Stable)
- 核心:Whisper / HuBERT 表征 + F0 条件 + NSF-HiFiGAN 声码器。
- 特点:分段推理(按静音切段、逐段合成)。音色更"唱出来"、实度高,代价是段间响度不平、口音渗入、采样率上限 44.1k。
2. 语言(和 RVC 完全相反)¶
- 必须纯中文。 同一套中日英三语素材,RVC 中文够就没口音了,SVC 仍然串。
- 原因:SVC 用 whisper-ppg,whisper 是语音识别模型,中间层带语言/音素判别信息,等于把"哪种语言的口型"一起学进去了。
- 要日语歌就单独训日语模型,别混。
3. 环境(Windows 无 MSVC 时的取舍)¶
- fairseq 装不上 → 用
--speech_encoder whisper-ppg,需要pretrain/medium.pt(1457MB)。 - 预先准备:便携 Python 3.10(
python310._pth要import site并写入仓库路径)、torch 2.5.1+cu121。 - 底模:https://hf-mirror.com/Sucial/so-vits-svc4.1-pretrain_model(whisper-ppg 子目录)。
- 代码小修:
modules/F0Predictor/crepe.py:46→results.detach().cpu().numpy()utils.py里fig.canvas.tostring_rgb()→np.asarray(fig.canvas.buffer_rgba())[:,:,3]- 训练必须
USE_LIBUV=0(Windows 上 libuv 会崩)。 - 采样率写死 44.1k(
configs/config.json的sampling_rate、models.py:363都是 44100),48k 要社区分支。
4. 流程(本机路径)¶
cd <SVC 目录>
python resample.py --skip_loudnorm
python preprocess_flist_config.py --speech_encoder whisper-ppg
python preprocess_hubert_f0.py --f0_predictor crepe
python train.py -c configs/config.json -m 44k
python inference_main.py -m logs\44k\G_14600.pth -c configs\config.json \
-n in.wav -t 0 -s lanlan -f0p crepe -cl 25 -lg 1
- 输出固定落在
results\,文件名带_Nkey_,没有-o参数。 -t是在输入基础上再移调;输入已经升过调就填 0。我们踩过一次:输入已 +10 半音又叠-t 10,等于抬 20 半音,清唱基频 782Hz,听感「尖细像在尖叫」。- 训练配置参考:epochs 60 / batch 12 / eval_interval 200 / log_interval 50,100W 限功耗下约 209s/轮。
5. 已知短板与对策¶
| 现象 | 对策 | 实测 |
|---|---|---|
| 咬字串语言 | 纯中文素材重训 | 未验证,成本高 |
| 一大一小 | vol_rider.py 响度骑手(±9dB、0.25s 柔化) |
有声段 std 7.54→3.51dB |
| 更闷更暗 | 混音 2.8kHz +4dB | 尖锐度仍低于 RVC(0.0561 vs 0.0681) |
| 起音慢 16ms | 无解,属特性 | attack 46.5ms vs RVC 30.4ms |
首版 60 轮对比(同曲同段):RVC v2 清唱 f0 499.9 / 实度 0.593 / 尖锐 0.0681 / HNR −7.69;SVC 495.1 / 0.568 / 0.0561 / −7.47。音高对齐,实度略低 4%,更暗更闷。
6. 若重开,先做这三步¶
- [ ] 纯中文素材重训,先 30 轮小样本验证咬字
- [ ] 段间响度对齐做进推理后处理(而不是整首骑手)
- [ ] 找 44.1k 以上的社区分支再评估,否则高频天花板一直在
附:踩过的坑¶
-t与输入升调重复叠加(见第 4 节)。- 中文模型名 / 路径在 CLI 下会因编码读不到索引,先复制成 ASCII 名。
- 导出权重
Unexpected UTF-8 BOM:json 被 PowerShell 5.1 写成带 BOM,必须无 BOM 写。 - 特征提取 2911 条约 30 分钟(crepe,CPU/GPU 混合),训练前确认
f0.npy全生成再开训。