第2章 声学基础回顾:声音的物理特性、人耳听觉与室内声学

做声学信号处理,说白了就是跟声音打交道。你得先搞清楚声音到底是什么,耳朵怎么听,房间怎么影响它。这三件事搞不明白,后面做自适应算法就是空中楼阁。我刚开始做回声消除时,就吃过这个亏——以为算法能搞定一切,结果在混响严重的会议室里,效果一塌糊涂。

好,咱们从头捋一遍。

2.1 声音的物理特性

声音的本质是机械波。它需要介质传播,在空气中就是疏密波。三个核心参数:频率、波长、声压级。

2.1.1 频率与波长

频率决定音高,单位是赫兹(Hz)。人耳能听到的大概是20 Hz到20 kHz。低于20 Hz叫次声波,高于20 kHz叫超声波——咱们做声学场景自适应,主要关心20 Hz–8 kHz这个范围,因为大部分语音能量都集中在这里。

波长和频率的关系很简单:

λ = c / f

其中c是声速(常温下约343 m/s),f是频率。举个例子:1 kHz的声音,波长大约是0.343米,也就是34厘米。你想想看,一个麦克风阵列的间距如果远大于这个波长,空间采样就会出问题——我在做波束成形时踩过这个坑。

实用经验: 做阵列设计时,我习惯把阵元间距控制在半波长以内,这样能避免空间混叠。对于8 kHz采样率,最高关心频率4 kHz,半波长约4.3 cm——记住这个数。

2.1.2 声压级(SPL)

声压级用分贝(dB)表示,公式是:

SPL = 20 * log10(p / p_ref)

p_ref是参考声压,20 μPa,大致是人耳能听到的最小声压。0 dB就是听阈,120 dB是痛阈。日常对话大概40–60 dB,会议室背景噪声通常在35–45 dB之间。

这里有个容易混淆的点:dB SPL和dB FS(数字满量程)不是一回事。模拟信号进ADC之前,你得留好headroom。我曾经在项目里没注意这个,结果信号削波了,整个自适应滤波器发散——嗯,教训深刻。

声源 典型SPL (dB) 主观感受
树叶沙沙声 10–20 极安静
轻声耳语 30–40 安静
正常对话 50–60 适中
繁忙街道 70–80 嘈杂
摇滚演唱会 100–110 震耳

2.2 人耳听觉特性

人耳不是一台完美的声学测量仪。它有非线性、有掩蔽、有临界频带。做自适应处理时,如果你不了解这些,算法可能做了很多无用功——因为人耳根本听不出来。

2.2.1 掩蔽效应

一个强音会掩盖一个弱音,这就是掩蔽。分两种:

  • 频域掩蔽: 一个频率上的强信号,会掩盖邻近频率的弱信号。比如1 kHz的纯音,会让950 Hz或1050 Hz的弱音听不见。
  • 时域掩蔽: 强音出现前几毫秒(前掩蔽)和消失后几十毫秒(后掩蔽),弱音也会被掩盖。

为什么这个重要?因为音频编码(比如MP3、AAC)就是利用掩蔽效应来压缩数据的——听不见的成分直接扔掉。咱们做自适应滤波时,也可以利用掩蔽阈值来调整降噪强度,避免过度处理导致音质劣化。

核心观点: 掩蔽效应告诉我们,不是所有噪声都需要消除。只要把噪声降到掩蔽阈值以下,人耳就听不出来了。这能省下不少计算量。

2.2.2 临界频带与Bark尺度

人耳基底膜上的频率分析不是线性的。它把20 Hz–20 kHz分成了24个临界频带,每个频带对应一个Bark。低频的临界频带窄(几十Hz),高频的宽(几百Hz甚至上千Hz)。

Bark尺度的换算公式(近似):

z = 13 * arctan(0.76 * f / 1000) + 3.5 * arctan(f / 7500)^2

其中f是频率(Hz),z是Bark数。做心理声学模型时,我习惯把频谱映射到Bark域再处理,这样更符合人耳的真实感知。

Bark编号 中心频率 (Hz) 带宽 (Hz)
1 50 100
5 510 190
10 1720 500
15 4000 1100
20 10500 2500
避坑提醒: 我曾经在做一个语音增强项目时,直接用线性频率做子带滤波,结果低频处理得太粗糙,高频又浪费计算资源。后来换成Bark尺度划分,效果立竿见影。别偷懒,该映射就映射。

2.3 室内声学

声音在房间里不是自由传播的。它会反射、衍射、吸收。室内声学对自适应处理的影响非常大——尤其是混响。

2.3.1 直达声与反射声

从声源直接到麦克风的叫直达声。碰到墙壁、天花板、地面再弹过来的叫反射声。反射声又分早期反射(50 ms以内)和晚期混响(50 ms以后)。

早期反射对语音清晰度有帮助——它相当于给直达声加了点“能量”。但晚期混响就是灾难了,它会模糊语音的时域结构,让自适应滤波器很难收敛。

我记得有一次在教堂里做测试,RT60超过2秒,自适应回声消除器完全失效。后来加了去混响预处理才搞定。

2.3.2 混响时间RT60

RT60的定义:声源停止后,声压级下降60 dB所需的时间。它是衡量房间混响程度的核心指标。

赛宾公式(估算用):

RT60 = 0.161 * V / A

V是房间体积(m³),A是总吸声量(m²·Sabine)。A = Σ(α_i * S_i),α_i是各表面的吸声系数。

典型值:

  • 小型会议室:0.3–0.6 s
  • 教室:0.5–0.8 s
  • 音乐厅:1.5–2.5 s
  • 教堂:3–5 s

做自适应处理时,RT60直接决定了滤波器的长度。滤波器长度至少要覆盖混响时间对应的采样点数。比如RT60=0.5 s,采样率16 kHz,那滤波器长度至少8000 taps——算力不够的话,就得用频域分块处理。

我的习惯: 项目初期先测RT60。用MLS信号或扫频信号,简单又准确。拿到RT60后,再决定算法架构——短混响用时域NLMS,长混响用频域FDAF或PBFDAF。

2.4 本章知识体系

下面这张图把本章的核心逻辑串起来了。从物理特性到人耳感知,再到室内声学,最后落到自适应处理的工程考量——每一步都有实际意义。

声学基础回顾知识体系 声学基础回顾 · 知识体系 声音物理特性 人耳听觉特性 室内声学 频率 / 波长 声压级 (dB) 掩蔽效应 临界频带 / Bark 直达声 / 反射声 RT60 阵列设计 · 滤波器长度 · 动态范围 心理声学模型 · 感知编码 · 降噪阈值 声学场景自适应处理 回声消除 · 噪声抑制 · 去混响 · 波束成形 每个基础知识点都直接关联到自适应处理中的具体工程决策

好了,这一章的内容就是这些。物理参数、人耳特性、房间声学——三块基石。后面讲算法时,我会反复引用这些概念。你最好把它们记牢,或者至少知道去哪里查。