OpenLess自学习词典实战:热词注入与同音字自动纠正,让你的人名、产品名再也不被识别错
【免费下载链接】openlessHold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS & Windows. (按住快捷键说话,松开即得润色后的文字)项目地址: https://gitcode.com/gh_mirrors/op/openless
OpenLess 是一款支持 macOS、Windows 与 Linux 的开源语音输入工具:按住快捷键说话,松开后 AI 润色的文字会直接落在光标处。它的自学习词典通过热词注入与同音字自动纠正两道关卡,把你的人名、产品名、技术术语从"每次都要改一遍"变成"说一次就记住"。
为什么人名和产品名总被识别错?
语音转写(ASR)本质上是声学模型在做"猜字",它有三个天然弱点:
- 同音字分不清——"接口/借口""大鱼/大禹"听起来一模一样,声学层面无法区分;
- 偏向高频词——你说的冷门产品名,模型会优先输出它"觉得更常见"的字;
- 中英混读易串音——比如把"ZIP"听成"VIP"。
OpenLess 的对策不是把问题全部丢给模型硬猜,而是做了双通道纠正:
| 通道 | 作用时机 | 原理 |
|---|---|---|
| ① ASR 热词注入 | 识别阶段 | 启用的词典条目作为热词随识别请求发出,语音还没转成字就被"偏置"到正确写法 |
| ② 润色语义纠正 | 转写之后 | 条目注入润色提示词,模型逐句判断:转写出"Cloud",而上下文明显在说 Claude,就纠正;真指云计算则保持原样 |
热词注入在 volcengine.rs 中随会话发送;润色端的热词块组装见 prompt_compose.rs。不同 ASR 提供方各有对应参数(Volcengine 的context.hotwords、StepFun 的hotwords、Whisper 兼容的prompt、百炼的vocabulary_id)。
实战 1:三步手动添加词条
最快见效的方式是直接把词喂给词典:
- 打开主窗口 →词典页;
- 点击右上角「新词」,输入正确拼写(分类与备注可选,你无需维护错误拼写或上下文提示);
- 确认条目处于启用状态即可,下一次听写自动生效。
词条会持久化在本机的dictionary.json中,Vocab.tsx 实现了词条卡片网格、筛选(全部/手动添加/自动添加)、搜索与批量删除。首页还会展示词典参与统计——你能直观看到热词到底"救"了多少次识别。
实战 2:场景预设,一键批量导入
不想一个个敲?词典页内置了场景预设模板,一键批量导入一组词条。内置预设定义在 vocab-presets.json:
| 预设 | 内置词条示例 |
|---|---|
| 👨💻 程序员 | PR、CI、tag、release、Rust、TypeScript、Claude、Copilot、Cursor、ChatGPT、Gemini、DeepSeek |
| 👨🍳 厨师 | 出品、备料、火候、刀工、摆盘、sous vide |
| 🏛️ 公务员 | 公文、批示、督办、政务、会签、材料 |
你也可以新建自定义预设(比如"我的团队人名"),之后换机器或重开应用都能一键复用。
实战 3:让词典从你的手改中"自学习"
这是 OpenLess 词典最有趣的能力——词典会自己长:
当你手动改掉 OpenLess 刚打出来的某个词,屏幕角落会弹一张小卡片问一句"要不要记住它",点一下就进词典了。
- 学习到的条目带"从手改中自动收集"标记,在词典页可单独筛选(Vocab.tsx 中通过该备注识别自动条目);
- 每一条建议都由你过目,没有任何东西是悄悄学进去的;
- 该能力依赖光标上下文:设置 → 隐私 → 数据存储 → 光标上下文(默认关闭,目前仅 macOS)。开启后,每次听写会读取光标附近几百个字随润色请求发出——只有看得见自己刚打出去的文字,它才能发现你把某个词改掉了;
- 隐私红线:密码输入框、Secure Input、密码管理器、终端永远不读,开关关闭时连一次辅助功能调用都不会发生。
热词预算怎么分配?命中越高的词越优先
发给 ASR 的热词预算是有限的(几百字符),条目多了不能全塞。OpenLess 在 vocabulary.rs 中实现了一套纯规则排序:
- 🪑新词保底席位:最近手动添加的词条预留 5 个优先席位(
FRESH_VOCAB_SEATS = 5),新加的词不会被老词挤出去; - 📊按命中次数排序:其余条目按历史命中从高到低排列——真正在用的词永远排在冷门词前面;
- 🔤大小写去重:
claude与Claude只保留命中最多的写法占一个位置,不浪费预算。
命中次数由 vocabulary.rs 的record_hits在每次最终输出中统计,词典页打开时命中数会实时累加。
同音字自动纠正:纠正规则实战
对于"热词解决不了"的固定错误模式(比如 ASR 总把"几例"听成"几粒"),还有纠正规则这张确定性底牌:
- 入口:主窗口 →工具 → 纠正规则(Corrections.tsx);
- 规则是「模式 → 替换」的纯文本替换,在转写/润色之后按顺序应用(correction.rs);
- 支持
{num}数字通配符,且认识中文数字。例如规则{num}粒 → {num}例能同时命中"2粒样品"和"两粒样品"。
两个例子:
规则:几粒 → 几例 "这里有几粒样品" → "这里有几例样品" 规则:{num}粒 → {num}例 "两粒样品和幾粒对照" → "两例样品和幾例对照"规则语法有严格校验(空模式、多通配符等会被拒绝),无效规则不会生效也不会报错,保守且安全。
常见问题速查 💡
Q:加了词条还是不生效?确认条目已启用;注意讯飞实时语音转写标准版没有请求级热词参数,需在讯飞控制台配置个性化热词。详见 USAGE.md。
Q:同一个词大小写不同会占两个位置吗?不会。排序时按小写去重,保留命中最高的那个写法。
Q:词典数据安全吗?数据只保存在本机,不上传。OpenLess 坚持本地优先:你的词典、听写历史都留在自己的机器上(README.zh.md 有完整说明)。
Q:热词纠正会不会"用力过猛"?不会。润色提示词明确要求"不做无关词的机械替换",人名、品牌名、含义会变化的词一律原样保留——热词纠偏只对热词的同音/形近误识别生效。
小结
OpenLess 的自学习词典把"语音输入总错专有名词"这个问题拆成了四层:
- 手动词条 + 场景预设——冷启动就能用;
- ASR 热词注入——识别阶段就偏置正确;
- 润色语义纠正——转写后的同音字按上下文纠回;
- 手改自学习 + 纠正规则——用着用着自动变聪明。
四道关卡层层兜底,你的人名、产品名,说一次,就再也不会被识别错。
【免费下载链接】openlessHold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS & Windows. (按住快捷键说话,松开即得润色后的文字)项目地址: https://gitcode.com/gh_mirrors/op/openless
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考