使用softcv vits 训练自己的声音转换模型
这篇文章介绍我使用SoftVC VITS 训练自己的声音转换模型,过程中遇到的一些坑。
按照 官方github 里面写的文档来训练,官方的文档不是特别详细,所以我这这篇文章算是对官方文档小小的补充吧
环境信息
- 操作系统: Debian 12
- CPU: amd64
- python: 3.11.9
环境和文件准备
系统软件准备
先安装一下 deb 包,这个包,在后续训练的过程中会用到,具体哪个步骤我忘了,在我的环境缺这个包,导致我无法继续进行训练
apt-get install libportaudio2
so-vits-svc-fork 这个包的安装教程,按照官方的 readme 来进行,这个我没有碰到什么坑
语音文件准备
准备一份wav文件。我是自己读了一篇文章,时长5分钟左右。 我创建了一个项目文件夹,将自己的声音文件放到 项目文件夹下。 我的环境是这样的:
mkdir -p myvoice/raw
cp myvoice.wav myvoice/raw
cd myvoice
开始训练
数据切分
数据处理将声音文件切成一个个片段。
这里另外说一句,因为我只需要训练我的声音,所以我用的svc pre-split, 如果有多个人,使用svc pre-sd命令切分,具体操作看文档
切分:
svc pre-split -i raw/ # 这个命令执行完后,会生成dataset_raw 文件夹,里面有切分好的声音文件
切分完成后,会生成dataset_raw文件夹,里面是有一堆wav文件。
需要把这些文件挪动一下位置,按照官方文档的说法, 挪动后的文位置应该是这样dataset_raw/{speaker_id}/**/{wav_file}.{any_format}。
但是经过我实际操作,应该是这样dataset_raw/{speaker_id}/{wav_file}.{any_format}
所以我是这样操作的
mkdir -p dataset_raw/bobo # 这里我的speaker id 是 bobo
mv dataset_raw/*wav dataset_raw/bobo
Preprocessing part 1: resample
resample 执行完成后,会生成dataset文件夹
svc pre-resample -i dataset_raw
大概看了一下代码,pre-resample 调用 librosa 对声音文件进行处理,大概就是去掉每个wav文件开头和结尾静音的部分(或者说没有声音的部分)。
Preprocessing part 2: config
这一步执行完后, 会生成 configs 和 filelits 目录
svc pre-config -i dataset_raw
Preprocessing part 3: hubert
使用hubert处理一下, 如果本地没有用到的模型,它会自动下载, 会给每个声音文件生成.data.pt 文件
svc pre-hubert -i dataset_raw/
train
如果项目目录里面没有so-vits-svc模型,train 程序会自动下载模型,这一步训练步骤比较长,我训练自己的声音模型花了6个小时,4070 显卡
svc train -t
infer
训练玩以后,就可以推理拉,这里需要注意的是,推理要在自己项目目录里面, 我的环境项目目录是myvoice(不在项目目录里面也行,但是需要指定模型目录和配置文件,比较麻烦,具体如何使用查看infer命令帮助)
这里我找了一个文件test.wav,将test.wav 文件里面的人声换成我的声音, 转换后的内容输出到conv_test.mp4文件
svc test.wav -o conv_test.mp3