【发布时间】:2014-06-22 11:29:12
【问题描述】:
我已经搜索了很长时间,但没有找到真正有效的方法。
我的想法是我有一个音乐混合(主要是 .mp3),我正在尝试使用 pyechonest 来制作曲目列表来识别曲目。但是,这只会识别单个音轨(如果我错了,请纠正我),所以我想有另一个模块可以将混音分成单独的音轨。
我查看了 pydub 进行音频分割,但仍然无法检测到。
提前致谢。
编辑: 所以,我找到了一种剪切文件的方法,但现在 pyechonest 正在返回播客的名称,而不是它自己的曲目名称,我的代码(比如 5 个部分):
>>> from pyechonest import track
>>> resultlist = []
>>> path = "C:\\WinPython\\OwnScripts\\Convert"
>>> for i in range(0, 5, 1):
#for file parts I tried 25-30 second long, 128k mp3 and wav
... filename = path+"\\unleashed16_part"+str(i+1)+".wav"
... resultlist.append(track.track_from_filename(filename))
>>> resultlist
[<track - 001 Digital Punk - Unleashed>, <track - 001 Digital Punk - Unleashed>, <track - 001 Digital Punk - Unleashed>, <track - 001 Digital Punk - Unleashed>, <track - Defqon.1 2013 Continuous mix by Frontliner>]
显然不是我想要的...有什么方法可以强制 echonest 不查看播客,或者返回多种可能性或类似的东西?
【问题讨论】:
-
我认为您可以将混音分成 30 秒或 1 分钟的片段(即音频[startsample:endsample]),然后在每个部分上使用 echonest 识别方法,然后删除重复的轨道 ID 返回。
-
嗯,是的,我确实考虑过这一点,但问题是标准的 echonest API 只允许 20 次调用/分钟,我担心如果我在这些部分中削减它会出现问题。这就是为什么我认为最好先识别不同的轨道,然后剪掉部分。如果那是不可能的,我想我不得不使用你的想法是的。
标签: python python-2.7 audio audio-fingerprinting pydub