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 FrameFrameProcessor.
  • 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 PipelineTask gerencia 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 Processor com process(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

  1. Adicione um observador de métricas ao seu pipeline experimental: conte os frames por etapa por segundo. Onde a latência se acumula?
  2. Implemente um STT com limite de confiança: abaixo do limite, solicite "você poderia repetir isso?"
  3. Adicione detecção semântica de turno: regra simples — se a transcrição terminar com "?", é o fim do turno.
  4. Leia os documentos de transporte do Pipecat. Substitua o transport da biblioteca padrão (stdlib) pela configuração do SmallWebRTCTransport (stub).
  5. 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

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).