今天我们要介绍3A算法中最难的一个算法,也是WebRTC流程解析这个系列的最后一个算法,声学回声消除(Acoustic Echo Cancellation,AEC )。如果读者对WebRTC有一些了解的话,就知道WebRTC的AEC算法大致可以分为三个部分:时延估计、线性回声消除、非线性处理。
I. Introduction
回声消除的简单原理前面已经有介绍过了,可以有参考基于卡尔曼滤波器的回声消除算法。WebRTC AEC的时延估计使用了频域自相关的方法。线性部分采用了分块频域自适应滤波器(Partitioned Block Frequency Domain Adaptive Filter, PBFDAF),这个滤波器在Speex中称为分块频域波器(Multidelayblock frequency Filter,MDF), 其实它们原理是一样的。有所不同的是Speex的AEC使用了两个滤波器(前景滤波器和背景滤波器)因此其线性回声消除部分性能更好一点,但是AEC3也引入了两个滤波器,这里就不展开讲了后面有机会再介绍。最后通过计算近端信号、误差信号和远端信号的频域相关性来进行的非线性处理(NonLinearPro