【问题标题】:How to convolve two fft of wav files如何卷积两个 fft 的 wav 文件
【发布时间】:2020-01-06 11:12:26
【问题描述】:

总的来说,我需要做的是 fft 两个 wav 文件,对它们进行卷积,然后对 fft 进行逆运算(以在更大的噪声 wav 文件中找到一个声音的时间戳。

感谢Python Scipy FFT wav files的bunkus,我有两个wav文件的fft

使用此代码后,我将如何在给定频率和幅度数组的情况下对两个 wav 文件进行卷积?如果我使用numpy.convolve,这两个输入会是每个 wav 文件的频率数组吗?振幅阵列? scipy.signal.fftconvolve()呢?

我需要以某种格式输出卷积,以便在此卷积上将其传递到np.fft.ifft()

【问题讨论】:

  • 您正在寻找对信号进行卷积,这相当于在频域中相乘。因此,要么在应用 FFT 之前对数据使用 numpy.convolvescipy.signal.fftconvolve,要么应用 FFT,将两个结果相乘,然后再进行 IFFT。但是,要在另一个信号中找到一个信号,您不应该使用卷积,而是使用互相关。这需要在应用卷积之前翻转“模型”信号。
  • 所以总而言之我应该翻转模型信号,应用卷积,fft,然后 ifft?我将如何翻转信号?那时 fft 的输入是什么?卷积结果的频率数组?
  • 没有。卷积(a,b) == ifft(fft(a)*fft(b))。

标签: python audio fft detection


【解决方案1】:

要进行 FFT 快速线性卷积,您需要首先在 FFT 之前对两个数据向量进行零填充,长度至少为 N+M-1(通常是 2 的下一个幂的两倍)。

那么乘法需要是两个 FFT 的复数结果的复数乘法,不是只是幅度的实数乘法。

如果您想要严格的实数卷积结果,请确保 IFFT 输入是共轭对称的。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2011-10-23
    • 2014-09-16
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多