我的大容量(120 in )音乐收藏包含许多重复的歌曲,我一直在尝试对曲目进行指纹识别,希望能检测出重复的曲目。因为我是CS专业的,所以我很好奇外面发生了什么?我所做的任何事情都没有像Shazam或Lala.com那样的准确性。他们是如何“散列”曲目的?我对我所有的文件(26,000个文件)运行了一个标准的MD5散列,我在不同的轨道上发现了数百个相等的散列,所以这不起作用。
我对Lala.com更感兴趣,因为他们使用完整的文件,不像Shazam,但我假设两者都使用类似的技术。有人能解释一下如何为音乐生成唯一的标识符吗?
发布于 2010-01-18 13:45:05
关于音频指纹的开创性论文是Haitsma和Kalker在2002-03年的工作。对于每一帧音频,它都会进行预处理(时间帧和频带之间的差异),然后存储帧频谱的二进制版本。
此过程增加了健壮性。如果整个信号在时间上移位,它仍然有效(至少可以推导出性能下降的下限)。它对环境噪声有很强的鲁棒性。自从它诞生以来,已经有很多关于低级音乐相似性的论文,所以没有一个单一的答案。
你是否有完全相同的文件,例如,信号是时间对齐的,位深度相同,采样率相同?然后我会认为像MD5这样的散列应该是有效的。但是,如果这些参数中的任何一个被更改,散列也会被更改。在这种情况下,像前面提到的过程会工作得更好。
看看在线免费提供的ISMIR程序。有趣的东西。http://www.ismir.net/
发布于 2010-01-12 12:58:07
看看维基百科上的Acoustic Fingerprint页面。它有一些论文的参考,以及到实现的链接(包括开源fdmf)。
发布于 2010-01-12 12:59:00
经过更多的研究(尽管这根本不是决定性的!),我偶然发现了MusicBrainz.org的维基,其中详细介绍了他们使用的一些方法:
https://stackoverflow.com/questions/2046771
复制相似问题