回声消除(AEC)原理、算法及实战——AEC背景介绍

2023-11-19

回声就是声音信号经过一系列反射之后,又听到了自己讲话的声音,这就是回声。一些回声是必要的,比如剧院里的音乐回声以及延迟时间较短的房间回声;而大多数回声会造成负面影响,比如在有线或者无线通信时重复听到自己讲话的声音(回想那些年我们开黑打游戏时,如果其中有个人开了外放,他的声音就会回荡来回荡去)。因此消除回声的负面影响对通信系统是十分必要的。

针对回声消除(Acoustic Echo Cancellation,AEC )问题,现如今最流行的算法就是基于自适应滤波的回声消除算法。本文从回声信号的两种分类以及 AEC 的基本原理出发,介绍几种经典的 AEC 算法并对其性能进行阐释。

回声分类

  在通信系统中,回声主要分为两类:电路回声声学回声线性回声非线性回声

电路回声

  电路回声通常产生于有线通话中,为了降低电话中心局与电话用户之间电话线的价格,用户间线的连接采用两线制;而电话中心局之间连接采用四线制(上面两条线路用于发送给用户端信号,下面两条线路用于接收用户端信号)。问题就出来了,造成电路回声的根本原因是转换混合器的二线-四线阻抗不能完全匹配(使用的不同型号的电线或者负载线圈没有被使用的原因),导致混合器 接收线路 上的语音信号流失到了 发送线路 ,产生了回声信号,使得另一端的用户在接收信号的同时听到了自己的声音。

在现如今的数字通信网络中,转换混合器与数模转换器融为一体,但无论是模拟电子线路还是数字电子线路,二-四线的转换都会造成阻抗不匹配问题,从而导致其产生电路回声,影响现代通信质量。由于电路回声的线性以及稳定性,用一个简单的线性叠加器就可以实现电路回声消除首先将产生的回声信号在数值上取反,线性地叠加在回声信号上,将产生的回声信号抵消,实现电路回声的初步消除。然而由于技术缺陷,线性叠加器不能完整地将回声信号抹去,因此需要添加一个非线性处理器,其实质是一个阻挡信号的开关,将残余的回声信号经过非线性处理之后,就可以实现电路回声的消除,或者得到噪声很小的静音信号。由于电路回声信号是线性且稳定的,所以比较容易将其消除,而本文主要研究的是如何消除非线性的声学回声。

声学回声

  在麦克风与扬声器互相作用影响的双工通信系统中极易产生声学回声。如下图所示

远端讲话者-->远端麦克风-->通话网络---->近端扬声器--->近端麦克风-->通话网络-->远端扬声器--->远端麦克风--->远端电话-->近端电话---->......就这样无限循环,

详细讲解:远端讲话者的声音被远端麦克风采集并传入通信设备,经过无线或有线传输之后达到近端的通信设备,并通过近端扬声器播放,这个声音又会被近端麦克风采集形成声学回声,经传输又返回到远端的通信设备,并通过远端扬声器播放出来,从而远端讲话者就听到了自己的回声。

详细讲解:远端讲话者的声音被远端麦克风采集并传入通信设备,经过无线或有线传输之后达到近端的通信设备,并通过近端扬声器播放,这个声音又会被近端麦克风采集形成声学回声,经传输又返回到远端的通信设备,并通过远端扬声器播放出来,从而远端讲话者就听到了自己的回声。

远端语音信号:被远端麦克风采集的信号(说话人语音),也等于近端扬声器播放的语音,也称为参考语音

 近端语音信号:近端说话人语音信号

 近端麦克风接收的语音信号:近端扬声器播放的声音+在房间多径反射的语音+近端说话人的语音

远端混合回声信号:整个对话过程中,近端麦克风接收到的信号有近端说话人语音信号和近端扬声器播放的远端说话人语音,这样叠加的语音信号通过传输线路传到远端扬声器播放导致远端人听到自己刚刚检测出的语音信号,即所谓的回声。

