📁 File4. 오디오04 · Loudness & EBU R128 — 큰 소리는 어떻게 정량화하는가

04 · Loudness & EBU R128 — 큰 소리는 어떻게 정량화하는가

이 문서가 답하는 질문: “Spotify는 -14 LUFS, 방송은 -23 LUFS”라는 숫자는 무엇이고, 어떻게 측정하는가? 선행 지식: 01-sampling-and-quantization.md


한 줄 답

Loudness는 사람이 인지하는 음량이고, 단위는 LUFS(Loudness Units relative to Full Scale). 측정 표준은 ITU-R BS.1770 (K-weighting + gating) 이고, 운영 표준은 EBU R128 (-23 LUFS, ±1 LU 허용) 이다. 스트리밍 시대 들어 플랫폼별 타깃이 분화됐다 — Spotify/YouTube -14, Apple Podcasts -16, 방송 -23.


Why — 왜 dBFS가 아닌 LUFS인가

전통적인 dBFS(decibels relative to Full Scale)는 신호의 절대 진폭을 잰다. 그런데 사람의 귀는:

  1. 주파수마다 민감도가 다르다 (3~5 kHz에서 가장 민감, 50 Hz 미만에선 둔감) → Equal-loudness contour
  2. 스테레오/멀티채널은 채널 합성으로 들린다 → 단순 평균이 아님
  3. 순간 피크가 아니라 평균 에너지로 음량을 인지 → 적분 시간 필요
  4. 너무 작은 부분(silence)은 평균에서 제외해야 음악적 음량과 맞음

그래서 사람의 청각 모델을 적용한 측정법이 필요했다 → ITU-R BS.1770 (2006) → EBU R128 (2010).


How — 측정의 4단계

1) K-weighting filter — 청각 가중

두 단의 IIR 필터:

  • Stage 1: Pre-filter (high-shelf, ~1681 Hz +4dB) — 머리 회절 보상
  • Stage 2: RLB (high-pass, 38 Hz) — 저주파 둔감 보상

→ “사람 귀가 듣는 신호”에 가깝게 변환된 후 에너지를 측정.

2) Channel weighting — 채널별 가중치

채널가중치
L, R, C1.0
Ls, Rs (surround)1.41 (= +1.5 dB)
LFE0.0 (제외)

서라운드는 직접 음원이 아니라 잔향이라는 가정으로 +1.5dB 보정. LFE는 인지 음량에 거의 기여 안 함.

3) Gating — 작은 구간 제외

Absolute gate: -70 LUFS 미만 구간 제외 (사실상 무음). Relative gate: 1차 평균 대비 -10 LU 미만 구간을 다시 제외.

→ 영화/드라마처럼 무음 구간이 긴 콘텐츠도 음악적으로 일관된 평균이 나옴.

4) 적분 윈도우 3종

측정윈도우용도
Momentary (M)400 ms실시간 미터링, 클리핑 위험 감지
Short-term (S)3 s광고 vs 본방송 비교, 음향감독 모니터링
Integrated (I)전체 (gating 적용)콘텐츠 전체 평균, 정규화 기준

What — 단위, 표준치, 명령어

단위 정리

단위의미
dBFSDecibels relative to Full Scale (절대 진폭, 0이 max)
LUFSLoudness Units relative to Full Scale (지각 음량, 절대값)
LULoudness Unit (LUFS 차이값, 상대)
LRALoudness Range (콘텐츠의 동적 범위, S-LUFS의 95th - 10th 백분위)
dBTPDecibels True Peak (인터샘플 오버슈트 포함 피크)

→ “1 LU = 1 dB”이지만 LUFS는 절대값, LU는 차이값. 마치 °C와 K 같은 관계.

플랫폼별 LUFS 타깃

플랫폼Integrated LUFSTrue Peak비고
EBU R128 (방송)-23 LUFS-1 dBTPTV, 라디오 (유럽)
ATSC A/85 (방송)-24 LKFS (= -24 LUFS)-2 dBTPTV (미국)
Spotify-14 LUFS-1 dBTPnormalize ON 시
Spotify (loud)-11 LUFS-1 dBTP”loud” 설정
YouTube-14 LUFS-1 dBTP자동 정규화
Apple Music-16 LUFS-1 dBTPSound Check ON
Apple Podcasts-16 LUFS-1 dBTPmono → -19, stereo → -16
Tidal-14 LUFS-1 dBTP
Amazon Music-14 LUFS-2 dBTP
Netflix-27 LKFS-2 dBTPdialog-anchored loudness
Deezer-15 LUFS-1 dBTP
SoundCloud-14 LUFS (권장)-normalize 없음

