10

即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述

 2 years ago
source link: http://yunxin.163.com/blog/zhuan-im3-9/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙。原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的。
本文是一篇介绍实时音频通讯过程中的回音问题,以及回音消除技术的介绍文章。

什么是回音?

在一般的VOIP软件或视频会议系统中,假设我们只有A和B两个人在通话,首先,A的声音传给B,B然后用喇叭放出来,而这时B的MIC则会采集到喇叭放出来的声音,然后传回给A,如果这个传输的过程中时延足够大,A就会听到自己刚才说的话,这就是回音。

什么是回音消除?

回音消除的作用就是在B端对B采集到的声音进行处理,把采集到的声音中包含的A的声音去掉之后在传给A,这样A就不会听到自己说过的话了。

回音消除并不容易

传给回音消除器的两个声音信号,必须同步得非常好,就是说在B端接收到A说的话以后,要把这些声音数据传给回声消除器做参考,然后再传给声卡,声卡播放出来,这里有一段延时,这时B再采集,然后传给回音消除器,与那个参考数据比较,从采集到的数据中把频率和参考数据相同的部分消除掉。

如果传给消除器的两个信号同步得不好,即两个信号找不到频率相同的部分,就没有办法进行消除了。

在一般的VOIP软件中,接收对方的声音并传到声卡中播放是在一个线程中进行的,而采集本地的声音并传送到对方又是在另一个线程中进行的,而声学回声消除器在对采集到的声音进行回声消除的同时,还需要播放线程中的数据作为参考,而要同步这两个线程中的数据是非常困难的,因为稍稍有些不同步,声学回声消除器中的自适应滤波器就会发散,不但消除不了回声,还会破坏采集到的原始声音,使被破坏的声音难以分辨。

声学回音主要又分成以下两种:

  • 直接回音:由扬声器产生的声音未经任何反射直接进入麦克风
  • 间接回音:由扬声器发出的声音经过多次反射后,再进入Mic

对于第二种回声,拥有多路径、时变性的特点,是比较难处理的。

回音消除的方法

第一种:通过硬件实现,有很多手机就是这么做的,也有专业的芯片,但是只支持8khz的,如果要求高质量的音质的话,基本实现不了。

第二种:通过软件实现,qq,msn,skype很多具有通话功能的软件,现在都具有回声消除的功能(需是比较高版本的,低版本的可能没有),但是实现代码是不对外的,开源的回声消除代码只有speex和webrtc。

一般常用的开源的AEC有两个:Speex 和 webrtc。webrtc相对比Speex强的多,原因如下:

1、webrtc有回声时延估计算法模块
2、webrtc有neteq模块
3、webrtc核心就是gips,原因你懂的。

http://blog.csdn.net/u012931018/article/details/17045077
http://silversand.blog.51cto.com/820613/166095

(原文链接:http://webrtc.org.cn/%E5%9B%9E%E5%A3%B0%E6%8A%B5%E6%B6%88aec%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/)

 来源:即时通讯网 – 即时通讯开发者社区!

了解网易云信,来自网易核心架构的通信与视频云服务。


网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK