由於本人新手不熟練,導致玩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