---
read_when:
    - 音声ウェイクまたは PTT 経路に取り組む
summary: Mac アプリの音声ウェイクとプッシュ・トゥ・トークモード、およびルーティングの詳細
title: 音声ウェイク（macOS）
x-i18n:
    generated_at: "2026-06-27T12:05:05Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 33c6132d03efb837ae06f4810ff87eb981ad742d793657bc607f4ec214bc2afa
    source_path: platforms/mac/voicewake.md
    workflow: 16
---

# 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 の詳細

- ホットキー検出では、**右 Option**（`keyCode 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)` を使用）。離した後に元に戻ります。

## 関連

- [Voice wake](/ja-JP/nodes/voicewake)
- [Voice overlay](/ja-JP/platforms/mac/voice-overlay)
- [macOS アプリ](/ja-JP/platforms/macos)
