序列到序列模型在端到端語音處理中被廣泛應用,例如自動語音識別(ASR)、語音翻譯(ST)和文本轉語音(TTS)。本文著重研究一種新興的序列到序列模型,稱為變壓器(Transformer),它在神經機器翻譯和其他自然語言處理應用中取得了最先進的性能。我們進行了深入的研究,通過實驗比較和分析了變壓器和傳統的循環神經網絡(RNN)在總共15個自動語音識別(ASR)、一個多語種ASR、一個語音翻譯(ST)和兩個文本轉語音(TTS)基準任務中的表現。我們的實驗揭示了各種訓練技巧以及變壓器在每個任務中所取得的顯著性能優勢,其中包括與RNN相比在13/15個ASR基準任務中的出人意料的優越性。我們正在準備發布Kaldi風格的可重現配方,使用開源和公開可用的數據集,為所有的ASR、ST和TTS任務提供給社區,以便能夠在我們激動人心的成果基礎上取得成功。
1. 引言
Transformer是一種序列到序列(S2S)架構,最初用于神經機器翻譯(NMT)[1],并在自然語言處理任務中迅速取代了循環神經網絡(RNN)。本文對其在語音應用領域(自動語音識別(ASR)、語音翻譯(ST)和文本轉語音(TTS))的性能與RNN進行了深入比較。
將Transformer應用于語音應用的一個主要困難在于,它需要比傳統基于RNN的模型更復雜的配置(例如,優化器、網絡結構、數據增強)。我們的目標是分享有關在語音任務中使用變壓器的知識,以便社區可以借助可重現的開源工具和配方充分取得我們激動人心的成果。
目前,現有的基于Transformer的語音應用[2]–[4]仍缺乏開源工具包和可重現的實驗,而在之前的神經機器翻譯研究[5]、[6]中已經提供了這些資源。因此,我們正在進行一個開放的社區驅動項目,使用變壓器和循環神經網絡,為端到端語音應用提供支持,借鑒了基于隱馬爾可夫模型(HMM)的ASR領域的Kaldi的成功經驗[7]。具體而言,我們的實驗提供了實用指南,用于調整語音任務中的變壓器,以實現最先進的結果。
在我們的語音應用實驗中,我們研究了變壓器和基于循環神經網絡的系統的幾個方面。例如,我們測量了與參考標準相比的詞/字符/回歸誤差,訓練曲線以及在多個GPU上的可擴展性。這項工作的貢獻包括:
? 我們進行了一項大規模的比較研究,對比了變壓器和循環神經網絡,在ASR相關任務中取得了顯著的性能提升。
? 我們解釋了在語音應用(ASR、TTS和ST)中使用變壓器的訓練技巧。
? 我們在我們的開源工具包ESPnet [8]中提供了可重現的端到端配方和在大量公開可用數據集上預訓練的模型。
相關研究
由于變壓器最初被提出作為NMT系統[1],它已經在NMT任務中得到廣泛研究,包括超參數搜索[9]、并行實現[5]以及與RNN的比較[10]。然而,語音處理任務在ASR [2]、ST [3]和TTS [4]方面只提供了初步的結果。因此,本文旨在匯集以前的基礎研究,并在我們的實驗中探索更廣泛的主題(例如準確性、速度、訓練技巧)。
2.序列到序列循環神經網絡
2.1 序列到序列的統一公式
S2S(序列到序列)是一種神經網絡的變種,它學習將源序列X轉換為目標序列Y [12]。在圖1中,我們展示了用于ASR、TTS和ST任務的常見S2S結構。S2S包括兩個神經網絡:一個編碼器(encoder)
(1)
(2)
和一個解碼器
(3)
? ?(4)
? ?(5)
其中,X是源序列(例如,語音特征序列(用于ASR和ST)或字符序列(用于TTS)),e是EncBody中的層數,d是DecBody中的層數,t是目標幀的索引,上述方程中的所有函數都由神經網絡實現。對于解碼器的輸入Y [1 : t - 1],在訓練階段我們使用了一個基于真實數據的前綴,而在解碼階段我們使用了一個生成的前綴。在訓練過程中,S2S模型學習最小化標量損失值。
(6)
在生成的序列和目標序列之間的損失值。
圖1 在語音應用中的序列到序列架構
本節的其余部分描述了基于RNN的通用模塊:“EncBody”和“DecBody”。我們將“EncPre”、“DecPre”、“DecPost”和“Loss”視為特定任務的模塊,并在后面的部分中對它們進行描述。
2.2 循環神經網絡解碼器
在方程(4)中,DecBody(·)使用編碼序列和目標前綴生成下一個目標幀。在序列生成中,解碼器通常是單向的。例如,基于循環神經網絡的DecBody(·)實現中經常使用帶有注意力機制的單向LSTM [13]。該注意力機制通過發出源幀權重,將編碼的源幀 ?按目標幀進行求和,得到一個與前綴一起進行轉換的目標幀向量。我們將這種類型的注意力稱為“編碼器-解碼器注意力”。
3. 變壓器
變壓器通過自注意力機制學習序列信息,而不是RNN中使用的循環連接。本節詳細描述了變壓器中基于自注意力的模塊。
3.1 多頭注意力
變壓器由多個點注意力層[18]組成。
? ?(7)
其中 和 是這個注意力層的輸入, 是特征維度的數量, 是 的長度, 是 和 的長度。我們將 稱為 “注意力矩陣" 。Vaswani等人[1]將這些輸入 和 分別視為查詢 (query) 和一組鍵值對 (key-value pairs)。
此外,為了使模型能夠并行處理多個注意力,Vaswani等人[1]將方程(7)中的注意力層擴展為多頭注意力(MHA):
?(8)
? ?(9)
其中 和 是這個多頭注意力層的輸入, 是第 個注意力層的輸出和是可學習的權重矩陣, 是該層中的注意力數目。
3.2 自注意力編碼器
我們定義了基于變壓器的EncBody(·),用于方程(2),與第2.2節中的RNN編碼器不同,定義如下:
? ?(10)
其中, 是編碼器層的索引,而 是第 個雙層前饋網絡:
? ?(11)
其中 是輸入序列 的第幀,是可學習的權重矩陣,而是可學習的偏置向量。我們將方程 中的 稱為 "自注意力" (self attention)。
3.3 自注意力解碼器
用于方程(4)的基于變壓器的DecBody(·)由兩個注意力模塊組成:
? ?(12)
其中,是解碼器層的索引。我們將中解碼器輸入和編碼器輸出之間的注意力矩陣稱為“編碼器-解碼器注意力”,與第2.3節中的RNN中的注意力相同。由于單向解碼器在序列生成中很有用,因此在第t個目標幀處,將其注意力矩陣進行掩碼處理,以防止它們與后續幀(大于t)發生連接。可以使用逐元素乘法與一個三角形二進制矩陣并行地對序列進行掩碼操作。由于它不需要順序操作,因此比RNN提供更快的實現。
3.4 位置編碼
為了在非循環模型中表示時間位置,變壓器采用了正弦位置編碼:
在應用EncBody(.)和DecBody(()模塊之前,輸入序列會與 進行拼接。
4. ASR擴展
在我們的ASR框架中,序列到序列(S2S)模型從輸入序列(使用對數梅爾濾波器組成的語音特征)中預測出目標字符序列或SentencePiece [19]序列。
4.1 ASR編碼器架構
在ASR中,源序列 被表示為一個由83維對數梅爾濾波器幀和音高特征[20]組成的序列。首先,EncPre(.)使用具有256個通道、步幅為2和卷積核大小為 3 的兩層CNN或類似于VGG的最大池化[21],將源序列 轉換為一個子采 樣序列 。這里, 是CNN輸出序列的長度。這個CNN對應于方程 (1) 中的 EncPre 。然后,EncBody 將 轉換為一系列編碼特征 ,用于CTC和解碼器網絡。
4.2 ASR解碼器架構
解碼器網絡接收編碼序列Xe和目標序列Y [1:t?1]的前綴,這些前綴由令牌ID(字符或SentencePiece [19])組成。首先,方程(3)中的DecPre(·)將令牌嵌入到可學習的向量中。接下來,DecBody(·)和單線性層DecPost(·)使用Xe和Y [1:t?1]預測下一個令牌Ypost[t]的后驗分布。
4.3 ASR訓練和解碼
在ASR訓練過程中,解碼器和CTC模塊分別預測給定相應源序列 的 的逐幀后驗分布:和。我們簡單地使用這些負對數似然值的加權和:
其中,α是一個超參數。
在解碼階段,解碼器使用束搜索(beam search)預測給定語音特征和先前預測的令牌的下一個令牌。在束搜索中,結合S2S、CTC和RNN語言模型(LM)[22]的得分,計算如下:
其中,是目標序列的一組假設,而和是超參數。
5. ST擴展
在語音翻譯(ST)中,S2S接收與ASR相同的源語音特征和目標令牌序列,但源語言和目標語言不同。它的模塊定義方式與ASR中的相同。然而,ST無法與第4.3節介紹的CTC模塊合作,因為與ASR不同,翻譯任務不能保證源序列和目標序列的單調對齊[23]。
6. TTS擴展
在TTS框架中,序列到序列(S2S)模型生成一系列對數梅爾濾波器特征,并預測給定輸入字符序列的序列結束(EOS)的概率[15]。
6.1 TTS編碼器架構
在TTS中,編碼器的輸入是與輸入字符和EOS符號對應的ID序列。首先,字符ID序列通過嵌入層轉換為字符向量序列,然后通過一個可學習的標量參數對向量進行縮放的位置編碼被添加到向量中[4]。這個過程是方程(1)中EncPre(·)的TTS實現。最后,編碼器EncBody(·)在方程(2)中將這個輸入序列轉換為解碼器網絡的一系列編碼特征。
6.2 TTS解碼器架構
在TTS中,解碼器的輸入是一系列編碼器特征和一系列對數梅爾濾波器特征。在訓練中,采用了“teacher-forcing”方式使用真實的對數梅爾濾波器特征,而在推理階段,采用了自回歸(autoregressive)的方式使用預測的特征。
首先,將80維對數梅爾濾波器特征的目標序列通過Prenet [15]轉換為一系列隱藏特征,作為方程(3)中DecPre(·)的TTS實現。該網絡由兩個具有256個單元的線性層、一個ReLU激活函數、以及dropout層組成,最后是一個具有個單元的投影線性層。由于預期Prenet轉換的隱藏表示與編碼器特征的特征空間類似,Prenet有助于學習到一個對角的編碼器-解碼器注意力[4]。然后,方程(4)中的解碼器DecBody(·),其架構與編碼器相同,將編碼器特征序列和隱藏特征序列轉換為解碼器特征序列。對于的每一幀,應用了兩個線性層,分別用于計算目標特征和EOS的概率。最后,將預測的目標特征序列應用于Postnet [15],以詳細預測其各個組成部分。Postnet是一個五層CNN,每一層都是一個具有256個通道和大小為5的卷積核的1D卷積層,隨后進行批量歸一化、tanh激活函數和dropout處理。這些模塊是方程(5)中DecPost(·)的TTS實現。
6.3 TTS訓練和解碼
在TTS訓練中,整個網絡被優化以最小化兩個損失函數:1)目標特征的L1損失和2)EOS概率的二元交叉熵(BCE)損失。為了解決BCE計算中的類別不平衡問題,對于正樣本,使用一個常數權重(例如5)[4]。
此外,我們應用了引導式注意力損失(guided attention loss)[24],以加速對只有兩個頭部的兩個層的對角注意力的學習。這是因為已知編碼器-解碼器注意力矩陣僅在來自目標側的少數頭部中呈對角形式[4]。我們沒有引入任何用于平衡這三個損失值的超參數,只是將它們簡單地相加。
在推理階段,網絡以自回歸的方式預測下一幀的目標特征。如果EOS的概率超過了一定閾值(例如0.5),網絡將停止預測。
7. ASR實驗
7.1 數據集
在表格1中,我們總結了我們在ASR實驗中使用的15個數據集。我們的實驗涵蓋了ASR中的各種主題,包括錄音(清晰的、嘈雜的、遠場的等)、語言(英語、日語、普通話、西班牙語、意大利語)和規模(10-960小時)。除了JSUT [25]和Fisher-CALLHOME西班牙語外,我們的數據準備腳本基于Kaldi的“s5x”配方[7]。在技術上,我們調整了所有配置(例如特征提取、SentencePiece [19]、語言建模、解碼、數據增強[26],[27]),除了訓練階段的配置,使其達到現有基于RNN的系統的最佳性能。我們對幾個語料庫使用了數據增強。例如,我們對CSJ、CHiME4、Fisher CALLHOME西班牙語、HKUST和TED-LIUM2/3應用了速度擾動[27],擾動比率為0.9、1.0和1.1;我們還對Aurora4、LibriSpeech、TED-LIUM2/3和WSJ應用了SpecAugment [26]。
表1 ASR數據集描述。在“測試集”中列出的名稱對應于表2中的ASR結果。我們通過外部的WSJ train si284數據集(81小時)擴大了標有(*)的語料庫。
7.2 設置
我們采用了與[41]中相同的變壓器架構,適用于除最大的LibriSpeech外的每個語料庫。對于RNN,我們遵循先前研究[17],[42]中針對每個語料庫配置的最佳架構。
由于Transformer的訓練迭代速度是RNN的八倍,更新更精細,因此Transformer需要與RNN不同的優化器配置。對于RNN,我們采用了Adadelta [43]并使用早停策略的每個語料庫的最佳系統配置。為了訓練Transformer,我們基本上遵循了先前的文獻[2](例如,dropout、學習率、熱身步驟)。在Transformer中,我們沒有使用開發集進行早停策略。我們只是運行了20-200個epoch(大多數為100個epoch),并將最后10個epoch存儲的模型參數取平均作為最終模型。
我們在單個GPU上對較大的語料庫(如LibriSpeech、CSJ和TED-LIUM3)進行了訓練。我們還確認了使用多個前向/后向步驟上的梯度累積[5]來模擬多個GPU的效果,可以獲得與這些語料庫相似的性能。在解碼階段,Transformer和RNN在每個語料庫上共享相同的配置,例如束搜索大小(例如,20-40),CTC權重λ(例如,0.3)和LM權重γ(例如,0.3-1.0),這些在第4.3節中介紹。
7.3 結果
表2總結了每個語料庫的ASR結果,以字符錯誤率(CER)和詞錯誤率(WER)衡量。結果顯示,在我們的實驗中,Transformer在13個語料庫中優于RNN。雖然我們的系統不像Kaldi那樣具有發音字典、詞性標記和基于對齊的數據清理,但我們的Transformer在7個語料庫上提供了與基于HMM的系統Kaldi可比的CER/WER。我們得出結論,Transformer在低資源(JSUT)、大資源(LibriSpeech、CSJ)、嘈雜(AURORA4)和遠場(REVERB)任務中,甚至能夠超越基于RNN的端到端系統和基于DNN/HMM的系統。表3還總結了LibriSpeech ASR基準測試的結果,包括我們的結果和其他報告,因為這是一個最具競爭力的任務。我們的Transformer結果與[26]、[44]、[45]中的最佳表現可媲美。
表2 字符/詞錯誤率的ASR結果。帶有(*)標記的結果是在我們的環境中進行評估的,因為沒有提供官方結果。Kaldi的官方結果是從版本“c7876a33”中提取的。
表3 Librispeech ASR基準測試的比較如表所示
圖2展示了在LibriSpeech上使用多個GPU訓練得到的ASR訓練曲線。我們觀察到,使用較大的小批量訓練的Transformer的準確性更高,而RNN則沒有這種趨勢。另一方面,當我們對Transformer使用較小的小批量時,在熱身步驟之后通常會出現欠擬合的情況。在這個任務中,相比使用單個GPU的RNN,Transformer以大約八倍的速度實現了與RNN相當的最佳準確性。
圖2. 使用LibriSpeech數據集進行ASR訓練的曲線。在GPU上,每個模型的小批量中包含最大數量的語音段。
7.4 討論
我們總結了我們在實驗中觀察到的訓練技巧:
當Transformer出現欠擬合時,我們建議增加小批量的大小,因為這不僅可以加快訓練速度,同時也可以提高準確性,這與其他超參數不同。
如果沒有多個GPU可用,可以采用梯度累積策略[5]來模擬較大的小批量。
雖然對于RNN并沒有改善結果,但對于Transformer來說,使用dropout是必不可少的,可以避免過擬合的問題。
我們嘗試了幾種數據增強方法[26],[27]。它們極大地改善了Transformer和RNN的性能。
對于RNN而言,最佳的解碼超參數γ和λ通常也適用于Transformer。
Transformer在解碼方面存在一些弱點。它比Kaldi系統要慢得多,這是因為自注意力機制在樸素實現中的時間復雜度為,其中n是語音的長度。為了直接與基于DNN-HMM的ASR系統進行性能比較,我們需要為Transformer開發一種更快的解碼算法。
8. 多語種ASR實驗
這一部分在多語種設置中比較了RNN和Transformer在ASR性能上的表現,考慮到Transformer在前一部分的單語種ASR任務中的成功。根據[46]的方法,我們準備了10種不同的語言,包括WSJ(英語)、CSJ(日語)[30]、HKUST(普通話)[33]和VoxForge(德語、西班牙語、法語、意大利語、荷蘭語、葡萄牙語、俄語)。模型基于一個單一的多語種模型,其中參數在所有語言之間共享,輸出單元包括所有10種語言的字母(共計5,297個字母和特殊符號)。我們在RNN和Transformer上都使用了本節介紹的默認設置,沒有使用RNNLM淺融合[21]。
圖3清楚地顯示出我們的Transformer在9種語言中明顯優于我們的RNN。它在8種語言中實現了超過10%的相對改進,其中在VoxForge意大利語中的相對改進最大,達到了28.0%。與[46]中使用了更深的BLSTM(7層)和RNNLM的RNN結果相比,我們的Transformer在9種語言中仍然提供了更優秀的性能。從這個結果可以得出結論,Transformer在多語種端到端ASR中也優于RNN。
圖3 多語種端到端ASR與Watanabe等人的RNN[46]、ESPnet RNN和ESPnet Transformer的比較。
9. 語音翻譯實驗
我們基線的端到端ST RNN基于[23],它與我們ASR系統中使用的RNN結構類似,但我們沒有在原始論文中使用卷積LSTM層。我們的ST Transformer的配置與我們的ASR系統相同。
我們在Fisher-CALLHOME英西語語料庫[47]上進行了語音翻譯實驗。我們的Transformer將BLEU分數從我們的RNN基準值16.5提高到了17.2,應用于CALLHOME的“evltest”數據集上。在訓練Transformer時,我們觀察到比RNN更嚴重的欠擬合問題。解決這個問題的方法是使用我們在ASR實驗中使用的預訓練編碼器,因為ST數據集中包含了我們在ASR實驗中使用的Fisher-CALLHOME西班牙語語料庫。
10. TTS實驗
10.1 設置
我們的基準線是基于RNN的TTS模型Tacotron 2 [15]。我們按照其模型和優化器的設置進行實驗。我們重新使用現有的TTS配方,包括數據準備和波形生成,這些配方我們已經配置為最適合RNN。我們在第3節中介紹的Transformer配置如下:。兩個系統的輸入都是字符序列。
10.2 結果
我們使用兩個語料庫進行了Transformer和基于RNN的TTS的比較:M-AILABS [48](意大利語,16 kHz,31小時)和LJSpeech [49](英語,22 kHz,24小時)。在M-AILABS的情況下,我們使用了一位意大利男性發音者(Riccardo)。圖4和圖5顯示了這兩個語料庫中的訓練曲線。從這些圖中可以看出,Transformer和RNN在L1損失收斂方面提供了類似的結果。與ASR中觀察到的情況類似,我們發現較大的迷你批處理對于Transformer來說可以獲得更好的驗證集L1損失和更快的訓練速度,而對于RNN來說對L1損失會產生負面影響。我們還在圖6和 7中提供了生成的語音梅爾頻譜圖。我們得出結論,基于Transformer的TTS幾乎可以達到與基于RNN的TTS相同的性能水平。
圖4 M-AILABS數據集上的TTS訓練曲線。
圖5 LJSpeech數據集上的TTS訓練曲線。
圖6 M-AILABs數據集上的梅爾頻譜圖樣本。(頂部) 真實值,(中間) Tacotron 2樣本,(底部) Transformer樣本。輸入文本為“E PERCHE SUBITO VIENE IN MENTE CHE 'IDDIO NON PUO AVER FATTO UNA COSA INGIUSTA”。
圖7 LJSpeech數據集上的梅爾頻譜圖樣本。(頂部) 真實值,(中間) Tacotron 2樣本,(底部) Transformer樣本。輸入文本為“IS NOT CONSISTENT WITH THE STANDARDS WHICH THE RESPONSIBILITIES OF THE SECRET SERVICE REQUIRE IT TO MEET.”
10.3 討論
我們在TTS中訓練Transformer的經驗教訓如下:
如果有大量的GPU可用,使用大批量訓練可以加快TTS的訓練速度,就像在ASR中一樣。
對于Transformer,驗證損失值,特別是BCE損失,更容易出現過擬合。我們建議在檢查其收斂性時監控注意力圖而不是損失值。
在Transformer中,注意力圖的某些頭部并不總是像Tacotron 2中那樣是對角線的。因此,我們需要選擇在哪些位置應用引導性注意力損失[24]。-使用Transformer進行解碼的速度也比使用RNN慢(每幀6.5毫秒 vs 單線程CPU上每幀78.5毫秒)。我們還嘗試了FastSpeech [50],它實現了基于Transformer的非自回歸TTS。它極大地提高了解碼速度(每幀0.6毫秒,單線程CPU上),并生成了與自回歸Transformer相媲美的語音質量。-在Transformer中,引入的減少因子[51]也是有效的。它可以極大地減少訓練和推理時間,但會稍微降低質量。
未來的工作,我們需要進一步研究訓練速度和質量之間的權衡,并引入ASR技術(例如數據增強、語音增強)來改進TTS系統。
11. 總結
我們在語音應用中對Transformer和RNN進行了比較性研究,使用了各種語料庫,包括ASR(15個單語種+一個多語種)、ST(一個語料庫)和TTS(兩個語料庫)。在這些任務的實驗中,我們取得了令人期待的結果,包括在許多ASR任務中的巨大改進,并解釋了我們如何改進模型。我們相信本文中描述的可重現的配方、預訓練模型和訓練技巧將加速Transformer在語音應用中的研究方向。
編輯:黃飛
評論
查看更多