王基豪,周曉彥,李大鵬,韓智超,王麗麗
(南京信息工程大學電子與信息工程學院,江蘇南京 210044)
鳥類作為生態系統中的重要組成部分,分布廣泛且對環境變化敏感,多數學者將鳥類作為監測環境變化的指示物種[1-2],因此對鳥類物種的監測、識別及分類具有重要意義。目前識別鳥類物種的主要方式有兩種,分別是對鳥類物種外形特征的識別以及對鳥鳴聲的識別,在實際監測中,由于鳥類形態監測存在成本高、范圍限制大、效率低等問題[3],使得鳥鳴聲監測成為當前的主流監測方向。隨著信號處理和聲音識別技術的逐漸成熟,1996年Anderson等[4]利用模板匹配的方法首次實現了對靛藍彩鹀和斑胸草雀兩種鳥鳴聲的識別。之后國內外學者圍繞基于鳥鳴聲的鳥類識別問題,通過手工提取特征、機器學習等方法展開了大量的研究,但對識別效果的提升一直比較有限。
隨著深度學習的發展,國內外部分研究表明深度神經網絡如卷積神經網絡(Convolutional Neural Network, CNN)[5]、卷積循環神經網絡(Convolutional Recurrent Neural Network, CRNN)[6]、長短期記憶網絡(Long Short-Term Memory, LSTM)[7]等在鳥聲識別中能提取更有價值、更豐富的特征信息。邱志斌等[8]將梅爾語譜圖輸入到24層的自搭建CNN模型中,利用微調網絡參數在包含40類鳥鳴聲的數據集中能達到96.1%的識別準確率。Takahashi等[9]在原有VGGNet卷積神經網絡的基礎上進行改進用于鳥聲識別,結合數據增強算法解決了過擬合問題,對Freesound數據庫中的鳥類進行識別實驗,識別準確率較改進前提高了16個百分點。Adavanne等[10]在卷積神經網絡和循環神經網絡(Recurrent Neural Network, RNN)的基礎上提出了卷積循環神經網絡,該方法提取了主頻和對數梅爾頻帶能量聲學特征,在三個獨立數據集上測試獲得了95.5%的識別準確率。馮郁茜[11]提出了雙模態特征融合鳥類物種識別方法,通過卷積神經網絡與長短時記憶網絡的級聯結構,融合鳥聲的時頻域特征,完成對鳥聲識別算法的優化,在6種鳥類識別中獲得了93.9%的平均識別準確率。但文獻[8-10]只使用了單一特征,并且對于某些關聯性不強的數據不能獲取更為全面的特征,存在一定的局限性。
本文重點關注鳥鳴聲信號特征的多樣性,通過短時傅里葉變換(Short Time Fourier Transform,STFT)獲取包含時頻域特征信息的鳥聲語譜圖,以及通過對原始音頻信號計算得到梅爾頻率倒譜系數(Mel Frequency Cepstrum Coefficient, MFCC)靜態分量、MFCC一階差分和二階差分組成的混合特征向量。本文受文獻[11]啟發,提取了不同鳥聲音頻特征后利用雙通道網絡級聯特征,其中一條通道利用卷積神經網絡具有的平移不變性,對三維語譜圖局部特征信息進行提取交互,得到局部細粒度頻譜特征,同時另外一條通道利用Transformer網絡結構的多頭注意力機制,完成對MFCC混合特征向量的提取,得到兼顧上下文的全局序列特征,最后將兩條通道的特征融合到一起,增加每一個特征的信息量以提高鳥聲識別的準確率。
本文提出的鳥聲識別算法網絡整體由兩個分支組成,兩個分支為并行關系,各自同時進行計算處理。上部分支首先對輸入的原始音頻信號進行預加重、分幀加窗等預處理操作后得到STFT三維語譜圖;然后輸入到卷積神經網絡(CNN)中提取局部頻域特征;最后通過線性層得到大小為Ncls×C1的二維矩陣特征集,其中Ncls為識別鳥類物種數目,C1為上部分支輸出特征向量維度大小。下部分支首先對輸入的原始音頻信號進行預加重、分幀加窗等預處理操作后計算得到MFCC以及對應的一階差分、二階差分特征,將其拼接得到F×C2維的梅爾特征集,隨后對特征集嵌入位置編碼,以時序排列的方式輸入Transformer編碼器網絡中,通過多頭注意力(Multi-Head Attention, MHA)模塊并行處理多組特征向量,得到兼顧上下文的全局序列特征,再通過多層感知機(Multi-Layer Perceptron, MLP)完成對輸出結果的優化,最后通過線性層得到Ncls×C2維的二維特征集矩陣,其中F為梅爾特征向量維度大小,C2為下部分支輸出特征向量維度大小,在這里表現為原始音頻信號的輸入幀數。將兩條分支的特征集進行拼接融合得到更豐富的特征信息后,通過Softmax函數得到最終的預測結果。鳥聲識別整體網絡結構圖如圖1所示。

