问题出现得很突然,日志倒是留得挺全。客服录音转写里品牌名总被识别成另一个常见词,往热词表里加了三个变体、权重给到五,识别结果还是错;试过把热词换成拼音也无效,用的是 paraformer 的实时接口。
刚开始盯着「热词文件编码不对,服务端读成了空表」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。热词权重给得过高,挤压了正常语言模型的打分。少数情况下是热词表只对离线模型生效,实时接口没有加载。
另外,品牌名在音频里被连读,声学层面本身就模糊。
第一件事是确认服务端热词表是否真的加载
curl -s http://asr:9000/health | jq '.hotword_count, .hotword_path'
再往下把权重从五降到二再测同一批音频
python asr_batch.py --hotword hobby.txt --weight 2 --in samples/
然后统计品牌名命中率与整体错字率
python score_asr.py --ref ref.txt --hyp hyp.txt --focus 岚图
热词表按模型分别下发并校验编码
python push_hotword.py --model paraformer --file hobby.txt --encoding utf-8
怎么算真的好了,看的是同一批现象。同一批五十条录音里品牌名命中率从四成升到九成五,其他词错字率没有上升,服务端日志显示热词条数为十二。
热词权重不是越大越好,过高的权重会让模型强行往热词上靠,先确认热词真的加载再调数值。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
