fs=8000; [y,fs]=audioread('D:\大三下\语音信号处理\课设\04.wav'); f=filter(bz,az,y); %使用filter函数对y进行滤波处理 f1=fft(f,1024); figure(5); subplot(2,1,1) plot(abs(f1)); %滤波后的幅度谱图 title('滤波后的幅度谱'); grid; subplot(2,1,2) plot(angle(f1)); %滤波后的相位谱图 title('滤波后的相位谱'); grid; audiowrite('D:\大三下\语音信号处理\课设\audio2.wav',f,fs);%对滤波后的声音进行储存。 % 将处理后的声音与原声音进行对比。 fs=8000; y=audioread('D:\大三下\语音信号处理\课设\audio1.wav'); y1=audioread('D:\大三下\语音信号处理\课设\audio2.wav'); yx=fft(y); %进行傅里叶变换 yx1=fft(y1); figure(6); subplot(2,1,1) plot(20*log10(abs(yx))); title('滤波前的相对幅度谱'); grid; subplot(2,1,2); plot(20*log10(abs(yx1))); %分贝单位 title('滤波后的相对幅度谱'); grid;
时间: 2024-03-08 09:49:21 浏览: 90
:基于MATLAB的语音信号的处理.doc
这段代码使用Matlab中的filter函数对读入的音频文件进行IIR滤波,并对滤波后的音频文件进行傅里叶变换,绘制出滤波后的幅度谱图和相位谱图,最后将滤波后的声音文件储存下来,并与原始声音文件进行对比。
下面是对这段代码滤波后的幅度谱图和相对幅度谱图的分析:
1. 滤波后的幅度谱图:
```matlab
subplot(2,1,1)
plot(abs(f1));
title('滤波后的幅度谱');
grid;
```
这段代码绘制了滤波后音频文件的幅度谱图,其中f1是使用fft函数计算出的音频文件的频谱。abs函数用于计算频谱的幅值,plot函数用于绘制频谱图。
幅度谱图显示了不同频率下的信号强度。在滤波后的幅度谱图中,可以看出滤波器对于不同频率的信号有不同的响应。在通带内,滤波器对信号的幅值几乎没有影响,而在阻带内,滤波器对信号的幅值进行了衰减。
2. 滤波后的相对幅度谱图:
```matlab
subplot(2,1,2);
plot(20*log10(abs(yx1)));
title('滤波后的相对幅度谱');
grid;
```
这段代码绘制了滤波后音频文件的相对幅度谱图,其中yx1是使用fft函数计算出的音频文件的频谱。abs函数用于计算频谱的幅值,20*log10函数用于将幅值转换为分贝单位,plot函数用于绘制频谱图。
相对幅度谱图显示了不同频率下的信号相对强度。在滤波后的相对幅度谱图中,可以看出滤波器对于不同频率的信号有不同的响应。在通带内,滤波器对信号的相对幅度几乎没有影响,而在阻带内,滤波器对信号的相对幅度进行了衰减。
综上所述,这段代码通过使用filter函数对音频文件进行IIR滤波,并对滤波后的音频文件进行傅里叶变换,绘制了滤波后的幅度谱图和相对幅度谱图,从而对滤波器的滤波效果进行了分析。
阅读全文