Увеличение / уменьшение скорости воспроизведения WAV-файла Python
Я хочу изменить скорость воспроизведения (увеличить или уменьшить) определенного аудиофайла WAV с помощью модуля Python Wave.
Я попробовал ниже вещь:
- Чтение частоты кадров входного файла.
- Удвойте частоту кадров.
- Напишите новый волновой файл с увеличенной частотой кадров, используя функцию output_wave.setparams().
Но это не работает.
Пожалуйста, предложите.
Заранее спасибо,
2 ответа
ВОТ ЭТО ДА!
если вам неважно менять высоту тона при увеличении или уменьшении скорости, вы можете просто изменить частоту дискретизации!
Может быть очень просто использовать Python:
import wave
CHANNELS = 1
swidth = 2
Change_RATE = 2
spf = wave.open('VOZ.wav', 'rb')
RATE=spf.getframerate()
signal = spf.readframes(-1)
wf = wave.open('changed.wav', 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(swidth)
wf.setframerate(RATE*Change_RATE)
wf.writeframes(signal)
wf.close()
увеличить или уменьшить переменную Change_RATE
!
Теперь, если вам нужно сохранить высоту тона, вам нужно сделать тот же тип метода наложения-добавления!
Если вы измените частоту дискретизации, это не повлияет на контролируемую скорость воспроизведения. Вы можете играть с этим, используя SoX Sound eXchange, швейцарский армейский нож аудио манипуляции
Для python есть библиотека pySonic, которая использует метод UserSpeed объекта Song. pySonic Оболочка Python из библиотеки FMOD Sound