VITS语音生成模型详解及中文语音生成训练

news/2024/10/19 11:46:03/

1 VITS模型介绍

        VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种结合变分推理(variational inference)、标准化流(normalizing flows)和对抗训练的高表现力语音合成模型。

        VITS模型是韩国科学院在2021年6月提出的,VITS通过隐变量而非频谱串联起来语音合成中的声学模型和声码器,在隐变量上进行随机建模并利用随机时长预测器,提高了合成语音的多样性,输入同样的文本,能够合成不同声调和韵律的语音。

        论文地址:VITS论文

2 VITS模型结构

VITS主要包括3块:

  • 条件变分自编码器(Variational AutoEncoder,VAE)
  • 从变分推断中产生的对齐估计
  • 生成对抗训练

VITS 语音合成完全端到端TTS的里程碑,主要突破点如下:

(1)首个自然度超过2-stage架构SOTA的完全E2E模型。MOS4.43, 仅低于GT录音0.03。声称目前公开系统最好效果。

(2)得益于图像领域中把Flow引入VAE提升生成效果的研究,成功把Flow-VAE应用到了完全E2E的TTS任务中。

(3)训练非常简便,完全E2E。不需要像Fastspeech系列模型需要额外提pitch, energy等特征,也不像多数2-stage架构需要根据声学模型的输出来finetune声码器以达到最佳效果。

(4)摆脱了预设的声学谱作为链接声学模型和声码器的特征,成功的应用来VAE去E2E的学习隐性表示来链接两个模块

(5)多说话人模型自然度不下降,不像其他模型趋于持平GT录音MOS分

3 使用vits模型进行中文语音合成训练

(1)github项目下载:

git clone https://github.com/PlayVoice/vits_chinese

(2)运行环境搭建:

annoconda环境搭建详见:annoconda安装与使用

conda create -n vits pyton==3.9cd vits_chinesepip install -r requirements.txtcd monotonic_alignpython setup.py build_ext --inplace

(3)数据集下载:

下载标贝男声数据集,采样频率为22050,下载地址如下:

标贝男声数据集(第一个包)

标贝男声数据集(第二个包)

标贝男声数据集标注数据

下载完成后,将数据集解压缩后放到“vits_chinese/data/waves”目录下,标注数据放到

“vits_chinese/data”目录下

(4)预训练模型下载:

韵律模型下载:韵律模型

下载完成后,移动到“vits_chinese/bert/”目录下

(5)数据预处理:

修改配置文件:vi config/bert_vits.json

    "max_wav_value": 32768.0,"sampling_rate": 22050,"filter_length": 1024,
python vits_prepare.py -c ./configs/bert_vits.json

(6)启动训练

python train.py -c configs/bert_vits.json -m bert_vits

(7)训练后推理

python vits_infer.py --config ./configs/bert_vits.json --model logs/bert_vits/G_400000.pth

其中G_400000.pth为训练后的模型,根据训练实际情况指定训练模型进行推理

 4 训练结果展示

经过1000个epoch训练后的语音生成效果如下:

https://download.csdn.net/download/lsb2002/87832170


http://www.ppmy.cn/news/96733.html

相关文章

micropython固件编译——把自己的py库添加进固件

目录 0. 前言1. 编写自己库的代码2. 移植库3. 验证 0. 前言 本节编译自己写的py库,增强移植性,往后烧录自己的固件即可轻易移植代码 没装好环境或者没有基础可以先看看这个: Ubuntu下ESP-IDF的环境搭建 Ubuntu下编译esp32micropython固件编…

leetcode刷题之链表相关问题(js)

21.合并两个有序链表 var mergeTwoLists function(list1, list2) {if(list1null) return list2if(list2null) return list1let newHead new ListNode(0,null) //创建一个虚拟节点let cur newHeadlet cur1 list1,cur2 list2while(cur1&&cur2){if(cur1.val<cur2.…

有哪些信息安全/网络安全/渗透测试/众测/CTF/红蓝攻防/漏洞测试等前沿技术/研究/技巧获取渠道?

​前言 护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方一个月内采取不限方式对防守方展开进攻&#xff0c;不管任何手段只要攻破防守方的网络并且留下标记即成功&#xff0c;直接冲到防守方的办公大楼&#xff0c;然后物理攻破…

Unity的IPreprocessBuild:深入解析与实用案例

Unity IPreprocessBuild Unity IPreprocessBuild是Unity引擎中的一个非常有用的功能&#xff0c;它可以让开发者在构建项目时自动执行一些操作。这个功能可以帮助开发者提高工作效率&#xff0c;减少手动操作的时间和错误率。在本文中我们将介绍Unity IPreprocessBuild的使用方…

mybatisplus递归传递多个参数 | mybatisplus传递多个参数获取层级数据 | mybatisplus传递多个参数获取树形数据

搜索关键字&#xff1a; mybatisplus关联查询传递参数|"select""树形结构"|"select""树形结构""传参"| "select""many""传参"| "select""column""传参" 1、…

基于MAX-10 FPGA 超声波测距模块HC_SR04

文章目录 一、介绍超声波测距模块HC_SR04二、模块框图三、模块编写1. 测距信号源2. 距离计算3. 数码管模块4. 顶层模块 四、实验现象总结 一、介绍超声波测距模块HC_SR04 HC-SR04是一种基于超声波的测距模块。该模块向前15度内发送超声波并接收回响&#xff0c;通过发出超声波…

数据结构之排序专题 —— 快速排序原理以及改进方法(添加随机,三路快排)

内容概述 尽管此类博客已经非常非常多&#xff0c;而且也有很多写得很好&#xff0c;但还是想记录一下&#xff0c;用最容易理解的方式&#xff0c;并且多补充了一些例子。 整理云盘的时候发现大一时候的笔记&#xff0c;用的是 txt 文本文件记录的&#xff0c;格式之丑陋可想…

Linux-0.11 boot目录setup.s详解

Linux-0.11 boot目录setup.s详解 模块简介 setup.s用于加载操作系统的一些信息&#xff0c;其主要处理了如下一些事情&#xff1a; 打印硬件信息重新搬运system的位置设置IDT和GDT打开A20地址线切换32位保护模式跳转到system.s中运行 过程详解 打印硬件信息 这里将ds设置…