Skip to content
广告 · 本站推荐广告

对话模式

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
延迟太高开启所有流式选项,使用低延迟提供商

更多问题请参考 故障排查

基于MIT协议开源 | 内容翻译自 官方文档,同步更新