Увеличение скорости воспроизведения комбинированного файла WAV в Python?

Я пытался объединить несколько файлов WAV в Python, используя Pydub, но скорость воспроизведения выходной песни была немного медленнее, чем я хотел. Поэтому я обратился к этому вопросу и попробовал то же самое.

import os, glob 
import random
from pydub import AudioSegment 

FRAMERATE = 44100 # The frequency of default wav file 
OUTPUT_FILE = 'MySong/random.wav'

audio_data = [AudioSegment.from_wav(wavfile) 
                for wavfile in glob.glob(os.path.join('wav_files/', '*.wav'))]

my_music = sum([random.choice(audio_data)for i in range(100)])

my_music = my_music.set_frame_rate(FRAMERATE * 4)
my_music.export(OUTPUT_FILE, format='wav') 

Но это не работает. Есть ли какая-то техническая причина, о которой я не знаю, или есть ли лучший способ сделать это?

1 ответ

Чтобы увеличить темп без изменения высоты тона, вам нужно сделать что-то более изящное, чем изменение частоты кадров (что даст вам эффект "бурундука").

Если вы имеете дело с произнесенным словом, вы можете попробовать удалить тишину с помощью (к сожалению, недокументированных) функций в pydub.silence.

Вы также можете посмотреть на AudioSegment().speedup() что является наивной попыткой повторной выборки. Вы также можете сделать копию этой функции и попытаться улучшить ее (и внести свой вклад в pydub?)

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