julius/outprob_style.c

木構造化辞書上の状態の出力確率計算を行う [詳細]

#include <julius.h>

outprob_style.cのインクルード依存関係図

ソースコードを見る。

関数

void outprob_style_cache_init (WCHMM_INFO *wchmm)
CD_Setlcdset_lookup_with_category (WCHMM_INFO *wchmm, HMM_Logical *hmm, WORD_ID category)
static void lcdset_register_with_category (WCHMM_INFO *wchmm, HTK_HMM_INFO *hmminfo, DFA_INFO *dfa, HMM_Logical *hmm, WORD_ID category)
 ある単語末の音素について,カテゴリ付き pseudo phone set を生成する.
void lcdset_register_with_category_all (WCHMM_INFO *wchmm, HTK_HMM_INFO *hmminfo, WORD_INFO *winfo, DFA_INFO *dfa)
void lcdset_remove_with_category_all (WCHMM_INFO *wchmm)
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)

変数

static char rbuf [MAX_HMMNAME_LEN]
 Local workarea for HMM name conversion
static char lccbuf [MAX_HMMNAME_LEN+7]
 work area for HMM name conversion
static char lccbuf2 [MAX_HMMNAME_LEN+7]
 work area for HMM name conversion


説明

木構造化辞書上の状態の出力確率計算を行う

作者:
Akinobu Lee
日付:
Mon Aug 22 17:14:26 2005
第1パスで,木構造化辞書上のノードの,入力ベクトルに対する HMM の 出力対数確率を計算する.

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

  1. 単語内音素: 通常通り計算する.
  2. 単語の先頭音素: 直前単語の情報から,pseudo triphone を正しい トライフォンに動的に切り替えて計算.
  3. 単語の末尾音素: その pseudo triphone に含まれる(同じ左コンテキストを 持つトライフォンの)状態集合中のすべての状態について尤度を計算し,
  4. 1音素からなる単語の場合: 上記を両方とも考慮する.

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

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

Revision
1.5

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


関数

void outprob_style_cache_init ( WCHMM_INFO wchmm  ) 

単語先頭のトライフォン変化用キャッシュを初期化

引数:
wchmm [i/o] 木構造化辞書

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

参照元 init_nodescore().

CD_Set* lcdset_lookup_with_category ( WCHMM_INFO wchmm,
HMM_Logical hmm,
WORD_ID  category 
)

Julian 用の単語末用カテゴリ付き pseudo phone set を検索する.

引数:
wchmm [in] 木構造化辞書
hmm [in] 論理 HMM
category [in] 属する単語カテゴリ
戻り値:
該当 set が見つかればそこへのポインタ,あるいは見つからなければ NULL を返す.

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

参照元 lcdset_register_with_category()outprob_style()wchmm_add_word().

static void lcdset_register_with_category ( WCHMM_INFO wchmm,
HTK_HMM_INFO hmminfo,
DFA_INFO dfa,
HMM_Logical hmm,
WORD_ID  category 
) [static]

ある単語末の音素について,カテゴリ付き pseudo phone set を生成する.

Julian では,ある単語に後続可能な単語集合は文法によって制限される.よって, 単語末尾から次に後続しうる単語先頭音素の種類も文法によって限定 される.そこで,与えられた辞書上で,単語のカテゴリごとに,後続しうる先頭音素 をカテゴリ対情報から作成し,それらをカテゴリ付き pseudo phone set として 定義して単語終端に用いることで,Julian における単語間トライフォンの 近似誤差を小さくすることができる.

この phone set の名前は通常の "a-k" などと異なり "a-k::38" となる (数字はカテゴリID).ここでは,辞書を検索して可能なすべてのカテゴリ付き pseudo phone set を,生成する.これは通常の pseudo phone set とは別に 保持され,単語末端のみで使用される.

引数:
wchmm [i/o] 木構造化辞書
hmminfo [in] 音素HMM定義構造体
dfa [in] DFA文法情報
hmm [in] これから登録する単語の終端の論理HMM
category [in] これから登録する単語の文法カテゴリID

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

参照元 lcdset_register_with_category_all().

void lcdset_register_with_category_all ( WCHMM_INFO wchmm,
HTK_HMM_INFO hmminfo,
WORD_INFO winfo,
DFA_INFO dfa 
)

辞書上のすべての単語について,その末尾に登場しうるカテゴリ付き pseudo phone set を生成する(Julian用).

引数:
wchmm [i/o] 木構造化辞書情報
hmminfo [in] HMM定義構造体
winfo [in] 単語辞書情報
dfa [in] DFA文法情報

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

参照元 build_wchmm()build_wchmm2().

void lcdset_remove_with_category_all ( WCHMM_INFO wchmm  ) 

カテゴリ付き pseudo phone set をすべて消去する.この関数は Julian で文法が 変更された際に,カテゴリ付き pseudo phone set を再構築するのに用いられる.

引数:
wchmm [i/o] 木構造化辞書

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

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 番目のベクトルについて計算する)
戻り値:
出力確率の対数値を返す.

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

参照元 bt_discount_pescore()init_nodescore().

void error_missing_right_triphone ( HMM_Logical base,
char *  rc_name 
)

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

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

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

参照元 lcdset_register_with_category()next_word()scan_word().

void error_missing_left_triphone ( HMM_Logical base,
char *  lc_name 
)

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

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

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

参照元 outprob_style()scan_word().


Julianに対してTue Dec 26 12:56:39 2006に生成されました。  doxygen 1.5.0