2024年9月-2024年11月

"盟升杯"电子设计竞赛

智能声源识别定位系统

硬件系统开发STM32编程语音控制
盟升杯电子设计竞赛项目封面
点击查看大图

项目资源

由于代码文件较多且结构复杂,完整的软件源码已上传至GitHub仓库,包含Keil代码、设计报告、MATLAB仿真代码、Python分析代码等。

查看完整源码

团队信息

指导方

电子科学与工程学院科协

盟升电子公司专家

团队成员

  • 我 队长
  • 迪里亚尔江·阿司木江(计算机科学与工程学院)- 算法优化
  • 热法提·买买提热夏提(电子科学与工程学院) - 电路焊接与调试

项目背景与要求

本项目源于2024年盟升杯高年级组电子设计竞赛D题:"智能声源识别定位系统"。竞赛要求设计并制作一个能够识别和定位声源的智能系统,在预设的测量区域内实现精确的声源定位与语音识别功能。

具体任务要求

  • 硬件约束:麦克风阵列形式可自行设计,但麦克风个数不能超过5个,整个声源定位系统的尺寸不能超过测量区域
  • 定位功能:系统能够在5个预设区域(A、B、C、D、E)内准确识别声源位置,定位误差不超过±5cm
  • 语音识别:系统设置为"识别模式"时,能够识别区分4条指令:"打开灯光"、"关闭灯光"、"打开空调"、"关闭空调"
  • 信号输入:指令通过手机、蓝牙音箱播放或自制播放设备输入
  • 结果显示:识别结果通过液晶屏幕在系统端进行实时显示

解决方案

针对竞赛要求,我们设计了基于STM32H750微控制器的智能声源识别定位系统。系统采用TDOA(时差定位)算法作为核心定位技术,通过四麦克风矩形阵列实现高精度声源定位,并集成ASR-PRO语音识别模块实现智能语音控制功能。

经过严格的理论仿真、硬件调试和系统测试,最终实现了定位精度±2cm的技术指标,超越了竞赛要求的±5cm标准,并在2024年盟升杯电子设计竞赛中获得三等奖的优异成绩。

核心技术方案

TDOA定位算法

基于时差原理,实现±2cm高精度定位,超越竞赛±5cm要求

四麦克风阵列

40cm×20cm矩形布局,优化几何结构提升定位精度

语音识别集成

离线识别4条智能家居控制指令,响应时间<100ms

实时信号处理

STM32H750 400MHz处理器,确保系统实时性能

系统架构设计

系统采用模块化设计思想,分为硬件采集层、算法处理层和应用控制层三个主要层次。硬件层负责声音信号的采集和预处理,算法层实现TDOA定位计算,应用层提供用户交互和设备控制功能。

信号采集模块

四个MAX9814麦克风构成矩形阵列,配合AD7606高精度ADC实现多通道同步采集

数据处理模块

STM32H750负责实时信号处理,运行TDOA算法计算声源位置坐标

语音识别模块

ASR-PRO模块实现语音命令识别,支持灯光、空调等设备的语音控制

算法设计与仿真

在进行硬件实现之前,首先通过Python分析了不同语音指令的信号特征,然后通过MATLAB仿真验证了TDOA(时差定位)算法的可行性,最后设计了ASR-PRO语音识别模块的控制逻辑。这一套完整的算法设计与仿真为硬件实现奠定了坚实的理论基础。

Python声音信号分析

使用librosa库对四条语音指令进行频域分析和特征提取,为后续算法设计提供数据支撑

python支持多种音频格式

Python声音信号分析结果

通过Python的librosa库对"打开灯光"、"关闭灯光"、"打开空调"、"关闭空调"四条指令进行了完整的信号特征分析。分析结果显示了不同指令在频域上的特征差异,为语音识别算法的参数调优和TDOA定位算法的设计提供了重要依据。

TDOA声源定位算法仿真

基于时差定位原理的核心算法实现,使用最小化误差的优化方法估计声源位置

matlab

MATLAB仿真验证结果

通过MATLAB进行了大量的仿真验证,测试了不同声源位置下的定位精度。仿真结果表明,TDOA算法在理想条件下能够实现±2cm的定位精度,完全满足竞赛要求的±5cm指标。

