Phase 19 - Lesson 03
Capstone 03 — Real-Time Voice Assistant (ASR to LLM to TTS)
Um agente de voz com boa usabilidade deve apresentar latência de ponta a ponta abaixo de 800ms, saber quando o usuário parou de falar, lidar com interrupções (barge-in) e conseguir chamar ferramentas sem engasgar o áudio. Retell, Vapi, LiveKit Agents e Pipecat atingem esse nível de desempenho em 2026. Eles fazem isso com a mesma arquitetura: ASR via streaming, detector de turnos de fala, LLM via streaming e TTS via streaming, todos interconectados via WebRTC com orçamentos de latência agressivos a cada salto. Construa um agente de voz, meça WER, MOS e a taxa de interrupção falsa, e execute testes simulando perda de pacotes de rede.
Type: Capstone Languages: Python (agent + pipeline), TypeScript (web client) Prerequisites: Phase 6 (speech and audio), Phase 7 (transformers), Phase 11 (LLM engineering), Phase 13 (tools), Phase 14 (agents), Phase 17 (infrastructure) Phases exercised: P6 · P7 · P11 · P13 · P14 · P17 Time: 30 hours
Problem
A tecnologia de voz tem sido a categoria de UX baseada em IA de evolução mais rápida no biênio 2025-2026. O teto técnico de latência caiu a cada trimestre. OpenAI Realtime API, Gemini 2.5 Live, Cartesia Sonic-2, ElevenLabs Flash v3, LiveKit Agents 1.0 e Pipecat 0.0.70 tornaram viável um tempo de resposta de áudio inicial (first-audio-out) abaixo de 800ms. A usabilidade não depende apenas da latência. Trata-se da sensação de interação fluida: não interromper o usuário indevidamente, não ser interrompido sem motivo, recuperar-se de interrupções no meio de uma frase, chamar ferramentas durante a conversa sem congelar a reprodução do áudio e tolerar conexões instáveis de redes móveis.
Você não conseguirá atingir esse nível de qualidade apenas encadeando três chamadas de APIs REST comuns. A arquitetura exige um fluxo contínuo de dados (streaming) em pipeline de ponta a ponta. Ao construir essa estrutura, os modos de falha tornam-se claros: um modelo de VAD (detecção de atividade de voz) calibrado para chamadas telefônicas que é acionado com o barulho de uma TV ao fundo, um detector de turnos que espera por pontuações textuais que nunca chegam ou um TTS que consome 400ms de buffer antes de começar a transmitir áudio. O desafio deste capstone é resolver essas falhas uma a uma sob carga pesada e publicar um relatório detalhado de latência e qualidade.
Concept
A pipeline contém cinco etapas integradas via streaming: audio in (WebRTC a partir do navegador ou PSTN), ASR (transmissão de transcrições parciais em tempo real via Deepgram Nova-3 ou de um modelo faster-whisper local), turn detection (VAD combinada com um pequeno modelo classificador de turnos que analisa transcrições parciais em busca de pistas linguísticas de encerramento), LLM (transmissão de tokens assim que o turno do usuário for considerado concluído) e TTS (transmissão do áudio sintetizado em até ~200ms a partir do primeiro token emitido pelo LLM).
Três desafios transversais essenciais. Barge-in: quando o usuário começa a falar enquanto o agente está transmitindo voz, o TTS do agente é cancelado imediatamente e o ASR passa a priorizar a nova captação do microfone. Tool use: chamadas de funções durante o diálogo (como consulta de previsão do tempo ou agenda) devem rodar em um canal lateral sem interromper a reprodução; o agente emite um token de preenchimento ("um segundo...") caso a latência da ferramenta ultrapasse 300ms. Backpressure: sob perda de pacotes, as transcrições parciais são retidas temporariamente, o VAD eleva a tolerância de ruído e o agente evita falar sobre uma mensagem que ainda não foi confirmada pelo cliente.
A meta de qualidade é estritamente quantitativa. WER abaixo de 8% no benchmark Hamming VAD em 15 dB SNR. First-audio-out p50 abaixo de 800ms em 100 chamadas de teste. Taxa de interrupções falsas abaixo de 3%. MOS do TTS acima de 4.2. Capacidade de suportar até 50 chamadas simultâneas em uma única instância g5.xlarge. Esses números constituem a entrega obrigatória.
Architecture
browser / Twilio PSTN
|
v
WebRTC / SIP edge
|
v
LiveKit Agents 1.0 (or Pipecat 0.0.70)
|
+----+--------------+--------------+-----------------+
| | | |
v v v v
ASR VAD v5 turn-detector side-channel
(Deepgram (Silero) (LiveKit) tools
Nova-3 / speech-gate completion score (weather,
Whisper-v3) per 20ms on partials calendar)
| | |
+--------+----------+--------------+
v
LLM (streaming)
GPT-4o-realtime / Gemini 2.5 Flash /
cascaded Claude Haiku 4.5
|
v
TTS streaming
Cartesia Sonic-2 / ElevenLabs Flash v3
|
v
audio back to caller
|
v
OpenTelemetry voice traces -> Langfuse
Stack
- Transporte: LiveKit Agents 1.0 (WebRTC) integrado com Twilio PSTN gateway; Pipecat 0.0.70 como framework alternativo
- ASR: Deepgram Nova-3 (streaming, primeiro parcial sub-300ms) ou faster-whisper Whisper-v3-turbo hospedado localmente
- VAD: Silero VAD v5 emparelhado com o turn-detector do LiveKit (pequeno transformer que analisa transcrições parciais)
- LLM: OpenAI GPT-4o-realtime para integração estreita, Gemini 2.5 Flash Live, ou Claude Haiku 4.5 em cascata (streaming de tokens com canal de áudio separado)
- TTS: Cartesia Sonic-2 (menor latência para o primeiro byte de áudio), ElevenLabs Flash v3, ou Orpheus (código aberto) para hospedagem local
- Ferramentas: FastMCP via canal lateral para clima/agenda/reservas; o agente emite falas de preenchimento (filler) caso a ferramenta demore mais que 300ms
- Observabilidade: spans de voz do OpenTelemetry, rastreamentos de áudio do Langfuse com reprodução de voz
- Infraestrutura de implantação: uma máquina g5.xlarge (24GB de VRAM) para Whisper + Orpheus locais; APIs gerenciadas para obter a menor latência possível
Build It
Sessão WebRTC. Crie uma sala LiveKit e uma interface web básica que capture o áudio do microfone via streaming. On the server, configure um agente que entre na mesma sala para escutar o áudio.
ASR via streaming. Envie frames de áudio PCM de 20ms para o Deepgram Nova-3 (ou faster-whisper na GPU). Inscreva-se para receber transcrições parciais e finais. Registre a latência de cada resultado parcial.
VAD e detector de turnos. Execute o Silero VAD v5 na transmissão dos frames. No evento de fim de fala (speech-end), passe a última transcrição parcial para o classificador de turnos (turn-detector). O turno só deve ser encerrado quando o VAD registrar silêncio de 500ms e a pontuação do turn-detector for superior a 0.6.
Transmissão do LLM. Assim que o turno for concluído, envie o histórico da conversa e a última transcrição final para o LLM. Comece a transmitir os tokens gerados. Ao receber o primeiro token, inicie o TTS.
Transmissão do TTS. Use o Cartesia Sonic-2 para transmitir os blocos de áudio sintetizados de volta ao LiveKit. O primeiro pacote de áudio deve deixar o servidor em menos de 200ms após o primeiro token do LLM. Exiba os blocos de áudio na sala do LiveKit para reprodução imediata do cliente via WebRTC.
Barge-in (Interrupção). Se o VAD detectar nova voz do usuário enquanto o TTS estiver tocando, cancele a transmissão do TTS do agente imediatamente, descarte o restante dos tokens do LLM pendentes e prepare novamente o ASR. Publique um span
tts_canceledna telemetria.Canal de ferramentas. Registre funções de previsão do tempo e agenda como ferramentas. Quando disparadas, execute-as paralelamente. Caso a consulta leve mais do que 300ms, faça o LLM gerar um preenchimento verbal (filler), como "Um momento, deixe-me verificar...", retomando o diálogo após o término do processamento.
Harness de avaliação. Registre 100 chamadas completas. Calcule o WER (comparado a uma transcrição de referência), a taxa de interrupções falsas (TTS cancelado no meio de uma frase inacabada do usuário), a latência p50 do first-audio-out, o MOS do TTS (via NISQA ou avaliação humana) e estabilidade sob perda de pacotes (teste com injeção de 3% de perda).
Teste de carga. Simule 50 chamadas simultâneas em uma única máquina g5.xlarge com chamadores automatizados. Meça a latência p95 sustentada do first-audio-out.
Use It
caller: "what is the weather in tokyo tomorrow"
[asr ] partial @280ms: "what is the"
[asr ] partial @540ms: "what is the weather"
[turn ] completion score 0.82 at @820ms; commit
[llm ] first token @960ms
[tool ] weather.tokyo tomorrow -> 68/52 partly cloudy @1140ms
[tts ] first audio-out @1040ms: "Tokyo tomorrow will be partly cloudy..."
turn latency: 1040ms user-stop -> audio-out
Ship It
O produto entregável é o documento outputs/skill-voice-agent.md. Ele orienta a montagem de um agente LiveKit com a pipeline ASR/VAD/LLM/TTS calibrada para cumprir os requisitos de latência e qualidade do capstone. Rúbrica:
| Weight | Criterion | How it is measured |
|---|---|---|
| 25 | End-to-end latency | Latência p50 do first-audio-out abaixo de 800ms em 100 chamadas gravadas |
| 20 | Turn-taking quality | Taxa de interrupções falsas abaixo de 3% no benchmark Hamming VAD |
| 20 | Tool-use correctness | Execução correta de ferramentas no meio da conversa sem gerar pausas ou engasgos no fluxo de áudio |
| 20 | Reliability under packet loss | Estabilidade das métricas de WER e alternância de turnos com injeção de 3% de perda de pacotes |
| 15 | Eval harness completeness | Reprodutibilidade dos testes e documentação dos resultados com scripts de medição públicos |
Exercises
Substitua o Deepgram Nova-3 pelo faster-whisper v3 turbo rodando localmente na GPU da g5.xlarge. Meça a diferença de latência e o WER. Analise em quais cenários a computação na CPU versus GPU se torna o fator determinante.
Crie uma política avançada para tratamento de interrupções: o que o agente deve fazer caso o usuário comece a falar no meio da execução de uma ferramenta? Compare três estratégias (cancelamento total da ação, conclusão silenciosa da ferramenta ou enfileiramento do próximo turno de fala).
Execute um teste de robustez do detector de turnos: insira pausas propositais no meio de frases faladas. Calibre o silêncio tolerado pelo VAD e a pontuação mínima do classificador de turnos para minimizar interrupções falsas sem estourar o limite de 900ms para respostas válidas.
Implante o agente de voz em um canal de telefonia convencional (PSTN) via Twilio. Compare a latência do first-audio-out obtida via telefone com a do WebRTC. Explique a diferença de latência com base em codecs e tamanhos dos buffers de jitter.
Implemente suporte multilíngue para detecção de voz (espanhol e japonês). Avalie a taxa de falsos positivos do Silero VAD v5 padrão em relação a classificadores calibrados localmente para cada idioma.
Key Terms
| Term | What people say | What it actually means |
|---|---|---|
| Turn detection | "Fim da fala do usuário" | Classificador baseado em inteligência artificial que determina se o usuário encerrou o turno com base em silêncio de áudio e pistas linguísticas do texto parcial |
| Barge-in | "Tratamento de interrupções" | Processo de pausar e limpar o áudio que o agente está emitindo quando o microfone registra que o usuário começou a falar no meio da fala da IA |
| First-audio-out | "Latência inicial de resposta" | Tempo percorrido desde o momento exato em que o usuário para de falar até o envio do primeiro pacote de áudio sintetizado pelo servidor |
| VAD | "Portão de voz" | Modelo de aprendizado de máquina que categoriza pacotes de áudio como fala ou silêncio; Silero VAD v5 é a referência de 2026 |
| Jitter buffer | "Amortecedor de áudio" | Mecanismo no lado do cliente que retém pacotes de áudio de forma sutil para compensar flutuações e atrasos na rede de transmissão |
| Filler | "Fala de preenchimento" | Pequenas falas emitidas pelo agente (ex: "Deixe-me ver...", "Um segundo...") com o intuito de mascarar pausas causadas por processamentos demorados de ferramentas |
| MOS | "Nota média de opinião" | Métrica de qualidade do áudio sintetizado por humanos ou calculada via algoritmos como o NISQA |
Further Reading
- LiveKit Agents 1.0 — framework de referência para agentes de voz WebRTC
- Pipecat — framework alternativo em Python focado em fluxos streaming de áudio
- OpenAI Realtime API — guia de modelos com fala e audição nativas
- Deepgram Nova-3 documentation — documentação do serviço de ASR via streaming
- Silero VAD v5 — repositório oficial do modelo de VAD de referência
- Cartesia Sonic-2 — documentação da API de síntese de voz (TTS) de ultra-baixa latência
- Retell AI architecture — documentação de arquitetura de agentes de voz em escala comercial
- Vapi.ai production stack — visão arquitetônica sobre infraestrutura de telefonia de voz baseada em IA