APP下载

基于TDOA的声源定位装置的设计与实现

2024-08-01薛欣

电子产品世界 2024年4期

关键词:声源定位;麦克风阵列;STM32;信号处理

中图分类号:TN929.11 文献标识码:A

0 引言

近年来,随着多媒体和信号处理技术的快速发展,声源定位算法也日益成熟[1]。声源定位在军事[2]、视频电视会议、智能交通以及智能机器人等领域的应用越来越广泛。因此,在复杂环境中如何准确定位声源位置已成为人们研究的关键问题[3]。

传统的声音信号精确实时定位的主要方法是麦克风阵列,又称为阵列信号处理技术。它具有隐蔽性好、语音噪声消除、抗干扰性强、声源跟踪和定位准确等优点[4],在多个领域中被广泛应用。麦克风阵列根据定位原理可分为3 类:基于麦克风接收信号的加权和相位定位[5]、基于麦克风接收信号的幅值和频率定位[6] 以及基于不同麦克风接收信号的时间差定位[7]。基于麦克风接收信号的加权和相位定位技术需要对采集的信号进行加权分析,计算耗费时间长,并且需要预分离处理声音信号和噪声。基于麦克风接收信号的幅值和频率定位方法可以精确定位,但数据处理的复杂度高。基于不同麦克风接收信号的时间差定位技术具有计算复杂度较低、速度较快等特点,但国内相关产品较少,且大多仍处于仿真阶段。因此,研究以嵌入式STM32 微处理器为核心的声源定位系统具有重要意义。

本文采用了最新的STM32 作为核心处理器,开发了一种基于到达时间差(time difference of arrival,TDOA)的声源定位装置。该装置能够实时定位并显示声源的位置。定位系统由声音采集模块接收声音信号,利用STM32 微处理器对采集的信号进行处理,最终实现声源位置的定位和实时显示功能。

1 TDOA工作原理

本文主要利用了基于不同麦克风接收信号的TDOA 定位技术。这种技术分为两个主要步骤:首先,估计声音的TDOA,从中获得传声器阵列中阵元之间的声延迟;其次,利用获取的声音时间差,结合已知的传声器阵列的空间位置,进一步确定声源的位置。这种方法的计算量通常较小,且有利于实时处理,因此在语音信号的声源定位中具有重要作用。

2 硬件电路设计

本文以STM32 作为核心处理器,开发了一种基于不同麦克风接收信号的时间差的实时声源定位装置。声源定位装置结构框图如图2 所示。

本文的硬件系统包括电源、声源、麦克风、前置电路、输入接口、微控制器和显示。电源为整个电路系统提供所需的电能;麦克风采集声源信号,并经过前置电路处理后传送至微控制器;微控制器对接收到的信号进行数据处理和分析,以确定声源的位置;微控制器将声源的具体位置实时显示在有机发光二极管(organic light-emitting diode,OLED)显示屏上,实现声源的定位功能。

2.1 电源电路

电源电路是开发板的生命线,为整个系统提供能量,这是其正常运行的基础。本设计的电源电路如图3 所示。声源定位装置采用USB 接口供电,电源的引脚将与5 V 电压连接,点亮电源指示灯。5 V电压通过低压差线性稳压芯片(LD39050PU33R)转换为3.3 V 的电压,向STM32 芯片及外围电路供电。LD39050PU33R 是低压差线性稳压器(lowdropout regulator,LDO)的芯片,固定输出3.3 V 电源,最大输出电流为500 mA。在稳压芯片的输入端和输出端接有4 个电容进行滤波,分别滤除高频和低频信号的干扰,确保输出电压的稳定。

2.2 麦克风阵列设计

麦克风可以将声音信号转换成电信号,然后以电压的形式输出,其性能直接影响输出信号的质量。本文选取驻极式小话筒,它具有体积小、灵敏度高、成本低、噪声低等特点,频率响应范围为20 ~16 000 Hz,能够满足设计精度和稳定性的要求。

2.3 前置电路模块

由于麦克风采集的输出信号的电压是毫伏级的,并且相邻两个采样点之间的信号变动较小,因此必须使用放大电路对麦克风的输出信号进行放大,使放大后的信号处在模拟数字转换器(analogto digital converter,ADC)的信号采集范围内。

