周儼
【摘要】本論文研究的主要內(nèi)容就是基于Matlab軟件仿真設(shè)計(jì)一個(gè)數(shù)字濾波器,將摻雜在語音信號(hào)中的高頻噪音消除,在此將分析消除高頻噪音前后語音信號(hào)的時(shí)域及頻域特性,對(duì)比分析即可驗(yàn)證濾波前后特性差別。
【關(guān)鍵詞】Matlab;窗函數(shù)法;FIR數(shù)字濾波器
一、引言
1、課題研究目的
語音是人類獲取知識(shí)和各種各樣信息的重要手段和最初來源,人類離不開自然界中各種不同的語音,但在獲取語音的過程中,將不可避免的會(huì)受到外界環(huán)境的干擾和影響,如各種機(jī)器的轟鳴聲或者自然界太多的電磁噪聲干擾等這些不可避免的有害噪聲信號(hào)都會(huì)附加摻雜在語音信號(hào)中,這樣獲取的語音信號(hào)將不再是單純的語音,摻雜的噪聲不但降低了語音質(zhì)量和語音的可懂度,嚴(yán)重時(shí)將導(dǎo)致不可預(yù)知的不良效果。
語音信號(hào)處理的好壞將影響并導(dǎo)致語音信號(hào)的好壞,只有通過將這些語音信號(hào)進(jìn)行一系列的的數(shù)字處理,才能將那些非必要的噪聲雜波妥善濾除,得到純凈的單純的語音信號(hào)?,F(xiàn)在社會(huì)衍生了很多現(xiàn)代的語音通信方式,手機(jī)通話、QQ或MSN等這些語音聊天軟件以及語音小說等,涉及語音的方方面面已經(jīng)存在于我們生活中的大部分,因此語音信號(hào)去噪處理是具有現(xiàn)實(shí)意義的研究課程。
2、MATLAB軟件設(shè)計(jì)平臺(tái)簡介
Matlab是MATrix和LABoratory的縮寫,是由Mathworks公司開發(fā)的一套用于科學(xué)工程計(jì)算的可視化高性能軟件,是一種交互式的以矩陣為基本數(shù)據(jù)結(jié)構(gòu)的系統(tǒng),應(yīng)用廣泛。
其主要特點(diǎn)如下:
(1)程序的可移植性良好應(yīng)用于其他程序。
(2)程序限制寬泛,程序設(shè)計(jì)自由。有大量已經(jīng)系統(tǒng)定義的函數(shù)可直接應(yīng)用,并且能夠用戶自定義函數(shù)。
(3)語言簡潔,使用靈活方便,庫函數(shù)相當(dāng)豐富。
(4)源程序向大眾開放。用戶可靈活的對(duì)源文件進(jìn)行修改以及加入自己的設(shè)計(jì)語音構(gòu)成新的工具箱。
(5)最后MATLAB的一個(gè)重要特點(diǎn)是功能強(qiáng)大的工具箱。MATLAB包含兩個(gè)重要的部分:核心部分和各種可選的工具箱。
二、原始語音信號(hào)采集與處理
1、課題設(shè)計(jì)步驟及流程圖
本課題設(shè)計(jì)主要是針對(duì)一段原始語音信號(hào),加入設(shè)計(jì)噪聲后,用窗函數(shù)法設(shè)計(jì)出的FIR濾波器對(duì)加入噪聲后的語音信號(hào)進(jìn)行濾波去噪處理,并且分析對(duì)比前后時(shí)域和頻域波形。課題的設(shè)計(jì)流程圖如下圖2.1所示。
2、語音信號(hào)處理
(1)語音信號(hào)的采集
將話筒輸入計(jì)算機(jī)的語音輸入插口上,啟動(dòng)錄音機(jī),要求為8000HZ,8位單聲道的音頻格式,如下圖2.2所示,按下錄音按鈕,接著對(duì)話筒一段話,說完后停止錄音,屏幕左側(cè)將顯示所錄聲音的長度。點(diǎn)擊放音按鈕,可以實(shí)現(xiàn)所錄音的重現(xiàn)。以文件名“1”保存入C:\ MATLAB \ work中。
(2)語音信號(hào)的時(shí)域頻譜分析
Matlab軟件平臺(tái)下,利用wavread函數(shù)對(duì)語音信號(hào)進(jìn)行采樣,采集出原始信號(hào)波形與頻譜,[y,fs,bits]=wavread(‘Blip,[N1 N2]),用于讀取語音,采樣值放在向量y中,fs表示采樣頻率(Hz),bits表示采樣位數(shù)。[N1 N2]表示讀取從N1點(diǎn)到N2點(diǎn)的值(若只有一個(gè)N的點(diǎn)則表示讀取前N點(diǎn)的采樣值)。
其程序如下:
[y,F(xiàn)s,bits]=wavread(‘1.wav);
y=y(:,1);sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel(‘Frequency(Hz));
t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel(‘Time(s))。
得到原始語音信號(hào)時(shí)域波形如下圖2.3所示,頻域幅度譜如下圖2.4所示。從圖中可以看出語音信號(hào)有兩個(gè)特點(diǎn):在時(shí)域內(nèi)語音信號(hào)隨著時(shí)間的延續(xù)而緩慢變化,但在一較短時(shí)間內(nèi),語音信號(hào)基本保持穩(wěn)定;在頻域內(nèi)語音信號(hào)的頻譜量主要集中在300~3400Hz的范圍內(nèi),利用這個(gè)特點(diǎn),可以利用一個(gè)帶通濾波器將此范圍內(nèi)的語音信號(hào)頻率分量取出,然后按8000Hz的采樣頻率對(duì)語音信號(hào)進(jìn)行采樣,就可以取得離散的語音信號(hào)。
3、語音信號(hào)加噪與頻譜分析
利用MATLAB程序產(chǎn)生3.8kHz的余弦信號(hào)噪聲加入到語音信號(hào)中,模仿語音信號(hào)被污染,并對(duì)其頻譜分析。其主要程序如下:
fs=8000;
x1=wavread(‘1.wav);
t=(0:length(x1)-1)/8000;
f=fs*(0:1023)/2048;
Au=0.05;
d=[Au*cos(2*pi*3800*t)];%噪聲為3.8kHz的余弦信號(hào)。
x2=x1+d;
y1=fft(x1,2048);
y2=fft(x2,2048);
figure(1)。
運(yùn)行程序后得到加噪后的語言信號(hào)波形如下圖2.5所示。
從上圖可以看出,加入3.8KHz的噪聲信號(hào)后,在時(shí)域圖上與原有信號(hào)的時(shí)域圖有明顯差異,在幅度“0”位置處附近多出了高頻成分,使加噪后的語音信號(hào)顯得更加緊湊。
plot(t,x2);
xlabel(‘time(s));
ylabel(‘幅度);
figure(2);
subplot(2,1,1);
plot(f,abs(y1(1:1024)));
xlabel(‘Hz);ylabel(‘幅度);
subplot(2,1,2);
plot(f,abs(y2(1:1024)));
xlabel(‘Hz);ylabel(‘幅度);
sound(x2,fs,bits)。
運(yùn)行程序后得到原始語音信號(hào)和加噪后的語言信號(hào)的頻譜如下圖2.6所示。
從上圖對(duì)比可以看出,加噪后的語音信號(hào)表現(xiàn)在頻譜圖上在3.8KHz的位置多出一個(gè)高頻脈沖成分,表現(xiàn)在回放語音上能聽到很刺耳很不舒適的噪音,原有信號(hào)聽著比較模糊。
三、FIR數(shù)字濾波器的設(shè)計(jì)
1、常用窗函數(shù)介紹
常用的窗函數(shù)有矩形窗(Rectangle Window)、三角窗(Bartlett Windows)、漢寧窗(Hanning),又稱為升余弦窗、海明窗(Hamming),又稱為改進(jìn)的升余弦窗,除了以上幾種常用窗函數(shù)以外,尚有布拉克曼(Blackman)窗、凱塞(kaiser)窗等。
對(duì)于選擇何種窗函數(shù),應(yīng)充分考慮被處理信號(hào)的性質(zhì)與處理要求等。如果僅要求準(zhǔn)確分辨出主瓣頻率,而不考慮這種幅值精度,則可選用主瓣寬度較窄從而便于分辨的矩形窗,例如探測(cè)物體的自然震動(dòng)頻率等;如果分析的信號(hào)是窄帶信號(hào),而且具有較強(qiáng)的干擾噪聲信號(hào)出現(xiàn)的話,則應(yīng)當(dāng)選用旁瓣幅度較小的窗函數(shù),如漢寧窗、三角窗等。
2、FIR數(shù)字濾波器概述
FIR(Finite Impulse Response)濾波器又叫有限長單位沖激響應(yīng)濾波器,是數(shù)字信號(hào)處理系統(tǒng)中最基本的元件,它可以在保證任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,同時(shí)其單位抽樣響應(yīng)是有限長的,因而濾波器是穩(wěn)定的系統(tǒng)。
有限脈沖響應(yīng)濾波器的優(yōu)點(diǎn):
(1)脈沖響應(yīng)為有限長:造成當(dāng)輸入數(shù)位信號(hào)為有限長的時(shí)候,輸出數(shù)位信號(hào)亦為有限序列長度。
(2)比無限脈沖響應(yīng)濾波器較容易實(shí)現(xiàn)到最佳狀態(tài)。
(3)線性相位造成h(n)是偶對(duì)稱或奇對(duì)稱且有限長。
(4)肯定是穩(wěn)定的:因?yàn)閆轉(zhuǎn)換后所有的極點(diǎn)都在單位圓內(nèi)。
3、FIR濾波器的窗函數(shù)設(shè)計(jì)
FIR濾波器設(shè)計(jì)問題在于尋求一系統(tǒng)函數(shù),使其頻率響應(yīng)逼近濾波器要求的理想頻率響應(yīng),其對(duì)應(yīng)的單位脈沖響應(yīng)為。
用窗函數(shù)設(shè)計(jì)FIR濾波器的的設(shè)計(jì)思想:從時(shí)域出發(fā),設(shè)計(jì)逼近理想。設(shè)理想濾波器的單位脈沖響應(yīng)為。例如低通線性相位FIR濾波器的理想頻率響應(yīng)與單位脈沖響應(yīng)分別如下:
一般是無限長的,且是非因果的,不能直接作為FIR濾波器的單位脈沖響應(yīng)。要想得到一個(gè)因果的有限長的濾波器,最直接的方法是截?cái)?,即截取為有限長的因果序列,并用合適的窗函數(shù)進(jìn)行加權(quán)作為FIR濾波器的單位脈沖響應(yīng)。按照線性相位濾波器的要求,必須的偶對(duì)稱的。對(duì)稱中心應(yīng)該等于濾波器的時(shí)延常數(shù),即:
下面著重介紹用窗函數(shù)法設(shè)計(jì)FIR濾波器的步驟如下:
(1)根據(jù)對(duì)阻帶衰減及過渡帶的指標(biāo)要求,選擇串窗數(shù)類型(矩形窗、三角窗、漢寧窗、哈明窗、凱塞窗等),并估計(jì)窗口長度N。先按照阻帶衰減選擇窗函數(shù)類型。原則是在保證阻帶衰減滿足要求的情況下,盡量選擇主瓣的窗函數(shù)。然后根據(jù)過渡帶寬度估計(jì)窗口長度N,待求濾波器的過渡帶寬度Bt近似等于窗函數(shù)主瓣寬度,且近似于窗口長度N成反比,N=A/Bt,A取決于窗口類型。
(2)構(gòu)造希望逼近的頻率響應(yīng)函數(shù)Hd(ejw)。
所謂的“標(biāo)準(zhǔn)窗函數(shù)法”,就是選擇Hd(ejw)為線性相位理想濾波器,如本論文的低通濾波器,該Hdg(w)應(yīng)滿足:
(3)計(jì)算hd(n)。如果給出待求濾波器的截止頻率響應(yīng)函數(shù)為Hd(ejw),那么單位脈沖響應(yīng)用下式求出:
(4)加窗得到設(shè)計(jì)結(jié)果:,驗(yàn)證技術(shù)指標(biāo)是否滿足設(shè)計(jì)要求。
針對(duì)該課題用窗函數(shù)法設(shè)計(jì)線性相位FIR數(shù)字濾波器的參數(shù)如下:
通帶截止頻率=0.2π
過渡帶寬度<0.4
阻帶衰減As>40 dB
具體計(jì)算如下:
(1)由給定的指標(biāo)確定窗函數(shù)和長度N
由于阻帶衰減As>40dB,漢明窗和漢寧窗都滿足要求,若再考慮從濾波器節(jié)數(shù)最小的原則出發(fā),這里選用漢寧窗。
也可取N=21。
(2)確定時(shí)延值 。
(3)求理想的單位脈沖響應(yīng)。
(4)求濾波器的單位取樣響應(yīng)h(n)。
4、濾波器的編程實(shí)現(xiàn)
按此要求設(shè)計(jì)的FIR數(shù)字低通濾波器,用MATLAB的程序?qū)崿F(xiàn)如下:
deltw = 0.4 * pi;
Wc = 0.2 * pi;As = 40;
N=ceil( 8 * pi/deltw)+1;
win=hanning(N);
h=fir1(N-1,Wc/pi,win);
omega=linspace(0,pi,512);
mag=freqz(h,[1],omega);
magdb=20*log10(abs(mag));
plot(omega/pi,magdb);
axis([0 1-100 0]);
grid;
xlabel(歸一化頻率);ylabel(幅度/dB)。
此低通濾波器圖像如下圖3.1所示。
圖3.1:低通濾波器的歸一化頻率
5、用濾波器對(duì)加噪語音信號(hào)進(jìn)行濾波
上一節(jié)利用窗函數(shù)法按照論文要求設(shè)計(jì)了FIR低通濾波器并繪圖,觀察所設(shè)計(jì)的濾波器是否能夠?qū)Σ杉囊徊糠终Z音信號(hào)進(jìn)行相關(guān)處理,并將濾波前后的時(shí)域波形進(jìn)行相比較,且對(duì)其快速傅里葉變換,即X=fft(signal),其目的是對(duì)比前后的頻域頻譜波形,分析所設(shè)計(jì)的濾波器能否達(dá)到設(shè)計(jì)要求。在Matlab程序設(shè)計(jì)中,F(xiàn)IR濾波器則是利用函數(shù)fftfilt對(duì)語音信號(hào)進(jìn)行濾波。程序如下:
[y,fs,nbits]=wavread(‘1.wav);
N=length(y);
Y=fft(y,N);
sound(y);
figure(4);plot(y);
figure(5);plot(abs(Y));
Fp=1200;
Fs=1100;
Ft=8000;
As=20;
Ap=1;
wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);fs=2*Ft*tan(ws/2);
[n,wn]=buttord(wp,ws,Ap,As, ‘s);
[b,a]=butter(n,wn, ‘s);
[num,den]=bilinear(b,a,1);
[h,w]=freqz(num,den);
figure(2)
d=[Au*cos(2*pi*3800*t)];
x2=x1+d;
y1=fft(x1,2048);
y2=fft(x2,2048);
figure(3)
plot(w*8000*0.5/pi,abs(h));z=filter(num,den,y);
sound(z);
m=z。
figure(1)
subplot(2,2,3);plot(abs(m), ‘r);
grid;
subplot(2,2,4);plot(z, ‘b);
grid;subplot(2,2,2);
plot(y,‘b);
grid;subplot(2,2,1);
plot(abs(Y),‘r);
grid。
圖3.2 頻率特性曲線
圖3.3:濾波前后語音信號(hào)頻譜的比較
圖3.4:濾波前后的信號(hào)波形比較
由圖3.2頻率特性曲線可得知,該低通濾波器濾除1200Hz以上的高頻信號(hào),保留0-1200Hz以內(nèi)的低頻語音信號(hào),符合設(shè)計(jì)濾除高頻噪音保留低頻原始語音信號(hào)的特點(diǎn)。
由上圖3.3可知,摻有高頻噪音的信號(hào)經(jīng)過所設(shè)計(jì)的低通濾波器之后,保留了原始的低頻語音信號(hào),濾除了摻在其中的高頻信號(hào),使語音信號(hào)聽著沒有那么的尖銳刺耳了,這說明已經(jīng)達(dá)到了濾除高頻噪音信號(hào)的目標(biāo)。
分析圖3.4濾波前后的信號(hào)波形比較得知,濾波前后語音信號(hào)的波形發(fā)生了明顯改變,濾波前后的信號(hào)密度明顯減小,這是濾除了高頻噪音保留了低頻語音信號(hào)的結(jié)果。
6、回放語音信號(hào)
語音信號(hào)經(jīng)過FIR濾波器的濾除噪聲的處理,在Matlab中,函數(shù)sound可以對(duì)聲音進(jìn)行回放。其調(diào)用格式:
Sound(x,fs,bits);
可以聽出來濾波前后的聲音所發(fā)生的變化,而且聲音變得沒有加噪時(shí)那么刺耳了,比原始語音更加地平滑。用漢寧窗設(shè)計(jì)FIR濾波器濾掉了在語音中加入的高頻的噪聲,而且也把原始語音的很小的一部分也濾掉了,余下的語音信號(hào)全都是低頻語音信號(hào),所以回放語音的時(shí)候聽起來比以前的更加平滑,說明設(shè)計(jì)的低通濾波器是成功的。
四、結(jié)論
人們?cè)讷@取語音信號(hào)的過程中,不可避免的會(huì)受到外界環(huán)境的干擾和影響,這些干擾和影響不但降低了語音質(zhì)量和語音的可懂度,嚴(yán)重時(shí)將導(dǎo)致不可預(yù)知的不良效果。當(dāng)這些語音信號(hào)經(jīng)過數(shù)字處理,用濾波器把噪聲雜波濾除,便得到純凈的語音信號(hào)。