基於DTW的孤立詞語音識別系統(文檔+MATLAB+GUI)

 

            基於DTW的孤立詞語音識別系統(文檔+MATLAB+GUI)


引言.......................................................................................... 1

1  緒論.................................................................................... 3

1.1 語音識別的概念....................................... 3

1.2 語音識別的發展簡史................................... 3

1.3 本文的主要工作和組織結構............................. 4

2  孤立詞語音識別系統概述................................................ 5

2.1 孤立詞語音識別的分類................................. 5

2.2 孤立詞語音識別系統基本構成........................... 6

2.3 語音識別的基元選擇................................... 7

2.4 語音識別的發展趨勢................................... 8

3 孤立詞語音識別的系統設計.............................................. 9

3.1 方案設計............................................ 10

3.1.1 mfcc提取特徵參數設計.............................. 10

3.1.2 端點檢測設計...................................... 11

3.1.3 DTW算法設計....................................... 13

3.1.4 錄音函數設計...................................... 14

3.1.5 訓練函數設計...................................... 15

3.2 DTW算法............................................. 15

3.2.1匹配模式........................................... 16

3.2.2 DTW算法原理....................................... 16

3.3 孤立詞語音信號的預處理.............................. 20

3.3.1 語音信號採集...................................... 20

3.3.2 語音信號分幀...................................... 21

3.3.3 語音信號的預加重和加窗............................ 21

3.3.4 語音信號的端點檢測................................ 22

3.4 特徵參數的提取...................................... 24

4  孤立詞語音識別系統的實現.......................................... 26

4.1 初始GUI界面的設計.................................. 26

4.2 語音識別界面設計.................................... 28

5  結論.................................................................................. 31

附  錄.................................................................................... 34


下面是本內容的核心部分,有需要完整代碼和文章的加QQ245051943獲取。

 

 孤立詞語音信號的預處理

語音信號的預處理模塊一般包括預濾波、採樣和量化、分幀、加窗、預加重、端點檢測等。在不同的系統中對各子模塊會有不同的要求,如在嵌入式語音識別系統中一般要求有防混疊濾波電路、A/D轉換電路和採樣濾波電路等,而在計算機上實驗時則可由音頻採集卡完成,無需實驗者親自動手。

3.3.1 語音信號採集

在Matlab環境中語音信號的採集可使用wavrecord(n,fs,ch,dtype)函數錄製,也可使用Windows的“錄音機”程序錄製成.wav文件然後使用wavread(file)函數讀入。爲了進行批量的的訓練和識別處理,本系統的訓練語音和識別語音全部使用“錄音機”程序預先錄製。如圖3.5所示爲“電子”的訓練語音電子.wav的信號完整語音波形。

                                               

                                                               圖3.5 語音電子.wav的信號波形圖

3.3.2 語音信號分幀

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

在Matlab環境中的分幀最常用的方法是使用函數enframe(x,len,inc),其中x爲語音信號,len爲幀長,inc爲幀移。在本系統中幀長取240,幀移取80。

3.3.3 語音信號的預加重和加窗

對於語音信號的頻譜,通常是頻率越高幅值越小,在語音信號的頻率增加兩倍時,其功率譜的幅度下降6dB。因此必須對高頻進行加重處理,一般是將語音信號通過一個一階高通濾波器1-0.9375z-1,即爲預加重濾波器。其目的是濾除低頻干擾,特別是50Hz到60Hz的工頻干擾,將對語音識別更爲有用的高頻部分進行頻譜提升。在計算短時能量之前將語音信號通過預加重濾波器還可起到消除直流漂移、抑制隨機噪聲和提升清音部分能量的效果。預加重濾波器在Matlab中可由語句x=filter([1-0.9375],1,x)實現。

爲了保持語音信號的短時平穩性,利用窗函數來減少由截斷處理導致的Gibbs效應。用的最多的三種爲矩形窗、漢明窗(Hamming)和漢寧窗(Hanning)。其窗函數如式3-8、3-9、3-10所示,式中的N爲窗長,一般等於幀長。

   窗口的選擇非常重要,不同的窗口將使能量的平均結果不同。矩形窗的譜平滑,但波形細節丟失;而漢明窗則剛好相反,可以有效克服泄漏現象,具有平滑的低通特性。因此,在語音的時域處理方法中,一般選擇矩形窗,而在語音的頻域處理方法中,一般選擇漢明窗或漢寧窗。在Matlab中要實現加窗即將分幀後的語音信號乘上窗函數,如加漢明窗即爲x=x.*hamming(N)。在語音識別系統中我們主要也是採用漢明窗來實現語音信號的加窗。

3.3.4 語音信號的端點檢測

在基於DTW算法的語音識別系統中,無論是訓練和建立模板階段還是在識別階段,都先採用端點檢測算法確定語音的起點和終點。語音端點檢測是指用計算機數字處理技術從包含語音的一段信號中找出字、詞的起始點及結束點,從而只存儲和處理有效語音信號。對漢語來說,還可進一步找出其中的聲母段和韻母段所處的位置。語音端點檢測是語音分析、合成和識別中的一個重要環節,其算法的優劣在某種程度上也直接決定了整個語音識別系統的優劣。進行端點檢測的基本參數主要有短時能量、幅度、過零率和相關函數等。端點檢測最常見的方法是短時能量短時過零率雙門限端點檢測,近年來在此基礎上發展出的動態窗長短時雙門限端點檢測方法也被廣泛使用。

(1)短時能量

