VAD · detecção de voz

Voice Activity Detection · agente de voz em telefonia

O VAD erra.

A decisão é probabilística, feita por um modelo pequeno com 32 milissegundos de contexto, e não existe ajuste que a acerte sempre. O desafio é medir o impacto e quando ele erra.

O essencial, em seis linhas

  1. O erro é estrutural, não um defeito. O detector é um classificador probabilístico; onde há sobreposição entre fala e não-fala, alguma decisão sai errada.
  2. Qualidade percebida não prevê impacto na máquina. O áudio que soa pior não é o que quebra — e isso é medido, não opinião.
  3. Nosso canal é o pior caso. Telefonia a 8 kHz: metade da informação é apagada antes de qualquer modelo ser consultado.
  4. O erro é ajustável em direção e tamanho, nunca em existência. Menos cliente perdido significa mais ruído tratado como cliente. Sempre.
  5. Trocar de fornecedor troca a curva, não o problema. Todo produto de transcrição em tempo real também usa VAD, e expõe os mesmos botões.
  6. Dá para medir, mas não do jeito que se espera. Nenhuma medida é exata, contínua e barata ao mesmo tempo.
01

O que soa aceitável para você pode quebrar a máquina

Qualidade percebida por um ouvido humano e impacto sobre um modelo são grandezas diferentes.

"Perceived audio quality and machine impact are different things: a call that sounds acceptable to a human reviewer can still derail STT, and vice versa." ai-coustics, ao lançar um modelo cujo único trabalho é prever, antes do VAD, se um áudio vai quebrar a etapa seguinte1

Melhorar o áudio para o ouvido pode piorar o resultado da máquina

Um realce de voz que melhora as métricas de qualidade percebida mais que dobra a frequência com que o modelo de linguagem entende a intenção errada (0,318 contra 0,135). A correlação entre métrica de qualidade e falha real fica entre −0,07 e −0,47. "Perceptually Better, Semantically Worse", 202615

No benchmark do próprio fabricante, o detector confunde ruído com fala

Em gravações que contêm só ruído, o detector que usamos acerta 87% num conjunto público e 71% num privado: cerca de 3 em cada 10 áudios sem nenhuma voz o confundem. Silero VAD · métricas de qualidade do fabricante2

Pessoas e máquinas degradam em ritmos diferentes

Modelar a percepção humana não prevê o desempenho do reconhecedor: são dois sistemas distintos ouvindo o mesmo sinal. JASA Express Letters · humano vs. automático em ruído8

A consequência. "A ligação estava boa" e "o agente conseguiu ouvir" são afirmações diferentes, e a primeira não sustenta a segunda. A seção 4 mostra isso numa gravação real deste canal.

02

O canal telefônico é o pior caso possível

A ligação nasce em G.729 a 8 kHz. Uma reunião em Zoom trafega a 48 kHz. Ou seja, seis vezes a taxa, com banda útil quinze vezes maior.

A banda que sobrevive ao canal

energia média da fala em gravações deste canal
energia média medida faixa onde ainda há sinal (300 Hz – 3,4 kHz)
Acima de 3,4 kHz não chega praticamente nada. O detector espera um espectro até 8 kHz, então metade da entrada dele chega vazia — e por isso o limiar em uso é 0,30, e não o 0,5 padrão.
O canal define o teto de qualquer modelo colocado depois dele. Nenhum ajuste recupera informação ou qualidade.
CanalAmostragemBanda útilPerdas acumuladas
Telefonia do agente8 kHz 0,3 – 3,4 kHz G.729 → G.711, transcodificação, jitter e perda de pacotes
Telefonia G.711 ponta a ponta8 kHz 0,3 – 3,4 kHz preserva a forma de onda, teto de banda é o mesmo do G.729
Telefonia HD (G.722)16 kHz0,05 – 7 kHz compressão leve
Zoom / Teams / Meet48 kHz0,02 – 20 kHz rede, sem estreitamento de banda
Assistente de voz no celular24–48 kHzaté 20 kHz captura direta do microfone

Um agente que atende telefone não é comparável a uma demonstração feita com headset.

03

O que o VAD faz — e por que não dá para tirá-lo

Papel 1 · recorte

Delimitar o áudio que vai para a transcrição

A transcrição só vê o que o VAD entregar. Áudio não entregue não vira palavra errada — vira palavra inexistente, e o agente segue como se o cliente estivesse calado. No sentido oposto, trecho sem voz também custa: transcritores inventam texto quando não há fala6.

Papel 2 · ritmo

Interrupção e detecção de fim de turno

É o VAD que manda o agente parar quando o cliente fala por cima, e que autoriza a resposta quando ele termina. Com transcrição em lote não há sinal de fim de turno vindo do transcritor: a qualidade do VAD é a qualidade da conversa.

As duas decisões, em escala de tempo

valores do ajuste em uso
1 · O RECORTE QUE VAI PARA A TRANSCRIÇÃO cliente começa a falar cliente para ÁUDIO DA LIGAÇÃO cliente falando fala mínima 0,15 s silêncio mínimo 1,00 s ENVIADO À TRANSCRIÇÃO — UM ÚNICO TRECHO padding 1,00 s · áudio anterior, já gravado START · o VAD confirma a fala END · trecho fechado e despachado 0 s 2 s 4 s 6 s 8 s 2 · A INTERRUPÇÃO (BARGE-IN) agente cala AGENTE FALANDO resto da resposta cancelado cliente falando por cima ≈ 0,6 s rampa de detecção + 0,50 s de fala contínua exigida
O trecho enviado à transcrição não coincide com a fala: começa antes (padding retroativo) e termina depois (o silêncio que provou que o cliente havia parado).

E não é uma escolha exclusiva do projeto. É um padrão comum em voice agents. Por exemplos, sistemas de transcrição em tempo real também usam VAD.

ProdutoO que a documentação expõe
OpenAI
voz em tempo real
Detecção de turno por VAD com threshold, prefix_padding_ms e silence_duration_ms — os botões da seção 54.
Deepgram
streaming
O endpointing "depende de um Voice Activity Detector"; vad_events emite o início de fala para detectar interrupção11.
Google Cloud
Speech-to-Text v2
enable_voice_activity_events devolve eventos de início e fim de fala, com tempos-limite configuráveis12.
AssemblyAI
Universal Streaming
Limiar de confiança do VAD por quadro (padrão 0,4), com a recomendação de aumentá-lo em ambientes ruidosos — o mesmo trade-off13.
faster-whisper
Whisper em produção
Embarca o Silero VAD no próprio pacote e liga o filtro por padrão, com os mesmos quatro parâmetros14.

Não dá para desligar. Sem VAD, ou a transcrição recebe a ligação inteira — inviável em custo, latência e sem sinal de fim de turno — ou o agente nunca sabe quando falar. É padrão da indústria para decider onde a fala começa e termina.

04

O teste: a mesma frase, sete canais

A mesma frase, tipos de ruídos diferentes

gravação real · 12 s · ajuste em uso no agente
forma de onda
probabilidade de fala, janela a janela (0 → 1)
fala que existe (em cima) · o que o agente detectou (embaixo)
fala do cliente trecho detectado e enviado à transcrição probabilidade suavizada fala não detectada
05

Como a decisão é tomada: uma probabilidade a cada 32 ms

O modelo que olha 32 milissegundos por vez e devolve um número entre 0 e 1. Ele usa três parâmetros principais e os transformam numa decisão.

  1. Limiar de ativação — acima de que probabilidade a janela conta como fala. O botão de confiança. Em uso: 0,30.
  2. Fala mínima — quanto tempo acima do limiar antes de declarar "começou a falar". O filtro contra estalos. Em uso: 0,15 s.
  3. Silêncio mínimo — quanto silêncio antes de declarar "parou". Define o picote e o atraso da resposta. Em uso: 1,00 s.

