3. 波束形成基础(Delay-and-Sum)
延时求和波束形成,说白了就是麦克风阵列信号处理里最基础、最直观的一种方法。我刚开始接触阵列信号处理时,第一个学的就是它。为什么?因为它简单、有效,而且能帮你理解后面所有复杂算法的核心思想。
3.1 延时求和的核心原理
想象一下,你站在一个房间里,远处有个人在说话。你的两只耳朵听到的声音,到达时间其实不一样——离声源近的那只耳朵先听到。大脑就是利用这个微小的时差,来判断声音来自哪个方向。
延时求和波束形成,模仿的就是这个机制。
具体怎么做呢?
- 每个麦克风接收到的信号,先做延时补偿
- 让所有麦克风的信号在目标方向上“对齐”
- 然后把这些对齐后的信号加起来
结果就是:目标方向的声音被增强,其他方向的声音被削弱。
核心公式:
y(t) = Σ wi · xi(t - τi)
其中 τi 是第 i 个麦克风相对于参考点的延时,wi 是加权系数(通常取 1/M)。
嗯,这里要注意:延时 τi 的计算,取决于阵列的几何结构和目标方向。对于均匀线性阵列(ULA),计算很简单:
τ_i = (i-1) · d · sin(θ) / c
其中 d 是阵元间距,θ 是目标方向角,c 是声速(约 340 m/s)。
3.2 时域实现 vs 频域实现
我在项目中遇到过一个问题:时域实现和频域实现,到底该选哪个?
先说说时域实现。说白了就是直接在时间轴上做延时和相加。每个通道用一个延迟线(FIFO 或环形缓冲区)来存储采样点,然后根据计算出的延时量,从缓冲区里取出对应的采样值。
时域实现的特点:
- 实现简单,适合实时处理
- 延时精度受采样率限制(只能做到整数倍采样点延时)
- 如果需要亚采样点精度,得用插值滤波器
我曾经在一个语音增强项目里,直接用整数延时,结果高频段效果很差。后来加了 sinc 插值,才把高频指向性做上去。
再来看频域实现。思路是这样的:
- 把时域信号做 FFT 转到频域
- 在频域里,延时变成了相位旋转:e-jωτ
- 每个频点独立做相位补偿,然后求和
- 最后 IFFT 转回时域
// 频域实现伪代码
for each frame:
X = FFT(x) // 多通道 FFT
for each frequency bin k:
Y[k] = Σ X_i[k] · exp(-j·2π·k·τ_i / N)
y = IFFT(Y)
频域实现的优势:
- 可以轻松实现亚采样点精度(相位旋转是连续的)
- 每个频点可以独立加权(方便做频率相关的波束形成)
- 计算效率高(尤其当 FFT 长度是 2 的幂时)
但频域实现也有坑。我记得有一次,帧长选得太短,频域分辨率不够,导致低频段波束图严重失真。你想想看,低频波长长,相位变化慢,需要更长的帧才能准确补偿。
3.3 波束图与指向性
波束图,就是阵列对不同方向入射信号的响应。它是衡量波束形成器性能最直观的工具。
对于均匀线性阵列,延时求和的波束图有解析表达式:
B(θ) = sin(M · π · d · (sinθ - sinθ₀) / λ) /
(M · sin(π · d · (sinθ - sinθ₀) / λ))
这个公式看着复杂,但说白了就是 sinc 函数的离散版本。M 是阵元数,θ₀ 是目标方向。
注意:当 d > λ/2 时,会出现栅瓣(grating lobes)。栅瓣会让阵列对非目标方向也产生强响应,这是实际应用中要避免的。
我建议你在设计阵列时,先算一下最高频率对应的波长,然后确保 d ≤ λ_min / 2。这是经验法则,别问我怎么知道的——吃过亏就知道了。
3.4 指向性指数
指向性指数(Directivity Index, DI)是衡量波束形成器空间选择能力的量化指标。它定义为:
DI = 10 · log₁₀(B(θ₀)² / (1/4π) · ∫ B(θ)² dΩ)
说白了,就是目标方向的增益,除以所有方向增益的平均值。DI 越大,说明波束越“尖”,空间选择性越好。
| 阵元数 M | DI (dB) | 波束宽度 (°) |
|---|---|---|
| 4 | 6.0 | 25.8 |
| 8 | 9.0 | 12.8 |
| 16 | 12.0 | 6.4 |
从表里能看出来,阵元数翻倍,DI 增加 3 dB,波束宽度减半。这就是为什么实际产品里,想要更好的指向性,就得堆阵元数。
3.5 延时求和的实际应用建议
我在做智能音箱的麦克风阵列时,总结了几条经验:
- 阵元间距:对于 8 kHz 采样率,d 取 4 cm 左右比较合适(对应 4 kHz 的半波长)
- 阵元数量:4 个起步,8 个够用,16 个算豪华
- 延时精度:如果采样率 16 kHz,整数延时对应约 2 cm 的空间分辨率,够用但不够好
- 加权方式:均匀加权(矩形窗)旁瓣高,可以用汉明窗或布莱克曼窗压低旁瓣
避坑指南:我曾经在调试时发现,延时求和波束形成对阵列校准误差非常敏感。哪怕 0.1 个采样点的延时误差,都会导致波束图畸变。所以,量产前一定要做阵列校准。
3.6 知识体系总结
延时求和波束形成的核心逻辑,可以用下面这张图来概括:
这张图把延时求和波束形成的核心逻辑串起来了。从多通道输入开始,经过延时补偿和加权求和,可以选择时域或频域实现,最终用波束图和指向性指数来评估性能。而阵元数、间距、采样率这些参数,直接决定了最终效果。
我个人觉得,延时求和虽然简单,但它是理解自适应波束形成、MVDR、GSC 等高级算法的基础。把这一步吃透了,后面学起来会轻松很多。
公众号:蓝海资料掘金营,微信deep3321