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}}
}