kaldi环境搭建

今天作为语音识别实践的第一天,按照之前整理的关于语音识别的产品,挑选出了部分开源的产品,但是经过相关治疗的查阅,发现很多产品都已经属于落户的东西,在现在的学术研究中基本都不再采用以往的东西。再次查了现在学术界常用的东西,其中有一个叫kaldi的开眼的语音识别的产品。包括很多商业界的也在对这个东西做研究以及应用。
今天首先谈谈关于Kaldi的环境的搭建,之后再具体细看其代码:
先说一下我使用的系统是ubuntu16.04.6长期支持的版本
1、由于是新装的虚拟机系统,所以首先要保证git被成功的安装,因此先安装git

sudo apt-get install git  //回车后,按照提示完成安装即可
git version  //查看安装完的git的版本

2、接下来就是安装kaldi。

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

3、kaldi的编译
安装依赖
在安装依赖项之前,首先确保系统上安装了以下软件:

[En]

Before installing dependencies, first make sure that the following software is installed on the system:

libtool
autoconf
wget
perl
subversion
build-essential
gfortran
libatlas-dev
libatlas-base-dev
zlib1g-dev (中间有个数字1)

如果没有安装,可以按照以下步骤进行安装:

[En]

If it is not installed, you can install it by following these steps:

sudo apt-get install libtool
sudo apt-get install autoconf
sudo apt-get install wget
sudo apt-get install perl
sudo apt-get install subversion
sudo apt-get install build-essential
sudo apt-get install gfortran
sudo apt-get install libatlas-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install zlib1g-dev (中间有个数字1)
sudo apt-get install git wegt make
前提保证已经安装了g++并且版本大于4.8.3。

4、下载完kaldi之后,便可以进行编译了。
4.1、编译MKL
MKL是英特尔提供的一个数学核心函数库,可以提供经过高度优化和大量线程化处理的数学例程。目前来说该函数库面向的是要求极高的自然、工程金融等领域。MKL是一个商用函数库,但是仅支持英特尔旗下的处理器运行。编译命令如下:

cd kaldi-trunk/tools/extras/
ls
./check_dependencies.sh

执行结果如下:

kaldi环境搭建

如果在编译的输出中显示Run extras/install_mkl.sh to install it。那就说明该MKL没能完成编译。需要执行以下步骤:

sudo apt-get install update
sudo ./install_mkl.sh
//这个地方必须要使用最高权限,如果不加,在后面的编译过程中,会提示某些文件没有权限进行调用,从而导致编译终止。

出现MKL。。。。。。。。was successfully installed即安装成功。接下来再次执行一下 ./check_dependencies.sh检验一下。如果出现以下内容即为成功。

./check_dependencies.sh: all OK.

4.2、编译Tools

在进行编译之前,首先提醒以下,如果是在虚拟机里运行,应该给虚拟机分配足够大的硬盘空间以及内存,一般分配内存为8g,硬盘为55g或者更高为好,因为在后期的使用中,内存太小,就会出现莫名其妙的错误,而kaldi在编译完之后,占用的磁盘空间也比较大,因此硬盘需要分配足够大小。
该tools文件夹下都是kaldi所依赖的包,其中主要包括以下内容:
①OpenFST:是用来构造有限自动机的库,我们知道可以把隐马尔可夫模型看作一个有限状态自动机,这也是编译过程中需要的一个比较重要的包。
②ATLAS:这是一个在c++下的线性代数运算库,在机器学习中是经常需要进行矩阵运算的。
③IRSTLM:这是一个统计语言模型的工具包
④sph2pipe:这个是宾夕法尼亚大学(LDC)开发的一款处理sphere_formatted数字音频文件的软件,他可以将LDC的sph格式的文件转换成其他格式。
以下是编译过程及其结果:

[En]

The following is the compilation process and its results:

