蒯紅權 ,吳建華 ,吳 亮
(1.鹽城市經貿高級職業學校實訓處,江蘇 鹽城 224041;2.東南大學信息科學與工程學院,江蘇 南京 210096)
情感識別是人工智能未來的研究方向之一。在許多業務場景中,利用人工智能準確地提取并利用對象的情感信息對于業務質量的提高有著重大意義。語言作為人類交流最原始,最重要的方式之一,不僅攜帶有語義信息,還攜帶著大量情感信息[1]。因此,語音情感識別問題正受到越來越廣泛的關注。
近年來,伴隨著硬件性能的提升帶來的計算機計算資源的爆炸性增加,深度學習在許多機器學習任務上取得了巨大的成功,成為了機器學習最受關注的分支。在其他領域取得成功之后,深度學習也被應用到了語音情感識別任務中,并取得了比傳統機器學習方法更好的效果。
傳統的語音情感識別算法分為特征提取與特征分類兩個步驟。首先需要對語音信號分幀,逐幀提取短時聲學特征,例如梅爾頻率倒譜系數(Mel Frequency Cepstrum Coefficient,MFCC)等,再從這些短時特征中提取長時特征,最后將長時特征輸入分類器[2]。雖然深度學習技術的出現使以原始信號(或其FFT 譜)作為輸入進行end-to-end(端到端)的語音情感識別得以實現[3],但實驗結果表明,由于目前語音情感識別領域缺少大規模數據作為訓練樣本,以手動提取的傳統聲學特征作為模型的輸入仍然比以原始數據作為輸入更容易取得更好的性能[2],所以傳統聲學特征仍然被廣泛應用于語音識別問題。
因為語音信號是一種典型的時序信號,所以專門用于處理序列數據的RNN(Ruccurent Neural Network,循環神經網絡)是語音情感識別任務中最常用的一類深度學習模型。此外,CNN(Convolutional Neural Network)的應用也較為常見。自RNN 誕生以來,產生了許多變體,其中最具代表性,也最為常用的模型是LSTM(Long Short Term Memory)[4]。目前大部分序列模型中采用的都是LSTM 或其變體GRU(Gated Recurrent Unit,門控循環單元),而非傳統RNN,在語音情感識別任務中也是如此。此外,相比于單向LSTM,雙向LSTM 在語音情感識別任務中的應用要廣泛得多。
近年來,注意力模型在機器翻譯等NLP(Natrual Language Processing,自然語言處理)領域取得了巨大成功。之后,這一技術被遷移到了語音情感識別任務中。研究者將注意力機制加入了傳統的CNN[5-6]和RNN[2,7],證明了注意力機制能夠有效提高語音情感識別算法的性能。其中,文獻[2]將注意力模型應用于雙向LSTM 層的輸出,在時間維度對LSTM 的輸出序列進行了加權平均,得到一個特征向量,再從該向量得到最終的分類結果,該模型在IEMOCAP 數據集上取得了比傳統方法高1%~2%的識別性能。
對于一些復雜問題,由于單層RNN 難以取得足夠高的性能,往往需要使用深度RNN。由于上述注意力模型的輸出并非一個序列,因此其只能應用于最后一層RNN 的輸出,而不能應用于多個RNN 層之間,無法與深度RNN 緊密結合。所以本文基于傳統的注意力機制,提出了分段注意力機制,并將其應用于深度RNN 網絡中,提出了一個基于分段注意力的新型深度RNN 模型。該模型兩個LSTM 層之間加入了一個改進的注意力機制,在時間維度上將前一級LSTM 層的輸出序列分割為若干區間,在每個區間內進行一個基于注意力機制的加權池化,以將該序列映射為一個較短的序列,作為下一級LSTM 層的輸入。我們使用36 個短時特征作為輸入,在CASIA 數據集上對該模型進行了實驗,并將其與基于普通注意力機制的單層LSTM 與雙層LSTM 的性能進行了對比,實驗結果表明,該模型在CASIA 數據集上取得的識別性能比普通的雙層LSTM 模型高出了1%~2%,比普通的單層LSTM 高出了約5%。并且訓練速度比普通雙層LSTM 模型高出約50%,略高于普通單層LSTM。
RNN 是一類以序列數據作為輸入的神經網絡,特別適用于語音,文本等時序信息的分析。對RNN的研究始于20 世紀80—90 年代,并逐步發展為深度學習的主要模型之一。其中,目前最常見的循環神經網絡結構是LSTM,是為了解決傳統RNN 存在的長期依賴問題而產生的。由于其獨特的結構,LSTM 擅長分析時間序列中間隔和延遲非常長的重要事件。
大多數情況下而言,序列的不同部分并非同等重要。為了更加高效地提取出有用信息,算法應該更著重于分析序列中更加重要的部分。然而,對于一般的RNN,輸入序列中各個元素具有相同權重,其不具備重點關注序列中特定部分的能力。而且,除了RNN之外,CNN 等其他模型也同樣具有這一不足,因此,近年來有關學者提出了注意力機制,用于幫助模型關注數據中更加重要的部分。
受到圖像處理領域SIFT 算法中高斯金字塔的啟發,本文提出了一種基于分段注意力機制的循環神經網絡模型,其結構如圖1 所示。

