Громкость на практике: dialnorm, нормализация, аттенюация, replay gain

Автор: Николай СапуновОбновлено: август 202621 мин чтения
Содержание статьи +

Опубликовано: 2026-06-05 · Время чтения: 16 мин · Автор: Николай Сапунов, CEO Фора Софт

Коротко

Целевое значение громкости – лишь половина дела; вторая половина – механизм, с помощью которого это значение достигается, и таких механизмов существует два принципиально разных семейства. Первое – семейство метаданных: dialnorm в Dolby AC-3/E-AC-3/AC-4, ReplayGain в музыкальных файлах, Apple Sound Check, выходной gain в Opus – не изменяет сами звуковые данные, а лишь сообщает плееру, на сколько повернуть ручку громкости при воспроизведении. Второе – семейство обработки: нормализация Spotify в реальном времени, транскодирование под EBU R128, обработка через FFmpeg loudnorm – реально изменяет уровень громкости, который слышит слушатель: либо путём динамического усиления, либо путём пересчёта всего файла. Понимание того, какой механизм использует получатель, помогает решить: нужно ли тегировать мастер, пересобирать его или просто измерить и передать как есть.

Почему это важно

Любая спецификация доставки звука даёт вам число, а статья о целях по платформам объясняет, какие именно. Здесь – ответ на вопрос, который стоит перед каждым операционным лидером, продакт-менеджером или контент-инженером: как использовать это число и что конкретно делать с файлом. Перепутать два семейства – значит совершить дорогостоящую ошибку: пересобрать файл, которому нужен был лишь тег; подавить динамику ради «громкости» на платформе, которая всё равно её ограничит; отправить Dolby-поток с неверным dialnorm, из-за которого каждый зритель потянется к пульту. Это практический уровень: dialnorm, Replay Gain, Sound Check и тест, который запускают перед отправкой.

Два семейства, одна задача

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

Первый способ – изменить сам звук: обработать сигнал так, чтобы уровень громкости файла после обработки соответствовал требованиям на целевой платформе. Так поступает мастеринг-инженер с помощью лимитера, так работает транскодирование в FFmpeg и так действует стриминговый сервис в реальном времени, снижая громкость дорожки. Байты, доносящиеся до слушателя, отличаются от исходных.

Второй способ – оставить звук без изменений и добавить числовое значение: небольшой фрагмент метаданных, который сообщает: «этот контент измерен как X; примените усиление Y при воспроизведении». Сам аудиофайл остаётся нетронутым. Громкость изменяется, но уже в плеере – в цифровой области, непосредственно перед тем, как звук покинет устройство. Это и есть dialnorm, ReplayGain, Apple Sound Check и выходной gain Opus.

Ментальная модель, удерживающая вас от ошибок: обработка переписывает файл, а метаданные – ручку громкости. Измерение громкости – это гейтированное значение LUFS по всей программе согласно ITU-R BS.1770-5 – и оно одинаково в обоих мирах. Различается только то, что вы с этим делаете. (Если термин LUFS – число громкости на логарифмической шкале, где значение ближе к нулю означает более высокий уровень, – вам незнаком, начните с вводной статьи о громкости.)

Рисунок 1. Два семейства нормализации громкости. Метаданные не изменяют байты и просто регулируют громкость; обработка изменяет сам сигнал, который слышит слушатель.

Dialnorm: встроенная в Dolby настройка громкости

Если вы отгружаете что-либо через Dolby – эфирное телевидение, OTT-каталог на E-AC-3, поток нового поколения на AC-4 – вы столкнётесь с dialnorm, и это, пожалуй, самое непонятое поле во всём аудиоконвейере.

Dialnorm (dialogue normalization, нормализация диалога) – это значение метаданных, передаваемое в каждом потоке Dolby Digital (AC-3) и Dolby Digital Plus (E-AC-3). Оно не изменяет ни одного отсчёта звука. Вместо этого оно сообщает декодеру простым числом, насколько громок диалог в данной программе, и декодер использует это значение, чтобы поднять или опустить всю программу – так, чтобы диалог оказался на согласованном опорном уровне во всех каналах и во всех программах, которые переключает зритель.

