大数跨境

关于主动降噪耳机,你想知道的一切(二):前馈自适应

关于主动降噪耳机,你想知道的一切(二):前馈自适应 声学楼论坛
2020-05-26
2
导读:关于主动降噪耳机,你想知道的一切(二)

文 | S.Li

编辑 | 贰沐 子鱼


在上一篇 关于主动降噪耳机,你想知道的一切(一)中,介绍了非自适应的前馈ANC滤波器,这次来讲讲自适应的前馈滤波器啦,看看如何让ANC去适应你的人生!


上文末尾已经提到,因为讨厌的善变的 Primary path (   )和因人而异的Secondary path (   )导致非自适应的ANC滤波器很难在学术界生存下去。。。因为学术界的宗旨就是无孔不钻!见缝就插针!对于前馈滤波器来说,   是最烦的,   相对来说还算温和。如果把   当作一个时变的线性系统,通过测量它的入口信号和出口信号就可以用自适应滤波器去跟踪它发现它每时每刻的状态。Okay 先不管ANC,来看看一个简单的自适应鉴定系统的原理吧。


图一:非自适应系统


假如要检测一个未知的线性系统   ,最简单的方法就是给它一个输入的测试信号   ,测量输出信号    ,然后在频域上输出信号和输入信号的比值就是这个系统。


现在换一个思路,不用这个方法,我们看看纯瞎猜行不行!如图一所示,有输入信号   ,未知待测系统   ,输出信号   。假设这个系统可以用一个长度为   的FIR滤波器来表达吧 (就是没有极点只有零点) 。这样的话   在时域上就可以用一个简单一维向量   来表达(FIR 滤波器的系数)。在后文中加粗的字符都表示向量。没加粗的符号是标量。我们把猜测到的向量用   来表达(在频域就是图一里的   ),并且把输入到未知待测系统   里信号   输入到   里,把输出信号反相(相位反转180度)和通过   的输出信号   相加得到一个误差信号   。如果这个误差信号等于0,那说明这个待测系统被猜对啦!就是   。


我们来看看该怎么猜这个系统吧,更直白点,就是猜   里的   个数字。是不是很像考试的时候做选择题的情景:三短一长选长的,三长一短选短的,两长两短就选B。。。反正先猜一个嘛,额,不对,得猜   个而且范围貌似挺大的。哎,先猜   个零吧 (   ),看看运气, Okay!交卷!老师要开始看看你选的对不对了,把你上交的   进行如图一所示的测试来看看这个误差   是多少?我想结果可想而知。。。   。老师拿着结果告诉你:“你看看你,你这都干了些什么!你是我这届带过最差的学生!”




拿到测试结果的你哭着对老师说:“请再给我一次机会!”老师被你的真诚打动:“好吧,你看看这个测试信号   ,再看看你的测试结果   ,好好思索思索如何找到好点的   吧!”。


翻越千山万水,终于在adaptive filter theory [1] 这本宝典里,找到了一种简单但直接有效的方法:梯度下降法(steepest descent method):就是假设你在山顶想回到在山底的家,找得到一条通往山下的路,然后一个劲顺往下滚。


https://gifimage.net/


在下一次交给老师交答案之前,最担心的一件事情就是:虽然上次结果已经很差了,这次结果可千万别比上次测试结果还要差啊。所以呢得先规定一个损失函数(cost function)取名为:    。然后朝着损失函数减少的方向前进!一个常用的损失函数就是测试系统和猜测系统输出值误差平方的期望[1,2,3]:


       (1)    


有一点要注意啊,公式(1)里面   代表了卷积,也可以用向量的方式来表达 比如:   (有很多推导公式用了向量的方法,但结果都一样)。

现在就得找这个损失函数的梯度,让它越小越好,咋办呢,让它对   进行求偏导(对一个抛物线类的方程来说,求导是最好的办法):


       (2)

                                                  

然后 新的   就能计算出来啦


            (3)

                                                      

   代表第一次猜测的系统系数,   是第二次猜的系统系数, 这里出现了一个   , 它代表步长,啥意思呢,就是你从山上下来走多得有多快。走快了容易摔跤,走慢了那就赶不上回家吃饭了。看上去简单,实行起来难,这个期望可咋办呀。。。这时候就出现了只要百度谷歌ANC或优化或机器学习就会出现的名字 ------ Least mean square (LMS,跟西门子没啥关系)。LMS说:“别搞这么复杂了,别算什么期望不期望了,就按当前这个时间点直接来算吧, 来撸起袖子就是干!”听取了这个意见,那么这次该递交的答案是:


                                                                                          

   也是一个长度为   的一维向量和   长度一样,表示在此一时刻, 比如时刻   ,收集到的最近时间段的   个数字:   。现在是第二次递交答案,这个时刻明显小于长度    ,那么之前的信号用零来填充。交给老师后再次检查,老师发现 哎呦可以啊,比上次要好点了啊!看了这孩子还是个潜力股,我把这次检查结果再退还给他,看看他能不能给我带来惊喜!


