Closed cherishman2005 closed 3 years ago
本文是一篇介绍实时音频通讯过程中的回音问题,以及回音消除技术的介绍文章。 系列文章
本文是系列文章中的第9篇,本系列文章的大纲如下:
《即时通讯音视频开发(一):视频编解码之理论概述》 《即时通讯音视频开发(二):视频编解码之数字视频介绍》 《即时通讯音视频开发(三):视频编解码之编码基础》 《即时通讯音视频开发(四):视频编解码之预测技术介绍》 《即时通讯音视频开发(五):认识主流视频编码技术H.264》 《即时通讯音视频开发(六):如何开始音频编解码技术的学习》 《即时通讯音视频开发(七):音频基础及编码原理入门》 《即时通讯音视频开发(八):常见的实时语音通讯编码标准》 《即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述》(本文) 《即时通讯音视频开发(十):实时语音通讯的回音消除技术详解》 《即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解》 《即时通讯音视频开发(十二):多人实时音视频聊天架构探讨》 《即时通讯音视频开发(十三):实时视频编码H.264的特点与优势》 《即时通讯音视频开发(十四):实时音视频数据传输协议介绍》 《即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情况》 《即时通讯音视频开发(十六):移动端实时音视频开发的几个建议》 《即时通讯音视频开发(十七):视频编码H.264、V8的前世今生》 《即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型》 《即时通讯音视频开发(十九):零基础,史上最通俗视频编码技术入门》(必读)
什么是回音?
在一般的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
本文是一篇介绍实时音频通讯过程中的回音问题,以及回音消除技术的介绍文章。 系列文章
本文是系列文章中的第9篇,本系列文章的大纲如下:
《即时通讯音视频开发(一):视频编解码之理论概述》 《即时通讯音视频开发(二):视频编解码之数字视频介绍》 《即时通讯音视频开发(三):视频编解码之编码基础》 《即时通讯音视频开发(四):视频编解码之预测技术介绍》 《即时通讯音视频开发(五):认识主流视频编码技术H.264》 《即时通讯音视频开发(六):如何开始音频编解码技术的学习》 《即时通讯音视频开发(七):音频基础及编码原理入门》 《即时通讯音视频开发(八):常见的实时语音通讯编码标准》 《即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述》(本文) 《即时通讯音视频开发(十):实时语音通讯的回音消除技术详解》 《即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解》 《即时通讯音视频开发(十二):多人实时音视频聊天架构探讨》 《即时通讯音视频开发(十三):实时视频编码H.264的特点与优势》 《即时通讯音视频开发(十四):实时音视频数据传输协议介绍》 《即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情况》 《即时通讯音视频开发(十六):移动端实时音视频开发的几个建议》 《即时通讯音视频开发(十七):视频编码H.264、V8的前世今生》 《即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型》 《即时通讯音视频开发(十九):零基础,史上最通俗视频编码技术入门》(必读)
什么是回音?
在一般的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