1. 声学基础回顾:声音的物理特性与人耳听觉
各位同学,欢迎来到《声学设计到DSP实现》的第一章。我是你们的讲师,一个在声学和DSP领域摸爬滚打了十几年的工程师。今天咱们不聊虚的,直接扎进声学最核心的几个概念。你可能会问,做DSP为什么要学声学?我告诉你,不懂声音的物理本质,你写的算法就是空中楼阁。好,咱们开始。
1.1 声音的物理特性
声音是什么?说白了,就是机械振动在介质(通常是空气)中的传播。它有几个逃不开的基本参数。
1.1.1 频率与波长
频率(f):单位时间内振动的次数,单位是赫兹(Hz)。人耳能听到的范围大约是20 Hz到20 kHz。低于20 Hz叫次声波,高于20 kHz叫超声波。我个人习惯把频率想象成“音调的高低”——频率越高,声音越尖锐。
波长(λ):一个完整振动周期在介质中传播的距离。它们的关系很简单:
λ = c / f
其中c是声速(常温下约343 m/s)。举个例子,1 kHz的声音,波长大约是0.343米。我在做会议室声学设计时,经常用这个公式估算低频驻波的位置——你想想看,50 Hz的波长接近7米,房间尺寸如果刚好是它的整数倍,那低频嗡嗡声就来了。
关键点:频率决定音调,波长决定空间声场分布。DSP中的滤波器设计,本质上就是在跟频率和波长打交道。
1.1.2 声压级(SPL)
声压级衡量声音的“响度”,单位是分贝(dB)。它不是线性刻度,而是对数刻度。公式如下:
SPL = 20 * log10(p / p_ref)
其中p是有效声压,p_ref是参考声压(20 μPa,人耳能听到的最小声压)。
为什么要用对数?因为人耳对声音的感知范围太宽了——从0 dB(听阈)到120 dB(痛阈),声压差了100万倍。用分贝表示,数字就变得好处理。我曾经在消声室测过一款麦克风的底噪,数据出来是-105 dBV,换算成SPL大概就是15 dB(A)左右。嗯,这个数值对录音来说已经非常安静了。
| 声源 | 声压级(dB) | 主观感受 |
|---|---|---|
| 树叶沙沙声 | 10-20 | 极安静 |
| 正常交谈(1米) | 60-70 | 舒适 |
| 繁忙街道 | 80-90 | 吵闹 |
| 摇滚演唱会 | 110-120 | 痛阈 |
避坑指南:我曾经在调试一个车载音响系统时,发现低音炮的SPL数据总是对不上。后来才发现,测试麦克风没有做自由场修正。记住,SPL测量一定要考虑测量环境和传声器校准。
1.2 人耳听觉特性
人耳不是一台完美的“声学测量仪”。它有自己的脾气和偏好。做DSP如果不了解这些,你设计的算法听起来就会“不对味”。
1.2.1 等响曲线
人耳对不同频率的敏感度不一样。等响曲线(Fletcher-Munson曲线)告诉我们:在相同声压级下,中频(2-4 kHz)听起来最响,低频和高频则相对“吃亏”。
举个例子:一个40 dB的100 Hz声音,和一个40 dB的1 kHz声音,你听起来会觉得1 kHz那个更响。为什么?因为人耳对低频不敏感。我在做耳机EQ时,经常要参考等响曲线做低频补偿——尤其是小音量听歌时,不补偿低频,声音就干巴巴的。
实用技巧:在DSP中实现响度补偿时,可以查表或拟合等响曲线数据,然后根据当前音量动态调整EQ。我习惯用ISO 226:2003标准的数据,精度更高。
1.2.2 掩蔽效应
一个声音的存在,会让人耳对另一个声音的感知能力下降。这就是掩蔽效应。它分两种:
- 频域掩蔽:一个强音会掩蔽掉它附近频率的弱音。比如一个1 kHz的纯音,会让950 Hz到1050 Hz范围内的声音更难被听到。
- 时域掩蔽:强音出现前(前掩蔽)和消失后(后掩蔽)的一小段时间内,弱音会被掩蔽。
你想想看,MP3压缩为什么能压那么小?就是利用了掩蔽效应——把那些被掩蔽掉的、人耳听不到的声音信息直接扔掉。我在做音频编解码器时,经常要调整掩蔽阈值模型,稍微偏一点,压缩出来的声音就有“空洞感”。
1.3 室内声学基础
声音在房间里不是自由传播的。它会撞墙、反弹、衰减。搞DSP的人如果不理解室内声学,做出来的回声消除、降噪算法就是纸上谈兵。
1.3.1 混响时间(RT60)
混响时间定义为:声源停止发声后,声压级下降60 dB所需的时间。它是衡量房间“活跃度”的核心指标。
赛宾公式给出了一个估算方法:
RT60 = 0.161 * V / A
其中V是房间体积(m³),A是总吸声量(m²·Sabine)。
举个例子:一个100 m³的会议室,如果墙面都是硬质材料(吸声系数低),RT60可能超过1秒,开会时说话嗡嗡响。如果铺上地毯、挂上吸声板,RT60降到0.5秒以下,语音清晰度就上来了。
| 房间类型 | 推荐RT60(秒) | 特点 |
|---|---|---|
| 录音棚 | 0.2-0.4 | 干声,适合后期处理 |
| 音乐厅 | 1.5-2.5 | 丰满,有包围感 |
| 会议室 | 0.4-0.6 | 清晰,不费力 |
| 教室 | 0.5-0.8 | 兼顾清晰与饱满 |
避坑指南:我曾经在一个小型演播室做声学改造,按赛宾公式算出来RT60是0.3秒,但实测却是0.6秒。后来发现,我忽略了低频吸声不足的问题——低频波长长,普通吸声材料对低频几乎无效。所以,算混响时间一定要分频段考虑。
1.3.2 直达声与反射声
声音从声源到人耳,走的路不一样:
- 直达声:直接传播,不经过任何反射。它最先到达,携带声源的方向和原始音色信息。
- 早期反射声:经过一次或几次反射后到达(通常在50 ms内)。它影响声音的空间感和亲切感。
- 混响声:经过多次反射后到达,方向感模糊,决定房间的“氛围”。
在DSP中,我们经常用“干湿比”来控制混响效果。干信号就是直达声,湿信号就是混响声。我做算法时,习惯把早期反射和后期混响分开处理——早期反射用几个延迟线模拟,后期混响用梳状滤波器和全通滤波器级联。这样调出来的混响更自然。
实用技巧:在DSP中模拟早期反射时,我通常用3-5个延迟线,延迟时间根据房间尺寸计算(比如5米宽的房间,侧墙反射延迟约15 ms)。混响部分则用Schroeder混响器结构——4个梳状滤波器并联,再接2个全通滤波器串联。这样出来的效果,嗯,很接近真实房间。