Syntiant NDP 101 – Ständig aktive Spracherkennung mit geringem Stromverbrauch

Last Updated 6 Tagen ago by mcp_user

Mal sehen … bin gespannt, ob es funktioniert … frisch aus Kalifornien…

Always-On-Spracherkennung mit geringem Stromverbrauch mit Syntiant NDP 101

NDP 101 – frisch von Digi-Key – was will ich jetzt damit machen?

Ich werde das Syntiant TinyML NDP101-Board in mein neuestes Projekt integrieren: GoodWatch – eine superintelligente sprachgesteuerte Uhr.

Derzeit verwende ich für GoodWatch einen ESP32 als MCU für die Spracherkennung. Er funktioniert mit 10 Zahlen und zwei Schlüsselwörtern (Ja, Nein). Aber – um bei so vielen Schlüsselwörtern gute Ergebnisse und eine schnelle Reaktion zu erzielen – musste ich ein bisschen tricksen: Er hört nur auf meine Worte. Wenn du mehr über ML für Edge-Geräte erfahren möchtest, schau dir das hier an: Überblick über ML auf Edge-Geräten. Wie weit ich mit einem ESP32 gekommen bin, siehst du hier:

https://44-2.de/goodwatch-eink-alarm-clock-with-voice-recognition/

Mit diesem Projekt verfolge ich zwei Ziele:

  • Den Wecker mit einem Schlüsselwort aktivieren, um den Alarm einzustellen, und ihn zu 100 % sprachgesteuert betreiben
  • Die Spracherkennung nicht nur für meine Stimme zu aktivieren und eine äußerst zuverlässige Spracherkennung zu erreichen (sonst wäre das Einstellen des alten Weckers schneller 🙂

Einige Fakten zum TinyML-Entwicklungsboard

Board-Übersicht

Ich habe das Entwicklungsboard „Syntiant TinyML“ bestellt. Es ist eine Kombination aus dem NDP101-Prozessor, einem Cortex-M0+ 32-Bit-ARM-MCU, einem SPH0641LM4H-Mikrofon, einem LIPO-Stromanschluss und einem USB-Stecker – also sofort einsatzbereit. Im Detail:

• Neural Decision Processor: NDP101
• Host processor: SAMD21 Cortex-M0+ 32bit low power ARM MCU, including:
    ◦ 256KB flash memory
    ◦ 32KB host processor SRAM
• Board power supply: 5V micro-USB or 3.7V LiPo battery
• 5 Digital I/Os compatible with Arduino MKR series boards
• 1 UART interface (included in the digital I/O Pins)
• 1 I2C interface (included in the digital I/O Pins)
• 2MB on-board serial flash
• 48MHz system clock
• One user defined RGB LED
• uSD card slot (uSD card not included)
• BMI160 6 axis motion sensor
• SPH0641LM4H microphone

Das Board besteht aus zwei Komponenten – einer normalen ARM-MCU mit geringem Stromverbrauch und USB-Anschluss (für Kommunikation, Steuerung, Laden der Modelle…) sowie einer SPI-Verbindung zum Herzstück des Systems – der NDP101-MCU.

Zur NDP1010-MCU: Ihre Hauptkomponente ist ein neuronales Netzwerk mit fester Struktur: 3 dichte Schichten mit je 256 Neuronen und 3 Dropout-Schichten; die Eingabeschicht muss immer 1600 Merkmale haben.

Die vom Mikrofon aufgezeichneten Daten werden direkt vom Audio-Frontend (16 Bit) verarbeitet, der „Holding Tank“ fungiert als rollender Puffer für bis zu 3 Sekunden Sprache. Der Merkmalsextraktor führt eine ziemlich standardmäßige MEL-Transformation (Log-Mel LMFB) durch, bevor das neuronale Netzwerk zum Einsatz kommt. Mehr dazu kannst du hier nachlesen.

Ich vermute, die kleine MCU wird verwendet, um die Kommunikation über SPI mit der Außenwelt zu verwalten.

Software

Die Geschichte hat gerade erst begonnen – sie ist verfügbar unter: https://github.com/happychriss/Goodwatch_NDP101_SpeeechRecognition

Dies ist ein laufendes Projekt, ich habe keine Ahnung, ob es klappen wird oder wie lange es dauern wird. Ich werde weiterhin über den Fortschritt berichten – beginnend in den nächsten Tagen mit dem Entwicklungs-Setup und den ersten Schritten.