当前位置:   article > 正文

利用音频做FIR滤波实验_滤波器过滤声音实验

滤波器过滤声音实验

以下命令基于 Octave,理论上可用于 MATLAB,但实际是否能正常工作未验证。Octave 是 MATLAB 的开源替代。

加载音频

使用 audioread 函数读取音频文件,Alarm01.wav 是 Windows 10 系统目录 C:\Windows\Media 下的一个音频文件。

[a, fs] = audioread('Alarm01.wav');
  • 1

所读取到文件包含左声道数据和右声道数据,提取右声道数据:

r = a(:,2);
  • 1

绘制波形:

t=[0:length(r)-1]*(1.0/fs);
subplot(2,2,1);
plot(t,r);
  • 1
  • 2
  • 3

分析音频谱

对右声道音频做傅里叶变换:

x = fft(r);
  • 1

绘制谱:

f=[0:length(x)-1]*(fs/length(x));
subplot(2,2,2);
plot(f(1:length(x)/2),abs(x)(1:length(x)/2));
  • 1
  • 2
  • 3

生成滤波系数

假设要将1000Hz以上的音频过滤掉,使用 fir1 函数生成滤波系数:

b = fir1(30, 1000/fs/2);
figure 2;
freqz(b);
figure 3;
stem(b);
  • 1
  • 2
  • 3
  • 4
  • 5

滤波

调用 filter 函数执行滤波:

r1 = filter(b, 1, r);
figure 1;
subplot(2,2,3);
plot(t,r);
  • 1
  • 2
  • 3
  • 4

分析滤波后的音频

再次做傅里叶变换:

x1=fft(r1);
subplot(2,2,4);
plot(f(1:length(x1)/2),abs(x1)(1:length(x1)/2));
  • 1
  • 2
  • 3

滤波前后的谱对比

滤波前:
在这里插入图片描述

滤波后:
在这里插入图片描述
可以看到 1000Hz 以上的信号被过滤掉了。

播放音频

调用 play 播放音频,用耳朵感觉一下滤波前后的声音:

p = audioplayer(r, fs);
play(p);
p1=audioplayer(r1,fs);
play(p1);
  • 1
  • 2
  • 3
  • 4

完整的 m 文件

% 加载音频
% 使用 audioread 函数读取音频文件,Alarm01.wav 是 Windows 10 系统目录 C:\Windows\Media 下的一个音频文件。
[a, fs] = audioread('Alarm01.wav');

% 所读取到文件包含左声道数据和右声道数据,提取右声道数据:
r = a(:,2);

% 绘制波形:
t=[0:length(r)-1]*(1.0/fs);
subplot(2,2,1);
plot(t,r);

% 分析音频谱
% 对右声道音频做傅里叶变换:
x = fft(r);

% 绘制谱:
f=[0:length(x)-1]*(fs/length(x));
subplot(2,2,2);
plot(f(1:length(x)/2),abs(x)(1:length(x)/2));

% 获得滤波系数
% 假设要将1000Hz以上的音频过滤掉,使用 fir1 函数获取滤波系数:
b = fir1(30, 1000/fs/2);
figure 2;
freqz(b);
figure 3;
stem(b);

% 滤波
% 调用 filter 函数执行滤波:
r1 = filter(b, 1, r);
figure 1;
subplot(2,2,3);
plot(t,r);

% 分析滤波后的音频
% 再次做傅里叶变换:
x1=fft(r1);
subplot(2,2,4);
plot(f(1:length(x1)/2),abs(x1)(1:length(x1)/2));

% 播放音频
% 调用 play 播放音频,用耳朵感觉一下滤波前后的声音:
p = audioplayer(r, fs);
play(p);
p1=audioplayer(r1,fs);
play(p1);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/118147
推荐阅读
相关标签
  

闽ICP备14008679号