10

Я хочу изменить частоту аудио файла. Значение: весь файл должен звучать (скажем) на одну октаву выше или ниже. Как это сделать? Использование ffmpeg или другого инструмента командной строки с открытым исходным кодом было бы предпочтительным.

2 ответа2

11

С помощью ffmpeg:

ffmpeg -i <input> -af asetrate=44100*0.5,aresample=44100 <output>

Здесь 0,5 - это коэффициент основного тона. Или посмотрите другой ответ для более подробной информации.


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

Особенности: Изменение высоты тона без изменения темпа или наоборот.


В качестве альтернативы попробуйте sox. Что-то вроде того:

sox <infile> <outfile> pitch <shift>

где дает сдвиг высоты тона как положительные или отрицательные «центы» (т. е. сотые доли полутона). На октаву приходится 12 полутонов, так что это означает ± 1200 в качестве параметра.

7

Определите скорость звука на входе заранее:

ffmpeg -i input.mp4

Предполагая, что скорость звука на входе составляет 44 100 Гц, эта команда выполнит эту работу:

ffmpeg -i input.mp4 -af asetrate=44100*3/4,atempo=4/3 output.mp4

Коэффициент 3/4 изменит большинство женских и «тощих» (бурундук) голосов на мужские и «толстые» голоса. Используйте 4/3 для противоположного:

ffmpeg -i input.mp4 -af atempo=3/4,asetrate=44100*4/3 output.mp4

Обратите внимание на обратный порядок фильтра, чтобы предотвратить ухудшение сигнала. По возможности, операция без потерь должна предшествовать работе с потерями. Я не уверен на 100%, не ошибаюсь ли я здесь из-за неправильного понимания фильтров FFmpeg.

У asetrate фильтра FFmpeg должна быть переменная ir для входной скорости звука, аналогично iw × ih в некоторых видеофильтрах, но я не нашел упоминания об этом в документации.

Для факторов больше 2 (например, 4/1 или 1/4) необходимо использовать несколько фильтров atempo (1/4 = 1/2 * 1/2 или 4/1 = 2/1 * 2/1):

ffmpeg -i input.mp4 -af asetrate=44100*4,atempo=1/2,atempo=1/2 output.mp4

Я не знаю, как получить «тощий» мужской голос и «толстый» женский голос.

Вместо -af вы можете написать -filter:audio или -filter:a .

Рекомендации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .