ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于卡尔曼滤波器的回声消除算法

2021-12-13 23:00:31  阅读:200  来源: 互联网

标签:后验 回声 卡尔曼滤波 算法 信号 相关矩阵 消除


前面有介绍了卡尔曼滤波器,但是由于篇幅原因没有介绍其具体的应用,这里我们介绍使用卡尔曼滤波器做回声消除的过程。我们知道Speex和WebRTC的回声消除都是基于NLMS算法的,但是也有一些公司使用了卡尔曼滤波器进行回声消除。真正的回声消除还包括滤波器后的非线性部分,今天只讨论线性回声消除部分。

回声消除

图片

回声消除以前有讲过,这里简单回顾一下,假设帧长为L远端信号为

图片

那么麦克风采集的信号可以表示为

图片

其中v(n)是近端信号,h(n)为声音从扬声器到麦克风整个系统的冲激响应

图片

回声消除要做的事情就是用自适应滤波器去逼近上面系统冲激响应,然后我们将近端信号与估计的回声想减即可得到

状态方程

我们把最近P帧远端信号写成大小为(L,P)的矩阵

图片

此时回声信号可以表示为

图片

类似的,麦克风采集信号可以写为

图片

公式(6)被称为状态方程。我们假定h(n)是零均值的随机矢量并且符合一阶马尔科夫模型,即

图片

其中w(n)是零均值高斯白噪声信号向量并且与h(n-1)和v(n)都不相干。w(n)的相关矩阵可以写成

图片

w的方差用于衡量h的不确定性,它决定了卡尔曼滤波器对回声路径的跟踪能力和收敛性。根据公式(6)我们可以定义回声噪声比(echo-to-noise ratio, ENR)

图片

卡尔曼滤波器

根据贝叶斯方法我们可以得出最优的回声路径估计,即状态矢量可以写成

图片

其中K就是卡尔曼的增益矩阵;e是麦克风信号和回声信号估计值之间的先验误差

图片

相应的后验误差则定义为:

图片

其中

图片

称其为状态估计误差或者后验失调。而先验失调定义为:

图片

任何给定时刻 n 的先验失调相关矩阵与n-1时刻的后验失调相关矩阵之间的关系为

图片

卡尔曼增益矩阵通过最小化如下的损失函数得到

图片

容易得出

图片

然后计算先验和后验误差相关矩阵

图片

最后更新后验误差相关矩阵

图片

我们最后总结下卡尔曼滤波的整个流程:

图片

回声消除效果

我们最后对比一下LMS和卡尔曼滤波器的效果,使用和解析自适应滤波回声消除一样的音频数据:

图片

首先是LMS滤波器的效果:

图片

然后是卡尔曼滤波器的效果:

图片

可以明显看出卡尔曼滤波器的回声抑制效果要优于LMS的效果。值的一提的是本文这种方法计算量比较大,实际应用中一般变换到频域并划分成若干个子带进行处理。


本文相关代码和数据在公众号语音算法组菜单栏点击Code获取。


参考文献:

[1].  Study of the general kalman lter for echo cancellation

标签:后验,回声,卡尔曼滤波,算法,信号,相关矩阵,消除
来源: https://blog.csdn.net/sinat_35821976/article/details/121916367

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有