【Kaldi学习】了解+搭建kaldi环境

因为自己工作上的需求,近期接触了很多NLP的领域,所以学习这个强大的kaldi模型是肯定不可少的,下面是我的体会,有问题直接提出来啦!!

一 、了解kaldi

kaldi是使用c++写的语音识别的工具,听说很强大哈哈哈。主要用于语音识别ASR,但是我近期看到有人用来做声纹识别(说话人识别),后期会一一尝试。
kaldi是一个语音识别平台,里面含有很多语音识别所需要的模型,比如:gmm,sgmm,dnn和hmm。你可以通过自己的数据在这平台上训练得到自己的模型,然后用于识别。你需要做的也就是改些脚本,适合自己的语音库。跟htk这个平台差不多(真的是不接触kaldi不知道还有个htk,突然发现自己很菜鸡),后面有时间会讲一下这个htk平台。

二、kaldi的下载

先说一下我的环境,我是在自己的电脑上装的虚拟机,是ubuntu16.
先下载kaldi
因为我是新装的虚拟机,所以我要先装git

$sudo apt-get install git

然后再安装kaldi

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

三、kaldi的目录结构+专业术语+依赖包

目录结构

1、脚本。包括shell脚本和perl脚本,存放的是Kaldi提供的一些例子。。主要在egs/wsj文件夹下。
2.工具。一些可执行文件。在src/XXXbin文件夹下。
3.算法实现。kaldi的源代码,在src/XXX文件夹下。
工具和算法实现基本都是C/C++写的。外部工具在tools文件夹下,主要是openfst、sctk、sph2pipe。

专业术语

LM:language model,语言模型

KWS:Keyword Search,关键词搜索

CMVN:cepstral mean and variance,倒谱均值和方差

G2P:Grapheme-to-Phoneme,字形到音位

WSJ:Wall Street Journal,华尔街日报

kaldi依赖包

1、OpenFST:Weighted Finite State Transducer library,是一个用来构造有限状态自动机的库。是一个构造、合并、优化和搜索加权有限状态机FST的库。我们知道隐马尔科夫模型就可以看成是一个有限状态自动机的。这是最终要的一个包,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格式的文件转换成其它格式。
5、SCTK:Speech Recognition Scoring Toolkit是NIST(National Institute of Standards and Technology, 美国国家标准与技术协会)提出的一套工具集。NIST评分工具包
6、SRILM:SRILM - The SRI Language Modeling Toolkit是由SRI International提出的一套工具集,主要用于创建和使用统计语言模型。

四、kaldi的编译

安装依赖

安装之前需要确保你安装了这些软件:
apt-get
subversion
automake
autoconf
libtool
g++
zlib
libatal
wget

在ubuntu下的安装代码为:

$sudo apt-get install subversion
$sudo apt-get install automake
$sudo apt-get install autoconf
$sudo apt-get install libtool
$sudo apt-get install g++
$sudo apt-get install wget

注意安装zlib和 libatlas的时候是用下面的代码

$sudo apt-get install libatlas-base-dev
#sudo apt-get install libatlas-dev #我装不成功这个包 我也不知道为什么,但是我没装,,后面也编译成功了
$sudo apt-get install zlib1g
$sudo apt-get install zlib1g-dev 

安装完后,我们来检查依赖:

$cd tools
$extras/check_dependencies.sh

可能会提示我们缺了什么。我就遇到了缺失sox
然后我输入

$sudo apt-get install sox subversion

安装依赖后,再检查一次依赖

$extras/check_dependencies.sh

还是出现,说我缺失Intel MKL,然后提示让我 run extras/install_mkl.sh,run完后,我们再检查一次脚本。

$extras/install_mkl.sh
$extras/check_dependencies.sh 
extras/check_dependencies.sh: all OK.

如果显示上面all OK,证明我们的依赖已经安装好了。接下来我们就编译tools文件夹,记得要在tools的目录下哦!!

$make -j 4

最后会出现All done OK.那就编译tools文件夹完成了,接下来我们就要编译src文件夹。输入下面的代码,依次运行

$cd ../src
$./configure --shared
$make depend -j 4
$make -j 4

最后出现Done,就是完成啦!!最后的src文件夹编译我用了一个半小时。时间会长一些。

下面是我参考的文章,都是挺不错的blog,大家可以去看看:
https://blog.csdn.net/antkillerfarm/article/details/83268422
http://www.voidcn.com/article/p-vmvnitbt-bkx.html
https://blog.csdn.net/snowdroptulip/article/details/78896915

你可能感兴趣的:(【Kaldi学习】了解+搭建kaldi环境)