SO-VITS-SVC AI翻唱:坂本真绫

b站天天给我推AI翻唱,确实挺有意思的,趁着这几天有空跑一个折腾折腾。

Data preparation#

数据集是废狗的解包语音,文本爬的fgo wiki。原本是打算跑VITS的fine tuning做文本转语音的,但好像练出来的效果不太行就放弃了。SO-VITS-SVC做声音转换反而不需要用到标注数据。

去掉多CV的角色,筛选2-30秒内的音频,得到的时长分布如下(右键在新标签页上打开图片可以看到无缩放版本的图片):

坂本阿姨配的角色还挺多(贞德、达芬奇&若干马甲),1个半小时的语音时长应该够训练了。切片之后得到将近1000条3-10秒内的语音。

Training#

训练必须加上底模(D_0.pthG_0.pth)。小数据集只能做fine tuning,不足够从scratch开始训练的。自己试过从头开始跑,跑了14w+ steps还不如加了底模跑个1w steps的效果。

batch size设为8,跑了64k steps,tensorboard的log长这样:

Ground truth sample:

Generated sample:

生成的声音还是有点沙哑,等以后补充数据集后力大砖飞跑个几天试试。

SVC Inference#

翻唱的话得分几个步骤:

  1. 用UVR5分离人声和背景音
  2. 将人声音频放到so-vits-svc项目路径的raw文件夹里,跑so-vits-svc的inference_main.py,指定一些推理参数,比如:-m logs/44k/G_64000.pth -c configs/config_768l12.json -t 0 -s maaya_preproc -cm logs/44k/kmeans_10000.pt -cr 0.2 -sd -15 -fmp(聚类模型权重-cr看模型效果,太大了确实容易口胡,-fmp确实能够解决高音变哑的问题),转换后的音频放在results文件夹里头
  3. 将背景音和转换后的音频合并起来就ok了

UVR5不支持CLI,就差它实现一键转换大礼包了。

随便跑了10来首歌试了下训练效果,发现还挺容易口胡的,遇到和声和高低音直接开摆。
(版权声明:以下歌曲仅作科研使用,版权归网易云所有,请自觉遵守相关法规)

第一首:supercell - 君の知らない物語

第二首:森永真由美 - Opposite World

第三首:幽閉サテライト - 月に叢雲華に風

最后一首:坂本真綾 - さいごの果実

听得噪中噪,方为人上人(手动doge脸)