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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

语音识别之DTW算法的应用(Python)

發(fā)布時(shí)間:2023/12/9 python 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音识别之DTW算法的应用(Python) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

本文目的是探究語(yǔ)音識(shí)別中DTW算法的應(yīng)用,本人在相關(guān)算法中加入了自己的理解并對(duì)實(shí)時(shí)識(shí)別進(jìn)行了擴(kuò)展。

代碼鏈接:基于Python的智能家居語(yǔ)言識(shí)別模擬系統(tǒng)

注意:在運(yùn)行之前,需要修改代碼os.chdir()中的絕對(duì)路徑。

1? 設(shè)計(jì)任務(wù)及要求

設(shè)計(jì)高準(zhǔn)確率的連續(xù)語(yǔ)音識(shí)別系統(tǒng)。本實(shí)驗(yàn)?zāi)M智能家居聲控系統(tǒng),對(duì)使用者的語(yǔ)音進(jìn)行錄制與識(shí)別,得到對(duì)應(yīng)的命令詞。10個(gè)命令詞為:開(kāi)燈、關(guān)燈、播放音樂(lè)、關(guān)閉音樂(lè)、打開(kāi)空調(diào)、關(guān)閉空調(diào)、打開(kāi)電視、關(guān)閉電視、開(kāi)始掃地、停止掃地。

2? 引言

語(yǔ)音識(shí)別以語(yǔ)音為研究對(duì)象,是語(yǔ)音信號(hào)處理的一個(gè)重要研究方向,也是語(yǔ)音信號(hào)處理的一個(gè)基本問(wèn)題。是模式識(shí)別的一個(gè)分支,涉及到生理學(xué),心理學(xué),語(yǔ)言學(xué),計(jì)算機(jī)科學(xué),以及信號(hào)處理等諸多領(lǐng)域,其最終實(shí)現(xiàn)的是人機(jī)交互,同時(shí)也在其他領(lǐng)域發(fā)揮著重要的作用,如導(dǎo)航,輔助機(jī)器人技術(shù),移動(dòng)設(shè)備服務(wù)等多個(gè)領(lǐng)域。

語(yǔ)音識(shí)別系統(tǒng)的分類(lèi)方式及依據(jù)是根據(jù)說(shuō)話(huà)人說(shuō)話(huà)方式的要求,可以分為孤立字(詞)語(yǔ)音識(shí)別系統(tǒng),連接字語(yǔ)音識(shí)別系統(tǒng)以及連續(xù)語(yǔ)音識(shí)別系統(tǒng),本文建立的系統(tǒng)為連續(xù)語(yǔ)音識(shí)別系統(tǒng)。不同的語(yǔ)音識(shí)別系統(tǒng),盡管設(shè)計(jì)和實(shí)現(xiàn)的細(xì)節(jié)不同,但所采用的技術(shù)都是相似的,一個(gè)典型的語(yǔ)音識(shí)別系統(tǒng)如圖1所示,主要包括預(yù)處理,特征提取和訓(xùn)練識(shí)別網(wǎng)絡(luò)。

圖1 語(yǔ)音識(shí)別系統(tǒng)組成部分

本系統(tǒng)用于模擬智能家居的聲控部分,對(duì)10個(gè)命令詞進(jìn)行識(shí)別。系統(tǒng)首先對(duì)原始語(yǔ)音進(jìn)行預(yù)加重、分幀、加窗等預(yù)處理操作,提取語(yǔ)音對(duì)應(yīng)的特征參數(shù)。在得到了特征參數(shù)的基礎(chǔ)上,采用不同的方法進(jìn)行識(shí)別:(1).采用模板匹配技術(shù)DTW算法進(jìn)行進(jìn)行時(shí)間的對(duì)準(zhǔn)和相似度度量. (2).利用GMM-HMM建立聲學(xué)模型,最終完成識(shí)別。

3? 實(shí)驗(yàn)原理及應(yīng)用

3.1 預(yù)處理

在信號(hào)處理系統(tǒng)中,對(duì)原始信號(hào)進(jìn)行預(yù)處理是必要的這樣可以獲得一個(gè)比較理想的處理對(duì)象。在語(yǔ)音識(shí)別系統(tǒng)中,語(yǔ)音信號(hào)的預(yù)處理主要包括分幀,預(yù)加重及端點(diǎn)檢測(cè)。

3.1.1? 分幀

語(yǔ)音信號(hào)是一種典型的非平穩(wěn)信號(hào),它的均值函數(shù)u(x)和自相關(guān)函數(shù)R(xl,x2)都隨時(shí)間而發(fā)生較大的變化。但研究發(fā)現(xiàn),語(yǔ)音信號(hào)在短時(shí)間內(nèi)頻譜特性保持平穩(wěn),即具有短時(shí)平穩(wěn)特性。因此,在實(shí)際處理時(shí)可以將語(yǔ)音信號(hào)分成很小的時(shí)間段(約10~30ms),稱(chēng)之為“幀”,作為語(yǔ)音信號(hào)處理的最小單位,幀與幀的非重疊部分稱(chēng)為幀移,而將語(yǔ)音信號(hào)分成若干幀的過(guò)程稱(chēng)為分幀。分幀小能清楚地描繪語(yǔ)音信號(hào)的時(shí)變特征但計(jì)算量大;分幀大能減少計(jì)算量但相鄰幀間變化不大,容易丟失信號(hào)特征。一般取幀長(zhǎng)20ms,幀移為幀長(zhǎng)的1/3~1/2。

在本系統(tǒng)中幀長(zhǎng)25ms,幀移10ms。

3.1.2? 預(yù)加重

對(duì)于語(yǔ)音信號(hào)的頻譜,通常是頻率越高幅值越小,在語(yǔ)音信號(hào)的頻率增加兩倍時(shí),其功率譜的幅度下降6dB。因此必須對(duì)高頻進(jìn)行加重處理,一般是將語(yǔ)音信號(hào)通過(guò)一個(gè)一階高通濾波器1-0.9375z-1,即為預(yù)加重濾波器。其目的是濾除低頻干擾,特別是50Hz到60Hz的工頻干擾,將對(duì)語(yǔ)音識(shí)別更為有用的高頻部分進(jìn)行頻譜提升。在計(jì)算短時(shí)能量之前將語(yǔ)音信號(hào)通過(guò)預(yù)加重濾波器還可起到消除直流漂移、抑制隨機(jī)噪聲和提升清音部分能量的效果。

3.1.3? 端點(diǎn)檢測(cè)

語(yǔ)音信號(hào)起止點(diǎn)的判別是任何一個(gè)語(yǔ)音識(shí)別系統(tǒng)中必不可少的組成部分。因?yàn)橹挥袦?zhǔn)確的找出語(yǔ)音段的起始點(diǎn)和終止點(diǎn),才能得到真正要分析的語(yǔ)言信號(hào)。為達(dá)到提取人聲部分的語(yǔ)音段,本實(shí)驗(yàn)采用雙門(mén)限法進(jìn)行端點(diǎn)檢測(cè)。該算法使用了三個(gè)閾值(包括兩個(gè)短時(shí)能量閾值和一個(gè)過(guò)零率閾值)。

短時(shí)能量計(jì)算方法:

這里使用矩形窗w(m),對(duì)于每一個(gè)要計(jì)算的幀而言,它是1,因此這里可以忽略掉,因此,每一幀采樣點(diǎn)平方和對(duì)應(yīng)的就是該幀的短時(shí)能量。

短時(shí)過(guò)零率計(jì)算方法:

其中,sgn函數(shù):

w(m)函數(shù)為:

本實(shí)驗(yàn)采用的端點(diǎn)檢測(cè)算法具體分為三步:

