Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
語音喚醒與按住說話
模式
- 喚醒詞模式(預設):永遠開啟的語音辨識器會等待觸發詞(
swabbleTriggerWords)。符合時會開始擷取、顯示帶有部分文字的覆蓋層,並在靜音後自動送出。 - 按住說話(按住右 Option):按住右 Option 鍵即可立即擷取,不需要觸發詞。按住時會顯示覆蓋層;放開後會完成並在短暫延遲後轉送,讓你可以微調文字。
執行階段行為(喚醒詞)
- 語音辨識器位於
VoiceWakeRuntime。 - 只有當喚醒詞和下一個字之間有有意義的停頓(約 0.55 秒間隔)時才會觸發。覆蓋層/提示音可以在命令開始前的停頓時就啟動。
- 靜音視窗:語音持續時為 2.0 秒;如果只聽到觸發詞則為 5.0 秒。
- 強制停止:120 秒,避免工作階段失控。
- 工作階段之間的防抖:350 毫秒。
- 覆蓋層透過
VoiceWakeOverlayController驅動,並使用已提交/暫存的著色。 - 送出後,辨識器會乾淨地重新啟動,以聆聽下一個觸發詞。
生命週期不變條件
- 如果語音喚醒已啟用且權限已授予,喚醒詞辨識器應保持聆聽中(明確的按住說話擷取期間除外)。
- 覆蓋層可見性(包括透過 X 按鈕手動關閉)絕不能阻止辨識器恢復。
黏住的覆蓋層失敗模式(先前)
先前,如果覆蓋層卡住並保持可見,而你手動關閉它,語音喚醒可能看起來像是「失效」,因為執行階段的重新啟動嘗試可能會被覆蓋層可見性阻擋,且後續沒有排程重新啟動。 強化:- 喚醒執行階段重新啟動不再被覆蓋層可見性阻擋。
- 覆蓋層關閉完成會透過
VoiceSessionCoordinator觸發VoiceWakeRuntime.refresh(...),因此手動按 X 關閉一律會恢復聆聽。
按住說話細節
- 快捷鍵偵測使用全域
.flagsChanged監視器來偵測右 Option(keyCode 61+.option)。我們只觀察事件(不攔截)。 - 擷取管線位於
VoicePushToTalk:立即啟動語音辨識、將部分結果串流到覆蓋層,並在放開時呼叫VoiceWakeForwarder。 - 按住說話開始時,我們會暫停喚醒詞執行階段,以避免音訊 tap 互相競爭;放開後會自動重新啟動。
- 權限:需要麥克風與語音辨識;看到事件需要輔助使用/輸入監控核准。
- 外接鍵盤:有些鍵盤可能不會如預期公開右 Option;如果使用者回報漏偵測,請提供備用快捷鍵。
使用者可見設定
- 語音喚醒切換:啟用喚醒詞執行階段。
- 按住 Cmd+Fn 說話:啟用按住說話監視器。在 macOS < 26 上停用。
- 語言與麥克風選擇器、即時音量計、觸發詞表格、測試器(僅限本機;不轉送)。
- 如果裝置中斷連線,麥克風選擇器會保留上次選取項目、顯示中斷連線提示,並暫時退回系統預設值,直到裝置返回。
- 音效:偵測到觸發詞和送出時播放提示音;預設為 macOS「Glass」系統音效。你可以為每個事件選擇任何可由
NSSound載入的檔案(例如 MP3/WAV/AIFF),或選擇無音效。
轉送行為
- 啟用語音喚醒時,轉錄文字會轉送到作用中的 Gateway/agent(與 Mac 應用程式其餘部分使用的本機與遠端模式相同)。
- 回覆會傳送到上次使用的主要提供者(WhatsApp/Telegram/Discord/WebChat)。如果傳送失敗,錯誤會被記錄,且該次執行仍可透過 WebChat/工作階段記錄檢視。
轉送酬載
VoiceWakeForwarder.prefixedTranscript(_:)會在送出前加上機器提示。喚醒詞與按住說話路徑共用此邏輯。
快速驗證
- 開啟按住說話切換,按住 Cmd+Fn,說話,放開:覆蓋層應顯示部分結果,然後送出。
- 按住期間,選單列耳朵應保持放大(使用
triggerVoiceEars(ttl:nil));放開後會恢復。