吳亞文 邵 睿 李 淼 張 鋒 陶浩兵 辜麗川 焦 俊*
(1.安徽農業大學 信息與計算機學院,合肥 230036;2.中國科學院 智能機械研究所,合肥 230031)
在生豬養殖過程中通常對生豬行為進行分析以監測生豬健康狀況,識別生豬音頻信號中包含的行為信息是生豬行為分析的重要環節,端點檢測能準確定位端點并提取出有效的音頻數據,進而縮短信號處理時間和提高識別效果,端點檢測的正確判定是提高生豬音頻信號識別率的關鍵一步。運用短時平均幅度(Average amplitude,AMP)、短時過零率(Zero crossing rate,ZCR)等端點檢測算法在一定程度上可實現語音的端點檢測[1],但其在低信噪比(Signal-noise ratio,SNR)和復雜環境情況下具有波動性、不平穩性以及端點檢測準確率低等。
在生豬信號的端點檢測方面,黎煊等[2]利用AMP的單參數雙門限檢測豬咳嗽音,雖然方法簡單,但區分弱摩擦音和尾音困難;徐亞妮[3]進行豬咳嗽音識別的過程中使用了AMP和ZCR結合的門限端點檢測;馬輝棟等[4]雖然對門限閾值有所改進,但在具體的低SNR環境下,兩者的抗噪聲效果差,檢測效果都不是很明顯。Ghosh等[5]提出了一種基于長時段信號變化率測度(Long-term signal variability measure,LSTV)語音端點檢測算法,該算法雖然在低于-5 dB噪聲比環境下端點檢測效果較好,但在信噪比高于-5 dB或復雜環境下,檢測性能飽和,端點檢測效果差。除了國內外傳統端點檢測方法外,譜熵法[6]、共振峰檢測[7]、梅爾頻率倒譜系數(Mel frequency cepstrum coefficient,MFCC)倒譜距離[8]、方差法[9]、自相關函數法[10]、能零比[11]、能熵比[12],這些端點檢測雖然在前期的傳統的方法上進行特征估計,進而在實現對噪聲信號、無話信號和有效信號的區分上作出了改善,但是在遇到比較復雜的生豬音頻信號時,由于聲音本體因素以及環境影響比較大,這些端點檢測方法效果都不是很理想。
本研究擬采用改進經驗模態分解(Empirical mode decomposition,EMD)得到的Teager能量算子(Teager energy operator,TEO)特征參數和音頻信號倒譜特征參數相結合的端點檢測方法[13],對不同的生豬音頻信號進行端點檢測,以期能夠在不同信噪比(特別是低SNR)環境下,提高對生豬音頻信號端點檢測的準確率以及魯棒性。
為了消除因動物發聲本身以及采集環境、采集音頻信號設施等因素對音頻信號的影響,在本試驗之前需進行預加重、分幀和加窗操作,以便預處理獲得的聲音信號較為平穩、光滑,對后面的端點檢測較為有利[14]。
音頻信號s(n)的高頻端會衰減,相應高頻率的部分會很小,因此要加強高頻部分信號。本試驗采用數字濾波器對生豬音頻信號進行預加重:
b(n)=s(n)-as(n-1)
(1)
式中:b(n)為預加重后的音頻信號;a為預加重系數,這里設為0.937 5;s(n)為原信號。
生豬音頻信號在短時間內看作成相對穩態過程,這樣試驗準備工作可以把音頻信號分幀,再根據生豬音頻信號的基頻且保持1幀里面包含多個周期,對音頻信號進行分幀如下:
fn=(N-F)/I+1
(2)
式中:fn為幀數;N為信號長度;F為幀長;I為幀移。
由于分幀使得音頻信號首尾可能出現中斷現象,加窗就是對分幀后的片段進行變換,使中斷部分銜接起來,每1幀信號體現出周期性特征,生豬音頻信號經過有限長單位沖激響應(Finite impulse response,FIR)濾波器產生的輸出x(n)的卷積形式如下:

