livekit-plugins-openai, puntandolo all’URL base di Venice.
Venice si adatta all’architettura della pipeline STT-LLM-TTS in LiveKit Agents. Venice non espone un’API WebSocket OpenAI Realtime (speech-to-speech), quindi il percorso
RealtimeModel / multimodale non è disponibile. Utilizza la pipeline componentizzata mostrata di seguito: ti offre il pieno controllo su ciascun modello e mantiene l’inferenza sull’infrastruttura privata di Venice.Come Venice si integra con LiveKit Agents
Configurazione
Installa il framework e i plugin utilizzati di seguito:Il plugin OpenAI ricade su
OPENAI_API_KEY quando api_key viene omesso. Poiché lo stai puntando a Venice, passa sempre api_key esplicitamente (altrimenti la chiave verrebbe letta dalla variabile sbagliata). Gli esempi seguenti leggono VENICE_API_KEY.Agente vocale completo
Questo è un agente vocale completo che trascrive con Venice STT, ragiona con un LLM Venice e parla con Venice TTS. Silero fornisce il rilevamento locale dell’attività vocale, così l’STT in modalità batch sa quando un turno è completo.Configurazione di ciascun componente
LLM
L’LLM è la corrispondenza più diretta: Venice/chat/completions supporta streaming SSE, tool calling e visione, tutte funzionalità che LiveKit utilizza direttamente. venice-uncensored-1-2 mantiene l’inferenza privata e senza censura mentre alimenta la pipeline TTS; ricorri a un modello di classe flash solo se hai bisogno di un time-to-first-token inferiore.
extra_body:
Speech-to-Text
Lo STT OpenAI di LiveKit chiama/audio/transcriptions per ogni segmento vocale, quindi ha bisogno di un VAD (Silero, sopra) per rilevare la fine di un turno. Sovrascrivi il modello predefinito con un modello STT di Venice. nvidia/parakeet-tdt-0.6b-v3 è l’opzione più piccola e a minor latenza; stt-xai-v1 ed elevenlabs/scribe-v2 sono alternative più recenti se desideri maggiore accuratezza.
Text-to-Speech
Il TTS OpenAI di LiveKit chiama/audio/speech. Le voci in Venice sono specifiche per ciascun modello: passa una coppia model/voice dallo stesso modello. tts-kokoro mantiene privata e senza censura la fase vocale, così può pronunciare l’output dell’LLM letteralmente; richiedi pcm per evitare un passaggio di decodifica MP3 e ridurre leggermente la latenza. Le voci più veloci basate su provider (ad es. Gemini) possono applicare filtri sui contenuti, quindi evitale se hai bisogno di un parlato senza censura.
Modelli consigliati
Gli ID dei modelli cambiano nel tempo — scopri le opzioni attuali a runtime conGET /models?type=... e GET /models/traits invece di codificarli in modo statico. Per gli agenti vocali, dai priorità ai tier a bassa latenza (modelli chiamati flash, turbo, mini o con un numero ridotto di parametri) poiché la reattività percepita dipende dal time-to-first-token e dalla velocità del TTS. Buoni punti di partenza dal catalogo attuale:
Sfoglia tutti i modelli
Filtra per testo, speech-to-text e text-to-speech con prezzi e capacità in tempo reale.
Latenza e consigli per la produzione
La qualità di un agente vocale è dominata dalla latenza di cambio turno — il tempo tra la fine della frase dell’utente e l’inizio della risposta parlata dell’agente. Con la pipeline interamente Venice, prevedi indicativamente:
Aspettati ~0,8–1,5 s per il primo audio — ottimo per uno stile assistente con turni misurati. Per conversazioni altamente interrompibili e sovrapposte, noterai il divario rispetto a un modello speech-to-speech nativo.
Ridurre la latenza
- Usa
response_format="pcm"sul TTS per saltare il passaggio di decodifica MP3. - Regola Silero VAD (
silero.VAD.load(min_silence_duration=0.4)) per abbreviare l’endpointing senza troncare il parlato. - Prediligi i tier a bassa latenza per STT/TTS (ad es. TTS
tts-kokoro, STTnvidia/parakeet-tdt-0.6b-v3). Mantienivenice-uncensored-1-2per l’LLM per rimanere privato e senza censura; passa a un LLM di classeflashsolo se hai bisogno di un time-to-first-token più veloce. - Mantieni concise le risposte — è la prima frase a determinare la reattività percepita.
Combinare provider
LiveKit ti consente di scegliere ogni componente in modo indipendente, così puoi mantenere Venice dove la sua privacy e i modelli senza censura contano di più e integrare un provider in streaming dove la latenza è critica. Una configurazione comune ad alta interattività mantiene l’LLM Venice (e opzionalmente lo STT) e lo abbina a un TTS in streaming dedicato:Limitazioni e note
- Nessuna API speech-to-speech / Realtime. Venice non dispone di un WebSocket OpenAI Realtime, quindi
openai.realtime.RealtimeModele il percorso dell’agente multimodale non sono disponibili. Usa la pipeline STT-LLM-TTS mostrata sopra. - STT è batch, non streaming. La trascrizione Venice è richiesta/risposta, quindi è necessario un VAD (Silero) per l’endpointing. Ciò aggiunge una piccola latenza rispetto a un socket STT in streaming.
- Il TTS è bufferizzato dal plugin. Il wrapper TTS OpenAI di LiveKit riporta
streaming=False, quindi non utilizza il flagstreamingfrase per frase di Venice. La latenza rimane comunque adeguata per la maggior parte degli agenti; usaresponse_format="pcm"per minimizzare l’overhead di decodifica. - Abbina la voce al modello. Gli ID
voicedel TTS sono validi solo per ilmodelcorrispondente. Vedi Modelli Text-to-Speech. - Non codificare in modo statico gli elenchi dei modelli. Gli ID dei modelli Venice vengono deprecati e sostituiti regolarmente — interroga
GET /models/GET /models/traitsa runtime. Vedi Deprecazioni.