对话模式是一个连续的语音对话循环,使用语音识别和文本转语音(TTS)实现与 AI 助手的自然对话。
概述
对话模式的工作流程包括:
- 监听用户语音输入
- 将语音转录文本发送给模型(主会话,chat.send)
- 等待模型响应
- 通过 ElevenLabs 语音合成播放响应(流式播放)
行为特点 (macOS)
- 始终显示覆盖层 - 启用对话模式时会显示悬浮窗口
- 阶段转换 - 监听 → 思考 → 说话三个阶段的视觉反馈
- 自动发送 - 检测到短暂停顿(静音窗口)时,当前转录文本会被发送
- WebChat 同步 - 回复会同时写入 WebChat(就像打字一样)
- 语音打断 - (默认开启)如果用户在助手说话时开始讲话,播放会停止并记录打断时间戳用于下一个提示
语音指令控制
助手可以在回复前加一行 JSON 来控制语音输出:
{ "voice": "", "once": true }
- 仅识别第一个非空行
- 未知的键会被忽略
once: true仅应用于当前回复- 不设置
once时,该语音会成为对话模式的新默认语音 - JSON 行会在 TTS 播放前被移除
配置 (~/.openclaw/openclaw.json)
{
talk: {
voiceId: "elevenlabs_voice_id", // 语音 ID
modelId: "eleven_v3", // 语音模型
outputFormat: "mp3_44100_128", // 输出格式
apiKey: "elevenlabs_api_key", // API 密钥
interruptOnSpeech: true, // 语音打断
},
}
配置参数说明
interruptOnSpeech- 默认truevoiceId- 回退到ELEVENLABS_VOICE_ID或SAG_VOICE_IDmodelId- 默认eleven_v3apiKey- 回退到ELEVENLABS_API_KEYoutputFormat- macOS/iOS 默认pcm_44100, Android 默认pcm_24000
macOS 用户界面
菜单栏
- Talk - 切换对话模式开关
配置标签页
- Talk Mode 组 - 配置语音 ID 和打断开关
覆盖层状态
- 监听中 - 云朵图标随麦克风音量脉动
- 思考中 - 下沉动画效果
- 说话中 - 辐射环形动画
- 点击云朵 - 停止说话
- 点击 X - 退出对话模式
注意事项
权限要求
需要授予语音识别和麦克风权限
- 使用
chat.send对会话键main进行通信 - TTS 使用 ElevenLabs 流式 API 和
ELEVENLABS_API_KEY - macOS/iOS/Android 支持增量播放以降低延迟
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 流式播放
提示
更多详情请参考 官方文档 - Talk Mode