靳華中,徐雨東,李晴晴,李文萱
(湖北工業大學計算機學院,湖北 武漢 430068)
語音信號作為人類獲取和傳播信息的重要手段,是人類最重要、最有效、最常用和最方便的通訊方式。但是,在進行語音通信的過程中,周圍環境、傳輸介質、通信設備的干擾,使接收到的語音信號成為被噪聲污染的語音信號。語音去噪就是抑制和降低噪聲干擾,從帶噪語音信號中獲得純凈語音信號的過程。
語音去噪通常需要針對語音和噪聲信號的特性進行相應的分析處理。例如,基于語音信號的短時平穩特性,處理時通常對語音信號進行分段獨立處理。由于人耳掩蔽特性,需要考慮不同頻率信號間的影響。由于語音中周期性的濁音是高能量部分,可以使用濾波器提取語音分量。而由于噪聲特性與噪聲來源相關,針對不同的噪聲通常采取不同的去噪方法。
傳統的語音去噪方法譜減法[1]、維納濾波法[2]、基于統計模型的方法[3]、子空間算法[4-5]等長期以來被廣泛使用。譜減法從信號的功率譜中減去估計噪聲的功率譜,原理簡單,實現容易,但是不適合處理信噪比較低和噪聲不平穩的信號。維納濾波法要求輸入的信號不但是廣義平穩的,而且統計特性已知,通常的噪聲很難滿足這兩個要求。基于統計模型的方法在假定語音和噪聲服從某種概率分布的基礎上進行建模,但無論瑞利分布還是高斯分布都不能精確地描述語音信號。子空間算法復雜度較高,無法用于需要實時處理的場景。由分析可知,傳統去噪方法通常只適用于語音服從高斯分布或噪聲是平穩的簡單場景,在復雜場景下效果較差。
基于神經網絡的優秀語音去噪算法 包括深度神經網絡[6]、全卷積神經網絡[7]、空洞卷積神經網絡[8]、循環神經網絡[9-10]、生成對抗網絡[11-12]等語音算法。這些算法不僅去噪效果好,而且根據訓練集的不同,通常可以去除不同類型或不同強度的噪聲,且對噪聲的平穩性要求不高。目前比較成熟的算法和傳統方法一樣,只使用語音的頻譜進行去噪,認為相位譜對去噪工作沒有幫助。但是有研究表明[13],使用語音的相位譜或許能顯著改善去噪效果,而直接作用于原始音頻的神經網絡能使用包括相位的更多有效信息。如果將語音的音頻直接輸入,對于一個采樣率為16 kHz的音頻,每秒有16000個采樣點,普通的神經網絡無法勝任。目前直接使用原始音頻輸入的結構主要是基于生成對抗網絡的,把生成器當作增強網絡,用判別器區分干凈語音和去噪語音,例如SEGAN[11]。同時還出現了其它直接使用原始音頻的方法,例如基于空洞卷積的端到端結構,也就是Wavenet[14]中所使用的結構。
Wavenet是由Google提出的基于原始音頻的自回歸生成模型,能夠用于多人語音生成、語音轉文本、音樂建模等任務,通過Wavenet生成的語音更接近人的聲音。而Speech-denoising Wavenet[8]能夠克服使用頻譜等高級特征作為前端的固有局限性,而且其語音去噪的效果優于SEGAN。受此啟發,本文將Wavenet和梅爾頻率倒譜系數(MFCC)結合起來,在網絡輸入端同時使用原始音頻及其頻譜中的高級信息,以進一步提升去噪效果。為驗證本文提出算法的效果,實驗過程采用和基于神經網絡的語音去噪算法相同的訓練集和測試集。雖然在實際使用時會因為計算語音的MFCC而降低處理速度,但在相同訓練集中訓練時,該方法的收斂速度更快,在相同測試集中測試時,該方法的去噪效果更好。
Wavenet是根據PixelCNN[15]提出的音頻生成模型,使用了因果卷積和空洞卷積的結構。空洞卷積使得感受能隨著網絡深度的增加而倍增,可以直接對原始音頻進行建模,而由于因果卷積沒有使用遞歸連接,模型訓練速度比RNN更快。和語音生成模型不同,語音去噪不需要因果卷積的方法,網絡的輸出不是下一個采樣點,而是已經去噪的采樣點。因此,Speech-denoising Wavenet將空洞卷積的卷積核大小由2×1改為3×1,利用帶去噪語音前后的一段語音對當前采樣點進行去噪,如圖1所示。這樣,修改后的模型就不再是自回歸生成模型,也就沒有了Wavenet中的時間復雜度問題。

