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

前言

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

Kaldi 安装

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

  1. 前置安装
  2. Kaldi tools 安装
  3. Kaldi 原始程序码建置及 irst 语言模型安装
  4. kaldi_lm 语言模型安装

前置安装

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

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
sudo apt-get install bc
sudo apt-get install g++
sudo apt-get install zlib1g-dev make automake autoconf bzip2 libtool subversion
sudo 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-10
sudo 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-9
sudo 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 安装

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

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

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

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

  1. 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 update
sudo apt-get install intel-mkl-2020.0-088
  1. Kaldi 原始程序码建置
cd ~/kaldi/src
./configure --shared
make depend
make 

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

kaldi_lm 语言模型安装

cd ~/kaldi/tools
extras/install_kaldi_lm.sh

测试

执行范例程序,检查最後一行是否得到正确结果:

cd ~/kaldi/egs/yesno/s5
run.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。
https://ithelp.ithome.com.tw/upload/images/20211104/200019760Dn2wQctUs.png

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

# 检查GPU驱动程序版本
sudo lshw -C display

# 安装GPU驱动程序 460 版本
sudo apt install nvidia-driver-460

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

结语

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


<<:  Prepare And Pass Exam With Real Huawei H13-611 Dumps

>>:  企业资料通讯Week7 (1) | rdt(reliable data transfer)[上]

【Day25】React Class Component 生命周期简单介绍

在写React的时候其实有分为两种写法 Class Component this.state or ...

Day 0x7 UVa11417 GCD

Virtual Judge ZeroJudge Zerojudge 直接破图 题意 输入一数字 N...

NNI安装後的验证03

这回,我们将焦点放在WebUI的trials detail中的Hyper-parameter。 请在...

Day#19 Firebase database 101

前言 已经快要到三分之二了,标题名称取到山穷水尽 Firebase Database Auth St...