就这么来来回回 改来改去,终究把这个待测系统测明白了!你长叹一口气:多亏有了老师的启发啊!罗里吧嗦这么一堆 这就是所谓的自适应!整一个循环如图二所示。自适应方法千千万万,每个方法都是因为之前的方法在某个应用场景下不足被提出来的,这就是之前说的学术界的无孔不钻。


图二:用自适应滤波器来识别系统


回顾了一下过去,你开始对人生有了新的领悟:对于任何一个很想认识的人,你都可以通过交流,从他/她那得到反馈来慢慢认识,最终你会了解TA。可是TA也有可能有离你远去的一天,而你也有可能得去认识一个新的朋友。但是你不用从零开始去接触一TA,因为他们或多或少都有点类似之处,你可以捧着之前积累的经验,去了解TA。这也就是说这个自适应算法对于时变的系统也是可以去识别的。


现在可以回归自适应主动降噪的话题了。对于那个善变的   ,我们可以用自适应滤波器去降伏它!


图三:自适应前馈ANC的大致结构图


图三表示一个自适应前馈ANC的大致结构图。环境噪声被外置麦克风Ref mic录制,经过自适应滤波器   滤波之后,旋转180度,用耳机进行播放 (相当于再次被   滤波),然后用内置麦克风 Error mic录制到的音频作为误差进行反馈。这样一来,不像非自适应的ANC那样,自适应滤波器可以实时去检测新的匹配到的   。


在时刻    ,自适应滤波可以这么迭代:


       (5)    

                                                

但如果比较图二和图三,很容易发现图三里多了一个   。啥意思呢,在图二的情况下就是你猜测了一组数据可以直接交给老师,然后老师直接拿你的滤波器进行测试。但在ANC耳机的情况下,你只能先递交给小组长,小组长再转交给老师,根据老师给的测试结果进行对你的滤波器纠正。这下有点心烦了,万一你的小组长偷懒呢,收了你的滤波器,隔几天再交给老师(   的延迟),又或者有什么其他恶习呢,等等。。你却只能根据老师给你的测试结果来更改你的滤波器。为了减少这样事情的发生,如图四所示,Filtered-x LMS(FxLMS)方法就诞生了,就是输入信号在应用自适应算法之前,先被一个测量到的    来进行过滤。


图四:Filtered-x LMS自适应前馈ANC的大致结构图


这个推导非常简单,就是把公式1-4里预测的输出信号都经过   进行滤波,也就是说这个预测的输出 就变成了

                          

       (6)                                                                                          

所以在迭代式中,应该在出现x的地方都得带上   , 其中   是    在时域的表达。

但众所周知这个   是物理上存在的,就是耳机到Error mic的传递方程。我们只能测一个   来表示。在时刻   ,自适应滤波的迭代可以被更改为:


       (7)

                   (8)              



劈里啪啦说一堆,这就是所谓的FxLMS方法。当然还有一些优化,比如标准化的FxLMS, 所谓的标准化FxNLMS,就是把公式7里的   变成   ,好处是这个步长   的选择就可以变得和输入信号无关,可以被限制在 0 和2 之间 [1,2,3]。


还有一种优化就是前一文章提及的基于心理声学的ANC。现在把在Error mic测量到的声压大小直接来作为误差评估。但最后降噪能力好不好是我们听出来的,不是用仪器测出来的数据。去商场买降噪耳机,你见过哪个销售员现场给你看降噪曲线的?大家不都喜欢自己戴上耳机感受感受嘛。总之一句话,是驴是马拉出来溜溜。戴上听听不就行了。


如图五所示,所以有些人就把这个误差给进行权值滤波了来估计我们听到的大小,比如加上一个A-weighting的滤波器 [4]。相对应的,信号在输入到自适应算法前也需要被进行权值滤波,道理和   一样。现在除了有了个小组长之外,又出来了个班长!


图五:基于心理声学的自适应前馈ANC的大致结构图


