帶你讀論文 | 端到端語音識別模型

微軟研究院AI頭條發表於2020-11-18

隨著端到端神經網路機器翻譯、語音生成等方面的進展,端到端的語音識別也達到了和傳統方法可比的效能。不同於傳統方法將語音識別任務分解為多個子任務(詞彙模型,聲學模型和語言模型),端到端的語音識別模型基於梅爾語譜作為輸入,能夠直接產生對應的自然語言文字,大大簡化了模型的訓練過程,從而越來越受到學術界和產業界的關注。

本文將透過六篇論文,從建模方法、響應時間最佳化、資料增強等不同方面講解端到端語音模型的發展,並探討不同端到端語音識別模型的優缺點。

端到端語音識別建模

在講述語音識別建模之前,首先明確端到端語音識別的輸入和輸出。

輸入:目前端到端語音識別常用的輸入特徵為 fbank。fbank 特徵的處理過程為對一段語音訊號進行預加重、分幀、加窗、短時傅立葉變換(STFT)、mel 濾波、去均值等。一個 fbank 向量對應往往對應10ms的語音,而一段十秒的語音,即可得到大約1000個 fbank 的向量描述該語音。除了 fbank,MFCC 以及 raw waveform 在一些論文中也被當做輸入特徵,但主流的方法仍然採用 fbank。

輸出:端到端的輸出可以是字母、子詞(subword)、詞等等。目前以子詞當做輸出比較流行,和 NLP 類似,一般用 sentence piece 等工具將文字進行切分。

Seq2Seq

參考論文:Listen, Attend and Spell: A Neural Network for Large Vocabulary Conversational Speech Recognition. ICASSP 2016(William Chan, Navdeep Jaitly, Quoc V. Le, Oriol Vinyals)

給定序列 X,輸出 Y,最直白的一種辦法就是延伸在機器翻譯中所使用的 Seq2Seq 模型。Seq2Seq 模型由兩部分組成:編碼器和帶有注意力機制的解碼器。在解碼每個詞語的時候,注意力機制會動態計算每個輸入隱狀態的權重,並透過加權線性組合得到當前的注意力向量。在此處的語音識別任務中,Seq2Seq 模型與機器翻譯中的 Seq2Seq 模型異曲同工,可以使用不同的模型作為編碼器和解碼器,例如 RNN、Transformer 模型等。

帶你讀論文 | 端到端語音識別模型圖1:Listen, attend and spell 模型結構圖

為了訓練更好的 Seq2Seq 語音識別模型,一些最佳化策略也被提出:

  • 引入增強學習策略,將最小詞錯率(minimum word error rate)當作模型訓練的獎勵函式,更新模型引數

  • 由於語音的輸入和輸出有著單調性,並不存在機器翻譯的調序問題,所以使用單調注意力策略,在一些實驗中可以提升語音識別的效能。

  • 引入覆蓋(coverage)機制,緩解語音識別的漏詞問題。

  • 與 CTC 聯合訓練以及聯合解碼,可大幅提升 Seq2Seq 模型效能。

CTC

參考論文:Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks. ICML 2006(AlexGraves, SantiagoFernández,FaustinoGomez)

除了簡單易懂的 Seq2Seq 模型之外,還需要關注另一個經典之作 CTC 模型。CTC 模型是端到端語音識別的開山始祖,提出時間遠早於 Seq2Seq 模型,其建模思想也與 Seq2Seq 模型相去甚遠。CTC 模型可以看作自動學習輸入 X 與 Y 的對齊,由於 Y 的長度遠小於 X,所以 CTC 引入空和 y_i 的重複來讓 X 和 \{y}_hat 一一對應。

帶你讀論文 | 端到端語音識別模型圖2:CTC 輸入音訊與文字對應關係

例如,在圖2中,CTC 引入空和重複使得句子 THE CAT (Y)和輸入音訊(X)做對齊。這種對齊方式有三個特徵:

(1)X 與 Y 對映是單調的,即如果 X 向前移動一個時間片,Y 保持不動或者也向前移動一個時間片。

(2)X 與 Y 的對齊是多對一的。一個 X 可以有很多種方式和 Y 進行對應。

(3)X 的長度大於 Y 的長度。

為了求得該對映,需要最大化後驗機率 P(Y|X)

帶你讀論文 | 端到端語音識別模型

這裡 A 是一條合法的 x 和 y 的對應路徑,a_t 代表 t 時刻 X 所對應的輸出。如有興趣可參見 https://distill.pub/2017/ctc/ 瞭解更多的推導細節。

在訓練中 CTC 與 Seq2Seq 模型相比,CTC 模型有如下不同:

  • CTC 在解碼時,對於每一幀都可以生成一個對應的子詞,因此 CTC 比 Seq2Seq 可以更好地支援流式語音識別

  • CTC 的建模並沒有直接建模 Y 中不同詞語之間的依賴關係,所以生成的文字從語言模型的角度來看質量較差。為了解決這個問題,CTC 往往要和外部的語言模型一起進行解碼才可以生成更好的結果。

Transducer

參考論文:Sequence Transduction with Recurrent Neural Networks. arXiv 2012(Alex Graves)

