ml.apps — Aplicações de ML

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

classe MicroSpeech – Reconhecimento de Fala

O objeto MicroSpeech reconhece palavras faladas simples usando o modelo MicroSpeech do TensorFlow Lite for Microcontrollers. O modelo padrão 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 for None, /rom/audio_preprocessor.tflite é carregado.

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

labels é uma lista de strings de rótulo correspondentes às categorias de saída do modelo. Se for None, os rótulos são obtidos de micro_speech.labels.

Quaisquer argumentos de palavra-chave adicionais são encaminhados para 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 rolante, 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 então inicia o streaming de áudio com MicroSpeech.audio_callback como callback. Não faz nada se o streaming já estiver iniciado.

stop_audio_streaming() None

Interrompe o streaming de áudio.

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

Escuta por uma palavra falada e retorna uma tupla (label, average_scores) assim que um rótulo cujo score médio esteja acima de threshold e esteja contido em filter for detectado. Chama MicroSpeech.start_audio_streaming se ainda não estiver fazendo streaming.

timeout é o tempo máximo, em milissegundos, para escutar. Se for 0, escuta indefinidamente até que uma palavra seja reconhecida. Se for -1, executa em modo não bloqueante e retorna imediatamente com (None, average_scores) se nenhuma palavra for reconhecida; o streaming de áudio permanece em execução. Para qualquer valor positivo, escuta por aquela quantidade de milissegundos e então retorna (None, average_scores) no timeout.

callback é um chamável opcional invocado como callback(label, average_scores) quando uma palavra é reconhecida, em vez de retornar. Combinado com timeout=0, isso permite reconhecimento contínuo.

threshold é a confiança média mínima exigida para aceitar um reconhecimento.

filter é a lista de strings de rótulo a aceitar. Reconhecimentos fora dessa lista são ignorados.

_SLICE_SIZE: int

Número de características por fatia do 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 quadros de predição calculados em média sobre a janela de suavização (1020 // _SLICE_TIME_MS).