Anhang B. Audioaufzeichnung mit Arduino
Der folgende Text führt dich durch den Code für die Audioaufnahme aus der Wake-Word-Anwendung in Kapitel 7. Da er nicht direkt mit dem maschinellen Lernen zu tun hat, ist er als Anhang beigefügt.
Der Arduino Nano 33 BLE Sense hat ein eingebautes Mikrofon. Um Audiodaten vom Mikrofon zu empfangen, können wir eine Callback-Funktion registrieren, die aufgerufen wird, wenn ein Stück neuer Audiodaten bereitsteht.
Jedes Mal, wenn das passiert, schreiben wir die neuen Daten in einen Puffer, der eine Reserve an Daten speichert. Da Audiodaten sehr viel Speicherplatz benötigen, hat der Puffer nur Platz für eine bestimmte Menge an Daten. Diese Daten werden überschrieben, wenn der Puffer voll ist.
Wann immer unser Programm bereit ist, Inferenzen durchzuführen, kann es die Daten der letzten Sekunde aus diesem Puffer lesen. Solange neue Daten schneller eintreffen, als wir auf sie zugreifen können, gibt es immer genug neue Daten im Puffer, die wir vorverarbeiten und in unser Modell einspeisen können.
Jeder Zyklus der Vorverarbeitung und der Inferenz ist komplex und braucht einige Zeit, um abgeschlossen zu werden. Aus diesem Grund können wir die Inferenz auf einem Arduino nur ein paar Mal pro Sekunde durchführen. Das bedeutet, dass unser Puffer leicht voll bleiben kann.
Wie wir in Kapitel 7 gesehen haben, implementiert audio_provider.h diese beiden Funktionen:
-
GetAudioSamples()
, die einen Zeiger auf ein Stück Audio-Rohdaten liefert -
LatestAudioTimestamp() ...
Get TinyML now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.