OpenClawSkills
GitHub
プラットフォーム • 5分で読める

Voice Wake

mac アプリの音声ウェイクとプッシュツートークモード、およびルーティングの詳細

Tutorial.step

モード

- ''ウェイクワードモード''(デフォルト):常にオンの音声認識器がトリガートークン(''swabbleTriggerWords'')を待機します。一致するとキャプチャを開始し、部分テキストを含むオーバーレイを表示し、静音後に自動送信します。

- プッシュツートーク(右 Option ホールド):右 Option キーを押してすぐにキャプチャします——トリガーは不要です。オーバーレイは押している間表示されます。解放すると、テキストを調整できるように短い遅延後に確定して転送します。

Tutorial.step

ランタイムの動作(ウェイクワード)

- 音声認識器は ''VoiceWakeRuntime'' にあります。

- トリガーは、ウェイクワードと次の単語の間に有意な一時停止がある場合にのみ発生します(約 0.55 秒のギャップ)。オーバーレイ/チャイムは、コマンドが開始される前でも一時停止で開始できます。

- 静音ウィンドウ:音声が流れている場合は 2.0 秒、トリガーのみが聞こえた場合は 5.0 秒。

- ハードストップ:暴走セッションを防ぐために 120 秒。

- セッション間のデバウンス:350 ミリ秒。

- オーバーレイは ''VoiceWakeOverlayController'' を介して駆動され、コミット/揮発性の色付けが行われます。

- 送信後、認識器は次のトリガーをリッスンするためにクリーンに再起動します。

Tutorial.step

ライフサイクルのバリアント

- 音声ウェイクが有効で権限が付与されている場合、ウェイクワード認識器はリッスンしている必要があります(明示的なプッシュツートークキャプチャ中を除く)。

- オーバーレイの可視性(X ボタンによる手動閉じるを含む)は、認識器の再開を妨げてはなりません。

Tutorial.step

スティッキーオーバーレイの障害モード(以前)

以前は、オーバーレイが表示されたままになり、手動で閉じた場合、ランタイムの再起動試行がオーバーレイの可視性によってブロックされ、後続の再起動がスケジュールされなかったため、音声ウェイクが「死んだ」ように見えることがありました。

Hardening:

- ウェイクランタイムの再起動は、オーバーレイの可視性によってブロックされなくなりました。

- オーバーレイの閉じる完了は、''VoiceSessionCoordinator'' を介して ''VoiceSessionCoordinator'' をトリガーするため、手動 X 閉じるは常にリッスンを再開します。

Tutorial.step

プッシュツートークの詳細

- ホットキー検出は、''右 Option''(''.option'' + ''keyCode 61'')のグローバル ''.option'' モニターを使用します。イベントのみを監視します(飲み込みはしません)。

- キャプチャパイプラインは ''VoicePushToTalk'' にあります:音声をすぐに開始し、部分をオーバーレイにストリーミングし、解放時に ''VoiceWakeForwarder'' を呼び出します。

- プッシュツートークが開始されると、オーディオタップの競合を避けるためにウェイクワードランタイムを一時停止します。解放後に自動的に再開します。

- 権限:マイク + 音声認識が必要。イベントを表示するには、アクセシビリティ/入力監視の承認が必要です。

- 外部キーボード:一部は期待通りに右 Option を公開しない場合があります——ユーザーが見逃しを報告した場合、フォールバックショートカットを提供します。

Tutorial.step

ユーザー向け設定

- 音声ウェイク トグル:ウェイクワードランタイムを有効にします。

- Cmd+Fn を押して話す:プッシュツートークモニターを有効にします。macOS < 26 では無効です。

- 言語とマイクの選択、リアルタイムレベルメーター、トリガーワードテーブル、テスター(ローカルのみ;転送しません)。

- マイク選択は、デバイスが切断された場合に最後の選択を保持し、切断されたヒントを表示し、戻るまで一時的にシステムデフォルトにフォールバックします。

- ''サウンド'':トリガー検出と送信時にチャイムが鳴ります。デフォルトは macOS の「Glass」システムサウンドです。各イベントに任意の ''NSSound'' ロード可能ファイル(MP3/WAV/AIFF など)を選択するか、''サウンドなし''を選択できます。

Tutorial.step

Forwarding behavior

- 音声ウェイクが有効な場合、転写はアクティブなゲートウェイ/エージェントに転送されます(mac アプリの残りの部分で使用されるのと同じローカルとリモートモード)。

- 返信は最後に使用されたメインプロバイダー(WhatsApp/Telegram/Discord/WebChat)に配信されます。配信に失敗した場合、エラーがログに記録され、実行は WebChat/セッションログを通じて引き続き表示されます。

Tutorial.step

転送ペイロード

- ''VoiceWakeForwarder.prefixedTranscript(_:)'' は、送信前にマシンヒントを先頭に追加します。ウェイクワードとプッシュツートークパス間で共有されます。

Tutorial.step

簡単な検証

- プッシュツートークをオンに切り替え、Cmd+Fn を押して話し、解放します:オーバーレイは部分を表示してから送信する必要があります。

- 押している間、メニューバーの耳は拡大されたままになります(''triggerVoiceEars(ttl:nil)'' を使用);解放後に消えます。