音頻特征提取的主要方法
語音信號處理領域通過對原始的頻譜特征進行變換產生的波形非常多。過去雖然對原始頻譜進行變換丟失了不少的語音數據信息,但是產生的多種變換特征促進了語音識別和語音情感分類系統的識別率提升。比較典型的除了短時平均幅值、短時最大幅值、共振峰、基頻等,被應用最多的為梅爾頻率倒譜系統(MFCC)特征。梅爾頻率倒譜系數將人耳的聽覺感知特性和語音信號的產生機制有機結合,其通過對頻譜能量譜用三角濾波變換后得到濾波器組,然后取對數,最后進行反離散余弦得到MFCC,在語音情感分類領域利用39維的MFCC系數取得了一定的突破,但是MFCC丟失了很多原始信息,而利用卷積神經網絡進行學習時越原始的數據帶來越好的效果。原始頻域不僅保留更多的信息,而且可以使用卷積和池化(pooling)操作表達處理語音多變性。這里根據Sainath等人[2]提出的通過學習定義在能量譜上的濾波器數組參數作為輸入特征。(見圖3)
(1)具體處理過程如下:
(2)首先讀取音頻時域數據和采樣率。
(3)對時域數據進行分幀處理。
(4)對分幀數據加漢明窗。
(5)進行傅立葉變換轉化為頻域數據。
(6)利用濾波器組進行變換每一幀得到40組梅爾濾波器組特征。
(7)進行歸一化操作。
(8)對音頻進行裁剪,裁剪的音頻幀數為40。
3使用卷積神經網絡進行音頻情感分類
3.1卷積神經網絡
人工神經網絡提出于20世紀80年代,由單層感知機逐步發展為多層感知機,它從信息處理角度對人腦的神經元進行抽象。大量的節點之間相互連接,每個節點都有特定的激勵函數。在早期發展階段,由于梯度爆炸問題和計算能力有限,神經網絡的發展一直停滯。2006年Hinton提出了深度置信網絡(DeepBeliefNetwork,DBN)的深度產生模式[3]。使用這種算法可以更好地初始化DNN的訓練,從而開啟了深度學習發展的新篇章。
卷積神經網絡(ConvolutionNeuralNetwork)為深度學習在目標識別和分類領域的較早應用。近年GPU計算能力增加和海量業務數據的出現,使得大規模的CNN在機器視覺和語音分類等領域得到了廣泛應用。卷積神經網絡本質是一種前饋神經網絡,卷積神經網絡有3種結構上的特征:局部連接、權重共享以及空間或時間上的次采樣。卷積神經網絡的層與層之間采用局部連接,減少了計算量。
卷積神經網絡的層與層之間的連接權值是共享的,比如圖4中的m層與m-1層,每個m層神經元與3個m-1層的神經元進行連接,這個3個連接的權值是一樣的。實際應用中,可以通過設置多種不同的濾波器來提取不同的濾波參數,從而實現提取不同的目標特征。例如對于圖像而言,就是提取不同的圖像邊緣。在卷積神經網絡中隱藏層的參數個數和隱藏層的神經元個數無關,只和濾波器大小和濾波器的種類有關系。
卷積神經網絡除了局部連接和權值共享的特性,糾正線性單元(ReLU,RectifiedLinearUnits)激活函數也保證了實際訓練中的單邊抑值和稀疏特性,同時為了保證泛化特性,采用L2/L1正則化范數作為激活偏置。
3.2具體實現
(1)輸入層:輸入按幀數進行裁剪的音頻40×40。
(2)卷積層1:濾波器大小為3×3,共有20個濾波器,得到20個大小為36×36的特征映射。
(3)池化層1:卷積層1后面跟著子采樣層。子采樣層的目的是減少特征映射的神經元個數。通過池化操作,可以大大降低特征的維數,避免過擬合。最大子采樣函數的定義為:
(1)
該層采用最大子采樣方法,由特征映射中2×2的領域點采樣為1個點,也就是4個數中最大的。最終的特征映射數目為18×18。
(4)卷積層2:濾波器大小為3×3,采用40組濾波,最終特征映射的數目為16×16。神經元的個數共有40×16×16=10240。
(5)池化層2:采用2×2的池化操作,特征映射數目為8×8。
(6)卷積層3:采用的濾波器大小為3×3,采用60組濾波器,最終特征映射的數目為6×6,神經元的個數為60×6×6。
(7)池化層3:得到特征映射數目為3×3。
(8)卷積層4:采用濾波器大小為2×2,采用80組濾波。特征映射數目為2×2。
(9)全聯接層:共有80×2×2=320個神經元。
(10)輸出層:通過softmax回歸算法將特征映射到目標的6個分類。softmax是logistic回歸的多類形態。利用softmax函數定義目標y=c的后驗概率為:
(2)
對于樣本(x,y),輸出目標y={1,…,C}。我們用C維的one-hot向量表示輸出目標。對于類別C
(3)
具體表現見圖5。
4測試與驗證
驗證采用CASIA漢語情感語料庫。該數據庫由中科院自動化所錄制,由4位錄音人(兩男兩女)在純凈錄音環境下(信噪比約為35dB)分別在5類不同情感下(高興、悲哀、生氣、驚嚇、中性)對500句文本進行演繹而得到,16kHz采樣,16bit量化。經過聽辨篩選,最終保留其中9600句。
輸出結果測試:見圖6。
在epoch次數為200時準確率達到81%。