声学回声信号根据传输途径的差别可以分别直接回声信号和间接回声信号。

  • 直接回声(线性回声):近端扬声器将语音信号播放出来后,被近端麦克风直接采集后得到的回声;直接回声不受环境的印象,与扬声器到麦克风的距离及位置有很大的关系,因此直接回声是一种线性信号
  • 间接回声(非线性回声):近端扬声器将语音信号播放出来后,语音信号经过复杂多变的墙面反射后由近端麦克风采集;间接回声的大小与房间环境、物品摆放以及墙面吸引系数等等因素有关,因此间接回声是一种非线性信号

回声消除技术主要用于在免提电话、电话会议系统等情形中。

一个完整的回声消除系统,包含以下几个模块:

  1. 时延估计(Time Delay Estimation, TDE) 模块
  2. (线性)回声消除(Linear Acoustic  Echo Cancellation, AEC) 模块
  3. 双讲检测(Double-Talk Detect, DTD) 模块
  4. 非线性残余声学回声抑制(Residual Acoustic Echo Suppression, RAES) 模块

 

AEC的基本原理

回声消除常用方法

  • 声场环境材料处理
    • 墙壁、天花板换成吸音材料,有效的较少声音的反射,
    • 优缺点:可以较为直接的抑制间接噪声,但是直接噪声无法抑制;成本较高
  • 回声抑制器
    • 通过一个电平对比单元 轮流打开和关闭扬声器和麦克风
    • 优缺点:导致功放设备的输出信号不连续,总体效果不好
  • 自适应回声抵消(用的最多)
    • 通过自适应算法来调整滤波器的迭代更新系数,估计出一个期望信号,逼近经过实际回声路径的回声信号,也就是去模拟回声信号,然后从麦克风采集的混合信号中减去这个模拟回声,达到回声抵消的功能

如今解决 AEC 问题最常用的方法,就是

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

x(n)为远端语音,经过未知的回声路径w(n)得到远端回声语音y(n)=x(n)∗w(n),再加上近端语音s(n),得到期望信号d(n)=y(n)+s(n)。x(n)通过自适应滤波器\hat{w}(n)得到估计的回声信号\hat{y}(n),并与期望信号d(n)相减得到误差信号e(n)=d(n)-\hat{y}(n)误差信号的值越小说明自适应滤波算法所估计的回声路径就越接近实际的回声路径。

滤波器采用特定的自适应算法不停地调整权值向量,使估计的回声路径w^(n)逐渐趋近于真实回声路径w(n)。显然,在 AEC 问题中,自适应滤波器的选择对回声消除的性能好坏起着十分关键的作用。

参考链接:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回声消除(AEC)原理、算法及实战——AEC背景介绍 的相关文章