Ajuste o detector nesta ligação

gravação real · 54 s · 9 falas do cliente · 7 falas de terceiros
forma de onda
probabilidade suavizada · a linha tracejada é o limiar escolhido
fala que existe (em cima) · o que o agente detectou (embaixo)
fala do cliente fala de outra pessoa trecho detectado fala não detectada · detecção sem voz
↓ pega fala fraca, pega ruído · ↑ só o que é óbvio
↓ segura o segmento aberto por mais tempo
↑ filtra estalos, atrasa a interrupção
↓ mais picote · ↑ mais atraso e turnos emendados
06

Precisão e recall: o trade-off que não tem saída

Recall é quanta fala do cliente o detector pega; precisão é quanto do que pegou era mesmo fala. Subir um baixa o outro.

Precisão × recall neste canal

medido janela a janela, em gravações reais de telefonia
arraste e acompanhe o ponto na curva

A mesma forma aparece nos benchmarks publicados pelos próprios fabricantes2: um joelho, e depois um preço cada vez mais caro por ponto de recall. Nenhuma curva toca o canto superior direito — é lá que viveria o detector perfeito, e ele não existe em nenhum fornecedor.

É esta a decisão, e ela é de negócio antes de ser técnica. Para a direita na curva: mais ruído e mais voz de terceiros tratados como cliente. Para a esquerda: mais cliente falando sem ser ouvido.

07

Por que não dá para simplesmente "consertar"

Duas razões independentes, ambas propriedades da tecnologia: o modelo não sabe quando erra, e o erro é difícil de medir.

O modelo não sabe quando erra

São cerca de 270 mil parâmetros. Quando o modelo devolve 0,31, ele não diz "tenho 31% de certeza" — diz apenas que as multiplicações que aprendeu dão 0,31 aqui. Não há dentro dele nenhuma noção de "acertei" ou "errei".

Saber quando ele erra exigiria um modelo exato do que é fala — e é porque essa função não existe que se treina um modelo estatístico. Um detector capaz de identificar os próprios erros seria, por definição, um detector melhor.

Não há botão "explique esta decisão". A decisão vem da interação de centenas de milhares de pesos, não de uma condição legível.

E o erro é difícil de medir

O gabarito é humano. Para dizer que o detector errou, alguém precisa dizer antes onde havia fala — e pessoas discordam sobre onde uma palavra começa e termina.

Não existe "um" erro. Perder fala, ativar no vazio, emendar turnos, capturar terceiros e picotar são falhas qualitativamente diferentes. Qualquer número único é uma taxa de câmbio arbitrária entre elas.

"Então como a gente mede se isso está acontecendo?"

É a pergunta certa. Dá para medir; o que não existe é uma medida ao mesmo tempo exata, contínua e barata.

