可以在不产生毛刺的情况下修改信号的 FFT 表示吗?

信息处理 fft
2022-02-16 19:57:01

我已经读过,在 FFT 之后修改频域中的 bin 值会带来问题,当使用 iFFT 将信号带回时域时会导致毛刺。这是 iirc 造成的,因为修改后的数据不再“连续”对齐到 bin (并且不连续性人工制品)。因此,例如不建议在频域中执行(“理想滤波器”)均衡。

但是由于有例如插值方法,

有没有办法进行处理,例如在频域中进行混洗或删除箱,以便可以保持音质?例如,通过使用插值方法“合成”新数据。


在音频的上下文中,有些东西似乎是可行的,因为存在这样的插件,它们似乎在频域中进行过滤:

在此处输入图像描述

3个回答

你这样做的方式是使用一个在 FFT 之前和之后逐渐变细到 0 的窗口(分析和重新合成窗口),以及 50% 的重叠(需要是COLA 窗口),以淡出毛刺并保持信号连续。

在此处输入图像描述

如果对 FFT 表示的 bin 修改可以通过有限长度脉冲响应的变换足够接近您的目的,则可以在没有毛刺的情况下完成一系列零填充 FFT 的修改以及重叠添加或重叠保存处理。零填充加重叠是为了防止 bin 修改中的循环卷积伪影导致不连续。使修改的脉冲响应足够短以执行此操作也有助于消除修改在 FFT 箱之间的频率响应中的波纹;这些涟漪可能是令人讨厌的伪影的另一个原因。

对于属于分析/再合成音乐处理类别的 bin“混洗”,相位声码器方法与交叉淡入淡出充分重叠的 IFFT 结果帧相结合是无毛刺修改的另一种可能性。

我认为只要 bin 修改代表时间的连续体,你就可以了。换句话说,bin 修改(比例、偏移等)应该接近前一个窗口的相同 bin。