音频噪声抑制(1):经典滤波器篇
2016-12-03 18:50
148 查看
好久没有写音频信号处理的文章了……
因为我从零开始学C++去了……
前面有一些文章简要介绍了IIR和FIR滤波器的设计方法。
Review:IIR
Review:FIR
滤波器是一种工具,可以完成许多事情。
用滤波器去除噪声,是很常见的。
用经典滤波器抑制噪声,非常简单。如果噪声的功率谱PSD和有用信号功率谱PSD没有重叠的话,那可以实现非常好的效果。
但是,如果有重叠,去噪的效果就不是特别理想了。因为在复指数信号空间里面,没办法把有用信号和噪声信号分离啊。
当然,如果先知道噪声本身的性质,是可以帮助我们实现噪声抑制的。
如果,噪声是覆盖整个频率范围的白噪声,那去除噪声的步骤大致如下。
1. 需要了解有用信号大致是分布在 多少 Hz 到 多少 Hz之间。
2. 设计滤波器,指标就选尽可能多得抑制带外噪声的那些指标。
3. 让信号通过滤波器,实现噪声抑制。
如果,噪声是某个特定频率的噪声,比如 50Hz 的工频信号(50Hz交流电),
就需要设计一个陷波器。
虽然看起来,用陷波器去掉50 Hz的工频信号效果比较好,但是!但是!但是!
实际上,交流电不一定是刚好50 Hz的嘛,可能是51,52,甚至53,……
所以,实际上,还应该结合一些别的手段,去追踪一下工频信号的频率。
另外,由于有非线性效应,所以,不一定只有基波,还有可能有二次谐波,三次谐波,……
为什么会这样?微积分里面Taylor级数嘛…。我想,进一步的原理在“电路原理”、“模拟电子技术基础”等课程里都讲过。
引用某位老师的话:“哎,跟一群数学不好的、靠经验搞工程的人交流起来,真的是费劲!”
我很欣赏这句话。尽管很多人觉得这句话说得有点骄傲了。但是别人有水平,有水平的人不骄傲,难道还要一群渣渣去骄傲?
需要注意的是:
1. 在matlab里,如果设计IIR滤波器去抑制噪声,用filter函数就好。函数的输出信号y和输入信号x的长度是一样的。y就是去除噪声后的信号。
2. 在matlab里,如果设计FIR滤波器去抑制噪声,一般是得到一个单位脉冲响应h,于是用 y = conv(h,x) 就好。但是y的长度和x的长度不一致。这是由卷积的性质决定的。
L = M + N - 1。因为是FIR,所以y基本上就是x的时延,所以把y从 n0 时刻开始,往后走(x长度-1)个点,就是消除噪声后的信号。至于n0等于多少,这个去算一下就好了。
大概是 (N-1) / 2 个时刻吧。这个自己动笔算一下,算一下。 当然,N取奇数还是偶数,要看实际的需求。有些滤波器的长度N是不能满足某种特定的功能的。比如 z = 1的地方有零点(相当于 H(exp(j0)) = 0),是不能作为低通滤波器的。
因为我从零开始学C++去了……
前面有一些文章简要介绍了IIR和FIR滤波器的设计方法。
Review:IIR
Review:FIR
滤波器是一种工具,可以完成许多事情。
用滤波器去除噪声,是很常见的。
用经典滤波器抑制噪声,非常简单。如果噪声的功率谱PSD和有用信号功率谱PSD没有重叠的话,那可以实现非常好的效果。
但是,如果有重叠,去噪的效果就不是特别理想了。因为在复指数信号空间里面,没办法把有用信号和噪声信号分离啊。
当然,如果先知道噪声本身的性质,是可以帮助我们实现噪声抑制的。
如果,噪声是覆盖整个频率范围的白噪声,那去除噪声的步骤大致如下。
1. 需要了解有用信号大致是分布在 多少 Hz 到 多少 Hz之间。
2. 设计滤波器,指标就选尽可能多得抑制带外噪声的那些指标。
3. 让信号通过滤波器,实现噪声抑制。
如果,噪声是某个特定频率的噪声,比如 50Hz 的工频信号(50Hz交流电),
就需要设计一个陷波器。
虽然看起来,用陷波器去掉50 Hz的工频信号效果比较好,但是!但是!但是!
实际上,交流电不一定是刚好50 Hz的嘛,可能是51,52,甚至53,……
所以,实际上,还应该结合一些别的手段,去追踪一下工频信号的频率。
另外,由于有非线性效应,所以,不一定只有基波,还有可能有二次谐波,三次谐波,……
为什么会这样?微积分里面Taylor级数嘛…。我想,进一步的原理在“电路原理”、“模拟电子技术基础”等课程里都讲过。
引用某位老师的话:“哎,跟一群数学不好的、靠经验搞工程的人交流起来,真的是费劲!”
我很欣赏这句话。尽管很多人觉得这句话说得有点骄傲了。但是别人有水平,有水平的人不骄傲,难道还要一群渣渣去骄傲?
需要注意的是:
1. 在matlab里,如果设计IIR滤波器去抑制噪声,用filter函数就好。函数的输出信号y和输入信号x的长度是一样的。y就是去除噪声后的信号。
2. 在matlab里,如果设计FIR滤波器去抑制噪声,一般是得到一个单位脉冲响应h,于是用 y = conv(h,x) 就好。但是y的长度和x的长度不一致。这是由卷积的性质决定的。
L = M + N - 1。因为是FIR,所以y基本上就是x的时延,所以把y从 n0 时刻开始,往后走(x长度-1)个点,就是消除噪声后的信号。至于n0等于多少,这个去算一下就好了。
大概是 (N-1) / 2 个时刻吧。这个自己动笔算一下,算一下。 当然,N取奇数还是偶数,要看实际的需求。有些滤波器的长度N是不能满足某种特定的功能的。比如 z = 1的地方有零点(相当于 H(exp(j0)) = 0),是不能作为低通滤波器的。
相关文章推荐
- 音频噪声抑制(3):维纳(Wiener)滤波器篇之有辅助观测数据
- 音频噪声抑制(2):维纳(Wiener)滤波器篇
- 音频噪声抑制(5):含辅助观测数据的LMS噪声抑制
- 音频录制的噪声抑制与PCM+H264封装MP4
- 音频噪声抑制(6):不含辅助观测数据的LMS噪声抑制
- 音频噪声抑制(4):普通最小均方误差(LMS)算法
- 音频噪声抑制(7):利用基本谱减法实现噪声抑制
- 音频测试用粉色噪声发生器
- 磁珠还可以用来抑制纹波噪声?
- 音频测试用粉色噪声发生器
- 图像噪声的抑制——均值滤波、中值滤波、对称均值滤波
- 图像噪声的抑制——均值滤波、中值滤波、对称均值滤波
- winxp平台的内置AEC(回声消除)和噪声抑制
- 目前市场上唯一向远近端提供噪声抑制的解决方案
- flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法
- 图像平均 均值滤波抑制噪声的原理
- 噪声抑制中先验信噪比与后验信噪比的关系
- 音频系统应用中的“POP”噪声以其常用解决方法
- 噪声抑制中先验信噪比与后验证信噪比的关系
- 信号完整性:电源噪声抑制方法