ichou1のブログ

主に音声認識、時々、データ分析のことを書く

音声認識メモ(HMM)その7(HTK HERest コマンド(4))

モノフォン(monophone)での音響モデルを作ったら、続けて、トライフォン(triphone)の音響モデルを作成する。

トライフォンというのは音素の3つ組のこと。
2つ組ならバイフォン(あるいはダイフォン)
これらは、音素(phone)に「MONO」、「BI」、「TRI」を付けたもの。

ある音素を"X"とした場合、直前の音素を"L" (Left)、直後の音素を"R"(Right)とすると、

 L-X+R

の形で表現される。

以下、「もしもし」という単語を「m o s i m o s i」のように音素で表した場合の例。

m-o+s
o-s+i
s-i+m
i-m+o

単語の先頭と末尾については、前後に接続する単語の影響を受けて変化することから(連続音声の場合)、

先頭
m+o

前に無音「sp」が入っていると考えれば、「sp-m+o」で表される。

末尾
s-i

後ろに無音「sp」が入っていると考えれば、「s-i+sp」で表される。

トライフォンモデルの学習は、モノフォンと同様に「HERest」コマンドを使う。

学習の前に、初期モデルを作る。
初期モデルの作成には、「HHEd」コマンド(HMM Edit)を使う。

まず、HHEdコマンドに渡すスクリプトを用意する。
スクリプトは以下のフォーマット。

CL "トライフォンのリスト"
TI T_m {(*-m+*,m+*,*-m).transP}
TI T_o {(*-o+*,o+*,*-o).transP}
TI T_s {(*-s+*,s+*,*-s).transP}
TI T_i {(*-i+*,i+*,*-i).transP}

1列目がコマンドを表す。
「CL」: Clone
「TI」: Tie

Tutorialのサンプルに含まれるPerlスクリプトを使って出力することもできる(実行すると"mktri.hed"が出力される)。

maketrihed "モノフォンのリスト" "トライフォンのリスト"

モノフォンの音響モデルとスクリプトをHHEdコマンドに渡す。

HHEd -H "音響モデル(monophone)" -M "出力先" mktri.hed "モノフォンのリスト"

これで、トライフォンの初期モデルができる。

初期モデルは、「トライフォンの中心音素」=「モノフォンの音素」となる。
(例)「i-m+o」は「m」のモデルをコピー