2. 语音采集技术:麦克风阵列选型、抗噪处理、语音信号预处理

好,我们进入第二个核心话题——语音采集。说实话,CVR 系统里最容易被低估的就是这一块。很多人觉得,不就是放个麦克风嘛,能有多难?但我在项目里吃过亏,才明白前端采集做不好,后面算法再牛也白搭。

2.1 麦克风阵列选型:不是随便挑几个话筒

驾驶舱环境有多嘈杂,你想想看——发动机轰鸣、空调风声、无线电通讯、操纵杆机械声……单靠一个麦克风,根本扛不住。所以现代 CVR 普遍采用麦克风阵列。

阵列构型怎么选?我个人习惯分三种场景:

  • 线性阵列:适合驾驶舱前部,沿仪表板布局。波束指向性好,能聚焦飞行员方向。
  • 圆形阵列:适合顶棚中央安装。360度拾音,但算法复杂度高一些。
  • 分布式阵列:多个独立麦克风分散布置。我曾在某型支线客机上见过这种方案,抗遮挡能力强,但同步要求极高。

选型时有个关键参数——阵元间距。理论上讲,间距不能超过最高频率波长的一半。比如你要采集 8kHz 的语音,波长约 4.3cm,那间距最好控制在 2cm 以内。嗯,这里要注意:间距太小,低频指向性会变差;太大,又会出现空间混叠。我一般取 1.5~2cm 作为折中。

核心指标速查表:

参数推荐值说明
阵元数量4~8 个4 阵元是底线,8 阵元效果明显提升
间距1.5~2 cm兼顾 8kHz 以下语音频段
灵敏度-35 ± 3 dBV/Pa太低会丢失弱语音,太高容易饱和
信噪比≥ 65 dBA低于 60 dBA 的麦克风不建议用

2.2 抗噪处理:跟发动机噪音抢信号

麦克风选好了,接下来就是怎么在 120 分贝的噪音里把人的说话声捞出来。我遇到过最极端的情况——某次试飞,发动机全推力状态下,驾驶舱噪音直接盖过了机内通话。那次之后,我对抗噪算法有了全新的认识。

常用的抗噪手段,我按优先级排个序:

  1. 波束成形(Beamforming):延迟求和算法最简单,计算量小,适合嵌入式。自适应波束成形(如 MVDR)效果更好,但需要稳定的协方差矩阵估计。我建议 CVR 用固定波束成形打底,再加自适应做微调。
  2. 谱减法:经典方法,在频域把噪声估计值减掉。缺点是容易产生“音乐噪声”。我一般会加一个平滑后处理,听起来没那么刺耳。
  3. 维纳滤波:比谱减法更温和,但需要准确的噪声功率谱估计。驾驶舱噪声非平稳,所以我会用递归平均来实时更新噪声估计。

我的经验:抗噪处理不要追求“完全干净”。过度降噪会损伤语音的自然度,甚至丢失关键信息。CVR 的首要目标是可懂度,不是音质。我曾经见过一个团队把语音处理得“太干净”,结果空管指令里的尾音被切掉了,差点酿成事故。

2.3 语音信号预处理:滤波与增益控制

预处理是承上启下的环节。说白了,就是把麦克风出来的原始信号调理成适合后续编码和存储的样子。

2.3.1 滤波:该留的留,该砍的砍

驾驶舱语音的有效频段大概在 300Hz ~ 3400Hz(电话带宽标准)。低于 300Hz 的基本是发动机低频轰鸣和气流声,高于 3400Hz 的则是高频噪声和电子设备干扰。

我常用的滤波器配置:

  • 高通滤波器:截止频率 200~300Hz,12dB/oct 斜率。用来切掉次声波和低频振动。
  • 低通滤波器:截止频率 4kHz,24dB/oct 斜率。防止高频噪声混叠。
  • 带阻滤波器:如果驾驶舱有固定频率的干扰(比如某些航电设备 1kHz 的蜂鸣声),我会加一个窄带陷波器。

嗯,这里要注意:滤波器会引入相位延迟。如果阵列里每个通道的滤波器不一致,波束成形的效果会大打折扣。所以我坚持所有通道用同一型号的滤波器芯片,并且做相位匹配校准。

2.3.2 增益控制:别让声音忽大忽小

驾驶舱里说话音量差异很大——机长可能离麦克风很近,副驾驶稍微远一点,后舱乘务员通话时信号更弱。如果没有自动增益控制(AGC),录音就会一会儿爆音一会儿听不清。

AGC 的设计要点:

  • 目标电平:我一般设定在 -12dBFS 左右,留出 12dB 的余量给突发大声。
  • 启动时间:1~5ms。太慢会漏掉语音起始部分,太快又会让背景噪声跟着起伏。
  • 释放时间:100~500ms。说话间隙不要立刻把增益拉高,否则背景噪声会“呼”地一下冒出来。

避坑指南:我曾经在一个项目中用了快速 AGC,结果飞行员咳嗽一声,增益瞬间压下来,后面三秒钟的对话都变得很小声。后来我改成双环 AGC——一个快环处理瞬态,一个慢环维持整体电平。效果好了很多。

2.4 预处理流程总结

把上面这些串起来,一个典型的 CVR 语音采集预处理链路是这样的:

麦克风阵列 → 前置放大 → 抗混叠滤波 → ADC → 
高通滤波 → 波束成形 → 谱减法降噪 → AGC → 
低通滤波 → 输出给编码器

每一步都有讲究。我见过不少团队在 ADC 之后直接做降噪,结果低频噪声被放大,高频细节丢失。正确的顺序应该是:先滤波去掉确定性的干扰,再做波束成形利用空间信息,最后用降噪算法处理残余噪声。

好了,语音采集这块就聊到这儿。下一节我们讲语音编码与压缩——怎么在有限的存储空间里,把驾驶舱里的每一句话都原原本本地留下来。