Как разделить песни из аудио? - PullRequest
0 голосов
/ 09 ноября 2018

У меня длинная запись с несколькими песнями, я знаю длину каждой песни, но между каждой из них существует неизвестное количество тишины. Как я могу разбить эти песни на отдельные файлы?

Если я попытаюсь разделить его по длине песен, молчание между песнями будет считаться частью начала следующей песни. Это приводит к тому, что выходные файлы синхронизируются довольно быстро, и я получаю отдельные файлы, которые содержат две песни. Я также попытался использовать Pydub silence.split_on_silence, но это нашло много ложных срабатываний, так как в самих песнях есть некоторое молчание.

Я попытался объединить их, чтобы найти длительность молчания между песнями, но, к сожалению, никакие изменения в аргументах silence.detect_silence Pydub не нашли бы молчание, начинающееся где-то ближе к концу песни из-за затухания. Либо это отрежет часть конца, либо полностью пропустит тишину, потому что она недостаточно молчала. Возможно, есть сладкое место, которое я не нашел, но должен быть лучший способ.

Это соответствующий код, я думаю:

audio = AudioSegment(...)

offset = 0
for track in track_info_list: # track_info_list is a dictionary of data about each song
    t1 = offset
    t2 = t1 + int(track['duration_ms'])

    splice = audio[t1:t2] # cut out exactly the length of the song from the recording
    splice.export(...) # export that as a separate file
    offset = t2

Как я уже говорил, это прекрасно работает, но экспортированные файлы не синхронизируются. Как мне поступить так, чтобы разделить их чисто?

...