OpenAI API 语音转文字和文字转语音怎么调:gpt-transcribe 转写、25 MB 限制,以及多个语音模型的停服日期

用 OpenAI API 把录音转成文字,官方现在推荐 gpt-transcribe;文字转语音的 speech 接口则已被官方标为弃用。本文给 Python 和 Node 示例,讲格式、25 MB 限制、prompt 与 keywords,并写明官方公布的停服日期。

NNathaniel bigo··原创首发·AI 辅助撰写
9 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 其他 账号
本文根据 OpenAI 官方《File transcription》和《Text to speech》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。代码里的模型名取自官方当天页面,请以官方模型页为准。本站(bigolab.com)不是 OpenAI 官方网站。API 是按用量计费的独立服务,与 ChatGPT 订阅分开计算,Key 的获取见 /guides/openai-api-key。

适用于谁

  • 想把会议录音、访谈、课程音频转成文字的开发者;
  • 想给自己的应用加朗读功能,又看到网上教程里的 tts-1、whisper-1 不知道还能不能用的人;
  • 已经能发出第一个请求(见 /guides/openai-api-python-quickstart)的人。

结论先说

  1. 语音转文字:官方现在推荐用 gpt-transcribe 转写已经录好的语音,端点是 /v1/audio/transcriptions。
  2. 旧模型在走向停服:whisper-1、gpt-4o-transcribe、gpt-4o-mini-transcribe、gpt-4o-transcribe-diarize 和 /v1/audio/translations 官方标为弃用,将在 2027 年 2 月 26 日停止服务。
  3. 文字转语音:tts-1、tts-1-hd、gpt-4o-mini-tts 同样已弃用,将在 2027 年 1 月 6 日停止服务,官方指向 Realtime API。
  4. 文件上限 25 MB,支持 mp3、mp4、mpeg、mpga、m4a、wav、webm。
  5. 以上日期和推荐都以官方当天页面为准,这类接口变化比较快,写代码前先看一眼官方弃用公告。

语音接口的模型现状:转写推荐 gpt-transcribe,旧模型与 TTS 模型有停服日期

图:本站根据 OpenAI 官方《File transcription》 和 《Text to speech》 整理的示意图

一、语音转文字:最短的例子

Python:

python
from openai import OpenAI

client = OpenAI()

with open("audio.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",  # 以官方模型页当天为准
        file=audio_file,
    )

print(transcription.text)

Node.js(保存为 .mjs):

javascript
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

const transcription = await openai.audio.transcriptions.create({
  file: fs.createReadStream("audio.wav"),
  model: "gpt-transcribe", // 以官方模型页当天为准
});

console.log(transcription.text);

官方说,返回的 JSON 里有转写文本,也有检测到的语言,比如:

