Talk Mode

Talk mode 是一个连续的语音对话循环:

  1. 监听语音输入
  2. 将语音转文字后发送给模型(main session,chat.send)
  3. 等待响应
  4. 通过 ElevenLabs 播放语音(Streaming 播放)

行为特性(macOS)

  • 常驻悬浮窗:Talk mode 启用时会一直显示
  • 监听 → 思考 → 说话:三个阶段的转换
  • 短暂停顿:检测到静音窗口时,当前的语音转录会被发送
  • 回复写入 WebChat:和打字输入一样
  • 语音中断(默认开启):如果你在助手说话时开始讲话,会停止播放并记录中断时间戳,用于下一个 Prompt

回复中的语音指令

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

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

规则:

  • 只能在第一个非空行
  • 未知的键会被忽略
  • once: true 只对当前回复生效
  • 不加 once 时,语音会成为 Talk mode 的新默认值
  • 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",
    interruptOnSpeech: true,
  },
}

默认值:

  • interruptOnSpeech:true
  • voiceId:回退到 ELEVENLABS_VOICE_ID / SAG_VOICE_ID(或在 API key 可用时使用第一个 ElevenLabs 语音)
  • modelId:未设置时默认为 eleven_v3
  • apiKey:回退到 ELEVENLABS_API_KEY(或 Gateway shell profile 中的配置)
  • outputFormat:macOS/iOS 上默认为 pcm_44100,Android 上默认为 pcm_24000(设置 mp3_* 可强制使用 MP3 Streaming)

macOS 界面

  • 菜单栏切换:Talk
  • 配置标签页:Talk Mode 组(语音 ID + 中断开关)
  • 悬浮窗:
    • 监听中:云朵随麦克风音量脉动
    • 思考中:下沉动画
    • 说话中:辐射波纹
    • 点击云朵:停止说话
    • 点击 X:退出 Talk mode

注意事项

  • 需要语音和麦克风权限
  • 使用 chat.send 对 session key main 发送消息
  • TTS 使用 ElevenLabs Streaming 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 Streaming