10分钟学会搭建sovits,AI训练声音

科技探幽下班买菜

So-vits-svc 基于端到端架构的VITS和soft-vc,用户只需准备几十分钟到几个小时不等的语音或歌声数据,就能制作(训练)属于自己的 AI 声库 (前提是你的显卡足够给力),将一段语音或歌声转换为你想要的音色。

这篇文章是基于学习交流目的而写的,仅供交流与学习。

获取项目

首先我们需要从github上获取项目

git clone https://github.com/svc-develop-team/so-vits-svc

声音文件

把你要训练的声音的放到dataset_raw目录下,最好切成5s - 15s的人声片段。可以使用工具进行切片
工具链接:https://github.com/flutydeer/audio-slicer/releases
如下所示,这里我把所有切片好的声音文件放到了 yan 的文件夹下,要用拼音或者英文命名。

安装依赖包

这里我使用的python3.9,可以用conda配置,
运行命令

conda create -n sovits python=3.9

这里等待 conda 安装完成后,再运行命令

conda activate sovits

配置好 python3.9的环境后进入so-vits-svc文件夹
运行命令

pip install -r  requirements.txt

我在运行过程中有报错,有可能安装包的过程中有的包没有装上,我们可以在运行程序时,根据报错一步一步安装包

anaconda下载链接:https://www.anaconda.com/download/

这里有几个 conda 的常用命令

# 查看conda安装了哪些环境
conda info --env
conda info -e
#(1)创建虚拟环境,同时指定python版本
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 这是一行命令
#(1)创建虚拟环境,同时指定python版本
conda create -n py37 python=3.7
#(2)激活环境
activate py37

#(3) 注销or退出当前环境
conda deactivate

# (4)移除环境
conda remove -n py37 --all

模型下载

项目下载后需要下载模型放入文件夹中

下载 checkpoint_best_legacy_500.pt放到hubert文件夹
下载模型文件: G_0.pth D_0.pth,把他们放到 logs/44k 文件夹

下载链接

1、下载 checkpoint_best_legacy_500.pt放到hubert文件夹
2、下载模型文件: G_0.pth D_0.pth,把他们放到 logs/44k 文件夹

修改config文件

把configs_template文件夹下的configs_template.json 复制到configs文件下,修改名字为 config.json。

config.json几个注意点

“log_interval”: 200,每200步输出 log
“eval_interval”: 800,每800步输出一个模型文件
“epochs”: 10000,训练1万轮
“learning_rate”: 0.0001,学习率
“batch_size”: 6,让机器同时学习多少个数据,越多占用显存就越多,要看看自己的显存多少来进行修改。可以在任务管理器查看 GPU 的内存,下面截图的显存为8G

“lr_decay”: 0.999875,学习率的自动调整,这个不用变
“keep_ckpts”: 3,同时保存多少个模型,训练好的模型大概有一个 G,可以根据你空间的大小进行配置

预处理

在训练之前需要进行一些预处理,运行下面三个命令
1、python resample.py
2、python preprocess_flist_config.py
3、python preprocess_hubert_f0.py
运行这三个脚本有可能会出错,原因有可能是上面我们安装包的时候出错了,根据错误提示安装相应的包

开始训练数据

上面步骤弄完,下面我们将开始训练数据,运行下面命令。

python train.py -c configs/config.json -m 44k

训练数据需要一段时间,模型文件存放在logs\44k文件下,如下图所示是我训练后得到的模型,自动保存了最新的3个模型文件,后面我们使用 G_12000.pth 这个模型来推理声音

使用训练好的模型推理

首先把要修改的声音文件放在raw 文件下。
运行命令

# Example
python inference_main.py -m "logs/44k/G_12000.pth" -c "configs/config.json" -s "yan" -n "test.wav" -t 0

logs/44k/G_12000.pth:训练好的模型文件
yan:训练的声音,这个名字跟放到dataset_raw文件夹下训练的声音文件夹的名字一致
test.wav:为放到 raw 文件下的声音文件。
-t 0:为声调变换,0代表不变调。这里涉及到一些乐理的知识,不再赘述,介绍下面几种情况。

运行完成后新生成的文件会保存在results文件夹下,如下图所示