使用FFT比较两个音频文件的唯一方法是什么?

时间:2013-10-23 23:30:31

标签: java audio mp3 fft wav

我是信号处理的新手,并尝试使用FFT比较两个音频文件。 将文件读取为字节,然后转换为复数,然后将其发送到fft。 然后计算复数的大小(从fft输出)。试图比较幅度,但它们不匹配。

如果我错过了什么,请告诉我。

有没有其他方法来比较两个音频文件?

1 个答案:

答案 0 :(得分:1)

通常,完整文件的FFT不相等 - 考虑40秒。包含四个10秒的文件。分别为20Hz,40Hz,60Hz和80Hz的正弦波段。

整个文件的相应频谱将显示这四个频率的峰值,但任何10秒。摘录最多会有两个。因此,他们不匹配。

现在,你想要做的事听起来有点像Shazam,幸运的是,他们已经发布a research paper它是如何工作的。也许这会解决你的问题。

对于另一种方法(尽管可能无法处理音高和速度变化),请考虑上面示例的含义:您不应该尝试匹配在40秒内创建的频谱图。到只代表10秒的那个。所以你必须找到第二个文件的原始文件的10秒段。

要实现这一点,您可以使用一个简单的滑动窗口(从秒1到10,然后是2到11等数据开始),或者您可以将第二个文件切割成更小的块并组合初始使用string searching中的技术滑动窗口。