
让AI 不再只是文字框,而是能听、会看、能说、能被随时打断的实时对话伙伴。
这两年 AI 对话很火,但大多数体验停留在"打字框":你一句、它一句。真正自然的交互应该是语音------开口就说、它立刻回应、说错了能打断、还能看着屏幕和你交流。可要把这种实时语音Agent 做出来,工程上远比"给文字聊天加个 TTS"复杂。
Pipecat就是为解决这件事而生的:一个由 Daily 团队维护、用 BSD-2 许可开源的 Python 框架,专门用来构建实时语音和多模态 AI Agent。你可以自由选择 STT、LLM、TTS,把它们编排成一条流水线,在浏览器、手机甚至电话里和Agent 自然对话。
|---------------------------------------------------------------------------------------------------------------------------------|
| 一句话理解 :Pipecat 把"实时媒体传输 + 语音活动检测 + 语音识别 + 大模型 + 语音合成"封装成一个个可替换的处理器,数据以"帧"的形式在管线里流动,你只需要把处理器拼成一条 Pipeline,一个能听会说的 Agent 就成了。 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 本文看点 * 为什么自己搭实时语音 Agent 这么难 * Pipecat 是什么、开源协议与基本信息 * 核心机制:Pipeline、Processor 与 Frame * 一次语音对话,数据是怎么流过管线的 * 为什么能做到低延迟、可打断 * 多 Agent 协作与分布式怎么玩 * 传输层、客户端 SDK、RTVI 协议 * 可运行的代码骨架与落地场景 |
01****为什么需要一个专门的框架
很多人以为做语音 Agent 就是:语音识别(STT)→ 大模型(LLM)→ 语音合成(TTS),三个接口串起来即可。真正动手会发现处处是坑。
|--------|---------------------------------------|
| 难点 | 具体问题 |
| 实时传输 | 音频要低延迟双向传输,WebRTC 涉及 NAT 穿透、回声消除、抖动缓冲 |
| 语音活动检测 | 要知道用户什么时候开始、什么时候说完,停顿不等于结束 |
| 可打断 | 用户一开口,Agent 正在说的话要立刻停,不能各说各的 |
| 低延迟 | 每一步都要流式,等整句说完才开始想,体验就垮了 |
| 服务编排 | STT、LLM、TTS 来自不同厂商,数据格式、时序都要协调 |
| 多轮记忆 | 对话历史要正确聚合,还要控制上下文长度 |
| 多模态 | 视频、图像、屏幕内容要和语音一起处理 |
这些事情每一件都不神秘,但全部自己写一遍,成本极高。Pipecat 的价值就是把这些通用、繁琐、容易出错的部分框架化,让你专注于"让 Agent 说什么、做什么"。
02 Pipecat****是什么
|------|---------------------------------------------|
| 项目 | 信息 |
| 定位 | 构建实时语音与多模态 AI Agent 的开源 Python 框架 |
| 维护方 | Daily(实时音视频基础设施公司)及开源社区 |
| 开源协议 | BSD-2,免费可商用 |
| 安装 | pip 包名 pipecat-ai,需 Python 3.11+ |
| 厂商中立 | 可编排 150+ 种 AI 服务,自由组合、随时替换 |
| 生态 | 客户端 SDK、RTVI 协议、Pipecat Flows、Pipecat Cloud |
厂商中立是它很重要的一点:你今天用 Deepgram 做识别、OpenAI 做大脑、Cartesia 做合成,明天可以换成 Soniox、Anthropic、ElevenLabs,只改服务配置,管线和业务代码不动。
03****核心机制: Pipeline 、 Processor 与 Frame

