下载安装kaldi:
$ git clone --recursive https://github.com/kaldi-asr/kaldi
可以在kaldi官方文档查看相关的文档。
下载完成之后,打开kaldi目录,之后进入到tools文件夹((compiling OpenFst; getting ATLAS and CLAPACK headers))。里面有一个INSTALL文件。根据INSTALL 上的提示一步一步的安装:
在kaldi/tools/中打开终端:
首先检查kaldi是否下载成功:
$ extras/check_dependencies.sh
提示all ok 则表示成功。如果提示缺什么东西,就按照具体的提示下载需要的东西。
补充(最近换了一个电脑,重新安装,发现如下问题):
按照以上进行安装测试,当执行了
extras/check_dependencies.sh
出现如下图的问题:
extras/check_dependencies.sh: sox is not installed.
extras/check_dependencies.sh: WARNING python 2.7 is not the default python. We fixed this by adding a correct symlink more prominently on the path.
... If you really want to use python 3.6.5 as default, add an empty file /home/chengx/CM/environment/kaldi/tools/python/.use_default_python and run this script again.
extras/check_dependencies.sh: Intel MKL is not installed. Run extras/install_mkl.sh to install it.
... You can also use other matrix algebra libraries. For information, see:
... http://kaldi-asr.org/doc/matrixwrap.html
extras/check_dependencies.sh: Some prerequisites are missing; install them using the command:
sudo apt-get install sox
根据提示缺少sox,因此安装sox:
sudo apt-get install sox
安装完成之后,再次运行,出现如下问题提示:
extras/check_dependencies.sh: Intel MKL is not installed. Run extras/install_mkl.sh to install it.
... You can also use other matrix algebra libraries. For information, see:
... http://kaldi-asr.org/doc/matrixwrap.html
根据提示,运行
extras/install_mkl.sh
在运行上面的shell脚本时,由于里面会更新源,但是本机由于更新源错误,因此脚本无法正常执行完成,需要先解决该问题。网上给出了两个解决方案:
第一个是删除出问题的包,让它重新更新。命令:
mv **.list **.list.bak #此命令是保险做法,将对应的命令做了备份
或者使用下面的命令:
rm -rf **.list
然后再更新一次即可
sudo apt-get update
第二个是替换源为清华源,具体方法如下:
cd /etc/apt/ # 运行到指定目录
sudo mv sources.list sources.list.bpk.original # 备份原有的列表
sudo gedit sources.list # 打开源文件(只能在图形界面使用,若在命令行,可使用vim)
在文本中添加如下内容(此内容只针对Ubuntu16.04的版本,其他系统版本可在https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/中查找):
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
保存!
sudo apt-get update
此时更新源的问题即可解决。
然后再运行上面的shell脚本。可能受限与网络速度的影响,网络比较好的时候会下的很快,也不会出错。
extras/install_mkl.sh: MKL package intel-mkl-64bit-2019.2-057 was successfully installed
表示安装成功。
之后开始编译:
$ make -j16 #后面这个数字需要根据自己的电脑情况写,数量的大小影响完成的速度,但如果过大,电脑硬件无法满足要求
在等待编译的过程中出现了如下的错误:
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
compilation terminated.
Makefile:844: recipe for target 'fstprune' failed
make[3]: *** [fstprune] Error 1
make[3]: *** 正在等待未完成的任务....
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
compilation terminated.
Makefile:868: recipe for target 'fstreweight' failed
make[3]: *** [fstreweight] Error 1
make[3]: Leaving directory '/home/chengx/CM/environment/kaldi/tools/openfst-1.6.7/src/bin'
Makefile:358: recipe for target 'install-recursive' failed
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory '/home/chengx/CM/environment/kaldi/tools/openfst-1.6.7/src'
Makefile:414: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/chengx/CM/environment/kaldi/tools/openfst-1.6.7'
Makefile:66: recipe for target 'openfst_compiled' failed
make: *** [openfst_compiled] Error 2
我不是很明白为什么会出现这种情况,后来自己就好了,但是在此期间我只做了两件事情,不知道具体有没有什么影响。我先查看了g++和ld的版本(g++ --version ;ld --version) ,然后重新开了一个终端,再次编译就可以了,为什么会这样,不知道,若各位大佬大神知道的还望指点一二,小弟在此先谢谢各位了。
等待安装完成。
All done OK.
编译完成。
安装完成之后,切换到/kaldi/src/文件夹中,里面也有一个INSTALL文件。打开,同样根据提示来安装:
$./configure --shared
$make depend -j 8
$make -j 8
如果编译通过,则会在终端的最后出现Done(不知道为啥我第二次装没有出现Done)编译过程可能比较漫长。