Kaldi学习手记(一):Kaldi的编译安装

来源:互联网 发布:mysql 外键设置 编辑:程序博客网 时间:2024/06/10 03:47

Kaldi是一款基于C++编写的开源语音识别工具箱。这款工具既可以在Windows下编译也可以在Linux下编译。不过听学姐说以后还是在Linux下做开发多一些,我就想干脆顺便把Linux环境熟悉熟悉,于是就安了个虚拟机装上了Ubuntu。文档里面也说还是建议在Linux下使用Kaldi。好久没用过Linux了,也不习惯在命令行下操作,编译Kaldi还真是费了我一番功夫。下面把过程记录一下。

一、下载

下载直接利用git版本控制系统就可以了,打开终端,直接在你的实验目录下输入命令:

git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden

不一会就从github上下载下来了。当然,首先得确保你安装了git。要是没安装的话,就先输入:

sudo apt-get install git

安装git版本控制软件。

二、各目录功能

下载完毕以后,cd kaldi-trunk进去看看下载了一些什么东西。
Kaldi目录
其中,./tools,./src和./egs这三个目录是比较重要的。

./tools目录下面全部都是Kaldi依赖的包。其中主要有:

  1. OpenFST:Weighted Finite State Transducer library,是一个用来构造有限状态自动机的库。我们知道隐马尔科夫模型就可以看成是一个有限状态自动机的。这是最终要的一个包,Kaldi的文档里面说:If you ever want to understand Kaldi deeply you will need to understand OpenFst.诶,要学的好多。
  2. ATLAS:这是一个C++下的线性代数库。做机器学习自然是需要很多矩阵运算的。
  3. IRSTLM:这是一个统计语言模型的工具包。
  4. sph2pipe:这是宾夕法尼亚大学linguistic data consortium(LDC)开发的一款处理SPHERE_formatted数字音频文件的软件,它可以将LDC的sph格式的文件转换成其它格式。

./src目录存放的是Kaldi的源代码。./egs存放的是Kaldi提供的一些例子。我们现在要做的就是编译安装Kaldi依赖的各种库,然后编译安装Kaldi。

三、Kaldi的编译

安装之前需要确保你安装了这些软件

apt-get
subversion
automake
autoconf
libtool
g++
zlib
libatal
wget

Ubuntu里面都有,所以直接开始安装。
首先安装依赖包。在./tool目录下输入make,开始编译,输入make -j 4命令可以加快速度(多核并行处理)。
之后切换到./src目录下,输入./configure进行配置,然后输入make depend,完成之后输入make进行编译。当然这个过程也可以并行处理加速,输入make -j 4。经过漫长的编译过程以后,就安装完毕了。

四、运行一个例子

Kaldi自带的例子都放在./egs目录下。
这里写图片描述
其中最简单的就是yesno这个例子了。这是一个非常小的数据集,每一条记录都是一系列yes或者no的语音,标注是由文件名来标注的。先运行一下。切换到./egs/yesno/s5目录下,运行sudo ./run.sh命令。
这里写图片描述
经过一段时间的训练和测试,可以看到运行结果。
这里写图片描述
WER为0.00。看来这个例子识别的还是挺准的。

PS:WER(Word Error Rate)是字错误率,是一个衡量语音识别系统的准确程度的度量。其计算公式是WER=(I+D+S)/N,其中I代表被插入的单词个数,D代表被删除的单词个数,S代表被替换的单词个数。也就是说把识别出来的结果中,多认的,少认的,认错的全都加起来,除以总单词数。这个数字当然是越低越好。

下面进入./waves_yesno目录瞧一瞧。
这里写图片描述
全部都是.wav格式的音频文件。可以打开一个文件听一听,发现是一个老男人连续不停地说yes或者no,每个文件说8次。文件名中,0代表那个位置说的是no,1代表说的是yes。这个实验没有单独的标注文件,直接采用的是文件名来标注的。

0 0
原创粉丝点击