gpt4 book ai didi

audio - 决定 FFT 的长度

转载 作者:行者123 更新时间:2023-12-05 00:36:23 28 4
gpt4 key购买 nike

我正在开发一种工具来比较两个波形文件的波形相似性。例如,我有一个持续时间为 1 分钟的波形文件,我使用第一个波形文件制作了另一个波形文件,但每 5 秒生成一次数据,间隔为 5 秒至 0。
现在我的软件会告诉在 5 秒到 10 秒、15 秒到 20 秒、25 秒到 30 秒等时间间隔有波形差异......

截至目前,随着初步开发,这工作正常。
以下是3个测试集:

  • 我有两个采样率为 960Hz 的波形文件,单声道,没有数据样本为 138551(arnd 1min 12sec 文件)。我正在使用 128 点 FFT(将文件拆分为 128 个样本块)并且结果很好。
  • 当我对采样率为 48KHz、2 channel 的波形文件使用相同的算法时,每个 channel 的数据样本数为 6927361(arnd 2min 24 sec 文件),过程变得太慢。当我使用 4096 点 FFT 时,过程会更好。
  • 但是,在 22050Hz、2 channel 、每个 channel (arnd 0.6sec 文件)的数据样本数为 55776 的文件上的 4096 点 FFT 给出了非常差的结果。在这种情况下,128 点 FFT 给出了很好的结果。

  • 所以,我对如何决定 FFT 的长度感到困惑,以便我的结果在每种情况下都很好。

    我想长度应该取决于样本数量和采样率。
    请就此提出您的意见。

    谢谢

    最佳答案

    FFT 的长度,N , 将决定频域中的分辨率:

    resolution (Hz) = sample_rate (Hz) / N

    因此,例如在情况 (1) 中,您有 resolution = 960 / 128 = 7.5 Hz .因此,结果 FFT 中的每个 bin(或者可能是由此得出的功率谱)将是 7.5 Hz 宽,您将能够区分至少相距如此远的频率分量。

    由于您没有说明这些是哪种波形,或者您的应用程序的目的是什么,因此很难知道您需要什么样的分辨率。

    还有一点很重要 - 许多第一次使用 FFT 的人不知道通常您需要应用 window function在 FFT 之前避免 spectral leakage .

    关于audio - 决定 FFT 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8132227/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com