BLOG + NEWS

HOME BLOG
自動語音辨識 ASR 的前世今生
BLOG・Speech 語音
SHARE
自動語音辨識 ASR 的前世今生
自動語音辨識 ASR 的前世今生
28
SEP
2020
11063
Yvette


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

 

你是否習慣在找尋手機的時候喊:嘿,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的流變

 

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

 

Pre-NN的ASR

 

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

 

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={x_1, ..., x_T} 分割以後,表示為 T 個特徵向量,對應由N個標簽(通常是字母、單字)組成的序列L={l_1, ..., l_N}。HMM在給定語音序列X的情況下求最有可能對應的標籤序列 Lhat{L}=argmax(p(L|X))

 

如圖一所示,一個基於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={x_1, ..., x_T}映射到特徵序列F={f_1, ..., f_T}
  2. 用softmax將特徵序列 F={f_1, ..., f_T}轉化為一個概率分佈序列Y={y_1, ..., y_T}
  3. 計算在給定語音序列的情況下,任意文本序列 pi 的條件概率為p(pi|X)=Pi^{T}_{t=1}{y_t^{pi t}}

 

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

 

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

 

例如,我們有一段說「你好」的語音,標籤即 {nihao},那麽對一個長度為 N 的文本序列有音素個數^{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,起到語言模型的作用,它將隱藏狀態表示為 h_u,輸出標籤為g_uuin [1,N]N 為標籤長度,計算過程表示爲
h_u=H(W_{ih}l_{u-1}+W_{hh}h_{u-1})+b_h

g_u=W_{h0}h_u+b_0
 
 
  • joint network (J(f,g)) 對應 aligner,將輸入輸出的序列對齊,位置 u 上的標籤分佈表示為
p(kin V'|t,u)=frac{e(k,t,u)}{sum_{k'in V'}e(k',t,u)}

其中
 
e(k,t,u)=exp(f_t^k+g_u^k)

 

和 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)五個方面進行比較,如下圖。

 

三種方法效果比較(截圖自論文[1])
三種方法效果比較(截圖自論文)

 

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 模型的語言知識。

SHARE