VITS:端到端语音合成,质量追平真人
VITS:端到端语音合成,质量追平真人
vits 在 GitHub 上已经拿到 7,859 Star 了。
这是一个端到端的文本转语音项目,核心思路是把传统 TTS 里分阶段处理的复杂管线压成一个单阶段模型。输入文本,直接输出音频波形,中间不需要声学特征作为过渡。作者是 Jaehyeon Kim、Jungil Kong 和 Juhee Son。

1、传统 TTS 的痛点
做过语音合成的人都知道,两阶段系统的维护成本不低。第一阶段把文本转成梅尔频谱或其他声学特征,第二阶段再用声码器把特征还原成波形。两个模型独立训练,目标函数不统一,前端的误差会传到后端,最终音质的天花板被卡得很死。
更麻烦的是节奏控制。同一个句子,真人可以有多种读法,语速快慢、音高起伏各不相同。传统系统很难把这种多样性建模出来,通常只能输出一种固定风格的语音,听久了会有机械感。
2、VITS 怎么解决
VITS 的全称是 Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech。它的架构基于条件变分自编码器,训练过程中同时引入了对抗机制。
变分推断模块负责学习文本到隐变量的映射,标准化流进一步增强了隐空间的表达能力。对抗训练则让生成的波形在感知上更接近真实语音。三者的组合,让模型在端到端的框架下获得了很强的生成能力。
关键创新点是随机时长预测器。这个模块不再输出固定的音素时长,而是建模了一个概率分布。采样时从这个分布里抽取时长,同一段文本每次合成出来的节奏都不一样,更接近真人说话的自然变化。
在 LJ Speech 单说话人数据集上,VITS 的主观平均意见分(MOS)超过了当时所有公开的两阶段 TTS 系统,得分与真实录音处于同一水平。这个结果意味着端到端方案在音质上已经可以取代传统的多阶段管线。

3、环境搭建与训练
环境要求是 Python 3.6 以上。先克隆仓库,安装依赖:
apt-get install espeak
pip install -r requirements.txt
LJ Speech 是默认的单说话人数据集,下载后把 wavs 文件夹链接到项目目录:
ln -s /path/to/LJSpeech-1.1/wavs DUMMY1
多说话人场景可以用 VCTK,需要先把音频下采样到 22050 Hz,再同样做软链接。
第一次使用自定义数据集时,需要编译 Cython 版本的 Monotonic Alignment Search:
cd monotonic_align
python setup.py build_ext --inplace
训练命令:
# 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
推理可以直接运行项目自带的 inference.ipynb。
4、适合哪些人用
- 需要搭建 TTS 系统的开发者,想跳过传统多阶段管线的繁琐配置
- 做语音合成研究的人,需要复现或改进当前主流方案
- 需要生成自然语音的应用场景,比如有声内容、虚拟助手、实时播报
项目提供了预训练模型,下载后可以直接推理。也有交互式的 Colab Notebook,本地环境配不好的话也能在线体验。
手、实时播报
项目提供了预训练模型,下载后可以直接推理。也有交互式的 Colab Notebook,本地环境配不好的话也能在线体验。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)