李彦瑭,沈 一,潘欣裕,2,孙云飞,夏文浩,郭笑非,陆家欣,周 岑
(1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009;2.苏州科技大学 苏州智慧城市研究院,江苏 苏州 215009)
当前麦克风阵列在许多实用技术领域都有着广泛的应用,如高背景噪声情况下探测航空器的噪声源[1]、在较远距离识别声音[2]、在声环境中查询鉴别出不同寻常的声音[3]、用智能声源定位的方式追踪人类[4]、在高噪声环境下对危险情况进行探测和分类[5]等。语音信号处理领域也引入了阵列信号处理的概念,并且根据声音传播的特点发展出了一些独特的方法,如到达时间差估计(TDOA)[6]等。语音定位系统的主要目标是识别声音的方向,一般使用TDOA算法测得目标发出的声音到达麦克风单元的时间差,测得目标声音的特征参数,利用时间差来确定目标声音点与阵列的角度。本文采用在功耗控制、可扩展性、集成度、性能等方面均具有较大优势的高性能STM32H743声源定位系统,完成基于STM32H743的声源定位系统的硬件设计。
系统架构如图1所示,由5个麦克风组成阵列,负责声音信号的采集和放大;MCU负责声音信号的处理和定位运算;LCD屏提供人机交互界面,显示相关信息。其中,每个麦克风都连接一个前置放大电路,对信号进行放大以便于适配ADC采集。
图1 声音定位系统结构
(1)麦克风声音采集模块
实现声源定位,必须使用麦克风阵列以测量声波场并提取有关信息。系统采用CUI公司出品的CMA-4554PF-W型高灵敏度全向麦克风。麦克风得到的声信号所转化的电压信号不仅微弱,还有正、负之分,但STM32H7内部A/D转换器只能对正电压进行转换,因此需要在麦克风后连接前置放大器,并且设置直流偏置电压,才能让内部A/D转换器正确将接收的声音信号进行转化。MAX4466EXK-T芯片支持宽电压(2.4~5 V),STM32H743的标准工作电压为3.3 V,可直供给放大电路,因此将MAX4466EXK-T作为麦克风单元前置放大电路中的放大芯片。图2所示为麦克风单元及前置放大电路。
图2 麦克风单元及前置放大电路
(2)麦克风阵列设计
麦克风阵列中,最简单的结构是麦克风线性阵列,即麦克风单元线性排列。这种结构计算量最少,但仅能定位半个平面,因此本设计选用十字型分布[7]方法,为线性阵列加上2个辅助定位的麦克风单元。此设计可以在保留普通线性麦克风阵列计算量相对较少的条件下,提高线性麦克风阵列的定位角度,如二维平面360°定位角度。十字型分布的麦克风阵列中,3个麦克风单元构成线性阵列,用于声源定位,前后2个麦克风单元辅助定位、比较功率谱、判断声音处于线性阵列的前方或后方。麦克风阵列设计时,考虑到麦克风单元的间距太小会导致耦合度增加,且噪声对麦克风阵列的影响增大,从而影响声音定位的精确性;但麦克风单元的间距也不能过大,阵列设计中通常选择麦克风单元的距离小于接收声波的半个波长。一般人正常说话的频率范围为100~1 200 Hz,而声速一般为340 m/s,因此间距d<14.17 cm。同时考虑麦克风单元体积的限制,故将麦克风阵列中麦克风单元的间距定为12 cm。麦克风阵列分布示意如图3所示。
图3 麦克风阵列分布示意图
(3)MCU最小系统
该研究中的声音定位系统需要充分考虑MCU的功耗、性能、拓展性和实时性等,所以选择STM32H743VI完成A/D转换、信号处理、声音源定位、信息传输等任务。STM32H743VI核心板结构如图4所示。
图4 STM32H743VI核心板结构
当声音信号自远场发散,在有背景噪音的情况下被2个传感器MIC1和MIC2分别检测时,可以对其进行数学建模:
式中:s1(t)为声音信号;n1(t)、n2(t)均为随机噪声;α表示信号到达2个MIC前后的衰减比。只要估算出MIC1和MIC2接收到信号的时间之差D,就可以通过D计算信号相对于2个传感器间的位置。
声音信号定位中较为常用的估计时间差的算法为广义互相关(GCC)算法。真实环境下,D和α是缓慢变化量。得到信号数学模型后,计算信号x1(t)、x2(t)的广义互相关函数:
式中,E表示数学期望,互相关的极大值出现在双麦时间差的位置上。将式(1)和式(2)带入式(3),信号s1(t)、n1(t)、n2(t)独立,展开得到式(4):
由互相关函数性质可知,τ=D时Rx1x2(τ)取得最大值。求出互相关函数波峰对应的τ值,记为τmax,由此得到2个麦克风之间信号到达的时间差D。
当声音信号自远场发散,在有背景噪音的情况下被2个传感器MIC1和MIC2分别检测时,测量该语音信号到达方向的模型如图5所示,最少需要2个麦克风组成线性阵列。
图5 远场原理示意图
图5中,A点表示远场的单个声源,由于声音发散自远场,到达麦克风时声波可以近似看做平行入射,带有箭头的线表示声音信号,a为2个麦克风之间的距离,d为声音到达2个麦克风之间的距离差,θ表示声信号的入射角度,根据几何关系得到式(5):
由于a已知,若MIC1和MIC2之间的时间差为τ,该环境下声速为c,则能确定到达方向θ,见式(6):
声音定位系统软件流程如图6所示。上电后,软件首先进行ADC、DMA和定时器的初始化,之后进行指定次数的ADC采样以及DMA传输,达到指定次数后,对所有信号做FFT变换,然后两两计算互谱密度,最后根据条件采用TDOA算法进行距离与角度的计算。
图6 软件流程
将麦克风单元与STM32H743核心板连接后采样,通过A/D转换器和DMA将得到的数据通过串口发送到上位机,借助串口助手打印。声源定位距离和角度测试结果见表1所列。
表1 声源定位测试
本文主要介绍了使用STM37H7及麦克风阵列的声源定位系统的构成,经测试,可以在STM32平台上完成以往基于传统PC平台的声源定位任务,并获得较好的结果。同时该方案还可以作为一种在室内实现高精度指向与定位的方案,为实现声源定位系统提供参考。