Talk 模式
Talk mode 有兩種執行時形態:
- 原生 macOS/iOS/Android Talk 使用本機語音辨識、Gateway 聊天和
talk.speakTTS。節點會廣播talk功能並宣告它們支援的talk.*指令。 - 瀏覽器 Talk 使用
talk.client.create進行用戶端擁有的webrtc和provider-websocket工作階段,或是使用talk.session.create進行 Gateway 擁有的gateway-relay工作階段。managed-room是保留給 Gateway 移交和對講機房間使用的。 - Android Talk 可以選擇使用
talk.realtime.mode: "realtime"和talk.realtime.transport: "gateway-relay"來參與 Gateway 所有的即時轉發會話。否則,它會繼續使用原生語音辨識、Gateway 聊天和talk.speak。 - 僅轉錄客戶端在需要字幕或聽寫而不需要助理語音回應時,會使用
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }),然後使用talk.session.appendAudio、talk.session.cancelTurn和talk.session.close。
原生 Talk 是一個連續的語音對話迴圈:
- 聆聽語音
- 透過啟用的會話將文字記錄發送給模型
- 等待回應
- 透過設定的 Talk 提供者 (
talk.speak) 播放語音
瀏覽器即時 Talk 透過 talk.client.toolCall 轉發提供者工具呼叫;瀏覽器客戶端不會為了即時諮詢直接呼叫 chat.send。
僅轉錄 Talk 會發出與即時和 STT/TTS 會話相同的通用 Talk 事件封套,但使用 mode: "transcription" 和 brain: "none"。這是用於字幕、聽寫和僅觀察的語音擷取;一次性上傳的語音備忘錄仍使用 media/audio 路徑。
- 啟用 Talk 模式時始終顯示覆蓋層。
- 聆聽 → 思考 → 說話 階段轉換。
- 在短暫暫停(靜音視窗)時,發送當前的文字記錄。
- 回覆會寫入 WebChat(與輸入相同)。
- 語音中斷(預設開啟):如果使用者在助理說話時開始說話,我們會停止播放並記錄中斷時間戳記以供下一個提示使用。
回覆中的語音指令
Section titled “回覆中的語音指令”助理可以在其回覆前加上單行 JSON 來控制語音:
{ "voice": "<voice-id>", "once": true }規則:
- 僅限第一個非空行。
- 未知的金鑰會被忽略。
once: true僅適用於當前回覆。- 如果沒有
once,語音將成為 Talk 模式的新預設值。 - JSON 行會在 TTS 播放前被移除。
支援的金鑰:
voice/voice_id/voiceIdmodel/model_id/modelIdspeed,rate(WPM),stability,similarity,style,speakerBoostseed,normalize,lang,output_format,latency_tieronce
Config (~/.openclaw/openclaw.json)
Section titled “Config (~/.openclaw/openclaw.json)”{ talk: { provider: "elevenlabs", providers: { elevenlabs: { voiceId: "elevenlabs_voice_id", modelId: "eleven_v3", outputFormat: "mp3_44100_128", apiKey: "elevenlabs_api_key", }, mlx: { modelId: "mlx-community/Soprano-80M-bf16", }, system: {}, }, speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, realtime: { provider: "openai", providers: { openai: { apiKey: "openai_api_key", model: "gpt-realtime-2", voice: "cedar", }, }, instructions: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}預設值:
interruptOnSpeech: truesilenceTimeoutMs: 當未設定時,Talk 在發送轉錄文字之前會保留平台預設的暫停視窗 (700 ms on macOS and Android, 900 ms on iOS)provider: 選擇現用的 Talk 提供者。使用elevenlabs、mlx或system作為 macOS 本機播放路徑。providers.<provider>.voiceId: 退回至ELEVENLABS_VOICE_ID/SAG_VOICE_ID用於 ElevenLabs(或當有可用 API 金鑰時的第一個 ElevenLabs 語音)。providers.elevenlabs.modelId: 當未設定時,預設為eleven_v3。providers.mlx.modelId: 當未設定時,預設為mlx-community/Soprano-80M-bf16。providers.elevenlabs.apiKey: 退回至ELEVENLABS_API_KEY(或若有可用的 Gateway shell 設定檔)。consultThinkingLevel: 針對即時openclaw_agent_consult呼叫後方的完整 OpenClaw 代理程式執行,可選擇性地覆寫思考層級。consultFastMode: 針對即時openclaw_agent_consult呼叫,可選擇性地覆寫快速模式。realtime.provider: 選擇現用的瀏覽器/伺服器即時語音提供者。使用openai作為 WebRTC,google作為提供者 WebSocket,或透過 Gateway 中繼使用僅橋接提供者。realtime.providers.<provider>儲存提供者擁有的即時設定。瀏覽器僅接收暫時或受限制的會話憑證,絕不會收到標準的 API 金鑰。realtime.providers.openai.voice:內建 OpenAI Realtime 語音 ID。目前的gpt-realtime-2語音有alloy、ash、ballad、coral、echo、sage、shimmer、verse、marin和cedar;建議使用marin和cedar以獲得最佳品質。realtime.transport:webrtc和provider-websocket是瀏覽器即時傳輸。僅當此項為gateway-relay時,Android 才會使用即時中繼;否則 Android Talk 使用其原生的 STT/TTS 迴圈。realtime.brain:agent-consult透過 Gateway 原則路由即時工具呼叫;direct-tools僅限擁有者的相容性行為;none用於轉錄或外部協調。realtime.instructions:將提供者面向的系統指令附加至 OpenClaw 的內建即時提示。使用它來設定語音風格和語氣;OpenClaw 會保留預設的openclaw_agent_consult指引。talk.catalog會公開每個提供者的有效模式、傳輸、大腦策略、即時音訊格式和功能標誌,以便第一方 Talk 用戶端可以避免不支援的組合。- 串流轉錄提供者是透過
talk.catalog.transcription發現的。目前的 Gateway 中繼使用 Voice Call 串流提供者設定,直到新增專用的 Talk 轉錄設定介面為止。 speechLocale:iOS/macOS 上裝置端 Talk 語音辨識的可選 BCP 47 地區 ID。保持未設定以使用裝置預設值。outputFormat:在 macOS/iOS 上預設為pcm_44100,在 Android 上預設為pcm_24000(設定mp3_*以強制進行 MP3 串流)。
macOS UI
Section titled “macOS UI”- 選單列切換:Talk
- 設定標籤頁:Talk Mode 群組(語音 ID + 插斷切換)
- 覆蓋層:
- 聆聽:雲端根據麥克風音量脈動
- 思考:下沉動畫
- 說話:向外擴散的環狀波紋
- 點擊雲端:停止說話
- 點擊 X:退出交談模式
Android 介面
Section titled “Android 介面”- 語音分頁切換:交談
- 手動 麥克風 與 交談 是互斥的執行時擷取模式。
- 當應用程式離開前景或使用者離開語音分頁時,手動麥克風會停止。
- 交談模式會持續執行,直到切換關閉或 Android 節點斷線,並在啟用期間使用 Android 的麥克風前景服務類型。
- 需要語音 + 麥克風權限。
- 原生交談使用作用中的 Gateway 工作階段,並僅在無回應事件時回退至輪詢歷史記錄。
- 瀏覽器即時交談對
openclaw_agent_consult使用talk.client.toolCall,而不是向提供者擁有的瀏覽器工作階段公開chat.send。 - 僅轉錄的交談使用
talk.session.create、talk.session.appendAudio、talk.session.cancelTurn和talk.session.close;用戶端訂閱talk.event以取得部分/最終轉錄更新。 - 閘道會透過使用作用中交談提供者的
talk.speak解析交談播放。Android 僅在該 RPC 不可用時回退至本機系統 TTS。 - macOS 本機 MLX 播放會在可用時使用隨附的
openclaw-mlx-tts助手程式,或是PATH上的可執行檔。在開發期間設定OPENCLAW_MLX_TTS_BIN以指向自訂助手程式二進位檔。 eleven_v3的stability會驗證為0.0、0.5或1.0;其他模型則接受0..1。- 設定時,
latency_tier會驗證為0..4。 - Android 支援
pcm_16000、pcm_22050、pcm_24000和pcm_44100輸出格式,用於低延遲 AudioTrack 串流。