zoukankan      html  css  js  c++  java
  • 主动降噪(Active Noise Control)

    智能耳机

    人机交互

    1. 智能声学终端
    2. 智能耳机
      • 智能音箱
      • 智能听力器
    3. 喇叭单体
      • 动圈喇叭
    4. 新材料
      • DLC
      • 石墨烯
      • 陶瓷单位
      • 吸音材料
    5. 智能芯片
      • 阵列式麦克风
      • 声纹传感器
    6. 演算法
      • 降噪算法
      • 智能听力保护
      • ANC

    ANC

      降低噪音通常所采用的三种降噪措施,即在声源处降噪、在传播过程中降噪及在人耳处降噪,都是被动的。为了主动地消除噪声,人们发明了“有源消声”这一技术。ANC(Active Noise Control)又称为主动噪声控制,常应用在耳机降噪中,

    原理:通过降噪系统产生与外界噪音相等的反向声波,将噪声中和,从而实现降噪的效果,

      所有的声音都由一定的频谱组成,如果可找到一种声音,其频率振幅与所要消除的噪声完全一样,只是相位刚好相反(相差$180^o$)就可以将这噪声完全抵消。

    频率:一秒钟语音信号震动的次数

    振幅:声音大小

    相位:某一时刻声波处于一个周期内的位置,如果我们规定空气被压缩的最厉害的地方是相位的零点,那么半个周期之后,空气变得最为稀疏的地方,相位就变成180°。等到空气再次被压缩得最密集时,就经过了一整个周期,相位变化了360°又重新变为0°。

    办法:先采集噪声,所以处理器会根据噪声进行预测,预测出下一时刻噪声的情况,并产生相位相反的噪声,来抵消原噪声。

      为了保证降噪质量,还需要一个反馈麦克风用来检测所合成后的噪声是否真的变小了。这时处理器会根据这个反馈麦克风测量到的结果,对处理过程进行调整从而进一步降低合成后的噪声音量,这叫做自适应过程。好比处理器变聪明了,能够根据消噪的效果不断调整自己,以达到最佳降噪效果。

      众所周知,声音是由震动产生的,因此通过解决震动也可以有效的解决噪声问题,当金属板、机器外壁等一般均由薄金属板震动产生声音,进而辐射噪声,象这类由金属板结构振动引起的噪声称之为结构噪声。

      咳咳咳咳,总结一下,

    一:是通过声音抑制声音

    二:通过减少震动来抑制声音

    降噪耳机

    降噪功能对耳机的作用很重要,一是减少噪音,避免过度放大音量,从而减少对耳朵的损害。二是过滤噪音从而提高音质和通话质量。

    降噪可分为被动式降噪和主动式降噪。

    被动式降噪也就是物理降噪,被动式降噪是指利用物理特性将外部噪声与耳朵隔绝开,主要通过耳机的头梁设计得紧一些、耳罩腔体进行声学优化、耳罩内部放上吸声材料……等等来实现耳机的物理隔音。被动降噪对高频率声音(如人声)的隔绝非常有效,一般可使噪声降低大约为15-20dB。

    主动式降噪就是商家在宣传耳机降噪功能时会主打的ANC、ENC、CVC、DSP等降噪技术

    降噪耳机,采用ANC降噪,主动噪音控制,主要是针对外部环境中的高、低频噪声,不同于一般耳机的被动隔音,其原理为:

    1. 先由安置于耳机内的讯号麦克风侦测耳朵能听到的环境中低频噪音 (100 ~ 1000Hz)(目前已经可以到3000Hz)
    2. 再将噪声讯号传至控制电路,控制电路进行实时运算
    3. 通过 Hi-Fi 喇叭发射与噪音相位相反、振幅相同的声波与外界噪声相加,来抵消噪音
    4. 因此噪音就消失听不见了

    主动降噪根据拾音麦克风位置的不同,分为前馈式主动降噪与反馈式主动降噪。

    这么一来,这个耳机需要一段的算法处理时间,先学习噪声,这个学习需要时间,然后再把学习到的噪声相位反转,有一个自适应调整期。

    主动降噪耳机价格昂贵,但是一般效果优秀,佩戴舒适。但是需要独立电池供电,大多数被动降噪耳机可以不耗电使用(也不主动降噪)

    ENC降噪

    ENC(Environmental Noise Cancellation,环境降噪技术),能有效抑制90%的反向环境噪声,由此降低环境噪声最高可达35dB以上,让游戏玩家可以更加自由的语音沟通。通过双麦克风阵列,精准计算通话者说话的方位,在保护主方向目标语音的同时,去除环境中的各种干扰噪声。

    DSP降噪

    DSP是英文(digital signal processing)的简写。主要是针对高、低频噪声。工作原理是麦克风收集外部环境噪音,然后系统复制一个与外界环境噪音相等的反向声波,将噪音抵消,从而达到更好的降噪效果。DSP降噪的原理和ANC降噪相似。但DSP降噪正反向噪音直接在系统内部相互中和抵消。

    CVC降噪

      CVC(Clear Voice Capture)是通话软件降噪技术。主要针对通话过程中产生的回声。通过全双工麦克风消噪软件,提供通话的回声和环境噪音消除功能,是目前蓝牙通话耳机中最先进的降噪技术。

    相关应用

    主动降噪主要应用在车载音响中:

      凯迪拉克是率先将主动降噪技术运用于汽车领域的品牌。2013年一季度在国内上市的凯迪拉克XTS豪华轿车,其BOSE 5.1环绕声高级音响系统具备主动降噪静音系统(ANC),用车内麦克风采集噪音样本,经系统分析处理之后,由车载音响的扬声器播放相反的音频,以抵消噪音波,营造更安静的车内氛围。

    主动降噪在室内降噪中的运用:

      随着人们居住要求的日益提高,室内降噪需求也愈发凸显,针对窗外、四邻活动及家用电器运转等噪声源,研发三维开放声场主动降噪技术并将其运用到室内降噪以改善声环境,是未来室内噪声控制的一种可行方案。

    核心算法

      ANC降噪实现核心算法为:FxLMS(最小均方差算法)。最小均方差算法以均方误差为代价函数,并使误差降到最小的算法。 具体算法推导这里不做具体介绍,这里直接列出表达式

    其中, x(k)为输入信号矩阵,W(k)为调整权值矩阵,d(k)为目标(理想)输出信号矩阵,y(k)为实际输出信号矩阵,e(k)为误差信号矩阵,第3个公式为权值调整公式,mu为收敛因子(值为随机的,0<mu<x(k)的相关矩阵最大特征值的倒数)

    Matlab仿真LMS滤波器

    根据表达设计滤波器

    function [yn,W,en]=LMS(xn,dn,M,mu,itr)
    % LMS(Least Mean Squre)算法
    % 输入参数:
    %     xn   输入的信号序列      (列向量)
    %     dn   所期望的响应序列    (列向量)
    %     M    滤波器的阶数        (标量)    滤波器的阶数,就是指过滤谐波的次数,其阶数越高,滤波效果就越好
    %     mu   收敛因子(步长)      (标量)    要求大于0,小于xn的相关矩阵最大特征值的倒数    
    %     itr  迭代次数            (标量)    默认为xn的长度,M<itr<length(xn)
    % 输出参数:
    %     W    滤波器的权值矩阵     (矩阵)
    %          大小为M : itr,
    %     en   误差序列(itr : 1)    (列向量)  
    %     yn   实际输出序列         (列向量)
    
    % 参数个数必须为4个或5个
    if nargin == 4                 % 4个时递归迭代的次数为xn的长度 
        itr = length(xn);
    elseif nargin == 5             % 5个时满足M<itr<length(xn)
        if itr>length(xn) || itr<M
            error('迭代次数过大或过小!');
        end
    else
        error('请检查输入参数的个数!');
    end
    
    % 初始化参数
    en = zeros(itr,1);             % 误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差
    W  = zeros(M,itr);             % 每一行代表一个加权参量,每一列代表-次迭代,初始为0
    
    % 迭代计算
    for k = M:itr                  % 第k次迭代
        x = xn(k:-1:k-M+1);        % 滤波器M个抽头的输入
        y = W(:,k-1).' * x;        % 滤波器的输出
        en(k) = dn(k) - y ;        % 第k次迭代的误差 
        % 滤波器权值计算的迭代式
        W(:,k) = W(:,k-1) + 2*mu*en(k)*x;
    end
    
    % 求最优时滤波器的输出序列
    yn = inf * ones(size(xn));
    for k = M:length(xn)
        x = xn(k:-1:k-M+1);
        yn(k) = W(:,end).'* x;
    end

    调用LMS函数仿真

    close  all
    % 正弦信号的产生 
    t=0:199;
    xs=5*sin(0.3*t);
    figure;
    subplot(2,1,1);
    plot(t,xs);grid;
    ylabel('幅值');
    title('{输入正弦波信号}');
     
    % 随机噪声信号的产生
    randn('state',sum(100*clock));
    xn=randn(1,200);
    zn=randn(1,200);
    xn=xn+zn;
    subplot(2,1,2);
    plot(t,xn);grid;
    ylabel('幅值');
    xlabel('时间');
    title('{输入随机噪声信号}');
     
    % 信号滤波
    xn = xs+xn;
    xn = xn.' ;   % 输入信号序列
    dn = xs.' ;   % 预期理想结果序列
    M  = 23   ;   % 滤波器的阶数
    rho_max = max(eig(xn*xn.'));   % 输入信号相关矩阵的最大特征值
    mu = rand()*(1/rho_max)   ;    % 收敛因子 0 < mu < 1/rho_max
    [yn,W,en] = LMS(xn,dn,M,mu);
     
    % 绘制滤波器输入信号
    figure;
    subplot(2,1,1);
    plot(t,xn);grid;
    ylabel('幅值');
    xlabel('时间');
    title('{滤波器输入信号}');
    % 绘制自适应滤波器输出信号
    subplot(2,1,2);
    plot(t,yn);grid;
    ylabel('幅值');
    xlabel('时间');
    title('{自适应滤波器输出信号}');
    % 绘制自适应滤波器输出信号,预期输出信号和两者的误差
    figure 
    plot(t,yn,'b',t,dn,'g',t,dn-yn,'r',t,xn,'m');grid;
    legend('自适应滤波器输出','预期输出','误差','自适应滤波器输入');
    ylabel('幅值');
    xlabel('时间');
    title('{自适应滤波器}');
    %绘制最优权值点
    figure
    mm=0:M-1;
    plot(mm,W(:,end)','m*');grid;
    title('{最优权值点}');

    实验效果图:

    结果分析

      输入信号为正弦信号加噪声的混合信号,可见正弦信号受噪声影响失真较大;实验输出信号失真较小,噪声信号已经很小,这里可以调节M滤波器阶数来调节ANC降噪效果。可见,LMS算法可实现ANC降噪功能。

      实际应用中,ANC降噪对2KHZ以下的信号噪声降噪效果比较好,对高频噪声降噪效果很差。原因为高频信号波长短,对相位偏差也比较敏感,导致ANC对高频噪声降噪效果差。一般高频噪声可以被耳机物理的遮蔽屏蔽掉,这种降噪被称为被动降噪。

      总结,一般2kHz噪声信号使用ANC,高频信号没有必要使用ANC。实际测试中的应用,测试步骤:

    1. 关闭ANC时,声学测试软件测试声学参数FR;
    2. 打开ANC时,声学测试软件测试声学参数FR,这里通过调节gain值,来调节降噪效果,使降噪效果适中。因为降噪效果差,达不到降噪的目的;降噪效果如果太好,噪声信号趋近于0,会使耳机产生自激。

    Feedforward ANC 主动降噪原理

      feedforward式主动降噪耳机的示意图,图中,Ref mic在耳机耳罩上,采集环境噪声。Error mic在耳机内,采集降噪处理后的残差噪声,Speaker播放ANC处理后的anti-noise。

      上图是ANC系统的原理图,一共三层,用虚线分隔。最上一层primary path是从ref mic到error mic的声学通道,响应函数用P(z)P(z)表示;中间一层是模拟通道,其中secondary path是adaptive filter输出到返回残差的通路,包括DAC、reconstruction filter、power amplifier、speaker播放、再采集、pre-amplifier、anti-aliasing filter、ADC;最下一层是数字通路,其中adaptive filter不断调整滤波器权系数来削减残差,直到收敛。最常用的方案是用FIR滤波器结合LMS算法来实现adaptive filter。简化上图2,得到下图

      图3

      先简要说几句adaptive filter和LMS(Least mean square)算法的原理,再说图3。如图4,给定输入x和desired output d,adaptive filter每次迭代会更新系数,使其输出$y$与$d$之差越来越小,直到残差足够接近0且收敛。LMS是adaptive filter的一种更新算法。LMS的目标函数是瞬时误差的平方$e^2(n)=(d(n)-y(n))^2,为了minimize目标函数,对其应用梯度下降就得到算法的更新公式。采用FIR滤波器的LMS算法的更新公式为:

    $w(n+1)=w(n)+mu e(n)x(n)$,其中$mu$为step size。如果随着迭代进行调整$mu$的大小,就是变步长的LMS算法。

     图4

    再来说图3。这里adaptive filter输出后还要经过$S(z)$才去和desire output比较,$S(z)$会引起instability,用文献的话说,“the error signal is not correctly ‘aligned’ in time with the reference signal”,破坏了LMS的收敛性。一种有效的方法是FXLMS(Filtered-X LMS),也就让x(n)经过$Sˆ(z)$再输入给LMS 模块, $hat{S}(z)$是$S(z)$的估计。FXLMS的objective:
    $$e^2(n)=(d(n)-s(n)*[w^T(n)x(n)])^2$$

    所以$gradient=-2e(n)s(n)*x(n)$,其中$s(n)$未知,用其estimate近似,所以FXLMS的更新公式是

    $ extbf{w}(n+1)= extbf{w}(n)+{mu}e(n) extbf{x}'(n)$

    其中$ extbf{x}'(n)=widehat{s}(n)* extbf{x}(n)$

      当adaptive filter收敛时,$E(z)=X(z)P(z)-X(z)W(z)S(z)≈0$,因此$W(z)≈P(z)/S(z)$。也就是说,自适应滤波器的权系数是由耳机的primary path和secondary path决定的。耳机的primary path和secondary path相对稳定,所以adaptive filter的权系数也相对稳定。因此为实现简单,某些厂家的ANC耳机的权系数在出厂时就确定了。当然这种ANC耳机的听感体验明显不及具有真正自适应意义的ANC耳机,因为在实际情况下,外部噪声相对耳机的方向、不同温度等因素会对耳机的通道响应有影响。

    Matlab验证

    写Matlab代码,用变步长LMS的adaptive filter,得仿真结果如图5。在0到2KHz范围内,利用feedforward ANC消高斯白噪,噪声衰减平均30dB+。Matlab库里的FXLMS是定步长的,效果要差一些。

    Q&A

    遇到的困惑写出来分享一下。
    1. ANC为什么只针对2kHz以下的低频噪音?
      一方面,耳机的物理隔音方式(被动降噪)可以有效阻挡高频噪音,没必要用ANC降高频噪声。另一方面,低频噪声波长较长,可以承受一定的相位延迟,而高频噪声波长短,对相位偏差敏感,因此ANC消高频噪声并不理想。
    2. 当electronic delay比primary delay大时,算法性能大大下降如何理解?
      P(z)延时小,S(z)延时大,比如P(z)=z-1, S(z)=z-2,只有当W(z)=z才能满足要求,非因果,unreachable。
    3. Feedforward ANC、narrow-band feedforward ANC、feedback ANC有什么区别?
      Feedforwad结构有一个ref mic和一个error mic,分别采集外部噪音和内部残差信号。feedback结构只有一个error mic,由error mic和adaptive filter output生成reference signal。
      Broad-band feedforward就是上面所述结构,而narrow-band结构中,noise source会产生某个signal触发signal generator,signal generator再生成reference signal送给adaptive filter。只适用于消除periodic noise。
      Feedback ANC由于只有error mic,用error mic来恢复feedforward结构中ref mic采集的信号,通路不满足因果约束,因此只消除predictable noise components,即窄带周期性噪声。需要注意的是,feedforward如果不满足因果约束,即electronic delay比主通道acoustic delay长的话,也只能消除窄带周期性噪声。
      另外还有一种Hybrid ANC的结构,同时包含feedforward和feedback结构,主要的优点是可以节省自适应滤波器的阶数。

    Reference

    主要参照[1],非常详细的一篇tutorial review,书[2]详细推导和说明了[1]中的细节。图1截自jabra官网,图2和图3来自[3],图4来自Wikipedia。

    [1]: Kuo S M, Morgan D R. Active noise control: a tutorial review[J]. Proceedings of the IEEE, 1999, 87(6):943-973.
    [2]: Kuo S M, Morgan D. Active Noise Control Systems: Algorithms and DSP Implementations[M]. John Wiley & Sons, Inc. 1996.
    [3]: Kajikawa Y, Gan W S, Kuo S M. Recent advances on active noise control: open issues and innovative applications[J]. Apsipa Transactions on Signal & Information Processing, 2012, 1(2):e3.

    实现困难度

    主动降噪+被动降噪

    参考文献

    wjzblog的CSDN博客 ANC降噪学习

    语音唤醒

  • 相关阅读:
    取得窗口大小和窗口位置兼容所有浏览器的js代码
    一个简单易用的导出Excel类
    如何快速启动chrome插件
    网页表单设计案例
    Ubuntu下的打包解包
    The source file is different from when the module was built. Would you like the debugger to use it anyway?
    FFisher分布
    kalman filter
    Group delay Matlab simulate
    24位位图格式解析
  • 原文地址:https://www.cnblogs.com/LXP-Never/p/11683944.html
Copyright © 2011-2022 走看看