当前位置:首页 > 语音信号处理王耀辉
武汉理工大学《MATLAB原理与应用》课程设计说明书
fr=4800; wp=(fp/fs)*2*pi; ws=(fr/fs)*2*pi; OmegaP=2*fs*tan(wp/2); OmegaS=2*fs*tan(ws/2); ap=1; as=20;
[N,Wn]=buttord(OmegaP,OmegaS,ap,as,'s'); %选择滤波器的最小阶数 [b,a]=butter(N,Wn,'high','s'); [bz,az]=bilinear(b,a,fs); [h,w]=freqz(bz,az); y1=filter(bz,az,y); subplot(223);
plot(t,y1);title('滤波后语音信号波形');xlabel('t/s'); y2=fft(y1,1024); subplot(224);
plot(f,20*log10(abs(y2(1:512))));title('滤波后语音信号频谱'); xlabel('f/Hz');ylabel('dB'); sound(y1,fs,bit);
滤波处理后的时域和频域波形:
23
武汉理工大学《MATLAB原理与应用》课程设计说明书
图 8双极性变换法高通滤波结果
比较上图的原语音频谱图和滤波处理后的语音频谱图,频率较低的语音信号被明显地衰减,高频的语音信号保留了下来,起到了高通滤波的效果。
2.2.4 带通滤波器
1 窗函数法
[y,fs,bit]=wavread('system.wav'); sound(y,fs,bit); f=fs*(0:511)/1024; t=(0:length(y)-1)/fs; subplot(221);
plot(t,y);title('原始语音信号波形');xlabel('t/s'); x1=fft(y,1024); subplot(222);
plot(f,20*log10(abs(x1(1:512))));title('原始语音信号频谱');
24
武汉理工大学《MATLAB原理与应用》课程设计说明书
xlabel('f/Hz');ylabel('dB'); fr=1200; fp=3000; wr=2*pi*fr;
Window=blackman(16);
b=fir1(15,[fr/(fs/2),fp/(fs/2)],Window); [h,w]=freqz(b,1); y1=filter(b,1,y); subplot(223);
plot(t,y1);title('滤波后语音信号波形');xlabel('t/s'); y2=fft(y1,1024); subplot(224);
plot(f,20*log10(abs(y2(1:512))));title('滤波后语音信号频谱'); xlabel('f/Hz');ylabel('dB'); sound(y1,fs,bit);
图 9 窗函数带通滤波结果
25
武汉理工大学《MATLAB原理与应用》课程设计说明书
比较上图的原语音频谱图和滤波处理后的语音频谱图,频率较低的语音信号和频率较高的语音信号被明显地衰减,中间频率的语音信号保留了下来,起到了带通滤波的效果。 2 双线性变换法
[y,fs,bit]=wavread('system.wav'); sound(y,fs,bit); f=fs*(0:511)/1024; t=(0:length(y)-1)/fs; subplot(221);
plot(t,y);title('原始语音信号波形');xlabel('t/s'); x1=fft(y,1024); subplot(222);
plot(f,20*log10(abs(x1(1:512))));title('原始语音信号频谱'); xlabel('f/Hz');ylabel('dB'); fp1=1200; fr1=1000; fp2=3000; fr2=3200; fp=[fp1 fp2]; fr=[fr1 fr2]; wp=(fp/fs)*2*pi; ws=(fr/fs)*2*pi; OmegaP=2*fs*tan(wp/2); OmegaS=2*fs*tan(ws/2); ap=1; as=9;
[N,Wn]=buttord(OmegaP,OmegaS,ap,as,'s'); %选择滤波器的最小阶数 [b,a]=butter(N,Wn,'s'); %[b1,a1]=lp2bp(b,a,sqrt())
26
共分享92篇相关文档