Поле – целое число от 1 до 31. Каждый шаг соответствует одному децибелу. Значение 31 означает: «диалог в контенте уже на опорном уровне – аттенюацию не применять». Значение 1 означает: «диалог очень громкий – приглушить контент на 30 дБ». Декодер использует следующую общую формулу:

аттенюация_dB = dialnorm − 31

Подставим реальное число. Наиболее распространённое значение Dolby в продакшене – dialnorm 27, что соответствует диалогу, измеренному на уровне −27 LKFS (LKFS и LUFS – одна и та же шкала). Декодер вычисляет 27 − 31 = −4 дБ, то есть повышает громкость программы на 4 дБ при воспроизведении. Программа с диалогом на −24 LKFS должна иметь dialnorm 24, и декодер увеличит её громкость на 7 дБ. Суть в том, что после коррекции декодера диалог каждой программы оказывается на одном уровне, и зритель не испытывает дискомфорта, когда после тихой драмы идёт громкая реклама. Это техническая основа американского CALM Act и ATSC A/85.

Подвох – и источник бесчисленных тикетов поддержки – в том, что значение dialnorm корректно только при условии, что оно соответствует реальной громкости диалогов в контенте. Рекомендация Dolby – измерить среднюю громкость диалогов и установить dialnorm равным полученному значению. Если сделать это неверно, декодер применит неправильный коэффициент усиления: например, поток, в котором диалоги на самом деле имеют уровень −24 LKFS, но при этом указан дефолтный dialnorm 31, будет проигрываться на 7 дБ громче соседних, поскольку декодеру не будет дано указание на аттенюацию, а требовалось −7 дБ. Многие проблемы в продакшене возникают из-за того, что энкодер оставлен с заводским значением dialnorm, которое никто не измерял.

AC-4 идёт дальше

Dolby AC-4, стандартизованный как ETSI TS 103 190, сохраняет принцип метаданных громкости и расширяет его. В битстриме AC-4 передаются метаданные громкости, чтобы декодер мог обеспечить целевую громкость на любом устройстве воспроизведения, а также добавлен dialogue enhancement – отдельный слой метаданных, позволяющий при декодировании повысить уровень диалога относительно остального звукового микса для лучшей разборчивости в шумной обстановке или с учётом доступности. В отличие от dialnorm в AC-3, который представляет собой единый глобальный коэффициент усиления, в AC-4 диалог выделяется настолько, что декодер может усиливать его независимо. Принцип остаётся прежним – метаданные управляют действиями декодера – но теперь управление стало более точным. Разбор AC-4 подробно рассматривает этот механизм.

Replay Gain: та же идея для музыкальных файлов

Replay Gain – это музыкальный аналог dialnorm, и он появился раньше современной эпохи LUFS. Он решает проблему, с которой сталкивался каждый: составляешь плейлист – и одна дорожка гремит, а следующая едва слышна, потому что громкость определяется скорее годом мастеринга, чем содержанием музыки. Replay Gain хранит в каждом файле значение gain, которое плеер должен применить, чтобы привести эту дорожку к стандартной громкости.

Текущая спецификация, Replay Gain 2.0, измеряет громкость по стандарту ITU-R BS.1770 (тем же алгоритмом, что и везде) и основана на уровне −18 LUFS, выбранном ради совместимости с исходной спецификацией 2001 года. Gain – это простое вычитание:

replay_gain_dB = опорный_уровень − измеренная_громкость
             = −18 LUFS − измеренная_громкость

Дорожка, измеренная как −12 LUFS, сохраняет gain −18 − (−12) = −6 дБ, и плеер с поддержкой Replay Gain компенсирует это, добавляя 6 дБ. Тихая джазовая запись с уровнем −24 LUFS получает +6 дБ и становится громче. Файл при этом не переписывается – значение хранится в виде тега (кадр REPLAYGAIN_TRACK_GAIN в ID3v2 для MP3, Vorbis comment для FLAC, ключ APEv2 для WavPack).

Replay Gain хранит два значения усиления, и разница между ними важна. Track gain выравнивает громкость каждой дорожки – это удобно при перемешивании треков или прослушивании в шумной обстановке. Album gain рассчитывает единое усиление для всего альбома, как для единой программы, чтобы намеренно тихая баллада оставалась тише следующего за ней хард-рока – так, как задумал мастеринг-инженер. Спецификация также сохраняет пиковые значения для каждой дорожки и для альбома в целом, чтобы проигрыватель мог предсказать клиппинг: если положительное усиление выведет сигнал за пределы цифрового full scale, плеер либо снизит усиление, либо применит лимитирование пиков.

