FxLMS Filter学习笔记

本文详细介绍了主动降噪技术,特别是关注于FxLMS滤波器的原理和应用。通过分析前馈与反馈降噪的差异,解释了双mic设计的原因,并探讨了如何利用FxLMS算法来估计和优化降噪效果。核心算法中,自适应滤波器与实际物理过程相结合,通过估计Secondary Path参数以提高降噪精度。该方法在现代主动降噪耳机中扮演重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当前耳机中的主动降噪技术中,有FxLMS的一席之地,本文根据参考文档整理学习笔记,理解一下主动降噪和FxLMS技术。

循序渐进的了解主动降噪

在【7】的文章中,贴出了索尼公司耳机为主动降噪设计的双mic结构,下图引用一下:
在这里插入图片描述
很容易理解为了主动降噪,在耳机的外层利用mic采集环境噪音,作为自适应滤波的参考信号,帮助完成降噪的目的,那为什么在喇叭附近也放置一个mic呢?它的目的是什么?其实如图中所列文字,主动降噪是分前馈和反馈两种方式的,上面的是hyrid混合降噪,当然也最复杂,理论上效果更好。在All About Active Noise Cancellation & How It Helps You Hear Better !一文中有一个图例,形象的说明了三者的构造,有兴趣可以看看,担心版权问题不引用了。简单的翻译一下前馈(feedforward)和反馈(feedbackward)特点:

  1. 前馈(feedforward)mic降噪:实时采集环境噪声,响应时间有优势,(文中还提到这样会令1-2Khz的高频噪声得到有效的衰减,暂时不明所以);但前馈无法得知自己的降噪效果,因为从机制上听不到speaker降噪后的声音。
  2. 反馈(feedbackward)mic降噪:对噪声消除后的声音提供了反馈回路,理论上可以令声音更加纯净;但设计难度更大,容易引起环路的自激振荡(啸叫)

很显然市场上主流产品都是两个mic,即hybrid方案,那么这个方案是怎么实现的呢?在【11】中给出了基本的原理框图
在这里插入图片描述
这个前馈通道(Primary Noise+Reference Mic)和经典的ANC(Adaptive Filter)很接近,只不过增加了反馈通道(Error Mic)。比较一下经典的降噪框图【13】
在这里插入图片描述
可以看出ANC的反馈通道替换了自适应滤波器的加减器,至于工作的基本原理推荐博文【8】,写的深入浅出,通俗易懂。综上所述市场上的主动降噪耳机应该都具备两个mic,引用【14】文的图,对于耳塞型的耳机结构大致如下:
在这里插入图片描述

主动降噪的核心算法FxLMS Filter

利用经典的自适应滤波器也是可以进行噪声抑制的,即认为speaker处的噪声为信号 d d d,反馈mic采集到的信号为 e e e,而前馈mic采集到的为 x x x,经过anc模块的维信号 y y y,套用adaptive filter公式为: e ( n ) = d ( n ) − y ( n ) = d ( n ) − W T X ( n ) = d ( n ) − X T ( n ) W e(n)=d(n)-y(n)=d(n)-\bold W^T\bold X(n)=d(n)-\bold X^T(n)\bold W e(n)=d(n)y(n)=d(n)WTX(n)=d(n)XT(n)W
权重迭代公式为 W k + 1 = W k + 2 μ e ( k ) X ( k ) \bold W_{k+1}=\bold W_k +2 \mu e(k)X(k) Wk+1=Wk+2μe(k)X(k)当然实际上存在speaker,而这时候产生的信号是通过speaker变成模拟声音之后与噪声混合后的物理相消,所以此时自适应滤波器作为信号线性预测器来使用了。
不过上面的套用存在误差,真实的情景是信号 y y y处理完毕,要经过数模转换,还要播放到空气中产生振动,如果假设这些通道是卷积的,可以抽象为一个卷积滤波器S;同理前馈信号 x x x传播到speaker后的相位等信息也都发生了改变,姑且抽象为一个卷积滤波器P,那么框图就变成如下的样子:
在这里插入图片描述利用【15】中快速迭代方法的推导 ▽ [ e ( k ) ] = ▽ [ d ( n ) − S ( n ) ∗ W T X ( n ) ] = − S ( n ) ∗ X ( n ) \bold \triangledown[e(k)]=\bold \triangledown[d(n)-S(n)*\bold W^T\bold X(n)]\\=-S(n)*\bold X(n) [e(k)]=[d(n)S(n)WTX(n)]=S(n)X(n)这就得出了梯度的估算公式 ▽ ^ ( k ) = − 2 e ( k ) S ( k ) ∗ X ( k ) \hat{ \bold \triangledown}(k)=-2e(k)S(k)*X(k) ^(k)=2e(k)S(k)X(k)迭代公式为: W k + 1 = W k + 2 μ e ( k ) S ( k ) ∗ X ( k ) \bold W_{k+1}=\bold W_k +2 \mu e(k)S(k)*X(k) Wk+1=Wk+2μe(k)S(k)X(k)
很显然P滤波器是凭空想象的,也无法琢磨,但是S滤波器似乎还在环路内,也许能找到办法来估计一下参数,如果能得到一个无偏估计 S ^ \hat S S^,上面的自适应结果将令误差函数 e e e更加接近极小值,进而使得估计的噪声抵消结果完美,由此提出了FxLMS方法。大致的框图变成下面这样:
在这里插入图片描述上图中的P一般所指的维Primary path,S所指的Secondary Path。通过这样的算法,只要估计出S的滤波器系数,就可以从算法公式上取得更加接近零误差的结果。这些都理解的话,阅读【1】将事半功倍的了解FxLMS滤波器的构成。如果想更加深入的感受一下什么是P什么是S,参考文档【12】的图片应该更加直观和震撼:
在这里插入图片描述
上述的框图应该对了解fxlms类型的滤波器有了直观的认识,那么 S ^ \hat S S^参数的确定将是比较重要的话题了。

S ^ \hat S S^的估计

参考文档

1. FxLMS-based Active Noise Control: A QuickReview
2.Active Noise Reduction using LMS and FxLMS Algorithms
3.FxLMS Filter: wiki analog device
4.PERFORMANCE COMPARISON OF THE FXLMS, NONLINEAR FXLMS AND LEAKYFXLMS ALGORITHMS IN NONLINEAR ACTIVE CONTROL APPLICATIONS
5.Active Noise Control: Basic Understanding
6.CSR8670 — 说说什么是ANC、CVC、DSP降噪
7.主动降噪(Active Noise Control)
8.ANC主动降噪理论及Matlab代码实现
9.Adaptive Line Enhancer (ALE)
10.Kuo S M, Morgan D R. Active noise control: a tutorial review[J]. Proceedings of the IEEE, 1999, 87(6):943-973
11.Active NoiseControl SystemsAlgorithms and DSPImplementations
12.recent advances on active noise control:open issues and innovative applications
13.自适应滤波器原理,第五版
14.ANC主动降噪技术的原理
15.ANC 与 adaptive filter

Matlab领域上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main.m; Fig:GUI操作界面; 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开main.m文件;(若有其他m文件,无需运行) 步骤三:点击运行,等程序运行完得到结果; 4、语音处理系列仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等; CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:svddwt.m; 调用函数:其他m文件; 语音信号,其格式为MP4; 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到 Matlab的当前文件夹中; 步骤二:双击打开svddwt.m文件;(若有其他m文件,无需运行) 步骤三:点击运行,等程序运行完得到结果; 4、智能优化算法背包问题系列仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 语音处理系列程序定制或科研合作方向:语音隐藏、语音压缩、语音识别、语音去噪、语音评价、语音加密、语音合成、语音分析、语音分离、语音处理、语音编码、音乐检索、特征提取、声源定位、情感识别、语音采集播放变速等;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值