当前位置:首页 > 基于MATLAB的有噪声的语音信号处理的课程设计
可以看出,滤波后将原始信号绝大部分频谱滤掉,剩下噪声信号,不能采用。
(3)IIR带通滤波器设计
[y,fs,nbits]=wavread ('OriSound'); n = length (y) ; Noise=0.2*randn(n,1); s=y+Noise; S=fft(s); Ft=8000; Fp=1000; Fs=1200; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50;
p=1-10.^(-rp/20); q=10.^(-rs/20); fpts=[wp ws];
%语音信号采集 %计算语音信号的长度 %产生随机噪声
%语音信号加噪 %快速傅里叶变换
%通带阻带波纹
mag=[1 0]; dev=[p q];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev); b21=fir1(n21,wn21,kaiser(n21+1,beta)); z21=fftfilt(b21,s); sound(z21,fs,nbits); m21=fft(z21); figure(4);
subplot(2,2,1);
plot(abs(S),'g');
title('滤波前信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;
subplot(2,2,2); plot(abs(m21),'r');
title('滤波后信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;
subplot(2,2,3); plot(s);
title('滤波前信号的波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;
subplot(2,2,4); plot(z21);
title('滤波后的信号波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;
结果如下:
%由kaiserord求滤波器的阶数和截止频率
%设计滤波器 %滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
可以看出,大部分噪声被去除,与低通IIR滤波器的效果差不多,稍好于低通。
(4)FIR低通滤波器
[y,fs,nbits]=wavread ('OriSound'); n = length (y) ; Noise=0.2*randn(n,1); s=y+Noise; S=fft(s); Ft=8000; Fp=1000; Fs=1200; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50;
p=1-10.^(-rp/20); q=10.^(-rs/20); fpts=[wp ws];
%语音信号采集
%计算语音信号的长度 %产生随机噪声
%语音信号加噪 %快速傅里叶变换
%通带阻带波纹
mag=[1 0]; dev=[p q];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev); %由kaiserord求滤波器的阶数和截止频 b21=fir1(n21,wn21,kaiser(n21+1,beta)); z21=fftfilt(b21,s); sound(z21,fs,nbits); m21=fft(z21); figure(4);
subplot(2,2,1); plot(abs(S),'g');
title('滤波前信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;
subplot(2,2,2); plot(abs(m21),'r');
title('滤波后信号的频谱','fontweight','bold'); axis([0 80000 0 4000]); grid;
subplot(2,2,3); plot(s);
title('滤波前信号的波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;
subplot(2,2,4); plot(z21);
title('滤波后的信号波形','fontweight','bold'); axis([00000 100000 -1 1]); grid;
结果如下:
率
%由fir1设计滤波器 %滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
共分享92篇相关文档