Detektor Bahasa TinyML dengan Edge Impulse pada Arduino Nano 33 BLE Sense
Komponen dan Perlengkapan
Arduino Nano 33 BLE Sense
×
1
Pengontrol Klep Proporsional 8 Saluran 8W 12V PCA9685 National Control Devices dengan Antarmuka I2C
×
1
Micro-servo Motor SG90
×
3
Klip Baterai 9V
×
1
Alat dan Mesin yang Diperlukan
Printer 3D (generik)
Pakuin (generik)
Aplikasi dan Layanan Online
Edge Impulse Studio
Arduino IDE
Autodesk Fusion 360
Tentang Proyek Ini
Ringkasan
Proyek ini menunjukkan cara membangun detektor bahasa TinyML pada Arduino Nano 33 BLE Sense menggunakan Edge Impulse Studio. Alat ini secara terus-menerus mendengarkan tiga kata yang diucapkan – “si” (Italia), “oui” (Perancis), dan “yes” (Inggris) – dan mengaktifkan bendera yang sesuai ketika kata terdeteksi.
Alur kerja meliputi:
Pembuatan dan sampling dataset
Desain dan pelatihan model
Evaluasi kinerja
Optimasi khusus hardware dengan EON Tuner
Penerapan dan integrasi dengan bendera yang dikontrol servo
Sampling dan Pembuatan Dataset
Dataset berisi 30 menit rekaman: 10 menit per kata target ditambah 3 menit latar belakang ambient. Setiap klip 1 detik menangkap satu ucapan, dan semua file diberi label sesuai di Edge Impulse.
Sampel latar belakang membantu model membedakan ucapan dari non-ucapan.
Desain Model
Edge Impulse mengotomatisasi sebagian besar langkah praprosesan. Audio dikonversi menjadi time-series, diwindow, dan ditransformasi menggunakan fitur MFCC. CNN ringan kemudian mengklasifikasikan setiap window ke dalam satu dari empat kelas: “si,” “oui,” “yes,” atau latar belakang.
Sampel MFCC dan arsitektur jaringan divisualisasikan di dasbor pelatihan.
Pelatihan dan Optimasi Arduino
EON Tuner secara otomatis menjelajahi puluhan konfigurasi model, memberikan skor berdasarkan akurasi, waktu inferensi, RAM, dan penggunaan flash. Untuk proyek ini, model tercepat di antara 5 akurasi terbaik dipilih.
Pengujian
Setelah pelatihan, serangkaian tes baru mengonfirmasi kinerja yang kuat. Kepercayaan klasifikasi secara konsisten melebihi 80% untuk kata target.
Penerapan
Penerapan dilakukan melalui library Arduino Edge Impulse. File header yang dihasilkan dimasukkan ke Arduino IDE, kemudian disesuaikan untuk mengontrol tiga servo SG90 yang menampilkan bendera.
Ringkasan Kode
Kode sumber (tersedia di GitHub) memperluas template Edge Impulse dengan logika kontrol servo. Penambahan utama meliputi:
Integrasi Adafruit_PWMServoDriver.h untuk kontrol PWM PCA9685.
Fungsi servos_selector yang mengaktifkan bendera yang benar berdasarkan kepercayaan model.
Logika bersyarat yang memicu servos_selector ketika klasifikasi melebihi 80% kepercayaan.
void servos_selector(int iter){ unsigned long time_now = millis(); if (time_now - time_was > 2000){ time_was = time_now; switch (iter){ case 0: // Italia pwm.setPWM(0, 0, 350); delay(500); pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200); break; case 1: // Perancis pwm.setPWM(1, 0, 350); Serial.println("2222"); delay(500); pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200); break; case 2: // Inggris pwm.setPWM(2, 0, 350); Serial.println("333"); delay(500); pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200); break; } } }
Desain Rangkaian
Mikrokontroler diberdayakan oleh baterai 9V dan menggunakan papan PCA9685 untuk mengemudikan tiga servo SG90. Pin 12V papan terhubung ke baterai, sementara output PWM mengemudikan servo melalui antarmuka I2C PCA9685.
Dengan hardware, perangkat lunak, dan alur data yang siap, detektor bahasa TinyML siap untuk diterapkan.