張 志,劉振宇,馮婷婷,朱 濤
(南華大學(xué)計(jì)算機(jī)學(xué)院,湖南衡陽 421001)
在人們的日常生活中,時時刻刻都被環(huán)境聲音所包圍。了解這些聲音的含義能夠幫助人們更好地生活。為了理解這些聲音的內(nèi)容,表征環(huán)境聲音是使用它的有效方法。由此便可以看到隱藏在這些數(shù)據(jù)類型中的有用信息[1],利用這些有效信息就能夠?qū)β曇暨M(jìn)行分類。城市中的汽車鳴笛聲、人群的嘈雜聲等許多噪音混入了城市聲景中,這些聲源的分離或分類[2]對于理解城市聲音和控制城市噪聲至關(guān)重要。
目前,在音頻特征提取中,最常用的就是MFCC[2]和LPCC(線性預(yù)測倒譜系數(shù))[3]。MFCC 進(jìn)行音頻特征提取的過程基本分7 個步驟,一段音頻經(jīng)過預(yù)加重、分幀、加窗、FFT、Mel 濾波器組、取對數(shù)、DCT 之后得到一組特征向量,這組特征向量就代表這段音頻的特征。由于這種特征不依賴于信號本身的性質(zhì),所以該方法可以保持較好的識別性能[4-11]。
在目前的音頻特征分類方法中,使用深度學(xué)習(xí)能夠得到不錯的識別準(zhǔn)確率。深度學(xué)習(xí)中對于圖像處理方向最具有代表性的模型就是卷積神經(jīng)網(wǎng)絡(luò)(CNN)[7],在文本和語音方向使用最多的模型是遞歸神經(jīng)網(wǎng)絡(luò)(RNN)[4]。CNN 的經(jīng)典模型有很多,例如AlexNet[11]、VGGNet[12]、ResNet[13]等影響深遠(yuǎn)的模型。RNN 的經(jīng)典模型也有很多,比如門控循環(huán)單元(GRU)[5],長短期記憶網(wǎng)絡(luò)(LSTM)[6]等。
與文中相關(guān)的工作是將數(shù)據(jù)集中的音頻數(shù)據(jù)進(jìn)行特征抽取并將其輸入到深度學(xué)習(xí)的模型當(dāng)中進(jìn)行聲音的識別。文中所用到的數(shù)據(jù)集文件都是音頻數(shù)據(jù)。音頻數(shù)據(jù)屬于序列數(shù)據(jù)(序列數(shù)據(jù)是生活中很常見的一種數(shù)據(jù),如一句話、一段連續(xù)的視頻圖片等),RNN 比DNN 和CNN 更適合處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)[15-16]。
文中使用的音頻特征提取方式為MFCC。但在實(shí)際應(yīng)用過程中,音頻特征表示方式有很多,Jonghee Sang 團(tuán)隊(duì)在音樂信息檢索(MIR)中,將聲音信號的原始波形轉(zhuǎn)換為二維時頻來表示。通過使用內(nèi)核(例如STFT)分解信號并使用對數(shù)比例的頻率表示形式,二維表示形式被認(rèn)為是音頻數(shù)據(jù)的有效形式(例如:梅爾頻譜圖,CQT)。Chen Y在該數(shù)據(jù)集中采用的特征提取方式為對數(shù)梅爾頻譜圖(Log-mel spectrogram)。首先將所有城市聲音劃分為幀,并通過使用窗函數(shù)(默認(rèn)采樣率為22 050 Hz并標(biāo)準(zhǔn)化)將聲音的不同長度分為相同大小的音頻片段,并以對數(shù)比例提取梅爾頻譜圖,得到最終的對數(shù)梅爾頻譜圖。
目前,大多數(shù)的分類任務(wù)都使用DNN 處理。DNN 的結(jié)構(gòu)分成3 個部分,第一個部分是輸入層,也就是模型的輸入,一般都是數(shù)據(jù)的特征。第二部分是隱藏層,隱藏層描述的是輸入和輸出中間的部分。該部分由若干個神經(jīng)網(wǎng)絡(luò)層構(gòu)成,每層由一個或多個神經(jīng)節(jié)點(diǎn)組成,所有網(wǎng)絡(luò)層之間的數(shù)據(jù)傳輸是通過各個層內(nèi)的神經(jīng)節(jié)點(diǎn)相互連接完成的,各層節(jié)點(diǎn)間連接的方式有很多種,如果是全連接的方式就是最簡單的DNN,這種連接方式比較容易理解,但同時它的缺點(diǎn)比較明顯,計(jì)算量非常大并且需要的參數(shù)也很多。DNN 模型結(jié)構(gòu)如圖1 所示。

