張留軍, 王 玫,2, 羅麗燕
(1.桂林電子科技大學 認知無線電與信息處理教育部重點實驗室,廣西 桂林 541004;2.桂林理工大學 信息科學與工程學院,廣西 桂林 541006)
隨著城市的發(fā)展,城市中機動車的保有量日益增加,由此引起的城市交通堵塞和汽車鳴笛聲污染等問題給人們的工作和生活造成了極大困擾。目前,我國已初步建成以視頻處理為主要技術手段的交通監(jiān)控系統(tǒng),可為交通狀況預警和車輛調度提供有力支持,但無法對車輛鳴笛等聲污染進行有效監(jiān)控。因此,街道環(huán)境聲事件檢測作為聲污染監(jiān)控的重要組成部分,對城市噪聲污染的管控具有極其重要的現(xiàn)實意義。
環(huán)境聲事件識別是指對采集的環(huán)境聲數(shù)據(jù)進行分析進而識別出所包含的聲學事件,目前常采用機器學習方法解決環(huán)境聲事件識別問題。在該領域中,數(shù)據(jù)、特征和分類算法決定了機器學習的性能,因此,這三部分也是影響環(huán)境聲事件識別性能的關鍵因素。在早期的環(huán)境聲事件識別的研究中,由于識別任務較為簡單,加之計算機算力的不足,常采用傳統(tǒng)的機器學習算法作為分類器,例如K近鄰(K-nearest neighbor,簡稱KNN)算法[1]、支持向量機(support vector machines,簡稱SVMs)[2-3]和隨機森林(random forest,簡稱RF)算法[4]等,但近年來隨著環(huán)境聲事件識別投入實際場景應用的需求增加,環(huán)境聲事件識別所面臨的背景噪聲更加復雜多變,上述分類器由于對復雜信號的建模能力有限,因而無法滿足環(huán)境聲事件識別的要求。為解決這些問題,基于深度學習的環(huán)境聲事件識別方法受到廣泛關注,例如目前主流的環(huán)境聲事件識別方法常使用卷積神經網(wǎng)絡(convolutional neural networks,簡稱CNN)作為分類器,對數(shù)梅爾譜(log-Mel spectrogram,簡稱log-Mel)作為聲學特征[5-8],但僅通過不同的卷積策略和不同的激活函數(shù)提升了分類算法的性能,并未解決對數(shù)梅爾譜抗噪性能差的問題,不適用于實際場景應用。其次,目前針對街道環(huán)境聲事件識別研究的數(shù)據(jù)集較為稀缺,只有3個常用的公開環(huán)境聲數(shù)據(jù)集:MIVIA[9]、Urbansound8K[10]和Google Audioset[11]。MIVIA數(shù)據(jù)集包含槍聲、玻璃破碎聲和尖叫聲3種聲音類型,主要用來研究異常聲事件的識別;Urbansound8K數(shù)據(jù)集主要包含城鎮(zhèn)環(huán)境聲,共8 000余條聲音樣本包含10種聲音類別,但是該數(shù)據(jù)集中有關街道環(huán)境聲的數(shù)據(jù)量較少;Google Audioset數(shù)據(jù)集是谷歌開放的大規(guī)模數(shù)據(jù)集,其中632個聲音類別均來源于Youtube視頻,但是存在聲音來源不確定和弱標簽數(shù)據(jù)的問題,并不適合于街道環(huán)境聲的研究。因而,建立一套真實的街道環(huán)境聲數(shù)據(jù)集十分必要。針對上述問題,提出了一種改進的對數(shù)梅爾譜特征結合卷積神經網(wǎng)絡的環(huán)境聲事件識別方法,提高了環(huán)境聲事件識別方法的抗噪性能。
系統(tǒng)旨在通過識別滑動檢測窗口中的聲音事件,從而達到檢測整個聲音片段所包含的聲學事件的目的。街道環(huán)境聲事件檢測系統(tǒng)如圖1所示。系統(tǒng)包括4個部分:滑動檢測窗口切分,聲學特征提取,分類算法識別,檢測結果輸出。根據(jù)聲音片段的時長,該系統(tǒng)不僅可用于不同時長聲音片段的環(huán)境聲事件檢索,還可用于實時的環(huán)境聲事件檢測。
圖1 街道環(huán)境聲事件檢測系統(tǒng)
由于街道環(huán)境聲的復雜和多變性,導致常規(guī)的端點檢測技術效果極差。系統(tǒng)直接將聲音片段切分為一系列重疊的滑動檢測窗口?;瑒哟翱跈z測方法不僅可檢測不同時間點發(fā)生的聲音事件,而且避免了端點檢測失效造成的聲學事件漏檢問題。圖1中,最上面深灰色長條表示一段聲音片段,聲音片段下面的一系列的短條表示有重疊的檢測窗口,設置檢測窗口的長度為0.67 s,滑動步長為0.25 s。
聲學特征提取是聲學事件檢測中至關重要的步驟,提取有辨識度和抗噪聲性能強的聲學特征,可極大提高聲學事件檢測的性能。為了分析街道環(huán)境聲信號的特性,選擇更有辨識度的聲學特征。選擇的4種典型的街道環(huán)境聲信號的時頻譜圖如圖2所示。圖2(a)為街道背景噪聲的時頻譜圖,街道背景噪聲包括行人行走的聲音、車輛過往的聲音以及其他背景噪聲。從圖2(a)可看出,該類聲音類似于白噪聲,能量均勻分布于低頻部分。圖2(b)為汽車鳴笛聲的時頻譜,這種聲音的能量分布以一定頻率間隔出現(xiàn),在時頻譜圖上表現(xiàn)為一系列直條紋,該類聲音的頻譜特點明顯、辨識度較高。圖2(c)為尖銳的汽車剎車聲的時頻譜,尖銳的剎車聲使得一些頻率的能量較高,在時頻譜圖中成條紋狀。圖2(d)為講話聲的時頻譜,頻譜分布于8 kHz之下的低頻部分,諧波信息較為豐富。通過分析4種典型的街道環(huán)境聲時頻譜圖可以發(fā)現(xiàn),這4種環(huán)境聲信號在時頻譜圖上具有明顯的區(qū)別,其中汽車鳴笛聲的頻譜圖具有較高的辨識度。因此,采用時頻域特征-對數(shù)梅爾譜作為聲學特征,對數(shù)梅爾譜特征是線性時頻譜經過梅爾濾波器過濾后得到的特征,符合人耳的聽覺特性,被廣泛用于聲學事件識別方法[9,12-13]。但該特征對噪聲的魯棒性差,通過對該特征從時間維度提取一階差分系數(shù)和二階差分系數(shù)作為動態(tài)補充特征,并與原特征組成類似圖像的三維特征,這為該特征增加了2種動態(tài)維度的信息,大大提高了該特征的抗噪性能。log-Mel特征圖提取流程如圖3所示。
圖2 4種街道環(huán)境聲信號的時頻譜圖
圖3 log-Mel特征圖提取流程
改進的對數(shù)梅爾譜特征提取流程如下:
1)分幀加窗。對聲音片段分幀,幀長為1 024個采樣點,幀移為512個采樣點,并對每幀聲音信號加漢明窗,以防止頻譜泄漏和邊界信息丟失。窗函數(shù)為
(1)
2)快速傅里葉變換。對每幀聲音信號進行快速傅里葉變換(fast Fourier transform,簡稱FFT),并對復數(shù)譜取模后平方求得功率譜。離散傅里葉變換(discrete Fourier transform,簡稱DFT)的計算式為
(2)
3)梅爾濾波器。使用與人耳聽覺特性相適應的梅爾濾波器對求得的功率譜進行濾波,得到梅爾頻譜。設置梅爾濾波器數(shù)量為40,梅爾濾波器組為
H(k)=
(3)
(4)
功率譜經過梅爾濾波器變換為
(5)
4)取對數(shù)。每幀的梅爾頻譜取對數(shù)得到對數(shù)梅爾譜,計算式為
Xlog-Mel=lns(m), 0≤m≤M。
(6)
5)提取一階差分和二階差分。對數(shù)梅爾譜提取一階差分系數(shù)和二階差分系數(shù),提取的一階差分系數(shù)和二階差分系數(shù)與原特征組成三維特征。差分系數(shù)計算式為
(7)
卷積神經網(wǎng)絡具有強大的學習表征能力,能夠從輸入數(shù)據(jù)中提取更高階特征,而且其局部連接和權值共享特性,使得該網(wǎng)絡適合處理圖像等高維數(shù)據(jù),因此,該網(wǎng)絡廣泛應用于圖像識別、語音識別和環(huán)境聲事件識別等相關領域。針對實際街道環(huán)境中噪聲復雜多變的問題,采用添加正則化和批標準化等提升模型泛化能力的技術,設計了抗噪性能好的卷積神經網(wǎng)絡。
1.3.1 卷積神經網(wǎng)絡結構特點
借鑒經典的卷積神經網(wǎng)絡結構[14-15],設計了如圖4所示的卷積神經網(wǎng)絡結構。該網(wǎng)絡將改進log-Mel特征作為輸入,即Xlog-Mel∈R40×80×3,2個卷積層和2個最大池化層用于深層特征提取,全連接層用于深層特征整合和函數(shù)建模,輸出層得到分類結果。
圖4 卷積神經網(wǎng)絡結構圖
給定一組輸入Xlog-Mel,卷積神經網(wǎng)絡訓練得到一組參數(shù)θ,并得到一組輸出,
Z=F(Xlog-Mel|θ)=fL(…f2(f1(X|θ1)|θ2)|θL),
(8)
其中fL(·|θL),1≤L≤6為每層網(wǎng)絡的輸出映射,設計的卷積神經網(wǎng)絡共6層,即L=6,其中卷積層的操作為
Zl=fl(Xl|θl)=h(W*Xl+b),
θl=[W,b],
(9)
其中:Xl為輸入的三維張量;W為三維卷積核;h(·)為激活函數(shù);b為偏置矢量。在每層卷積層后接一個最大池化層,以減小特征映射維度,提高特征魯棒性和提升訓練速度;隨后一層為全連接層,這層網(wǎng)絡不做卷積,而進行矩陣相乘;最后將該層輸出,以全連接的方式連接到輸出層得到分類結果。
1.3.2 模型參數(shù)設置
設計的卷積神經網(wǎng)絡的參數(shù)設置如下:
1)卷積層1和卷積層2。2層卷積層均使用40個3×3的卷積核,卷積核的滑動步長為2,用于提取log-Mel特征圖的局部深層特征。2層卷積層的輸出數(shù)據(jù)分別為(20,40,120)和(5,10,4 800),激活函數(shù)采用修正線性單元(rectified linear unit,簡稱ReLU)[16],其函數(shù)表達式為
f(x)=max(0,x)。
(10)
此外,為了提高卷積神經網(wǎng)絡訓練的速度和穩(wěn)定性,在每個卷積核和激活函數(shù)之間引入批標準化技術[17],進而提高了網(wǎng)絡的泛化能力。
2)池化層1和池化層2。2層池化層均采用2×2的最大池化濾波器下采樣上層輸出,滑動步長為2,以達到減小特征映射維度、提高特征魯棒性和提升訓練速度的目的。2層池化層輸出數(shù)據(jù)分別為(10,20,120)和(3,5,4 800)。
3)全連接層。全連接層包含256個神經元,激活函數(shù)同樣使用ReLU。
為了減小模型過擬合程度和提高模型的泛化能力,對卷積層和全連接層的參數(shù)使用L2范數(shù)懲罰[18],即通過向目標函數(shù)添加一個正則項,
(11)
其中:w為所有范數(shù)懲罰影響的權重;θ為所有參數(shù)(包括W和無需正則化的參數(shù))。在訓練過程中使用Adam[19]進行反向傳播,Adam是一種學習率自適應的優(yōu)化算法,它采用偏置修正,修正原點初始化的一階矩(動量項)和二階矩(非中心)的估計,使得其對超參數(shù)的選擇更魯棒[20]。
實驗由2個部分組成。1)使用公開和自建的環(huán)境聲數(shù)據(jù)集評估本方法,并與常規(guī)方法進行對比;2)基于不同識別方法的環(huán)境聲事件檢測系統(tǒng)在實際場景下對汽車鳴笛聲的檢測實驗。實驗均在Windows平臺下完成,硬件設備使用酷睿I7 6800 K處理器,GTX1080TI顯卡,特征提取、分類算法的建模借助Python語言的librosa、sklearn和TensorFlow等模塊完成。
2.1.1 環(huán)境聲數(shù)據(jù)集
本實驗使用2個環(huán)境聲數(shù)據(jù)集。數(shù)據(jù)集1為公開的環(huán)境聲數(shù)據(jù)集Google AudioSet[3],從中選取槍聲、尖叫聲和汽車鳴笛聲3種聲學事件,每種類別的樣本數(shù)量為900余條,按7∶3劃分為訓練集和測試集,均采用44.1 kHz采樣頻率和16 bit的PCM編碼格式。數(shù)據(jù)集2為自行采集的街道環(huán)境聲數(shù)據(jù)集,同樣按7∶3將其劃分為訓練集和測試集。
2.1.2 評價指標
采用如下評估指標[20]來評估分類算法的性能:
查全率
(12)
查準率
(13)
置信度
(14)
其中:nTP為樣本正確判斷為正類(少數(shù)類)的樣本數(shù);nTN為樣本正確判斷為負類(多數(shù)類)的樣本數(shù);nFP為樣本錯誤判斷為負類的實際正類樣本數(shù);nFN樣本錯誤判斷為正類的實際負類樣本數(shù)。
2.1.3 實驗結果與分析
使用Google AudioSet數(shù)據(jù)集和自建的街道環(huán)境聲數(shù)據(jù)集,不同分類算法的評估結果如表1、2所示。從表1、2可看出:使用相同的聲學特征log-Mel,本方法相比KNN、SVMs、RF和文獻[13]的CNN方法在查全率、查準率和置信度3個指標上均有不同程度的提升,驗證了本方法設計的卷積神經網(wǎng)絡具有更優(yōu)的分類性能。
表1 Google Audioset數(shù)據(jù)集不同算法的評估結果 %
表2 街道環(huán)境聲數(shù)據(jù)集不同算法的評估結果 %
使用自建的街道環(huán)境聲數(shù)據(jù)集,并利用本檢測系統(tǒng)對一段未訓練的時長為10 min的街道環(huán)境聲數(shù)據(jù)進行汽車鳴笛聲檢測。
2.2.1 街道環(huán)境聲數(shù)據(jù)采集
在桂林電子科技大學金雞嶺校區(qū)正門前放置環(huán)境聲采集設備,采集真實的街道環(huán)境聲數(shù)據(jù),環(huán)境聲采集設備及采集場景如圖5所示。該環(huán)境聲采集設備由安卓開發(fā)板、拾音器和防水盒3個部分組成。安卓開發(fā)板采用全志A33處理器,1 GiB運行內存;拾音器為無源拾音器,其拾音的頻率為20~20 kHz;防水盒為普通網(wǎng)絡設備防水盒。使用上述設備產生44.1 kHz、16 bit的PCM信號來記錄街道環(huán)境聲數(shù)據(jù),然后人工標注并剪輯音頻中的汽車鳴笛聲。共采集了3 114條汽車鳴笛聲樣本,每條汽車鳴笛聲樣本時長為0.5~1.5 s。
2.2.2 實驗結果與分析
本實驗使用街道環(huán)境聲數(shù)據(jù)集來訓練所設計的卷積神經網(wǎng)絡。圖6為卷積神經網(wǎng)絡在訓練過程中損失值和分類準確率的變化曲線。從圖7可看出,隨著訓練批次的增加,訓練集和測試集的損失值不斷下降,測試集和訓練集的準確率曲線都在上升且二者非常接近,說明本方法泛化能力較好,準確率達到了97%以上。因此,卷積神經網(wǎng)絡在訓練過程中得到很好的收斂,且不會產生過擬合。
圖5 聲音采集設備及采集場景
本方法測試卷積神經網(wǎng)絡得到ROC(receiver oprating characteristic)曲線如圖7所示。從7圖可看出,本方法的AUC(area under curve)面積接近1,因此,本方法的分類性能優(yōu)異。
使用不同的識別方法的環(huán)境聲事件檢測系統(tǒng)對一段時長為10 min的街道環(huán)境聲數(shù)據(jù)檢測結果如表3所示。從表3可看出,本方法的檢測性能優(yōu)于其他方法,具有較強的抗噪能力。綜上實驗結果,本方法在訓練數(shù)據(jù)集有限的情況下仍具有較好的檢測表現(xiàn)(查全率為94%,查準率為87%,置信度為90.5%)。
圖6 損失值和準確率變化曲線
圖7 本方法汽車鳴笛聲識別的ROC曲線
表3 汽車鳴笛聲檢測結果
針對現(xiàn)有的環(huán)境聲事件識別方法噪聲魯棒性差及街道環(huán)境聲數(shù)據(jù)少的問題,提出一種基于改進的對數(shù)梅爾譜特征的環(huán)境聲事件識別方法,并使用自主設計的環(huán)境聲采集設備收集了大量的街道環(huán)境聲數(shù)據(jù)用于對街道環(huán)境聲的檢測。街道環(huán)境聲事件識別系統(tǒng)在實際場景中取得了良好的檢測性能,從而驗證了該系統(tǒng)在實際場景下應用的可行性。