本文选用了LM386 放大电路,它是一种功率放大器集成电路,专门用于低功耗电源。LM386 内置的增益为20 dB,但通过适当选择pin1 和pin8 脚位之间的电容,可以将增益提高至最高200 dB。该芯片将电池作为供电源,电压范围为4 ~ 12 V。在没有输入信号时,它的静态电流仅为4 A,而且失真较低。

2.4 信号采集模块

信号采集模块中的信号采集电路是通过引脚PA0、PA1、PA2 接入芯片内部的三路ADC 中来采集放大后的声音信号。

2.5 最小系统

本文中的STM32F411RET6 处理器最小系统包括电源电路、晶振电路、复位电路以及配置模式电路。电源电路确保供电电压为3.3 V,5 V 电压通过低压差线性稳压芯片(LD39050PU33R)转换为3.3 V 的电压。晶振电路采用8 MHz 外部晶振提供稳定的时钟信号。复位电路采用低电平、上电复位的设计。配置模式电路可以选择STM32 的启动方式。

2.6 显示模块

显示电路采用OLED 模块, 模块内部集成了显示驱动芯片SD1306, 显示尺寸为0.96 in(1 in ≈ 2.54 cm),显示分辨率为128×64。为了提高显示屏的刷新率,采用了串行外围设备接口(serial peripheral interface,SPI) 与STM32芯片连接的方式。对应的引脚为PA4、PA5、PA6、PA7,引脚PB7 作为复位信号,引脚PC7 作为命令/数据选择信号。

3 软件算法设计

本文以STM32F411RET6 处理器为核心,设计了麦克风阵列声源定位装置的软件。软件设计结构框图如图4 所示,其中,DMA 为直接存储器访问,FFT 为快速傅里叶转换。软件开发过程中,使用了意法半导体公司(ST)的STM32CubeMx 和安谋国际科技股份有限公司(ARM)的MDK-ARM 工具。STM32CubeMx 提供了图形化的芯片配置工具,简化了目标选择、引脚分配、外设配置和时钟配置等步骤,并自动生成了初始化代码和应用程序的工程框架。而MDK-ARM 集成了Keil uVision5,提供了完善的调试和编译功能。软件实现主要包括两个部分:一是STM32CubeMX 的配置,涉及芯片及外设的基本设置;二是MDK-ARM 程序编写,包括具体的应用程序代码编写,以实现系统的功能和特性。

3.1 STM32CubeMX 配置

STM32CubeMX 工具大大降低了编程难度。STM32CubeMX 软件的设置流程如下:首先,选择STM32F411RET6 作为主控芯片,并设置外部高速时钟源为8 MHz。其次,启用ST-Link 调试口,并配置PA13 和PA14 引脚。再次,启用ADC 功能,以便采集声音信号,并将相应的引脚设置为PA0、PA1、PA2。最后,开启SPI1 端口,并配置硬件NSS 端口,以便连接并驱动OLED 显示屏,相关端口设置为PA4、PA5、PA6 和PA7。

3.2 MDK-ARM 程序编写

MDK-ARM 提供了源代码编辑、编译、下载调试和仿真等多种功能支持。需编写的程序主要包括ADC 采集、OLED 显示、TDOA 算法实现以及Chan 算法实现等模块,这些模块的设计使得系统具备了声源定位的基本功能。MDK-ARM 的强大功能为开发者提供了便利,使得软件开发工作更加高效和便捷。

4 测试分析

将单片机电源断开,使用杜邦线将3 个麦克风传感器连接在STM32 单片机的引脚上,3 个麦克风的距离固定不变。声源部分利用细绳将音响按照规定路线以一定速度向前移动,开启单片机电源即可运行麦克风传感器,从而记录声源到达不同麦克风的时间,计算出时间差。通过STM32 单片机计算角度和距离,最后在显示屏上显示出声源位置。测试结果如表1 所示,结果表明该装置实现了声源的准确定位。

5 结论

本文介绍了一种基于TDOA 的声源定位装置的设计与实现过程。结果表明,该定位装置通过传感器位置和声音时间差,成功估计声源的横坐标和纵坐标。这一方法在声源定位领域具有广泛的应用前景,可以提高定位精度。