Phase 14 - Lesson 22

Voice Agents: Pipecat y LiveKit

Los agentes de voz son una categoría de producción de primera clase en 2026. Pipecat te ofrece un pipeline basado en frames en Python (VAD → STT → LLM → TTS → transport). LiveKit Agents conecta modelos de IA con usuarios a través de WebRTC. Los objetivos de latencia de producción se sitúan entre 450–600ms de extremo a extremo para stacks premium.

Type: Learn Languages: Python (stdlib) Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns) Time: ~60 minutos

Learning Objectives

  • Describir el pipeline basado en frames de Pipecat: DOWNSTREAM (source→sink) y UPSTREAM (control).
  • Nombrar las etapas canónicas del pipeline de voz y qué transports admite Pipecat.
  • Explicar las dos clases de agentes de voz de LiveKit Agents (MultimodalAgent, VoicePipelineAgent) y cuándo es adecuada cada una.
  • Resumir las expectativas de latencia de producción para 2026 y cómo impulsan las decisiones de arquitectura.

The Problem

Los agentes de voz no son simplemente un loop de texto con TTS acoplado. Los presupuestos de latencia son brutales (~600ms), el audio parcial es el comportamiento por defecto, la detección de turno es un modelo y los transports van desde SIP de telefonía hasta WebRTC. O bien construyes un pipeline basado en frames (Pipecat) o te apoyas en una plataforma (LiveKit).

The Concept

Pipecat (pipecat-ai/pipecat)

  • Framework de pipeline basado en frames en Python.
  • Cadena de FrameFrameProcessor.
  • Dos direcciones de flujo:
    • DOWNSTREAM — source → sink (entrada de audio, salida de TTS).
    • UPSTREAM — feedback y control (cancelación, métricas, interrupción/barge-in).
  • PipelineTask gestiona el ciclo de vida con eventos (on_pipeline_started, on_pipeline_finished, on_idle_timeout) y observadores para métricas/rastreo/RTVI.

Pipeline típico:

VAD (Silero) → STT → LLM (context alternates user/assistant) → TTS → transport

Transports: Daily, LiveKit, SmallWebRTCTransport, FastAPI WebSocket, WhatsApp.

Pipecat Flows añade conversaciones estructuradas (máquinas de estado). Pipecat Cloud es el runtime gestionado.

LiveKit Agents (livekit/agents)

  • Conecta modelos de IA con usuarios a través de WebRTC.
  • Conceptos clave: Agent, AgentSession, entrypoint, AgentServer.
  • Dos clases de agentes de voz:
    • MultimodalAgent — audio directo a través de OpenAI Realtime o equivalente.
    • VoicePipelineAgent — cascada STT → LLM → TTS; proporciona control a nivel de texto.
  • Detección semántica de turno mediante un modelo transformer.
  • Integración nativa de MCP.
  • Telefonía a través de SIP.
  • Más de 50 modelos sin claves de API a través de LiveKit Inference; más de 200 adicionales mediante plugins.

Commercial platforms

Vapi (450–600ms en un stack premium optimizado) y Retell (600ms de extremo a extremo en 180 llamadas de prueba) se construyen sobre estos. Elige una plataforma cuando quieras un stack de voz gestionado sin necesidad de un equipo de WebRTC.

Where this pattern goes wrong

  • Sin manejo de interrupciones (barge-in). El usuario interrumpe; el agente sigue hablando. Requiere frames de cancelación UPSTREAM en Pipecat, o su equivalente en LiveKit.
  • Confianza de STT ignorada. Las transcripciones de baja confianza se envían al LLM como si fueran verdades absolutas. Filtra según la confianza o solicita confirmación.
  • Corte de TTS a mitad de frase. Cuando el pipeline se cancela a mitad de una frase, el TTS necesita saberlo o cortar el audio.
  • Presupuesto de latencia ignorado. Cada componente añade entre 50 y 200ms. Suma los tiempos de tu cadena de componentes antes del envío.

Typical 2026 latencies

  • VAD: 20–60ms
  • STT parcial: 100–250ms
  • Primer token del LLM: 150–400ms
  • Primer audio del TTS: 100–200ms
  • RTT de transporte: 30–80ms

De extremo a extremo, 450–600ms es premium. 800–1200ms es común. Cualquier valor > 1500ms se siente roto.

Build It

code/main.py es un pipeline experimental basado en frames con:

  • Tipos de Frame (audio, transcript, text, tts_audio, control).
  • Interfaz Processor con process(frame).
  • Un pipeline de cinco etapas (VAD → STT → LLM → TTS → transport) como procesadores programados.
  • Un frame de cancelación UPSTREAM para demostrar la interrupción (barge-in).

Ejecuta:

python3 code/main.py

El rastreo muestra el flujo normal y una cancelación de interrupción (barge-in) que detiene el TTS a mitad de frase.

Use It

  • Pipecat para un control total: procesadores personalizados, prioritario en Python (Python-first), proveedores integrables.
  • LiveKit Agents para despliegues enfocados en WebRTC (WebRTC-first) y telefonía.
  • Vapi / Retell para agentes de voz alojados sin necesidad de un equipo de WebRTC.
  • OpenAI Realtime / Gemini Live para entrada y salida directa de audio (MultimodalAgent).

Ship It

outputs/skill-voice-pipeline.md genera una estructura de pipeline de voz tipo Pipecat con VAD + STT + LLM + TTS + transport, además del manejo de interrupciones (barge-in).

Exercises

  1. Añade un observador de métricas a tu pipeline experimental: cuenta los frames por etapa por segundo. ¿Dónde se acumula la latencia?
  2. Implementa un STT con umbral de confianza: por debajo del umbral, solicita "¿podrías repetir eso?"
  3. Añade detección semántica de turno: regla simple — si la transcripción termina con "?", fin del turno.
  4. Lee la documentación de transporte de Pipecat. Reemplaza el transport de la biblioteca estándar (stdlib) por la configuración de SmallWebRTCTransport (stub).
  5. Mide el rendimiento de OpenAI Realtime frente a una cascada STT+LLM+TTS para la misma consulta. ¿Qué coste de latencia conlleva el control a nivel de texto?

Key Terms

Término Lo que la gente dice Lo que realmente significa
Frame "Evento" Unidad de datos tipada en el pipeline (audio, transcript, text, control)
Processor "Etapa del pipeline" Manejador con process(frame)
DOWNSTREAM "Flujo directo" De source a sink: entrada de audio, salida de voz
UPSTREAM "Flujo de feedback" Control: cancelación, métricas, interrupción (barge-in)
VAD "Detección de actividad de voz" Detecta cuándo está hablando el usuario
Semantic turn detection "Fin de turno inteligente" Decisión basada en modelo de que el usuario ha terminado
MultimodalAgent "Agente de audio directo" Entrada de audio, salida de audio; sin texto intermedio
VoicePipelineAgent "Agente en cascada" STT + LLM + TTS; control a nivel de texto

Further Reading

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