鯤鵬服務器上kaldi 運行voxforge例子
1?????? 介紹
Kaldi是當前最流行的開源語音識別工具(Toolkit),它使用WFST來實現解碼算法。Kaldi的主要代碼是C++編寫,在此之上使用bash和python腳本做了一些工具。
voxforge是個收集語音的網址,你可以免費的得到語音庫。下載的話你可以用一些批量下載的軟件或者利用kaldi/egs/voxforge/s5里的getdata.sh來下載。大概有12.6GB的大小,大家保證你的linux系統有足夠的空間來存儲。
2?????? 安裝準備
華為云購買一臺鯤鵬服務器
本文以云服務器KC1實例搭建,云服務器配置如表1-1所示。
表1-1?云服務器配置
項目
說明
規格
kc1.large.2 | 2vCPUs | 4GB
磁盤
系統盤:高IO(40GB)
操作系統要求如表1-2所示。
表1-2?操作系統要求
項目
說明
-
Ubuntu
18.04
在公共鏡像中已提供。
Kernel
4.15.0
在公共鏡像中已提供。
3?????? 安裝kaldi
參考博客:https://bbs.huaweicloud.com/blogs/173186
我安裝的目錄是/usr/local/kaldi
運行voxforge例子時候,需要online-gmm-decode-faster 和 online-wav-gmm-decode-faster,
online-wav-gmm-decode-faster 用來回放wav文件來識別的;
online-gmm-decode-faster用來從麥克風輸入聲音來識別的。
參考如下步驟安裝:
1)bash extras/install_portaudio.sh
a. 在kaldi/tools目錄下運行 bash extras/install_portaudio.sh
該腳本下載pa_stable_v19_20111121.tgz并且解壓,執行時候報錯:
b. 修改文件:vi config.sub (解決configure: error: cannot guess build type; you must specify one)
查找“x86”內容的位置,在其位置后面增加aarch64類型,具體2處增加:
case $basic_machine in處
(1)
| x86 | xc16x | xstormy16 | xtensa \
改為:
| x86| aarch64 | xc16x | xstormy16 | xtensa \
(2)
| x86-* | x86_64-* | xc16x-* | xps100-* \
改為:
| x86-* | aarch64-* | x86_64-* | xc16x-* | xps100-* \
c. 重新打包:pa_stable_v19_20111121.tgz
rm –rf pa_stable_v19_20111121.tgz
tar –zcvf pa_stable_v19_20111121.tgz portaudio
d. 修改extras/install_portaudio.sh后重新執行
在./configure 后面在加上參數
./configure --prefix=`pwd`/install --with-pic
改為:
./configure --prefix=`pwd`/install --with-pic --host=aarch64 --build=aarch64
extras/install_portaudio.sh
2) 安裝online
cd /usr/local/kaldi/src/online
make -j2
3) 安裝onlinebin
cd /usr/local/kaldi/src/onlinebin
make -j2
生成 online-gmm-decode-faster 和 online-wav-gmm-decode-faster
5?????? 分析和執行voxforge中online_demo例子
Voxforge目錄下有三個子目錄,分別是gst_demo,online_demo,s5,其中s5是特征提取,模型訓練,得出模型的例子,online_demo是根據模型進行進行在線語音識別,識別麥克風輸入,是推理過程。這里分析online_demo例子。
默認模式離線文件解碼:?online_demo/run.sh
離線在線解碼:online_demo/run.sh ?--test-mode live
run.sh腳本分析(分析離線語音識別模型):
1)下載online-data.tar.bz2,如果目錄下有該語言包,則跳過次步驟,-:
http://sourceforge.net/projects/kaldi/files/online-data.tar.bz2
2)解壓,生成online-data,如下為目錄結構
--online-data
--audio? //該目錄存放wav語言文件
--models
--tri2a
--tri2b_mmi? //腳本中采用此模型
在tri2a或者tri2b_mmi目錄下,有模型文件model(tri2a多了一個final.mdl,即model文件的軟鏈接),有轉移矩陣文件matrix
說明:
(1)audio:可以將需要測試的wav文件拷貝到此目錄
(2)tri2b_mmi目錄下的文件是在s5訓練中生成的,可以將s5下的exp目錄下的final.mdl,?s5目錄下的exp下的tri下的graph_word里面的words.txt,和HCLG.fst,考到models的tri2a或者tri2b_mmi下,或者拷貝到自己新建的模型目錄。
3)將audio目錄下的wav文件加入文件列表input.scp
>?$decode_dir/input.scp ????????for?f?in?$audio/*.wav;?do ????????????bf=`basename?$f` ????????????bf=${bf%.wav} ????????????echo?$bf?$f?>>?$decode_dir/input.scp ????????done
4)online-wav-gmm-decode-faster對文件列表進行語音識別
online-wav-gmm-decode-faster?--verbose=1?--rt-min=0.8?--rt-max=0.85\ ????????????--max-active=4000?--beam=12.0?--acoustic-scale=0.0769?\ ????????????scp:$decode_dir/input.scp?$ac_model/model?$ac_model/HCLG.fst?\ ????????????$ac_model/words.txt?'1:2:3:4:5'?ark,t:$decode_dir/trans.txt?\ ????????????ark,t:$decode_dir/ali.txt?$trans_matrix;;說明:ali.txt記錄對齊的狀態與幀之間關系???trans.txt記錄解碼結果的數字
5)估計模擬解碼的錯誤率
鯤鵬 語音通話
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。