一个小型命令行工具,用于查找类似的音频文件

audiomatch的Python项目详细描述


Build StatusCoverage StatusPyPI Package latest releaseMIT License

一个小的命令行工具来查找相似的音频文件

安装

首先,安装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 = bb = c,那么a = c。在

–长度

--length指定分析歌曲所用的秒数。违约 值是120,它足够好找到完全相同的歌曲,但可能在不同的 质量。然而,对于更复杂的情况,如同一首歌以不同的节奏播放 输入越多,结果就越准确。在

–延伸

默认情况下,audiomatch查找扩展名为.m4amp3.caf的文件。 理论上,ffmpeg支持的音频格式也由audiomatch支持。你可以 告诉audiomatch使用--extension标志查找特定格式:

$ audiomatch -e .ogg -e .wav ./demo
Not enough input files.

实际上,我们试图比较扩展名为.ogg.wav的文件,但是 demo目录中没有这样的文件。在

动机

我弹吉他,时不时地做录音,主要是用iPhone上的语音备忘录。 这些年来,我有成百上千张这样的唱片,我觉得那会很酷 找到所有相似的,看看这些年来我的进步。在

所以我才写了这个图书馆。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何获取所有链接并使用SeleniumWebDriver逐个单击这些链接   java中数组列表的arraylist移位元素   java如何存储具有不同类型参数的元素   java不能使用List<Future<?>>当从不同位置调用时,在方法参数中   java我应该如何修复代码以避免测试代码出错?   安卓 PreferenceFragment java。lang.RuntimeException   java在运行emulator时发现错误   java取消多个AsyncTask回调的有效方法是什么?如果中途满足条件,这些回调将在将来返回?   有没有办法在运行时将方法动态分配给Java类?   java如何将propertyfile与GlassFish一起使用   如何在PHP中使用bcrypt对密码进行哈希处理?   Java和UDP web服务器   java JPA允许EntityListeners执行JPA操作吗?   java执行do while语句时不会产生错误   java无法在edittext中显示数据库中的数据   java Tomcat中活动会话的数量   java在何处使用@SuppressWarnings(“requestfactory”)   netty连接中的java HornetQ异常