Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 如何以编程方式比较mp3_Audio_Mp3_Compare - Fatal编程技术网

Audio 如何以编程方式比较mp3

Audio 如何以编程方式比较mp3,audio,mp3,compare,Audio,Mp3,Compare,我喜欢能够比较mp3的编程。这个问题我不知道是什么引起的。 头球?直方图?频道?有人有这方面的经验吗?我想你可以采取多种方法: 1.比较标签 你可以比较mp3标签中的数据。标签是以这种格式保存的。有许多库可以帮助您访问标记,这是一个流行的选择(适用于.net应用程序) 2.声指纹 这是迄今为止最健壮的方法,允许您查找匹配项,而不考虑压缩甚至格式。一个唯一的指纹是从文件中的实际音频创建的,允许识别歌曲就是一个开源的例子 3.从文件创建哈希 这是一种更快的方法,允许您查找内容完全匹配的文件 进一步

我喜欢能够比较mp3的编程。这个问题我不知道是什么引起的。
头球?直方图?频道?有人有这方面的经验吗?

我想你可以采取多种方法:

1.比较标签 你可以比较mp3标签中的数据。标签是以这种格式保存的。有许多库可以帮助您访问标记,这是一个流行的选择(适用于.net应用程序)

2.声指纹 这是迄今为止最健壮的方法,允许您查找匹配项,而不考虑压缩甚至格式。一个唯一的指纹是从文件中的实际音频创建的,允许识别歌曲就是一个开源的例子

3.从文件创建哈希 这是一种更快的方法,允许您查找内容完全匹配的文件


进一步阅读:

  • 这里有一篇关于管理mp3收藏(包括读取标签)的有趣的MSDN文章: (它是用visual basic编写的,但可能仍然有用。)

  • 这里有一个关于文件格式的小说明:


你所说的比较是什么意思?元数据(作者、标题等),音频数据?为了什么

比较音频数据的一种流行且基本的方法是计算某些光谱特征上的某种距离,例如MFCC:


我经常在linux上使用fdupes查找重复文件。fdupes使用md5校验和。

我写过音频指纹。本文列举了一些开源解决方案来比较音乐的声音,并提供了它们之间的性能比较。可能有点过头了,但有一些真正像样的应用程序


如果您只想通过标记的数据进行比较,那么要研究的标准是。基本上有两个版本,第一个非常简单(ID3v1),由MP3末尾的128字节块组成。ID3v2在MP3的开头放了一个更大、大小可变的块。

如果您只是想根据标签比较MP3,我建议。

为了更好地回答您的问题,我想我们需要确切地知道您想要做什么

如果您想比较实际的歌曲,MusicDN有一个能够创建音频指纹的库。可以找到名为libOFA的库。例如,musicbrainz使用该指纹识别系统将数字音频文件与其数据库进行匹配。理论上,你可以用它来比较两个不同的数字文件

如果您希望比较标记数据(id3v1/id3v2),那么有很多库可以为您进行比较,这里提到了taglib,并且libmpg123有自己的函数来提取标记数据

libOFA方法的好处在于,您可以相互比较不同的格式,因为指纹识别是在音频本身上完成的

我喜欢能够比较mp3的编程

我也有同样的问题。我发现itunes改变了我的许多Amazon MP3下载,改变了时间/日期戳、文件大小以及MD5签名。我的备份突然有许多几乎重复的文件

当我执行VIM diff时,我可以看到更改仅限于文件的很小部分。即使在近距离放大的情况下,这些文件看起来也完全相同

我的解决方案是创建mp3的无头WAV转储,然后比较每个WAV的MD5签名。FFMPEG可以很容易地进行翻译

ffmpeg -y -i $mp3 $mp3.wav;
md5sum $mp3.wav
我创建了一个以MD5为键的散列,指向原始MP3文件规范。为了提高速度,将wav文件放在SSD上

蛮力,但它有效

它看起来可以满足您的需求。它将PCM数据转换为音频指纹,然后您可以使用这些指纹进行比较

他们有一个C API库(实际上是用C++编写的),一个Python前端,还有一些工具来转换JSON中的结果,这意味着你可以使用另一种语言来操纵数据。不过,我认为它们本身并没有提供比较功能


此外,如果您使用的是Linux系统,您可能会找到一个软件包。

我猜您的意思是“比较”,是吗?下面答案中提到的用于比较音频的程序似乎在几年前就被废弃了。还有没有保养?我也面临这个问题,我需要一个程序来比较两个MP3,并得到一份有差异的报告。@AdrianBer,也许吧?看到我的答案了。维加尔·拉森论文的链接现在断开了,但我可以在这里找到:@VegardLarsen链接到你硕士论文的URL断开了,请你更新一下好吗?@hoorayimshipping-URL在更新后。有人更改了URL结构:创建的wav可能仍然有一些元数据。用这个来摆脱它:
avconv-i wav.wav-map 0-map\u元数据0:s:0-c copy nometa.wav
有任何库/程序这样做吗?