cd ..   //目前是出于tools文件夹下
sudo make -j 2   //此处的2是一个处理器的数目,我在虚拟机分配的处理器的个数是2,因此只有两个处理器,可以根据自己的实际情况调整。

kaldi环境搭建
kaldi环境搭建

这个过程非常慢,主要取决于电脑处理器的的编译速度,快的也得几分钟,慢的也得在十几分钟左右,耐心等待即可。在完成编译之后,如果看到最后输出All done OK. 就是完成了编译。

4.3、编译src
在完成上面的Tools的编译之后,就需要对src下的源码进行编译。里面存了一些kaldi的代码以及部分语言识别的算法,这也是kaldi里面最核心的部分。其中的过程如下:

cd  ..  //此时处在kaldi-trunk文件夹下
cd  src
cat  INSTALL   //查看编译要求
./configure    --shared
make  depend  -j  2   //等着完成编译
make -j  2
这里的2的意思与上面的2的意思是一致的,当你的数目大于机器的处理器数目时,它会使用默认的一个处理器进行编译及运算。

kaldi环境搭建
kaldi环境搭建
kaldi环境搭建
kaldi环境搭建

在漫长的等待过后,如果出现echo Done以及Done之后,说明编译完成。
在上述步骤完成后,就可以进行一些测试了。在kaldi的内部自带了很多测试例子,我们可以选择测试例子yesno

5、测试例子yesno。

该例子内的训练样本都是使用的.wav格式的音频文件,其中的一个男士在不断的说yes或者no,每个wav文件说了八次,其中的文件名字是由0和1组成的8位数字序列。

0代表说的no
1代表说的yes

在本例中,没有单独的注释文件,但直接使用命名方法来直接命名文件。

[En]

In this example, there is no separate annotation file, but the naming method is directly used to name the file directly.

下面是如何测试此示例的方法:

[En]

Here’s how to test this example:

cd  ..  //目前处在kaldi的目录下
ls
cd  egs/yesno/s5   //进入测试的例子文件夹
./run.sh  //执行脚本,来运行该例子

下面是执行run.sh文件的执行结果,在执行该脚本的时候,会首先从kaldi官网上下载yesno例子的wav文件,然后再对其进行训练和识别:

kaldi环境搭建

中间的运算过程:

kaldi环境搭建

很快便可以得到对于yesno的识别结果:

kaldi环境搭建

我们可以从上面的结果可以看出,在最后显示了%WER 0.00 [ 0 / 232, 0 ins ,0 del ,0 sub ],表示识别的结果还是非常准确的。这里说明一下WER是什么东西。
WER(Word Error Rate)代表的是字错误率,是衡量语音识别系统的准确程度的标准。计算公式如下:

WER=(ins+del+sub)/N
每个字母的含义如下:

[En]

The meaning of each letter is as follows:

ins:代表被插入的单词的个数
del:代表被删除的单词的个数
sub:代表被替换的单词个数
N:代表总共的单词个数

它可以简单地理解为将识别过程中被过度识别、未被识别和错误识别的单词数量相加,并减去测试的单词总数。因此,数字越小越好。数字越小,出错的概率越低。

[En]

It can be simply understood as adding up the number of words that are overrecognized, underrecognized and wrong in the recognition process, and subtract the total number of words tested. So the smaller the number, the better. The smaller the number, the lower the probability of error.

6、总结。
在搭建kaldi环境的过程中走了很多弯路,一开始就是在虚拟机上进行搭建,在虚拟机上各种配置GPU,最后看到虚拟机无法调用物理GPU,在虚拟机上完成了安装,后来出现一点意外,又做了双系统,在双系统上进行安装,在安装双系统的过程中也出现了不少问题。最后费了很大劲才在双系统上完成安装。这中间自己也学会了安装双系统。

Original: https://blog.csdn.net/qq_34049877/article/details/108809651
Author: 窜天蘑菇头
Title: kaldi环境搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/526830/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球