經過前面的語音前置處理,ㄧ個音框產生一個 10 維的特徵向量,所有音框 的向量組成了該語音用來辨識的特徵値,接下來就是將特徵値輸入語音辨識平台 做最後的辨識。在此我們採用離散的隱藏式馬可夫模型(DHMM)[3][17],相較於 另一種技術類神經網路(ANN)[2][15-16],HMM 機率統計的原理比 ANN 更適合 用於變動長度的語音辨識,辨識率較不受說話快慢的影響,而 ANN 因為其架構 一決定即無法改變,需要對語音再做另外的處理以獲得相同數目的輸入,因此容 易被說話速度影響其辨識率。利用訓練的語音資料,我們可以對每個中文音節產 生一個對應的 HMM 語音模型,辨識時計算每個語音模型產生該語音的機率,機 率最高之模型為辨識的結果。
3.1 向量量化
在 DHMM 中,其觀察結果為一個有限的集合,而語音一連串音框的特徵向 量剛好可以對應到 DHMM 中的觀察序列,由於特徵向量為 10 維的實數向量,
其 10 維的實數向量空間為無窮大,為了將 10 維的向量對應到觀察結果集合中的 一類,我們需對向量做量化[1]的動作。
首先算出所有語音訓練樣本中每個音框的特徵向量,並計算出所有維度的最 大最小值,接著根據要分類的數目,隨機產生相同數目的特徵向量當作初始碼 簿,隨機產生的數值範圍則根據該維度的最大最小值為邊界,碼簿中的各向量代 表著不同的類別。取得初始碼簿後,將每個音框的特徵向量根據碼簿做分類,藉 由式(3.1),可以計算出該特徵向量和碼簿中第 k 個向量的距離dk,
∑
=
−
= 9
0
)2
( )
(
i
ki i
k v v V
d (3.1)
其中k表示碼簿中向量的編號,而i表示該向量中維度的索引,若要加快運算則 開根號可以省略,並不影響分類結果。算出碼簿中所有 後,即可將 v 歸類為 最小的那一類,重複上述步驟可將所有音框的特徵向量做出分類的動作。
dk dk
將所有音框分類後,根據每ㄧ類別內所有的特徵向量計算新的中心點,所有 新計算出來的中心點則取代舊的碼簿成為更新後的碼簿,式(3.2)為中心點的計算 公式,
∑
=
×
= x
n n
k v
V x
1
1 (3.2)
其中Vk為第 類新的中心點向量,k v為屬於第k類的特徵向量,x為歸類為第k類 的特徵向量數。藉由重複上述兩個分類和計算中心點的疊代動作,可對碼簿做訓 練,當碼簿不再變動時則代表碼簿已訓練完成。完成碼簿後即可根據碼簿對音框 的向量做量化,而語音的特徵値將從一連串的向量變成一連串的觀察代號以利後 續 HMM 的辨識。
3.2 隱藏式馬可夫模型
隱藏式馬可夫模型(以下簡稱 HMM)為一種雙重隨機過程,一串觀察結果,
其背後也有一串的隱藏的狀態轉移,此結構剛好可以用於描述語音的特性,一連 串的音框代表著一連串的觀察結果(如圖 3.1),而發聲的器官狀態變化對應到隱 藏的狀態轉移。
圖 3.1 音框和 HMM 隱藏狀態對應圖
對於每個語音模型,我們需要訓練的參數為每個狀態下產生各觀察結果之機 率和各狀態間轉移之機率,由於設定模型皆由第一個狀態開始,故初始狀態機率 不需要訓練。說明訓練方式前,須先對 HMM 做一個定義和介紹:
λ :HMM 模型
S:HMM 隱藏狀態集合 V :HMM 模型輸出的集合
A:狀態轉移機率矩陣
B:HMM 中各狀態的輸出機率矩陣 π :HMM 初始狀態的機率向量
O:HMM 的觀察結果序列
Q : HMM 的狀態序列
在語音模型方面,本文採用 7 個隱藏狀態,觀察結果為 64 個,狀態的跳躍 只限於跳回本身、跳下 1 個或跳 2 個狀態如圖 3.2,設定每個語音皆從狀態 0 開 始。
圖 3.2 HMM 狀態跳躍圖
3.3 計算模型機率
根據定義的A、B、π 三個機率集合,我們可以算出一個模型λ 產生一個觀
察結果序列O的機率P(O|λ)如式(3.3),
Forward variable)如下:
)
3.4 訓練模型參數
) (
) (
•
=
i ij
ij n u
u
a n (3.9)
) (
) , ) (
(
j k j
j n u
v o u k n
b
•
• =
= (3.10)
然後再以新的參數之模型重複做上述猜測狀態序列和統計更新的動作,直到模型 參數沒變化時即可結束而得到該聲音的模型參數,圖 3.3 HMM 語音模型訓練流 程圖。
圖 3.3 HMM 語音模型訓練流程圖
3.5 辨識
本論文語音辨識的範圍為數字 0 到 9 共 10 個中文音節,故需對每個數字各 別訓練一個語音模型,以產生一個語音模型的集合,當 10 個語音模型完成訓練 後,方可進行語音的辨識。當要辨識的聲音經過語音前置處理和向量量化後,將 語音的特徵値送入所有的語音模型,利用式(3.7)算出模型集合中各個模型產生該 語音的機率P(O|λ),經比較所有模型的機率後,機率最高者為語音辨識的結果。
若需新加入其他辨識目標的語音模型,則只要再訓練該目標的語音模型後將其加 入語音模型集合中即可,圖 3.4 為語音辨識流程圖。
圖 3.4 語音辨識流程圖