Kaldi语音识别技术(一) ----- 搭建Kaldi环境

Kaldi语音识别技术(一) ----- 搭建Kaldi环境

从零开始搭建Kaldi环境-解决kaldi编译tools出错相关问题

破防了,最近入门语音识别相关的领域,用的kaldi,结果make的时候是各种报错!!!
我用的操作环境是Vmware16.2 + CentOS7.9 + Xshell7
这只能算是一篇搭建的笔记,具体流程可以看下面的 二,并且关于理论部分不会做太多的阐述

现在整理一下编译时需要注意的一些问题:

  1. 虚拟机的运行内存一定要尽量大最好8G以上,我的4G在kaldi/tools 下make 内存不够用!有条件的物理内存也弄大一点,避免不必要的麻烦!
  2. 一定要设置 swap分区,具体设置方法看下文
  3. 虚拟机网络问题也要设置好,不然由于网络问题也会各种报错,特别是DNS
  4. 如果make失败了,下次make之前一定记得要先运行 make clean清除失败的东西,不然你重新make仍然会报错
  5. make的过程依据硬件情况而定,一般都比较耗时,请耐心等待,避免ctrl+c

首先呢,我们先来看一下

一、正常的kaldi安装流程(以命令排序,具体看注释):
  1. git clone https://github.com/kaldi-asr/kaldi.git #拉取kaldi
  2. cd kaldi/tools/ #进入文件夹
  3. extras/check_dependencies.sh #执行check_dependencies.sh脚本检查是否缺少相关依赖
  4. 根据最下面的提示信息安装缺少的包 sudo yum install ...
  5. 执行extras/install_mkl.sh安装mkl,安装完成后再次执行extras/check_dependencies.sh出现:extras/check_dependencies.sh: all OK.说明安装成功可以继续
  6. 输入make开始编译,直到不报错完成!
  7. cd ../src/ # 返回src目录查看
  8. 在src目录下 ./configure --share 出现下面内容说明可以继续在这里插入图片描述
  9. 在src目录下 make depend,执行完成后继续make无报错出现Done,那么说明你tools编译成功!(请收下我的膝盖)在这里插入图片描述
  10. 用最简单的列子yesno进行验证 cd ../egs/yesno/s5
  11. ./run.sh #执行脚本,若你看到如下输出,说明kaldi各步骤均成功了(请再次收下我的膝盖)在这里插入图片描述
    当然,人生不可能永远一帆风顺,总会有意外,上面的理想操作也是,不论任何问题,尾着我这套步骤,准没错,尤其是结尾!
二、我的操作流程:
  1. 配置虚拟机网络,避免出现网络问题而使得make流程中断出现不可逆错误在这里插入图片描述
  2. 打开虚拟机进行配置
cd /etc/sysconfig/network-scripts # 切换目录
vim ifcfg-ens33 #用vim打开配置文件

若提示 “bash: vim: 未找到命令” 执行yum install -y vim

# 添加或修改以下内容 (很重要,缺一不可)
BOOTPROTO="static"	     #设为静态IP
ONBOOT="yes"			 #设置开机自启动
GATEWAY="192.168.204.2"  #网关,看第一步
IPADDR="192.168.204.130" #子网IP
NETMASK="255.255.255.0"  #子网掩码,看第一步
#DNS1=192.168.204.2      #这里不要配置,不然网络会阻塞
DNS1="114.114.114.114"   #腾讯114
DNS2="1.2.4.8"           #中国互联网络中心
DNS3="8.8.8.8"		     #Google

:wq保存并退出执行

service network restart 	 #重启网卡
systemctl restart network    # 重启网络服务
  1. 进行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命令在根下创建swapfile
dd if=/dev/zero of=/swapfile bs=2M count=2048 
# if 表示infile,一般不做修改; of表示outfile,设置为想要创建文件的全路径; bs=2M表示增加的块大小为1M,不加单位默认为bytes,也可以手动指定单位为M或者G;count=2048代表2048个模块,也就是2M*2048=4G空间。
mkswap /swapfile     #设置swapfile为swap文件
chmod 0600 /swapfile # 权限设置为0600
swapon /swapfile     #启用swap文件
vim /etc/fstab       # 添加fstab文件
/swapfile swap swap defaults 0 0
# 查看依赖度 值越高代表对swap依赖程度越高
cat /proc/sys/vm/swappiness
echo "vm.swappiness = 40"  >>  /etc/sysctl.conf # 设置依赖程度40且永久生效
  1. 安装gcc-7.3.1
    gcc至关重要,千万不要直接yum install gcc-c++,因为默认安装gcc-4.8.5,后面编译根本用不了!
# 更新
yum update -y
# 安装 SCL 发行包 centos-release-scl
yum install -y centos-release-scl
# 安装需要的Software Collection。
yum install -y devtoolset-7-gcc*
# 使用已安装的软件集合环境。此时gcc版本是:(GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
scl enable devtoolset-7 bash #临时使用
gcc -v # 查看版本
# 如需退出当前环境。回退到原来的gcc环境。
exit

至此,环境配置基本完成,下面开始真正的操作

  1. 拉取kaldi源码
    git clone https://gitee.com/mirrors/kaldi.git #国内镜像仓库
  2. 安装编译依赖库
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."

  1. 安装第三方工具
    这里很多人都直接使用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后继续上面操作.

  1. 编译kaldi
    先切到src目录 cd ../src/再执行下面命令
./configure --shared
make depend -j 4 # 这里我的虚拟机有4个核
make -j 4 # 完成最终编译

到这里,那么恭喜你已经完全掌握了kaldi的编译操作,下面可以开始kaldi的学习实践了!

特别提醒:上面的操作过程当中,一旦出现有无法解决的报错请毫不犹豫的删除虚拟机并重新安装,因为不这样处理绝大多数情况下都十分难以解决,而虚拟机配置比较简单!!!

在这里插入图片描述
题外: Xshell7连接虚拟机出现 WARNING! The remote SSH server rejected X11 forwarding request.解决

yum install xorg-x11-xauth -y

有什么问题欢迎留言探讨!!!

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python-AI Xenon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值