一種融合數據歸一化的自適應變異鳥群語音識別系統的製作方法
2023-06-09 07:26:51 3
本發明涉及語音識別技術領域。
背景技術:
隨著資訊時代發展,人機互動給現代社會帶來巨大的改變,語音識別作為人機互動技術的基礎,已是當今信息領域的研究熱點。支持向量機通過其卓越的分類能力和良好的泛化性能,成為語音識別技術中較常用的分類模型。
支持向量機(supportvectormachine,svm)是基於結構風險最小化原則的一種新的機器學習技術。它可以更好的解決小樣本、非線性、高維度等分類問題,並且具有良好的泛化性,廣泛應用在模式識別、分類估計等問題當中。svm的擬合性能和泛化能力依賴於相關參數的選擇,選擇的結果直接關係到分類效果。因此,支持向量機的參數選擇在實際應用中是一個關鍵問題。
目前,國際上並沒有公認的統一的svm參數的優化選取方法,較為常用的方法有:網格尋優方法、遺傳算法、粒子群算法等。網格尋優(gridsearch,gs)算法是一種實用的參數尋優方法,該方法將待搜索參數在給定範圍中劃分為網格,通過遍歷網格中所有的參數組合來尋找最優參數組,具有尋優速度快的優點,但是網格尋優對參數尋優範圍和尋優步距依賴性較大。遺傳算法(geneticalgorithm,ga)是j.h.holland於20世紀70年代提出的一類基於自然選擇和遺傳學原理的有效尋優方法,它模擬生物進化過程,是一種全局優化搜索算法,具有簡單通用、魯棒性強的優點,但是搜索後期效率低下易早熟。粒子群優化算法(particleswarmoptimization,pso)由kennedy和eberhart於1995年提出,源於對鳥群捕食行為的研究,通過個體間的協作來尋找最優解,具有算法簡單實現容易的優點,但是pso算法對於有多個局部極值點的函數容易陷入局部最優。
2015年由xian-bingmeng等人提出的鳥群算法(birdswarmalgorithm,bsa),是一種生物啟發式智能算法,該算法具有很好的多樣性,並且能有效的避免過早收斂,與傳統的群智能算法相比準確率更高、魯棒性更強。
文獻《基於鳥群算法的微電網多目標運行優化》將鳥群算法應用於微電網多目標優化問題,構建了以微電網運行成本及環境汙染度為目標的微電網多目標優化模型,與粒子群算法和微分進化算法比較,驗證了鳥群算法更強的最優解搜索能力。
文獻《基於群智能算法的光ofdm系統papr抑制研究》提出利用非線性反餘弦的方法動態調整加速因子,通過對鳥群算法中覓食行為的學習因子動態調整,使其自身與群體對迭代過程中的粒子位置產生不同的影響程度,以此來豐富粒子的多樣性,從而緩解粒子陷入局部最優的情況,改善了易陷入局部最優的缺陷,改進了算法的有效性。
技術實現要素:
本發明所要解決的技術問題是:克服現有技術不足,提供一種融合數據歸一化的自適應語音識別系統,通過對支持向量機參數尋優,提高語音識別準確率。
本發明所採用的技術方案是:一種融合數據歸一化的自適應變異鳥群語音識別系統,其特徵按照如下的步驟進行:
步驟一、用錄音設備收集語音數據,對收集的語音數據進行特徵提取,將特徵提取後的數據作為輸入樣本,把輸入樣本劃分為訓練集(train_data)和測試集(test_data)兩部分,分別給兩個集合加註標籤,得到訓練集標籤(train_label)和測試集標籤(test_label);
步驟二、採用數據歸一化方法,對原始數據進行歸一化處理;
步驟三、採用融合數據歸一化自適應變異鳥群算法對svm參數進行尋優,求得最佳參數組(c,γ),用該參數組建立svm模型model;
步驟四、將測試集帶入svm模型,得到語音識別準確率。
步驟二中利用數據歸一化方法處理數據按照如下的步驟進行:
由於語音樣本特徵的差異性,特徵提取後得到的數據參差不齊,數據水平差別較大,採用這樣數據進行識別,會突出數值較高的特徵在識別過程中的作用,而相對降低數值較低的特徵在綜合分析中的作用。因此,為了保證識別效果的可靠性,採用數據歸一化方法,對原始數據進行歸一化處理。
將每列數據樣本設為yi,歸一化後的數據樣本為:
其中yi是原始數據,是歸一化後的數據,ymin和ymax代表yi各自的極小值和極大值。
作為一種優選方式:步驟三中,利用自適應變異鳥群算法優化svm按照如下的步驟進行:
a、設置鳥群的種群數量p、最大迭代次數m和遷徙頻率fq,初始化認知係數c和社會加速係數s、影響因子a1和a2以及參數組(c,γ)的最大值ub和最小值lb,隨機產生p個參數組(c,γ)作為鳥群的初始狀態:
其中,表示鳥群個體的初始位置,i為1到p的整數,j為1到m的整數,rand(0,1)是一組(0,1)之間的隨機數;
b、將初始參數組代入libsvm工具箱中的svmtrain函數,得到初始適應值fit(i):
fit(i)=svmtrain(train_label,train_data,′-v-c-g′)
其中,'-v'表示交叉驗證的次數,』-c』和』-g』分別代表參數組(c,γ)中的c和γ;
c、在第j次迭代更新時,自適應調整鳥群個體:
其中,和分別表示鳥群個體的初始速度和自適應變異後的速度,和分別表示鳥群個體的當前位置和更新後的位置,用pi.j記錄個體最佳位置,gj記錄群體最佳位置,r1為(0,1)之間的隨機數,r2為隨機變量,小於0.5時為1,大於0.5時為-1;
d、在第j次迭代更新時,依次對鳥群執行自適應鳥群算法的覓食、警覺和遷徙行為,生成新一代種群:
覓食行為,鳥群中的個體通過一個隨機決策來選擇覓食還是警覺,當一個(0,1)之間的隨機數rand小於常數r(r∈(0,1)),選擇覓食:
警覺行為,當隨機數rand大於常數r,鳥群中的個體選擇警覺,試圖飛往中心的個體受到種群競爭行為的影響,具有高儲備量的個體比具有低儲備量的個體更易接近種群中心:
其中,meanj表示整個鳥群第j個元素的平均位置,a1為周邊環境引起的間接影響因子,a2為特定幹擾引起的直接影響因子,pfiti表示第i只鳥的最佳適應值,sumfit表示整個種群的適應值之和,ε用於避免零分割,是計算機裡最小的常數;
遷徙行為,由於覓食或躲避捕食威脅等原因,鳥群會飛向其它地方,當到達一個新的地方,它們會繼續覓食,並被分為生產者和乞食者。具有最高儲備量的鳥為生產者,最低儲備量的鳥為乞食者,其他儲備量介於二者之間的鳥隨機選擇作為生產者或者乞食者。生產者主動搜索食物,乞食者隨機跟隨一位生產者搜尋食物:
其中,表示第k只鳥兒在t時刻的位置,k∈[1,2,…,n],k≠i,randn(0,1)表示均值為0方差為1的高斯分布,fl(fl∈[0,2])表示乞食者將跟隨生產者搜索食物的概率;
比較三種行為所得鳥群個體所處狀態的適應度值,選擇適應度值最大的行為執行,並與歷史記錄進行比較,記錄適應度值最大的個體。判斷迭代次數是否已經達到最大迭代次數m,如果滿足則執行步驟e;否則返回步驟c,繼續下一次迭代尋優;
e、尋優得到最佳適應值所對應的位置即為參數組(c,γ)的值,利用libsvm工具箱中的svmtrain函數得到svm模型model:
model=svmtrain(train_label,train_data,′-c-g′)
其中'-c'對應最優參數組(c,γ)中c的值,'-g'對應最優參數組(c,γ)中γ的值。
本發明的有益效果是:通過採用自適應變異的方法對鳥群個體更新方法進行改進,鳥群算法在迭代更新初期,引入一種變異操作,對參數自適應過程進行優化,並結合數據歸一化方法,簡化了數據結構和算法複雜度,有效提高了算法的種群多樣性,增強了模型的泛化能力,解決了算法早熟收斂以及搜索能力隨代數增加而逐漸下降的問題,改善了易陷入局部最優的缺陷。將融合數據歸一化的自適應變異鳥群算法優化的svm模型應用於語音識別系統,識別準確率更高,收斂速度更快,魯棒性更強,尋優效果更好。
具體實施方式
本發明以windows7系統作為程序開發軟體環境,使用matlabr2010a作為程序開發平臺,本例通過9個人對10個孤立詞在信噪比為15db條件下,每詞發音三次的270個語音樣本作為訓練集,對應7個人在相應的詞彙量和信噪比下的210個語音樣本作為測試集,樣本經過錄音設備收集後作為輸入數據,然後通過語音識別系統對輸入的語音信號進行預處理,再從處理過的語音信號中提取能夠代表該語音信號的特徵,每個樣本從語音信號中獲得的60維特徵矩陣,最終獲得訓練集特徵矩陣train_data和測試集特徵矩陣test_data以及對應的類別標籤train_label和test_label,如表1和表2列出部分數據如下:
表1訓練集樣本
表2測試集樣本
對訓練集和測試集數據進行歸一化處理,將每列數據樣本設為yi,歸一化後的數據樣本為:
其中yi是原始數據,是歸一化後的數據,ymin和ymax代表yi各自的極小值和極大值,歸一化後的數據如表3,表4所示:
表3歸一化後訓練集樣本
表4歸一化後測試集樣本
設置鳥群的種群數量p=30,最大迭代次數m=100,遷徙頻率fq=10,初始化認知係數c=1.5,社會加速係數s=1.5,影響因子a1=1,a2=1,令參數組(c,γ)的最大值ub=100,最小值lb=-100,鳥群的30組個體初始狀態如表5:
表5鳥群初始狀態
計算每個鳥群個體的適應度值fit(i):
將表1中訓練集樣本的語音特徵矩陣train_data和類別標籤train_label代入公式:
fit(i)=svmtrain(train_label,train_data,′-v-c-g′)
其中,i為1到30的整數,'-v'表示交叉驗證的次數,』-c』和』-g』分別代表參數組(c,γ)中的c和γ,所得每個鳥群個體的適應度值如表6:
表6適應度值(%)
通過比較,記錄最大的適應度值fit(16)=66.2963%,對應參數組(15.7697,97.0596);
自適應更新種群個體:
在第j次迭代更新時,自適應調整鳥群個體:
其中,和分別表示鳥群個體的初始速度和自適應變異後的速度,和分別表示鳥群個體的當前位置和更新後的位置,pi.j表示個體最佳位置,gj表示群體最佳位置,r1為(0,1)之間的隨機數,r2為隨機變量,小於0.5時為1,大於0.5時為-1,個體更新結果如表7:
表7個體自適應變異更新結果
在第j次迭代更新時,依次對鳥群執行自適應鳥群算法的覓食、警覺和遷徙行為,生成新一代種群:
覓食行為,鳥群中的個體通過一個隨機決策來選擇覓食還是警覺,當一個(0,1)之間的隨機數rand小於常數r(r∈(0,1)),選擇覓食:
警覺行為,當隨機數rand大於常數r,鳥群中的個體選擇警覺,試圖飛往中心的個體受到種群競爭行為的影響,具有高儲備量的個體比具有低儲備量的個體更易接近種群中心:
其中,meanj表示整個鳥群第j個元素的平均位置,a1為周邊環境引起的間接影響因子,a2為特定幹擾引起的直接影響因子,pfiti表示第i只鳥的最佳適應值,sumfit表示整個種群的適應值之和,ε用於避免零分割,是計算機裡最小的常數;
遷徙行為,由於覓食或躲避捕食威脅等原因,鳥群會飛向其它地方,當到達一個新的地方,它們會繼續覓食,並被分為生產者和乞食者。具有最高儲備量的鳥為生產者,最低儲備量的鳥為乞食者,其他儲備量介於二者之間的鳥隨機選擇作為生產者或者乞食者。生產者主動搜索食物,乞食者隨機跟隨一位生產者搜尋食物:
其中,表示第k只鳥兒在t時刻的位置,k∈[1,2,…,n],k≠i,randn(0,1)表示均值為0方差為1的高斯分布,fl(fl∈[0,2])表示乞食者將跟隨生產者搜索食物的概率;
比較三種行為所得鳥群個體所處狀態的適應度值,選擇適應度值最大的行為執行,並與歷史記錄進行比較,記錄適應度值最大的個體。
判斷迭代次數是否已經達到最大迭代次數m,如果滿足則執行步驟e;否則返回步驟c,繼續下一次迭代尋優;
本實施例僅例舉說明表5中序號為1的鳥群個體在迭代次數m分別為1、2、3時的狀態更新,其他鳥群個體和其他迭代次數鳥群個體狀態更新過程類似。
m=1時,由以下公式進行初始化:
初始化後鳥群個體對應參數c的取值為92.0958,γ的取值為80.8212,其適應值fit(1)=51.8519%;
通過以下公式執行自適應變異:
個體對應參數c的取值變為42.1819,γ的取值變為91.5744,其適應值變為fit(1)=59.6296%;
判斷是否符合覓食條件,滿足條件,鳥群執行覓食行為:
個體對應參數c的取值變為53.8389,γ的取值變為99.6135,其適應度值變為fit(1)=67.0370%,選取為種群最佳個體,並與歷史最佳適應值59.6296%比較,保留最佳適應值67.0370%和對應參數組(53.8389,99.6135);
m=2時,將上一代的鳥群個體進行自適應變異,鳥群個體對應參數c的取值變為60.3307,γ的取值變為1.5026,其適應值變為fit(1)=70.3704%;
判斷是否符合警覺條件,滿足條件,鳥群執行警覺行為:
個體對應參數c的取值變為0.0838,γ的取值變為67.6717,其適應度值變為fit(1)=89.6296%,選取種群最佳個體,並與歷史最佳適應值比較,保留最佳適應值和對應參數組;
m=3時,將上一代的鳥群個體進行自適應變異,鳥群個體對應參數c的取值變為47.7860,γ的取值變為0.0912,其適應值變為fit(1)=90.3704%;
判斷是否滿足遷徙條件,滿足條件,鳥群執行遷徙行為,將鳥群劃分為生產者或者乞食者:
個體對應參數c的取值變為63.1943,γ的取值變為0.0801,其適應度值變為fit(1)=93.3333%,選取種群最佳個體,並與歷史最佳適應值比較,保留最佳適應值和對應參數組;
迭代次數i=i+1,判斷迭代次數是否已經達到最大迭代次數m,如果滿足則繼續執行下一步驟;否則返回進行新一次迭代更新。
得到最大適應度值94.4444%所處狀態對應的最優參數組(c,γ)的值為(47.7881,0.0892),利用libsvm軟體包裡的svmtrain函數得到svm模型model:
model=svmtrain(train_label,train_data,′-c47.7881-g0.0892′)
利用svmpredict函數,代入測試集樣本的語音特徵矩陣test_data和類別標籤test_label
[predict_label,accuracy]=svmpredict(test_label,test_data,model)
其中accuracy為測試集樣本的分類準確率,對應該測試集樣本的語音識別準確率為accuracy=89.0476%。
本實例只用來說明具體實施方式,為了顯示方便,僅用某一個體的三次迭代將最佳狀態展示出來,實際應用中會有一定誤差。