Google的平行Tacotron 2的Pytorch实现:一种具有可区分持续时间建模的非自动回忆性神经TTS模型


2021.05.25: Only the soft-DTW remains the last hurdle!遵循作者对实施的建议,我在每个模块上对每个模块进行了几次测试,并在有L1损失的监督持续时间信号下(fastspeech2)进行了几次测试。到目前为止,我可以确认除了Soft-DTW之外的所有模块都可以正常运行(合成的频谱图,GT频谱图,残留对齐和W从上到下的缩放)。

有关详细信息,请检查最新的提交日志和更新的实现问题部分。另外,您可以在https://github.com/keonlee9420/fastspeech2/commits/ptaco2上找到正在进行的实验。
2021.05.15:实施完成。理智检查培训和推理。但是模型仍然无法收敛。
I'm waiting for your contribution!如果您在我的实施中发现任何错误或成功培训模型的任何有价值的建议,请告知我。请参阅“实施问题”部分。
您可以使用
pip3 install -r requirements.txt安装FairSeq(官方文档,GitHub)以利用LConvBlock 。请检查#5以解决安装时的任何问题。
支持的数据集:
下载数据集后,在preprocess.yaml中设置corpus_path并运行准备脚本:
python3 prepare_data.py config/LJSpeech/preprocess.yaml
然后,运行预处理脚本:
python3 preprocess.py config/LJSpeech/preprocess.yaml
培训您的模型
python3 train.py -p config/LJSpeech/preprocess.yaml -m config/LJSpeech/model.yaml -t config/LJSpeech/train.yaml
该模型尚未收敛。我正在调试,但是如果您的出色贡献准备就绪,它将得到提高!
对于单个推论,运行
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --restore_step 900000 --mode single -p config/LJSpeech/preprocess.yaml -m config/LJSpeech/model.yaml -t config/LJSpeech/train.yaml
生成的话语将保存在output/result/ 。
也支持批次推理,尝试
python3 synthesize.py --source preprocessed_data/LJSpeech/val.txt --restore_step 900000 --mode batch -p config/LJSpeech/preprocess.yaml -m config/LJSpeech/model.yaml -t config/LJSpeech/train.yaml
综合preprocessed_data/LJSpeech/val.txt中的所有话语。
使用
tensorboard --logdir output/log/LJSpeech
在您的本地主机上提供张板。
总体而言,原始论文中未提出的归一化或激活已充分排列,以防止向前和向后计算上的NAN值(梯度)。 (NAN表示网络中有问题)
FFTBlock用于文本编码器的变压器块。0.2进行文本编码器的ConvBlock 。grapheme_to_phoneme函数。 (请参阅./text/ init )。 80 channels MEL-SPECTROGROM而不是128-bin 。nn.SiLU()进行旋转激活。W和C E ,在S框架域(t域)广播V V应用串联操作。 LConvBlock和常规的正弦位置嵌入。nn.Tanh()应用于每个LConvBLock输出(遵循fastspeech2中解码器部分的激活模式)。 model/soft_dtw_cuda.py中实现定制的软dtw,反映了原始论文中建议的递归。E 。但是用作损失函数,添加了雅各布产品以返回R WRT输入X的目标衍生物。8为24GIB GPU(TITAN RTX)。 @misc{lee2021parallel_tacotron2,
author = {Lee, Keon},
title = {Parallel-Tacotron2},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/keonlee9420/Parallel-Tacotron2}}
}