Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense

Komponenten und Zubehör

Arduino Nano 33 BLE Sense × 1
PCA9685 8-Kanal 8W 12V FET-Treiber Proportionalventil-Controller mit I2C-Schnittstelle × 1
SG90 Mikro-Servomotor × 3
9V Batterieclip × 1

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Über das Projekt

Überblick

Dieses Projekt demonstriert, wie man einen TinyML-Spracherkennungs-Detektor auf dem Arduino Nano 33 BLE Sense mit Edge Impulse Studio erstellt. Das Gerät lauscht kontinuierlich nach drei gesprochenen Wörtern – „si“ (Italienisch), „oui“ (Französisch) und „yes“ (Englisch) – und aktiviert die entsprechende Flagge, sobald ein Wort erkannt wird.

Der Workflow umfasst:

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Gesamtsystem mit Nano 33 BLE Sense und Servo-Flaggen

Sampling & Datensatz-Erstellung

Der Datensatz enthält 30 Minuten Aufnahmen: 10 Minuten pro Zielwort plus 3 Minuten Umgebungs-Hintergrundgeräusche. Jeder 1-Sekunden-Clip erfasst eine einzelne Äußerung, und alle Dateien werden in Edge Impulse entsprechend beschriftet.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Beispielhafte Audiodaten im Edge Impulse Studio

Hintergrund-Samples helfen dem Modell, Sprache von Nicht-Sprache zu unterscheiden.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Hintergrundgeräusch-Samples für Robustheit

Modell-Design

Edge Impulse automatisiert die meisten Vorverarbeitungsschritte. Audio wird in eine Zeitreihe umgewandelt, fensterweise verarbeitet und mittels MFCC-Features (Mel-Frequency Cepstral Coefficients) transformiert. Ein leichtes CNN (Convolutional Neural Network) klassifiziert dann jedes Fenster in eine von vier Klassen: „si“, „oui“, „yes“ oder Hintergrund.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Netzwerkarchitektur und MFCC-Visualisierung

Training & Arduino-Optimierung

Der EON Tuner erkundet automatisch Dutzende Modellkonfigurationen und bewertet jede nach Genauigkeit, Inferenzzeit, RAM- und Flash-Verbrauch. Für dieses Projekt wurde das schnellste Modell unter den Top-5-Genauigkeiten ausgewählt.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
EON Tuner Optimierungsergebnisse

Testen

Nach dem Training bestätigte ein frischer Testdatensatz robuste Leistung. Die Klassifikationskonfidenz lag durchgängig über 80 % für die Zielwörter.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Testergebnisse mit hoher Konfidenz

Deployment

Das Deployment erfolgt vereinfacht über die Edge Impulse Arduino-Bibliothek. Die generierte Header-Datei wird in die Arduino IDE importiert und dann angepasst, um drei SG90-Servos anzusteuern, die Flaggen anzeigen.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Deployment auf Arduino Nano 33 BLE Sense
TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Fertiger Hardware-Aufbau mit Servos

Code-Übersicht

Der Quellcode (auf GitHub verfügbar) erweitert das Edge Impulse Template um Servo-Steuerlogik. Wichtige Ergänzungen:

  1. Integration von Adafruit_PWMServoDriver.h für PCA9685 PWM-Steuerung.
  2. Eine servos_selector-Funktion, die die korrekte Flagge basierend auf der Modellkonfidenz aktiviert.
  3. Bedingte Logik, die servos_selector auslöst, wenn eine Klassifikation 80 % Konfidenz überschreitet.
void servos_selector(int iter){
  unsigned long time_now = millis();
  if (time_now - time_was > 2000){
    time_was = time_now;
    switch (iter){
      case 0: // Italienisch
        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: // Französisch
        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: // Englisch
        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;
    }
  }
}

Schaltungsdesign

Der Mikrocontroller wird von einer 9V-Batterie gespeist und nutzt ein PCA9685-Board, um drei SG90-Servos anzusteuern. Der 12V-Pin des Boards ist mit der Batterie verbunden, während die PWM-Ausgänge die Servos über die I2C-Schnittstelle des PCA9685 ansteuern.

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
Schaltplan der TinyML Spracherkennung

Mit Hardware, Software und Datenpipeline ist der TinyML-Spracherkennungs-Detektor einsatzbereit.

Code

Vollständiger Code auf GitHub: Repository-Link

CAD-Modelle und Gehäuse

Keine benutzerdefinierten Teile erforderlich.

Schaltpläne

Fritzing-Datei: languagedetection_9RxXhRX5sj.fzz

TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense

Herstellungsprozess

  1. Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
  2. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  3. Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
  4. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  5. DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
  6. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  7. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  8. Audio-reaktive Schreibtischlampe mit Arduino Nano bauen
  9. NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen
  10. DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau