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 :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é.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.
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 avecGET /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, STTnvidia/parakeet-tdt-0.6b-v3). Conservezvenice-uncensored-1-2pour le LLM afin de rester privé et non censuré ; passez à un LLM de classeflashuniquement 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é :Limitations et remarques
- Pas d’API speech-to-speech / Realtime. Venice n’a pas de WebSocket OpenAI Realtime, donc
openai.realtime.RealtimeModelet 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 flagstreamingphrase par phrase de Venice. La latence reste correcte pour la plupart des agents ; utilisezresponse_format="pcm"pour minimiser la surcharge de décodage. - Faites correspondre la voix au modèle. Les IDs
voicedu TTS ne sont valides que pour leurmodelcorrespondant. 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.