减少 FIR 中用于回声消除的抽头数

信息处理 有限脉冲响应
2022-01-29 01:10:03

我正在尝试在 FPGA 上实现 NLMS 算法。问题是我的 FIR 滤波器最多只能使用 2048 个系数,我的采样率为 16KHz,但是,以 16KHz 采样的房间脉冲响应可能比 2048 长 10 倍,有什么办法可以减少抽头的数量以去除只有 2048 个抽头的长回波?我是 FIR 主题的新手,我知道我的 FIR 滤波器 IP 允许抽取、插值,并且可以具有与输入不同的采样率,我可以利用它来减少抽头数吗?我还可以压缩房间脉冲响应并舍入许多接近零的样本并使它们为零,但这有助于减少系数的数量吗?

1个回答

关于您的设置运行环境的唯一数据在“以 16KHz 采样的房间脉冲响应可以比 2048 长 10 倍”这一短语中给出。这 20480 个样本覆盖了 1280 毫秒的时间间隔。我想知道它是什么房间,因为在“稀疏回声消除的自适应算法”一文中,我读到:“典型电话会议室中回声响应的长度在 100 到 400 毫秒之间”。对您来说好消息是在短语 continuation 中:“因此,通常需要使用 1024 个或更多抽头的自适应滤波器才能实现足够的回声消除水平”。因此,使用参考文献中描述的技术,使用 2048 抽头滤波器,您将能够消除高达 800 毫秒区域内的回声,

我建议您首先确保您对房间脉冲响应参数的估计(和理解)是正确的。如果任务规范更乐观,您可以在文章“稀疏回声消除的自适应算法”的自适应算法中找到现成的解决方案。如果任务规范更严格,最好的办法是使用自适应滤波器算法的进一步发展,作为非参数可变步长 PNLMS 算法 (NPVSS-NLMS)稀疏控制仿射投影算法 (PAPA)

作为该主题的新手,您可能会受益于学习基于稀疏阵列的房间传递函数估计的首次进入方法以进行回声消除