For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal

Detecção de atividade de voz (VAD)

Saiba mais sobre a detecção automática de atividade de voz na Realtime API.

A detecção de atividade de voz (VAD) é um recurso da Realtime API que permite detectar automaticamente quando o usuário começa ou para de falar. Ela vem ativada por padrão nas sessões Realtime de fala para fala, mas é opcional e pode ser desativada. Nas sessões Realtime de transcrição, o suporte à detecção de turnos depende do modelo de transcrição. Os modelos que oferecem suporte à VAD usam server_vad por padrão, enquanto gpt-realtime-whisper exige que a detecção de turnos seja omitida ou definida como null.

Visão geral

Quando a VAD está ativada, o áudio é dividido automaticamente em segmentos e a Realtime API envia eventos para indicar quando o usuário começa ou para de falar:

  • input_audio_buffer.speech_started: O início de um turno de fala
  • input_audio_buffer.speech_stopped: O fim de um turno de fala

Você pode usar esses eventos para lidar com os turnos de fala no seu aplicativo. Por exemplo, pode usá-los para gerenciar o estado da conversa ou processar transcrições em segmentos.

Você pode configurar a VAD com o evento de cliente session.update, definindo session.audio.input.turn_detection.

Existem dois modos de VAD:

  • server_vad: Divide automaticamente o áudio em segmentos com base nos períodos de silêncio.
  • semantic_vad: Divide o áudio em segmentos quando o modelo considera, com base nas palavras ditas pelo usuário, que ele concluiu sua fala.

Para sessões e modelos que oferecem suporte à VAD, o valor padrão é server_vad.

Leia a seguir para saber mais sobre os diferentes modos.

VAD no servidor

A VAD no servidor é o modo padrão para sessões de fala para fala e para sessões de transcrição com modelos que oferecem suporte à detecção de turnos. Ela usa períodos de silêncio para dividir automaticamente o áudio em segmentos.

Você pode ajustar as seguintes propriedades para refinar as configurações da VAD:

  • threshold: Limiar de ativação (de 0 a 1). Um limiar mais alto exige um áudio mais alto para ativar o modelo e, por isso, pode funcionar melhor em ambientes ruidosos.
  • prefix_padding_ms: Quantidade de áudio (em milissegundos) a incluir antes da fala detectada pela VAD.
  • silence_duration_ms: Duração do silêncio (em milissegundos) necessária para detectar o fim da fala. Com valores menores, os turnos são detectados mais rapidamente.

Veja um exemplo de configuração da VAD:

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "audio": {
      "input": {
        "turn_detection": {
          "type": "server_vad",
          "threshold": 0.5,
          "prefix_padding_ms": 300,
          "silence_duration_ms": 500,
          "create_response": true, // only in conversation mode
          "interrupt_response": true // only in conversation mode
        }
      }
    }
  }
}

Use o mesmo campo session.audio.input.turn_detection nas sessões de transcrição. Para gpt-realtime-whisper, omita a detecção de turnos ou defina-a como null.

Os campos create_response e interrupt_response são usados apenas em conversas de fala para fala. Nas sessões de transcrição, a VAD controla apenas como o áudio é dividido em segmentos.

VAD semântica

A VAD semântica é um novo modo que usa um classificador semântico para detectar quando o usuário terminou de falar, com base nas palavras que ele disse. Esse classificador atribui uma pontuação ao áudio de entrada com base na probabilidade de o usuário ter terminado de falar. Quando a probabilidade é baixa, o modelo aguarda até que um tempo limite seja atingido; quando é alta, não há necessidade de esperar. Por exemplo, um áudio em que a fala do usuário se prolonga em um "hummm..." resultaria em um tempo limite maior do que uma afirmação conclusiva.

Com esse modo, é menos provável que o modelo interrompa o usuário durante uma conversa de fala para fala ou encerre um segmento de transcrição antes que o usuário termine de falar.

A VAD semântica pode ser ativada definindo session.audio.input.turn_detection.type como semantic_vad.

Ela pode ser configurada assim:

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "audio": {
      "input": {
        "turn_detection": {
          "type": "semantic_vad",
          "eagerness": "low" | "medium" | "high" | "auto", // optional
          "create_response": true, // only in conversation mode
          "interrupt_response": true, // only in conversation mode
        }
      }
    }
  }
}

O mesmo campo session.audio.input.turn_detection se aplica às sessões de transcrição. Os campos create_response e interrupt_response são exclusivos de conversas.

A propriedade opcional eagerness permite controlar a propensão do modelo a interromper o usuário, ajustando o tempo máximo de espera. No modo de transcrição, mesmo que o modelo não responda, essa propriedade afeta a forma como o áudio é dividido em segmentos.

  • auto é o valor padrão e equivale a medium.
  • low permite que o usuário fale no seu próprio ritmo.
  • high divide o áudio em segmentos assim que possível.

Se você quiser que o modelo responda com mais frequência no modo de conversa ou retorne eventos de transcrição mais rapidamente no modo de transcrição, pode definir eagerness como high.

Por outro lado, se quiser deixar o usuário falar sem interrupções no modo de conversa ou obter segmentos de transcrição maiores no modo de transcrição, pode definir eagerness como low.