Como medirO que entrega Onde falha
Gatilhos que o agente já emite
frase de inatividade · interrupção desfeita
De graça, em 100% das ligações, e cobrem as duas direções do erro. A frase de inatividade — "você ainda está na linha?" — dispara quando o agente acha que ninguém falou, inclusive quando o cliente falou e não foi ouvido. A interrupção que a plataforma desfaz marca o falso positivo. Cada disparo vem com hora exata: é um ponteiro para o trecho que vale ouvir. Nenhum dos dois é taxa de erro — a frase de inatividade também dispara quando o cliente estava mesmo calado, distraído ou sem sinal. Serve de alarme e de gatilho de amostragem, nunca de medida.
Auditoria humana
alguém ouve e marca onde o cliente falou
A única medida sem viés. Dirigida pelos gatilhos acima — ouvir os 30 s antes de cada frase de inatividade — custa uma fração da amostragem aleatória, porque escuta onde o erro provavelmente está. Dirigida por gatilho, responde "quantos desses episódios foram culpa do VAD" — não a taxa geral. Para a taxa geral é preciso amostra aleatória, e aí o esforço muda de ordem: dezenas de horas de escuta só para saber onde estamos, e centenas de horas, de cada lado da comparação, para provar que um ajuste melhorou a taxa em um ponto percentual.
Re-transcrever o canal do cliente
hipótese a pilotar, não recomendação
Em tese apontaria fala perdida sem humano nenhum: transcrever o canal do cliente inteiro — só ele importa; o canal do agente é irrelevante aqui — e comparar com o que o agente de fato recebeu. Risco alto de não se pagar. O transcritor inventa texto justamente em ruído e silêncio6 — que é exatamente onde essa comparação olha. Cada alucinação vira um falso alarme de "fala perdida". Só faz sentido com filtro pela probabilidade de não-fala que o próprio transcritor devolve, e depois de um piloto pequeno que meça a taxa de alarme falso.
Segundo detector em paralelo Contínuo e barato: sinaliza quando um VAD mais sensível ouve fala e o de produção não. Os dois erram nas mesmas gravações. As perdas que importam são as que ambos deixam passar — invisíveis por construção. Dá um piso, nunca o total.
Modelo de risco do áudio
ex.: Tyto, da ai-coustics
Estima, antes do VAD, a chance de o áudio quebrar a etapa seguinte. Roda local em CPU, barato para 100% das ligações. Serve para triar17. Prevê risco, não mede erro. Janelas fixas de 5 s não apontam qual fala de 0,4 s se perdeu. E a documentação avisa: construído com fala em inglês, e "enunciados curtos carregam contexto insuficiente" — o que mais perdemos.

O arranjo que funciona. Os gatilhos que o agente já emite como alarme contínuo e como ponteiro; a auditoria humana indo direto aos trechos que eles apontam.

A

Anexo · duas ligações inteiras, do começo ao fim

Roda do mouse dá zoom, arrastar move a janela, e a faixa de cima navega a ligação inteira. Aqui os cinco parâmetros do detector estão expostos, e os dois botões carregam os valores reais de produção: o inicial e o que o agente aplica sozinho quando espera e não ouve nada.

Anexo A · ligação de 2026-08-28

2 min 43 s · 16 falas do cliente
ligação inteira — arraste para navegar
forma de onda do trecho visível
probabilidade suavizada · a linha tracejada é o limiar
fala que existe (em cima) · o que o agente detectou (embaixo)
janela clique põe o cursor · arrastar move · roda dá zoom

Anexo B · ligação de 2026-09-03

3 min 45 s · 11 falas do cliente
ligação inteira — arraste para navegar
forma de onda do trecho visível
probabilidade suavizada · a linha tracejada é o limiar
fala que existe (em cima) · o que o agente detectou (embaixo)
janela clique põe o cursor · arrastar move · roda dá zoom

