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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

语音识别过程分析2

發布時間:2024/3/13 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音识别过程分析2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 預加重

首先通過軟件實現數字語音信號的預加重,預加重的作用是將高頻提升,以彌補聲音在唇部輻射時產生的高頻損失。實現的方法是使用預加重數字濾波器,它一般是一階的數字濾波器:?。μ值接近于1。(要有具體程序);

2 加窗、分幀

然后采用漢明窗對數字語音信號加窗,加窗的原因是:語音信號一般在10ms30ms之間,我們可以把它看成是平穩的。為了處理語音信號,我們要對語音信號進行加窗,也就是一次僅處理窗中的數據。因為實際的語音信號是很長的,我們不能也不必對非常長的數據進行一次性處理。明智的解決辦法就是每次取一段數據,進行分析,然后再取下一段數據,再進行分析。本文選擇加漢明窗,漢明窗的窗函數是:。(這里要用C語言實現這個窗函數)本文將窗長定位20ms,即一幀的長度為20ms,幀移設為10ms

3 語音信號的起始點和終止點檢測。

本文借鑒期刊論文《一種語音端點檢測方法的探究》中提出的基于經典端點檢測方法——Lawrence Rabiner提出的以過零率ZCR和能量E為特征的端點檢測方法改進的新算法。

以過零率ZCR和能量E為特征的起止點算法的根據是背景噪聲與語音的短時段ZCRE特征從統計看都有相當的區別。這里E特征指的是能量類特征,用到的是該類特征中得段時段平均幅度M特征。

過零率ZCR的定義為:在統計的短時段中,信號波形穿越零電平的次數。

x(n)為離散語音信號時間序列;w(n)為時窗函數(其有效長度為N),可以為矩形窗,如漢明窗等。則ZCRM的計算式分別為:

其中sign[x(n)]=1(x(n)0)sign[x(n)]=-1(當x(n)<0);w(n)=1/2N(0nN-1)w(n)=0(n為其它)

該方法的要點為:由于采集聲音信號的最初的短時段為無語音段,僅有均勻分布的背景噪聲信號。這樣就可以用已知為“靜態”的最初幾幀(一般取10幀)信號計算其過零率閾值IZCT及能量閾值ITL(低能量閾)和ITU(高能量閾)。

IZCT的具體計算式為:

??????????????????????????? 1

其中IF為固定值,一般取25;和分布為根據所取最初10幀樣值算得的過零率的“均值”和“標準差”。

計算ITLITU時,先算出最初10幀信號每幀的平均幅值M,最大者記為IMX,最小者記為IMN。然后令:

I1=0.03×(IMX-IMN)+IMN

I2=4×IMN

最后按下式計算出ITLITU

ITL=min(I1,I2)???????????????????????????????? 2

ITU=5×ITL????????????????????????????????? 3

接下來就可以用過零率閾值IZCT及能量閾值ITL(低能量閾)和ITU(高能量閾)來進行起點及止點的判別。

先根據ITLITU算得一初始起點N1。方法為從第11幀開始,逐次比較每幀的平均幅度,N1為平均幅度超過ITL的第一幀的幀號。但若后續幀的平均幅度在尚未超過ITU之前又降到ITL之下,則原N1 不作為起始點,改記下一個平均幅度超過了ITL的幀的幀號為N1,依此類推,在找到第一個平均幅度超過ITU的幀時停止比較。

N1只是根據能量信息找到的起點,還未必是語音的精確起點。這是由于語音的起始段往往存在著能量很弱的清輔音,僅依靠能量很難把它們和無聲區分開。但研究發現它們的過零率明顯高于無聲段,因此可以利用過零率這個參數來精確判斷清輔音與無聲區二者的分界點。

N1確定后,從N1幀向N1-25幀搜索,依次比較各幀的過零率,若有3幀以上的ZCRIZCT,則將起點N1定位滿足ZCRIZCT的最前幀的幀號,否則即以N1為起點。這種起點檢測法也稱為雙門限前端檢測算法。

語音結束點N2的檢測方法與檢測起點相同,從后向前搜素,找一第一個平均幅度低于ITL、且其前向幀的平均幅度在超出ITU前沒有下降到ITL一下的幀的幀號,記為N2,隨后根據過零率向N2+25幀搜索,若有3幀以上的ZCRIZCT,則將結束點N2定為滿足ZCRIZCT的最后幀的幀號,否則即以N2作為結束點。

在這篇文章中,作者對上述經典的雙門限端點檢測法進行如下了改進。

