返回文章列表

实时语音 Agent 设计:WebRTC、打断与工具调用边界

从实时语音交互的工程约束出发,整理延迟、打断、状态和工具调用的设计要点。

实时语音 Agent 和普通聊天机器人不是同一种产品。聊天可以慢一点、长一点、再编辑;语音对延迟、打断、噪声和状态恢复都更敏感。OpenAI Realtime API 文档把低延迟多模态交互、音频输入输出和实时连接作为核心能力来说明。[voice-001]

先定义语音交互的失败方式

语音 Agent 常见失败不是“回答不够聪明”,而是交互节奏坏掉:

  • 用户说完后等待太久。
  • 用户打断时系统还在继续说。
  • 工具调用耗时,语音端没有反馈。
  • ASR 识别错误后,系统直接执行高风险动作。
  • 多轮对话里状态没有被确认。

实时语音的关键指标不是单次回答完整度,而是轮次节奏、可打断性和错误恢复。

可以把一次语音回合拆成:

音频输入 -> 语音活动检测 -> 文本/语义理解 -> 工具选择 -> 响应生成 -> 音频输出

WebRTC 适合前端实时连接

Realtime 文档提供了面向实时交互的连接方式。对于浏览器端语音产品,WebRTC 通常比普通 HTTP 请求更接近实时媒体流的需求。[voice-001]

工程设计上建议把状态分成三类:

  1. 会话状态:用户身份、当前任务、权限范围。
  2. 语音状态:是否正在说话、是否被打断、当前音频片段。
  3. 工具状态:工具是否执行中、是否需要确认、是否失败。

概念事件可以这样记录:

{
  "event": "tool_call_pending",
  "tool": "book_meeting",
  "requires_confirmation": true,
  "spoken_feedback": "我找到了一个可用时间,是否帮你创建日程?"
}

工具调用必须保守

语音场景更容易误触发动作,所以工具调用要比文本聊天更谨慎。OpenAI tools 文档说明模型可以使用工具执行外部能力,但工具边界仍由开发者定义。[voice-002]

建议规则:

  • 读操作可以自动执行。
  • 写操作必须复述关键信息并请求确认。
  • 高风险操作需要二次确认或转人工。
  • 工具失败时用自然语音解释,而不是沉默等待。

综合这些资料可以推断:语音 Agent 的架构重点不是“把聊天搬到麦克风”,而是围绕实时连接、打断恢复和工具确认重新设计交互协议。

参考资料

  1. [voice-001] OpenAI Developers, “Realtime API”, https://developers.openai.com/api/docs/guides/realtime
  2. [voice-002] OpenAI Developers, “Tools”, https://developers.openai.com/api/docs/guides/tools