用 gpt-4o-audio-preview 转写四十五分钟会议,整段 wav 直接 base64 塞进 input_audio,接口返回 400 invalid_request_error,原文是 Request too large for model gpt-4o-audio-preview,源文件 52MB,编码后 70MB,客户端 openai 1.40,Windows 本机。

这类报错背后常见的原因有几处,逐个排除就行。音频先 base64 再传 体积膨胀约三分之一;单请求体上限由音频与文本共用 不是按字数算;wav 没压缩 十六位单声道也要几十兆;接口按时长和体积双重限制 长音频本就该切片。

第一件事是看源文件与编码后各有多大

python -c "import base64,os;p='a.wav';print(os.path.getsize(p), len(base64.b64encode(open(p,'rb').read())))"

转成十六 k 单声道 mp3 再比体积

ffmpeg -i a.wav -ar 16000 -ac 1 -b:a 32k a.mp3

随后按十分钟切片后逐段送转写

ffmpeg -i a.mp3 -f segment -segment_time 600 -c copy part_%03d.mp3

等前面都确认过,再把各段结果按时间戳合并成全文

python merge_transcript.py --dir parts/ --out all.txt

这台环境是别人交接的,不少默认值被动过,只能一项项核。

改完先别撤,确认这几项。所有切片都返回 200,合并后的文本时间顺序正确,总体积降到原来的十分之一。

提醒一点。音频接口按体积和时长一起卡,先压缩再切片比反复调大超时实在。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189