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是要接受的標籤字串清單。此清單之外的辨識會被忽略。