Vai al contenuto principale
LiveKit Agents è un framework per costruire IA vocale in tempo reale. Poiché Venice è completamente compatibile con OpenAI per chat, trascrizione e sintesi vocale, puoi gestire tutte e tre le fasi di un agente vocale — speech-to-text (STT), LLM e text-to-speech (TTS) — tramite il plugin 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:
Imposta la tua chiave API Venice e i dettagli di connessione LiveKit:
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.
Eseguilo in modalità sviluppo:

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.
Passa opzioni specifiche di Venice (ricerca web, personaggi, controllo del ragionamento) tramite 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 con GET /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, STT nvidia/parakeet-tdt-0.6b-v3). Mantieni venice-uncensored-1-2 per l’LLM per rimanere privato e senza censura; passa a un LLM di classe flash solo 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:
Inizia con una configurazione interamente Venice per la soluzione più semplice e privata. Se stai costruendo un’esperienza consumer veloce e altamente conversazionale, mantieni l’LLM Venice e valuta un TTS in streaming per la fase di output vocale.

Limitazioni e note

  • Nessuna API speech-to-speech / Realtime. Venice non dispone di un WebSocket OpenAI Realtime, quindi openai.realtime.RealtimeModel e 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 flag streaming frase per frase di Venice. La latenza rimane comunque adeguata per la maggior parte degli agenti; usa response_format="pcm" per minimizzare l’overhead di decodifica.
  • Abbina la voce al modello. Gli ID voice del TTS sono validi solo per il model corrispondente. 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/traits a runtime. Vedi Deprecazioni.

Risorse correlate