You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Vosk英文大模型(vosk-model-en-us-0.22)添加词典词汇

给Vosk英文模型(vosk-model-en-us-0.22)添加自定义词汇的正确方法

只改words.txt为啥不行?

完全没用。words.txt只是模型编译好后的词汇-ID对照表,真正决定识别逻辑的是graph目录下的HCLG.fst等识别图文件——这些文件是预编译好的,根本没包含你新加的词汇路径,直接改words.txt只会让模型加载时出现校验不匹配的异常。

正确的操作步骤

要成功加自定义词汇,得重新构建模型的识别图部分,步骤如下:

  1. 搞定词汇发音
    • 先查看模型目录graph/phones.txt,里面列了模型能识别的所有音素。
    • 给新词汇编写符合这些音素的发音,比如NBD可以写成n b d(必须用phones.txt里存在的音素,不能自行编造)。
  2. 更新原始词典
    • 获取该模型的源码包(可从Vosk官方模型仓库获取),里面包含未编译的原始词典文件。
    • 在原始词典末尾添加新词汇的发音条目,格式为「词汇 音素1 音素2 ...」,比如NBD n b d。
  3. 重新编译识别图
    • 使用Kaldi工具链(Vosk基于Kaldi构建)重新编译语言模型和词典,生成新的HCLG.fst、words.txt等文件。核心命令大致如下(需适配模型的具体配置):
      # 准备语言环境与词汇映射
      utils/prepare_lang.sh data/local/dict "<UNK>" data/local/lang data/lang
      # 格式化语言模型
      utils/format_lm.sh data/lang data/local/lm/lm.arpa.gz data/local/dict/lexicon.txt data/lang_test
      # 构建新识别图
      utils/mkgraph.sh data/lang_test exp/tri4b data/graph
      
    • 将新生成的graph目录下所有文件,替换原模型目录中的graph文件。
  4. 验证模型
    • 重新运行Python代码加载模型,测试新词汇的识别效果。

词汇ID的正确赋值方法

words.txt里的编号是词汇的唯一内部ID,只需满足两个条件:

  • 编号为未被使用过的整数;
  • 编号值大于现有词汇的最大ID(比如原文件最大ID是368706,新词汇就用368707即可)。
    不需要特殊编码,核心还是要保证发音符合模型的音素集,且识别图中已包含该词汇的路径。

内容的提问来源于stack exchange,提问作者user522913

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:35:19