实时卷积插件如何如此快速地处理音频

信息处理 卷积 冲动反应 频域 即时的
2021-12-25 23:27:44

好的,所以在 Logic Pro 中,我可以加载一个带有 9.1 秒长的脉冲的 Space Designer 插件(卷积混响),打开我的麦克风,并在麦克风记录传入音频时获得实时卷积混响。

我的问题是:这怎么可能?我的 I/O 缓冲区大小为 32 个样本。我的计算机是否能够在 0.0007 秒内执行 401,310 样本脉冲与 32 样本音频块的卷积?如果是这样,我需要什么样的黑魔法才能让我自己的卷积混响来做到这一点?

我应该提一下,我正在尝试在 C 中使用 portaudio 开发实时卷积。它在非实时时效果很好,但实时速度太慢(我上面提到的卷积使用频域卷积需要 0.8 秒,对于这种大小的脉冲应该更快,不是吗?

无论如何,任何见解都会有所帮助,因为我真的很想了解这种实时处理是如何实现的。

1个回答

具有长脉冲响应的实时低延迟分区卷积混响通过将脉冲响应划分为大小不等的分区来工作。最短的分区(块)位于脉冲响应的开头,分区长度向着脉冲响应的末尾增长:

分区

每个分区长度可以单独处理,为每个分区长度提供基于快速傅里叶变换 (FFT) 的卷积的延迟,可能是分区长度的几倍。所有分区长度的卷积输出相加,形成最终的复合输出。在对脉冲响应进行分区时,特定长度的分区不得出现在等于该分区长度的卷积延迟的时间之前。时域有限脉冲响应 (FIR) 滤波器可用于脉冲响应的开始,因为这可能比通过 FFT 进行低长度卷积更有效。

应该在目标平台上测试给定脉冲响应长度的最佳划分以及时域 FIR 和 FFT 卷积之间的最佳分割点。非均匀分区卷积的一个具有挑战性的方面是工作的调度。

非均匀分区卷积由 William G. Gardner在无输入输出延迟的高效卷积、J. Audio Eng 中推广。社会,卷。43,第 3 期,1995 年 3 月,可在线查阅 http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF