用 openai 1.76 在 Windows 上把会议录音转字幕,模型换到 gpt-4o-transcribe,response_format 还沿用 whisper-1 时的 verbose_json,接口回 400,原文是 response_format 'verbose_json' is not supported for this model。换回 whisper-1 同一份文件正常,返回里还带着 segments。
真正麻烦的地方在于,几个原因的现象几乎一样。新转写模型只支持 json 与 text 两种返回;代码里 response_format 是全局默认值,换模型没跟着改;需要时间戳时该换回 whisper-1 而不是硬改参数;SDK 旧版本把 verbose_json 当成合法枚举,没在本地拦住。
动手时先用 curl 只传最小参数,确认模型本身可用
curl https://api.openai.com/v1/audio/transcriptions -H "Authorization: Bearer $OPENAI_API_KEY" -F file=@meeting.m4a -F model=gpt-4o-transcribe
接着把 response_format 显式改成 json 再跑一次
curl https://api.openai.com/v1/audio/transcriptions -H "Authorization: Bearer $OPENAI_API_KEY" -F file=@meeting.m4a -F model=gpt-4o-transcribe -F response_format=json
需要分段信息时改回 whisper-1 并保留 verbose_json
python transcribe.py --model whisper-1 --format verbose_json --file meeting.m4a
等前面都确认过,再把模型与格式做成成对配置,启动时校验组合
python -c "print({'gpt-4o-transcribe':['json','text'],'whisper-1':['json','text','srt','verbose_json']})"
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
恢复的判定其实很直接。同一条命令返回 200,json 里有 text 字段;走 whisper-1 时 segments 的 start 与 end 连续且不重叠。
新模型的转写准确率提升明显,但字幕逐句对齐这件事目前还得靠 whisper-1 的 verbose_json。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
