虚拟机: Ubuntu 14.04 Ubuntu下载地址
gcc 建议安装4.8以上版本 ,登陆最好是root, 废话不多说,开始,首先安装虚拟机, 虚拟机安装 , 完成的示意图,快捷键Ctrl+Alt+t打开终端:
在终端中键入sudoapt-get update 命令然后输入密码 回车
kaldi项目现在托管在github上,需要使用git命令将其下载到本地,安装git 在终端中键入sudoapt-get install git
获取kaldi源码在终端中键入 gitclone https://github.com/kaldi-asr/kaldi.git kaldi-trunk 如图所示:
cd kaldi-trunk目录 键入gitcheckout命令检查源码一致性
在终端键入cd kaldi-trunk/tools/extras,键入ls 命令列出当前目录所有文件,键入./check_dependencies.sh执行该脚本检查包依赖情况, 根据提示安装所需要的包
键入sudo apt-get install g++ zlib1g-dev automake autoconf libtool subversion
sudo apt-get install libatlas3-base
sudo ln -s -f bash bin/sh (该命令获取shell脚本的执行权)
(1)sudo apt-get install libtool
(2)sudo apt-get install autoconf
(3)sudo apt-get install wget
(4)sudo apt-get install perl
(5)sudo apt-get install subversion
(6)sudo apt-get install build-essential
(7)sudo apt-get install gfortran
(8)sudo apt-get install libatlas-dev
(9)sudo apt-get install libatlas-base-dev
(10)sudo apt-get install zlib1g-dev(中间是数字1)
如果安装出现 function gensub never defined,则需要安装gawk
sudo apt-get install gawk.
在终端键入cd kaldi-trunk/tools,键入ls命令列出当前目录文件, 键入make 进行编译,如下图所示:
这里出现警告IRSTLM库没有安装,其他一切OK,如下图:
根据提示:键入cd kaldi-trunk/tools/extras ,键入 ./install_irstlm.sh安装IRSTLM
kaldi-trunk/tools目录下主要是一些外部库,这部分准备完成,编译kaldi的源码,在终端键入cd kaldi-trunk/src
键入ls命令列出当前目录的文件
键入./configure检查外部库安装情况,根据提示进行安装
键入make depend 进行预编译(make depend -j 4)
键入make 进行编译(make -j 4)
make 耗时较长请耐心等待.............
注意:这里是虚拟机,所以CUDA不存在
检测kaldi是否编译成功,使用kaldi-trunk/egs/yesno例子进行测试
yesno是关于yes和no两个孤立词的识别
在终端键入cd kaldi-trunk/egs/yesno/s5 进入yesno样例目录
键入ls命令查看该目录下有哪些文件
conf文件夹里是一些配置文件例如MFCC的参数 HMM的拓扑结构
local文件夹里主要是一些准备数据的脚本供顶层脚本run.sh调用
steps和utils文件夹里主要是一些运行时调用的脚本
data文件夹里主要存放语言模型、发音字典和音素信息等等。
键入./run.sh该脚本执行孤立词识别流程,结果如下图:
说明我们已经安装成功了!!!!!
下面可以测试timit数据了(timit的数据需要自己下载,对应的脚本加载数据路径也要相应的修改,这里不多说)
说一下我个人安装时遇到的坑吧:
1. 因为编译的时候需要的内存会很大的,所以在创建虚拟机时,最好分配较大的内存,以防编译过程中,内存不足
2. gcc版本,这个ubuntu下面默认的是gcc4.8,这个版本的gcc有bug,会导致kaldi编译失败,而kaldi编译好像是需要4.7以上的版本(我记得好像是),所以这里最好安装较高版本,怎么装就自己百度吧
3. python库最好是2.7(这个版本比较稳定)
4.还有一个错误是编译的时候,出现了internal compiler error:Killed 具体解决方案是:
internal compiler error: Killed (program cc1plus)
在 640M 内存的 vps 做编译的时候出现了上述错误.
几经搜索, 才发可能是系统没有交换分区, 编译过程中内存耗尽, 导致了编译中断 …
解决方式也很简单, 就是增加一个交换分区:
1. 创建分区文件, 大小 2G
dd if=/dev/zero of=/swapfile bs=1k count=2048000
2. 生成 swap 文件系统
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
这样就木有问题了, 但是这样并不能在系统重启的时候自动挂载交换分区, 这样我们就需要修改 fstab.
修改 /etc/fstab 文件, 新增如下内容:
/swapfile swap swap defaults 0 0
这样每次重启系统的时候就会自动加载 swap 文件了.
执行命令是最好是管理员权限
看了一下run.sh里面具体是调用其它的一些shell文件,下面准备好好学习下!