Амплитуда, громкость и 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 — основа нормализации и индикаторов уровня.