(3)
式中:b(n)為預加重后的信號;w(m)為1個單位沖擊響應。
加窗采用漢明窗,窗函數w(n)如下:
w(n)=

(4)
式中:L為窗長。
譜減法是利用音頻信號的短時平穩特點,使得噪聲的短時譜被帶噪的音頻信號短時譜去除,進而提取出干凈音頻的頻譜[15]。原理框圖見圖1。

圖1 譜減法原理框圖Fig.1 Block diagram of subtraction principle
生豬音頻信號的時間序列為x(n),對其分幀后的1幀信號做快速傅里葉變換(Fast fourier transform,FFT):

(5)
式中:Xi(k)為FFT變換的后頻域上的幅值;xi(m)為預處理后的第i幀信號;N1為幀長。

(6)
式中:Im(Xi(k))為Xi(k)的虛部除以i;Re(Xi(k))為Xi(k)的實部。
平均能量E(k)的計算公式為:
(7)
式中:I1為無話段時長;N2為I1所對應幀數。
利用預處理后獲得的每幀信號作為短時平穩性質狀態信號,且所取的噪聲信號是加性噪聲,滿足譜減法的要求,且音頻加強效果好,簡易操作。譜減法公式為:

(8)

采用EMD算法先將生豬音頻信號分解成多個單一的模態分量;然后利用TEO對有特殊含義的模態分量處理,獲得其能量譜,提取出生豬聲音的特征頻率參數;最后為獲取更高的、準確的端點值,引入短時倒譜距離方法,計算倒譜距離參數;采取兩級參數的端點檢測,能夠更加準確的完成對有效信號開始值和結尾值的辨識。
EMD分解是一種分析和處理連續的非線性、不平穩信號的方法,利用分解的方式,把原始信號分成1組基本模式分量(Intrinsic mode function,IMF)[16]。EMD分解原理具體步驟:

2)把m(t)從輸入信號去除,獲得首個IMF分量h1(t);
3)檢測h1(t)是不是符合IMF的前提,如不符合,把h1(t)作為輸入信號,重復1)、2)操作,直到h1(t)是1個IMF,記成c1(t)=h1(t);
5)r1(t)仍有原始數據的頻率信息,循環計算第1)~4)步,得到信號的x(t)的n個滿足IMF條件的分量如下:
(9)
式中:r1(t)~rn(t)為第1~n次剩余序列;c1(t)~cn(t)為第1~n的個IMF分量。
6)當最后得到的IMF分量cn(t)或剩余序列信號rn(t)是單調函數,或者序列信號的數值非常小時,完成重復操作。起始數據值隊列用IMF分量及1個均值表示為:
(10)

TEO是一種非線性映射,可以準確獲得信號瞬時功率,進行積分求其能量[17]。對于連續的時間信號ci(t),TEO定義為:
T[ci(t)]=[c′i(t)]2-ci(t)·c″i(t)
(11)
式中:T為Teager能量操作算子;c′i(t)為信號IMF分量的1階微分;c″i(t)為信號IMF分量的2階微分。
關于離散時域的TEO計算如下:
T[ci(m)]=[ci(m)]2-ci(m+1)ci(m-1)
m=1,2,…,N1
(12)
式中:ci(m)為信號時域列的IMF分量的第i幀音頻信號。

(13)

倒譜距離端點檢測具體步驟如下:
1)在真正的生豬音頻信號開始時,有1段背景噪音幀(取無音幀),取前面5幀倒譜系數計算的均值用來估計噪音頻譜值。
2)對每幀音頻信號的倒譜值和所取的噪音倒譜系數預估值進行求解,并求出兩者間的倒譜距離。
3)由2)計算的倒譜距離路徑,再求解噪音幀的倒譜距離閾值,最后用門限法進行端點檢測[18]。
本研究設計的改進EMD-TEO的倒譜距離端點檢測算法流程見圖2。具體實現步驟如下:

圖2 改進EMD-TEO的倒譜距離端點檢測算法流程Fig.2 Flow chart of cepstrum distance endpoint detection algorithm based on improved EMD-TEO
(14)
式中:i為幀數;j為EMD分解的階數;m為時域序數。
(15)
式中:Ti為信號的Teager能量;L1為分解后IMF所有階數。
4) 求出倒譜距離參數dcep并平滑處理,結合求得的每幀信號Ti,根據獲取的第一個參數dcep,提取相對較高的某個閾值(門限值)T2,或(也可以是第二個參數里面較高的參數閾值T4)作出首次判決,高于T2或T4,就能說明是生豬音頻信號有效段,
5)根據第一個參數dcep,選取1個較低的閾值T1,從步驟5)的交匯點向兩邊擴展查詢,找到參數dcep與閾值T1相交的2個點,就能初步說明是起始點。
6)根據第二個Ti參數,從1級說明的起始點開始兩端查詢,分別找到Ti參數和閾值T3相交的2個點,就能確定信號的起始值。
采用MATLAB進行預處理和3種端點檢測算法的仿真試驗。采集‘京徽蒙’豬場特定隔離、相對安靜環境下錄制的生豬音頻信號,采樣頻率設為44.1 kHz,音頻文件保存格式設為‘.wav’。選取的4段2.45 s的生豬叫聲,分別為成年母豬哼叫、發情、采食以及打呼嚕聲,分別在對比分析試驗中列出端點檢測準確率結果,并選取成年母豬哼叫作為展示。幀長設為25 ms,幀移設為10 ms,生豬音頻信號分別添加3種窗函數時域波形圖(圖3),發現矩形框信號旁瓣峰值較大,有所偏移,誤差較大,漢明窗和漢寧窗的時域波形圖基本一致,但漢明窗的主瓣更寬,平滑度更高,所以選用漢明窗。試驗中的高斯白噪聲來源于NoiseX92 噪聲庫,豬場的背景噪聲為人工錄音筆錄制。

圖3 生豬音頻信號分別添加3種窗函數的時域波形圖Fig.3 Time domain waveform of pig audio signal with three window functions
對生豬音頻信號添加10 dB高斯白噪聲的音頻信號進行EMD分解得到10個IMF分量(圖4),EMD分解的IMF1和IMF2分量有效信號大部分淹沒,無效信號有大量毛刺信號分布,可知含噪太高,因此舍棄,利用重構語音信號的方式達到去噪的目的,EMD分解的前2階IMF的噪聲有75%的分量,去掉前兩階相當于信號減噪,只是減弱了高頻分量,沒有降低有效聲音的分量。
分別對4組添加高斯白噪聲的生豬音頻信號進行EMD-TEO端點檢測試驗,噪聲信噪比大小依次為-5,0,5和10 dB。對添加-5和10 dB高斯白噪聲的2組生豬音頻信號進行EMD-TEO端點檢測結果見圖5。添加-5和10 dB高斯白噪聲的時域波形中,噪音信號均淹沒了大部分有用信號,但添加10 dB高斯白噪聲的毛刺信號較弱;對生豬音頻信號進行EMD重構很明顯消除了部分模糊信號和鋸齒信號,說明EMD分解有一定的效果。對添加-5和10 dB噪聲的生豬音頻信號利用EMD-TEO進行端點檢測,可以看到,添加-5 dB噪聲的生豬音頻信號有用信號段大部分能檢測出來,但仍有部分有效信號檢測不準確;而添加10 dB噪聲的生豬音頻信號在端點檢測時,檢測細節上更清晰,檢測準確度更高。