(1)在得到IZCT后加一個處理步驟,令
???? IZCT=max[IZCT',15]????????????????????????? 4

???? 式中IZCT'為上文中提到的IZCT。這是因為:起始噪音段的有可能為0或十分接近0的數值,這樣根據式(1)計算得到的IZCT可能為01這樣很小的數,此時如果后續噪音幀中過零率略有增大,則很容易使系統過度敏感從而導致起點識別不準。而根據我們的觀察和統計,語音起始段如為能量很小的清輔音,其過零率值在連續10余幀一般都超過20,而噪音則只會在偶爾的情況下有極少數幀的過零率超過20且不連續。

(2)將高、低能量閾值的計算改為如下形式:
?ITL=max[3.1×IMA,a]??????????????????????????? (5)

?ITU=2.5×ITL?????????????????????????????????? (6)
式(5)中得IMA是前10幀的平均幅值;a是根據大量語音的能量通過統計得出的數據,在我們的系統中所用的a大致等于語音平均能量E1/9E的計算式為:

因為在能量閾值ITLITU的計算中,式(2)所用到的I1I2均由起始各幀平均幅值中最大和最小值IMXIMN決定。經過對實際采樣數據的觀察可以看到,當在正常室內環境下,前10幀背景噪音平均幅值中最小的往往十分接近于0,而某些幀的波形中有時會有毛刺存在,導致該幀的平均幅值很大,這樣,IMXIMN常常可能差距很大,甚至可以達到好幾個數量級,在此情況下,由于I1很大而I2很小,用式(2)得到的ITL將完全由IMN決定。該理論的提出者的本意應該是忽略突發毛刺的影響,但它存在一個明星缺陷就是如果10幀中只要有1幀的平均幅值很小,則其余9幀數據將變得毫無意義。此時得到的低能量閾值ITL極小,從而導致系統過度敏感,十分容易將噪聲誤判為語音,使系統識別率因起點識別不準而大受影響。經過大量語音數據的統計分析和實驗,作了以上修改。這樣既利用了噪聲的平均能量,又可以防止得到的ITL過低導致的問題。式(5)中的系數3.1和式(6)中的系數2.5均為通過大量統計和實驗得到的經驗值。

(3)在結束點的檢測上,將對過零率的檢測忽略掉,并將高低能量閾值合并為一個閾值,該閾值取為ITL1.2倍。這樣改動的依據是:輔音能量弱,過零率高,元音過零率低而能量高,在漢語中的字只有C-V結構或V結構,均以元音結尾,在結尾再次進行過零率檢測將毫無益處,甚至適得其反。而漢語語音信息最強的部分為前面和中間的部分,在結尾部分往往只是信息弱時間長的拖尾音,將過多的拖尾音取入識別匹配所用的熱證序列對識別沒有很大貢獻,甚至可能有害。而這些拖尾音的能量通常逐漸減弱,因此適當提高低能量閾ITL將有助于截斷過多的拖尾音。

經過改進后的端點檢測算法,其識別準確率由原來的80%左右上升至95%左右。

4 提取特征參數

語音信號經預處理后,接下來很重要的一環就是特征參數提取。對特征參數的要求是:

1)提取的特征參數能有效地代表語音特征,具有很好的區分性;

2)各階參數之間有良好的獨立性;

?3)特征參數要計算方便,最好有高效的計算方法,以保證語音

識別的實時實現。

在訓練階段,將特征參數進行一定的處理之后,為每個詞條得到一個模型,保存為模版庫。在識別階段,語音信號經過相同的通道得到語音參數,生成測試模版,與參考模版進行匹配,將匹配度最高的參考模版作為識別結果。同時還可以在很多先驗知識的幫助下,提高識別的準確率。

下面要進行討論的問題是提取何種特征參數以及如何提取特征參數。

目前常用的特征參數包括線性預測倒譜系數LPCC和梅爾倒譜系數MFCC等。LPCC參數和MFCC參數分別根據人的發聲原理和聽覺感知原理,從人的聲音提取出能量分布譜,從中獲得聲紋的獨特特征,這兩種參數在實用中得到了較好的結果。(話者識別系統中語音特征參數的研究與仿真解放軍理工大學通信工程學院,南京)

