音声認識メモ(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」のモデルをコピー