随机推荐

  • vue构建路由,报错Cannot read properties of undefined (reading ‘forEach‘)

    构建vue路由 这个foreach报错 意味着有一个进入循环的值为null 如果看了其他文章的标准还没有解决的话 建议加一个routes constantRoutes 即在定义router时手动加上一个routes属性 完整的代码 App
  • Linux 如何设置开机自启动脚本

    Linxu开机自启动脚本 一 CentOS系统和Redhat系统如下 1 修改 etc rc d rc local为 bin bash THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES It is
  • Android开发-在Android应用里接入AdMob广告进行变现的实现

    前 言 前段时间 自己开发了一款个人的Android应用想上线 但是由于国内的应用商城对个人开发者不是很友好 即使应用已经申请了软件著作权了也不能上线的了 有些应用只能以企业的名义来上线不能以个人的名义来上线 如影视类 新闻资讯类的应用 无
  • 遇见VS,scanf中_s不能少,要不然Bug报到家,如何解决这个问题呢?

    相信大家第一次用VS时 都会遇到这样的问题 VS莫名其妙的跟你说要用scanf s 使用scanf这个函数不安全 这里说一下为什么我们要用scanf而不使用它推荐的scanf s 我们写代码总不能是写给自己看吧 我们要写的代码可能是要发给别
  • Nginx基础03:配置文件nginx.conf(Part2)

    上一篇文章概述与罗列了 全局配置块 events配置块 http全局块 的基本配置与属性 本篇文章将继续深入server块的配置项 以及相关应用 上篇文章地址 Nginx基础02 配置文件nginx conf Part1 如何使用本篇文章
  • webpack代码混淆

    作者 桑榆 QQ 934440653 有问题 评论留言 或qq联系 安装 npm install save dev webpack obfuscator 属性 compact true 压缩 无换行 controlFlowFlattenin
  • 网络安全体系方法论

    安全牛整合多位资深安全顾问的一线咨询经验 首次公开发布 网络安全体系方法论 旨在给企业或机构提供一个最佳实践的参考 以帮助企业真正提升对网络安全工作的认识 并在安全建设和运营中不断成长 本架构方法论参考了NIST Cybersecurity
  • 什么是流程图

    什么是流程图 流程图是对过程 算法 流程的一种图像表示 在技术设计 交流及商业简报等领域有广泛的应用 通常用一些图框来表示各种类型的操作 在框内写出各个步骤 然后用带箭头的线把它们连接起来 以表示执行的先后顺序 用图形表示算法 直观形象 易
  • How does double arrow (=>) operator work in Perl?

    原文链接 https stackoverflow com questions 4093895 how does double arrow operator work in perl The use of the gt operator ca
  • Ant Design Pro从零到一(认识AntD)

    废话 在我们第一次接触AntD的时候 会遇到两个东西 一个是Ant Design 另一个是Ant Design Pro 他们的官网分别是 Ant Design 一套企业级 UI 设计语言和 React 组件库 Ant Design Pro
  • 商品期货策略-ATR通道突破策略

    实现平台 BigQuant 人工智能量化投资平台 可在文末前往原文一键克隆代码进行进一步研究 导语 商品期货交易上线啦 听闻这个消息的小编当然坐不住了 决定立刻商品期货走一波 本文选择实现的是经典的ATR通道突破策略 也被称为波动性突破策略
  • C++——详解类模板与友元函数

    纵有疾风起 人生不言弃 本文篇幅较长 如有错误请不吝赐教 感谢支持 文章目录 类模板与友元函数 1 非模板友元函数 2 约束模板友元函数 3 非约束模板友元函数 类模板与友元函数 模板类的友元函数有三类 1 非模板友元函数 友元函数不是模板
  • 【2023秋招面经】深信服 前端 一面(1h)

    自我介绍 项目比较有难度的地方 你刚刚说Vue3按功能来组合 不是按Option API组合 你简单写一下伪代码 实现一个计时器 进入这个模块计时器开始计时 离开页面则销毁 在中间过程中 获取计时的时间 function useTime 实
  • JavaScript动态生成表格

    源代码
  • 修改 TeamViewer ID 的方法:

    TeamViewer 使用频繁后会被判定为商业用途 不可用 此软件的账号和设备mac地址绑定 修改TeamViewer ID后可以重新开始使用 下述方法可以成功修改TeamViewer ID 关闭TeamViewer 开始 gt 运行 录入
  • element-table新增 以input框形式输入

    工作遇到的问题记录下 代码如下 选了其中一行做例子
  • 好用的在线画图工具processon

    ProcessOn是一款基于SaaS的前沿 高效线上作图工具 它将Visio Xmind等专业作图工具搬到了 云端 注册链接 https www processon com i 564bf42ce4b0a080c6d1b18f 保存 分享都
  • go字符串详解

    文章目录 摘要 1 byte和rune类型 2 字符串 string 3 练习 反转字符串 摘要 go字符串结构体包含 指向底层存储数组的指针 字符串长度 字符串按utf 8将字符编码成二进制数 然后存储在byte数组中 因为utf 8编码
  • gin jwt-go 生成token及jwt中间件验证

    一 定义jwt中间件 同时将 生成token 验证token token中间件handlerfunc都写在中间件文件中 基于 github com dgrijalva jwt go 包 gin框架 obj middleware jwt go
  • 回声消除(AEC)原理、算法及实战——AEC背景介绍

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