李田港,葉 碩,葉光明,褚 鈺
(1.武漢郵電科學研究院,湖北 武漢 430000;2.武漢烽火眾智數字技術有限責任公司,湖北 武漢 430000)
語言是人類最常用的信息交換方式,一段語音中通常包含說話人的三部分內容:聲音特征信息、語言內容信息、語音情感信息。同樣的語言,使用不同的情感表達,效果往往不同。語音情感識別(speech emotion recognition,SER)即是對語音中包含的情感信息進行研究。
如何提取語音中具有判別特性的情感特征,一直是該識別任務的難點。心理學將情感分為了離散型和連續型[1],離散型語音情感是指語音中只包含一種情緒或只有一種突出情緒,針對離散語音,常用特征可以分為低級描述(common low-level descriptors,LLDs)和高級描述的水平統計函數(high-level statistical functions,HSFs)[2-3]。
低級描述包括:基音頻率(fundamental frequency)、能量(energy)、過零率(zero-crossing)、抖動(jitter)、梅爾濾波特征(Mel-filterbank features)、共振峰位置/帶寬(formant locations/bandwidths)、諧波噪聲比(harmonics-to-noise ratio)。
高級描述包括:均值(mean)、方差(variance)、最小值(min)、最大值(max)、范圍(range)、高階矩(higher order moments)、線性回歸系數(linear regression coefficients)等。
常用的分類方法包括:支持向量機(support vector machine,SVM)、K最近鄰(K-nearest neighbor,KNN)、反向傳播神經網絡(back propagation neural networks,BPNN)、隱馬爾可夫模型(hidden Markov model,HMM)等。近年來神經網絡發展迅猛,相關技術也被應用于語音情感識別的研究。
文中著重研究離散型的情感語音識別,提取語音多個與情感分類相關的特征,使用多種算法對語音情感進行識別,同時提出一種基于距離加權的KNN改進算法和基于集成學習的加權投票算法,用于更好地實現語音情感識別。
目前與語音情感有關的聲學特征大致可以分為三類:韻律學特征、基于譜的相關特征、音質特征。
韻律學特征注重音高、快慢以及輕重等方面的變化[4]。韻律能夠幫助人們理解說話人語音信息中的重點,使話語自然流暢,人們能夠更快地獲取有效信息,包含著豐富的情緒特征。文中提取短時能量、基音頻率、過零率、濁音幀差分基音等作為語音情感識別的主要特征。
基于譜的相關特征一般為LPCC(linear predictor cepstral coefficient)與MFCC(Mel-frequency cepstral coefficient)。譜特征被認為是聲道形狀變化和發聲運動之間相關性的體現[5]。研究者發現語音中的情感內容對頻譜能量在各個頻譜區間的分布有著明顯的影響[6]。由于人聽到的聲音高低和頻率大小不成線性正比關系,MFCC特征基于人耳聽覺特性,在語音情感分類中具有良好的魯棒性和正確度,因此文中提取的譜相關特征為MFCC及其一階差分。
聲音質量是人們賦予語音的一種主觀評價指標,用于衡量語音是否純凈、清晰、容易辨識等[7]。用于衡量聲音質量的聲學特征一般有:共振峰頻率及其帶寬、頻率微擾和振幅微擾、聲門參數等,其中共振峰頻率的分布特性決定語音的音色[8]。文中提取的聲音質量特征為第一、二、三共振峰頻率特征。
對語音信號進行預處理、分幀、加窗,以幀為最小單位對語音信號特征進行提取,并計算特征的相關統計量。具體特征及其統計量如表1所示。

表1 語音情感特征提取
KNN算法的思想是對于一個待分類樣本,找出其在特征空間中最鄰近的K個樣本,將這K個樣本中出現個數最多的類標簽作為該待分類樣本的分類標簽,因此分類結果只與近鄰的幾個樣本有關。
這種惰性學習方式依賴訓練樣本,每個訓練樣本都要保存,且對于每個待測樣本都要計算一遍其與所有訓練樣本的距離,空間、計算開銷較大,而各個近鄰又對分類結果影響相同,這與實際的分類情況有所不同;此外,對每個待測樣本分類,只用到了近鄰樣本的信息,不能充分利用樣本的分布信息。
基于距離的加權KNN是對傳統KNN算法的一種改進,其思想是對每個近鄰樣本,根據其與待測樣本距離的遠近,賦予不同的權重,距離越近權重越大。
文中提出的算法是對加權KNN做進一步改進,引入類平均距離[9]作為加權依據。類平均距離可以反映出同一類相鄰樣本之間的距離更接近,不同類的類平均距離有較大差異。改進算法的實現如下:
算法1:類平均距離計算。

