首页博客 → 如何从 OpenAI Whisper API 迁移到其他服务

如何从 OpenAI Whisper API 迁移到其他服务

发布于 2026-08-05 · 5 分钟阅读

团队离开公有 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 请求
参数 languageprompttemperatureresponse_format
响应格式:json、text、verbose_json、srt、vtt
错误结构 {"error": {"message", "type", …}}

最后一行比看上去更重要:官方 SDK 会把错误解析成带类型的异常。如果服务端返回自定义的错误结构,客户端代码就会在意想不到的地方崩溃——错误格式兼容,才免去了重写异常处理的工作。

切换之前如何对比质量

不要盲目切生产环境。合理的顺序是:

  1. 准备样本。二十到五十条真实录音:干净的、有噪音的、很短的、不同语种的——和线上分布一致。
  2. 用一个脚本跑两边,把结果并排保存。
  3. 按自己的标准评判。抽象的百分比没有意义,你的场景才有:产品编号、人名、金额有没有识别对。
  4. 分批切换。先把 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)

需要单独确认的几点

什么时候值得迁移

只要满足下面任意一条,更换服务商就有意义:

如果以上都不成立,就别动已经跑通的集成——反正兼容性摆在那里,以后想搬一个晚上也够。

用你自己的录音试一试。 注册只需一分钟,免费额度足够判断识别质量。

免费获取 API 密钥

常见问题

迁移时需要重写代码吗?

如果你用的是官方 openai-sdk,就不需要:只改基础地址和密钥。调用方式、参数和响应解析都保持原样。

srt 和 vtt 格式能用吗?

能,所有熟悉的 response_format 取值都支持:json、text、verbose_json、srt 和 vtt。

SDK 里的错误处理会受影响吗?

错误按与 OpenAI 相同的结构返回,因此 SDK 仍然会把它们转成带类型的异常,现有的处理逻辑继续有效。

可以同时使用两个服务吗?

可以。创建两个基础地址不同的客户端,把一部分流量导向新服务——这是在真实数据上对比质量的便捷办法。

需要修改 model 的取值吗?

不需要。为了兼容,熟悉的取值会被接受,服务内部使用自己的识别模型。

相关阅读