自動語音辨識 ASR 的前世今生


:
: 明明就 Yvette 
: 專業知識演算法

言辭是行動的影子。——德謨克利特

你是否習慣在找尋手機的時候喊:嘿,Siri?
你打字不夠快嗎?用語音輸入法可以讓你用説的!
聽不懂外語的時候,是不是很希望能用手機即時翻譯呢?

以上這些功能和工具都是用語言來控制機器以完成目標事項,它們背後的技術就是自動語音辨識(Automatic Speech Recognition, ASR)。

ASR是以電腦自動將人類的語言内容轉換爲相應文字的一種技術。它的應用很廣泛,像是室内裝置控制、Siri、語音輸入法等等,這些都使得我們的生活更加便捷。尤其是在智慧型 3C 產品大量普及的現代,人們用聲音進行人機互動的需求看可以說是越來越高了。

本文參考2019年的一篇綜述論文[1],將簡單地介紹ASR的歷史,並著重描述最新的end-to-end技術。

目錄

  • ASR簡史
    - Pre-NN的ASR
    - 基於HMM的ASR
    - 端到端ASR
  • ASR的未來

ASR簡史


圖一,ASR的流變

如上圖所示,ASR的流變大致可以劃分3大部分,分別是應用神經網絡之前(下稱pre-NN)、應用神經網絡的HMM時代和最新的end-to-end時代。

Pre-NN的ASR

ASR的應用最早可追溯到 100年 前,在 1922 年,有一款名爲 Radio Rex 的玩具狗,它聽到「Rex」的時候會從底座彈出來。Radio Rex 用聲碼器來實現語音辨識,被認爲是 ASR 最初的應用。

Radio Rex
圖二,玩具狗 Radio Rex,圖片引用自A New Yorker State of Mind

1952年,AT&T 貝爾實驗室跟蹤語音中的共振峰,開發了 Audrey 語音辨識系統,該系統能夠辨識用英文說的0~9的 10 個英文數字,正確率達 98%。

1966年,日本電信電話公社的 S. Saito 和 F. Itakura 描述了一種自動音素識別的方法,稱爲線性預測編碼(Linear Predictive Coding,LPC)[2],這種方法第一次使用了針對語音編碼的最大似然估計實現。1968 年 Vintsyuk 等人則提出了動態時間規整(Dynamic Time Warp,DTW)[3],它使用時間序列中所有相似點之間的距離的和歸整路徑距離(Warp Path Distance),來衡量兩個時間序列之間的相似性。

這兩個技術的出現大大加速了 ASR 的發展進程。但這階段的 ASR 只能辨識特定説話者的聲音,且只能辨識一個單字或單一音節[1:1],能理解的詞匯量也較少。

基於 HMM 的 ASR

1966年,Leonard E. Baum[4]等人基於馬可夫鏈(Markov chain)提出了隱藏式馬可夫模型(Hidden Markov Model,HMM)[5],用來從語音序列中提取音素(phonemes)。

一段語音中,將能被觀察到的語音序列 X={x1,...,xT}分割以後,表示為 T個特徵向量,對應由N個標簽(通常是字母、單字)組成的序列L={l1,...,lN}。HMM在給定語音序列X的情況下求最有可能對應的標籤序列 L:

如圖一所示,一個基於HMM的ASR模型大多按如下步驟進行:

  1. 用聲學模型(acoustic model)提取語音輸入的特徵,常見的特徵如梅爾頻率倒譜系數 (Mel-Frequency Cepstral Coefficients,MFCCs)[6]
  2. 將特徵交由一個解碼器處理,解碼器可分爲以下兩個模型:
    • 發音模型(pronunciation model),將音素序列和詞庫對比,產生可能對應的單詞。該詞庫一般由人類語言學家建立。
    • 語言模型(language model)利用概率分佈來辨識由單詞所組成的合理的文字序列(sequence)。
  3. 輸出文本内容

ASR從此由原先的模板匹配轉向基於統計模型的辨識,隨後便開始有了許多基於 HMM 的 ASR 模型的研究,研究人員們針對 HMM-based 模型的 3 各模組做了各種優化。