輸出:m維數組array[]:存儲類標簽;m維數組array_ad[]:存儲類平均距離。
1:forh=1,2,…,mdo
2:初始化n維數組t[],t_ad[]和變量counter為0;l=lh;
3:fori=1,2,…,nhdo
4:forj=1,2,…,Kdo
5:將樣本與同類其他樣本的第j維特征值進行比較;找出在第j維上特征差值最小的樣本;
6:若t[]中無該樣本,則存入t[];
7:end for
8:for allt[]do
9:計算t[]每個樣本與xli的歐氏距離;
10:end for
11:去掉最大值;求距離均值并存入t_ad[]
12:counter加1;
13:end for
14:計算數組t_ad[]前q個元素的均值,存入array_d[h];將類標簽l存入數組array[h]
15:end for
在算法1中,首先計算一個類中每個樣本與其同類最近鄰樣本的平均距離,再對該類所有樣本與其同類最近鄰樣本的平均距離求平均值,以此平均值作為該類的類平均距離;然后求出待分類樣本的K近鄰樣本,計算每個近鄰樣本類平均距離和該近鄰樣本與待分類樣本之間距離的差值之比;將差值之比最大的t個近鄰樣本刪除,認為這t個近鄰樣本與待測樣本的距離和分別對應的類平均距離偏差大,與待分類樣本屬于同一類的可能性小,t一般設置為1。
算法2:基于類平均距離的改進加權KNN分類器。
輸入:語音樣本訓練集D,總樣本數n,分類數m,分類樣本數nh,h=1,2,…,m;最近鄰參數K和整數閾值t;待分類樣本以及數組array[]和array_d[];
輸出:待分類樣本的分類標簽。
1:for allDdo
2:計算每個訓練樣本與待分類樣本的歐氏距離;找出K個距離最小的樣本,存入K維數組N[];
3:將對應的歐氏距離存入K維數組d[];將對應的類標簽存入K維數組label[];
4:end for
5:fori=1,2,…,Kdo
6:計算N[i]與待分類樣本距離d[i]和類平均距離array_ad[label[i]]的差值之比的絕對值:ratio[i]=|(d[i]-array_ad[label[i]])/array_ad[label[i]]|;
7:end for
8:將ratio[]中最大的t個元素置0;
9:fori=1,2,…,K
10:計算weight[label[i]]=1+b×ratio[i];
11:end for
12:將數組weight中最大元素對應的分類標簽作為待分類樣本的分類
算法2對余下的每個近鄰樣本,根據其差值之比計算權重,最后對待分類樣本根據余下的近鄰樣本和權重進行加權多數投票,確定待分類樣本的類別。
集成學習是一種將多個學習結果進行擇優整合[10],從而獲得比單個學習器更好的學習效果的機器學習方法。為提升語音情感分類正確度,文中還考慮支持向量機(SVM)、反向傳播神經網絡(BPNN)、隱馬爾可夫模型(HMM)在語音情感識別任務中的表現。
SVM是建立在統計學習理論和結構風險最小化準則基礎上的一種算法。將原始的數據樣本從線性不可分的低維空間映射到一個高維的特征空間,并尋找一個滿足分類要求的最優分類超平面,以此完成分類任務[11]。該方法在保證分類精度的同時能夠使超平面兩側的空白區域最大化,對解決小樣本分類任務具有較好的表現。
BPNN是最常用的神經網絡學習方式,誤差的逆傳播可有效計算權重參數的梯度。文中搭建一個三層神經網絡,分為輸入層、隱藏層、輸出層。輸入為語音信號多維特征向量組成的訓練樣本,隱藏層神經元數為10個,隱藏層和輸出層使用對數Sigmoid激勵函數,用于解決高維非線性可分問題,每個輸出神經元分別輸出5類情感的預測概率。使用均方誤差作為損失函數。設置訓練次數為150,網絡性能目標為10-6。
HMM是一種用參數表示的、基于語音信號的時間序列結構建立的、用于描述其隨機過程統計特性的概率模型[12-13]。語音的情感在短時間內具有一致性,將語音部分分割成極小的時間片段,那么該片段的特性近似穩定,總過程可視為從某一相對穩定特性到另一相對穩定特性的轉移。因此對不同情感構建HMM,可以完成對語音情感的分類。文中擬采用從上述的五種分類算法中選出三種分類效果較好的算法,對其分類結果以加權投票的方式進行集成學習。
本實驗采用三種不同語種公開數據集:德國柏林德語語料庫[14]、中國中科院漢語語料庫以及EmoV-DB英語情感語料庫。德國柏林德語語料庫中包含7種情感,共535句情感語音信號,音頻采樣頻率為16 kHz,16 bit量化。從中選擇了anger、happiness、neutral、sadness和fear共5種情感,每種情感隨機選取50條語音組建德語數據集。
漢語情感語料庫,采樣頻率為16 kHz,16 bit量化,共4個發音人,每人的語音有6種情感。從中選擇anger、happiness、neutral、sadness和fear共5種情感,每種情感隨機選取50條語音組建漢語數據集。
Emov-DB,其采樣頻率為16 kHz,16 bit量化,共4個發音人,每個人的語音有5種情感neutral,sleepiness,anger,disgust和amused。每種情感隨機選擇50條語音組建英語數據集。
文中所述5種算法分別在3個語音樣本訓練集進行折數為5折的交叉驗證:隨機將每個訓練集均分為5份大小一致的互斥子集,每個子集都保持情感種類分布的一致性,每次實驗從中選擇4個子集的并集作為訓練集,余下的1個子集作為驗證集。為了保證數據分布的均衡性,對數據集的樣本按不同類別分別進行均分再合并。最終可以獲得5組訓練/驗證集,進行5次訓練,得到5個驗證結果的均值。
實驗首先對比不同半徑下,改進的W-KNN算法和傳統KNN算法各自的表現,對三個數據集采用5折交叉驗證求均值,在K取值為1-20的情況下,5種情感分類結果如圖1所示,從左至右依次為德語、漢語、英語數據集,實折線為文中改進后算法的識別率。可以看出,改進后的KNN算法優于傳統KNN算法,在三個數據集上最大提升幅度分別為5.6%、9.6%、5.2%。

