FastSpeech 2 项目介绍
FastSpeech 2 是一个基于 PyTorch 的非官方实现,目标是提供快速、高质量的端到端文本到语音转换技术。这个项目主要参考了来自 Espnet 的 FastSpeech 实现,同时结合了 NVIDIA 的 Tacotron 2 进行音频预处理,以及 MelGAN 作为声码器来生成语音。
项目背景
FastSpeech 2 提出了一种改进的文本到语音模型,它在保留高音质的同时极大地加快了合成速度。传统的方法通常需要复杂的模型结构和较长的处理时间,而 FastSpeech 2 则通过一个轻量级但功能强大的架构实现了高效的语音合成。
项目特点
- 快速合成:相比于传统模型,FastSpeech 2 的合成速度显著提升,这使得它更适合实时应用。
- 高质量输出:凭借改进的声码器和前处理流程,FastSpeech 2 能够生成自然且高质量的语音。
软件要求
项目的代码使用 Python 3.6.2 编写,主要依赖 PyTorch。以下是安装流程:
-
首先,安装 PyTorch,具体步骤取决于 CUDA 的版本。
pip install torch torchvision
本项目使用了 PyTorch 1.6.0 的
torch.bucketize
功能。 -
安装其他依赖:
pip install -r requirements.txt
-
为了使用 Tensorboard 进行可视化,需要单独安装
tensorboard version 1.14.0
和兼容的tensorflow (1.14.0)
。
数据预处理
项目提供了处理过的 LJSpeech 数据集文件,用户无需自己进行文本和音频的对齐。对于其他数据集,可以参考此说明。预处理命令如下:
python .\nvidia_preprocessing.py -d path_of_wavs
可以通过以下命令计算 F0 和能量的最小值和最大值:
python .\compute_statistics.py
得到的值需要在 hparams.py
文件中更新。
模型训练
通过以下命令启动训练:
python train_fastspeech.py --outdir etc -c configs/default.yaml -n "name"
推理
目前仅支持基于音素的合成,可以通过以下命令进行推理:
python .\inference.py -c .\configs\default.yaml -p .\checkpoints\first_1\ts_version2_fastspeech_fe9a2c7_7k_steps.pyt --out output --text "需要合成的文本"
导出到 TorchScript
可以使用以下命令导出模型:
python export_torchscript.py -c configs/default.yaml -n fastspeech_scrip --outdir etc
样本和检查点
- 检查点和更多的实验结果可以在这里找到。
- 样本可以在
sample
文件夹中查看。
注意事项
- 当前的代码实现可能较为粗糙,更进一步的清理和优化将有助于更好地发挥模型的性能。
- 尽管当前版本已经能够生成高质量的音频,但仍有很多改善空间,尤其是在曲线损失方面。建议使用标准化 F0 和能量来提高训练的稳定性。
参考文献
通过上面的介绍,大家可以对 FastSpeech 2 项目有更直观的了解,如果有进一步的建议或改进意见,项目欢迎更多的交流与合作。