macOS companion app
音声ウェイク(macOS)
音声ウェイクとプッシュトゥトーク
要件
音声ウェイクとプッシュトゥトークには、macOS 26以降が必要です。以前のmacOSでは、音声設定ページにコントロールが表示されず、代わりにmacOS 26が必要であることが示されます。
モード
- ウェイクワードモード(デフォルト):常時稼働の音声認識機能がトリガートークン(
swabbleTriggerWords)を待機します。一致するとキャプチャを開始し、部分的なテキストをオーバーレイに表示して、無音状態になった後に自動送信します。 - プッシュトゥトーク(右Optionを長押し):右Optionキーを押し続けると、トリガーなしですぐにキャプチャを開始します。押している間はオーバーレイが表示されます。キーを離すと確定し、テキストを編集できるように少し遅延してから転送します。
実行時の動作(ウェイクワード)
- 認識機能は
VoiceWakeRuntimeにあります。 - ウェイクワードと次の単語の間に明確な間がある場合(
triggerPauseWindow= 0.55秒)にのみ、トリガーが作動します。コマンドが始まる前でも、その間にオーバーレイやチャイムが開始されることがあります。 - 無音時間:発話が続いている場合は2.0秒(
silenceWindow)、トリガーだけが聞き取られた場合は5.0秒(triggerOnlySilenceWindow)です。 - 強制停止:セッションが際限なく継続するのを防ぐため、120秒(
captureHardStop)で停止します。 - セッション間のデバウンス:送信後350ミリ秒(
debounceAfterSend)です。 - オーバーレイは
VoiceWakeOverlayControllerを介して制御され、確定済みテキストと暫定テキストが色分けされます。 - 送信後、認識機能は次のトリガーを待機するために正常に再起動します。
ライフサイクルの不変条件
- 音声ウェイクが有効で権限が付与されている場合、プッシュトゥトークでキャプチャ中の場合を除き、ウェイクワード認識機能は待機状態を維持します。
- Xボタンによる手動の非表示を含め、オーバーレイが閉じられると、必ず認識機能が再開します。
VoiceSessionCoordinator.overlayDidDismissは、すべての非表示経路でVoiceWakeRuntime.refresh(state:)を呼び出します。セッションとトークンのモデルについては、音声オーバーレイを参照してください。
プッシュトゥトークの詳細
- ホットキーの検出には、右Option(
keyCode 61+.option)用のグローバルな.flagsChangedモニターを使用します。イベントを監視するだけで、イベントを抑止することはありません。 - キャプチャは
VoicePushToTalkで行われます。音声認識をすぐに開始し、部分的な結果をオーバーレイにストリーミングし、キーを離したときにVoiceWakeForwarderを呼び出します。 - 音声入力の競合を避けるため、プッシュトゥトークを開始するとウェイクワードランタイムが一時停止し、キーを離すと自動的に再起動します。
- 権限:マイクと音声認識の権限が必要です。キーイベントを受信するには、アクセシビリティまたは入力監視の許可が必要です。
- 外付けキーボード:一部のキーボードでは、右Optionが期待どおりに認識されません。ユーザーから反応しないとの報告があった場合は、代替ショートカットを提供してください。
ユーザー向け設定
- 音声ウェイクトグル:ウェイクワードランタイムを有効にします。
- 右Optionを押して話す:プッシュトゥトークモニターを有効にします。
- 言語とマイクの選択、リアルタイムのレベルメーター、トリガーワードの表、テスター(ローカル専用で、転送は行いません)があります。
- マイク選択では、デバイスが切断されても最後の選択が保持され、切断中であることを示すヒントが表示されます。デバイスが復帰するまでは、一時的にシステムのデフォルトへフォールバックします。
- サウンド:トリガー検出時と送信時にチャイムを鳴らします。デフォルトはmacOSの「Glass」システムサウンドです。イベントごとに
NSSoundで読み込み可能な任意のファイル(MP3、WAV、AIFFなど)を選択するか、サウンドなしを選択できます。
転送時の動作
- 転送時、
VoiceWakeForwarder.selectedSessionOptionsは、アクティブなWebChatセッションキーが設定されていればそれを選択し、設定されていなければGatewayのメインセッションキーを選択します。 sessions.listを使ってそのセッションを検索し、セッションの配信コンテキストから配信チャネルと宛先を取得します。取得できない場合は最後のチャネルと宛先、次に解析済みのセッションキーへとフォールバックし、何も解決できない場合はWebChatをデフォルトにします。- 配信に失敗した場合、エラーはログに記録され(
voicewake.forwardカテゴリ)、実行内容は引き続きWebChatまたはセッションログで確認できます。
転送ペイロード
VoiceWakeForwarder.prefixedTranscript(_:)は、文字起こしの前にマシン情報のヒント行(解決されたホスト名、取得できない場合は「このMac」)を付加します。これはウェイクワードとプッシュトゥトークの両方の経路で共通です。
クイック確認
- プッシュトゥトークをオンにし、右Optionを押しながら話して、キーを離します。オーバーレイに部分的な結果が表示された後、送信されることを確認してください。
- 押している間、メニューバーの耳アイコンは拡大した状態(
triggerVoiceEars(ttl: nil))を維持し、キーを離すと元に戻ります。
関連項目
Was this useful?