盧 勇 舒 濤
(中國民用航空飛行學院空管中心 四川 廣漢 618307)
隨著科學技術的發展,語音增強算法在眾多領域都有廣泛應用。移動電話在進行語音通話時,發送端往往帶有背景噪聲,這些噪聲會嚴重影響通話質量,為了改善語音質量,需要在聲碼器對語音進行壓縮之前用語音增強算法作預處理[1]。在民航系統中,地空通信顯得尤為重要,但是在通信時,飛機發動機周期性的噪聲和機械振動引起的噪聲會對飛行員的通話形成嚴重干擾,這時需要在帶噪語音被放大之前用語音增強算法對其進行預處理,以改善語音質量及可懂度[2]。語音增強算法的目的就是去除含噪語音中的噪聲,提高語音的質量和可懂度。
傳統的語音增強算法有維納濾波法、譜減法、基于統計模型的方法和子空間算法等一系列算法,但是這些算法只適用于平穩的噪聲環境中,對于非平穩噪聲信號不能進行有效抑制,而且在去噪過程中還會引入音樂噪聲導致語音失真[3]。近些年來,基于深度學習的語音處理技術逐漸興起,它不需要假設語音與噪聲相互獨立,而且可以有效抑制非平穩噪聲[4],在改善語音質量方面取得了不錯效果,但并沒有提高語音的可懂度。語音增強算法在降噪過程中,對噪聲譜的估計非常重要,如果估計太小,可能還會有殘留噪聲;如果估計太大,可能會去除有效成分,導致語音失真,造成語音可懂度的損傷。估計噪聲最簡單的方法是話音活動檢測(Voice Activity Detection,VAD)算法,它是利用從輸入信號提取的一些特征與無語音段得到的某個閾值進行比較來估計和更新噪聲功率,但是在非平穩的信號中難以達到理想結果[5]。最小值統計(Minimum Statistics,MS)噪聲估計算法是在一個有限長窗內對帶噪語音功率譜的最小值進行跟蹤,并將最小值作為噪聲的估計值[6]。最小值控制的遞歸平均(Minima-Controlled Recursive Averaging,MCRA)算法是利用噪聲譜估計的最小值來控制語音存在的條件概率和噪聲估計中使用的時間平滑因子[7]。改進的最小值控制的遞歸平均(Improved Minima-Controlled Recursive Averaging,IMCRA)算法在計算語音存在的概率時是通過語音不存在的先驗估計概率得到的[8]。此外,很多學者在這些算法的基礎之上進行了改進,如在IMCRA算法中加入了最優平滑因子,用連續最小值跟蹤取代在固定窗內的最小值搜索,這些改進在改善語音質量方面取得了一定效果,但是并沒有提高語音的可懂度,反而在語音去噪時引入了失真,進一步損傷了語音的可懂度,因此需要設計一種算法,在改善語音質量的同時又能提高語音的可懂度。
為了解決以上問題,本文提出基于SNRESI信道選擇的改進IMCRA語音增強算法,該算法首先利用基于統計模型的方法結合IMCRA估計的噪聲功率譜對帶噪語音進行降噪,然后再根據SNRESI準則保留衰減失真的有用信號,進而提高整個頻帶的信噪比和可懂度。
大部分語音增強算法無法準確估計背景噪聲頻譜,并且在降噪過程中引入了失真導致無法提高語音的可懂度。在某些情況下,引入的語音失真可能比背景噪聲更具破壞性[9]。為了分析由降噪算法引入的失真對可懂度的影響,需要建立失真與可懂度之間的關系,頻率加權分段信噪比(fwSNRseg)與噪聲抑制語音的可懂度高度相關[10],具體公式如下:
式中:W(k,t)表示第k個頻帶的權重值;K表示頻帶數量;M表示信號的總幀數。

將式(2)中分子分母同除以X2(k,t),得到:


圖1 SNRESI度量圖
區域I和區域II的并集(稱為區域I+II),有以下約束:



假定帶噪語音信號y(n)由純凈信號x(n)和噪聲信號d(n)組成,即:
y(n)=x(n)+d(n)
(6)
兩邊進行分幀加窗和傅里葉變換得到:
Y(λ,k)=X(λ,k)+D(λ,k)
(7)
式中:λ表示幀數;k表示頻點。
IMCRA算法是基于時間遞歸平均來對噪聲譜進行估計,噪聲估計形式如下:


在IMCRA算法中,平滑因子αd(λ,k)由語音存在概率決定,語音存在概率需要通過兩次迭代計算得到。第一次迭代主要是對各頻點進行粗略的話音活動檢測以此來判決語音活性,第二次迭代是通過時頻平滑去除相對較強的語音分量,得出更準確的語音存在概率。
第一次迭代:
首先對帶噪語音的功率譜做平滑估計,估計方式如下:
S(λ,k)=αsS(λ-1,k)+(1-αs)Sf(λ,k)
(9)
式中:αs為平滑因子。
式中:w(i)為窗函數,窗長為2Lw+1。當前幀的最小值Smin(λ,k)采用在D幀的固定窗長內進行最小值統計得到。
通過搜索得到Smin(λ,k)后,然后判決語音的存在性,判決規則如下:

第二次迭代:
這次迭代主要針對已經被判斷為噪聲的頻率分量,平滑過程如下:
(12)


(14)

計算出不存在概率q(λ,k)后,可以通過以下計算得出語音存在概率p(λ,k):
式中:v(λ,k)=γk(λ)ξk(λ)/(1+ξk(λ)),γk(λ)和ξk(λ)分別為頻點k的后驗和先驗SNR。計算出p(λ,k)之后,就可以更新本幀的噪聲功率譜估計值。此外,為了最小化語音失真,引入了一個偏差補償因子:
式中:β為常數1.47。
在IMCRA算法中,計算平滑功率密度譜的最小值Smin(λ,k)都是在固定窗內進行搜索,這種方法容易延遲,不能快速響應噪聲譜的變換,因此在改進的IMCRA算法中使用連續最小值跟蹤算法來計算Smin(λ,k)[12],定義如下:
ifSmin(λ-1,k)

βS(λ-1,k))
(17)
else
Smin(λ,k)=S(λ,k)
end
式中:β=0.96;γ=0.998。

式中:β=1.47;θ為經驗函數。
本文首先利用基于統計模型的方法結合估計的噪聲功率譜對帶噪語音進行降噪,然后再根據SNRESI準則,保留衰減失真的有用信道,消除放大失真的不利信道,最后對通過有用信道的信號進行合成得到增強的語音信號。整體算法的一般步驟如下:
(1) 頻譜分解:帶噪語音信號通過短時幀加窗和傅里葉變換得到Y(k,t),Y(k,t)表示第t幀第k個頻帶的帶噪信號頻譜。

(3) 信道選擇:通過SNRESI準則,只允許SNRESI>1的信道通過,消除放大失真的信道,得到通過選定信道的語音增強信號頻譜XC(k,t)。
(4) 信號合成:對通過選定信道的信號頻譜XC(k,t)進行傅里葉逆變換重構信號,最終得到增強語音信號。
整體算法的流程如圖2所示。

圖2 基于SNRESI信道選擇的改進IMCRA語音增強算法流程
語音質量評估標準有主觀音質測度和客觀音質測度兩種方法。主觀測度是比較原始純凈語音和處理后增強語音的音質,并按照預設好的等級標準對增強后語音的音質進行評分;客觀測度是用數值對原始純凈語音和處理后增強語音的音質進行量化對比[13]。本文客觀測度采用分段信噪比(SNRseg)和感知語音質量評估(PESQ)標準,主觀測度采用ITU-T P.835[14]評價標準。ITU-T P.835評價增強語音信號有如下方面:
(1) 僅語音信號,使用五分制信號失真(SIG)量表,1代表嚴重失真,2代表明顯失真,3代表有些失真,4代表幾乎不失真,5代表無失真。
(2) 僅背景噪聲,使用五分制背景失真(BAK)量表,1代表十分明顯且十分煩擾,2代表明顯且煩擾,3代表可覺察但不煩擾,4代表有些覺察,5代表不可覺察。
(3) 整體效果,采用平均意見得分(OVL)量表,1代表很差,2代表差,3代表一般,4代表好,5代表非常好。
本文采用的實驗數據來自NOIZEUS噪聲語音庫[15],該語音庫中包含30個由不同人員發音的純凈語句,噪聲信號包括來自人群、機場、餐廳、汽車、街道等不同地方的錄音。仿真實驗時,噪聲分別按照0 dB、5 dB、10 dB、15 dB的不同信噪比添加到純凈語音中,然后再利用語音增強算法進行去噪。為了驗證在非平穩噪聲環境中的去噪效果,本文隨機選擇了三段純凈語音sp01.wav、sp07.wav和sp10.wav,分別疊加人群、機場、餐廳、汽車、街道等不同類型的噪聲,然后再利用改進的IMCRA算法、基于卷積神經網絡(CNN)的語音增強算法和本文算法對其進行去噪處理。通過主客觀測度來評價三種算法的去噪效果。去噪處理時,語音采樣頻率為8 kHz,短時幀為320個樣本點,使用漢明窗加窗處理,FFT的分析點數為640。
圖3表示純凈語音sp01.wav疊加0 dB、5 dB、10 dB、15 dB四種不同信噪比的人群背景噪聲,分別采用改進的IMCRA算法、基于CNN的語音增強算法和本文算法得到的SIG、BAK、OVL評分等級。可以看出,對于四種不同信噪比的人群背景噪聲,三種算法都有一定的去噪效果,但采用本文算法后得到的SIG、BAK、OVL評分最高,其次是基于CNN的語音增強算法,最后是改進的IMCRA算法,說明本文算法在降噪和引入失真方面效果更好,進一步提高了語音的質量和可懂度。

