转自:http://blog.csdn.net/fireworkburn/article/details/12781985
1. 问题
我们在做语音实时对讲的时候往往会碰到一个瓶颈,这个瓶颈就是在不戴耳机的情况下会有很大的回音,本文就讨论如何解决。
2.解决方式:
(1)其实有做了同一时间只有一端能够说或者听,类似于对讲机,这种虽然是实时的,但是体验不好,还不如微信;
(2)两边戴上耳机,这样也没回音,但是也不可能一直带着耳机吧,而且有时还不只一个人听呢;
(3)将这个回应消除,这个也是本文的重点。
3.speex回音消除
做回音消除有硬件消除和软件消除,这里采用硬件消除,通过三方开源库speex消除,对于speex可以查看下相关资料,我也是略懂,只是会用它而已;
speex不仅仅可以做回音消除,它本身也是一个音频的编解码库,但是它只能解码自己编码的音频文件,但这在做语音通信已经足够了。
悲剧了,源码在家里,改天在家把源码传上来再做介绍吧,源码里面有相关的编解码库和回音消除库,都已经编译成.so文件,而且java文件中也有相关的用法和socket通信,
经过实际测试,在不开外音的情况下可以消除百分之八十以上的回音,但是开外音的话还是有回音,毕竟是软件消除,不可能那么干净的;
等源码吧...
调试项目在,实在太忙了,没时间继续写了,直接上源码,改天再做详细介绍,另外这个源码也是一个测试程序,同步没做好,完整的在项目中,有时间了挖出来一起贴上,
工程包含了java测试程序和JNI部分,直接可以编译的,这个库是可以用的,项目中已经测试通过;
上次的时候CSDN居然默认要1个下载分,没注意,没有积分的留下邮箱。