语音文字识别基本原理和经典综述
目錄
- 0 引言
- 1 發展歷程
- 2 基本原理
- 3 語言模型
- 3.1 n-gram
- 3.2 RNN
- 4 聲學模型的傳統模型
- 5 聲學模型的深度學習模型
- 5.1 DNN
- 5.2 RNN和LSTM
- 6 聲學模型的端到端模型
- 6.1 CTC
- 6.2 Seq2Seq
0 引言
這是北理計算機研究生的大數據課程的匯報作業,我負責這一部分的講述,故通過整理這個博客來梳理一些下周一的講演思路。
1 發展歷程
2 基本原理
我錄了一句自己說這句話時的音頻,將這一段音頻轉化為聲音的波形圖就如下圖所示。
第一個波峰就是“嗨”字,后面的三個緊湊的波峰也就是剩下的三個字,這很簡單。
而對這樣一個波形圖,為進行語音的識別需要經歷三個大的步驟,分別是
- 預處理
- 聲音特征提取
- 建立聲學模型和語言模型
在預處理階段,首先要做的事情叫做VAD(Voice Activity Detection),翻譯過來就是語音端點檢測或者說是靜音抑制。
指的是從聲音信號流里識別和消除長時間的靜音期。
圖中演示的是通過短時能量(綠)和過零率(紅)來切割下“嗨大家好”聲音的首尾空白。
下一步預處理的操作就是分幀。
概念其實很簡單,就是把剛剛的聲音波形圖分成一小段一小段,值得注意的是分幀時是要有交疊的;正因為如此,分幀后再展開的聲音波形圖比原波形圖要長而且出現鋸齒。
預處理階段最重要的結束之后,再下一步就是聲音特征的提取。
如圖所示的就是將之前我說的那句“嗨,大家好”轉化成MFCC特征的矩形方陣。具體轉化過程會更加復雜一些,包括但不限于短時傅里葉變換、取倒譜等等。這個程序是github上找到的AcousticFeatureExtraction-master,對于聲音特征的提取做的很好。
基本的事情處理結束之后,最重要也是最復雜的一步就是聲學模型和語言模型的建模了。
在這一部分,只簡單介紹一下這倆模型什么意思,后續會詳細說明不同的模型。
如上圖的公式所示,其中W表示文字序列,Y表示語音輸入。在語音文字識別當中,就是要把語音輸入轉化為對應的文字序列;而將這句話轉化成數學表達,就是(1)式中的條件概率。將(1)通過貝葉斯定理轉化成(2),又由于(2)中分母的概率對整個式子影響不大,所以約等于不考慮分母,這樣就得到了(3)式。
而(3)式當中的兩個,就分別是聲學模型和語言模型。
聲學模型是對聲學、語音學、環境的變量、說話人性別、 口音等的差異的知識表示, 即給定文字之后發出這段語音的概率;而語言模型是對一組字序列構成的知識表示,即判定一個文字序列出現的概率。 聲學模型一般得到語音特征到音素的映射; 語言模型一般得到詞與詞、詞與句子的映射。
3 語言模型
首先說明一下較為好說的語言模型。
仍以剛才這段“嗨大家好”舉例。
當通過聲學模型建立出聲音對應的發音音素之后,語言模型就要考慮這樣一段發音因素對應的文字最大的概率是什么文字。比如說剛出來“hai”之后,對應的就是“嗨”,而不是“害”“還”“海”,因為在語言模型當中,單個“hai”對應“嗨”字的概率最大。其余的也同理。
更刁鉆一點,同音字問題也要通過語言模型去進行處理。
比如說這一段有名的《季姬擊雞記》。
為了處理這些問題,在這里介紹兩個語言模型。
3.1 n-gram
仍以這一段為例,對于“haidajiahao”,這一串詞是一個個詞組成的。好像是廢話,但總結成數學表示就是
T是由詞序列A1,A2,A3,…AnA1,A2,A3,…AnA1,A2,A3,…An組成的,即使得
P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)最大
P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An?1)P(T)=P(A1A2A3…An)=P(A1)P(A2|A1)P(A3|A1A2)…P(An|A1A2…An-1)P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An?1)
而最后一行的公式在實際運算中顯然是過于苦難和繁瑣了。因此,我們要引入馬爾科夫假設。
馬爾科夫假設:一個item的出現概率,只與其前m個items有關
舉個例子來說明的話就是,假設你一直在轉圈(原地改變方向),那么你下一刻所處什么方向,只與你現在在什么方向有關,與之前的積累量無關。
上面那個圈圈圖說明的就是,一個狀態到另一個狀態建立這種概率連接,它能否從一個狀態轉移到另一個狀態只與當前狀態有關,這樣就不需要為之前眾多的變化而費心了。
在語言模型中,以2-gram舉例說明,之前的概率就可以簡化為
P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An?1)P(T)=P(A1)P(A2|A1)P(A3|A2)…P(An|An-1)P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An?1)
3.2 RNN
RNN(循環神經網絡)也是常用的一個語言模型。當把詞依次輸入到網絡中,每輸入一個詞,循環神經網絡就輸出截止到目前為止下一個最可能的詞。在此不詳細展開了。
4 聲學模型的傳統模型
傳統的聲學模型一般基于GMM(高斯混合模型)和HMM(隱馬爾可夫模型)。
GMM指的是將多個正態分布(高斯分布)的數據進行混合的一種概率模型。在語音識別中,可以通過高斯混合模型將先前得到的聲音特征進一步轉化為聲音的狀態。
隱馬爾可夫模型是統計模型,它用來描述一個含有隱含未知參數的馬爾可夫過程。馬爾可夫過程之前提到過,就是當下狀態只與前一個或幾個狀態有關,與再往前的狀態無關。之前得到的狀態需要通過HMM來判定是否保留或跳轉。
圖中的viterbi是一種找尋有向無環圖中最短路徑的算法。聲音特征再處理得到的狀態會構成一個龐大的狀態網絡,而利用viterbi算法就可以方便的找到狀態網絡中的最短路徑,也就是最終的文字序列。
5 聲學模型的深度學習模型
5.1 DNN
DNN實際上就是用DNN替換了GMM來對輸入語音信號的觀察概率進行建模。與GMM采用單幀特征作為輸入不同,DNN將相鄰的若干幀進行拼接來得到一個包含更多信息的輸入向量。
相比于GMM-HMM,DNN-HMM具有如下優點:
- DNN不需要對聲學特征所服從的分布進行假設
- DNN由于使用拼接幀,可以更好地利用上下文的信息
- DNN的訓練過程可以采用隨機優化算法來實現,可以接受更大的數據規模
5.2 RNN和LSTM
語音的協同發音現象說明聲學模型需要考慮到語音幀之間的長時相關性,盡管上文中DNN-HMM通過拼幀的方式對上下文信息進行了建模,但是畢竟拼接的幀數有限,建模能力不強,因此引入了RNN(循環神經網絡)增強了長時建模的能力,RNN隱層的輸入除了接收前一個隱層的輸出之外,還接收前一時刻的隱層輸出作為當前輸入,通過RNN的隱層的循環反饋,保留了長時的歷史信息,大大增強了模型的記憶能力,語音的時序特性通過RNN也得到了很好的描述。但是RNN的簡單結構在模型訓練進行BPTT(Backpropagation Through Time)時很容易引起梯度消失/爆炸等問題,因此在RNN的基礎上引入了LSTM(長短時記憶模型),LSTM是一種特殊的RNN,通過Cell以及三個門控神經元的特殊結構對長時信息進行建模,解決了RNN出現的梯度問題,實踐也證明了LSTM的長時建模能力優于普通RNN。
6 聲學模型的端到端模型
6.1 CTC
CTC(Connectionist temporal classification )翻譯過來叫做連接時序分類,主要用于處理序列標注問題中的輸入與輸出標簽的對齊問題。
傳統的語音識別的聲學模型訓練,對于每一幀的數據,需要知道對應的label才能進行有效的訓練,在訓練數據之前需要做語音對齊的預處理。采用CTC作為損失函數的聲學模型序列,不需要預先對數據對齊,只需要一個輸入序列和一個輸出序列就可以進行訓練。CTC關心的是預測輸出的序列是否和真實的序列相近,而不關心預測輸出序列中每個結果在時間點上是否和輸入的序列正好對齊。
CTC建模單元是音素或者字,因此它引入了Blank。對于一段語音,CTC最后輸出的是尖峰的序列,尖峰的位置對應建模單元的Label,其他位置都是Blank。
6.2 Seq2Seq
Sequence-to-Sequence方法原來主要應用于機器翻譯領域。給定序列 X,輸出 Y,最直白的一種辦法就是延伸在機器翻譯中所使用的 Seq2Seq 模型。2017年,Google將其應用于語音識別領域,取得了非常好的效果,將詞錯誤率降低至5.6%。
如圖所示,Google提出新系統的框架由三個部分組成:Encoder編碼器組件,它和標準的聲學模型相似,輸入的是語音信號的時頻特征;經過一系列神經網絡,映射成高級特征henc,然后傳遞給Attention組件,其使用henc特征學習輸入x和預測子單元之間的對齊方式,子單元可以是一個音素或一個字。最后,attention模塊的輸出傳遞給Decoder,生成一系列假設詞的概率分布,類似于傳統的語言模型。
總結
以上是生活随笔為你收集整理的语音文字识别基本原理和经典综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电阻、电容、电感、半导体器件的失效分析!
- 下一篇: ERROR: librtmp not f