iT邦幫忙

0

Ubuntu巡航記(5) -- Kaldi 安裝

  • 分享至 

  • xImage
  •  

前言

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 號稱是最穩定的作業系統,好像不是這樣啊 !!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言