so-vits-svc4.1从零训练自己的模型

so-vits-svc需求GPU,如果电脑没有GPU可以用云端训练。

如果您没有anaconda,请忽略下文出现的conda activate sovits,如果您安装了pytorch-gpu但无法使用那么您需要自行下载cuda。因为anaconda在安装pytorch时会自行安装所需的环境。

音频数据处理:

1.uvr5提取人声/去和声/去混响

2.au去底噪(可选)

3.au进行响度匹配

4.音频切割

svc/rvc模型训练前的音频数据处理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/2301_79607161/article/details/135573528?spm=1001.2014.3001.5501

安装环境:

python版本:3.8版本。

版本过高会导致依赖安装不上。

pytorch安装:

请参考这篇文章

Anaconda安装Pytorch(GPU和CPU)超简单的两种方法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/2301_79607161/article/details/134708867?spm=1001.2014.3001.5502

FFmpeg安装:

FFmpeg官网icon-default.png?t=N7T8https://ffmpeg.org/

下载

进入之后点击下载,选择自己的版本,我是windows。

安装

下载好后解压到一个自己不经常动的文件夹。打开bin目录,复制此路径。

如:C:\Program Files\ffmpeg-6.1-full_build\bin

将此路径添加到环境变量:

此电脑 > 右键 > 属性 > 高级系统设置 > 环境变量 > 点开path > 新建 > 粘贴路径 

然后一直点确认

查看是否可用:

ffmpeg -version

其他python环境依赖:

设置pip镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

可以参考下面这个文章安装fairseq==0.12.2

注意:请先安装pythorch在安装fairseq,否则会自动安装cpu版本的pythorch。

安装pyqt5 error:Microsoft Visual C++ 14.0 or greater is required.Get it with“Microsoft C++ Build Tools-CSDN博客文章浏览阅读454次,点赞16次,收藏9次。试了很多其他办法但是都没用,又感觉别的文章中12G的Visual Studio默认安装没啥必要。所以试了几个看起来需要的。https://blog.csdn.net/2301_79607161/article/details/135144949?spm=1001.2014.3001.5502

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

预处理:

预先下载的模型文件:

1.编码器
  • 用contentvec做编码器

  • 文件放在pretrain目录下

​​​​checkpoint_best_legacy_500.pt 约1g+大小icon-default.png?t=N7T8https://ibm.box.com/s/z1wgl1stco8ffooyatzdwsqn2psd9lrr

2.底模文件
  • 预训练底模文件: G_0.pth D_0.pth

    • 放在logs/44k目录下
  • 扩散模型预训练底模文件: model_0.pt

    • 放在logs/44k/diffusion目录下

预训练底模下载地址icon-default.png?t=N7T8https://huggingface.co/Sucial/so-vits-svc4.1-pretrain_model/tree/main

3.使用NSF-HIFIGAN增强器浅层扩散

预训练的 NSF-HIFIGAN 声码器:nsf_hifigan_20221211.zip

  • 解压后,将里面的四个文件放在pretrain/nsf_hifigan目录下

nsf_hifigan_20221211.zipicon-default.png?t=N7T8https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip

4.使用rmvpeF0预测器

如果使用rmvpeF0预测器的话,需要下载预训练的 RMVPE 模型

下载模型rmvpe.zip,目前首推该权重。

解压缩rmvpe.zip,并将其中的model.pt文件改名为rmvpe.pt并放在pretrain目录下

rmvpeicon-default.png?t=N7T8https://objects.githubusercontent.com/github-production-release-asset-2e65be/663143308/33d522ae-de7a-43f8-aff7-cde4cdf1c956?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240113%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240113T083027Z&X-Amz-Expires=300&X-Amz-Signature=8778f9e2614ee3f35ba5ed1778d1586166afd7996b9ffce24a0abf788ee73f34&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=663143308&response-content-disposition=attachment%3B%20filename%3Drmvpe.zip&response-content-type=application%2Foctet-stream

数据集准备:

1.需要以以下文件结构将数据集放入 dataset_raw 目录

dataset_raw
├───speaker0   #说话人1
│   ├───xxx1-xxx1.wav
│   ├───...
│   └───Lxx-0xx8.wav
└───speaker1   #说话人2
    ├───xx2-0xxx2.wav
    ├───...
    └───xxx7-xxx007.wav

2.此外还需要编辑config.json

新建一个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

  

1.重新采样至 44100Hz 和单声道。

该步骤分为两种情况,请按照自己数据集处理的情况运行代码。

虽然本项目拥有重采样、转换单声道与响度匹配的脚本 resample.py,但是默认的响度匹配是匹配到 0db。这可能会造成音质的受损。而 python 的响度匹配包 pyloudnorm 无法对电平进行压限,这会导致爆音。所以建议可以考虑使用专业声音处理软件如adobe audition等软件做响度匹配处理。

我建议自己手动进行响度匹配,之后选择不进行响度匹配,个人感觉训练效果有提升。

自动响度匹配:

python resample.py

不进行响度匹配:

python resample.py --skip_loudnorm

2.自动将数据集拆分为训练集和验证集,并生成配置文件。

有两个选择,建议选择第一个。如果音频质量不好选择第二个。

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

3.生成 hubert 和 f0

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文件夹。

模型训练

1.修改配置文件

打开configs文件夹,

出现两个配置文件

config.json文件:

(括号内为个人设置的,大家可以自行修改)

"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

tensorboard --logdir=./logs/44k

输入这个代码后会有一个链接,按住ctrl点击就可以打开。一般来说损失值越低越好。

推理

打开webUI

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

此文档为学习总结

感谢名单:

1.Sucial丶B站教程

2.官方文档

3.云端训练文档

  • 33
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值