圖1 不同K值下的KNN算法與W-KNN算法的識別正確率
圖2是KNN算法和改進KNN算法在綜合考慮計算成本和計算速度后,分別在三個數據集上對五種情感的識別率。從左至右依次為德語、漢語、英語數據集,星折線為文中改進后算法的識別率,情緒依次為生氣、高興、中性、悲傷、驚恐。可以看出,德語數據集上,改進算法對生氣、高興、中性和悲傷情感的識別效果優于傳統算法;漢語數據集上,改進算法對生氣、高興、中性和驚恐情感的識別效果優于傳統算法;英語數據集上,改進算法對高興、中性和悲傷情感的識別效果優于傳統算法。不同情感的識別正確率有一定差距,分析原因,認為語音情感識別的正確率與語種有一定關系,不同語種對不同情感的表現力不相同。

圖2 KNN與W-KNN對不同情感的識別正確率
進一步,文中使用SVM,HMM和BP神經網絡在三個數據集上進行驗證,實驗發現,基于HMM的分類方法,對HMM的狀態數N的選擇具有較大依賴,但N的增大,將增加時間開銷,還會造成系統冗余,為此,只選取W-KNN、SVM和BP神經網絡結果進行集成學習,各個算法結果如圖3所示,從上到下依次為德語、漢語、英語數據集上的實驗結果。


圖3 算法在不同數據集上的表現
結果表明,改進后的W-KNN的效果基本與其余集成所用分類方法持平,不存在明顯短板,在集成中可以有效貢獻準確率。在德語語料庫中,文中算法對高興和驚恐情感的識別均優于其余算法,在生氣和中性情感上與BP神經網絡算法持平;漢語語料庫中,文中算法對生氣、悲傷和驚恐情感的識別均優于其余算法;英語語料庫中,文中算法對生氣、中性和厭惡情感的識別均優于其余算法。圖4是上述5種算法對語音情感整體識別正確率的折線圖,從圖中可以看到,所提出的基于集成學習的加權投票算法具有最好的識別效果。德語和漢語語料庫中,文中算法均優于其余算法;英語語料庫中,文中算法與BP神經網絡算法識別效果持平。這一點與所選基分類器的分類表現差異較大有關,BP神經網絡在英語語料庫上的表現很大程度上影響了其他算法在集成學習中所占權重。

圖4 五種算法情感識別率
語音情感識別作為語音識別的一環,具有重要的研究價值。通過研究發現,在離散語音情感識別中,語音信號的不同特征對最后的分類結果有不同程度的影響,如何尋找更有效的情緒特征,是當前研究者面臨的一大問題。
此外,由于人類情感具有模糊的時間邊界,情感識別是一項具有挑戰性的任務。每個人的情感表達方式不同,一個話語可能包含不止一種情感[15],維度型情感語音的識別依然存在許多難點需要攻克,針對此類問題可以使用長短時記憶網絡做進一步的研究。