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
Theme

Detecção de atividade de voz (VAD)

Saiba como funciona 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 identifica automaticamente quando o usuário começa ou para de falar. Nas sessões de fala para fala da Realtime API, esse recurso vem ativado por padrão, mas você pode desativá-lo. Nas sessões de transcrição da Realtime API, o suporte à detecção de turnos depende do modelo de transcrição. Os modelos compatíveis com VAD usam server_vad por padrão. Já os modelos gpt-live-transcribe e gpt-realtime-whisper exigem que você omita a configuração de detecção de turnos ou defina seu valor como null. Ao usar esses modelos, envie input_audio_buffer.commit para encerrar cada turno de áudio.

Visão geral

Com a VAD ativada, a Realtime API divide o áudio em trechos automaticamente e envia eventos para indicar quando o usuário começa ou para de falar.

  • input_audio_buffer.speech_started indica o início de um turno de fala.
  • input_audio_buffer.speech_stopped indica o fim de um turno de fala.

Você pode usar esses eventos para lidar com os turnos de fala no seu aplicativo. Por exemplo, eles permitem gerenciar o estado da conversa ou processar a transcrição em trechos.

Para configurar a VAD, use o evento de cliente session.update e defina o campo session.audio.input.turn_detection.

A VAD tem dois modos.

  • server_vad divide o áudio em trechos automaticamente com base nos períodos de silêncio.
  • semantic_vad encerra um trecho de áudio quando o modelo entende, pelas palavras do usuário, que ele terminou de falar.

Para sessões e modelos compatíveis com VAD, o valor padrão é server_vad.

Veja a seguir como funciona cada modo.

VAD no servidor

A VAD no servidor é o modo padrão nas sessões de fala para fala e nas sessões de transcrição com modelos compatíveis com a detecção de turnos. Esse modo usa os períodos de silêncio para dividir o áudio em trechos automaticamente.

Use as propriedades a seguir para ajustar a detecção.

  • threshold define o limiar de ativação (de 0 a 1). Quanto maior o limiar, mais alto precisa ser o volume do áudio para ativar o modelo. Por isso, um limiar mais alto pode funcionar melhor em ambientes ruidosos.
  • prefix_padding_ms define quantos milissegundos de áudio anteriores ao início da fala detectado pela VAD devem ser incluídos no trecho.
  • silence_duration_ms define quantos milissegundos de silêncio são necessários para detectar o fim da fala. Com valores menores, a VAD detecta o fim do turno 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-live-transcribe e gpt-realtime-whisper, omita esse campo ou defina seu valor como null.

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

VAD semântica

A VAD semântica é um novo modo que usa um classificador semântico para detectar, com base nas palavras do usuário, quando ele termina de falar. O classificador atribui uma pontuação ao áudio de entrada de acordo com a probabilidade de o usuário já ter terminado de falar. Se a probabilidade for baixa, o modelo aguarda até o fim do tempo de espera. Se for alta, não é preciso esperar. Por exemplo, se o usuário deixar uma frase em suspenso, o modelo esperará mais tempo do que se ele terminar com uma afirmação conclusiva.

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

Para ativar a VAD semântica, defina session.audio.input.turn_detection.type como semantic_vad.

Veja um exemplo de configuração.

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "audio": {
      "input": {
        "turn_detection": {
          "type": "semantic_vad",
          "eagerness": "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 com modelos compatíveis com VAD. Os campos create_response e interrupt_response se aplicam apenas ao modo de conversa.

A propriedade opcional eagerness ajusta o tempo máximo de espera e, com isso, controla a rapidez com que o modelo pode interromper o usuário. No modo de transcrição, essa propriedade afeta a divisão do áudio em trechos, mesmo que o modelo não responda.

  • auto é o valor padrão e equivale a medium.
  • low dá ao usuário mais tempo para falar no próprio ritmo.
  • high faz com que o modelo divida o áudio em trechos assim que possível.

Se 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, defina eagerness como high.

Se preferir que o usuário fale sem interrupções no modo de conversa ou que os trechos da transcrição sejam mais longos no modo de transcrição, defina eagerness como low.