圖1 DNN模型結(jié)構(gòu)
使用DNN 進(jìn)行分類任務(wù)時,在模型的輸出層一般使用softmax 函數(shù)進(jìn)行類別概率的計(jì)算。模型需要訓(xùn)練多次的原因在于,通常一輪神經(jīng)網(wǎng)絡(luò)的計(jì)算得到的預(yù)測值與實(shí)際想要的值并不一致,損失函數(shù)就是用來描述不一致的程度。根據(jù)模型的損失函數(shù)就會得到一個誤差值,誤差值是神經(jīng)網(wǎng)絡(luò)模型多個節(jié)點(diǎn)共同計(jì)算的結(jié)果,需要利用反向傳播的方法進(jìn)行神經(jīng)元權(quán)值的更新,從而縮小下一輪計(jì)算的誤差值,使得分類結(jié)果更加精確。
為了驗(yàn)證模型的效果,文中實(shí)驗(yàn)使用的數(shù)據(jù)集為UrbanSound8K。該數(shù)據(jù)集是可用于研究的最大的城市環(huán)境聲源公共數(shù)據(jù)集,它被廣泛用于驗(yàn)證環(huán)境聲音識別問題的解決方案中。該數(shù)據(jù)集包含10種不同的城市聲源,共8 732 個音頻文件,每個數(shù)據(jù)的命名格式為錄音編號-類別編號-事件編號-切片編號。每個音頻文件都不超過4 s。該數(shù)據(jù)集共有10 個文件夾,每個文件夾都包含10 種類別的聲音,每個文件夾包含的音頻數(shù)據(jù)大約為873 個左右,該數(shù)據(jù)集中所有文件夾包含的每個類別的音頻數(shù)據(jù)量如表1 所示。

表1 數(shù)據(jù)集每個類別的數(shù)據(jù)信息
將音頻可視化能夠幫助進(jìn)行特征信息的提取。將各個類別的音頻波形圖和頻譜圖進(jìn)行可視化,結(jié)果如圖2 所示。

圖2 10種音頻的波形和頻譜圖
目前,大部分的音頻分類都是使用CNN 來完成的,Pablo Zinemanas 團(tuán)隊(duì)使用CNN 模型進(jìn)行音頻特征的分類[9],模型的F1 值為57。該模型較為簡單,但模型的識別效果并不太好。文中構(gòu)造了多層的GRU模型來進(jìn)行音頻數(shù)據(jù)的識別。GRU 模塊中包括兩個機(jī)制,一個更新門和一個重置門。單個GRU 模型內(nèi)部的公式為:

式(1)、式(2)中σ代表sigmoid 函數(shù),式(5)的σ代表輸出函數(shù),可以為sigmoid 函數(shù)或者softmax 函數(shù)。zt為該單元的更新門,sigmoid 函數(shù)讓更新門的值趨于0 或者1,即記憶上一步的值還是丟棄。rt為重置門,rt越小說明了需要忽略更多的前一時刻的狀態(tài)信息。式(3)、式(4)是模塊中的臨時隱藏狀態(tài)和輸出。
文中GRU 模型的結(jié)構(gòu)更加簡單,而且效果也很好,因此該模型被廣泛使用于深度學(xué)習(xí)的各個領(lǐng)域。單個GRU 模塊的結(jié)構(gòu)如圖3 所示。

圖3 GRU模型結(jié)構(gòu)
文中將所有數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行一次特征提取。由于數(shù)據(jù)集中的音頻文件時長并不統(tǒng)一,所以需要將提取出來的所有MFCC 特征進(jìn)行比較,記錄下幀數(shù)最大的一段,并且在提取的過程中每幀提取40 個MFCC 特征,然后將其余的音頻特征進(jìn)行padding。每一段音頻的特征維度都是(174,40)。特征提取結(jié)束之后將創(chuàng)建神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。在實(shí)驗(yàn)中,采取多層的GRU 模型,如圖4 所示,該模型也是該實(shí)驗(yàn)結(jié)果中準(zhǔn)確率最高的模型。

圖4 7層GRU模型結(jié)構(gòu)圖
為了避免產(chǎn)生過擬合,每一層的后面都有附加dropout 層。最后,定義Softmax 層以輸出類標(biāo)簽的概率,在計(jì)算正確率之前將標(biāo)簽進(jìn)行onte-hot 向量化。為了加速模型收斂,訓(xùn)練采取批量梯度下降的方法進(jìn)行權(quán)值更新,每個批次包含50 個音頻的特征輸入。實(shí)驗(yàn)為了得到識別準(zhǔn)確率最優(yōu)的層數(shù),在每次實(shí)驗(yàn)完成后將比較不同層數(shù)的實(shí)驗(yàn)精度,直到該準(zhǔn)確率到達(dá)某一峰值后下降,將該峰值的層數(shù)記錄下來作為最優(yōu)模型。可以通過圖5 中所示的過程詳細(xì)描述系統(tǒng)流程。

圖5 實(shí)驗(yàn)整體模型結(jié)構(gòu)流程圖
每次實(shí)驗(yàn)將訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)進(jìn)行9∶1 的切分,訓(xùn)練數(shù)據(jù)占總數(shù)據(jù)量的90%,也就是7 858 條音頻數(shù)據(jù),同時將這些數(shù)據(jù)放入模型中進(jìn)行400 個迭代周期,每個周期分為158 個批次,每個批次50個數(shù)據(jù),從而保證每個周期可以運(yùn)行整個訓(xùn)練數(shù)據(jù)集數(shù)量的音頻數(shù)據(jù),然后為每次訓(xùn)練和測試階段記錄識別的正確率。實(shí)驗(yàn)從3 層結(jié)構(gòu)開始訓(xùn)練,直到8 層結(jié)構(gòu)的模型準(zhǔn)確率出現(xiàn)下降。然后反復(fù)實(shí)驗(yàn),計(jì)算相同的結(jié)構(gòu)模型得出準(zhǔn)確率的平均值。
該實(shí)驗(yàn)的主要目的是將不同層數(shù)的GRU 模型輸出的準(zhǔn)確率結(jié)果進(jìn)行比較。實(shí)驗(yàn)中共設(shè)計(jì)了6 組不同層數(shù)的GRU 模型進(jìn)行聲音識別,從3 層到8 層,所有的輸入均為未經(jīng)過特征篩選的原音頻數(shù)據(jù)。每組包括一個訓(xùn)練和一個測試,訓(xùn)練中主要的輸出參數(shù)有Epoch、Train loss、Train accuracy,測試中主要的輸出參數(shù)為Test loss、Test accuracy。表2 列出了模型的結(jié)構(gòu)和參數(shù)輸出的結(jié)果。實(shí)驗(yàn)周期是經(jīng)過多次實(shí)驗(yàn)后確定的,周期為400 可以保證表1 中的模型都可以達(dá)到模型收斂。為了更好地進(jìn)行梯度下降,在實(shí)驗(yàn)中持續(xù)輸出loss 值的變化,由loss 的數(shù)值變化選擇可變的學(xué)習(xí)率。

表2 所有模型結(jié)構(gòu)及其參數(shù)輸出結(jié)果
由表2 可知,從3 層到7 層的模型結(jié)構(gòu)中,測試的正確率會隨著GRU 模型層數(shù)的增加而慢慢上升,但是從7 層到8 層又出現(xiàn)了下降,說明8 層的模型已經(jīng)開始出現(xiàn)過擬合,從而導(dǎo)致訓(xùn)練集正確率高于7層模型,測試正確率低于7 層模型。最優(yōu)模型的loss值變化和識別的正確率變化如圖6 所示。

圖6 7層模型的準(zhǔn)確率和損失值走勢圖
由圖6 可見,多層的GRU 模型在短周期內(nèi)就可以大幅收斂,模型在求解最小化損失函數(shù)時采用的是隨機(jī)梯度下降和變動的學(xué)習(xí)率,所以模型在收斂過程中會有一些抖動,但是模型準(zhǔn)確率大致的趨勢是提升的,并且模型的損失函數(shù)也是呈下降趨勢。模型的最終準(zhǔn)確率達(dá)到了93.1%。雖然模型層數(shù)的增加可能會讓識別的準(zhǔn)確率會相應(yīng)提升一些,但同時模型的參數(shù)也會增加,內(nèi)存的損耗也會隨之增加。模型的訓(xùn)練時間也會隨之增加,需要選擇在模型過擬合之前最優(yōu)的層數(shù)。
在相同的數(shù)據(jù)集下,文中將7 層GRU 模型的識別結(jié)果與其他一些環(huán)境噪聲分類的最新方法得到的結(jié)果進(jìn)行了比較,結(jié)果如表3 所示。

