国内团队调用 Whisper API,问题往往不在模型,而在链路上:跨境网络抖动、上传慢、长音频请求超时、单文件大小受限、多个项目共用一把 Key 难以对账。中转与代理就是把这些麻烦收口到一层接入服务。
但中转不是简单“换个地址”。音频是敏感数据,转写又是长请求,选型时要看上传限制、超时、重试、计费和 Key 管理。本文按这几个点拆开讲,并给一份可执行的验证与迁移清单。
说明:OpenAI、Whisper 是其权利人的商标,本文仅用于技术讨论,与相关厂商无隶属或代理关系。接口限制、错误码和计费口径可能调整,以官方文档和站内文档为准。
一、中转到底转了什么
一个语音中转通常做四件事:把请求转发到上游、替换或托管上游 Key、记录用量与日志、在失败时重试或切换通道。对业务侧来说,仍然是向 /v1/audio/transcriptions 发 multipart 请求,只是 base URL 和 Key 换了。
常见形态有三种:
- 自建反向代理:只解决网络和出口,Key 和数据仍由自己控制,但稳定性靠自建。
- 聚合网关:统一多家上游,提供额度、日志、限流和备用通道,适合多项目团队。
- 转售或代充:由第三方账户代发请求,价格和条款差异大,要重点看数据与合规。
三者责任边界不同。自建代理出问题自己排查;聚合网关要看服务商的 SLA 和故障通知;转售则要确认上游条款是否允许这种用法。
二、上传限制:三层都要看
Whisper 接口对单文件有大小限制,官方文档目前写的是 25MB,且没有给出统一的时长上限。实际能传多久取决于编码:
- 16kHz 单声道 16bit WAV 约每分钟 1.9MB,25MB 大约十几分钟。
- 32kbps 单声道 MP3 约每分钟 240KB,25MB 可以到一小时以上。
- 中转站、反向代理、Serverless 平台还可能设更小的请求体上限。
所以排查 413 或上传失败时,要同时看上游限制、网关限制和客户端限制。压缩音频通常比直接切分更省事:语音转写不需要高采样率,16kHz 单声道足够,MP3 或 Opus 能显著减小体积。
三、切分、转写与合并
超过限制的音频要切分。建议按静音点切,避免把一句话切成两半;如果做不到,固定时长切分也可以,但要保留少量重叠。
ffmpeg -i input.wav -ar 16000 -ac 1 -c:a libmp3lame -b:a 32k \
-f segment -segment_time 600 -reset_timestamps 1 chunk_%03d.mp3
处理流程可以固定为:
- 统一转成 16kHz 单声道,减少体积和格式差异。
- 按 5 到 10 分钟切分,优先在静音处断开。
- 逐片调用转写接口,传入语言提示和简短上下文。
- 合并文本,并按分片序号加上时间偏移。
- 检查接缝处是否重复或漏句,必要时用重叠片段对齐。
时间戳要注意:每片的段级时间戳都要加上“片序号 × 每片时长”,否则合并后会全部回到开头。若使用词级时间戳,还要处理跨片词语被切断的情况。
四、超时与重试
长音频转写不是瞬时请求。客户端读超时、反向代理空闲超时、网关上游超时,任何一层设得太短都会失败。先把超时按最坏情况设置,再用队列控制并发。
| 故障 | 常见表现 | 处理方式 |
|---|---|---|
| 429 限流 | 高峰期集中失败 | 指数退避加随机抖动,降低并发 |
| 5xx 或网关错误 | 间歇性失败 | 有限次数重试,切换备用通道 |
| 读超时 | 长音频中途断开 | 加长超时,改为分片提交 |
| 413 请求过大 | 上传即失败 | 压缩或切分,检查代理上限 |
| 401/403 | Key 失效或无权限 | 停止重试,检查 Key 与额度 |
| 400 参数错误 | 格式、语言或字段不支持 | 修正请求,不要盲目重试 |
重试只对限流、超时和 5xx 有意义。4xx 参数错误重试只会浪费额度。每次重试都要记录请求 ID,避免同一段音频被重复计费;批量任务建议进队列,失败片进入死信队列人工检查。
五、计费透明度
语音转写常见按音频时长计费,也有按 Token 计费的口径。比对账单时重点看:是否按分钟向上取整、最短计费时长、失败请求是否收费、重试是否重复计费、是否有最低消费。
做法很简单:本地统计提交的音频总分钟数,和账单分钟数对账;抽取一天日志,按请求逐条核对;对失败和重试单独建标签。若差异持续超过几个百分点,就要求服务商给出明细。具体价格和阶梯以价格页为准,价格会调整,不要用旧截图做预算。
六、Key 与数据风险
中转服务能看到你的音频和转写文本。选型时要问清:请求和响应是否落盘、保留多久、是否用于训练、有哪些子处理方、数据存放在哪个区域、删除机制是什么。
工程上至少做几件事:按项目分配独立 Key、设置额度上限、定期轮换、不要把 Key 写进前端、日志里避免记录完整转写文本。涉及客户录音、医疗、金融等敏感内容时,优先选择可签数据处理协议的服务,或改用自托管转写。
七、怎么验证一个中转
- 用一段已知文本的音频测试,核对转写结果和字错率。
- 检查返回字段:模型名、语言、时长、分段信息是否合理。
- 传一个接近上限的文件,确认不会静默截断。
- 模拟长音频,观察超时设置和失败提示是否清楚。
- 触发一次限流或错误参数,看错误码是否透明、是否乱收费。
- 连续几天核对用量与账单,确认统计口径一致。
验证时不要只测短视频。真实业务里的长会议、电话录音和嘈杂环境,才是问题集中的地方。
八、迁移清单
- 盘点现有接口、模型、音频格式、平均时长和峰值并发。
- 固化一份测试音频和人工校对文本,作为切换前后对比基线。
- 确认中转支持的上传上限、超时、并发和重试策略。
- 把 base URL、Key 和超时做成配置,避免硬编码。
- 补齐分片、合并、时间戳偏移和失败队列。
- 做账单对账和用量告警,设置预算上限。
- 先切一成流量,观察错误率和 P95,再逐步放量。
- 保留旧通道和回滚开关,确认稳定后再下线。
已有 OpenAI 兼容代码的团队,通常只需改配置就能接入;可以从注册页开始,先用小流量验证。
九、常见问题
Whisper API 中转和 VPN、反向代理有什么区别?
VPN 只改网络路径;反向代理转发请求;聚合网关还负责 Key、计费、限流和重试。问题不同,选的层也不同。
25MB 限制是中转站设的吗?
不一定。上游接口本身有单文件限制,中转和代理也可能设更低的上限。要逐层确认,不能只看客户端报错。
长音频应该切多长?
常见做法是 5 到 10 分钟一片,按静音点切分。片太小会增加请求数和费用,片太大容易超时,最终以实测为准。
重试会不会重复计费?
取决于服务商口径。成功返回后重试、超时但上游已处理,都可能产生重复计费。要用请求 ID 去重,并对账确认。
怎么判断中转有没有换模型?
看返回的模型字段、语言和分段结构,用固定测试集比较转写结果。若结果风格突然变化或字段缺失,要求服务商说明。
延伸阅读:
