對話模式

對話模式是一個連續的語音對話迴圈:

  1. 聆聽語音
  2. 將轉錄文字傳送給模型(主工作階段,chat.send)
  3. 等待回應
  4. 透過 ElevenLabs 朗讀回應(串流播放)

行為(macOS)

  • 對話模式啟用期間顯示常駐覆蓋層
  • 聆聽 → 思考 → 朗讀的階段轉換。
  • 短暫停頓(靜默窗口)後,自動傳送當前轉錄文字。
  • 回覆會寫入 WebChat(與打字相同)。
  • 語音打斷(預設開啟):使用者在助理朗讀時開口說話,會停止播放並在下次提示中記錄打斷的時間戳記。

回覆中的語音指令

助理可以在回覆開頭加上一行 JSON 來控制語音:

{ "voice": "<voice-id>", "once": true }

規則:

  • 僅限第一行非空行。
  • 不認識的鍵值會被忽略。
  • once: true 僅套用於當前回覆。
  • 不含 once 時,該語音成為對話模式的新預設值。
  • JSON 行在 TTS 播放前會被移除。

支援的鍵值:

  • voice / voice_id / voiceId
  • model / model_id / modelId
  • speedrate(WPM)、stabilitysimilaritystylespeakerBoost
  • seednormalizelangoutput_formatlatency_tier
  • once

設定(~/.openclaw/openclaw.json

{
  talk: {
    voiceId: "elevenlabs_voice_id",
    modelId: "eleven_v3",
    outputFormat: "mp3_44100_128",
    apiKey: "elevenlabs_api_key",
    silenceTimeoutMs: 1500,
    interruptOnSpeech: true,
  },
}

預設值:

  • interruptOnSpeech:true
  • silenceTimeoutMs:未設定時,對話模式使用平台預設的停頓窗口(macOS 和 Android 為 700 ms,iOS 為 900 ms
  • voiceId:退回至 ELEVENLABS_VOICE_ID / SAG_VOICE_ID(或 API 金鑰可用時的第一個 ElevenLabs 語音)
  • modelId:未設定時預設為 eleven_v3
  • apiKey:退回至 ELEVENLABS_API_KEY(或可用的 gateway shell profile)
  • outputFormat:macOS/iOS 預設為 pcm_44100,Android 預設為 pcm_24000(設定 mp3_* 可強制使用 MP3 串流)

macOS UI

  • 選單列切換:Talk
  • 設定頁:Talk Mode 區塊(語音 id + 打斷開關)
  • 覆蓋層:
    • 聆聽:雲朵隨麥克風音量脈動
    • 思考:下沉動畫
    • 朗讀:擴散光圈
    • 點擊雲朵:停止朗讀
    • 點擊 X:退出對話模式

注意事項

  • 需要語音辨識與麥克風權限。
  • 使用 chat.send 對工作階段金鑰 main 操作。
  • TTS 使用 ElevenLabs 串流 API 搭配 ELEVENLABS_API_KEY,在 macOS/iOS/Android 上以增量播放降低延遲。
  • eleven_v3stability 值限定為 0.00.51.0;其他模型接受 0..1
  • 設定時,latency_tier 值限定為 0..4
  • Android 支援 pcm_16000pcm_22050pcm_24000pcm_44100 輸出格式,用於低延遲的 AudioTrack 串流。