實施“多模式合成的持續時間知情注意力網絡”(https://arxiv.org/pdf/1909.01700.pdf)紙。
狀態:發布
榴蓮是用於文本到語音綜合任務的編碼器架構。與Tacotron 2這樣的先前體系結構不同,它不學習注意機制,而是考慮了音素持續時間信息。因此,當然,要使用此模型,應該已經進行了音調和持續時間一致的數據集。但是,您可以嘗試在LJSpeech數據集(使用的CMU dict)上使用驗證的持續時間模型。鏈接將在下面提供。
榴蓮模型由兩個模塊組成:骨幹合成器和持續時間預測指標。以下是文章中描述的榴蓮中最明顯的差異:
骨幹合成器和持續時間模型均經過同時訓練。為了實現簡化,持續時間模型可以預測固定最大幀數的對齊。您可以通過概括框架軸或使用兩個損失(尚未測試此輸出),將此輸出作為BCE問題,MSE問題,將其設置在config.json中。實驗表明,Just-BCE版本的優化過程表明自己對更長的文本序列不穩定,因此更喜歡使用MSE+BCE或Just-MSE(不要介意您在張量板中遇到不良對準)。
您可以在demo文件夾(使用的WaveGlow vocoder)中檢查合成演示式波動(在收斂之前獲得很多) 。
首先,請確保您使用pip install --upgrade -r requirements.txt安裝了所有軟件包。使用pytorch==1.5.0測試該代碼
克隆存儲庫: git clone https://github.com/ivanvovk/DurrIAN
要開始培訓基於紙的榴蓮版本運行python train.py -c configs/default.json 。您可以將基線模型指定為python train.py -c configs/baseline.json --baseline
為了確保在本地環境中一切正常,您可以通過python <test_you_want_to_run.py>在tests文件夾中運行單元測試。
使用音節持續時間與BCE持續時間損失最小化的LJSpeech數據集對此實現進行了訓練。您可以通過此鏈接找到它。
該模型的主要缺點是持續時間對齊的數據集。您可以找到用於培訓filelists文件夾當前實現的LJSpeech Filelist。為了使用數據,請確保您以與提供的LJSpeech相同的方式組織了您的filelists。但是,為了節省大腦的時間和神經元,您可以嘗試使用我的模型檢查點上的LJSpeech持續時間模型上預處理(未嘗試)在LJSpeech持續時間模型上訓練模型,而不會持續一致。但是,如果您有興趣對齊個人數據集,請仔細遵循下一部分。
在實驗中,我將LJSpeech與蒙特利爾強制對齊工具對齊。如果這裡不清楚,請按照工具包的文檔中的說明進行操作。首先,對齊算法有多個步驟:
正確組織數據集。 MFA要求它位於結構{tusterance_id.lab,tusterance_id.wav}的單個文件夾中。確保所有文本均為.lab格式。
下載MFA版本並通過此鏈接遵循安裝說明。
使用MFA完成後,您需要帶有音素轉錄的數據集字典。在這裡,您有幾個選擇:
bin/mfa_generate_dictionary /path/to/model_g2p.zip /path/to/data dict.txt ,使用MFA預處理的模型列表中驗證的G2P模型生成字典。請注意,默認的MFA安裝將自動為您提供英文預驗證的型號,您可能會使用它。一旦準備好數據,字典和G2P模型,現在就可以對齊了。運行命令bin/mfa_align /path/to/data dict.txt path/to/model_g2p.zip outdir 。等到完成。 outdir文件夾將包含詞彙單詞的列表和一個帶有.TextGrid格式的特殊文件的文件夾,其中存儲了WAVS對齊。
現在,我們要處理這些文本網格文件,以獲取最終的filelist。在這裡,您可能會發現有用的Python軟件包TextGrid 。使用pip install TextGrid安裝它。這裡如何使用它:
import textgrid
tg = textgrid.TextGrid.fromFile('./outdir/data/text0.TextGrid')
現在tg是集兩個對象:第一個對象包含對齊單詞,第二個對象包含對齊的音素。您需要第二個。提取持續時間(以框架! tg間隔為幾秒鐘,因此可以轉換),可以通過迭代獲得的.TextGrid文件並以與我在filelists文件夾中提供的filelist相同的格式來準備filelist。
我找到了幾個對準器的概述。也許會有所幫助。但是,據我所知,我建議您使用MFA,因為它是最準確的對準器之一。