使用波形比较两个音频文件

时间:2013-01-03 13:31:08

标签: php python wav waveform

  

可能重复:
  Comparison of two waveforms of audio files

我找到了一个从wav文件生成波形的php函数,我对它进行了修改,现在它符合我的需求,效果很好。

波形对于每个wav文件似乎都是如此独特,所以也许可以使用它们的波形比较两个音频文件,看看b.wav与a.wav有多接近?这根本不是一个好主意吗?

我写了一些php函数来逐个像素地比较两个波形(JPG)。经过一些测试后,我得到以下结果:对于两个不同的音频文件,平均差异是〜97%的结果如预期,但我不知道它将如何在实际代码中工作。

有人可以就这个想法发表意见,也许还有一些有用的提示:)

我正在尝试比较两个音频文件,看看b.wav与a.wav有多接近。

P.S:我的wav文件几乎相同,唯一的区别就是声音。

3 个答案:

答案 0 :(得分:11)

我在大学里做类似的任务。我使用C ++。

为了比较,我做了一些步骤:

  1. 将音频文件拆分为块约1秒。每个
  2. 计算每个块的快速傅里叶变换(FFT)。
  3. 计算第一个文件的FFT与第二个文件的FFT之间的相关性。每个块都有。
  4. 检查所有块相关性的大小超过80%。这个值足以支持我的项目。

答案 1 :(得分:2)

比较波形上的音频是一种可行的方法。但它并不真正匹配一个音频文件与另一个音频文件。所有它匹配的是一段时间内幅度的差异。因此,如果您的目标是比较它,则波形比较是正确的。

如果你真的想比较shazam或其他有效的音频,请阅读how-does-shazam-recognize-songAn Industrial-Strength Audio Search Algorithm

答案 2 :(得分:0)

我不认为在比较信号时比较图形波形很有用。相反,您应该比较信号本身(array s或float s int s。

有很多信号处理方法可以提供某种相似性度量。作为第一个简单的尝试,cross correlation函数浮现在脑海中。