Opus – белая ворона

Один важный нюанс для тех, кто работает с Opus – кодеком по умолчанию в WebRTC и всё более распространённым в стриминге. Opus следует стандарту EBU R128, поэтому его опорная громкость – −23 LUFS, а не −18. RFC 7845 определяет поле output gain в заголовке Opus, которое плееры должны применять по умолчанию, а тег R128_TRACK_GAIN рассчитывается относительно −23 LUFS – на 5 дБ тише, чем −18 у ReplayGain. Если обработать Opus-файл инструментом, который использует −18 LUFS как эталон, уровень громкости окажется неверным на 5 дБ. Используйте инструмент, который учитывает специфику Opus.

Apple Sound Check против Spotify: метаданные против реального времени

Apple Sound Check и нормализация громкости Spotify стремятся к примерно одинаковому уровню громкости, но относятся к разным подходам – и это различие влияет на вашу работу как продюсера.

Apple Sound Check – это метаданные. Apple анализирует громкость каждой дорожки, сохраняет результат и при воспроизведении применяет общий gain, чтобы привести дорожку к примерно −16 LUFS. Файл при этом не изменяется: gain добавляется в цифровой области при декодировании и не вносит потерь благодаря современной 32-битной обработке. Концептуально это идентично ReplayGain – сохранённое значение, корректирующее громкость, просто реализовано самой Apple. Современный гипергромкий мастер слегка приглушается, а старая тихая запись подталкивается вверх; при этом динамика внутри каждой дорожки остаётся нетронутой.

Spotify нормализует в реальном времени. Он не полагается на тег, который сопровождает файл. Когда вы воспроизводите трек, Spotify измеряет его уровень и применяет динамическую корректировку громкости, чтобы достичь целевого значения −14 LUFS, с тремя режимами: Normal (−14), Loud (−11, с лимитом для защиты тихих мастер-записей, которые могут быть слишком громкими) и Quiet (−19). Поскольку нормализация выполняется сервисом, она работает независимо от тегов, содержащихся в вашем файле.

Практическое следствие – правило, которое должен усвоить каждый музыкальный продюсер: нормализатор не перегромит. Сведите сингл к −8 LUFS, чтобы «звучать громко на Spotify», и Spotify просто прибавит 6 дБ до −14 – вы потеряли динамический диапазон, а громкости не прибавили. Мастеринг под целевой уровень музыкального кластера, примерно −14 LUFS с истинным пиком на −1 dBTP, будет звучать правильно практически везде; −16 у Apple означает лишь чуть меньшее усиление. Конкретные цели по платформам описаны в статье о целях по платформам.

Рисунок 2. Какой механизм где применяется. Найдите адресата слева; справа – тегировать, пересобирать или просто измерить.

Нормализация против аттенюации: в какую сторону может пойти платформа?

Тонкая, но экономящая деньги деталь: не каждый адресат влияет на ваш уровень одинаково. Некоторые только аттенюируют – приглушают громкие фрагменты – и никогда не усиливают тихие.

Spotify с поднятием по альбому и лимитером режима Loud поднимает тихий мастер вверх. YouTube и, как правило, нормализация воспроизведения в Apple только понижают громкость: мастер, тише целевой, остаётся на месте и просто играет тихо. ReplayGain и dialnorm работают в обе стороны, но ограничены сверху запасом до клиппинга.

Почему это важно: если ваш адресат – только «вниз», мастеринг на более тихой стороне «на всякий случай» означает, что контент будет звучать тише, чем у конкурентов, и потеряет воспринимаемую упругость. Сводите к цели, а не ниже, и позволяйте платформе снижать громкость, если это необходимо. Аттенюация всегда безопасна; полагаться на возможный подъём, который может не произойти, – нет.

Что происходит при нарушении цели

Повторяются три режима отказа, и каждый относится к своему семейству.

