changxuding / Residual_Echo_Cancellation

Various Algorithm for Residual Echo Cancellation
MIT License
20 stars 6 forks source link

大佬,我这两个音频处理效果很差,调了好久都没搞定。 #2

Closed zuowanbushiwo closed 1 year ago

zuowanbushiwo commented 1 year ago

大佬,这个是dump的实录信号,我调试好都没效果,从dump的结果看线性部分就发散厉害了,有没办法解决? aec_data.zip

changxuding commented 1 year ago

大佬,这个是dump的实录信号,我调试好都没效果,从dump的结果看线性部分就发散厉害了,有没办法解决? aec_data.zip

可以用双滤波器来控制,我默认设置的kalman的参数比较aggressive,所以在你的示例里在回声的起始点可能会发散;用单kalman的话,你可以尝试把st.A, st.P_MAX, st.psi_w做调整降低kalman的更新力度从而保证稳定,比如[0.99999,1,1e-8]

zuowanbushiwo commented 1 year ago

感谢,这样搞后线性部分确实没发散了, 我开始只调试了st.A , st.psi_w st.Psi_s 老是不行。 但是最终的效果还是比较差,这是什么原因?是非线性的吗?

changxuding commented 1 year ago

感谢,这样搞后线性部分确实没发散了, 我开始只调试了st.A , st.psi_w st.Psi_s 老是不行。 但是最终的效果还是比较差,这是什么原因?是非线性的吗?

非线性确实是其中之一的原因,这里基于一阶马尔可夫来建模不够准确,定值下的A和psi_w影响了跟踪的能力;其次卡尔曼本身也会累积误差

zuowanbushiwo commented 1 year ago

感谢指点 , 那这种情况 传统信号处理方向上还有解决办法吗?其实早几年的千元机都很容易碰到这种情况。 kalman 那几个关键参数,有自动的调节方法吗?

changxuding commented 1 year ago

感谢指点 , 那这种情况 传统信号处理方向上还有解决办法吗?其实早几年的千元机都很容易碰到这种情况。 kalman 那几个关键参数,有自动的调节方法吗?

可以试试做一个的检测器,类似判别single talk/double talk/no echo来分场景控制参数

zuowanbushiwo commented 1 year ago

这个是不是挺难的? 看文章说kalman 滤波是双讲鲁棒,现在看来也不太鲁棒。。。

大佬,还请教一个问题 最近再看FDKF(Frequency-domain adaptive Kalman filter for acoustic echo control in hands-free telephones) 和 PBFDKF(STATE-SPACE ARCHITECTURE OF THE PARTITIONED-BLOCK-BASED ACOUSTIC ECHO CONTROLLER) 发现 PBFDKF 中 滤波器更新的时候 是不是省略了一个A啊?或者这里面的A 为什么要置为1? image

changxuding commented 1 year ago

这个是不是挺难的? 看文章说kalman 滤波是双讲鲁棒,现在看来也不太鲁棒。。。

大佬,还请教一个问题 最近再看FDKF(Frequency-domain adaptive Kalman filter for acoustic echo control in hands-free telephones) 和 PBFDKF(STATE-SPACE ARCHITECTURE OF THE PARTITIONED-BLOCK-BASED ACOUSTIC ECHO CONTROLLER) 发现 PBFDKF 中 滤波器更新的时候 是不是省略了一个A啊?或者这里面的A 为什么要置为1? image

kalman鲁棒的泛化性有待考究,更新方程的问题你可以看下kalman filter的推导过程

zuowanbushiwo commented 1 year ago

好的,感谢 祝您生活愉快!