demos/ 下每个功能一个脚本,三端(Python / Linux C / OpenVela 模拟器)均可一键运行:
cd demos
./demo_a_class_extend_c.sh # A 类别扩展:5 类检测(Linux C)
./demo_b_robustness_c.sh # B 鲁棒性:多 SNR 对比
./demo_c_model_opt_c.sh # C 模型优化:float32 vs INT8
./demo_e_alarm_report_c.sh # E 远程告警上报(HTTP + MQTT)
./demo_f_keyword_c.sh # F 关键词识别(救命/帮助/报警)
./demo_openvela_all.sh # OpenVela 模拟器:A/B/C/F 一键
噪声鲁棒性(增强模型 vs clean):10 dB 下 43% → **100%**、5 dB 下 20% → **96%**、0 dB 下 20% → **54%**,噪声环境平均提升 **+20.9%**(详见 python/results/noise_robustness_report.txt)。
Lightweight Offline Audio Event Detection for OpenVela
离线端侧音频事件检测系统 — 面向 OpenVela/NuttX 嵌入式部署的轻量级音频分类与告警方案。
支持 5 类音频事件 检测:
background(背景噪声)、cough(咳嗽)、glass_break(玻璃破碎)、baby_cry(婴儿哭声)、dog_bark(狗叫声),并支持关键词识别(救命/帮助/报警)、INT8 量化推理与 MQTT/HTTP 远程告警上报。系统架构
完整闭环:采集 → 预处理/特征提取 → 模型识别 → 告警,检测全流程在端侧完成;远程告警上报(HTTP/MQTT)为可选能力。
目录结构
快速开始
方式零:一键演示脚本(推荐)
demos/下每个功能一个脚本,三端(Python / Linux C / OpenVela 模拟器)均可一键运行:Python 端对应脚本:
demo_a_class_extend.py、demo_b_robustness.py、demo_c_model_opt.py、demo_e_alarm_report.py、demo_f_keyword.py。详见demos/README.md。方式一:Python 训练 Pipeline
方式二:Linux C 独立演示
方式三:OpenVela 模拟器端侧运行
模型设计
特征提取
网络结构
math.h类别定义与触发口径
backgroundcoughinfoglass_breakcriticalbaby_crywarningdog_barkwarning测试结果
OpenVela Goldfish ARM64 模拟器验证
5 个测试 WAV 均在端侧模拟器上完成全流程推理(增强模型,实测全部正确):
一键复现:
demos/demo_openvela_all.sh(完整日志见其输出的 openvela_all_smoke.log)。模型性能
评估结果
python/results/evaluation.txt,混淆矩阵全对角)。python/results/noise_robustness_report.txt)。python/results/int8_quantization_report.txt)。python/results/keyword_eval_report.json)。python/results/alarm_demo_report.json)。延迟与资源占用
计算量分析
C 端部署模型(40→32→5):
内存占用
延迟测试
Python 离线测量(NumPy,1000 次迭代实测)
端侧延迟(OpenVela Goldfish ARM64 模拟器)
模型体积
model_weights.hmodel_weights_int8.htiny_mlp_5class.npztiny_mlp_5class_augmented.npz硬件迁移方案
当前模拟器版本使用 WAV 文件模拟麦克风输入、
printf输出告警。迁移到 DshanPixVela-DevKit V1 等硬件时,只需替换两个模块:wav_reader.cmic_i2s_reader.c或mic_pdm_reader.cprintf("[ALERT]")gpio_set_value(LED_PIN, 1)或buzzer_on()以下核心模块保持不变:
feature_extractor.c— 特征提取model_infer.c— 模型推理model_weights.h— 模型权重详见
docs/migration_to_devkit.md。端侧闭环流程
技术栈
math.h/stdio.h/stdlib.h)许可证
本项目用于音频事件检测比赛,所有代码和文档可自由用于学习和竞赛目的。ESC-50 数据集遵循其原始许可证(CC BY-NC-SA 3.0)。