Blog
AI/Voice
10 de dezembro de 20258 min

Construindo um pipeline de voz em tempo real: do áudio bruto à resposta da IA

O coração do TAMSIV é a voz. Não é um truque — a voz É a interface principal. Construir um pipeline de voz em tempo real sozinho é entrar em um mundo onde cada milissegundo conta.

A arquitetura do pipeline

Áudio PCM 16kHz mono → WebSocket (JWT) → Deepgram Live STT (VAD) → OpenRouter LLM → Chamada de função → OpenAI TTS → Resposta de áudio

O áudio deve ser PCM de 16 bits, 16kHz, mono. O telefone envia blocos binários brutos via WebSocket.

O WebSocket autenticado

Token JWT Supabase na string de consulta: ws://backend:3001?token=eyJhbG.... Validação na conexão. Se o token expirar no meio da conversa, reconexão automática com um token novo.

Deepgram Live STT e o VAD

O VAD (Voice Activity Detection) do Deepgram detecta quando o usuário terminou de falar. Sem VAD, é necessário um tempo limite de silêncio no lado do cliente — muito curto corta, muito longo atrasa. O Deepgram gerencia isso com precisão.

A dificuldade: gerenciar resultados intermediários (is_final: false) vs. finais (is_final: true). É preciso acumular os resultados finais para construir a transcrição completa.

A orquestração LLM

A transcrição vai para o OpenRouter com chamada de função. O modelo é configurável com fallback automático. A latência total: finalização STT (~200ms) + LLM (~800ms-2s) + TTS (~500ms). Entre 1.5 e 3 segundos.

OpenAI TTS

Voz nova. O áudio é transmitido de volta via o mesmo WebSocket. O frontend começa a tocar assim que os primeiros blocos chegam, sem esperar a resposta completa.

As lições do tempo real

Tudo pode falhar a qualquer momento. Retentativas inteligentes, disjuntores, fallbacks em cada etapa. O pipeline é robusto hoje, mas cada linha de gerenciamento de erros representa um bug vivenciado.