語音識別基本架構
- W表示文字序列,Y表示語音的輸入
- 那麼根據公式1,表示語音識別的目標是 在給定語音輸入的情況下,找到可能性最大的文字序列
- 根據貝葉斯公式,可以得到公式2,分母P(Y)表示出現這條語音的概率,對於我們的求解目標來說是一個常數,所以求解時忽略,得到公式3
- 公式3的P(Y|W)表示給定一個文字序列而出現這條音頻的概率,成爲聲學模型。P(W)表示出現這個文字序列的概率,成爲語言模型。
- 無論是傳統的方法,或者深度學習網絡的方法也是,目前的語音識別在架構上都沒有脫離上面的公式。也就是說都是包括 聲學模型和語言模型
聲學模型 AM (Acoustic Model)
- 聲學模型是對聲音發聲的建模,能夠把語音輸入轉換成聲學表示的輸出,更準確的說是給出語音屬於某個聲學符號的概率。在英文中這個聲學符號可以是音節或者是更小的顆粒度音素(phone),在中文中這個聲學符號可以是聲韻母或者是顆粒度筒英文一樣小的音素。
CD-DNN-HMM模型
公式3的聲學模型表示爲下面的形式
- 上面的Q表示發音單位的序列。公式中,聲學模型最終轉換成了一個語音到發音序列,和一個發音序列到文字輸出序列的字典。
- 發音序列通常是音素。
- 公式4中的字典部分表示爲公式5,如下:
- 根據上面的推導和公式表示,聲學模型是一個描述語音和狀態之間轉換的模型
- 我們引入HMM假設:狀態是隱變量,語音是觀測值,狀態之間的跳轉符合馬爾科夫假設。
- 那麼聲學模型表示爲如下的公式:
- a是轉移概率,b是發射概率。如圖:
觀測概率通常用GMM或者DNN來描述,這就是CD-GMM-HMM架構或者CD-DNN-HMM架構的AM。
CD-DNN-HMM架構圖:
CTC模型
- 在基於CD-DNN-HMM架構的語音識別聲學模型中,訓練DNN通常需要幀對齊標籤。在GMM中,這個對齊操作是通過EM算法不斷迭代完成的。
- E-step:估計(重估)GMM參數
- M-step:使用BW(Baum-Welch算法)對齊
另外HMM假設一直受到詬病,知道RNN出現之後,使用RNN來對時序關係進行描述來取代HMM成爲熱潮。
隨着神經網絡優化技術的發展和GPU計算能力的不斷提升,最終使用RNN和CTC來建模實現end2end的聲學模型。
CTC Connectionist Temporal Classification,連接時序分類。達到的目標是直接將語音和相應的文字對應起來,實現時序問題的分類。
End-to-End 模型
End2End強大的建模能力,不需要像傳統架構一樣的進行細分,對於中文,不需要再輸出細分爲狀態、音素、聲韻母,而是直接輸入漢字。對於英文,輸出字母。
從這一點來說,神經網絡將聲學符號到字符串的映射關係也一併建模並且學習了出來,這部分是在傳統的框架中詞典所承擔的任務。傳統框架中有一個專門的建模單元叫做G2P (grapheme-to-phoneme)來處理集外詞(out of vacabulary,oov)的情況。而在神經網絡的結構中,不需要G2P,不需要詞典,沒有OOV,這樣全部都建模到一個神經網絡裏。
另外,在傳統的框架結構中,語音需要進行一系列的處理:
- 1.分幀
- 2.加窗
- 3.提取特徵(MFCC,Fbank,PLP)等等
而在基於神經網絡的AM中,通常使用更裸的Fbank特徵。在End2End的識別中,使用更簡單的特徵比如FFT也常見。
除此之外,End2End的AM已經帶有了LM的信息,它通過RNN在輸出序列上學習得到的,但是這個LM仍然較弱,如果外加一個更大的數據量的LM,解碼的效果會更好。因此End2End指AM部分,等到不需要用到LM的時候,纔是真正的End2End。
語言模型LM
語言模型的作用之一是消除多音字的問題,在AM給出發音序列之後,從候選的文字序列中找到概率最大的字符串序列。
LM還可以對AM的解碼做約束和重打分,讓最終的識別結果符合語法規則。目前最常見的還是基於N-gram的語言模型和基於RNN的語言模型。
參考