張可欣,劉云翔
(上海應用技術大學計算機科學與信息工程學院,上海 201418)
語音情感識別廣泛應用于教育行業、服務行業、輔助駕駛行業以及刑事偵查行業。不僅國內人們對語音情感識別展開深入的研究,語音情感識別在國外也受到了重視[1-3]。1997 年,麻省理工大學的教授提出了“情感計算”的概念[4]。前人在語音特征值的選擇與提取、去除冗余特征、語音情感數據庫的選擇以及構建分類器方面實現了很大的進展。然而,跨語言的語音情感識別準確率低,還有待于提高。語言的差異,會導致識別率較低。為了解決這一個問題,Zheng W L 提出的使用一種用于跨語料庫多時話域自適應的多尺度差異對抗網絡方法[4],文獻[5]提出了基于域自適應最小二乘回歸的跨語料庫語音情感識別方法。和以上研究相比,該文的優點在于實現了語音—文本,文本—語音的相互轉化。通過相互轉化,可以起到靈活消除差異、提取關鍵詞的作用,這樣可以避免大量情感無關的信號降低識別效率。
在語音情感識別方面,前人多數關注于提取語音特征、去除冗余特征、構建分類器這三個方面。對前人做過的語音情感識別的研究進行總結。語言情感的特征值包括基于譜的相關特征,韻律學特征以及音質特征?;谧V的特征可以正確地反映人們的聲道變化,根據聲譜變化,推斷人們的情感。常見的譜特征有MFCC、LPC。梅爾頻譜是根據人耳聽覺產生的特征參數。MFCC 頻譜的優點在于可以有效地降低高頻率的噪聲干擾[6-11]。韻律學特征描述了說話語音的聲調、快慢、音高的變換。不同的情感狀態下,這些狀態有所不同。韻律學特征包括短時能量、基頻、短時過零率、語速。當人們情緒高漲時,短時能量增大、語速加快;相反,當人們心情處于低谷期時,短時能量減小、語速減緩。短時過零率是指單位時間內,每一幀經過零值的次數,反映了語音信號的頻率。通過觀察說話者語音的聲調、快慢及音高的變換,就可以對說話者的情緒進行判斷。韻律學特征比頻譜特征更加簡單,無需提取頻率波,但是缺點在于具有偶然性和主觀性。音質特征的目的是判斷語音的純凈度。當人們悲傷難以平復時,他們的音質中會出現喘息、哽咽。選取共振峰為音質特征,共振峰描述了不同情感下的聲道共鳴差異,因此共振峰的位置會產生差異。文獻[12]提出句級特征是以一句話為單位,特征不是等長的。幀級特征是把語音信號分為等長的部分。對于幀級特征的預測需要整合所有幀的結果,作為最后的預測結果。該文介紹了幀級特征和句級特征各自的優勢。幀級特征的優點在于語音信號具有平穩性,缺點在于標簽分配的合理性不足。文獻[13]對CNN和BLSTM 進行了融合,該文提取了語譜圖和語音特征。語譜圖作為CNN的輸入,語音特征作為BLSTM 的輸入,最后將兩者的結果進行融合,在IEMOCAP 數據庫上準確率得到了提高。
在自然語言處理領域中,詞是最小的部分,正確的分詞是理解自然語言的重要步驟。常見的分詞方法有基于規則的正向分詞匹配法、逆向分詞匹配法、雙向最大匹配法,以及基于統計的統計分詞法。在將語音轉化為文本后,使用Jieba 工具進行分詞處理。Jieba 工具融合了基于規則和基于統計的兩種方法。Jieba 工具功能豐富,在進行分詞的同時還可以進行詞性的標注,為之后的句法分析和關鍵詞的提取提供了良好的基礎,還可以支持多種編程語言。Jieba 工具使用精確模式將句子精準分開,適合文本分析。使用全模式可以將句子中所有的詞都掃描出來,速度非??臁J褂盟阉饕婺J娇梢詫﹂L詞再次進行切分,提高了召回率。分詞結束之后,再進行詞性標注。詞法分析過程如圖1 所示。

圖1 詞法分析過程
句法分析的主要任務就是識別句子中包含的句法成分以及句子成分之間的關系。一般使用句法樹表示句法分析的結果。句法分析的問題在于存在歧義和搜素空間巨大的局限性,因此需要設計良好的句法分析算法。該文使用基于最大間隔的馬爾可夫網絡的句法分析,它是支持向量機和馬爾可夫網絡的結合,共同吸取了兩者的優點,能夠處理復雜耗時的句法分析,也可以在消除歧義方面起著重要的作用。這是一種判別式的句法分析,其判別函數為:
式中,?(x,y)表示與x相對應的句法樹y的特征向量,w表示特征權重。句法分析過程如圖2 所示。

