这个坑值得记一笔。用默认参数转写粤语访谈,输出成了一段语义不通的普通话文本,几乎无法使用。
刚开始盯着「音频里夹杂英文,语言检测反复跳变」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。没有指定语言,模型自动检测成普通话;粤语在训练数据中占比低,识别能力有限;模型规格太小,对声调区分不敏感。
显式指定语言避免自动检测
whisper yue.mp3 --model large-v3 --language zh
随后换更大的模型提升区分能力
whisper yue.mp3 --model large-v3 --language zh --task transcribe
接着用提示词给出粤语书面表达引导
whisper yue.mp3 --model large-v3 --language zh --initial_prompt "以下是粤语口语内容"
末了抽样比对输出与原文
python -c "print(cer(ref, hyp))")
别只看报错消失,验证要多做一步。输出内容与粤语原意基本一致,字错率明显下降,夹杂的英文也能正确保留。
语言代码里没有单独的粤语选项,只能指定中文再靠大模型区分,期望值要合理,专业术语仍需人工校对。报错文案容易误导,真正的原因往往在相邻那一层的日志里。