解密回声消除技术之二(应用篇)
来源:互联网 发布:淘宝粉星便利店靠谱么 编辑:程序博客网 时间:2024/05/01 10:22
从应用平台来看,根据笔者多年的经验,可以把回声消除分为两大类:
基于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、
国内松西科技Sosea Technologies以及美国Adaptive Digital、和GAO Research、英国CSR等等,
另外还有美国Fortemedia、Acoustic Technologies和日本OKI等可以提供专用的回声消除DSP芯片。
其中性能较好的有Octastic、Sosea、和Spririt这三家,Octastic可以提供完整的从专用芯片、板卡到DSP算法的完整方案,
而Sosea和Spririt的回声消除效果更好。
回声消除技术最新的应用领域是基于Windows平台的各种VoIP应用,比如软件视频会议,VoIP软件电话等。
当回声消除算法应用到Windows平台,相对于传统的DSP平台,既带来优势,也带来了新的难点。
高效性在Windows平台已经不是问题,现在的pc机,拥有丰富的cpu资源和海量的内存资源,
再复杂的回声消除算法都可以运行自如。但是,新增加的麻烦比带来的好处要多。
首先,Windows平台是一个非实时的平台,音频的采集和播放对回声消除算法而言,也是非实时的。
和DSP平台不一样,DSP平台可以直接控制AD/DA芯片的采集播放,获得实时的音频流(不存在同步问题),
但是Windows平台下,应用程序很难在底层直接控制声卡的采集播放,获得的是非实时的音频流,从而带来了采集和播放音频流的同步问题。
实际应用时,传给回声消除算法的两个声音信号(采集的回音信号ne和播放的参考信号fe),必须同步得非常的好。
就是说,本地接收到远端说的话以后,要把这些话音数据传给回声消除算法做参考,这是一个算法需要的输入信号;
然后再传给声卡,声卡放出来后经过回音路径,这时,本地再采集,然后传给回声消除算法,这是算法需要的另一个输入信号。
这里的同步是指:两个信号虽然存在延时,但这个延时必须固定,在时序上要保持连贯,不能一个信号多来几个帧,另外一个信号少来几个帧。
如果传给回声消除算法的两个信号同步得不好,即两个信号发生帧错位,就没有办法进行消除了。
因为这时系统会变成了非因果系统,比如期望信号收到了,参考信号还没来,时间上都没有因果关系,肯定是没有办法消除的。
实际情况是,在一般的VoIP软件中,接收对方的声音并传到声卡中播放是在一个线程中进行的,
而采集本地的声音并传送到对方又是在另一个线程中进行的,
而声学回声消除算法在对采集到的声音进行回声消除的同时,还需要播放线程中的数据作为参考,
而要同步这两个线程中的数据是非常重要的,因为稍稍有些不同步,声学回声消除算法中的自适应滤波器就会发散,
不但消除不了回音,还会破坏原始采集到的声音,使声音难以分辨。
另外,pc机器的声卡种类繁多,各种各样的声卡特性进一步加剧了同步问题的复杂性。
所以,同步和声卡等问题对回声消除算法的内部特性提出了更多苛刻的要求。
从上面分析来看,由于Windows平台的非实时性,基于Windows平台的回声消除技术比DSP平台要难得多。
在PC平台语音通讯领域,目前公认音质做得比较好的国外软件是Skype,
记得几年前Skype一直是在用瑞典一家叫GIPS(Global IP Sound)公司的语音引擎技术。
GIPS是最早介入PC平台语音通讯领域的厂商之一,在改领域具有一定的权威性,
其主要优势表现在对IP网络的延时、抖动和丢包等处理较好,基于Windows平台的回音消除也做得不错,
不过最近的新版本Skype上已经看不到GIPS的标志了,据说是因为Skype自己研发了一套新的更好的语音引擎的缘故。
目前大家接触最多的采用了GIPS语音引擎技术的通讯软件就是腾讯QQ了,其超级语音的效果普遍评价都还不错。
另外微软经过多年的研发,其最新版本的MSN语音特别是回音消除效果终于有了质的提升,目前网上评价也还不错。
另外还有一些专业厂商也对外提供包含回音消除功能的语音引擎,
如俄罗斯的Spirit DSP、美国的GH Innovation和国内的松西科技(Sosea Technologies)以及赛声科技(SoftAcoustic)等等。
除此之外,网络上还可以下载到一个很好的开源的语音软件Speex也提供了回音消除功能。
为了进一步了解目前PC Windows平台回音消除技术的业界水平,笔者对各家的回音消除技术做一个详细的横向对比测试(所有测试都是免提状态)
为了对比,各家语音引擎的版本信息列举如下:
回声消除已经成为语音通讯中提供全双工音频的标准方法。
声学回声消除是通过消除或者移除本地话筒中拾取到的远端的音频信号来阻止远端的声音返回去的一种处理方法。
这种音频的移除都是通过数字信号处理来完成的。回声消除技术是数字信号处理的典型应用之一。
本文出自 “碧海银沙” 博客,请务必保留此出处http://silversand.blog.51cto.com/820613/166101
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之二(应用篇)
- 解密回声消除技术之一(理论篇)之二(应用篇)
- 解密回声消除技术之一(理论篇)之二(应用篇) 收藏
- 解密回声消除技术之二
- 解密回声消除技术
- 解密回声消除技术
- 解密回声消除技术之一(理论篇)
- 解密回声消除技术之一(理论篇)
- git push warning: push.default is unset 分析解决
- Java排序--》希尔排序(增量排序)
- 【C语言】文件定位读取
- oracle rac理解和用途扩展(转)
- neuq oj 1052: 谭浩强C语言(第三版)习题6.8 C语言
- 解密回声消除技术之二(应用篇)
- poj3693Maximum repetition substring【后缀数组+RMQ求重复最多连续子串】
- 从头认识Spring-3.3 简单的AOP日志实现-增加检查订单功能
- TCP/IP、Http、Socket的区别
- PAT--1013 Battle Over Cities(并查集)
- 利用python求解八数码难题
- 《MVC + EF+ WCF 》——批量删除数据
- HDU1075 What Are You Talking About
- Windows基础-使用XAudio2播放音频(本质是WASAPI)