kaldi ark加载和写入模块
kaldiio的Python项目详细描述
卡尔迪奥
用于读取和写入kaldi ark文件的纯python模块
简介
什么是ark和scp?
kaldi io
是一个用纯python语言实现的io实用程序,用于kaldi中使用的几种文件格式,它们被命名为ark
和scp
。ark
和scp
用于存档kaldi中定义的一些对象,通常是kaldi的矩阵对象。
在本节中,我们将介绍ark
和scp
的基本概念。关于文件io的详细信息,请参见http://kaldi asr.org/doc/io.html" rel="nofollow">http://kaldi asr.org/doc/io.html
kaldi:ark和copy中文件io的基本功能
ark
是保存任何kaldi对象的存档格式。这个库主要支持kaldimatrix/kaldivector
。
这是kaldimatrix的ark文件的一个例子:ark文件
如果您有kaldi
,您可以将其转换为以下文本格式
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
复制功能
设计为与unix命令行具有高度相关性:
ark
可以在unix管道之间来回刷新。cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
-
表示标准输入流或输出流。unix命令可以用作
读取说明符
和wsspecifier
copy-feats ark:'gunzip -c some.ark.gz |' ark:some.ark
< > >ark
和scp之间的相互转换
copy-feats scp:foo.scp ark:foo.ark # scp -> ark copy-feats ark:foo.ark ark,scp:bar.ark,bar.scp # ark -> ark,scp
unix命令可用于直接文件的insead路径< /P>
例如,以下文件相当于第一个scp。
uttid1 cat /some/where/feats.ark:123 | uttid2 cat /some/where/feats.ark:156 | uttid3 cat /some/where/feats.ark:245 |
< > >- 存档格式的读/写:ark、scp
- 二进制/文本-浮点/双矩阵:dm,fm
- 二进制/文本-浮点/双矢量:dv,fv
- 加载用压缩矩阵:cm,cm~2,cm~3
- 用于写入的压缩矩阵:支持所有压缩方法:1,2,3,4,5,6,7
- 二进制/文本表示int vector,通常用于
ali
文件。
- 通过管道读/写:例如"ark:cat feats.ark"
- 阅读wav.scp/wav.ark
- 写入现有的SCP文件
- NNET2/NNET3 EGS
- 点阵文件
- python-c++绑定
- https://github.com/pykaldi/pykaldi
- 看起来不错。如果你不喜欢纯python,我推荐pykaldi。
- https://github.com/janchorowski/kaldi-python/
- 可能现在保养不够。
- https://github.com/t13m/kaldi-readers for-tensorflow
- TensorFlow的ARK读卡器
- https://github.com/pykaldi/pykaldi
- 纯蟒蛇
- https://github.com/vesis84/kaldi io for python
kaldio
基于此模块,但kaldio
支持的功能比它更多。
- https://github.com/funcwj/kaldi-python io
- 巨蟒=3.6。
nnet3 egs
也受支持。
- 巨蟒=3.6。
- https://github.com/vesis84/kaldi io for python
- 读取矩阵scp
- 阅读gziped ark
- 读取wav.scp
- 读取wav.scp和段
- 从stdin中读取
- 使用scp在方舟中写入矩阵
- 写入压缩矩阵
- 以文本形式编写矩阵
- 用gziped ark书写
- 将矩阵写入stdout
加载ark
可以加载ark的矩阵和矢量,也可以是文本和二进制。- v2.11.0:
加载wav_scp
现在不推荐使用。使用加载scp
加载矩阵
可以加载kaldi矩阵、kaldi向量和波保存矩阵
可以同时保存kaldi矩阵和kaldi向量
scp文件
scp
是一个文本文件,例如,
uttid1 /some/where/feats.ark:123
uttid2 /some/where/feats.ark:156
uttid3 /some/where/feats.ark:245
第一列uttid1
表示话语id,第二列/some/where/feats.ark:123
是kaldi格式的矩阵/向量的文件路径。冒号后面的数字是文件对象的起始地址。
scp
格式看起来非常简单,但有几个强大的功能。
wav.scp
wav.scp
是描述wave文件路径的scp
。
uttid1 /some/path/a.wav
uttid2 /some/path/b.wav
uttid3 /some/path/c.wav
wav.scp
也可以作为普通scp文件嵌入unix命令。这通常用于转换kaldi配方中的文件格式。
uttid1 sph2pipe -f wav /some/path/a.wv1 |
uttid2 sph2pipe -f wav /some/path/b.wv1 |
uttid3 sph2pipe -f wav /some/path/c.wv1 |
功能
Kaldio支持:
不支持以下内容
类似项目
安装
pip install kaldiio
用法
kaldio
没有区分每个kaldi对象的api,即。
kaldi matrix
,kaldi vector
,不取决于它是二进制的还是文本的,还是压缩的,
可以由同一个api处理。
readhelper
readhelper
支持对scp
或ark
的顺序访问。如果您需要随机访问,请使用kaldio.load\u scp
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
0
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
1
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
2
-v2.11.0:删除了wav
选项。您可以加载wav.scp
而无需任何附加参数。
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
3
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
4
写入帮助
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
5
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
6
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
7
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
8
# copy-feats <read-specifier> <write-specifier>
copy-feats ark:test.ark ark,t:text.ark
9
更多低级API
writehelper
和readhelper
是以下api的高级包装器,用于支持kaldi样式的参数。
装载柜
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
0
加载SCP
加载scp
创建"惰性dict",即
访问元素时,数据会加载到内存中。
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
1
由load\u scp
创建的对象是类似于dict的对象,因此它具有dict
的方法。
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
2
按顺序加载(从v2.13.0开始)
例如,如果有gziped对齐文件,则可以将其加载为:按顺序加载scpATOR"与
加载柜
相同。
如果不需要对每个元素进行随机访问
用它来迭代整个数据,
那么这个方法的执行速度可能比加载scp快。
3
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
加载波形scp
4
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
装载材料
5
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
保存方舟
6
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
保存材料
7
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
像kaldi一样打开
kaldio.open_like_kaldi
是一个很有用的工具,如果您熟悉kaldi。此功能可以执行如下操作,
8
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
9
cat test.ark | copy-feats ark:- ark,t:- | less # Show the contents in the ark
解析说明符
0
copy-feats ark:'gunzip -c some.ark.gz |' ark:some.ark
推荐PyPI第三方库