LPCC參數是基于語音的線性預測分析的,線性預測分析從人的發聲機理入手,通過對聲道的短管級聯模型研究,認為系統的傳遞函數符合全極點數字濾波器的形式,從而n時刻的信號可以用前若干時刻的信號的線性組合來估計。通過使實際的采樣值和線性預測值之間的均方差最小(Least Mean SquareLMS),即可得到線性預測系數。對線性預測系數的計算方法有自相關法(德賓Durbin法)、協方差法、格型法等等。計算的快速有效使得線性預測語音特征被派生的聲學特征還有線譜對LSPPARCOR系數(反射系數)、對數面積比系數等。

在獲得濾波器的線性預測系數后,可以用一個遞推公式得到其倒譜,公式為:,i=1,2...P

式中,ai為線性預測系數,Ci為所求的LPCC參數,P是參數的個數。

LPCC參數比較徹底地去掉了語音產生過程中的激勵信息,主要反映聲道特性,而且只需十幾個倒譜系數就能較好地描述語音的共振峰特性,計算量小;其缺點是對輔音的描述能力較差,抗噪聲性能也較弱。

不同于LPCC通過對人的發聲機理的研究而得到的聲學特征,MFCC參數是基于人的聽覺特性的,它利用人聽覺的臨界帶效應,在語音頻譜范圍內設置若干個帶通濾波器,每個濾波器具有三角形或正弦形濾波特性,然后將語音能量譜通過該濾波器組,求各個濾波器輸出,對其取對數,并作離散余弦變換(DCT),即可得到MFCC系數。

計算MFCC參數的具體步驟如下圖1所示。

1 MFCC參數的提取

對輸入語音信號分幀、加窗,然后作快速傅里葉變換(FFT),獲得頻譜分布信息。

將頻域信號通過如圖2所示的按Mel頻標分布排列的三角濾波器組,將線性頻標變換為Mel頻標。(求頻譜幅度的平方得到能量譜)

將各濾波器的輸出取對數,作DCT變換,得到MFCC系數。

式中N為三角濾波器個數,Xk為第k個濾波器的輸出,{Ci}i=1,2,...P即為所求的MFCC參數,P是其階數。

計算MFCC參數涉及FFT、取對數和DCT等運算,運算量比LPCC參數要大,用C語言在計算機上做模擬時其運算時間是LPCC的近十倍,但MFCC參數由于充分考慮了人耳的聽覺特性,因而在有信道噪聲和頻譜失真的情況下,仍具有較高的識別精度,它的抗噪能力也比較強。而LPCC參數以假定所處理的信號模型為全極點模型為前提,因此對動態特性較強的輔音以及含噪語音描述能力較差。(由于現在的DSP芯片對FFT提供了硬件支持,而DCT變換中得余弦運算可通過查表完成,因而在DSP芯片上計算MFCC參數仍然很快的。)

此外還有一種感知性預測參數PLPPLP參數仍用德賓法計算LPC參數,但在計算自相關參數時用的也是對聽覺激勵的對數能量譜進行DCT的方法。MFCC參數和PLP參數都是建立在對人的聽覺感知機理的研究基礎上,其性能也接近。

