熊梓奧,蒼巖
哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001
2019 年,由于非洲豬瘟的影響,我國生豬市場遭受沖擊,各地養豬場大量生豬病死。在養殖戶經濟損失巨大的同時,也造成了豬肉價格飆升的情況[1]。豬在患上非洲豬瘟后,最顯著的病狀就是咳嗽[2]。為預防相關呼吸道傳染疾病,提高人工診斷效率,可通過監測豬舍中豬的咳嗽情況,報告給飼養員進行預警。豬咳嗽聲監測系統是一個端對端系統,需要對豬舍的聲音長時間采集,再來識別其中的豬咳嗽聲。由于長時間采集的聲音數據量大,包含沒有豬叫聲的部分,所以在對豬咳嗽聲識別之前,需要對采集得到的音頻數據進行端點檢測。在冗長的音頻中確定豬叫聲的起點與終點,提取出豬叫聲,從而提高系統的檢測效率。同時,端點檢測算法的檢測效果也會直接影響監測系統后續咳嗽聲識別的準確率。因此,一個有效且魯棒的端點檢測算法是整個豬咳嗽聲監測系統的關鍵之一。
現階段端點檢測算法大致可分為2 類:第一類是基于閾值比較的方法。這類方法提取樣本每幀的特征參數,將其與人為設定的閾值進行比較,然后判定得到語音幀,其最為經典的是基于短時能量和短時過零率的雙閾值端點檢測算法[3]。它使用短時能量與短時過零率作為特征參數,具有計算量小,檢測速度快的特點,但在低信噪比條件下算法的性能急劇下降。由于語音的特征參數易受背景噪聲影響,有些研究者便嘗試找到更抗噪的特征,文獻[4]將子帶能量與子帶譜熵相結合,提出一種新型語音特征參數——子帶能量熵比。除此之外,文獻[5]引入了特征組合的方法,以改善單一特征易受噪聲影響的問題。第二類是基于模型匹配的方法。這類方法通過樣本構建語音模型,再與測試樣本進行匹配。在低信噪比情況下,第二類方法比第一類方法的檢測結果更準確,但是它需要大量數據進行訓練,而且算法相對復雜,計算量大。早期有研究者使用隱馬爾可夫模型(hidden Markov model, HMM)算法[6]、支持向量機算法(SVM)[7]以及單一的神經網絡作為端點檢測的模型。文獻[8]對單一神經網絡的檢測效果做了比較。隨著深度學習研究的快速發展,對于端點檢測算法的探究從單一神經網絡,轉向多算法融合。文獻[9]將深度神經網絡(deep neural networks,DNN)與維特比算法結合,進一步提高檢測的準確率。文獻[10]提出了一種增強統計噪聲抑制算法,并將其作為一個模塊,應用于在卷積神經網絡前。除此之外,文獻[11]搭建了復雜的神經網絡模型,將卷積神經網絡(convolutional neural networks, CNN)與循環神經網絡(recurrent neural network, RNN)結合,進行特征學習。模型輸入語音樣本原始波形,實現了端到端的端點檢測系統。
綜上,本文以生豬養殖場育肥舍的應用場景為背景,提出一種基于長短時記憶(LSTM)網絡單元的端點檢測算法。算法首先通過分析豬舍中的豬叫聲信號,提取其梅爾頻率倒譜系數(MFCC)與對數能量特征作為模型的輸入,再搭建以LSTM為主體的神經網絡對豬叫聲信號進行端點檢測,探究了算法在豬舍風扇噪聲下的魯棒性。
本文端點檢測方案本質上是對豬叫聲音頻樣本進行逐幀判斷,確定每一幀是豬叫聲還是非豬叫聲,從而得到豬叫聲的起點和終點。相比于人類,豬叫聲種類較少,主要有正常的哼叫聲、打架的嚎叫聲、患病的咳嗽聲,而育肥豬舍的背景噪聲也相對單一,大部分情況為風扇聲、水聲以及豬撞擊豬欄的金屬聲。因此,可以針對豬舍的特點設計整個檢測方案。由圖1 所示,豬叫聲端點檢測方案由預處理、特征提取、模型訓練、模型檢測4 部分組成。