(a) 0 dB人群噪聲

(b) 5 dB人群噪聲

(c) 10 dB人群噪聲

(d) 15 dB人群噪聲圖3 不同信噪比的人群背景噪聲下采用三種算法得到的SIG、BAK、OVL評分
為了驗證本文算法在各種非平穩環境下的去噪效果,進一步選取純凈語音sp07.wav,分別疊加0 dB、5 dB、10 dB、15 dB四種不同信噪比的機場、餐廳、汽車三種背景噪聲,分別采用改進的IMCRA算法、基于CNN的語音增強算法和本文算法進行語音去噪處理,去噪后得到的SNRseg和PESQ得分情況如表1所示。

表1 不同信噪比輸入下的不同類型噪聲語音增強后的SNRseg和PESQ得分情況
可以看出,在不同信噪比的不同背景噪聲下,針對同一類型的噪聲輸入,相比其他兩種算法,本文算法在SNRseg和PESQ得分方面均最高,說明本文算法在語音增強方面更好,進一步提高了語音的質量和可懂度。另外,在低信噪比的機場、餐廳背景噪聲下,基于CNN的語音增強算法在PESQ方面要好于改進的IMCRA算法,但是在SNRseg方面要低于改進的IMCRA算法;在高信噪比的機場、餐廳背景噪聲下和在汽車背景噪聲下,改進的IMCRA算法要好于基于CNN的語音增強算法。以上說明,改進的IMCRA算法和基于CNN的算法在語音增強方面各有利弊,本文算法效果最好。
圖4表示純凈語音sp10.wav受到輸入信噪比為0 dB的非平穩街道噪聲干擾時,分別使用改進的IMCRA算法、基于CNN的算法和本文算法后得到的增強語音時域波形圖。可以看出,純凈語音受到噪聲干擾后,出現了許多毛刺,通過三種語音增強算法后,波形都有明顯改善,但是采用本文算法得到的波形和純凈語音波形最接近,說明本文算法的去噪效果最好。相比本文算法,改進的IMCRA算法和基于CNN的算法在去噪過程中引入了失真,去除了部分有用信息,而且在末尾階段還殘留了部分噪聲,使語音質量和可懂度受到影響。通過增強語音時域波形圖對比,進一步說明了本文算法對語音的質量和可懂度均有所提高。

(a) 純凈語音波形

(b) 帶噪語音波形

(c) 改進的IMCRA算法語音波形

(d) 基于CNN算法語音波形

(e) 本文算法語音波形圖4 純凈語音、帶噪語音和增強語音時域波形圖
傳統的語音增強算法主要對語音質量進行改善,但是在改善質量的同時引入了失真,使語音可懂度受到影響,為了能提高語音的質量和可懂度,本文提出基于SNRESI信道選擇的改進IMCRA語音增強算法。該算法首先利用基于統計模型的方法結合估計的噪聲功率譜對帶噪語音進行降噪,然后再根據SNRESI準則保留衰減失真的有用信道,最終對通過有用信道的信號進行合成得到增強的語音信號。本文對比分析了在不同信噪比、不同噪聲環境下采用不同語音增強算法后得到的SIG、BAK、OVL評分和分段信噪比SNRseg、PESQ得分,結果表明本文算法在語音增強方面有更好的效果,進一步提高了語音的質量和可懂度。