本文簡明講述GMM-HMM在語音識别上的原理,模組化和測試過程。這篇blog隻回答三個問題:
1. 什麼是?
2. GMM是神馬?怎樣用GMM求某一音素(phoneme)的機率?
3. GMM+HMM大法解決語音識别
首先聲明我是做視覺的不是做語音的,迫于**需要24小時速成語音。上網查GMM-HMM資料中文幾乎為零,英文也大多是paper。苦苦追尋終于貌似搞懂了GMM-HMM,本文結合最簡明的概括還有自己一些了解應運而生,如有錯誤望批評指正。
====================================================================
1. 什麼是?
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9kEWa1GbtJWdW1WYqp0VZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM1IjM0IDN3EDOyUDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
ANS:一個有隐節點(unobservable)和可見節點(visible)的馬爾科夫過程(見)。
隐節點表示狀态,可見節點表示我們聽到的語音或者看到的時序信号。
最開始時,我們指定這個HMM的結構,訓練HMM模型時:給定n個時序信号y1...yT(訓練樣本), 用MLE(typically implemented in EM) 估計參數:
1. N個狀态的初始機率
2. 狀态轉移機率a
3. 輸出機率b
--------------
在語音進行中,一個word由若幹phoneme(音素)組成;
每個HMM對應于一個word或者音素(phoneme)
一個word表示成若幹states,每個state表示為一個音素
---------------------------------------------------------------------
2.1 簡單了解混合高斯模型就是幾個高斯的疊加。。。e.g. k=3
2.2 GMM for state sequence
每個state有一個GMM,包含k個高斯模型參數。如”hi“(k=3):
PS:sil表示silence(靜音)
其中,每個GMM有一些參數,就是我們要train的輸出機率參數
隻要已知了這些參數,我們就可以在predict(識别)時在給定input sequence的情況下,計算出一串狀态轉移的機率。如上圖要計算的state sequence 1->2->2機率:
我們獲得observation是語音waveform, 以下是一個詞識别全過程:
1. 将waveform切成等長frames,對每個frame提取特征(e.g. MFCC),
2.對每個frame的特征跑GMM,得到每個frame(o_i)屬于每個狀态的機率b_state(o_i)
3. 根據每個單詞的HMM狀态轉移機率a計算屬于該詞的機率(如上圖最後一行);那個詞的HMM跑出來機率最大,就判斷這段語音屬于該詞
宏觀圖:
(from Encyclopedia of Information Systems, 2002)
本文太過簡略,隻為科普。歡迎關注