macOS companion app

音声ウェイク(macOS)

Voice Wake と Push-to-Talk

要件

Voice Wake と push-to-talk には macOS 26 以降が必要です。古い macOS バージョンでは、 Voice 設定ページからコントロールが非表示になり、macOS 26 要件が表示されます。

モード

  • ウェイクワードモード(デフォルト): 常時オンの Speech recognizer がトリガートークン(swabbleTriggerWords)を待機します。一致するとキャプチャを開始し、部分テキスト付きのオーバーレイを表示し、無音後に自動送信します。
  • Push-to-talk(右 Option 長押し): 右 Option キーを長押しすると、トリガーなしですぐにキャプチャします。長押し中はオーバーレイが表示され、離すと確定して短い遅延後に転送されるため、テキストを微調整できます。

実行時の動作(ウェイクワード)

  • Speech recognizer は VoiceWakeRuntime にあります。
  • トリガーは、ウェイクワードと次の単語の間に意味のある一時停止(約 0.55 秒の間隔)がある場合にのみ発火します。コマンドが始まる前でも、その一時停止でオーバーレイ/チャイムを開始できます。
  • 無音ウィンドウ: 発話が続いている場合は 2.0 秒、トリガーだけが聞こえた場合は 5.0 秒。
  • ハード停止: セッションの暴走を防ぐため 120 秒。
  • セッション間のデバウンス: 350ms。
  • オーバーレイは VoiceWakeOverlayController によって駆動され、確定/揮発の色分けを使います。
  • 送信後、recognizer はクリーンに再起動し、次のトリガーを待機します。

ライフサイクルの不変条件

  • Voice Wake が有効で権限が付与されている場合、ウェイクワード recognizer はリスニング状態である必要があります(明示的な push-to-talk キャプチャ中を除く)。
  • オーバーレイの表示状態(X ボタンによる手動非表示を含む)が、recognizer の再開を妨げてはなりません。

固着したオーバーレイの失敗モード(以前)

以前は、オーバーレイが表示されたまま固着し、それを手動で閉じると、ランタイムの再起動試行がオーバーレイの表示状態によってブロックされ、後続の再起動もスケジュールされないため、Voice Wake が「停止」したように見えることがありました。

強化内容:

  • Wake runtime の再起動は、オーバーレイの表示状態によってブロックされなくなりました。
  • オーバーレイ非表示の完了により、VoiceSessionCoordinator 経由で VoiceWakeRuntime.refresh(...) がトリガーされるため、手動の X 非表示後も常にリスニングが再開されます。

Push-to-talk の詳細

  • ホットキー検出では、右 OptionkeyCode 61 + .option)用のグローバル .flagsChanged モニターを使用します。イベントは監視のみ行います(飲み込みません)。
  • キャプチャパイプラインは VoicePushToTalk にあります。Speech を即座に開始し、部分結果をオーバーレイへストリーミングし、離したときに VoiceWakeForwarder を呼び出します。
  • push-to-talk 開始時には、競合する音声タップを避けるためにウェイクワードランタイムを一時停止します。離した後に自動的に再起動します。
  • 権限: マイク + Speech が必要です。イベントの確認にはアクセシビリティ/入力監視の承認が必要です。
  • 外部キーボード: 一部では右 Option が期待どおりに公開されないことがあります。ユーザーから取りこぼしの報告がある場合は、代替ショートカットを提供してください。

ユーザー向け設定

  • Voice Wake トグル: ウェイクワードランタイムを有効にします。
  • 右 Option を長押しして話す: push-to-talk モニターを有効にします。
  • 言語とマイクのピッカー、ライブレベルメーター、トリガーワード表、テスター(ローカルのみ。転送しません)。
  • マイクピッカーは、デバイスが切断された場合も最後の選択を保持し、切断ヒントを表示し、戻るまで一時的にシステムデフォルトへフォールバックします。
  • サウンド: トリガー検出時と送信時にチャイムを鳴らします。デフォルトは macOS の「Glass」システムサウンドです。各イベントに対して任意の NSSound 読み込み可能ファイル(例: MP3/WAV/AIFF)を選択するか、サウンドなしを選べます。

転送動作

  • Voice Wake が有効な場合、文字起こしはアクティブな gateway/agent に転送されます(mac アプリの他の部分で使用されるものと同じローカル/リモートモード)。
  • 返信は最後に使用したメインプロバイダー(WhatsApp/Telegram/Discord/WebChat)へ配信されます。配信に失敗した場合、エラーはログに記録され、実行は WebChat/セッションログから引き続き表示できます。

転送ペイロード

  • VoiceWakeForwarder.prefixedTranscript(_:) は送信前にマシンヒントを付加します。ウェイクワードと push-to-talk のパスで共有されます。

クイック確認

  • push-to-talk をオンに切り替え、右 Option を長押しして話し、離します。オーバーレイに部分結果が表示され、その後送信されるはずです。
  • 長押し中、メニューバーの耳は拡大されたままである必要があります(triggerVoiceEars(ttl:nil) を使用)。離した後に元に戻ります。

関連

Was this useful?
On this page

On this page