我正在处理音乐流媒体服务,我遇到了一个问题:如何比较两个音频文件,看它们是否代表同一首歌。文件可能没有相同的扩展名(例如OGG,mp3,wma),但可能仍然是同一首歌,并且它们可能具有不同的比特率和音量级别。
答案 0 :(得分:6)
搜索“音频指纹识别”。可能的解决方案可能是this library或this paper。
答案 1 :(得分:2)
我查看了Google的开源lib musicg API: http://code.google.com/p/musicg/
它是Java并提供两个音频文件的相似性指标。
答案 2 :(得分:1)
基本上,您将生成本地歌曲的指纹,并将其与歌曲数据库(如果找到)进行比较。
如果你想比较两首歌曲,你需要做的是用第一首歌曲创建一个本地数据库,然后尝试匹配你自己数据库中的第二首歌曲。如果找到,意味着它们是相同的。
请注意,“成为同一首歌”的概念很棘手。实际上,指纹的作用是比较歌曲的许多部分,试图匹配这些很多部分。这意味着即使您对音频有干扰(如人们说话,背景噪音等),您也可以匹配一首歌曲,因为大部分音频都与原作相似。
答案 3 :(得分:0)
对于这样的事情(因为我做了一些音频制作),你需要某种能够进行频谱分析的算法(可能使用FFT - 快速傅里叶变换)。
请检查此question here。