这些算法看上去很不错,但现实却是很骨感。每次看学术论文的时候,大家都会习惯性地被它们神一般的算法和优美的结论吸引,总是会忽略各个所用方法的前提:“在xxx条件下”。当然,这个前馈自适应滤波器的使用是有前提的。挑个重点说吧,就是Ref mic 和 Error mic 收到的信号得是高度相关的。大家别笑,不要觉得这两个信号不相关不可能。那可不一定,一切皆有可能,举个现实生活中例子:某调皮的用户戴着降噪耳机,这个时候拿住耳机上下左右滑动和耳朵做摩擦,额。。。这个和滑板鞋和地板的摩擦不一样。。。这种摩擦产生的声音很难被Ref mic录制到,但Error mic就会录到一个很大的声音。


你明明上交了一个很好的滤波器,结果却被老师劈头盖脸骂一顿,你不高兴了,就开始乱调系数了,一个不小心别说降噪了,给你来个升噪也是有可能的。



说到这里,有些人可能会说,明明有xx耳机公司是用LMS做的啊,并且在阅读很多关于耳机ANC的论文开篇就会提到LMS是经常用在降噪耳机里的一种方法。。。。。额。。。。。


那是因为LMS不一定要这么被实时的应用,它还可以被线下应用:


还记得上一篇介绍的计算前馈滤波器的方法吗?就是用一个外面的音箱播放测试声音,然后Ref mic 和Error mic接受声音,求两个传递方程,然后来计算这两个传递方程来计算个固定方向的   ,之后再用这个   来计算前馈滤波器。


那么我用LMS方法也可以来测到   啊,一样的设置,用一个外面的音箱播放白噪声(宽频信号都行,但时间稍微长一点),然后Ref mic 和Error mic接收声音。这样我就有了输入信号 和没有经过降噪所录制到的声压大小,相当于图三到五中   和   。Okay,我就可以在电脑上进行模拟了。就是用LMS的方法根据   和   来计算降噪滤波器   。计算完之后把这个滤波器系数用到降噪耳机里。


所以这个方法和上一篇非自适应的方法基本类似,计算了在某个方向下的滤波器。但你说这个是LMS方法吗?这个充其量是个线下自适应方法。的确市面上有几款真正的实时自适应降噪耳机,但据我所知很少很少,而且在实时计算自适应滤波器的时候有很多限制并且是用于特殊的情景。我很想知道市面上有哪些降噪耳机是真正的实时在进行自适应的,求告知!


还有一点关于这个善变的   ,实时测量各种情景下(横着戴,竖着戴,斜着戴)的   难度挺大的,大家都在探索中。但是测每个人的   还是可能的,有一些耳机会有一些私人定制功能,就是在你戴上耳机后,会提示你会播放一段测试声音,这个测试声音就可以来进行   的测量。但至于每时每刻的测量,可是当前研究的热门啊,还是那句话,毕竟学术圈无孔不入。但至于能不能用到产品上,额。。。。。


前馈滤波器的基础大概就这么些。缺点嘛,也挺明显,降噪主要是靠Ref mic测到的输入信号作为噪声主要来源。那么有个疑虑就是噪声源一定是从外面来的吗?一定能被 Ref mic 测到吗?而且如果用非自适应的滤波器降噪能力和方向有关。有了这些疑虑,就出现了反馈降噪滤波器。在后面一章会来讲讲反馈滤波器的大概设计方法。


声明:本公众号转载此文章出于非商业性的教育和科普目的,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载文章涉及版权等问题,请立即联系我们,我们会予以更改或删除,保证您的权利!

文章转载自:子鱼说声学

这里是声学楼

论坛网址:www.nju520.com

微信公众号:AcousticsBlock

微信二维码:


【声明】内容源于网络
0
0
声学楼论坛
“声学楼”创办于2005年,致力于促进声学领域技术交流与应用。历经多年发展,声学楼已从一个单纯声学工程师交流平台,成长为音频企业上下游多方参与音频技术专业论坛之一,每年还通过举办技术研讨会、年会等活动,搭建起与会的行业供需双方沟通的桥梁。
内容 0
粉丝 0
声学楼论坛 “声学楼”创办于2005年,致力于促进声学领域技术交流与应用。历经多年发展,声学楼已从一个单纯声学工程师交流平台,成长为音频企业上下游多方参与音频技术专业论坛之一,每年还通过举办技术研讨会、年会等活动,搭建起与会的行业供需双方沟通的桥梁。
总阅读0
粉丝0
内容0