录音文件 → gpt-transcribe;实时字幕 → gpt-live-transcribe;对话式语音或新语音生成 → GPT-Live/Realtime。文件转录的 stream=true 只是边处理完整文件边返回文本,不等于麦克风实时会话。现有 /v1/audio/speech 集成要在 2027-01-06 前迁移,旧转录与 translations 工作流要在 2027-02-26 前迁移。
官方资料(2026-10-31 核对):Audio and voice · Transcription overview · File transcription · Realtime transcription · Text to speech · Deprecations · API Pricing
先选工作流:文件、实时字幕还是语音助手?
| 需求 | 推荐起点 | 连接/输入 | 关键边界 |
|---|---|---|---|
| 完整录音转文字 | gpt-transcribe | /v1/audio/transcriptions 上传文件 | 单文件最高 25 MB;可一次返回或流式返回文本 |
| 麦克风/电话实时字幕 | gpt-live-transcribe | Realtime transcription,WebRTC 或 WebSocket | 音频仍在到达;持久会话返回增量与最终转录 |
| 能听、说、打断、用工具的助手 | GPT-Live / Realtime | WebRTC、WebSocket 或 SIP | 属于会话与工具模型,详见独立 Realtime 页面 |
| 现有文字生成语音 | 迁移到 gpt-realtime-2.1-mini | Realtime API | 旧 Speech API 模型将于 2027-01-06 停用 |
| 持续语音翻译 | gpt-realtime-translate | Realtime translation session | 不是给旧 /audio/translations 换 model 名称 |
需要低延迟双向语音、VAD 与打断状态机,请阅读 OpenAI Realtime API 指南;本页聚焦任务选择、转录输入输出和 Audio 迁移边界。
文件转录:用 gpt-transcribe 处理完整录音
把已经录完的音频发送到 /v1/audio/transcriptions。当前支持 mp3、mp4、mpeg、mpga、m4a、wav 和 webm,单文件最高 25 MB。返回 JSON 包含文本和可靠检测到的语言;无法可靠判断时 languages 可能为空数组。
import fs from "node:fs";
import OpenAI from "openai";
const openai = new OpenAI();
const transcript = await openai.audio.transcriptions.create({
file: fs.createReadStream("meeting.m4a"),
model: "gpt-transcribe",
languages: ["zh-cn", "en"],
prompt: "产品发布复盘会议",
keywords: ["GPT Pro AI", "WebRTC"]
});
console.log(transcript.text, transcript.languages);
prompt 提供录音主题等自由上下文,keywords 提供可能出现的字面术语,languages 提供预期语言列表。它们只是提示,不应强迫模型输出音频里没有的词;上线前要比较不加提示与加提示的专名准确率和幻觉率。
超过 25 MB 怎么办?
- 先选择合适的压缩格式,避免为了体积牺牲到无法识别。
- 仍超限时在停顿或句子边界附近切分,每片不超过 25 MB。
- 保存原始录音 ID、片段序号、起止时间、哈希与处理状态,重试时保持幂等。
- 可把上一片尾部的少量真实转录作为下一片上下文,但不要重复拼接造成重词。
- 合并后对时间顺序、专名、数字和断句做业务评测,不要只看 HTTP 200。
Files API 的通用 512 MB 单文件限制不适用于这里;不同端点限制不能相互替代。文件对象的用途与生命周期另见 OpenAI Files API 指南。
完整文件也能流式返回,但它仍不是实时麦克风
文件已完整存在时,可设置 stream=true,先接收多次 transcript.text.delta,最后接收 transcript.text.done。最终事件包含完整文本,并可包含检测到的语言。客户端应在 done 前把内容标为“处理中”,连接中断时按文件哈希和作业状态重试,避免把半段转录写成最终结果。
文件 streaming:输入已经结束,只是边处理边返回。Realtime transcription:输入仍从麦克风、电话或媒体管线持续到达,需要长期连接和音频缓冲。
普通文本的 SSE 事件处理可参考 OpenAI API Streaming 指南,但音频转录要按专用 transcript 事件判断完成。
实时字幕:用专用 Transcription Session
服务端 WebSocket 连接当前使用 wss://api.openai.com/v1/realtime?intent=transcription,不要在 URL 里加对话模型参数。连接后发送 session.update,将 session type 设为 transcription,并在 audio.input.transcription 中选择 gpt-live-transcribe。浏览器音频优先按官方 WebRTC 流程建连,标准 API Key 仍只放后端。
{
"type": "session.update",
"session": {
"type": "transcription",
"audio": {
"input": {
"format": { "type": "audio/pcm", "rate": 24000 },
"transcription": { "model": "gpt-live-transcribe" },
"turn_detection": null
}
}
}
}
当前 gpt-live-transcribe 的 transcription session 不支持 server_vad 或 semantic_vad,应省略 turn_detection 或设为 null,并由应用提交音频轮次。若需要会话式助手自动判断轮次、说话并响应,应使用对话式 GPT-Live/Realtime 工作流,而不是纯字幕 session。
说话人、时间戳与字幕格式:先看弃用风险
旧集成目前仍可用 gpt-4o-transcribe-diarize 获取说话人片段,用 whisper-1 获取 word/segment timestamps 或 SRT/VTT;但这些模型与旧 translations 端点计划于 2027-02-26 停用。它们适合迁移期兼容,不适合今天新建长期依赖。
| 旧能力 | 现有方式 | 停用日期 | 迁移动作 |
|---|---|---|---|
| 普通文件转录 | whisper-1 / gpt-4o-*-transcribe | 2027-02-26 | 改用 gpt-transcribe,重新评测输出字段 |
| 文件说话人标签 | gpt-4o-transcribe-diarize | 2027-02-26 | 追踪后续官方替代;不要假设 Realtime 有标签 |
| 词级时间戳、SRT/VTT | whisper-1 | 2027-02-26 | 确认业务是否必须依赖,并制定降级/替代 |
| 录音翻译成英文 | /v1/audio/translations | 2027-02-26 | 迁移到 Realtime translation session |
迁移时不能只改 model 字段:输入协议、事件、语言字段、说话人/时间戳能力和输出格式都可能变化。先双跑代表性音频,再切换生产流量。
文字转语音:旧 Speech API 正在退出
tts-1、tts-1-hd 与 gpt-4o-mini-tts 已弃用,计划于 2027-01-06 从 API 移除。官方推荐迁移到 Realtime API 的 gpt-realtime-2.1-mini;该模型不支持直接填进 /v1/audio/speech,必须改为 Realtime 连接和事件流程。现有集成可以在过渡期继续使用 Speech API,但应立即盘点调用量、格式、voice、instructions、缓存和客户端播放逻辑。
// 仅用于现有 Speech API 集成的迁移盘点;不要作为新长期架构
const audio = await openai.audio.speech.create({
model: "gpt-4o-mini-tts",
voice: "coral",
input: "这是一段 AI 生成语音。",
instructions: "自然、清晰、语速适中",
response_format: "mp3"
});
现有接口支持 MP3、Opus、AAC、FLAC、WAV 和 PCM;PCM 是 24 kHz、16-bit signed little-endian 原始采样。MP3 适合通用分发,Opus 适合网络传输,WAV/PCM 可减少实时解码开销但体积更大。选择格式时同时测试浏览器/移动端兼容、首帧延迟、带宽和存储成本。
AI 语音披露是上线条件
OpenAI 当前要求清楚告诉最终用户其听到的是 AI 生成声音,而不是人类声音。披露应在播放或通话开始前可见/可听,不能藏在难以找到的条款里。自定义声音还涉及授权、同意录音和来源标识,应单独完成法律与产品评审。
成本、安全与监控
截至 2026-10-31,官方 Pricing 按分钟列出 gpt-transcribe 约 0.0045 美元、gpt-live-transcribe 约 0.017 美元;价格会变化,生产前必须重新核对官方页面,且实际账单还可能包含存储、网络、重试、后处理模型或 Realtime 输出。不要把当前数字硬编码成长期报价。
- 密钥:API Key 只在受信任服务器使用,按 Project/Service Account 最小授权并定期轮换。
- 隐私:上传前取得录音与转录同意,定义原音频、转录、说话人标签和日志的保留/删除策略。
- 输入:验证 MIME、扩展名、真实媒体格式、大小和时长;对不受信任文件设置超时和隔离处理。
- 幂等:用录音哈希 + 工作流版本去重,避免超时重试产生重复转录和重复计费。
- 质量:记录语言、音频条件、提示版本、模型、延迟、错误类型与人工修订,但不要在普通日志保存秘密或完整敏感音频。
用量核算方法见 OpenAI API Usage 指南;密钥和后端代理见 API Key 安全指南。
评测:不要只看词错率
| 维度 | 建议样本 | 业务指标 |
|---|---|---|
| 语言与口音 | 目标语言、地区口音、夹杂语言 | 关键句与语言识别正确率 |
| 声音条件 | 安静、噪声、回声、电话、远场 | 遗漏、插入、不可用率 |
| 关键信息 | 姓名、药名、SKU、日期、金额、编号 | 字段精确匹配与人工复核率 |
| 实时体验 | 短句、长句、停顿、中断、网络抖动 | 首个 delta、最终延迟、重连率 |
| 语音生成 | 多语言、数字、缩写、长段落 | 可懂度、自然度、首帧延迟、投诉率 |
对高风险字段保留人工确认,不让转录文本直接触发不可逆操作。prompt、keywords 与 languages 的每次调整都要版本化并回归评测。
上线前检查清单
- 已按“完整文件 / 实时输入 / 对话助手 / 语音生成”选择工作流,没有混用端点限制。
- 新转录从
gpt-transcribe或gpt-live-transcribe开始;旧模型有迁移负责人和截止日期。 - 25 MB、格式、超时、分片、重试、顺序与幂等均有明确处理。
- 文件 delta/done 与 Realtime 事件分别实现,半成品不会被标成最终转录。
- API Key 不出现在浏览器;录音、转录、日志和删除策略完成隐私评审。
- TTS 用户能够清楚获知声音由 AI 生成;旧 Speech API 的迁移已排期。
- 代表性音频评测、延迟、失败率、人工修订率和每成功分钟成本已建立基线。
常见问题
OpenAI Audio API 新项目应该先用哪个模型?
录音文件转文字从 gpt-transcribe 开始;麦克风、电话或持续音频的实时字幕从 gpt-live-transcribe 开始。新的对话式语音或语音生成集成应按官方迁移方向评估 GPT-Live/Realtime,而不是继续把即将停用的旧 TTS 模型作为长期架构。
录音文件最大可以上传多大?
当前文件转录指南规定单个文件最高 25 MB,支持 mp3、mp4、mpeg、mpga、m4a、wav 和 webm。更大录音要压缩或在句子边界附近切分,并保存时间偏移、顺序和重试状态;不要直接把 Files API 的 512 MB 上限套到 Transcriptions API。
stream=true 和 Realtime transcription 有什么区别?
stream=true 可以在一个已经完成的文件被处理时逐步返回 transcript.text.delta,最终以 transcript.text.done 给出完整文本;Realtime transcription 面向仍在到达的麦克风、通话或媒体流,需要持久会话。是否流式返回与音频是否实时到达是两个不同选择。
OpenAI Audio API 能识别说话人吗?
旧的 gpt-4o-transcribe-diarize 可在文件转录中返回说话人片段,但已进入弃用期,将于 2027 年 2 月 26 日停用;Realtime transcription 当前不提供说话人标签。新系统不要把该旧模型作为长期依赖,应根据官方后续替代方案与自己的多说话人评测决定迁移。
文字转语音还能使用 /v1/audio/speech 吗?
现有集成可在停用日前继续使用,但 tts-1、tts-1-hd 与 gpt-4o-mini-tts 已弃用并计划于 2027 年 1 月 6 日关闭。官方推荐迁移到 Realtime API 的 gpt-realtime-2.1-mini;它不能直接替换 /v1/audio/speech 请求中的 model 字段,必须调整连接和事件流程。
TTS 生成的语音需要告诉用户是 AI 吗?
需要。OpenAI 当前使用政策要求向最终用户清楚披露其听到的是 AI 生成语音,而不是人类声音。界面、音频播放页或通话开场应以用户能够理解的方式说明,并保留适用的来源标识或水印。
怎样评测转录和语音质量?
使用真实语言、口音、夹杂语言、噪声、电话音质、专有名词、数字和长短录音建立评测集。除整体词错率外,还要检查业务关键字段、遗漏/幻觉、说话人边界、首个增量延迟、完整延迟、失败率和每成功分钟成本;prompt、keywords 与 languages 只能作为相关上下文提示。
下一步怎么实现?
先用 20–50 条真实音频建立 gpt-transcribe 基线,再分别验证文件 streaming 和 Realtime 字幕;语音生成直接按 Realtime 迁移路径设计。