楊 帆 李祎男 喬 涵 王連祺
(1.31008部隊(duì) 北京 100080)(2.32085部隊(duì) 北京 100080)(3.陸軍勤務(wù)學(xué)院 重慶 401331)
周圍環(huán)境的聲音干擾是人們?cè)谶M(jìn)行語音通信的過程中無法完全避免的,由于這些外界干擾聲的存在,就使得原本的語音信號(hào)變得不純凈,最終使得接收者接收到的并不是發(fā)送者發(fā)出的最原始語音信號(hào),這些干擾都會(huì)或多或少會(huì)對(duì)所需傳輸?shù)恼Z音信號(hào)有所影響,也就是所謂的噪音。
目前語音識(shí)別處理系統(tǒng)的發(fā)展非常迅速,但噪音的干擾卻使得識(shí)別的精度極大的降低。在沒有噪音的理想環(huán)境中,語音識(shí)別系統(tǒng)已經(jīng)可以達(dá)到百分之百的識(shí)別率,但處于現(xiàn)實(shí)環(huán)境中,識(shí)別率便會(huì)直線下降。正是由于這些原因,語音信號(hào)去噪已經(jīng)成為了目前信號(hào)處理領(lǐng)域中的一個(gè)熱門話題,而使用人工神經(jīng)網(wǎng)絡(luò)是非常方便且有效的方法。隨著對(duì)人工智能的研究不斷深入,語音識(shí)別技術(shù)[1]一直在不斷創(chuàng)新突破,語音技術(shù)在最近三四十年發(fā)展迅速,語音信號(hào)處理已經(jīng)對(duì)人們的工作生活產(chǎn)生了重要影響,可見語音對(duì)現(xiàn)在的社會(huì)非常重要[2],為了提高語音信號(hào)分析的效果,人們以傅里葉變換作為基礎(chǔ)提出了大量的分析方法,比如Gabor 變換、短時(shí)傅立葉變換、小波變換及時(shí)頻分析等[3]。1975年,B.Windrow等研究出了智能相互消減去噪算法,隨后該算法得到進(jìn)一步的發(fā)展[4];1978 年,Lim 和Oppenheim 針對(duì)語音信號(hào)利用維納濾波法來實(shí)現(xiàn)去噪效果,通過該方法提高了去噪性能[5];1979年,Boll S F 利用去除噪聲頻譜來獲得原始語音信號(hào)的方法來進(jìn)行語音去噪[6];1980 年,Maulay 和Malpass研究出軟判決法來對(duì)噪聲進(jìn)行去除,有效分離原始語音和噪聲[7];1984 年,Ephraim 與Malah 研究出了基于MMSE的短時(shí)譜去噪法,該研究將短時(shí)譜去噪技術(shù)在信號(hào)去噪領(lǐng)域中得到一定的發(fā)展[8];1987年,Paliwal研究出了卡爾曼濾波法來進(jìn)行語音去噪研究,該方法是基于測(cè)量方差已知的條件下對(duì)帶噪語音進(jìn)行最優(yōu)估計(jì)[9];1995年,Ephraim 研究出了信號(hào)子空間法來進(jìn)行語音去噪,該方法是基于線性代數(shù)理論的知識(shí),其原理是將純凈語音和噪聲分解到不同的兩個(gè)空間[10];2004年,Hu Yi和Loizou研究出了通過小波變換閾值函數(shù)的方法對(duì)語音信號(hào)進(jìn)行去噪,該方法具有多分辨率的特點(diǎn)[11]。2011 年,張君昌等提出了一種基于清濁音分離的動(dòng)態(tài)閾值小波去噪方法[12]。2012 年,謝巍盛等針對(duì)語音增強(qiáng)技術(shù)中的信號(hào)去噪問題,提出了一種非線性小波自適應(yīng)閾值去噪方法[13]。2013 年,陳曉娟等針對(duì)語音信號(hào)去噪問題,提出小波熵自適應(yīng)閾值去噪法[14]。2014 年,李洋等提出一種基于經(jīng)驗(yàn)?zāi)B(tài)分解(EMD)的小波閾值去噪方法[15]。2015 年,靳立燕等提出了一種奇異譜分析(SSA)和維納濾波(WF)相結(jié)合的語音去噪算法SSA-WF[16]。2016年,張雪等提出一種基于集合經(jīng)驗(yàn)?zāi)B(tài)分解(EEMD)的聯(lián)合能量熵與小波閾值的自適應(yīng)去噪方法[17]。2017年,唐鵬等研究出一種改進(jìn)的帶調(diào)整參數(shù)小波閾值函數(shù),并采用粒子群優(yōu)化算法尋找改進(jìn)閾值函數(shù)在某一背景噪聲環(huán)境中的最優(yōu)參數(shù)值,通過重構(gòu)處理后得到最優(yōu)小波系數(shù)的語音信號(hào),將改進(jìn)的小波閾值函數(shù)與貝葉斯閾值方法相結(jié)合[18]。2018 年,陸振宇等提出一種基于變分模態(tài)分解和小波分析去噪的方法[19]。2019 年,陳召全提出了一種基于模糊控制的小波包多閾值語音減噪新算法[20]。
近十幾年來,研究人員在傳統(tǒng)軟硬閾值小波閾值去噪的基礎(chǔ)上,提出了許多新的去噪方法,主要是對(duì)小波閾值函數(shù)、閾值進(jìn)行改進(jìn)。
本實(shí)驗(yàn)使用的語音數(shù)據(jù)集是來自Mozilla 公共語音數(shù)據(jù)集網(wǎng)站上下載的漢語數(shù)據(jù)集。該數(shù)據(jù)集包含大量48kHz 錄音的主題說短句。使用audio Data store 為cv-valid-train 程序文件夾中的文件創(chuàng)建數(shù)據(jù)存儲(chǔ)。使用shuffle 可隨機(jī)化數(shù)據(jù)存儲(chǔ)中文件的順序。由于語音通常低于4kHz,因此首先將干凈和嘈雜的音頻信號(hào)向下采樣到8kHz,以減少網(wǎng)絡(luò)的計(jì)算負(fù)載。預(yù)測(cè)器和目標(biāo)網(wǎng)絡(luò)信號(hào)分別是噪聲和干凈音頻信號(hào)的大小譜。網(wǎng)絡(luò)的輸出是去噪信號(hào)的幅度譜?;貧w網(wǎng)絡(luò)使用預(yù)測(cè)輸入最大限度地減少其輸出和輸入目標(biāo)之間的均方誤差。去噪音頻使用輸出幅度譜和噪聲信號(hào)的相位轉(zhuǎn)換回時(shí)域。
短時(shí)傅里葉變換(Short-Time Fourier Transform,STFT)是研究非平穩(wěn)信號(hào)使用最為廣泛的重要方法。因?yàn)檎Z音信號(hào)通常是非平穩(wěn)信號(hào),所以使用短時(shí)傅立葉變換(STFT)將音頻轉(zhuǎn)換為頻域,窗口長(zhǎng)度為256 個(gè)樣本,重疊為75%,并具有Hamming窗口。通過丟棄與負(fù)頻率相對(duì)應(yīng)的頻率樣本,可以將光譜矢量的大小減小到129。預(yù)測(cè)輸入由8個(gè)連續(xù)的噪聲STFT 向量組成,因此每個(gè)STFT 輸出估計(jì)都是根據(jù)當(dāng)前噪聲STFT 和前7 個(gè)噪聲STFT向量計(jì)算的。
從一個(gè)訓(xùn)練文件生成目標(biāo)和預(yù)測(cè)信號(hào)。首先,定義系統(tǒng)參數(shù):
定義用于將48kHz 音頻轉(zhuǎn)換為8kHz 的采樣率轉(zhuǎn)換器。使用read 從數(shù)據(jù)存儲(chǔ)獲取音頻文件的內(nèi)容。確保音頻長(zhǎng)度是采樣率轉(zhuǎn)換器抽取系數(shù)的倍數(shù)。將音頻信號(hào)轉(zhuǎn)換為8kHz。從洗衣機(jī)噪聲矢量創(chuàng)建隨機(jī)噪聲段。向語音信號(hào)添加噪聲,使信噪比為0dB。使用stft 從原始和嘈雜的音頻信號(hào)生成大小stft 矢量。從嘈雜的STFT 生成8 段訓(xùn)練預(yù)測(cè)信號(hào)。連續(xù)預(yù)測(cè)值之間的重疊為7 段。設(shè)置目標(biāo)和預(yù)測(cè)值。這兩個(gè)變量的最后一個(gè)維度對(duì)應(yīng)于音頻文件生成的不同預(yù)測(cè)目標(biāo)對(duì)的數(shù)量。每個(gè)預(yù)測(cè)值是129×8,每個(gè)目標(biāo)是129×1。
如圖1 去噪模型流程圖所示,去除噪音的大概流程是分別把干凈的聲音和加噪處理過的聲音進(jìn)行短時(shí)傅里葉變換,分別作為目標(biāo)和預(yù)測(cè)輸入到深度學(xué)習(xí)網(wǎng)絡(luò),再把得到的結(jié)果進(jìn)行逆短時(shí)傅里葉變化得到去噪語音模型。
圖1 去噪模型流程圖
首先,可以考慮由全連接的圖層組成的去噪網(wǎng)絡(luò)。將輸入大小指定為大小為為129×8。定義兩個(gè)隱藏的完全連接的層,使用ReLU 函數(shù)作為激活函數(shù),神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)的作用是激活神經(jīng)元的特征然后保留并映射出來,這是神經(jīng)網(wǎng)絡(luò)能模擬人腦機(jī)制,解決非線性問題的關(guān)鍵,ReLU函數(shù)更是其中的佼佼者[21]。ReLU(Rectified Linear Unit,Re-LU)線性整流函數(shù)是一個(gè)人工神經(jīng)網(wǎng)絡(luò)常用的分段函數(shù),如果輸入值為正時(shí)就保持原來的值不改變,反之則輸出的結(jié)果為0。它的定義式:f(x)=max(0,x)。該方法會(huì)將某些數(shù)據(jù)直接修改為0,但同時(shí)增強(qiáng)了訓(xùn)練后網(wǎng)絡(luò)的稀疏性,這更加符合神經(jīng)元信號(hào)激勵(lì)原理,不僅削弱了參數(shù)之間的耦合關(guān)系,而且大大降低了發(fā)生過擬合問題的概率。
添加一個(gè)完全連接的層與129 個(gè)神經(jīng)元,其次是一個(gè)回歸層。接下來,指定網(wǎng)絡(luò)的培訓(xùn)選項(xiàng)。將Max Epochs 為3,以便網(wǎng)絡(luò)通過訓(xùn)練數(shù)據(jù)進(jìn)行3 次傳遞。將Mini Batch Size 為128,以便網(wǎng)絡(luò)一次查看128 個(gè)訓(xùn)練信號(hào)。將Plots 為“training-progress”,以生成隨著迭代次數(shù)的增加而顯示訓(xùn)練進(jìn)度的繪圖。Verbose false,以禁用將與繪圖中顯示的數(shù)據(jù)相對(duì)應(yīng)的表輸出打印到命令行窗口中。將Shuffle為“every-epoch”,以便在每個(gè)時(shí)代開始時(shí)洗牌訓(xùn)練序列。指定Learn Rate Schedule 在每次通過“piecewise”一定數(shù)量的時(shí)間點(diǎn)(1)時(shí)將學(xué)習(xí)速率降低指定因子(0.9)。Validation Data 為驗(yàn)證預(yù)測(cè)值和目標(biāo)。設(shè)置Validation Frequency 以便每個(gè)世紀(jì)計(jì)算一次驗(yàn)證均方誤差。本次實(shí)驗(yàn)使用自適應(yīng)矩估計(jì)(Adam)求解器。Adam 算法通過將Momentum 算法和RMSProp算法相結(jié)合使用產(chǎn)生的一種新的算法,來為每一個(gè)不同參數(shù)設(shè)計(jì)它們獨(dú)立的自適應(yīng)性學(xué)習(xí)率。該方法使用偏置校正每一次迭代學(xué)習(xí)率,可以使得參數(shù)趨向于平穩(wěn)。
二維卷積層將滑動(dòng)濾波器應(yīng)用于輸入。該圖層通過沿輸入垂直和水平移動(dòng)篩選器,計(jì)算權(quán)重和輸入的點(diǎn)乘積,然后添加偏置項(xiàng)。定義中描述的完全卷積網(wǎng)絡(luò)的層,包括16 個(gè)卷積層。前15 個(gè)卷積層是由3 層組成的組,重復(fù)5 次,濾碼寬度分別為9、5 和9,過濾器的數(shù)量分別為18、30 和8。最后一個(gè)卷積層的過濾寬度為129和1篩選器。在此網(wǎng)絡(luò)中,卷積僅在一個(gè)方向(沿頻率維度)執(zhí)行,除第一個(gè)圖層外,所有圖層的沿時(shí)間維度的濾波器寬度都設(shè)置為1。與完全連接的網(wǎng)絡(luò)類似,卷積層之后是ReLU和批處理歸一化層。訓(xùn)練選項(xiàng)與完全連接網(wǎng)絡(luò)的選項(xiàng)相同,只是驗(yàn)證目標(biāo)信號(hào)的維度被修改為與回歸層預(yù)期的維度一致。使用trainNetwork 網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)進(jìn)行指定的培訓(xùn)選項(xiàng)和層體系結(jié)構(gòu)培訓(xùn)。
圖2 表示全連接網(wǎng)絡(luò)訓(xùn)練誤差的降低,雖然誤差已經(jīng)很低,但仍然存在,不能完全消除。圖3 為卷積網(wǎng)絡(luò)訓(xùn)練誤差的降低。
圖3 卷積網(wǎng)絡(luò)訓(xùn)練誤差降低圖
使用“cvv-vex-vitest”文件夾中的語音信號(hào)來測(cè)試訓(xùn)練后的網(wǎng)絡(luò)的性能。使用audioDatastore 為“cv-有效性測(cè)試”文件夾中的文件創(chuàng)建數(shù)據(jù)存儲(chǔ)。洗牌數(shù)據(jù)存儲(chǔ)區(qū)中的文件。從數(shù)據(jù)存儲(chǔ)中讀取文件內(nèi)容。將音頻信號(hào)轉(zhuǎn)換為8kHz。在這個(gè)測(cè)試階段,用洗衣機(jī)噪音腐蝕語音,而不是在訓(xùn)練階段使用。從洗衣機(jī)噪聲矢量創(chuàng)建隨機(jī)噪聲段。向語音信號(hào)添加噪聲,使信噪比為0dB。使用STFT 從嘈雜的音頻信號(hào)生成向量。從嘈雜的STFT 生成8 段訓(xùn)練預(yù)測(cè)信號(hào)。連續(xù)預(yù)測(cè)值之間的重疊為7 段。通過在訓(xùn)練階段計(jì)算的平均值和標(biāo)準(zhǔn)偏差來歸一化預(yù)測(cè)值,利用predict訓(xùn)練網(wǎng)絡(luò)的預(yù)測(cè)來計(jì)算去噪幅度STFT。按訓(xùn)練階段使用的平均值和標(biāo)準(zhǔn)偏差縮放輸出,計(jì)算去噪語音信號(hào),執(zhí)行逆STFT。利用噪聲STFT向量的相位重建時(shí)域信號(hào)。
試聽得到的經(jīng)過去噪處理的音頻,發(fā)現(xiàn)不論是經(jīng)過全連接網(wǎng)絡(luò)還是卷積神經(jīng)網(wǎng)絡(luò)處理后的音頻,都有著明顯的去噪效果,但距離最初的干凈的音頻,還是會(huì)有一定的噪音存在。
從圖4 中可以看出不論是使用全連接還是卷積方法對(duì)語音信號(hào)進(jìn)行去噪,效果都是很明顯的,但兩者之前還是有一定區(qū)別,全連接對(duì)語音高振幅進(jìn)行了大量的削弱,而卷積網(wǎng)絡(luò)則進(jìn)行了大量的保留,各有優(yōu)缺。
圖4 音頻幅度對(duì)比圖
通過圖5 中可以明顯地看出卷積網(wǎng)絡(luò)對(duì)聲音頻率更加還原。這是因?yàn)槭褂玫亩虝r(shí)傅里葉方法是通過頻率來進(jìn)行語音去噪,所以從頻域上看,卷積網(wǎng)絡(luò)的去噪效果更加明顯。
圖5 光譜對(duì)比圖
通過應(yīng)用全連接網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)對(duì)帶有洗衣機(jī)噪音的語音信號(hào)處理,得出結(jié)論為不論是全連接網(wǎng)絡(luò)方法還是卷積網(wǎng)絡(luò)方法,對(duì)語音信號(hào)中噪音的去除效果都是十分明顯的,全連接對(duì)語音高振幅進(jìn)行了大量的削弱,而卷積網(wǎng)絡(luò)對(duì)聲音頻率更加還原,去噪效果更加明顯。