圖1 豬叫聲端點檢測方案
預處理階段:將樣本按比例分為訓練集、驗證集、測試集,并對每個樣本進行預加重、分幀、加窗處理。
特征提取階段:對預處理后的訓練集、驗證集中的樣本提取可以表征樣本的特征參數,即MFCC 和對數能量的組合,減少原始樣本的冗余信息,提高訓練效率。
模型訓練階段:根據LSTM 可以對樣本時間信息學習的特點,搭建以LSTM 為主的神經網絡,將提取的特征參數輸入網絡中訓練,并保存訓練完成的網絡。
模型檢測階段:對測試集樣本進行特征提取,輸入訓練好的神經網絡中,輸出結果,最后判定得到豬叫聲的起點和終點。
語音信號有著低頻信噪比大、高頻信噪比小的特點。為了改善高頻信噪比,需要對豬叫聲樣本進行預加重處理,提升其高頻部分,從而增加高頻分辨率。將樣本信號通過一個高通濾波器即可實現預加重,高通濾波器的傳遞函數如下

假設第n時刻的語音采樣值為x(n),經過預加重處理后的信號如下

式中α為預加重系數,通常取0.97。
語音信號是一種時變信號,但它具有短時平穩特性。在一個較短的時間內,語音信號特性基本保持不變即相對穩定,可以將其視為一個準穩態過程。MFCC 特征參數提取采用短時譜分析,因此對豬叫聲信號進行分幀。分幀時相鄰幀之間應有部分交疊,以保證幀與幀之間的連貫性。由于分幀后語音幀的兩端急劇變化,會導致頻域中幀與幀之間過渡時信號發生丟失。將每個語音幀乘以Hamming 窗,使兩端平滑過渡到零,從而減小語音幀的截斷效應。Hamming 窗函數如下

式中N為窗的長度。
MFCC 是 由Davis 和Mermelstein[12]在1980 年提出。研究表明,人耳對低頻信號更加敏感。當頻率小于1 kHz 時,頻率與人耳感知能力呈線性關系;當頻率大于1 kHz 時,其呈對數關系。梅爾(Mel)頻率就是將實際頻率由線性轉換為非線性的方法,轉換公式如下

式中f為實際頻率。
作為語音信號常見的特征之一,MFCC 模擬了人的聽覺特性,適合于語音信號處理的相關工作中。此外,能量也是有效衡量語音和非語音的有效特征。因此,本文選擇MFCC 加對數能量作為表征豬叫聲樣本的特征參數,特征提取步驟如圖2 所示。

圖2 MFCC 加對數能量特征提取步驟
1)將之前預加重、分幀加窗后的豬叫聲信號,按幀進行離散傅里葉變換(discrete Fourier transform,DFT)得到樣本的頻譜

計算功率譜為

式中:yi(n)為預加重、分幀后的信號;k為傅里葉變換的點數;n表示第i幀中的第n個采樣點。
2)將上面的功率譜通過Mel 濾波器組,得到Mel 頻譜,公式如下

式中:M為濾波器組中三角濾波器的個數;Hm(k)為Mel 濾波器的頻率響應。
3)計算每個濾波器組輸出的對數能量,再通過離散余弦變換(discrete Cosine transform,DCT)得到MFCC 系數C,公式如下

式中:M為濾波器組中三角濾波器的個數;I為MFCC 維數。
4)取DCT 后的第2 個到第13 個系數,組成12 維MFCC,再與這一幀的對數能量組合,最終得到這幀語音的13 維特征。
5)通常情況,由于MFCC 與對數能量的組合只能反映豬叫聲的靜態特征,為了提高模型的檢測效果,在13 維特征的基礎上計算得到其一階和二階導數,組成39 維特征陣。
圖3(a)、(b)分別為豬叫聲與風扇噪聲MFCC加對數能量前13 維特征矩陣的三維特征圖,圖3(c)、(d)分別為對應的三維特征圖的正視圖。由于風扇噪聲波形幅值隨時間變化較小,相對豬叫聲更平穩。從圖3(c)、(d)中可以看出,每幀的風扇噪聲相比于豬叫聲,特征值方差更小,特征曲線重合度更高。

圖3 豬叫聲與風扇噪聲特征對比
長短時記憶(LSTM)網絡單元在1997 年由Hochreiter 等[13]提出,它是一種特殊的RNN 結構。它能夠對輸入的長時依賴關系進行建模,同時在一定程度上解決了RNN 在較長的時間序列上反向傳播時帶來的梯度消失問題。
在LSTM 的模塊中,包含一個輸入門,一個輸出門和一個遺忘門,通過3 個門的協作來學習權重,達到能夠存儲長期信息的效果。LSTM 網絡單元的結構圖如圖4 所示。

圖4 LSTM 網絡單元結構
LSTM 內部相關計算公式為

式中:ht是隱藏狀態;ct是單元狀態;W、U、b為訓練中需要學習的參數;ft為遺忘門、it為輸入門、ot為輸出門,三者的輸入均為ht-1和xt,經過激活函數,將值縮放至0 和1 之間。當遺忘門的值取0 時,單元狀態ct的值也變為0,相當于遺忘掉上一時刻的狀態,只關注此時刻的輸入。輸入門決定是否接收此時刻的輸入,輸出門決定是否輸出單元狀態。
圖5 為LSTM 檢測模型的網絡結構。其中,Linear 表示線性層,ReLU 和Sigmoid 為激活函數。

圖5 LSTM 檢測模型結構
1)對訓練集樣本進行預加重、分幀和加窗處理。其中,預加重系數α為0.97,幀長為25 ms,幀移為10 ms,窗函數為Hamming 窗。將時長為7 s的音頻樣本轉換成699 個語音幀,得到(1,699)的一維幀矩陣。
2)將人工標記的豬叫聲起止時間點,轉換為(1,699)的幀標簽,語音幀的值為1,非語音幀的值為0。
3)計算訓練集樣本的39 維MFCC 加對數能量特征。得到尺寸為(39,699)的特征矩陣。
4)將每個特征矩陣轉換為(1,699,39)的張量,送入LSTM 模型中訓練,模型的輸出為(1,699,1)的張量。
5)對模型的輸出進行判定,大于閾值判定為語音幀,小于閾值判定為非語音幀,得到檢測結果。
3.1.1 實驗數據
本文實驗采用的豬叫聲數據來自吉林省某生豬養殖場育肥舍,由工作人員使用手機錄制。豬舍內有用于控制溫度的風扇,當室內溫度達到一定程度便自動開啟。樣本的采集時間是冬季,風扇轉動的頻率較低。相比于夏季,采集數據沒有被風扇噪聲干擾的情況更多。數據經過截取處理,去除被風扇聲干擾的數據,組成由200 個時長為7 s 的樣本構成的數據集。樣本的采樣頻率為16 kHz,采樣精度為16 bit。使用Audacity 軟件標記樣本中豬叫聲的起止點,并保存為json 文件,作為語音標簽。最后把實驗數據按8∶1∶1 的比例分為訓練集、驗證集、測試集。此外,還額外錄制了不含豬叫聲的風扇噪聲,用于算法的魯棒性驗證。
3.1.2 實驗內容
實驗1對于端點檢測算法,根本目標是要完整檢測出豬叫聲。模型在輸出時由Sigmoid 函數將輸出值映射到(0,1),因此需要進行判別,使其值轉換為代表語音幀的1,非語音幀的0。如大于閾值0.5 的概率值,則判別為語音幀,反之則判別為非語音幀。這里閾值可以視為一種容忍度,即在保證準確率的前提下,接受一定的誤檢,而避免漏檢,保證檢測豬叫聲的完整性。為探究判別閾值大小對模型準確率的影響,本實驗多次改變閾值的大小,將閾值設置在0.3~0.7,步長為0.1。先使用訓練集和驗證集訓練模型,再使用測試集對訓練完成的模型進行評估。
實驗2使用基于短時能量和短時過零率的雙閾值端點檢測算法、基于SVM 的端點檢測算法作為對照實驗。雙閾值算法先提取樣本的短時能量和短時過零率,分別設置2 個特征閾值,再沿著時間方向將2 種特征和閾值做比較,得到檢測結果。閾值的計算采用自適應方法,對不同的樣本選取不同的閾值,以確保算法的檢測效果。SVM 算法通過提取樣本的多種時頻特征構成組合特征,來訓練SVM 模型,再使用訓練好的模型對測試樣本的每一幀進行語音、非語音的二分類,最終得到整個樣本的檢測結果。SVM 的核函數采用線性核,經過多次實驗測試,懲罰因子C選取最優值1,實驗結果見圖6。

圖6 SVM 在不同C 情況下的檢測結果
為驗證本文算法的魯棒性,本實驗對比3 種算法在加入不同信噪比噪聲的數據集下的檢測效果。將風扇噪聲分別以10、5、0、-5、-10 dB 的信噪比,加入到數據集中,再使用加噪的數據集訓練模型。圖7 顯示了一個樣本的原始波形圖及其加噪后的波形圖。


圖7 樣本的原始波形圖及其加噪后的波形
為客觀評價算法的性能,實驗需要比較算法的檢測結果與人工標記的起止點,并從以下3 個方面對算法進行評估,

式中:Ns為總幀數;NT為檢測正確的幀數;NFR為檢測為非語音幀的語音幀數量;NFA為檢測為語音幀的非語音幀的數量。
3.3.1 實驗1
表1 顯示了LSTM 模型在不同閾值下,在各個數據集上的表現。

