ml.apps — ML-приложения

Модуль ml.apps содержит высокоуровневые классы ML-приложений, построенные поверх ml.Model.

класс MicroSpeech – распознавание речи

Объект MicroSpeech распознаёт простые произнесённые слова с помощью модели MicroSpeech из TensorFlow Lite for Microcontrollers. Модель по умолчанию распознаёт "Yes" и "No".

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

Создаёт объект MicroSpeech.

preprocessor — это аудиопредобработчик ml.Model. Если None, загружается /rom/audio_preprocessor.tflite.

micro_speech — это модель распознавания речи ml.Model. Если None, загружается /rom/micro_speech.tflite.

labels — это список строк меток, соответствующих выходным категориям модели. Если None, метки берутся из micro_speech.labels.

Любые дополнительные именованные аргументы передаются в audio.init() (аудиопериферия инициализируется с channels=1, frequency=16000 и samples=320).

audio_callback(buf: bytes) None

Внутренняя функция обратного вызова потоковой передачи аудио. Добавляет новые отсчёты из buf в скользящий аудиобуфер, обновляет спектрограмму, запуская модель preprocessor на последнем окне, и обновляет историю предсказаний, запуская модель micro_speech на спектрограмме. Обычно напрямую не вызывается.

start_audio_streaming() None

Очищает спектрограмму и историю предсказаний, затем запускает потоковую передачу аудио с MicroSpeech.audio_callback в качестве функции обратного вызова. Ничего не делает, если потоковая передача уже запущена.

stop_audio_streaming() None

Останавливает потоковую передачу аудио.

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

Прослушивает произнесённое слово и возвращает кортеж (label, average_scores), как только обнаружена метка, чья усреднённая оценка выше threshold и содержится в filter. Вызывает MicroSpeech.start_audio_streaming, если потоковая передача ещё не запущена.

timeout — это максимальное время прослушивания в миллисекундах. Если 0, прослушивает бесконечно, пока слово не будет распознано. Если -1, работает в неблокирующем режиме и немедленно возвращает (None, average_scores), если слово не распознано; потоковая передача аудио остаётся работающей. При любом положительном значении прослушивает указанное число миллисекунд, а затем по тайм-ауту возвращает (None, average_scores).

callback — это необязательный вызываемый объект, вызываемый как callback(label, average_scores) при распознавании слова вместо возврата. В сочетании с timeout=0 это позволяет осуществлять непрерывное распознавание.

threshold — это минимальная усреднённая достоверность, требуемая для принятия распознавания.

filter — это список строк меток, которые принимаются. Распознавания вне этого списка игнорируются.

_SLICE_SIZE: int

Количество признаков на срез спектрограммы (40).

_SLICE_COUNT: int

Количество хранимых срезов спектрограммы (49).

_SLICE_TIME_MS: int

Временной интервал одного среза в миллисекундах (30).

_AUDIO_FREQUENCY: int

Частота дискретизации аудио в Гц (16000).

_SAMPLES_PER_STEP: int

Количество аудиоотсчётов на шаг в 10 мс (160).

_CATEGORY_COUNT: int

Количество выходных категорий (4).

_AVERAGE_WINDOW_SAMPLES: int

Количество кадров предсказаний, усредняемых по окну сглаживания (1020 // _SLICE_TIME_MS).