问题出现得很突然,日志倒是留得挺全。用 gpt-4o-mini-transcribe 转写 300 条客服录音,本地统计总时长 42 小时,账单里的音频费用却按 61 小时扣,单价没错,差额集中在短录音上。
刚开始盯着「失败重试的请求也被计入用量」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。低于最短计费单位的片段按整段计价。还有一种是重采样后时长计算口径与实际播放时长不同。
另外,批量转写时把静音段一并算进时长。
上来先按文件统计真实时长做基线
python -c "import wave,glob;print(sum(wave.open(f).getnframes()/wave.open(f).getframerate() for f in glob.glob('audio/*.wav'))/3600)"
再往下用 ffprobe 抽查短文件的时长
ffprobe -v error -show_entries format=duration -of csv=p=0 audio/0001.mp3
接着把 3 秒以下的片段合并后再送
python merge_clips.py --min-seconds 3 --dir audio/
等前面都确认过,再对比重试前后的 usage 记录
python -c "import json;print([json.loads(l).get('seconds') for l in open('usage.jsonl')][:10])"
怎么算真的好了,看的是同一批现象。账单时长与本地统计的偏差降到 3% 以内,短片段不再单独计费,重试请求量明显下降。
按分钟计费对短音频不友好,且计费取整规则各厂商不同,量大时先合并再送。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