一条管线就是一串处理器,音频从传输层进来,逐段被识别、理解、合成,再返回给用户。
Pipecat 的心智模型只有三个概念,理解了它们,整个框架就通了。
|----------------|----------------------------|---------|
| 概念 | 含义 | 类比 |
| Pipeline(管线) | 一组处理器按顺序组成的处理链 | 工厂流水线 |
| Processor(处理器) | 处理数据的一个环节:STT、LLM、TTS、聚合器等 | 流水线上的工位 |
| Frame(帧) | 流经管线的数据单元:音频帧、文本帧、图像帧、控制帧 | 传送带上的工件 |
**帧(**Frame )是什么
管线里流动的不是"一整段对话",而是一个个细粒度的帧。常见的帧类型:
•音频帧:一小段实时音频;
•文本帧:识别出的文字、模型生成的文字;
•图像帧:视频画面、图片(多模态);
•控制帧:如"开始跑 LLM""用户开始说话"这类信号。
**处理器(**Processor )做什么
每个处理器接收一类帧,处理后产出新的帧传给下游。比如 STT 处理器吃音频帧、吐文本帧;LLM 处理器吃文本帧、吐回复文本帧;TTS 处理器吃文本帧、吐音频帧。你也可以写自定义处理器插入任意位置。
谁来执行管线
|----------------|---------------------------|
| 角色 | 职责 |
| Pipeline | 定义处理器的顺序 |
| PipelineWorker | 真正执行管线、收集指标、管理 RTVI 事件 |
| WorkerRunner | 管理一个或多个 worker 的生命周期、系统信号 |
这种"帧 + 处理器 + 管线"的设计带来两个关键好处:可组合 (从简单处理器拼出复杂行为)和可流式(数据一产生就流动,不必等待)。
04****一次语音对话的完整链路
以官方快速入门的 Bot 为例,用户开口到 Agent 回答,数据依次经过六个环节:
|----|--------|-----------------|---------|
| 步骤 | 环节 | 示例服务 | 输入→输出 |
| 1 | 音频采集 | 浏览器麦克风 + WebRTC | 声音→音频帧 |
| 2 | 语音活动检测 | Silero VAD | 判断说话起止 |
| 3 | 语音识别 | Deepgram | 音频帧→文字 |
| 4 | 语言理解 | OpenAI(GPT) | 文字→回复文字 |
| 5 | 语音合成 | Cartesia | 文字→音频帧 |
| 6 | 音频回放 | WebRTC 返回 | 音频帧→声音 |
官方数据显示,整个往返延迟通常控制在 1 秒以内。对话历史则由上下文聚合器(Context Aggregator)维护:用户聚合器把用户的话加入上下文,助手聚合器把 Agent 的回复加入上下文,从而支持多轮记忆。
05****为什么能做到低延迟、可打断

帧一产生就流动,下游不等上游,所以 Agent 能在你还没说完时就开始准备回答。
全链路流式
低延迟不是靠某一步特别快,而是每一步都不等待,全部以流式方式衔接:
•STT 流式:用户边说,识别边出字,不等整句说完;
•LLM 流式:模型边生成边输出文字,不等整段写好;
•TTS 流式:合成一句播一句,不等整段合成完;
•传输流式:音频帧实时往返,不等整段打包。
于是各环节在时间上是重叠的:LLM 开始想的时候,STT 可能还在出后面的字;TTS 开始播第一句的时候,LLM 还在写后面的句子。这就是"边说边响应"的原理。
**可打断(**Turn-taking )
自然对话里,人随时可能插话。Pipecat 靠 VAD 实时检测用户开口:
1.Agent 正在说话时,VAD 检测到用户开始说话;
2.立即中断 TTS 的播放,停止当前生成;
3.把发言权交还给用户,处理用户的新输入。
这一整套"轮流发言"是实时语音 Agent 的核心体验,也是简单"文字聊天 + TTS"方案做不到的。
延迟花在哪里
|------|------------------|-------------|
| 环节 | 主要延迟来源 | 优化思路 |
| 网络传输 | WebRTC 往返、地域距离 | 就近接入、边缘部署 |
| STT | 端点检测、模型推理 | 流式识别、降低端点等待 |
| LLM | 首 token 时间(TTFT) | 小模型/缓存/流式 |
| TTS | 首音频块时间 | 流式合成、短句优先 |
对语音 Agent 来说,用户最敏感的是**"** 我说完到它开始回应 " 的间隔,也就是首音时间,而不是它把整段说完要多久。流式管线正是优先压低这个指标。
06****多 Agent 协作与分布式

