Catbot 语音识别修复记:自定义语法为何一直失效
来源:dev.to — 2026-08-03
📋 概述
作者为她的桌面宠物 Catbot 调试语音唤醒功能,却反复失败:Catbot 总把“Catbot”听成“Kappa”“Cat bought”等近似音,甚至在唤醒时打断她说话。深挖后发现根因在于 vosk-model-en-us-0.22 预编译了解码图,根本不支持运行时自定义语法,而“Catbot”又不在模型词表中,解码器只能匹配最近的发音。作者通过双识别器方案(大模型处理对话 + lgraph 动态图模型约束唤醒命令)以及把唤醒词拼成“cat bot”两个词,彻底解决了问题。
🔑 核心要点
- 根因是词表陷阱:Catbot 不是真实英文单词,预编译 HCLG 解码图里没有路径能输出它,解码器只能匹配到发音最近的“Kappa”
- 运行时图不支持:vosk-model-en-us-0.22 是预组合冻结图,无法注入自定义语法;需要改用支持动态图(graph/Gr.fst)的 lgraph 模型
- 双识别器并行:大模型负责自由对话,lgraph 模型用受限语法(唤醒词+命令)做唤醒识别,两者互不干扰
- G 层语言模型:Kaldi 用负对数概率给每个词序列打分,解码器选总代价最小的路径,因此要“降低”某些词的权重或直接禁用
- 硬件也关键:从笔记本麦克风换成近场头戴麦克风后,环境噪音被滤除,识别率大幅提升
💡 金句
The word “Catbot” is not really an actual word. I made that up. This is an infinite impossibility.
👍 0
👎 0
← 返回 Dev.to 首页