语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
(4)雙線性變換法設計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);? ?? ?? ?? ? %將模擬指標轉換成數字指標
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%選擇濾波器的最小階數
[Z,P,K]=buttap(N);? ?? ?? ?? ?? ???%創建butterworth模擬濾波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);? ?? ?? ? %用雙線性變換法實現模擬濾波器到數字濾波器的轉換
[H,W]=freqz(bz,az);? ?? ?? ?? ?? ? %繪制頻率響應曲線
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('頻率/Hz')
ylabel('頻率響應幅度')
title('Butterworth')
f1=filter(bz,az,x2);
figure(2)
subplot(2,1,1)
plot(t,x2)? ?? ?? ?? ?? ? %畫出濾波前的時域圖
title('濾波前的時域波形');
subplot(2,1,2)
plot(t,f1);? ?? ?? ?? ?? ?%畫出濾波后的時域圖
title('濾波后的時域波形');
sound(f1,22050);? ?? ???%播放濾波后的信號
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)窗函數法設計濾波器:
程序如下:
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));? ?? ?? ???%選擇窗函數,并歸一化截止頻率
figure(1)
freqz(b,1,512)
f2=filter(bz,az,x2)
figure(2)
subplot(2,1,1)
plot(t,x2)
title('濾波前的時域波形');
subplot(2,1,2)
plot(t,f2);
title('濾波后的時域波形');
sound(f2,22050);? ?? ?? ?? ?? ?%播放濾波后的語音信號
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)回放語音信號
在Matlab中,函數sound可以對聲音進行回放。其調用格式:sound(x,fs,bits),x為要播放的音頻信號,fs采樣頻率,bits采樣位。在運行Matlab程序時,可以聽到回放的聲音,經過比較,明顯感覺濾波前后的聲音有變化。
3.結語
遇到的問題:出現錯誤提示:
??? Error using ==> wavread
Error using ==> wavread
Data compression format (IMA ADPCM) is not supported.
解決辦法:wave格式的音頻分為PCM和IMA ADPCM兩種格式,Matlab中用waveread函數做音頻處理時,只能對PCM格式的.wav音頻進行處理,因此需要將要處理的格式事先轉換成PCM格式的.wav音頻。可采用Adensoft audio MP3 Converter音頻轉換工具進行轉換。
11
評分
威望 +2
+5
積分 +2
收起
理由
+ 2
+ 5
+ 2
您的付出是論壇的東西,感謝您一直支持!.
總結
以上是生活随笔為你收集整理的语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB中cif用于清除什么,cif
- 下一篇: matlab逆变换法产生随机数_matl