圖2 雙門(mén)限法示意圖

第一步:取一個(gè)較高的短時(shí)能量作為閾值MH,首先分出語(yǔ)音中的濁音部分(如圖2,A1-A2區(qū)間)。本實(shí)驗(yàn)的MH,取值為所有幀的短時(shí)能量的平均數(shù)的一半(平均數(shù)偏大)。

第二步:取一個(gè)較低的能量閾值ML,從A1-A2區(qū)間,向兩端進(jìn)行搜索,將較低能量段的語(yǔ)音部分也加入到語(yǔ)音段,進(jìn)一步擴(kuò)大語(yǔ)音段范圍(如圖所示,B1-B2區(qū)間)。本實(shí)驗(yàn)中,首先計(jì)算語(yǔ)音前一段的靜音部分的能量均值(前5幀),本文將靜音部分的能量均值和MH相加的一半作為ML。

第三步:使用短時(shí)過(guò)零率閾值為Zs。由于語(yǔ)音的兩端部分是輔音(也就是清音部分),也是語(yǔ)音中的一部分,但是輔音的能量與靜音部分的能量一樣低,但是過(guò)零率比靜音部分高出很多。為了區(qū)分開(kāi)二者,將利用短時(shí)能量區(qū)分完的語(yǔ)音段繼續(xù)向兩端進(jìn)行搜索,短時(shí)過(guò)零率大于3倍Zs的部分,則認(rèn)為是語(yǔ)音的清音部分。將該部分加入語(yǔ)言段,就是求得的語(yǔ)音段(如圖2,C1-C2區(qū)間)。

3.2 特征提取

人的聽(tīng)覺(jué)系統(tǒng)是一個(gè)特殊的非線(xiàn)性系統(tǒng),它響應(yīng)不同頻率信號(hào)的靈敏度是不同的,基本上是一個(gè)對(duì)數(shù)的關(guān)系。近年來(lái),一種能夠比較充分利用人耳的這種特殊感知特性的系數(shù)得到了廣泛應(yīng)用,這就是Mel尺度倒譜系數(shù)(Mel-scaled Cepstrum Coefficients,簡(jiǎn)稱(chēng)MFCC)。