表1 LSTM 模型在不同判定閾值情況下的準確率 %
可以看出,未加噪時,閾值對準確率的影響相對較??;在信噪比較大(10、5 dB)的情況下,最佳閾值等于0.6;信噪比較小(0,-5,-10 dB)時,最佳閾值等于0.4。在測試樣本未加噪的情況下,樣本中的豬叫聲容易被模型檢測出來,因此語音幀對應的輸出更接近標簽值1,準確率沒有因為閾值的變化而大幅改變。當測試樣本加噪后,在信噪比較大的情況下,豬叫聲的幅值遠大于風扇噪聲的幅值,噪聲對檢測結果有一定干擾,但干擾相對較小,漏檢情況較少。此時,非語音幀對應的輸出值會大于0,但又不會大很多,因此較大的閾值會將這類輸出值判定為非語音幀,降低了誤檢率,使得準確率提高。在信噪比較小的情況下,風扇噪聲會淹沒部分豬叫聲,檢測結果會受到噪聲的嚴重干擾,語音幀的輸出值會更接近非語音幀輸出值。此時,較小的閾值會降低檢測標準,增加誤檢率,但保證了更多的豬叫聲不被噪聲影響而漏檢,反而增加了整體的準確率。
3.3.2 實驗2
表2 顯示了3 種算法在添加了不同信噪比風扇噪聲的數據集上的表現,圖8 顯示了3 種算法在不同信噪比風扇噪聲下的準確率。由圖8 可以看出,3 種算法的準確率會隨著信噪比的減小而降低。

表2 3 種算法在不同信噪比的風扇噪聲下的檢測結果 %

圖8 3 種算法在不同信噪比的風扇噪聲下的準確率
雙閾值檢測算法在高信噪比(10、5 dB)的情況下檢測效果較理想。但當風扇噪聲強度增加,信噪比小于0 時,部分豬叫聲被風扇噪聲所淹沒,豬叫聲的短時能量與短時過零率便沒有了區分度。這使得算法幾乎將整個樣本都判定為豬叫聲,更少的豬叫聲被漏檢,更多的風扇噪聲被判定為豬叫聲,造成了漏檢率RFR大幅降低與誤檢率RFA的激增。圖9 為圖7(d)樣本的雙閾值檢測結果,從圖中可以看出,由于噪聲影響,雙閾值檢測算法將部分噪聲誤判為豬叫聲。

圖9 SNR=0 dB 時雙閾值檢測結果
SVM 算法在信噪比降低的過程中,整體的檢測效果變差,A的變化幾乎是呈線性降低,RFR和RFA一直增加。這說明了隨著噪聲強度的增加,豬叫聲的時頻特征與風扇噪聲的時頻特征區分度越來越低,SVM 模型很難對豬叫聲和風扇噪聲進行正確分類。圖10 為圖7(d)樣本的SVM 檢測結果,在信噪比為0 dB 的情況下,SVM 模型已無法對樣本正確檢測。

圖10 SNR=0 dB 時SVM 檢測結果
LSTM 算法相比于其他2 種算法,A、RFR、RFA三者的變化幅度更小,檢測結果更加穩定。在信噪比高的情況下,算法檢測結果優于其他,即便在較低的信噪比(-5、-10 dB)下也仍有一個理想的檢測效果。這說明LSTM 模型通過訓練樣本學習到了豬叫聲的特征,即使在低信噪比時,也能從含噪樣本中判定得到豬叫聲。因此也證明了LSTM 算法在豬舍的風扇噪聲下有著更好的抗噪魯棒性。圖11 為圖7(d)樣本的LSTM 檢測結果,由圖可以看出LSTM 模型在較低信噪比時仍然能檢測出豬叫聲。

圖11 SNR=0 dB 時LSTM 檢測結果
1) 傳統端點檢測算法在高信噪比情況下,檢測效果良好,但隨著噪聲強度的增加,算法的準確率也隨之大幅降低。本文提出了一種基于LSTM網絡單元的端點檢測算法,針對風扇噪聲的環境,通過大量豬叫聲數據訓練得到更精準的端點檢測模型。
2) 本文進行了2 組實驗,實驗1 為測試得到LSTM 端點檢測模型的最佳判決閾值;實驗2 在這個閾值的基礎上與雙閾值端點檢測和SVM 端點檢測進行比較。仿真實驗結果表明,在豬舍中不同信噪比的風扇噪聲下,相比于傳統端點檢測算法,提出算法的檢測效果穩定、魯棒性好。
本文所提出的LSTM 模型較小,可以通過搭建較復雜的模型,進一步提高檢測的效果。未來也可以在數據集中增加其他豬場的豬叫聲,以提高模型的泛化能力。