回声消除的基本概念

  回音消除(Acoustic Echo Cancelling)是透过音波干扰方式消除麦克风与喇叭因空气产生回受路径(feedback path)而产生的杂音。通俗一点来说,回声消除就是为了消除机器自身发出的声音,不影响外界传递过去的声音。 如在双工通话的场景中,来自远端的经过扬声器放出来的声音被消掉,否则经过麦克风采集和近端说话人信号混在一起被传递到远端,则会出现远端的人听到自己说的话,这种回声对于一些通信设备来说体验是致命的差。

回声消除的基本流程

  回声消除常用方法如下:使用不同的自适应滤波算法调整滤波器的权值向量,估计一个近似的回声路径来逼近真实回声路径,从而得到估计的回声信号,并在纯净语音和回声的混合信号中除去此信号来实现回声的消除。

详细的来说,回声消除的过程一般分为以下几个步骤:

  • 远端信号被传递到系统。
  • 转载远端信号的扬声器在房间里。
  • 也在房间里的麦克风拾取产生的直接路径的声音,和随之而来的混响声音作为近端信号。
  • 将远端信号进行滤波并延迟到类似的(resemble)近端信号。
  • 将过滤的远端信号是从近端信号中减去。
  • 所产生的信号指不包括任何直接或回荡的声音通过扬声器在房间里的声音。

回声消除常用的算法

A 最小均方算法 LMS

自适应AEC问题中应用最广泛的就是自适应滤波算法,其中最早是由Widrow和Hoff在1959年所提出的最小均方(Least Mean Square,LMS)算法

LMS算法基于维纳滤波理论,采用最速下降算法,通过最小化误差信号的能量来更新自适应滤波器权值系数。

  • 优点:抑制旁瓣效应
  • 缺点:LMS算法计算复杂度不高,但是其收敛速率较慢,并且随着滤波器阶数(步长参数)升高,系统的稳定性下降,要保证采用最小的步长参数,保证最小的失调,可能无法满足收敛标准

  B 归一化最小均方算法 NLMS

归一化最小均方(Normalized Least Mean Squares,==NLMS)==算法是改进的LMS算法,根据原LMS算法中误差信号与远端输入信号的乘积,对远端输入信号的平方欧式范数进行归一化处理,将固定步长因子的LMS算法变为根据输入信号时变的变步长NLMS算法,

优点:改善了LMS算法收敛速度慢的缺点。计算简单、收敛速度较快的特点
缺点:收敛速度慢

C 稀疏类自适应算法——PNLMS

根据回声路径的稀疏性,Duttweiler引入了比例自适应的思想,提出了比例归一化最小均方算法 PNLMS,按比例分配滤波器的权值向量大小,该算法对回声消除的发展具有非常重要的意义。

该算法采用与滤波器抽头稀疏成正比的可变步长参数来调整算法收敛速度,利用其抽头稀疏的比例值来判断当前权重稀疏所属的活跃状态,根据状态的不同,所分配的步长大小也有所差异,活跃抽头系数分配较大的步长参数,这样可以加速其收敛,而不活跃的抽头系数则相反,通过分配其较小的步长参数来提高算法的稳态误差。每个滤波器抽头被分别赋予了不同估计值,算法的稳态收敛性得到了明显改善。然而,PNLMS 有一个明显的缺点,即比例步长参数的选择引入了定值,这会导致估计误差累积,最后使算法在后期的收敛速度减慢下来。

优点:使算法对于稀疏的回声路径,在初始阶段拥有快速的收敛速率,与此同时降低了稳态误差,
缺点:

  • 由于 PNLMS 算法过分强调大系数的收敛,而当系数变小后,P 步长也随之变小,但随着算法的运行,则可能出现算法后期收敛速度慢、不能及时收敛的情况
  • 相比于NLMS算法增加了算法的复杂度
  • 另外在回声路径非稀疏情况下,收敛速度会变得比NLMS算法更慢

D 子带自适应滤波器(SAF)

在声学回声消除应用中,远端输入语音信号的相关性较高,然而,传统的方法是基于“信号的无关性”假设的,传统的全带LMS 和NLMS 等计算复杂度低的随机梯度算法收敛速度明显下降。