핵심 인사이트: 음원은 -14 LUFS 근처, 팟캐스트는 -16 LUFS 근처, 방송은 -23 LUFS 근처. 이 세 클러스터를 외우자.

True Peak (dBTP) — 클리핑과 다른 개념

샘플과 샘플 사이의 보간 함수가 디지털 max를 넘는 현상 = inter-sample peak / true peak overshoot.

→ 디지털에서 -0.5 dBFS이어도 D/A 변환 후 클리핑이 들릴 수 있다. → 표준은 4× 또는 16× 오버샘플링 후 측정한 피크. → 마스터링 시 -1 dBTP 리미터가 안전 마진.

ffmpeg ebur128 사용법

# 기본 측정 — 한 번에 I/M/S/LRA/Peak 추출
ffmpeg -i input.wav -af ebur128=peak=true -f null -
 
# 출력 예시 (stderr)
# [Parsed_ebur128_0 @ 0x...] Summary:
#
#   Integrated loudness:
#     I:         -16.3 LUFS
#     Threshold: -26.5 LUFS
#
#   Loudness range:
#     LRA:         8.2 LU
#     Threshold:  -36.5 LUFS
#     LRA low:   -22.0 LUFS
#     LRA high:  -13.8 LUFS
#
#   True peak:
#     Peak:       -1.0 dBTP
#     Pop:        -1.0 dBTP
# Two-pass 정규화 (정확) — 먼저 측정, 그 다음 보정
ffmpeg -i input.wav -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null - 2>&1 | \
  tee /tmp/loudness.json
 
# 1-pass dynamic 정규화 (라이브용, 정확도 약간 떨어짐)
ffmpeg -i input.wav -af loudnorm=I=-14:TP=-1:LRA=11 output.wav
 
# 측정값을 다음 패스에 input으로 — 진짜 정확한 정규화
ffmpeg -i input.wav -af "loudnorm=I=-14:TP=-1:LRA=11:\
measured_I=-23.5:measured_TP=-3.2:measured_LRA=11.5:measured_thresh=-34.6:\
linear=true" output_normalized.wav

loudness.json 산출물 예시

실무에서 ebur128 측정 결과를 다음과 같은 JSON으로 정형화한다:

{
  "integrated": -16.3,
  "truePeak": -1.0,
  "range": 8.2,
  "threshold": -26.5,
  "momentaryLufs": [
    { "t": 0.0, "M": -70.0 },
    { "t": 0.5, "M": -22.1 },
    { "t": 1.0, "M": -18.4 },
    { "t": 1.5, "M": -16.7 }
  ]
}

momentaryLufs[]는 0.5초 간격 sampling으로 충분 (UI에 시각화할 때 60Hz 스크롤 부드러움).


What-if — 잘못 다루면 어떻게 깨지는가

1. “Loudness War” — 음원이 0 dBFS에 붙음

19902010년대 “더 크게 = 더 좋게”라는 마케팅 압박으로 마스터링 단계에서 헤비 컴프레션 + 리미팅으로 평균 음량이 -7-9 LUFS까지 올라감. → 다이내믹 레인지 소실, 청각 피로, 디스토션 증가.

스트리밍이 LUFS 정규화를 도입하며 (~2014) 음원이 -14 LUFS보다 크면 자동으로 깎인다 → 이제 헤비 컴프레션은 손해.

2. 라디오 마스터를 스트리밍에 그대로

-23 LUFS 마스터를 Spotify에 올리면 다른 트랙(-14)보다 9 dB 작게 들린다. 사용자가 볼륨을 올리면 다이내믹 레인지가 살지만, 평균적으로 “조용한 곡”으로 인식되어 플레이리스트에서 밀린다.

해결: 마스터를 -14 LUFS로 따로 만들기 또는 플랫폼에 -16~-14로 업로드.

3. True Peak 무시

“디지털에서 -0.1 dBFS이니까 클리핑 없음”이라고 안심하면 안 된다. MP3/AAC 인코딩 후 인터샘플 피크가 +0.5 dBTP까지 올라간다.

