ml.apps — App ML

Il modulo ml.apps contiene classi di applicazioni ML di alto livello costruite sopra ml.Model.

class MicroSpeech – Riconoscimento vocale

L’oggetto MicroSpeech riconosce semplici parole pronunciate usando il modello MicroSpeech di TensorFlow Lite for Microcontrollers. Il modello predefinito riconosce "Yes" e "No".

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

Crea un oggetto MicroSpeech.

preprocessor è il ml.Model di preprocessing audio. Se None, viene caricato /rom/audio_preprocessor.tflite.

micro_speech è il ml.Model di riconoscimento vocale. Se None, viene caricato /rom/micro_speech.tflite.

labels è una lista di stringhe di etichetta corrispondenti alle categorie di output del modello. Se None, le etichette vengono prese da micro_speech.labels.

Eventuali argomenti keyword aggiuntivi vengono inoltrati a audio.init() (la periferica audio viene inizializzata con channels=1, frequency=16000 e samples=320).

audio_callback(buf: bytes) None

Callback interno di streaming audio. Aggiunge i nuovi campioni da buf nel buffer audio scorrevole, aggiorna lo spettrogramma eseguendo il modello preprocessor sull’ultima finestra e aggiorna la cronologia delle predizioni eseguendo il modello micro_speech sullo spettrogramma. Normalmente non chiamato direttamente.

start_audio_streaming() None

Cancella lo spettrogramma e la cronologia delle predizioni, quindi avvia lo streaming audio con MicroSpeech.audio_callback come callback. Non fa nulla se lo streaming è già avviato.

stop_audio_streaming() None

Arresta lo streaming audio.

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

Resta in ascolto di una parola pronunciata e restituisce una tupla (label, average_scores) una volta rilevata un’etichetta il cui punteggio medio è sopra threshold ed è contenuta in filter. Chiama MicroSpeech.start_audio_streaming se non è già in streaming.

timeout è il tempo massimo in millisecondi di ascolto. Se 0, ascolta indefinitamente finché una parola non viene riconosciuta. Se -1, viene eseguito in modalità non bloccante e restituisce immediatamente (None, average_scores) se nessuna parola viene riconosciuta; lo streaming audio viene lasciato in esecuzione. Per qualsiasi valore positivo, ascolta per quel numero di millisecondi e poi restituisce (None, average_scores) allo scadere del timeout.

callback è un callable opzionale invocato come callback(label, average_scores) quando una parola viene riconosciuta invece di restituire il risultato. Combinato con timeout=0, ciò consente il riconoscimento continuo.

threshold è la confidenza media minima richiesta per accettare un riconoscimento.

filter è la lista di stringhe di etichetta da accettare. I riconoscimenti al di fuori di questa lista vengono ignorati.

_SLICE_SIZE: int

Numero di caratteristiche per fetta di spettrogramma (40).

_SLICE_COUNT: int

Numero di fette di spettrogramma memorizzate (49).

_SLICE_TIME_MS: int

Estensione temporale di una fetta in millisecondi (30).

_AUDIO_FREQUENCY: int

Frequenza di campionamento audio in Hz (16000).

_SAMPLES_PER_STEP: int

Campioni audio per passo di 10 ms (160).

_CATEGORY_COUNT: int

Numero di categorie di output (4).

_AVERAGE_WINDOW_SAMPLES: int

Numero di frame di predizione mediati sulla finestra di smoothing (1020 // _SLICE_TIME_MS).