天天看點

簡明GMM-HMM語音識别模型

本文簡明講述GMM-HMM在語音識别上的原理,模組化和測試過程。這篇blog隻回答三個問題:

1. 什麼是?

2. GMM是神馬?怎樣用GMM求某一音素(phoneme)的機率?

3. GMM+HMM大法解決語音識别

首先聲明我是做視覺的不是做語音的,迫于**需要24小時速成語音。上網查GMM-HMM資料中文幾乎為零,英文也大多是paper。苦苦追尋終于貌似搞懂了GMM-HMM,本文結合最簡明的概括還有自己一些了解應運而生,如有錯誤望批評指正。

====================================================================

1. 什麼是?

簡明GMM-HMM語音識别模型

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

簡明GMM-HMM語音識别模型

2.2 GMM for state sequence 

每個state有一個GMM,包含k個高斯模型參數。如”hi“(k=3):

PS:sil表示silence(靜音)

簡明GMM-HMM語音識别模型

其中,每個GMM有一些參數,就是我們要train的輸出機率參數

簡明GMM-HMM語音識别模型

隻要已知了這些參數,我們就可以在predict(識别)時在給定input sequence的情況下,計算出一串狀态轉移的機率。如上圖要計算的state sequence 1->2->2機率:

簡明GMM-HMM語音識别模型

我們獲得observation是語音waveform, 以下是一個詞識别全過程:

1. 将waveform切成等長frames,對每個frame提取特征(e.g. MFCC), 

2.對每個frame的特征跑GMM,得到每個frame(o_i)屬于每個狀态的機率b_state(o_i)

簡明GMM-HMM語音識别模型

3. 根據每個單詞的HMM狀态轉移機率a計算屬于該詞的機率(如上圖最後一行);那個詞的HMM跑出來機率最大,就判斷這段語音屬于該詞

宏觀圖:

簡明GMM-HMM語音識别模型

(from Encyclopedia of Information Systems, 2002)

本文太過簡略,隻為科普。歡迎關注