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