《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于遺傳算法和小波神經(jīng)網(wǎng)絡的語音識別研究
基于遺傳算法和小波神經(jīng)網(wǎng)絡的語音識別研究
來源:微型機與應用2011年第16期
斯蕓蕓,徐道連,周卓然
(重慶大學 光電工程學院,重慶400030)
摘要: 小波神經(jīng)網(wǎng)絡算法(WNN)易陷入局部極小,收斂速度慢,全局搜索能力弱,而遺傳算法(GA)具有高度并行、隨機、自適應搜索性能和全局尋優(yōu)的特點。因此,將遺傳算法和小波神經(jīng)網(wǎng)絡結(jié)合起來形成一種訓練神經(jīng)網(wǎng)絡的混合算法——GA-WNN算法。仿真實驗結(jié)果表明,該算法有效地縮短了識別時間,提高了網(wǎng)絡訓練速度和語音的識別率。
Abstract:
Key words :

摘  要: 小波神經(jīng)網(wǎng)絡算法(WNN)易陷入局部極小,收斂速度慢,全局搜索能力弱,而遺傳算法(GA)具有高度并行、隨機、自適應搜索性能和全局尋優(yōu)的特點。因此,將遺傳算法和小波神經(jīng)網(wǎng)絡結(jié)合起來形成一種訓練神經(jīng)網(wǎng)絡的混合算法——GA-WNN算法。仿真實驗結(jié)果表明,該算法有效地縮短了識別時間,提高了網(wǎng)絡訓練速度和語音的識別率。
關鍵詞: 語音識別;小波神經(jīng)網(wǎng)絡;遺傳算法;GA-WNN

   語音識別是要讓機器“聽懂”人類的語音并做出正確的反應,其終極目標是實現(xiàn)人類與機器的自然交流。隨著科學技術的發(fā)展,語音識別技術正逐步形成一套比較完整的理論體系,其實用產(chǎn)品也相繼推出。
    現(xiàn)代語音識別技術以人工神經(jīng)網(wǎng)絡(ANN)為主要發(fā)展趨勢,自上世紀90年代,神經(jīng)網(wǎng)絡已經(jīng)成為語音識別的一條重要途徑[1]。目前具有代表性的神經(jīng)網(wǎng)絡主要有BP神經(jīng)網(wǎng)絡和RBF神經(jīng)網(wǎng)絡。為了提高網(wǎng)絡訓練速度和語音識別的識別率,神經(jīng)網(wǎng)絡模型不斷地被優(yōu)化。小波神經(jīng)網(wǎng)絡(WNN)是BP神經(jīng)網(wǎng)絡的一種優(yōu)化模型,它采用小波函數(shù)作為激勵函數(shù),具有以下一些優(yōu)點:(1)高度的并行性;(2)高度的非線性映射功能;(3)十分強的自適應功能;(4)良好的容錯性和聯(lián)想記憶功能;(5)小波函數(shù)具有時頻局部特性和變焦特性[2]。目前神經(jīng)網(wǎng)絡方法對網(wǎng)絡隱層節(jié)點數(shù)、連接權值(包括閾值)以及學習率的依賴性較大,容易導致陷入局部極小、收斂速度慢,甚至不收斂的狀況。而遺傳算法具有很強的宏觀搜索能力,能以較大的概率找到全局最優(yōu)解[3,4]。為了克服神經(jīng)網(wǎng)絡的不足,本文將兩者結(jié)合在一起,提出了一種訓練神經(jīng)網(wǎng)絡的混合算法——GA-WNN算法。
