基于Unihiker K10构建实时音频分类系统,可检测并可视化家庭声音,提供便捷性与安全性
我叫卡洛,是一名计算机科学老师。几周前,UNIHIKER向我寄来了一些K10教学板,供我在学校开展一个项目。在本学年的最后几天里,我将两块K10教学板送给了我校的两名学生安德烈亚和马里奥,他们是我所任教的中学一年级的学生。
我向他们展示了K10的功能以及一些使用它的应用实例。安德烈亚和马里奥用了一周时间研究K10,之后我们共同头脑风暴,确定了一个开发项目。
我们曾考虑开发一个系统,帮助听力受损的人。K10主板始终在监听,一旦检测到特定声音,就会闪烁LED灯,并在屏幕上显示该声音的类型,例如门铃声或手机铃声等。
我们使用 Edge Impulse 在我们的电路板上实现了基于人工智能的声音识别系统。
我们用了什么?
使我们能够以极少的努力开发出复杂系统的电路板是UNIHIKER的K10。这是一款真正强大的电路板,尽管价格实惠,却集成了大量功能。例如:
•MCU:ESP32-S3
•SRAM:512KB
•闪存:16MB
•Wi-Fi:IEEE 802.11b/g/n
•蓝牙
•温湿度传感器
•环境光传感器
•三轴加速度传感器
•显示屏:2.8英寸 240×320彩色LCD
•摄像头:200万像素
•MEMS麦克风
•扬声器:2W
•RGB LED
•TF卡插槽
因此,我认为它非常适合用于物联网实验室,因为板载传感器数量众多且种类丰富,从而减少了对外部连接和库配置的需求。
此外,UNIHIKER K10 在计算机科学实验室中也可发挥重要作用。它可通过 UNIHIKER MindPlusPlus 进行编程,MindPlus 是一款基于 Scratch 的软件,支持人工智能和物联网功能,即使没有编程经验的学生也能轻松使用。安装所需库后,还可以使用 Arduino IDE IDE 进行编程,最后也可以通过 MicroPythonPython 进行编程。这种极高的通用性使其成为教学计算机科学的实用工具,从使用 Scratch Scratch 编程学习基础概念,到经典的 Arduino C 语言编程,再到 Python Python 编程,能够应对更复杂的问题,甚至实现简单的 AI AI 应用。
它有什么作用?
Unihiker AI声音助手是一款“智能耳朵”,可持续监测周围环境。通过Edge Impulse TinyML模型,它能够识别各种家庭声音,例如门铃声、手机铃声、对讲机声,甚至玻璃破碎的声音。当检测到显著声响时,设备会立即通过其2.8英寸屏幕上的专用用户界面以及高亮度闪烁的RGB LED灯提醒用户。
它为何被创建?
该项目源于对无障碍需求的考量。对于听力障碍者而言,错过门铃或电话呼叫可能成为一大障碍。该设备通过将音频信号转换为清晰且可操作的视觉提示,有效弥补了这一差距。同时,它还具备安防监控功能,能够实时检测玻璃破碎等紧急声响。
它是如何工作的?
系统从Unihiker内置的麦克风捕获高质量音频数据。它以低功耗的“监听”模式运行,实时监测环境音量。一旦达到特定音量阈值,系统便会将数据存储在音频缓冲区中,并在设备本地执行**神经网络推理**。
开发流程
•数据采集:我们使用Unihiker内置的麦克风,在不同声学环境中录制了各种家庭声音样本(如门铃、电话、对讲机、玻璃破碎声)。
•模型训练:数据通过Wi-Fi上传至Edge Impulse,在那里我们进行了数字信号处理(MFE - 基于梅尔频率的能量)并训练了一个神经网络分类器。
•固件集成:我们将导出的Edge Impulse库集成到Arduino IDE中,实现了I2S数据采集循环以及用于管理视觉警报的逻辑系统。
优化:我们优化了缓冲区管理和推理时序,以确保实时响应且不导致系统崩溃。
故障排除与遇到的错误
在开发过程中,我们遇到了一些技术难题,这些挑战有助于优化最终的代码:
•I2S读取阻塞:最初,系统在音频采集过程中会卡住。我们通过调整i2s_read的超时时间并优化采集窗口来解决此问题。
•内存分配(RAM):AI模型和音频缓冲区需要大量内存。我们使用 `ps_malloc` 将缓冲区分配移至 PSRAM,以防止 ESP32-S3 上出现“内存不足”错误。
•误报:背景噪音有时会触发助手。我们引入了“环境噪音”基准线和动态“灵敏度偏移量”,以确保AI仅分析显著高于环境噪音水平的声音。
•模型频率不匹配:一个常见问题是训练模型(通常为16kHz)的采样率与麦克风设置不匹配。我们通过 `i2s_set_clk`` 并结合 `EI_CLASSIFIER_FREQUENCY``` 常量来同步此问题。
•UI刷新延迟:快速更新画布导致画面闪烁。我们实现了一种状态检查逻辑(`currentSoundIndex`),仅在真正发生新事件时才重新绘制屏幕。
结论
我们已经看到UNIHIKER K10是一款具有巨大潜力的电路板。它通过一项动手实践的活动,非常有效地帮助大家开始探讨人工智能。完成这个项目的学生表现非常出色,他们几乎完全独立工作,根据所获得的建议,并通过在线研究解决了项目过程中遇到的各种问题。
本文编译自hackster.io