表3 UrbanSound8k數(shù)據(jù)集上模型的分類結(jié)果比較
如Karol J.Piczak 使用了一個深度網(wǎng)絡(luò),該模型包含兩個卷積層以及兩個全連接層,使用音頻數(shù)據(jù)增強(qiáng)進(jìn)行了訓(xùn)練,準(zhǔn)確率約為74%。2019 年ChenY使用Dilated CNN 模型的識別準(zhǔn)確率為78%。在該數(shù)據(jù)集的聲音分類中,Nithya Davis 團(tuán)隊(duì)將數(shù)據(jù)進(jìn)行了數(shù)據(jù)擴(kuò)充并使用CNN 模型進(jìn)行聲音分類,該模型的識別準(zhǔn)確率為83.5%。Haiyan Shu 等人使用8 層CNN 模型對該數(shù)據(jù)進(jìn)行識別[10],識別準(zhǔn)確率達(dá)到了89%。雖然CNN 模型也能對音頻的特征進(jìn)行識別,但是依然存在參數(shù)多和識別準(zhǔn)確率不高的問題。表3 中GoogleNet[16]雖然正確率也不錯,但該模型參數(shù)過多,非常耗時。7 層的GRU 模型的分類精度比其他分類方法有很大提升,并且相對于正確率較高的CNN 模型來說模型也不是很大。相比較其他準(zhǔn)確率相近的分類器而言,參數(shù)使用的比較少。近幾年在該數(shù)據(jù)集的識別的方法中,7 層GRU 模型識別準(zhǔn)確率非常好。
為了探究哪些特征在識別過程中屬于重要特征,哪些特征是噪音,繼續(xù)將數(shù)據(jù)進(jìn)行降維,選擇包裝法進(jìn)行特征的選擇,包裝法在初始特征集上使用隨機(jī)森林進(jìn)行訓(xùn)練,該過程可以得到每個特征的重要性。然后去掉重要程度最低的特征。重復(fù)上述過程,直到剩下的特征數(shù)為所需特征的數(shù)量,保留所得的特征,并使用7 層GRU 模型進(jìn)行訓(xùn)練。同時又使用主成分分析(PCA)降維算法對原數(shù)據(jù)進(jìn)行特征轉(zhuǎn)換,雖然得到的數(shù)據(jù)總特征數(shù)減少,但轉(zhuǎn)換后的特征已經(jīng)不再是原來數(shù)據(jù)特征所代表的含義了。包裝法和PCA 進(jìn)行特征選擇時,使用模型的測試準(zhǔn)確率作為評估標(biāo)準(zhǔn),先將特征數(shù)量從6 960 開始減少至6 000、5 000、4 000、3 000、2 000、1 000,然后從中選取最優(yōu)的特征數(shù)目繼續(xù)篩選,最終篩選出結(jié)果,其中3組數(shù)據(jù)識別準(zhǔn)確率對比結(jié)果如圖7所示。

圖7 原數(shù)據(jù)特征與降維后特征在所有類別上的識別率
由圖7 可知,所有類別中幾乎是沒有經(jīng)過降維處理的原數(shù)據(jù)的效果最佳,雖然包裝法將每個音頻特征從6 960 個特征縮短到160 個,但是每個類別的識別準(zhǔn)確率幾乎都在下降,并且在預(yù)測過程中所節(jié)省的時間并不明顯。而PCA 算法雖然也降低了數(shù)據(jù)的特征數(shù),但是在進(jìn)行預(yù)測時,需要先進(jìn)行PCA 特征轉(zhuǎn)換,在模型預(yù)測結(jié)果時花費(fèi)的時間也并沒有優(yōu)勢,且在大部分類別下識別效果都不如原數(shù)據(jù)好,所以使用7 層GRU 模型在原數(shù)據(jù)上進(jìn)行識別準(zhǔn)確率會更高。
文中實(shí)驗(yàn)之前,已經(jīng)對比了近年來使用CNN 模型和機(jī)器學(xué)習(xí)算法解決ESC 問題的模型,發(fā)現(xiàn)必須使用深層的神經(jīng)網(wǎng)絡(luò)模型才會有較好的識別準(zhǔn)確率,文中構(gòu)造了7 層GRU 模型解決ESC 問題,可以實(shí)現(xiàn)更高的識別準(zhǔn)確率,而且模型收斂更快,打敗了近幾年在該數(shù)據(jù)集上的多種聲音識別算法。在數(shù)據(jù)特征選擇時,使用包裝法進(jìn)行數(shù)據(jù)特征選擇,雖然加快了識別速度,但是準(zhǔn)確率下降太多,未來可以采取更多的特征選擇方式進(jìn)行特征篩選。實(shí)驗(yàn)數(shù)據(jù)提取和處理方面,可以選擇其他的做法,將數(shù)據(jù)全部調(diào)整成相同維度時可以選擇填充平均值或者直接刪除有缺失值的數(shù)據(jù)。未來的研究可以識別分離多種混合的聲音,進(jìn)而增強(qiáng)需要的聲音類別,消除其余噪聲,對于語音通話具有重要意義。