由于本人新手不熟练,导致玩kaldi时出了很多问题后不得不重装kaldi环境甚至系统,因此记录一下,下次要是再用到,配置的快一点。
安装Ubuntu系统就略过了,做好系统盘后,一劳永逸。(参考链接:https://blog.csdn.net/weixin_42858575/article/details/89817219)
一、安装NVIDIA驱动
1、下载驱动(http://www.nvidia.cn/page/home.html),并将驱动复制到主机上,此处是放到/home下
2、禁用nouveau
若未安装vim则sudo apt-get install vim安装或使用vi
sudo vim /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下两行内容
blacklist nouveau
options nouveau modeset=0
更新系统
sudo update-initramfs -u
重启系统(一定要重启)
reboot
验证nouveau是否已禁用,没有信息显示,说明nouveau已被禁用
lsmod | grep nouveau
3、ctrl+alt+f1进入命令行界面
sudo service lightdm stop //这个是关闭图形界面,不执行会出错。
然后卸载掉原有驱动:
sudo apt-get remove nvidia-* (若安装过其他版本或其他方式安装过驱动执行此项)
4、给驱动run文件赋予执行权限:
sudo chmod a+x NVIDIA-Linux-x86_64-396.18.run
安装:
sudo ./NVIDIA-Linux-x86_64-396.18.run -no-x-check -no-nouveau-check -no-opengl-files //只有禁用opengl这样安装才不会出现循环登陆的问题
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件
安装过程:
The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 continue 继续
WARNING: Unable to find a suitable destination to install 32-bit compatibility libraries. Your system may not be set up for 32-bit compatibility. 32-bit compatibility files will not be installed; if you wish to install them, re-run the installation and set a valid directory with the --compat32-libdir option. 选择ok继续
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up. 选择Yes继续
Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 430.09) is now complete. 选择ok继续
5、挂载Nvidia驱动:
modprobe nvidia
检查驱动是否安装成功:
nvidia-smi
sudo reboot //重启
参考链接:https://blog.csdn.net/xunan003/article/details/81665835
二、安装CUDA
1、根据驱动来下载CUDA安装包(NVIDIA官网下载),选择 runfile文件。我这里放到\home下。下载完后,用MD5 检验,如果序号不和,得重新下载
md5sum cuda_10.0.130_410.48_linux.run
2、禁用 nouveau驱动(在安装Nvidia驱动时已禁用)
lsmod | grep nouveau //无输出表示已禁用,没禁用参考上面 一、2
3、重启电脑,进入登录界面的时候,不要登录进入桌面(否则可能会失败,若不小心进入,请重启电脑),直接按Ctrl+Alt+F1进入文本模式(命令行界面),登录账户。
sudo service lightdm stop 关闭图形化界面
4、切换到cuda安装文件的路径:cd home/
sudo sh cuda.run
accept
Driver选项去掉(已经装了驱动,这里选择不再装驱动),然后选Install
5、重新启动图形化界面。
sudo service lightdm start
Alt + ctrl +F7,返回到图形化登录界面,如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。
6、重启电脑,检查Device Node Verification
ls /dev/nvidia*
若结果显示/dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset 或显示出类似的信息,应该有三个,则安装成功。不是的话参考链接
7、设置环境变量
sudo vim /etc/profile
在打开的文件末尾,添加以下两行(根据自己的改一下)。64位系统:
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source /etc/profile //刷新生效
8、重启电脑,检查上述的环境变量是否设置成功
验证驱动版本
cat /proc/driver/nvidia/version
验证CUDA Toolkit
nvcc -V
9、尝试编译cuda提供的例子
cd /home/xxx/NVIDIA_CUDA-9.0_Samples //其中xxx是你自己的用户名
make
如果编译成功,最后会显示Finished building CUDA samples
运行编译生成的二进制文件
cd /home/xxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release
./deviceQuery
出现Result = PASS代表成功,若失败 Result = FAIL
./bandwidthTest
出现Result = PASS代表成功,若失败 Result = FAIL
参考链接:https://blog.csdn.net/lihe4151021/article/details/90237681
三、cudnn的安装
1、下载安装文件,按需求下载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive
2、安装cudnn,官网下载下来的cudnn for linux的文件格式是.solitairetheme8,想要解压的话需要先转成tgz格式再解压
sudo cp cudnn-10.0-linux-x64-v7.3.1.20.solitairetheme8 cudnn-10.0-linux-x64-v7.3.1.20.tgz
sudo tar -xvf cudnn-10.0-linux-x64-v7.3.1.20.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
3、查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
参考链接:https://blog.csdn.net/lihe4151021/article/details/90237681
四、安装kaldi
1、配置环境变量
sudo apt-get install autoconf automake libtool subversion libatlas-dev libatlas-base-dev zlib1g-dev gawk git gfortran gcc g++
2、下载kaldi
sudo git clone https://github.com/kaldi-asr/kaldi
3、编译kaldi
进入tools目录,编译tools
cd tools/
extras/check_dependencies.sh
根据提示安装必要工具,知道出现:extras/check_dependencies.sh: all OK.
sudo make //sudo make -j 4
4、编译src
./configure --shared
sudo make depend
sudo make //sudo make -j 4
5、运行测试
cd egs/yesno/s5
sudo ./run.sh
如果编译成功,会看到最后一行测试结果显示:
%WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10
参考链接:https://blog.csdn.net/qq_36035264/article/details/75579003
五、训练THCHS-30模型
1、下载数据集放到主机上,这里放到 thchs30-openslr 下
2、修改s5目录下的cmd.sh,改为本地执行
export train_cmd=run.pl
export decode_cmd=run.pl
export mkgraph_cmd=run.pl
export cuda_cmd=run.pl
3、修改s5下的run.sh
n=4 //#parallel jobs 修改并行任务的数量,可以根据cpu的个数来定,这里改成4
thchs=/home/jackie/data/thchs30-openslr //修改文件路径,改成你的文件路径
执行脚本
sudo ./run.sh
参考链接:https://blog.csdn.net/qq_36035264/article/details/75579003
(可选)4、解决字符转码问题,之前运行run.sh一直报错:'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
打开s5/local/wer_output_filter,加入以下字段
# -*- coding: utf-8 -*-
import sys #要重新载入sys。因为 Python 初始化后会删除 sys.setdefaultencoding 这个方 法
reload(sys)
sys.setdefaultencoding('utf-8')
参考链接:https://www.jianshu.com/p/5017d8342dd2