2. 声学量度:声压、声强、声功率与分贝

各位好,欢迎来到第二章。上一章我们聊了声波的基本物理图像,这一章咱们得把「度量」这件事搞清楚。做音频处理,说白了就是跟几个物理量打交道:声压、声强、声功率,以及它们怎么用分贝来表达。

我个人习惯,在接触一个新系统时,先搞清楚它「量什么」和「怎么量」。声学里这三个量,就是最底层的标尺。你想想看,如果连麦克风测出来的是声压还是声强都分不清,后面做降噪、做波束成形,那基本是空中楼阁。

2.1 声压、声强、声功率的定义与单位

2.1.1 声压(Sound Pressure)

声压是最直观的。声波传播时,空气被压缩和稀疏,导致局部压强相对于大气压的起伏,这就是声压。单位是帕斯卡(Pa)。

我刚开始做麦克风阵列时,有个误区:以为麦克风输出的是声强。其实不是,绝大多数麦克风测的是声压。你对着麦克风说话,振膜感受到的是压强变化,不是能量流。

关键点:声压是标量,有正负(压缩为正,稀疏为负)。人耳能感知的最小声压约为 2×10⁻⁵ Pa,称为听阈;痛阈约为 20 Pa。两者差了 100 万倍。

2.1.2 声强(Sound Intensity)

声强描述的是能量在单位时间内通过单位面积的多少。单位是 W/m²。它是个矢量,有方向——指向声波传播的方向。

声强和声压的关系,在自由场(无反射)中很简单:

I = p² / (ρ₀ · c)

其中 ρ₀ 是空气密度(约 1.2 kg/m³),c 是声速(约 343 m/s)。ρ₀·c 称为特性阻抗,约 412 Pa·s/m。

实用技巧:在近场测量时,声强和声压的关系会变得复杂。我曾经在消声室做声源定位实验,发现近场数据用自由场公式算出来偏差很大。后来改用声强探头(双麦克风法)直接测,才把问题解决。

2.1.3 声功率(Sound Power)

声功率是声源在单位时间内辐射的总声能量,单位是瓦特(W)。它不随距离变化——你离声源再远,声源本身的声功率是不变的。变的是声压和声强。

举个例子:一个 10W 的扬声器,电功率 10W,但声功率可能只有 0.1W 甚至更低。效率极低。我做过一个项目,客户说「我的音箱 100W」,我说「那是电功率,声功率能有 1W 就不错了」。他当时很惊讶。

物理量 符号 单位 性质 典型值(日常对话)
声压 p Pa 标量,有正负 0.02 ~ 0.2 Pa
声强 I W/m² 矢量,有方向 10⁻⁶ ~ 10⁻⁴ W/m²
声功率 W W 标量,不随距离变 10⁻⁵ ~ 10⁻³ W

2.2 分贝(dB)的概念与计算

为什么要用分贝?因为人耳对声音的感知是对数级的。你从 1 倍音量调到 2 倍,感觉变化很大;但从 100 倍调到 101 倍,几乎没感觉。分贝正好用对数来压缩这个巨大的动态范围。

分贝的定义:两个相同物理量之比的对数。公式:

dB = 10 · log₁₀(P₁ / P₂)   (功率类)
dB = 20 · log₁₀(V₁ / V₂)   (场量类,如声压)

为什么声压用 20 倍?因为声压平方正比于功率,平方在对数里变成 2 倍系数:10·log(p²) = 20·log(p)。

避坑指南:我曾经在写音频算法时,把声压级公式里的 20 误写成 10,结果算出来的 SPL 全偏了 6 dB。排查了一整天才发现。记住:声压是场量,用 20log;声强是功率类,用 10log。

2.2.1 分贝的加法

两个声源同时发声,总声压级不是简单相加。比如两个 60 dB 的声源,总声压级是 63 dB,不是 120 dB。为什么?因为分贝是对数,相加要回到线性域:

L_total = 10 · log₁₀(10^(L₁/10) + 10^(L₂/10))

如果两个声源声压级相同,总声压级 = L + 10·log₁₀(2) ≈ L + 3 dB。

嗯,这里要注意:如果两个声源是相干声(比如同频同相),那总声压级可能达到 L + 6 dB。我在做扬声器阵列时遇到过这种情况——两个单元靠太近,声压叠加不是 3 dB 而是 6 dB,导致局部声场不均匀。

2.3 声压级与声强级

2.3.1 声压级(SPL)

声压级的参考值是听阈 2×10⁻⁵ Pa。公式:

SPL = 20 · log₁₀(p / p_ref)   dB
p_ref = 20 μPa

日常对话的 SPL 约 60 dB,摇滚音乐会约 110 dB,喷气发动机 1 米处约 140 dB。超过 120 dB 就可能损伤听力。

重要概念:0 dB SPL 不是没有声音,而是人耳能听到的最小声压。负的 SPL 也是存在的,比如在消声室里,背景噪声可能低至 -5 dB SPL。我第一次进消声室时,那种「绝对的安静」反而让人耳鸣——那是身体在适应。

2.3.2 声强级(SIL)

声强级的参考值是 10⁻¹² W/m²,对应听阈的声强。公式:

SIL = 10 · log₁₀(I / I_ref)   dB
I_ref = 10⁻¹² W/m²

在自由场中,SPL 和 SIL 数值上几乎相等(因为特性阻抗接近 400,换算后差异小于 0.1 dB)。但在近场或扩散场中,两者会有偏差。

场景 SPL (dB) SIL (dB) 说明
听阈 0 0 参考值
图书馆 30-40 30-40 自由场近似相等
正常对话 60 60 1 米距离
繁忙街道 80 80 扩散场偏差 < 1 dB
摇滚音乐会 110 109 近场可能有 1-2 dB 差异

2.4 知识体系图:声学量度核心逻辑

下面这张图把本章的核心逻辑串起来了。从声源到接收,三个物理量层层递进,分贝是它们共同的「语言」。

声学量度核心逻辑图 声学量度核心逻辑 声源 声功率 (W) 声强 (W/m²) 声压 (Pa) 接收(人耳/麦克风) 分贝转换 声压级: 20·log(p/p_ref) 声强级: 10·log(I/I_ref) 声功率级: 10·log(W/W_ref) 参考值: p_ref=20μPa, I_ref=10⁻¹²W/m² W_ref=10⁻¹²W 距离的影响 声功率:不随距离变化 声强:∝ 1/r²(球面波) 声压:∝ 1/r(球面波) 每加倍距离,SPL 下降 6 dB (自由场)

2.5 小结与实用建议

这一章的内容,说白了就是三句话:

  • 声压是麦克风直接测的,单位 Pa,用 20log 转成 dB SPL。
  • 声强是能量流,单位 W/m²,用 10log 转成 dB SIL。
  • 声功率是声源总能量,单位 W,不随距离变。

分贝不是单位,是比值。记住参考值,你就能在任何场景下快速换算。

我的习惯:在项目初期,我会先确认测量环境是自由场还是扩散场。自由场用声压级就够了;扩散场或近场,我建议用声强探头直接测。另外,写代码时把参考值定义成常量,别手写数字——我吃过这个亏。