日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

基于GMM-HMM的语音识别系统

發(fā)布時(shí)間:2024/1/1 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于GMM-HMM的语音识别系统 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

    • 基于孤立詞的GMM-HMM語(yǔ)音識(shí)別
      • 建模
      • 訓(xùn)練
        • Viterbi訓(xùn)練
        • 前向后向訓(xùn)練(Baum-Welch訓(xùn)練)
      • 解碼
    • 基于單音素的GMM-HMM語(yǔ)音識(shí)別系統(tǒng)
    • 基于三音素的GMM-HMM語(yǔ)音識(shí)別系統(tǒng)
      • 參數(shù)共享
        • 三音素決策樹(shù)
        • 決策樹(shù)構(gòu)建
    • 基于GMM-HMM語(yǔ)音識(shí)別系統(tǒng)流程

本文介紹GMM-HMM語(yǔ)音識(shí)別系統(tǒng),雖然現(xiàn)在主流端到端系統(tǒng),但是傳統(tǒng)識(shí)別系統(tǒng)的學(xué)習(xí)是很有必要的。閱讀本文前,需要了解語(yǔ)音特征提取、混合高斯模型GMM、隱馬爾科夫模型HMM的基礎(chǔ)知識(shí)(可以參考我的前幾篇文章)。筆者能力有限,如有錯(cuò)誤請(qǐng)指正!


