转写一段中文财报电话会,模型把“营收 12.3 亿”输出成 twelve point three billion,单位也换成了英文,language 参数没传,让接口自动识别,其余中文内容都正常。

一开始怀疑是「音频里的数字本身读得很快,模型按音素直译」,查了一圈,方向不对。

真正麻烦的地方在于,几个原因的现象几乎一样。自动识别把部分片段判成英文,数字跟着走英文规则。也可能是prompt 里没有中文数字书写示例。

不容易想到的是,temperature 偏高,输出随机性放大。

显式指定 language 为 zh 并降温

python -c "print({'language':'zh','temperature':0})"

prompt 里给出中文数字与单位示例

python -c "print('示例:营收 12.3 亿元,同比 8.5%。')"

然后对输出做数字后处理再人工抽检

python -c "import re;print(re.sub(r'\b(twelve)\b','12','twelve point three'))"

等前面都确认过,再用同一段音频对比两次结果差异

python -c "from openai import OpenAI;c=OpenAI();print(c.audio.transcriptions.create(model='whisper-1',file=open('a.mp3','rb'),language='zh').text[:60])"

恢复的判定其实很直接。同一段音频里数字恢复为阿拉伯数字,单位是中文,抽查五处金额与原始录音一致。

language 不传时是按片段判定的,一段音频里可能中英混杂,数字格式就会跳变。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189