1. 程式人生 > >基於htk工具包的語音識別

基於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播放聽一下。