摘 要: 小波神經(jīng)網(wǎng)絡(luò)算法(WNN)易陷入局部極小,收斂速度慢,全局搜索能力弱,而遺傳算法(GA)具有高度并行、隨機、自適應(yīng)搜索性能和全局尋優(yōu)的特點。因此,將遺傳算法和小波神經(jīng)網(wǎng)絡(luò)結(jié)合起來形成一種訓(xùn)練神經(jīng)網(wǎng)絡(luò)的混合算法——GA-WNN算法。仿真實驗結(jié)果表明,該算法有效地縮短了識別時間,提高了網(wǎng)絡(luò)訓(xùn)練速度和語音的識別率。
關(guān)鍵詞: 語音識別;小波神經(jīng)網(wǎng)絡(luò);遺傳算法;GA-WNN
語音識別是要讓機器“聽懂”人類的語音并做出正確的反應(yīng),其終極目標(biāo)是實現(xiàn)人類與機器的自然交流。隨著科學(xué)技術(shù)的發(fā)展,語音識別技術(shù)正逐步形成一套比較完整的理論體系,其實用產(chǎn)品也相繼推出。
現(xiàn)代語音識別技術(shù)以人工神經(jīng)網(wǎng)絡(luò)(ANN)為主要發(fā)展趨勢,自上世紀(jì)90年代,神經(jīng)網(wǎng)絡(luò)已經(jīng)成為語音識別的一條重要途徑[1]。目前具有代表性的神經(jīng)網(wǎng)絡(luò)主要有BP神經(jīng)網(wǎng)絡(luò)和RBF神經(jīng)網(wǎng)絡(luò)。為了提高網(wǎng)絡(luò)訓(xùn)練速度和語音識別的識別率,神經(jīng)網(wǎng)絡(luò)模型不斷地被優(yōu)化。小波神經(jīng)網(wǎng)絡(luò)(WNN)是BP神經(jīng)網(wǎng)絡(luò)的一種優(yōu)化模型,它采用小波函數(shù)作為激勵函數(shù),具有以下一些優(yōu)點:(1)高度的并行性;(2)高度的非線性映射功能;(3)十分強的自適應(yīng)功能;(4)良好的容錯性和聯(lián)想記憶功能;(5)小波函數(shù)具有時頻局部特性和變焦特性[2]。目前神經(jīng)網(wǎng)絡(luò)方法對網(wǎng)絡(luò)隱層節(jié)點數(shù)、連接權(quán)值(包括閾值)以及學(xué)習(xí)率的依賴性較大,容易導(dǎo)致陷入局部極小、收斂速度慢,甚至不收斂的狀況。而遺傳算法具有很強的宏觀搜索能力,能以較大的概率找到全局最優(yōu)解[3,4]。為了克服神經(jīng)網(wǎng)絡(luò)的不足,本文將兩者結(jié)合在一起,提出了一種訓(xùn)練神經(jīng)網(wǎng)絡(luò)的混合算法——GA-WNN算法。
1 語音識別的基本原理
語音識別系統(tǒng)實質(zhì)上是一種模式識別系統(tǒng),與常規(guī)模式識別系統(tǒng)一樣包括特征提取、模式匹配、參考模式庫等三個基本單元?;谏窠?jīng)網(wǎng)絡(luò)的語音識別系統(tǒng)識別功能要經(jīng)過從特征參數(shù)提取到應(yīng)用識別算法進(jìn)行識別的過程,它的系統(tǒng)原理框圖如圖1所示。
由圖1可知,要進(jìn)行語音識別,首先要對輸入的語音信號進(jìn)行預(yù)處理。預(yù)處理主要包括預(yù)加重、加窗、分幀和端點檢測等過程。
(1)預(yù)加重:預(yù)加重的主要目的是提升語音信號中的高頻部分進(jìn)而減小噪聲(主要是50 Hz或60 Hz的工頻干擾),提高信噪比。本文選擇用預(yù)加重數(shù)字濾波器來實現(xiàn)對語言信號的預(yù)加重,若S(n)為預(yù)加重前語音信號,則經(jīng)過預(yù)加重濾波器的信號R(n)為:
(2)加窗和分幀:語音信號隨時間變化而變化,研究表明語音信號通常可以假定為短時平穩(wěn),通常認(rèn)為在10 ms~30 ms時間長度內(nèi)是相對平穩(wěn)的。分幀可用窗函數(shù)乘以語音信號來形成加窗的語音信號。本文選用漢明窗(Hamming)作為加窗函數(shù),用漢明窗將語音切割成長短一致的語音幀,每幀語音采樣點數(shù)為256點,幀移為128點。
(3)端點檢測:端點檢測的目的是判斷找到有用語音信號的起點和終點,然后根據(jù)語音段的起點和終點,分離出真正有用的語音信號,為后續(xù)的語音識別奠定可靠的基礎(chǔ)。本文采用目前比較流行的雙門限端點檢測算法,通過語音信號的短時平均能量和短時過零率來判斷語音信號的起點和終點。圖2和圖3分別是一個數(shù)字“0”的時域參數(shù)分析及其端點檢測結(jié)果。語音信號是用多媒體聲卡在比較安靜的實驗室環(huán)境下錄制的,其信噪比較高,雙門限端點檢測算法可以較準(zhǔn)確地判斷出語音信號的起始位置,由圖可知,實驗結(jié)果與理論分析一致。
語音信號經(jīng)過預(yù)處理后,將進(jìn)行語音識別中的一個重要環(huán)節(jié)——特征參數(shù)提取。好的特征參數(shù)不僅能很好地反應(yīng)語音特征,而且計算方便,這對系統(tǒng)的實現(xiàn)非常重要。常用的特征參數(shù)包括線性預(yù)測系數(shù)(LPC)、線性預(yù)測倒譜系數(shù)(LPCC)和美爾頻率倒譜系數(shù)(MFCC)。綜合三者的優(yōu)缺點,本文選用MFCC作為研究的特征參數(shù)。每幀語音信號分別提取12維的MFCC作為特征向量,為減少運算量,每個語音信號只選擇中間的6幀來進(jìn)行實驗。
2 語音識別中的小波神經(jīng)網(wǎng)絡(luò)構(gòu)造
小波神經(jīng)網(wǎng)絡(luò)是以小波函數(shù)為神經(jīng)元激勵函數(shù)的前饋網(wǎng)絡(luò)模型,與基于Sigmoid函數(shù)的BP網(wǎng)絡(luò)相比,具有較強的函數(shù)逼近能力和容錯能力,同時具有結(jié)構(gòu)收斂可控性和收斂速度快等優(yōu)點。小波神經(jīng)網(wǎng)絡(luò)構(gòu)造主要包括網(wǎng)絡(luò)層數(shù)、輸入節(jié)點數(shù)、輸出節(jié)點數(shù)、隱層節(jié)點數(shù)、初始權(quán)值、學(xué)習(xí)速率及期望誤差的選取[5,6]。
(1)網(wǎng)絡(luò)層數(shù):理論上早已證明,具有偏差和至少一個隱含層加上一個線性輸出網(wǎng)絡(luò)就能夠逼近任何有理函數(shù)。本文是針對數(shù)字孤立詞的識別,小波神經(jīng)網(wǎng)絡(luò)采用3層結(jié)構(gòu),包括一個輸入層、一個隱含層和一個輸出層。輸入層激勵函數(shù)為線性變換(輸出=輸入),隱含層激勵函數(shù)為小波函數(shù),輸出層激勵函數(shù)為Sigmoid。
(2)輸入節(jié)點數(shù):輸入層節(jié)點數(shù)與所選取的語音信號特征參數(shù)的維度和階數(shù)有關(guān)。本文中每個語音信號都得到相應(yīng)的6個12維一階MFCC系數(shù),故輸入層的節(jié)點數(shù)為6×12=72。
(3)輸出節(jié)點數(shù):輸出層的節(jié)點數(shù)取決于輸出數(shù)據(jù)的類型和表示該類型所需的數(shù)據(jù)大小。本文數(shù)字孤立詞識別的10個數(shù)是0~9,所以設(shè)定輸出節(jié)點數(shù)為10,分別對應(yīng)于0~9。
(4)隱層節(jié)點數(shù):通過采用一個隱層,增加其神經(jīng)元個數(shù)的方法來達(dá)到網(wǎng)絡(luò)訓(xùn)練精度的提高。隱層的神經(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)初始權(quán)值:由于系統(tǒng)是非線性的,初始值對學(xué)習(xí)是否達(dá)到局部最小、是否能收斂以及訓(xùn)練時間的長短關(guān)系很大。一般總是希望經(jīng)過初始加權(quán)后的每個神經(jīng)元的輸出值都接近于零,所以,通常初始值取(-1,1)之間的隨機數(shù)。
(6)學(xué)習(xí)速率:學(xué)習(xí)速率決定循環(huán)訓(xùn)練中所產(chǎn)生的權(quán)值變化量。大的學(xué)習(xí)速率可能導(dǎo)致系統(tǒng)的不穩(wěn)定,小的學(xué)習(xí)速率雖然會導(dǎo)致收斂速度慢,不過能保證網(wǎng)絡(luò)的誤差值不跳出誤差表面的低谷而最終趨于最小值。所以一般情況下,學(xué)習(xí)速率的選取值范圍在0.01~0.8之間。本文設(shè)定學(xué)習(xí)速率為0.8。
(7)期望誤差的選?。涸谠O(shè)計網(wǎng)絡(luò)的訓(xùn)練過程中,期望誤差也應(yīng)通過對比選取一個合適的值,可以同時對兩個不同時期的期望誤差的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,通過綜合考慮來確定。本文研究的期望誤差為0.001[7]。
3 基于遺傳算法和神經(jīng)網(wǎng)絡(luò)的語音識別
小波神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)對網(wǎng)絡(luò)隱層節(jié)點數(shù)、初始權(quán)值(包括閾值)、伸縮和平移因子以及學(xué)習(xí)速率的依賴性較大,致使其全局搜索能力弱,易陷入局部極小,收斂速度慢甚至不收斂,而遺傳算法具有很強的宏觀搜索能力,能以較大的概率找到全局最優(yōu)解,因此把遺傳算法和小波神經(jīng)網(wǎng)絡(luò)相結(jié)合,采用遺傳算法對網(wǎng)絡(luò)的初始權(quán)值(包括閾值)進(jìn)行優(yōu)化處理,用小波神經(jīng)網(wǎng)絡(luò)完成給定精度的學(xué)習(xí)。
3.1 遺傳算法實現(xiàn)的關(guān)鍵技術(shù)
(1)編碼方案
編碼對網(wǎng)絡(luò)進(jìn)化過程的性能和效率影響很大,因此,編碼技術(shù)是連接權(quán)值進(jìn)化過程中需要解決的首要問題和關(guān)鍵步驟。考慮到網(wǎng)絡(luò)參數(shù)的規(guī)模較大,若遺傳算法采用二進(jìn)制編碼,會導(dǎo)致染色體長度偏長、搜索空間大、搜索效率低等問題,本文中小波神經(jīng)網(wǎng)絡(luò)的節(jié)點數(shù)和結(jié)構(gòu)已經(jīng)固定,可以采用實數(shù)編碼方案,將網(wǎng)絡(luò)的權(quán)值和各節(jié)點的閥值依次排列得到一個向量。
(2)適應(yīng)度函數(shù)的選擇
衡量網(wǎng)絡(luò)性能的主要指標(biāo)是網(wǎng)絡(luò)的實際輸出與期望輸出值之間的誤差平方和。神經(jīng)網(wǎng)絡(luò)中誤差平方和越小,則表示該網(wǎng)絡(luò)性能越好。
定義適應(yīng)度函數(shù)為:
(3)遺傳操作
選擇算子:從當(dāng)前種群中選擇優(yōu)勝(即適應(yīng)度高)個體而淘汰劣質(zhì)個體。目前常用的選擇算子有以下幾種:適應(yīng)度比例選擇法、最佳個體保存法、期望值法與排序選擇法等。本文采用適應(yīng)度比例選擇法來進(jìn)行選擇操作[3]。
交叉算子:交叉是通過替換重組兩個父代個體的部分結(jié)構(gòu)而產(chǎn)生新的個體。在遺傳算法中,交叉操作是最主要的遺傳操作。交叉率Pc是指各代中交叉產(chǎn)生的后代數(shù)與種群規(guī)模之比,這個概率表明有Pc×pop_size(種群規(guī)模)個染色體來進(jìn)行交叉操作。常用的交叉率取值范圍為0.6~1.0,在本文中Pc取0.6。
變異算子:變異就是對群體中的個體串的某些基因位上的基因值作變動。變異率是指種群中變異的基因數(shù)占總基因數(shù)的比例,其值控制了新基因引入的比例,這個概率表明有Pm×pop_size(種群規(guī)模)個染色體來進(jìn)行變異操作。常用變異率的數(shù)量級范圍為0.1~0.001,在本文中Pm取0.1。
(4)終止條件
采用給定的迭代次數(shù)和適應(yīng)度來控制遺傳算法的終止。如果迭代次數(shù)已經(jīng)用完或某代的最優(yōu)個體的適應(yīng)度值大于等于預(yù)先給定的值,算法就結(jié)束。
3.2 GA-WNN算法實現(xiàn)的步驟和流程
采用遺傳算法來優(yōu)化小波神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,具體實現(xiàn)的步驟如下:
(1)設(shè)定參數(shù):種群規(guī)模pop_size=100,交叉概率Pc=0.8,變異概率Pm=0.1。
(2)隨機產(chǎn)生一組實值串種群,每一個個體由網(wǎng)絡(luò)的初始權(quán)值和閥值構(gòu)成。
(3)對實值串中的個體進(jìn)行解碼,生成相應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)結(jié)構(gòu)為72-14-10。
(4)運行網(wǎng)絡(luò),根據(jù)式(4)計算群體個體的適應(yīng)度值,評價網(wǎng)絡(luò)性能。
(5)根據(jù)適應(yīng)度大小,通過相應(yīng)的選擇算法進(jìn)行選擇操作,以交叉概率Pc執(zhí)行交叉操作,以遺傳概率Pm執(zhí)行變異操作,保留適應(yīng)度大的個體產(chǎn)生下一代種群,形成下一代網(wǎng)絡(luò)。
(6)如果網(wǎng)絡(luò)誤差滿足要求或達(dá)到一定的進(jìn)化代數(shù),則停止進(jìn)化,輸出結(jié)果;否則重復(fù)操作步驟(3)~步驟(5)。
(7)將GA優(yōu)化后的初始權(quán)值(包括閾值)作為小波神經(jīng)網(wǎng)絡(luò)使用的參數(shù)。
3.3 基于GA-WNN算法的語音識別過程
將本文提出的新算法(GA-WNN算法)應(yīng)用于語音識別,具體的識別過程如下:
(1)語音數(shù)據(jù)由三男二女的發(fā)音(0~9共10個數(shù)字的普通話發(fā)音)數(shù)據(jù)組成,每個音每人發(fā)20遍,共計1 000次發(fā)音,其中以每人每個發(fā)音的前10次作為訓(xùn)練樣本,后10次作為測試樣本。
(2)用數(shù)字濾波器分別對兩組語音數(shù)據(jù)進(jìn)行預(yù)加重,再通過加漢明窗對語音信號進(jìn)行分幀,然后逐幀計算語音信號的MFCC系數(shù),并將其保存。
(3)構(gòu)造一個三層的小波神經(jīng)網(wǎng)絡(luò),設(shè)置初始的網(wǎng)絡(luò)參數(shù),網(wǎng)絡(luò)結(jié)構(gòu)為72-14-10,取學(xué)習(xí)速率為0.8,訓(xùn)練誤差精度為0.001。
(4)對每個人的語音特征系數(shù)用WNN算法來訓(xùn)練網(wǎng)絡(luò),同時用遺傳算法來優(yōu)化神經(jīng)網(wǎng)絡(luò)的權(quán)值,直到網(wǎng)絡(luò)收斂并達(dá)到期望的訓(xùn)練誤差精度0.001,保存最優(yōu)權(quán)值。每個語音信號對應(yīng)一組網(wǎng)絡(luò)權(quán)值。
(5)在網(wǎng)絡(luò)的輸入層中輸入語音特征參數(shù)系數(shù),分別調(diào)用已保存的網(wǎng)絡(luò)權(quán)值計算出結(jié)果得出網(wǎng)絡(luò)輸出矩陣,與期望輸出矩陣逐一比較,誤差最小的那個語音信號為識別結(jié)果。
4 仿真實驗結(jié)果
為了驗證GA-WNN算法的優(yōu)越性,對算法的性能進(jìn)行了測試,并與小波神經(jīng)網(wǎng)絡(luò)算法的性能進(jìn)行了比較。
仿真實驗是針對非特定人的孤立詞數(shù)字語音識別,語音數(shù)據(jù)由三男二女的發(fā)音(0~9共10個數(shù)字的普通話發(fā)音)數(shù)據(jù)組成,本實驗是在PC機上進(jìn)行,通過PC話筒輸入,每個音每人發(fā)20遍,共計1 000次發(fā)音,其中以每人每個發(fā)音的前10次作為訓(xùn)練樣本,后10次作為測試樣本。
經(jīng)過試驗仿真,得到實驗結(jié)果如表1。對實驗結(jié)果進(jìn)行對比分析,發(fā)現(xiàn)基于GA-WNN算法的語音識別系統(tǒng)得到了相對較高的識別率,基于GA-WNN學(xué)習(xí)算法只迭代了105次便使得誤差為0.001,而小波神經(jīng)網(wǎng)絡(luò)算法需要迭代741次才達(dá)到相同的誤差精度。由此可見,相比小波神經(jīng)網(wǎng)絡(luò)算法,基于GA-WNN算法,無論是在精度上還是收斂速度上,都取得了更好的效果,同時該算法還避免了局部極小,從而能快速地找到最優(yōu)解,降低學(xué)習(xí)時間。
從實驗結(jié)果得出:對于孤立詞的識別,WNN的平均識別率為88.6%,而GA-WNN的平均識別率達(dá)到94.0%,明顯高于WNN的識別率,驗證了理論的正確性。
將遺傳算法和小波神經(jīng)網(wǎng)絡(luò)結(jié)合起來形成GA-WNN算法,仿真實驗結(jié)果表明,此算法在孤立詞的識別中不僅縮短了識別時間還有效地提高了系統(tǒng)的識別率。該算法還可以應(yīng)用于圖像處理或其他領(lǐng)域,需要作進(jìn)一步的驗證。
參考文獻(xiàn)
[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)絡(luò)的語音識別系統(tǒng)研究[D].南京:南京理工大學(xué),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)絡(luò)在語音識別中的研究[J].電腦知識與技術(shù),2008,3(4):774-776.
[6] 劉俊華,顏運昌,荊琦.遺傳算法與神經(jīng)網(wǎng)絡(luò)在語音識別中的應(yīng)用[J].機電工程,2007,24(12):20-24.
[7] 韓志艷,王健,倫淑嫻.基于遺傳小波神經(jīng)網(wǎng)絡(luò)的語音識別分類器設(shè)計[J].計算機科學(xué),2010,37(11):243-246.