隱馬爾可夫模型與語音識別

前言

隱馬爾科夫鏈結合語言識別,在細節上,涉及到的知識挺多,沒有一定的時間投入難以很好的去把握。這篇文章只想藉着自己的一小段時間學習,從整體上,理一下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參數。

參考文獻

  1. https://zhuanlan.zhihu.com/p/37847722
  2. https://zhuanlan.zhihu.com/p/35938807
  3. 語音識別技術的前世今生
  4. https://blog.csdn.net/Tonywu2018/article/details/84678122
  5. https://www.jianshu.com/p/16fc3712fdf6
  6. https://zhuanlan.zhihu.com/p/22482625
  7. https://pages.harryfyodor.xyz/2017/11/05/gmm-hmm-model/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章