Saltar al contenido principal
LiveKit Agents es un framework para construir IA de voz en tiempo real. Como Venice es totalmente compatible con OpenAI para chat, transcripción y voz, puedes impulsar las tres etapas de un agente de voz — reconocimiento de voz (STT), el LLM y síntesis de voz (TTS) — a través del plugin livekit-plugins-openai apuntándolo a la URL base de Venice.
Venice encaja en la arquitectura de tubería STT-LLM-TTS de LiveKit Agents. Venice no expone una API WebSocket Realtime (voz a voz) de OpenAI, por lo que la ruta RealtimeModel / multimodal no está disponible. Utiliza la tubería por componentes que se muestra a continuación — te da control total sobre cada modelo y mantiene la inferencia en la infraestructura privada de Venice.

Cómo se corresponde Venice con LiveKit Agents

Configuración

Instala el framework y los plugins que se usan a continuación:
Establece tu clave de API de Venice y los detalles de conexión de LiveKit:
El plugin de OpenAI recurre a OPENAI_API_KEY cuando se omite api_key. Como lo estás apuntando a Venice, pasa siempre api_key de forma explícita (o la clave se leería de la variable equivocada). Los ejemplos a continuación leen VENICE_API_KEY.

Agente de voz completo

Este es un agente de voz completo que transcribe con Venice STT, piensa con un LLM de Venice y habla con Venice TTS. Silero proporciona detección de actividad de voz local para que el STT por lotes sepa cuándo termina un turno.
Ejecútalo en desarrollo:

Configuración de cada componente

LLM

El LLM es la correspondencia más limpia — Venice /chat/completions admite streaming SSE, llamadas a herramientas y visión, todo lo cual LiveKit utiliza directamente. venice-uncensored-1-2 mantiene la inferencia privada y sin censura mientras alimenta la tubería de TTS; recurre a un modelo de clase flash solo si necesitas un menor tiempo hasta el primer token.
Pasa opciones específicas de Venice (búsqueda web, personas de personajes, control del razonamiento) a través de extra_body:

Reconocimiento de voz (Speech-to-Text)

El STT de OpenAI de LiveKit llama a /audio/transcriptions por cada segmento de habla, por lo que necesita un VAD (Silero, arriba) para detectar cuándo termina un turno. Anula el modelo predeterminado con un modelo STT de Venice. nvidia/parakeet-tdt-0.6b-v3 es la opción más pequeña y de menor latencia; stt-xai-v1 y elevenlabs/scribe-v2 son alternativas más recientes si quieres mayor precisión.

Síntesis de voz (Text-to-Speech)

El TTS de OpenAI de LiveKit llama a /audio/speech. Las voces son específicas de cada modelo en Venice — pasa un par model/voice del mismo modelo. tts-kokoro mantiene la etapa de voz privada y sin censura para que pueda pronunciar la salida del LLM de forma literal; solicita pcm para evitar un paso de decodificación de MP3 y reducir un poco la latencia. Las voces más rápidas respaldadas por proveedores (por ejemplo, Gemini) pueden aplicar filtrado de contenido, así que evítalas si necesitas voz sin censura.

Modelos recomendados

Los IDs de los modelos cambian con el tiempo — descubre las opciones actuales en tiempo de ejecución con GET /models?type=... y GET /models/traits en lugar de codificarlos de forma fija. Para agentes de voz, prioriza los niveles de baja latencia (modelos denominados flash, turbo, mini, o con pocos parámetros) ya que la capacidad de respuesta percibida depende del tiempo hasta el primer token y de la velocidad de TTS. Buenos puntos de partida del catálogo actual:

Explorar todos los modelos

Filtra por texto, reconocimiento de voz y síntesis de voz con precios y capacidades en tiempo real.

Latencia y consejos para producción

La calidad del agente de voz está dominada por la latencia en la toma de turnos — el tiempo entre que el usuario termina su frase y el agente comienza a hablar. Con la tubería íntegramente de Venice, calcula aproximadamente: Espera ~0,8–1,5 s hasta el primer audio — genial para una toma de turnos mesurada, estilo asistente. Para conversaciones altamente interrumpibles y solapadas notarás la diferencia respecto a un modelo nativo de voz a voz.

Reducir la latencia

  • Usa response_format="pcm" en el TTS para saltarte el paso de decodificación de MP3.
  • Ajusta Silero VAD (silero.VAD.load(min_silence_duration=0.4)) para acortar la detección de fin de turno sin cortar el habla.
  • Prefiere niveles de baja latencia para STT/TTS (por ejemplo, tts-kokoro para TTS, nvidia/parakeet-tdt-0.6b-v3 para STT). Conserva venice-uncensored-1-2 para el LLM y mantén la privacidad y ausencia de censura; cambia a un LLM de clase flash solo si necesitas un menor tiempo hasta el primer token.
  • Mantén las respuestas concisas — la primera frase es la que condiciona la capacidad de respuesta percibida.

Combinar proveedores

LiveKit te permite elegir cada componente de forma independiente, de modo que puedes mantener Venice donde su privacidad y sus modelos sin censura son más importantes y sustituirlo por un proveedor de streaming donde la latencia es crítica. Una configuración común de alta interactividad conserva el LLM de Venice (y opcionalmente el STT) y lo empareja con un TTS de streaming dedicado:
Comienza con una configuración íntegramente de Venice para la instalación más sencilla y privada. Si estás construyendo una experiencia de consumo rápida y altamente conversacional, mantén el LLM de Venice y evalúa un TTS de streaming para la etapa de salida de voz.

Limitaciones y notas

  • Sin API Realtime / voz a voz. Venice no tiene un WebSocket Realtime de OpenAI, por lo que openai.realtime.RealtimeModel y la ruta de agente multimodal no están disponibles. Utiliza la tubería STT-LLM-TTS mostrada arriba.
  • El STT es por lotes, no en streaming. La transcripción de Venice es de solicitud/respuesta, por lo que se requiere un VAD (Silero) para la detección de fin de turno. Esto añade una pequeña cantidad de latencia frente a un socket STT en streaming.
  • El TTS es almacenado en búfer por el plugin. El wrapper TTS de OpenAI de LiveKit informa streaming=False, por lo que no utiliza el flag streaming frase a frase de Venice. La latencia sigue siendo aceptable para la mayoría de los agentes; usa response_format="pcm" para minimizar la sobrecarga de decodificación.
  • Empareja la voz con el modelo. Los IDs de voice de TTS solo son válidos para su model correspondiente. Consulta Modelos de síntesis de voz.
  • No codifiques listas de modelos de forma fija. Los IDs de los modelos de Venice se deprecian y reemplazan con regularidad — consulta GET /models / GET /models/traits en tiempo de ejecución. Consulta Deprecaciones.

Recursos relacionados