0

可能重复:
比较音频文件的两个波形

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

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

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

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

我正在尝试比较两个音频文件以查看 b.wav 与 a.wav 的接近程度。

PS:我的wav文件几乎一样,唯一的区别是人声。

4

3 回答 3

14

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

为了比较我做了步骤:

  1. 将音频文件拆分为大约 1 秒的块。每个。
  2. 计算每个块的快速傅里叶变换 (FFT)。
  3. 计算第一个文件的 FFT 和第二个文件的 FFT 之间的相关性。它适用于每个块。
  4. 检查所有块相关性超过 80%。这个值对我的项目来说已经足够了。
于 2013-01-03T13:39:07.557 回答
2

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

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

于 2013-01-03T13:40:43.503 回答
0

在比较信号时,我认为比较图形波形没有多大用处。相反,您应该比较信号本身(arrays of floats 或ints)。

有很多信号处理方法可以提供某种相似性度量。首先,我想到了互相关函数的简单尝试。

于 2013-01-03T13:42:32.807 回答