livekit-plugins-openai apontando-o para a base URL da Venice.
A Venice se encaixa na arquitetura de pipeline STT-LLM-TTS do LiveKit Agents. A Venice não expõe uma API WebSocket Realtime (speech-to-speech) da OpenAI, portanto o caminho
RealtimeModel / multimodal não está disponível. Use o pipeline componentizado mostrado abaixo — ele oferece controle total sobre cada modelo e mantém a inferência na infraestrutura privada da Venice.Como a Venice se mapeia para o LiveKit Agents
Configuração
Instale o framework e os plugins usados abaixo:O plugin OpenAI recorre a
OPENAI_API_KEY quando api_key é omitido. Como você o está apontando para a Venice, sempre passe api_key explicitamente (caso contrário, a chave seria lida da variável errada). Os exemplos abaixo leem VENICE_API_KEY.Agente de Voz Completo
Este é um agente de voz completo que transcreve com Venice STT, pensa com um LLM da Venice e fala com Venice TTS. O Silero fornece detecção de atividade de voz local para que o STT em lote saiba quando um turno está completo.Configurando Cada Componente
LLM
O LLM é o mapeamento mais direto — o endpoint/chat/completions da Venice suporta streaming SSE, tool calling e visão, todos utilizados diretamente pelo LiveKit. O venice-uncensored-1-2 mantém a inferência privada e sem censura enquanto alimenta o pipeline de TTS; recorra a um modelo da classe flash apenas se precisar de um tempo até o primeiro token menor.
extra_body:
Speech-to-Text
O STT OpenAI do LiveKit chama/audio/transcriptions por segmento de fala, então ele precisa de um VAD (Silero acima) para detectar quando um turno termina. Substitua o modelo padrão por um modelo de STT da Venice. nvidia/parakeet-tdt-0.6b-v3 é a opção menor / de menor latência; stt-xai-v1 e elevenlabs/scribe-v2 são alternativas mais recentes se você quiser maior precisão.
Text-to-Speech
O TTS OpenAI do LiveKit chama/audio/speech. Vozes são específicas do modelo na Venice — passe um par model/voice do mesmo modelo. O tts-kokoro mantém o estágio de voz privado e sem censura para que possa falar a saída do LLM literalmente; solicite pcm para evitar uma etapa de decodificação de MP3 e reduzir um pouco a latência. Vozes mais rápidas fornecidas por provedores (por exemplo, Gemini) podem aplicar filtragem de conteúdo, então evite-as se você precisar de fala sem censura.
Modelos Recomendados
Os IDs dos modelos mudam com o tempo — descubra as opções atuais em tempo de execução comGET /models?type=... e GET /models/traits em vez de codificar diretamente. Para agentes de voz, priorize as camadas de baixa latência (modelos chamados flash, turbo, mini ou com contagens pequenas de parâmetros), já que a responsividade percebida depende do tempo até o primeiro token e da velocidade do TTS. Bons pontos de partida no catálogo atual:
Explore todos os modelos
Filtre por texto, speech-to-text e text-to-speech com preços e capacidades ao vivo.
Latência e Dicas de Produção
A qualidade do agente de voz é dominada pela latência de troca de turno — o tempo entre o usuário terminar sua frase e o agente começar a falar. Com o pipeline totalmente Venice, estime aproximadamente:
Espere ~0,8–1,5 s até o primeiro áudio — ótimo para trocas de turno medidas no estilo assistente. Para conversas altamente interrompíveis e sobrepostas, você sentirá a diferença em comparação com um modelo nativo speech-to-speech.
Reduzir latência
- Use
response_format="pcm"no TTS para pular a etapa de decodificação de MP3. - Ajuste o VAD Silero (
silero.VAD.load(min_silence_duration=0.4)) para encurtar o endpointing sem cortar a fala. - Prefira camadas de baixa latência para STT/TTS (por exemplo, TTS
tts-kokoro, STTnvidia/parakeet-tdt-0.6b-v3). Mantenhavenice-uncensored-1-2para o LLM para permanecer privado e sem censura; troque para um LLM da classeflashapenas se você precisar de um tempo até o primeiro token mais rápido. - Mantenha as respostas concisas — a primeira frase é o que determina a responsividade percebida.
Misturando provedores
O LiveKit permite escolher cada componente de forma independente, então você pode manter a Venice onde sua privacidade e modelos sem censura importam mais e trocar por um provedor de streaming onde a latência é crítica. Uma configuração comum de alta interatividade mantém o LLM da Venice (e opcionalmente o STT) e o combina com um TTS de streaming dedicado:Limitações e Notas
- Sem API speech-to-speech / Realtime. A Venice não tem WebSocket Realtime da OpenAI, então
openai.realtime.RealtimeModele o caminho de agente multimodal estão indisponíveis. Use o pipeline STT-LLM-TTS mostrado acima. - STT é em lote, não em streaming. A transcrição da Venice é requisição/resposta, então um VAD (Silero) é necessário para o endpointing. Isso adiciona uma pequena quantidade de latência em comparação com um socket STT de streaming.
- TTS é bufferizado pelo plugin. O wrapper TTS OpenAI do LiveKit reporta
streaming=False, então ele não usa a flagstreamingfrase por frase da Venice. A latência ainda é boa para a maioria dos agentes; useresponse_format="pcm"para minimizar a sobrecarga de decodificação. - Combine a voz com o modelo. IDs de
voicede TTS são válidos apenas para seumodelcorrespondente. Consulte Modelos de Text-to-Speech. - Não codifique listas de modelos. IDs de modelos da Venice são obsoletos e substituídos regularmente — consulte
GET /models/GET /models/traitsem tempo de execução. Consulte Descontinuações.