日期:2014-05-16  浏览次数:20836 次

VOIP 回声消除 大虾请进
做VOIP 视频通话,通话中如果有一个终端在一个空间小的房间里,对端就会有回声出现,现在需要做消除回声.前前后后处理了近半个月,也刚入门.网上查过资料,说回声消除的最好效果也就是把声音信号强度降低30Db,实际上20-25Db 就很不错了.这个Db是怎么计算的呢,两耳挺真难辨别? 现在有两个问题.
1. 对mediastreamer2库里面的 speexec.c 文件,处理回声的相关参数{ec_tail_len,ec_delay,framesize}.我的前一个博文有流程介绍,但具体设置多少也不是很清楚? 我音频文件是 8K 16bit mono ,通话中预计过1.5s后能听到回声,现在设置的参数是{250,4500,80};录下来的声音依然存在明显回声.
2. 我用speexec开源库做过写过测试程序,对比echo文件和处理后的文件.两个也没明显的差异.把回声文件,参考文件,处理后的文件 放在这个地址.http://mail.qq.com/cgi-bin/ftnDownload302?sid=_E8xN63_v38lSRxN&fid=2%2Fb04d3a57-9f1f-4d7d-a77e-a9192025e6bf&code=cde5e391&k=2c64653505fedcced4fea56043330b1e0154515156520c064e5d0304031e0d555400485452045c1c025d540c57030b04065207536529395e16101540116c5c4902091559006c495411010c47001d4b50116458

那我大虾有过echo cancellation 的处理经验,希望一起交流下.网上这方面的理论文章不少,实际处理的不多. 先谢过了.
c

------解决方案--------------------
ec_tail_len,ec_delay,framesize分别代表回声的拖尾,也就是回声持续的时间;回声的延时,就是你所说的1.5s,从扬声器播出到麦克风采集到的时延。
声音从扬声器到麦克风这个通路的能量较大时,回声就很大,有时会比原始声音大很多,speex里面有对这个门限进行限制的,检查一下是否超过这个限制。
影响回声消除的因素,是回声的大小(db)和回声相对原始声音的大小(ERL),并不是声音调小了,就容易消除了
------解决方案--------------------
这个问题比较难啊。

涉及到算法问题。
------解决方案--------------------
VOIP应该要用别的家的无线通信模块吧?
回音问题有可能是使用的模块本身有回音问题。