so-vits-svc4.0项目配置笔记
0.项目思路
首先,配置项目环境,制作数据集,预处理数据集,配置训练参数,进行训练得到模型,把模型拿来推理,得到最终结果。
项目地址:https://github.com/svc-develop-team/so-vits-svc
后续更新专栏:https://docs.qq.com/doc/DUWdxS1ZaV29vZnlV?dver=
旧版整合包下载:https://pan.baidu.com/s/1HZg5scN9JFcwujyqe3xRdA?pwd=fuqm 提取码:fuqm (推荐去专栏中下载)
云端训练教程:https://www.bilibili.com/video/BV1vM4y1S7zB/ (注意选择so-vits-svc 4.0 webui镜像)
视频参考:https://www.bilibili.com/video/BV1H24y187Ko/?share_source=copy_web&vd_source=e1bb759c8ad4001f1201bdb4ffdc44fe
1. 制作数据集
1.1 收集数据
1~2小时的人声干声,以质量优先。质量>>数量
1.2 处理数据
主要是去除背景音乐,底噪与混响,做到尽可能的干声。
1.2.1 UVR5去除人声和声和混响
【分离伴奏】
- Process Method: Demucs
- Stem: Vocals
- Demucs Model: v3|UVR-Model-1
- 勾选 GPU Conversion
- 开始处理,得到纯人声素材
【消除混响和声】
- 输入纯人声素材
- Process Method: VR Architecture
- Window Size: 320
- Aggression: 10
- VR Model: 5_HP_Karaoke_UVR
- 勾选 GPU Conversion/ Vocals Only
- 开始处理,得到去除底噪和声的人声素材
1.2.2 Audio Slicer切片处理
- 将去除底噪和声的人声素材丢到Task List中
- Settings中Minimum Length (ms)数值改为8000
- 设置一下output的路径
- 开始切片
切片完成后,应该都是wav格式,44k采样率,16bit位深,如果不是的话请返回处理好。
理想情况下1个小时可以切出几百片,请将切片处在的文件夹命名为所属者的英文。比如“Niord”
我们把“Niord”文件夹丢到整合包的“dataset_raw”路径下。注意文件结构。
2. 数据集预处理
做完上述操作后,双击”数据预处理.bat”。(电脑比较拉的话,可以少量多次进行)【4.0v2整合包在这里已经整合进了webui,不用再调用脚本了】
预处理做的大致是——数据重采样至44100hz,并生成配置文件与hubert/f0文件。
在目录下“dataset/44k”中就是已经预处理好的数据集了。包含了npy,pt和wav文件。
如果缺少了对应的文件,可能是wav格式问题,虚拟内存问题,切片长短问题等等。
另外,在目录下“filelists”中train.txt为数据集,test和via.txt为验证集,可以检查确认。
3. 修改配置参数并训练
这是训练前的最后一步,打开目录下的configs文件夹里的config.json文件。1
2
3第7行:"learning_rate": 0.0001, #与batch_size成正比。
第13行:"batch_size": 6, # 数据抓取量,数值越高,速度越快,但越吃显存。
第24行:"keep_ckpts": 10 # 保留的最新的模型数量,默认3,每个模型的大小约几百MB,我这里设为10
配置完成,双击“训练.bat”进行训练。
大致是训练一个个Epoch,每隔200步进行评估,显示模型质量与Loss(五个参数,越小越好)如果使用新包推理,可以使用tensorboard脚本看走势图。
训练好的模型会生成在logs/44k路径下,我们多多推理,选用推理效果最好的模型。
顺手可以训练一下聚类模型,3060大约在20分钟以内的样子。
关于看Loss,目前还比较玄学,但有一些炼丹经验,比如:“d/total”和“g/fm”最好保持稳定,“g/fm”一路向上就废了;后四个loss走势最好是反比例下降,一旦上飘不止就废了。
3.1 更多操作流程
- 终止训练:Ctrl+C (注意释放与否)
- 继续训练:双击训练.bat【4.0v2整合包也整合进了webui】
- 重新训练:需要删除一些文件:
“logs/44k”中的文件全部删除
“dataset/44k”中的文件全部删除
“dataset_raw”中的文件全部删除
“pre_tarined_model”中复制两个预训练模型,丢到“logs/44k”里面。
然后就可以重新预处理数据集并再次训练。
最终生成的模型是一个pt文件与pth文件。这时“logs/44k”目录下会有eval、config.json、pth、pt、log等文件。
4. 推理
我们已经得到了模型,存放在“logs/44k”的路径下,接着我们双击“推理_webui.bat”,转浏览器local url1
http://127.0.0.1:7860
打开webui,进行以下操作。
- 选择训练好的模型。(选G开头的,D开头的是判别器)
- 选择配置文件config.json
- 选择聚类模型(kmeans-10000.pt)
- 点击加载模型(数据质量差的话可以选模型增强,可以去除一定程度的电音)
- 选择音色(就是所属人)
- 上传要模仿的干声素材(控制在45s-60s以内,以免爆显存)可以用Goldwave/AU来裁剪。记得去除背景音乐、和声、底噪等。
- 调整聚类比例(聚类使得音色更像,但咬字下降)
- 勾选/不勾选 f0预测(用于语音转换,唱歌不能用)如果使用了f0,那么对于要模仿的原声要求标准就会降低。
- 选择f0均值滤波(池化)可以有效减少转音的哑音。
- 根据歌曲调式,进行变调,一般男女之间差了5个Key(5个半音),根据伴奏调式,选择要不要直接降一个八度(12key)。
- 点击转换生成
- 后续音轨合成工作。(交给PR/AU了)