5 匹配算法(DTW

參考論文《基于DTWHMM的語音識別算法仿真及軟件設計》

說話人對同一詞的兩個發音不可能完全相同,這些差異不僅包括音強的大小、頻譜的偏移,更重要的是發音時音節的長短不可能完全相同,而且兩次發音的音節往往不存在線性對應關系。考慮到語音識別的過程中,用戶進行訓練或者識別時,即使每次盡量以同樣的方式說同一個詞匯,其持續時間的長度也會隨機改變,而且每個詞內部各個部分(比如元音、輔音)的相對時長也是隨機改變的。因此,如果直接用特征矢量序列來進行相似性比較,其效果不是最佳的,需要對特征參數序列重新進行時間校準,采用動態時間調整(DTW)方法可以有效地解決這個問題。該算法基于動態規劃(DP)的思想,解決了發音長短不一的模板匹配問題,是語音識別中出現較早,較為經典的一種算法。

模板匹配之前,需要先采用端點檢測算法確定語音的起點和終點,已存入模板庫的各個詞條稱為參考模式,一個參考模板可以表示為:{R(1),R(2),...,R(m),...,R(M)}m為訓練語音幀的時序標號,m=1為起點語音幀,m=M為終點語音幀。所要識別的一個輸入詞條語音稱為測試模式,可以表示為:{T(1),T(2),...,T(n),...,T(N)}n為測試語音幀的時序標號,n=1為起點語音幀,n=N為終點語音幀。參考模式與測試模式采用相同類型的特征矢量、幀長及幀移。

假設測試和參考模式分別用TR表示,為了比較它們之間的相似度,可以計算它們之間的失真,失真越小相似度越高。測試模板T和參考模板R之間的失真表示為:D[T,R]。為了計算這一失真,應從TR中每個對應幀之間的失真算起,假設nm分別是TR中任意選擇的幀號,則這兩幀特征矢量之間的失真用d[T(n),R(m)]來表示。

對于特征矢量之間的失真度,有多種度量的方法。為了簡單和便于處理,通常用歐式距離(歐幾里德距離)或其變形形式來進行度量,下面的公式給出了歐氏距離度量失真度的計算方法:

其中,T(n)={t1,t2,...,tp}R(m)={r1,r2,...,rp}為幀T(n)R(m)對應的特征矢量,p為特征矢量的維數。

計算總體失真D[T,R]時,需要考慮參考模式幀數與測試模式幀數是否相等的情況:若N=M,這時可以依次計算n=m=1,...,n=m=n,各幀之間的失真并取和,即可求得總失真。否則,則要考慮將T(n)R(m)對齊。這時需要將其中幀數較小的序列用線性擴張的方法映射到較大的幀序列上,或者將其中幀數較大的序列用線性壓縮的方法映射到較小的幀序列上,然后再分別計算各幀的失真,從而求得總失真。但是這樣的計算沒有考慮到語音中各個階段在不同的情況下的持續時間會產生或長或短的變化,因而使得識別效果不佳,因而更多地采用動態規劃(DP)的方法。

如果把測試模式的各個幀號n=1~N在一個二維直角坐標系中得橫軸上標出,把參考模式的各個幀號m=1~M在坐標系的縱軸上標出,通過這些表示幀號的整數坐標畫出一些縱橫線即可形成一個網絡,網絡中得每個交叉點(n,m)表示測試模式中某一幀與訓練模式中某一幀的交匯點。DP算法可以歸結為尋找一條通過此網絡中若干個點的路徑,路徑通過的格點即為測試和參考模式中進行失真度計算的幀號。路徑不是任意選擇的,首先,考慮到實際語音的發音情況,雖然語音的發音快慢會有所變化,但是各個部分的先后次序不可能顛倒,因此上述路徑必然從左下角出發,在右上角結束。如下圖所示。

動態時間規整算法搜索路徑

???? 其次,為了防止盲目的搜索,一般不允許與橫軸或縱軸過分傾斜的路徑,一般對路徑斜率的最大、最小值做出規定,通常最大斜率為2,最小斜率為1/2

DTW算法的實質就是運用動態規劃的思想,利用局部最佳化的處理來自動尋找一條路徑,沿著這條路徑,兩個特征矢量之間的累積失真量最小,即是要尋找一條通過各個交叉點的從起始點到終止點的最佳路徑,是的該路徑上所有交叉點的幀失真度中和達到最小。

為了描述這條路徑,假設路徑通過的所有格點依次為(n1,m1,...,(nN,mN),其中(n1,m1=1,1),(nN,mN)=N,M)。路徑可以用函數描述,其中ni=ii=1,2,...,N,,。為了使路徑不至于過分傾斜,要按照下圖對搜索路徑進行約束:斜率應在0.5~2的范圍內,如果當前格點為(ni,mi),則前一格網格點只可能是下列三種情況之一:

DTW搜索路徑約束條件

用η表示上述三個條件,求最佳路徑的問題可以歸結為滿足約束條件η時,求最佳路徑函數使得路徑的積累距離達到最小值。搜索路徑方法如下:搜索從(n1,n2)點出發,可以展開若干條滿足η的路徑,假設可計算每條路徑達到(nN,mN)點時的總的積累距離,具有最小累積距離的路徑即為最佳路徑。易于證明,限定范圍內任一格點(ni,mi)只可能由一條搜索路徑通過。對于(ni,mi),其可達到該店的前一格格點只可能是(ni-1,mi)、(ni-1,mi-1)、(ni-2,mi-1,那么(ni,mi)一定選擇這三個距離中最小者所對應的格點作為其前續格點,并將通過該格點的路徑延伸到(ni,mi),這時此路徑的累積距離為:

其中由下式決定:

這樣可以從(n1,m1=1,1)出發搜索(n2,m2),再搜索(n3,m3......,對每個(nimi)都存儲相應的前一格點(ni-1,mi-1)及相應的幀匹配距離d[ni,mi],搜索到(nN,mN)時,只保留一條最佳路徑。這套DP算法便是DTW算法。

?

?

?

?

?

總結

以上是生活随笔為你收集整理的语音识别过程分析2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。