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
Frame→FrameProcessor. - 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).
PipelineTaskgestiona 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
Processorconprocess(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
- Añade un observador de métricas a tu pipeline experimental: cuenta los frames por etapa por segundo. ¿Dónde se acumula la latencia?
- Implementa un STT con umbral de confianza: por debajo del umbral, solicita "¿podrías repetir eso?"
- Añade detección semántica de turno: regla simple — si la transcripción termina con "?", fin del turno.
- Lee la documentación de transporte de Pipecat. Reemplaza el transport de la biblioteca estándar (stdlib) por la configuración de SmallWebRTCTransport (stub).
- 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
- Pipecat docs — pipeline basado en frames, procesadores, transports
- LiveKit Agents docs — WebRTC + primitivas de voz
- Vapi — plataforma de voz gestionada
- Retell AI — voz gestionada, con benchmark de latencia