Как изменить частоту звука?

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

25
задан slhck
10.04.2023 12:38 Количество просмотров материала 3484
Распечатать страницу

2 ответа

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

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

Если вы хотите использовать командную строку, попробовать sox:

Сокс-это кросс-платформенность (Windows, ОС Linux, ОС macOS X и др.) утилита командной строки, которая может конвертировать различные форматы аудио файлов в другие форматы. оно может также применяйте различные эффекты к этим звуковым файлам, и, в качестве дополнительного бонуса, SoX может воспроизводить и записывать аудиофайлы на большинстве платформ.

что-то вроде этого:

sox <infile> <outfile> pitch <shift>

где дает сдвиг тона как положительные или отрицательные "центы" (т. е. 100ths полутона). Есть 12 полутонов на октаву, так что это будет означать ±1200 в качестве параметра.

9
отвечен slhck 2023-04-11 20:26

найти скорость входного звука заранее таким образом:

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

обратите внимание на обратный порядок фильтров для предотвращения деградации сигнала. Когда возможный, lossless деятельность должна прийти перед lossy деятельностью. Я не уверен на 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):

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

я не знаю, как получить "тощий" мужчина голос и "жирный" женский голос.

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

ссылки

4
отвечен 7vujy0f0hy 2023-04-11 22:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх