編者按:過去十年,得益於人工智慧與機器學習的突破、算法與硬/軟體能力的進步,以及擁有既多樣又大量的語音資料庫,用以訓練多參數的、大規模的語音識別與合成模型,使得語音處理技術獲得飛躍性進展。
隨著端到端神經網絡在機器翻譯、語音生成等方面的進展,端到端的語音識別也達到了和傳統方法可比的性能。不同於傳統方法將語音識別任務分解為多個子任務(詞彙模型,聲學模型和語言模型),端到端的語音識別模型基於梅爾語譜作為輸入,能夠直接產生對應的自然語言文本,大大簡化了模型的訓練過程,從而越來越受到學術界和產業界的關注。
本文將通過六篇論文,從建模方法、響應時間優化、數據增強等不同方面講解端到端語音模型的發展,並探討不同端到端語音識別模型的優缺點。
在講述語音識別建模之前,首先明確端到端語音識別的輸入和輸出。
輸入:目前端到端語音識別常用的輸入特徵為 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 模型有如下不同:
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,需要良好的計算設備才能支持實時運行。