微軟和浙大聯合推出全新語音合成系統FastSpeech 速度提升270倍
目前,基於神經網絡的端到端文本到語音合成技術發展迅速,但仍面臨不少問題——合成速度慢、穩定性差、可控性缺乏等。為此,微軟亞洲研究院機器學習組和微軟(亞洲)互聯網工程院語音團隊聯合浙江大學提出了一種基於Transformer的新型前饋網絡FastSpeech,兼具快速、魯棒、可控等特點。
與自回歸的Transformer TTS相比,FastSpeech將梅爾譜的生成速度提高了近270倍,將端到端語音合成速度提高了38倍,單GPU上的語音合成速度達到了實時語音速度的30倍。
近年來,基於神經網絡的端到端文本到語音合成(Text-to-Speech,TTS)技術取了快速發展。與傳統語音合成中的拼接法(concatenative synthesis)和參數法(statistical parametric synthesis)相比,端到端語音合成技術生成的聲音通常具有更好的聲音自然度。但是,這種技術依然面臨以下幾個問題:
- 合成語音的速度較慢:端到端模型通常以自回歸(Autoregressive)的方式生成梅爾譜(Mel-Spectrogram),再通過聲碼器(Vocoder)合成語音,而一段語音的梅爾譜通常能到幾百上千幀,導致合成速度較慢;
- 合成的語音穩定性較差:端到端模型通常採用編碼器-注意力-解碼器(Encoder-Attention-Decoder)機制進行自回歸生成,由於序列生成的錯誤傳播(Error Propagation)以及注意力對齊不準,導致出現重複吐詞或漏詞現象;
- 缺乏可控性:自回歸的神經網絡模型自動決定一條語音的生成長度,無法顯式地控制生成語音的語速或者韻律停頓等。
為了解決上述的一系列問題,微軟亞洲研究院機器學習組和微軟(亞洲)互聯網工程院語音團隊聯合浙江大學提出了一種基於Transformer的新型前饋網絡FastSpeech,可以並行、穩定、可控地生成高質量的梅爾譜,再藉助聲碼器並行地合成聲音。
在LJSpeech數據集上的實驗表明,FastSpeech除了在語音質量方面可以與傳統端到端自回歸模型(如Tacotron2和Transformer TTS)相媲美,還具有以下幾點優勢:
- 快速:與自回歸的Transformer TTS相比,FastSpeech將梅爾譜的生成速度提高了近270倍,將端到端語音合成速度提高了近38倍,單GPU上的語音合成速度是實時語音速度的30倍;
- 魯棒:幾乎完全消除了合成語音中重複吐詞和漏詞問題;
- 可控:可以平滑地調整語音速度和控制停頓以部分提升韻律。
模型框架
圖1. FastSpeech網絡架構
前饋Transformer架構
FastSpeech採用一種新型的前饋Transformer網絡架構,拋棄掉傳統的編碼器-注意力-解碼器機制,如圖1(a)所示。其主要模塊採用Transformer的自註意力機制(Self-Attention)以及一維卷積網絡(1D Convolution),我們將其稱之為FFT塊(Feed-Forward Transformer Block, FFT Block),如圖1(b )所示。前饋Transformer堆疊多個FFT塊,用於音素(Phoneme)到梅爾譜變換,音素側和梅爾譜側各有N個FFT塊。特別注意的是,中間有一個長度調節器(Length Regulator),用來調節音素序列和梅爾譜序列之間的長度差異。
長度調節器
長度調節器如圖1(c)所示。由於音素序列的長度通常小於其梅爾譜序列的長度,即每個音素對應於幾個梅爾譜序列,我們將每個音素對齊的梅爾譜序列的長度稱為音素持續時間。長度調節器通過每個音素的持續時間將音素序列平鋪以匹配到梅爾譜序列的長度。我們可以等比例地延長或者縮短音素的持續時間,用於聲音速度的控制。此外,我們還可以通過調整句子中空格字符的持續時間來控制單詞之間的停頓,從而調整聲音的部分韻律。
音素持續時間預測器
音素持續時間預測對長度調節器來說非常重要。如圖1(d)所示,音素持續時間預測器包括一個2層一維卷積網絡,以及疊加一個線性層輸出標量用以預測音素的持續時間。這個模塊堆疊在音素側的FFT塊之上,使用均方誤差(MSE)作為損失函數,與FastSpeech模型協同訓練。我們的音素持續時間的真實標籤信息是從一個額外的基於自回歸的Transformer TTS模型中抽取encoder-decoder之間的注意力對齊信息得到的,詳細信息可查閱文末論文。
實驗評估
為了驗證FastSpeech模型的有效性,我們從聲音質量、生成速度、魯棒性和可控制性幾個方面來進行了評估。
聲音質量
我們選用LJSpeech數據集進行實驗,LJSpeech包含13100個英語音頻片段和相應的文本,音頻的總長度約為24小時。我們將數據集分成3組:300個樣本作為驗證集,300個樣本作為測試集,剩下的12500個樣本用來訓練。
我們對測試樣本作了MOS測試,每個樣本至少被20個英語母語評測者評測。MOS指標用來衡量聲音接近人聲的自然度和音質。我們將FastSpeech方法與以下方法進行對比:1) GT, 真實音頻數據;2) GT (Mel + WaveGlow), 用WaveGlow作為聲碼器將真實梅爾譜轉換得到的音頻;3) Tacotron 2 (Mel + WaveGlow);4) Transformer TTS (Mel + WaveGlow);5) Merlin (WORLD), 一種常用的參數法語音合成系統,並且採用WORLD作為聲碼器。
從表1中可以看出,我們的音質幾乎可以與自回歸的Transformer TTS和Tacotron 2相媲美。
FastSpeech合成的聲音Demo:
文字:“The result of the recommendation of the committee of 1862 was the Prison Act of 1865”
更多聲音Demo:
合成速度
我們比較FastSpeech與具有近似參數量的Transformer TTS的語音合成速度。從表2可以看出,在梅爾譜的生成速度上,FastSpeech比自回歸的Transformer TTS提速將近270倍;在端到端(合成語音)的生成速度上,FastSpeech比自回歸的Transformer TTS提速將近38倍。FastSpeech平均合成一條語音的時間為0.18s,由於我們的語音平均時長為6.2s,我們的模型在單GPU上的語音合成速度是實時語音速度的30倍(6.2/0.18)。
圖2展示了測試集上生成語音的耗時和生成的梅爾譜長度(梅爾譜長度與語音長度成正比)的可視化關係圖。可以看出,隨著生成語音長度的增大,FastSpeech的生成耗時並沒有發生較大變化,而Transformer TTS的速度對長度非常敏感。這也表明我們的方法非常有效地利用了GPU的並行性實現了加速。
圖2. 生成語音的耗時與生成的梅爾譜長度的可視化關係圖
魯棒性
自回歸模型中的編碼器-解碼器注意力機制可能導致音素和梅爾譜之間的錯誤對齊,進而導致生成的語音出現重複吐詞或漏詞。為了評估FastSpeech的魯棒性,我們選擇微軟(亞洲)互聯網工程院語音團隊產品線上使用的50個較難的文本對FastSpeech和基準模型Transformer TTS魯棒性進行測試。從下表可以看出,Transformer TTS的句級錯誤率為34%,而FastSpeech幾乎可以完全消除重複吐詞和漏詞。
關於魯棒性測試的聲音demo,請訪問:
語速調節
FastSpeech可以通過長度調節器很方便地調節音頻的語速。通過實驗發現,從0.5x到1.5x變速,FastSpeech生成的語音清晰且不失真。
語速調節以及停頓調節的聲音Demo:
消融對比實驗
我們也比較了FastSpeech中一些重要模塊和訓練方法(包括FFT中的一維卷積、序列級別的知識蒸餾技術和參數初始化)對生成音質效果的影響,通過CMOS的結果來衡量影響程度。由下表可以看出,這些模塊和方法確實有助於我們模型效果的提升。
未來,我們將繼續提升FastSpeech模型在生成音質上的表現,並且將會把該模型應用到其它語言(例如中文)、多說話人和低資源場景中。我們還會嘗試將FastSpeech與並行神經聲碼器結合在一起訓練,形成一個完全端到端訓練的語音到文本並行架構。
論文地址:
https://arxiv.org/pdf/1905.09263.pdf
更多Demo聲音,請訪問:
https://speechresearch.github.io/fastspeech/
論文源代碼也將在不久後開放,敬請關注!