圖1 基于分段注意力機制的深度RNN 模型
模型的輸入為二維張量,兩個維度分別為特征和時間。假設輸入樣本被分為T個時間片,對每一個時間片提取D維特征,則輸入張量大小為D×T,各個時間片的特征向量依次存放在張量的每一列。首先,輸入張量依次通過全連接層和雙向LSTM 層,得到一個新的二維張量。然后,該張量從時間維度被切割為多個片段,每個片段分別通過一個注意力層,映射為一個特征向量,每個時間片的輸出經過組合后又得到新的二維張量。這個操作相當于進行了一次池化,假設每個時間片的長度為L,則池化大小為1×L,輸出張量大小為D×(T/L)。最后,池化結果依次通過雙向LSTM 層,注意力層和Softmax 層,映射為概率向量。
該模型結構能夠對時序信息進行層次化的分析,第一級LSTM 和注意力層用于對局部的特征進行提取,第二級LSTM 和注意力層用于全局特征的提取。
圖2 為本文采用的注意力機制的原理示意圖。對于每一幀,我們計算LSTM 的輸出yt與向量u的內積,記為pt:

圖2 注意力機制的一種實現

式中:u是一個可訓練的向量。接下來,我們計算pt的Softmax 函數:

αt可理解為該幀輸出相對于最終輸出的權重。利用權重向量α對LSTM 的輸出進行加權求和,得到最終的輸出向量:

將該向量作為分類器的輸入即可得到分類概率。
首先,和1.1 節類似,利用公式(1),計算LSTM每一幀的輸出yt與向量u的內積pt。接下來,我們首先將LSTM 的輸出分割為若干區間。假設共有N個區間,每個區間長度為L,設第n個區間為[nL,(n+1)L-1],在該區間內,我們計算pt的Softmax 函數,作為各幀的權重:

在該區間內利用該權重對LSTM 的輸出進行加權求和,得到輸出向量:

因為共有n個區間,所以分段注意力層將輸出一個長度為n的序列z。當n=1 時,即退化為1.1節所述的普通注意力模型。
在我們的模型中,我們將第一層LSTM 的輸出,輸入分段注意力層,將分段注意力層的輸出作為第二層LSTM 的輸入,再將第二層LSTM 的輸出,輸入1.1 節所述的普通注意力層,將其輸出,輸入Softmax分類器,得到分類概率。
為檢驗模型性能,我們在CASIA 情感數據集上進行了實驗。該數據集為中科院自動化研究所建立的數據集,包括高興,生氣,悲傷,驚訝,恐懼和平靜6 種情緒,每類1 200 個樣本,共7 200 個樣本。
首先,我們以25 ms 為幀長,10 ms 為幀移對語音進行分幀,對較短樣本補0,對較長樣本截去尾部,以將所有樣本的長度統一為1 024 幀。接下來,我們在分幀后的語音信號中對每一幀提取36 維短時特征(包括ZCR,energy,energy entropy,spectral centroid,spectral spread,spectral entropy,spectral flux,spectral roll-off,13 階MFCC,12 階chroma,chroma 的標準差,harmonic ratio 和pitch),作為模型的輸入。
本文采用文獻[2]提出的基于注意力機制的RNN 模型作為基線。在該模型中,每幀的數據首先通過全連接層,再通過RNN 層,最后利用注意力模型對RNN 層的輸出進行加權池化[2],將池化結果通過Softmax 層,得到分類概率。在本文的實驗中,我們采用了2 層全連層,每層512 個神經元,激活函數為ReLU 函數;RNN 層采用的是64 個神經元的雙向LSTM,為了證明深度RNN 能夠取得比普通RNN 更好的性能,我們對于使用一層LSTM 和兩層LSTM的情況分別進行了實驗;注意力模型采用1.1 節所述模型。訓練時對每層均采用0.5 的dropout 率。
本文提出的模型即在上述基線模型基礎上在兩個LSTM 層之間加入了一個1.2 節所述的分段注意力模型,以16 幀為單位對第一層LSTM 的輸出進行分段注意力池化。模型的其余參數與上述基線模型相同。
我們對每個模型都進行了多次實驗,表1 列出了各模型取得的最高準確率(weighted accuracy,WA),最低準確率,以及平均準確率。因為該數據集各類別樣本數是平衡的,所以UA(unweighted accuracy)和WA 是相同的。

表1 各模型的準確率
表1 中的結果表明,采用雙層LSTM 的模型性能比采用單層LSTM 的模型更好。這說明深度RNN的確能夠取得比單層RNN 更好的性能。在兩層LSTM 之間加入了分段注意力機制后,模型識別率提高了約1.5%。
同時,我們也比較了三個模型的訓練速度。實驗采用的深度學習框架為Tensorflow 1.13.1,利用Nvidia RTX2070 GPU 進行加速。訓練時采用的batch 大小為128,采用Adam 優化算法進行訓練,初始學習率為0.001,在驗證集損失函數連續10 步沒有下降時將學習率降低0.5 倍。在驗證集識別率連續20 步沒有提高時終止訓練。表2 列出了各模型的訓練時間,表3列出了各模型訓練過程中識別率的變化。從結果可以看出,在兩個LSTM 層之間加入分段注意力機制之后,雖然模型參數變多了,但模型收斂速度卻提高了約100%,甚至相比單層LSTM 也要略高。原因是分段注意力機制縮短了第二層LSTM 輸入序列的長度,而RNN 訓練速度主要取決于輸入序列的長度。

表2 各模型收斂時間

表3 各模型訓練過程中識別率的變化
為了將注意力模型與深度RNN 緊密結合,本文對傳統的注意力機制進行了推廣,提出了分段注意力機制,并提出了基于該機制的深度RNN 模型。該模型中,上一級RNN 層的輸出序列首先被分段,對于每一段都進行注意力加權池化,以此將前級RNN輸出的較長序列映射為較短的序列作為后級RNN的輸入。本文在CASIA 情感數據集上進行了實驗,實驗結果證明,深度RNN 能夠取得比單層RNN 更好的性能;在引入分段注意力機制后,模型性能獲得了進一步提升,且模型的訓練速度獲得了大幅提高。