响度与分贝:声强、对数感知与 dB 公式的完整推导

上一篇讲了频率与音高。这一篇讲响度:为什么声音大小要用”分贝”这种奇怪的对数单位?振幅和响度到底是什么关系? 我们会从声强开始,一步步推导出分贝公式,并解释音频播放器里 RMS 和 dB 的用途。


1. 声强:声音携带的能量

1.1 振幅和能量

声波是空气压强的振动。振动的幅度 AA 越大,单位时间、单位面积上携带的能量越多。对正弦波,平均声强(单位 W/m²)正比于振幅的平方:

IA2I \propto A^2

为什么是平方?因为能量正比于”振动速度的平方”,而速度正比于振幅。所以:

  • 振幅 ×2 → 声强 ×4;
  • 振幅 ×3 → 声强 ×9;
  • 振幅 ×10 → 声强 ×100。

1.2 声强的范围极其巨大

人能听到的最轻声音(听阈)大约是 101210^{-12} W/m²,而能忍受的最响声音(痛阈)大约是 11 W/m²。两者相差 101210^{12} 倍——一万亿倍。

如果直接用线性数值表示,从 0.000000000001 到 1,非常不方便,而且人耳也不是这么感知的。


2. 韦伯-费希纳定律:感知为什么是对数

19 世纪的心理物理学研究发现,人对很多感觉(声音、亮度、重量)的感知遵循近似对数规律:物理刺激每乘一个固定比例,感觉增加一个固定量

用公式表示:

sensationlog(stimulus)\text{sensation} \propto \log(\text{stimulus})

举例:

  • 1 个单位的声音,增加到 2 个单位,我们感觉”响了一些”;
  • 10 个单位增加到 20 个单位(同样是 ×2),我们感觉同样”响了一些”;
  • 10 个单位增加到 100 个单位(×10),我们感觉”响了很多”,但远没有”10 倍响”。

也就是说,人耳把”频率比值”感知为”音高差”,把”声强比值”感知为”响度差”。两个领域都是对数。


3. 分贝的推导

3.1 用对数压缩一万亿倍的范围

既然感知是对数的,就用对数来表示响度。取以 10 为底的对数,再乘以 10,得到声强级

LI=10log10II0L_I = 10\log_{10}\frac{I}{I_0}

其中 I0=1012I_0 = 10^{-12} W/m² 是听阈。这个单位叫 dB(分贝,decibel),“分”表示它是”贝(bel)“的十分之一(1 B = 10 dB)。

为什么要乘 10?纯属历史习惯:贝尔(bel)单位太大,用十分之一更精细。

3.2 从声强到振幅

音频程序里我们更常直接操作振幅 AA。因为 IA2I \propto A^2

II0=(AA0)2\frac{I}{I_0} = \left(\frac{A}{A_0}\right)^2

代入声强级公式,利用对数性质 logx2=2logx\log x^2 = 2\log x

L=10log10(AA0)2=20log10AA0L = 10\log_{10}\left(\frac{A}{A_0}\right)^2 = 20\log_{10}\frac{A}{A_0}

这就是音频里最常见的分贝公式:

L=20log10AA0 dB\boxed{L = 20\log_{10}\frac{A}{A_0} \text{ dB}}

3.3 关键数值

振幅变化声强变化dB 变化
×1×10 dB
×√2×2+3 dB
×2×4+6 dB
×4×16+12 dB
×10×100+20 dB
×100×10000+40 dB

分贝刻度

几个必须记住的结论:

  • +3 dB = 功率翻倍(振幅 ×√2);
  • +6 dB = 振幅翻倍
  • +10 dB = 人耳感觉”响了一倍”左右
  • +20 dB = 振幅 ×10
  • 0 dB 不是”没有声音”,而是相对某个参考值的 0。

4. 不同场合的 dB

4.1 dB SPL:声压级

测量空气压强时,参考值取人耳听阈:

LSPL=20log10pp0,p0=20 μPaL_{\text{SPL}} = 20\log_{10}\frac{p}{p_0}, \qquad p_0 = 20\ \mu\text{Pa}

常见声源的 dB SPL:

声源大约响度
呼吸声10 dB
安静的图书馆30 dB
正常交谈60 dB
繁忙街道80 dB
摩托车95 dB
摇滚演唱会110 dB
痛阈120–130 dB

注意:每 +10 dB 响度感觉翻倍,所以 80 dB 的街道比 60 dB 的交谈”响 4 倍”(感觉上),但声强实际差了 100 倍。

4.2 dBFS:数字音频满刻度

在数字音频里,参考值是”满刻度”(full scale),也就是 16 bit 能表示的最大值(32767):

