发布时间:Dec. 20, 2022, 11:25 a.m.编辑:李佳生阅读(2998)
耳机ANC主动降噪算法简介
背景介绍
生活中许多场景中都会存在噪声,如:开车、飞机、地铁等。这些噪声会造成人心理上的烦躁,而且若噪声音量过大,则用户通话或者听音乐时,需要将音量调到很大才能盖过噪声,长时间处于这种环境下则会造成听力损伤。如果我们佩戴的耳机能够消除掉这些环境噪声,则能够解决上述问题,这就是耳机降噪需要解决的问题。
耳机降噪的方法有两种,主动降噪和被动降噪。被动降噪是通过物理隔绝的方法来减少噪声,而由于低频噪声的波长较长、穿透力较强,导致被动降噪只能针对高频噪声来进行设计,对于中低频噪声几乎没有作用。但生活中有很多噪声分布在中低频,此时就需要主动降噪算法来消除这部分噪声。
典型被动降噪效果(CH2:OPEN状态、CH1:佩戴状态不开ANC)
典型主动降噪效果(红色:降噪前、绿色:降噪后)
第一款主动降噪耳机诞生于Bose(也是当今耳机领域主动降噪算法TOP厂商之一),最早其实应用于军事领域,多用于飞行员。据说美国军方通过给飞行员/地勤人员佩戴降噪耳机,节省了由于噪音致残而需发放的补偿金达2亿美金。
而随着DSP芯片技术的发展,主动降噪技术也开始在民用领域逐渐普及,最常见的应用就是TWS耳机,已经成为必不可少的功能。
实现方式
基本原理
主动降噪的基本原理十分简单:即在外部噪声声波到达耳膜时,利用喇叭发出与之幅度相等,相位相反的声波,从而抵消人耳最后听到的噪声。
佩戴耳机后,耳机和耳道会形成一个密闭的腔体声学环境,这个环境会对外部噪声以及喇叭播放的声音产生滤波作用,因此我们需要准确知道两个事,才能达到上面的目的:即这个声学环境会如何影响外部噪声在耳膜处的频响(初级路径Primary Path,PP),以及我们将信号给到喇叭发声后,会在耳膜处产生怎样的频响(次级路径Secondary Path,SP)。知道这两个模型后,我们就可以通过耳机外侧的mic信号进行前馈预测(Feedforward control,FF)或通过耳机内侧的mic信号进行闭环控制(Feedback Control,FB),让滤波器准确控制喇叭发出声音来抵消外部噪声。
市面耳机常见的ANC算法架构:
PP:Primary Path,即初级路径,外部噪声对耳膜处频响影响的传递函数。
SP:Secondary Path,即次级路径,数字信号控制喇叭发声在耳膜处频响的传递函数。
FF:Feedforward control,前馈控制滤波器。
FB:Feedback control,反馈控制滤波器。
SPE:Secondary Path Estimation,SP估计滤波器。估计出下行信号(音乐、通话语音等)经过SP路径影响后在耳膜处的频响,将估计出的频响从闭环系统中去除,防止被当做噪声信号消除掉。
系统架构
各部分作用
• DSP: 实现ANC系统的业务逻辑和控制逻辑。即ANC业务与整体业务软件交互;修改系统各部分配置状态;运行ANC控制策略算法(削波控制、啸叫控制等)
• Codec: 实现算法框架,组织mic、音乐、通话等信号的通路结构,对信号进行处理、滤波,一般还能够通过I2S、TDM等协议输出n路指定节点的数据。
• PA&Speaker: 将数字信号转为实际的声信号。
• Peripheral Circuit: 外围电路,包含mic、供电等必要的外围器件和电路。
ANC系统特点
• 实时性要求高:在声波抵达耳膜前就要处理好并通过喇叭播放信号,考虑到喇叭频响相位滞后,数字域延时一般控制在15μs以内。
• 功耗(开销)要求高:应用于TWS耳机等无线设备时,对功耗和算力会严格限制以增加使用时长。以TWS耳机为例,一般DSP只分配3~6MCPS甚至更低给整个ANC系统使用。
• 滤波器资源受限制:目前常见的ANC Codec芯片中,每个通路一般只分配一个滤波器组,每个滤波器组由8~12个二阶IIR滤波器(Biquad)串联组成。
设计方法
离线设计方法
数据采集
采集环境:同一组PP、SP数据采集时,耳机佩戴于人耳(人工耳)保持姿态不动,保持声学环境一致。
数据要求:各通道数据采集时间严格同步、数据有效带宽≥20kHz、针对不同声学环境和噪声环境采集多组数据。
SP数据采集
采集步骤:消声室保持安静环境,耳机播放指定信号(通常为设计好的白噪声),同时采集codec中给到dac的下行信号,error mic、error mic@eardrum(外置mic)
SP模型:codec中给到dac的下行信号和error mic之间的频响关系,模型包括了数字域到模拟域到声场的所有响应特征。相对于PP来说频域特点较简单,通常可转换为高阶FIR来描述。
PP数据采集
采集步骤:消声室中播放外部噪声,保持耳机喇叭静音。同时采集reference mic、error mic、error mic@eardrum(外置mic)
PP模型:reference mic、error mic之间的频响关系,模型较为复杂(包括很多声学结构影响、非因果因素、非线性因素),只能反应大概的平均值,无法总结出一个FIR来准确描述每个时刻的频响关系,因此模型频响通常只用来指导初步的系数调试或进行降噪效果的点级仿真。
外部噪声选择:可针对不同场景构造不同的声场(比如方向性噪声、汽车噪声等),训练特定场景的系数。而一般的ANC设计时,需兼顾大多数日常场景,因此通常采用均匀粉噪散射场来进行数据采集。
A hybrid multi-reference subband control strategy for active noise control headphones.pdf
前馈设计
前馈降噪是利用参考信号提前预测噪声的频响分布,从而控制喇叭发声达到降噪目的,因此作用带宽可以达到4~6kHz。
频域描述:
FF滤波器理想频响曲线:线性FF滤波器的求解,本质是消除reference signal和error signal之间的相干性(coherence),以频域维纳解来求解FF的理想曲线(也可利用FxLMS等方式得到):
滤波器拟合:上述公式只在频域描述了FF滤波器的最优解,但可能包含了非因果部分的解,实际物理系统能够使用的滤波器无法完全描述,并且ANC系统只能调度使用有限个二阶IIR滤波器(Biquad)资源。因此离线设计时需要使用多个串联的二阶IIR滤波器组来拟合上述频响曲线的频响和相位。通常的设计方法有手动调试和GA搜索等,在可拟合的范围内(因果性、IIR稳定性、Codec支持的参数范围等)寻找最优参数。
反馈设计
前馈降噪受信号之间的相干性制约,存在理论上限,可利用反馈来进一步消除噪声。原理是利用耳内的误差信号进行闭环控制,降噪带宽受系统延时影响,以目前芯片的延时水平,一般在1kHz以下。
闭环控制稳态结果频域描述:
从公式可以看出,FB的设计目标就是在满足稳定性和系统能力条件的前提下,让降噪带宽内的频点增益越大越好。
稳定性(避免啸叫)
幅度裕度
相位裕度
系统延时会极大影响控制系统的相位,延时越小,相位会越远离-180°,啸叫点也就会越向高频移动,降噪带宽也就可以越大。
下行信号补偿
当存在下行信号的场景(用户播放音乐或通话),error mic接收到的信号是由噪声和下行信号共同组成,闭环控制系统无法区分两者,会把下行信号也当成噪声来消除掉,这是我们不希望的。因此我们可以设计一个下行信号补偿滤波器(SPE,Secondary Path Estimation)来预测下行信号在error mic处的频响,对其进行补偿还原,保证音乐或通话信号不受影响。
系统辩识
不同的佩戴姿势,会造成耳机声学环境的变化,最直接的影响就是会影响喇叭发声在error mic处的频响特征(SP模型)。实际使用时的声学环境若发生变化,就会造成降噪效果急剧下降,对前馈预测的影响尤其明显,因为系数设计时是假定声学模型为常量,前馈预测又没有闭环系统的修正作用。
目前的解决方法为:针对不同的SP,设计多组参数。实际使用时,系统通过播放设计好的下行信号等方式(华为Freebuds 4的叮咚声),测出指定频段的大致频响特征,从而大致判断当前SP与哪个预设值最接近,从而选出相应的系数。
辅助控制策略
耳机工作发声正常稳定是十分重要的,因为直接关乎使用者听力健康问题,因此需要一些控制策略来避免极端情况的发生。
啸叫抑制:一般发生在人耳谐振峰处,一般采用自适应跟踪啸叫频点进行陷波处理。
An_Adaptive_Howling_Canceller_Using_2-Tap_Linear_P.pdf
削波抑制:抑制数字域信号削波,防止出现杂音。ANC系统中由于喇叭声学特性问题,数字域低频增益需要很高,喇叭才能发出抵消噪声的声波,也导致削波基本发生在低频<100Hz,解决方法是根据检测动态挂载Low Shelf滤波器,减小低频增益。
风噪检测:指定频段能量检测,自适应调整滤波器组整体增益,风大时降低降噪力度,以减少此时降噪所带来的负面效果。
自适应算法
离线设计方法限制
• 针对具体噪声场景的优化:上文提到,ANC设计为了兼顾大部分日常场景,训练数据采集使用的是均匀散射场。而实际使用时,短时间内大部分噪声场是有特点的,比如频率成分单一、噪声具有方向性等,这时离线设计好的系数并不是最优解。
• 不同人耳结构和佩戴习惯导致效果退化:每个人的人耳构造和佩戴习惯千差万别,预训练的系数只能考虑一个平均值,这就会在实际使用中,耳机降噪效果的表现波动性很大,大部分情况会有很大的退化。其实很多耳机ANC系统的降噪带宽理论上都能达到3~5kHz,但此频段也是人耳谐振峰频段,与个体特点强相关,变化很大,因此固定系数实际能达到3kHz以上降噪带宽很困难。
• 系统辨识的限制:只能根据某些频段特点进行辨识,其他频段是否符合无法判断;只能从离线训练的预设参数中进行选择,涵盖范围小;只能辨识一次,若辨识后,耳机姿态发生变化(触碰、运动等),则效果依然会变差。
• 市面上的自适应ANC:目前效果比较好的基本都还是预设滤波器参数,调节整体增益,并非调整滤波器频响形状的全自适应ANC算法。因此这种方法的限制与系统辨识一致,滤波器都是固定的预设形状,无法调整。
自适应算法的挑战
根据上述限制,自然而然会想到全自适应调整参数的方法,其实学界已经有很多成熟的自适应ANC滤波器算法(如各种FxLMS),论文也很多,但目前只被用来辅助进行ANC的离线设计,市面上的商用方案并没有全自适应的产品出现,主要原因有以下两点:
• ANC系统滤波器资源限制:FxLMS等算法用的都是FIR滤波器,而目前ANC芯片只能使用多个串联的二阶IIR滤波器。
• 开销限制:上文提到,ANC系统通常被分配的DSP算力只有3~6MCPS,即使一些芯片支持专门针对音频信号处理优化的HIFI3、HIFI4指令集,但还是远远无法用于常规的自适应算法。
• 耳道频响补偿:耳机实际使用时,由于没有耳道内mic进行数据采集,因此只能根据反馈mic的信号来进行收敛,但由于两点的PP、SP模型是有差异的,因此按照反馈mic信号收敛的结果,最终的听感效果并不一定好。而这个差异由因人而异,差异很大,所以如何去补偿预测这个差异,是个很难又很重要,需要解决的问题。
一种可实际落地的原理&框架
基本思想:
解决ANC系统滤波器资源限制:传统的频域FxLMS等算法分为两个步骤,一是在频域收敛到理想滤波器频响,二是利用rFFT等操作将频响转换为FIR。此算法在第一部分保持与传统算法一致,在第二步使用多个串联二阶IIR拟合算法代替FIR转换操作。
串联二阶IIR拟合算法:给定频域目标频响后,如何迭代得到理想的一组串联二阶IIR。
解决开销限制:1、采用异步优化的策略,解耦参数收敛过程与ANC滤波过程,即在参数搜索未完成时,ANC系统仍使用旧参数运行,计算完成后再写入新参数进行下一步数据采集和参数收敛。2、虽然采用异步收敛的策略理论可以在DSP算力上没有限制,但是考虑实际效果,算法开销不能过大,导致系数刷新频率过低,会造成主观感受变化明显并且无法跟踪变化稍快的噪声环境。因此算法还是需要保持很小的开销水平,在这种情况下,拟合算法需要尽量精简,这也意味着一些帮助跳出局部最优解的算法修饰无法使用,最优解搜索能力下降,因此可以配合使用之前的系统辨识,得到一个较优的初值,再进行收敛。
算法框架&流程
Offline Info:离线设计信息,包括根据多场景设计的参数、各个场景对应的声学模型频域信息等
FF Adapter:1、根据系统辨识给出的结果获取对应的离线设计信息,包括初始滤波器参数等。2、采集reference信号和error信号,计算理想FF频响,并根据频响调整FF滤波器组参数。3、根据FF滤波器收敛的结果,反过来修正系统辨识的结果,并重新获取离线设计信息。(系统辨识结果修正后,FB参数也会进行相应修正,不过为了稳定性,修正范围仅限于离线设计好的参数)4、逐步迭代收敛至最优解
VAD:在自适应ANC算法中,VAD的作用主要是过滤自说话的场景。由于自己说话时,声音有很大一部分会从耳内传导到耳外,与ANC算法作用的方向相反导致大量非因果成分,会对目标频响产生极大的干扰。
静音场景:由于在极端安静的场景噪声能量不足,计算出来的目标频响不准确,须停止滤波器刷新。并且此场景也不需要进行降噪,可降低降低滤波器整体增益,减小ANC系统导致人耳听到的底噪。
Block coordinate descent based algorithm for computational.pdf
DIRECT DESIGN OF BIQUAD FILTER CASCADES WITH DEEP LEARNING.pdf
Cascade biquad controller design for feedforward active noise control.pdf