Passer au contenu principal
LiveKit Agents est un framework pour construire des IA vocales en temps réel. Comme Venice est entièrement compatible OpenAI pour le chat, la transcription et la parole, vous pouvez piloter les trois étapes d’un agent vocal — speech-to-text (STT), le LLM et text-to-speech (TTS) — via le plugin livekit-plugins-openai en le pointant vers l’URL de base de Venice.
Venice s’intègre à l’architecture de pipeline STT-LLM-TTS de LiveKit Agents. Venice n’expose pas d’API WebSocket OpenAI Realtime (speech-to-speech), donc le chemin RealtimeModel / multimodal n’est pas disponible. Utilisez le pipeline modulaire présenté ci-dessous — il vous offre un contrôle complet sur chaque modèle tout en gardant l’inférence sur l’infrastructure privée de Venice.

Comment Venice s’associe à LiveKit Agents

Installation

Installez le framework et les plugins utilisés ci-dessous :
Définissez votre clé d’API Venice et les informations de connexion LiveKit :
Le plugin OpenAI se rabat sur OPENAI_API_KEY lorsque api_key est omis. Puisque vous le pointez vers Venice, passez toujours api_key explicitement (sinon la clé serait lue depuis la mauvaise variable). Les exemples ci-dessous lisent VENICE_API_KEY.

Agent vocal complet

Voici un agent vocal complet qui transcrit avec Venice STT, réfléchit avec un LLM Venice et parle avec Venice TTS. Silero fournit une détection d’activité vocale locale afin que le STT en mode batch sache quand un tour est terminé.
Exécutez-le en mode développement :

Configuration de chaque composant

LLM

Le LLM est la correspondance la plus directe — Venice /chat/completions prend en charge le streaming SSE, l’appel d’outils et la vision, tout ce que LiveKit utilise directement. venice-uncensored-1-2 garde l’inférence privée et non censurée tout en alimentant le pipeline TTS ; n’optez pour un modèle de classe flash que si vous avez besoin d’un time-to-first-token plus faible.
Passez les options spécifiques à Venice (recherche web, personas de personnage, contrôle du raisonnement) via extra_body :

Speech-to-Text

Le STT OpenAI de LiveKit appelle /audio/transcriptions pour chaque segment de parole, il a donc besoin d’un VAD (Silero ci-dessus) pour détecter la fin d’un tour. Remplacez le modèle par défaut par un modèle STT Venice. nvidia/parakeet-tdt-0.6b-v3 est l’option la plus petite/à plus faible latence ; stt-xai-v1 et elevenlabs/scribe-v2 sont des alternatives plus récentes si vous souhaitez une meilleure précision.

Text-to-Speech

Le TTS OpenAI de LiveKit appelle /audio/speech. Les voix sont spécifiques au modèle chez Venice — passez une paire model/voice provenant du même modèle. tts-kokoro garde l’étape vocale privée et non censurée afin qu’elle puisse énoncer la sortie du LLM textuellement ; demandez pcm pour éviter une étape de décodage MP3 et gagner un peu de latence. Les voix plus rapides soutenues par un fournisseur (par ex. Gemini) peuvent appliquer un filtrage de contenu, évitez-les donc si vous avez besoin d’une parole non censurée.

Modèles recommandés

Les identifiants de modèles évoluent au fil du temps — découvrez les options actuelles à l’exécution avec GET /models?type=... et GET /models/traits plutôt que de les coder en dur. Pour les agents vocaux, privilégiez les paliers à faible latence (modèles nommés flash, turbo, mini ou avec un faible nombre de paramètres), car la réactivité perçue dépend du time-to-first-token et de la vitesse du TTS. Bons points de départ dans le catalogue actuel :

Parcourir tous les modèles

Filtrez par text, speech-to-text et text-to-speech avec tarifs et capacités en direct.

Conseils latence et production

La qualité d’un agent vocal est dominée par la latence de prise de tour — le temps entre la fin de la phrase de l’utilisateur et le début de la parole de l’agent. Avec le pipeline tout-Venice, prévoyez environ : Comptez ~0,8–1,5 s jusqu’au premier audio — parfait pour une prise de tour posée, style assistant. Pour une conversation très interruptible et chevauchante, vous ressentirez l’écart par rapport à un modèle speech-to-speech natif.

Réduire la latence

  • Utilisez response_format="pcm" sur le TTS pour sauter l’étape de décodage MP3.
  • Ajustez le VAD Silero (silero.VAD.load(min_silence_duration=0.4)) pour raccourcir l’endpointing sans couper la parole.
  • Privilégiez les paliers à faible latence pour STT/TTS (par ex. TTS tts-kokoro, STT nvidia/parakeet-tdt-0.6b-v3). Conservez venice-uncensored-1-2 pour le LLM afin de rester privé et non censuré ; passez à un LLM de classe flash uniquement si vous avez besoin d’un time-to-first-token plus rapide.
  • Gardez les réponses concises — c’est la première phrase qui conditionne la réactivité perçue.

Combiner les fournisseurs

LiveKit vous permet de choisir chaque composant indépendamment, vous pouvez donc conserver Venice là où sa confidentialité et ses modèles non censurés comptent le plus, et remplacer par un fournisseur streaming là où la latence est critique. Une configuration courante à forte interactivité conserve le LLM Venice (et éventuellement le STT) et l’associe à un TTS streaming dédié :
Commencez tout-Venice pour la configuration la plus simple et la plus privée. Si vous construisez une expérience grand public rapide et très conversationnelle, conservez le LLM Venice et évaluez un TTS streaming pour l’étape de sortie vocale.

Limitations et remarques

  • Pas d’API speech-to-speech / Realtime. Venice n’a pas de WebSocket OpenAI Realtime, donc openai.realtime.RealtimeModel et le chemin d’agent multimodal ne sont pas disponibles. Utilisez le pipeline STT-LLM-TTS présenté ci-dessus.
  • Le STT est en batch, pas en streaming. La transcription Venice est en mode requête/réponse, un VAD (Silero) est donc nécessaire pour l’endpointing. Cela ajoute une petite latence par rapport à un socket STT streaming.
  • Le TTS est bufferisé par le plugin. Le wrapper TTS OpenAI de LiveKit indique streaming=False, il n’utilise donc pas le flag streaming phrase par phrase de Venice. La latence reste correcte pour la plupart des agents ; utilisez response_format="pcm" pour minimiser la surcharge de décodage.
  • Faites correspondre la voix au modèle. Les IDs voice du TTS ne sont valides que pour leur model correspondant. Voir Modèles Text-to-Speech.
  • Ne codez pas en dur les listes de modèles. Les IDs de modèles Venice sont dépréciés et remplacés régulièrement — interrogez GET /models / GET /models/traits à l’exécution. Voir Dépréciations.

Ressources associées