我正在开发一款音乐流媒体服务,遇到了一个问题:如何比较两个音频文件是否代表同一首歌曲。这些文件可能没有相同的扩展名(例如OGG,mp3,wma),但仍然可能是同一首歌,而它们可能具有不同的比特率和音量水平。
你可以使用开源的Echoprint。基本上,你会生成本地歌曲的指纹,并将其与歌曲数据库进行比较,以确定是否存在。如果你想比较两首歌曲,你需要创建一个包含第一首歌曲的本地数据库,然后尝试在自己的数据库中匹配第二首歌曲。如果找到了,那么它们就是相同的。请注意,“相同歌曲”的概念有些棘手。实际上,指纹比较的是歌曲的许多部分,试图匹配这些部分。这意味着,即使音频中有干扰(如人声、背景噪音等),你也能够匹配一首歌曲,因为大部分音频都与原始音频相似。 有一篇论文详细解释了Echoprint的工作原理。