解密回声消除技术之一(理论篇)之二(应用篇) 收藏

news/2024/12/26 18:38:00

  解密回声消除技术之一(理论篇)之二(应用篇) 收藏
转自

http://silversand.blog.51cto.com/820613/166095

http://silversand.blog.51cto.com/820613/166101

一、前言


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


要了解回声消除技术的来龙去脉,不得不提及作为现代通讯技术的理论基础—— 数字 信号处理理论。 首先,数字信号处理理论里面有一门重要的分支,叫做自适应信号处理。而在经典的教材里面,回声消除问题从来都是作为一个经典的自适应信号处理案例来讨论的。既然回声消除在教科书上都作为一种经典的具体的应用,也就是说在理论角度是没有什么神秘和新鲜的,那么回声消除的难度在哪里?为什么提供回声消除技术(不管是芯片还是算法)的公司都是来自国外?回声消除技术的神秘性在哪里?
 
二、回声消除原理


从通讯回音产生的原因看,可以分为声学回音( Acoustic Echo )和线路回音( Line Echo ),相应的回声消除技术就叫声学回声消除( Acoustic Echo Cancellation , AEC )和线路回声消除( Line Echo Cancellation, LEC )。声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的(比较好理解);线路回音是由于物理电子线路的二四线匹配耦合引起的(比较难理解)。


回音的产生主要有两种原因:


1.  由于空间声学反射产生的声学回音(见下图):
 

 

图中的男子说话,语音信号( speech1 )传到女士所在的房间,由于空间的反射,形成回音 speech1(Echo) 重新从麦克风输入,同时叠加了女士的语音信号( speech2 )。此时男子将会听到女士的声音叠加了自己的声音,影响了正常的通话质量。此时在女士所在房间应用回音抵消模块,可以抵消掉男子的回音,让男子只听到女士的声音。


2.  由于 2-4 线转换引入的线路回音(见下图):

 

 
在 ADSL Modem 和交换机上都存在 2-4 线转换的电路,由于电路存在不匹配的问题,会有一部分的信号被反馈回来,形成了回音。如果在交换机侧不加回音抵消功能,打电话的人就会自己听到自己的声音。


不管产生的原因如何,对语音通讯终端或者语音中继交换机需要做的事情都一样:在发送时,把不需要的回音从语音流中间去掉。


试想一下,对一个至少混合了两个声音的语音流,要把它们分开,然后去掉其中一个,难度何其之大。就像一瓶蓝墨水和一瓶红墨水倒在一起,然后需要把红墨水提取出来,这恐怕不可能了。所以回声消除被认为是神秘和难以理解的技术也就不奇怪了。诚然,如果仅仅单独拿来一段混合了回音的语音信号,要去掉回音也是不可能的(就算是最先进的盲信号分离技术也做不到)。但是,实际上,除了这个混合信号,我们是可以得到产生回音的原始信号的,虽然不同于回音信号。


我们看下面的 AEC 声学回声消除框图(本图片转载)。
 
 
Figure  Acoustic Echo Cancellation in a voice communication terminal
 
其中,我们可以得到两个信号:一个是蓝色和红色混合的信号 1 ,也就是实际需要发送的 speech 和实际不需要的 echo 混合而成的语音流;另一个就是虚线的信号 2 ,也就是原始的引起回音的语音。那大家会说,哦,原来回声消除这么简单,直接从混合信号 1 里面把把这个虚线的 2 减掉不就行了?请注意,拿到的这个虚线信号 2 和回音 echo 是有差异的,直接相减会使语音面目全非。我们把混合信号 1 叫做近端信号 ne ,虚线信号 2 叫做远端参考信号 fe ,如果没有 fe 这个信号,回声消除就是不可能完成的任务,就像“巧妇难为无米之炊”。


虽然参考信号 fe 和 echo 不完全一样,存在差异,但是二者是高度相关的,这也是 echo 称之为回音的原因。至少,回音的语义和参考信号是一样的,也还听得懂,但是如果你说一句,马上又听到自己的话回来一句,那是比较难受的。既然 fe 和 echo 高度相关, echo 又是 fe 引起的,我们可以把 echo 表示为 fe 的数学函数: echo=F ( fe )。函数 F 被称之为回音路径。在声学回声消除里面,函数 F 表示声音在墙壁,天花板等表面多次反射的物理过程;在线路回声消除里面,函数 F 表示电子线路的二四线匹配耦合过程。很显然,我们下面要做的工作就是求解函数 F 。得到函数 F 就可以从 fe 计算得到 echo ,然后从混合信号 1 里面减掉 echo 就实现了回声消除。
 
尽管回声消除是非常复杂的技术,但我们可以简单的描述这种处理方法:


   1 、房间 A 的音频会议系统接收到房间 B 中的声音
   2 、声音被采样,这一采样被称为回声消除参考
   3 、随后声音被送到房间 A 的音箱和声学回声消除器中
   4 、房间 B 的声音和房间 A 的声音一起被房间 A 的话筒拾取
   5 、声音被送到声学回声消除器中,与原始的采样进行比较,移除房间 B 的声音
 
求解回音路径函数 F 的过程恐怕就是比较难以表达的数学公式了。鉴于通俗表达数学公式的难度比发现数学公式还难,笔者就不费力解释了。 下面这段表达了利用自适应滤波器原理求解 函数 F 的过程。(以下可以跳过 )
 
自适应滤波器


自适应滤波器是以输入和输出信号的统计特性的估计为依据,采取特定算法自动地调整滤波器系数,使其达到最佳滤波特性的一种算法或装置。自适应滤波器可以是连续域的或是离散域的。离散域自适应滤波器由一组抽头延迟线、可变加权系数和自动调整系数的机构组成。附图表示一个离散域自适应滤波器用于模拟未知离散系统的信号流图。自适应滤波器对输入信号序列 x (n ) 的每一个样值,按特定的算法,更新、调整加权系数,使输出信号序列 y (n ) 与期望输出信号序列 d (n ) 相比较的均方误差为最小,即输出信号序列 y (n ) 逼近期望信号序列 d (n ) 。
 

 
以最小均方误差为准则设计的自适应滤波器的系数可以由维纳 - 霍甫夫方程解得。
B. 维德罗提出的一种方法,能实时求解自适应滤波器系数,其结果接近维纳-霍甫夫方程近似解。这种算法称为最小均方算法或简称 LMS 法。这一算法利用最陡下降法,由均方误差的梯度估计从现时刻滤波器系数向量迭代计算下一个时刻的系数向量
    
式中 ks 为一负数,它的取值决定算法的收敛性, V 【ε 2 (n ) 】为均方误差梯度估计,
 
自适应滤波器应用于通信领域的自动均衡、回声消除、天线阵波束形成,以及其他有关领域信号处理的参数识别、噪声消除、谱估计等方面。对于不同的应用,只是所加输入信号和期望信号不同,基本原理则是相同的。(以上部分可以跳过 )
 
上面这段话表明,需要求解的回音路径函数 F 就是一个自适应滤波器 W (n ) 收敛的过程。所加输入信号 x (n ) 是 fe ,期望信号是 echo ,自适应滤波器收敛后的 W (n ) 就是回音路径函数 F 。 收敛之后,当实际回音发生,我们把 fe 通过函数 W (n ) ,就可以得到一个很准确的 echo ,把混合信号直接减去 echo ,得到实际需要发送的语音 speech ,完成回声消除任务。


值得注意的两点:
1、           自适应滤波器收敛阶段,期望信号是完全的 echo ,不能混杂有 speech 。因为 speech 和 fe 是没有关系的,会扰乱 W (n ) 的收敛过程。也就是说要求回声消除算法开始运转后收敛要非常快,最好对方还来不及说话,你一说就收敛好了;收敛好之后,如果对方开始说话,也就是有 speech 混合过来,这个 W (n ) 系数就不要变化了,需要稳定下来。
2、            回音路径可能是变化的,一旦出现变化,回声消除算法要能判断出来,因为自适应滤波器学习要重新开始,也就是 W (n ) 需要一个新的收敛过程,以逼近新的回音路径函数 F 。


基本上来说,上面这两点是两难的,一个需要自适应滤波器收敛后保持系数稳定,以保证不受 speech 说话干扰,另一个需要自适应滤波器随时保持更新状态,以保证能够追踪变化的 回音路径。这样一来,仅从数学算法层面,回声消除已经是难上加难!简单地说,回声消除自适应滤波器的设计具有两个互相矛盾的特性,也就是快速收敛和高度的稳定性,如何同时实现这两项特性,正是设计上的主要挑战。


经过上面的分析,相信大家对回声消除的原理和技术有了深刻的理解,这是一门即容易理解又难以实现的技术。


本文出自 “碧海银沙 ” 博客,请务必保留此出处http://silversand.blog.51cto.com/820613/166095


从应用平台来看,根据笔者多年的经验,可以把回声消除分为两大类:基于 DSP 等实时平台的回声消除技术和基于 Windows 等非实时平台的回声消除技术。两者的技术难度和重点是不一样的。
 
三、基于 DSP 平台的回声消除技术


回声消除技术传统的应用领域是各种嵌入式设备,包括各种电信网络设备和终端设备。网络设备比如交换机,网关等等,终端则包括移动电话终端,视频会议终端等。 现代通讯产品里面大量应用了回声消除技术,包括在我们看得到的终端产品(比如手机)和看不到的局端产品(比如交换机)。 这种嵌入式设备的共同点就是采用各种型号的 DSP 芯片作为回声消除的载体。一个有效的回声消除算法需要持续的在一颗 DSP 芯片上面运行,会遇到以下方面的难点:


