mike_client¶
音声対話システムのクライアント実装。
- class mike.mike_client.MikeClient(config: dict)¶
Bases:
object音声対話クライアントクラス。
マイク入力、音声認識、AI 応答生成、音声再生を統合し、 スリープ・待機・会話・終了の状態遷移を管理する。
- Parameters:
config (dict) – 設定情報を格納した辞書。
config/config.jsonから読み込まれることを想定。- Raises:
RuntimeError – AudioStreamManager または MikeLibrary の初期化に失敗した場合
- recv_audio_thread(sock)¶
- play_audio_thread()¶
- process_ai_command(text: str) bool¶
ユーザー入力を AI で処理し、応答音声を生成・再生する。
文単位でジェネレータから WAV ファイルを受け取り、 逐次音声合成と再生を繰り返します。
- Parameters:
user_input (str) – ユーザーが発話したテキスト
- Returns:
成功時 True、失敗時 False
- Return type:
bool
- audio_playback(wav: Wave_read)¶
WAV 音声データを再生する。
WAV のサンプリングレートと出力デバイスのレートが 異なる場合は自動的にリサンプリングを行う。
- Parameters:
wav (wave.Wave_read) – 再生対象の WAV ファイル。
Notes
出力ストリームは排他制御される
scipy が利用可能な場合は高品質リサンプリングを行う
- audio_playnoise(freq: int, duration: float)¶
スピーカー起動用のテスト音を再生する。
初回再生時に音声が欠ける現象を防ぐための補助処理。
- Parameters:
frequency (int) – 再生するサイン波の周波数(Hz)。
duration (float) – 再生時間(秒)。
- getandplay_wav_file(uassr_message: str)¶
音声コマンド用 テキストに対応する WAV ファイルを検索して再生。
- sleep_mode() int¶
スリープ待機モード。
【動作】 - Julius を使用し短い命令語のみ認識 - ウェイクワード認識で MODE_COMMAND へ遷移 - 終了ワード認識で終了
【フロー】 1. Julius で短い音声コマンド取得 2. ウェイクワード検知 → MODE_COMMAND へ遷移 3. 終了ワード検知 → MODE_END へ遷移 4. その他のコマンド → スキップ(応答なし)
【特徴】 - 最初の状態 - マイクは get_command() の期間だけ占有 - AudioStreamManager でスレッドセーフに管理
- Returns:
0: 正常継続, -1: エラー発生
- Return type:
int
- wait_command_mode() int¶
コマンド待機モードの処理。
ウェイクワード検知後に遷移し、 定型コマンドに対応する音声応答を再生する。
- Returns:
0: 正常継続-1: エラー発生- Return type:
int
- chat_mode() int¶
AI 会話モードの処理。
SpeechRecognition により自由発話を認識し、 MikeLibrary を用いて AI 応答を生成・再生する。
- Returns:
0: 正常継続1: モード遷移-1: エラー- Return type:
int
- start_client()¶
音声対話クライアントのメインループ。
MODE_SLEEP / MODE_COMMAND / MODE_CHAT を 状態に応じて遷移しながら音声対話を実行する。
Notes
各モードは音声入力待ちのためブロッキング動作
Ctrl+C または終了ワードで安全に終了する
- mike.mike_client.main()¶
MikeClientRefactored のメイン実行。