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代表不变调。这里涉及到一些乐理的知识,不再赘述,介绍下面几种情况。
假设 yan 为女声,而 test.wav为男声,这里改为8
假设 yan 为女声,而test.wav为女声,这里为0
假设yan 为男声,而test.wav为男声,这里为0
假设 yan 为男声,而test.wav为女声,这里为-8
运行完成后新生成的文件会保存在results
文件夹下,如下图所示
![]()