Fontes

  1. ai-coustics — Tyto 1.1: modelo que prevê, antes do VAD e da transcrição, o risco de um áudio causar falha adiante. Origem da distinção entre qualidade percebida e impacto na máquina.
  2. Silero VAD — Quality Metrics: metodologia, conjunto multi-domínio de 17 h, ROC-AUC e curvas de precisão × recall comparando Silero, WebRTC, TenVad, FireRed e um VAD comercial não identificado.
  3. Deepgram — Noise-Robust Speech Recognition Techniques: degradação da taxa de erro por G.729, banda estreita de 8 kHz e perda de pacotes.
  4. OpenAI — Realtime API: Voice activity detection: parâmetros de detecção de turno por VAD e por modelo semântico.
  5. Krisp — Improving Turn-Taking of AI Voice Agents: falsos positivos de VAD causados por vozes de fundo; redução de 3,5×.
  6. Investigation of Whisper ASR Hallucinations Induced by Non-Speech Audio (arXiv:2501.11378).
  7. Calm-Whisper: Reduce Whisper Hallucination on Non-Speech (Interspeech 2025).
  8. JASA Express Letters — Comparing human and machine speech recognition in noise: pessoas e modelos degradam de formas diferentes.
  9. Johnson Shi — Designing Speech Transcription for Context, Not Just Latency: por que transcrever com o enunciado fechado produz texto mais estável.
  10. Contagem de parâmetros medida no arquivo do modelo distribuído com o plugin de VAD; ordem de grandeza confirmada em portes públicos do modelo.
  11. Deepgram — Endpointing e Speech Started: o endpointing depende de um VAD; vad_events expõe o início de fala para detecção de interrupção.
  12. Google Cloud — Voice activity events and timeouts: eventos de início e fim de fala no streaming, com tempos-limite independentes.
  13. AssemblyAI — Turn detection: limiar de confiança do VAD por quadro e limites de silêncio para encerrar o turno.
  14. faster-whisper — repositório oficial: "a biblioteca integra o modelo Silero VAD para filtrar as partes do áudio sem fala"; parâmetros e ativação por padrão conferidos na versão 1.2.1 instalada.
  15. Perceptually Better, Semantically Worse: Measuring Speech Enhancement Impact on LLM-Based Voice Systems (arXiv:2608.30348): realce de voz que melhora métricas perceptuais mais que dobra a divergência de intenção do modelo de linguagem; correlação fraca entre métricas de qualidade e falha real.
  16. SR-SAD: Robust Speech Activity Detection in the Presence of Singing Voice (arXiv:2512.09713): "sistemas de detecção de atividade de fala frequentemente classificam canto como fala, degradando o desempenho".
  17. ai-coustics — documentação técnica do Tyto: nota de risco e seis dimensões, janelas fixas de 5 s, execução local em CPU, e as limitações declaradas de idioma e de enunciados curtos.

Os áudios, formas de onda e probabilidades desta página vêm de gravações reais deste canal telefônico, processadas pelo mesmo detector e com o mesmo ajuste que o agente usa em produção.

B

Anexo · o que o agente passou a reportar sobre o VAD

Não dá para medir o erro do detector em produção. O que dá é medir a condição em que a decisão foi tomada, e é isso que o agente agora envia junto de cada turno.

Leia como sinal de risco, não como erro. Nenhum destes números diz "o VAD errou aqui". Eles dizem "aqui a decisão foi apertada" ou "aqui algo mudou". Servem para dois usos: perceber padrões de comportamento e apontar quais ligações merecem escuta humana. Nenhum substitui ouvir.

A ideia central: distância até a linha de corte

O detector decide comparando uma probabilidade com um limiar. O que mais prevê problema não é o valor da probabilidade, é quanta folga existe entre a fala e essa linha.

Duas ligações, o mesmo ajuste, riscos opostos

LIGAÇÃO SAUDÁVEL LIGAÇÃO NO LIMITE 1,0 0,0 1,0 0,0 limiar fala · 0,80 ruído · 0,10 margem separação limiar fala · 0,34 ruído · 0,26 margem separação Sobra folga dos dois lados: piora do canal é absorvida sem mudar a decisão. Fala e ruído quase se encostam: qualquer piora derruba a fala ou dispara o ruído.

Ocupação da escuta: quanto do tempo o detector ficou ativo

