Я хочу изменить частоту аудио файла. Значение: весь файл должен звучать (скажем) на одну октаву выше или ниже. Как это сделать? Использование ffmpeg
или другой инструмент с открытым исходным кодом командной строки будет предпочтительнее.
источник
Я хочу изменить частоту аудио файла. Значение: весь файл должен звучать (скажем) на одну октаву выше или ниже. Как это сделать? Использование ffmpeg
или другой инструмент с открытым исходным кодом командной строки будет предпочтительнее.
С помощью ffmpeg:
ffmpeg -i <input> -af asetrate=44100*0.5,aresample=44100 <output>
Здесь 0,5 - это коэффициент основного тона. Или посмотрите другой ответ для более подробной информации.
Если вам нужен графический интерфейс, используйте Audacity , это бесплатный кросс-платформенный инструмент для редактирования аудио с открытым исходным кодом.
Особенности: Изменение высоты тона без изменения темпа или наоборот.
В качестве альтернативы попробуйте sox . Что-то такое:
sox <infile> <outfile> pitch <shift>
где дает сдвиг высоты тона как положительные или отрицательные «центы» (т. е. сотые доли полутона). В октаве 12 полутонов, так что это означает ± 1200
в качестве параметра.
ffmpeg -i man.wav -af asetrate=48000*0.75,aresample=48000 man_pitch_down.wav
вижуffmpeg -i
оригинальный wavDuration: 00:00:01.95, bitrate: 3080 kb/s
и модифицированный wavDuration: 00:00:02.60, bitrate: 1536 kb/s
. Как я понимаю,Duration
это длина в секундах.Определите скорость звука на входе заранее:
Предполагая, что скорость звука на входе составляет 44 100 Гц, эта команда выполнит эту работу:
Коэффициент 3/4 изменит большинство женских и «тощих» (бурундук) голосов на мужские и «толстые» голоса. Используйте 4/3 для противоположного:
Обратите внимание на обратный порядок фильтра, чтобы предотвратить ухудшение сигнала. По возможности, операция без потерь должна предшествовать работе с потерями. Я не уверен на 100%, не ошибаюсь ли я здесь из-за неправильного понимания фильтров FFmpeg.
Фильтр FFmpeg
asetrate
должен иметь переменную, названнуюir
для входной скорости звука, аналогичноiw
×ih
в некоторых видеофильтрах, но я не смог найти упоминания об этом в документации.Для факторов больше 2 (например, 4/1 или 1/4) необходимо использовать несколько
atempo
фильтров (1/4 = 1/2 * 1/2 или 4/1 = 2/1 * 2/1):Я не знаю, как получить «тощий» мужской голос и «толстый» женский голос.
Вместо
-af
, вы можете написать-filter:audio
или-filter:a
.Ссылки
источник