Aprenda

Detecção de atividade vocal: VAD para agentes de voz

Rene, Kabir Goel 
Detecção de atividade vocal: VAD para agentes de voz

A detecção de atividade vocal, VAD, identifica fala em um fluxo de áudio. Para um agente de voz, isso ajuda a responder “alguém está falando?”. A pergunta mais difícil é “a pessoa terminou?”.

Alguém diz “meu endereço é…” e faz uma pausa para verificar o número do prédio. Um detector de fala pode informar silêncio corretamente enquanto o agente começa a falar incorretamente. Ninguém pediu uma interrupção especialmente confiante.

Se você está construindo um agente conversacional, use VAD onde precisar de limites de fala e escolha uma política explícita de alternância de turnos. Veja como essas peças se encaixam, onde detectores independentes ajudam e o que testar antes de deixar seu agente atender chamadas.

Como funciona a detecção de atividade vocal

Uma VAD processa janelas curtas de áudio e estima se contêm fala. Dependendo da implementação, a saída é uma decisão binária, uma probabilidade ou um conjunto de marcas de tempo de fala montado a partir dessas decisões.

Um limiar simples de energia trata áudio suficientemente alto como fala. O custo computacional é baixo, mas um som alto também pode ser uma porta batendo. Detectores mais sofisticados usam características acústicas ou modelos neurais para distinguir fala de outros sons. A VAD moderna não se limita a medir volume.

A aplicação geralmente acrescenta lógica ao redor do detector. Ela pode exigir vários quadros de fala antes de iniciar um segmento, manter um pequeno buffer do áudio anterior ao disparo e esperar um breve silêncio antes de fechar o segmento. Essa lógica afeta o que o usuário ouve: sem buffer, um disparo correto ainda pode chegar tarde demais para preservar o início de uma palavra.

VAD não transcreve palavras, identifica um falante específico nem remove ruído da gravação. São tarefas separadas. Um detector pode reconhecer corretamente a voz da televisão como fala e ainda provocar o comportamento errado em um agente que deve escutar apenas quem ligou.

VAD, detecção de fim e detecção semântica de turnos

Esses termos descrevem decisões diferentes:

ComponentePergunta que respondeLimitação a considerar
Detecção de atividade vocalEste áudio contém fala?Uma pausa diz pouco sobre se o raciocínio está completo.
Detecção de fim baseada em silêncioA fala parou por tempo suficiente para encerrar este turno?Um tempo limite fixo trata de modo parecido uma pausa para pensar e uma frase concluída.
Detecção semântica de turnosO áudio e o contexto linguístico sugerem que a pessoa terminou?As previsões ainda podem ser antecipadas ou tardias; a aplicação precisa saber se recuperar.
Tratamento de interrupçõesO agente deve parar a resposta atual quando a fala começa?Buffers de reprodução e geração em andamento também precisam ser interrompidos ou descartados.

Um detector de fim baseado em silêncio costuma ser um ponto de partida sensato. A troca é direta: um tempo limite menor responde mais cedo, mas pode cortar alguém que ainda está pensando; um limite maior dá espaço, mas atrasa respostas após falas completas.

A detecção semântica de turnos usa contexto adicional para distinguir esses casos. “Meu e-mail é…” e “É só isso, obrigado” podem merecer comportamentos de espera diferentes, mesmo com uma pausa semelhante depois. Ainda é uma estimativa, não permissão para presumir que a pessoa nunca mudará de ideia.

O anúncio do Ink 2 da Cartesia explica por que incorporamos detecção semântica de fim ao reconhecimento de fala. O objetivo do produto é uma conversa em que as pessoas terminem seu raciocínio e recebam uma resposta no momento certo. Otimizar apenas a precisão por quadro de fala não comprova essa experiência.

Quando usar uma VAD independente

Um detector independente é útil quando você precisa encontrar fala antes de decidir o que fazer com ela. Exemplos incluem marcar regiões de fala em gravações, alimentar um indicador de quem está falando ou fornecer eventos de início de fala ao seu próprio pipeline de agentes. A detecção local também pode manter essa etapa específica de processamento no dispositivo; não torna privado ou offline o restante de um agente conectado à nuvem.

Duas implementações que vale avaliar são WebRTC VAD via py-webrtcvad e Silero VAD.

ImplementaçãoConsiderações de entrada e execuçãoO que verificar na aplicação
WebRTC VADO wrapper Python aceita PCM mono de 16 bits a 8, 16, 32 ou 48 kHz, em quadros de 10, 20 ou 30 ms. Expõe quatro modos de agressividade.Se a filtragem mais rigorosa perde fala baixa e se o caminho de captura fornece quadros válidos.
Silero VADUm detector neural com opções PyTorch e ONNX; o projeto documenta suporte a 8 e 16 kHz.Custo do modelo e da execução no dispositivo-alvo, requisitos de blocos e disparos falsos no seu áudio.

Esses requisitos de formato são específicos da implementação. Um cabeçalho WAV não é uma amostra PCM, e um pacote MP3 não é um quadro que você pode passar diretamente ao WebRTC VAD. Decodifique e converta o áudio antes da detecção quando a entrada exigir. Consulte a documentação atual da implementação em vez de presumir que a taxa de amostragem padrão do microfone do navegador é aceita.

Nenhum dos detectores é um gerenciador completo de conversas. Você ainda precisa de detecção de fim, tratamento de interrupções e uma forma de se recuperar quando a pessoa continua falando.

Como usar a detecção de turnos integrada do Ink

Se você quer transcrição em streaming e limites de turnos juntos, a API Realtime Speech-to-Text (Auto) da Cartesia inclui ambos. Não é necessária uma VAD separada para esses limites.

O ciclo dos eventos faz uma distinção útil entre um possível fim e um fim confirmado:

EventoO que a aplicação deve considerar
turn.startA pessoa começou a falar. Aplique sua política de interrupção a qualquer resposta ativa.
turn.updateAtualize a transcrição exibida ou armazenada desse turno.
turn.eager_endO turno talvez esteja completo. Você pode começar a gerar uma resposta especulativa.
turn.resumeA pessoa continuou. Cancele ou descarte o trabalho baseado no fim provisório.
turn.endO detector confirmou o fim do turno. Use a transcrição concluída para prosseguir.

Por exemplo, um fim antecipado após “preciso cancelar” pode ser seguido de “a segunda consulta, não a primeira”. Comece a preparar uma resposta se isso ajudar a latência, mas segure a reprodução até a confirmação do fim. Mantenha ações com consequências, como cancelar uma reserva, sujeitas às regras de validação e confirmação da aplicação. Uma previsão antecipada de fim não é autorização do usuário.

Dois detalhes de integração são fáceis de perder. Primeiro, eventos com transcrição contêm a transcrição acumulada dentro do turno. Substitua o texto atual do turno; concatenar todas as atualizações repete palavras. Segundo, a API espera áudio contínuo, incluindo silêncio. Não use uma VAD anterior para descartar blocos silenciosos: áudio ausente é tratado como espera por mais entrada, não como evidência de que a pessoa parou de falar.

A documentação de detecção de turnos cobre limiares, cancelamento e drenagem de eventos armazenados no buffer ao fechar uma conexão. Comece com os padrões e altere uma configuração por vez usando falhas conversacionais gravadas.

Teste a conversa, além do detector

Decida como a interação deve funcionar antes de escolher limiares. Um recepcionista coletando um endereço deve dar tempo para a pessoa procurá-lo. Uma troca curta de sim ou não pode precisar de menos espera. Um único tempo limite global de silêncio não expressa todos os requisitos.

Use gravações coletadas com a permissão adequada e inclua o microfone ou a conexão telefônica real que o agente usará. Ouça trocas completas, não apenas clipes isolados de fala:

CenárioFalha a procurar
Uma primeira sílaba baixa após silêncioA gravação ou transcrição perde o início da palavra.
Uma pausa no meio de um endereçoO agente responde antes de a pessoa terminar.
Uma resposta curta e completaO agente espera depois de o turno estar claramente encerrado.
”Na verdade, coloque na quinta-feira” durante a fala do agenteO agente continua reproduzindo áudio do buffer por cima da correção.
Fala de fundo, ruído de teclado ou eco do alto-falanteO agente para ou começa a responder ao som errado.
Sotaques, velocidades de fala e hesitações diferentesUma configuração funciona para quem criou o teste, mas interrompe outras pessoas.

Acompanhe finais antecipados e interrupções não detectadas junto ao atraso da resposta. Separe o atraso antes do fechamento do turno do tempo gasto no LLM, nas chamadas de ferramentas, na geração de fala e na reprodução. Reduzir o tempo limite da VAD não corrige uma consulta lenta à agenda.

Quando o agente for interrompido, inspecione todo o caminho de saída. Cancelar a geração de texto não necessariamente limpa o áudio já enfileirado no cliente. Quem diz “pare” se importa com quando o som para, não com qual tarefa do servidor recebeu um cancelamento.

Para experimentar a detecção integrada de turnos, use a demonstração do Ink no navegador e pause deliberadamente no meio de uma frase. Depois execute o exemplo de STT em tempo real nas suas próprias condições de áudio. O teste útil é saber se o agente deixa os usuários terminarem e responde quando estão prontos.

Perguntas frequentes

O que é detecção de atividade vocal?

A detecção de atividade vocal, VAD, identifica quais partes de um fluxo de áudio contêm fala. Ela pode retornar uma decisão ou probabilidade de fala para quadros curtos de áudio. Aplicações usam esses resultados para localizar segmentos de fala, gerenciar gravações ou ajudar a detectar interrupções. VAD sozinha não estabelece que um falante concluiu seu raciocínio.

Qual é a diferença entre VAD e detecção de turnos?

VAD pergunta se há fala. A detecção de turnos pergunta se o turno conversacional do falante começou ou terminou. Um detector de fim baseado em silêncio combina VAD com um tempo limite de pausa; a detecção semântica de turnos também usa contexto linguístico ou conversacional para decidir quando responder.

Devo usar WebRTC VAD ou Silero VAD?

WebRTC VAD é uma opção para decisões de fala por quadro, com requisitos rígidos de formato PCM. Silero VAD é um detector neural com opções PyTorch e ONNX. Compare-os com áudio dos dispositivos, condições de ruído e falantes pretendidos. Nenhum detector independente decide se uma frase está completa.

Cartesia Ink precisa de uma VAD separada?

A API Realtime Speech-to-Text (Auto) da Cartesia inclui detecção de turnos, portanto não exige uma VAD separada para os limites dos turnos. Ela espera áudio contínuo, incluindo silêncio. Seu evento turn.eager_end é provisório; turn.resume significa que esse fim provisório deve ser ignorado.