语音识别的通用模型对日常对话的准确率已经很高,但业务落地的第一周就会被同一个问题撞一下:专有名词。产品代号、内部系统名、客户公司名、人名——这些词在训练语料里出现频率低,被识别成谐音的概率极高。「云枢平台」变成「云书平台」,「Q3 拉通」变成「可爱三拉通」。这篇文章整理热词定制(hotword / customization)从接入到调参的完整实践。
热词机制的本质是在解码阶段给指定词的 Language Model 概率加权:音频声学特征相似时,带加权的目标词更容易在候选中胜出。它不改模型本身,所以生效快、可随时换表,适合业务词频繁变化的场景。
实践里 70% 的热词效果问题出在表设计上。四条原则:
原则 | 说明 | 反例 |
|---|---|---|
只放真正易错的词 | 通用词汇不用进表,表越长相互干扰越大 | 把「会议」「项目」也放进表 |
补充读音变体 | 多音字、英文缩写给上常见读法 | 只写「重负载」不标注读音倾向 |
词与权重成对管理 | 高频业务核心词权重高,长尾词低权重 | 全表一个权重 |
定期用真实 badcase 更新 | 从错误转写结果反向捞词 | 建完表半年不看 |
以算邻坊的随心语音转文字接口为例,热词在提交转写任务时随请求传入,每个词可带 1~10 的权重(数值越高,识别时越倾向输出该词):
words = [
{"word": "云枢平台", "weight": 10}, # 核心产品名,最高权重
{"word": "拉通", "weight": 6}, # 高频行业词,中权重
{"word": "ES8 自动标注", "weight": 4} # 长尾工具名,低权重
]
task = api.create_task(
audio_url=meeting_url,
hotwords=words,
language="zh"
)权重调参的经验值:从 4~6 起步,逐级上调。一上来全给 10 会出现"热词劫持"——不相关的音频段也被强行匹配成热词,整体准确率反而下降。判断权重是否过高的方法很简单:拿一段完全无关业务的热词测试音频转一遍,看热词是否凭空出现。
热词配完必须做回归验证,两组用例:
只测正向不测负向,是热词上线后整体识别率悄悄劣化的最常见原因。
热词定制是识别率优化里投入产出比最高的手段之一,但它的收益上限由表设计决定:少量、高频、真正易错的词配合理梯度权重,再用正负两向用例守住回归。把这套流程固化进发布环节,业务黑话的识别问题基本可以在上线前消化掉。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。