単語トレリスの保存・参照 [詳細]
#include <julius.h>
関数 | |
void | bt_init (BACKTRELLIS *bt) |
void | bt_prepare (BACKTRELLIS *bt) |
void | bt_store (BACKTRELLIS *bt, TRELLIS_ATOM *tatom) |
void | bt_relocate_rw (BACKTRELLIS *bt) |
void | bt_discount_pescore (WCHMM_INFO *wchmm, BACKTRELLIS *bt, HTK_Param *param) |
static int | compare_wid (TRELLIS_ATOM **a, TRELLIS_ATOM **b) |
void | bt_sort_rw (BACKTRELLIS *bt) |
TRELLIS_ATOM * | bt_binsearch_atom (BACKTRELLIS *bt, int t, WORD_ID wkey) |
単語トレリスの保存・参照
第1パスの結果を単語トレリスとして保存し,第2パスで参照するための関数群 です.Julius では,第1パスで探索中に終端が生き残っていた単語は全て, その始終端フレーム,始端からの累積尤度および単語履歴とともに 保存され,第2パスでその集合の中から再探索が行われます. この第1パスでフレームごとに残される単語情報のことを「トレリス単語」, トレリス単語の集合全体を「単語トレリス」と呼びます.
トレリス単語は,第1パスの認識中に各フレームごとに保存されます. 第1パス終了後,トレリス全体の整形・再配置とフレームごとのインデックス を作成します.
第2パスでは,この単語トレリスを参照して 各時間(入力フレーム)における展開可能な仮説のリストを得るとともに, その第1パスでの(後ろ向きの)累積尤度を,第2パスにおける仮説の未展開部分の 推定スコアとして用います.このしくみから,単語トレリスは「バックトレリス」 とも呼ばれています.
backtrellis.c で定義されています。
void bt_init | ( | BACKTRELLIS * | bt | ) |
単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)
bt | [in] 初期化する 単語トレリス 構造体へのポインタ |
backtrellis.c の 74 行で定義されています。
参照元 final_fusion().
void bt_prepare | ( | BACKTRELLIS * | bt | ) |
次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).
bt | [in] 対象とする単語トレリス構造体へのポインタ |
backtrellis.c の 96 行で定義されています。
void bt_store | ( | BACKTRELLIS * | bt, | |
TRELLIS_ATOM * | tatom | |||
) |
第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.
ここでは格納だけ行い,第1パス終了後に bt_relocate_rw() で フレーム順に再配置する.
bt | [i/o] トレリス単語を格納するバックトレリス構造体 | |
tatom | [in] 出現したトレリス単語へのポインタ |
backtrellis.c の 134 行で定義されています。
void bt_relocate_rw | ( | BACKTRELLIS * | bt | ) |
第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.
bt | [i/o] 単語トレリス構造体 |
backtrellis.c の 161 行で定義されています。
参照元 finalize_1st_pass().
void bt_discount_pescore | ( | WCHMM_INFO * | wchmm, | |
BACKTRELLIS * | bt, | |||
HTK_Param * | param | |||
) |
第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.第2パスでは,仮説接続時には 接続仮説を考慮して接続点の状態の尤度が再計算される.
wchmm | [in] 木構造化辞書 | |
bt | [in] 単語トレリス構造体 | |
param | [in] 入力パラメータ情報 |
backtrellis.c の 307 行で定義されています。
static int compare_wid | ( | TRELLIS_ATOM ** | a, | |
TRELLIS_ATOM ** | b | |||
) | [static] |
bt_sort_rw()用のqsortコールバック.
a | [in] 要素1 | |
b | [in] 要素2 |
backtrellis.c の 356 行で定義されています。
参照元 bt_sort_rw().
void bt_sort_rw | ( | BACKTRELLIS * | bt | ) |
bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.
bt | [i/o] 単語トレリス構造体 |
backtrellis.c の 382 行で定義されています。
参照元 finalize_1st_pass().
TRELLIS_ATOM* bt_binsearch_atom | ( | BACKTRELLIS * | bt, | |
int | t, | |||
WORD_ID | wkey | |||
) |
単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.
bt | [in] 単語トレリス構造体 | |
t | [in] 検索する終端時刻(フレーム) | |
wkey | [in] 検索する単語の単語ID |
backtrellis.c の 420 行で定義されています。
参照元 next_word(), と start_word().