GMM-HMM語(yǔ)音識(shí)別系統(tǒng)的框架:

  • 數(shù)據(jù)準(zhǔn)備:數(shù)據(jù)源準(zhǔn)備(wav/txt)、其他數(shù)據(jù)(詞典、音素集等)、驗(yàn)證集、測(cè)試集
  • 特征提取:MFCC
  • 單音素GMM-HMM訓(xùn)練:單音素為三音素提供對(duì)齊
  • 三音素GMM-HMM訓(xùn)練
  • 解碼
  • 語(yǔ)音識(shí)別的幾個(gè)概念:

    • 對(duì)齊:音頻和文本的對(duì)應(yīng)關(guān)系
    • 訓(xùn)練:已知對(duì)齊,迭代計(jì)算模型參數(shù)
    • 解碼:根據(jù)訓(xùn)練得到的模型參數(shù),從音頻推出文本

    基于孤立詞的GMM-HMM語(yǔ)音識(shí)別

    問(wèn)題簡(jiǎn)化,我們考慮(0-9)數(shù)字識(shí)別。整體思路:

    • 訓(xùn)練階段,對(duì)于每個(gè)詞用不同的音頻作為訓(xùn)練樣本,構(gòu)建一個(gè)生成模型P(X∣W)P(X|W)P(XW),W是詞,X是音頻特征(MFCC、Fbank參考這篇博客)
    • 解碼階段:給定一段音頻特征,經(jīng)過(guò)訓(xùn)練得到的模型,看哪個(gè)詞生成這段音頻的概率最大,取最大的那個(gè)詞作為識(shí)別結(jié)果。

    Xtest\mathbf{X}_{test}Xtest?測(cè)試特征,Pw(X)P_w(\mathbf{X})Pw?(X)是詞www的概率模型,vocabvocabvocab是詞表:

    answer=arg?max?w∈vocab?Pw(Xtest?)answer =\underset{w \in \text { vocab }}{\arg \max } P_{w}\left(\boldsymbol{X}_{\text {test }}\right) answer=w?vocab?argmax?Pw?(Xtest??)

    假設(shè)我們給每個(gè)詞建立了一個(gè)模型:Pone(X),Ptwo(X)...P_{one}(X),P_{two}(X)...Pone?(X),Ptwo?(X)...,計(jì)算在每個(gè)詞上的概率,選擇所有詞中概率最大的詞作為識(shí)別結(jié)果。這樣會(huì)有幾個(gè)問(wèn)題:用什么方法進(jìn)行建模:DNN,GMM?這些夠可以進(jìn)行建模,但是語(yǔ)音任務(wù)的特點(diǎn)是序列性,不定長(zhǎng)性,很難使用DNN、GMM直接進(jìn)行建模。為了解決這些問(wèn)題,我們可以利用HMM來(lái)進(jìn)行序列建模。

    語(yǔ)音是一個(gè)序列,Pw(X)P_w(X)Pw?(X)可以用HMM的概率問(wèn)題來(lái)描述,并且其中的觀測(cè)是連續(xù)概率密度分布,我們可以為每個(gè)詞建立一個(gè)GMM-HMM模型。

    建模

    語(yǔ)音識(shí)別中的GMM,采用對(duì)角GMM(協(xié)方差為對(duì)角陣),因?yàn)橐话阄覀兪褂肕FCC特征,MFCC特征各維之間已經(jīng)做了去相關(guān)處理,各維之間相互獨(dú)立,直接使用對(duì)角陣就可以描述,而且對(duì)角GMM參數(shù)量小。

    語(yǔ)音識(shí)別中的HMM,采用3狀態(tài),左右模型的HMM:

    • 為什么采用3狀態(tài)?這是前人大量實(shí)驗(yàn)給出的經(jīng)驗(yàn)值;
    • 左右模型的HMM:對(duì)于每個(gè)狀態(tài),它只能跳轉(zhuǎn)到自身或者下一個(gè)狀態(tài)。類似于人的發(fā)音過(guò)程,連續(xù)不可逆。

    HMM、GMM語(yǔ)音識(shí)別中如何結(jié)合?

    對(duì)于每個(gè)狀態(tài)有一個(gè)GMM模型,對(duì)于每個(gè)詞有一個(gè)HMM模型,當(dāng)一段語(yǔ)音輸入后,根據(jù)Viterbi算法得到一個(gè)序列在GMM-HMM上的概率,然后通過(guò)Viterbi回溯得到每幀屬于HMM的哪個(gè)狀態(tài)(對(duì)齊)。

    訓(xùn)練

    GMM-HMM模型參數(shù):

    • 初始化參數(shù)(左右HMM):這參數(shù)沒(méi)必要
    • 轉(zhuǎn)移參數(shù):自跳或者跳向下一個(gè)(兩個(gè)參數(shù))
    • 觀測(cè)參數(shù):混合系數(shù)、均值、方差

    Viterbi訓(xùn)練

  • E步
    • Viterbi算法得到最優(yōu)的狀態(tài)序列(對(duì)齊),也就是在t時(shí)刻處于狀態(tài)i上的概率(非0即1)
    • GMM模型中在t時(shí)刻處于狀態(tài)i第k個(gè)GMM分量的概率
  • M步
    • 更新轉(zhuǎn)移參數(shù)、GMM參數(shù)(混合系數(shù)、均值、方差)
  • 重復(fù)E、M步
  • 如何初始化GMM-HMM模型的參數(shù)?把語(yǔ)音進(jìn)行均等切分,給每個(gè)狀態(tài)分配對(duì)應(yīng)的特征,然后去估計(jì)初始化的參數(shù)。

    前向后向訓(xùn)練(Baum-Welch訓(xùn)練)

  • E步
    • 通過(guò)前向后向算法得到在時(shí)刻t處于狀態(tài)i的概率
    • 在時(shí)刻t處于狀態(tài)i且為GMM第k個(gè)分量的概率
  • M步
    • 更新轉(zhuǎn)移參數(shù)、GMM參數(shù)(混合系數(shù)、均值、方差)
  • 重復(fù)E、M步
  • Viterbi和Baum-Welch學(xué)習(xí)算法的詳細(xì)內(nèi)容參考我之前的文章。

    解碼

    輸入:各個(gè)詞的GMM-HMM模型,未知的測(cè)試語(yǔ)音特征。

    輸出:哪個(gè)詞。

    主要關(guān)鍵點(diǎn):對(duì)所有的詞,如果計(jì)算Pw(Xtest)P_w(X_{test})Pw?(Xtest?)。可以通過(guò):前向后算法,或者Viterbi算法(可以回溯到最優(yōu)的狀態(tài)序列),一般采用Viterbi算法。

    解碼主要在圖上做,我們現(xiàn)在看one two兩個(gè)數(shù)字識(shí)別問(wèn)題:

    構(gòu)建HMM模型的拓?fù)鋱D,下圖是緊湊的解碼圖:

    通過(guò)Viterbi算法,找過(guò)最優(yōu)的路徑得到最終輸出的詞。那么如果我們需要對(duì)連續(xù)的多個(gè)詞識(shí)別,需要如何建模?

    我們只需要再拓?fù)鋱D上加一個(gè)循環(huán)連接,對(duì)于孤立詞,如果達(dá)到了識(shí)別狀態(tài)就結(jié)束了,對(duì)于連續(xù)詞,如果達(dá)到了結(jié)束狀態(tài),就繼續(xù)識(shí)別下一個(gè)詞。每個(gè)HMM內(nèi)部還是采用Viterbi算法,在每個(gè)時(shí)刻對(duì)于每個(gè)狀態(tài)選擇一條最大概率的路徑。因?yàn)槭遣⑿械?#xff0c;在某個(gè)時(shí)刻,可能同時(shí)會(huì)有多個(gè)詞達(dá)到結(jié)束狀態(tài),分別對(duì)應(yīng)著一段路徑,然后又要同時(shí)進(jìn)行下一個(gè)詞的識(shí)別,那么為了避免多余的計(jì)算,采用和Viterbi一樣的思路,只選取最大概率的路徑,扔掉其他。

    基于單音素的GMM-HMM語(yǔ)音識(shí)別系統(tǒng)

    孤立詞系統(tǒng)的缺點(diǎn):

    • 建模單元數(shù)、計(jì)算量和詞典大小成正比
    • OOV(out of Vocabulary)問(wèn)題,訓(xùn)練中沒(méi)有這個(gè)詞,測(cè)試中存在這個(gè)詞;
    • 詞的狀態(tài)數(shù)對(duì)每個(gè)詞不用,長(zhǎng)詞使用的狀態(tài)數(shù)更多

    為了克服上邊的問(wèn)題,采用音素建模。每個(gè)音素使用3狀態(tài)結(jié)構(gòu):

    簡(jiǎn)化問(wèn)題:假設(shè)一句話中包含一個(gè)單詞,比如one(W AA N),我們可以很容易得到三個(gè)音素的HMM狀態(tài)圖,將狀態(tài)圖進(jìn)行平滑連接得到one的一整個(gè)HMM,然后進(jìn)行和上述孤立詞相同的過(guò)程。

    問(wèn)題:如果一句話中包含多個(gè)單詞?

    這個(gè)采用和上述相同的方法,加入循環(huán)結(jié)構(gòu),當(dāng)?shù)竭_(dá)結(jié)束狀態(tài)時(shí)進(jìn)行下一個(gè)詞的識(shí)別。

    基于三音素的GMM-HMM語(yǔ)音識(shí)別系統(tǒng)

    單音素缺點(diǎn):

    • 建模單元數(shù)少,一般英文系統(tǒng)的音素?cái)?shù)30-60個(gè),中文的音素?cái)?shù)100個(gè)左右;
    • 音素的發(fā)音受上下文影響,比如:連讀、吞音。

    可以考慮音素的上下文,一般考慮前一個(gè)/后一個(gè),稱為三音素,表示為A-B+C。比如:KEEP K IY P => #-K+IY, K-IY+P, IY-P+#。

    問(wèn)題1:假設(shè)有N個(gè)音素,一共有多少個(gè)三音素?N3N^3N3

    問(wèn)題2:有的三音素訓(xùn)練數(shù)據(jù)少或者不存在,怎么辦?

    問(wèn)題3:有的三音素在訓(xùn)練中不存在,但在測(cè)試中有怎么辦?

    問(wèn)題2和問(wèn)題3通過(guò)參數(shù)共享解決,下文將介紹決策樹(shù)。

    參數(shù)共享

    共享可以在不同層面:

    • 共享高斯模型:所有狀態(tài)都用同樣的高斯模型,只是混合權(quán)重不一樣;
    • 共享狀態(tài):允許不同的HMM模型使用一些相同的狀態(tài);
    • 共享模型:相似的三音素使用同樣的HMM模型。

    筆者主要介紹共享狀態(tài),可以采用自頂向下的拆分,建立決策樹(shù)來(lái)聚類。

    三音素決策樹(shù)

    決策樹(shù)是一個(gè)二叉樹(shù),每個(gè)非葉子節(jié)點(diǎn)上會(huì)有一個(gè)問(wèn)題,葉子節(jié)點(diǎn)是一個(gè)綁定三音素的集合。綁定的粒度為狀態(tài)(A-B+C和A-B+D的第1個(gè)狀態(tài)綁定在一起,并不表示其第二第三個(gè)狀態(tài)也要綁定在一起),也就是B的每個(gè)狀態(tài)都有一顆小的決策樹(shù)。

    問(wèn)題集

    常見(jiàn)的有:

    • 元音 AA AE AH AO AW AX AXR AY EH ER …
    • 爆破音 B D G P T K
    • 鼻音 M N NG
    • 摩擦音 CH DH F JH S SH TH V Z ZH
    • 流音 L R W Y

    問(wèn)題集的構(gòu)建:語(yǔ)言學(xué)家定義,Kaldi中通過(guò)自頂向下的聚類自動(dòng)構(gòu)建問(wèn)題集。

    決策樹(shù)構(gòu)建

    初始條件類似圖中的根節(jié)點(diǎn),"*-zh+*",從問(wèn)題集中選擇合適的問(wèn)題,分裂該節(jié)點(diǎn),使相近的三音素分類到相同的節(jié)點(diǎn)上。假設(shè)根節(jié)點(diǎn)所有三音素對(duì)應(yīng)的特征服從一個(gè)多元單高斯分布,可以計(jì)算出該單高斯分布的均值和方差,則可以計(jì)算出該節(jié)點(diǎn)任意一個(gè)特征在高斯上的似然。

    模型:假設(shè)其服從單高斯分布,并且各維獨(dú)立,也就是對(duì)角GMM
    Pr?[x]=1∏k=1N(2πσk2)1/2∏k=1Nexp?(?12(xk?μk)2σk2)\operatorname{Pr}[x]=\frac{1}{\prod_{k=1}^{N}\left(2 \pi \sigma_{k}^{2}\right)^{1 / 2}} \prod_{k=1}^{N} \exp \left(-\frac{1}{2} \frac{\left(x_{k}-\mu_{k}\right)^{2}}{\sigma_{k}^{2}}\right) Pr[x]=k=1N?(2πσk2?)1/21?k=1N?exp(?21?σk2?(xk??μk?)2?)
    似然
    L(S)=?12∑i=1m[∑k=1Nlog?(2πσk2)+∑k=1N(xik?μk)2σk2]=?12[m∑k=1Nlog?(2πσk2)+m∑k=1Nσk2σk2]=?12[mN(1+log?(2π))+m∑k=1Nlog?(σk2)]\begin{aligned} L(S) &=-\frac{1}{2} \sum_{i=1}^{m}\left[\sum_{k=1}^{N} \log \left(2 \pi \sigma_{k}^{2}\right)+\sum_{k=1}^{N} \frac{\left(x_{i k}-\mu_{k}\right)^{2}}{\sigma_{k}^{2}}\right] \\ &=-\frac{1}{2}\left[m \sum_{k=1}^{N} \log \left(2 \pi \sigma_{k}^{2}\right)+m \sum_{k=1}^{N} \frac{\sigma_{k}^{2}}{\sigma_{k}^{2}}\right] \\ &=-\frac{1}{2}\left[m N(1+\log (2 \pi))+m \sum_{k=1}^{N} \log \left(\sigma_{k}^{2}\right)\right] \end{aligned} L(S)?=?21?i=1m?[k=1N?log(2πσk2?)+k=1N?σk2?(xik??μk?)2?]=?21?[mk=1N?log(2πσk2?)+mk=1N?σk2?σk2??]=?21?[mN(1+log(2π))+mk=1N?log(σk2?)]?

    假設(shè)通過(guò)某個(gè)問(wèn)題將該節(jié)點(diǎn)的三音素對(duì)應(yīng)的特征分成兩部分(l 和 r),則這兩部分的似然和為:
    L(Sl)+L(Sr)=?12mN(1+log?(2π))?12[ml∑k=1Nlog?(σlk2)+mr∑k=1Nlog?(σrk2)]L\left(S_{l}\right)+L\left(S_{r}\right)=-\frac{1}{2} m N(1+\log (2 \pi))-\frac{1}{2}\left[m_{l} \sum_{k=1}^{N} \log \left(\sigma_{l k}^{2}\right)+m_{r} \sum_{k=1}^{N} \log \left(\sigma_{r k}^{2}\right)\right] L(Sl?)+L(Sr?)=?21?mN(1+log(2π))?21?[ml?k=1N?log(σlk2?)+mr?k=1N?log(σrk2?)]
    分裂前后的似然變化(增益)為:
    L(Sl)+L(Sr)?L(S)L\left(S_{l}\right)+L\left(S_{r}\right)-L(S) L(Sl?)+L(Sr?)?L(S)
    似然增益越大,說(shuō)明分裂后兩部分?jǐn)?shù)據(jù)之間的差異越大,則應(yīng)該使用兩個(gè)單獨(dú)的GMM分別建模,則選擇似然增益最大的問(wèn)題進(jìn)行劃分(最優(yōu)問(wèn)題)。根節(jié)點(diǎn)一份為2后,遞歸執(zhí)行該算法直至達(dá)到一定終止條件,通常是分裂達(dá)到一定數(shù)量的葉子節(jié)點(diǎn)或者似然增益已經(jīng)低于一定閾值。

    總結(jié)

  • 初始狀態(tài)(單因素系統(tǒng)對(duì)齊,一個(gè)根節(jié)點(diǎn))
  • 選擇一個(gè)節(jié)點(diǎn),從問(wèn)題集中選擇似然增益最大的問(wèn)題作為該節(jié)點(diǎn)問(wèn)題,建立該節(jié)點(diǎn)左右子節(jié)點(diǎn),并將該節(jié)點(diǎn)一分為二
  • 重復(fù)2,直至滿足一定的終止條件。
  • 基于GMM-HMM語(yǔ)音識(shí)別系統(tǒng)流程

  • 數(shù)據(jù)準(zhǔn)備:音素列表、詞典、訓(xùn)練數(shù)據(jù)
  • 特征提取:MFCC特征
  • 單音素GMM-HMM:Viterbi訓(xùn)練
  • 三音素GMM-HMM:三音素決策樹(shù)、Viterbi訓(xùn)練
  • 解碼
  • 問(wèn)題:為什么先做單音素訓(xùn)練?

    通過(guò)單音素模型上Viterbi算法得到與輸入對(duì)應(yīng)的最佳狀態(tài)序列(對(duì)齊)。

    參考:

    https://blog.csdn.net/Magical_Bubble/article/details/90408095

    https://zhuanlan.zhihu.com/p/63753017

    總結(jié)

    以上是生活随笔為你收集整理的基于GMM-HMM的语音识别系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。