圖 1 Speech-denoising Wavenet的空洞卷積網絡
梅爾頻率倒譜系數(MFCC)是語音識別等領域被廣泛使用的音頻特征,傳統語音識別算法非常依賴MFCC,并且已經有非常成熟的算法能通過MFCC進行語音識別[16-18]。要得到一段音頻的MFCC,需要經過預加重、分幀、加窗、快速傅立葉變換(FFT)、Mel濾波器組和離散余弦變換(DCT)這幾個步驟[19]。
對于固定長度的音頻,其得到的MFCC數量相同,但不適合直接作為網絡的輸入,需要先進行歸一化。考慮到MFCC值的大小,將其值除以50之后通過tanh函數映射到-1至1。接著,使用一個全連接層和一個卷積層使數據維度與殘差層中的數據維度一致,以便和每一層空洞卷積的結果直接相加(圖2)。

圖 2 將語音的MFCC引入Speech-denoising Wavenet
殘差層中的數據維度是7739×128。先使用一個全連接層將數據映射到7739×1,然后使用一個有128個卷積核的卷積層將數據映射為7739×128,每個卷積核大小為1×1。網絡其它部分的結構保持和Speech-denoising Wavenet一致。
在訓練和測試時所有的語音數據由Voice Bank語料庫[20]提供,環境噪音由Demand數據庫[21]提供。其中訓練集有11574條長度不超過15 s的語音,信噪比分為0、5 dB、10 dB和15 dB四類。測試集也有824條類似的語音,信噪比分為2.5 dB、7.5 dB、12.5 dB和17.5 dB四類。訓練和測試時會把所有語音統一重采樣至16 kHz。本文模型和Speech-denoising Wavenet一樣有30層殘差層,網絡每次對1601個采樣點進行去噪。
信噪比(SNR)是通用的評價標準:
SNR=10×lg(Ps/Pn)
(1)
式(1)中Ps和Pn分別代表信號和噪聲的有效功率,SNR越高表示音頻中所含的噪聲越少。和Speech-denoising Wavenet相比,測試集中71.2%的語音的SNR有所提升,平均提高了3.60%。實驗結果見表1和圖3。

表1 低信噪比、高信噪比和全部語音的去噪效果對比 %

圖 3 四種不同信噪比語音的去噪效果對比
從表1和圖3中可以看到,本文模型在高SNR下提升更明顯,即引入MFCC能顯著提升噪音較少情況下的去噪效果。在訓練時本文提出的模型大約只需要遍歷訓練集7次左右,而Speech-denoising Wavenet需要遍歷約10次,說明MFCC的加入能加速收斂,節省近30%的訓練時間。當然,MFCC的加入也會導致處理速度降低。對測試集的前100條語音進行去噪,平均耗時90 s,和Speech-denoising Wavenet的平均76 s相比增加了18.42%。以上所有實驗均使用相同環境,機器配置為NVIDIA GeForce RTX 2070。
圖4和圖5展示了對測試集中某一段語音去噪前后的第0.43 s到第0.46 s的波形圖對比,帶噪語音SNR為11.8 dB,使用原模型去噪得到的音頻SNR為18.7 dB,而使用本文模型去噪得到的SNR為20.5 dB。

圖 4 原模型干凈語音與去噪后語音波形圖對比

圖 5 本文模型干凈語音與去噪后語音波形圖對比
可以看到本文提出的模型和Speech-denoising Wavenet相比,與干凈語音波形圖的重疊度更高,即去噪效果更好。
本文在闡述Speech-denoising Wavenet網絡結構的基礎上,提出了一種基于Speech-denoising Wavenet的改進模型,通過加入語音的MFCC特征來提升去噪效果。實驗表明,新模型相比原模型去噪效果更好,測試集語音的SNR平均提高3.60%,對于噪音較少的情況提升更明顯。盡管計算MFCC會降低18.42%的去噪速度,但該方法可以節省近30%的訓練時間。