实时智能体架构:级联、原生模型,以及循环住在哪里。
语音智能体就是你已经熟悉的那个智能体循环,外面裹了一层硬实时的音频契约。架构选择是二元的,且影响深远:在管线里串三个模型(STT → LLM → TTS),还是跑一个直接听、直接说的模型。本组其余内容——延迟、轮次、工具调用、失败——全都是这个选择以及你把推理放在哪里的下游。
级联:流式管线里的三个模型。
经典架构是级联:一个流式语音转文本模型转写来电者,转写文本驱动一个普通的文本 LLM 智能体循环,再由一个文本转语音模型把回复说出来。它和一个前面装了麦克风、后面装了扬声器的聊天智能体是同一种架构。
- 透明。转写文本与文本轮次都可检视——你可以用为文本智能体准备的同一套工具去记录、评估、加护栏。
- 可组合。独立替换 STT 厂商、LLM 或 TTS 嗓音。每一级都用同类最佳。
- 接缝处有损。韵律、情绪、迟疑、叠音都被压扁成文本然后消失。模型从未听见来电者;它读的是来电者的一份转写稿。
原生模型:一个语音到语音模型。
一个语音到语音模型(OpenAI 的 Realtime API 配 gpt-realtime、Google 的 Gemini Live)通过单一模型吃进音频、吐出音频。关键路径上没有中间转写文本。它直接听到语气、打断与节奏,并且能富有表现力地回应,因为它从未被降维成文本。
# cascade: three hops, three failure points mic → STT → LLM (agent loop) → TTS → speaker # native: one model, audio in / audio out mic → speech-to-speech model (loop inside) → speaker
实践中原生并不意味着没有转写文本。你仍然需要一份转写文本用于记录、评估与合规——多数实时 API 会作为旁路通道发出它。区别在于它是可观测性,而非推理基底。别在转写文本上挂一个护栏,就以为它能把模型已经说出口的音频拦住。
智能体循环住在哪里。
这是决定你架构的那个问题。智能体循环——规划、调用工具、观察、继续——必须跑在某处,而语音让它放在哪里成为承重的。
- 级联:循环是你的,在你的编排器里,在 STT 与 TTS 之间。完全掌控工具、记忆与策略;延迟也归你扛。
- 原生、模型驱动:循环跑在实时模型内部——它经由会话上的函数调用决定何时调你的工具。延迟最低,控制最少。
- 原生、外部驱动:模型负责语音与轮次,但把推理繁重的步骤交给一个外部文本智能体。一种混合:既保住音频质量又夺回工具/策略控制——代价是一次你必须藏起来的往返。
传输层是架构的一部分。
文本智能体在 HTTP 上搬运 JSON。语音智能体在整通通话期间,于一条持久连接——WebRTC 或 WebSocket——上搬运连续音频帧。会话是有状态、长生命周期的,不是请求/响应。
SESSION open WebRTC/WS ----------------------------- hang up
| audio frames in (20ms) audio frames out |
| events: speech_started, transcript, ... |
| function_call / function_result |
| one connection, one conversation state |
电话又加一跳:一个 SIP/PSTN 网关(Twilio、Telnyx、LiveKit SIP)把电话网桥接到你的媒体流,通常是 8 kHz μ-law。架构现在横跨运营商 → 网关 → 你的媒体服务器 → 模型,而每一跳都是延迟,也是一个故障域。
多数生产栈最终收敛到的参照形态。
实践中,2025 年代稳健的栈看起来像:一个媒体服务器持住通话、一个轮次检测器决定谁说话、模型(原生或级联)产出回复,再加一个旁路通道做转写记录与异步护栏。
# the load-bearing components, not a framework media_server # holds WebRTC/SIP, jitter buffer, echo cancel turn_detector # VAD + semantic endpointing (see V3) brain # native S2S model OR cascade orchestrator tool_runtime # your functions, run off the audio path (V5) side_channel # transcript, eval, recording, async checks
先决定 brain 放哪,其余随之而定。需要转写级控制、与文本智能体的评估对等、或繁重的工具/策略逻辑时,用级联。当对话质量与亚秒响应就是产品时,用原生。当你确实两者都需要时,用混合——但仅此时;那次往返是真实的。
何时不该做语音智能体。
如果任务容得下一次打字轮次,语音不给你带来任何东西,却让你背上一个实时截止期、一个音频故障面、以及更差的可观测性——文本优先,仅当通道本身是需求时才用语音。