docs: strengthen initial round README
本项目基于 openvela / NuttX 构建端侧音频事件检测系统,实现数字麦克风实时采集、预处理 / MFCC 特征提取、TFLite Micro INT8 本地推理、后处理确认和本地告警。系统在无云端依赖条件下识别 cough 与 knock 两类音频事件,并通过 UART 串口日志和 GPIO LED 输出告警,满足初赛“采集 -> 识别 -> 告警”离线闭环要求。
cough
knock
background
selftest
file
live
LICENSE
NOTICE
PACKAGE_MANIFEST.md
hw:snddmic
[AED] event=...
v35
firmware/v35.img
1c0c34e39a78734ed7396bfff0209cb4bdb148c47b2ab9c63d988827ecb5d1c5
[AED] event=cough score=...
[AED] event=knock score=...
实时 [AED] event=... 串口输出用于展示事件触发过程,最终统计用于复现实验和评估记录。系统启动后会进行 2 秒噪声校准,安静背景测试应在启动阶段避免敲击、咳嗽和强噪声。
DMIC 采集 -> 立体声转单声道 / 重采样 -> 滑动窗口 -> MFCC 特征提取 -> TFLite Micro INT8 推理 -> 后处理确认 / 误报抑制 -> 串口日志和 LED 告警 -> 最终 emitted events 人类动作计数
先检查录音链路:
arecord -D hw:snddmic -r 48000 -f 16 -c 2 -d 3 /tmp/aed_test.wav
如果系统支持回放,可继续检查 WAV 是否可播放:
aplay -D hw:audiocodec /tmp/aed_test.wav
selftest:
aed --mode selftest --backend tflm --no-led
通过标准:输出 SMOKE_OK,程序正常结束,对应日志为 demo/logs/selftest.log。
SMOKE_OK
demo/logs/selftest.log
安静背景测试:
aed --mode live -D hw:snddmic -r 48000 -c 2 -d 30 --backend tflm
通过标准:最终 emitted events 中 cough=0、knock=0,对应日志为 demo/logs/live_background.log。
emitted events
cough=0
knock=0
demo/logs/live_background.log
实时事件演示:
aed --mode live -D hw:snddmic -r 48000 -c 2 -d 60 --backend tflm
通过标准:咳嗽时出现 [AED] event=cough,敲击时出现 [AED] event=knock,LED 状态同步变化。pure cough、pure knock 和 mixed 场景日志分别位于 demo/logs/live_cough.log、demo/logs/live_knock.log、demo/logs/live_mixed.log。
[AED] event=cough
[AED] event=knock
demo/logs/live_cough.log
demo/logs/live_knock.log
demo/logs/live_mixed.log
WAV/file 复现:
aed --mode file --input /tmp/aed_test.wav --backend tflm --no-led
提交包提供样例 WAV:
demo/wav_samples/background_sample.wav demo/wav_samples/cough_sample.wav demo/wav_samples/knock_sample.wav
预期事件输出示例:
[AED] event=cough score=... [AED] event=knock score=... emitted events: cough: ... knock: ...
stopped ret=0
background: 9
demo/logs/file_background.log
emitted events: cough=0, knock=0
emitted events: cough=5, knock=0
emitted events: cough=0, knock=5
emitted events: cough=2, knock=2
demo/logs/stability_30min.log.txt
说明:stability_30min.log.txt 是非静音压力 / 长时间运行记录,用于证明持续运行稳定性,不作为静音误报率统计。安静背景误报统计以 demo/logs/live_background.log 为准。
stability_30min.log.txt
详细评估数据见 docs/测试评估报告.md,端到端设计见 docs/端到端设计说明.md,告警映射见 docs/输出告警说明.md。
docs/测试评估报告.md
docs/端到端设计说明.md
docs/输出告警说明.md
arecord
/tmp/aed_test.wav
--no-led
以下为提交包根目录结构:
README.md LICENSE NOTICE PACKAGE_MANIFEST.md source/audio_event_detector/ 源码、模型文件和 openvela/NuttX 构建配置 firmware/ v35 固件镜像和 SHA256 docs/ 复现、技术、测试、数据和告警说明 demo/logs/ 构建日志和板端串口日志 demo/videos/ 演示视频 demo/wav_samples/ file 模式样例 WAV demo/dashboard/ 浏览器演示辅助页 scripts/ 板端测试命令和串口记录说明
docs/初赛复现说明.md
docs/初赛技术报告.md
docs/数据集说明.md
基于 openvela/NuttX 的端侧离线音频事件检测系统,支持 cough/knock 两类事件,完成 DMIC 采集、MFCC、TFLite Micro INT8 推理与串口/LED 告警。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
基于 openvela 的本地音频事件检测系统
本项目基于 openvela / NuttX 构建端侧音频事件检测系统,实现数字麦克风实时采集、预处理 / MFCC 特征提取、TFLite Micro INT8 本地推理、后处理确认和本地告警。系统在无云端依赖条件下识别
cough与knock两类音频事件,并通过 UART 串口日志和 GPIO LED 输出告警,满足初赛“采集 -> 识别 -> 告警”离线闭环要求。初赛要求对应关系
cough、knock两类有效事件,另含background背景类selftest、file、live三种模式和对应日志LICENSE、NOTICE、PACKAGE_MANIFEST.md核心功能
hw:snddmic采集 48 kHz / 16-bit / stereo PCM。background、cough、knock。[AED] event=...,GPIO LED 提供可视化提示。selftest、file、live三类运行方式。硬件和固件环境
hw:snddmicv35firmware/v35.img1c0c34e39a78734ed7396bfff0209cb4bdb148c47b2ab9c63d988827ecb5d1c5事件定义和触发口径
backgroundcough[AED] event=cough score=...,LED0 状态变化knock[AED] event=knock score=...,LED1 状态变化实时
[AED] event=...串口输出用于展示事件触发过程,最终统计用于复现实验和评估记录。系统启动后会进行 2 秒噪声校准,安静背景测试应在启动阶段避免敲击、咳嗽和强噪声。端到端链路
快速复现
先检查录音链路:
如果系统支持回放,可继续检查 WAV 是否可播放:
selftest:
通过标准:输出
SMOKE_OK,程序正常结束,对应日志为demo/logs/selftest.log。安静背景测试:
通过标准:最终
emitted events中cough=0、knock=0,对应日志为demo/logs/live_background.log。实时事件演示:
通过标准:咳嗽时出现
[AED] event=cough,敲击时出现[AED] event=knock,LED 状态同步变化。pure cough、pure knock 和 mixed 场景日志分别位于demo/logs/live_cough.log、demo/logs/live_knock.log、demo/logs/live_mixed.log。WAV/file 复现:
提交包提供样例 WAV:
预期事件输出示例:
板端验证摘要
SMOKE_OK,stopped ret=0demo/logs/selftest.logbackground: 9,无 cough / knock 事件,stopped ret=0demo/logs/file_background.logemitted events: cough=0, knock=0,stopped ret=0demo/logs/live_background.logemitted events: cough=5, knock=0,stopped ret=0demo/logs/live_cough.logemitted events: cough=0, knock=5,stopped ret=0demo/logs/live_knock.logemitted events: cough=2, knock=2,stopped ret=0demo/logs/live_mixed.logstopped ret=0demo/logs/stability_30min.log.txt说明:
stability_30min.log.txt是非静音压力 / 长时间运行记录,用于证明持续运行稳定性,不作为静音误报率统计。安静背景误报统计以demo/logs/live_background.log为准。性能和资源摘要
cough、knock详细评估数据见
docs/测试评估报告.md,端到端设计见docs/端到端设计说明.md,告警映射见docs/输出告警说明.md。异常处理和稳定运行
hw:snddmic是否存在,确认 AUDIO 配置已启用,并确认没有其他进程占用录音设备。arecord重新采集/tmp/aed_test.wav,确认录音不是全静音或严重削波。selftest与 background 场景正常,再分别测试 cough 和 knock。--no-led禁用 GPIO LED,串口[AED] event=...仍作为主要可验证告警输出。提交包目录
以下为提交包根目录结构:
详细文档
docs/初赛复现说明.md:硬件环境、固件信息、运行步骤、通过标准和常见问题。docs/测试评估报告.md:功能验证表、训练摘要、性能和资源数据。docs/初赛技术报告.md:系统设计、模型和工程实现说明。docs/端到端设计说明.md:采集、特征、推理、后处理和输出链路。docs/输出告警说明.md:UART 输出、LED 映射和--no-led行为。docs/数据集说明.md:数据来源、类别和训练 / 验证 / 测试划分说明。