VITS:基于对抗学习的端到端文本到语音条件变分自编码器
Jaehyeon Kim, Jungil Kong, 和 Juhee Son
在我们最近的论文中,我们提出了VITS:基于对抗学习的端到端文本到语音条件变分自编码器。
最近提出了几种可以实现单阶段训练和并行采样的端到端文本到语音(TTS)模型,但其样本质量不如两阶段TTS系统。在这项工作中,我们提出了一种并行的端到端TTS方法,能够生成比当前两阶段模型更自然的音频。我们的方法采用了通过正则化流增强的变分推理,并结合了对抗训练过程,从而提高了生成建模的表达能力。我们还提出了一种随机时长预测器,用于从输入文本中合成具有不同节奏的语音。通过对潜在变量的不确定性建模和随机时长预测器,我们的方法能够表达文本输入与多种发音方式之间的自然一对多关系,不同的音调和节奏。基于单一说话人数据集LJ Speech的主观人工评估(平均意见评分,或MOS)显示,我们的方法优于目前最好的公开TTS系统,并且达到了与真实语音相当的MOS。
请访问我们的演示页面以查看音频样本。
我们还提供了预训练模型。
** 更新说明:感谢Rishikesh (ऋषिकेश),我们现在的交互式TTS演示已可以在Colab Notebook上使用。
训练中的VITS | 推理中的VITS |
---|---|
前置条件
- Python >= 3.6
- 克隆此代码库
- 安装Python依赖项。请参考requirements.txt
- 您可能需要先安装espeak:
apt-get install espeak
- 您可能需要先安装espeak:
- 下载数据集
- 下载并解压LJ Speech数据集,然后重命名或创建指向数据集文件夹的链接:
ln -s /path/to/LJSpeech-1.1/wavs DUMMY1
- 对于多说话人设置,下载并解压VCTK数据集,并将wav文件下采样至22050 Hz。然后重命名或创建指向数据集文件夹的链接:
ln -s /path/to/VCTK-Corpus/downsampled_wavs DUMMY2
- 下载并解压LJ Speech数据集,然后重命名或创建指向数据集文件夹的链接:
- 如果使用您自己的数据集,构建单调对齐搜索并运行预处理。
# Cython版本的单调对齐搜索
cd monotonic_align
python setup.py build_ext --inplace
# 您自己的数据集的预处理(g2p)。LJ Speech和VCTK的预处理音素已提供。
# python preprocess.py --text_index 1 --filelists filelists/ljs_audio_text_train_filelist.txt filelists/ljs_audio_text_val_filelist.txt filelists/ljs_audio_text_test_filelist.txt
# python preprocess.py --text_index 2 --filelists filelists/vctk_audio_sid_text_train_filelist.txt filelists/vctk_audio_sid_text_val_filelist.txt filelists/vctk_audio_sid_text_test_filelist.txt
训练示例
# LJ Speech
python train.py -c configs/ljs_base.json -m ljs_base
# VCTK
python train_ms.py -c configs/vctk_base.json -m vctk_base