[语音识别] kaldi -- aidatatang_200zh脚本解析:检查相关模型

2021-07-19 14:42:01 浏览数 (2)

输入:data/local/lm/3gram-mincount/lm_unpruned.gz

输出:G.fst

代码语言:javascript复制
local/format_data.sh

流程:

代码语言:javascript复制
1. 解压lm_unpruned.gz并通过arpa2fst转换成G.fst (语言模型概率就成了图权重的一部分)
gunzip -c "$arpa_lm" | 
  arpa2fst --disambig-symbol=#0 
           --read-symbol-table=data/lang_test/words.txt - data/lang_test/G.fst
           
2. 对G.fst进行检查, 检查FST是否随机, 打印出两个数字,最小权重和最大权重,以告诉用户FST不随机的程度。如果一个WFST从任意状态出发的跳转的权重之➕运算为1,那就说这个WFST满足stochastic性质,在一个满足stochastic性质的图上解码,解码效率要高一些。
fstisstochastic data/lang_test/G.fst  
3. 确定化(G.fst, L_disambig.fst)
fstdeterminize data/lang_test/G.fst
fstdeterminize data/lang_test/L_disambig.fst
4. 将词典L.fst和语言模型G.fst组合
fsttablecompose data/lang_test/L_disambig.fst data/lang_test/G.fst | 
   fstdeterminizestar >/dev/null || echo Error
fsttablecompose data/lang/L_disambig.fst data/lang_test/G.fst | 
   fstisstochastic || echo LG is not stochastic

备注

0 人点赞