SirenSense

Analisis teknis & alur keinsinyuran

Bagaimana sirine berubah jadi keputusan

Dari akuisisi audio mentah, ekstraksi fitur mel, pelatihan jaringan saraf, hingga inferensi 9 milidetik di atas Arduino Nano 33 BLE Sense. Halaman ini membedah seluruh pipeline keinsinyuran dan MLOps, beserta hasil pelatihan yang sebenarnya.

⛁ Dioptimasi untuk Arduino Nano 33 BLE Sense EON Compiler · int8 · Cortex-M4F 64 MHz
96,5%
Akurasi validasi
0,97
F1 tertimbang
1,00
ROC AUC
9 ms
Inferensi on-device
14,7 KB
RAM puncak

01 · Arsitektur sistem

Rantai pemrosesan tepi

Seluruh keputusan terjadi langsung di mikrokontroler. Tidak ada server, tidak ada cloud, dan tidak ada ketergantungan jaringan pada jalur kritis: sinyal mikrofon menjadi keputusan prioritas dalam 9 milidetik di atas Arduino Nano 33 BLE Sense.

01 · SENSE
Mic MP34DT05
Bawaan Nano 33 BLE Sense, sampling 16 kHz.
02 · FEATURE
MFE
40 energi filterbank mel per bingkai.
03 · CLASSIFY
Conv1D NN
Inferensi C++ on-device → 3 kelas, 9 ms.
04 · ACT
Lampu hijau
Sirine terkonfirmasi → prioritas jalan.

02 · Ekstraksi fitur

Mel-Filterbank Energy

Sirine bukan suara manusia, jadi MFE dipilih karena unggul untuk audio non-voice. Setiap jendela 1 detik menghasilkan spektrogram mel 40 pita yang menonjolkan energi pada rentang frekuensi sirine. Pita fundamental yang kuat di sekitar 1,4 kHz beserta harmoniknya yang menyapu adalah sidik akustik yang dipelajari jaringan.

7,5 kHz 45 Hz ← pita fundamental ~1,4 kHz
Ilustrasi keluaran DSP MFE untuk satu jendela sirine: pita fundamental terang dengan harmonik di atasnya.

Parameter MFE

  • Frame length 0,02 s
  • Frame stride 0,01 s
  • Filter mel 40
  • FFT length 256
  • Low frequency 0 Hz
  • Noise floor −52 dB

Jendela & sampling

  • Frekuensi 16.000 Hz
  • Window 1.000 ms
  • Stride 500 ms
  • Zero-pad aktif
  • Fitur masukan 3.960
  • Reshape 40 kolom

Arsitektur jaringan

  • Conv1D 8 filter, k=3
  • Dropout 0,25
  • Conv1D 16 filter, k=3
  • Dropout 0,25
  • Flatten → Output 3 kelas
  • LR 0,005

03 · Alur MLOps

Siklus hidup model, ujung ke ujung

Proyek ini menjalankan siklus MLOps penuh di atas Edge Impulse: akuisisi data berlabel, ekstraksi fitur, pelatihan, evaluasi, optimasi memori, hingga penyebaran dan inferensi tepi. Setiap evaluasi mengumpan balik ke akuisisi data untuk iterasi berikutnya.

DATA
Acquisition
1.406 jendela berlabel, split diseimbangkan.
DSP
MFE features
Generate features, cek separabilitas.
TRAIN
Conv1D
100 epoch, split 80/20.
EVAL
Validate
Akurasi, F1, confusion matrix.
OPT
EON · int8
Kuantisasi & optimasi memori.
SHIP
Deploy
C++ MCU & WebAssembly.
↻ loop iterasi: hasil evaluasi → perluas dataset → latih ulang
Tooling: Edge Impulse Studio Engine: TensorFlow Lite Compiler: EON (RAM optimized) Target: Arduino Nano 33 BLE Sense Web: WebAssembly export

04 · Pelatihan

Kurva pelatihan (100 epoch)

Setelah split data diseimbangkan (1.124 latih / 282 validasi), akurasi validasi melewati 91% sekitar epoch ke-10 dan menetap di pertengahan 90-an, memuncak di 96,8%. Terlihat satu lonjakan sementara pada epoch ke-61 (akurasi validasi sempat turun ke ~73%) yang pulih dalam dua epoch — pola khas ketidakstabilan sesaat pada laju pembelajaran tetap. Data di bawah ini adalah log pelatihan yang sebenarnya.

Akurasi — latih vs validasi

Loss — latih vs validasi

05 · Evaluasi

Seberapa baik ia membedakan

Setelah split data diseimbangkan, kelas ambulans terdeteksi sempurna dan tidak pernah tertukar dengan polisi. Kekeliruan yang tersisa murni di perbatasan polisi dan derau, tempat sirine polisi yang jauh atau pelan paling mudah keliru sebagai derau.

Pred. Ambulans
Pred. Polisi
Pred. Derau
Ambulans
100%
0%
0%
Polisi
0%
94,4%
5,6%
Derau
0%
9,1%
90,9%
Matriks kebingungan (baris = kelas sebenarnya). F1 per kelas: Ambulans 1,00 · Polisi 0,96 · Derau 0,86.
Yelp Ambulance Yelp Police Derau
Skema separasi ruang fitur (proyeksi data latih). Gugus ambulans terpisah bersih; polisi dan derau berbagi perbatasan tempat sebagian besar kekeliruan terjadi.

06 · Kinerja & penyebaran

Cukup ringan untuk sekeping mikrokontroler

Setelah kuantisasi int8 dan EON Compiler, model muat dengan nyaman pada Arduino Nano 33 BLE Sense dan berjalan jauh di bawah anggaran waktu nyata.

9 ms
Waktu inferensi
14,7 KB
RAM puncak
40,9 KB
Flash
int8
Kuantisasi
M4F
Cortex-M4F 64 MHz

Untuk menghidupkannya di web, impulse yang sama diekspor sebagai WebAssembly sehingga DSP dan jaringan berjalan utuh di dalam peramban — itulah yang menggerakkan demo di halaman utama.

07 · Data & reproducibility

Data & reproduktibilitas

Data sirine dikumpulkan dari rekaman publik di YouTube, lalu sebagian direkam ulang di tempat umum untuk meniru kondisi akustik nyata (pantulan, jarak, dan bising latar). Semua sampel diunggah, dilabeli, dan dilatih di Edge Impulse Studio, dan proyeknya terbuka untuk direplikasi.

Sumber data

Proyek terbuka

Catatan: konvensi apakah sirine yelp polisi berbeda dari ambulans tidaklah baku, daerah di luar Magelang atau Jakarta bisa memakai pola berbeda. Yang penting, model dilatih pada konvensi data yang dikumpulkan di sini dan tetap mampu membedakan keduanya pada distribusi tersebut.