算法原理: Speex的AEC是以NLMS(Normalized Least Mean Square)为基础,用MDF(multidelay block frequency domain)频域实现,最终推导出最优步长估计:残余回声与误差之比.最优步长等于残余回声方差与误差信号方差之比. 只有改与泄露系数相关部分的代码,才是对效果影响最大的地方,因为根据泄露系数,最终会估计出滤波器的最优步长. 使用实例: 测试代码: #include "speex/speex_echo.h" #incl
由于自适应滤波器只能估算回音的近似值,因此它并不能将回音完全消除,也就是说,仍然有些残余的回音(Lres)留在信号当中.在任何时刻中,暂存器中的准确性正是决定残余回音音量的关键所在.如果残余的回音量大到听得见的音量,这时就得靠非线性处理器(non linear processor, NLP)来加以移除,NLP是每个迴音消除器组成架构中的一部分.非线性处理器处于 减法器和Sout端口之间,任务是限制低于特定门限值的信号通过.NLP不能区分回声和近端语音,所以如果持续作用,会影响近端语音