宁静以致远
zgf的blog
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

留言簿(15)

随笔分类

随笔档案

文章档案

友情链接

资料收藏

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-29 文章-8 评论-93 Trackbacks-0
2008年4月23日
          AEC也就是声学回声消除。回声问题是免提通信避不过的槛。很久以前用34118将全双工的通话变成对讲机式的半双工通话,切断了声音的回传路径,也就消除了回声。随着技术的进步,全双工的语音通话成了标准配置。
          公司现在使用的fm1182芯片去回声。fm1182性能很好,白皮书上说它能衰减65db的回声。由于fm1182启动后只有串口能修改参数,其i2c方式必须reset后才能修改。而我们的平台上没有多于的串口,修改参数很麻烦。并且fm1182会处理输出的声音,导致播放音乐的音质严重走样。再者fm1182芯片很贵,竟然比主芯片价格贵好几倍。自己实现AEC是难免的了。
          辛辛苦苦2个月,终于实现了一个基本的AEC。采用NLMS算法,双滤波器结构。单端讲话时,ERLE平均达到了30db, 好的情况下在50-60db。双端讲话时语音不失真。本地用音箱大声的放音乐,远端讲话也能很好的传过来。 在回声路径激烈变化时误差不大,并且在500ms内恢复到最佳状态。使用c语言加O2编译,使用了大约80mips。虽然比不上fm1182,但足够应用了。ERLE至少可以再提高10db。因为也不知道是录音驱动还是硬件的问题,录音时每40ms有个脉冲噪音,并且幅度超过了大部分残余噪音的幅度。
        程序还有很多要继续改进的地方。没有做舒适噪音。需要汇编优化代码,速度至少要加快一倍。当对着mic吹气或吼叫,导致声音超出范围,不能消除回声,需要改进。
          
发表于 2008-04-23 22:24 zgf的blog 阅读(494) | 评论 (0)编辑 收藏