конвертировать с 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, здесь есть другой подход:
извлечь raw аудио
прежде всего, вам нужно извлечь необработанный аудиопоток в несжатом формате, например, 16-битный стереофонический звук PCM в 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
преобразование raw аудио в сжатый файл
теперь у нас есть укороченный WAV файл, но он все еще несжат, так что нам нужно сжать его снова. См. параметры в верхней части это пост для различных форматов.
ffmpeg -i output.wav -c:a …
методы, отличные от ffmpeg, описанные выше, потеряют ваши метаданные; вы можете добавить их снова при преобразовании вывода.wav в сжатый формат, например:
ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...