Musicbrainz 指纹识别

Posted

技术标签:

【中文标题】Musicbrainz 指纹识别【英文标题】:Musicbrainz fingerprinting 【发布时间】:2010-12-31 20:09:43 【问题描述】:

在过去的几个小时里,我一直忙于了解MusicBrainz 数据库,我注意到没有命令行应用程序来标记或指纹音频文件。 Musicbrainz 的指纹识别是否有任何 CLI 实现?以及如何创建这些指纹?

我在他们的网站上找到了一些 development tools(python-musicbrainz2、libdiscid 和 XML Webs 服务),但我找不到创建这些指纹的简单工具或应用程序(开发工具似乎只对检索有用使用指纹的曲目/艺术家信息)。我是不是理解错了?

亲切的问候

【问题讨论】:

【参考方案1】:

现在,在 MusicBrainz [1],PUID 被视为“已死”。 它们仍附加到文件中,但无法再为文件查找和创建 PUID。

有一种称为AcoustID 的新指纹机制。 有可用于创建和查找这些 ID 的开源软件。 AcoustID 不是直接的 MusicBrainz 项目,而是由 MusicBrainz 开发人员创建,ID 主要附加到 MusicBrainz Recordings 并在 MusicBrainz 网站上列出。

编辑:

fpcalcchromaprint 都是 AcoustID 工具的一部分。

【讨论】:

python 用户可以安装:github.com/beetbox/pyacoustid。那么您只需要:API_KEY = 'cSpUJKpD'results = acoustid.match(API_KEY, file) 即可获取为您的文件找到的 acoustID 列表。【参考方案2】:

存在第三方 CLI:albumidentify。

此外,为了完成 Debilski 的回复,如果您使用允许您每小时更新数据库的 LiveDataFeed,或者如果您在商业产品中使用 WebService,则只需要许可证。

【讨论】:

感谢您提供更多信息 :)【参考方案3】:

指纹是通过外部libofa library 完成的。 (另见MusicDNS。)所以,实际上这不是“Musicbrainz 的指纹”,而是 Amplifind 的。

我不知道当前是否存在任何命令行工具,但文档中显示的代码对我来说并不复杂(但您需要许可证才能访问数据库);因此,如果需要,您可以自己编写。

另外,您可以查看 Musicbrainz Picard 源代码中的 musicdns 目录;他们在那里使用 Python 接口。

我认为 Musicbrainz 提供 CLI 实现并不容易,因为 MusicIP 并不总是可靠的,并且在某些情况下需要用户输入;这就是为什么他们可能会专注于他们的 GUI Picard

【讨论】:

非常感谢您提供的好信息!我会看一下 Picard 的源代码,我想这是了解他们如何进行指纹识别的最简单方法。 libofa/musicDNS/PUIDs 现在完全过时了。见***.com/a/13897724/1904815【参考方案4】:

我不确定,如果您仍然感兴趣。实际上,指纹部分是使用名为fpcalc.exe 的命令行工具完成的。此工具计算给定文件的音频部分的指纹和持续时间。

您可以从 AcoustID 网站下载适用于 windows、linux 和 Mac OSX 的 fpcalc 源代码和二进制文件:http://acoustid.org/chromaprint

【讨论】:

是的,这是正确的解决方案,libofa 和 puid 已失效

以上是关于Musicbrainz 指纹识别的主要内容,如果未能解决你的问题,请参考以下文章

获取带有 MusicBrainz ID 的专辑曲目列表

Musicbrainz 艺术家形象和信息

如何对 MusicBrainz 搜索 API 的结果进行排序

python 从MusicBrainz获取/处理JSON数据

musicbrainz api 获取所有发布组和发布日期

Use MusicBrainz in iOS查询专辑的完整信息