English
主导航

旧版 API

实时转录

流式传输音频并实时接收转录增量内容。

当您的应用需要实时语音转文本,且不需要语音助手回复时,请使用实时转录。实时转录会话会在音频到达时流式传输转录增量,因此用户可以在完整话语结束前看到文本。

如需延迟最低的流式转录路径,请使用 gpt-realtime-whisper。对于离线文件或不需要流式增量的工作流,请使用 Audio API 中的标准语音转文本模型。

选择转录模型

模型适用场景备注

gpt-realtime-whisper

实时音频、转录增量、可调节的延迟。原生流式传输,专为实时会话设计。
gpt-4o-transcribe无需流式传输的更高精度语音转文本。适用于文件和请求-响应转录工作流。

gpt-4o-mini-transcribe

成本更低的转录。适用于对成本的关注度高于最高精度的场景。
whisper-1现有的 Whisper 集成。

不像以下模型那样原生支持流式传输 gpt-realtime-whisper.

gpt-realtime-whisper 是实时转录的替代方案,但不能一概而论地替代所有转录模型。在切换生产流量之前,请针对您的音频、语言、词汇和延迟要求进行测试。

创建转录会话

实时转录使用带有以下配置的会话 type: "transcription"。您可以连接 WebSocket 用于服务端音频管道,或 WebRTC for browser audio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "type": "session.update",
  "session": {
    "type": "transcription",
    "audio": {
      "input": {
        "format": {
          "type": "audio/pcm",
          "rate": 24000
        },
        "transcription": {
          "model": "gpt-realtime-whisper",
          "language": "en"
        }
      }
    }
  }
}

会话字段

  • type: 设置为 transcription for transcription-only sessions.
  • audio.input.format: 追加到缓冲区的音频的输入编码。发送时请使用 24 kHz 单声道 PCM audio/pcm.
  • audio.input.transcription.model:使用 gpt-realtime-whisper for streaming transcription.
  • audio.input.transcription.language: 可选的语言提示,例如 en.
  • audio.input.transcription.delay: 针对以下功能的可选延迟/准确度权衡 gpt-realtime-whisper。支持的值为 minimal, low, medium, high,且 xhigh.
  • audio.input.turn_detection: 对于支持该功能的模型,提供可选的语音活动检测。对于 gpt-realtime-whisper, 省略此字段或将其设置为 null, 然后手动提交音频。

流式传输音频

使用以下方式发送音频块 input_audio_buffer.append:

1
2
3
4
5
6
ws.send(
  JSON.stringify({
    type: "input_audio_buffer.append",
    audio: base64Pcm16,
  })
);

如果禁用轮次检测,请在希望开始转录时提交缓冲区:

1
2
3
4
5
ws.send(
  JSON.stringify({
    type: "input_audio_buffer.commit",
  })
);

对于支持服务端 VAD 的模型,会话会在检测到轮次边界时自动提交音频。

处理转录事件

监听增量转录增量和完成事件:

1
2
3
4
5
6
7
8
9
10
11
ws.on("message", (data) => {
  const event = JSON.parse(data);

  if (event.type === "conversation.item.input_audio_transcription.delta") {
    process.stdout.write(event.delta);
  }

  if (event.type === "conversation.item.input_audio_transcription.completed") {
    console.log("\nFinal transcript:", event.transcript);
  }
});

增量事件包含最新可用的转录文本:

1
2
3
4
5
6
{
  "type": "conversation.item.input_audio_transcription.delta",
  "item_id": "item_003",
  "content_index": 0,
  "delta": "Hello,"
}

完成事件包含已提交项的最终转录结果:

1
2
3
4
5
6
{
  "type": "conversation.item.input_audio_transcription.completed",
  "item_id": "item_003",
  "content_index": 0,
  "transcript": "Hello, how are you?"
}

不同语音轮次的完成事件之间的顺序无法保证。请使用 item_id 将转录事件与已提交的输入项进行匹配。

调整延迟和准确性

流式转录是用延迟换取转录质量。较低的延迟设置可以更早生成部分文本。较高的延迟设置可在输出文本前为模型提供更多音频上下文,并有助于降低词错率。

首先设置 audio.input.transcription.delay 并使用真实音频进行测试。以下是一些实用的起点:

  • minimal 适用于对延迟最敏感的交互;
  • low for low-latency live captions;
  • medium 用于平衡延迟与准确性;
  • high 当准确性比即时显示更重要时使用;
  • xhigh 当您的工作流可以容忍最大延迟以获取更多上下文时使用。

以毫秒为单位的确切延迟可能因模型配置而异,因此请使用代表性音频进行基准测试,而不是假设每个级别都有固定的时长。

不要仅凭合成音频选择设置。请使用具有代表性的麦克风、电话音频、口音、背景噪音、语码转换、领域词汇以及长会话进行测试。

引导词汇和领域术语

如果您的应用依赖精确的领域词汇,请包含语言提示,并仅在所选模型支持时使用提示或关键词引导。对于 gpt-realtime-whisper in GA Realtime sessions, prompt 不支持此功能。

在提供提示引导功能的地方,请使用简短的关键词列表,而非冗长的说明。模型已被指示进行转录,因此请将提示重点放在领域词汇、拼写或风格上,而不是重述转录任务。

关键词样式示例:

Keywords: metoprolol, atorvastatin, A1C, systolic, diastolic

在生产环境中,请将关键词引导视为辅助手段,而非绝对保证。继续手动评估名称、数字、日期、药物名称、产品名称、艺人名称及其他高价值实体。

处理置信度、时间戳和说话人分离

仅请求所选模型和端点支持的可选字段。如果您的应用需要置信度评分、时间戳或说话人分离,请在发布前验证支持情况,并为不可用的字段添加备用方案。

当对数概率可用时,请使用以下方式请求它们 include:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "type": "session.update",
  "session": {
    "type": "transcription",
    "audio": {
      "input": {
        "transcription": {
          "model": "gpt-realtime-whisper"
        }
      }
    },
    "include": ["item.input_audio_transcription.logprobs"]
  }
}

生产检查清单

  • 在调整之前,确定目标延迟和准确性阈值。
  • 使用真实的生产音频进行测试,而不仅仅是干净的样本。
  • 测试每种目标语言。
  • 在评估集中包含数字、日期、货币、电子邮件地址、产品名称和领域术语。
  • 将空转录、截断转录和延迟转录与词错率分开追踪。
  • 确定当后续增量修正早期文本时,您的 UI 应如何修订部分文本。
  • 使用 item_id 用于排序和核对最终转录结果。
  • 为不支持的时间戳、说话人分离或置信度字段保留备用路径。
实时与音频概述

对比语音代理、翻译和转录会话。

实时翻译

使用专门的翻译会话翻译实时语音。

WebSocket 连接

通过服务端媒体管道传输原始音频。

语音活动检测

为实时音频流配置轮次检测。