kaldi中文語音識別(1)——thchs30
這3篇部落格,詳細總結和記錄了我編譯安裝kaldi和兩種用kaldi進行中文語音識別的過程,包括如何kaldi的簡單介紹、環境的配置、相關模型的訓練、匯入,算是自己近期學習的一個總結,也希望可以幫助到需要的人~~~
本篇部落格主要記錄了我編譯安裝kaldi的過程
另外兩篇部落格的連線
kaldi是什麼
kaldi是一個用C++寫的語音識別工具包。kaldi旨在供語音識別研究員使用。當然,kaldi也可以用作聲紋識別。關於他的詳細介紹可以訪問kaldi的官方文件
kaldi與中文語音識別
感謝很多大神與科研工作者在kaldi上開源了他們的資料集和訓練模型,讓我這樣的小白可以站在巨人的肩膀上前行。目前我所瞭解到有3個開源的中文語音識別例子。
如果有同學知道其他的資料集or模型,中英文皆可,歡迎聯絡我補充啊~
編譯與安裝kaldi
注意:為了提高訓練的速度,kaldi最好安裝在GPU雲伺服器下。如果沒有伺服器話,使用虛擬機器應該也是可以的,但一定要分配足夠的記憶體空間和儲存空間。下面我就以我使用的centos伺服器為例,介紹kaldi的編譯與安裝。
編譯與安裝大概分為3步
- 安裝git、下載kaldi的原始碼
- 安裝編譯所需依賴包
- 配置、編譯kaldi
1.kaldi的下載
kaldi的所有原始碼開源在了GitHub上,可以直接git下載到伺服器上,首先得確保伺服器上安裝了git,如果沒有安裝的話,就先安裝git
sudo yum install git -y
接著git clone下載kaldi
git clone https://github.com/kaldi-asr/kaldi.git
下載完成kaldi原始碼後,我們將得到如下一個檔案結構的目錄。
kaldi/ ├── COPYING ├── egs/ //egs目錄裡存放了使用kaldi完成的開源語音識別/聲紋識別專案 ├── INSTALL //編譯安裝kaldi的指導 ├── misc/ ├── README.md ├── scripts/ ├── src/ //src資料夾裡存放了kaldi原始碼 ├── tools/ //tools資料夾裡存放了語音處理的工具包 └── windows/ //windows資料夾存放了在windows下編譯安裝kaldi的檔案
2.安裝編譯所需要的依賴包
編譯之前需要確作業系統中安裝有如下包
subversion
automake
autoconf
libtool
g++
zlib
libatal
wget
sox
首先進入到kaldi/tools目錄下,接著在呼叫check_dependencies.sh指令碼檢查系統中的包是否安裝完全
cd kaldi/tools
extras/check_dependencies.sh
如圖所示,這個shell指令碼會提示系統需要安裝的包,按照提示安裝即可。
安裝完成後再次執行這個指令碼,如果提示OK就可以開始進行kaldi的編譯。
3.編譯kaldi
首先編譯tools,在在kaldi/tools目錄下輸入
make
我使用的伺服器是i7有8個核心,因此輸入make -j 8
可以使用8個核心一起編譯,加快編譯速度。
之後轉到kaldi/src目錄下,輸入如下命令
cd ../src
在src目錄下首先要執行configure進行配置,由於每個人的cuda版本、安裝路徑不一定相同,所以這裡需要根據自己的伺服器情況進行修改,如下是我的configure配置方案,僅供參考。
./configure --static \
--use-cuda=yes \
--cudatk-dir=/home/zy/cuda/cuda-8.0 \
--mathlib=OPENBLAS \
--openblas-root=../tools/OpenBLAS/install \
--threaded-math=no \
--static-math=yes \
--static-fst=yes \
--fst-root=../tools/openfst
配置完成後,就可以進行src的編譯了
make depend
make
同樣,如果是多核CPU的話,你可以使用make depend -j 8
和make -j 8
加快編譯速度
完成後會有提示成功和失敗,結束make後就算完成了kaldi的編譯與安裝了~
用kaldi進行中文語音識別
完成kaldi的安裝後,就可以用kaldi做語音識別了~,下面分別是我用kaldi做的兩種不同中文語音識別的部落格連線。
參考資料:
{
Author: "byr-zyziszy",
Mail: "[email protected]",
Github: "https://github.com/zyzisyz",
Date: "2018-10-2"
}