响度与分贝:声强、对数感知与 dB 公式的完整推导
上一篇讲了频率与音高。这一篇讲响度:为什么声音大小要用”分贝”这种奇怪的对数单位?振幅和响度到底是什么关系? 我们会从声强开始,一步步推导出分贝公式,并解释音频播放器里 RMS 和 dB 的用途。
1. 声强:声音携带的能量
1.1 振幅和能量
声波是空气压强的振动。振动的幅度 越大,单位时间、单位面积上携带的能量越多。对正弦波,平均声强(单位 W/m²)正比于振幅的平方:
为什么是平方?因为能量正比于”振动速度的平方”,而速度正比于振幅。所以:
- 振幅 ×2 → 声强 ×4;
- 振幅 ×3 → 声强 ×9;
- 振幅 ×10 → 声强 ×100。
1.2 声强的范围极其巨大
人能听到的最轻声音(听阈)大约是 W/m²,而能忍受的最响声音(痛阈)大约是 W/m²。两者相差 倍——一万亿倍。
如果直接用线性数值表示,从 0.000000000001 到 1,非常不方便,而且人耳也不是这么感知的。
2. 韦伯-费希纳定律:感知为什么是对数
19 世纪的心理物理学研究发现,人对很多感觉(声音、亮度、重量)的感知遵循近似对数规律:物理刺激每乘一个固定比例,感觉增加一个固定量。
用公式表示:
举例:
- 1 个单位的声音,增加到 2 个单位,我们感觉”响了一些”;
- 10 个单位增加到 20 个单位(同样是 ×2),我们感觉同样”响了一些”;
- 10 个单位增加到 100 个单位(×10),我们感觉”响了很多”,但远没有”10 倍响”。
也就是说,人耳把”频率比值”感知为”音高差”,把”声强比值”感知为”响度差”。两个领域都是对数。
3. 分贝的推导
3.1 用对数压缩一万亿倍的范围
既然感知是对数的,就用对数来表示响度。取以 10 为底的对数,再乘以 10,得到声强级:
其中 W/m² 是听阈。这个单位叫 dB(分贝,decibel),“分”表示它是”贝(bel)“的十分之一(1 B = 10 dB)。
为什么要乘 10?纯属历史习惯:贝尔(bel)单位太大,用十分之一更精细。
3.2 从声强到振幅
音频程序里我们更常直接操作振幅 。因为 :
代入声强级公式,利用对数性质 :
这就是音频里最常见的分贝公式:
3.3 关键数值
| 振幅变化 | 声强变化 | dB 变化 |
|---|---|---|
| ×1 | ×1 | 0 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:声压级
测量空气压强时,参考值取人耳听阈:
常见声源的 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):
因为振幅不会超过满刻度,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:
对振幅为 的正弦波,RMS 恰好是:
5.3 RMS 和 dB 一起用
把 RMS 代入分贝公式:
播放器每一帧都做这件事:算 RMS → 转 dB → 归一化到 → 驱动视觉。RMS 对应”平均响度”,峰值则对应”瞬间爆发”,两者结合使用。
6. 与可视化的关系
6.1 为什么能量先取对数再映射
如果直接把 FFT 的线性能量映射到颜色/高度,一个响的底鼓会把整个画面”打爆”,而人声的细微变化完全看不见。取对数(dB)后:
视觉变化才符合听觉感受。
6.2 噪声门与底噪
数字系统的底噪一般在 −60 到 −96 dBFS。如果不做处理,静音时 RMS 也是”某个小值”,地形会一直微微起伏。播放器加噪声门:
把低于阈值的能量截断成 0,静音时地面才完全静止。
7. 小结
- 声强 ,人耳对声强的感知近似对数;
- 分贝公式由 推导而来,振幅形式是 ;
- +6 dB = 振幅翻倍,+3 dB = 功率翻倍,+10 dB ≈ 响度感觉翻倍;
- dB SPL 用于声压,dBFS 用于数字满刻度;
- RMS 是”平均响度”,正弦波 RMS = ;
- 可视化前先取对数再归一化,视觉才符合听感。
下一篇《数字化:采样、量化与信噪比》进入数字域,讲模拟信号怎么变成计算机能处理的数字。
8. 深入专题:RMS 窗口、dB 运算规则与常见误区
这一节把响度计算里最容易含糊的细节全部展开:RMS 窗口怎么滑、正弦波 RMS 的积分推导、dB 的加减规则、混音电平怎么算,以及一堆常见误区。
8.1 RMS 滑动窗口详解
RMS 需要一个窗口:取最近 个采样计算均方根,窗口随时间滑动:
窗口长度 的选择是权衡:
- 小(如 10 ms):反应快,能跟住鼓点,但数值抖动;
- 大(如 200 ms):平滑,但会”吞掉”瞬态;
- 音乐可视化常用 20–100 ms 窗口,节拍检测用更快的包络。
播放器里通常做两级平滑:先用短窗口算 RMS,再用指数平滑(见系列后续篇目)让它既不抖也不迟钝。
8.2 为什么正弦波 RMS = A/√2
对振幅 、周期 的正弦波 :
利用 :
( 在一个整周期内积分为 0。)所以:
8.3 dB 的运算规则
dB 是对数,所以乘除变加减:
但注意:两个信号合并时的总 dB 不是简单相加。两个不相关的信号,功率相加:
对应 dB:
两个同响度信号合并:
所以”两个 -6 dBFS 的音轨合并”不是 -12 dBFS,而是约 -3 dBFS。
8.4 dBFS 与真实响度
dBFS 是相对满刻度的比值,永远是 0 或负数:
| 电平 | 振幅比例 | 听感 |
|---|---|---|
| 0 dBFS | 1.000 | 削波临界 |
| −6 dBFS | 0.500 | 常见安全上限 |
| −12 dBFS | 0.250 | 常见平均电平 |
| −20 dBFS | 0.100 | 安静段落 |
| −60 dBFS | 0.001 | 很轻 |
| −96 dBFS | 0.0000158 | 16 bit 底噪 |
8.5 混音例子:两个音源怎么算
例:人声 -10 dBFS,伴奏 -8 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 扩展练习
- 用积分证明振幅 A 的三角波 RMS 是 。
- 两个 0 dBFS 的不相关信号叠加,理论峰值会超过 0 dBFS,为什么?实际会怎样?
- 人声 -12 dBFS、伴奏 -15 dBFS,合并后大约是多少 dBFS?
- 为什么 +10 dB 被说成”响度翻倍”而不是 +6 dB?
练习
- 一个信号 RMS 为 0.5,换算成 dBFS 是多少?
- 振幅从 0.1 提高到 0.4,响度增加了多少 dB?
- 为什么 RMS 是 ?用 验证。
- 播放器里为什么需要噪声门?阈值设太大会有什么副作用?