json
{
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

当模型无法可靠判断语言时,会返回 "languages": []。

二、让专有名词更准:prompt、keywords、languages

官方给 gpt-transcribe 提供了三个辅助信息:

  • prompt:关于这段录音的非结构化背景,比如“一通关于高级套餐和账号 AC-42 的客服电话”;
  • keywords:你预期会听到的字面词;
  • languages:预期的输入语言。

Python 示例(官方写法,keywords 和 languages 通过 extra_body 传):

python
with open("meeting.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",
        file=audio_file,
        prompt="一通关于高级套餐和账号 AC-42 的客服电话。",
        extra_body={
            "keywords": ["高级套餐", "AC-42", "账单"],
            "languages": ["zh-cn", "en"],
        },
    )
print(transcription.text)

注意几条官方规则:

  • 关键词只是提示,不是必须出现的输出。只放相关的词,并自己评估它们有没有让准确度变好,同时没有让没说过的词冒出来;
  • 对 gpt-transcribe,languages(复数)取代旧的 language,两个不要同时发;
  • 每个关键词必须单独一行,不能含 <、>、回车或换行;
  • 只要触犯上面的字符规则,或者 prompt 超过模型的长度限制,整个请求会被拒绝;
  • languages 的格式:ISO 639-1 代码(如 en、es、fr)、部分 ISO 639-3 代码(如 yue、cmn),以及地区性的中文代码(如 zh-cn、zh-tw、zh-hk);不支持或格式错的代码会被拒绝。示例里的 zh-cn 取自官方列出的格式,具体哪些代码可用以官方当天文档为准。

语音转文字遇到问题怎么办:文件过大、格式、专有名词、请求被拒、实时音频

图:本站根据 OpenAI 官方《File transcription》 整理的示意图,处理办法为本站补充

三、文件超过 25 MB 怎么办

官方说:转写接口接受最大 25 MB 的文件。更大的录音,用压缩格式,或者切成每块不超过 25 MB 的片段。不要在一句话中间切开,那样会丢失上下文、降低准确度。官方示例用的是开源 Python 包 PyDub 来切分(官方注明不对第三方软件的可用性和安全性做保证):

python
from pydub import AudioSegment

song = AudioSegment.from_wav("good_morning.wav")
ten_minutes = 10 * 60 * 1000          # PyDub 以毫秒计时
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.wav", format="wav")

分段转写后,如果想让后一段延续前一段的上下文,官方在提示词一节说过可以把上一段的内容作为背景使用,具体做法以官方当天文档为准。

四、边转写边出文字

官方说,对已经录好的文件也可以流式返回:设 stream=True,会先收到一串 transcript.text.delta 事件,最后收到包含完整文本的 transcript.text.done 事件,对 gpt-transcribe,最终事件里还会带检测到的语言。事件循环的写法和文字流式一样,见 /guides/openai-api-streaming。

麦克风、通话这种还在持续到来的音频,官方明确说要用 Realtime transcription,而不是上面的文件流式。Realtime 的概念见 /guides/openai-api-realtime。

五、文字转语音:官方已标为弃用

官方 Text to speech 页顶部的提示:tts-1、tts-1-hd、gpt-4o-mini-tts 已弃用,2027 年 1 月 6 日停止服务;请迁移到 Realtime API 里的 gpt-realtime-2.1-mini。官方强调,这是 API 工作流的变化,gpt-realtime-2.1-mini 不是 /v1/audio/speech 支持的模型,不能只改个模型名。现有集成在停服前仍可使用下面的 speech 接口。

官方页上仍保留的现有写法(Python):

python
from pathlib import Path
from openai import OpenAI

client = OpenAI()
speech_file_path = Path("speech.mp3")

with client.audio.speech.with_streaming_response.create(
    model="gpt-4o-mini-tts",   # 已弃用,仅供现有集成参考
    voice="coral",
    input="今天是做点大家喜欢的东西的好日子。",
    instructions="用愉快积极的语气说。",
) as response:
    response.stream_to_file(speech_file_path)

官方对这个接口的说明:默认输出 MP3,也支持 opus、aac、flac、wav、pcm;声音(voice)有 13 种,官方说目前针对英语优化,也能生成其他语言;追求最快响应推荐 wav 或 pcm 格式。

还有一条使用政策:官方使用政策要求你向终端用户明确披露,他们听到的 TTS 声音是 AI 生成的,而不是真人。

新项目如果需要语音输出,本文不给出自写的替代方案,因为官方的替代方向走 Realtime,工作流不同,请直接看官方 Realtime 指南。

六、翻译接口

/v1/audio/translations(把录音翻译成英文)已弃用,到 2027 年 2 月 26 日停止服务。官方说迁移目标是 Realtime translation,而且它需要翻译会话、流式音频输入和翻译事件,只改模型名并不等于迁移完成。

常见问题

Q:我看到的教程里用 whisper-1,还能用吗?

官方写的是弃用、将在 2027 年 2 月 26 日停止服务,停服前现有集成仍可使用。新项目建议从 gpt-transcribe 开始。

Q:需要说话人区分、逐词时间戳、字幕格式怎么办?

官方说这些专门示例目前用的是弃用模型,仅为现有集成保留到停服。需要时按官方当天的转写工作流页面选择当前方案。

Q:转写要花多少钱?

价格以官方价格页当天为准,见 /guides/openai-api-price-official-table。

参考资料

  • OpenAI 官方:File transcription — https://developers.openai.com/api/docs/guides/speech-to-text
  • OpenAI 官方:Text to speech — https://developers.openai.com/api/docs/guides/text-to-speech

Nathaniel 的更多内容

  1. 01

    Claude Code 在 Windows 上的常见坑:Git Bash 还是 PowerShell、路径反斜杠、假报错、WSL 怎么选

    Windows 上用 Claude Code,装好之后最容易踩的是:用哪个 shell、路径写法不一致、grep 没匹配就报错、钩子没生效、WSL 和原生怎么选。本文逐条按官方文档整理原因和处理办法,附三段提示词和一张对照表。

    Claude0
  2. 02

    Claude Code Hooks 实战「提交前自动跑测试」:PreToolUse 拦住 git commit,测试不过就退出码 2,附 Windows 注意点

    只写一个完整例子:让 Claude Code 每次要执行 git commit 之前,先自动跑项目测试,没通过就拦下并把输出交给它修。本文按官方 Hooks 文档给出脚本、settings.json 配置、测试方法、排错和 Windows 的两处坑。

    Claude0
  3. 03

    Claude Code 自定义斜杠命令与 Skill 实战:从零写一个「生成更新日志」的 /release-notes,含传参、预执行命令和调试

    概念看过了,还是不知道从哪下手?本文按 Claude Code 官方「Extend Claude with skills」写一个完整可用的例子:用 /release-notes 根据 git 记录生成更新日志,覆盖目录、frontmatter、传参、预执行命令、预授权和调试。

    Claude0
  4. 04

    Claude Code 部署网站:先写 Dockerfile 和 compose 在本机跑通,再按清单上云服务器,别让它直接改线上

    想让 Claude Code 帮你把网站部署到云服务器。本文只写通用做法,按 Docker 官方文档讲:让它写 Dockerfile、.dockerignore 和 compose,在本机跑通,端口和数据卷怎么设,再给出上线清单,并说明为什么不要让它直接动线上机器。

    Claude0
  5. 05

    Claude Code 写爬虫与数据清洗:先查 robots.txt 和网站条款,控制频率,原始数据留一份再清洗

    想让 Claude Code 写爬虫抓数据再清洗。本文先讲合规:robots.txt 不是授权也不是安全措施、网站条款要自己读;再讲怎么用 Python 标准库检查规则、小样本先试、保存原始数据,以及用 pandas 清洗,附四段提示词。

    Claude0
  6. 06

    Claude Code 写 Chrome 扩展:按 Manifest V3 起步,加载未打包的扩展,改了哪些文件要重新加载

    想让 Claude Code 帮你写一个 Chrome 扩展。本文按 Chrome 官方扩展文档讲:manifest.json 的最小写法、在 chrome://extensions 加载未打包的扩展、哪些改动要刷新、怎么看控制台和报错,再给四段提示词,以及权限要尽量少。

    Claude0

同产品的其他教程

  1. 01

    OpenAI API 的 token 怎么算、怎么估算费用:input_tokens 计数接口、tiktoken 和隐藏的输出 token

    发请求前想知道会用多少 token?官方有 Responses 的 input_tokens 计数接口,能把文字、图片、文件、工具定义一起算准;本地 tiktoken 只适合纯文本。本文给 Python 和 Node 示例,讲输出 token 为什么可能比看到的多,以及怎么估算费用。

    ChatGPT0
  2. 02

    OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一个请求,到流式、函数调用、联网搜索

    用 Node.js 调 OpenAI API:设置 OPENAI_API_KEY 环境变量,npm install openai,新建 example.mjs,用 client.responses.create 发出第一个请求。并列出图片、文件、流式、函数调用、联网搜索和错误捕获的 Node 写法。

    ChatGPT0
  3. 03

    OpenAI API 用量层级(usage tiers)与速率限制怎么提升:Free、Build、Launch、Grow 和后台 Limits 页

    OpenAI API 的限速不是固定的:官方按累计购买额度把组织分成 Free、Build、Launch、Grow 四个层级,达到门槛自动升级。本文讲 RPM、TPM 等指标、怎么在后台查自己的限额、响应头怎么读、花费上限和限速的区别,以及怎么让限额变得够用。

    ChatGPT0
  4. 04

    OpenAI API 报错 400、401、403、404、429、500、503 怎么排查:按官方错误码页逐个看原因和解决办法

    调用 OpenAI API 返回 400、401、403、404、429、500、503,各自什么意思?本文按官方 Error codes 页,每个状态码一节,写清官方给的原因和解决办法,并说明 404 在官方页面里的位置、429 的六种情形,附 Python 和 Node 的错误捕获写法。

    ChatGPT0
  5. 05

    OpenAI Realtime API 是什么:语音到语音会话、WebRTC 与 WebSocket、临时密钥和事件机制

    Realtime API 让模型直接处理音频,做可以随时打断的语音助手。本文按官方文档讲它是什么、什么时候用、浏览器接入的流程、session 与事件、可用声音、60 分钟会话上限、安全标识,以及它和转写、文字转语音的分工。

    ChatGPT0
  6. 06

    OpenAI 图像生成 API 怎么用:gpt-image 系列、images.generate 与 Responses 工具、尺寸质量和遮罩编辑

    用 OpenAI API 生成或编辑图片,有 Image API 和 Responses 里的 image_generation 工具两条路。本文按官方文档给 Python 和 Node 示例,讲 gpt-image 模型选择、尺寸质量格式参数、遮罩编辑、被拦截时的错误处理,以及需要组织验证的提醒。

    ChatGPT0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~