仿真分析总结
  • 在5个预设区域内进行了100次随机声源定位测试
  • 平均定位误差:1.8cm,最大误差:3.2cm
  • 算法收敛时间:平均15ms,满足实时性要求
  • 在噪声环境下(SNR>20dB)仍能保持较高精度

ASR-PRO语音识别控制

语音识别模块的核心控制代码,实现语音命令到设备控制的转换

cpp实时响应 < 100ms

ASR-PRO代码架构图

ASR-PRO语音识别模块采用状态机设计模式,通过硬件中断处理语音识别结果,实现了高效的语音命令解析和设备控制逻辑。

硬件设计与实现

msb.sections.hardware.description

系统采用四麦克风矩形阵列布局,通过精确的时间同步和信号处理,实现对声源位置的高精度定位。各硬件模块经过严格的电磁兼容性设计,确保在复杂电磁环境下的稳定工作。

核心处理器模块

  • STM32H750VBT6 微控制器,主频400MHz
  • Cortex-M7内核,支持浮点运算单元
  • 128KB Flash + 1MB RAM
  • 丰富的外设接口:SPI、I2C、UART、ADC等

声音采集与处理模块

  • 支持离线语音识别,响应时间<100ms
  • 内置降噪算法,适应复杂声学环境
  • 可自定义命令词,支持中文识别
  • 集成麦克风阵列接口

数模转换器模块

  • 16位分辨率,8通道同步采样ADC
  • 最高采样率200kSPS,满足声音信号处理需求
  • 内置可编程增益放大器,增益范围1-10倍
  • 差分输入设计,有效抑制共模噪声
  • SPI/并行接口,便于与STM32连接

麦克风阵列系统

采用四麦克风矩形阵列布局,阵列尺寸为40cm×20cm。通过精确的几何布局和时间同步,实现高精度的TDOA计算。每个麦克风均经过精确的相位校准,确保信号采集的一致性。 msb.sections.hardware.micArrayDesc2

阵列尺寸:40cm × 20cm

麦克风数量:4个 (矩形布局)

采样率:20kHz

定位精度:±2cm

外框的3D建模与打印

为了保护电路板和提供美观的外观,我们使用SOLIDWORKS进行了外框架的3D建模设计。设计考虑了麦克风阵列的布局、电路板固定、散热通风以及用户操作的便利性。完成建模后,我们在校园内使用免费的3D打印服务制作了外框架。

外框架3D建模展示 - SOLIDWORKS

完整系统实物

系统集成度高,结构紧凑。核心处理板、语音识别模块、麦克风阵列等各组件通过精心设计的PCB布局实现最优的信号传输和电磁兼容性。整机经过严格的环境测试,确保在不同温湿度条件下的稳定运行。

系统测试与结果

系统经过了严格的功能测试和性能验证,最终在盟升电子公司现场进行了正式测试并通过验收。定位精度、响应时间、语音识别准确率等关键指标均符合竞赛标准。由于现场规定禁止拍照摄影,因此无法提供正式演示视频,但保留了调试过程中的测试录像。

系统调试演示视频

以下是系统开发调试过程中录制的演示视频,展示了声源定位和语音识别功能的实际运行效果。

竞赛成绩

三等奖(奖金2,000RMB)

项目总结

这是我们团队首次涉足具有相当工程量的嵌入式项目。从零开始,我们投入了大量时间学习和实践。最大的挑战在于软件层面,特别是如何将 AD7606 采集到的多通道实时数据,无缝地送入 TDOA 定位算法中进行处理。尽管我们成功驱动了所有硬件模块,并实现了稳定的语音识别功能,但由于在 ADC、DMA 的中断处理及不同代码库融合上的经验不足,最终未能完成定位功能的联调。一个多月的全力投入,无数个深夜的调试与探索,是一段充满挑战又收获满满的旅程。我们没有因为困难而放弃,而是将所有精力倾注于此,在有限的时间里边学边做,体验了从理论到实践的完整过程。虽然最终系统未能实现全部功能,但我们搭建了完整的硬件系统,攻克了大部分软件难题,更重要的是,收获了宝贵的团队协作经验和解决复杂工程问题的能力。我们为已完成的部分感到自豪,也为留下的遗憾感到激励。