圖4 生豬音頻信號EMD分解的1~10階IMF分量Fig.4 1-10 order IMF component of EMD decomposition of pig audio signal
分別對4組添加高斯白噪聲的生豬音頻信號進行短時倒譜距離端點檢測試驗,噪聲信噪比大小依次為-5,0,5和10 dB。對添加-5和10 dB高斯白噪聲的2組生豬音頻信號進行短時倒譜距離端點檢測(圖6),添加-5和10 dB高斯白噪聲的時域波形中,添加10 dB高斯白噪聲的生豬音頻信號較添加-5 dB高斯白噪聲的生豬音頻信號的線條和鋸齒有區分性,但都覆蓋了很多有用信息;對添加不同噪聲的生豬音頻信號利用短時倒譜距離進行端點檢測,可以看到添加-5 dB噪聲的生豬音頻信號的首段有用信息漏檢,后3段有效信號檢測效果差,而添加10 dB噪聲的生豬音頻信號在端點檢測時,能重新檢測出首段有用信號,后3段的檢測細節較添加-5 dB噪聲的生豬音頻信號準確。
本試驗在EMD分解之前引入譜減法進行去噪,然后進行EMD重構再次變相去噪,達到一個信噪比較高的混雜生豬音頻信號,再進行TEO求得Teager能量參數,同時在譜減法去噪之后進行短時倒譜距離參數計算,將兩者參數結合進行雙參數門限檢測。向原生豬音頻信號添加噪聲大小依次為-5,0,5和10 dB的高斯白噪聲和豬場環境噪聲,對產生的8組生豬音頻信號進行改進EMD-TEO倒譜距離端點檢測試驗。其中添加-5和10 dB高斯白噪聲的音頻信號改進EMD-TEO端點檢測結果見圖7和圖8。在添加-5和10 dB高斯白噪聲的時域波形中,噪音信號可多可少的淹沒了大部分有用信號,但進行譜減法去噪后,有效信號基本能凸顯出來,只有略微的毛刺信號;對生豬音頻信號進行EMD重構,減弱了無聲段的毛刺信號了和鋸齒信號,說明譜減法和EMD分解已基本濾清雜音。對添加不同噪聲的生豬音頻信號利用改進EMD-TEO進行端點檢測,可以看到改進EMD-TEO對添加-5 dB噪聲的生豬音頻信號的有效信號段分段基本準確,但有個別無效信號錯檢成有效信號,而添加的10 dB噪聲生豬音頻信號在端點檢測時,對存在個別錯檢漏檢的片段,在檢測上更加精確。表1示出譜減法和EMD分解去噪對于低信噪比環境下生豬音頻信號去噪效果明顯。

圖5 EMD-TEO對添加-5和10 dB高斯白噪聲的生豬音頻信號的端點檢測Fig.5 EMD-TEO endpoint detection of pig audio signal with -5 and 10 dB white Gaussian noise

圖6 短時倒譜距離對添加-5和10 dB高斯白噪聲的生豬音頻信號的端點檢測Fig.6 Short time cepstrum distance endpoint detection of pig audio signal with -5 and 10 dB white Gaussian noise

圖7 改進EMD-TEO倒譜距離對添加-5 dB高斯白噪聲的生豬音頻信號的端點檢測Fig.7 Improved EMD-TEO cepstrum distance for endpoint detection of pig audio signal with -5 dB white Gaussian noise

圖8 改進EMD-TEO倒譜距離對添加10 dB高斯白噪聲的生豬音頻信號的端點檢測Fig.8 Improved EMD-TEO cepstrum distance for endpoint detection of pig audio signal with 10 dB white Gaussian noise

