• 沒有找到結果。

隱藏式馬可夫模型與頻譜參數建模

第二章 文獻回顧

2.2 基於隱藏式馬可夫模型之語音合成

2.2.3 隱藏式馬可夫模型於語音參數之建模

2.2.3.1 隱藏式馬可夫模型與頻譜參數建模

隱藏式馬可夫模型對於語音頻譜的建模可以視為一個有限狀態機(Finite

22

State Machine)在時間單位(如:音框(Frame))上的狀態轉移。在每次的狀態轉移,

皆有一個決策會決定狀態的轉移目標(其目標狀態包含自己),轉移後會根據目前 狀態之機率密度函數(Probability Density Function, pdf)產生一個向量,如圖(五)所 表示:

圖(五):隱藏式馬可夫模型圖示

其中,q 為目前之狀態,t 為目前之時間點,則每個狀態 q 在時間點 t 下的觀察 點𝑜𝑡,其機率𝑏𝑞(𝑜𝑡)通常以多變量高斯密度函數(Multivariate Gaussian Density

Function)表達,如式(17):

𝑏𝑞(𝑜𝑡) = ∑ 𝑐𝑞𝑚𝒩(𝑜𝑡, 𝜇𝑞𝑚, Σ𝑞𝑚)

𝑀

𝑚=1

= ∑ 𝑐𝑞𝑚 1 (2𝜋)𝐷2𝑞|

1 2

exp{−1

2(𝑜𝑡− 𝜇𝑞𝑚)Σ𝑞𝑚−1(𝑜𝑡− 𝜇𝑞𝑚)}

𝑀

𝑚=1

(17)

其中𝑐𝑞𝑚、𝜇𝑞𝑚、Σ𝑞𝑚分別為第𝑞個狀態之第 m 個混和權重、𝐷-維度的平均值向量 以及𝐷 × 𝐷維的共變異(Covariance)矩陣。

同時為了方便表示完整的參數集合,我們通常會使用較為簡潔的方式來表

23

達隱藏式馬可夫模型之參數:

𝜆 = (𝐴, 𝐵, 𝜋) (18)

其中𝜆為一隱藏式馬可夫模型,𝐴, 𝐵, 𝜋分別為狀態轉移機率A = {𝑎𝑖𝑗}𝑖,𝑗=1𝑁 、狀態之 機率分布B = {𝑏𝑖(∙)}𝑖=1𝑁 以及起始狀態機率π = {𝜋𝑗}𝑗=1𝑁 ,且𝜋在左至右(left-to-right) 模型中具有下式之特性:

𝜋 = {0, 𝑖 ≠ 1

1, 𝑖 = 1 (19)

在隱藏式馬可 夫 模型當 中 我們使 用 前向後 向演算法 (Forward-Backward Algorithm)[65]來計算𝑃(𝑂|𝜆),即求取給予隱藏式馬可夫模型𝜆,其觀察序列𝑂 = (𝑜1, 𝑜2, ⋯ , 𝑜𝑇)之機率。

 前向演算法(Forward Algorithm)

我們首先定義一個前向變數(Forward Variable)𝛼𝑡(𝑖)為給予一個隱藏式馬可 夫模型𝜆,從時間 1 至時間 t 之觀察序列,且時間在 t 的狀態 i 的機率

𝛼𝑡(𝑖) = 𝑃(𝑜1, 𝑜2, ⋯ , 𝑜𝑡, 𝑞𝑡 = 𝑖|𝜆) (20) 我們可依下面幾步驟求得其解:

(1.) 起始

𝛼1(𝑖) = 𝜋𝑖𝑏𝑖(𝑜1), 1 ≤ 𝑖 ≤ 𝑁 (21) (2.) 疊代

𝛼𝑡+1(𝑗) = [∑ 𝛼𝑡(𝑖)𝑎𝑖𝑗

𝑁

𝑖=1

] 𝑏𝑗(𝑜𝑡+1), 1 ≤ 𝑡 ≤ 𝑇 − 1

1 ≤ 𝑗 ≤ 𝑁 (22) (3.) 結束

24

𝑃(𝑂|𝜆) = ∑ 𝛼𝑇(𝑖)

𝑁

𝑖=1

(23)

其中𝑎𝑖𝑗代表由狀態 i 轉移至狀態 j 的轉移機率。

 後向演算法(Backward Algorithm)

與前向演算法相同,我們首先定義一個後向變數(Backward Variable) 𝛽𝑡(𝑖)為 給予一個隱藏式馬可夫模型𝜆與時間在 t 的狀態 i,從時間 t 至時間 T 之觀察序列 之機率為

𝛽𝑡(𝑖) = 𝑃(𝑜𝑡+1, 𝑜𝑡+2, ⋯ , 𝑜𝑇|𝑞𝑡= 𝑖, 𝜆) (24) 與前向演算法相同,我們可依下面步驟求解:

(1.) 起始

𝛽𝑇(𝑖) = 1, 1 ≤ 𝑖 ≤ 𝑁 (25) (2.) 疊代

𝛽𝑡(𝑗) = ∑ 𝑎𝑖𝑗𝑏𝑗(𝑜𝑡+1)𝛽𝑡+1(𝑗)

𝑁

𝑖=1

, 𝑡 = 𝑇 − 1, 𝑇 − 2, ⋯ ,1

1 ≤ 𝑖 ≤ 𝑁 (26) (3.) 結束

𝑃(𝑂|𝜆) = ∑ 𝛽1(𝑖)

𝑁

𝑖=1

(27)

從上述之前向後向演算法,我們可以求得給予一個隱藏式馬可夫模型λ,產 生其觀察序列 O 之機率,而我們現在則面臨了一個問題,要如何調整模型參數 集合(𝐴, 𝐵, 𝜋)使其產生的觀察序列集合機率值最大,即最大化下式:

25

log 𝑃(𝑂1, 𝑂2, ⋯ , 𝑂𝐿|𝜆) (28) 其中我們假設共有 L 句資訓練資來訓練模型,而 S 為模型所有可能的狀態序列。

因 為 我 們 無 法 獲 得 其 聯 合 機 率 (Joint Probability) 的 封 閉 型 態 解 (Closed-Form

Solution),如式(29):

log 𝑃(𝑂1, 𝑂2, ⋯ , 𝑂𝐿|𝜆) = log ∏ 𝑃(𝑂𝑙|𝜆)

𝐿

𝑙=1

= ∑ log 𝑃(𝑂𝑙|𝜆)

𝐿

𝑙=1

= ∑ log ∑ 𝑃(𝑆|𝜆)𝑃(𝑂𝑙|𝑆, 𝜆)

𝑎𝑙𝑙 𝑆 𝐿

𝑙=1

(29)

但是我們仍可以使用最大期望(Expectation-maximization, EM)算法[66,67]來 獲得其區間最大值(Local Maximum)。

首先,我們先定義一個變數𝜉𝑡(𝑖, 𝑗)為給定一個模型λ與觀察序列 O,其狀態

i 在時間 t 與狀態 j 在時間 t+1 之轉移機率,即

𝜉𝑡(𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑖, 𝑞𝑡+1 = 𝑗|𝑂, 𝜆) (30) 藉由計算前向後向演算法所得之變數𝛼𝑡, 𝛽𝑡+1,我們可將式(28)改寫成:

𝜉𝑡(𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑖, 𝑞𝑡+1 = 𝑗, 𝑂|𝜆) 𝑃(𝑂|𝜆)

= 𝛼𝑡(𝑖)𝑎𝑖𝑗𝑏𝑗(𝑜𝑡+1)𝛽𝑡+1(𝑗)

𝑁𝑚=1𝑁𝑛=1𝛼𝑡(𝑚)𝑎𝑚𝑛𝑏𝑛(𝑜𝑡+1)𝛽𝑡+1(𝑛)

(31)

因此我們便可以改寫給定一個模型λ與觀察序列 O,其狀態 i 在時間點 t 之 機率便可以如下式表示:

26

𝛾𝑡(𝑖) = 𝑃(𝑞𝑡 = 𝑖|𝑂, 𝜆)

= ∑ 𝑃(𝑞𝑡 = 𝑖, 𝑞𝑡+1= 𝑗|𝑂, 𝜆)

𝑁

𝑗=1

= ∑ 𝜉𝑡(𝑖, 𝑗)

𝑁

𝑗=1

(32)

因此,若我們加總時間點 1 至 T-1 之𝜉𝑡(𝑖, 𝑗),即同等於計算在觀察序列 O 中,從狀態 i 到狀態 j 之轉移次數期望值。

同理,若我們加總時間點 1 至 T-1 之𝛾𝑡(𝑖, 𝑗),即獲得在觀察序列 O 中,從 狀態 i 轉移出去之轉移次數期望值。

從上述兩點,我們可以合理的推算出模型參數(𝜋, 𝐴)之更新公式應為:

𝜋̅𝑖即為狀態 i 在時間點 t 為 1 的期望值,如式(33)。

𝑎̅𝑖𝑗即為狀態 i 轉移至狀態 j 之期望值與從狀態 i 轉移出去之期望值的比值,

如式(34)。

𝜋̅𝑖 = 𝛾1(𝑖) (33)

𝑎̅𝑖𝑗 = ∑𝑇−1𝑡=1𝜉𝑡(𝑖, 𝑗)

𝑇−1𝑡=1𝛾𝑡(𝑖) (34) 從式(17)中我們得知,每個狀態在不同時間點的觀察機率為一多變量高斯密 度函數,又模型參數 B 相同狀態下在不同時間之觀察機率,即𝐵 = 𝑏𝑖(∙),故將 B 以混和權重𝑐𝑗𝑚、平均值𝜇𝑗𝑚以及共變異矩陣Σ𝑗𝑚表示。

首先,我們先定義一個新的變數𝛾𝑡(𝑗, 𝑘),用其代表狀態 j 為第 k 個混和模型 在時間點 t 在表示為觀察點𝑜𝑡機率,即式(35):

27

𝛾𝑡(𝑗, 𝑘) = 𝑃(𝑞𝑡= 𝑗, 𝑚𝑡 = 𝑘|𝑂, 𝜆)

= 𝑃(𝑞𝑡 = 𝑗|𝑂, 𝜆)𝑃(𝑚𝑡 = 𝑘|𝑞𝑡 = 𝑗, 𝑂, 𝜆)

= 𝛾𝑡(𝑗)𝑃(𝑚𝑡 = 𝑘|𝑞𝑡= 𝑗, 𝑂, 𝜆)

= [ 𝛼𝑡(𝑗)𝛽𝑡(𝑗)

𝑁𝑠=1𝛼𝑡(𝑠)𝛽𝑡(𝑠)] [ 𝑐𝑗𝑘𝒩(𝑜𝑡; 𝜇𝑗𝑘, Σ𝑗𝑘)

𝑀𝑚=1𝑐𝑗𝑚𝒩(𝑜𝑡; 𝜇𝑗𝑚, Σ𝑗𝑚)]

(35)

因此,混和權重𝑐𝑗𝑚、平均值𝜇𝑗𝑚以及共變異數Σ𝑗𝑚便可以下列三式表示:

𝑐̅𝑗𝑘 = ∑𝑇𝑡=1𝛾𝑡(𝑗, 𝑘)

𝑇𝑡=1𝑀𝑚=1𝛾𝑡(𝑗, 𝑚) (36) 𝜇̅𝑗𝑘= ∑𝑇𝑡=1𝛾𝑡(𝑗, 𝑘) ∙ 𝑜𝑡

𝑇𝑡=1𝛾𝑡(𝑗, 𝑘) (37) Σ̅𝑗𝑘 =∑𝑇𝑡=1𝛾𝑡(𝑗, 𝑘)∙ (𝑜𝑡− 𝜇̅𝑗𝑘) ∙ (𝑜𝑡− 𝜇̅𝑗𝑘)

𝑇𝑡=1𝛾𝑡(𝑗, 𝑘) (38)