Pipecat 实时语音助手快速入门:3 条命令搭出会说话的 AI 机器人
Pipecat 实时语音助手快速入门:3 条命令搭出会说话的 AI 机器人
【免费下载链接】pipecatOpen Source framework for voice agents, multimodal apps, and realtime AI. Maintained by Daily and the community.项目地址: https://gitcode.com/GitHub_Trending/pi/pipecat
你打开网页,对着麦克风说"帮我把这段话翻译成英文",不到一秒,自然的女声已经把译文读了出来;你中途插一句"慢一点",它立刻掐断自己的播报,按新要求重说。这种"边听边说、随时可打断"的体验,来自开源 Python 框架 Pipecat 里一条最普通的流水线,而不是某个闭源产品的私有功能。Pipecat 由 Daily 团队和社区共同维护,把 STT、大模型、TTS 和音视频传输串成可插拔的模块,本文带你从 3 条命令开始把它跑起来。
Pipecat 安装与初始化:最短路径跑起来
需要 Python 3.11 以上(推荐 3.12)。最短路径走官方 CLI,两条命令装好并初始化项目:
这段命令先安装 Pipecat CLI,再交互式创建项目,会问你机器人类型(电话或网页)和想用的服务,生成带前端页面的可运行 bot。
uv tool install "pipecat-ai[cli]" pipecat init不想用 CLI 也行:pip install pipecat-ai(或uv add pipecat-ai),然后cp env.example .env填入 API key。建议你现在就打开 examples/getting-started/ 目录,从 01 的一行音频播到 06 的完整语音助手,逐个对照着跑。
它是怎么工作的:一句话进,一句话出
你说一句话,它在流水线里依次经过五步:
- 传输层(Daily 或 LiveKit 的 WebRTC,或 WebSocket)收到你的麦克风音频流;
- STT 服务把音频流式转成文字;
- 聚合器配合 VAD 分析器(默认 Silero)判断"用户开始说话"和"用户说完了",控制 LLM 何时启动;
- LLM 生成回复,TTS 把回复逐段转成音频;
- 传输层把音频播回给你,同时把内容记入对话上下文。
关键是:每个组件只处理一种"帧"(帧数据),靠一个列表串起来。你把 STT 换成别家,其余一行不用动;想加过滤器或分类器,也是往列表里插一项。打断同样走这套机制——VAD 判定你再次开口,传输层就停止 TTS 正在输出的内容。想对照源码理解,读 examples/getting-started/06-voice-agent.py 并和上面五步一一对应即可。多模态是同一条流水线:音频帧、视频帧、文字帧走同一条链,examples/vision/ 里有让 bot 看图描述的例子。
组件怎么选:STT、TTS、LLM 与传输层对照表
表中服务全部出自 README 的服务清单,任意环节都可以自由混搭:
| 环节 | 常见选择 | 什么时候选它 |
|---|---|---|
| STT 语音识别 | Deepgram、OpenAI(Whisper)、Azure、Google、Groq | 按语言覆盖和延迟选云端;要纯离线用本地 Whisper |
| TTS 语音合成 | ElevenLabs、Cartesia、Azure、Google、Kokoro | 要真人感选 ElevenLabs/Cartesia;要免费本地选 Kokoro |
| LLM 大模型 | OpenAI、Anthropic、Gemini、Groq、Ollama | 按已有 API key 和成本选;Ollama 可完全离线 |
| 传输层 | Daily(WebRTC)、LiveKit(WebRTC)、FastAPI WebSocket、Twilio/Telnyx/Vonage 序列化器 | 网页端选 Daily/LiveKit;纯数据交换选 WebSocket;做电话机器人选序列化器 |
选型时可以照这个顺序做:先定传输层(声音从哪进、从哪出),再按已有 key 和预算挑其余三项。
实战案例:搭一个网页语音接待员
以 06-voice-agent.py 为底:Deepgram 做 STT,OpenAI 做 LLM,Cartesia 做 TTS,Daily WebRTC 做传输。整文件的核心就是下面这段流水线,其余都是读 key、注册事件:
这段代码组装一条完整的"听—想—说"流水线,把三个 key 换成自己的就能跑起来。
pipeline = Pipeline([ transport.input(), # 接收麦克风音频 DeepgramSTTService(api_key=DEEPGRAM_KEY), # 语音转文字 user_aggregator, # 判断你是否说完了 OpenAILLMService(api_key=OPENAI_KEY), # 生成回复 CartesiaTTSService(api_key=CARTESIA_KEY), # 回复转语音 transport.output(), # 把语音播给你 assistant_aggregator, # 记录 bot 说了什么 ])多轮记忆由 LLMContext 承载:user_aggregator 把你的话接进去,assistant_aggregator 记录 bot 的播报;人设在 OpenAILLMService.Settings 的 system_instruction 里定义,写上"回复会被朗读,避免列表和格式符号",LLM 就不会输出读不出来的 Markdown。
避坑指南:延迟、成本与打断处理
- 延迟是四段之和:先确认所选 STT 和 TTS 都支持流式(示例默认服务都支持),再确认供应商区域离你近。PipelineParams 默认 audio_in_sample_rate=16000、audio_out_sample_rate=24000,中途别自己多做重采样。
- 成本不透明:给 PipelineParams 传 enable_usage_metrics=True 和 enable_metrics=True,就能看到每次对话的 token 与音频用量;开发期可临时换小模型,examples/features/features-service-switcher.py 演示了运行中替换服务。
- 打断太敏感或被忽略:打断由 VAD 驱动,误触发可以给聚合器的 UserTurnStrategies 加 MinWordsUserTurnStartStrategy(min_words=3) 门槛,现成写法见 examples/turn-management/turn-management-interruption-config.py。
- 抢答或该答不答:这是 turn 起止策略问题,examples/turn-management/ 下有过滤不完整句子、检测用户空闲等成套示例,可直接抄参数。
- 别忘了 VAD 不花钱:SileroVADAnalyzer 内置本地运行,不需要额外买服务。
Pipecat 适合谁,以及下一步
如果你有基础 Python 能力,想做语音助手、电话机器人或语音多模态演示,Pipecat 值得先跑通一遍;如果你只需要文本问答、没有实时音频需求,直接用普通 LLM API 更直接,不必引入流水线。
下一步可以去三个地方:
- examples/:按类别分好的示例,voice/、transcription/、realtime/、function-calling/、multi-worker/,填好 key 即可运行;
- docs/api/:API 参考,含 Makefile 和 conf.py,可在本地构建文档;
- COMMUNITY_INTEGRATIONS.md:社区集成清单,以及自己写一个服务适配器的方法。
【免费下载链接】pipecatOpen Source framework for voice agents, multimodal apps, and realtime AI. Maintained by Daily and the community.项目地址: https://gitcode.com/GitHub_Trending/pi/pipecat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考