해결: 마스터링 마지막 단계에 True Peak Limiter (-1 dBTP) + 인코딩 후 재측정.

4. Mono 콘텐츠에 stereo loudness 기준

Apple Podcasts는 mono와 stereo 타깃이 다르다 (-19 vs -16). mono를 stereo 기준에 맞추면 너무 작게 들린다 (사람은 stereo가 mono보다 ~3dB 크게 들리는 경향).

5. Real-time 정규화의 부정확성

라이브 스트림에서 1-pass loudnorm을 쓰면 시작 부분의 적분이 안정되기 전 약 5초간 정규화가 부정확하다 → 첫 5초가 들쭉날쭉.

해결: 인트로 + 5초 silence padding 또는 라이브 한정 -14 ± 2 LUFS 허용.

6. LRA를 무시하고 정규화

LRA 18 LU짜리 클래식 음원을 LRA 7 LU로 강제 압축하면 fortissimo와 pianissimo의 차이가 사라진다 → 음악 표현 손실.

해결: loudnorm=LRA=18처럼 원본 LRA를 유지.


Insight — 흥미로운 이야기

“Loudness War의 끝을 LUFS가 막았다”

Metallica의 〈Death Magnetic〉(2008)은 평균 -8 LUFS로 마스터링되어 클리핑 곡선이 사각파에 가까웠다. 팬들이 항의했지만 라디오/CD 시대엔 “더 크게”가 정답이었다. 2014년 Spotify가 LUFS 정규화를 도입하며 게임의 룰이 바뀜. 이제 -8 LUFS로 마스터링해도 Spotify가 -14로 깎아 재생 → 헤비 컴프레션의 동기 사라짐. 결과: 2020년대 음원의 평균 LRA가 다시 늘어남 (loudness war의 종식).

“R128의 -23 LUFS는 어떻게 정해졌는가”

2010년 EBU(유럽 방송 연합)가 영화·드라마·광고·뉴스의 음량 격차를 잡으려고 만든 표준. -23은 광고가 본방송보다 시끄럽다는 시청자 불만의 직접적 결과 — 광고가 본방과 ±1 LU 안에 있어야 한다는 강제 규정. 미국은 ATSC A/85 (-24 LKFS), 일본은 ARIB TR-B32 (-24 LKFS) — 거의 같은 값으로 수렴.

“왜 Spotify는 -14, 방송은 -23인가”

차이의 9 dB는 헤드룸이다. 방송은 광고·뉴스·드라마·콘서트가 같은 채널에서 흘러나오므로 다이내믹 여유가 필요. 음악 스트리밍은 트랙 단위 재생이라 -14에 가까이 압축해도 다이내믹이 트랙 안에서 살아있음. → 같은 LUFS 표준이지만 콘텐츠의 다이내믹 요구가 타깃을 정한다.

“K-weighting의 K는 무슨 K인가”

“K”는 정확한 의미가 없다 (특정 문자가 아닌 알파벳 시리즈의 한 자). ITU-R BS.1770 작업 중 A, B, C, … J 가중 곡선이 다 쓰였고 11번째가 K였다. 사실상 의미는 “Kombined high-shelf + RLB”라고 농담처럼 쓴다.

“Netflix는 왜 -27 LKFS인가 (그것도 dialog 기준)”

Netflix는 영화/드라마 위주라 dialog가 들리는 음량이 기준. Atmos는 효과음·앰비언스가 매우 큰데 dialog가 묻히면 시청자가 “안 들린다”고 항의 → dialog만 측정하는 dialog-anchored loudness 개발 (Dolby Dialog Intelligence). 결과 -27 LKFS dialog 기준 = R128 -23 program 기준과 거의 같은 체감 음량.


한 단락 요약 + Mermaid

Loudness는 사람이 인지하는 음량의 정량화이고, 단위는 LUFS, 측정은 K-weighting + gating + 채널 가중. 단일 표준(EBU R128 -23)이 스트리밍 시대 분화 (-14 음원 / -16 팟캐스트 / -23 방송). True Peak는 클리핑과 다른 개념으로 인터샘플 오버슈트를 잡는 안전망. 측정·정규화는 ffmpeg ebur128 + loudnorm 조합으로 2-pass가 정답.