ml.apps — ML-Apps

Das Modul ml.apps enthält High-Level-ML-Anwendungsklassen, die auf ml.Model aufbauen.

class MicroSpeech – Spracherkennung

Das MicroSpeech-Objekt erkennt einfache gesprochene Wörter mithilfe des MicroSpeech-Modells von TensorFlow Lite for Microcontrollers. Das Standardmodell erkennt "Yes" und "No".

class ml.apps.MicroSpeech(preprocessor: ml.Model = None, micro_speech: ml.Model = None, labels: list[str] = None, **kwargs)

Erstellt ein MicroSpeech-Objekt.

preprocessor ist das Audio-Vorverarbeitungs-ml.Model. Wenn None, wird /rom/audio_preprocessor.tflite geladen.

micro_speech ist das Spracherkennungs-ml.Model. Wenn None, wird /rom/micro_speech.tflite geladen.

labels ist eine Liste von Label-Strings, die den Ausgabekategorien des Modells entsprechen. Wenn None, werden die Labels aus micro_speech.labels übernommen.

Alle zusätzlichen Schlüsselwortargumente werden an audio.init() weitergereicht (das Audio-Peripheriegerät wird mit channels=1, frequency=16000 und samples=320 initialisiert).

audio_callback(buf: bytes) None

Interner Audio-Streaming-Callback. Hängt neue Samples aus buf an den rollierenden Audio-Puffer an, aktualisiert das Spektrogramm, indem das preprocessor-Modell auf dem neuesten Fenster ausgeführt wird, und aktualisiert die Vorhersagehistorie, indem das micro_speech-Modell auf dem Spektrogramm ausgeführt wird. Wird normalerweise nicht direkt aufgerufen.

start_audio_streaming() None

Löscht das Spektrogramm und die Vorhersagehistorie und startet dann das Audio-Streaming mit MicroSpeech.audio_callback als Callback. Tut nichts, wenn das Streaming bereits gestartet ist.

stop_audio_streaming() None

Stoppt das Audio-Streaming.

listen(timeout: int = 0, callback: callable = None, threshold: float = 0.65, filter: list[str] = ['Yes', 'No']) tuple[str, numpy.ndarray]

Lauscht auf ein gesprochenes Wort und gibt ein Tupel (label, average_scores) zurück, sobald ein Label erkannt wird, dessen gemittelter Score über threshold liegt und das in filter enthalten ist. Ruft MicroSpeech.start_audio_streaming auf, falls noch nicht gestreamt wird.

timeout ist die maximale Zeit in Millisekunden, für die gelauscht wird. Bei 0 wird unbegrenzt gelauscht, bis ein Wort erkannt wird. Bei -1 läuft die Methode im nicht-blockierenden Modus und kehrt sofort mit (None, average_scores) zurück, wenn kein Wort erkannt wird; das Audio-Streaming bleibt aktiv. Bei jedem positiven Wert wird für diese Anzahl an Millisekunden gelauscht und bei einem Timeout (None, average_scores) zurückgegeben.

callback ist ein optionales aufrufbares Objekt, das als callback(label, average_scores) aufgerufen wird, wenn ein Wort erkannt wird, anstatt zurückzukehren. In Kombination mit timeout=0 ermöglicht dies eine kontinuierliche Erkennung.

threshold ist die minimale gemittelte Konfidenz, die erforderlich ist, um eine Erkennung zu akzeptieren.

filter ist die Liste der zu akzeptierenden Label-Strings. Erkennungen außerhalb dieser Liste werden ignoriert.

_SLICE_SIZE: int

Anzahl der Merkmale pro Spektrogramm-Slice (40).

_SLICE_COUNT: int

Anzahl der gespeicherten Spektrogramm-Slices (49).

_SLICE_TIME_MS: int

Zeitspanne eines Slices in Millisekunden (30).

_AUDIO_FREQUENCY: int

Audio-Abtastrate in Hz (16000).

_SAMPLES_PER_STEP: int

Audio-Samples pro 10-ms-Schritt (160).

_CATEGORY_COUNT: int

Anzahl der Ausgabekategorien (4).

_AVERAGE_WINDOW_SAMPLES: int

Anzahl der über das Glättungsfenster gemittelten Vorhersage-Frames (1020 // _SLICE_TIME_MS).