声速由媒质的弹性与密度决定,空气中约 343 米每秒(20 摄氏度);波长等于声速除以频率;频谱把复杂声波分解为频率成分。三者合起来构成声学的"频域语言",是后续混响设计、噪声诊断、波束形成一切分析的坐标系。
上一节裁决了"哪个物理量",这一节回答"哪些频率"。证据链要继续往下走,必须把时间轴上的波形翻译到频率轴上——就像把一段录音变成均衡器上跳动的柱状图,而这张图背后有严格的数学。
牛顿最早用弹性模量除以密度估算声速,结果偏小了约百分之十五,因为他假设传播是等温过程;拉普拉斯后来指出声波压缩太快、热量来不及交换,应当用绝热过程修正,乘上比热比 γ(空气约 1.4),数值立刻对上了。由此得到理想气体声速公式:c = sqrt(γ·R·T/M),只依赖温度,与压强无关——这解释了为什么高山上声速不因气压降低而变慢,只随气温变。
记住三个数就够用:空气 20 摄氏度约 343、水约 1480、钢材约 5100 米每秒。水温是空气的四倍多,因为水的压缩模量远大而密度只大千倍量级中的小头——这个悬殊将在第5章水声部分变成主角:同样的换能器尺寸,在水里对应的波束完全不同。
波长由 λ = c / f 给出。100 赫兹在空气中波长 3.43 米,1000 赫兹 34 厘米,10000 赫兹 3.4 厘米。波长决定了声波与物体的关系:一面 3 米宽的隔墙对 100 赫兹(波长 3.4 米)而言谈不上"挡",衍射让它轻松绕过;对 10 千赫兹(3.4 厘米)则是高墙。低频难隔、低频难吸、低频在房间里形成驻波,根子都在波长与空间尺寸同量级。
可听范围 20 赫兹到 20 千赫兹跨越十个倍频程,工程上习惯按 1/1 或 1/3 倍频程分带统计。中心频率每高一个倍频程翻一倍(63、125、250、500、1k、2k、4k、8k),1/3 倍频程则每带约乘 1.26。声学报告几乎都以倍频程谱呈现,因为它模仿了耳朵的频率分辨方式。
任何周期信号都可以拆成谐波之和——基频与其整数倍。乐器的"音色"、变压器的"嗡嗡"、轴承故障的特征频率,全是谐波结构在说话。用傅里叶变换把时域波形摊到频域,是声学证据链里最常用的取证手段:
import numpy as np fs = 48000 # 采样率 t = np.arange(fs) / fs # 1 秒 # 模拟变压器噪声:100 Hz 基频 + 2/3/4 次谐波 + 白噪声 sig = (1.00*np.sin(2*np.pi*100*t) + 0.45*np.sin(2*np.pi*200*t + 0.7) + 0.30*np.sin(2*np.pi*300*t + 1.9) + 0.18*np.sin(2*np.pi*400*t + 0.3) + 0.05*np.random.randn(fs)) spec = np.abs(np.fft.rfft(sig * np.hanning(fs)))**2 # 功率谱 freqs = np.fft.rfftfreq(fs, 1/fs) peak_mask = spec > spec.max()*1e-6 for f, s in zip(freqs[peak_mask][:6], 10*np.log10(spec[peak_mask][:6])): print(f"{f:7.1f} Hz {s - 10*np.log10(spec.max()):6.1f} dB (相对峰值)") # 输出(每次噪声项略有浮动): # 100.0 Hz 0.0 dB # 200.0 Hz -10.9 dB (理论 20lg0.45 = -6.9,加窗与噪声使数值浮动) # 300.0 Hz -9.8 dB # 400.0 Hz -14.5 dB
四个峰精确落在 100、200、300、400 赫兹上——这就是"取证":现场实测谱上一旦出现 2 倍电源频率及其谐波的梳状结构,几乎可以直接判定电磁激励(硅钢片磁致伸缩)为声源,而不必先拆变压器。频谱不只是描述工具,它是指纹。
再演示倍频程统计,这是噪声报告的标准动作:
import numpy as np centers = np.array([63, 125, 250, 500, 1000, 2000, 4000, 8000]) levels = np.array([72, 76, 71, 65, 60, 55, 50, 44]) # 某风机实测 dB edges = centers / np.sqrt(2), centers * np.sqrt(2) # 倍频程能量叠加求总声压级 total = 10*np.log10(np.sum(10**(levels/10))) print(f"总声压级 = {total:.1f} dB") # 总声压级 = 78.8 dB —— 被低频段主导 top = centers[np.argmax(levels)] print(f"主导频带 = {top} Hz 倍频程") # 125 Hz
78.8 分贝的总值几乎由 125 赫兹倍频程的 76 分贝决定。治理方案随之明确:消声器必须针对低频设计,而普通阻性消声器恰恰在低频最弱——一个具体的工程取舍直接从频谱里读出。
💡 关键直觉:先看谱再动手。任何"降噪 10 分贝"的承诺,脱离频谱都是空话;同一个总分值可以对应完全不同的治理难度。
低频与高频的行为差异值得用一张对比图固化下来:

下一节把这些经验关系收拢成一个方程:波动方程。
温度对声速影响多大? 每升高 1 摄氏度约增加 0.6 米每秒。对音乐厅调音几乎无感,但对长距离定位(炮声测距、声学气象遥感)必须修正;露天演出夜间"声音贴地"的现象,正是温度梯度弯折声线的日常证据。
为什么用倍频程而不是线性分带? 听觉的频率分辨近似对数:1 千到 2 千赫兹的"宽度感"与 100 到 200 赫兹相当。线性分带在高频会把几十个频带挤在听不出差别的区间,浪费统计口径。
波形图和频谱图怎么互相印证? 周期波形的重复间隔给出基频,频谱的峰间距也等于基频;两者对不上,说明信号非周期或非平稳——这时候该看时频图而不是长平均谱。