Инструмент для ускорения / конвертации аудио файла

Я хочу слушать определенные подкасты на своем телефоне, но у меня есть две общие проблемы:

  1. Звук в каком-то странном формате (некоторые не воспроизводятся на моем телефоне).
  2. Звук медленный.

Я хочу использовать что-то вроде sox или же avconv массово конвертировать файлы. Поскольку речь идет только о голосе и идет по мобильному телефону, для меня лучше всего подойдут небольшие некачественные файлы. У меня был хороший успех, используя avconv:

avconv -i weird.wma normal.ogg

К сожалению, эта команда создает огромный ogg-файл, и я не могу заставить его играть быстрее. В идеале, этот конкретный файл будет воспроизводиться на 170% от первоначальной скорости.

1 ответ

Конвертировать с FFmpeg

FFmpeg имеет встроенный звуковой фильтр для изменения темпа без изменения высоты тона. Нам нужно закодировать файл в какой-нибудь формат, который воспроизводит ваш телефон. Это зависит от телефона, конечно. Многие современные смартфоны, такие как AAC audio:

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a

Здесь вы можете изменить качество с помощью -q:a вариант, где значение в процентах и ​​выше означает лучше.

Или аудио MP3 с (средним) качеством 4, где меньше значит лучше (0, что дает около 245 кбит / с):

ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3

Если ваш телефон не поддерживает ничего из этого, нам придется копать дальше. Ох, и я использую ffmpeg синоним avconv Вот. Они не совсем одинаковые, но для вышеупомянутых случаев вы можете использовать любой инструмент. Если ваша версия FFmpeg или avconv не содержит FAAC или LAME, получите статическую сборку Linux со страницы загрузки FFmpeg.


Если вам не нравятся фильтры FFmpeg, вот другой подход:

Извлечь сырое аудио

Прежде всего, вам необходимо извлечь необработанный аудиопоток в несжатом формате, например, 16-битный звук PCM Stereo в контейнере WAV.

ffmpeg -i weird.wma temp.wav

Теперь мы можем использовать файл temp.wav сократить аудио. У нас есть несколько вариантов для этого:

Вариант 1: SoX

SoX предлагает несколько различных фильтров, которые позволяют вам изменять скорость, высоту звука или темп. Простое изменение скорости увеличит высоту тона, чтобы компенсировать длину, так что это может звучать неестественно.

tempo Фильтр использует продвинутый алгоритм для сокращения файлов, но сохраняет высоту тона, разделяя его на меньшие временные окна, а затем "объединяя" их, тем самым ускоряя темп. Например:

sox temp.wav output.wav -tempo 1.7

Это может звучать немного странно. Если это так, прибегните к варианту 2.

Вариант 2: Экстремальный звук Пола

Эта программа обещает предложить лучшее качество, чем SoX, и есть версия командной строки, написанная на Python, доступная от GitHub. Команда может выглядеть следующим образом - имейте в виду, что по умолчанию она растягивает файл, поэтому для ее сокращения мы вычисляем обратное значение 1.7, то есть 0.59:

python paulstretch_stereo.py -s 0.59 temp.wav output.wav

Конвертировать необработанный звук в сжатый файл

Теперь у нас есть сокращенный файл WAV, но он все еще не распакован, поэтому нам нужно снова сжать его. Обратитесь к параметрам в верхней части этого сообщения для различных форматов.

ffmpeg -i output.wav -c:a …

Методы non-ffmpeg, описанные выше, потеряют ваши метаданные; Вы можете добавить его снова при преобразовании output.wav в сжатый формат, например так:

ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...
Другие вопросы по тегам