本节摘要:传递函数把"声波从 A 点到 B 点经历了什么"压缩成一个频率依赖的增益加相位画像,其时域对应物是脉冲响应。本节讲清脉冲响应、FIR 与 IIR 两种模型结构的取舍、正弦扫频测量流程,并完整解读一条实测次级路径——它是第 3 章 FxLMS 与第 5 章在线辨识的共同地基。
2.1 节把噪声拆成了逐频率的正弦行情,这一节要回答:这些行情从产生地传到目标点,一路上被市场"抽"走了多少增益、拖了多少时延、染了什么色。把这三个问题的答案装进一个数学对象里,就是传递函数——ANC 系统里出现频率最高的一个词。
对线性时不变的声学路径,给它一个理想单位脉冲激励,记录输出随时间的变化,得到脉冲响应;对脉冲响应做傅里叶变换,得到传递函数——每个频率上复数形式的增益与相位。两者一一对应,是同一幅画像的时域与频域画法。ANC 里有两条路径要建模:初级路径 P,从噪声源(或参考传感器)到目标点;次级路径 S,从控制器输出(功放加扬声器)经空气与结构传播到误差传感器。S 是全册后半场的主角:它既是控制器下达对冲单的通道,又是自适应算法更新权值时必须补偿的"滑点模型"。
一个头戴耳机的次级路径脉冲响应,实测形状通常长这样:开头一段平坦的纯时延(几十微秒到一毫秒量级,对应声波从单元到麦克风的飞行时间),随后出现一个尖锐的主峰(扬声器前腔的主共振),拖尾一串幅度递减的波瓣(腔体反射与结构传导),总长度衰减到忽略不计约需几毫秒。频域画像则显示:低频段增益平缓,中频某处出现共振峰,高频段增益持续滚降——高频滚降是好消息,它天然限制了需要对冲的频宽,也是 ANC 天生擅长低频的镜像表述。
用数字滤波器给路径建模,业界默认 FIR(有限脉冲响应)结构:滤波器输出只是输入近期样本的加权和,权系数序列本身就是脉冲响应的离散采样。FIR 有三个对 ANC 要命的好处。其一,天然稳定——没有反馈回路,系数再差也不会自激,这对一个要长时间无人值守运行的系统是底线属性。其二,逐系数对应时域采样,时延看得见摸得着,第 5 章在线辨识时更新哪个系数一目了然。其三,与 LMS 族算法的配合经过数十年验证,收敛性结论齐全。
代价是系数多。要覆盖一条几毫秒的脉冲响应,在四万八千赫兹采样率下需要几百个系数;系数多了计算量与收敛速度都受影响。IIR(无限脉冲响应)结构用反馈换取效率,几十个系数就能刻画长响应,但存在稳定性隐患且相位特性难以控制,在 ANC 主环路上少有整机采用,常见于离线分析与均衡预处理的旁路。工程上的折中方案是:主环路 FIR 保平安,阶数按"覆盖脉冲响应主能量"原则截断——把脉冲响应能量累到总量的九成九所需的长度,就是阶数下限。

测一条真实路径不需要昂贵设备,一支测量麦克风、一块带音频接口的开发板加上一段脚本就能完成。扫频法的原理朴素:让扬声器播一个频率从低到高缓慢滑动的正弦,同时录制麦克风收到的信号,逐频率比较输出与输入的幅值比与相位差,就得到了传递函数的逐点采样。
import numpy as np fs = 48000 T = 2.0 # 扫两秒 t = np.arange(int(fs*T)) / fs f0, f1 = 20.0, 8000.0 # 从二十赫兹扫到八千赫兹 # 对数扫频激励(也可以线性扫) sweep = np.sin(2*np.pi*f0 * T * ((f1/f0)**(t/T) - 1) / np.log(f1/f0)) # ref 为功放输入端记录,mic 为误差麦克风录到的信号(同一时钟) # 分帧后逐频点计算互谱与自谱之比,得到传递函数估计 def estimate_tf(ref, mic, fs, nfft=4096): freqs = np.arange(nfft//2 + 1) * fs / nfft win = np.hanning(nfft) tf = np.zeros(nfft//2 + 1, dtype=complex) hop = nfft // 2 acc = np.zeros_like(tf) cnt = 0 for i in range(0, len(ref) - nfft, hop): R = np.fft.rfft(ref[i:i+nfft] * win) M = np.fft.rfft(mic[i:i+nfft] * win) acc += M * np.conj(R) # 互谱累加 cnt += 1 tf = acc / cnt return freqs, np.abs(tf), np.angle(tf) # 读图三步: # 1) 幅频曲线找共振峰与滚降拐点; # 2) 相频曲线低频段斜率换算纯时延:延迟秒数约等于相位斜率; # 3) 相位在共振峰附近快速穿越负一百八十度,标出反馈设计的危险区。
流程里有三个容易踩坑的细节。第一,参考信号必须从功放输入端取,而不是从播放列表取——后者把功放与扬声器的失真也算进了"输入",测出来的画像会失真。第二,扫频要慢,频谱能量在任一瞬间只占据一个频率,慢扫保证每个频点都有足够能量积累,信噪比才够。第三,环境要记录:扫频时麦克风与单元的相对位置、腔体状态(是否佩戴、是否漏气)都要写下,路径画像脱离场景没有意义——同一副耳机戴上与摘下,画像是两幅。
背景。某头戴式耳机项目在中试阶段发现反馈通路降噪深度不及设计值,团队怀疑次级路径模型失准,决定重新扫频标定。
操作。按上述扫频流程,在标准佩戴工装上测量。得到的画像显示:纯时延约零点四毫秒,主共振峰在两百赫兹附近、峰值增益比低频段高出约八分贝,一千赫兹以上增益滚降,相位曲线在三百赫兹附近穿越负九十度。
结果与解读。三个读数各对应一个工程动作。零点四毫秒纯时延意味着反馈环路里存在固定的传播死区,控制器的数字时延必须压在这之下,对冲窗口才够两百赫兹以上频段使用——这解释了为什么团队把算法调度周期从一千赫兹提到一千九百二十千赫兹级别。两百赫兹共振峰说明该频段的次级增益天然偏大,对冲头寸在这里"下手便宜",设计者把反馈滤波器的权值初值偏向该频段,实测该频段降噪深度提升约四分贝。相位快速穿越区提示三百赫兹附近环路裕度紧张,工程师在控制器里对该频段加了保守的增益裕度,牺牲少量深度换取不自激——第 5 章的鲁棒性判据会把这个"紧张"定量化。
变式。同一套扫频流程换个对象就是另一种标定。车载 ANC 扫的是从音响低音单元到头枕麦克风的车厢路径,扫频要在发动机怠速噪声背景下做,信噪比策略改为加大扫频幅度并用互谱平均压噪;工业管道扫的是管内声路径,要注意气流噪声的污染,改用与叶片转速同步的激励代替扫频。方法的核心不变:用已知激励探路,用互谱比对收账。
💡 关键直觉:路径建模的精度需求是不均匀的。对冲收益集中的频段(通常是低频共振区)值得建模到一两个分贝、几度相位;对冲本来就做不动的频段,粗模型即可。把建模预算花在赚钱的频段上,与交易里把研究精力花在主力合约上是同一门资源配置学。
路径画像画好了,下一节算全系统最刚性的约束——时间:每一微秒花在哪里,多少时延以内对冲窗口才成立。