HTK は隠れマルコフモデルによる音声認識のツールキット。
ケンブリッジ大学の技術をもとに製品化された有償のソフトウェアだったが、開発元が Microsoft に買収され、その後無料で公開された。 現在は厳密な意味でのオープンソースプログラムではなく、配布元でユーザ登録すれば入手・利用できる。
特徴量計算の部分を自前で用意することで画像認識などにも応用できる。
ATK : Application Toolkit for HTK が提供されている。
HTK のパッチとして音声合成ツールキットHTSが公開されている。
コマンド hvite
Vine 3.x / 4.x 環境
$ tar xvfz /path/to/HTK-3.4.1.tar.gz $ tar xvfz /path/to/HDecode-3.4.tar.gz $ cd htk $ sh configure $ make all hdecode $ su # make install install-hdecode $ /usr/local/bin/HList (for test)
HList -r FAC_13A.mfc > FAC_13A.data
HTKのMFCC計算をできるだけmatlabで再現しようという試み。 readhtk.m というスクリプトも紹介されている。
http://www.ee.columbia.edu/~dpwe/resources/matlab/rastamat/mfccs.html
参照「フリーソフトで作る音声認識システム」11章
覚え書き
_Z : ケプストラム平均正規化を行うための特徴量
ファイル名(の拡張子を除いた部分)は「正解ラベルと認識結果の比較」など、さまざまな場面でデータの識別子として用いられる。 特に話者適応などが絡むと複雑。
注意深くマニュアルを読むか、サンプルのファイル命名規則に従うのが無難。
データに時間情報つきのラベルが必要なコマンド
データに時間情報つきのラベルが不要なコマンド
「フリーソフトで作る音声認識システム」11章の流れ
連結学習を使う作業の流れ:HTKBookのチュートリアル、 rubyhtk
[mixup.hed] LS #{input.dir}/stats MU +1 {*.state[2-19].mix} [config.herest] SOURCEKIND = MFCC_D_A_0 TARGETKIND = MFCC_D_A_0
-H : MMF マスターモデルファイル -L : ラベル -S : データ -d : 入力ディレクトリ -M : 出力ディレクトリ -s : 出力 stats
-p : コンフュージョンマトリクスを出す -w : ワードスポッティングモード (時間ラベルが必要)
参照と仮説の単語列をDPマッチングして比較できる。
無視したい単語を指定できる。 sil を指定するなど。
設定ファイル
config.hcopy
SOURCEFORMAT = NOHEAD SOURCEKIND = WAVEFORM SOURCERATE = 625 TARGETKIND = MFCC TARGETRATE = 100000.0 WINDOWSIZE = 250000.0 USEHAMMING = T PREEMCOEF = 0.97 NUMCHANS = 24 NUMCEPS = 12
proto/hai.hmm
~o <VecSize> 12 <MFCC> ~h "hai" <BeginHMM> <NumStates> 5 <State> 2 <Mean> 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 12 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 <State> 3 <Mean> 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 12 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 <State> 4 <Mean> 12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 12 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 <TransP> 5 0.0 1.0 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.0 <EndHMM>
config.hvite-mic : HVite でマイク入力を使う場合に使用。MFCファイル名を指定しなくてよい。
SOURCEFORMAT = HTK SOURCEKIND = HAUDIO SOURCERATE = 625 TARGETKIND = MFCC TARGETRATE = 100000.0 WINDOWSIZE = 250000.0 USEHAMMING = T PREEMCOEF = 0.97 NUMCHANS = 24 NUMCEPS = 12 USESILDET = T MEASURESIL = F OUTSILWARN = T ENORMALISE = F
HVite -C config.hvite-mic -H hmm1/hmmsdef.hmm -i reco.mlf -w net.slf voca.txt hmmlist.txt