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

实时转录

在实时会话中转录实时音频。

如果您的应用需要将麦克风、通话或其他实时音频流转换为文本,而不需要助手的语音回复,请使用实时转录。推荐模型会在语音传入时返回转录文本增量,并在您的应用提交每个音频轮次时返回最终转录文本。

gpt-live-transcribe 开始。如果您的音频已录制完成,请使用文件转录,或参阅转录概览以比较这些工作流。

创建转录会话

使用 type: "transcription" 创建会话,并选择 gpt-live-transcribe。对于服务端音频流水线,使用 WebSocket 建立连接;对于浏览器音频,使用 WebRTC 建立连接。

{
  "type": "session.update",
  "session": {
    "type": "transcription",
    "audio": {
      "input": {
        "format": {
          "type": "audio/pcm",
          "rate": 24000
        },
        "transcription": {
          "model": "gpt-live-transcribe"
        },
        "turn_detection": null
      }
    }
  }
}

此示例使用 24 kHz PCM 音频,并禁用自动轮次检测,以便您显式提交每个轮次。有关完整的会话配置,请参阅实时会话参考资料

流式传输音频

使用 input_audio_buffer.append 发送音频块:

ws.send(
  JSON.stringify({
    type: "input_audio_buffer.append",
    audio: base64Pcm16,
  })
);

关闭自动轮次检测后,请在您希望结束一个音频轮次时提交缓冲区:

ws.send(
  JSON.stringify({
    type: "input_audio_buffer.commit",
  })
);

如果希望由服务器检测轮次边界并提交轮次,请改为配置语音活动检测

处理转录事件

监听转录文本的增量更新和完成事件:

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);
  }
});

增量事件包含新生成的转录文本:

{
  "type": "conversation.item.input_audio_transcription.delta",
  "item_id": "item_003",
  "content_index": 0,
  "delta": "Hello,"
}

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

{
  "type": "conversation.item.input_audio_transcription.completed",
  "item_id": "item_003",
  "content_index": 0,
  "transcript": "Hello, how are you?"
}

不同语音轮次的完成事件不保证按顺序到达。请使用 item_id 将转录事件与已提交的输入项匹配。

添加转录上下文

当音频包含专业词汇或预计会使用多种语言时,请添加上下文。在现有会话中,再次发送 session.update 事件即可更改转录配置。

{
  "type": "session.update",
  "session": {
    "type": "transcription",
    "audio": {
      "input": {
        "format": {
          "type": "audio/pcm",
          "rate": 24000
        },
        "transcription": {
          "model": "gpt-live-transcribe",
          "prompt": "A customer support call about a premium plan and account AC-42.",
          "keywords": ["premium plan", "AC-42", "billing"],
          "languages": ["en", "fr"],
          "delay": "low"
        },
        "turn_detection": null
      }
    }
  }
}
  • 使用 prompt 描述录音内容或录音场景。
  • 使用 keywords 指定音频中可能出现的产品名称、首字母缩略词及其他需要按原文识别的词语。
  • 使用 languages 指定预期的输入语言。

支持的语言代码格式包括:

  • ISO 639-1 代码,例如 enesfr
  • 部分 ISO 639-3 代码,例如 engspayuecmn
  • 包含地区信息的 zh 语言区域代码,例如 zh-cnzh-twzh-hk

Realtime API 会拒绝不受支持或格式不正确的语言代码。

关键词仅作为提示,并非必须输出的内容。每个关键词必须保持在一行内,且不得包含 <>、回车符或换行符。如果关键词包含上述任一字符,或 prompt 超过模型的长度限制,Realtime API 会拒绝此次会话更新。

gpt-live-transcribe 使用 languages,而不是单数形式的 language 字段。请勿同时发送这两个字段。

转录已提交的轮次

仅当您明确需要在音频轮次提交后才开始转录,或需要输出检测到的语言时,才在实时会话中使用 gpt-transcribe。此专用工作流需要 WebSocket 连接。

gpt-transcribe 在 Realtime API 会话中执行输入转录,或在专用转录会话中运行时,它会自动将此前已转录的轮次用作上下文。

{
  "type": "session.update",
  "session": {
    "type": "transcription",
    "audio": {
      "input": {
        "format": {
          "type": "audio/pcm",
          "rate": 24000
        },
        "transcription": {
          "model": "gpt-transcribe"
        },
        "turn_detection": null
      }
    }
  }
}

追加音频并发送 input_audio_buffer.commit。随后,模型便可在最终完成事件之前发送转录文本增量。其完成事件还包含检测到的语言:

{
  "type": "conversation.item.input_audio_transcription.completed",
  "item_id": "item_003",
  "content_index": 0,
  "transcript": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

gpt-transcribe 无法可靠地预测语言时,languages 为空数组。gpt-live-transcribe 不返回语言检测的预测结果。

调整延迟和准确率

流式转录需要在延迟与转录质量之间进行权衡。较低的延迟设置可以更早生成部分文本。较高的延迟设置则让模型在输出文本前获得更多音频上下文,有助于降低词错误率。

首先设置 audio.input.transcription.delay,并使用您的真实音频进行测试。您可以从以下设置开始:

  • minimal 适用于对延迟最敏感的交互;
  • low 适用于低延迟实时字幕;
  • medium 适用于平衡延迟和准确率的场景;
  • high 适用于准确率比即时显示更重要的场景;
  • xhigh 适用于您的工作流能够容忍最长延迟以获取更多上下文的场景。

具体的延迟毫秒数可能因模型配置而异,因此请使用有代表性的音频进行基准测试,不要假定每个级别都对应固定的延迟。

请勿仅根据合成音频选择设置。测试应涵盖有代表性的麦克风、电话音频、口音、背景噪声、语码切换、领域词汇和长时间会话。

处理置信度、时间戳和说话人标签

gpt-live-transcribe 不返回词级时间戳、说话人标签或转录置信度分数。如果您的应用需要时间戳或说话人标签,请使用支持这些功能的文件转录模型,或在应用层添加备用方案。

生产环境检查清单

  • 在调优前确定目标延迟和准确率阈值。
  • 使用真实的生产环境音频进行测试,不要只使用干净的样本。
  • 测试每种目标语言。
  • 在您的评测集中包含数字、日期、货币、电子邮件地址、产品名称和领域术语。
  • 除词错误率外,还应单独跟踪转录结果为空、被截断或延迟的情况。
  • 确定当后续增量更新修正先前文本时,您的 UI 应如何更新已显示的部分文本。
  • 使用 item_id 对最终转录文本进行排序和核对。
  • 为不受支持的时间戳、说话人标签或置信度字段保留备用处理方案。
实时交互与音频概览

比较语音智能体会话、翻译会话和转录会话。

实时翻译

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

WebSocket 连接

通过服务端媒体流水线流式传输原始音频。

语音活动检测

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