Kaldi语音识别技术(一) ----- 搭建Kaldi环境
从零开始搭建Kaldi环境-解决kaldi编译tools出错相关问题
破防了,最近入门语音识别相关的领域,用的kaldi,结果make的时候是各种报错!!!
我用的操作环境是Vmware16.2 + CentOS7.9 + Xshell7
这只能算是一篇搭建的笔记,具体流程可以看下面的 二,并且关于理论部分不会做太多的阐述
现在整理一下编译时需要注意的一些问题:
- 虚拟机的运行内存一定要尽量大最好8G以上,我的4G在kaldi/tools 下make 内存不够用!有条件的物理内存也弄大一点,避免不必要的麻烦!
- 一定要设置 swap分区,具体设置方法看下文
- 虚拟机网络问题也要设置好,不然由于网络问题也会各种报错,特别是DNS
- 如果make失败了,下次make之前一定记得要先运行
make clean
清除失败的东西,不然你重新make仍然会报错 make
的过程依据硬件情况而定,一般都比较耗时,请耐心等待,避免ctrl+c
首先呢,我们先来看一下
一、正常的kaldi安装流程(以命令排序,具体看注释):
git clone https://github.com/kaldi-asr/kaldi.git #拉取kaldi
cd kaldi/tools/ #进入文件夹
extras/check_dependencies.sh #执行check_dependencies.sh脚本检查是否缺少相关依赖
- 根据最下面的提示信息安装缺少的包
sudo yum install ...
- 执行
extras/install_mkl.sh
安装mkl,安装完成后再次执行extras/check_dependencies.sh
出现:extras/check_dependencies.sh: all OK.说明安装成功可以继续 - 输入
make
开始编译,直到不报错完成! cd ../src/ # 返回src目录查看
- 在src目录下
./configure --share
出现下面内容说明可以继续 - 在src目录下
make depend
,执行完成后继续make
无报错出现Done,那么说明你tools编译成功!(请收下我的膝盖) - 用最简单的列子yesno进行验证
cd ../egs/yesno/s5
./run.sh #执行脚本
,若你看到如下输出,说明kaldi各步骤均成功了(请再次收下我的膝盖)
当然,人生不可能永远一帆风顺,总会有意外,上面的理想操作也是,不论任何问题,尾着我这套步骤,准没错,尤其是结尾!
二、我的操作流程:
- 配置虚拟机网络,避免出现网络问题而使得
make
流程中断出现不可逆错误 - 打开虚拟机进行配置
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
若提示 “bash: vim: 未找到命令” 执行yum install -y vim
BOOTPROTO="static"
ONBOOT="yes"
GATEWAY="192.168.204.2"
IPADDR="192.168.204.130"
NETMASK="255.255.255.0"
DNS1="114.114.114.114"
DNS2="1.2.4.8"
DNS3="8.8.8.8"
:wq保存并退出执行
service network restart
systemctl restart network
- 进行swap分区(一定要做,除非你虚拟机RAM>8G)
交换空间具体大小根据你实际RAM来操作,官方推荐swap分区大小设置如下:
RAM SWAP
RAM<=2G 2*RAM
2G<RAM<8G RAM
RAM >8G >=4G
free -h
cat /etc/redhat-release
dd if=/dev/zero of=/swapfile bs=2M count=2048
mkswap /swapfile
chmod 0600 /swapfile
swapon /swapfile
vim /etc/fstab
/swapfile swap swap defaults 0 0
cat /proc/sys/vm/swappiness
echo "vm.swappiness = 40" >> /etc/sysctl.conf
- 安装gcc-7.3.1
gcc至关重要,千万不要直接yum install gcc-c++
,因为默认安装gcc-4.8.5,后面编译根本用不了!
yum update -y
yum install -y centos-release-scl
yum install -y devtoolset-7-gcc*
scl enable devtoolset-7 bash
gcc -v
exit
至此,环境配置基本完成,下面开始真正的操作
- 拉取kaldi源码
git clone https://gitee.com/mirrors/kaldi.git #国内镜像仓库
- 安装编译依赖库
cd kaldi/tools/
extras/check_dependencies.sh
执行命令安装:
yum install zlib-devel automake autoconf patch bzip2 unzip wget sox libtool subversion python3 -y
安装mkl
extras/install_mkl.sh
再次执行extras/check_dependencies.sh
检查,直到出现" all ok."
- 安装第三方工具
这里很多人都直接使用make
或者make -j 4
单线程或者启用4个线程进行编译,在我在这折腾了好几天的经验来看,不要进行这样的操作,因为error
无处不在,强烈建议使用下面的方式:
补充 make -j
表示多线程编译,请与虚拟机核相对应,否则建议使用make
在 kaldi/tools 目录下依次执行下列命令
make openfst -j 4
make cub
make sph2pipe
extras/install_irstlm.sh
extras/install_kaldi_lm.sh
全部无报错执行完成后再继续,否则执行make clean && yun clean all
后继续上面操作.
- 编译kaldi
先切到src目录 cd ../src/
再执行下面命令
./configure --shared
make depend -j 4
make -j 4
到这里,那么恭喜你已经完全掌握了kaldi的编译操作,下面可以开始kaldi的学习实践了!
特别提醒:上面的操作过程当中,一旦出现有无法解决的报错请毫不犹豫的删除虚拟机并重新安装,因为不这样处理绝大多数情况下都十分难以解决,而虚拟机配置比较简单!!!
题外: Xshell7连接虚拟机出现 WARNING! The remote SSH server rejected X11 forwarding request.
解决
yum install xorg-x11-xauth -y
有什么问题欢迎留言探讨!!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)