主导航

遗留 API

语音活动检测 (VAD)

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

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

概述

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

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

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

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

VAD 有两种模式

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

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

请阅读下文以了解有关不同模式的更多信息。

Server VAD

Server VAD 是语音到语音会话的默认模式,也是在支持轮次检测的模型上进行转录会话时的默认模式。它利用静音时段来自动对音频进行分块。

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

  • threshold:激活阈值(0 到 1)。较高的阈值需要更大的音量才能激活模型,因此在嘈杂环境中可能表现更好。
  • prefix_padding_ms:VAD 检测到语音之前包含的音频量(以毫秒为单位)。
  • silence_duration_ms:检测语音停止所需的静音持续时间(以毫秒为单位)。数值越短,检测到轮次结束的速度就越快。

以下是一个 VAD 配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "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 仅控制音频如何分块。

Semantic VAD

Semantic VAD 是一种新模式,它使用语义分类器根据用户所说的词语来检测用户何时完成说话。该分类器根据用户已完成说话的概率对输入音频进行评分。当概率较低时,模型会等待超时;而当概率较高时,则无需等待。例如,用户说话时如果结尾带有“嗯……”的拖长音,会导致比果断的陈述更长的超时时间。

使用此模式,模型在语音到语音的对话中打断用户的可能性更小,或者在用户说完话之前切断转录的可能性也更小。

可以通过将 session.audio.input.turn_detection.type 设置为 semantic_vad 来激活 Semantic VAD。

其配置方式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "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

© . This website operates independently and is not affiliated with or endorsed by OpenAI, Inc. All brand names, logos, and trademarks are the property of their respective owners.