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 áudioO á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.