ml.apps — Aplicações ML

O módulo ml.apps contém classes de aplicações ML de alto nível construídas sobre ml.Model.

classe MicroSpeech – Reconhecimento de Voz

O objeto MicroSpeech reconhece palavras faladas simples utilizando o modelo MicroSpeech do TensorFlow Lite for Microcontrollers. O modelo predefinido reconhece "Yes" e "No".

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

Cria um objeto MicroSpeech.

preprocessor é o ml.Model de pré-processamento de áudio. Se None, é carregado /rom/audio_preprocessor.tflite.

micro_speech é o ml.Model de reconhecimento de voz. Se None, é carregado /rom/micro_speech.tflite.

labels é uma lista de strings de etiqueta correspondentes às categorias de saída do modelo. Se None, as etiquetas são obtidas a partir de micro_speech.labels.

Quaisquer argumentos de palavra-chave adicionais são repassados a audio.init() (o periférico de áudio é inicializado com channels=1, frequency=16000 e samples=320).

audio_callback(buf: bytes) None

Callback interno de streaming de áudio. Acrescenta novas amostras de buf ao buffer de áudio deslizante, atualiza o espectrograma executando o modelo preprocessor na janela mais recente, e atualiza o histórico de predições executando o modelo micro_speech no espectrograma. Normalmente não é chamado diretamente.

start_audio_streaming() None

Limpa o espectrograma e o histórico de predições e, em seguida, inicia o streaming de áudio com MicroSpeech.audio_callback como callback. Não faz nada se o streaming já estiver a decorrer.

stop_audio_streaming() None

Para o streaming de áudio.

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

Aguarda uma palavra falada e devolve um tuplo de (label, average_scores) assim que for detetada uma etiqueta cuja pontuação média está acima de threshold e está contida em filter. Chama MicroSpeech.start_audio_streaming se ainda não estiver a fazer streaming.

timeout é o tempo máximo em milissegundos para escutar. Se 0, escuta indefinidamente até que uma palavra seja reconhecida. Se -1, executa em modo não bloqueante e devolve imediatamente (None, average_scores) se nenhuma palavra for reconhecida; o streaming de áudio fica em execução. Para qualquer valor positivo, escuta durante esse número de milissegundos e devolve (None, average_scores) no tempo limite.

callback é um callable opcional invocado como callback(label, average_scores) quando uma palavra é reconhecida, em vez de ser devolvido. Combinado com timeout=0, permite o reconhecimento contínuo.

threshold é a confiança média mínima necessária para aceitar um reconhecimento.

filter é a lista de strings de etiqueta a aceitar. Os reconhecimentos fora desta lista são ignorados.

_SLICE_SIZE: int

Número de características por fatia de espectrograma (40).

_SLICE_COUNT: int

Número de fatias de espectrograma armazenadas (49).

_SLICE_TIME_MS: int

Intervalo de tempo de uma fatia em milissegundos (30).

_AUDIO_FREQUENCY: int

Taxa de amostragem de áudio em Hz (16000).

_SAMPLES_PER_STEP: int

Amostras de áudio por passo de 10 ms (160).

_CATEGORY_COUNT: int

Número de categorias de saída (4).

_AVERAGE_WINDOW_SAMPLES: int

Número de fotogramas de predição calculados em média na janela de suavização (1020 // _SLICE_TIME_MS).