final: select V3 defense deck and align official naming
CCF 开源创新大赛 openvela 赛题决赛作品。
系统面向家庭看护与本地安全提醒,在设备侧完成音频采集、特征提取、事件识别和告警决策。检测链路不依赖云端,网络仅用于异步发送事件元数据。
输入为 16 kHz、单声道、PCM16 音频,输出五类事件:
background
cough
glass_break
door_knock
baby_cry
运行时由 C 语言前端、int8 YAMNet 嵌入模型、线性分类头和流式事件状态机组成。状态机负责滑动上下文、类别阈值、连续窗口确认、事件合并与冷却控制。
最终困难负样本分类头在 ESC-50 folds 1-4 与 FSD50K development/selection 上完成选择;FSD50K audit 不参与训练或选择。fold 5 曾用于历史基线,当前结果按“最终头回归审计”报告:
reports/final/yamnet_hard_negative_head_fold5_audit.json
reports/final/yamnet_hard_negative_head_development.json
reports/final/yamnet_embedding_int8_export.json
reports/final/yamnet_paired_host_benchmark.json
reports/final/tflm_compatibility.json
reports/final/c_tflm_one_hour_stability.json
reports/final/kws_on_off_stop_int8.json
鲁棒性中的远场条件为确定性信号模拟,不是物理距离实测。FSD50K 采用片段级弱标签;development、selection、audit 按原始来源隔离。旧分类头历史上曾在完整 FSD50K 子集运行,因此当前 audit 是本轮实验的来源隔离审计,但不是整个项目历史上的首次未见数据。
PCM16 音频 -> C log-mel 前端 -> int8 YAMNet / TFLite Micro -> 1024 维嵌入上下文聚合 -> 五类线性分类头 -> 阈值、投票、事件合并与冷却 -> 本地告警 + JSONL/串口日志 + 异步 HTTP 元数据
核心检测线程不等待网络。远程上报使用有界队列;网络不可用时,检测和本地告警继续运行。
开发和验证环境为 WSL2 Ubuntu-26.04。纯 C 基础回归:
Ubuntu-26.04
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j2 ctest --test-dir build --output-on-failure
真实 TFLite Micro 兼容验证:
bash scripts/build_tflm_host.sh source /root/.venvs/openvela-aed-teacher/bin/activate AED_RUN_TFLM_INTEGRATION=1 PYTHONPATH=. \ python -m pytest -q tests/test_tflm_yamnet_compatibility.py
最终分类头的 C/Python 数值一致性:
source /root/.venvs/openvela-aed-final/bin/activate PYTHONPATH=. python -m tools.final.verify_yamnet_head_parity
详细依赖和从零复现步骤见 docs/reproducibility.md 与 docs/final/。
docs/reproducibility.md
docs/final/
独立关键词任务使用 silence/unknown/on/off/stop 五类 DS-CNN,与音频事件模型分开训练和评测。Speech Commands v0.02 按说话人隔离,结果和边界见 docs/final/keyword_spotting_protocol_zh.md。
silence/unknown/on/off/stop
docs/final/keyword_spotting_protocol_zh.md
deliverables/final/presentation/openvela_aed_final_defense.pptx
deliverables/final/report/openvela_aed_final_report.pdf
.docx
deliverables/final/video/openvela_aed_final_demo.mp4
deliverables/final/manual/deployment_and_demo_guide_zh.md
deliverables/final/executable/README_zh.md
决赛全量包中的 Linux x86-64 可执行目录提供 aed_demo、aed_remote_demo、冻结模型与样例音频;无需 Python 即可运行基础 C 检测演示。最终包由 scripts/package_final_submission.py 按官方材料类别白名单生成,并在 manifest 中记录仓库地址、提交哈希和每个文件的 SHA-256。
aed_demo
aed_remote_demo
scripts/package_final_submission.py
openvela/aed_openvela_engine.c 提供两条可配置路径:
openvela/aed_openvela_engine.c
mlearning/tflite-micro
高精度路径支持外部 PSRAM arena、采集 XRUN 复位、运行统计、本地告警和异步遥测。模型提供器由冻结的 TFLite 文件生成,并在构建时校验 SHA-256。
当前没有真实 openvela 开发板,因此仓库中的构建、时延、稳定性和 HTTP 结果均标注为 WSL2 主机证据,不表述为板端实测;真实功耗和开发板加分项尚未申报完成。
include/aed/
src/
src/tflm/
host/tflm/
openvela/
tools/final/
tests/
models/final/
reports/final/
项目自有源码采用 MIT 许可证。TensorFlow Lite Micro、YAMNet、ESC-50、FSD50K 和 Speech Commands 等第三方组件、模型与数据保持各自许可证;来源、版本、哈希和署名要求在 NOTICE、数据清单及决赛技术报告中列明。大体积训练数据不进入 Git 仓库。
NOTICE
离线本地音频事件检测系统,支持咳嗽声与玻璃破碎声识别,包含纯 C 推理核心、WSL2 可复现验证、openvela 移植代码、评估报告与初赛交付文档。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
基于 openvela 的本地音频事件检测系统
CCF 开源创新大赛 openvela 赛题决赛作品。
系统面向家庭看护与本地安全提醒,在设备侧完成音频采集、特征提取、事件识别和告警决策。检测链路不依赖云端,网络仅用于异步发送事件元数据。
检测能力
输入为 16 kHz、单声道、PCM16 音频,输出五类事件:
backgroundcoughglass_breakdoor_knockbaby_cry运行时由 C 语言前端、int8 YAMNet 嵌入模型、线性分类头和流式事件状态机组成。状态机负责滑动上下文、类别阈值、连续窗口确认、事件合并与冷却控制。
决赛结果
最终困难负样本分类头在 ESC-50 folds 1-4 与 FSD50K development/selection 上完成选择;FSD50K audit 不参与训练或选择。fold 5 曾用于历史基线,当前结果按“最终头回归审计”报告:
reports/final/yamnet_hard_negative_head_fold5_audit.jsonreports/final/yamnet_hard_negative_head_development.jsonreports/final/yamnet_embedding_int8_export.jsonreports/final/yamnet_paired_host_benchmark.jsonreports/final/tflm_compatibility.jsonreports/final/c_tflm_one_hour_stability.jsonreports/final/kws_on_off_stop_int8.json鲁棒性中的远场条件为确定性信号模拟,不是物理距离实测。FSD50K 采用片段级弱标签;development、selection、audit 按原始来源隔离。旧分类头历史上曾在完整 FSD50K 子集运行,因此当前 audit 是本轮实验的来源隔离审计,但不是整个项目历史上的首次未见数据。
数据流
核心检测线程不等待网络。远程上报使用有界队列;网络不可用时,检测和本地告警继续运行。
主机验证
开发和验证环境为 WSL2
Ubuntu-26.04。纯 C 基础回归:真实 TFLite Micro 兼容验证:
最终分类头的 C/Python 数值一致性:
详细依赖和从零复现步骤见
docs/reproducibility.md与docs/final/。独立关键词任务使用
silence/unknown/on/off/stop五类 DS-CNN,与音频事件模型分开训练和评测。Speech Commands v0.02 按说话人隔离,结果和边界见docs/final/keyword_spotting_protocol_zh.md。决赛交付入口
deliverables/final/presentation/openvela_aed_final_defense.pptxdeliverables/final/report/openvela_aed_final_report.pdf与.docxdeliverables/final/video/openvela_aed_final_demo.mp4deliverables/final/manual/deployment_and_demo_guide_zh.mddeliverables/final/executable/README_zh.md决赛全量包中的 Linux x86-64 可执行目录提供
aed_demo、aed_remote_demo、冻结模型与样例音频;无需 Python 即可运行基础 C 检测演示。最终包由scripts/package_final_submission.py按官方材料类别白名单生成,并在 manifest 中记录仓库地址、提交哈希和每个文件的 SHA-256。openvela 接入
openvela/aed_openvela_engine.c提供两条可配置路径:mlearning/tflite-micro组件。高精度路径支持外部 PSRAM arena、采集 XRUN 复位、运行统计、本地告警和异步遥测。模型提供器由冻结的 TFLite 文件生成,并在构建时校验 SHA-256。
当前没有真实 openvela 开发板,因此仓库中的构建、时延、稳定性和 HTTP 结果均标注为 WSL2 主机证据,不表述为板端实测;真实功耗和开发板加分项尚未申报完成。
目录
include/aed/、src/src/tflm/、host/tflm/openvela/tools/final/tests/models/final/reports/final/docs/final/许可与数据
项目自有源码采用 MIT 许可证。TensorFlow Lite Micro、YAMNet、ESC-50、FSD50K 和 Speech Commands 等第三方组件、模型与数据保持各自许可证;来源、版本、哈希和署名要求在
NOTICE、数据清单及决赛技术报告中列明。大体积训练数据不进入 Git 仓库。