ТранскрибаторТранскрибатор
Работа с записью

FFmpeg loudnorm: нормализация громкости записи в два прохода

Как измерить громкость записи через loudnorm, перенести значения во второй проход и проверить LUFS, true peak и сохранность речи.

Команда Транскрибатора
1Измерить исходникinput_i, input_tp, input_lra2Перенести значенияПараметры measured_*3Проверить копиюГромкость и разборчивость
Пошаговый разборУчебный примерРабочая заготовка
1Измерить исходникinput_i, input_tp, input_lra2Перенести значенияПараметры measured_*3Проверить копиюГромкость и разборчивость
Два прохода связывают обработку с измерениями именно этой записи.
Подготовка

Когда нужен отдельный разбор loudnorm

У записей интервью бывает разная средняя громкость: один файл приходится слушать громко, другой резко звучит в наушниках. loudnorm помогает обработать копию по выбранной цели громкости. Это отдельная задача от устранения эха, шума и перегрузки: фильтр не добавляет информацию, которой нет в исходном сигнале.

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

Первый проход

Получите измерения без записи нового аудио

В командной строке выполните пример ниже. Цель I=-16 LUFS, предел TP=-1.5 dBTP и диапазон LRA=11 заданы для учебной задачи, а не как обязательный стандарт всех записей. Для вашего назначения могут потребоваться другие значения.

Измерение
ffmpeg -i "input.wav" -map 0:a:0 -af "loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json" -f null -

Результат JSON появляется в диагностическом выводе. Найдите input_i, input_tp, input_lra, input_thresh и target_offset. Если значения содержат -inf, например при почти пустом сигнале, не переносите их в обработку вслепую: сначала проверьте, что выбранная дорожка действительно содержит речь.

Второй проход

Подставьте показатели своей записи

Пара input_i → measured_I означает: в настройку фильтра нужно перенести измерение входного сигнала. Аналогично перенесите input_tp, input_lra и input_thresh. Сохраните те же целевые I, TP и LRA. Цифры из чужого примера нельзя использовать для своей записи.

linear=true просит линейное изменение уровня, когда оно возможно. Если ограничения по диапазону громкости или true peak этому мешают, loudnorm может перейти к динамическому режиму. Проверяйте normalization_type в итоговой сводке. Явный -ar 48000 задаёт частоту выходного файла; это предотвращает неожиданный выбор частоты после обработки.

Контроль

Проверьте результат перед расшифровкой

Ещё раз измерьте готовый файл той же командой и сравните входные значения нового измерения с выбранными целями. Прослушайте начало, конец, тихого участника и громкую реплику. Допустимость результата определяют и числа, и слышимость слов. Усиленный фон может стать заметнее, хотя средняя громкость достигла цели.

Для обработки текста загрузите подходящую копию на страницу расшифровки аудио. Важные имена и числа сверяйте с записью. Не считайте loudnorm гарантией повышения точности распознавания: если исходник уже разборчив, дополнительная обработка может быть не нужна.

На практике

Учебный пример переноса измерений

Предположим, первый проход вернул input_i=-22.4, input_tp=-4.8, input_lra=5.2, input_thresh=-32.6 и target_offset=0.1. Это вымышленные учебные показатели. Во втором проходе они становятся измеренными параметрами. Команда ниже показывает структуру; для реального файла замените все пять значений.

ИзмерениеПараметр второго проходаУчебное значение
input_imeasured_I-22.4
input_tpmeasured_TP-4.8
input_lrameasured_LRA5.2
input_threshmeasured_thresh-32.6
target_offsetoffset0.1
1Цель: −16 LUFSУчебная настройка I2Пики: до −1,5Учебная настройка TP3Слова сохраненыПрослушать тихие реплики
Числовая цель не заменяет проверку слышимости речи.
Готовая заготовка

Команда второго прохода и журнал проверки

Для вашей работыВыделите и скопируйте
ffmpeg -i "input.wav" -map 0:a:0 -af "loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-22.4:measured_TP=-4.8:measured_LRA=5.2:measured_thresh=-32.6:offset=0.1:linear=true:print_format=summary" -ar 48000 -c:a pcm_s16le "normalized.wav"

Исходная дорожка: ____
Цель I / TP / LRA: ____
Измерения первого прохода: ____
Режим второго прохода: ____
Повторное измерение: ____
Тихие реплики, начало и конец прослушаны: ____
Разберём детали

Частые вопросы

Почему нужен второй проход?

Он позволяет передать измеренные показатели исходника в обработку. Один проход тоже возможен, но здесь разобран управляемый вариант с отдельным измерением.

Можно ли применить -c:a copy?

Нет. Аудиофильтр требует декодирования и нового кодирования; копирование потока несовместимо с такой обработкой.

Исправит ли loudnorm клиппинг?

Нет. Повышение или снижение уровня не возвращает детали, потерянные при перегрузке записи.

Почему linear=true не дал линейный режим?

Условия по исходному диапазону громкости и пределу true peak могли не выполниться. Смотрите normalization_type и пересмотрите цели.