1. 课程导入
各位同学好,我是这门课的主讲。做了十几年麦克风阵列算法,我最大的感受是:基础不牢,地动山摇。很多同学一上来就追波束形成、GCC-PHAT,结果调参调到怀疑人生。其实,把声学基础和阵列原理吃透,后面会顺很多。
今天这一章,我们就从声音的物理特性开始,一步步聊到阵列构型和波束形成的基本概念。嗯,内容有点多,但都是干货。
1.1 声音的物理特性
声音是什么?说白了就是介质中的机械振动。空气被扰动,形成疏密波,传到我们耳朵里。这里面有三个核心参数:频率、波长、声速。
核心公式:
c = f × λ
其中 c 是声速(m/s),f 是频率(Hz),λ 是波长(m)。
常温下(20°C),空气中声速大约是 343 m/s。你想想看,这个值会随温度变化——温度每升高 1°C,声速增加约 0.6 m/s。我在做户外阵列测试时吃过这个亏,冬天和夏天的定位结果差了快 2 度,后来才意识到是声速没补偿。
| 参数 | 符号 | 典型值(20°C 空气) | 单位 |
|---|---|---|---|
| 声速 | c | 343 | m/s |
| 频率 | f | 20 ~ 20,000(人耳范围) | Hz |
| 波长 | λ | 17.15 mm ~ 17.15 m | m |
这里有个关键点:波长决定了阵列的物理尺寸。比如 1 kHz 的声音,波长约 34.3 cm。如果你的麦克风间距是 4 cm,那这个间距相对于波长来说就很小。为什么重要?后面讲空间混叠时会细说。
我个人习惯:做阵列设计时,先把目标频段的最低频率和最高频率的波长算出来。最低频率决定阵列的孔径下限,最高频率决定麦克风间距的上限。这个习惯帮我避免了很多低级错误。
1.2 麦克风工作原理
麦克风的核心任务:把声压信号转成电信号。目前阵列里最常用的是 MEMS 麦克风和 驻极体麦克风。
- MEMS 麦克风:体积小、一致性好、适合批量贴片。我最近几个项目全用的 MEMS。
- 驻极体麦克风:成本低、灵敏度高,但相位一致性差一些。做阵列时要注意配对。
选型时,有几个指标必须看:
- 灵敏度:通常 -26 dBFS 或 -42 dBV 左右。灵敏度越高,信噪比越好。
- 信噪比(SNR):60 dB 以上算及格,65 dB 以上算不错。
- 相位一致性:阵列里麦克风之间的相位偏差要尽量小。我遇到过一批麦克风,同一声源下相位差能到 10 度,波束形成直接废掉。
我曾经踩过的坑:有一款 MEMS 麦克风,数据手册上写灵敏度典型值 -26 dBFS,结果实际测下来,同一批料里最大偏差有 ±3 dB。用在波束形成里,旁瓣直接抬高了 5 dB。所以,阵列用麦克风一定要实测配对,不能只看手册。
1.3 阵列几何构型
麦克风怎么摆?这直接决定了阵列的性能。常见的构型有三种:线性阵、圆形阵、平面阵。
1.3.1 线性阵列
麦克风排成一条直线。结构简单,算法成熟。但有个致命缺点:前后模糊——你分不清声源是在阵列前方还是后方。
线性阵的波束在水平面上是左右对称的。我早期做会议麦克风阵列时,就因为这个前后模糊问题,导致 speaker 转身说话时信号突然衰减。后来加了双线性阵才解决。
1.3.2 圆形阵列
麦克风均匀分布在圆周上。优点是全方位覆盖,没有前后模糊。适合 360° 拾音场景,比如智能音箱。
圆形阵的波束形成算法比线性阵复杂一些,但效果很稳。我记得有个项目,客户要求 5 米半径内任意方向都能清晰拾音,圆形阵是唯一的选择。
1.3.3 平面阵列
麦克风分布在二维平面上,常见的有矩形阵、十字阵、螺旋阵。平面阵能同时估计方位角和俯仰角,适合 3D 空间定位。
平面阵的设计自由度大,但计算量也大。做实时系统时,要注意算法复杂度。
| 构型 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|
| 线性阵 | 结构简单、算法成熟 | 前后模糊、仅一维分辨 | 会议系统、声源定位 |
| 圆形阵 | 360° 覆盖、无模糊 | 算法稍复杂 | 智能音箱、机器人 |
| 平面阵 | 二维分辨、精度高 | 计算量大、设计复杂 | 无人机、安防监控 |
1.4 波束形成的基本概念
波束形成是什么?说白了就是让阵列"听"某个方向的声音,同时抑制其他方向的声音。你可以把它想象成一个"声学手电筒"——照哪里,哪里就亮。
核心思想:对每个麦克风的信号施加不同的时延(或相位补偿),让目标方向的声音同相叠加,非目标方向的声音异相抵消。
波束形成的本质:
y(t) = Σ wi · xi(t - τi)
其中 wi 是加权系数,τi 是时延补偿。调整 wi 和 τi,就能控制波束指向和形状。
波束形成分两大类:
- 固定波束形成:加权系数固定,波束指向不变。适合已知声源方向的场景。
- 自适应波束形成:加权系数根据信号环境动态调整。能自动抑制干扰,但稳定性差一些。
我刚开始做自适应波束形成时,遇到过"信号对消"的问题——目标信号和干扰信号太相关,结果算法把目标也给消掉了。后来加了对角加载才稳住。
下面这张图展示了麦克风阵列波束形成的基本流程:
波束形成有两个关键指标:主瓣宽度和旁瓣电平。主瓣越窄,指向性越好;旁瓣越低,抗干扰能力越强。但这两者往往互相矛盾——主瓣窄了,旁瓣可能就高了。怎么平衡?后面章节会详细讲。
我建议:刚开始学波束形成时,先别急着调自适应算法。把固定波束形成玩透——理解时延、权值、阵元间距对波束图的影响。这些基础打牢了,后面学 MVDR、GSC 会轻松很多。