1988年,李開復等人基於 HMM 實現了第一個大詞彙量語音辨識 系統Sphinx[7],該系統使用高斯混合模型(Gaussian Mixture Model,GMM)對 HMM 的狀態觀察值進行建模,從而可以辨識長的語音序列。2011,Yu Dong 等人結合深度神經網絡(Deep Neural Network,DNN)提出了HMM-DNN模型[8],它相比於HMM-GMM有更好的表現。其中,GMM和DNN是兩種用來計算HMM隱藏狀態的輸出概率的方法。

然而,基於HMM的ASR模型的訓練過程通常十分複雜,三個模組都用不同的資料集、訓練方式來單獨訓練,無法用同一個指標來最佳化;此外,三個模組相互獨立訓練是出於條件獨立性假設,而沒有考慮到它們之間、音素與音素之間、單字與單字之間的關係,比較不符合大詞彙連續語音辨識(Large Vocabulary Continuous Speech Recognition,LVCSR)。

端到端ASR(end-to-end)

由於 HMM-based 的模型的種種弊端,再加上深度學習技術的蓬勃發展,更多人開始關注並研究端到端模型(end-to-end)。End-to-end ASR 將特徵也交給模型去學習,語音訊號直接經由一個DNN模型輸出成文本,因此稱爲端到端(end-to-end)。

End-to-end ASR的流程大致如圖一所示,實際上各部分可能不會有明顯區分:

  1. encoder 提取語音序列的特徵
  2. aligner 將特徵序列與目標文本序列對齊
  3. decoder 最終解碼輸出文本

相較於基於HMM的模型,End-to-end ASR有以下特點:

  • 將多個模組用一個網絡聯合訓練,使用同一個評價指標更容易找到全局最優解
  • 直接從聲音輸出成文字,不需要額外的文本處理模型
  • 不要求語音序列與標簽序列一一對齊

在 HMM-based 的 ASR 模型中,語音資料需要先分段(同上文的幀),並且我們需要知道每一幀對應的音素作爲標簽才能訓練,而通常文本序列要比語音序列短,所以還會有同一個音素占用很多幀的情況,所以還需要對齊,整個過程是非常耗時耗力的。

End-to-end ASR 主要改善這個對齊的問題,根據對齊方式的不同,end-to-end 模型可分爲以下三類:

基於 CTC 的 end-to-end 模型