1 語音識別的基本原理
    語音識別系統(tǒng)實質(zhì)上是一種模式識別系統(tǒng),與常規(guī)模式識別系統(tǒng)一樣包括特征提取、模式匹配、參考模式庫等三個基本單元?;谏窠?jīng)網(wǎng)絡的語音識別系統(tǒng)識別功能要經(jīng)過從特征參數(shù)提取到應用識別算法進行識別的過程,它的系統(tǒng)原理框圖如圖1所示。


    由圖1可知,要進行語音識別,首先要對輸入的語音信號進行預處理。預處理主要包括預加重、加窗、分幀和端點檢測等過程。
    (1)預加重:預加重的主要目的是提升語音信號中的高頻部分進而減小噪聲(主要是50 Hz或60 Hz的工頻干擾),提高信噪比。本文選擇用預加重數(shù)字濾波器來實現(xiàn)對語言信號的預加重,若S(n)為預加重前語音信號,則經(jīng)過預加重濾波器的信號R(n)為:
    
    (2)加窗和分幀:語音信號隨時間變化而變化,研究表明語音信號通常可以假定為短時平穩(wěn),通常認為在10 ms~30 ms時間長度內(nèi)是相對平穩(wěn)的。分幀可用窗函數(shù)乘以語音信號來形成加窗的語音信號。本文選用漢明窗(Hamming)作為加窗函數(shù),用漢明窗將語音切割成長短一致的語音幀,每幀語音采樣點數(shù)為256點,幀移為128點。
    (3)端點檢測:端點檢測的目的是判斷找到有用語音信號的起點和終點,然后根據(jù)語音段的起點和終點,分離出真正有用的語音信號,為后續(xù)的語音識別奠定可靠的基礎。本文采用目前比較流行的雙門限端點檢測算法,通過語音信號的短時平均能量和短時過零率來判斷語音信號的起點和終點。圖2和圖3分別是一個數(shù)字“0”的時域參數(shù)分析及其端點檢測結(jié)果。語音信號是用多媒體聲卡在比較安靜的實驗室環(huán)境下錄制的,其信噪比較高,雙門限端點檢測算法可以較準確地判斷出語音信號的起始位置,由圖可知,實驗結(jié)果與理論分析一致。

 

 

    語音信號經(jīng)過預處理后,將進行語音識別中的一個重要環(huán)節(jié)——特征參數(shù)提取。好的特征參數(shù)不僅能很好地反應語音特征,而且計算方便,這對系統(tǒng)的實現(xiàn)非常重要。常用的特征參數(shù)包括線性預測系數(shù)(LPC)、線性預測倒譜系數(shù)(LPCC)和美爾頻率倒譜系數(shù)(MFCC)。綜合三者的優(yōu)缺點,本文選用MFCC作為研究的特征參數(shù)。每幀語音信號分別提取12維的MFCC作為特征向量,為減少運算量,每個語音信號只選擇中間的6幀來進行實驗。
2 語音識別中的小波神經(jīng)網(wǎng)絡構(gòu)造
    小波神經(jīng)網(wǎng)絡是以小波函數(shù)為神經(jīng)元激勵函數(shù)的前饋網(wǎng)絡模型,與基于Sigmoid函數(shù)的BP網(wǎng)絡相比,具有較強的函數(shù)逼近能力和容錯能力,同時具有結(jié)構(gòu)收斂可控性和收斂速度快等優(yōu)點。小波神經(jīng)網(wǎng)絡構(gòu)造主要包括網(wǎng)絡層數(shù)、輸入節(jié)點數(shù)、輸出節(jié)點數(shù)、隱層節(jié)點數(shù)、初始權值、學習速率及期望誤差的選取[5,6]。
    (1)網(wǎng)絡層數(shù):理論上早已證明,具有偏差和至少一個隱含層加上一個線性輸出網(wǎng)絡就能夠逼近任何有理函數(shù)。本文是針對數(shù)字孤立詞的識別,小波神經(jīng)網(wǎng)絡采用3層結(jié)構(gòu),包括一個輸入層、一個隱含層和一個輸出層。輸入層激勵函數(shù)為線性變換(輸出=輸入),隱含層激勵函數(shù)為小波函數(shù),輸出層激勵函數(shù)為Sigmoid。
    (2)輸入節(jié)點數(shù):輸入層節(jié)點數(shù)與所選取的語音信號特征參數(shù)的維度和階數(shù)有關。本文中每個語音信號都得到相應的6個12維一階MFCC系數(shù),故輸入層的節(jié)點數(shù)為6×12=72。
    (3)輸出節(jié)點數(shù):輸出層的節(jié)點數(shù)取決于輸出數(shù)據(jù)的類型和表示該類型所需的數(shù)據(jù)大小。本文數(shù)字孤立詞識別的10個數(shù)是0~9,所以設定輸出節(jié)點數(shù)為10,分別對應于0~9。
    (4)隱層節(jié)點數(shù):通過采用一個隱層,增加其神經(jīng)元個數(shù)的方法來達到網(wǎng)絡訓練精度的提高。隱層的神經(jīng)元個數(shù)選擇可以通過仿真試驗來確定,也可以用以下公式[5]作為參考:
    