由於 CTC 模型無法顯示建模 Y 中詞與詞的依賴關係,Transducer 模型在2012年被提出。Transducer 可以被看作是 CTC 模型的延伸,由文字預測網路(text prediction network)來建模語言模型,彌補了 CTC 的缺點。之後語言模型的隱狀態和語音編碼器的隱狀態傳遞給聯合網路(joint network),以預測當前時刻的輸出。

帶你讀論文 | 端到端語音識別模型圖3:Transducer 結構圖

值得注意的是,Transducer 的狀態轉移矩陣和 CTC 稍有不同,在 CTC 中一個詞連續出現兩次會在後處理時被合併,而 Transducer 不支援這種表示,其主要原因為 Transducer 對語言模型進行了建模,每輸出一個詞它的 prediction network 的隱狀態就會變化一次。並且 Transducer 支援同一幀對應多個輸出單元,而 CTC 不支援。因為 CTC 和 Transducer 都是逐幀解碼,語音結束解碼過程結束,他們也被稱作是幀同步(frame synchronized) 模型。與之相反的是 Seq2Seq 模型是逐詞解碼,直到出現 EOS 才結束,所以被稱作詞同步(word synchronized)模型。

帶你讀論文 | 端到端語音識別模型圖4:Transducer 轉移矩陣
端到端語音識別最佳化

有了大致的模型結構之後,科研人員們又從不同的方面對端到端模型進行了最佳化。

資料增強

參考論文:SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition. INTERSPEECH 2019(Daniel S. Park, William Chan, Yu Zhang, Chung-Cheng Chiu, Barret Zoph, Ekin D. Cubuk, Quoc V. Le)

由於端到端模型需要大規模資料訓練,而很多場景並沒有那麼多的資料,因此資料增強演算法在端到端語音識別系統裡最近被多次研究。其中最著名的資料增強演算法為 Spec Augmentation。該方法簡單實用,可以被看作是一種用於頻譜的增強方法,來幫助神經網路學習有用的特徵。為了使模型更加魯棒,研究者採用了3種方法,對資料進行增強:

  • Time-warp: 可通俗理解為在梅尓譜中沿著時間軸把任意一幀向左或向右扭曲隨機距離。

  • Frequency mask:新增在頻率 f 的連續梅爾譜上,將 [f0, f0+f]mask。其中 f是一個統一的0到 F 的引數,f0 是選自 [0,v-f] 中的。v 則代表了梅爾頻譜圖的通道數量。

  • Time mask:新增在 t 的連續時間上,將譜圖 [t0,t0+t] 全部掩蓋掉。t 是一個0到 T 的均勻分佈。

這其中 Time mask 和 Frequency mask 對模型魯棒性的貢獻最大。

延遲最佳化

參考論文:Towards Fast and Accurate Streaming End-to-End ASR. ICCASP 2019(Bo Li, Shuo-yiin Chang, Tara N. Sainath, Ruoming Pang, Yanzhang He, Trevor Strohman, Yonghui Wu)

端到端模型由於模型小,不需要額外的語言模型,所以很容易部署到移動裝置之上。而在移動裝置上的語音場景往往需要一個延時非常小的語音識別模型。例如,當使用者說完“請為我查詢歌曲晴天”時,系統應該儘可能快的進行響應,壓縮延遲。迄今為止,有一系列工作對壓縮 Transducer 的延遲展開了研究。其中比較著名的是 Google 所提出的 Endpointer 和其對應的關於延遲的懲罰。Endpointer 可以當做 Transducer 模型的句子結束符 EOS,研究員們希望這個 EOS 可以儘早出現,然而過早的出現可能導致刪除錯誤,所以 Google 的研究員提出了 Early and Late Penalties 去建模 EOS 出現位置。

帶你讀論文 | 端到端語音識別模型

在公式中,首先需要知道 EOS 所出現的真實時刻,之後如果 EOS 早出現或者晚出現(允許晚 t_buffer)都要進行相應的懲罰。然而,此種方法往往會帶來對精度的損失,在語音識別任務中,往往更好的延遲會以犧牲精度為代價。

端到端語音識別對比

參考論文:On the Comparison of Popular End-to-End Models for Large Scale Speech Recognition. InterSpeech 2020(Jinyu Li, Yu Wu, Yashesh Gaur, Chengyi Wang, Rui Zhao, Shujie Liu)

在今年的 InterSpeech 的論文中,微軟亞洲研究院和微軟 Azure Speech 團隊的研究員們對比了主流的 E2E 模型,其中包括 Transformer 和 RNN 的結構對比,以及在流式場景下 Transducer 和流式 S2S 的框架對比,所有試驗均在超大規模資料集上進行。實驗的結論為,Transformer 模型比 RNN 模型效果稍好,而 Transducer 模型在流式場景下要好於流式的 S2S 模型。在此之後,研究員們在論文“Developing Real-time Streaming Transformer Transducer for Speech Recognition on Large-scale Dataset”中又探討了 RNN 和 Transformer 模型在 Transducer 的優劣比較,實驗結果表明,Transformer 在精度上要好於 RNN,在允許幾百毫秒的延遲時從精度、速度上都要好於 RNN。然而 Transformer 模型在0延遲時計算代價要遠遠大於 LSTM,需要良好的計算裝置才能支援實時執行。

相關文章