Амплитуда, громкость и RMS

Первый практический признак: насколько громок звук в каждый момент.

RMS (среднеквадратичное значение) — корень из средней мощности сигнала; лучше всего отражает воспринимаемую громкость отрезка.

Мы уже знаем: звук — это список отсчётов, колеблющихся вокруг нуля. Но как из этих чисел получить «громкость»? Просто взять максимум недостаточно: один случайный всплеск не делает звук громким. Нужны устойчивые меры.

Три способа измерить силу сигнала

Пиковая амплитуда — максимум модуля отсчётов; показывает самый громкий момент, важен для контроля клиппинга. Средний модуль — среднее от абсолютных значений. RMS — корень из среднего квадрата; именно он ближе всего к тому, как ухо воспринимает громкость, потому что учитывает энергию.

МераФормула (идея)Зачем
Пикmax(|x|)контроль перегруза
Средний модульсреднее |x|грубая громкость
RMSкорень(среднее x²)воспринимаемая громкость

Децибелы: почему громкость логарифмична

Ухо воспринимает громкость не линейно, а логарифмически: чтобы звук казался «вдвое громче», мощность надо увеличить во много раз. Поэтому громкость измеряют в децибелах (дБ) — логарифмической шкале. Удвоение амплитуды — это примерно +6 дБ. Эта логарифмичность ещё всплывёт в мел-шкале для частот.

Считаем громкость отрезка

Посчитаем пик и RMS для короткого сигнала на чистом Python — без сторонних библиотек.

import math

signal = [0.0, 0.3, -0.6, 0.8, -0.2, 0.1, -0.9, 0.4]

peak = max(abs(x) for x in signal)
rms = math.sqrt(sum(x * x for x in signal) / len(signal))

print("Пиковая амплитуда:", round(peak, 3))
print("RMS:", round(rms, 3))
print("RMS меньше пика:", rms < peak)

Вывод:

Пиковая амплитуда: 0.9
RMS: 0.514
RMS меньше пика: True

RMS почти всегда заметно ниже пика, потому что усредняет по всему отрезку, а не ловит один всплеск. Именно RMS используют для нормализации громкости разных записей к одному уровню.

Перевод RMS в децибелы

import math

rms = 0.49
# дБ относительно полной шкалы (dBFS): 0 дБ = максимум 1.0
db = 20 * math.log10(rms)
print("Громкость:", round(db, 1), "dBFS")

Вывод:

Громкость: -6.2 dBFS

Отрицательное число — это нормально: 0 dBFS соответствует максимуму, а всё тише — отрицательные значения.

Наглядный пример, почему пик обманчив: представьте две записи речи одинаковой громкости, но в одну случайно щёлкнул микрофон. По пику вторая запись покажется заметно «громче», хотя на слух разница неразличима — щелчок длится доли миллисекунды. RMS же усредняет энергию по всему отрезку, и единичный щелчок почти не сдвинет результат. Именно поэтому стриминговые сервисы вроде нормализации громкости в плеерах ориентируются на усреднённые меры, а не на пик: иначе одна громкая нота делала бы всю тихую песню «громкой» в глазах алгоритма.

Откуда берётся правило «+6 дБ ≈ удвоение амплитуды»? Формула дБ для амплитуды — это 20 * log10(отношение), а 20 * log10(2) примерно равно 6. Поэтому каждое удвоение размаха волны добавляет около 6 дБ, а каждое учетверение — около 12. Это объясняет, почему регуляторы громкости размечены логарифмически: равные на вид шаги ручки соответствуют равным прибавкам в дБ, а не равным прибавкам амплитуды. Линейная ручка казалась бы нам «мёртвой» в начале и слишком резкой в конце.

Разница между нормализацией по пику и по RMS — это типичная боль при сборке аудиоплейлистов и датасетов. Если выровнять записи по пику, две дорожки получат одинаковый максимум, но плотный, «толстый» голос диктора будет субъективно громче редкого выкрика, потому что у него выше средняя энергия. Поэтому для выравнивания воспринимаемой громкости берут именно RMS (или более продвинутый LUFS). Для обучающего датасета ASR это важно: модель не должна «думать», что тихие и громкие записи — разные классы, поэтому громкость часто приводят к единому RMS-уровню.

Как работает под капотом

Когда плеер показывает «прыгающие столбики» уровня, он в реальном времени считает RMS или пик в коротких окнах (например, по 1024 отсчёта) и рисует результат. Нормализация громкости в редакторах — это вычисление RMS всей дорожки и умножение всех отсчётов на коэффициент, чтобы привести к целевому уровню. Так простая формула становится повседневным инструментом звукорежиссёра.

Частые ошибки

  • Считать громкость по одному пику. Случайный всплеск исказит оценку — нужен RMS по окну.
  • Линейно мыслить про громкость. Ухо логарифмично: +6 дБ ≈ удвоение амплитуды.
  • Нормализовать по пику вместо RMS. Записи с одинаковым пиком могут субъективно сильно отличаться по громкости.

Итоги

  • Сила сигнала измеряется пиком, средним модулем и RMS.
  • RMS лучше всего отражает воспринимаемую громкость.
  • Громкость логарифмична — её считают в децибелах (dBFS, 0 = максимум).
  • RMS — основа нормализации и индикаторов уровня.
Проверьте себя
1. Почему RMS лучше пика отражает воспринимаемую громкость?
ARMS всегда больше пика
BRMS усредняет энергию по всему отрезку, а не ловит один всплеск
CRMS не зависит от сигнала
DПик нельзя вычислить
2. Почему громкость измеряют в децибелах (логарифмической шкале)?
AТак короче писать
BПотому что ухо воспринимает громкость логарифмически
CПотому что децибелы больше
DЭто требование PCM
3. Что означает 0 dBFS?
AТишину
BМаксимально возможный уровень (полную шкалу)
CСреднюю громкость
DОтрицательную амплитуду