问题出现得很突然,日志倒是留得挺全。客服录音转写里品牌名总被识别成另一个常见词,往热词表里加了三个变体、权重给到五,识别结果还是错;试过把热词换成拼音也无效,用的是 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

怎么算真的好了,看的是同一批现象。同一批五十条录音里品牌名命中率从四成升到九成五,其他词错字率没有上升,服务端日志显示热词条数为十二。

热词权重不是越大越好,过高的权重会让模型强行往热词上靠,先确认热词真的加载再调数值。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189