跳转至

音色工程 · 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 全生成再开训。