2004年3月12日

[julius-u:00163] HMnetの認識でcoredump

東北大の大河です。

julius 3.4-multipathを使ってHMnetモデルで認識を行う際にcoredumpしてしまうこ
とがあったので,少し調べました。
その結果,
「triphoneのうち,(a-r+aとi-r+aのような)コンテキストが異なる同じ音素も
すべて同じトポロジーである」
ことを想定していて,そうではないHMnetなどの複雑なモデルでは
落ちてしまうことがあるとの結論に至りました。

内容をもう少し細かく書きますと,
SSS Freeに基づくHMnetを学習しまして,
各状態を~sマクロで表現し
あるコンテキストが通りうるパスをすべて
マルチパスで表現しています。
その結果,コンテキストの中心音素が同じでも
2状態しかない音素や数十状態あるモデルが出来ます。

これらの音素が,単語の先頭などに来ると,
outprob_style.c:194
if ((ohmm = get_left_context_HMM(rset->hmm,
(winfo->wseq[last_wid][winfo->wlen[last_wid]-1])->name, hmminfo)) != NULL) {
rhmm = ohmm;
} else {
/* if triphone not found, try to use the bi-phone itself */
rhmm = rset->hmm;
で前の単語の単語間triphoneを作成しようとします。
でこの実験の場合得られたohmmとbiphoneのrset->hmmは
全く状態数の違うモデルになります。

ところがこの後の
outprob_style.c:226
rset->cache.state = rhmm->body.defined->s[rset->state_loc];
でbiphoneの状態番号rset->state_locを使ってtriphoneを呼び出し
何もない場合は,outprob_stateを呼び出した段階で落ちると
言う流れになっているようです。

仕様なのがバグなのか判断できないのですが,確認ください。

--
====================================================
大 河 雄 一 OHKAWA Yuichi (kuri@xxxxx)
東北大学 大学院 教育情報学研究部・教育部
Research and Education Divisions,
Graduate School of Educational Informatics,
Tohoku University, 980-8576 Sendai, JAPAN.
====================================================

投稿者 xml-rpc : 2004年3月12日 14:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/3799
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。