ml.apps — aplicații ML

Modulul ml.apps conține clase de aplicații ML de nivel înalt construite peste ml.Model.

clasa MicroSpeech – recunoaștere vocală

Obiectul MicroSpeech recunoaște cuvinte rostite simple folosind modelul MicroSpeech din TensorFlow Lite for Microcontrollers. Modelul implicit recunoaște "Yes" și "No".

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

Creează un obiect MicroSpeech.

preprocessor este preprocesorul audio ml.Model. Dacă este None, se încarcă /rom/audio_preprocessor.tflite.

micro_speech este modelul ml.Model de recunoaștere vocală. Dacă este None, se încarcă /rom/micro_speech.tflite.

labels este o listă de șiruri de etichete care corespund categoriilor de ieșire ale modelului. Dacă este None, etichetele sunt preluate din micro_speech.labels.

Orice argumente cu cuvinte-cheie suplimentare sunt transmise mai departe către audio.init() (periferia audio este inițializată cu channels=1, frequency=16000 și samples=320).

audio_callback(buf: bytes) None

Funcție de retroapelare (callback) internă pentru fluxul audio. Adaugă noi eșantioane din buf în tamponul audio circular, actualizează spectrograma rulând modelul preprocessor pe cea mai recentă fereastră și actualizează istoricul predicțiilor rulând modelul micro_speech pe spectrogramă. În mod normal nu se apelează direct.

start_audio_streaming() None

Șterge spectrograma și istoricul predicțiilor, apoi pornește fluxul audio cu MicroSpeech.audio_callback ca funcție de retroapelare (callback). Nu face nimic dacă fluxul este deja pornit.

stop_audio_streaming() None

Oprește fluxul audio.

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

Ascultă un cuvânt rostit și returnează un tuplu (label, average_scores) odată ce este detectată o etichetă al cărei scor mediu este peste threshold și este conținută în filter. Apelează MicroSpeech.start_audio_streaming dacă fluxul nu este deja pornit.

timeout este timpul maxim în milisecunde de ascultare. Dacă este 0, ascultă la nesfârșit până când este recunoscut un cuvânt. Dacă este -1, rulează în mod neblocant și returnează imediat (None, average_scores) dacă niciun cuvânt nu este recunoscut; fluxul audio rămâne în funcțiune. Pentru orice valoare pozitivă, ascultă atâtea milisecunde și apoi returnează (None, average_scores) la expirare.

callback este un apelabil opțional invocat ca callback(label, average_scores) atunci când un cuvânt este recunoscut, în locul returnării. Combinat cu timeout=0, acest lucru permite recunoașterea continuă.

threshold este încrederea medie minimă necesară pentru a accepta o recunoaștere.

filter este lista de șiruri de etichete de acceptat. Recunoașterile din afara acestei liste sunt ignorate.

_SLICE_SIZE: int

Numărul de caracteristici per felie de spectrogramă (40).

_SLICE_COUNT: int

Numărul de felii de spectrogramă stocate (49).

_SLICE_TIME_MS: int

Durata în timp a unei felii în milisecunde (30).

_AUDIO_FREQUENCY: int

Rata de eșantionare audio în Hz (16000).

_SAMPLES_PER_STEP: int

Eșantioane audio per pas de 10 ms (160).

_CATEGORY_COUNT: int

Numărul de categorii de ieșire (4).

_AVERAGE_WINDOW_SAMPLES: int

Numărul de cadre de predicție mediate pe fereastra de netezire (1020 // _SLICE_TIME_MS).