- 原生 macOS/iOS/Android Talk:本機語音辨識、閘道聊天,以及
talk.speakTTS。節點會通告talk能力,並宣告支援哪些talk.*命令。 - iOS Talk(即時):針對選擇
webrtc傳輸或省略傳輸的 OpenAI 即時設定,使用客戶端擁有的 WebRTC。明確的gateway-relay、provider-websocket,以及非 OpenAI 即時設定會留在閘道擁有的轉送上;非即時設定則使用原生語音迴圈。 - 瀏覽器 Talk:客戶端擁有的
webrtc/provider-websocket工作階段使用talk.client.create,閘道擁有的gateway-relay工作階段使用talk.session.create。managed-room保留給閘道交接和對講機房間。 - Android Talk(即時):透過
talk.realtime.mode: "realtime"和talk.realtime.transport: "gateway-relay"選擇啟用。否則 Android 會維持使用原生語音辨識、閘道聊天,以及talk.speak。 - 僅轉錄客戶端:
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }),接著使用talk.session.appendAudio、talk.session.cancelTurn和talk.session.close,可在沒有助理語音回應的情況下進行字幕/聽寫。一次性上傳的語音記事仍使用 媒體理解 音訊路徑。
talk.speak)朗讀。
客戶端擁有的即時 Talk 會透過 talk.client.toolCall 轉送提供者工具呼叫,而不是直接呼叫 chat.send。即時諮詢作用中時,客戶端可以呼叫 talk.client.steer 或 talk.session.steer,將口語輸入分類為 status、steer、cancel 或 followup。接受的導向會排入作用中的嵌入式執行;拒絕的導向會傳回原因,例如 no_active_run、not_streaming 或 compacting。
僅轉錄 Talk 會發出與即時和 STT/TTS 工作階段相同的 Talk 事件封套,但使用 mode: "transcription" 和 brain: "none"。所有 Talk 工作階段都會在 talk.event 頻道上廣播事件;客戶端訂閱該頻道,以取得部分/最終轉錄更新(transcript.delta/transcript.done)和其他工作階段遙測。
行為 (macOS)
- Talk 模式啟用時,疊加層永遠顯示。
- 聆聽 → 思考 → 說話 階段轉換。
- 短暫停頓(靜音視窗)時,會傳送目前的轉錄稿。
- 回覆會寫入 WebChat(與輸入相同)。
- 語音打斷(預設開啟):如果使用者在助理說話時講話,播放會停止,且打斷時間戳記會記錄供下一個提示使用。
回覆中的語音指令
助理可以在回覆前加上一行 JSON 來控制語音:- 僅限第一個非空白行;JSON 行會在 TTS 播放前移除。
- 未知鍵會被忽略。
once: true僅套用於目前回覆;若沒有它,該語音會成為新的 Talk 模式預設值。
voice / voice_id / voiceId、model / model_id / modelId、speed、rate(WPM)、stability、similarity、style、speakerBoost、seed、normalize、lang、output_format、latency_tier、once。
設定 (~/.openclaw/openclaw.json)
| 鍵 | 預設值 | 備註 |
|---|---|---|
provider | - | 作用中的 Talk TTS 提供者。針對 macOS 本機播放路徑使用 elevenlabs、mlx 或 system。 |
providers.<id>.voiceId | - | ElevenLabs 會退回使用 ELEVENLABS_VOICE_ID / SAG_VOICE_ID,或在有 API 金鑰時使用第一個可用語音。 |
providers.elevenlabs.modelId | eleven_v3 | |
providers.mlx.modelId | mlx-community/Soprano-80M-bf16 | |
providers.elevenlabs.apiKey | - | 會退回使用 ELEVENLABS_API_KEY(或可用時使用閘道 shell 設定檔)。 |
speechLocale | 裝置預設值 | iOS/macOS 上裝置端 Talk 語音辨識的 BCP 47 語言地區 ID。 |
silenceTimeoutMs | 700 ms macOS/Android,900 ms iOS | Talk 傳送轉錄稿前的暫停視窗。 |
interruptOnSpeech | true | |
outputFormat | pcm_44100 macOS/iOS,pcm_24000 Android | 設為 mp3_* 以強制 MP3 串流。 |
consultThinkingLevel | 未設定 | 即時 openclaw_agent_consult 呼叫背後代理執行的思考等級覆寫。 |
consultFastMode | 未設定 | 即時 openclaw_agent_consult 呼叫的快速模式覆寫。 |
realtime.provider | - | openai 用於 WebRTC,google 用於提供者 WebSocket,或透過閘道轉送使用僅橋接的提供者。 |
realtime.providers.<id> | - | 提供者擁有的即時設定。瀏覽器只會收到臨時/受限的工作階段憑證,絕不會收到標準 API 金鑰。 |
realtime.providers.openai.speakerVoice | alloy | 內建 OpenAI Realtime 語音 ID(較舊的 voice 鍵仍可運作,但已棄用)。目前 gpt-realtime-2 語音:alloy、ash、ballad、cedar、coral、echo、marin、sage、shimmer、verse;建議使用 marin 和 cedar 以取得最佳品質。 |
realtime.transport | - | webrtc:iOS 和瀏覽器中的客戶端擁有 OpenAI WebRTC。provider-websocket:瀏覽器擁有,在 iOS 上會留在閘道轉送。gateway-relay:讓提供者音訊保留在閘道上;Android 只有搭配此傳輸才會使用即時模式。 |
realtime.brain | - | agent-consult 透過閘道政策路由即時工具呼叫;direct-tools 是舊版直接工具相容性;none 用於轉錄/外部編排。 |
realtime.consultRouting | - | 當提供者略過 openclaw_agent_consult 時,provider-direct 會保留提供者的直接回覆;force-agent-consult 則會改為透過 OpenClaw 路由最終使用者轉錄稿。 |
realtime.instructions | - | 將面向提供者的系統指示附加到 OpenClaw 內建即時提示(語音風格/語氣);預設的 openclaw_agent_consult 指引會保留。 |
talk.catalog 會公開標準提供者 ID 和註冊表別名、每個提供者的有效模式/傳輸/brain 策略/即時音訊格式/能力旗標,以及執行階段選取的就緒結果。第一方 Talk 客戶端應讀取該目錄,而不是在本機維護提供者別名;對於省略群組就緒狀態的較舊閘道,應視為未驗證,而不是明確認定為未設定。串流轉錄提供者會透過 talk.catalog.transcription 探索;目前的閘道轉送會使用 Voice Call 串流提供者設定,直到專用的 Talk 轉錄設定介面推出為止。
macOS UI
- 選單列切換:Talk
- 設定分頁:Talk Mode 群組(語音 ID + 中斷切換)
- 覆蓋層:正在聆聽(雲朵隨麥克風音量脈動)→ 正在思考(下沉動畫)→ 正在說話(向外輻射圓環)。按一下雲朵可停止說話,按一下 X 可退出 Talk 模式。
Android UI
- 語音分頁切換:Talk
- 手動 Mic 和 Talk 是互斥的擷取模式。
- 手動 Mic 和即時 Talk 會優先使用已連線的 Bluetooth Classic 或 BLE 耳機麥克風;如果連線中斷,應用程式會要求另一個耳機輸入,或退回預設麥克風,並在擷取停止後還原預設偏好設定。
- 手動 Mic 會在應用程式離開前景或使用者離開語音分頁時停止。
- Talk Mode 會持續執行,直到切換為關閉或節點中斷連線,並在作用中時使用 Android 的麥克風前景服務類型。
- Android 支援
pcm_16000、pcm_22050、pcm_24000和pcm_44100輸出格式,用於低延遲AudioTrack串流。
備註
- 需要語音 + 麥克風權限。
- 原生 Talk 使用作用中的閘道工作階段,並且只在回應事件無法使用時退回歷史輪詢。
- 閘道會透過
talk.speak使用作用中的 Talk 提供者解析 Talk 播放。Android 只在該 RPC 無法使用時退回本機系統 TTS。 - macOS 本機 MLX 播放會在存在時使用隨附的
openclaw-mlx-tts輔助程式,或使用PATH上的可執行檔。開發期間可設定OPENCLAW_MLX_TTS_BIN指向自訂輔助程式二進位檔。 - 語音指令值範圍(ElevenLabs):
stability、similarity和style接受0..1;speed接受0.5..2;latency_tier接受0..4。