kaldi表单转换为文本格式

/home/wcx/kaldi/src/featbin/copy-feats ark:raw_mfcc_test_clean_mfcc_16k.1.ark ark,t:1.ark

 

https://blog.csdn.net/faner1994/article/details/53674394?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171090184916800227494539%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171090184916800227494539&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-53674394-null-null.142^v99^pc_search_result_base1&utm_term=kaldi%E4%B8%ADcopy-matrix&spm=1018.2226.3001.4187

 

1、kaldi中的ark文件与htk中的mfcc文件的互相转换
(1)、ark转mfcc
使用底层命令copy-feats-to-htk
Save features as HTK files:
每个发音会转化为一个对应的htk格式的特征文件,后缀可以自己定义
用法: copy-feats-to-htk [options] in-rspecifier
比如: copy-feats-to-htk --output-dir=/tmp/HTK-features --output-ext=fea scp:feats.scp
--output-ext是扩展名,一般写mfcc,可以自己定义。
(2)、mfcc转ark
使用命令行copy-feats
Copy features [and possibly change format]
用法: copy-feats [options] <feature-rspecifier> <feature-wspecifier>
或者: copy-feats [options] <feats-rxfilename> <feats-wxfilename>
例如: copy-feats --htk-in=true scp:mfcc.scp ark,scp:foo.ark,foo.scp
这里的输入是mfcc文件的地址文件,这样作为一个输入流传到copy-feats中转化为ark格式的kaldi文件。

2、ark文件与txt文件互相转换
这个很简单,也只需要用到copy-feats命令
copy-feats ark:train.ark ark,t:/train.txt ark转化为txt
copy-feats ark,t:train.txt ark:train.ark txt转化为ark

总结:主要的文件转化是通过copy-feats这个命令,它的主要功能是将文件变成数据流,这样方便对数据进行处理。
比如你想查看kaldi中提取的mfcc特征到底是什么样子,同样可以用copy-feats,如:
copy-feats ark:train.ark ark,t:- | less
通过一个管道用less来查看ark里面的内容。
其他的和特征有关的命令还可以再src/featbin/中自己查看,还有很多很有用的命令。比如copy-matrix可以把矩阵的特征转化成ark格式。
初学kaldi的同学们我们可以一起学习,一起讨论。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/faner1994/article/details/53674394

 

* 1.  ark,scp文件

~/kaldi/src/featbin/copy-feats ark:raw_mfcc_dev.10.ark ark,t:-|head

ark存的试二进制文件,scp可以直接用cat命令看。


* 2.  fst文件

~/kaldi/tools/openfst-1.6.2/bin/fstprint L.fst | head -n 10 

~/kaldi/tools/openfst-1.6.2/bin/fstprint --isymbols=phones.txt --osymbols=words.txt L.fst | head -n 15

fstdraw [--isymbols=phones.txt --osymbols=words.txt] L.fst | dot –Tps  |  ps2pdf – L.pdf
~/kaldi/tools/openfst-1.6.2/bin/fstdraw --isymbols=phones.txt --osymbols=words.txt HCLG.fst


* 3.  mfcc 生成的文件

~/kaldi/src/featbin/copy-feats ark:raw_mfcc_test_hires.1.ark ark,t:- | head
在文件前边加ark关键字,告诉copy-feats是什么格式的,还有后面加一个ark,t:- 表示输出格式为t文本,否则默认是二进制。

~/kaldi/src/featbin/copy-feats ark:raw_mfcc_dev.10.ark ark:- |~/kaldi/src/featbin/add-deltas ark:- ark,t:- | head 
这样可以看到40维的数据


* 4.  mdl文件

~/kaldi/src/gmmbin/gmm-copy --binary=false 0.mdl - 


* 5.  tree文件

~/kaldi/src/bin/copy-tree --binary=false tree -

~/kaldi/src/bin/draw-tree ../../data/lang/phones.txt tree | dot -Gsize=50,100 -Tps|ps2pdf - tree.pdf


* 6.   ali.1.gz 对齐文件

~/kaldi/src/bin/copy-int-vector "ark:gunzip -c ali.1.gz|" ark,t:- |head -n 1

可以先解压 gunzip ali.1.gz
然后  ~/kaldi/src/bin/show-alignments ../../data/lang/phones.txt 40.mdl ark:ali.1 |head -n 2
可以看到类似于这种
--------------------- 
作者:张念 
来源:CSDN 
原文:https://blog.csdn.net/qq_25867649/article/details/78356506 

posted on 2023-12-28 15:29  独上兰舟1  阅读(13)  评论(0编辑  收藏  举报