選自:http://www.cnblogs.com/chunge2050/p/3159158.html
本課題隸屬於學校的創新性課題研究項目。2012年就已經做完了,今天一並拿來發表。
目錄:
--基於譜減法的語音信號增強算法..................................................................... 1
一:語音增強技術概述........................................................................................ 3
三:語音信號的相關特性.................................................................................... 3
1. 1 語音信號具有短時平穩性.............................................................. 3
1.2.語音信號可以分為濁音和清音....................................................... 3
1.3.語音信號可以利用統計分析特征描述........................................... 4
3.1周期性噪聲....................................................................................... 4
3.2脈沖噪聲........................................................................................... 5
3.3寬帶噪聲........................................................................................... 5
3.4同聲道語音干擾............................................................................... 5
3.5傳輸噪聲........................................................................................... 5
四:國內外有關抗噪聲技術的解決方案............................................................ 5
(1) 基於譜減法的語音增強................................................................... 6
(2) 自適應濾波法的語音增強............................................................... 6
(3) 短時對數譜的MMSE語音增強...................................................... 6
2 尋找穩健的語音特征作為特征參數......................................................... 6
3 基於模型參數自適應的噪聲補償算法..................................................... 6
五:語音增強算法的三種具體算法分析與比較................................................ 6
(1) 譜減法算法的理論分析................................................................... 6
(2) 通過語音增強技術改善語音質量的過程....................................... 7
(3) 譜減法的流程圖............................................................................... 7
(4)譜減法原理圖.................................................................................... 8
2:自適應噪聲抵消法.................................................................................. 9
(1) 自適應濾波器原理........................................................................... 9
(2) 結構框圖......................................................................................... 10
3:短時對數譜的MMSE語音增強算法................................................... 11
六:實驗環境(matlab)簡介........................................................................... 13
七:算法的實現及仿真結果.............................................................................. 14
一:語音增強技術概述
在通信過程中語音受到來自周圍環境、傳輸媒介引入的噪聲,使接收到的語音信號並非純凈的原始語音信號,而是受噪聲污染的帶噪語音信號。這里的“噪音”定義為所需語音信號以外的所有干擾信號。
干擾信號可以是窄帶的或寬帶的、白噪聲的或有色噪聲的、聲學的或電學的、加性的或乘性的,甚至可以是其它無關的語音。由噪聲導致的語音質量的下降會使許多語音處理系統的性能急劇惡化。采用語音增強技術進行預處理,可有效地改善系統性能。
二:語音增強的目的
對收聽人而言主要是改善語音質量,提高語音可懂度,減少疲勞感;對語音處理系統(識別器、聲碼器、手機)而言是提高系統的識別率和抗干擾能力。
三:語音信號的相關特性
語音增強與語音信號處理理論有關,而且涉及到人的聽覺感知和語音學。噪聲來源眾多,隨應用場合不同而特性各異,因此難以找到一種通用的語音增強算法可以適用於各種噪聲環境,必須針對不同環境下的噪聲采取不同的語音增強策略。因此,要進行語音增強首先要了解語音特性、人耳感知特性和噪聲特性。
1 語音特性
1. 1 語音信號具有短時平穩性
聲道形狀有相對穩定性,在一段時間內(10ms~30ms),人的聲帶和聲道形狀是相對穩定的,可認為其特征是不變的,因而語音的短時譜具有相對穩定性,在語音分析中可以把語音信號分為若干分析幀,每一幀的語音可以認為是准穩定的。語音增強可以利用這種短時平穩性。
1.2.語音信號可以分為濁音和清音
語音可以分為周期性的濁音和非周期性的清音。在語音增強中,可以利用濁音的周期性特征,采用梳狀濾波器提取語音分量或者抑制非語音信號,而清音則難以與寬帶噪聲區分。
1.3.語音信號可以利用統計分析特征描述
作為一個隨機過程,語音信號可以利用許多統計分析特征進行分析。語音的短時譜幅度統計特征是時變的,只有當分析幀長趨於無窮大時,才能近似具有高斯分布。在高斯模型的假設中,可以認為傅里葉展開系數是獨立的高斯隨機變量,均值為零,而方差是時變的。在有限幀長時這種高斯模型只是一種近似的描述,可以作為分析的前提在寬帶噪聲污染的帶噪語音增強中應用。
2 人耳感知特性
人耳對語音的感知主要是通過語音信號頻譜分量幅度獲取的,對各分量相位則不敏感,對頻率高低的感受近似與該頻率的對數值成正比。人耳具有掩蔽效應,人耳除了可以感受聲音的強度、音調、音色和空間方位外,還可以在兩人以上的講話環境中分辨出所需要的聲音,這種分辨能力是人體內部語音理解機制具有的一種感知能力。人類的這種分離語音的能力與人的雙耳輸入效應有關,稱為“雞尾酒會效應”。語音增強的最終效果度量是人耳的主觀感覺,所以在語音增強中可以利用人耳感知特性來減少運算代價。
3 噪聲特性
根據與輸入語音信號的關系,噪聲可分為加性噪聲和非加性噪聲兩類。對某些非加性噪聲而言,可以通過一定的變換轉換成加性噪聲。語音處理中的加性噪聲大體上可以分為周期性噪聲、脈沖噪聲、寬帶噪聲和同聲道其他語音的干擾等。
3.1周期性噪聲
周期性噪聲主要來源於發動機等周期性運轉的機械,電氣干擾也會引起周期性噪聲。特點是頻譜上有許多離散的線譜。實際信號受多種因素的影響,線譜分量通常轉變為窄帶譜結構,而且通常這些窄帶譜都是時變的,位置也不固定。必須采用自適應濾波的方法才能有效地區分這些噪聲分量。
3.2脈沖噪聲
脈沖噪聲來源於爆炸、撞擊、放電及突發性干擾等。特征是時間上的寬度很窄。在時域消除脈沖噪聲過程如下:根據帶噪語音信號幅度的平均值確定閾值。當信號超出這一閾值時判別為脈沖噪聲。然后對信號進行適當的衰減,就可完全消除噪聲分量,也可以使用內插方法將脈沖噪聲在時域上進行平滑。
3.3寬帶噪聲
寬帶噪聲來源很多,熱噪聲、氣流噪聲及各種隨機噪聲源、量化噪聲都可以視為寬帶噪聲。寬帶噪聲與語音信號在時域和頻域上基本上重疊,只有在無話期間,噪聲分量才單獨存在。因此消除這種噪聲比較困難。對於平穩的寬帶噪聲,通常可以認為是白色高斯噪聲。
3.4同聲道語音干擾
干擾語音信號和待傳語音信號同時在一個信道中傳輸所造成的語音干擾稱為同聲道語音干擾。區別有用語音和干擾語音的基本方法是利用它們的基音差別。考慮到一般情況下兩種語音的基音不同,也不成整數倍,這樣可以用梳狀濾波器提取基音和各次諧波,再恢復出有用語音信號
3.5傳輸噪聲
這是傳輸系統的電路噪聲。處理這種噪聲可以采用同態處理的方法,把非加性噪聲變換為加性噪聲來處理。
四:國內外有關抗噪聲技術的解決方案
目前國內外有關抗噪聲技術的的研究成果的三類解決方法:
1 語音增強算法
采用語音增強算法,提高語音識別系統前端預處理的抗噪聲能力,提高輸入信號的信噪比。
(1) 基於譜減法的語音增強
(2) 自適應濾波法的語音增強
(3) 短時對數譜的MMSE語音增強
2 尋找穩健的語音特征作為特征參數
尋找穩健的語音特征作為特征參數,實驗證明,這類參數對寬帶語音具有較好的抗噪性;
3 基於模型參數自適應的噪聲補償算法
五:語音增強算法的三種具體算法分析與比較
1:譜減法
(1) 譜減法算法的理論分析
譜減法是利用噪聲的統計平穩性以及加性噪聲與語音不相關的特點而提出的一種語音增強方法。這種方法沒有使用參考噪聲源,但它假設噪聲是統計平穩的,即有語音期間噪聲的幅度譜的期望值與語音間隙噪聲的幅度譜的期望值相等。用無語音間隙測量計算得到的噪聲頻譜的估計值取代有語音噪聲的頻譜,與含噪聲語音頻譜相減,得到語音頻譜的估計值。當上述差值得到的負的幅度值時,將其置零。由於人耳對語音的感知主要是通過語音信號中各頻譜分量幅度獲得的,對各分量的相位不敏感。因此,此類語音增強方法將估計的對象放在短時譜幅度上。
假設帶噪信號為:
y(n)=s(n)+d(n),0<=n<=N-1
其中s(n)為純凈語音,d(n)為平穩加性噪聲,y(n)通常需要加窗處理來消除分幀是帶來的階段效應,這里為方面依然使用y(n)表示加窗處理后的帶噪信號。由於實際的分析幀長有限,傅里葉系數之間存在着一定的相關性。假設s(n)滿足高斯分布,其傅里葉變換相當於多個高斯樣本的加權和,仍然可以認為滿足高斯分布,均值為0,方差可以通過無語音期間的噪聲分析得到。基於短時譜幅度估計的語音增強就是利用已知的噪聲功率譜信息,從中估計出。由於人耳對相位不敏感,為此只要估計出Sk,然后利用帶噪語音的相位,進行傅里葉反變換就可得到增強的語音。基於語音短時譜估計方法的一般原理如下所示。根據實現估計的方法不同,可以分為譜減法,維納濾波法和最小均方誤差
譜減法在頻域將帶噪語音的功率譜減去噪聲的功率譜得到純凈語音功率譜估計,開方后就得到語音幅度譜估計,用帶噪語音的相位來近似純凈語音的相位,再采用反傅里葉變換回復時域信號。它的有點是比較簡單,只需要進行反傅里葉變換,而且實時實現較容易。但譜減法適用的信噪比范圍較窄,在信噪比較低時對語音的可懂度損傷最大,這是因為信噪比主要代表了由濁音決定的大信號能量,而語音可懂度主要取決於元音和相對較小的代表輔音的信號。所以,實際應用時除了要降低噪聲外,還要兼顧語音的可懂度和自然度。另外,由於頻譜直接相減會使增強后的語言產生“音樂噪聲”,它具有一定的節奏性,聽上去類似音樂聲,由此而得名。
(2) 通過語音增強技術改善語音質量的過程
(3) 譜減法的流程圖
利用噪聲的統計平穩性以及加性噪聲與語音不相關的特點而提出的一種語音增強方法。沒有使用參考噪聲源,但它假設噪聲是統計平穩的,即有語音期間噪聲幅度譜的期望值與無語音間隙噪聲的幅度譜的期望值相等。用無語音間隙測量計算得到的噪聲頻譜的估計值取代有語音期間噪聲的頻譜,與含噪語音頻譜相減,得到語音頻譜的估計值。此類語音增強方法將估計的對象放在短時譜幅度上。
(4)譜減法原理圖
譜相減的物理意義:相當於對帶噪語音的每一個頻譜分量乘以一個系數。信噪比高時,含有語音的可能性大,衰減系數小。反之,則認為含有語音的可能性小,衰減系數大。
譜減法在頻域將帶噪語音的功率譜減去噪聲的功率譜得到純凈語音功率譜估計,開方后就得到語音幅度譜估計,用帶噪語音的相位來近似純凈語音的相位,再采用反傅里葉變換恢復時域信號。
譜減法優點:比較簡單,只需要進行正反傅立葉變換,而且實時實現較容易。
譜減法缺點:適用的信噪比范圍較窄,在信噪比較低時對語音的可懂度損傷較大。所以實際應用時除了要降低噪聲外,還要兼顧語音的可懂度和自然度。
由於頻譜直接相減會使增強后的語音產生“音樂噪聲”,它具有一定的節奏性,聽上去類似音樂聲,由此而得名。
2:自適應噪聲抵消法
設帶噪語音輸入為y(n)=s(n)+d(n), s(n)為語音信號,d(n)為未知噪聲信號,r(n)參考噪聲輸入,也即自適應濾波器的輸入,v(n)是該濾波器的輸出。 r(n)與s(n)無關,而與d(n)相關。
(1) 自適應濾波器原理
在輸入過程的統計特性未知或是輸入過程的統計特性變化時,能夠調整自己的參數,以滿足某種最佳准則的要求。自適應濾波的目的就是通過對 r(n)的濾波,使輸出的噪聲估值v(n)盡可能接近帶噪語音中的d(n),然后從帶噪語音中直接減去 v(n) ,達到語音增強的目的。
自適應濾波器通常采用FIR濾波器,系數采用最小均方誤差(MMSE)准則來迭代估計。判斷標准是使誤差信號e(n)能量最小:
其中,wk是濾波器系數,N是濾波器抽頭數。MMSE准則要求噪聲和語音相互獨立,這時,誤差信號e(n)能量最小,可保證v(n)與d(n)最接近。
自適應濾波器
自適應濾波器是能夠根據輸入信號自動調整性能進行數字信號處理的數字濾波器。作為對比,非自適應濾波器有靜態的濾波器系數,這些靜態系數一起組成傳遞函數。
對於一些應用來說,由於事先並不知道所需要進行操作的參數,例如一些噪聲信號的特性,所以要求使用自適應的系數進行處理。在這種情況下,通常使用自適應濾波器,自適應濾波器使用反饋來調整濾波器系數以及頻率響應。
總的來說,自適應的過程涉及到將價值函數用於確定如何更改濾波器系數從而減小下一次迭代過程成本的算法。價值函數是濾波器最佳性能的判斷准則,比如減小輸入信號中的噪聲成分的能力。
隨着數字信號處理器性能的增強,自適應濾波器的應用越來越常見,時至今日它們已經廣泛地用於手機以及其它通信設備、數碼錄像機和數碼照相機以及醫療監測設備中。
(2) 結構框圖
下面圖示的框圖是最小均方濾波器(LMS)和遞歸最小平方(en:Recursive least squares filter,RLS)這些特殊自適應濾波器實現的基礎。框圖的理論基礎是可變濾波器能夠得到所要信號的估計。
在開始討論結構框圖之前,我們做以下假設:
可變濾波器有有限脈沖響應結構,這樣結構的脈沖響應等於濾波器系數。 階濾波器的系數定義為
誤差信號或者叫作代價函數,是所要信號與估計信號之差
可變濾波器通過將輸入信號與脈沖響應作卷積估計所要信號,用向量表示為
其中
是輸入信號向量。另外,可變濾波器每次都會馬上改變濾波器系數
其中 是濾波器系數的校正因子。自適應算法根據輸入信號與誤差信號生成這個校正因子,LMS 和 RLS 是兩種不同的系數更新算法。
3:短時對數譜的MMSE語音增強算法
分別表示帶噪語音 y(t) 、信號 x(t) 和噪聲d(t) 進行FFT變換后的第k個頻譜分量。語音增強的任務就是利用已知的噪聲功率譜信息,從 y(t) 中估計出x(t) ,即由{Y0 , Y1 , L }估計出Xk 。這里僅對頻譜幅度的對數感興趣,而認為相位對語音質量影響不大,帶噪語音的短時譜可用快速傅里葉變換一幀的計算得到,其相位提取后存儲起來,然后對純凈語音的短時對數譜作最小均方誤差估計。處理后的語音由估計得到的幅度譜和相位重建。因而估值可以簡化為估計Ak 。Ak的估計式可寫成
六:實驗環境(matlab)簡介
MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,和Mathematica、Maple並稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多,並且mathwork也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++ ,JAVA的支持。可以直接調用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以后調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶可以直接進行下載就可以用。
要求利用MATLAB來讀入(采集)語音信號,將它賦值給某一向量。再將該向量看作一個普通的信號,對其進行FFT變換實現頻譜分析,再依據實際情況對它進行濾波。然后我們還可以通過sound命令來對語音信號進行回放,以便在聽覺上來感受聲音的變化。
七:算法的實現及仿真結果
該算法是利用Matlab進行仿真的。通過對時域波形的觀察,表明MMSE的語音增強算法能夠有效地濾除背景噪聲,在用了有聲/無聲判斷后,“音樂噪聲”也大幅度降低。
八:附件
Matlab代碼
clear all
%-----------------讀入語音文件------------------------
[speech,fs,nbits]=wavread('chunge.wav');
%------------------讀入數據-----------------------------
%------------------參數定義-----------------------------
winsize=256; %窗長
n=0.04; %噪聲水平
size=length(speech); %語音長度
numofwin=floor(size/winsize); %幀數
ham=hamming(winsize)'; %產生漢明窗
hanwin=zeros(1,size); %定義漢明窗的長度
enhanced=zeros(1,size); %定於增強語音的長度
clean=zeros(1,winsize);
x=speech'+n*randn(1,size); %產生帶躁信號
noisy=n* randn(1,winsize);
N=fft(noisy); %對噪聲傅里葉變換
nmag=abs(N); %噪聲功率譜
%-------------------分幀-------------------------
for q=1:2*numofwin-1
frame=x(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2);
%-------------------對帶躁語音幀間重疊一半取值--------------------
hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=...
hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham;
%-------------------加窗----------------------------------
y=fft(frame.*ham); %對帶躁語音傅里葉變換
mag=abs(y); %噪聲語音功率譜
phase=angle(y); %帶躁語音相位
%-------------------幅度譜減---------------------------------------------------
for i=1:winsize
if mag(i)-nmag*(i)>0
clean(i)=mag(i)-nmag(i);
else
clean(i)=0;
end
end
%-----------------在頻域中重新合成語音---------------------------------------------
spectral=clean.*exp(1i*phase);
%-----------------反傅里葉變換並重疊相加----------------------------------------
enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2) =...
enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(spectral))
end
%------------------除去漢明窗引起的增益--------------------------------------
for i=1:size
if hanwin(i)==0
enhanced(i)=0
else
enhanced(i)=enhanced(i)/hanwin(i);
end
end
%計算增強前后的信噪比
%SNR1=10*log10(var(speech')/var(noisy));
%加躁語音信噪比
%SNR2=10*log10(var(speech')/var(enhanced-speech'));
%增強語音信噪比
wavwrite(x,fs,nbits,'noisy.wav');
%輸出帶躁信號
wavwrite(enhanced,fs,nbits,'enhanced.wav')
%輸出增強信號
%---------------畫波形
figure(1);
subplot(3,1,1);
plot(speech');
title('yuanshiyuyinboxing');
xlabel('yangdianshu');
ylabel('fudu');
axis([0 2.5*10^4-0.3 0.3]);
subplot(3,1,2);
plot(x);
title('jiazaoyuyinboxing')
xlabel('yangdianshu');
ylabel('fudu');
axis([0 2.5*10^4-0.3 0.3]);
subplot(3,1,3);
plot(enhanced);
title('zengqiangyuyinboxing');
xlabel('yangdianshu');
ylabel('fudu');
axis([0 2.5*10^4-0.3 0.3]);
九:參考文獻
張雪英著《數字語音處理及matlab仿真》 電子工業出版社 2010
Steven W Smith 《實用數字信號處理-從原理到應用》人民郵電出版社 2007
A V奧本海姆 《離散時間信號處理》西安交通大學出版社 1999