Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano 33 BLE Sense | 1 |
| Contrôleur proportionnel PCA9685 8 canaux 8W 12V (I2C) | 1 |
| Micro-servomoteur SG90 | 3 |
| Connecteur pile 9V | 1 |
Outils et machines nécessaires
- Imprimante 3D (générique)
- Fer à souder (générique)
Applications et services en ligne
- Edge Impulse Studio
- Arduino IDE
- Autodesk Fusion 360
À propos du projet
Vue d'ensemble
Ce projet montre comment construire un détecteur de langue TinyML sur l'Arduino Nano 33 BLE Sense avec Edge Impulse Studio. L'appareil écoute en continu trois mots prononcés – « si » (italien), « oui » (français) et « yes » (anglais) – et active le drapeau correspondant lorsqu'un mot est détecté.
Le flux de travail comprend :
- Création et échantillonnage du jeu de données
- Conception et entraînement du modèle
- Évaluation des performances
- Optimisation matérielle avec l'EON Tuner
- Déploiement et intégration avec des drapeaux commandés par servomoteurs

Échantillonnage et création du jeu de données
Le jeu de données contient 30 minutes d'enregistrements : 10 minutes par mot cible plus 3 minutes de bruit de fond ambiant. Chaque clip de 1 seconde capture une seule énonciation, et tous les fichiers sont étiquetés dans Edge Impulse.

Les échantillons de fond aident le modèle à différencier la parole du non-parole.

Conception du modèle
Edge Impulse automatise la plupart des étapes de prétraitement. L'audio est converti en série temporelle, fenêtré et transformé via des caractéristiques MFCC. Un CNN léger classe ensuite chaque fenêtre en l'une des quatre classes : « si », « oui », « yes » ou fond.

Entraînement et optimisation pour Arduino Nano 33 BLE Sense
L'EON Tuner explore automatiquement des dizaines de configurations de modèles, les notant selon la précision, le temps d'inférence, la RAM et la mémoire flash. Pour ce projet, le modèle le plus rapide parmi les 5 meilleures précisions a été sélectionné.

Test
Après l'entraînement, un jeu de test frais a confirmé une performance robuste. La confiance de classification dépassait constamment 80 % pour les mots cibles.

Déploiement
Le déploiement est simplifié via la bibliothèque Arduino Edge Impulse. Le fichier d'en-tête généré est ajouté à l'Arduino IDE, puis personnalisé pour contrôler trois servos SG90 qui actionnent les drapeaux.


Code – Aperçu
Le code source (disponible sur GitHub) étend le modèle Edge Impulse avec la logique de contrôle des servos. Les ajouts clés incluent :
- Intégration de
Adafruit_PWMServoDriver.hpour le contrôle PWM du PCA9685. - Une fonction
servos_selectorqui active le drapeau approprié selon la confiance du modèle. - Une logique conditionnelle déclenchant
servos_selectorlorsque la classification dépasse 80 % de confiance.
void servos_selector(int iter){
unsigned long time_now = millis();
if (time_now - time_was > 2000){
time_was = time_now;
switch (iter){
case 0: // Italien
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: // Français
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: // Anglais
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;
}
}
}
Conception du circuit
Le microcontrôleur est alimenté par une pile 9V et utilise une carte PCA9685 pour piloter trois servos SG90. La broche 12V de la carte est connectée à la pile, tandis que les sorties PWM commandent les servos via l'interface I2C du PCA9685.

Avec le matériel, le logiciel et le pipeline de données en place, le détecteur de langue TinyML est prêt pour le déploiement.
Code
Pièces personnalisées et boîtiers
Aucune pièce personnalisée n'est requise pour ce projet.
Schémas
Fichier Fritzing : languagedetection_9RxXhRX5sj.fzz
Processus de fabrication
- Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Construire un Iron Man animé avec Arduino : capteurs, sons et relais
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
- Mesure de distance en temps réel par sonar Arduino et visualisation Processing
- MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android
- Construire une lampe de bureau réactive à l'audio avec Arduino Nano
- Jeu Pong sur Matrice NeoPixel avec Arduino Nano