圖2 句法分析過程
詞向量在文本情感分類中起著重要的作用。詞向量是指把文本表達成方便語義理解的向量的形式,以向量的形式提取無標注文本中的有用信息。詞向量的表達決定著文本情感分類的效果。該文使用向量化BOW 模型,核心思想是上下文相似的詞語義也相似。為了提高文本情感識別的準確性,需要從文本中提取關鍵詞。文中使用LSA 算法提取關鍵詞,該算法以向量的形式進行特征值提取。首先把詞向量拼成文檔矩陣(m×n),其次,對文檔矩陣進行奇異值分解([m×r]·[r×r]·[r×n]),最后,矩陣映射到更低維度k([m×k]·[k×k]·[k×n]),通過計算相似度,取相似度最高的作為關鍵詞。
使用名為pyttsx 的python 包可以把提取出的帶有情感關鍵詞的文本轉化為語音。若沒有pyttsx 包,要先安裝,安裝的代碼為pip install pyttsx,然后就可以進行文本-語音的轉化。轉化好音頻后提取它的MFCC 特征,在下面介紹的分類器中完成語音情感識別。
卷積神經網絡模型如圖3 所示。卷積神經網絡的激活函數選取ReLu 函數,損失函數選取交叉熵損失函數,然后設置卷積層和池化層。特征圖是通過對輸入圖像進行卷積計算和激活函數計算得到的。卷積過程就是用一個大小固定的卷積核按照一定步長掃描輸入矩陣進行點積運算。卷積核是一個權重矩陣,特征圖通過將卷積計算結果輸入到激活函數內得到,特征值的深度等于當前層設定的卷積核個數。假設語譜圖的長為M、寬為N,卷積核W的長為I、寬為J,偏置大小為b,激活函數為f,用卷積核提取語譜圖的計算公式為:

圖3 卷積神經網絡模型
式中,ym×n表示輸出提取的語譜圖的特征圖。池化層在卷積層之后,池化操作將相似的特征合并起來,并選取區域的最大值和平均值,池化操作的作用是縮小特征圖的尺寸,減少計算量。對于特征值多的圖像,可以去除圖像的冗余信息,提高圖像處理效率,減少過擬合。該文的卷積神經網絡是為了提取語譜圖的特征值,使用兩個卷積層、兩個全連接層,經過softmax 激活層變化,得到預測結果。
有時信息既可以由前面的序列決定,也可以由后面的序列決定,因此引入了BLSTM 模型,用于實現信息的雙向記憶。語音信號序列記為[x(1),x(2),…,x(T)],輸出信號記為[r→(T),r←(T)],r→(T)代表正向特征輸出,r←(T)代表反向特征輸出。BLSTM 網絡解決了RNN 不能實現雙向記憶的問題。BLSTM 的循環神經網絡結構圖如圖4 所示。

圖4 BLSTM的循環神經網絡結構圖
該文選取Berlin 情感數據庫和CASIA 漢語情感數據庫做跨語言的語音情感識別實驗。Berlin 情感數據庫是由柏林工業大學錄制的德語情感語音庫,由10 位演員(5 男5 女)對10 個語句(5 長5 短)進行七種情感(中性、生氣、害怕、高興、悲傷、厭惡、無聊)的模擬,共包含800 句語料,采樣率為48 kHz(后壓縮到16 kHz),16 bit 量化。采用CASIA 漢語情感數據庫對比驗證識別效果。CASIA 情感數據庫是由中科院錄制的,環境信噪比為35 dB,2 男2 女錄制50 句,包含高興、中性、憤怒、悲傷、害怕、吃驚六種情感,采樣頻率為16 kHz,量化為16 bit。進行跨語言的情感數據庫設計,從CASIA 漢語情感數據庫和Berlin 情感數據庫中分別挑選500 句,挑選的句子包含兩個情感數據庫共有的情感,有中性、生氣、害怕、高興、悲傷。數據庫設計的具體信息如表1 所示。

