AI数字人:基于VITS-fast-fine-tuning构建多speaker语音训练

1 VITS模型介绍

        VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种语音合成方法,它使用预先训练好的语音编码器 (vocoder声码器) 将文本转化为语音。

        VITS 的工作流程如下:

        (1)将文本输入 VITS 系统,系统会将文本转化为发音规则。

        (2)将发音规则输入预先训练好的语音编码器 (vocoder),vocoder 会根据发音规则生成语音信号的特征表示。

        (3)将语音信号的特征表示输入预先训练好的语音合成模型,语音合成模型会根据特征表示生成合成语音。

        VITS 的优点是生成的语音质量较高,能够生成流畅的语音。但是,VITS 的缺点是需要大量的训练语料来训练 vocoder 和语音合成模型,同时需要较复杂的训练流程。

        论文链接:论文地址

2 VITS-fast-fine-tuning介绍

        VITS-fast-fine-tuning是在原始VITS(VITS源码)基础上开发出的一站式多speaker训练的傻瓜式版本,简单易用,可以基于VITS-fast-fine-tuning半小时内无需标注训练任意角色的语音,并提供了基础的预训练模型,可以在预训练模型上进行二次训练,实现任意角色的语音生成。

        代码地址如下:VITS-fast-fine-tuning源码

        训练步骤如下:

        (1)准备预训练数据,按照制定格式和路径进行存放,数据无需标注

        (2)对数据进行预处理,采用whisper模型进行语音提取和切分,形成标注数据。

                whisper的内容详见:whisper

        (3)使用提出的带标注的数据进行语音合成训练

3 VITS-fast-fine-tuning部署与训练

    (1)conda环境准备

        conda环境准备详见:annoconda

    (2)运行环境安装

conda create -n vits python=3.9
conda activate vits

pip install imageio==2.4.1
pip install --upgrade youtube-dl
pip install moviepy


cd VITS-fast-fine-tuning
pip install -r requirements.txt

     (3)训练准备

mkdir monotonic_align
python setup.py build_ext --inplace
cd ..
mkdir pretrained_models
mkdir video_data
mkdir raw_audio
mkdir denoised_audio
mkdir custom_character_voice
mkdir segmented_character_voice

(4)数据准备

数据下载地址:数据集合包

下载完成后:

  • 将“sampled_audio4ft”和“sampled_audio4ft.txt”放入VITS-fast-fine-tuning的根目录下
  • 将“D_0.pth”和“G_0.pth”放入pretrained_models目录下
  • 将“finetune_speaker.json”放入config目录下
  • 将“baker”放入custom_character_voice目录下

注意,如果使用其他文件,命名规则如下:

视频:./video_data/
长音频:./raw_audio/
短音频:./custom_character_voice/
1.其中短音频的格式是:
 ├───aaa
 ├   ├───xxx.wav
 ├   ├───...
 ├   └───zzz.wav
 ├───bbb
 ├   ├───xxx.wav
 ├   ├───...
 ├   └───zzz.wav
 ├───...
 ├
 └───Character_name_n
     ├───xxx.wav
     ├───...
     └───zzz.wav
质量要求:2秒以上,10秒以内,尽量不要有背景噪音。
数量要求:一个角色至少10条,最好每个角色20条以上。
2.以角色名命名的长音频文件,音频内只能有单说话人,背景音会被自动去除。
命名格式为:{角色名}_{数字}.wav
同一个角色可以放多个音频,数字不同
(例如:aaa_001.wav, bbb_001.wav),必须是.wav文件。
3.以角色名命名的长视频文件,视频内只能有单说话人,背景音会被自动去除。
命名格式为:{角色名称}_{数字}.mp4
(例如:aaa_332452.mp4, bbb_957315.mp4),必须是.mp4文件。

(5)启动数据的预处理

python video2audio.py

python denoise_audio.py

python long_audio_transcribe.py --languages "CJE" --whisper_size medium

python short_audio_transcribe.py --languages "CJE" --whisper_size medium

python preprocess_v2.py

参数–add_auxiliary_data选择:

如果总样本少于100条时增加,即最后一行改为如下命令执行:

python preprocess_v2.py --add_auxiliary_data True

(6)启动模型训练

 为保证模型可以二次训练,修改 finetune_speaker_v2.py文件中的代码

utils.save_checkpoint(net_g, None, hps.train.learning_rate, epoch, os.path.join(hps.model_dir, "G_{}.pth".format(global_step)))
utils.save_checkpoint(net_g, None, hps.train.learning_rate, epoch,
                              os.path.join(hps.model_dir, "G_latest.pth".format(global_step)))

在保存推理模型的同时,保存判别模型。

启动训练命令如下:

python finetune_speaker_v2.py -m "./OUTPUT_MODEL" --max_epochs "300"

其中参数300为训练300个epochs,可以根据实际情况调整,一般建议200以上

(7)模型推理

将VC_inference.py文件中的

    parser.add_argument("--model_dir", default="./OUTPUT_MODEL/G_latest.pth", help="directory to your fine-tuned model")

改为(如训练300个epochs):

    parser.add_argument("--model_dir", default="./OUTPUT_MODEL/G_300.pth", help="directory to your fine-tuned model")

运行启动命令:

python VC_inference.py

启动的语音生成界面如下:

 输入文字点击generate即可体验语音生成效果

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(1)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年8月6日
下一篇 2023年8月6日

相关推荐