Julius 4.2
関数
libjulius/src/outprob_style.c

状態の出力確率計算(第1パス) [詳細]

#include <julius/julius.h>

ソースコードを見る。

関数

LOGPROB outprob_style (WCHMM_INFO *wchmm, int node, int last_wid, int t, HTK_Param *param)
 木構造化辞書上の状態の出力確率を計算する.
void error_missing_right_triphone (HMM_Logical *base, char *rc_name)
 トライフォンエラーメッセージ:右コンテキスト用
void error_missing_left_triphone (HMM_Logical *base, char *lc_name)
 トライフォンエラーメッセージ:左コンテキスト用

説明

状態の出力確率計算(第1パス)

第1パスで,木構造化辞書上のノードの,入力ベクトルに対する HMM の 出力対数確率を計算する.

トライフォン使用時は,単語内の音素環境依存については辞書読み込み時に 考慮されて対応するトライフォンがすでに割り当てられているので,ここで 特別な処理は行われない. 単語先頭および末尾の音素は,木構造化辞書上では pseudo triphone が割り当たっており,これらについては,以下のように 単語間を音素環境依存性を考慮した計算が行われる.

  1. 単語内音素: 通常通り計算する.
  2. 単語の先頭音素: 直前単語の情報から,pseudo triphone を正しい トライフォンに動的に切り替えて計算.
  3. 単語の末尾音素: その pseudo triphone に含まれる(同じ左コンテキストを 持つトライフォンの)状態集合中のすべての状態について尤度を計算し,
    • "-iwcd1 max" 指定時は最大値
    • "-iwcd1 avg" 指定時は平均値(default)
    • "-iwcd1 best N" 指定時は上位N個の平均値 をその状態の尤度として採用する. (これは outprob_cd() 内で自動的に選択 され計算される.
  4. 1音素からなる単語の場合: 上記を両方とも考慮する.

上記の処理を行うには,木構造化辞書の状態ごとに,それぞれが単語内でどの 位置の音素に属する状態であるかの情報が必要である. 木構造化辞書では, 状態ごとに上記のどの処理を行えば良いかを AS_Style であらかじめ保持している.

また,上記の 2 と 4 の状態では,コンテキストに伴うtriphone変化を, 直前単語ID とともに状態ごとにフレーム単位でキャッシュしている. これにより 計算量の増大を防ぐ.

作者:
Akinobu Lee
日付:
Mon Aug 22 17:14:26 2005
Revision:
1.5

outprob_style.c で定義されています。


関数

LOGPROB outprob_style ( WCHMM_INFO wchmm,
int  node,
int  last_wid,
int  t,
HTK_Param param 
)

木構造化辞書上の状態の出力確率を計算する.

引数:
wchmm[in] 木構造化辞書情報
node[in] ノード番号
last_wid[in] 直前単語(単語先頭のトライフォン計算に用いる)
t[in] 時間フレーム
param[in] 特徴量パラメータ構造体 (t 番目のベクトルについて計算する)
戻り値:
出力確率の対数値を返す.

< Local workarea for HMM name conversion

outprob_style.c354 行で定義されています。

参照元 bt_discount_pescore(), get_back_trellis_proceed(), と init_nodescore().

関数の呼び出しグラフ:

呼出しグラフ:

void error_missing_right_triphone ( HMM_Logical base,
char *  rc_name 
)

トライフォンエラーメッセージ:右コンテキスト用

指定した右コンテキストを持つトライフォンが 見つからなかった場合にエラーメッセージを出力する関数.

引数:
base[in] ベースのトライフォン
rc_name[in] 右コンテキストの音素名

< Local workarea for HMM name conversion

outprob_style.c520 行で定義されています。

参照元 next_word(), と scan_word().

関数の呼び出しグラフ:

呼出しグラフ:

void error_missing_left_triphone ( HMM_Logical base,
char *  lc_name 
)

トライフォンエラーメッセージ:左コンテキスト用

指定した左コンテキストを持つトライフォンが 見つからなかった場合にエラーメッセージを出力する関数.

引数:
base[in] ベースのトライフォン
lc_name[in] 左コンテキストの音素名

< Local workarea for HMM name conversion

outprob_style.c552 行で定義されています。

参照元 outprob_style(), と scan_word().

関数の呼び出しグラフ:

呼出しグラフ: