项目简介
dc_tts
项目是一个基于 TensorFlow 的文本到语音转换(TTS)模型的实现,旨在探索深度卷积网络与引导注意力机制结合下的高效语音合成方法。这个项目不仅仅是对已有论文的复现,还希望从中汲取对多种声音项目的深刻理解。
项目需求
要运行 dc_tts
模型,需要以下软件包:
- NumPy >= 1.11.1
- TensorFlow >= 1.3 (因为从这个版本开始,
tf.contrib.layers.layer_norm
的 API 发生了变化) - librosa
- tqdm
- matplotlib
- scipy
数据集
dc_tts
项目使用了四个不同的语音数据集来训练模型,这些数据集分别是:
- LJ Speech 数据集:这是一个被广泛用作 TTS 任务基准的数据集,包含 24 小时高质量的样本录音。
- Nick Offerman 的有声读物:该数据集包含 18 小时的语音样本,用于测试模型在较小规模且多变的数据条件下的学习能力。
- Kate Winslet 的有声读物:这是一个时长 5 小时的数据集,与 Nick 的数据集用法相似。
- KSS 数据集:这是一个韩语单人说话者语音数据集,总长度超过 12 小时。
训练流程
项目的训练流程分为以下几个步骤:
- 步骤 0:下载 LJ Speech 数据集 或准备自己的数据。
- 步骤 1:在
hyperparams.py
中调整超参数。如果需要预处理数据,设置prepro=True
。 - 步骤 2:运行
python train.py 1
来训练 Text2Mel 模块。如果预处理数据,则先运行python prepro.py
。 - 步骤 3:运行
python train.py 2
来训练 SSRN 模块。
如果有多于一张 GPU 卡,可以同时进行步骤 2 和步骤 3。
训练曲线和注意力图
项目包含了训练过程中的曲线图,展示了模型的训练进展。另外,通过引导注意力机制,模型的注意力图从开始阶段就显示出良好的单调性,这有助于保持对齐稳定性。
语音合成和生成示例
项目基于 哈佛句子 生成语音样本,感兴趣的用户可以运行 synthesize.py
并查看 samples
文件夹中的文件。
生成的样本链接可以在项目文档中找到,包括不同数据集下的样本,比如 LJ、Nick 和 Kate 数据集的多种迭代次数下的输出。
预训练模型和备注
用户可以从特定链接下载用于 LJ 数据集的预训练模型。项目开发者也分享了一些探索期间的经验,如增加层归一化来让模型正常工作,调整学习率以便适应模型训练,尽管没有如论文中声称的那样做到在一天内完成训练,但该模型相较 Tacotron 的确用时更短。开发者还指出引导注意力在一开始就提供了较好的对齐效果。
此外,开发者建议可以关注其他文本到语音模型,比如 Tacotron 和 Deep Voice 3。