对话模式
Talk Mode(对话模式)是 OpenClaw 的实时语音交互功能,让你可以像和真人对话一样与 Agent 进行语音沟通。
启动对话模式
bash
openclaw node --type audio --talk快速启动
对话模式会自动启用音频节点的 STT 和 TTS 功能,无需单独配置。
对话方式
OpenClaw 支持两种语音交互模式:
Push-to-Talk(按键说话)
按住指定按键时录音,松开后 Agent 开始处理。
yaml
talk:
mode: push_to_talk
trigger_key: space # 触发按键(空格键)
min_duration: 0.5 # 最短录音时长(秒)
max_duration: 60 # 最长录音时长(秒)适用场景:
- 嘈杂环境
- 需要精确控制录音时机
- 移动设备上使用
Always-Listening(持续监听)
Agent 持续监听,通过 VAD(Voice Activity Detection,语音活动检测)自动识别用户发言。
yaml
talk:
mode: always_listening
vad:
enabled: true
sensitivity: medium # low / medium / high
silence_timeout: 1500 # 静默超时(毫秒),超过此时间认为发言结束
min_speech: 300 # 最短语音时长(毫秒),过滤噪音适用场景:
- 安静环境
- 免提使用
- 智能音箱场景
注意
Always-listening 模式下,麦克风持续处于录音状态。请确保在隐私安全的环境中使用,并注意功耗。
全双工语音(Full-Duplex)
Full-Duplex(全双工)模式允许你和 Agent 同时说话,Agent 在播放回复的同时仍能听到你的新输入。
yaml
talk:
duplex: full # full / half
interrupt: true # 允许打断 Agent 的回复
echo_cancellation: true # 回声消除| 模式 | 说明 | 适用场景 |
|---|---|---|
full | 全双工,可同时收发 | 自然对话体验 |
half | 半双工,轮流说话 | 性能较低的设备 |
打断机制
开启 interrupt 后,用户可以随时打断 Agent 的语音回复:
Agent:(正在朗读一篇长文章...)
用户:停,直接告诉我结论。
Agent:好的,结论是...语音活动检测(VAD)
VAD 是对话模式的核心组件,负责区分语音和静默/噪音。
支持的 VAD 引擎
| 引擎 | 精度 | 性能 | 特点 |
|---|---|---|---|
| Silero VAD | 高 | 轻量 | 推荐,本地运行 |
| WebRTC VAD | 中 | 极轻量 | 浏览器原生支持 |
| Energy-based | 低 | 极轻量 | 基于音量阈值 |
yaml
talk:
vad:
engine: silero # silero / webrtc / energy
threshold: 0.5 # 检测阈值 (0.0-1.0)
window_size: 1024 # 检测窗口大小(采样点)延迟优化
语音对话的体验很大程度取决于端到端延迟 Latency(响应时间):
用户发言结束 → STT 转文字 → LLM 推理 → TTS 合成 → 开始播放
~300ms ~500ms ~200ms ~50ms
≈ 总延迟约 1-1.5 秒优化建议
| 优化项 | 方法 | 效果 |
|---|---|---|
| STT 延迟 | 使用流式 STT(Deepgram) | 减少 ~200ms |
| LLM 延迟 | 使用流式输出 | 首字延迟减少 ~300ms |
| TTS 延迟 | 使用流式 TTS | 减少 ~150ms |
| 网络延迟 | 节点与网关同一局域网 | 减少 ~50ms |
yaml
talk:
mode: always_listening
duplex: full
streaming:
stt: true # 流式语音识别
llm: true # 流式 LLM 输出
tts: true # 流式语音合成
vad:
engine: silero
silence_timeout: 800 # 缩短静默超时yaml
talk:
mode: push_to_talk
duplex: half
streaming:
stt: false
llm: true
tts: false
audio:
encoding: opus
sample_rate: 16000
bitrate: 24000对话上下文
对话模式下的语音对话也会保存上下文,Agent 记得之前说过什么:
yaml
talk:
context:
max_turns: 20 # 保留最近 20 轮对话
include_timestamps: true # 记录每轮对话的时间配置示例
智能音箱场景
yaml
talk:
mode: always_listening
duplex: full
interrupt: true
vad:
engine: silero
sensitivity: medium
silence_timeout: 1500
streaming:
stt: true
llm: true
tts: true
tts:
voice: zh-CN-YunxiNeural
speed: 1.1车载助手场景
yaml
talk:
mode: always_listening
duplex: half
vad:
engine: silero
sensitivity: low # 降低灵敏度,过滤车内噪音
silence_timeout: 2000
audio:
noise_suppression: true
noise_level: aggressive常用命令
bash
# 启动对话模式
openclaw node --type audio --talk
# 按键说话模式
openclaw node --type audio --talk --push-to-talk
# 指定 TTS 音色
openclaw node --type audio --talk --voice zh-CN-XiaoxiaoNeural故障排查
| 问题 | 解决方案 |
|---|---|
| Agent 不回复 | 检查 STT 和 LLM 配置是否正确 |
| 回声问题 | 开启 echo_cancellation |
| 持续误触发 | 调低 VAD sensitivity 或切换 push_to_talk |
| 延迟太高 | 开启所有流式选项,使用低延迟提供商 |
更多问题请参考 故障排查。
