音声認識メモ(Julius)その5(連続単語認識(DFA))

前回の続き。

孤立単語の場合、"単語内(intra word)の遷移"のみを計算したが、連続単語の場合は、単語内に加え、"単語間(inter word)の遷移"を計算する。

連続単語の場合の木構造化辞書を以下に示す。

f:id:ichou1:20180120122105p:plain

丸枠の下はノード番号を表す。
単語間の接続は、DFA文法として別途保持する。

今回、単語のカテゴリ番号が全て異なるため、音素が共有されないが、カテゴリ番号が同一であれば、孤立単語の例のように共有される。

第1パスの計算において、各単語の開始時刻と終端時刻を単語トレリス上に格納しておく。
単語トレリスは単語(atom)を連結したリストで、計算途中で見つかった単語(atom)が先頭に追加されていく。

単語トレリスの例

f:id:ichou1:20180120123123p:plain

TRELLIS_ATOM構造体
struct __trellis_atom__ {
    LOGPROB backscore;
    LOGPROB lscore;
    WORD_ID wid;
    short begintime;
    short endtime;
    struct __trellis_atom__ *last_tre;
    struct __trellis_atom__ *next;
}