基於htk工具包的語音識別
htk簡介:
HTK是一個構建隱藏馬爾可夫模型(HMMs)的工具包。HMMs可以用於任何時間序列的建模建模,HTK的核心就是類似的通用目的。然而,HTK主要設計用於構建基於HMM的語音處理工具,特別是識別程式。因此,大部分HTK中的基礎設施支援專門用於此任務。
--------------------------------------------------------------------------------
安裝篇
--------------------------------------------------------------------------------
1.下載到HTK-3.4.1.ZIP後,解壓,將其中的htk資料夾整個複製到E盤根目錄下,路徑最好都是英文。
2.確保的環境變數Path包含路徑(此為本機vs2013的路徑,其它版本可根據安裝目錄找到):F:\工具檔案\vs2013_installation_path\Common7\Tools ,路徑根據你安裝所在目錄作相應改變。此次安裝需要加諸多路徑到環境變數中,如下圖
其中第二個環境變數是執行程式的目錄資料夾,需要加到環境變數中,路徑是你的HTK安裝路徑;後面三個都是DOS視窗編譯時用nmake編譯需要新增的環境變數,路徑是你的vs安裝路徑中的VC資料夾下的檔案路徑,讀者只需新增到環境變數中即可,後續會詳細解釋。
3.開啟DOS 命令視窗, 在命令視窗中輸入cd HTK-3.4.1 進入HTK-3.4.1資料夾,在該資料夾下建立一個新資料夾bin.win32 . 輸入:mkdir bin.win32就可以新建資料夾(注:HTK的碟符是你安裝時候的碟符,筆者已經在E盤安裝好了,此時在D盤做試驗);
此時可以去你的HTK資料夾下看是否有bin.win32這個資料夾,有的話說明成功。
4.接下來在DOS視窗執行vcvars32,這個檔案是在F:\工具檔案\vs2013_installation_path\VC\bin目錄下,也就是vs安裝路徑下的VC裡面的bin目錄下執行vcvars32.bat(注意字尾名也要寫上);
5.接下來編譯htk庫檔案:
總共有四個庫檔案需要編譯,分別是HTKLib,HTKTools,HLMLib,HLMTool四個檔案,具體步驟如下:
cd HTKLib(進入路徑) nmake /f htk_htklib_nt.mkf all cd ..(返回上級目錄)
同理編譯HTK TOOLS ,輸入以下命令:
cd HTKTools nmake /f htk_htktools_nt.mkf all cd .. cd HLMLib nmake /f htk_hlmlib_nt.mkf all cd .. cd HLMTools nmake /f htk_hlmtools_nt.mkf all cd ..
6.編譯成功後你會發現在你的htk資料夾中的bin.win32這個檔案中會出現很多.exe檔案,如圖:
HSLab.exe 錄音,標記工具
Hcopy.exe 從語音提取特徵引數的工具
HInit.exe 和 HCompV.exe 對HMM模型初始化的工具,注意,這裡需要對每個模型都要使用此命令進行初始化
HRest.exe 對模型進行迭代訓練的工具
HParse.exe 語法轉網路的工具,發音轉本文用到的。
HSGen.exe 語法查錯工具
HVite.exe 解碼工具,也就是識別工具。可以用命令列方式使用,也可以用互動方式使用。
此時說明你的四個htk庫檔案編譯成功!
此時要將bin.win32這個檔案的路徑加入到 環境變數中才能執行生效,E:\HTK-3.4.1\htk\bin.win32加入環境變數 。也就是步驟2中的第二個環境變數的加入;
安裝htk後在E:\HTK-3.4.1\htk目錄下執行HInit後若出現以下介面,
則說明你的htk已經安裝成功一半了!!!
7.此時確保電腦已經安裝Active Perl編輯器,用來編譯CGI程式;
ActivePerl一個perl指令碼直譯器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套開發工具程式,可以讓使用者編寫出適用於unix,windows,linux系統的CGI程式來。
此時開始執行HTKDemo程式:
cd HTKDemo
mkdir hmms
cd hmms
mkdir tmp
mkdir hmm.0
mkdir hmm.1
mkdir hmm.2
mkdir hmm.3
cd ..
mkdir proto
mkdir acc
mkdir test
perl runDemo.pl configs\monPlainM1S1.dcf
先要在HTKDemo資料夾下新建四個資料夾,分別是hmms,proto,acc,test,在hmms資料夾下再建立四個資料夾分別為hmm.0,hmm.1,hmm.2,hmm.3,建立完後然後在E:\HTK-3.4.1\samples\HTKDemo目錄下執行以下2程式碼,若出現以下介面:
perl runDemo.pl configs\monPlainM1S1.dcf
則說明此時htk已經完全地安裝成功了!
---------------------------------------------------------------------------------
使用篇
---------------------------------------------------------------------------------
接下來就可以使用htk了!
1. 建立語音材料庫,確定識別基本元,比如一個單詞 yes no ok等,或者 聲母 b p m f 韻母 d t n l 等,確定基本元后,標記好識別基本元。
2. 對語音材料庫中的聲音檔案提取MFCC聲紋特徵
3.為每一個基本元建立一個HMM模型。
4.利用MFCC聲紋特徵對每一個HMM模型進行訓練,使模型引數與其描述的識別基本元對應。
5.定義輸入語音的語法規則等,從發音對應到文字。
6. 識別。
先做第一步:建立語音材料庫,確定基本單元;
1.先開啟DOS視窗,執行錄音標記工具,輸入HSLab yes.sig命令,回車;有可能出現以下錯誤:
“ERROR [+6870] MakeXGraf: Not compiled with X11 support: use HGraf.X.c FATAL ERROR - Terminating program HSlab”;
這是因為 預設情況下HSLab工具使用的是x11做的圖形介面介面,windows不支援,所以需要修改一下生成檔案,使用windows GUI。修改htk_htklib_nt.mkf(兩處),將HGraf.null.obj替換為HGraf_WIN32.obj,HGraf.null.olv替換為 HGraf_WIN32.olv。
然後(進入HTKLib資料夾 )--> 使用命令:nmake /f htk_htklib_nt.mkf all重新編譯HTKLib 下的\htk_htklib_nt.mkf。;開啟htk \HTKTools下的Makefile.in(右擊用記事本開啟),將其中"-lX11"刪除(查詢); 然後(進入HTKTools資料夾 )-->重新編譯生成 htk_htktools_nt.mkf 再按照上面的步驟安裝即可。就可以解決上述問題!
這裡要用nmake方式編譯上述兩個配置檔案,此時要先找到你的vs安裝路徑裡面的VC資料夾,然後將裡面的Include、lib、和bin三個資料夾的路徑加到你的系統變數裡面去,否則在用nmake編譯上述資料夾時會出現錯誤,所以一定要加到環境變數。
此時再執行htk_htktools_nt.mkf檔案時還肯會出現以下錯誤:
這個問題的解決辦法網上的很複雜,我找了很多辦法也解決不了,後來摸索出了一種簡單的方法,就是再執行htk_htktools_nt.mkf檔案時先要執行以下F:\工具檔案\vs2013_installation_path\VC\bin檔案下的vcvars32.bat檔案,然後再執行htk_htktools_nt.mkf檔案!
若出現以下介面,則說明nmake /f htk_htklib_nt.mkf all和nmake /f htk_htktools_nt.mkf all兩個配置檔案執行成功!
此時再執行錄音工具HSLab yes.sig命令,激動人心的畫面出現了!!!
若出現以上介面,則說明錄音工具執行成功,此時可進行錄音!
錄製聲音。點選rec按鈕,說:“yes”,然後點選stop按鈕。你會看到介面上出現一個語音波形,一條語音樣本就錄製完成了,你可以點選play播放聽一下。