音声認識メモ(HMM)その8(HTK HERest コマンド(5))
トライフォンの初期モデルに対して学習を行う。
HERest -C "config名" -I "トライフォン用の音素MLF" -t 250.0 150.0 1000.0 -S "学習対象となるファイルのリスト"-s "統計ファイル" -H "トライフォンの初期モデル" -M "出力先" "トライフォンのリスト"
インプットとして渡す音素MLFの例。
トライフォン用の音素MLF
#!MLF!# silB m+o m-o+s o-s+i s-i+m i-m+o m-o+s o-s+i s-i silE .
(比較用)モノフォン用の音素MLF
#!MLF!# silB m o s i m o s i silE .
どちらも10個だが、モノフォンでは6種類なのに対し、トライフォンでは8種類となる。
ここで、「-s」オプションを付けて統計ファイルを出力するように指定する。
(この統計ファイルは、後続のクラスタリングで使用する)
統計ファイルの例
音声ファイルを構成する「198」フレームにおける各ラベル、各状態の専有確率を表す。
(値を全て足し合わせると「197.991268」になる)
学習を繰り返しモデルを更新した後、モデルのクラスタリングを行う。
クラスタリングでは、中心音素が同じのモデルを1つにまとめる。
例)"「m+o」の状態2"と"「i-m+o」の状態2をまとめて"ST_m_2"を作成する
クラスタリングの初期モデル作成には、HHEdコマンドを使う。
HHEd -H "トライフォンのモデル" -M "出力先" "HHEdスクリプト" "トライフォンのリスト"
HHEdスクリプトの例
RO 100 "統計ファイル" TR 2 TB 350.0 "ST_m_2_" {("m","*-m+*","m+*","*-m").state[2]} TB 350.0 "ST_o_2_" {("o","*-o+*","o+*","*-o").state[2]} TB 350.0 "ST_s_2_" {("s","*-s+*","s+*","*-s").state[2]} TB 350.0 "ST_i_2_" {("i","*-i+*","i+*","*-i").state[2]} (以降、省略)
TR : Trace Level
TB : TreeBase
"ST_m_2_1"の初期モデル作成ロジックは以下のとおり("平均(MFCC_1)"を算出する例)
インプット1:モデル"m+o"の平均(MFCC_1)
初期モデルの平均(MFCC_1) * 統計ファイル上の占有確率 = -4.666 * 1.324 = -6.181
インプット2:モデル"i-m+o"の平均(MFCC_1)
初期モデルの平均(MFCC_1) * 統計ファイル上の占有確率 = 3.192 * 3.995 = -12.757
アウトプット:モデル"ST_m_2_1"の平均(MFCC_1)
(インプット1の平均(MFCC_1) + インプット2の平均(MFCC_1)) / (インプット1の占有確率 + インプット2の占有確率) = = ((-6.181) + (-12.757)) / ( 1.324 + 3.995) = -18.939 / 5.320 = -3.559
作成した初期モデルに対して、学習を行う。