远端语音信号相关性有两层含义:

时域上:它表征语音信号相关矩阵特征值的扩散度
频域上:它表征远端语音信号的频谱动态范围

一般来说,语音信号相比白色信号,前者明显有更大的频谱动态范围,即更大的信号相关性。因此,可以通过降低输入信号的相关性来加快算法收敛速度,但是行之有效的一种方法是将自适应滤波器和滤波器组理论相结合,提出了子带自适应滤波(subband adaptive filter,SAF)算法,子带结构是基于频域对信号进行的一种处理(节省计算量、提高收敛速度)。 在传统的 SAF中,子带自适应算法都是以最小化子带误差信号为目标的,这样基于局部目标函数误差的最小化不一定是全局误差能量最小化。而分析滤波器组在子带切割和综合滤波器组重建全带信号时皆会引入时延,在AEC 应用中,这样的时延会使包含近端语音的全带误差信号传到远端,为了消除时延的影响,无延时子带闭环结构系统以全局误差能量最小化为约束条件来调整滤波器系数。最后,确保自适应滤波算法能够收敛到最佳的滤波器系数。

优点:改善了全带自适应滤波算法在相关信号条件下的收敛速率
缺点:其稳态误差由于输出时存在的混叠分量而显著升高,当采用正交镜像滤波器组时,虽然可以通过子带系统将混叠部分相互抵消掉,但在现实中却无法实现。

总结

 基于维纳滤波发展起来的 LMS 算法因其结构简单,运算量小,稳定性好等特性,依然是目前得到广泛应用的一种自适应滤波算法。

 有人提供了一种折中的方案:基于多带结构的改进型自适应滤波切换算法NLMS-NSAF

一 首先远端语音信号利用包络法判别有无语音段,

二 然后将信号状态输出到自适应多带结构算法模块当中。

三 若语音区输入信号的短时能量较大,则使用收敛速度快的自适应滤波算法(NLMS);

四 若语音区输入信号的短时能量较小,需考虑计算量低的算法(NSAF),

五 语音在无语音区时算法迭代停止。

对输入语音信号能量高低的判定是通过和阈值比较得到的。在充分考虑语音特性的情况下,切换算法实现了算法在收敛速度的优势,同时完成了同算法复杂度的优化选择。最后达到了提高滤波算法性能、降低运算量的目的。这是一个实际的解决方案,不过实际的效果还要等待后续验证,敬请关注,后续我会对这块做一个深挖。

参考文档:
https://www.debugger.wiki/article/html/1572616852593650

https://www.cnblogs.com/LXP-Never/p/11773190.html

