实验目的与意义
- 学习脉冲响应的定义,理解卷积计算的原理。
- 熟悉conv函数,掌握在matlab中计算卷积的方法。
- 熟悉randn函数,掌握在matlab中对音频信号加噪的方法。
- 学习filterDesiner滤波器的使用,掌握在matlab中对音频信号降噪的方法。
实验过程
- 导入第三次实验中获得的音频文件exp.wav,定义变量wave和fs分别为音频信号和采样率。同时生成原音频信号频谱图。 [wave, fs] = audioread("exp.wav");
L = length(wave);
time = L/fs;
subplot(131);
plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave))),'linewidth',1.5);
title('加噪前频谱');
grid on;
- 使用randn函数对音频信号wave进行加噪,噪声类型为高斯噪声,加噪后的音频信号为wave_noise。同时生成加噪后的频谱图。 noise = 0.7*randn(L,1);
wave_noise = wave+noise;
sound(wave_noise,fs); subplot(132);
plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave_noise))),'linewidth',1.5);
title('加噪后频谱');
grid on;
- 使用filterDesigner滤波器对加噪后的音频信号进行降噪,降噪后的音频为wave_bpf。因为从加噪后的频谱图可以看出,220Hz、262Hz、330Hz、392Hz、440Hz、524Hz为音频的主要内容,所以使用带通滤波器只保留220Hz-524Hz的信号。同时生成降噪后的频谱图。 bpf = BandPass_220_524;
wave_bpf = conv(wave_noise,bpf,'same');
sound(wave_bpf,fs); subplot(133);
plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave_bpf))),'linewidth',1.5);
title('降噪后频谱');
grid on;