2. 声反馈系统建模:声学路径的传递函数、反馈路径的数学模型、系统稳定性分析

好,咱们进入正题。声反馈消除,说白了就是跟一个“看不见的环路”做斗争。你想想看,麦克风收了声音,功放放大,喇叭放出来,声音又绕回麦克风——这不就是个闭环吗?要干掉它,首先得搞清楚这个环路的数学模型长什么样。

我个人习惯,做任何算法之前,先画框图。把物理世界映射成数学公式,后面写代码才心里有底。

2.1 声学路径的传递函数

先看最简单的场景。一个扩声系统,从麦克风输入到喇叭输出,中间经过ADC、DSP处理、DAC、功放。但真正让系统“啸叫”的,是喇叭到麦克风之间的那条声学路径。

这条路径的传递函数,我习惯用 G(s) 表示(连续域)或者 G(z)(离散域)。它包含了:

  • 直达声:喇叭直接传到麦克风,有延时和衰减
  • 反射声:墙壁、天花板、地板反射回来的声音
  • 混响:多次反射叠加,形成长尾效应

在项目中,我遇到过最头疼的情况是会议室。玻璃墙多,反射强,混响时间长达1.2秒。这时候 G(z) 的阶数得拉到2048甚至4096,才能勉强描述清楚。

数学上,我们通常用FIR滤波器来建模这条路径:

G(z) = g₀ + g₁·z⁻¹ + g₂·z⁻² + ... + g_{N-1}·z^{-(N-1)}

其中 g₀, g₁, ..., g_{N-1} 就是房间脉冲响应(RIR)的采样点。N越大,模型越准,但计算量也越大。嗯,这里要注意,实际部署时N不能随便选,得看你的DSP算力够不够。

关键点:声学路径是时变的。有人走动、门开关、甚至温度变化,都会改变G(z)。所以自适应滤波才那么重要。

2.2 反馈路径的数学模型

反馈路径,就是信号从喇叭出来,经过声学空间,再回到麦克风的完整链路。我把它拆成三部分:

  1. 电声路径:DAC → 功放 → 喇叭。这部分基本是线性的,可以用一个增益系数加一个固定延时近似。
  2. 声学路径:喇叭 → 空气传播 → 麦克风。这就是上面说的G(z),非线性和时变都集中在这里。
  3. 拾音路径:麦克风 → 前置放大 → ADC。同样近似为线性。

整个反馈路径的数学模型,可以写成:

F(z) = H_elec(z) · G_acoustic(z) · H_mic(z)

在实际工程中,我通常把 H_elecH_mic 合并成一个固定滤波器 H_fixed(z),重点去估计那个时变的 G_acoustic(z)

为什么会这样简化?因为电声器件一旦焊好,特性就基本定了。真正让你头疼的,永远是那个“不听话”的房间。

我的经验:调试时先用扫频信号测一次房间脉冲响应,存下来作为初始值。后面自适应滤波从这个初始值开始迭代,收敛速度快很多。

2.3 系统稳定性分析

好了,模型有了,接下来就是判断系统会不会啸叫。这其实是个经典的控制理论问题——闭环系统的稳定性。

扩声系统的闭环传递函数是:

T(z) = D(z) / (1 - F(z) · K(z))

其中 D(z) 是前向路径(麦克风→DSP→功放→喇叭),K(z) 是反馈抑制滤波器(就是我们设计的算法),F(z) 是上面说的反馈路径。

系统稳定的充要条件是:闭环传递函数的所有极点都在单位圆内。换句话说,1 - F(z)·K(z) = 0 的所有根,模长必须小于1。

但实际项目中,谁有空去算极点?我一般用两个更直观的判据:

判据 说明 工程应用
奈奎斯特判据 开环频率响应 F(jω)·K(jω) 的幅值和相位 适合离线分析,看增益裕度和相位裕度
临界增益法 逐渐增大系统增益,直到出现自激振荡 现场调试最常用,简单粗暴

我记得有一次在剧场调试,用临界增益法找到啸叫点后,发现频率正好是2.3kHz。为什么是2.3kHz?因为那个频率的混响时间最长,反馈最强。这就是声学路径的“共振峰”在作怪。

避坑指南:千万不要在系统已经啸叫时去测频率响应!那时候信号已经失真了,测出来的数据全是错的。我曾经吃过这个亏,浪费了一下午。

从数学上看,稳定性条件还可以写成:

|F(jω) · K(jω)| < 1, 对于所有 ω 满足 ∠(F(jω)·K(jω)) = 0° (mod 360°)

翻译成人话就是:在相位刚好凑成360°整倍数的频率点上,开环增益必须小于1。否则,正反馈成立,啸叫就来了。

2.4 知识体系总览

下面这张图,是我自己总结的声反馈系统建模框架。每次做新项目,我都会先对着这张图捋一遍思路。

声反馈系统建模知识框架 声学路径传递函数 反馈路径数学模型 系统稳定性分析 直达声 + 反射 + 混响 FIR滤波器建模 (G(z)) 房间脉冲响应 (RIR) 电声路径 (H_elec) 声学路径 (G_acoustic) 拾音路径 (H_mic) 闭环极点分析 奈奎斯特判据 临界增益法 核心目标:找到 F(z)·K(z) 的稳定条件 确保所有频率点 |F(jω)·K(jω)| < 1 当相位为 0°

这张图把三个核心模块串起来了。从左到右,从物理建模到数学分析,最后落到稳定性判据。你写代码的时候,脑子里得有这张图。

一句话总结:声反馈系统建模,就是搞清楚“声音怎么绕回来的”,然后用数学描述它,最后判断“什么时候会啸叫”。

好了,这一章的内容就到这儿。模型建好了,下一章咱们就可以动手设计自适应滤波器了。到时候我会拿一个真实的啸叫案例,一步步拆解给你看。


专注资料整理