Увеличение / уменьшение скорости воспроизведения WAV-файла Python

Я хочу изменить скорость воспроизведения (увеличить или уменьшить) определенного аудиофайла WAV с помощью модуля Python Wave.

Я попробовал ниже вещь:

  1. Чтение частоты кадров входного файла.
  2. Удвойте частоту кадров.
  3. Напишите новый волновой файл с увеличенной частотой кадров, используя функцию 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

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