0

如果这个问题非常基本,我深表歉意。

我正在使用 FFT 将音频信号(目前是纯正弦波)从时域转换到频域,然后返回时域以比较与原始信号的差异。

目前我这样做:
- 采用非重叠帧(例如每帧 1024 个样本)。
- FFT 该帧
- iFFT 频域信息
- 将输出发送到扬声器

编辑(1):
这似乎现在可以工作(参见没有和有窗口的图像,其中输入=棕色,输出=蓝色)。
在此处输入图像描述
在此处输入图像描述
结束编辑 (1)

现在我想执行overlapp-add 方法:
- 采用50% 重叠的帧(样本0-1023、512-1535、1024-2047...)
- 将Hanning 窗口应用于ecah 帧
- FFT
- iFFT
- ?? ? 这是我的问题!!

所以在我的 iFFT 结束时,我有一个 1024 个样本的输出帧。这是否意味着我需要将前 512 个样本发送给扬声器,而其他 512 个样本 (512-1023) 应该保存在缓冲区中以添加到下一帧的前 512 个样本中?是这么简单还是我误解了什么?

谢谢!

4

1 回答 1

1

通常,当您进行重叠相加时,您会在 FFT 之前对数据进行零填充,并保存剩余的尾部以供稍后添加到处理的下一帧的结果中。

您最初的“质量差”问题可能是由于您没有保留 FFT 和 IFFT 之间的确切相位信息(完整的复杂 FFT 结果)的一些错误。无论您是否进行重叠添加或重叠保存快速卷积或其他处理,您都必须解决此问题。

于 2014-03-02T03:01:56.300 回答