深入理解WebRTC之AEC

由于工作需要,最近一直在研究WebRTC里的AEC算法。根据源码里面的fullaec.m文件,凭借MATLAB强大的数学计算能力,现在也算是对算法有了一定的了解。

总体来说,我认为该AEC算法是属于分段快频域自适应滤波算法,Partioned block frequeney domain adaPtive filter(PBFDAF)。具体可以参考Paez Borrallo J M and Otero M G
1992年发表在Signal Process上的一篇名为on the imPlementation of a Partltioned block frequency domain adaptlve filter(PBFDAF) for long acoustic echo cancellation的文章。

关于算法的具体处理流程,我总结了一幅流程图。注释部分基本上对fullaec.m文件里的每一行都做了翻译,其中红色部分是我第一次看时的疑问,绿色部分是后来看完几遍之后的解答,最后还有几个红色问题至今我也没弄太清楚,如果有朋友明白的,还望赐教,不胜感激。

CSDN好像把图片给压缩了,放大也看不太清,我把原图放到我的资源里了http://download.csdn.net/detail/ruichen198706/4984306,不需要积分,需要的朋友可以自行下载

使用该AEC算法要注意两点:

1)延时要小,因为算法默认滤波器长度是分为12块,每块64点,按照8000采样率,也就是12*8ms=96ms的数据,而且超过这个长度是处理不了的。

2)延时抖动要小,因为算法是默认10块也计算一次参考数据的位置(即滤波器能量最大的那一块),所以如果抖动很大的话找参考数据时不准确的,这样回声就消除不掉了。

由于工作需要,最近一直在研究WebRTC里的AEC算法。根据源码里面的fullaec.m文件,凭借MATLAB强大的数学计算能力,现在也算是对算法有了一定的了解。

总体来说,我认为该AEC算法是属于分段快频域自适应滤波算法,Partioned block frequeney domain adaPtive filter(PBFDAF)。具体可以参考Paez Borrallo J M and Otero M G
1992年发表在Signal Process上的一篇名为on the imPlementation of a Partltioned block frequency domain adaptlve filter(PBFDAF) for long acoustic echo cancellation的文章。

关于算法的具体处理流程,我总结了一幅流程图。注释部分基本上对fullaec.m文件里的每一行都做了翻译,其中红色部分是我第一次看时的疑问,绿色部分是后来看完几遍之后的解答,最后还有几个红色问题至今我也没弄太清楚,如果有朋友明白的,还望赐教,不胜感激。

CSDN好像把图片给压缩了,放大也看不太清,我把原图放到我的资源里了http://download.csdn.net/detail/ruichen198706/4984306,不需要积分,需要的朋友可以自行下载

使用该AEC算法要注意两点:

1)延时要小,因为算法默认滤波器长度是分为12块,每块64点,按照8000采样率,也就是12*8ms=96ms的数据,而且超过这个长度是处理不了的。

2)延时抖动要小,因为算法是默认10块也计算一次参考数据的位置(即滤波器能量最大的那一块),所以如果抖动很大的话找参考数据时不准确的,这样回声就消除不掉了。

猜你喜欢

转载自blog.csdn.net/fangbingxiao/article/details/80248175