孫浩楠,仝志民,謝秋菊,李嘉熙
(黑龍江八一農(nóng)墾大學(xué)工程學(xué)院,黑龍江大慶,163000)
疾病檢測(cè)是生豬集約化養(yǎng)殖的主要問題之一。在密集的飼養(yǎng)條件下,患病豬的叫聲可能表明呼吸系統(tǒng)疾病[1]。為了最大限度地減少各種呼吸道疾病對(duì)集約化養(yǎng)豬產(chǎn)業(yè)造成的損害,可以通過對(duì)豬咳嗽聲音進(jìn)行監(jiān)測(cè),達(dá)到對(duì)豬早期呼吸道疾病預(yù)警的效果??人允菑V泛呼吸道疾病的初期癥狀之一,也是篩查和診斷的核心要素??人允怯蓺獾劳蝗慌懦龅目諝庖鸬模@種聲音具有特征性,可以將其與其他聲音表現(xiàn)區(qū)分開來[2]。
目前在集約化生豬產(chǎn)業(yè)中對(duì)呼吸道疾病的檢測(cè)方法一般使用人工檢測(cè),人工檢測(cè)的缺點(diǎn)是識(shí)別率低,成本過高。因此為了解決這些問題,研究豬咳嗽聲檢測(cè)系統(tǒng)具有重要意義。
國外在豬聲音識(shí)別研究方面開展的較早。Chung等[3]從預(yù)處理之后的豬聲音數(shù)據(jù)中提取梅爾頻率倒譜系數(shù)(MFCC),以支持向量機(jī)(SVM)和稀疏表示分類器(SRC)對(duì)豬聲音和呼吸道疾病進(jìn)行分類,通過試驗(yàn)數(shù)據(jù)表明,分類精度分別為91%和94%,這種方法可以準(zhǔn)確地檢測(cè)豬的呼吸道疾病。Mitchell等[4]經(jīng)研究發(fā)現(xiàn)健康豬和患有呼吸道疾病的豬咳嗽聲音的短時(shí)能量有明顯區(qū)別,健康豬咳嗽聲音持續(xù)時(shí)長(zhǎng)為0.21 s,而患有呼吸道疾病的豬咳嗽聲音持續(xù)時(shí)長(zhǎng)為0.3 s。Ferrari等[5]通過提取聲音的時(shí)域和頻域特征,對(duì)健康豬和患有呼吸道疾病豬的咳嗽聲音進(jìn)行識(shí)別和區(qū)分,設(shè)計(jì)在線咳嗽聲計(jì)數(shù)算法對(duì)呼吸道疾病進(jìn)行預(yù)警。Guarino等[6]設(shè)計(jì)一種基于動(dòng)態(tài)時(shí)間規(guī)整(DTW)的豬聲音識(shí)別與分析算法,咳嗽聲誤識(shí)別率和非咳嗽聲誤識(shí)別率都在15%以下,識(shí)別效果明顯。
國內(nèi)在聲音識(shí)別方面尚處于起步階段。黎煊等[7]將具有時(shí)域特征的短時(shí)能量和具有頻域特征的Mel倒譜系數(shù)(MFCC)的維數(shù)相結(jié)合,組合成具有新維度的豬聲音特征參數(shù),以新的特征參數(shù)構(gòu)建深度信念網(wǎng)絡(luò)(DBN)豬咳嗽聲識(shí)別模型,識(shí)別誤差為6.83%。徐亞妮等[8]用無線多媒體傳感器網(wǎng)絡(luò)采集豬聲音樣本,對(duì)采集到的樣本進(jìn)行去噪等預(yù)處理,通過5種豬聲音的功率譜密度曲線的波動(dòng)性不同提取聲音功率譜密度(power spectral density,PSD)特征,并以PSD的特征作為聚類中心,運(yùn)用改進(jìn)的模糊C均值聚類算法(fuzzy C-means,F(xiàn)CM)對(duì)豬咳嗽聲和豬非咳嗽聲進(jìn)行分析識(shí)別,識(shí)別率為84.1%。宣傳忠等[9]利用改進(jìn)的Mel倒譜系數(shù)(MFCC)和支持向量機(jī)(SVM)對(duì)母羊的咳嗽聲、打架聲、饑餓聲、撕咬聲和尋伴聲進(jìn)行識(shí)別和分析。識(shí)別率分別為85.0%、86.7%、85.0%、81.7%和83.0%。董紅松等[10]提出用隱馬爾可夫模型對(duì)豬咳嗽聲進(jìn)行識(shí)別,識(shí)別率為80%。綜上所述,國內(nèi)外在豬聲音識(shí)別研究方面存在去噪效果不明顯、識(shí)別率低、識(shí)別模型復(fù)雜等問題。
針對(duì)上述問題,在現(xiàn)有咳嗽聲音識(shí)別算法的基礎(chǔ)之上,本文對(duì)豬的咳嗽聲識(shí)別算法做了進(jìn)一步的研究,其中包括用麥克風(fēng)陣列對(duì)聲音的獲取,F(xiàn)IR濾波器對(duì)采集的5種聲音(咳嗽聲、尖叫聲、咆哮聲、哼哼聲、打呼嚕聲)進(jìn)行去噪,用窗函數(shù)法對(duì)聲音數(shù)據(jù)進(jìn)行端點(diǎn)檢測(cè),以梅爾頻率倒譜系數(shù)為特征參數(shù),利用單隱層BP神經(jīng)網(wǎng)絡(luò)對(duì)其進(jìn)行識(shí)別,為長(zhǎng)白豬在集約化養(yǎng)殖過程中豬咳嗽聲的識(shí)別提供全新的思路。
本研究的試驗(yàn)地點(diǎn)在黑龍江省哈爾濱市亞布力豬場(chǎng),試驗(yàn)對(duì)象為10頭75 kg左右的長(zhǎng)白豬。豬聲音數(shù)據(jù)采集時(shí)間為2020年11月。試驗(yàn)豬飼養(yǎng)于2.1 m×3.2 m的豬舍內(nèi),舍內(nèi)有溫度、濕度調(diào)節(jié)器、食槽等。試驗(yàn)期間,豬舍內(nèi)的溫度一直保持在23 ℃ 左右。自然光照時(shí)間從早晨7點(diǎn)至下午16點(diǎn)。
豬聲音采集設(shè)備為樹莓派3B與7寸HDMIips觸摸屏搭建Linux系統(tǒng)微型計(jì)算機(jī),連接四麥克風(fēng)陣列進(jìn)行采樣,該設(shè)備具有空間選擇性、不需要移動(dòng)就可以改變接收方向拾取多路信號(hào)、拾音范圍大等優(yōu)點(diǎn),如圖1所示。采樣頻率為48 kHz,采樣精度為16位,可不間斷錄音24 h。
圖1 豬聲音數(shù)據(jù)采集設(shè)備
試驗(yàn)設(shè)備采集的豬聲音在豬場(chǎng)飼養(yǎng)員的指導(dǎo)下進(jìn)行人工分類標(biāo)記,選取豬咳嗽聲、豬打呼嚕聲、豬尖叫聲、豬咆哮聲、豬哼哼聲作為聲音樣本數(shù)據(jù)。得到1 200 個(gè)有效豬聲音樣本,其中包括豬的咳嗽聲樣本為412個(gè),豬的打呼嚕聲樣本為165個(gè),豬的尖叫聲樣本為243個(gè),豬的咆哮聲樣本為208個(gè),豬的哼哼聲樣本為172個(gè),保存為wav格式。
在豬舍環(huán)境下采集到的聲音數(shù)據(jù)不僅有我們所需要的樣本,還包含了環(huán)境噪聲和無效聲音。因此,在提取豬聲音主要特征之前需進(jìn)行去噪和端點(diǎn)檢測(cè)。
1.3.1 去噪處理
由于豬舍環(huán)境中使用通風(fēng)、調(diào)溫調(diào)濕等設(shè)備,以及金屬互相碰撞聲等,會(huì)使采集到的聲音信號(hào)中含有噪音,因此要消除噪聲信號(hào)對(duì)樣本特征參數(shù)提取的影響。試驗(yàn)用窗函數(shù)法設(shè)計(jì)了FIR低通濾波器實(shí)現(xiàn)濾波的目的。
本試驗(yàn)選用漢寧窗(升余弦窗),其計(jì)算公式如式(1)所示。
(1)
式中:w(n)——漢寧窗;
n——濾波器階數(shù);
N——窗函數(shù)長(zhǎng)度。
得到聲音信號(hào)的時(shí)域波形后,最常用的步驟是快速傅里葉變換,以獲得聲音信號(hào)的頻譜特征[11]。
設(shè)計(jì)FIR低通濾波器,并給定其性能指標(biāo),對(duì)豬聲音信號(hào)進(jìn)行去噪處理,得到去噪后波形圖,并與原始波形圖對(duì)比,分析去噪情況。其計(jì)算公式如式(2)所示。
(2)
式中:x(n)——輸入;
h(k)——FIR低通濾波器濾波系數(shù);
y(n)——濾波處理后的信號(hào);
C——FIR低通濾波器的抽頭數(shù);
C-1——FIR低通濾波器的階數(shù)。
圖2為基于FIR低通濾波器處理豬聲音樣本前后對(duì)比圖,通過濾波前后的波形比較,豬聲音樣本的去噪效果明顯,波形幾乎沒有失真。
(a) 咳嗽聲原始波形圖
1.3.2 端點(diǎn)檢測(cè)
人工切割的聲音數(shù)據(jù)無法準(zhǔn)確地找出聲音的起始和聲音的終止,端點(diǎn)檢測(cè)的目的就是去除靜音的部分,最后得到有效的聲音內(nèi)容。
本文采用短時(shí)能量和短時(shí)平均過零率的雙閾值算法進(jìn)行語音端點(diǎn)檢測(cè),這種算法可以準(zhǔn)確地確定聲音樣本中有效信號(hào)的起始和結(jié)束的位置,將有效的聲音信號(hào)從環(huán)境噪聲中分離出來,加快預(yù)處理時(shí)間,提高效率[12]。豬聲音端點(diǎn)檢測(cè)如圖3所示。經(jīng)過分幀處理得到第a幀的聲音信號(hào)設(shè)為Ya(m),其短時(shí)能量計(jì)算如式(3)所示。
(a) 豬咳嗽聲端點(diǎn)檢測(cè)圖
(3)
式中:E——短時(shí)能量;
A——窗長(zhǎng);
v——分幀后的總幀數(shù)。
經(jīng)過分幀處理得到第a幀聲音信號(hào)Ya(m)的短時(shí)平均過零率(一幀信號(hào)的波形通過水平軸的次數(shù)),其計(jì)算如式(4)所示。
(4)
式中:Z——短時(shí)平均過零率;
經(jīng)過預(yù)處理之后得到了理想狀態(tài)的豬聲音數(shù)據(jù),為了將聲音信號(hào)轉(zhuǎn)換為計(jì)算機(jī)能夠有效處理的語音特征向量,對(duì)聲音數(shù)據(jù)進(jìn)行特征參數(shù)的提取。梅爾頻率倒譜系數(shù)(Mel Frequency Cepstral Coefficients,MFCC)是聲音識(shí)別中最廣泛的頻域特征參數(shù)之一。
Mel倒譜系數(shù)的分析是以人類聽覺為基礎(chǔ),并根據(jù)人類聽覺試驗(yàn)的結(jié)果來分析聲音的頻譜特性[13-14]。Mel倒譜系數(shù)具有計(jì)算簡(jiǎn)單、識(shí)別性能好、抗噪能力強(qiáng)等優(yōu)點(diǎn)[15]。MFCC提取流程如圖4所示。
圖4 MFCC特征提取流程
1) 分幀加窗。聲音信號(hào)是一種瞬態(tài)、非周期、離散性大的信號(hào),它由諧波成分和瞬態(tài)分量成分組成,但短時(shí)間內(nèi)可以看做是穩(wěn)定的、連續(xù)的信號(hào),聲音分析的基礎(chǔ)就是短時(shí)分析[16]。因此可以把聲音信號(hào)分割為以幀為單位的短段信號(hào),每一短段為一幀(一幀為1/12 s),要把完整的聲音信號(hào)進(jìn)行多段分幀操作。
(5)
式中:B——窗長(zhǎng)。
一般信號(hào)幀為20~40 ms,這里取25 ms。以豬咳嗽聲為例:豬咳嗽聲頻率在4 000~8 000 Hz之間,這就要求信號(hào)幀的長(zhǎng)度為0.025×8 000=200個(gè)采樣點(diǎn)。幀移=10 ms(共計(jì)80個(gè)從采樣點(diǎn))。
2) 快速傅里葉變換。將具有時(shí)域特性的聲音信號(hào)轉(zhuǎn)化為頻域特性,觀察能量分布。采用D點(diǎn)快速傅里葉變換得到每幀的頻譜,D=512。其計(jì)算如式(6)所示。
(6)
3) 計(jì)算梅爾濾波器能量。通過快速傅里葉變換得到了聲音信號(hào)每一幀的頻譜能量Yi(p),經(jīng)濾波器組的計(jì)算求出Mel濾波器的能量,本文選擇三角濾波器組,其計(jì)算如式(7)所示。
(7)
式中:Hm(p)——Mel頻率濾波器組;
N——快速傅里葉變換的點(diǎn)數(shù);
Si(m)——第i幀聲音信號(hào)第p條譜線經(jīng)過第m個(gè)梅爾濾波器后的能量。
4) 計(jì)算每個(gè)濾波器組輸出的對(duì)數(shù)能量。在離散余弦變換之前需要計(jì)算和分析每個(gè)三角濾波器組輸出的對(duì)數(shù)能量H(m),其計(jì)算如式(8)所示。
(8)
式中:M——三角濾波器個(gè)數(shù)。
5) 離散余弦變換。將上述的濾波器組輸出對(duì)數(shù)能量帶入離散余弦變換C(n),求出L階的梅爾頻率倒譜系數(shù)參數(shù),這里濾波器個(gè)數(shù)Q取最大值24,L=12。其計(jì)算如式(9)所示。
n=1,2,…,L
(9)
最終梅爾頻率倒譜系數(shù)的維度為12維,特征圖如圖5所示。
圖5 豬咳嗽聲MFCC特征圖
BP神經(jīng)網(wǎng)絡(luò)的原理是利用反向傳播算法(信息向前傳遞,誤差反向傳遞)來不斷調(diào)整整個(gè)網(wǎng)絡(luò)的權(quán)值和閾值,以減小誤差的平方和,使輸出值和期望輸出值接近[18]。BP神經(jīng)網(wǎng)絡(luò)模型包括3個(gè)部分:輸入層、隱含層和輸出層。圖6為單隱層BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。
圖6 單隱層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
BP神經(jīng)網(wǎng)絡(luò)建立時(shí)隱含層數(shù)的選取對(duì)豬咳嗽聲識(shí)別率有著重要的影響。隱含層數(shù)目的選取目前沒有穩(wěn)定的方案。如果隱含層數(shù)過多,就會(huì)增加訓(xùn)練的時(shí)間,模型復(fù)雜化,效率降低。如果隱含層數(shù)過少又無法反映復(fù)雜的映射關(guān)系。為了解決上述問題,本文采用單隱層BP神經(jīng)網(wǎng)絡(luò),同時(shí)增加隱含層節(jié)點(diǎn)數(shù)的方法。
把維梅爾頻率倒譜系數(shù)作為輸入,輸入層節(jié)點(diǎn)選擇梅爾頻率倒譜系數(shù)的維數(shù)設(shè)為12,隱層節(jié)點(diǎn)數(shù)設(shè)為10,輸出為聲音標(biāo)簽,輸出層節(jié)點(diǎn)設(shè)為1。本文在Windows 10系統(tǒng)下,利用MATLAB軟件建立了12-10-1三層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如圖7所示。
圖7 BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
在對(duì)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前,為了加快BP神經(jīng)網(wǎng)絡(luò)的快速收斂,防止奇異樣本(與有效輸入樣本相比較,相差特別大或者相差特別小的樣本向量)影響試驗(yàn)結(jié)果,需對(duì)豬聲音數(shù)據(jù)進(jìn)行歸一化處理,將表達(dá)式之間進(jìn)行轉(zhuǎn)換,把有量綱表達(dá)式全部轉(zhuǎn)換為無量綱表達(dá)式[19]。本文采用max-min歸一化方法。其計(jì)算如式(10)所示。
(10)
式中:Xj——?dú)w一化之后的輸入數(shù)據(jù);
Xmax——?dú)w一化之前輸入數(shù)據(jù)的最大值;
Xmin——?dú)w一化之前輸入數(shù)據(jù)的最小值。
通過激活函數(shù)的比較,本文選擇sigmoid為激活函數(shù),初始權(quán)值賦值是隨機(jī)的,每次聲音數(shù)據(jù)訓(xùn)練的結(jié)果不同,所以設(shè)置最大訓(xùn)練次數(shù)為1 000次。其計(jì)算如式(11)所示。
(11)
設(shè)X1,X2,…,Xj為神經(jīng)元的輸入,W1,W2,…,Wj為連接權(quán)值,Wj調(diào)節(jié)各個(gè)輸入量的占重比。神經(jīng)元的凈輸入由線性加權(quán)求和,計(jì)算如式(12)所示。
(12)
把神經(jīng)元的凈輸入和閾值相比較,再通過sigmoid激活函數(shù)處理就能得到神經(jīng)元的輸出。其計(jì)算如式(13)所示。
yj=f(Netin-θj)
(13)
式中:θj——神經(jīng)元的閾值。
設(shè)第一個(gè)輸入值為θ,權(quán)值為-1,簡(jiǎn)化上述公式如式(14)所示。
yj=f(Netin)
(14)
式中:f——sigmoid激活函數(shù)。
Netin中w0=0,X0=θj。
預(yù)測(cè)結(jié)果的誤差本文用最小二乘法表示,其計(jì)算如式(15)所示。
(15)
式中:l——輸出神經(jīng)元閾值。
在試驗(yàn)中建立的BP神經(jīng)網(wǎng)絡(luò)有d個(gè)輸入神經(jīng)元,q個(gè)隱含神經(jīng)元,l個(gè)輸出神經(jīng)元,因此有q個(gè)隱含神經(jīng)元閾值,l個(gè)輸出神經(jīng)元閾值。所以要使預(yù)測(cè)結(jié)果的誤差縮小,需要調(diào)整(d+l+1)q+l各參數(shù)的值,一步步縮小Ek。
迭代結(jié)束后完成對(duì)BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,然后對(duì)豬聲音樣本中測(cè)試集進(jìn)行識(shí)別。
本文采用兩個(gè)指標(biāo)對(duì)試驗(yàn)結(jié)果進(jìn)行分析:豬咳嗽聲音識(shí)別率(識(shí)別出的豬咳嗽聲音樣本占測(cè)試集中豬咳嗽聲音樣本總數(shù)的百分比)、豬非咳嗽聲識(shí)別率(識(shí)別出的豬非咳嗽聲音樣本占測(cè)試集中豬非咳嗽聲樣本總數(shù)的百分比)。本文采用五折交叉驗(yàn)證(5-fold cross-validation)的方法來測(cè)試識(shí)別的準(zhǔn)確性,步驟如下:(1)將豬聲音數(shù)據(jù)集平均分為5組;(2)選取1組作為測(cè)試集,另外4組作為訓(xùn)練集;(3)重復(fù)步驟(2)5次,每一次選取的訓(xùn)練集不同,結(jié)果如表1所示。
表1 五折交叉驗(yàn)證結(jié)果
通過五折交叉驗(yàn)證結(jié)果可知,5組豬咳嗽聲音識(shí)別率和豬非咳嗽聲音識(shí)別率平均值分別為85.33%和86.24%,均在85%以上,說明本文采用BP神經(jīng)網(wǎng)絡(luò)模型來識(shí)別豬咳嗽聲是有效的。表1中第2組數(shù)據(jù)豬咳嗽聲音識(shí)別率為88.52%,豬非咳嗽聲音識(shí)別率為87.11%,為效果最佳試驗(yàn)組。
1) 以樹莓派連接四麥克風(fēng)陣列作為豬聲音采集設(shè)備,滿足連續(xù)采樣的功能和精度,能快速、穩(wěn)定的獲取所需要的豬聲音樣本。
2) 提出基于BP神經(jīng)網(wǎng)絡(luò)模型來識(shí)別豬咳嗽聲的方法,采用FIR濾波器對(duì)豬聲音樣本進(jìn)行去噪,通過快速傅里葉變換等處理提取Mel倒譜系數(shù),把Mel倒譜系數(shù)進(jìn)行歸一化處理,進(jìn)行BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。通過5-fold cross-validation的驗(yàn)證方法驗(yàn)證結(jié)果,得到五組豬咳嗽聲音識(shí)別率和豬非咳嗽聲音識(shí)別率,平均識(shí)別率在85%以上。
3) 本文以長(zhǎng)白豬為試驗(yàn)對(duì)象,種類單一,同時(shí)采樣環(huán)境較好,對(duì)于其他種類的豬聲音識(shí)別效果有待驗(yàn)證,這也是后期豬聲音識(shí)別算法的研究方向。
中國農(nóng)機(jī)化學(xué)報(bào)2022年2期