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は受け入れるラベル文字列のリストです。このリストに含まれない認識は無視されます。