我一直在寻找很长一段时间,但却没有想出任何实际有用的东西 我的想法是,我有一个音乐组合(大多数是.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不去看播客,或者返回多种可能性或类似的东西?
答案 0 :(得分:0)
如果您可以设置合理的最小歌曲长度,则可以使用CounterFlame的想法,而无需将每秒音频发送到其API。
例如,如果您知道最短的歌曲至少3分钟,您可以每2分钟发送一个30秒的大块来回声巢
14 minutes: ("=" is 15 seconds)
|===|===|===|===|===|===|===|===|===|===|===|===|===|
song 1 (3:00) song 2 (5:15) song 3 (4:30)
|============|====================|=================|
^^ ^^ ^^ ^^ ^^ ^^ <-- send these chunks
数学运算如下:
# everything in seconds
minimum_song_length = 3 * 60
chunk_size_to_send = 30
throw_away_between_chunks = minimum_song_length - (2 * chunk_size_to_send)
基本上你希望最短的歌曲有2个发送的块被识别,以便至少有一个不会在之前/之后与歌曲重叠