For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主导航

语音活动检测(VAD)

了解 Realtime API 中的自动语音活动检测。

语音活动检测(VAD)是 Realtime API 提供的一项功能,可自动检测用户何时开始或停止说话。 该功能在语音到语音实时会话中默认启用,但属于可选功能,可以关闭。 在转录实时会话中,是否支持轮次检测取决于转录模型。支持 VAD 的模型默认使用 server_vad,而 gpt-realtime-whisper 要求省略轮次检测设置或将其设为 null

概览

启用 VAD 后,音频会自动分段,Realtime API 会发送事件,指示用户何时开始或停止说话:

  • input_audio_buffer.speech_started:语音轮次开始
  • input_audio_buffer.speech_stopped:语音轮次结束

您可以使用这些事件来处理应用中的语音轮次。例如,您可以用它们管理对话状态或分段处理转录文本。

您可以通过 session.update 客户端事件设置 session.audio.input.turn_detection,以配置 VAD。

VAD 有两种模式:

  • server_vad:根据静音时段自动对音频分段。
  • semantic_vad:当模型根据用户所说的内容判断用户已说完时,对音频分段。

对于支持 VAD 的会话和模型,默认值为 server_vad

请阅读下文,进一步了解这两种模式。

服务器端 VAD

服务器端 VAD 是语音到语音会话的默认模式,也是使用支持轮次检测的模型进行转录会话时的默认模式。它根据静音时段自动对音频分段。

您可以调整以下属性,微调 VAD 设置:

  • threshold:激活阈值(0 到 1)。阈值越高,激活模型所需的音量就越大,因此在嘈杂环境中可能表现更好。
  • prefix_padding_ms:在 VAD 检测到的语音起点之前,额外保留的音频时长(以毫秒为单位)。
  • silence_duration_ms:判定说话结束所需的静音时长(以毫秒为单位)。值越小,检测到轮次结束的速度越快。

以下是 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
        }
      }
    }
  }
}

在转录会话中,使用相同的 session.audio.input.turn_detection 字段。对于 gpt-realtime-whisper,请省略轮次检测设置或将其设为 null

create_responseinterrupt_response 字段仅用于语音到语音对话。在转录会话中,VAD 仅控制音频的分段方式。

语义 VAD

语义 VAD 是一种新模式,它使用语义分类器,根据用户所说的内容检测用户是否已说完。 该分类器根据用户已说完的概率对输入音频进行评分。概率较低时,模型会等待,直到超时;概率较高时,则无需等待。 例如,如果用户的语音以拖长的“嗯……”收尾,等待超时时间就会比以明确的陈述收尾时更长。

使用此模式时,模型在语音到语音对话中打断用户的可能性会降低,也更不容易在用户尚未说完时就将转录文本分段。

session.audio.input.turn_detection.type 设为 semantic_vad 即可启用语义 VAD。

配置方式如下:

{
  "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
        }
      }
    }
  }
}

相同的 session.audio.input.turn_detection 字段也适用于转录会话。create_responseinterrupt_response 字段仅用于对话。

可选的 eagerness 属性通过调整最长等待超时时间,控制模型打断用户的积极程度。在转录模式下,即使模型不回复,该属性也会影响音频的分段方式。

  • auto 是默认值,等同于 medium
  • low 会让用户有充裕的时间说话。
  • high 会尽快对音频分段。

如果您希望模型在对话模式下更频繁地回复,或在转录模式下更快地返回转录事件,可以将 eagerness 设为 high

另一方面,如果您希望用户在对话模式下说话时不被打断,或希望在转录模式下获得更长的转录片段,可以将 eagerness 设为 low