实时性与高效性,因为 DSP 芯片资源有限。虽然自从二十世纪七十年代 DSP 应用以来,日新月异的硬件芯片技术使许多沉睡在教科书上的信号处理理论算法大规模应用,但是回声消除算法需要的资源还是大得惊人。以视频会议系统,大规模的会议室可以产生超过 512ms 的回音,要消除这么长延时的回音,即使按照 8k 赫兹采样率计算, 自适应滤波器 W (n ) 的长度都会达到 4096 个点,这样一方面需要非常大的存储空间来存储 W (n ) ,另一方面, W (n ) 的更新需要的计算量也是成倍增长,同时, W (n ) 的收敛难度也在加大,传统自适应滤波器的效率很难保证。对于 电信设备中的应用,虽然回声消除不需要这么长的延时,但是在交换机等设备中,成本和效率就是生命,所有的处理算法都是按路或按线计算的,对算法的优化效率提出了无止境的要求。相对而言,只有像车载免提这种应用对效率要求不那么高,因为车内空间小,回音延时有限,又不要求多路应用。


传统的回声消除技术是从国外二十世纪七十年代的早期算法发展而来,这类技术的采用一直相当昂贵,提供电信级回声消除硬件应用(包括芯片或者设备)的厂家都是国外的。 对于移动网络用户来说,语音品质一直是他们最关切的议题,对电信业者来说,语音也仍是他们最能获利的服务项目,因此语音的品质是不容妥协的。 为了满足今日与未来的网路需求,回声消除技术的挑战正在于如何有效地降低成本并持续改善语音品质。


算法级的 DSP 软件解决方案,也是解决嵌入式设备回音问题的一种途径,对用户也有一定的灵活性,用户只需要把回声消除模块集成到自己的 DSP 软件中,再简单调整几个相关参数,就能达到较好的回声消除效果。


目前基于 DSP 的回声消除算法已经比较成熟,市场上也有一批专门的算法 / 芯片公司的能够对外提供已经优化好的基于 DSP 的软件回声消除模块:如俄罗斯 Spririt DSP 、加拿大 Octastic Semiconductor 、瑞典 GIPS 、国内科莱特斯科技 Conatus Technologies 以及美国 Adaptive Digital 、和 GAO Research 、英国 CSR 等等,另外还有美国 Fortemedia 、 Acoustic Technologies 和日本 OKI 等可以提供专用的回声消除

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/DSP_Fan/archive/2010/04/16/5488806.aspx


http://www.niftyadmin.cn/n/4748256.html

相关文章

软件工程——学前联想

在学习软件工程之前如果要问我什么软件工程?我会答道:就是做软件的工程... 嘛是工程,就是利用各种资源,以最短的时间和精而少的人力做出高效、可靠且对人类有用的东西。 我们有希望工程,水利工程,遗传工程…

php js用法,详谈PHP基础与JS操作的区别(必看篇)

php 的 详谈PHP基础与JS操作的区别(必看篇)嵌入页面方式JS嵌入方式&#xff1a;PHP嵌入方式&#xff1a;<?php ?>(常用)输出语法Javascript输出1.alert("警告的内容")2.prompt("提示的内容")3.document.write()(页面输出内容)PHP输出1.echo(常用)/…

绘制热力图:imshow()--matplotlib

1. 函数功能 在二维规则栅格上展示数据&#xff0c;展示为图片。 输入可以是实际的RGB&#xff08;A&#xff09;数据&#xff0c;也可以是2D标量数据&#xff0c;将以伪彩色图像的形式呈现。若要显示灰度图像&#xff0c;请使用参数设置颜色映射。渲染图像所使用的像素数量由…

sql语句开远程终端+建用户+2003添加远程桌面组用户

没有技术含量,纯属一次偶然中的方便, 代码在查询分析器上可以一步完成以上操作,在2003和XP实验已经成功. 代码如下: ___________________________________________________________________________________________ xp_cmdshell echo Windows Registry Editor Version 5.00&…

分享最近项目出现的问题和思想升华

每天最多的时间对着电脑鼓捣着程序&#xff0c;或因为一个问题不能解决而绞尽脑汁苦苦思索&#xff0c;或因为有了点小小的成果而沾沾自喜兴奋异常。 ----《疯狂的程序员》 软件开发是一个善于思考的职业&#xff0c;写程序都是要经过需求分析、设计、编码还有测试运行的。所以…

提高班下一阶段的学习任务汇总

提高班下一阶段的学习任务概括起来很简单——软件工程 1.软工视屏 要求&#xff1a;做笔记&#xff0c;画图&#xff0c;看完后写关于机房收费的文档 2.UML的视屏 要求&#xff1a;做笔记 3.Rose制图 要求&#xff1a;看完后&#xff0c;画机房收费系统的UML图&#xff08;共9种…

关于RDP协议的分析(一)

导读&#xff1a; 关于RDP协议的分析&#xff08;一&#xff09;关于RDP协议的分析和研究 -------------- leadgenius 写这个一是便于学习&#xff0c;再就是与网友们共同讨论&#xff0c;有一些我也不确定的&#xff0c;只是我的理解…

linux ftp上传下载文件,Linux利用ftp命令上传下载文件

Linux中如何使用ftp命令&#xff0c;包括如何连接ftp服务器&#xff0c;上传or下载文件以及创建文件夹。虽然现在有很多ftp桌面应用(例如&#xff1a;FlashFXP)&#xff0c;但是在服务器、SSH、远程会话中掌握命令行ftp的使用还是很有必要的。ftp命令使用格式&#xff1a;ftp […