Модуль Python для разделения аудио микса

Я долго искал, но не нашел ничего, что действительно работало.
Идея в том, что у меня есть музыкальный микс (в основном.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 не заглядывать в подкасты, или возвращать множественные возможности или что-то в этом роде?

1 ответ

Если вы можете установить разумную минимальную длину песни, вы можете использовать идею CounterFlame, не посылая каждую секунду аудио в их API.

Например, если вы знаете, что самая короткая песня длится не менее 3 минут, вы можете отправлять 30-секундный фрагмент каждые 2 минуты, чтобы эхо-гнездо

 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 фрагмента, чтобы по крайней мере один не перекрывал песню до / после

Другие вопросы по тегам