开源的轮子是speex以及webrtc:
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。
在webRTC开源前主要是大公司和专业的算法公司有好的实现方案,一般公司要想产品里有EC就去买算法库。webRTC开源后一些核心的算法(包括AEC/ANS/AGC等)也随之开源,这样众公司开始用webRTC里的算法,尤其是互联网公司,AEC等算法基本都是用的webRTC的。
https://blog.csdn.net/david_tym/article/details/80602311
https://blog.csdn.net/yi7900/article/details/6781539
https://www.zhihu.com/question/21406954
声学回声消除原理与实现:
https://www.cnblogs.com/LXP-Never/p/11703440.html#回声消除常用算法
https://www.cnblogs.com/oucxlw/p/9311264.html
自适应滤波:最小均方误差滤波器(LMS、NLMS):
https://www.cnblogs.com/xingshansi/p/6658203.html
本文基于开源算法阐述AEC的原理和实现,基于WebRTC和speex两种算法,文末会附上两种算法的matlab实现:
https://blog.csdn.net/shichaog/article/details/71152743?fps=1&locationNum=6
speex
为了方便说明不同回声消除算法的性能差异,在此简单回顾一下回声消除的基本原理。现有业界普遍使用的开源WebRTC的回声消除(AEC)算法基本原理图如图3所示:
图3: WebRTC的AEC基本原理图
x: 远端参考语音
v: 近端说话人语音
h: 回声传播路径(回声通道冲击响应函数)
y: 近端回声信号
d: 麦克风采集到的信号
e: 输出信号(回声消除后的信号)
ĥ: 估计的回声路径(逼近真实回声路径h)
ŷ: 回声信号的估计值
http://www.sohu.com/a/330843177_659466