Ana Brainiall

Converse por voz (STT → LLM → TTS pipeline)

avancado · 12 min · Por Ana Brainiall

A anatomia de uma conversa por voz

Conversa por voz com IA é uma cadeia de 3 APIs:

`
[Você fala] → Microfone → STT (Whisper) → texto

LLM (Claude/GPT)

[Você ouve] ← Alto-falante ← TTS (pf_dora) ← texto
`

Cada etapa tem latência. Para a experiência parecer natural (conversa humana), o total precisa ficar abaixo de 1.5 segundos. Em 2026, isso é alcançável mas exige engenharia cuidadosa.

diagrama de fluxo com 3 blocos coloridos — STT (azul), LLM (roxo), TTS (verde) —

Latência realista em 2026

Medição em conversa real na Brainiall:

Total first-token-to-speech: 1150-2150ms. Aceitável se o modelo começa a "falar" cedo (streaming).

Streaming é tudo

Sem streaming, cada etapa espera a anterior terminar: 600ms + 900ms + 500ms = 2000ms mínimo.

Com streaming:
- STT pode começar transcrevendo enquanto você ainda fala (VAD — Voice Activity Detection)
- LLM começa a gerar tokens antes do STT terminar (com alguma previsão da intenção)
- TTS começa narrar as primeiras palavras enquanto LLM ainda gera as últimas

Latência efetiva cai para 400-700ms. Parece natural.

Ilustração do curso

🎧 Ouça a narração completa (vídeo demo em produção)

VAD: quando parar de ouvir

O problema mais sutil: detectar que você parou de falar. Se parar cedo demais, corta sua frase. Se parar tarde, adiciona 500ms de latência.

Técnicas:
- Silêncio absoluto por 600ms: simples mas não lida com pausas naturais de pensamento
- Silero VAD: modelo neural que detecta fim de frase com ~95% precisão em <50ms
- Confidence from STT: Whisper retorna confidence; se cair, provavelmente terminou
- Interruption detection: usuário volta a falar → cancela TTS em andamento, recomeça ciclo

A Brainiall usa Silero VAD + threshold dinâmico de silêncio (ajusta com base no ambiente).

Escolha do modelo para latência vs qualidade

Em voice mode, geralmente vale sacrificar um pouco de qualidade de LLM para ganhar velocidade:

Para conversas onde qualidade > latência (ex: tutor de idiomas detalhado), suba para Claude Sonnet 4.6 ou GPT-5 completo.

Casos de uso que voice-mode resolve bem

Armadilhas comuns

diagrama de armadilhas — 4 situações comuns com ícones + solução; barulho (heads

Implementação básica no browser

Para experimentação rápida:

`javascript
// 1. Captura
const stream = await navigator.mediaDevices.getUserMedia({audio: true});
const mediaRecorder = new MediaRecorder(stream);

// 2. Envia chunks a cada 500ms
mediaRecorder.ondataavailable = async (e) => {
const formData = new FormData();
formData.append('file', e.data);
const r = await fetch('/api/transcribe', {method:'POST', body: formData});
const {text} = await r.json();
// 3. Envia para LLM, recebe resposta
// 4. Envia resposta para /api/tts, toca resultado
};
mediaRecorder.start(500);
`

A Brainiall já oferece isso pronto no chat: clique no microfone e pressione-and-hold.

Teste agora mesmo

No chat Brainiall, clique no ícone de microfone e pressione-and-hold. Fale, solte, receba resposta em texto + áudio. Pro R$29 inclui voz completa; Business desbloqueia vozes premium + latência priority.

🎁 Indique amigos, ganhe mês grátis

Cada 3 indicados que assinam Pro = R$29 de crédito no seu próximo ciclo.

Ver meu código →