译者说明:译自 OpenAI 官方 Cookbook。模型名与参数名原样保留。 值得配着站上那篇给 Whisper 写提示词读——那一篇讲的技巧,在新模型上换了一种形态。
关于日期:Cookbook 是持续更新的仓库,页面上没有发布日期。本文的日期取自 OpenAI 官方 Cookbook 索引(
registry.yaml)里为这一篇登记的日期,也就是这份内容第一次被生产出来的时间。
没变的部分
整体结构还是那一套:处理完整录音走音频接口,实时场景走长连接会话,应用照样是「送音频、拿文字、处理报错」。
变了的三处
① 换模型
| 原来 | 现在 |
|---|---|
whisper-1(处理完整录音) |
gpt-transcribe |
gpt-realtime-whisper(实时字幕) |
gpt-live-transcribe |
实时场景里如果更看重准确度,也可以在会话里用 gpt-transcribe——它按提交的音频块来处理。
② 参数换了一套
- 原来只有一个
language提示,现在是languages数组,支持一段录音里有多种语言 - 新增
keywords,专门放领域词汇(产品名、编号、专有名词)——这和自由文本的prompt是分开的两样 - 实时模型多了一个
delay,用来在「快」和「准」之间调
第二条是最实际的改进。 原来要把专有名词塞进一段自由文本的提示里,现在有了专门的位置——原文说这样能减少幻觉,也更准。
③ 输出格式收窄了
新模型默认返回 JSON。Whisper 那种灵活的多格式(纯文本、详细 JSON、SRT、VTT)没有了。
得到了什么
- 完整录音也能边转边出。 处理过程中就有增量事件,界面可以逐步更新,不用一直空等
- 返回里带语言检测结果
- 专有名词单独给,比塞在提示里准
失去了什么
原文老实列了四样没有直接替代的:
- 字幕格式 —— 要原生的 SRT 或 VTT,得继续用 Whisper
- 时间戳 —— 要词级或段级的时间信息,得用明确支持的模型
- 翻译 —— 翻译是另一个接口,新模型不做
- 说话人分离 —— 要说话人标签,用专门的那个模型
这四条决定了「能不能直接换」。 如果你的流程依赖其中任何一样,直接把模型名替换掉就会坏。
六个容易踩的坑
① 把「输出流式」当成「输入实时」。 原文的原话:流式说的是转录输出,不是音频输入。 一个已经录完的文件也能边转边出事件,但文件必须已经存在。
② 语言提示的新旧参数一起发。 老的 language 和新的 languages 同时给,请求直接坏掉。另外,keywords 只是提示,不是强制——它不保证一定出现在结果里。
③ 把空的语言检测结果当成报错。 空数组是合法的返回,意思是「没法可靠判断」,不是「处理失败」。
④ 以为新模型不能用在实时会话里。 能用,只是按提交的音频块处理,不是连续处理。
⑤ 以为所有转录模型在实时会话里功能一样。 不一样——不同模型支持的语音活动检测和延迟控制不同。
⑥ 换之前没查格式兼容。 见上面那四条「失去了什么」。
一句可以带走的
这一篇的价值不在于具体的参数,在于它示范了一份诚实的迁移文档长什么样:
它把「失去了什么」和「得到了什么」放在同样的篇幅里讲。
而绝大多数升级说明只讲后者。下次评估任何一次「新版本更好」的时候,先去找那份「失去了什么」的清单——找不到的话,那份清单仍然存在,只是没人写给你。