OpenAI 于 2026 年 7 月 28 日正式发布两款语音转写模型:gpt-transcribe 和 gpt-live-transcribe。两者都是 Audio API 与 Realtime 转写体系的一部分,但解决的问题不同。
gpt-transcribe:处理完成的音频文件,或转写 Realtime 中已经提交的完整语音片段。gpt-live-transcribe:持续接收现场音频,并尽快返回增量文字。
它们都支持自由格式上下文、关键词提示和多个预期输入语言,适合会议记录、客服通话、直播字幕、语音检索和多语言录音整理。
先按音频到达方式选模型
| 需求 | 推荐模型 | 接入方式 |
|---|---|---|
| 上传已经录好的音频 | gpt-transcribe |
/v1/audio/transcriptions |
| 处理有限长度的音频请求 | gpt-transcribe |
Transcriptions API |
| 文件处理过程中逐段返回文字 | gpt-transcribe |
文件转写并启用流式输出 |
| 提交一个 Realtime 语音片段后再转写 | gpt-transcribe |
Realtime transcription |
| 麦克风或电话音频实时显示字幕 | gpt-live-transcribe |
Realtime API |
| 持久连接中持续接收文字增量 | gpt-live-transcribe |
WebSocket 或 WebRTC |
最容易混淆的是“流式”一词。已经录好的文件也能在处理过程中流式返回部分文本,但音频本身已经完整存在,不需要建立 Realtime 会话。只有音频仍在从麦克风、电话或媒体流不断到达时,才需要 gpt-live-transcribe 和持久实时连接。
两个模型的能力差异
| 能力 | gpt-transcribe |
gpt-live-transcribe |
|---|---|---|
| 输入模态 | 音频、文本上下文 | 音频、文本上下文 |
| 输出模态 | 文本 | 文本 |
| 文件转写端点 | 支持 | 不支持 |
| Realtime 转写 | 支持已提交片段 | 支持实时增量 |
| 输出增量文本 | 支持 | 支持 |
| 检测输入语言 | 支持 | 不返回语言预测 |
| 延迟档位调节 | 不适用 | 支持 |
| 单词级时间戳 | 不支持 | 不支持 |
| 说话人标签 | 不支持 | 不支持 |
| 转写置信度 | 不支持 | 不支持 |
如果业务必须拿到单词时间戳、SRT 或 VTT,官方转写指南仍建议使用 whisper-1。需要说话人标签时,应使用文件转写模型 gpt-4o-transcribe-diarize,而不是要求这两个模型猜测发言人。
准备 SDK 与 API Key
安装或更新 Python SDK:
|
|
设置 API Key:
|
|
不要把 API Key 写进脚本、前端代码或 Git 仓库。浏览器通过 WebRTC 使用 Realtime API 时,应由后端创建短期客户端凭据,而不是把长期服务端密钥发给浏览器。
用 GPT Transcribe 转写音频文件
文件转写调用 /v1/audio/transcriptions。下面是官方 Python SDK 的基本写法:
|
|
对应的 cURL 请求如下:
|
|
文件转写指南列出的常用格式包括:
mp3mp4mpegmpgam4awavwebm
单个文件上限为 25 MB。更大的录音要先压缩或切分,每段保持在 25 MB 以内。切分时尽量选择停顿或句子边界,不要在一个人名、编号或完整句子中间截断,否则相邻片段会丢失语义上下文。
用上下文提高专业词识别率
两个新模型都接受三类转写上下文:
prompt:描述录音主题、场景或背景。keywords:可能在音频中出现的产品名、缩写和专有词。languages:预期出现的一个或多个输入语言。
文件转写示例:
|
|
prompt 应提供与录音相关的信息,不需要重复“请把音频转成文字”这类任务说明。keywords 只是提示,不是模型必须输出的词表。如果音频里没有某个关键词,转写结果也不应该凭空加入它。关键词过多或与内容无关,可能诱发未说出口的词出现在结果里。上线前应比较有无关键词时的真实错误率。
languages 与旧 language 参数不同
gpt-transcribe 和 gpt-live-transcribe使用复数参数 languages,不要同时发送旧的单数 language。官方支持的语言代码形式包括:
- ISO 639-1,例如
en、es、fr。 - 部分 ISO 639-3,例如
eng、spa、yue、cmn。 - 中文区域代码,例如
zh-cn、zh-tw、zh-hk。
不受支持或格式错误的语言代码会被 API 拒绝。多语言通话可以提供多个候选语言,但不要把完全不相关的语言全部塞进请求。关键词必须保持一行一个值,不能包含 <、>、回车或换行字符。遇到这些字符时,文件请求或 Realtime 会话更新会被整体拒绝。
创建 GPT Live Transcribe 会话
实时转写会话的类型是 transcription。服务端音频管道通常使用 WebSocket,浏览器麦克风场景通常使用 WebRTC。下面的 session.update 使用 24 kHz PCM 音频,并关闭自动语音轮次检测:
|
|
关闭自动轮次检测后,应用需要自己决定什么时候结束一个语音片段。音频数据用 Base64 编码后追加:
|
|
片段结束时显式提交:
|
|
也可以配置服务端 VAD,让系统检测说话开始与结束并自动提交轮次。
处理增量文本和最终结果
gpt-live-transcribe 会先发送增量事件,再发送该语音轮次的完整结果。
|
|
界面不能把每个 delta 都当成永久文本。后续增量或最终结果可能修正先前内容,应设计可更新的字幕缓冲区。
不同语音轮次的完成事件不保证按提交顺序到达。必须使用 item_id 将 delta、最终文本和原始音频片段关联,不能只依赖 WebSocket 消息到达时间排序。
调整实时转写延迟
gpt-live-transcribe 允许用 delay 调整延迟与准确率:
| 档位 | 适合场景 |
|---|---|
minimal |
极度重视立即显示的交互 |
low |
低延迟直播字幕 |
medium |
延迟与准确率平衡 |
high |
可以等待更多上下文的高准确率任务 |
xhigh |
能接受最大等待时间以换取更多上下文 |
档位不对应固定毫秒数。实际延迟会随模型配置、音频和网络变化,不能把某个测试结果写死成服务承诺。
更低延迟会更早展示部分文本,更高延迟让模型在输出前听到更多上下文,通常有利于降低词错误率。
提交后再转写的 Realtime 模式
如果应用已经使用 Realtime WebSocket,但不需要边说边显示文字,可以在会话中选择 gpt-transcribe。
|
|
应用先追加音频,再发送 input_audio_buffer.commit。模型可在最终完成事件前发出文本增量,完成事件还会包含检测到的语言。
如果无法可靠判断语言,languages 会是空数组。gpt-live-transcribe 不提供这项检测语言结果。
在专用转写会话或 Realtime 输入转写中,gpt-transcribe 会自动把之前已经转写的轮次作为上下文,有利于保持连续对话中的术语一致性。
生产环境怎么测试
不要只拿安静房间里的标准普通话样本验收。测试集应覆盖真实使用条件:
- 目标语言、口音和中途切换语言的情况。
- 电话窄带音频、不同麦克风和背景噪声。
- 人名、日期、金额、邮箱、订单号与字母数字串。
- 产品名、药品名、缩写和行业术语。
- 极短回答、长录音、抢话和中断。
- 网络抖动、连接重建与重复提交。
除了整体词错误率,还要统计对业务真正重要的错误。客服系统应单独评估订单号和账户号,医疗场景应单独评估药品名和剂量。
实时界面还应记录:
- 首个 delta 到达延迟。
- 最终结果完成延迟。
- 空转写、截断和长时间无结果。
- delta 被最终文本修正的比例。
- 不同
delay档位下的准确率差异。
常见问题
文件转写的 stream 等于 Realtime 吗?
不等于。文件可以在处理期间流式返回文字,但输入音频已经完整上传;Realtime 用于仍在持续到达的现场音频。
两个模型能生成字幕时间轴吗?
它们不提供单词级时间戳。需要单词或分段时间戳、SRT、VTT 时,应根据官方指南选择 whisper-1。
GPT Live Transcribe 能区分说话人吗?
不能返回说话人标签。需要说话人分离时,应使用兼容的文件转写模型或应用级后处理方案。
keywords 越多越好吗?
不是。关键词只是识别提示,无关词过多可能增加未说词语被写入结果的风险。
多语言录音应该使用 language 还是 languages?
这两个新模型使用 languages。不要同时发送 language 和 languages。
总结
gpt-transcribe 适合已经完成的文件、有限音频请求,以及 Realtime 中提交后再处理的完整语音轮次。
gpt-live-transcribe 适合麦克风、电话和直播音频,能持续返回低延迟文本增量,并通过 delay 调节速度与准确率。
无论选择哪一个,都应把 prompt、keywords 和 languages当成需要通过真实音频评测的提示,而不是保证特定文字一定出现的硬约束。