基本环境介绍:Ubuntu20.04,docker容器内带GPU,cuda版本为11.8
安装系统依赖
进入命令行以后先更新一下在安装一些依赖,此处依赖少了ffmpeg
,因为一些特殊原因经常装不上,所以我们单独安装
apt-get update
apt-get install -y --no-install-recommends g++ make automake autoconf bzip2 unzip wget sox libtool git subersion python2.7 python3 zlib1g-dev gfortran ca-certificates patch vim
# 或
apt-get install -y g++ make automake autoconf bzip2 unzip wget sox libtool git subersion python2.7 python3 zlib1g-dev gfortran ca-certificates patch vim
rm -rf /var/lib/apt/lists/*
ln -s /usr/bin/python2.7 /usr/bin/python
ffmpeg 安装
网好的可以直接使用apt-get -y install ffmpeg
安装。但是安装上的版本可能会很低,与官网最新稳定版差距很大,所以我们从ffmpeg官网上手动下载安装。
具体可以参考ffmpeg安装。当然你也可以自行参考别的地方安装ffmpeg。
当然我们这里以安装kaldi为主,低版本的ffmpeg也不影响使用,但是如果在使用apt-get -y install ffmpeg
安装的时候报错,大概率可能就是网络原因,所以我们需要添加额外的镜像源去下载。
首先备份原来的镜像
cp /etc/apt/sources.list /etc/apt/sources.list.old
添加新的镜像
vim /etc/apt/sources.list
注意,此处的镜像地址需要根据不同的系统和内核版本做出更改,需要自行找到对应的镜像源,使用
lsb_release -a
看看自己的版本然后找对应的。换完源以后记得apt-get update
。
更换完镜像以后就可以正常使用apt
安装了。
今天帮别人安装的时候发现即便还原了也不能正常安装。
排查发现可能是DNS的问题。
在文件 resolv.conf 更新 阿里DNS,按照具体更换的源修改DNS。
vim /etc/resolv.conf
写入
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 127.0.0.1
# 或
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.1
保存后
apt-get update
再执行之前的命令,再去下载依赖包,发现可以正常下载。
安装kaldi
首先先从github上直接克隆kaldi的仓库下来,网不好的话建议下载最新的压缩包然后直接解压。
git clone https://github.com/kaldi-asr/kaldi.git
检查依赖是否安装完成:
cd <kaldi-path>/tools
extras/check_dependencies.sh
这里它提示缺什么就再安装一遍。然后自行下面的命令安装Intel MKL
extras/install_mkl.sh
不出意外的话这里应该是提示安装成功,不过我经历了上面ffmpeg等其他的安装是不会有什么网络等问题,如果有问题尝试还源等,也可以留言或私信我。
再次使用以下命令检查依赖,如果提示extras/check_dependencies.sh: all OK.
那咱们的依赖就没问题了。
extras/check_dependencies.sh
最漫长也最折磨的地方开始:
make -j 4
这里的4指的是cpu核心数,看自己的cpu设置,当然越多越快。
注意,你此次也许不会提示任何错误,但是事实上有一些东西并没有安装成功,我也是到后面才发现的。
你可以使用ls -lh
查看make
过程中下载的4个***.tar.gz
的大小,如果发现是0kb估计没下载成功,手动下载然后移动到当前目录下,然后使用make clean
清空一下缓存就可以了重新make
了。
cub-1.8.0.tar.gz , openfst-1.7.2.tar.gz , sph2pipe-2.5.tar.gz , sctk-20159b5.tar.gz
下载成功移动过去后,记得保证文件名一致!!!!!!!
编译Kaldi代码
# Config src before compiling
cd <kaldi-path>/src
./configure --shared --use-cuda
# Check depend and compile
make depend -j 4
make -j 4
当你经过上面漫长的make都没有出过任何错误时,那么恭喜你,你的kaldi大概率是安装完成了。
我执行
./configure --shared --use-cuda
的时候提醒我没有--use-cuda
这个参数,我很奇怪,看了一下文件是有这个参数的,但是默认为yes,所以这里不加--use-cuda
应该也是行的通。
测试kaldi
运行yesno的例子,验证安装是否成功
cd <kaldi-path>/egs/yesno/s5
./run.sh
# 或 bash ./run.sh
如果完美运行就代表你以及成功安装完kaldi了!!!
总结
其实kaldi安装的步骤还挺简(bu)单(shi),其中最烦的应该就是等待编译的时间以及ffmpeg的安装。只要ffmpeg安装完成,其实都是挺简单的。
如果各位在按照本篇文章的安装过程中遇到什么困难,或者新问题,欢迎私信和留言。