首页 → 博客 → 如何从 OpenAI Whisper API 迁移到其他服务
如何从 OpenAI Whisper API 迁移到其他服务
团队离开公有 Whisper API 的理由各不相同:量大之后成本、对数据处理位置的要求,或者服务在本地区不可用。好消息是——只要 API 在协议层兼容,迁移就只是改两行代码的事,一个晚上足够。
代码里到底改什么
只有两样:地址和密钥。其余全部保持原样——字段名、响应格式、错误处理都不动。
# 改之前
client = OpenAI(api_key="sk-…")
# 改之后
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="vs_live_…")
转录调用本身完全不用碰:
result = client.audio.transcriptions.create(model="whisper-1", file=f)
model 参数保留是为了兼容:服务接受这个熟悉的取值,内部使用自己的模型。
兼容性细节
| 项目 | 是否一致 |
|---|---|
接口 POST /v1/audio/transcriptions | 是 |
文件字段 file,multipart 请求 | 是 |
参数 language、prompt、temperature、response_format | 是 |
| 响应格式:json、text、verbose_json、srt、vtt | 是 |
错误结构 {"error": {"message", "type", …}} | 是 |
最后一行比看上去更重要:官方 SDK 会把错误解析成带类型的异常。如果服务端返回自定义的错误结构,客户端代码就会在意想不到的地方崩溃——错误格式兼容,才免去了重写异常处理的工作。
切换之前如何对比质量
不要盲目切生产环境。合理的顺序是:
- 准备样本。二十到五十条真实录音:干净的、有噪音的、很短的、不同语种的——和线上分布一致。
- 用一个脚本跑两边,把结果并排保存。
- 按自己的标准评判。抽象的百分比没有意义,你的场景才有:产品编号、人名、金额有没有识别对。
- 分批切换。先把 10% 的流量导向新服务,几天之后再全量。
for path in samples:
with open(path, "rb") as f:
a = old_client.audio.transcriptions.create(model="whisper-1", file=f).text
with open(path, "rb") as f:
b = new_client.audio.transcriptions.create(model="whisper-1", file=f).text
print(path, "\n before:", a, "\n after:", b)需要单独确认的几点
- 客户端超时。默认的 100 秒对语音消息和短通话够用;一小时的录音要调大。
- 体积限制。超过 25 MB 的文件仍然需要压缩或切分——和原来的 API 一样。
- 重试策略。给 5xx 加上一到两次重试:这是对接任何外部服务的常规做法。
- 转录数据的留存。确认保存策略:这里的录音和文本 24 小时后自动删除。
什么时候值得迁移
只要满足下面任意一条,更换服务商就有意义:
- 用量增长到按分钟计费已经成为账目上显眼的一项;
- 对录音在哪里处理、保存多久有明确要求;
- 需要不受地区限制、不受支付渠道影响的稳定访问;
- 需要现有服务商不提供的格式或参数。
如果以上都不成立,就别动已经跑通的集成——反正兼容性摆在那里,以后想搬一个晚上也够。
用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。
免费获取 API 密钥常见问题
迁移时需要重写代码吗?
如果你用的是官方 openai-sdk,就不需要:只改基础地址和密钥。调用方式、参数和响应解析都保持原样。
srt 和 vtt 格式能用吗?
能,所有熟悉的 response_format 取值都支持:json、text、verbose_json、srt 和 vtt。
SDK 里的错误处理会受影响吗?
错误按与 OpenAI 相同的结构返回,因此 SDK 仍然会把它们转成带类型的异常,现有的处理逻辑继续有效。
可以同时使用两个服务吗?
可以。创建两个基础地址不同的客户端,把一部分流量导向新服务——这是在真实数据上对比质量的便捷办法。
需要修改 model 的取值吗?
不需要。为了兼容,熟悉的取值会被接受,服务内部使用自己的识别模型。
相关阅读
- 如何把通话录音转成文字 — 分步教程:几分钟内通过 API 把电话录音转成文字,包含 Python 和 C# 代码示例、响应格式说明,以及常见错误的处理办法。
- 从视频和网络研讨会自动生成 SRT 与 VTT 字幕 — 如何从录播视频或网络研讨会得到带时间轴的现成字幕:提取音轨、SRT 与 VTT 的区别、代码示例,以及常见问题的解决办法。
- 语音转文字计费:你实际在为什么付费 — 转录服务如何计费、音频里哪些部分在花钱、什么时候自建 GPU 比调用 API 更划算,以及如何估算自己每月的支出。