其中,m為輸入層節(jié)點數(shù),n為輸出層節(jié)點數(shù),a為取1~10的常數(shù)。本文采用公式(2)來確定隱層節(jié)點數(shù),已知輸入節(jié)點數(shù)為72,輸出節(jié)點數(shù)為10,a取常數(shù)5,因此隱層節(jié)點數(shù)n1=14。
    (5)初始權值:由于系統(tǒng)是非線性的,初始值對學習是否達到局部最小、是否能收斂以及訓練時間的長短關系很大。一般總是希望經(jīng)過初始加權后的每個神經(jīng)元的輸出值都接近于零,所以,通常初始值取(-1,1)之間的隨機數(shù)。
    (6)學習速率:學習速率決定循環(huán)訓練中所產(chǎn)生的權值變化量。大的學習速率可能導致系統(tǒng)的不穩(wěn)定,小的學習速率雖然會導致收斂速度慢,不過能保證網(wǎng)絡的誤差值不跳出誤差表面的低谷而最終趨于最小值。所以一般情況下,學習速率的選取值范圍在0.01~0.8之間。本文設定學習速率為0.8。
    (7)期望誤差的選?。涸谠O計網(wǎng)絡的訓練過程中,期望誤差也應通過對比選取一個合適的值,可以同時對兩個不同時期的期望誤差的網(wǎng)絡進行訓練,通過綜合考慮來確定。本文研究的期望誤差為0.001[7]。
3 基于遺傳算法和神經(jīng)網(wǎng)絡的語音識別
    小波神經(jīng)網(wǎng)絡的學習對網(wǎng)絡隱層節(jié)點數(shù)、初始權值(包括閾值)、伸縮和平移因子以及學習速率的依賴性較大,致使其全局搜索能力弱,易陷入局部極小,收斂速度慢甚至不收斂,而遺傳算法具有很強的宏觀搜索能力,能以較大的概率找到全局最優(yōu)解,因此把遺傳算法和小波神經(jīng)網(wǎng)絡相結(jié)合,采用遺傳算法對網(wǎng)絡的初始權值(包括閾值)進行優(yōu)化處理,用小波神經(jīng)網(wǎng)絡完成給定精度的學習。
