🚀 VITS:用于端到端文本转语音的带对抗学习的条件变分自编码器
VITS是一个端到端的语音合成模型,它能根据输入的文本序列预测语音波形。该模型为条件变分自编码器(VAE),由后验编码器、解码器和条件先验组成。此仓库包含在VCTK数据集上训练的官方VITS检查点的权重。
🚀 快速开始
VITS自🤗 Transformers库4.33版本起可用。若要使用此检查点,需先安装该库的最新版本:
pip install --upgrade transformers accelerate
接着,使用以下代码片段进行推理:
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-vctk")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-vctk")
text = "Hey, it's Hugging Face on the phone"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
生成的波形可以保存为 .wav
文件:
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)
或者在Jupyter Notebook / Google Colab中展示:
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
✨ 主要特性
- 端到端语音合成:根据输入文本序列直接预测语音波形。
- 条件变分自编码器架构:由后验编码器、解码器和条件先验组成。
- 随机时长预测器:考虑到TTS问题的一对多性质,允许模型从相同输入文本合成不同节奏的语音。
- 两种训练数据集变体:分别在LJ Speech和VCTK数据集上训练。
📦 安装指南
要使用VITS检查点,需先安装最新版本的🤗 Transformers库和 accelerate
:
pip install --upgrade transformers accelerate
💻 使用示例
基础用法
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-vctk")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-vctk")
text = "Hey, it's Hugging Face on the phone"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
高级用法
保存为 .wav
文件
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)
在Jupyter Notebook / Google Colab中展示
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
📚 详细文档
模型细节
VITS(端到端文本转语音的带对抗学习的变分推理)是一个端到端的语音合成模型,它能根据输入的文本序列预测语音波形。该模型为条件变分自编码器(VAE),由后验编码器、解码器和条件先验组成。
基于流的模块会预测一组基于频谱图的声学特征,该模块由基于Transformer的文本编码器和多个耦合层组成。频谱图使用一系列转置卷积层进行解码,与HiFi - GAN声码器的风格非常相似。考虑到TTS问题的一对多性质,即相同的文本输入可以有多种发音方式,该模型还包含一个随机时长预测器,这使得模型能够从相同的输入文本合成不同节奏的语音。
该模型通过结合变分下界和对抗训练得出的损失进行端到端训练。为提高模型的表达能力,对条件先验分布应用了归一化流。在推理过程中,文本编码会根据时长预测模块进行上采样,然后通过流模块和HiFi - GAN解码器的级联映射到波形。由于时长预测器的随机性,该模型是非确定性的,因此需要固定种子才能生成相同的语音波形。
VITS模型有两个变体:一个在LJ Speech数据集上训练,另一个在VCTK数据集上训练。LJ Speech数据集包含13100个单说话者的短音频片段,总时长约24小时。VCTK数据集包含约44000个由109位具有不同口音的英语母语者说出的短音频片段,音频片段的总时长约为44小时。
BibTex引用
该模型由Kakao Enterprise的Jaehyeon Kim等人开发。如果使用该模型,请考虑引用VITS论文:
@inproceedings{kim2021conditional,
title={"Conditional Variational Autoencoder with Adversarial Learning for End-to-end Text-to-speech"},
author={Kim, Jaehyeon and Kong, Jungil and Son, Juhee},
booktitle={International Conference on Machine Learning},
pages={5530--5540},
year={2021},
organization={PMLR}
}
📄 许可证
该模型采用MIT许可证。