Ubuntu巡航记(5) -- Kaldi 安装

前言

Kaldi 是自动语音辨识(Automatic Speech Recognition, ASR)的工具箱,它是以 C/C++ 语言开发的,安装有点複杂,笔者在安装后,两次都发生开不了机,惨痛的经验与大家分享,希望读者得以避免重蹈覆辙。

Kaldi 安装

Kaldi官网文件写的非常模糊,笔者主要参考Install Kaldi (ASR) on Ubuntu这一篇,分为几个段落:

前置安装Kaldi tools 安装Kaldi 原始程式码建置及 irst 语言模型安装kaldi_lm 语言模型安装

前置安装

开启终端机,执行下列指令:

sudo apt-get updatesudo apt-get upgradesudo apt-get install gitsudo apt-get install bcsudo apt-get install g++sudo apt-get install zlib1g-dev make automake autoconf bzip2 libtool subversionsudo apt-get install libatlas3-base

其中 g++ 会安装 v9.3.0,但编译 Kaldi 只能是 v8.x版,还好,g++ 允许多版本并存,可参考How to Install GCC (build-essential) on Ubuntu 20.04,先安装各种版本 g++:

sudo apt install gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10

指定预设版本,例如v8:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

可指定预设版本,kaldi并不需要此步骤:

sudo update-alternatives --config gcc

依选单指定版本。

Kaldi tools 安装

下载程式码:
git clone https://github.com/kaldi-asr/kaldi.git kaldi --origin upstream
检查依赖的套件:
cd kaldi/toolsextras/check_dependencies.sh

会出现多个套件需安装,包括 Python 2.7,按指示安装,例如:

sudo apt-get install sox gfortran python2.7
程式建置:
make

Kaldi 原始程式码建置及 irst 语言模型安装

install MKL (Intel math library),参阅『Ubuntu 使用 Intel MKL 加速 Numpy』及『Installing Intel® Performance Libraries and Intel Distribution for Python Using APT Repository』:
# 下载金钥wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB# 安装金钥apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB# 删除档案rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB# 设定下载的仓库sudo wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.list# 下载sudo apt-get updatesudo apt-get install intel-mkl-2020.0-088
Kaldi 原始程式码建置
cd ~/kaldi/src./configure --sharedmake dependmake 

make 要执行很久,耗时数个小时。

kaldi_lm 语言模型安装

cd ~/kaldi/toolsextras/install_kaldi_lm.sh

测试

执行範例程式,检查最后一行是否得到正确结果:

cd ~/kaldi/egs/yesno/s5run.sh

结果如下:

%WER 0.00

悲剧发生了

安装及测试顺利,满心欢喜,重开机后,竟然发生黑画面,只有左上角游标闪动,放个一阵子,一动也不动。第一次以为是硬碟过热,只好重灌,再次发生,就觉得不是偶然了。找到这一篇『How to Fix an Ubuntu System When It Won’t Boot』,依步骤修复Ubuntu,先按 Alt+Ctrl+Del,进入选单,选择
Advanced options for Ubuntu -> recovery mode
出现另一个选单如下,执行clean及其下每一项,发现GPU显示卡有问题,应该是跟Kaldi有关,因为它会设定GPU。
http://img2.58codes.com/2024/200019760Dn2wQctUs.png

修复后重开机,可以顺利进入Ubuntu,但是另一个问题发生了,萤幕不断闪动,应该还是显示卡的问题,运气不错,找到这一篇『Ubuntu Linux Install Nvidia Driver』,发现上一步骤安装过新的GPU驱动程式版本--470,执行以下指令,安装较旧版本。

# 检查GPU驱动程式版本sudo lshw -C display# 安装GPU驱动程式 460 版本sudo apt install nvidia-driver-460

重开机后,就一切正常了,阿弥陀佛。

结语

Ubuntu 号称是最稳定的作业系统,好像不是这样啊 !!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章