在音频文件集合中查找指定的音频模式
Posted
技术标签:
【中文标题】在音频文件集合中查找指定的音频模式【英文标题】:Find a specified audio pattern in a collection of audio files 【发布时间】:2018-10-24 18:30:03 【问题描述】:我收集了 1000 个音频文件。这些文件是以 MP3 格式存储的音乐文件,有的 10 分钟长,有的 15 秒长。
我还有一个 1 秒长的音频文件,也是 MP3 格式。我想从我的收藏中找出哪些文件包含这个 1 秒的音频文件。这个 1 秒的音频文件的音频质量可能比我的收藏稍差,因为它被重新编码、重新压缩等,所以我需要一些比简单的二进制搜索更智能的比较方法。
如果我想创建一个小程序来搜索我的音频文件集合中的这个 1 秒音频模式,我应该阅读哪些内容?
编辑:换句话说:我收集的 1000 个文件中的每个文件都是一首歌。我正在搜索的这个 1 秒片段是该专辑中某首歌曲的片段,我想知道它来自哪首歌。
【问题讨论】:
【参考方案1】:这是使用len(audiosegment)
的pydub 的一种方法。
"../so/*.mp3" 保存您的音频文件。或者您可以使用glob
遍历各种文件夹。
from glob import glob
from pydub import AudioSegment
for mp3_file in glob("../so/*.mp3"):
tmpAudioSegment = AudioSegment.from_mp3(mp3_file)
#Note: pydub len returns in milliseconds.
print(" : ".format(mp3_file,len(tmpAudioSegment)/1000))
结果
../so/Bubbles.mp3 : 10 sec
../so/Drone Dark Suspense 2.mp3 : 30 sec
../so/Sci-Fi Sweep.mp3 : 8 sec
../so/Pinball Machine.mp3 : 22 sec
../so/Title Flange Sweep Hit.mp3 : 3 sec
../so/Whale Sounds.mp3 : 6 sec
../so/Ambient Hit.mp3 : 2 sec
../so/Golf Hit 3.mp3 : 1 sec
【讨论】:
我已经用更多信息更新了这个问题,我的问题是什么。如果我正确理解您的解决方案,如果我想在我的 mp3 文件集合中搜索 1 秒歌曲,它将适用。但我想在我的所有文件集合中匹配 1 秒 mp3 模式,并且所有这些文件都超过 1 秒。这意味着其中一个匹配项可能是文件号 537,其持续时间为 5:30 分钟,位置为 0:13 秒。这个匹配会告诉我,在文件 537 的第 13 秒,有一个与我的 1 秒文件匹配的音频模式。 你要找的是“音频指纹”,结帐github.com/worldveil/dejavu 有详细的实现。如果遇到困难,请尝试并提出具体问题。 看来这确实是我要找的东西!以上是关于在音频文件集合中查找指定的音频模式的主要内容,如果未能解决你的问题,请参考以下文章