ml.apps — ML aplikace

Modul ml.apps obsahuje vysokoúrovňové třídy ML aplikací postavené nad ml.Model.

class MicroSpeech – rozpoznávání řeči

Objekt MicroSpeech rozpoznává jednoduchá mluvená slova pomocí modelu MicroSpeech z TensorFlow Lite for Microcontrollers. Výchozí model rozpoznává "Yes" a "No".

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

Vytvoří objekt MicroSpeech.

preprocessor je audio preprocesor ml.Model. Pokud je None, načte se /rom/audio_preprocessor.tflite.

micro_speech je ml.Model pro rozpoznávání řeči. Pokud je None, načte se /rom/micro_speech.tflite.

labels je seznam řetězců se štítky odpovídajícími výstupním kategoriím modelu. Pokud je None, štítky se převezmou z micro_speech.labels.

Veškeré další klíčové argumenty jsou předány funkci audio.init() (audio periferie je inicializována s channels=1, frequency=16000 a samples=320).

audio_callback(buf: bytes) None

Interní callback pro audio streaming. Připojuje nové vzorky z buf do klouzavého audio bufferu, aktualizuje spektrogram spuštěním modelu preprocessor na nejnovějším okně a aktualizuje historii predikcí spuštěním modelu micro_speech na spektrogramu. Běžně se nevolá přímo.

start_audio_streaming() None

Vymaže spektrogram a historii predikcí a poté spustí audio streaming s MicroSpeech.audio_callback jako callbackem. Pokud již streaming běží, neudělá nic.

stop_audio_streaming() None

Zastaví audio streaming.

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

Naslouchá mluvenému slovu a vrátí n-tici (label, average_scores), jakmile je detekován štítek, jehož průměrné skóre je nad threshold a je obsažen ve filter. Volá MicroSpeech.start_audio_streaming, pokud streaming ještě neběží.

timeout je maximální čas v milisekundách, po který se naslouchá. Pokud je 0, naslouchá donekonečna, dokud není rozpoznáno slovo. Pokud je -1, běží v neblokujícím režimu a okamžitě vrátí (None, average_scores), pokud není rozpoznáno žádné slovo; audio streaming zůstane spuštěný. U jakékoli kladné hodnoty naslouchá tolik milisekund a poté při vypršení limitu vrátí (None, average_scores).

callback je volitelný objekt volaný jako callback(label, average_scores), když je rozpoznáno slovo, namísto vracení hodnoty. V kombinaci s timeout=0 to umožňuje nepřetržité rozpoznávání.

threshold je minimální průměrná spolehlivost vyžadovaná pro přijetí rozpoznání.

filter je seznam řetězců se štítky, které se mají přijmout. Rozpoznání mimo tento seznam jsou ignorována.

_SLICE_SIZE: int

Počet příznaků na řez spektrogramu (40).

_SLICE_COUNT: int

Počet uložených řezů spektrogramu (49).

_SLICE_TIME_MS: int

Časové rozpětí jednoho řezu v milisekundách (30).

_AUDIO_FREQUENCY: int

Vzorkovací frekvence audia v Hz (16000).

_SAMPLES_PER_STEP: int

Audio vzorky na 10ms krok (160).

_CATEGORY_COUNT: int

Počet výstupních kategorií (4).

_AVERAGE_WINDOW_SAMPLES: int

Počet predikčních snímků zprůměrovaných přes vyhlazovací okno (1020 // _SLICE_TIME_MS).