OpenLess 中文文档 下载 App

热词注入 ASR 与润色——同一词条在两个环节分别生效

词典词条的两级生效

一个启用的词典词条会在 OpenLess 链路的两个不同位置各自生效,机制完全不同:

录音 → ASR 识别(热词注入)→ 转写文本 → 润色(语义提示)→ 润色结果

第一级:ASR 识别环节的热词注入

机制:词典词条作为 context.hotwords 数组传给 ASR 提供商的流式 API。

火山引擎、StepFun、Whisper 兼容端点等主流 ASR 都支持热词功能——告诉 ASR「这是一个我特别希望你能正确识别的词,请优先匹配」。热词是声学层面的提示——ASR 在语音分析时就会给这些词的发音特征更高的概率权重。

生效时机:ASR 还在处理音频帧的时候就开始生效,直接影响最终的转写文本。

第二级:润色环节的语义提示

机制:词典词条作为 semantic hints 注入润色 LLM 的 prompt——告诉模型「这些词在这个用户的语境里很重要,请正确保留/使用」。

生效时机:润色 LLM 接收转写文本时,prompt 里会附上一份词典摘要。模型在语义理解阶段可以根据上下文判断要不要替换某个同音字。

一个例子:你说的话里有「Cloud」。ASR 把它转写成了「Cloud」(可能是对的),但润色模型结合词典里的「Claude」词条和上下文(你在聊 AI 助手),判断这里应该是「Claude」,就自动替换。

不同 ASR 提供商的热词支持

ASR 提供商热词参数和 OpenLess 词典配合
火山引擎 bigasrcontext.hotwords 数组✅ 完整配合,自动打包发送
StepFunhotwords 数组✅ 完整配合
Whisper 兼容端点prompt 参数前缀✅ 自动把词典拼成 prompt 前缀注入
讯飞 RTASR❌ 无请求级参数❌ 不支持请求级热词
Apple Speech❌ 无热词 API❌ 不支持

热词不支持的提供商,词典词条仍然会在润色环节作为语义提示注入 LLM——但精度不如 ASR 识别阶段就生效。

热词预算限制

ASR 提供商给 hotwords 参数的空间是有限的——通常只能传几百个字符。如果你词典里有几千个词条,不可能全部塞进去。

OpenLess 做了两层处理:

  1. 按命中频率排序——真正被识别命中过的词条排在前面,热词预算优先给高频使用的词条
  2. 手动添加的词条保留席位——你刚手动添加的词条(还没来得及被高频使用)会保留几个额外席位,确保新添加的词条能生效

这套机制确保:你真正在用的词条永远有位置,不会被老词条挤掉。

润色环节的词典注入不需要预算限制

润色 LLM 的 prompt 空间通常比 ASR 热词的字符预算大得多,词典的语义提示不受这个限制——哪怕词典有几千个词条,也可以完整注入。

但这里有一个故意的保守策略:润色模型不会无脑替换转写文本里的每个同音词——它只会在上下文明显指向词典词条时才替换。这样避免了「Cloud」(云计算)被错误替换成「Claude」(AI 助手)的情况。