圖1 鳥聲識別整體網絡結構示意圖Fig.1 Schematic diagram of the general network structure of bird sound recognition
1.1.1 STFT語譜圖
對于獲取的原始鳥聲音頻信號來說,每一幀內的鳥聲頻譜可以看作是不變的,但是這種看作不變的短時頻譜只能用于反映鳥聲鳴叫時的靜態特性。為了能反映出鳥聲信號的動態頻率特性,實現對非平穩時變信號的分析,采用短時傅里葉變換生成STFT語譜圖[12]。對于一個連續時間信號x(t),其連續時間內的STFT表達式為
式中:S(ω,τ)是關于ω和τ的二維函數,w(t-τ)是時移長度為τ的窗函數。從本質上來看,STFT是對傅里葉變換(Fourier Transorm, FT)進行加窗操作,對每一次窗函數中的信號分幀進行單獨處理。但實際中由于計算機只能處理離散信號,所以還需要對連續時間信號的STFT中每一幀信號的傅里葉變換用離散傅里葉變換(Discrete Fourier Transorm, DFT)代替。對于輸入的離散信號x(n),其對應的離散STFT表達式為
式中:X(l,k)是一個關于l和k的二維函數,l表示幀平移量,k表示當前譜線數,N和n分別表示總采樣點數以及當前第n幀。利用幅度變化關于時間與頻率的關系以及能量大小關于時間與頻率的關系,還可以推導出:
式中:S(l,k)為功率譜,是能量關于時間與頻率的二維函數,根據式(3)中關于X(l,k)的二維函數關系,可以繪制對應的STFT語譜圖,利用圖像來獲取所需的三維信息,橫軸為時間,縱軸為頻率,顏色的深淺表示能量的大小。STFT語譜圖可以清楚了解到鳥聲音頻隨時間變化所能展現的頻率以及能量的變化。
通過上述操作對原始鳥聲音頻信號進行處理獲取STFT語譜圖,窗函數采用漢寧窗,其中幀移為l=11 ms,總采樣點數為N=44 100。考慮到不同種類鳥聲的能量差異較大會導致生成語譜圖顏色差異影響后續網絡訓練,為此挑選出能量最大的鳥聲語譜圖作為上限基準點,對所有語譜圖按照式(4)標準化縮放:
為節省存儲空間,將縮放后生成的語譜圖壓縮為256×256×3的三通道RGB圖像,并以jpg格式存儲。灰雁鳥聲信號生成的STFT語譜圖如圖2所示。
1.1.2 MFCC混合特征向量
MFCC特征參數是一種在語音識別中廣泛應用的特征,其更接近人耳聽覺機制,可以降低原始鳥聲音頻中環境噪聲的干擾[13]。為了獲取MFCC靜態特征、一階差分和二階差分特征組成的混合特征向量,對原始音頻信號進行如下操作:
(1) 通過一階高通濾波器進行預加重,濾波器計算公式為
其中:α取值區間為(0.9, 1),本文取0.935。
(2) 對信號進行分幀加窗操作,窗函數選擇為漢明窗,幀長為23 ms,幀移為11 ms。
(3) 對每一幀預處理后的信號進行快速傅里葉變換(Fast Fourier Transform, FFT)獲取對應的頻譜,再通過式(3)獲得功率譜。
(4) 將功率譜輸入到梅爾濾波器組中計算獲得梅爾能量,其中梅爾濾波器組選用一組非均勻等高三角帶通濾波器對頻譜進行平滑處理,消除諧波帶來的干擾[14]。設劃分的三角帶通濾波器為Hm(k),則對于每一幀音頻信號均存在一個對數梅爾能量函數Emel(m),將功率譜與梅爾濾波器組計算得到的對數梅爾能量表達式為
式中:M為每組濾波器個數,本文M=40。
(5) 對經過梅爾濾波后的對數梅爾能量進行離散余弦變換(Discrete Cosine Transform, DCT),具體求解表達式為
式中:Emfcc(n)函數中n表示當前第n幀,m取值滿足式(6)中每組濾波器個數限制。創建好對應的數組標簽后,可以得到MFCC靜態特征。這里考慮到第0維為表征平均值,沒有參考價值,且大部分能量集中在低頻區,所以最后選擇第1~13維共12組數據[15]。
(6) 最后為了更好體現提取鳥鳴聲時域特征的上下文連續性,增加提取特征的豐富度,對MFCC靜態特征計算一階差分zid和二階差分[16]:
式中:v=2,對獲得的一階差分和二階差分同樣取第1~13維,拼接得到二維的MFCC混合特征向量X∈RN×F,這里N表示總幀數,F=36表示提取的特征個數。
對于從原始鳥聲信號中生成的STFT語譜圖來說,CNN直接采用原始圖像作為輸入,可以從大量圖像數據中學習得到有效特征,再通過對圖像的局部像素點進行感知之后在高層對信息進行共享合并,從而使網絡的每一層通過共享參數來獲得圖像的表征信息,在加強了對語譜圖局部特征提取能力的同時,又能保證網絡結構本身的高度不變性。一般的CNN由輸入層、卷積層、池化層、全連接層和輸出層組成,本文使用ResNet50作為網絡主干,考慮到輸出參數量較少的同時加入了殘差模塊,減少了網絡深度加深之后梯度消失問題的影響[17]。網絡設置的輸入尺寸大小為256×256,和上文中提取的語譜圖大小一致;第一層卷積層之后輸出大小為128×128;然后通過四組殘差模塊,最后通過全連接層得到大小為Ncls×2 048的二維數組,Ncls為設定的鳥聲識別種類;卷積核大小設定均為3×3,池化層大小設定均為2×2×2。
在鳥聲識別中,不僅需要對每幀音頻信號進行關注提取,還需要考慮每一幀信號在對應位置的重要程度。為此對于上文中通過梅爾對數轉換提取獲得的MFCC混合特征向量,本文加入了Transformer網絡模型[18],通過該模型所帶有的多頭注意力(MHA)機制,尋找定位顯著性的鳥聲音頻表征特征。之前很多時間序列處理任務中都有加入注意力機制[19],但卻只能在每一步中只關注一個區域的特征信息,而Transformer網絡模型通過多個注意力模塊并行處理特征參數,既能利用注意力機制提取信息,還能加快網絡的訓練速度,得到兼顧上下文的全局序列特征。
Transformer網絡主要由編碼器和解碼器兩部分組成。本文主要利用Transformer網絡中的的編碼器部分完成對MFCC混合特征向量的提取。Transformer網絡編碼器部分結構如圖3所示,主要由MHA和多層感知機(MLP)組成,中間加入了殘差連接、層標準化(Layer Norm, LN)和Dropout層。

