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

2023-11-04 08:59

本文主要是介绍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 vitspip install imageio==2.4.1
pip install --upgrade youtube-dl
pip install moviepycd 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.pypython denoise_audio.pypython long_audio_transcribe.py --languages "CJE" --whisper_size mediumpython short_audio_transcribe.py --languages "CJE" --whisper_size mediumpython 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即可体验语音生成效果

这篇关于AI数字人:基于VITS-fast-fine-tuning构建多speaker语音训练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344684

相关文章

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带