Skip to content

Talk Mode(语音对话模式)

Talk Mode 是一个持续的语音对话循环:

  1. 监听语音
  2. 将转录文本发送给模型(主会话,chat.send)
  3. 等待响应
  4. 通过 ElevenLabs 播放语音(流式播放)

行为(macOS)

  • 启用 Talk Mode 后始终显示常驻浮窗
  • 监听 → 思考 → 说话 阶段切换。
  • 短暂停顿(静默窗口)后,当前转录文本被发送。
  • 回复写入 WebChat(与手动输入相同)。
  • 说话时打断(默认开启):用户开始说话时,若助手正在播放语音,则停止播放,并在下次提示中记录打断时间戳。

回复中的语音指令

助手可以在回复开头加一个 单行 JSON 来控制语音:

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

规则:

  • 仅首个非空行生效。
  • 未知键被忽略。
  • once: true 仅对当前回复生效。
  • 不带 once 时,voice 成为 Talk Mode 的新默认值。
  • 该 JSON 行在 TTS 播放前被剥除。

支持的键:

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

配置(~/.openclaw/openclaw.json

json5
{
  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 为 700ms,iOS 为 900ms
  • voiceId:回退到 ELEVENLABS_VOICE_ID / SAG_VOICE_ID(或 API key 可用时的第一个 ElevenLabs voice)
  • modelId:未设置时默认 eleven_v3
  • apiKey:回退到 ELEVENLABS_API_KEY(或网关 shell profile 中的密钥)
  • outputFormat:macOS/iOS 默认 pcm_44100,Android 默认 pcm_24000(设置 mp3_* 强制 MP3 流式传输)

macOS UI

  • 菜单栏开关:Talk
  • 配置标签页:Talk Mode 分组(voice id + 打断开关)
  • 浮窗:
    • 监听中:云朵随麦克风电平脉动
    • 思考中:下沉动画
    • 说话中:辐射光环
    • 点击云朵:停止语音播放
    • 点击 X:退出 Talk Mode

注意事项

  • 需要语音和麦克风权限。
  • 使用 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 流式播放。