隐马尔可夫模型与语音识别
文章目錄
- 前言
- 隱馬爾可夫(HMM)
- 馬爾可夫鏈
- 隱馬爾可夫
- HMM中的語音識別(孤立詞)
- HMM 語音識別過程
- GMM
- 總結
- 參考文獻
前言
隱馬爾科夫鏈結合語言識別,在細節上,涉及到的知識挺多,沒有一定的時間投入難以很好的去把握。這篇文章只想借著自己的一小段時間學習,從整體上,理一下HMM在ASR的應用過程,不想去探究其中的具體細節。文中的圖片基本截取自參考文獻中的內容。隱馬爾可夫(HMM)
馬爾可夫鏈
馬爾可夫鏈描述了當前狀態與下一個狀態的轉換關系,如圖中所示,天氣有三種狀態,晴天,陰天,下雨。
馬爾可夫鏈兩個重要參數,初始狀態概率,狀態轉移矩陣。有了這兩個參數,我們可以預測后續任意一天的天氣概率了。可以看到馬爾可夫鏈的狀態轉移只與當前狀態有關,與之前的狀態沒有關系。馬爾可夫鏈中,所有信息都是可觀測的,因此,它的計算相對簡單。
隱馬爾可夫
將天氣作為隱變量, 現在我們只能觀測到一個人連續三天的狀態分別是 做家務-》逛街-》戶外運動。
假設此人的習慣(發射矩陣或者狀態輸出矩陣)是
{晴天:0.1 做家務 0.4 逛街 0.5 戶外運動}
{陰天:0.2 做家務 0.5 逛街 0.3 戶外運動}
{下雨:0.7 做家務 0.2 逛街 0.1 戶外運動}
,如何去估計這三天最可能的天氣。 我們只需估計初始狀態變量,有了初始概率π\piπ,狀態轉移矩陣A,發射矩陣B,我們已經可以計算出最大概率的天氣序列,然而,世界并不是那么美好,我們需要計算A,B
為了更好理解隱馬爾可夫模型,再舉一個隱馬爾可夫的例子
依照特定的概率轉移矩陣,從不同杠里面抓取球,我們所觀測到只有球的顏色。現在想知道的是從缸里面抓球的順序。如果我們知道每個杠中的球的分布概率,也就是知道了不同狀態下,球的輸出概率,即發射矩陣,同時,我們也知道缸的轉移概率,也就是概率轉移矩陣,并滿足所謂的齊次性。我們可以計算出,下圖輸出序列最大可能的的狀態。
最大的問題在于A和B是我們自己需要計算的部分,這是HMM最大的難點。
HMM中的語音識別(孤立詞)
這里只想理清孤立詞的識別問題,一段話的翻譯,需要借助語言模型,那目測也是一個復雜的問題。
第一個問題回答了,給定語音和模型,得到了模型輸入該語音的概率,從而解決了語音識別的問題。
第二個問題解決了最佳對齊的方式。語音的每一個音素時間并不是固定的,人說話有快又慢。所以即使是同一個詞的發音,在相同采樣頻率下,也完全可能得到不同長度的特征序列,即如何得到最佳狀態序列。以上面的缸為例,知道輸出的球顏色,判斷是從哪些缸取球的概率最大。
第三個問題是,模型訓練問題,GMM+HMM,主要是解決A,B的估計問題,是難點之處。
那么在語音中觀測序列和隱藏狀態究竟是什么呢?要完全把握細節,估計得自己重頭實現一遍,這絕對得耗費一定得精力。
從一些資料里面得出,隱藏狀態的意義并不明顯,就像因子分析中的因子一樣,其物理意義具有一定的隨意性。觀測序列是分幀信號提取的特征向量,在建立HMM的過程里面有許多策略,下面按照結合參考文獻中資料,展示HMM語音識別(孤立詞)的完整過程。
HMM 語音識別過程
語音識別過程主要包括信號采集,特征提取,解碼,輸出識別結果,毋庸置疑,最復雜的部分存在于解碼器這里。聲學模型主要是解決孤立詞,涉及到連續語音,它解決孤立詞的發聲會更加準確。
對于孤立詞識別,通常首先要做的端點檢測,就是把連續的語音信號中,可能是一個詞的語音信號單獨提取出來,然后做分幀,加窗等,進行特征提取,使之變為觀測序列。DCT起到了一個數據壓縮作用,將三角濾波后的信號壓縮為低維的DCT系數。DCT可以看作一個特殊的DFT,其系數的物理意義可以看作對應余弦波的能量或者說幅度。
如上圖,MFCC序列已經變為13維的特征向量,實際上,這只是經典做法,MFCC的變種不計其數,足以說明,以前的人們對它的重視。但就像 “語音識別技術的前世今生”里面說的,隨著深度學習網絡興起,借著其強大的特征學習能力,以及現代計算機的強大算力這股東風,MFCC已經江河日下。到這步為止,最早的語音識別工作已經可以展開,如有 相當古老。的DTW ,動態時間規整,有些翻譯為動態彎
這里的一個模板,指的是一個孤立詞的模板,一個豎條代表 一個觀測信號,即一幀,可以對應于一個MFCC特征向量。人的發音有快又慢,一個詞中的不同音素可能有快又慢,另外,孤立詞端點切割時,切割點也會有所變化,導致,待識別語音和模板之間,不可能完全匹配。DTW借助動態規劃法,利用對齊這一種思想,找出待識別語音信號和模板之間的最小距離。通常做法是,為系統內有限的每一個孤立詞建立若干模板,待識別的語音與這些模板進行一一比較,得到最小的距離,便是待識別語音的標簽。
GMM
通常來說,一個孤立詞,在訓練集中會對應多個模板,DTW的處理方法可能是無差別對待,通過遍歷,找到一個與待識別語音最匹配的模板。對于GMM的一個任務是如何將一個孤立詞對應的多個模板進行混合高斯分布擬合。我沒有具體做過GMM,只能從學習資料當中談談自己理解。首先,對一個孤立詞的建模過程是,將所對應的所有模板進行狀態劃分,這里面可以用k-mean方法,進行聚類。設定好狀態的數量M以及高斯混合數量K,對于同一個狀態的所有特征向量,建立高斯混合模型(EM算法)。這里的狀態,我的理解是按照順序的,從左到右,不會返回到前面的狀態。需要注意的是,這個混合高斯模型是針對狀態的,每一個狀態有一個單核高斯混合模型,直觀層面來看,這些模型疊加一起可以得到混合高斯。給定一個特征向量,就可以給出這個特征屬于該狀態的概率。 通過高斯模型,我們可以得到概率發射矩陣,因為我們已經知道各個狀態下面的事件概率。事實上,這個狀態劃分是迭代進行的,屬于EM算法的一部分。
我們可以看到,上圖把一個孤立詞對應的所有幀數據劃分為3個狀態,每個狀態對應一個獨立的高斯分布。由于這個狀態不可觀測,只是隱變量,所以,用高斯混合模型建模似乎是一個好而且自然的選擇。
GMM并沒有涉及到狀態的概率轉移問題,從直覺來看,GMM的表達的能力和精度相對有限。
"
在語音處理中,一個word由若干phoneme(音素)組成;
每個HMM對應于一個word或者音素(phoneme)
一個word表示成若干states,每個state表示為一個音素
"
事實上,為了更好的表達音素,一個state顯然是不夠的,但為了簡化問題,還是把state當作類似音素的狀態即可。在EM算法做估計狀態以及狀態轉移矩陣,隱藏狀態可能沒有明確的物理意義。
在給定隱狀態的情況下面,GMM建立了觀測信號與狀態之間的關系,即發射矩陣,HMM則完成了概率轉移矩陣的計算。如何確定隱狀態,確定發射矩陣和狀態隱狀態是困難的部分,其他還是比較簡單,如下圖的識別過程
總結
紙上得來終覺淺,GMM+HMM有許多細節仍然有待厘清,作為了解就先到這里吧。
在語音識別中,HMM作為一個序列分類器,將觀察序列,轉為一個潛在狀態序列,并計算其輸出該觀察序列的概率,由此找到最佳的匹配模型。GMM將每幀的特征序列進行建模,得到幀屬于某個狀態的概率。HMM計算得到概率轉移概率,兩者可以統一的結合到基于EM的Baum-Welch算法,不斷迭代去尋找最優的A,B參數。
參考文獻
總結
以上是生活随笔為你收集整理的隐马尔可夫模型与语音识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenEmu:一个让你在Mac上爽快体
- 下一篇: [phaser3入门探坑]使用phase