agente passa a escutar agente volta a falar ocupação 35% fala com pausas vad_listening_ms · a janela inteira vad_active_ms · a soma dos blocos ocupação 86% quase sem silêncio
Evento recebimento msg — a condição em que a fala do cliente foi ouvida. Todos são indicadores de condição: nenhum afirma que houve erro.
SinalUnidade Como é obtidoO que acender indica
Confiança e folga · todos saem da mesma probabilidade de fala que o detector produz a cada 32 ms — e usam o pico dela, porque o que dispara a detecção é o valor mais alto sustentado, não o valor médio
Confiança na fala
vad_prob_peak · vad_prob_p50
0 a 1 vad_prob_peak é o maior valor do trecho — é ele que alimenta a margem e a separação abaixo. vad_prob_p50 é o mediano, e não é a "confiança típica": o trecho vai até um segundo depois da fala terminar, então o mediano cai quanto mais curto o que foi dito. Só compare turnos de duração parecida. Pico caindo ao longo do tempo: o áudio que chega piorou.
Piso de ruído
vad_noise_p90
0 a 1 O percentil 90 dos valores fora da fala — só enquanto o agente está escutando, para não misturar o eco da própria voz dele. Subindo: risco de o agente ouvir coisa onde não há ninguém.
Margem até o corte
vad_margin
0 a 1 Subtração: vad_prob_peak − limiar. Perto de zero: a fala passou raspando na linha de decisão.
Separação
vad_separation
0 a 1 Subtração: vad_prob_peak − vad_noise_p90. O indicador mais importante. Encolhendo, nenhum ajuste de limiar resolve: fala e ruído ficaram parecidos demais.
Ajuste em vigor
vad_activation_threshold · vad_threshold_mode
0 a 1 · texto O limiar que valia no turno, e se era o normal ou o afrouxado automaticamente. Contexto: sem ele, comparar turnos com ajustes diferentes engana.
Tempo · medido pelo relógio do áudio, não pelo do servidor
Tempo até reagir
vad_onset_ms
ms Do primeiro instante acima do limiar até o detector confirmar que é fala. Subindo: interrupção mais lenta, agente mais "teimoso".
Ocupação da escuta
vad_active_ms · vad_listening_ms
ms · ms Soma dos trechos ativos, e a janela de escuta que os contém — o diagrama acima. A razão entre os dois é a ocupação. Alta com pouca transcrição: ruído contínuo segurando o detector aberto.
Espera sem resposta
vad_detected_after_ms
ms Da pergunta "você ainda está na linha?" até o cliente ser finalmente detectado. Detecção logo depois da pergunta sugere que ele já estava falando e não foi ouvido antes.
Contagens do turno
Trechos por turno
vad_segments_in_turn
contagem Quantos trechos de fala foram abertos até o turno fechar. Vários: frase picotada chegando à transcrição.
Trechos sem texto
vad_empty_segments
contagem Trechos abertos que não produziram nenhuma palavra. Subindo: áudio sem voz sendo mandado para transcrição.
Detecção com o agente falando
vad_segments_while_agent_speaks
contagem Trechos abertos fora da janela de escuta, enquanto o agente falava. Pode ser interrupção legítima ou eco da voz do agente — não é prova de ruído.
Saúde da medição · servem para desconfiar dos demais
Atraso de processamento
vad_event_lag_ms
ms Distância entre o relógio do áudio e o do servidor no momento do evento. Alto: o servidor estava atrasado; os números do turno merecem desconfiança.
Falha de transcrição
stt_error
0 ou 1 Se a transcrição daquele turno falhou por erro técnico. Separa falha de infraestrutura de falha de detecção.
Evento envio msg — o que só existe enquanto o agente está falando. vad_retry_attempt é o par de vad_detected_after_ms da tabela acima: um marca a pergunta, o outro marca se veio resposta.
SinalUnidade Como é obtidoO que acender indica
Parada à toa
vad_false_interruption
contagem Vezes que o agente parou de falar por ter detectado alguém — e não veio fala nenhuma. Falso disparo do detector durante a fala do agente.
Fala ignorada de propósito
vad_interrupt_suppressed
contagem Vezes que uma detecção foi descartada por regra enquanto o agente falava. É decisão de projeto, não defeito — mas em excesso indica regra apertada demais.
Pergunta de inatividade
vad_retry_attempt
nº da tentativa Qual tentativa de "você ainda está na linha?" aquela fala representa. Repetidas: ou o cliente não está sendo ouvido, ou não está mais lá.

O que isso não entrega. Continua não existindo o painel com "quantos clientes o agente deixou de ouvir hoje" — para esse número é preciso alguém ouvindo uma amostra, como descrito na seção 7. O que estes sinais fazem é dizer onde ouvir, e avisar quando o terreno mudou.