kaldi安装遇到的问题
- 环境:Ubuntu 21.10,VMware Workstation Pro
- 用时:根据你的网络状况和虚拟机情况而定,短则半小时,长可能一两天
- 一定要全程保证你的虚拟机联网可以上GitHub
虚拟机安装
Ubuntu选择国内镜像站就好了,我选择的是阿里的镜像站
安装的时候一直走默认就好了,建议给虚拟机至少分配40GB的硬盘空间,8核,5GB内存。不过这些在之后都可以临时加,所以不用担心。
语言方面建议选英文,毕竟你也不知道路径里的其他语言可能会出啥问题。
注意:虚拟机的内核数不能超过宿主机,分配的内存不建议超过宿主机的70%,否则可能会出现内存互换的问题。
建议多核是因为之后make编译在核越多的时候越快,建议内存多分配是因为多核编译的时候很考验内存的大小,如果分配内存不够就会报错:
C++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
如果你的宿主机确实没这个条件,你可以选择增加swap分区,我使用的是这个教程:
# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s
如果你不想要了,可以去这个文件夹下面删除数据文件,可能会遇到提示:cannot remove is a directory
rm –rf name #name是需要删除的文件/文件夹的名字
#还可以用 free -m 来查看内存空间和swap空间
做完这些准备工作就可以开始安装了~
kaldi安装
分为四步:
- 下载kaldi源码
- 安装tools里的各种依赖
- 编译tools与src文件
- 测试
1.下载kaldi源码
注意好虚拟机联网之后先打开terminal装git
sudo apt-get install git
如果你觉得下载速度太慢,可以改变软件源。
打开设置->关于本机->软件更新->download from->other…->https://mirrors.aliyun.com/ubuntu
坐等它把系统内依赖更换即可,大概有1-2min
git clone https://github.com/kaldi-asr/kaldi.git kaldi --origin upstream
当然直接去GitHub上下载源码zip在通过共享文件夹放在虚拟机里也可以。
注意:一定要在虚拟机里解压,在Windows宿主机里解压会出问题。
2. 安装tools里的各种依赖
进入tools文件夹安装依赖,先查看INSTALL文件,可以直接根据里面的安装步骤进行,第一步检查依赖是否缺少
cd kaldi-master/tools #进入tools文件夹
cat INSTALL #查看安装说明
extras/check_dependencies.sh #检查依赖是否缺少
逐个安装或者一起安装就可以,检查依赖的时候应该会有建议语句,比如:
sudo apt-get install g++ make automake autoconf sox gfortran libtool subversion python2.7
之后会提示你缺少Zlib1g-dev,直接按照里面的提示进行安装:
sudo apt-get install zlib1g-dev
一定要注意,根据你的terminal提示进行,我只是按照我的遇到的提示安装。之后继续检查依赖(extras/check_dependencies.sh
)是否缺少,可能会提示你安装mkl,那就按照terminal给出的提示安装:
extras/install_mkl.sh
之后再检查依赖是否缺失(extras/install_mkl.sh
),如果还有啥需要安装的,根据terminal提示进行安装就可以,如果显示all OK,那么恭喜你已经把依赖安装完成了~
后面的编译会很卡,做好心理准备,好几个小时都有可能。
3.编译tools与src文件
如果对自己的运气和宿主机没信心,建议从这里开始把之前的虚拟机做一个链接克隆,在克隆虚拟机继续。
继续在tools里进行编译,后面的数字是使用的核数,越多越快,但是需要更多的内存。
make -j 8
这数字根据你自己分配给虚拟机的核决定,不要超过核数就好。这里会需要一段时间,甚至会可能因为内存不足卡住很久,建议去睡个午觉,干点别的事情,宿主机也别运行其他东西,因为机子会十分卡。
如果你觉得可能卡得实在动不了,你可以直接关掉虚拟机重启,编译可以键入make clean
再重新make编译,不过别一直开开关关,否则你可能会遇到虚拟机无法联网的情况,目前我没找到合适的修正方式,只有删除重新从头再来…
显示:All done OK
恭喜你编译tools完成~
接着,转到src文件夹下面,依旧是先查看安装须知(INSTALL
)
cat INSTALL
直接按照terminal的提示进行就可以,如果提示你没有安装openfst,那么就去tools文件夹下面编译:
sudo make openfst
每次编译都可能需要挺长时间,做好心理准备。提示完成之后可以回到src文件夹下面继续编译工作:
./configure --shared #会提示有SUCCESS
make -j clean depend
make -j 8
当然,我只是说了我的步骤,建议你按照terminal的提示来输入。
编译完成之后就可以去测试了,测试安装是否成功~
4.测试
进入egs/yesno目录,用命令cat README.txt 查看yesno数据集介绍,是一个关于Yes/no识别的简单的数据集,到这一步你都需要保证你的网络是畅通的,因为有很多东西需要下载。
进入egs/yesno/s5目录,执行
./run.sh
当最后提示你:
%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0
恭喜,安装成功,完结撒花~~