張冰
(酒泉職業(yè)技術(shù)學(xué)院,甘肅酒泉 735000)
基于計算機仿真的語音增強算法研究
張冰
(酒泉職業(yè)技術(shù)學(xué)院,甘肅酒泉 735000)
在語音通信過程中不可避免地會受到來自周圍環(huán)境、傳輸媒介引入的噪聲、通信設(shè)備內(nèi)部電噪聲、乃至其它講話者的干擾。這些干擾最終將使接收者接語音收到的語音是非純凈的原始語音信號,而是受噪聲污染的帶噪語音信號。語音增強是解決噪聲污染的一種有效方法,是從帶噪語音信號中提取盡可能純凈的原始語音,本文研究的是一種基于普減法的改進語音增強算法。
語音增強 譜減法 Matlab
語音增強已發(fā)展為語音信號數(shù)字處理的一個重要分支。語音增強中的譜減法是處理寬帶噪聲的最通用技術(shù),即從帶噪語音估值中減去噪聲頻譜估值,而得到純凈語音的頻譜。寬帶噪聲通??梢约俣楦咚乖肼暫桶自肼?。它的來源很多,包括空氣流動、呼吸噪聲和一般隨機噪聲源。量化噪聲通常作為白噪聲來處理,也可以視為寬帶噪聲。由于寬帶噪聲與語音信號在時域和頻域上完全重疊,因而消除它最為困難。由于人耳對語音頻譜分量的相位不敏感,所以譜減法主要針對短時幅度譜。
2.1傳統(tǒng)譜減法
假定語音為平穩(wěn)信號,而噪聲及假定語音為平穩(wěn)信號,而噪聲和語音為加性信號且彼此不相關(guān)。此時帶噪語音信號可表示為:
,由此可得
由此可得原始語音的估計值
由式⑺可以清楚地看出譜相減的物理意義:它相當(dāng)于對帶噪語音的每一個頻譜分量乘以一個系數(shù)當(dāng)信噪比高時,含語音的可能性很大,衰減小。反之,則認為含有語音的可能性小,衰減則增大。
2.2改進的譜減法
其中,m為x的均值,σ為標準偏差。噪聲的幀功率譜隨機變化范圍很寬,在頻域中的最大、最小值之比往往達到幾個數(shù)量級,而最大值與均值之比也達6~8倍。因而,在減去噪聲譜后,會有些較大的功率譜分量的剩余部分,在頻譜上呈現(xiàn)出隨機出現(xiàn)的尖峰,在聽覺上形成殘留噪聲。這種噪聲具有一定的節(jié)奏性起伏感,所以稱之為“音樂噪聲”。
圖1 譜減法的改進形式
同時,將式(5)中的功率譜計算|*|2及|*|1/2改為|*|m和|*|1/m計算(這里m不一定為整數(shù)),可以增加靈活性。這種方法稱為功率譜修正處理。經(jīng)分析和試驗得知,當(dāng)m>2時,它具有與被減項加權(quán)處理相同的效果。
綜合上面兩種處理,譜減法改進形式的原理框圖如圖1所示。
此時式(5)修正為
引入m,n兩個參數(shù)為計算提供了很大的靈活性。當(dāng)m=2,n=1時即變?yōu)榛镜淖V減法,實際的增強試驗表明,適當(dāng)調(diào)節(jié)m、n可以獲得比傳統(tǒng)的譜減法更好的增強效果。因此實際的增強過程中,更多地使用譜減法的改進形式。
3.1傳統(tǒng)譜減法的實驗與仿真
基于MATLAB來實現(xiàn)傳統(tǒng)譜減法的仿真,讀入語音文件用wavread函數(shù)實現(xiàn),對采樣點補足幀的整數(shù)倍是方便實現(xiàn)MATLAB的矩陣計算以及最后對幀疊加進行還原處理。對每一幀獨立的含噪語音進行語音增強處理,再將每幀增強語音依次連接起來,會由于恢復(fù)的信號幀間不連續(xù),使得增強語音含有周期性的雜音,因此采用幀間重疊譜減法進行語音處理。程序中每幀信號256點,128點重疊,通過w=hamming(framelength)'實現(xiàn),經(jīng)語音增強處理后,再進行相反的處理,恢復(fù)連續(xù)的語音信號。
對帶噪語音信號進行FFT變換可以直接用fft函數(shù)實現(xiàn),在MATLAB程序中,這一部分用for循環(huán)對每幀循環(huán)實現(xiàn)。
譜相減是算法的關(guān)鍵,這部分程序代碼如下所示,其中參數(shù)m=2,n=1。因為涉及到估值,所以實際中譜相減的差值會為負。因功率譜不能為負,故可令負值為0或改變其符號,在本文的實現(xiàn)程序中令負值為0。
圖2
在對FFT變換且譜相減后的信號加上原輸入信號的相位信息后,就對信號進行IFFT變換,在MATLAB中用ifft函數(shù)實現(xiàn),即t=TT.*exp(j*angleyy); ss=ifft(t,[],2);
算法的最后要對前面的幀重疊進行相反的處理,以保持語音的連續(xù)特性。幀重疊進行相反處理的代碼如下所示:
語音增強后的信號用wavwrite函數(shù)輸出到新的wav文件中。傳統(tǒng)譜減法仿真后結(jié)果表明,噪聲信號得到了一定的抑制,但是還存在一定的具有節(jié)奏性起伏感的音樂噪聲。
3.2改進形式的譜減法的實現(xiàn)與仿真
式(8)中的m,n兩個參數(shù)為算法提供了很大的靈活性,適當(dāng)調(diào)節(jié)這兩個參數(shù),可獲得比原始相減法更好的增強效果。試驗表明,兩個可調(diào)參數(shù)m,n取不同值時,語音增強的效果是不同的:m不變,隨著n值的適當(dāng)增大,寬帶噪聲及殘余的音樂噪聲減小,信噪比大大提高,但是語音也逐漸變尖,即有較大的失真;n不變,隨著m值的適當(dāng)增大,寬帶噪聲及殘余的音樂噪聲增大,信噪比的提高減少,但是語音也逐漸自然,即有較小的失真。試聽結(jié)果表明,m=0.4,n=0.9時,較好的做到了降噪與提高語音可懂度之間的折衷,噪聲得到了適當(dāng)?shù)囊种疲^好地保持了原語音的特性。在MATLAB的實現(xiàn)上,只要在原來傳統(tǒng)譜減法的基礎(chǔ)上改動參數(shù)m,n的值即可得到改進后的效果,如圖2所示即為改進形式的譜減法仿真效果。
試驗表明,改進的譜減法消除了周期性干擾在電臺話音輸出端引起的嘯叫噪聲,除清晰度略有下降外,語音的可懂度和自然度未受損失。該方法對白噪聲干擾消噪效果更好,但當(dāng)環(huán)境惡劣,信噪比極低時,信噪比雖然提高不少,但語音的可懂度和自然度卻受到一定的損失,實際聽起來像機器人的聲音。因此,在實時實現(xiàn)時需注意運算精度、幀間重疊的實現(xiàn)和噪聲功率譜估計等問題。
基于計算機仿真的MATLAB譜相減法是一種常用的單通道語音增強經(jīng)典算法,傳統(tǒng)譜減法和它的改進形式可以歸納為一個通用的譜減法參數(shù)公式,參數(shù)m,n的取值和增強效果有著密切的關(guān)系,當(dāng)m,n取值適當(dāng),則可獲得較為理想的增強效果。譜減法有效地降低了背景噪聲,提高了信噪比。目前該普相減仿真計算方法依然存在一定的難題,但對于語音質(zhì)量的提高依然具有非常大的幫助。
[1]楊行峻,遲惠生.語音信號數(shù)字處理[M].北京:電子工業(yè)出版社, 1995,385-411.
[2]Hyoung-Gook Kim, Markus Schwab, Nicolas Moreau. Speech Enhancement of Noisy Speech Using Log-Spectral Amplitude Estimator and Harmonic Tunneling[EB/OL]. http://www.nue.tuberlin.de/ publications/papers/IWANEC2003.pdf.
[3]J.H.L. Hansen, B.Pellom. An Effective Quality Evaluation Protocol for Speech Enhancement Algorithms[EB/OL]. http://cslr. colorado.edu/rspl/PUBLICATIONS/PDFs/CP-icslp98-SpchEnhansProto-SL980917-Wcover.PDF.