音频信号采集及处理程序代码及实验结果图:
[voice,fs]=audioread('notify.wav');%声音读取
sound(voice,fs); %声音回放
n=length(voice);%计算长度
voice1=fft(voice,n); %快速傅里叶变换
figure(1);subplot(2,1,1);plot(voice); %绘出时域波
xlabel('t');ylabel('amp');%坐标名称
title('初始音频信号时域波形');grid on;
subplot(2,1,2);plot(abs(fftshift(voice1))); %绘出原始音频信号频谱
title('初始音频信号频域波形');
xlabel('f');ylabel('amp');grid on;
t=0:1/fs:(n-1)/fs;
noise=0.05*sin(2*pi*100000*t');%100kHz正弦波噪声
s=voice+noise;%加噪后的音频信号
pause;sound(s,fs); %播放加噪的语音
n=length(s);
S=fft(s,n);%计算频谱
figure(2);subplot(2,1,1);plot(s);%画出加噪之后的音频信号时域波
形
title('加噪声后的音频信号时域波形');
xlabel('t');ylabel('amp');grid on;
subplot(2,1,2);plot(abs(fftshift(S)));%零频移到频谱中心后,绘制加噪
之后的音频信号频谱
xlabel('f');ylabel('amp');
title('加噪声后的音频信号频域波形');grid on;
pause;
rp=2; rs=80;
Ft=8000;Fp=1000;Fs=1300;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft; %求出待设计的模拟滤波器的边界频率
[n,wn]=buttord(wp,ws,rp,rs,'s'); %低通滤波器的阶数和截止频率
[b,a]=butter(n,wn,'s'); %S域频率响应的参数即:滤波器的传输函数
[bz,az]=bilinear(b,a,0.5); %利用双线性变换实现频率响应S域到Z域的变换
[h,w]=freqz(bz,az);
figure(3);plot(w*fs/(2*pi),abs(h));%绘制IIR低通滤波器特性曲线
title('IIR低通滤波器特性曲线');grid on;
z=filter(bz,az,s); %滤波
pause;sound(z,fs); %回放滤波后的信号
Z=fft(z); %滤波后的信号频谱
figure(4);subplot(2,2,2);plot(z);%绘制低通滤波后的音频信号时域
波形
title('低通滤波后的音频信号时域波形');
xlabel('t');ylabel('amp');grid on;
subplot(2,2,1);plot(s);%绘制加噪声后的音频信号时域波形
title('加噪声后的音频信号时域波形');
xlabel('t');ylabel('amp');grid on;
subplot(2,2,3);plot(abs(fftshift(S)));%绘制加噪声后的音频信号频域波形
title('加噪声后的音频信号频域波形');
xlabel('f');ylabel('amp');grid on;
subplot(2,2,4);plot(abs(fftshift(Z)));%绘制低通滤波后的音频信号频域波形
title('低通滤波后的音频信号频域波形');
xlabel('f');ylabel('amp');grid on;