Модуль Python для изменения файлов MP3 для более быстрого воспроизведения? - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть несколько файлов MP3, содержащих лекции, в которых оратор говорит очень медленно, и я хотел бы изменить файл MP3 так, чтобы скорость воспроизведения была примерно в 1,5 раза выше обычной.хорошая библиотека Python для этого?Кстати, я использую Python 2.6 в Windows.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 18 декабря 2013

Я написал библиотеку, pydub , которая в основном предназначена для манипулирования аудио.

Я создал экспериментальный алгоритм растяжения времени , если вам интересно посмотреть, как работают подобные вещи.

По сути, вы хотите отбросить часть ваших данных, но вы не можете просто воспроизвести сигнал быстрее, потому что тогда он все получит высокую передачу (как упомянул синтезатор). Вместо этого вы хотите выбросить куски (20 Гц - это самый низкий уровень, который может слышать человек, поэтому куски в 50 мс не вызывают звуковых изменений частоты, хотя есть и другие артефакты).

PS - я получаю 50 мс примерно так:

20 Hz == 1 second per 20 cycles

or

1000 ms per 20 cycles

or

1000ms / 20Hz == 50ms per cycle
1 голос
/ 07 сентября 2010

pymedia включает пример recode_audio.py, который позволяет использовать произвольные форматы ввода и вывода здесь .Это, конечно, также требует установки pymedia.

Обратите внимание, что, как отмечает Ник Т, если вы просто измените частоту дискретизации без повторной сэмплирования, вы получите «быстрый» звук высокой частоты, поэтомухочу использовать растягивание по времени в сочетании с изменением скорости передачи данных.

0 голосов
/ 20 июля 2018

Вы можете попробовать модуль _spawn в audio_segment.py Pydub.Вот пример кода:

from pydub import AudioSegment
import os

def speed_swifter(sound, speed=1.0):
    return sound_with_altered_frame_rate = sound._spawn(sound.raw_data, overrides={"frame_rate": int(sound.frame_rate * speed)})

in_path = 'your/path/of/input_file/hello.mp3'
ex_path = 'your/path/of/output_file/hello.mp3'
sound = AudioSegment.from_file(in_path)    

# generate a slower audio for example
slower_sound = speed_change(sound, 0.5)

slower_sound.export(os.path.join(ex_path, 'slower.mp3'), format="mp3")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...