表1 譜減法和EMD分解依次對添加-5、0、5和10 dB高斯白噪聲的生豬音頻信號去噪結果Table 1 Spectral subtraction and EMD decomposition are used to denoise thepig audio signal with -5, 0, 5 and 10 dB white Gaussian noise in turn
為了更好地、更直觀地體現出本研究提出的改進EMD-TEO的倒譜距離端點檢測算法性能,利用3種端點檢測方法,在各種不同信噪比情況下,對端點檢測準確率進行比較。由于現在所做的端點檢測的方法,都沒有和實際語音的真實端點做嚴格的比較,為了知道較為真實端點,對獲取的純凈信號進行‘零交叉+能量’(因為能量和0的交叉值都為0,一旦大于某個很小的閾值就是信號有效段,進而確定端點)端點檢測(圖9),該方法僅對純凈信號適用,對復雜含噪信號效果不好,所以此方法只是用來檢測真實的純凈語音信號的總幀數以及生豬音頻信號的有效幀數,表2示出真實的生豬音頻信號有效段幀數。表3示出添加-5和10 dB高斯白噪聲的情況下,改進EMD-TEO的倒譜距離端點檢測的生豬哼叫信號的有效段幀數。可見,在添加-5 dB的高斯白噪聲環境下,1~2、3~5、7~11、13 ~19有效信號段有大部分誤檢,1、5~6、11~13段均有少數漏檢;在添加 10 dB 的高斯白噪聲環境下,1~2、6~7有效信號段有部分誤檢,1、4~5、7~10段均有極少數漏檢,但對比-5 dB噪聲環境下誤檢和漏檢要少很多,因此也能證明在信噪比高的情況下,端點檢測的準確率更高。

圖9 ‘零交叉+能量’端點檢測Fig.9 Endpoint detection of ‘zero cross energy’

表2 真實的生豬音頻信號有效段幀數Table 2 Real live pig audio signal validsegment frame count
端點檢測的誤差幀數即音頻信號錯認為噪音的幀數加上噪音信號錯認為有效信號的幀數之和,正確幀數計算如下:
正確幀數=(總幀數-誤差幀數)/總幀數
表4示出相對于EMD-TEO端點檢測算法以及短時倒譜距離端點檢測算法,本研究提出的改進EMD-TEO的倒譜距離端點檢測算法,在添加高斯白噪聲的信噪比為-5和0 dB時,端點檢測的準確率達到了84.725%和91.196%,遠高于其他2種檢測算法,在信噪比為5和10 dB時,雖然準確率接近,但改進EMD-TEO的倒譜距離端點檢測仍優于其他2種算法;當添加的是飼養場環境噪聲,且SNR為-5和0 dB時,端點檢測準確率為72.842%和 80.269%,雖然較高斯白噪聲的準確率低,但準確率遠高于前面2種算法。

表3 改進EMD-TEO的倒譜距離對添加-5和10 dB高斯白噪聲的生豬音頻信號端點檢測有效段幀數Table 3 Improved cepstrum distance of EMD-TEO to detect effective frame number ofpig audio signal with -5 and 10 dB white Gaussian noise
為了進一步說明本算法的適用性,利用改進EMD-TEO的倒譜距離端點檢測方法,針對聲音的不同種類在錄制的飼養場背景噪聲環境下進行端點檢測,得出分別添加-5、0、5和10 dB飼養場背景噪聲的不同生豬音頻信號的端點檢測準確率,雖然各類聲音的檢測準確率有差異,但仍能看出3種不同聲音在改進EMD-TEO的倒譜距離端點檢測算法下的檢測效果是相當好(表5)。

表4 3種端點檢測算法對添加-5、0、5和10 dB噪聲的生豬音頻信號端點檢測的準確率Table 4 Accuracy of three endpoint detection algorithms for pig audio signal with -5,0,5 and 10 dB noise %

表5 3種聲音在飼養場背景噪聲下的端點檢測結果Table 5 Endpoint detection results of three kinds ofsound in the background noise of feedlot
本研究針對生豬音頻信號,引入譜減法去噪,結合EMD-TEO和短時倒譜距離特征參數,提出了一種改進EMD-TEO的倒譜距離端點檢測算法,利用雙參數兩級雙門限判斷真實的端點檢測值。研究表明,該算法對于研究復雜情況下的生豬音頻信號端點檢測效果良好,且對不同類型、不同環境以及非平穩信號狀態下的聲音有著很強的端點檢測魯棒性,對于生豬音頻信號處理和識別具有較高的實用價值。