在网上已经找到了相关程序,只要改改就行了
[y,fs,bits]=wavread('chushi.wav');
sound(y,fs)
n=length(y)
y_p=fft(y,n);
f=fs*(0:n/2-1)/n;figure(1)
subplot(2,1,1);
plot(y);
title('原始语音信号采样后的时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(y_p(1:n/2)));
title('原始语音信号采样后的频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
L=length(y)
noise=0.1*randn(L,2);
y_z=y+noise;
sound(y_z,fs)
n=length(y);
y_zp=fft(y_z,n);
f=fs*(0:n/2-1)/n;figure(2)
subplot(2,1,1);plot(y_z);
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(y_zp(1:n/2)));
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
Ft=5000;
Fp=1000;
Fs=1200;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;rs=50;
p=1-10.^(-rp/20);s=10.^(-rs/20);
fpts=[wp ws];
mag=[1 0];dev=[p s];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);
b21=fir1(n21,wn21,Kaiser(n21+1,beta));
[h,w]=freqz(b21,1);plot(w/pi,abs(h));
title('FIR低通滤波器');x=fftfilt(b21,y_z);
X=fft(x,n);figure(4);
subplot(2,2,1);plot(f,abs(y_zp(1:n/2)));
title('滤波前信号的频谱');
subplot(2,2,2);plot(f,abs(X(1:n/2)));
title('滤波后信号的频谱');
subplot(2,2,3);plot(y_z);
title('滤波前信号的时域波形')
subplot(2,2,4);plot(x);
title('滤波后信号的时域波形')
sound(x,fs,bits)