蘭勝坤
(1.福州海峽職業(yè)技術(shù)學院,福州 350102;2.福建工程學院國脈信息學院,福州 350102)
說話人識別(speaker recognition)又稱聲紋識別,是指根據(jù)說話人所說的話來鑒定說話人身份的一種身份認證技術(shù),屬于語音信號處理4大分支(語音識別、說話人識別、語音編碼以及語音合成)中的一種[1]。語音是人的自然屬性之一,也是一個正常人所固有的特征。由于每個說話人發(fā)音器官的生理差異(包括聲帶、咽喉、口腔、鼻腔的構(gòu)造不同),以及后天行為、環(huán)境等因素的影響,導致不同說話人發(fā)出的語音信號帶有強烈的個人色彩,因此通過聲紋識別技術(shù)對用戶進行身份識別是可行的。說話人識別技術(shù)的核心是將預先錄入的說話人的語音樣本分為訓練語音和測試語音兩部分,然后把從訓練語音中提取出來的表征說話人特征的參數(shù)保存到數(shù)據(jù)庫中,識別時用同樣的方法提取待測語音信號的特征參數(shù)并與數(shù)據(jù)庫中的特征數(shù)據(jù)進行匹配,從而得出識別結(jié)果。
神經(jīng)網(wǎng)絡是由大量結(jié)構(gòu)簡單的處理單元(又稱神經(jīng)元)廣泛地互聯(lián)構(gòu)成的復雜網(wǎng)絡系統(tǒng),又稱人工神經(jīng)網(wǎng)絡(artificial neural networks,ANN)[2]。BP(back propagation)神經(jīng)網(wǎng)絡簡稱BP網(wǎng)絡,又稱誤差反向傳播神經(jīng)網(wǎng)絡[3],是一種按照誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伾窠?jīng)網(wǎng)絡。BP神經(jīng)網(wǎng)絡屬于有導師學習方法,學習規(guī)則為δ學習規(guī)則[4]。這種網(wǎng)絡的結(jié)構(gòu)簡單、學習效果好、泛化能力強,是目前最重要的神經(jīng)網(wǎng)絡之一[5-7]。但BP神經(jīng)網(wǎng)絡采用的是一種基于梯度下降的算法,因此不可避免地存在訓練時間長、收斂速度慢、容易陷入局部最優(yōu)等缺陷。
遺傳算法(genetic algorithms,GA)以達爾文生物進化論“適者生存,優(yōu)勝劣汰”的自然法則為基礎,通過模擬生物的進化過程搜索最優(yōu)解[8]。用遺傳算法優(yōu)化問題時,首先在可行域中隨機生成一組初始解作為進化的第一代群體,群體中的每一個個體稱為染色體,并按照預先設定的編碼規(guī)則對各個染色體進行編碼,形成字符串。編碼完成后,按照一定的概率對個體進行選擇、交叉和變異等遺傳操作,產(chǎn)生下一代新的種群,完成了一次遺傳過程[9]。在選擇個體的時候,通過個體對環(huán)境的適應程度來評價染色體的好壞。適應程度越高,被選擇的機率越高,而適應程度低的則有可能直接被淘汰。每經(jīng)歷一次遺傳過程,都會使每一代新的種群比上一代種群更加適應環(huán)境,直到末代種群滿足條件為止結(jié)束,解碼后的末代種群的最優(yōu)個體便可看作問題的近似最優(yōu)解[10]。遺傳算法是一類隨機算法,但它不是簡單的隨機計算,而是能自動獲取和指導優(yōu)化的搜索空間,可以自適應地調(diào)整搜索方向,不需要確定規(guī)則[11]。另外,遺傳算法還有全局尋優(yōu)能力強和隱含并行性等優(yōu)點,從而避免陷入局部極小。因此,將神經(jīng)網(wǎng)絡與遺傳算法結(jié)合起來,充分利用BP神經(jīng)網(wǎng)絡的局部尋優(yōu)和遺傳算法的全局尋優(yōu),能有效提高網(wǎng)絡的學習性能和收斂性[12]。
遺傳算法與神經(jīng)網(wǎng)絡的結(jié)合[13]主要有輔助式結(jié)合和合作式結(jié)合。輔助式結(jié)合一般是通過遺傳算法對數(shù)據(jù)進行預處理,然后利用神經(jīng)網(wǎng)絡求解問題,或者如模式識別利用遺傳算法進行特征提取,再用神經(jīng)網(wǎng)絡進行訓練識別。合作式結(jié)合是指同時用遺傳算法與神經(jīng)網(wǎng)絡對問題求解,主要有3種方式:①直接用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu);②將神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu)固定,利用遺傳算法確定網(wǎng)絡的權(quán)值;③ 利用遺傳算法優(yōu)化BP網(wǎng)絡的學習規(guī)則。本系統(tǒng)主要采用第2種優(yōu)化方式。利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的權(quán)值的基本過程如下:
采用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的權(quán)值。在BP神經(jīng)網(wǎng)絡中,不同的初始權(quán)值可能產(chǎn)生不同的解,也可能會對訓練時間、收斂性以及泛化誤差造成很大的差異。傳統(tǒng)的神經(jīng)網(wǎng)絡權(quán)值獲取是通過某種確定的變化規(guī)則,利用訓練結(jié)構(gòu)的誤差函數(shù)不斷進行調(diào)整,最終得到一個較好的權(quán)值分布。BP神經(jīng)網(wǎng)絡的算法是基于梯度下降的方法,它對網(wǎng)絡的初始權(quán)值相當敏感,在訓練的過程中,相關(guān)參數(shù)選取不當就可能導致網(wǎng)絡不能收斂或者因收斂速度慢而訓練時間過長,同時又極易陷入局部極小而無法得到好的權(quán)值分布。遺傳算法雖然不能尋得最優(yōu),但總能找到更優(yōu)解,用它來優(yōu)化神經(jīng)網(wǎng)絡的連接權(quán)可有效克服上述問題[14]。
利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的權(quán)值和閾值,首先要確定一種編碼方案。遺傳算法有很多種編碼方案,二進制編碼是最常用的一種。這種編碼方式實現(xiàn)簡單,但有可能將神經(jīng)網(wǎng)絡的權(quán)、閾值(連續(xù)參數(shù))離散化,也會造成編碼字符串過長,且在將二進制的字符串轉(zhuǎn)化為實數(shù)時可能會產(chǎn)生一定的誤差,從而影響網(wǎng)絡的學習精度。實數(shù)編碼則不僅能將神經(jīng)網(wǎng)絡的權(quán)、閾值直觀地表現(xiàn)出來,同時還提高了學習的精度以及計算的速度,克服了二進制編碼帶來的負面影響。編碼方式確定之后,隨機生成幾十個到上百個初始個體,每一個個體代表神經(jīng)網(wǎng)絡的一個初始權(quán)值,且這些權(quán)值的初始范圍為(-1,1)。
本文采用實數(shù)編碼,編碼的方式是將神經(jīng)網(wǎng)絡的權(quán)值和閾值按照一定的順序級聯(lián)成一個字符串。例如,圖1所示的遺傳算法編碼方案就是按照從輸入到輸出、從上到下的方式排列,字符串上的每個值代表網(wǎng)絡上的權(quán)值或閾值。
圖1 遺傳算法的編碼方案
遺傳算法利用適應度函數(shù)來評估個體的生存能力。BP神經(jīng)網(wǎng)絡用實際輸出與期望輸出之間的均方誤差平方(mse)來評估網(wǎng)絡的好壞,均方誤差越小越好。遺傳算法與神經(jīng)網(wǎng)絡結(jié)合,常使用輸出誤差平方和的倒數(shù)作為染色體的適應度函數(shù):首先以訓練樣本集作為輸入對神經(jīng)網(wǎng)絡進行訓練,求出實際輸出與期望輸出的均方誤差,找到最大誤差,記為msemax。染色體的適應度函數(shù)見如式(1)。
式(1)和式(2)中:mse為實際輸出與期望輸出的均方誤差;N為訓練樣本總個數(shù);d為網(wǎng)絡的期望輸出;y為樣本的實際輸出;fitness為網(wǎng)絡權(quán)閾值對應的適應度函數(shù),當fitness與1相近時,可認為訓練已達到網(wǎng)絡的基本要求。
遺傳算法優(yōu)化神經(jīng)網(wǎng)絡的步驟:
1)確定一個編碼方式,對BP神經(jīng)網(wǎng)絡的權(quán)值和閾值進行編碼,并按照一定的順序級聯(lián)起來組成一個染色體。隨機生成N個這樣的染色體群體,開始訓練神經(jīng)網(wǎng)絡。
2)對當前群體進行遺傳操作,生成新的下一代群體,計算網(wǎng)絡的輸出,并求出每個染色體的適應度。
3)對神經(jīng)網(wǎng)絡進行性能評估,若達到一定精度,則轉(zhuǎn)入步驟4),否則保留最優(yōu)個體并返回步驟2)。
4)計算網(wǎng)絡輸出,對神經(jīng)網(wǎng)絡的性能進行評估,檢查評估結(jié)果是否達到精度要求,若達到則保存網(wǎng)絡的權(quán)閾值及神經(jīng)網(wǎng)絡的輸出結(jié)果,訓練結(jié)束,否則繼續(xù)步驟5)。
5)計算網(wǎng)絡的正向誤差及反向誤差,根據(jù)誤差調(diào)整網(wǎng)絡的權(quán)、閾值,并返回步驟4)。
圖2 遺傳算法優(yōu)化神經(jīng)網(wǎng)絡流程
實驗環(huán)境基于Matlab 7.0平臺實現(xiàn)。實驗采用的語音數(shù)據(jù)在實驗室環(huán)境下自行錄制,錄制的語音內(nèi)容為數(shù)字“0~9”和字母“A~Z”。每個語音分兩次錄音,兩次錄音的時間間隔為1周。選取第1次收錄的數(shù)字“0”~“6”共7個語音作為訓練語音樣本,其余作為測試語音樣本。本次語音的格式為wav格式,采樣頻率為8 kHz,預加重系數(shù)為0.937 5。采用采樣窗長為 32 ms(256點),幀移為16 ms(128點)的漢明窗對語音分幀。用雙門限檢測法對語音進行端點檢測,濾除靜音段,僅保留有聲段。對這些語音信號進行處理之后,對每個語音提取特征參數(shù)。本文采用MFCC算法對語音提取12維的特征參數(shù),即每幀信號用12維的矢量序列表示。
大量實驗結(jié)果表明:在解決一般問題時,對于一個3層的BP神經(jīng)網(wǎng)絡,當它的隱層神經(jīng)元足夠多時,這個網(wǎng)絡足以逼近任意的有理函數(shù)和無理數(shù),增加神經(jīng)網(wǎng)絡的隱藏神經(jīng)元個數(shù)只會加大網(wǎng)絡的負責度和計算量。因此,系統(tǒng)選擇一個3層BP網(wǎng)絡即可滿足要求。隱層的神經(jīng)元個數(shù)可以參考以下公式進行確定:
其中:S1為隱層神經(jīng)元個數(shù);n為輸入神經(jīng)元個數(shù);l為輸出神經(jīng)元個數(shù);α為1~10之間的自然數(shù)。在一定范圍內(nèi)改變S1,用同一訓練樣本集對網(wǎng)絡進行學習,可從中確定網(wǎng)絡誤差最小時所對應的隱層神經(jīng)元個數(shù)。也可以改變隱層神經(jīng)元的個數(shù),不斷對系統(tǒng)進行訓練,選擇總體誤差最小時所對應的個數(shù)。
BP神經(jīng)網(wǎng)絡輸入層神經(jīng)元與樣本的維數(shù)相關(guān),所以確定輸入層神經(jīng)元個數(shù)為12個。對于說話人確認系統(tǒng),識別結(jié)果只有正確和錯誤兩種,因此可以用一個神經(jīng)元的輸出“0”和“1”分別代表系統(tǒng)的“錯誤”和“正確”兩個結(jié)果。
對說話人辨認系統(tǒng)進行訓練。圖3為神經(jīng)網(wǎng)絡的訓練性能曲線,其中縱坐標表示神經(jīng)網(wǎng)絡的誤差精度,橫坐標表示神經(jīng)網(wǎng)絡達到誤差精度時所需訓練的次數(shù),即訓練步長。從圖3可以看出:當網(wǎng)絡收斂到目標誤差0.000 1時,共訓練了68次。圖4為系統(tǒng)的訓練過程和識別結(jié)果,可見0.194 7為系統(tǒng)的總體誤差。
BP神經(jīng)網(wǎng)絡的參數(shù)保持不變,利用遺傳算法對網(wǎng)絡的權(quán)值和閾值進行優(yōu)化。圖5為GA-BP網(wǎng)絡對說話人確認系統(tǒng)的網(wǎng)絡訓練性能曲線,系統(tǒng)所用的訓練樣本和測試樣本與上一個系統(tǒng)相同。從圖5可以看出:系統(tǒng)達到精度要求時,只訓練了12次。圖6為系統(tǒng)的訓練過程和識別結(jié)果,可以看到系統(tǒng)的總體誤差為0.149 6。
圖3 神經(jīng)網(wǎng)絡訓練性能曲線
圖4 訓練過程和識別結(jié)果
圖5 GA-BP網(wǎng)絡對說話人確認系統(tǒng)的網(wǎng)絡訓練性能曲線
圖6 訓練過程和識別結(jié)果
對比圖3和圖5發(fā)現(xiàn):在利用遺傳算法對BP神經(jīng)網(wǎng)絡的權(quán)值和閾值進行優(yōu)化后,系統(tǒng)在達到精度要求時,訓練的次數(shù)從68次減少到了12次,說明優(yōu)化后的系統(tǒng)加快了收斂速度,減少了系統(tǒng)的訓練時間。對比圖4和圖6發(fā)現(xiàn):優(yōu)化后系統(tǒng)的總體誤差也有所降低。表1為幾種說話人識別方法的識別率比較,提取的特征參數(shù)為 MFCC參數(shù)。
表1 幾種說話人識別方法的識別率比較 %
從表1可以看出:GA-BP網(wǎng)絡的識別率最高,說明利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡能有效地提高原有系統(tǒng)的識別率。
BP神經(jīng)網(wǎng)絡采用的是基于梯度下降的算法,主要存在收斂速度慢和容易陷入局部最優(yōu)兩個問題;而遺傳算法的特點是同時使用多個搜索點進行搜索,使用概率搜索技術(shù)進行隨機搜索,它不依賴于具體的問題,只需要給出問題的目標函數(shù)作為搜索信息。遺傳算法的這些特點恰好能夠彌補BP神經(jīng)網(wǎng)絡的缺陷,因此,利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的權(quán)、閾值能有效克服BP網(wǎng)絡易陷入局部極小的這一問題。在說話人識別系統(tǒng)中,利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡的權(quán)值和閾值后,不僅能減少網(wǎng)絡的收斂次數(shù),加快網(wǎng)絡的訓練時間,還能降低系統(tǒng)的總體誤差,提高系統(tǒng)的識別率。
[1]劉雪燕,張娜,袁寶玲.說話人識別綜述[J].電腦知識與技術(shù),2009,5(1):169 -171.
[2]田雨波.混合神經(jīng)網(wǎng)絡技術(shù)[M].北京:科學出版社,2009:104-148.
[3]張蕾,普杰信,范慶輝.基于遺傳算法和BP網(wǎng)絡的物體識別方法[J].計算機工程與設計,2008,29(7):1785-1788.
[4]潘昊,王曉勇,陳瓊,等.基于遺傳算法的BP神經(jīng)網(wǎng)絡技術(shù)的應用[J].計算機應用,2005,25(12):2777-2779.
[5]李紅連.BP神經(jīng)網(wǎng)絡在車輛組合導航中的應用研究[J].壓電與聲光,2011,33(1):45 -48.
[6]張朋,陳明,何鵬舉.聲表面波CO氣體傳感器溫度誤差補償方法研究[J].壓電與聲光,2010,32(1):3-6,22.
[7]張銀雪,賈振紅,蔣海軍.基于PSO和改進神經(jīng)網(wǎng)絡的圖像濾波方法的研究[J].激光雜志,2009,30(4):34-36.
[8]王國超,吳慶林.基于遺傳優(yōu)化模糊PID高壓共軌系統(tǒng)噴油量的控制算法[J].重慶理工大學學報:自然科學版,2012,26(11):17 -22.
[9]李建珍.基于遺傳算法的人工神經(jīng)網(wǎng)絡學習算法[J].西北師范大學學報:自然科學版,2002,38(2):33-37.
[10]楊梅,卿曉霞,王波.基于改進遺傳算法的神經(jīng)網(wǎng)絡優(yōu)化方法[J].計算機仿真,2009,26(5):198 -201.
[11]鄭衛(wèi)燕.基于遺傳算法的網(wǎng)絡優(yōu)化研究及其應用[D].哈爾濱:哈爾濱工程大學,2008.
[12]李享梅.改善遺傳神經(jīng)網(wǎng)絡性能的研究[J].儀器儀表用戶,2007(2):13-14.
[13]范巧艷,艾斯卡爾·艾木都拉.遺傳算法優(yōu)化RBF網(wǎng)絡的圖像雜波抑制技術(shù)研究[J].激光雜志,2010,31(2):11-13.
[14]羅鍵,劉軍祥.一種基于遺傳算法的新型神經(jīng)網(wǎng)絡設計[J].系統(tǒng)工程理論與實踐,2001(10):42-46.