LdBFS=20log10xxmaxL_{\text{dBFS}} = 20\log_{10}\frac{|x|}{x_{\max}}

因为振幅不会超过满刻度,dBFS 永远是负数:

  • 0 dBFS = 削波临界点(再大就爆音);
  • −6 dBFS = 振幅是满刻度的一半;
  • −20 dBFS = 振幅是满刻度的 1/10;
  • −96 dBFS ≈ 16 bit 的量化底噪。

4.3 dB 只是比值

dB 本身是比值,没有绝对值。必须带上参考(SPL、FS、mW 等)才有绝对意义。这也是为什么”60 dB”在不同语境下含义不同。


5. RMS:怎么算”这段时间有多响”

5.1 为什么不能用瞬时振幅

瞬时振幅上下跳动太快:正弦波每秒过零两次,如果直接看瞬时值,大部分时间都是 0。人耳听到的”响度”是短时间内的平均感觉。

5.2 均方根(RMS)

先平方(能量正比于平方),再平均,最后开方,得到 RMS:

xrms=1Nn=0N1x[n]2x_{\text{rms}} = \sqrt{\frac{1}{N}\sum_{n=0}^{N-1} x[n]^2}

对振幅为 AA 的正弦波,RMS 恰好是:

xrms=A20.707Ax_{\text{rms}} = \frac{A}{\sqrt{2}} \approx 0.707A

5.3 RMS 和 dB 一起用

把 RMS 代入分贝公式:

L=20log10xrmsxmaxL = 20\log_{10}\frac{x_{\text{rms}}}{x_{\max}}

播放器每一帧都做这件事:算 RMS → 转 dB → 归一化到 [0,1][0,1] → 驱动视觉。RMS 对应”平均响度”,峰值则对应”瞬间爆发”,两者结合使用。


6. 与可视化的关系

6.1 为什么能量先取对数再映射

如果直接把 FFT 的线性能量映射到颜色/高度,一个响的底鼓会把整个画面”打爆”,而人声的细微变化完全看不见。取对数(dB)后:

Evis=clamp(LLminLmaxLmin, 0, 1)E_{\text{vis}} = \text{clamp}\left(\frac{L - L_{\min}}{L_{\max} - L_{\min}},\ 0,\ 1\right)

视觉变化才符合听觉感受。

6.2 噪声门与底噪

数字系统的底噪一般在 −60 到 −96 dBFS。如果不做处理,静音时 RMS 也是”某个小值”,地形会一直微微起伏。播放器加噪声门:

E=max(0, Eθ)E' = \max(0,\ E - \theta)

把低于阈值的能量截断成 0,静音时地面才完全静止。


7. 小结

  1. 声强 IA2I \propto A^2,人耳对声强的感知近似对数;
  2. 分贝公式由 10log10(I/I0)10\log_{10}(I/I_0) 推导而来,振幅形式是 20log10(A/A0)20\log_{10}(A/A_0)
  3. +6 dB = 振幅翻倍,+3 dB = 功率翻倍,+10 dB ≈ 响度感觉翻倍;
  4. dB SPL 用于声压,dBFS 用于数字满刻度;
  5. RMS 是”平均响度”,正弦波 RMS = A/2A/\sqrt{2}
  6. 可视化前先取对数再归一化,视觉才符合听感。

下一篇《数字化:采样、量化与信噪比》进入数字域,讲模拟信号怎么变成计算机能处理的数字。

8. 深入专题:RMS 窗口、dB 运算规则与常见误区

这一节把响度计算里最容易含糊的细节全部展开:RMS 窗口怎么滑、正弦波 RMS 的积分推导、dB 的加减规则、混音电平怎么算,以及一堆常见误区。

8.1 RMS 滑动窗口详解

RMS 需要一个窗口:取最近 NN 个采样计算均方根,窗口随时间滑动:

xrms[m]=1Nn=mm+N1x[n]2x_{\text{rms}}[m] = \sqrt{\frac{1}{N}\sum_{n=m}^{m+N-1} x[n]^2}

RMS 滑动窗口

窗口长度 NN 的选择是权衡:

  • NN 小(如 10 ms):反应快,能跟住鼓点,但数值抖动;
  • NN 大(如 200 ms):平滑,但会”吞掉”瞬态;
  • 音乐可视化常用 20–100 ms 窗口,节拍检测用更快的包络。

播放器里通常做两级平滑:先用短窗口算 RMS,再用指数平滑(见系列后续篇目)让它既不抖也不迟钝。

8.2 为什么正弦波 RMS = A/√2

对振幅 AA、周期 TT 的正弦波 x(t)=Asin(ωt)x(t) = A\sin(\omega t)