圖3 Transformer編碼器網絡結構Fig.3 The structure of Transformer encoder network
對于輸入的MFCC混合特征向量X∈RN×F,首先需要進行位置編碼來保證音頻幀按照時序順序正常輸入。本文采用正余弦位置編碼,計算公式為
式中:p表示每一幀在整段信號中的絕對位置,q表示維度,d表示可輸入特征向量的最大維數,目的是保證位置向量長度和輸入特征向量大小一致,這里d=512,2q和2q+1用于表示位置奇偶性,對生成的位置編碼與原二維特征向量進行相加操作得到新的輸入向量X'∈RN×()F+1。將加入位置標記的特征向量導入到后續的MHA模塊中,本文的MHA使用了注意力機制:
其中:Att(Q,K,V)函數可以看作將一個查詢(query)和一系列鍵值(keys-values)對映射為一個輸出的過程:X'×(WQ,WK,WV)→(Q,K,V),將新的輸入向量X'與權重矩陣WQ,WK,WV進行乘積映射為一個query向量和一組keys-values向量。通過計算query向量和所有keys向量的點乘,之后將結果除以則是對每個輸入的音頻之間相關性得分進行歸一化處理,使訓練時梯度保持穩定,其中dk為keys向量的維度。最后通過softmax函數將權重得分轉化為0到1之間的概率分布矩陣,乘上values向量后得到最終的輸出矩陣。
但是單一的注意力機制只是局限于自身內部的特征聯系,交互能力有限。而對于MHA來說,通過將上述的一組權重矩陣,擴充為并行輸入使用多組權重,這樣可以使得模型在不同的時頻位置獲取信息,并通過上下文信息的交互獲取更豐富的音頻特征,進一步增強了注意力機制中對突出部分特征信息的利用。這里的處理公式為
其中:對于hi=Att(QWiQ,KWiK,VWiV),映射的權重矩陣WiQ∈Rd×dk,WiK∈Rd×dk,WiV∈Rd×dv。本文中設定注意力頭個數i=8,每個注意力頭滿足dv=di=64;通過WO作為拼接后的參數矩陣保證最后拼接得到的輸出矩陣與單一注意力機制計算得到的大小基本一致。
通過MHA得到的輸出矩陣后續送入前饋網絡(Feed Forward Network, FFN),這里采用MLP模型作為前饋網絡的主干為,表達式為
其中:W1、W2為權重矩陣,b1、b2為偏置向量,MLP模型整體由兩個線性層和一個ReLU激活函數嵌套組成,輸出與前置LN層通過殘差連接輸入到最后一個全連接層,最終得到處理后大小為Ncls×C2的二維數組,其中Ncls為設定的鳥聲識別種類,C2為總幀數,本文中C2=173。
為了驗證所提出模型的有效性,本文選用Birdsdata[20]鳥鳴聲數據集和xeno-canto[21]鳥鳴聲數據集進行實驗。Birdsdata是2020年由北京百鳥數據科技公司最新發布的手工標注自然聲音標準數據集,在國外期刊文獻中已被用于鳥聲的識別檢測。該數據集公開收集了共20類國內常見的鳥類鳴叫聲,共計14 311份wav音頻文件,且所提供的音頻數據均已經過2 s標準化分割以及降噪處理。xenocanto鳥聲數據集作為BirdCLEF鳥聲識別競賽的官方數據集,其數據來源于全球性野外鳥聲數據庫網站,具有一定的權威性。該數據集包含了44種歐亞地區且均為自然環境下錄制的常見鳥類音頻,時長在30 s~5 min不等且自帶有環境噪聲。本文需要將音頻文件手動分割為2 s,并對原音頻中的空白部分進行刪減,最后得到共計34 703份處理好的音頻文件。以上數據集采樣率均為44.1 kHz,各數據集包含的鳥鳴聲種類和數量如表1和2所示。

表1 Birdsdata數據集信息Table 1 The information of Birdsdata dataset

表2 xeno-canto數據集部分信息Table 2 The partial information of xeno-canto dataset
本文中實驗部分硬件操作系統為Ubuntu 20.04,GPU型號為GTX 2080Ti,CUDA版本為10.1,網絡模型的搭建全部采用Pytorch 1.8.0深度學習框架。在整體訓練過程中,迭代次數(epoch)設置為100,對輸入數據的單次訓練步長(batch_size)設置為32,優化器采用Adam算法更新權重參數,學習率(learning_rate)采用階梯衰減方式,初始學習率設置為10-4,之后經過總迭代數的56%和78%時,均衰減為前一級學習率的0.1倍,Dropout層設置為0.2。
本文將準確率(Accuracy)和F1-score作為評估自身模型性能和對比其他模型的評價指標。F1-score得分由精確率(Precision)和召回率(Recall)兩項指標加權得到,評估公式為
其中:NTP表示正樣本中分類正確樣本數,NFP和NFN分別表示正、負樣本中分類錯誤樣本數。具體實驗中將整體數據集按照8∶2的比例劃分為訓練集和測試集,然后采用五折交叉驗證的方式分別進行五次實驗,并記錄每一次訓練完后的測試結果以及最后的平均結果。
首先對本文所提方法進行實驗,將數據集分為A、B、C、D、E五等份,采用五折交叉驗證的方式取其中四份作為訓練集,一份作為測試集(例如將A、B、C、D作為訓練集,E作為測試集,以此類推),共五組實驗。在Birdsdata數據上的識別準確率評估結果如表3中所示。同時為避免實驗結果存在偶然性,每組實驗均在打亂訓練集內部順序的條件下重復五次,求出每組實驗識別準確率的均值及標準差。

