赞
踩
so-vits-svc需求GPU,如果电脑没有GPU可以用云端训练。
如果您没有anaconda,请忽略下文出现的conda activate sovits,如果您安装了pytorch-gpu但无法使用那么您需要自行下载cuda。因为anaconda在安装pytorch时会自行安装所需的环境。
1.uvr5提取人声/去和声/去混响
2.au去底噪(可选)
3.au进行响度匹配
4.音频切割
版本过高会导致依赖安装不上。
请参考这篇文章
进入之后点击下载,选择自己的版本,我是windows。
下载好后解压到一个自己不经常动的文件夹。打开bin目录,复制此路径。
如:C:\Program Files\ffmpeg-6.1-full_build\bin
此电脑 > 右键 > 属性 > 高级系统设置 > 环境变量 > 点开path > 新建 > 粘贴路径
然后一直点确认
查看是否可用:
ffmpeg -version
设置pip镜像源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
可以参考下面这个文章安装fairseq==0.12.2
注意:请先安装pythorch在安装fairseq,否则会自动安装cpu版本的pythorch。
pip install fairseq==0.12.2
在anaconda命令行输入代码进入自己安装so-vits-svc的文件夹
cd /dD:\hina\hina_vits\so-vits-svc-4.1-Stable
运行以下代码安装依赖
pip install -r requirements_win.txt
用contentvec做编码器
pretrain
目录下checkpoint_best_legacy_500.pt 约1g+大小https://ibm.box.com/s/z1wgl1stco8ffooyatzdwsqn2psd9lrr
预训练底模文件: G_0.pth
D_0.pth
logs/44k
目录下扩散模型预训练底模文件: model_0.pt
logs/44k/diffusion
目录下预训练底模下载地址https://huggingface.co/Sucial/so-vits-svc4.1-pretrain_model/tree/main
NSF-HIFIGAN增强器
或浅层扩散
预训练的 NSF-HIFIGAN 声码器:nsf_hifigan_20221211.zip
pretrain/nsf_hifigan
目录下如果使用rmvpeF0预测器的话,需要下载预训练的 RMVPE 模型
下载模型rmvpe.zip,目前首推该权重。
解压缩rmvpe.zip,并将其中的model.pt文件改名为rmvpe.pt并放在pretrain目录下
- dataset_raw
- ├───speaker0 #说话人1
- │ ├───xxx1-xxx1.wav
- │ ├───...
- │ └───Lxx-0xx8.wav
- └───speaker1 #说话人2
- ├───xx2-0xxx2.wav
- ├───...
- └───xxx7-xxx007.wav
新建一个config.json文件,内容如下
- "n_speakers": 10 #说话人人数
-
- "spk":{
- "speaker0": 0, #说话人名字
- "speaker1": 1,
- }
dataset_raw文件夹内容如下
在anaconda终端cd进入项目文件夹
- cd /dD:\hina\hina_vits\so-vits-svc-4.1-Stable
- conda activate sovits
该步骤分为两种情况,请按照自己数据集处理的情况运行代码。
虽然本项目拥有重采样、转换单声道与响度匹配的脚本 resample.py,但是默认的响度匹配是匹配到 0db。这可能会造成音质的受损。而 python 的响度匹配包 pyloudnorm 无法对电平进行压限,这会导致爆音。所以建议可以考虑使用专业声音处理软件如adobe audition
等软件做响度匹配处理。
我建议自己手动进行响度匹配,之后选择不进行响度匹配,个人感觉训练效果有提升。
自动响度匹配:
python resample.py
不进行响度匹配:
python resample.py --skip_loudnorm
有两个选择,建议选择第一个。如果音频质量不好选择第二个。
1)启用响度嵌入,训练后的模型将与输入源的响度匹配
python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug
2)与训练集的响度相匹配。
python preprocess_flist_config.py --speech_encoder vec768l12
- 您可以修改在config文件夹下生成的 config.json 和 diffusion.yaml 中的一些参数
-
- keep_ckpts:在训练期间保留先前模型的数量。
-
- all_in_mem:将所有数据集加载到RAM。当某些平台的磁盘 IO 过低且系统内存远大于数据集时,可以启用它。
-
- batch_size:可以将单个训练会话加载到 GPU 的数据量调整为小于 GPU 内存容量的大小。
-
- 扩散.yaml
-
- cache_all_data:将所有数据集加载到RAM。当某些平台的磁盘 IO 过低且系统内存远大于数据集时,可以启用它。
-
- duration:训练时音频切片的时长,可根据显存大小进行调整,注意:此值必须小于训练集中音频的最小时间!
-
- batch_size:可以将单个训练会话加载到 GPU 的数据量调整为小于视频内存容量的大小。
-
- timesteps:扩散模型中的总步数,默认为 1000。
-
- k_step_max:训练只能训练步进扩散以节省训练时间,注意该值必须小于,0 表示训练整个扩散模型,注意:如果不训练整个扩散模型将无法使用 only_diffusion!k_step_maxtimesteps
python preprocess_hubert_f0.py --f0_predictor dio
默认的f0预测器是dio,但我们上面加了rmvpe预测器,所以我们可以使用rmvpe预测器。
建议使用浅扩散
如果需要浅扩散(可选),则需要添加参数,例如:--use_diff
1)浅扩散使用rmvpe
python preprocess_hubert_f0.py --f0_predictor rmvpe --use_diff
2)浅扩散使用dio
python preprocess_hubert_f0.py --f0_predictor dio --use_diff
加快预处理速度
如果你的数据集非常大,你可以像这样增加参数:--num_processes
python preprocess_hubert_f0.py --f0_predictor dio --num_processes 8
完成以上步骤后,数据集目录下会包含预处理后的数据,可以删除dataset_raw文件夹。
打开configs文件夹,
出现两个配置文件
(括号内为个人设置的,大家可以自行修改)
"log_interval" :每200次训练输出一次日志 (2000)
"eval_interval" :每800次训练保存一次模型 (8000)
"learning_rate" :学习率 (如果你的batch_size在设置在12以上请将学习率设置为0.0002)
"batch_size" :过低会造成震荡或不收敛,过高会导致爆显存 (建议不要超过你的显存大小)
"keep_ckpts" :训练时保留最后的几个模型,0代表所有 ( 0 建议全部保存)
下面这两个模型在推理的时候只用选择一个。大家可以都试试,看看那个更好用。好像是特征索引用的更多。
- # CPU
- python cluster/train_cluster.py
- # GPU
- python cluster/train_cluster.py --gpu
python train_index.py -c configs/config.json
先进入自己的环境
- cd /dD:\hina\fufu_so-vits-svc-4.1
- conda activate sovits
然后就可以开始训练了
python train.py -c configs/config.json -m 44k
出现以下内容说明开始训练
python train_diff.py -c configs/diffusion.yaml
模型训练结束后,模型文件保存在logs/44k
目录下,扩散模型在logs/44k/diffusion
下
tensorboard --logdir=./logs/44k
输入这个代码后会有一个链接,按住ctrl点击就可以打开。一般来说损失值越低越好。
python webUI.py
推理时需要g模型,config.json文件,如果使用浅扩散或者特征索引的话大家可以自己加。
加载完模型之后把音乐拖到下面就可以推理了。
1.安装fairseq报错:提示lxml报错:(2种方法)
1)降低python版本到3.8。
2)pip install lxml==4.8.0
2.重新采样至 44100Hz 和单声道时报错(OSError: [WinError 1455] 页面文件太小,无法完成操作。):修改虚拟内存然后重启电脑。
3.如果开始训练后没反应,GPU占用率在10%以下,可尝试调大虚拟内存。
4.webUI 相关报错
出现以下报错时:
启动 webUI 时报错:ImportError: cannot import name 'Schema' from 'pydantic'
webUI 加载模型时报错:AttributeError("'Dropdown' object has no attribute 'update'")
请限制以下依赖版本:
fastapi==0.84.0, gradio==3.41.2, pydantic==1.10.12
具体解决方法为:在 cmd 中依次输入以下命令以更新依赖包:
pip install --upgrade fastapi==0.84.0
pip install --upgrade gradio==3.41.2
pip install --upgrade pydantic==1.10.12
此文档为学习总结
感谢名单:
2.官方文档
3.云端训练文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。