% [z,Fs]=audioread('Audio.wav');
% [z,Fs]=audioread('msg.wav');
% [z,Fs]=audioread('shake.wav');
% [z,Fs]=audioread('tweet.wav');
% [z,Fs]=audioread('Global.wav');
[z,Fs]=audioread('system.wav'); %读取语音信号的数据，赋给变量z
%sound(x)

z1=randn(length(z),1);                       %产生与z长度一致的标准正态分布随机信号

t=(0:(size(z)-1))/Fs; 
A=(min(abs(z))+max(abs(z)))*0.5;
z2=A*sin(2*pi*5000*t);         %加入正弦噪音

% z3=rand(length(z),1);          %产生与z长度一致的均匀随机信号

% z4=z+z1+z2'+z3;
z4=z+z1+z2';                    %随机噪声合成
sound(z4);                 %播放滤波前的语音信号

wp_1=0.2*pi;
ws_1=0.5*pi;
Rp_1=2;
Rs_1=17;
Fs_1=2*Fs;
% Fs_1=Fs;
Ts_1=1/Fs_1;
% wp_2=fix(2/Ts_1*tan(wp_1/2));                %将模拟指标转换成数字指标
% ws_2=fix(2/Ts_1*tan(ws_1/2));
wp_2=2/Ts_1*tan(wp_1/2);                %将模拟指标转换成数字指标
ws_2=2/Ts_1*tan(ws_1/2);
[N_1,Wn_1]=buttord(wp_2,ws_2,Rp_1,Rs_1,'s');     %选择滤波器的最小阶数
[Z,P,K]=buttap(N_1);                   %创建butterworth模拟滤波器
[b_1,a_1]=zp2tf(Z,P,K);
[b_2,a_2]=lp2lp(b_1,a_1,Wn_1);
[b_z,a_z]=bilinear(b_2,a_2,Fs_1);  %用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(b_z,a_z);                %绘制频率响应曲线
figure(1);
plot(W*Fs_1/(2*pi),abs(H));
set(gca,'Fontsize',22);
title('低通滤波器频率响应曲线','Fontsize',22);
xlabel('频率','Fontsize',22);
ylabel('幅值','Fontsize',22);
grid on;
f_1=filter(b_z,a_z,z4);
figure(2);
subplot(2,1,1);
plot(z4);                     %画出滤波前的时域图 
set(gca,'Fontsize',22);
title('滤波前的时域波形','Fontsize',22);
xlabel('采样点','Fontsize',22);
ylabel('幅值','Fontsize',22);
subplot(2,1,2);
plot(f_1);                   %画出滤波后的时域图
set(gca,'Fontsize',22);
title('滤波后的时域波形','Fontsize',22);
xlabel('采样点','Fontsize',22);
ylabel('幅值','Fontsize',22);
sound(f_1);                 %播放滤波后的信号
F0=fft(f_1,2048);             
% f=fs*(0:551)/1024;
f=Fs*(0:1023)/2048;
figure(3);
y2=fft(z4,2048);
subplot(2,1,1);
plot(f,abs(y2(1:1024)));   %画出滤波前的频谱图
set(gca,'Fontsize',22);
title('加噪语音信号滤波前的频谱','Fontsize',22);
xlabel('频率','Fontsize',22);
ylabel('幅值','Fontsize',22);
subplot(2,1,2);
F1=plot(f,abs(F0(1:1024)));              %画出滤波后的频谱图
set(gca,'Fontsize',22);
title('加噪语音信号滤波后的频谱','Fontsize',22);   
xlabel('频率','Fontsize',22);
ylabel('幅值','Fontsize',22);