表3 在Birdsdata數據集上識別準確率評估結果Table 3 The evaluation results of recognition accuracy on Birdsdata dataset
對于Birdsdata數據集來說,當鳥聲數據量較夸大、種類不是很復雜的情況下,各組樣本的五次實驗準確率波動不大。本文所提出的網絡最高準確率為99.1%,但是在以A,B,C,E作為訓練集,D作為測試集訓練時整體準確率只有95.5%,說明本文考慮的對每組實驗樣本經過五次實驗求均值和標準差之后再求整體均值的方法是有效的,能在一定程度上減小偶然對識別結果性的影響,在最后得到的識別結果中Birdsdata數據集平均準確率可以達到97.81%。
表4為在xeno-canto數據集中識別準確率的評估結果。對于xeno-canto數據集,由于鳥聲數據量分布較為不均勻且種類繁多,并且音頻數據中帶有噪聲干擾,所以本文所提出的網絡整體準確率比Birdsdata數據集有所下降,且各組樣本準確率波動相比于表3中結果也較為明顯,例如其中最高準確率為93.25%,最低準確率為83.18%,但最后得到的識別結果中xeno-canto數據集的平均準確率也能達到89.47%。

表4 在xeno-canto數據集中識別準確率評估結果Table 4 The evaluation results of recognition accuracy on xeno-canto dataset
為了體現本文所提出網絡的整體收斂效果以及損失優化情況,從Birdsdata和xeno-canto兩個數據集評估結果各隨機抽取的一組實驗過程中100次迭代后準確率以及損失函數變化的曲線圖,如圖4所示。由圖4可以看出當學習率為10-4時,網絡在大約40次迭代后就可以初步收斂;在通過階梯學習率第一次衰減收縮之后(約55次迭代),網絡本身的識別準確率還能有約5個百分點的提升;而在學習率第二次衰減收縮之后(約80次迭代),網絡的準確率沒有明顯提升,也就說明網絡整體已經達到全局收斂。

圖4 兩個鳥聲數據集上訓練過程中識別準確率和損失函數變化曲線Fig.4 Variation curves of the recognition accuracy and loss function in training process on the two bird sound datasets
此外,為了驗證本文所提方法的有效性,將本文方法與其他方法進行了對比實驗。
(1) VGGNet方法[9]:提取鳥聲信號并通過STFT轉化為語譜圖,利用數據增強得到擴充后的數據集,輸入到改進后的VGGNet中進行訓練,最后通過全連接層得到鳥聲分類的結果。
(2) CRNN方法[10]:對音頻提取一維靜態對數梅爾(log-mel)頻譜值,升維處理后通過由CNN和GRU[22]組成的融合網絡得到鳥聲識別結果。
(3) CNN-LSTM方法[11]:通過音頻得到log-Mel頻譜值轉化為MFCC靜態分量和Mel語譜圖,對MFCC靜態分量進行升維操作后與語譜圖數組拼接輸入到CNN和LSTM級聯的網絡,自適應完成鳥聲識別。
(4) BiLSTM-DenseNet方法[20]:將音頻中提取的對數梅爾(log-Mel)頻譜值轉換為梅爾語譜圖,輸入到由雙向LSTM和DesenNet并行拼接組成的神經網絡中完成鳥聲識別。
本文方法與上述方法進行對比,在兩個數據集中不同方法下的鳥聲識別準確率和F1-score得分如表5所示。

