ml.apps — Applications ML

Le module ml.apps contient des classes d’application ML de haut niveau construites au-dessus de ml.Model.

class MicroSpeech – Reconnaissance vocale

L’objet MicroSpeech reconnaît des mots prononcés simples à l’aide du modèle MicroSpeech de TensorFlow Lite for Microcontrollers. Le modèle par défaut reconnaît "Yes" et "No".

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

Crée un objet MicroSpeech.

preprocessor est le préprocesseur audio ml.Model. Si None, /rom/audio_preprocessor.tflite est chargé.

micro_speech est le ml.Model de reconnaissance vocale. Si None, /rom/micro_speech.tflite est chargé.

labels est une liste de chaînes d’étiquettes correspondant aux catégories de sortie du modèle. Si None, les étiquettes sont tirées de micro_speech.labels.

Tout argument nommé supplémentaire est transmis à audio.init() (le périphérique audio est initialisé avec channels=1, frequency=16000 et samples=320).

audio_callback(buf: bytes) None

Fonction de rappel interne de diffusion audio. Ajoute les nouveaux échantillons de buf dans le tampon audio glissant, met à jour le spectrogramme en exécutant le modèle preprocessor sur la dernière fenêtre, et met à jour l’historique des prédictions en exécutant le modèle micro_speech sur le spectrogramme. N’est normalement pas appelée directement.

start_audio_streaming() None

Efface le spectrogramme et l’historique des prédictions, puis démarre la diffusion audio avec MicroSpeech.audio_callback comme fonction de rappel. Sans effet si la diffusion est déjà démarrée.

stop_audio_streaming() None

Arrête la diffusion audio.

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

Écoute un mot prononcé et renvoie un tuple (label, average_scores) dès qu’une étiquette dont le score moyen est supérieur à threshold et qui est contenue dans filter est détectée. Appelle MicroSpeech.start_audio_streaming si la diffusion n’est pas déjà en cours.

timeout est le temps maximal en millisecondes pendant lequel écouter. Si 0, écoute indéfiniment jusqu’à ce qu’un mot soit reconnu. Si -1, s’exécute en mode non bloquant et renvoie immédiatement (None, average_scores) si aucun mot n’est reconnu ; la diffusion audio reste active. Pour toute valeur positive, écoute pendant ce nombre de millisecondes puis renvoie (None, average_scores) à l’expiration du délai.

callback est un appelable optionnel invoqué sous la forme callback(label, average_scores) lorsqu’un mot est reconnu, au lieu d’un retour. Combiné à timeout=0, cela permet une reconnaissance continue.

threshold est la confiance moyenne minimale requise pour accepter une reconnaissance.

filter est la liste des chaînes d’étiquettes à accepter. Les reconnaissances hors de cette liste sont ignorées.

_SLICE_SIZE: int

Nombre de caractéristiques par tranche de spectrogramme (40).

_SLICE_COUNT: int

Nombre de tranches de spectrogramme stockées (49).

_SLICE_TIME_MS: int

Durée d’une tranche en millisecondes (30).

_AUDIO_FREQUENCY: int

Fréquence d’échantillonnage audio en Hz (16000).

_SAMPLES_PER_STEP: int

Échantillons audio par pas de 10 ms (160).

_CATEGORY_COUNT: int

Nombre de catégories de sortie (4).

_AVERAGE_WINDOW_SAMPLES: int

Nombre de trames de prédiction moyennées sur la fenêtre de lissage (1020 // _SLICE_TIME_MS).