Увеличение скорости воспроизведения комбинированного файла 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') 

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


person hashcode55    schedule 10.01.2017    source источник
comment
set_frame_rate выполняет преобразование — не влияет (по крайней мере, не должно) на скорость воспроизведения. Воспроизводится ли он в замедленном режиме (с одновременно пониженной высотой тона и скоростью) или воспроизводится точно, и вы хотели бы сохранить высоту тона прежней, но увеличить темп?   -  person Jiaaro    schedule 10.01.2017
comment
@Jiaaro Нет, слоумо не воспроизводится. И да, я хочу сохранить подачу такой же, просто увеличьте темп.   -  person hashcode55    schedule 10.01.2017


Ответы (1)


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

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

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

person Jiaaro    schedule 10.01.2017