回声消除AEC(Acoustic Echo Cancellation)概括介绍及基本原理分析的更多相关文章

  1. 声学回声消除(Acoustic Echo Cancellation)

    回声就是声音信号经过一系列反射之后,又听到了自己讲话的声音,这就是回声.一些回声是必要的,比如剧院里的音乐回声以及延迟时间较短的房间回声:而大多数回声会造成负面影响,比如在有线或者无线通信时重复听到自 ...

  2. 回声消除(AEC)原理

    一.前言 因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘.高端和难以理解的技术 ...

  3. 论文翻译:2018_Deep Learning for Acoustic Echo Cancellation in Noisy and Double-Talk Scenarios

    论文地址:深度学习用于噪音和双语场景下的回声消除 博客地址:https://www.cnblogs.com/LXP-Never/p/14210359.html 摘要 传统的声学回声消除(AEC)通过使 ...

  4. 论文翻译:2020_Generative Adversarial Network based Acoustic Echo Cancellation

    论文地址:http://www.interspeech2020.org/uploadfile/pdf/Thu-1-10-5.pdf 基于GAN的回声消除 摘要 生成对抗网络(GANs)已成为语音增强( ...

  5. 论文翻译:2020_A Robust and Cascaded Acoustic Echo Cancellation Based on Deep Learning

    论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3364/attachments/777/815/Thu-1-10- ...

  6. 论文翻译:2021_ICASSP 2021 ACOUSTIC ECHO CANCELLATION CHALLENGE: INTEGRATED ADAPTIVE ECHO CANCELLATION WITH TIME ALIGNMENT AND DEEP LEARNING-BASED RESIDUAL ECHO PLUS NOISE SUPPRESSION

    论文地址:https://ieeexplore.ieee.org/abstract/document/9414462 ICASSP 2021声学回声消除挑战:结合时间对准的自适应回声消除和基于深度学习 ...

  7. 论文翻译:2021_AEC IN A NETSHELL: ON TARGET AND TOPOLOGY CHOICES FOR FCRN ACOUSTIC ECHO CANCELLATION

    论文地址:https://ieeexploreieee.53yu.com/abstract/document/9414715 Netshell 中的 AEC:关于 FCRN 声学回声消除的目标和拓扑选 ...

  8. 论文翻译:2021_Joint Online Multichannel Acoustic Echo Cancellation, Speech Dereverberation and Source Separation

    论文地址:https://arxiv.53yu.com/abs/2104.04325 联合在线多通道声学回声消除.语音去混响和声源分离 摘要: 本文提出了一种联合声源分离算法,可同时减少声学回声.混响 ...

  9. 论文翻译:2020_Attention Wave-U-Net for Acoustic Echo Cancellation

    论文地址:http://www.interspeech2020.org/uploadfile/pdf/Thu-1-10-10.pdf Attention Wave-U-Net 的回声消除 摘要 提出了 ...

  10. 论文翻译:2021_Semi-Blind Source Separation for Nonlinear Acoustic Echo Cancellation

    论文地址:https://ieeexplore.ieee.org/abstract/document/9357975/ 基于半盲源分离的非线性回声消除 摘要: 当使用非线性自适应滤波器时,数值模型与实 ...

随机推荐

  1. 【文件】C语言文件操作及其使用总结篇【初学者保姆级别福利】

    [文件]C语言文件操作及其使用总结篇[初学者保姆级别福利] 一篇博客学好动态内存的管理和使用 这篇博客干货满满,建议收藏再看哦!! 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很 ...

  2. PHP的数据对象PDO

    PHP的数据对象PDO 一.什么是PDO 手册说:PHP 数据对象 (PHP Data Object) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体 ...

  3. 揭秘C语言的心脏:深入探索指针与数组的奥秘

    欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. strlen()和sizeof的区别 名称 区别 sizeof 1. sizeof是 ...

  4. C语言无锁高并发安全环形缓冲队列设计(一)

    1.前言 队列,常用数据结构之一,特点是先进先出. 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限 ...

  5. 一键跳转组件所在的文件与具体行数,提升排查效率,分享几个 React Developer Tools 使用小技巧

    壹 ❀ 引 React Developer Tools对于很多开发同学可能就是一个检查组件props传递对不对的工具,但事实上它的功能比我们想象的强大.比如我们日常排查问题,常常会遇到想知道某个页面某 ...

  6. NC50390 布局 Layout

    题目链接 题目 题目描述 FJ有N头奶牛 \((2 \leq N \leq1000)\) ,编号为 \(1 \ldots N\) .奶牛们将按照编号顺序排成一列队伍(可能有多头奶牛在同一位置上).换句 ...

  7. NC14700 追债之旅

    题目链接 题目 题目描述 小明现在要追讨一笔债务,已知有n座城市,每个城市都有编号,城市与城市之间存在道路相连(每条道路都是双向的),经过任意一条道路需要支付费用.小明一开始位于编号为1的城市,欠债人 ...

  8. NC25064 [USACO 2007 Mar G]Ranking the Cows

    题目链接 题目 题目描述 Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate ...

  9. Python枚举类型enum

    为什么需要枚举 枚举(Enum)是一种数据类型,也是一种特别的类,是绑定到唯一值的符号表示,可以使用它来创建用于变量和属性的常量集枚举类可以看成是一个下拉菜单,给出特定的选项且这些选项不可修改,更贴近 ...

  10. Centos中报错apt Command not Found

    先说结论: 在centos下用yum install xxxyum和apt-get的区别: 一般来说著名的linux系统基本上分两大类: RedHat系列:Redhat.Centos.Fedora等 ...