表5 在鳥聲數據集上不同方法的鳥聲識別結果Table 5 Bird sound recognition results of different methods on two bird sound datasets
由表5可知,本文提出的CNN+Transformer網絡與上述方法相比,在兩個鳥聲數據集中識別準確率均有了相應的提升。在Birdsdata數據集上,CNN+Transformer網絡的識別準確率可達到97.81%,F1-score得分能達到97.69%,與VGGNet、CRNN、CNN-LSTM、BiLSTM-DenseNet等方法相比準確率分別提升了4.57、3.05、2.23、5.61個百分點。在xeno-canto數據集上CNN+Transformer網絡的準確率可達89.47%,F1-score得分可達到87.32%,與VGGNet、CRNN、CNN-LSTM、BiLSTM-DenseNet等方法相比準確率分別提升了12.16、3.52、1.28、10.25個百分點。
此外,為了證明本文中上下兩條分支各自對特征利用的有效性,實驗中對CNN(ResNet50)以STFT語譜圖作為輸入、對Transformer網絡以MFCC混合特征向量作為輸入分別進行實驗。由實驗結果可知,CNN(ResNet50)在Birdsdata和xenocanto數據集上的準確率分別為95.57%和83.01%,而Transformer網絡在兩個數據集上的準確率分別為95.91%和88.45%,均能達到和文獻[11]中方法接近或更優的識別效果,可見CNN利用對局部特征的抓取能力以及Transformer網絡中所用到的多頭注意力機制,通過加強對重要位置的關注能在一定程度上提高識別的準確率。因此,將兩種網絡結構進行并聯得到的CNN+Transformer網絡最終能得到判別能力更強的融合特征,使得最終通過softmax分類器得到的識別效果更好。此外,可以看到在兩個風格不同的數據集上,本文所提出的方法均取得了較好的識別效果,說明了CNN+Transformer網絡具有較強的魯棒性。
表6為各文獻方法和本文方法的參數量對比,以及在Birdsdata數據集上訓練時間(每一個epoch)的比較。

表6 不同方法網絡參數量以及在Birdsdata數據集上訓練時間對比Table 6 Comparison of the network parameters and training times of different methods on Birdsdata dataset
由表6可知,本文所提方法網絡參數量略大于文獻[10-11]的網絡,但是準確率相比之下提高了2~3個百分點。此外,本文網絡的訓練速度僅略微小于文獻[20]的方法,準確率卻遠高于該方法。綜合兩者來看,本文所提方法能基本做到在不增加較大計算量的基礎上,高效利用所提取的鳥聲特征,從而顯著提高網絡的識別準確率。
目前對于基于深度學習的鳥聲識別研究來說,如何有效利用從音頻信號中提取的各種時頻域特征信息是一個值得深入研究的問題。本文提出的CNN+Transformer網絡,通過對STFT語譜圖以及MFCC混合特征向量的提取,利用語譜圖包含的局部特征信息以及MFCC特征所具有的時頻域相關信息,結合網絡中CNN對局部細粒度頻譜特征的關注以及Transformer解碼器中多頭注意力機制對全局上下文時域信息的加權計算,最后篩選出具有較強判別性的鳥聲輸出特征。在Birdsdata數據集和xeno-canto數據集上進行了對比實驗,平均識別準確率均高于已有方法的平均識別準確率,證明了本文所提出網絡模型的有效性。