表1 數據庫信息
實驗運行環境選取pycharm 軟件,用python 編程。首先,在python 中導入Google Speech,選用開源API 下的Google Speech,將兩個情感數據庫的語音轉化成文本信息。然后將Berlin 情感數據庫的語音轉化為德語文本,使用百度進行翻譯,將其翻譯成漢語,實現了兩者語言的統一。接著使用自然語言處理領域的技術,對兩個數據庫的文本進行詞法分析、句法分析及LSA 算法提取情感鍵詞。然后將提取到的情感關鍵詞的文本使用pyttsx 的python 包提取出帶有情感關鍵詞的文本轉化為語音。深度學習框架選取tensorflow 和kears,在python 中導入tensorflow 和kears 兩個模塊。該文的卷積層設置為三層,池化層設置為兩層,全連接層設置兩層。利用DNN 提取深層次的特征值,然后將DNN 的輸出作為BLSTM 模型的輸入,提取前向和后向的序列信息,將BLSTM 的輸出作為最后的分類結果。
語言情感的特征值包括基于譜的相關特征、韻律學特征、音質特征及語譜圖。這里頻譜特征選取MFCC,將語音情感信號頻譜的頻率轉換成梅爾刻度,再進行頻譜的轉化,就得到了梅爾頻譜。梅爾頻譜的計算公式如下:
MFCC 頻譜的優點在于可以有效地降低高頻率的噪聲干擾,因此能夠很好地描述語音情感。韻律學特征描述了說話語音的聲調、快慢、音高的變換。在不同的情感狀態下,這些特征有所不同。韻律特征選取短時能量、基頻、短時過零率。然后再提取它們各自的統計學特征,包括最大值、最小值、均值及變化率。然而選取的特征值過多,容易造成維數災難,導致過擬合,因此需要對特征值進行降維。該文選取Fisher 準則,提取對情感識別貢獻度最大的特征值。Fisher 準則的思路:Fisher 準則根據均值和方差判斷數據的優劣,Fisher 的計算公式為:
式中,μ1d、μ2d代表兩個不同類別的d維向量的均值,和代表兩個不同類別的d維向量的方差。Fisher 值越大,說明對情感分類的貢獻度越高。因此,在語音情感分類的實驗中,應該選取Fisher 值較大的特征。通過計算結果可知,MFCC 和語譜圖征貢獻度最大,因此提取它們作為這次情感分類識別的特征值。提取語音特征值時調用python 的librosa 包,用于提取語音特征值。
選取最佳的參數能夠達到更好的分類效果,常見的參數選擇方法是網格搜索法。用網格搜索的方法選取卷積神經網絡的卷積層,池化層的卷積核大小、步長和深度、隱藏層卷積核大小的最佳參數。學習率設置為0.01,dropout 設置為0.5。經過網格搜索后,選取的最佳參數如表2 所示。

表2 神經網絡的參數
采用該文方法、使用一種用于跨語料庫多時話域自適應的多尺度差異對抗網絡方法和基于域自適應最小二乘回歸的跨語料庫語音情感識別方法進行對比實驗。計算和對比非加權平均數(UAR)和加權平均數(WAR),實驗結果表明,與一種用于跨語料庫多時話域自適應的多尺度差異對抗網絡方法和基于域自適應最小二乘回歸的跨語料庫語音情感識別方法相比,該文方法明顯有所提升,分別提高了大約4%和8%。實驗結果如表3 所示。

表3 實驗結果
該文提出了跨不同語言的情感數據庫的語音情感識別方法,解決了跨語言情感數據庫語言的差異造成識別率低的問題。自然語言處理和語音情感識別是兩個密不可分的領域,前人的研究很少把這兩個領域相結合。該文交叉融合了自然語言處理和語音情感識別兩個領域,實現了交叉領域知識的結合。首先,選取Berlin 語音情感數據庫和CASIA 語音情感數據庫,從兩個數據庫中分別挑選200 條語音;然后選用開源API 下的Google Speech,實現語音文本的轉化,然后使用機器翻譯,將其統一翻譯成中文,利用自然語言處理的詞法分析、句法分析、LSA的關鍵詞提取算法,提取出表達情感的關鍵詞,對提取出來的關鍵詞再使用SpeechLib 工具包將提取過特征值的文本轉化成語音,提取MFCC 特征;最后構建DNN+BLSTM 模型,實現語音情感的分類[15]。
使用語音—文本轉化,文本—語音轉化、詞法分析、句法分析、關鍵詞提取的方法是前人在語音情感識別中沒有提到的創新之處。然而不足之處在于目前的語音情感識別領域還有以下方面需要進一步研究解決:使用的自然數據庫較少,使用的情感數據庫大都是經過訓練的,具有不自然的缺點[16-17]。