我如何检测(最好使用Python)可以使用不同比特率编码的重复MP3文件(但它们是相同的歌曲)和可能不正确的ID3标签?
我知道我可以对文件内容进行MD5校验和,但这不适用于不同的比特率。我不知道ID3标签是否对生成MD5校验和有影响。我应该重新编码具有不同比特率的MP3文件,然后我可以进行校验和吗?你推荐什么?
答案 0 :(得分:15)
完全相同的问题是,旧的AudioScrobbler和目前在MusicBrainz的人们很久以前一直在努力。目前,可以帮助您完成任务的Python项目是Picard,它将使用GUID(实际上是其中几个)标记音频文件(不仅是MPEG 1第3层文件),然后从那时开始在,匹配标签非常简单。
如果您希望将其作为自己的项目,libofa可能会有所帮助。
答案 1 :(得分:4)
与其他人说的一样,简单的校验和不会检测具有不同比特率或ID3标签的重复项。您需要的是音频指纹算法。 Python Audioprocessing Suite有这样一个算法,但我不能说它有多可靠。
答案 2 :(得分:3)
对于代码问题,Picard可能确实是一个非常好的选择。如果您确定了两个可能重复的文件,那么您需要从中提取比特率信息,请查看mp3guessenc。
答案 3 :(得分:2)
我认为简单的校验和不会起作用:
我认为你必须比较ID3标签,歌曲长度和文件名。
答案 4 :(得分:2)
以相同的比特率重新编码将不起作用,实际上它可能会使事情变得更糟,因为转码(即调用不同比特率的重新编码)会改变压缩的性质,你是重新压缩已压缩的文件将导致文件显着不同。
这有点超出了我的联盟,但我会通过观察MP3的波形来解决问题。将MP3转换为未压缩的.wav,或者只是在MP3文件本身上运行分析。那里应该有一个图书馆。只是一句警告,这是一项昂贵的操作。
另一个想法是,使用ReplayGain扫描文件。如果它们是同一首歌,则应使用相同的增益标记它们。这只适用于完全相同的专辑中完全相同的歌曲。我知道有几个案例的重新发行是以更高的数量重新制作,从而改变了重播。
编辑:
您可能需要查看http://www.speech.kth.se/snack/,这显然可以进行频谱图可视化。我想任何可以使用视觉光谱图的图书馆都可以帮助你比较它们。
来自官方python页面的这个link也可能有所帮助。
答案 5 :(得分:2)
Dejavu项目是用Python编写的,完全符合您的要求。
https://github.com/worldveil/dejavu
它还支持许多常见格式(.wav,.mp3等)以及查找原始音轨中剪辑的时间偏移。
答案 6 :(得分:1)
我正在寻找类似的东西,我发现了这个:
http://www.lastfm.es/user/nova77LF/journal/2007/10/12/4kaf_fingerprint_(command_line)_client
希望它有所帮助。
答案 7 :(得分:1)
我使用长度作为我的主要启发式方法。这就是iTunes在尝试使用Gracenote database识别CD时所做的事情。 Measure the lengths in milliseconds而不是秒。请记住,这只是一种启发式方法:在删除任何检测到的重复项之前,您一定要先听一下。
答案 8 :(得分:1)
您可以使用PUID和MusicBrainz的后续广告,名为 AcoustiD :
找到各种客户端库和Web服务示例AcoustID是一个开源项目,旨在通过映射到MusicBrainz元数据数据库创建一个免费的音频指纹数据库,并使用该数据库提供用于音频文件识别的Web服务......
...指纹以及识别AcoustID数据库歌曲所需的一些元数据......