Phase 14 - Lesson 22
Voice Agents: Pipecat e LiveKit
Agentes de voz são uma categoria de produção de primeira classe em 2026. O Pipecat oferece um pipeline baseado em frames em Python (VAD → STT → LLM → TTS → transport). O LiveKit Agents conecta modelos de IA a usuários via WebRTC. As metas de latência de produção ficam entre 450–600ms de ponta a ponta para stacks premium.
Type: Learn Languages: Python (stdlib) Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns) Time: ~60 minutos
Learning Objectives
- Descrever o pipeline baseado em frames do Pipecat: DOWNSTREAM (source→sink) e UPSTREAM (control).
- Nomear as etapas canônicas do pipeline de voz e quais transports o Pipecat suporta.
- Explicar as duas classes de agente de voz do LiveKit Agents (MultimodalAgent, VoicePipelineAgent) e quando cada uma delas é adequada.
- Resumir as expectativas de latência de produção em 2026 e como elas orientam as escolhas de arquitetura.
The Problem
Agentes de voz não são apenas um loop de texto com TTS acoplado. Os orçamentos de latência são brutais (~600ms), áudio parcial é o padrão, a detecção de turno é um modelo e os transports variam de SIP de telefonia a WebRTC. Ou você constrói um pipeline baseado em frames (Pipecat) ou se apoia em uma plataforma (LiveKit).
The Concept
Pipecat (pipecat-ai/pipecat)
- Framework de pipeline baseado em frames em Python.
- Cadeia de
Frame→FrameProcessor. - Duas direções de fluxo:
- DOWNSTREAM — source → sink (entrada de áudio, saída de TTS).
- UPSTREAM — feedback e controle (cancelamento, métricas, interrupção/barge-in).
- O
PipelineTaskgerencia o ciclo de vida com eventos (on_pipeline_started,on_pipeline_finished,on_idle_timeout) e observadores para métricas/rastreamento/RTVI.
Pipeline típico:
VAD (Silero) → STT → LLM (context alternates user/assistant) → TTS → transport
Transports: Daily, LiveKit, SmallWebRTCTransport, FastAPI WebSocket, WhatsApp.
O Pipecat Flows adiciona conversas estruturadas (máquinas de estado). O Pipecat Cloud é o runtime gerenciado.
LiveKit Agents (livekit/agents)
- Conecta modelos de IA a usuários via WebRTC.
- Conceitos-chave:
Agent,AgentSession,entrypoint,AgentServer. - Duas classes de agente de voz:
- MultimodalAgent — áudio direto via OpenAI Realtime ou equivalente.
- VoicePipelineAgent — cascata STT → LLM → TTS; oferece controle em nível de texto.
- Detecção semântica de turno via um modelo transformer.
- Integração nativa com MCP.
- Telefonia via SIP.
- Mais de 50 modelos sem chaves de API via LiveKit Inference; mais de 200 adicionais via plugins.
Commercial platforms
Vapi (450–600ms em uma stack premium otimizada) e Retell (600ms de ponta a ponta em 180 chamadas de teste) são construídos sobre estes. Escolha uma plataforma quando quiser uma stack de voz gerenciada sem precisar de uma equipe de WebRTC.
Where this pattern goes wrong
- Sem tratamento de interrupção (barge-in). O usuário interrompe; o agente continua falando. Requer frames de cancelamento UPSTREAM no Pipecat, ou equivalente no LiveKit.
- Confiança do STT ignorada. Transcrições com baixa confiança são enviadas ao LLM como se fossem verdades absolutas. Filtre pela confiança ou solicite confirmação.
- Corte do TTS no meio da frase. Quando o pipeline é cancelado no meio de uma fala, o TTS precisa saber ou cortar o áudio.
- Orçamento de latência ignorado. Cada componente adiciona de 50–200ms. Some a sua cadeia de componentes antes do envio.
Typical 2026 latencies
- VAD: 20–60ms
- STT parcial: 100–250ms
- Primeiro token do LLM: 150–400ms
- Primeiro áudio do TTS: 100–200ms
- RTT de transporte: 30–80ms
De ponta a ponta, 450–600ms é premium. 800–1200ms é comum. Qualquer valor > 1500ms parece quebrado.
Build It
code/main.py é um pipeline experimental baseado em frames com:
- Tipos de
Frame(audio, transcript, text, tts_audio, control). - Interface
Processorcomprocess(frame). - Um pipeline de cinco etapas (VAD → STT → LLM → TTS → transport) como processadores programados.
- Um frame de cancelamento UPSTREAM para demonstrar a interrupção (barge-in).
Execute:
python3 code/main.py
O rastreamento mostra o fluxo normal e um cancelamento de interrupção (barge-in) que interrompe o TTS no meio da fala.
Use It
- Pipecat para controle total — processadores customizados, prioritário em Python (Python-first), provedores plugáveis.
- LiveKit Agents para implantações focadas em WebRTC (WebRTC-first) e telefonia.
- Vapi / Retell para agentes de voz hospedados sem precisar de uma equipe de WebRTC.
- OpenAI Realtime / Gemini Live para entrada e saída direta de áudio (MultimodalAgent).
Ship It
outputs/skill-voice-pipeline.md estrutura um pipeline de voz no formato do Pipecat com VAD + STT + LLM + TTS + transport além de tratamento de interrupção (barge-in).
Exercises
- Adicione um observador de métricas ao seu pipeline experimental: conte os frames por etapa por segundo. Onde a latência se acumula?
- Implemente um STT com limite de confiança: abaixo do limite, solicite "você poderia repetir isso?"
- Adicione detecção semântica de turno: regra simples — se a transcrição terminar com "?", é o fim do turno.
- Leia os documentos de transporte do Pipecat. Substitua o transport da biblioteca padrão (stdlib) pela configuração do SmallWebRTCTransport (stub).
- Meça o OpenAI Realtime contra uma cascata STT+LLM+TTS na mesma consulta. Qual custo de latência o controle em nível de texto acarreta?
Key Terms
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Frame | "Evento" | Unidade de dados tipada no pipeline (audio, transcript, text, control) |
| Processor | "Etapa do pipeline" | Manipulador com process(frame) |
| DOWNSTREAM | "Fluxo direto" | De source para sink: entrada de áudio, saída de fala |
| UPSTREAM | "Fluxo de feedback" | Controle: cancelamento, métricas, interrupção (barge-in) |
| VAD | "Detecção de atividade de voz" | Detecta quando o usuário está falando |
| Semantic turn detection | "Fim de turno inteligente" | Decisão baseada em modelo de que o usuário terminou de falar |
| MultimodalAgent | "Agente de áudio direto" | Entrada de áudio, saída de áudio; sem texto no meio |
| VoicePipelineAgent | "Agente em cascata" | STT + LLM + TTS; controle em nível de texto |
Further Reading
- Pipecat docs — pipeline baseado em frames, processadores, transports
- LiveKit Agents docs — WebRTC + primitivas de voz
- Vapi — plataforma de voz gerenciada
- Retell AI — voz gerenciada, com benchmark de latência