xrms=1T0TA2sin2(ωt)dt=A1T0Tsin2(ωt)dtx_{\text{rms}} = \sqrt{\frac{1}{T}\int_0^T A^2\sin^2(\omega t)\,dt} = A\sqrt{\frac{1}{T}\int_0^T\sin^2(\omega t)\,dt}

利用 sin2θ=(1cos2θ)/2\sin^2\theta = (1-\cos 2\theta)/2

1T0Tsin2(ωt)dt=1T0T1cos(2ωt)2dt=12\frac{1}{T}\int_0^T\sin^2(\omega t)\,dt = \frac{1}{T}\int_0^T\frac{1-\cos(2\omega t)}{2}dt = \frac{1}{2}

cos\cos 在一个整周期内积分为 0。)所以:

xrms=A20.707Ax_{\text{rms}} = \frac{A}{\sqrt{2}} \approx 0.707A

8.3 dB 的运算规则

dB 是对数,所以乘除变加减

L1+L2=20log10A1A0+20log10A2A0L_1 + L_2 = 20\log_{10}\frac{A_1}{A_0} + 20\log_{10}\frac{A_2}{A_0}

但注意:两个信号合并时的总 dB 不是简单相加。两个不相关的信号,功率相加:

Ptotal=P1+P2P_{\text{total}} = P_1 + P_2

对应 dB:

Ltotal=10log10(10L1/10+10L2/10)L_{\text{total}} = 10\log_{10}\left(10^{L_1/10} + 10^{L_2/10}\right)

两个同响度信号合并:

Ltotal=L+10log102=L+3.01 dBL_{\text{total}} = L + 10\log_{10}2 = L + 3.01\ \text{dB}

所以”两个 -6 dBFS 的音轨合并”不是 -12 dBFS,而是约 -3 dBFS。

8.4 dBFS 与真实响度

dBFS 刻度

dBFS 是相对满刻度的比值,永远是 0 或负数:

电平振幅比例听感
0 dBFS1.000削波临界
−6 dBFS0.500常见安全上限
−12 dBFS0.250常见平均电平
−20 dBFS0.100安静段落
−60 dBFS0.001很轻
−96 dBFS0.000015816 bit 底噪

8.5 混音例子:两个音源怎么算

例:人声 -10 dBFS,伴奏 -8 dBFS,两个信号互不相关。

先转成功率比例:

1010/10=0.1,108/100.15810^{-10/10} = 0.1, \qquad 10^{-8/10} \approx 0.158

总功率比例:

0.1+0.158=0.2580.1 + 0.158 = 0.258

总电平:

10log100.2585.88 dBFS10\log_{10}0.258 \approx -5.88\ \text{dBFS}

如果混音时想让人声”高 6 dB”,应该把人声调到 -4 dBFS(-10 + 6),而不是”翻倍音量滑块”。

8.6 常见误区

误区一:“0 dB = 没有声音”

0 dB 只是”相对参考值 0”。0 dBFS 是满刻度,0 dB SPL 是听阈,含义完全不同。

误区二:“两个 -6 dB 的信号叠加等于 -12 dB”

同响度不相关信号叠加是 -3 dB(功率相加),不是 -12 dB。只有把同一个信号复制两份(相关叠加)才会 +6 dB。

误区三:“响度是振幅的线性函数”

感知是对数的:+10 dB ≈ 响度感觉翻倍。

误区四:“RMS 越大越好听”

RMS 只是统计量。响度战争(loudness war)里把 RMS 压到接近 0 dBFS,声音”响但累”,动态范围反而变小。

误区五:“可视化直接用 RMS 就行”

播放器会把 RMS 转 dB、归一化、再做噪声门和指数平滑,否则数值范围巨大且抖动,视觉没法看。

8.7 扩展练习

  1. 用积分证明振幅 A 的三角波 RMS 是 A/3A/\sqrt{3}
  2. 两个 0 dBFS 的不相关信号叠加,理论峰值会超过 0 dBFS,为什么?实际会怎样?
  3. 人声 -12 dBFS、伴奏 -15 dBFS,合并后大约是多少 dBFS?
  4. 为什么 +10 dB 被说成”响度翻倍”而不是 +6 dB?

练习

  1. 一个信号 RMS 为 0.5,换算成 dBFS 是多少?
  2. 振幅从 0.1 提高到 0.4,响度增加了多少 dB?
  3. 为什么 RMS 是 A/2A/\sqrt{2}?用 1T0Tsin2(ωt)dt=1/2\frac{1}{T}\int_0^T \sin^2(\omega t)dt = 1/2 验证。
  4. 播放器里为什么需要噪声门?阈值设太大会有什么副作用?