語音和噪聲的主要區別在它們的能量上,語音段的能量比噪聲段的大,語音段的能量是噪聲段能量疊加語音聲波能量的和。對第n幀語音信號的短時能量的定義爲:

爲原樣本序列在窗函數所切取出的第n段短時語音,N爲幀長。因爲在計算時使用的是信號的平方,故將作爲一個度量語音幅度值變化的函數有一個缺陷,即對高電平非常敏感。因此在許多場合會將En用下式來代替:

這樣就不會因爲取平方而造成信號的小取樣值的大取樣值出現較大差異。

本系統中窗函數爲WR(見式3-8),N爲240。圖3.6和圖3.7分別爲“電子”的訓練語音電子.wav和“北海”的訓練語音北海.wav的短時能量波形。

                                                              

                                                                       圖3.6 語音電子.wav的短時能量波形

                                                                   圖3.7 語音北海.wav的短時能量波形

(2)短時過零率

短時過零表示一幀語音信號波形穿過橫軸(零電平)的次數。對於連續語音信號,過零意味着時域波形通過時間軸;而對於離散信號,如果相鄰的取樣值的改變符號則稱爲過零。過零率就是樣本改變符號次數,定義語音信號的短時過零率爲:清音的能量多集中在較高的頻率上,它的平均過零率要高於濁音,故短時過零率可以用來區分清音、濁音以及無聲。在實際應用時並不能通過式3-13直接計算過零率,因爲在無聲段噪聲使語音波形在0值附近來回擺動,導致計算出的過零率和有聲段的區別並不十分明顯。比較簡單的解決方法是設定一個差的閾值,使不僅,還要。在本系統中經多次試驗取定=0.02。

(3)雙門限端點檢測

雙門限端點檢測顧名思義需要兩級檢測,即短時能量檢測和短時過零率檢測。在開始檢測之前需要設定4個門限,即分別爲短時能量和短時過零率各設置一個高門限和一個低門限:EHigh、ELow和ZHigh、ZLow。整個語音端點檢測分爲四部分:靜音段、過度段、語音段、結束段。在靜音段中如果能量或過零率有一個超過了其低門限,則認爲進入了過度段。在過度段中,由於參數數值較小,還不能確定是否真的進入語音段,只有兩個參數的其中一個超越了高門限才被認爲是進入語音段。當參數降至低門限則認爲進入結束。此外,還有兩種可能會引起端點檢測的誤判:一是短時噪音引起的誤判,此時則需要引入最小語音長度門限進行噪聲判定,即語音段時間小於一定數值則認定爲是噪聲,重新回到靜音段,本系統設爲20ms;二是語音中字與字的時間空隙引起的誤判,此時需要設定最大靜音長度門限來降低識別的錯誤率。

在雙門限端點檢測中4個門限的設定至關重要,門限設定的好壞將直接影響端點檢測的結果。門限值的設置還沒有一個通用可靠的方法,需要根據經驗和特定環境進行調整。常見的方法有最大值乘上某個比率、中位值乘上某個比率、最小值乘上某個常數、前三幀平均值乘上某個常數等。本系統中,,,的取值分別爲:

圖3.8和圖3.9分別是“電子”的訓練語音電子.wav和“北海”的訓練語音北海.wav的端點檢測結果,紅線之間的部分爲檢測出的語音有聲段。

                                                                       圖3.8 語音電子.wav的端點檢測結果

                                                                   圖3.9 語音北海.wav的端點檢測結果

3.4 特徵參數的提取

經過預處理的語音數據就可以進行特徵參數提取,特徵參數的好壞將直接影響系統的性能和效率,對特徵參數的要求包括:

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

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

(3)特徵參數要計算方便,最好有高效的計算方法,以保證語音識別的實時實現。

對於特徵參數的選取,我們使用MFCC的方法來提取。MFCC參數是基於人的聽覺特性利用人聽覺的屏蔽效應,在Mel標度頻率域提取出來的倒譜特徵參數。美爾頻標倒譜系數(Mel Frequency Cepstrum Coefficient,MFCC)考慮了人耳的聽覺特性,將頻譜轉化爲基於Mel頻標的非線性頻譜,然後轉換到倒譜域上。由於充分考慮了人耳的聽覺特性,而且沒有任何的前提假設,MFCC參數具有良好的識別性能和抗噪聲能力,但其計算量和計算精度要求較高。

孤立詞語音識別系統的實現

 

4.1 初始GUI界面的設計

圖形用戶界面(Graphical User Interface,簡稱GUI,又稱圖形用戶接口)是指採用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對於用戶來說在視覺上更易於接受。GUI的廣泛應用是當今計算機發展的重大成就之一,它極大地方便了非專業用戶的使用。人們從此不再需要死記硬背大量的命令,取而代之的是可以通過窗口、菜單、按鍵等方式來方便地進行操作。而嵌入式GUI具有下面幾個方面的基本要求:輕型、佔用資源少、高性能、高可靠性、便於移植、可配置等特點。

Matlab中GUI程序的設計使得使用者無需清楚的知道里面的函數是如何調用和實現的,它的操作簡單並且交互性強,有利於設計者與使用者的良好溝通。

    初始界面主要設計4個部分,包括題目、背景圖片、進入按鈕和退出按鈕。題目採用靜態文本設計,背景圖片採用外部圖片導入。初始界面如圖4.1所示。點擊“進入”按鈕進入孤立詞識別系統,退出按鈕包含交互式對話框,確認後退出整個MATLAB程序。

 


 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章