MFCC系數(shù)的計(jì)算流程(圖3)如下:

  • 先對(duì)語(yǔ)音進(jìn)行預(yù)加重、分幀和加窗;
  • 對(duì)每一個(gè)短時(shí)分析窗,通過(guò)FFT得到對(duì)應(yīng)的頻譜;
  • 將上面的頻譜通過(guò)Mel濾波器組得到Mel頻譜;
  • 在Mel頻譜上面進(jìn)行倒譜分析(取對(duì)數(shù),做逆變換,實(shí)際逆變換一般是通過(guò)DCT離散余弦變換來(lái)實(shí)現(xiàn)),獲得Mel頻率倒譜系數(shù)MFCC,這個(gè)MFCC就是這幀語(yǔ)音的特征;
  • 圖3 MFCC系數(shù)計(jì)算流程圖

    本實(shí)驗(yàn)采用 HTK工具包中的Hcopy命令進(jìn)行FFCC特征提取,存儲(chǔ)在.mfc文件中。提取的特征39維MFCC特征。包括12維dct系數(shù),能量特征,一階差分和二階差分等。提取算法如下:

    首先進(jìn)行預(yù)加重,然后進(jìn)行分幀,加窗,然后進(jìn)行快速傅里葉變換,將它轉(zhuǎn)換為頻域上的能量分布;將能量譜通過(guò)一組Mel尺度的三角形濾波器組,對(duì)頻譜進(jìn)行平滑化,并消除諧波的作用,突顯原先語(yǔ)音的共振峰;計(jì)算每個(gè)濾波器輸出的對(duì)數(shù)能量,經(jīng)離散余弦變換(DCT)得到MFCC系數(shù);然后計(jì)算對(duì)數(shù)能量;最后提取動(dòng)態(tài)差分參數(shù)(包括一階差分和二階差分等)

    圖4為Hcopy命令參數(shù)設(shè)置,圖5為一段語(yǔ)音信號(hào)的第一幀MFCC特征:

    圖4 Hcopy命令參數(shù)設(shè)置 圖5 語(yǔ)音信號(hào)單幀MFCC特征值

    3.3 DTW語(yǔ)音匹配

    由于即使同一個(gè)人不同時(shí)間發(fā)出同一個(gè)聲音,也不可能具有相同的長(zhǎng)度,因此就需要用到動(dòng)態(tài)時(shí)間歸正(DTW)算法。把時(shí)間歸正和距離測(cè)度計(jì)算結(jié)合起來(lái)的一種非線(xiàn)性歸正技術(shù)。DTW 本質(zhì)上是一個(gè)簡(jiǎn)單的動(dòng)態(tài)規(guī)劃算法,是用來(lái)計(jì)算兩個(gè)維數(shù)不同的向量之間的相似度的問(wèn)題,即計(jì)算向量 M1 和 M2 的最短距離。是一種非常常用的語(yǔ)音匹配算法。

    3.3.1? 算法基本思想

    對(duì)兩個(gè)不同維數(shù)的語(yǔ)音向量 m1 和 m2進(jìn)行匹配(m1 和 m2 的每一維也是一個(gè)向量,是語(yǔ)音每一幀的特征值,這里利用的是 MFCC 特征)。設(shè)兩個(gè)向量的長(zhǎng)度為 M1 和 M2,則距離可以表示為:

    那么,就可以這樣進(jìn)行匹配:

  • 每一條從(1,1)到(M1,M2)路徑都有一個(gè)累計(jì)距離稱(chēng)為路徑的代價(jià);

  • 每一條路徑都代表一種對(duì)齊情況;

  • 代價(jià)最小的路徑就是所求的對(duì)準(zhǔn)路徑。

  • 這樣就可以將對(duì)準(zhǔn)問(wèn)題,或者說(shuō)將求兩個(gè)語(yǔ)音段的相似度問(wèn)題,轉(zhuǎn)化成了搜索代價(jià)最小的最優(yōu)路徑問(wèn)題,圖6為其中一條路徑。

    6 11)到(M1,M2)路徑其中一條路徑

    在搜索過(guò)程中,往往要進(jìn)行路徑的限制,如圖7,(i,j)點(diǎn)只能由相鄰的三點(diǎn)到達(dá):

    7 路徑限制

    在此限制條件下,可以將全局最優(yōu)化問(wèn)題轉(zhuǎn)化為許多局部最優(yōu)化問(wèn)題一步一步地來(lái)求解,這就動(dòng)態(tài)規(guī)劃(Dynamic Programming,簡(jiǎn)稱(chēng)DP )的思想。

    3.3.2? 算法基本步驟

    1. 定義一個(gè)代價(jià)函數(shù) , 表示從起始點(diǎn)(1,1)出發(fā),到達(dá)(i,j)點(diǎn)最小代價(jià)路徑的累計(jì)距離。有:

    2. 要計(jì)算兩個(gè)向量之間的最短距離,可以表示為:

    依次類(lèi)推,可由更低一層的代價(jià)函數(shù)計(jì)算得到:

    3. 因此,可以從 ?開(kāi)始計(jì)算,遞推出(1,1)到(i,j)的路徑。遞推過(guò)程中定義加權(quán)系數(shù)wn,加權(quán)系數(shù)的取值與局部路徑有關(guān):

    4. 為了減少計(jì)算量,可以定義平行四邊形區(qū)域約束,如圖8:

    8 平行四邊形路徑限制

    3? 實(shí)驗(yàn)結(jié)果(DTW)

    3.1 設(shè)計(jì)實(shí)驗(yàn)任務(wù)及過(guò)程

    本實(shí)驗(yàn)旨在模擬智能家居聲控系統(tǒng),一共錄制了6組語(yǔ)音,每組 10 個(gè)命令詞,一共 60 段語(yǔ)音。通過(guò)實(shí)驗(yàn),取出2組作為模板。剩余的 40 個(gè)語(yǔ)音命令作為測(cè)試樣例,測(cè)試 語(yǔ)音識(shí)別系統(tǒng)的精確度。

    實(shí)驗(yàn)過(guò)程如下:

  • 首先錄制 60 個(gè)語(yǔ)音,采樣頻率為16kHz,存儲(chǔ)在 RecordedVoice 文件夾下;
  • 利用實(shí)驗(yàn)一的代碼對(duì)錄制的語(yǔ)音進(jìn)行端點(diǎn)檢測(cè),存儲(chǔ)在 RecordedVoice-EndPointed 文件夾下;
  • 對(duì)端點(diǎn)檢測(cè)后的語(yǔ)音命令進(jìn)行操作,利用 HTK 中的 HCopy 工具提取出 MFCC 特征,存放在 xxx.mfc 文件中,放在 MFCC-EndPointedVoice 文件夾下;
  • 在代碼中取出所有語(yǔ)音命令的 MFCC 特征,區(qū)分開(kāi)模板和測(cè)試樣例。根據(jù) DTW 算法,對(duì) 40 個(gè)測(cè)試樣例進(jìn)行靜態(tài)語(yǔ)音匹配,檢測(cè)正確率;
  • 在代碼中錄音,然后保存錄音的文件,存放在 RecordedVoice-RealTime 中。利用端點(diǎn)檢測(cè)的代碼對(duì)其進(jìn)行端點(diǎn)檢測(cè),保存在 RecordedVoice-RealTime 中;
  • 在代碼中動(dòng)態(tài)調(diào)用 HCopy 程序,對(duì)實(shí)時(shí)錄的語(yǔ)音進(jìn)行 MFCC 特征提取,然后進(jìn)行語(yǔ)音匹配,檢測(cè)是否與對(duì)應(yīng)的命令匹配上;
  • 3.2 實(shí)驗(yàn)結(jié)果

    本次測(cè)試的4組數(shù)據(jù),40段語(yǔ)音,識(shí)別率達(dá)到95%,結(jié)果如圖9。該結(jié)果表明,DTW算法的語(yǔ)音識(shí)別率十分理想,最后兩端語(yǔ)音識(shí)別失敗的主要原因是,錄音者的聲調(diào)、響度和速度與模板差別巨大所造成的。因此,DTW的識(shí)別率受到模板數(shù)量的限制,因此在實(shí)際的智能家居聲控系統(tǒng)應(yīng)用中,需要采集每個(gè)家庭成員盡量多的語(yǔ)音作為模板,以提高系統(tǒng)識(shí)別率。

    圖9?前兩組段語(yǔ)音識(shí)別結(jié)果

    另外,本實(shí)驗(yàn)還設(shè)計(jì)了簡(jiǎn)潔的GUI界面,用于實(shí)時(shí)對(duì)使用者的語(yǔ)音信號(hào)進(jìn)行采集和識(shí)別,更好的模擬智能家居聲控系統(tǒng)。GUI界面如圖10:

    圖10 語(yǔ)音識(shí)別GUI界面

    4? 總結(jié)

    在使用DWT匹配算法過(guò)程中,模板的好壞直接影響了整個(gè)識(shí)別系統(tǒng)的準(zhǔn)確率,因此我們通過(guò)多組數(shù)據(jù)對(duì)比,選取了最優(yōu)的模板,便能夠達(dá)到高識(shí)別率。

    參考:https://blog.csdn.net/rocketeerLi/article/details/84638701

    總結(jié)

    以上是生活随笔為你收集整理的语音识别之DTW算法的应用(Python)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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