2006年,Alex Graves 等人提出了連接時序分類(Connectionist Temporal Classification, CTC)[9] [10],在2014年提出了 RNN-CTC[11]。CTC 的流程如下:

  1. encoder將語音序列 X={x1,...,xT映射到特徵序列 F={f1,...,fT}
  2. 用softmax將特徵序列 F={f1,...,fT}轉化為一個概率分佈序列Y={y1,...,yT}
  3. 計算在給定語音序列的情況下,任意文本序列 π的條件概率為

CTC 中運用 path aggregation 的概念,包含以下兩個操作:

  • 對於沒有訊息的特徵幀,引入了 blank 標籤來表示
  • 對於相鄰的相同的音素,應用了臨近去重的方法去重

例如,我們有一段說「你好」的語音,標籤即 {nihao},那麽對一個長度為 N 的文本序列有 種可能的輸出,經過鄰近去重變成 {nihao} 的就是有效的 path。例如,假設 N=6,那{-nihao},{niihao},{nihaao},{ni-hao} 都是有效的 path,都可以通過上述操作得到 {nihao}。

CTC 本質上是一種損失函數,它用來衡量輸入資料經過神經網絡之後,和真實的輸出相差有多少,所以基於 CTC 的模型可以讓網絡在任意點進行標籤預測,而只要求標籤的總體順序正確,不需要預先分段對齊,因此節省了巨大的訓練成本。

但 CTC 不能學習到標籤中各序列之間的相互依賴關係,因爲它假設各序列是獨立的;此外,受限於它的對齊方式,CTC的輸出一定不會會比輸入長。

基於 RNN-Transducer 的 end-to-end 模型

2012年,Alex Graves 提出的 RNN-Transducer[12] 用不一樣的方法解決基於 HMM 的 ASR 中的强制對齊問題。它包含 3 個子網絡,各自有自己的函數:

  • Transcription network (F(x)) 對應為 encoder,起到聲學模型的作用,同 CTC 的 encoder
  • Prediction network(P(y,g)) 對應為 decoder,起到語言模型的作用,它將隱藏狀態表示為,輸出標籤為u[1,N]N 為標籤長度,計算過程表示爲:
  • joint network (J(f,g)) 對應 aligner,將輸入輸出的序列對齊,位置u 上的標籤分佈表示為
    其中

和 CTC 類似,RNN-Transducer 也使用了 blank 標籤對應沒有訊息的特徵幀;都計算所有可能路徑的概率,來聚合得到文本序列。RNN-Transducer 比較難訓練,而且可能會出現奇怪的結果。不過它沒有上述 CTC 的問題:它可以對輸出序列的依賴關係建模,也支持任意長度的輸出。

基于 Attention 的 end-to-end 模型

2014 年,注意力機制(Attention Mechanism)被提出用來做機器翻譯,注意力機制(Attention Mechanism),是指使用一個注意力向量來表示所預測的詞與其他詞的相關程度,對 sequence 的特徵進行加權描述,即一個提取重點的概念。因爲基於 Attention 的翻譯模型效果不錯,所以 2016 年有了基於 Attention 的 end-to-end 模型[13]。它本質上是一個翻譯模型,也不需要資料對齊,對長文本有不錯的效果。

Dong Wang 等人在論文[1:2]中也對上述三個方法從延遲(delay)、計算複雜度(computation complexity)、語言模型(language model ability)、訓練複雜度(training difficulty)、辨識準確率(recognition accuracy)五個方面進行比較,如下圖。

三種方法效果比較(截圖自論文)
圖三,三種方法效果比較(截圖自論文)。

End-to-end ASR 還使得串流(streaming)辨識成爲可能,串流辨識是指即時地根據語音輸出文本的技術。只有基於 CTC 和 RNN-Transducer 的 end-to-end 模型可以應用於串流(streaming),因爲它們不依賴後續的解碼結果,而基于 Attention 的 end-to-end 模型一般不行,因爲它要求全部語料都編碼完後,才能進行辨識、解碼。這一點在它們的延遲程度中也可以看出來(如上圖)。

本文最開始提到的Apple公司的Siri就是用end-to-end的ASR模型,再結合圖神經網絡(GNN)[15]所實現的語音助手,而Google的Gboard則使用了end-to-end的架構結合RNN-T傳感器[16],有效減少了延遲。此外,目前市面上很暢銷的旅行口譯機基本上是基于 Attention 機制實現的ASR模型。

ASR 的未來

End-to-end ASR 的效果已經超越了 HMM-GMM模 型,但對比 HMM-DNN 模型還只是堪堪能比肩而已,有時候甚至會有更差的效果,但它的一個很大的優勢是可以串流辨識。online streaming 要求延遲小,相應地就要犧牲一定的辨識度,因此,如何在保證高辨識準確度的情況下有效降低延遲,這是目前 ASR 研究的一大方向。

此外,基於 HMM 的 ASR 模型優勢在於它有額外的語言模型來提供充沛的語言學知識,但 End-to-end ASR 的所有語言知識都是從訓練資料所得,所以要用 End-to-end ASR 做多領域語音的辨識就不適合。因此,另一個可能的研究方向是,如何能在保有 end-to-end 的結構優勢的情況下,提升 ASR 模型的語言知識。

參考資料


  1. An Overview of End-to-End Automatic Speech Recognition ↩︎ ↩︎ ↩︎

  2. A statistical method for estimation of speech spectral density and formant frequencies ↩︎

  3. Speech discrimination by dynamic programming ↩︎

  4. Leonard E. Baum ↩︎

  5. Statistical Inference for Probabilistic Functions of Finite State Markov Chains ↩︎

  6. 梅爾頻率倒譜係數 ↩︎

  7. On large-vocabulary speaker-independent continuous speech recognition ↩︎

  8. Context-dependent pre-trained deep neural networks for
    large-vocabulary speech recognition
    ↩︎

  9. Connectionist temporal classification: Labelling
    unsegmented sequence data with recurrent neural networks
    ↩︎

  10. Connectionist temporal classification: Labelling
    unsegmented sequence data with recurrent neural networks
    ↩︎

  11. Recurrent models of visual attention ↩︎

  12. Sequence Transduction with Recurrent Neural Networks ↩︎

  13. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition ↩︎

  14. An Introduction to
    Automatic Speech
    Recognition (ASR)
    ↩︎

  15. Multi-task Learning for Speaker Verification and Voice Trigger Detection ↩︎

  16. An All-Neural On-Device Speech Recognizer ↩︎

Back