回声消除总结

回声消除系统简介



一个完整的回声消除系统如上图所示,一般包括对讲检测,线性自适应滤波器,残余回声消除器(一般用NLP滤波)。当然根据具体的应用场景,可能还需要延时对齐模块,舒适噪声模块。其中延时对齐模块对整个系统的性能影响非常大,它主要用于补偿数据播放与数据采集之间的时延差。当然对于一些实时性较好的系统,如DSP平台,这种时延差较少,对性能影响不大。


Speex回声消除


与上面提到的框架相比,speex略有不同。

1、 没有NLP

2、 没有舒适噪声模块

3、只考虑实时DSP系统,即是没有延时对齐等

4、自适应滤波采用双滤波器结构,自适应滤波算法为MDF,是一种分块频域快速算法,其步长因子是自动更新的。


Speex回声消除步骤:

1、  陷波滤除直流分量,并进行预加重。

2、  采用前级滤波对输入信号进行滤波处理,滤波输出信号存在e[]的后半部分,误差信号方差存储给Sff。

3、  后级滤波器抽头系数W的计算(难点在最优步长的计算)。

4、  对输入信号用后级滤波再次滤波处理,得到的误差信号方差给See,误差存在e[]前半部分.

5、  结合See与Sff综合判断是否需要更新前级滤波系数或者重置后级滤波。

如果需要更新前级滤波系数,则将两级滤波的滤波输出通过加窗平滑合并为总的滤波输出存在e[]后半部分.并foreground = W

6、  如果需要重置后级滤波,则W = foreground, See = Sff,误差信号(其实就是前级滤波的误差)即e[]的前半部分 = 输入input – 前级滤波输出(e[]的后半部分)。

7、计算最后的滤波输出out = input – 滤波输出e[]后半部分,并进行去加重处理。

8、  最优步长的计算总的来说可以理解残留回声方差与误差信号方差之比。


9、 残留回声的估计可以借用泄露因子进行计算:

                              

10、 泄露因子计算可参考文献“OnAdjusting the Learning Rate in Frequency Domain Echo CancellationWithDouble-Talk


                                  

优化思路:

1、  添加nlp模块与舒适噪声模块

2、  调优滤波器步长因子

3、  添加双讲检测机制

4、  如果应用在系统实时性不好的场景,还需添加延时对齐模块。


webrtc 回声消除


webrtc回声消除框架对比:

1、双讲检测没有,双讲时容易造成滤波器发散,近端声音会消掉一部分。

2、线性自适应滤波器采用PBFDAF,且步长因子固定取 0.6

3、抑制是使用相关性技术,近端误差,近端远端,由低频段相关性参数求出gain


Webrtc回声消除步骤:

1、 延时估计对齐,这里有两个时延,一个是系统的时延,需要用户手动输入,另一个是信号时延,是根据gips滤波法估计得到。

2、 对参考信号,近端信号分别FFT,并计算远端平滑功率Px。

3、 采用PBFDAF算法进行自适应滤波处理,得到误差信号ekfb。

3.1保存当前帧与上一帧的输入数据(近端数据dk,远端数据xk),并求FFT.

3.2求远端信号平滑功率谱

3.3对滤波权系数W前半部分补零,远端信号进行分块滤波处理,将滤波结果求和Y

3.4对Y做IFFT变化,取y的后半部分。

3.5求误差信号 e = dk –y

3.6更新权系数W = W + u*FFT(e[0,:]).*X/Px  (NLMS权值更新公式)

3.7将X内存中的最后一块数据丢掉,数据左移一块,准备下一帧数据处理。

4、 计算近端信号、远端信号、误差信号的平滑功率谱Sx、Sd、Se.

5、计算近端信号与远端信号,近端与误差的互功率谱Sxd、Sed。Sxd越大,回声越大;Sed越大,回声越小


6、 为了准确判断,将Sxd,Sed进行归一化处理(求互相关),得到cohxd,cohed.

7、 计算NLP增益hnld = min(1-cohxd,cohed )

8、 添加舒适噪声。


优化思路:

1、 对webrtc的aec加入双讲检测,双讲处理。

2、 自适应更新滤波器步长因子。

3、 优化NLP模块( NLP模块对webrtc回声消除影响较大)。

Speex与Webrtc回声消除对比

图1、近端语音,图2、远端语音,图3、Webrtc处理,图4、Speex处理

The echo canceller is based on the MDF algorithm described in: J. S. Soo, K. K. Pang Multidelay block frequency adaptive filter, IEEE Trans. Acoust. Speech Signal Process., Vol. ASSP-38, No. 2, February 1990. We use the Alternatively Updated MDF (AUMDF) variant. Robustness to double-talk is achieved using a variable learning rate as described in: Valin, J.-M., On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk. IEEE Transactions on Audio, Speech and Language Processing, Vol. 15, No. 3, pp. 1030-1034, 2007. http://people.xiph.org/~jm/papers/valin_taslp2006.pdf There is no explicit double-talk detection, but a continuous variation in the learning rate based on residual echo, double-talk and background noise. About the fixed-point version: All the signals are represented with 16-bit words. The filter weights are represented with 32-bit words, but only the top 16 bits are used in most cases. The lower 16 bits are completely unreliable (due to the fact that the update is done only on the top bits), but help in the adaptation -- probably by removing a "threshold effect" due to quantization (rounding going to zero) when the gradient is small. Another kludge that seems to work good: when performing the weight update, we only move half the way toward the "goal" this seems to reduce the effect of quantization noise in the update phase. This can be seen as applying a gradient descent on a "soft constraint" instead of having a hard constraint.
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值