Несовпадение метаданных (неверный dialnorm). Звук в порядке, но цифры вводят в заблуждение. Декодер применяет неправильный коэффициент усиления, из-за чего программа звучит слишком громко или слишком тихо по сравнению с соседними. Исправить это просто: измерить уровень диалога, скорректировать поле dialnorm и перемультиплексировать поток. Перекодировать аудио не требуется, поскольку сами отсчёты не были повреждены.

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

Клиппинг истинного пика после подъёма. Тихий мастер поднимают (ReplayGain, режим Loud у Spotify, pre-amp плеера), и пики превышают full scale, клиппуя на DAC. Поэтому спецификация Replay Gain хранит метаданные пика, и поэтому спецификации стриминга просят потолок −1 dBTP – запас, чтобы подъём не клиппнул.

Как протестировать мастер перед доставкой

Гадать не нужно. То же измерение по BS.1770, что использует каждая платформа, доступно бесплатно на вашей машине через FFmpeg – вы можете проверить интегральную громкость и истинный пик перед отгрузкой. Надёжный метод – два прохода: измерить, затем действовать согласно результатам.

# Проход 1 — только измерение. Печатает интегральную громкость (I), истинный пик (TP),
# loudness range (LRA) и порог в JSON. Прочтите числа; не меняйте ничего.
ffmpeg -i master.wav -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null -

Прочтите значения input_i (интегральные LUFS) и input_tp (истинный пик, dBTP) из JSON, который выводит фильтр. Если input_i уже соответствует цели адресата, а input_tp не превышает потолок – всё в порядке: отправляйте файл без изменений, а там, где адресат использует метаданные, приложите правильный тег вместо пересборки. Если действительно требуется пересборка (спецификация требует, чтобы сам файл измерялся как −23 LUFS), запустите второй проход: он вернёт измеренные значения и применит один линейный гейн, чтобы сохранить динамику:

# Проход 2 — применить один линейный gain по измеренным значениям из прохода 1.
# linear=true делает это чистым изменением gain, а не покадровым компрессором.
ffmpeg -i master.wav -af loudnorm=I=-23:TP=-1:LRA=11:measured_I=-18.2:measured_TP=-3.4:measured_LRA=9.1:measured_thresh=-28.7:linear=true -ar 48000 out.wav

Под обеими командами лежит одно правило: сначала измерь, потом выбери семейство. Если получатель читает метаданные (Dolby, Apple, Replay Gain-библиотека), файл можно оставить без изменений – достаточно установить тег. Если же получателю нужны сами байты на уровне deliverable (например, вещательный формат или транскодирование под фиксированную цель), файл нужно пересобрать с линейным gain. Давить динамику почти никогда не требуется, и ни в коем случае не устанавливайте значения метаданных, которые не измеряли.

Где здесь Фора Софт

В OTT- и интернет-телевизионных системах, которые мы разрабатываем, обработка громкости по адресату встроена на этапе транскодирования и упаковки, а не оставлена на усмотрение загрузки. Единый мезонин-мастер измеряется один раз, после чего маршрутизируется: для Dolby-рендиций вычисляется и записывается значение dialnorm, транскод с линейным gain формирует вещательный deliverable, а стриминговые рендиции остаются на уровне мастера для последующей нормализации сервисом. В продуктах видеоконференций и телемедицины, которые мы поставляем, та же дисциплина применяется к пути Opus, где опорный уровень – −23 LUFS, а выходной gain заголовка должен соблюдаться, чтобы уровни голоса оставались согласованными между участниками. Правильный механизм под каждого адресата – вот что отличает каталог, который воспроизводится без проблем, от того, что порождает тикеты по громкости.

Главное

  • Два семейства: метаданные управляют громкостью плеера; обработка изменяет сам сигнал.
  • Dialnorm (от 1 до 31 = от −30 до 0 дБ) указывает декодеру Dolby, насколько увеличить громкость.
  • Ошибочный dialnorm исправляют перемультиплексированием – никогда не перекодируйте аудио.
  • Replay Gain использует уровень −18 LUFS; Opus – −23 LUFS. Не путайте эти стандарты.
  • Apple Sound Check – это метаданные (уровень −16); Spotify нормализует в реальном времени (на уровне −14).
  • Нормализатор не может перегромить; чрезмерный мастеринг лишь убивает динамику.
  • Перед выпуском измерьте через FFmpeg loudnorm в два прохода; пересобирайте файл только при необходимости.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.