ml.apps --- ML 应用¶
ml.apps 模块包含在 ml.Model 之上构建的高级 ML 应用类。
class MicroSpeech -- 语音识别¶
MicroSpeech 对象使用 TensorFlow Lite for Microcontrollers 的 MicroSpeech 模型识别简单的口语单词。默认模型可识别 "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作为回调启动音频流。如果音频流已启动,则不执行任何操作。
- listen(timeout: int = 0, callback: callable = None, threshold: float = 0.65, filter: list[str] = ['Yes', 'No']) tuple[str, numpy.ndarray]¶
侦听口语单词,并在检测到平均得分高于
threshold且包含在filter中的标签后,返回一个(label, average_scores)元组。如果尚未在进行音频流,则调用MicroSpeech.start_audio_streaming。timeout是侦听的最长时间,以毫秒为单位。如果为0,则无限期侦听直到识别出某个单词。如果为-1,则以非阻塞模式运行,并在未识别出单词时立即返回(None, average_scores);音频流会保持运行。对于任何正值,则侦听该毫秒数,然后在超时时返回(None, average_scores)。callback是一个可选的可调用对象,在识别出单词时以callback(label, average_scores)的形式调用,而不返回。与timeout=0结合使用,这允许连续识别。threshold是接受一次识别所需的最低平均置信度。filter是要接受的标签字符串列表。此列表之外的识别将被忽略。