不再是一个Agent 包打天下,而是多个专家 Agent 并行、交接、在共享总线上协作。
复杂任务里,一个 Agent 什么都做会很臃肿。Pipecat 支持把一个应用拆成多个 Agent:
•专家 Agent:主Agent 负责对话,把长任务、工具调用交给子Agent 处理;
•并行 / 交接:多个 Agent 可以并行展开,或按流程把用户交接给下一个 Agent;
•共享总线( Bus ):Agent 之间通过总线协调,默认单进程本地总线。
|-------------|--------------------------|--------------------|
| 形态 | 说明 | 总线 |
| 单 Agent | 一个管线完成全部对话 | 本地总线 |
| 多 Agent(本地) | 多个 Agent 同进程协作 | 本地总线 |
| 分布式 Agent | Agent 分布在不同进程/机器 | RedisBus / PgmqBus |
| 代理 Agent | 通过 WebSocket 连接不同总线、转发消息 | Proxy Agent |
当需要跨进程、跨机器部署时,把本地总线换成网络总线(RedisBus 或 PgmqBus),所有 Agent 共享同一通道、自动发现彼此。这让语音 Agent 可以从单机 Demo 平滑扩展到分布式系统。
Pipecat Flows
如果对话需要遵循明确路径(比如客服里先问意图、再收集信息、最后确认),可以用Pipecat Flows定义结构化的对话流程和节点,而不是让 LLM 完全自由发挥。它适合有固定业务流程的场景。
07****传输、客户端与协议
**传输层(**Transport )
|------------|------------------------------|
| 传输 | 适用场景 |
| WebRTC | 浏览器、App,低延迟实时音视频(Daily 提供托管) |
| SIP / PSTN | 接入传统电话网络,让 Agent 打电话、接电话 |
| WebSocket | 自定义媒体或控制通道 |
客户端****SDK
用户端不一定要自己写,Pipecat 提供多端客户端 SDK:JavaScript 、 React 、 React Native 、 iOS 、 Android 、 C++,并附带 UI Kit,可快速把用户接入 Agent。
RTVI****协议
RTVI ( Real-Time Voice Interaction **,实时语音交互协议)**是 Pipecat 默认启用的协议,让服务端 Bot 和客户端实时交换消息、事件(状态、配置、打断、指标等)。它把"前端怎么和语音 Bot 通信"标准化了。
Pipecat Cloud
不想自己运维 WebRTC 和扩缩容,可以用 Pipecat Cloud 托管------处理弹性伸缩、监控、全球部署,本地写的 Bot 不改代码即可部署。当然,框架本身完全开源,你也可以选择自建。
08****代码骨架:几十行搭一个 Bot
先安装框架(以 Daily WebRTC 传输为例):
|-------------------------------------------------------------------------------------|
| bash pip install "pipecat-aidaily" # 需要 Python 3.11+,并准备好 STT/LLM/TTS 的 API Key |
核心就是"选三个服务 → 拼成一条管线"。下面是精简后的骨架(完整可运行示例以官方快速入门为准):
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| python import os from pipecat.pipeline.pipeline import Pipeline from pipecat.services.deepgram import DeepgramSTTService from pipecat.services.openai import OpenAILLMService from pipecat.services.cartesia import CartesiaTTSService # 1. 选择并配置 AI 服务(可随时替换成其他厂商) stt = DeepgramSTTService(api_key=os.getenv("DEEPGRAM_API_KEY")) # 听 llm = OpenAILLMService(api_key=os.getenv("OPENAI_API_KEY"), model="gpt-4o") # 想 tts = CartesiaTTSService(api_key=os.getenv("CARTESIA_API_KEY")) # 说 # 2. 把处理器拼成一条管线 pipeline = Pipeline( transport.input(), # 接收用户音频 stt, # 语音 -\> 文字 user_aggregator, # 用户发言加入上下文 llm, # 文字 -\> 回复 tts, # 回复 -\> 语音 transport.output(), # 语音返回用户 assistant_aggregator, # 助手回复加入上下文 ) # 3. 交给 Worker 运行,浏览器通过 RTVI/WebRTC 连接 worker = PipelineWorker(pipeline, params=PipelineParams(enable_metrics=True)) |
想加能力,就在管线里插入处理器:插一个图像识别处理器,它就"看得见";插一个工具调用处理器,它就能查数据、办事情。想要多Agent,就建多条管线、通过总线协作。
09****落地场景
|-----------------|---------------------------------|
| 场景 | 用到的能力 |
| 智能客服 / 电话外呼 | SIP/PSTN 接入 + 流式对话 + 打断 + Flows |
| 语音助手 / 车载 / IoT | 低延迟唤醒 + 多轮对话 + 边缘部署 |
| 口语陪练 / 教育 | 实时对话 + 多模态(看题、看屏幕) |
| 老人陪伴 / 医疗问询 | 自然语音 + 情感化合成 + 长时记忆 |
| 虚拟人 / 游戏 NPC | 语音 + 视频 + 形象驱动 + 多 Agent |
| 销售 / 会议助理 | 实时转录 + 工具调用 + 结构化流程 |
最后
Pipecat 没有去和大模型厂商竞争"谁更聪明",它解决的是另一个同样关键的问题:怎么把一堆 AI 能力和实时媒体,工程化地组织成一个自然、流畅、可被打断的对话。当 AI 从"打字框"走向"开口说话",这种编排层会变得越来越重要。框架开源、厂商中立、可从单机扩展到分布式,值得每一个做实时交互的开发者试一次。