一个小型命令行工具,用于查找类似的音频文件
audiomatch的Python项目详细描述
一个小的命令行工具来查找相似的音频文件
安装
首先,安装LukšLalinský的Chromaprint指纹库。(图书馆 它本身依赖于FFT库,但它足够聪明,可以使用 您可能已经安装了软件;有关详细信息,请参阅Chromaprint页面)
然后可以安装此库:
pip install audiomatch
为了快速完成任务,audiomatch需要安装C编译器和Python头文件。 可以通过设置AUDIOMATCH_NO_EXTENSIONS环境变量跳过编译:
^{pr2}$您可以避免在计算机上安装所有这些库,并在中运行所有这些库 码头工人:
docker run --rm -v "$(pwd)":/tmp fdooch/audiomatch "/tmp/*"
快速启动
假设,我们有一个目录,里面有涅磐之歌:
$ ls demo All Apologies (In Utero).m4a Dumb (Unplugged in NYC).m4a All Apologies (Unplugged in NYC).m4a Pennyroyal Tea (In Utero).m4a Dumb (In Utero).m4a Pennyroyal Tea (Solo Acoustic).mp3 Dumb (Radio Appearance, 1991).mp3 Pennyroyal Tea (Unplugged in NYC).m4a
我们来看看哪些文件听起来很相似:
$ audiomatch --length 300 ./demo These files sound similar: ./demo/All Apologies (In Utero).m4a ./demo/All Apologies (Unplugged in NYC).m4a --- ./demo/Dumb (In Utero).m4a ./demo/Dumb (Unplugged in NYC).m4a --- ./demo/Pennyroyal Tea (In Utero).m4a ./demo/Pennyroyal Tea (Solo Acoustic).mp3 ./demo/Pennyroyal Tea (Unplugged in NYC).m4a
Note 1:输入音频文件的长度至少应为10秒
注2:在某些罕见的情况下,假阳性是可能的
这里发生的是audiomatch从目录中获取所有音频文件 把它们相互比较。在
您还可以将文件与另一个文件、文件和目录或目录进行比较 目录。如果需要,可以提供glob样式的模式,但是不要忘记 引用它,因为否则shell会为您扩展它。例如,让我们比较所有 .mp3文件和.m4a文件:
$ audiomatch "./demo/*.mp3""./demo/*.m4a" These files sound similar: ../demo/Pennyroyal Tea (Solo Acoustic).mp3 ../demo/Pennyroyal Tea (Unplugged in NYC).m4a
这一次,audiomatch获取扩展名为.mp3的所有文件,并将它们与 扩展名为.m4a的所有文件。在
请注意,如何在输出中没有宫内版本。它出现在 以前的输出,因为它实际上与未插入的版本相似,然后是可传递的 定律适用:如果a = b和b = c,那么a = c。在
–长度
--length指定分析歌曲所用的秒数。违约 值是120,它足够好找到完全相同的歌曲,但可能在不同的 质量。然而,对于更复杂的情况,如同一首歌以不同的节奏播放 输入越多,结果就越准确。在
–延伸
默认情况下,audiomatch查找扩展名为.m4a、mp3、.caf的文件。 理论上,ffmpeg支持的音频格式也由audiomatch支持。你可以 告诉audiomatch使用--extension标志查找特定格式:
$ audiomatch -e .ogg -e .wav ./demo Not enough input files.
实际上,我们试图比较扩展名为.ogg和.wav的文件,但是 demo目录中没有这样的文件。在
动机
我弹吉他,时不时地做录音,主要是用iPhone上的语音备忘录。 这些年来,我有成百上千张这样的唱片,我觉得那会很酷 找到所有相似的,看看这些年来我的进步。在
所以我才写了这个图书馆。在
参考文献
- 项目
标签: