歐 昀, 周曉彥, 李大鵬
(南京信息工程大學(xué)電子與信息工程學(xué)院,南京 210044)
在深度學(xué)習(xí)領(lǐng)域,利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)對(duì)圖像進(jìn)行智能識(shí)別分類技術(shù)已經(jīng)愈發(fā)成熟,教學(xué)案例多為圖像相關(guān),鮮有聲音識(shí)別的案例。鳥聲識(shí)別研究有助于鳥類監(jiān)測(cè),有利于生態(tài)環(huán)境監(jiān)測(cè),受到越來(lái)越多人的關(guān)注[1]。在深度學(xué)習(xí)課程中加入鳥聲識(shí)別實(shí)驗(yàn),可幫助學(xué)生更好地理解語(yǔ)音信號(hào)處理和圖像信號(hào)處理的相關(guān)概念,從實(shí)踐中理解深度學(xué)習(xí)智能識(shí)別的具體應(yīng)用和實(shí)現(xiàn)過(guò)程。在教育部所提出的新工科背景下,高校教學(xué)計(jì)劃中都十分重視對(duì)學(xué)生實(shí)踐能力和創(chuàng)新能力的培養(yǎng),只有在教學(xué)過(guò)程中引入相對(duì)應(yīng)的實(shí)驗(yàn)實(shí)踐課程,才能夠培養(yǎng)學(xué)生多學(xué)科交叉學(xué)習(xí)的能力和創(chuàng)新實(shí)踐能力[2-3]。
本實(shí)驗(yàn)設(shè)計(jì)采用了CNN 對(duì)鳥聲進(jìn)行識(shí)別分類。CNN是一種包含卷積運(yùn)算的深度前饋神經(jīng)網(wǎng)絡(luò),整個(gè)網(wǎng)絡(luò)核心是通過(guò)卷積層和池化層進(jìn)行特征提取和全連接層進(jìn)行識(shí)別分類,在訓(xùn)練過(guò)程中利用梯度下降法更新訓(xùn)練參數(shù),在各個(gè)領(lǐng)域均有廣泛的應(yīng)用[4-7]。實(shí)驗(yàn)將原始鳥聲分為訓(xùn)練鳥聲和測(cè)試?guó)B聲,對(duì)原始鳥聲信號(hào)進(jìn)行預(yù)處理,并利用短時(shí)傅里葉變換(Short-Time Fourier transform,STFT)的結(jié)果繪制STFT 語(yǔ)譜圖,同時(shí)提取梅爾倒譜系數(shù)(Mel-Frequency Cepstral Coefficient,MFCC)特征參數(shù),將MFCC特征和STFT語(yǔ)譜圖特征放入CNN 進(jìn)行訓(xùn)練,獲取最優(yōu)的訓(xùn)練參數(shù),利用訓(xùn)練好的CNN完成對(duì)鳥聲的識(shí)別分類,整個(gè)實(shí)驗(yàn)過(guò)程如圖1 所示。
圖1 鳥聲識(shí)別實(shí)驗(yàn)流程圖
實(shí)驗(yàn)時(shí)既可使用已訓(xùn)練好的CNN 對(duì)MFCC 特征和STFT語(yǔ)譜圖特征進(jìn)行鳥聲識(shí)別實(shí)驗(yàn),分析比較兩者的結(jié)果,也可由學(xué)生自行編程設(shè)計(jì)CNN模型進(jìn)行鳥聲識(shí)別實(shí)驗(yàn),通過(guò)識(shí)別結(jié)果驗(yàn)證模型的優(yōu)劣。
常見的鳥聲數(shù)據(jù)庫(kù)均為在自然環(huán)境下采集的鳥聲信號(hào),環(huán)境噪聲復(fù)雜多變,鳥聲音頻多樣,在分析處理前需先進(jìn)行預(yù)加重、分幀加窗等處理,通過(guò)短時(shí)分析技術(shù)繪制STFT語(yǔ)譜圖和提取MFCC系數(shù)特征。
(1)切割讀取。為使鳥聲數(shù)據(jù)規(guī)格統(tǒng)一,將原始鳥聲信號(hào)切割為2 s整音頻信號(hào),并以22.05 kHz進(jìn)行讀取。
(2)預(yù)加重。為彌補(bǔ)傳輸過(guò)程中鳥聲高頻部分的損耗,需對(duì)鳥聲數(shù)據(jù)進(jìn)行預(yù)加重處理[8]。
(3)分幀加窗。任意一個(gè)音頻信號(hào)從整體來(lái)看都是一個(gè)非平穩(wěn)的時(shí)變信號(hào),其頻域特性和表征信號(hào)的各時(shí)頻域特征參數(shù)均是動(dòng)態(tài)的,無(wú)法直接進(jìn)行分析,而在一個(gè)短時(shí)范圍10 ~30 ms內(nèi)音頻信號(hào)的各特征參數(shù)變化較小,可以將其作為穩(wěn)態(tài)來(lái)處理[9]。因此需對(duì)鳥聲數(shù)據(jù)進(jìn)行分幀加窗處理,本實(shí)驗(yàn)中選用漢明窗[10]。
(1)STFT語(yǔ)譜圖繪制。STFT是與快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)密切相關(guān)的一種變換,用于對(duì)非平穩(wěn)的時(shí)變信號(hào)進(jìn)行分析。本質(zhì)上STFT 就是加窗的FFT,通過(guò)窗函數(shù)在時(shí)間軸上移動(dòng)來(lái)對(duì)信號(hào)進(jìn)行分幀加窗,對(duì)各幀信號(hào)進(jìn)行FFT[11],則有
式中:x(k)為輸入信號(hào);w(k-l)為移動(dòng)了l的窗函數(shù);X(l,ω )為時(shí)移l和頻率ω的二維函數(shù),對(duì)其取絕對(duì)值可得到幅度,通過(guò)幅可以繪制出STFT 語(yǔ)譜圖。語(yǔ)譜圖表征了幅值關(guān)于時(shí)間和頻率的變化,繪制時(shí)以頻率為Y軸,時(shí)間為X軸,在X與Y組成的二維平面中,一個(gè)點(diǎn)(x,)y的幅值大小用色系深淺來(lái)表示,如圖2 所示。
圖2 STFT語(yǔ)譜圖
(2)MFCC特征提取。MFCC 特征是一種在語(yǔ)音識(shí)別中應(yīng)用較為廣泛的特征,其基礎(chǔ)是基于人聽覺(jué)特性所提出的梅爾變換,通過(guò)梅爾變換模擬出非線性的人耳對(duì)聲音的感知能力[12]。MFCC 提取原理如圖3所示,其核心是對(duì)梅爾變換后的頻譜進(jìn)行倒譜分析,將頻譜的包絡(luò)和細(xì)節(jié)分開[13-14]。
圖3 MFCC特征提取原理框圖
其提取步驟如下:
步驟1以22.05 kHz讀取鳥聲數(shù)據(jù);
步驟2對(duì)鳥聲數(shù)據(jù)進(jìn)行預(yù)處理,包括采用一階FIR高通數(shù)字濾波器進(jìn)行預(yù)加重,采用漢明窗進(jìn)行分幀加窗;
步驟3對(duì)每一幀進(jìn)行傅里葉變換求頻譜;
步驟4用頻譜求能量并通過(guò)梅爾濾波器組過(guò)濾;
步驟5對(duì)濾波器組輸出做對(duì)數(shù)離散余弦變換得到MFCC特征系數(shù)。
CNN通常是由卷積層、池化層和全連接層交叉組合而成的深度前饋神經(jīng)網(wǎng)絡(luò),利用卷積層提取特征,池化層降低特征數(shù)量,利用全連接層完成識(shí)別分類[15]。為便于計(jì)算機(jī)運(yùn)行,本實(shí)驗(yàn)以VGG(Visual Geometry Group)網(wǎng)絡(luò)為原型,減少了層數(shù)和卷積核數(shù)量,所搭建CNN模型如圖4 所示。
圖4 實(shí)驗(yàn)CNN網(wǎng)絡(luò)模型圖
卷積可看作一種提取圖像特征的方法[16]。當(dāng)給定圖像X∈RM×N、卷積核W∈Rm×n時(shí),圖像卷積即二維卷積的定義式為式中:通常情況下m<<M,n<<N;M×N是輸入圖像的尺寸;m×n是卷積核尺寸。與卷積類似的還有互相關(guān),互相關(guān)和卷積的不同在于卷積核不進(jìn)行翻轉(zhuǎn)的操作,卷積神經(jīng)網(wǎng)絡(luò)中卷積核的參數(shù)是待訓(xùn)練參數(shù),是否翻轉(zhuǎn)不影響提取特征的能力,實(shí)際操作時(shí)常直接使用互相關(guān)操作,簡(jiǎn)化運(yùn)算量。
通常情況下卷積層中的卷積運(yùn)算也指互相關(guān),即不進(jìn)行核翻轉(zhuǎn)的運(yùn)算,卷積層中一個(gè)二維卷積的運(yùn)算過(guò)程如圖5 所示。
圖5 卷積過(guò)程示意圖
池化層一般分為2 種,最大池化可提取圖片紋理,均值池化可保留背景特征,池化的目的是降維,通過(guò)特征選擇減少特征的數(shù)量。最大池化的過(guò)程如圖6所示。
圖6 最大池化示意圖
全連接層可將相鄰兩層之間的神經(jīng)元全部相連,即先將卷積池化所提取的特征拉直作為全連接層的輸入,與全連接層所有神經(jīng)元相連,最后一層全連接層選擇softmax作為激活函數(shù)進(jìn)行概率輸出[17]。softmax函數(shù)定義如下
式中:n為該層共有n個(gè)神經(jīng)元;ak為第k個(gè)輸入信號(hào);yk為第k個(gè)神經(jīng)元的輸出。
步驟1將鳥聲數(shù)據(jù)集進(jìn)行2 s整的切割讀取,并按7∶3分為訓(xùn)練集和測(cè)試集。
步驟2對(duì)原始數(shù)據(jù)進(jìn)行預(yù)加重和分幀加窗,預(yù)加重系數(shù)選為0.966 5,幀長(zhǎng)為23 μs,幀移為幀長(zhǎng)的一半,共可分為173 幀,窗函數(shù)選為漢明窗。
步驟3利用Python中l(wèi)ibrosa庫(kù)中函數(shù)對(duì)所有鳥聲數(shù)據(jù)提取MFCC 系數(shù)特征,梅爾濾波器數(shù)量選為128,得到的結(jié)果取前40 個(gè)數(shù)據(jù)值,為使網(wǎng)絡(luò)收斂更快,對(duì)數(shù)據(jù)進(jìn)行歸一化處理,使其分布在[-1,1]之間。每個(gè)鳥聲數(shù)據(jù)得到[40,173]的MFCC特征系數(shù)。
步驟4利用Python中l(wèi)ibrosa庫(kù)中函數(shù)對(duì)鳥聲數(shù)據(jù)進(jìn)行STFT,將結(jié)果取絕對(duì)值得到幅度,將幅度單位轉(zhuǎn)為dB,繪制語(yǔ)譜圖,保存為[256,256,3]的數(shù)據(jù)并進(jìn)行歸一化處理,使數(shù)據(jù)分布在[0,1]之間。
步驟5將2 種特征的訓(xùn)練集分別放入2 個(gè)CNN模型中進(jìn)行訓(xùn)練,保存各自的最優(yōu)訓(xùn)練參數(shù)。
步驟6利用PyQt5 庫(kù)編寫GUI 界面,分別加載CNN模型和各自保存的最優(yōu)訓(xùn)練參數(shù),通過(guò)2 個(gè)不同特征所得的模型對(duì)測(cè)試集中任一鳥聲進(jìn)行識(shí)別分類,對(duì)比分析2 種模型的識(shí)別結(jié)果。
(1)訓(xùn)練部分。在Python的Tensorflow 框架下搭建CNN網(wǎng)絡(luò)[18]。訓(xùn)練配置如下:
即優(yōu)化器選擇adam,損失函數(shù)選擇多分類交叉熵?fù)p失函數(shù),小批量數(shù)量選擇32,迭代次數(shù)100。MFCC特征和語(yǔ)譜圖特征的訓(xùn)練結(jié)果分別如圖7、8 所示。
圖7 MFCC訓(xùn)練結(jié)果
圖8 STFT語(yǔ)譜圖訓(xùn)練結(jié)果
圖7、8 中,圖(a)為正確率隨迭代次數(shù)的變化,圖(b)為損失熵函數(shù)隨迭代次數(shù)的變化。由圖7、8 可知,經(jīng)100次迭代后,MFCC特征訓(xùn)練集準(zhǔn)確率為97.53%,損失熵為0.097 9,測(cè)試集準(zhǔn)確率為87.46%,損失熵為0.578 1。STFT語(yǔ)譜圖訓(xùn)練集準(zhǔn)確率為98.14%,損失熵為0.032 9,測(cè)試集準(zhǔn)確率為90.36%,損失熵為0.462 8。
(2)識(shí)別部分。在PyCharm 軟件中編寫Python代碼,加載CNN 模型并導(dǎo)入最優(yōu)參數(shù),并利用PyQt5庫(kù)編寫GUI界面,保存為mygui.py 文件并運(yùn)行,選擇測(cè)試集中任一音頻,輸出對(duì)鳥聲的識(shí)別預(yù)測(cè)結(jié)果,如圖9 所示。
圖9 鳥聲識(shí)別系統(tǒng)運(yùn)行界面
本實(shí)驗(yàn)設(shè)計(jì)基于卷積神經(jīng)網(wǎng)絡(luò)的鳥聲識(shí)別系統(tǒng),利用MFCC特征和STFT語(yǔ)譜圖2 種特征通過(guò)CNN網(wǎng)絡(luò)進(jìn)行鳥聲識(shí)別,實(shí)驗(yàn)結(jié)果可知,STFT語(yǔ)譜圖的準(zhǔn)確率更高,但自身的數(shù)據(jù)量也更大;MFCC系數(shù)特征的準(zhǔn)確率雖然略低,但是自身數(shù)據(jù)量較小。通過(guò)實(shí)驗(yàn)設(shè)計(jì)和運(yùn)行,可整體性地幫助學(xué)生梳理語(yǔ)音處理、圖像處理和卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)知識(shí),從實(shí)踐中逐步掌握多學(xué)科交叉研究的能力,還可讓學(xué)生通過(guò)改變網(wǎng)絡(luò)層數(shù)、卷積核大小和數(shù)量等方式自主搭建CNN 網(wǎng)絡(luò)完成鳥聲識(shí)別,以此提高學(xué)生的創(chuàng)新能力和實(shí)踐動(dòng)手能力。