3.1 遺傳算法實現(xiàn)的關鍵技術
    (1)編碼方案
    編碼對網(wǎng)絡進化過程的性能和效率影響很大,因此,編碼技術是連接權值進化過程中需要解決的首要問題和關鍵步驟。考慮到網(wǎng)絡參數(shù)的規(guī)模較大,若遺傳算法采用二進制編碼,會導致染色體長度偏長、搜索空間大、搜索效率低等問題,本文中小波神經(jīng)網(wǎng)絡的節(jié)點數(shù)和結(jié)構(gòu)已經(jīng)固定,可以采用實數(shù)編碼方案,將網(wǎng)絡的權值和各節(jié)點的閥值依次排列得到一個向量。
    (2)適應度函數(shù)的選擇
    衡量網(wǎng)絡性能的主要指標是網(wǎng)絡的實際輸出與期望輸出值之間的誤差平方和。神經(jīng)網(wǎng)絡中誤差平方和越小,則表示該網(wǎng)絡性能越好。
    定義適應度函數(shù)為:
  
    (3)遺傳操作
    選擇算子:從當前種群中選擇優(yōu)勝(即適應度高)個體而淘汰劣質(zhì)個體。目前常用的選擇算子有以下幾種:適應度比例選擇法、最佳個體保存法、期望值法與排序選擇法等。本文采用適應度比例選擇法來進行選擇操作[3]。
    交叉算子:交叉是通過替換重組兩個父代個體的部分結(jié)構(gòu)而產(chǎn)生新的個體。在遺傳算法中,交叉操作是最主要的遺傳操作。交叉率Pc是指各代中交叉產(chǎn)生的后代數(shù)與種群規(guī)模之比,這個概率表明有Pc×pop_size(種群規(guī)模)個染色體來進行交叉操作。常用的交叉率取值范圍為0.6~1.0,在本文中Pc取0.6。
    變異算子:變異就是對群體中的個體串的某些基因位上的基因值作變動。變異率是指種群中變異的基因數(shù)占總基因數(shù)的比例,其值控制了新基因引入的比例,這個概率表明有Pm×pop_size(種群規(guī)模)個染色體來進行變異操作。常用變異率的數(shù)量級范圍為0.1~0.001,在本文中Pm取0.1。
    (4)終止條件
    采用給定的迭代次數(shù)和適應度來控制遺傳算法的終止。如果迭代次數(shù)已經(jīng)用完或某代的最優(yōu)個體的適應度值大于等于預先給定的值,算法就結(jié)束。
3.2 GA-WNN算法實現(xiàn)的步驟和流程
    采用遺傳算法來優(yōu)化小波神經(jīng)網(wǎng)絡的權值和閾值,具體實現(xiàn)的步驟如下:
    (1)設定參數(shù):種群規(guī)模pop_size=100,交叉概率Pc=0.8,變異概率Pm=0.1。
    (2)隨機產(chǎn)生一組實值串種群,每一個個體由網(wǎng)絡的初始權值和閥值構(gòu)成。
    (3)對實值串中的個體進行解碼,生成相應的網(wǎng)絡結(jié)構(gòu),網(wǎng)絡結(jié)構(gòu)為72-14-10。
    (4)運行網(wǎng)絡,根據(jù)式(4)計算群體個體的適應度值,評價網(wǎng)絡性能。
    (5)根據(jù)適應度大小,通過相應的選擇算法進行選擇操作,以交叉概率Pc執(zhí)行交叉操作,以遺傳概率Pm執(zhí)行變異操作,保留適應度大的個體產(chǎn)生下一代種群,形成下一代網(wǎng)絡。
    (6)如果網(wǎng)絡誤差滿足要求或達到一定的進化代數(shù),則停止進化,輸出結(jié)果;否則重復操作步驟(3)~步驟(5)。
    (7)將GA優(yōu)化后的初始權值(包括閾值)作為小波神經(jīng)網(wǎng)絡使用的參數(shù)。
