Kaldi 文件打印及其说明

kaldi做文件分析时,需要使用命令调用可执行程序打印文件结构,下面对几种常见的文件做一下说明 

1.words.txt 文件和 phones.txt文件(这是数据准备的prepare_lang.sh脚本生成)里面的格式是openfst格式



对应的是词 和整数的映射

接下来看一下phone文件夹,里面有三种格式 csl   int   txt ,其实内容都是一样的, 从上往下说,


align_lexicon  表示对齐文件,是由lexiconp.txt的第一列第三列提取出来生成

context_indep  里面包含的是那些非正常音素,包含(静音(SIL),口语噪声(SPN),非口语噪声(NSN)和笑声(LAU)

silence  里面包含了静音音素

nonsilence 里面包含了正常音素   可以认为和上面的silence是互斥的,两个文件音素的合集可以认为是整个音素集

sets  包含了一些列的音素集,在聚类音素时被分组,以建立相关的问题集(决策树的决策条件)

extra_question  包含了自动生成以外的问题  

disambig  文件里面包含的是消歧符号 ,这些消歧符号在phones.txt中当作音素使用

word_boundary 里面是音素和词位的关联信息,建立这种对应关系是需要这些信息在音素网络中恢复词的边界

roots  里面包含的是建立音素上下文决策树信息,里面的shared 表示共享根,一般语气和语调会在同一行,认为共享


2.一些scp文件的说明


wav.scp  文件格式  <recording-id >  <extended-filename>    ,  第一个字段可能是发音编号或则是文件名



segment文件,表示的是发音在一段录音中的时间偏移量,格式 <utterance-id> <recording-id> <segment-begin> <segment-end>   ,后面的begin和end是以秒为单位的,这里的recording-id 和上面wav.scp的recording-id 是一样的,就把它看成是一个名称就行了


 

utt2spk文件,这个文件是表示一段语音是哪个人说出来的,格式是 <utterance-id> <speaker-id>  



spk2gender文件,这里面是表示说话人的性别,没啥说的:



feats.scp 文件,指已经提取好的特征文件,特征提取是通过MFCC,每个特征文件都是一个矩阵



cmvn.scp文件,这里保存的是倒谱均值和方差归一化的统计量,和feat不同,这个文件是以说话人编号为索引,不是以发音编号,如图:



3. mdl文件说明 , 文件里面加载的是topo文件,打开topo文件也能看到

路径:exp/mono/*.mdl  0.mdl(初始化模型) 40.mdl(结果模型)< –GMM模型

查看final.mdl文件:  /kaldi/src/gmmbin/gmm-copy--binary=false exp/mono/final.mdl - | head -n 200   

结果如下图:



首先是一个transitionModel(转换模型),里面包含了TopoLogy(拓扑信息),对应的ForPhone表示包含的音素,一般是下面

的(如上图的1)表示的是静音,噪音等,上面包含的是所有的音素ID,音素2~48共享相同的拓扑结构,里面有三种发射状态,每

个都有自环和下一个状态,还包括了最后一个不发射状态(state 3没有pdf,没有转移)



先看一下官方的解释:

第一列代表的是单音素的序号,第二列代表的是前面音素的三个状态的其中一个状态,第三列代表的是pdf,也就是概率

分布函数的序号。再来张图:


这里对triples做一下总结:

1. 总共有144个这样的三元组

2. 第三列只有0-143144个值(有些mdl,第三列的值是比数量值小的 pdf <= 数量)

 

这里面 pdfstate是如何对应的? 

 

使用命令:/kaldi/src/bin/show-transitionsphones.txt final.mdl

部分输出如图:



再来官网的一段话:



我的理解是 两个状态有着同样的 pdf ,那么它们就会共享同样的概率分布函数

打开ali文件后发现是这样的:




这里面最大数字是288,正是对应上面的transition-id

网上找到的:ali文件里面跟着的数据是每帧对应的transition-id,如上图所示:

zh 相关的 transition-id 283-288 ,通过 transition-id 就能找到特征文件 sh 代表的帧数,再来个代码注释图:


可以看到transitionModel可以得到transition-statetransition-id,而解码里面的fst是用transition-id作为输入序列的

接着继续看下final.mdl文件,之后是LogProbs 里面包含了289个数据

这个289144*2+1=289)是对应音素的(1-48)至于原因还是没找到

到此 transitionModel 结束




可以看到transitionModel之后是GMM相关的数据了

DIMENSION: 39  表示了39维(包含能量是40,能量一维)

GCONSTS 应该是期望

NUMPDFS: 144   对角GMM参数重复144次,每个hmm对应pdf144个)

WEIGHTS: 权重

MEANS_INVVARS 39维的均值

INV_VAR: 39维方差

 

*.mdl文件分析完成





FST文件分析地址:  fst文件说明




  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值