2

是否有关于重叠处理的任何好的(如果可能的科学)资源(网络或书籍)。我对在分析信号时使用重叠处理和窗口的效果不感兴趣,因为要求不同。更多的是关于以下实时情况:(我目前正在处理音频信号)

  • 将信号分成更小的部分。
  • 创建重叠窗口。
  • FFTing 窗口块。
  • 在频域中进行处理。
  • IFFT 结果。
  • 将这些块放在一起形成一个连续的流。

我对所使用的窗口对结果误差的影响以及重叠长度的影响特别感兴趣。但是,我找不到任何详细处理该主题的好资源。有什么建议么?

编辑:

经过一些讨论是否适合使用窗口功能,我找到了一个不错的讲义,解释了重叠和添加/保存方法。http://www.ece.tamu.edu/~deepa/ecen448/handouts/08c/10_Overlap_Save_Add_handouts.pdf

然而,在做了一些测试之后,我注意到窗口版本在大多数情况下会比重叠和添加/保存方法更准确。有人可以证实这一点吗?不过,我不想就计算时间得出任何结论......

编辑2:

以下是我测试的一些图表:

我创建了一个信号,它由三个余弦波组成 在此处输入图像描述

我在时域中使用了这个过滤器功能进行过滤。(它是对称的,因为它应用于 FFT 的整个输出,对于实际输入信号也是对称的) 在此处输入图像描述

IFFT 的输出如下所示: 可以看出,低频比中频衰减更多。 在此处输入图像描述

对于重叠添加/保存和加窗处理,我将输入信号分成 8 个 256 个样本的块。重新组装后,它们看起来像这样。(样品 490 - 540) 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

可以看出,重叠添加/保存过程在块放在一起的点上与窗口版本不同(样本 511)。这是在比较窗口化进程和重叠添加/保存时导致不同结果的错误。窗口化进程更接近于在一个大垃圾中处理的进程。

但是,我不知道他们为什么在那里,或者他们根本不应该在那里。

4

3 回答 3

3

这是信号处理中相当知名的领域,一般来说,如果您按照 FFT -> 频谱处理 -> IFFT 的方式进行处理,则需要使用“重叠和相加”方法。两个输入的互相关是一个典型的例子,在谱域中比在时域中更容易完成。

这是我通过 Google 立即找到的一篇简短论文(我刚刚搜索了“fft overlay and add”): http: //www.coe.montana.edu/ee/rmaher/ee477/ee477_fftlab_sp07.pdf

我建议您购买一本好的信号处理书籍,例如经典的 Rabiner & Gold “数字信号处理的理论和应用”(Prentice-Hall ISBN 0-13-914101-4)。这应该涵盖重叠和添加处理的概念。

于 2011-02-22T13:18:03.837 回答
1

当使用 FFT 进行重叠添加或重叠保存快速卷积过滤时,通常您不想使用窗口函数。当在规范重叠添加/保存过滤中组合连续的 FFT 帧时,圆形窗口伪影会被抵消。

添加:

如果您确实使用非矩形窗口,您可能需要确保窗口的所有重叠帧总和为 DC,否则您生成的滤波信号将具有幅度扇形。如果重叠量是窗口宽度的精确约数,则矩形窗口和升余弦 (von Hann) 窗口的总和将为 DC(当然,在重叠序列的最开始和结束时除外)。

于 2011-02-22T15:29:34.960 回答
1

我一直在玩这个试图自己回答为什么要使用窗户的问题。我对合成窗口的唯一引用是: https ://ccrma.stanford.edu/~jos/sasp/Inverse_FFT_Synthesis.html

http://recherche.ircam.fr/anasyn/roebel/amt_audiosignale/VL2.pdf

http://www.dspdimension.com/tutorials/

Stephan Bernsee 有一些很好的概述信息。他的 smbpitchshift 代码使用了一个合成窗口——他在输入块上使用升余弦,然后在输出块上再次应用它,但我认为这是必要的,因为音高移位算法不是线性滤波操作,所以可以肯定窗口边界上可能存在不连续的伪影,因此使用合成窗口来创建帧之间的平滑过渡。

我认为没有太多专门针对频域实时卷积的窗口的信息的原因是因为它没有实际应用,除非您还需要进行一些分析(即,某种自适应滤波器),然后与频谱扩展相关的话题再次引起人们的兴趣。

我使用升余弦窗口和重叠相加方法绘制了滤波信号的输出,最终结果是相同的 IR 和相同的信号。这并不奇怪,因为在时域中执行的相同操作会产生相同的结果。

另一方面,如果我实现了一个损坏的过滤器内核,一个平滑的窗口函数可以帮助屏蔽伪影。从某种意义上说,这可以将破碎的 IR 窗口化,因此帧之间的过渡更具凝聚力。最好有一个时域长度限制为 nfft/2 的 IR。如果您需要获得 IR 长于 nfft/2 的滤波器响应,那么您应该考虑使用更大的 FFT 大小(如果延迟不是问题)或使用分区卷积方案:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB4QFjAA&url=http%3A%2F%2Fpcfarina.eng.unipr.it%2FPublic%2FPapers%2F164-Mohonk2001。 PDF&ei=qtH0TorDEoKziQKAloHEDg&usg=AFQjCNGDmz79DiuG1kmPXifbWJ7M-gr9rQ&sig2=CMopEcGc1VArZ3gipWTr_w

或者

http://www.music.miami.edu/programs/mue/Research/jvandekieft/jvchapter2.htm

我希望这对阅读本文的人有所帮助

我希望这些链接有所帮助,即使它没有直接解决实时频域过滤中使用的窗口问题。

于 2011-12-23T19:13:03.960 回答