语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
(4)雙線性變換法設(shè)計(jì)Butterworth濾波器
程序如下:
fs=22050;
x1=wavread('wo.wav');
t=0:1/22050:(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
Rp=1;
Rs=15;
Fs=22050;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2);? ?? ?? ?? ? %將模擬指標(biāo)轉(zhuǎn)換成數(shù)字指標(biāo)
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%選擇濾波器的最小階數(shù)
[Z,P,K]=buttap(N);? ?? ?? ?? ?? ???%創(chuàng)建butterworth模擬濾波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);? ?? ?? ? %用雙線性變換法實(shí)現(xiàn)模擬濾波器到數(shù)字濾波器的轉(zhuǎn)換
[H,W]=freqz(bz,az);? ?? ?? ?? ?? ? %繪制頻率響應(yīng)曲線
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('頻率/Hz')
ylabel('頻率響應(yīng)幅度')
title('Butterworth')
f1=filter(bz,az,x2);
figure(2)
subplot(2,1,1)
plot(t,x2)? ?? ?? ?? ?? ? %畫出濾波前的時(shí)域圖
title('濾波前的時(shí)域波形');
subplot(2,1,2)
plot(t,f1);? ?? ?? ?? ?? ?%畫出濾波后的時(shí)域圖
title('濾波后的時(shí)域波形');
sound(f1,22050);? ?? ???%播放濾波后的信號(hào)
F0=fft(f1,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));? ?? ?? ? %畫出濾波前的頻譜圖
title('濾波前的頻譜')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F1=plot(f,abs(F0(1:512)));? ???%畫出濾波后的頻譜圖
title('濾波后的頻譜')
xlabel('Hz');
ylabel('fuzhi');
波形如下:
(5)窗函數(shù)法設(shè)計(jì)濾波器:
程序如下:
fs=22050;
x1=wavread('wo.wav');
t=0:1/22050:(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);? ?? ?? ?? ?? ?? ?%取整
wn=(0.2+0.3)*pi/2;
b=fir1(N,wn/pi,hamming(N+1));? ?? ?? ???%選擇窗函數(shù),并歸一化截止頻率
figure(1)
freqz(b,1,512)
f2=filter(bz,az,x2)
figure(2)
subplot(2,1,1)
plot(t,x2)
title('濾波前的時(shí)域波形');
subplot(2,1,2)
plot(t,f2);
title('濾波后的時(shí)域波形');
sound(f2,22050);? ?? ?? ?? ?? ?%播放濾波后的語音信號(hào)
F0=fft(f2,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('濾波前的頻譜')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F2=plot(f,abs(F0(1:512)));
title('濾波后的頻譜')
xlabel('Hz');
ylabel('fuzhi');
波形如下:
(6)回放語音信號(hào)
在Matlab中,函數(shù)sound可以對(duì)聲音進(jìn)行回放。其調(diào)用格式:sound(x,fs,bits),x為要播放的音頻信號(hào),fs采樣頻率,bits采樣位。在運(yùn)行Matlab程序時(shí),可以聽到回放的聲音,經(jīng)過比較,明顯感覺濾波前后的聲音有變化。
3.結(jié)語
遇到的問題:出現(xiàn)錯(cuò)誤提示:
??? Error using ==> wavread
Error using ==> wavread
Data compression format (IMA ADPCM) is not supported.
解決辦法:wave格式的音頻分為PCM和IMA ADPCM兩種格式,Matlab中用waveread函數(shù)做音頻處理時(shí),只能對(duì)PCM格式的.wav音頻進(jìn)行處理,因此需要將要處理的格式事先轉(zhuǎn)換成PCM格式的.wav音頻。可采用Adensoft audio MP3 Converter音頻轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換。
11
評(píng)分
威望 +2
+5
積分 +2
收起
理由
+ 2
+ 5
+ 2
您的付出是論壇的東西,感謝您一直支持!.
總結(jié)
以上是生活随笔為你收集整理的语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB中cif用于清除什么,cif
- 下一篇: matlab人脸追踪,求大神帮助我这个菜