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 插值,才把高频指向性做上去。

再来看频域实现。思路是这样的:

  1. 把时域信号做 FFT 转到频域
  2. 在频域里,延时变成了相位旋转:e-jωτ
  3. 每个频点独立做相位补偿,然后求和
  4. 最后 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 知识体系总结

延时求和波束形成的核心逻辑,可以用下面这张图来概括:

延时求和波束形成知识体系 多通道输入 延时补偿 + 加权求和 核心公式: y = Σ wᵢ·xᵢ(t-τᵢ) 时域实现 延迟线 + 插值 频域实现 FFT + 相位旋转 性能指标 波束图 指向性指数 旁瓣电平 关键设计参数 阵元数 M | 阵元间距 d | 采样率 fₛ | 目标方向 θ₀ | 加权窗函数

这张图把延时求和波束形成的核心逻辑串起来了。从多通道输入开始,经过延时补偿和加权求和,可以选择时域或频域实现,最终用波束图和指向性指数来评估性能。而阵元数、间距、采样率这些参数,直接决定了最终效果。

我个人觉得,延时求和虽然简单,但它是理解自适应波束形成、MVDR、GSC 等高级算法的基础。把这一步吃透了,后面学起来会轻松很多。


公众号:蓝海资料掘金营,微信deep3321