6

我正在开发音乐流媒体服务,但遇到了一个问题:如何比较两个音频文件以查看它们是否代表同一首歌曲。这些文件可能具有不同的扩展名(例如 OGG、mp3、wma),但可能仍然是同一首歌曲,并且它们可能具有不同的比特率和音量级别。

4

4 回答 4

6

搜索“音频指纹”。一个可能的解决方案可能是这个库这篇论文

于 2012-08-16T13:23:58.653 回答
2

我会查看 Google 的开源 lib musicg API: http ://code.google.com/p/musicg/

它是 Java 并提供两个音频文件的相似度指标。

于 2012-09-11T22:20:15.473 回答
1

您可以使用开源 echoprint

基本上,您将生成本地歌曲的指纹,并将其与歌曲数据库(如果找到)进行比较。

如果你想比较你的两首歌曲,你需要做的是用第一首歌曲创建一个本地数据库,然后尝试在你自己的数据库中匹配第二首歌曲。如果找到,则表示它们是相同的。

请注意,“成为同一首歌”的概念很棘手。实际上指纹所做的是比较歌曲的许多部分,试图匹配这些部分。这意味着即使您对音频有干扰(如人说话、背景噪音等),您也可以匹配一首歌曲,因为大部分音频都与原始音频相似。

有一篇论文详细解释了 echoprint 的工作原理

于 2014-01-19T11:18:58.823 回答
0

对于这样的事情(因为我做了一点音频制作),您需要某种可以执行频谱分析的算法(可能使用 FFT - 快速傅立叶变换)。
在这里检查这个问题

于 2012-08-16T13:23:48.997 回答