我是信号处理的新手,并尝试使用 FFT 比较两个音频文件。将文件读取为字节,然后转换为复数,然后将其发送到 fft。然后计算复数的大小(从fft输出)。试图比较大小,但它们不匹配。
如果我遗漏任何东西,请告诉我。
有没有其他方法可以比较两个音频文件?
通常,完整文件的 FFT 不相等 - 考虑 40 秒。包含四个 10 秒的文件。分别为 20Hz、40Hz、60Hz 和 80Hz 的正弦波段。
整个文件的相应频谱将显示这四个频率的峰值,但任何 10 秒。摘录最多有两个。因此,它们不匹配。
现在,您尝试做的事情听起来有点像 Shazam,幸运的是,他们发布了一篇关于其工作原理的研究论文。也许这会解决你的问题。
对于另一种方法(尽管可能无法处理音高和速度变化),请考虑我上面示例的含义:您不应该尝试匹配超过 40 秒创建的频谱图。到一个只代表 10 秒。因此,您必须找到第二个文件取自原始文件的哪个 10 秒段。
为此,您可以使用一个简单的滑动窗口(从 1 到 10 秒的数据开始,然后是 2 到 11 秒,依此类推),或者您可以将第二个文件切成更小的块并将初始滑动窗口与字符串搜索技术。