言辭是行動的影子。 ——德謨克利特
你是否習慣在找尋手機的時候喊:嘿,Siri? 你打字不夠快嗎?用 Google 輸入法可以讓你用説的! 聽不懂外語的時候,是不是很希望能用手機即時翻譯呢?
以上這些功能和工具都是用語言來控制機器以完成目標事項,它們背後的技術就是自動語音辨識(Automatic Speech Recognition, ASR)。
ASR是以電腦自動將人類的語言内容轉換爲相應文字的一種技術。它的應用很廣泛,像是室内裝置控制、Siri、語音輸入法等等,這些都使得我們的生活更加便捷。尤其是在智慧型 3C 產品大量普及的現代,人們用聲音進行人機互動的需求看可以說是越來越高了。
本文參考2019年的一篇綜述論文[1],將簡單地介紹ASR的歷史,並著重描述最新的end-to-end技術。
目錄
- ASR簡史
- Pre-NN的ASR
- 基於HMM的ASR
- 端到端ASR
- ASR的未來
圖一,ASR的流變
如上圖所示,ASR的流變大致可以劃分3大部分,分別是應用神經網絡之前(下稱pre-NN)、應用神經網絡的HMM時代和最新的end-to-end時代。
ASR的應用最早可追溯到 100年 前,在 1922 年,有一款名爲 Radio Rex 的玩具狗,它聽到「Rex」的時候會從底座彈出來。Radio Rex 用聲碼器來實現語音辨識,被認爲是 ASR 最初的應用。
圖片引用自 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],能理解的詞匯量也較少。
1966年,Leonard E. Baum[4]等人基於馬可夫鏈(Markov chain)提出了隱藏式馬可夫模型(Hidden Markov Model,HMM)[5],用來從語音序列中提取音素(phonemes)。
一段語音中,將能被觀察到的語音序列 分割以後,表示為 個特徵向量,對應由個標簽(通常是字母、單字)組成的序列。HMM在給定語音序列的情況下求最有可能對應的標籤序列 :
如圖一所示,一個基於HMM的ASR模型大多按如下步驟進行:
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)。
由於 HMM-based 的模型的種種弊端,再加上深度學習技術的蓬勃發展,更多人開始關注並研究端到端模型(end-to-end)。End-to-end ASR 將特徵也交給模型去學習,語音訊號直接經由一個DNN模型輸出成文本,因此稱爲端到端(end-to-end)。
End-to-end ASR的流程大致如圖一所示,實際上各部分可能不會有明顯區分:
相較於基於HMM的模型,End-to-end ASR有以下特點:
在 HMM-based 的 ASR 模型中,語音資料需要先分段(同上文的幀),並且我們需要知道每一幀對應的音素作爲標簽才能訓練,而通常文本序列要比語音序列短,所以還會有同一個音素占用很多幀的情況,所以還需要對齊,整個過程是非常耗時耗力的。
End-to-end ASR 主要改善這個對齊的問題,根據對齊方式的不同,end-to-end 模型可分爲以下三類:
2006年,Alex Graves 等人提出了連接時序分類(Connectionist Temporal Classification, CTC)[9][10],在2014年提出了 RNN-CTC[11]。CTC 的流程如下:
CTC 中運用 path aggregation 的概念,包含以下兩個操作:
例如,我們有一段說「你好」的語音,標籤即 {nihao},那麽對一個長度為 的文本序列有音素個數 種可能的輸出,經過鄰近去重變成 {nihao} 的就是有效的 path。例如,假設 ,那{-nihao},{niihao},{nihaao},{ni-hao} 都是有效的 path,都可以通過上述操作得到 {nihao}。
CTC 本質上是一種損失函數,它用來衡量輸入資料經過神經網絡之後,和真實的輸出相差有多少,所以基於 CTC 的模型可以讓網絡在任意點進行標籤預測,而只要求標籤的總體順序正確,不需要預先分段對齊,因此節省了巨大的訓練成本。
但 CTC 不能學習到標籤中各序列之間的相互依賴關係,因爲它假設各序列是獨立的;此外,受限於它的對齊方式,CTC的輸出一定不會會比輸入長。
2012年,Alex Graves 提出的 RNN-Transducer[12] 用不一樣的方法解決基於 HMM 的 ASR 中的强制對齊問題。它包含 3 個子網絡,各自有自己的函數:
和 CTC 類似,RNN-Transducer 也使用了 blank 標籤對應沒有訊息的特徵幀;都計算所有可能路徑的概率,來聚合得到文本序列。RNN-Transducer 比較難訓練,而且可能會出現奇怪的結果。不過它沒有上述 CTC 的問題:它可以對輸出序列的依賴關係建模,也支持任意長度的輸出。
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模型。
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 模型的語言知識。