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=1frequency=16000samples=320 で初期化されます)。

audio_callback(buf: bytes) None

内部のオーディオストリーミングコールバック。buf からの新しいサンプルをローリングオーディオバッファに追加し、最新のウィンドウに対して preprocessor モデルを実行することでスペクトログラムを更新し、スペクトログラムに対して micro_speech モデルを実行することで予測履歴を更新します。通常は直接呼び出されません。

start_audio_streaming() None

スペクトログラムと予測履歴をクリアし、MicroSpeech.audio_callback をコールバックとしてオーディオストリーミングを開始します。すでにストリーミングが開始されている場合は何もしません。

stop_audio_streaming() None

オーディオストリーミングを停止します。

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

_SLICE_SIZE: int

スペクトログラムスライスごとの特徴数(40)。

_SLICE_COUNT: int

保存されるスペクトログラムスライスの数(49)。

_SLICE_TIME_MS: int

1 スライスの時間幅(ミリ秒単位)(30)。

_AUDIO_FREQUENCY: int

オーディオサンプルレート(Hz 単位)(16000)。

_SAMPLES_PER_STEP: int

10 ms ステップごとのオーディオサンプル数(160)。

_CATEGORY_COUNT: int

出力カテゴリの数(4)。

_AVERAGE_WINDOW_SAMPLES: int

平滑化ウィンドウで平均化される予測フレームの数(1020 // _SLICE_TIME_MS)。