3.3 基于GA-WNN算法的語音識別過程
    將本文提出的新算法(GA-WNN算法)應用于語音識別,具體的識別過程如下:
    (1)語音數(shù)據(jù)由三男二女的發(fā)音(0~9共10個數(shù)字的普通話發(fā)音)數(shù)據(jù)組成,每個音每人發(fā)20遍,共計1 000次發(fā)音,其中以每人每個發(fā)音的前10次作為訓練樣本,后10次作為測試樣本。
    (2)用數(shù)字濾波器分別對兩組語音數(shù)據(jù)進行預加重,再通過加漢明窗對語音信號進行分幀,然后逐幀計算語音信號的MFCC系數(shù),并將其保存。
    (3)構(gòu)造一個三層的小波神經(jīng)網(wǎng)絡,設置初始的網(wǎng)絡參數(shù),網(wǎng)絡結(jié)構(gòu)為72-14-10,取學習速率為0.8,訓練誤差精度為0.001。
    (4)對每個人的語音特征系數(shù)用WNN算法來訓練網(wǎng)絡,同時用遺傳算法來優(yōu)化神經(jīng)網(wǎng)絡的權值,直到網(wǎng)絡收斂并達到期望的訓練誤差精度0.001,保存最優(yōu)權值。每個語音信號對應一組網(wǎng)絡權值。
    (5)在網(wǎng)絡的輸入層中輸入語音特征參數(shù)系數(shù),分別調(diào)用已保存的網(wǎng)絡權值計算出結(jié)果得出網(wǎng)絡輸出矩陣,與期望輸出矩陣逐一比較,誤差最小的那個語音信號為識別結(jié)果。
4 仿真實驗結(jié)果
    為了驗證GA-WNN算法的優(yōu)越性,對算法的性能進行了測試,并與小波神經(jīng)網(wǎng)絡算法的性能進行了比較。
    仿真實驗是針對非特定人的孤立詞數(shù)字語音識別,語音數(shù)據(jù)由三男二女的發(fā)音(0~9共10個數(shù)字的普通話發(fā)音)數(shù)據(jù)組成,本實驗是在PC機上進行,通過PC話筒輸入,每個音每人發(fā)20遍,共計1 000次發(fā)音,其中以每人每個發(fā)音的前10次作為訓練樣本,后10次作為測試樣本。
    經(jīng)過試驗仿真,得到實驗結(jié)果如表1。對實驗結(jié)果進行對比分析,發(fā)現(xiàn)基于GA-WNN算法的語音識別系統(tǒng)得到了相對較高的識別率,基于GA-WNN學習算法只迭代了105次便使得誤差為0.001,而小波神經(jīng)網(wǎng)絡算法需要迭代741次才達到相同的誤差精度。由此可見,相比小波神經(jīng)網(wǎng)絡算法,基于GA-WNN算法,無論是在精度上還是收斂速度上,都取得了更好的效果,同時該算法還避免了局部極小,從而能快速地找到最優(yōu)解,降低學習時間。

    從實驗結(jié)果得出:對于孤立詞的識別,WNN的平均識別率為88.6%,而GA-WNN的平均識別率達到94.0%,明顯高于WNN的識別率,驗證了理論的正確性。
    將遺傳算法和小波神經(jīng)網(wǎng)絡結(jié)合起來形成GA-WNN算法,仿真實驗結(jié)果表明,此算法在孤立詞的識別中不僅縮短了識別時間還有效地提高了系統(tǒng)的識別率。該算法還可以應用于圖像處理或其他領域,需要作進一步的驗證。
參考文獻
[1] ROBERT E U.Application of artificial neural networks in  industrial technology[J].IEEE Trans,1994,10(3):371-377.
[2] 唐軍.基于HMM與小波神經(jīng)網(wǎng)絡的語音識別系統(tǒng)研究[D].南京:南京理工大學,2007.
[3] BRINDLE A.Genetic algorithms for function optimization [M].Ph.DDissertation, University of Alberta,1981.
[4] SELOUANI TS A,SHAUGHNESSY D O.Robustness of  speeeh recognition using genetie algorithm and a mel-cepstral subspace approach[J].ICASSP,2004,12(2):201-204.
[5] 趙峰.遺傳神經(jīng)網(wǎng)絡在語音識別中的研究[J].電腦知識與技術,2008,3(4):774-776.
[6] 劉俊華,顏運昌,荊琦.遺傳算法與神經(jīng)網(wǎng)絡在語音識別中的應用[J].機電工程,2007,24(12):20-24.
[7] 韓志艷,王健,倫淑嫻.基于遺傳小波神經(jīng)網(wǎng)絡的語音識別分類器設計[J].計算機科學,2010,37(11):243-246.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。