Direction-of-arrival classifier for emergency-vehicle sirens, running on the Infineon PSOC Edge E84 AI Kit (Cortex-M55 + Ethos-U55). EESTech LC Aachen hackathon submission.
mics → log-mel (M55, CMSIS-DSP) → DS-CNN int8 (Ethos-U55) → JSON over UART → WebSerial scene
Trained Keras DS-CNN, quantized int8x8 via dcmc + ml-coretools (TFLite + Vela), Ethos-U55 NPU at ~10 Hz.
| Input | Output | Test acc |
|---|---|---|
| 2-ch PDM | (sin θ, cos θ) regression | low |
| 4-ch PDM+analog | softmax(4) sectors | 0.9803 |
| 2-ch PDM | softmax(4) sectors | 0.8229 (deployed) |
See DOCUMENTATION.pdf for the full writeup.
Python env via uv:
uv syncTrain the deployed (PDM-only) classifier:
cd model
uv run python dscnn_classifier.py --pdm-only --augment --augment-passes 2 --epochs 30Verify on-chip preproc parity (torchaudio vs CMSIS-DSP):
cd audio_preproc && make test_parity
cd ../model && uv run python compare_preproc.pymodel/ training, calib, codegen patcher
audio_preproc/ on-chip CMSIS-DSP log-mel + parity harness
scripts/ capture-side label tooling
infineon-hackathon/examples/ deployed inference firmware
webapp/ WebSerial scene UI
data/four-mics-classifier/ 4-sector training takes
mtb_ml_gen/ dcmc + Vela output (model.c, model.bin)