Julius 4.2
関数
libjulius/include/julius/extern.h

外部関数宣言 [詳細]

#include "search.h"

ソースコードを見る。

関数

void bt_init (BACKTRELLIS *bt)
 単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)
void bt_prepare (BACKTRELLIS *bt)
 次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).
void bt_free (BACKTRELLIS *bt)
 単語トレリスのメモリを開放する.
TRELLIS_ATOMbt_new (BACKTRELLIS *bt)
 トレリス単語を新たに割り付ける.
void bt_store (BACKTRELLIS *bt, TRELLIS_ATOM *aotm)
 第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.
void bt_relocate_rw (BACKTRELLIS *bt)
 第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.
void set_terminal_words (RecogProcess *r)
 逐次デコーディング時, 第1パス終了後に, 入力セグメントの両端に残った最尤単語仮説を取り出し, それらを 第2パスにおける初期/最終仮説としてセットする.
void bt_discount_pescore (WCHMM_INFO *wchmm, BACKTRELLIS *bt, HTK_Param *param)
 第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.
void bt_discount_lm (BACKTRELLIS *bt)
 第2パスのために2-gramスコアをトレリス上の単語から差し引く.
void bt_sort_rw (BACKTRELLIS *bt)
 bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.
TRELLIS_ATOMbt_binsearch_atom (BACKTRELLIS *bt, int time, WORD_ID wkey)
 単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.
void make_iwcache_index (WCHMM_INFO *wchmm)
void adjust_sc_index (WCHMM_INFO *wchmm)
 構築された factoring 情報を multipath 用に調整する.
void make_successor_list (WCHMM_INFO *wchmm)
 木構造化辞書上の全ノードに successor list を構築するメイン関数
void make_successor_list_unigram_factoring (WCHMM_INFO *wchmm)
void max_successor_cache_init (WCHMM_INFO *wchmm)
 木構造化辞書用の factoring キャッシュをメモリ割り付けして初期化する.
void max_successor_cache_free (WCHMM_INFO *wchmm)
 factoring 用 cache のメモリ領域を全て解放する.
LOGPROB max_successor_prob (WCHMM_INFO *wchmm, WORD_ID lastword, int node)
 単語内のあるノードについて factoring 値を計算する.
LOGPROBmax_successor_prob_iw (WCHMM_INFO *wchmm, WORD_ID lastword)
 単語間の factoring 値のリストを返す.
void calc_all_unigram_factoring_values (WCHMM_INFO *wchmm)
boolean can_succeed (WCHMM_INFO *wchmm, WORD_ID lastword, int node)
 文法による単語内決定的 factoring
boolean get_back_trellis_init (HTK_Param *param, RecogProcess *r)
 フレーム同期ビーム探索の初期化
boolean get_back_trellis_proceed (int t, HTK_Param *param, RecogProcess *r, boolean final_for_multipath)
 フレーム同期ビーム探索を進行する.
void get_back_trellis_end (HTK_Param *param, RecogProcess *r)
 フレーム同期ビーム探索:最終フレーム
void fsbeam_free (FSBeam *d)
 第1パスのためのワークエリア領域を開放する
void finalize_1st_pass (RecogProcess *r, int len)
 第1パスの終了処理を行う.
int decode_proceed (Recog *recog)
 全ての認識処理インスタンス処理を1フレーム分進める.
void decode_end_segmented (Recog *recog)
 第1パスの終了処理(セグメント時)
void decode_end (Recog *recog)
 第1パスの終了処理
boolean get_back_trellis (Recog *recog)
 フレーム同期ビーム探索メイン関数(バッチ処理用)
boolean is_sil (WORD_ID w, RecogProcess *r)
 ショートポーズ単語かどうか判定
void mfcc_copy_to_rest_and_shrink (MFCCCalc *mfcc, int start, int end)
 セグメンテーション時に入力パラメータを分割する.
void mfcc_shrink (MFCCCalc *mfcc, int p)
 パラメータを短くする.
boolean detect_end_of_segment (RecogProcess *r, int time)
 発話区間終了の検知
void finalize_segment (Recog *recog)
 逐次デコーディングのための第1パス終了時の処理
void spsegment_init (Recog *recog)
boolean spsegment_trigger_sync (Recog *recog)
boolean spsegment_need_restart (Recog *recog, int *rf_ret, boolean *repro_ret)
 巻き戻しと認識再開の必要性をチェックする.
void spsegment_restart_mfccs (Recog *recog, int rewind_frame, boolean reprocess)
 巻き戻し処理
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)
 トライフォンエラーメッセージ:左コンテキスト用
int ngram_firstwords (NEXTWORD **nw, int peseqlen, int maxnw, RecogProcess *r)
 初期単語仮説集合を求める.
int ngram_nextwords (NODE *hypo, NEXTWORD **nw, int maxnw, RecogProcess *r)
 次単語仮説集合を返す.
boolean ngram_acceptable (NODE *hypo, RecogProcess *r)
 受理判定
int dfa_firstwords (NEXTWORD **nw, int peseqlen, int maxnw, RecogProcess *r)
 文法にしたがって,文頭に接続しうる単語を最初の予測単語群として返す.
int dfa_nextwords (NODE *hypo, NEXTWORD **nw, int maxnw, RecogProcess *r)
 部分文仮説に対して,文法に従って次に接続しうる単語群を返す.
boolean dfa_acceptable (NODE *hypo, RecogProcess *r)
 部分文仮説が文法上文として最終(受理可能)状態にあるかどうかを返す.
boolean dfa_look_around (NEXTWORD *nword, NODE *hypo, RecogProcess *r)
 次単語候補がその推定された接続予測点の前後の単語トレリス上に あるかどうかをチェックし,もしあればそのトレリス単語へのポインタをセット する.
void segment_set_last_nword (NODE *hypo, RecogProcess *r)
 認識結果から,次の入力区間の認識を開始する際の初期単語履歴をセットする.
void pass2_finalize_on_no_result (RecogProcess *r, boolean use_1pass_as_final)
 第2パスの解が得られない場合の終了処理
void wchmm_fbs (HTK_Param *param, RecogProcess *r, int cate_bgn, int cate_num)
 第2探索パスであるスタックデコーディングを行うメイン関数
void wchmm_fbs_prepare (RecogProcess *r)
 第2パス用のワークエリアを確保・初期化する.
void wchmm_fbs_free (RecogProcess *r)
 第2パス用のワークエリアを解放する.
void clear_stocker (StackDecode *s)
 リサイクル用ノード格納庫を空にする.
void free_node (NODE *node)
 仮説ノードの利用を終了してリサイクル用にストックする
NODEcpy_node (NODE *dst, NODE *src)
 仮説をコピーする.
NODEnewnode (RecogProcess *r)
 新たな仮説ノードを割り付ける.
void malloc_wordtrellis (RecogProcess *r)
 1単語分のトレリス計算用のワークエリアを確保.
void free_wordtrellis (StackDecode *dwrk)
 1単語分のトレリス計算用のワークエアリアを解放
void scan_word (NODE *now, HTK_Param *param, RecogProcess *r)
 最後の1単語の前向きトレリスを計算して,文仮説の前向き尤度を更新する.
void next_word (NODE *now, NODE *newParam, NEXTWORD *nword, HTK_Param *param, RecogProcess *r)
 展開元仮説に次単語を接続して新しい仮説を生成する.
void start_word (NODE *newParam, NEXTWORD *nword, HTK_Param *param, RecogProcess *r)
 与えられた単語から初期仮説を生成する.
void last_next_word (NODE *now, NODE *newParam, HTK_Param *param, RecogProcess *r)
 終端処理:終端まで達した文仮説の最終的なスコアをセットする.
boolean wav2mfcc (SP16 speech[], int speechlen, Recog *recog)
 音声波形データから MFCC パラメータを抽出する.
void j_put_header (FILE *stream)
 ヘッダを出力する.
void j_put_version (FILE *stream)
 バージョン情報を出力する
void j_put_compile_defs (FILE *stream)
 コンパイル時の設定を出力する.
void j_put_library_defs (FILE *stream)
 ライブラリの設定を出力する
WCHMM_INFOwchmm_new ()
 木構造化辞書構造体を新規に割り付ける.
void wchmm_free (WCHMM_INFO *w)
 木構造化辞書およびその内部の割付メモリを全て解放する.
void print_wchmm_info (WCHMM_INFO *wchmm)
 木構造化辞書のサイズなどの情報を標準出力に出力する.
boolean build_wchmm (WCHMM_INFO *wchmm, JCONF_LM *lmconf)
 与えられた単語辞書と言語モデルから木構造化辞書を構築する.
boolean build_wchmm2 (WCHMM_INFO *wchmm, JCONF_LM *lmconf)
 与えられた単語辞書と言語モデルから木構造化辞書を構築する.
void wchmm_check_interactive (WCHMM_INFO *wchmm)
 木構造化辞書の構造を起動時に対話的にチェックする際のコマンドループ
void check_wchmm (WCHMM_INFO *wchmm)
 木構造化辞書内のリンク情報の一貫性をチェックする(内部デバッグ用)
boolean RealTimeInit (Recog *recog)
 第1パス平行認識処理の初期化.
boolean RealTimePipeLinePrepare (Recog *recog)
 第1パス平行認識処理の準備
boolean RealTimeMFCC (MFCCCalc *mfcc, SP16 *window, int windowlen)
 音声波形からパラメータベクトルを計算する.
int RealTimePipeLine (SP16 *Speech, int len, Recog *recog)
 第1パス平行音声認識処理のメイン
int RealTimeResume (Recog *recog)
 セグメントの認識再開処理
boolean RealTimeParam (Recog *recog)
 第1パス平行認識処理の終了処理を行う.
void RealTimeCMNUpdate (MFCCCalc *mfcc, Recog *recog)
 ケプストラム平均の更新.
void RealTimeTerminate (Recog *recog)
 第1パス平行認識処理を中断する.
void realbeam_free (Recog *recog)
 第1パス並行処理のためのワークエリアを開放する
int mfcc_go (Recog *recog, int(*ad_check)(Recog *))
void word_align (WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 単語ごとの forced alignment を行う.
void phoneme_align (WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 音素ごとの forced alignment を行う.
void state_align (WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 HMM状態ごとの forced alignment を行う.
void word_rev_align (WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 単語ごとの forced alignment を行う(単語が逆順で与えられる場合)
void phoneme_rev_align (WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 音素ごとの forced alignment を行う(単語が逆順で与えられる場合)
void state_rev_align (WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r)
 HMM状態ごとの forced alignment を行う(単語が逆順で与えられる場合)
void do_alignment_all (RecogProcess *r, HTK_Param *param)
 認識結果に対して必要なアラインメントを全て実行する.
void opt_terminate ()
void j_output_argument_help (FILE *fp)
 ヘルプを表示する.
char * filepath (char *filename, char *dirname)
 相対パスをフルパスに変換する.
boolean opt_parse (int argc, char *argv[], char *cwd, Jconf *jconf)
 オプション解析.
void opt_release (Jconf *jconf)
 オプション関連のメモリ領域を解放する.
void get_dirname (char *path)
 ファイルのパス名からディレクトリ名を抜き出す.
boolean config_string_parse (char *str, Jconf *jconf)
 オプション指定を含む文字列を解析して値をセットする.
boolean config_file_parse (char *conffile, Jconf *jconf)
 jconf 設定ファイルを読み込んで解析し,対応するオプションを設定する.
boolean checkpath (char *filename)
 ファイルが存在して読み込み可能かチェックする.
boolean j_jconf_finalize (Jconf *jconf)
 jconf設定パラメータを最終的に決定する
int set_beam_width (WCHMM_INFO *wchmm, int specified)
 第1パスのビーム幅を決定する.
void print_jconf_overview (Jconf *jconf)
 全体設定パラメータ内のモジュール構成の概要をログに出力する.
void print_engine_info (Recog *recog)
 エンジンインスタンスの全情報をログに出力する.
void system_bootup (Recog *recog)
boolean adin_initialize (Recog *recog)
 設定パラメータに従い音声入力デバイスをセットアップする.
boolean j_load_am (Recog *recog, JCONF_AM *amconf)
 音響モデルを読み込む.
boolean j_load_lm (Recog *recog, JCONF_LM *lmconf)
 言語モデルを読み込む.
boolean j_load_all (Recog *recog, Jconf *jconf)
 全てのモデルを読み込み,認識の準備を行なう.
boolean j_launch_recognition_instance (Recog *recog, JCONF_SEARCH *sconf)
 認識処理インスタンスを立ち上げる.
boolean j_final_fusion (Recog *recog)
 全てのロードされたモデルと設定からエンジンインスタンスを 最終構成する.
void create_mfcc_calc_instances (Recog *recog)
 全てのAM処理インスタンスおよびGMM用に,MFCC計算インスタンスを生成する.
void hmm_check (RecogProcess *r)
 コマンドライン上でトライフォンのチェックを行なうモード ("-check triphone").
void visual_init (Recog *recog)
void visual_show (BACKTRELLIS *bt)
void visual2_init (int maxhypo)
void visual2_popped (NODE *n, int popctr)
void visual2_next_word (NODE *next, NODE *prev, int popctr)
void visual2_best (NODE *now, WORD_INFO *winfo)
boolean gmm_init (Recog *recog)
 GMMの計算のための初期化.
void gmm_prepare (Recog *recog)
 GMM計算のための準備を行なう.
void gmm_proceed (Recog *recog)
 与えられた入力ベクトル列上のあるフレームについて,全GMMのスコアを計算し, 計算結果を gmm_score に積算する.
void gmm_end (Recog *recog)
 GMMの計算を終了し,結果を出力する.
boolean gmm_valid_input (Recog *recog)
 GMMの識別結果,最後の入力が音声入力として有効であったか 無効であったかを返す.
void gmm_free (Recog *recog)
 GMM計算に用いたワークエリアを開放する.
void wordgraph_init (WCHMM_INFO *wchmm)
 Define if you want debugging output for graph generation.
void wordgraph_free (WordGraph *wg)
 あるグラフ単語のメモリ領域を解放する.
void put_wordgraph (FILE *fp, WordGraph *wg, WORD_INFO *winfo)
 グラフ単語の情報をテキストで出力する.
void wordgraph_dump (FILE *fp, WordGraph *root, WORD_INFO *winfo)
 生成された単語グラフ中の全単語をテキスト出力する.
WordGraphwordgraph_assign (WORD_ID wid, WORD_ID wid_left, WORD_ID wid_right, int leftframe, int rightframe, LOGPROB fscore_head, LOGPROB fscore_tail, LOGPROB gscore_head, LOGPROB gscore_tail, LOGPROB lscore, LOGPROB cmscore, RecogProcess *r)
 新たな単語グラフ候補を生成して返す.
boolean wordgraph_check_and_add_rightword (WordGraph *wg, WordGraph *right, LOGPROB lscore)
 右コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.
boolean wordgraph_check_and_add_leftword (WordGraph *wg, WordGraph *left, LOGPROB lscore)
 左コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.
void wordgraph_save (WordGraph *wg, WordGraph *right, WordGraph **root)
 グラフ単語候補を単語グラフの一部として確定する.
WordGraphwordgraph_check_merge (WordGraph *now, WordGraph **root, WORD_ID next_wid, boolean *merged_p, JCONF_SEARCH *jconf)
WordGraphwordgraph_dup (WordGraph *wg, WordGraph **root)
void wordgraph_purge_leaf_nodes (WordGraph **rootp, RecogProcess *r)
 グラフ後処理その1:初期単語グラフの抽出.
void wordgraph_depth_cut (WordGraph **rootp, RecogProcess *r)
 グラフ後処理その1.
void wordgraph_adjust_boundary (WordGraph **rootp, RecogProcess *r)
 グラフ後処理その2:単語境界情報の調整.
void wordgraph_clean (WordGraph **rootp)
 単語グラフ内の全単語を全て解放する.
void wordgraph_compaction_thesame (WordGraph **rootp)
 グラフ後処理その3:単語の束ね(完全同一)
void wordgraph_compaction_exacttime (WordGraph **rootp, RecogProcess *r)
 グラフ後処理その4:単語の束ね(区間同一)
void wordgraph_compaction_neighbor (WordGraph **rootp, RecogProcess *r)
 グラフ後処理その5:単語の束ね(近傍区間)
int wordgraph_sort_and_annotate_id (WordGraph **rootp, RecogProcess *r)
 単語グラフ内の全単語を開始時間順にソートし,通し番号をつける.
void wordgraph_check_coherence (WordGraph *rootp, RecogProcess *r)
 デバッグ用:単語グラフの整合性をチェックする.
void graph_forward_backward (WordGraph *root, RecogProcess *r)
 生成されたラティス上において,forward-backward アルゴリズムにより 信頼度を計算する.
void jconf_set_default_values (Jconf *j)
 パラメータ構造体 Jconf に初期値を代入する.
void jconf_set_default_values_am (JCONF_AM *j)
 AMパラメータ構造体に初期値を代入する.
void jconf_set_default_values_lm (JCONF_LM *j)
 LMパラメータ構造体に初期値を代入する.
void jconf_set_default_values_search (JCONF_SEARCH *j)
 探索(SEARCH)パラメータ構造体に初期値を代入する.
int multigram_add (DFA_INFO *dfa, WORD_INFO *winfo, char *name, PROCESS_LM *lm)
 新たな文法を,文法リストに追加する.
boolean multigram_delete (int gid, PROCESS_LM *lm)
 文法を削除する.
void multigram_delete_all (PROCESS_LM *lm)
 すべての文法を次回更新時に削除するようマークする.
boolean multigram_update (PROCESS_LM *lm)
 グローバル文法の更新
boolean multigram_build (RecogProcess *r)
 グローバル文法を調べ,必要があれば木構造化辞書を(再)構築する.
int multigram_activate (int gid, PROCESS_LM *lm)
 文法を有効化する.
int multigram_deactivate (int gid, PROCESS_LM *lm)
 文法を無効化する.
boolean multigram_load_all_gramlist (PROCESS_LM *lm)
 起動時に指定されたすべての文法をロードする.
int multigram_get_gram_from_category (int category, PROCESS_LM *lm)
 単語カテゴリの属する文法を得る.
int multigram_get_gram_from_wid (WORD_ID wid, PROCESS_LM *lm)
 単語IDから属する文法を得る.
int multigram_get_all_num (PROCESS_LM *lm)
 現在ある文法の数を得る(active/inactiveとも).
void multigram_free_all (MULTIGRAM *root)
 保持している文法をすべて解放する。
int multigram_get_id_by_name (PROCESS_LM *lm, char *gramname)
 LM中の文法を名前で検索し,その文法IDを返す.
MULTIGRAMmultigram_get_grammar_by_name (PROCESS_LM *lm, char *gramname)
 LM中の文法を名前で検索する.
MULTIGRAMmultigram_get_grammar_by_id (PROCESS_LM *lm, unsigned short id)
 LM中の文法を ID 番号で検索する.
boolean multigram_add_words_to_grammar (PROCESS_LM *lm, MULTIGRAM *m, WORD_INFO *winfo)
 単語集合を文法に追加する.
boolean multigram_add_words_to_grammar_by_name (PROCESS_LM *lm, char *gramname, WORD_INFO *winfo)
 名前で指定された文法に単語集合を追加する.
boolean multigram_add_words_to_grammar_by_id (PROCESS_LM *lm, unsigned short id, WORD_INFO *winfo)
 番号で指定された文法に単語集合を追加する.
void multigram_add_gramlist (char *dfafile, char *dictfile, JCONF_LM *j, int lmvar)
 起動時読み込みリストに文法を追加する.
void multigram_remove_gramlist (JCONF_LM *j)
 起動時読み込みリストを消す.
boolean multigram_add_prefix_list (char *prefix_list, char *cwd, JCONF_LM *j, int lmvar)
 プレフィックスから複数の文法を起動時読み込みリストに追加する.
boolean multigram_add_prefix_filelist (char *listfile, JCONF_LM *j, int lmvar)
 リストファイルを読み込み複数文法を起動時読み込みリストに追加する.
boolean adin_setup_param (ADIn *adin, Jconf *jconf)
 音声切り出し用各種パラメータをセット
boolean adin_thread_create (Recog *recog)
 バッファを初期化して A/D-in スレッドを開始する.
boolean adin_thread_cancel (Recog *recog)
 A/D-in スレッドを終了する
int adin_go (int(*ad_process)(SP16 *, int, Recog *), int(*ad_check)(Recog *), Recog *recog)
 入力処理を行うトップ関数
boolean adin_standby (ADIn *a, int freq, void *arg)
 デバイス依存の初期化関数を呼び出す.
boolean adin_begin (ADIn *a, char *file_or_dev_name)
 音の取り込みを開始するデバイス依存の関数を呼び出す.
boolean adin_end (ADIn *a)
 音の取り込みを終了するデバイス依存の関数を呼び出す.
void adin_free_param (Recog *recog)
 音取り込み用ワークエリアのメモリを開放する.
CN_CLUSTERconfnet_create (WordGraph *root, RecogProcess *r)
 Create a confusion network from word graph.
void graph_make_order (WordGraph *root, RecogProcess *r)
 Extract order relationship between any two words in the word graph for confusion network generation.
void graph_free_order (RecogProcess *r)
 Free the order relation data.
void cn_free_all (CN_CLUSTER **croot)
 Free all cluster holders.
void callback_init (Recog *recog)
 コールバック管理エリアの初期化
int callback_add (Recog *recog, int code, void(*func)(Recog *recog, void *data), void *data)
 関数をコールバックレジストリに登録する.
int callback_add_adin (Recog *recog, int code, void(*func)(Recog *recog, SP16 *buf, int len, void *data), void *data)
 関数をA/D-inタイプのコールバックレジストリに登録する.
void callback_exec (int code, Recog *recog)
 コールバックレジストリに登録されている関数を全て実行する.
void callback_exec_adin (int code, Recog *recog, SP16 *buf, int len)
 A/D-in タイプのコールバックに登録された関数を全て実行する.
boolean callback_exist (Recog *recog, int code)
 コールバックレジストリに1つでも関数が登録されたかどうかを返す.
boolean callback_delete (Recog *recog, int id)
 コールバックから関数を削除する.
int adin_cut_callback_store_buffer (SP16 *now, int len, Recog *recog)
 検出された音をバッファに保存する adin_go() コールバック
SentenceAlignresult_align_new ()
 アラインメント結果の格納場所を確保
void result_align_free (SentenceAlign *a)
 アラインメント結果の格納場所を確保
void result_sentence_malloc (RecogProcess *r, int num)
 認識結果の格納場所を確保する.
void result_sentence_free (RecogProcess *r)
 認識結果の格納場所を解放する.
void clear_result (RecogProcess *r)
 認識結果の格納場所を全てクリアする.
int plugin_get_id (char *name)
void plugin_init ()
boolean plugin_load_file (char *file)
boolean plugin_load_dir (char *dir)
void plugin_load_dirs (char *dirent)
int plugin_find_optname (char *optfuncname, char *str)
FUNC_VOID plugin_get_func (int sid, char *name)
boolean plugin_exec_engine_startup (Recog *recog)
void plugin_exec_adin_captured (short *buf, int len)
void plugin_exec_adin_triggered (short *buf, int len)
void plugin_exec_vector_postprocess (VECT *vecbuf, int veclen, int nframe)
void plugin_exec_vector_postprocess_all (HTK_Param *param)
void plugin_exec_process_result (Recog *recog)
boolean mfc_module_init (MFCCCalc *mfcc, Recog *recog)
boolean mfc_module_set_header (MFCCCalc *mfcc, Recog *recog)
boolean mfc_module_standby (MFCCCalc *mfcc)
boolean mfc_module_begin (MFCCCalc *mfcc)
boolean mfc_module_end (MFCCCalc *mfcc)
int mfc_module_read (MFCCCalc *mfcc, int *new_t)
char * mfc_module_input_name (MFCCCalc *mfcc)

説明

外部関数宣言

作者:
Akinobu LEE
日付:
Mon Mar 7 23:19:14 2005
Revision:
1.18

extern.h で定義されています。


関数

void bt_init ( BACKTRELLIS bt)

単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)

引数:
bt[in] 初期化する 単語トレリス 構造体へのポインタ

backtrellis.c79 行で定義されています。

参照元 j_launch_recognition_instance().

呼出しグラフ:

void bt_prepare ( BACKTRELLIS bt)

次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).

引数:
bt[in] 対象とする単語トレリス構造体へのポインタ

backtrellis.c104 行で定義されています。

参照元 get_back_trellis_init().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_free ( BACKTRELLIS bt)

単語トレリスのメモリを開放する.

引数:
bt[out] pointer to the word trellis structure.

backtrellis.c131 行で定義されています。

参照元 j_recogprocess_free().

関数の呼び出しグラフ:

呼出しグラフ:

TRELLIS_ATOM* bt_new ( BACKTRELLIS bt)

トレリス単語を新たに割り付ける.

引数:
bt[out] pointer to the word trellis structure.
戻り値:
pointer to the newly allocated trellis word.

backtrellis.c154 行で定義されています。

参照元 save_trellis().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_store ( BACKTRELLIS bt,
TRELLIS_ATOM tatom 
)

第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.

ここでは格納だけ行い,第1パス終了後に bt_relocate_rw() で フレーム順に再配置する.

引数:
bt[i/o] トレリス単語を格納するバックトレリス構造体
tatom[in] 出現したトレリス単語へのポインタ

backtrellis.c190 行で定義されています。

参照元 save_trellis().

呼出しグラフ:

void bt_relocate_rw ( BACKTRELLIS bt)

第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.

引数:
bt[i/o] 単語トレリス構造体

backtrellis.c218 行で定義されています。

参照元 finalize_1st_pass().

関数の呼び出しグラフ:

呼出しグラフ:

void set_terminal_words ( RecogProcess r)

逐次デコーディング時, 第1パス終了後に, 入力セグメントの両端に残った最尤単語仮説を取り出し, それらを 第2パスにおける初期/最終仮説としてセットする.

引数:
r[in] 認識処理インスタンス

backtrellis.c295 行で定義されています。

参照元 finalize_segment().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_discount_pescore ( WCHMM_INFO wchmm,
BACKTRELLIS bt,
HTK_Param param 
)

第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.

第2パスでは,仮説接続時には 接続仮説を考慮して接続点の状態の尤度が再計算される.

引数:
wchmm[in] 木構造化辞書
bt[in] 単語トレリス構造体
param[in] 入力パラメータ情報

backtrellis.c367 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

void bt_discount_lm ( BACKTRELLIS bt)

第2パスのために2-gramスコアをトレリス上の単語から差し引く.

引数:
bt[in] word trellis

backtrellis.c401 行で定義されています。

参照元 j_recognize_stream_core().

呼出しグラフ:

void bt_sort_rw ( BACKTRELLIS bt)

bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.

引数:
bt[i/o] 単語トレリス構造体

backtrellis.c468 行で定義されています。

参照元 finalize_1st_pass().

関数の呼び出しグラフ:

呼出しグラフ:

TRELLIS_ATOM* bt_binsearch_atom ( BACKTRELLIS bt,
int  t,
WORD_ID  wkey 
)

単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.

引数:
bt[in] 単語トレリス構造体
t[in] 検索する終端時刻(フレーム)
wkey[in] 検索する単語の単語ID
戻り値:
見つかった場合そのトレリス単語へのポインタ,見つからなければ NULL.

backtrellis.c509 行で定義されています。

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

呼出しグラフ:

void adjust_sc_index ( WCHMM_INFO wchmm)

構築された factoring 情報を multipath 用に調整する.

factoring 情報を, モデル全体をスキップする遷移がある場合はその先の音素へコピーする. また,(出力を持たない)文頭文法ノードに単語先頭ノードからコピーする.

引数:
wchmm[in] 木構造化辞書

factoring_sub.c493 行で定義されています。

参照元 build_wchmm(), と build_wchmm2().

関数の呼び出しグラフ:

呼出しグラフ:

void make_successor_list ( WCHMM_INFO wchmm)

木構造化辞書上の全ノードに successor list を構築するメイン関数

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

factoring_sub.c187 行で定義されています。

参照元 build_wchmm(), と build_wchmm2().

関数の呼び出しグラフ:

呼出しグラフ:

void max_successor_cache_init ( WCHMM_INFO wchmm)

木構造化辞書用の factoring キャッシュをメモリ割り付けして初期化する.

この関数はプログラム開始時に一度だけ呼ばれる.

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

factoring_sub.c587 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

void max_successor_cache_free ( WCHMM_INFO wchmm)

factoring 用 cache のメモリ領域を全て解放する.

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

factoring_sub.c666 行で定義されています。

参照元 j_recogprocess_free().

関数の呼び出しグラフ:

呼出しグラフ:

LOGPROB max_successor_prob ( WCHMM_INFO wchmm,
WORD_ID  lastword,
int  node 
)

単語内のあるノードについて factoring 値を計算する.

1-gram factoring で固定factoring値がある場合はその値が即座に返される. 他の場合は,そのノードのサブツリー内の単語の 2-gram確率(の最大値)が 計算される.

単語内 factoring キャッシュが考慮される. すなわち各ノードについて 直前単語が前回アクセスされたときと同じであれば, 前回の値が返され,そうでなければ値を計算し,キャッシュが更新される.

引数:
wchmm[in] 木構造化辞書
lastword[in] 直前単語のID
node[in] ノード番号
戻り値:
言語モデルスコア

factoring_sub.c943 行で定義されています。

参照元 beam_intra_word_core(), と init_nodescore().

関数の呼び出しグラフ:

呼出しグラフ:

LOGPROB* max_successor_prob_iw ( WCHMM_INFO wchmm,
WORD_ID  lastword 
)

単語間の factoring 値のリストを返す.

与えられた直前単語に対して,factoring値を計算すべき全ての単語先頭への factoring 値を計算し,そのリストを返す. このfactoring値は 直前単語ごとにリスト単位でキャッシュされる. すなわち,その直前単語が それまでに一度でも直前単語として出現していた場合,そのリストをそのまま 返す.

引数:
wchmm[in] 木構造化辞書
lastword[in] 直前単語
戻り値:
全単語先頭ノードへの factoring スコアのリスト

factoring_sub.c1050 行で定義されています。

参照元 beam_inter_word().

関数の呼び出しグラフ:

呼出しグラフ:

boolean can_succeed ( WCHMM_INFO wchmm,
WORD_ID  lastword,
int  node 
)

文法による単語内決定的 factoring

Julian において CATEGORY_TREE が定義されているとき(デフォルト), 木構造化辞書はカテゴリ単位(すなわち構文制約の記述単位)で構築されるため, 第1パスでの言語モデルであるカテゴリ対制約は単語の始終端で適用できる.

この CATEGORY_TREE が定義されていない場合,木構造化辞書は 辞書全体で単一の木が作られるため,カテゴリ対制約は N-gram (Julius) と 同様に単語内で factoring と同様の機構で適用される必要がある.

この関数は CATEGORY_TREE が定義されていないときに,上記の factoring (決定的 factoring と呼ばれる)を行なうために提供されている.

引数:
wchmm[in] 木構造化辞書
lastword[in] 直前単語
node[in] ノード番号
戻り値:
カテゴリ制約上その枝への遷移が許されれば TRUE, 不可能であれば FALSE

factoring_sub.c1196 行で定義されています。

参照元 beam_inter_word(), と beam_intra_word_core().

関数の呼び出しグラフ:

呼出しグラフ:

boolean get_back_trellis_init ( HTK_Param param,
RecogProcess r 
)

フレーム同期ビーム探索の初期化

ここではビームサーチに用いるワークエリアの確保と初期化を行う. 初期化説の生成は init_nodescore() で行われる.

引数:
param[in] 入力ベクトル列情報 (最初の1フレーム目のみ用いられる)
r[i/o] 音声認識処理インスタンス

beam.c1791 行で定義されています。

参照元 decode_proceed().

関数の呼び出しグラフ:

呼出しグラフ:

boolean get_back_trellis_proceed ( int  t,
HTK_Param param,
RecogProcess r,
boolean  final_for_multipath 
)

フレーム同期ビーム探索を進行する.

与えられた1フレーム分,探索処理を進める. また,フレーム内に残った 単語を単語トレリス構造体に保存する. ショートポーズセグメンテーション時 はセグメント終了の判断もこの中から呼び出される.

引数:
t[in] 現在のフレーム (このフレームについて計算が進められる)
param[in] 入力ベクトル列構造体 (t 番目のフレームのみ用いられる)
r[in] 認識処理インスタンス
final_for_multipath[i/o] 入力最後のフレームを処理するときに TRUE
戻り値:
TRUE (通常どおり終了) あるいは FALSE (ここで探索を中断する 場合: 逐次デコーディング時にショートポーズ区間を検出したか,ビーム内の アクティブノード数が0になったとき)

< Local workarea to hold the generated trellis word

< Temporal work to hold the current node number on the lexicon tree

beam.c2606 行で定義されています。

参照元 decode_proceed(), と get_back_trellis_end().

関数の呼び出しグラフ:

呼出しグラフ:

void get_back_trellis_end ( HTK_Param param,
RecogProcess r 
)

フレーム同期ビーム探索:最終フレーム

第1パスのフレーム同期ビーム探索を終了するために, (param->samplenum -1) の最終フレームに対する終了処理を行う.

引数:
param[in] 入力ベクトル列 (param->samplenum の値のみ用いられる)
r[in] 音声認識処理インスタンス

beam.c2995 行で定義されています。

参照元 decode_end().

関数の呼び出しグラフ:

呼出しグラフ:

void fsbeam_free ( FSBeam d)

第1パスのためのワークエリア領域を開放する

引数:
d[in] work are for 1st pass input handling

beam.c3122 行で定義されています。

参照元 j_recogprocess_free().

関数の呼び出しグラフ:

呼出しグラフ:

void finalize_1st_pass ( RecogProcess r,
int  len 
)

第1パスの終了処理を行う.

この関数は get_back_trellis_end() の直後に呼ばれ,第1パスの終了処理を 行う. 生成した単語トレリス構造体の最終的な後処理を行い第2パスで アクセス可能な形に内部を変換する. また, 仮説のバックトレースを行い第1パスのベスト仮説を出力する.

引数:
r[in] 認識処理インスタンス
len[in] 第1パスで処理された最終的なフレーム長
戻り値:
第1パスの最尤仮説の累積尤度,あるいは仮説が見つからない場合 は LOG_ZERO.

beam.c3076 行で定義されています。

参照元 decode_end(), と decode_end_segmented().

関数の呼び出しグラフ:

呼出しグラフ:

int decode_proceed ( Recog recog)

全ての認識処理インスタンス処理を1フレーム分進める.

全ての認識処理インスタンスについて,割り付けられているMFCC計算インスタンス の mfcc->f をカレントフレームとして処理を1フレーム進める.

なお,mfcc->invalid が TRUE となっている処理インスタンスの処理はスキップ される.

GMMの計算もここで呼び出される. GMM_VAD 定義時は,GMM による 発話区間開始・終了の検出がここで行われる. また,GMMの計算結果, あるいは認識処理内のショートポーズセグメンテーション判定やデバイス・外部 からの要求によりセグメンテーションが要求されたかどうかの判定も行う.

フレーム単位で呼び出されるコールバックが登録されている場合は,それらの 呼出しも行う.

引数:
recog[in] engine instance
戻り値:
0 on success, -1 on error, or 1 when an input segmentation occured/requested inside this function.

pass1.c112 行で定義されています。

参照元 get_back_trellis(), RealTimeParam(), と RealTimeResume().

関数の呼び出しグラフ:

呼出しグラフ:

void decode_end_segmented ( Recog recog)

第1パスの終了処理(セグメント時)

入力が何らかの事由によって途中でセグメントされた時に,第1パスの認識処理を 終了して次回再開するための処理を行う.

まず,各認識処理インスタンスに対して,最尤単語系列を見付け,第1パスの 認識結果として格納する. また,認識失敗・入力棄却の時はエラーステータスをそ れぞれセットする.

そして,次回の認識で,次のセグメントの認識を,検出された末尾雑音 区間から再開するために,その末尾雑音区間を切り出しておく処理を呼ぶ.

引数:
recog[in] engine instance

pass1.c372 行で定義されています。

参照元 get_back_trellis(), と RealTimeParam().

関数の呼び出しグラフ:

呼出しグラフ:

void decode_end ( Recog recog)

第1パスの終了処理

入力が最後まで処理されて終了したときに,第1パスの認識処理を 終了させる.

各認識処理インスタンスに対して,その時点での第1パスの最尤単語 系列を格納する. また,認識失敗・入力棄却の時はエラーステータスをそ れぞれセットする.

引数:
recog[in] engine instance

pass1.c450 行で定義されています。

参照元 get_back_trellis(), RealTimeParam(), と RealTimeTerminate().

関数の呼び出しグラフ:

呼出しグラフ:

boolean get_back_trellis ( Recog recog)

フレーム同期ビーム探索メイン関数(バッチ処理用)

与えられた入力ベクトル列に対して第1パス(フレーム同期ビーム探索)を 行い,その結果を出力する. また全フレームに渡る単語終端を,第2パス のために単語トレリス構造体に格納する.

この関数は入力ベクトル列があらかじめ得られている場合に用いられる. 第1パスが入力と並列して実行されるオンライン認識の場合, この関数は用いられず,代わりにこのファイルで定義されている各サブ関数が 直接 realtime-1stpass.c 内から呼ばれる.

引数:
recog[in] エンジンインスタンス

pass1.c602 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

boolean is_sil ( WORD_ID  w,
RecogProcess r 
)

ショートポーズ単語かどうか判定

与えられた単語がショートポーズ単語であるかどうか調べる.

引数:
w[in] 単語ID
r[in] 音声認識処理インスタンス
戻り値:
ショートポーズ単語であれば TRUE,そうでなければ FALSE.

spsegment.c98 行で定義されています。

参照元 detect_end_of_segment(), find_1pass_result(), j_launch_recognition_instance(), と segment_set_last_nword().

呼出しグラフ:

void mfcc_copy_to_rest_and_shrink ( MFCCCalc mfcc,
int  start,
int  end 
)

セグメンテーション時に入力パラメータを分割する.

残りのサンプル(現在のフレームから終わりまで)を rest_param に コピーし,元の param を短くする. [start...param->samplenum] が rest_param にコピーされ,元の param には [0...end] が残る.

引数:
mfcc[i/o] MFCC calculation instance
start[in] copy start frame
end[in] original end frame

spsegment.c154 行で定義されています。

参照元 finalize_segment().

関数の呼び出しグラフ:

呼出しグラフ:

void mfcc_shrink ( MFCCCalc mfcc,
int  p 
)

パラメータを短くする.

最初の (p-1) フレームを消して,[p..samplenum] のサンプルを最初に詰める.

引数:
mfcc[i/o] MFCC Calculation instance
p[in] frame point to remain

spsegment.c194 行で定義されています。

参照元 spsegment_restart_mfccs().

呼出しグラフ:

boolean detect_end_of_segment ( RecogProcess r,
int  time 
)

発話区間終了の検知

ショートポーズセグメンテーション指定時, 発話区間の終了を検出する. 無音単語が連続して最尤候補となるフレーム数を カウントし,一定時間持続後にふたたび音声がトリガした時点で入力を 区切る.

SPSEGMENT_NAIST 定義時は,よりセグメント前後・間の無音時間が長い場合を 想定したデコーダベースの VAD に切り替わる. この場合,音声トリガ検出前 (r->pass1.after_triger == FALSE)では,仮説を生成しない状態で認識処理を 続ける. 音声開始を検出したら特徴量を一定長 (r->config->successive.sp_margin) 分だけ巻き戻して,通常の認識を開始する(r->pass1.after_trigger == TRUE). 通常の認識中に無音区間が長く (r->config->successive.sp_frame_duration 以上) 続いたら,そこで入力を区切る.

引数:
r[i/o] 音声認識処理インスタンス
time[in] 現在の入力フレーム
戻り値:
TRUE (このフレームでの終了を検出したら), FALSE (終了でない場合)

spsegment.c262 行で定義されています。

参照元 decode_proceed().

関数の呼び出しグラフ:

呼出しグラフ:

void finalize_segment ( Recog recog)

逐次デコーディングのための第1パス終了時の処理

逐次デコーディング使用時,この関数は finalize_1st_pass() 後に呼ばれ, そのセグメントの第1パスの終了処理を行う. 具体的には, 続く第2パスのための始終端単語のセット,および 次回デコーディングを再開するときのために,入力ベクトル列の未処理部分の コピーを rest_param に残す.

引数:
recog[in] エンジンインスタンス

spsegment.c632 行で定義されています。

参照元 decode_end(), と decode_end_segmented().

関数の呼び出しグラフ:

呼出しグラフ:

boolean spsegment_need_restart ( Recog recog,
int *  rf_ret,
boolean repro_ret 
)

巻き戻しと認識再開の必要性をチェックする.

音声認識処理において巻き戻しが必要がどうか調べ,必要な場合は フレーム数と,巻き戻した後に巻戻し分の認識処理を行うかどうかを返す.

引数:
recog[in] engine instance
rf_ret[out] length of frame to rewind
repro_ret[out] TRUE if re-process is required after rewinding
戻り値:
TRUE if rewinding is required, or FALSE if not.

spsegment.c837 行で定義されています。

参照元 get_back_trellis().

呼出しグラフ:

void spsegment_restart_mfccs ( Recog recog,
int  rewind_frame,
boolean  reprocess 
)

巻き戻し処理

次回の入力処理の開始点を決定し,巻き戻し分パラメータを詰める. 再開指定の場合開始点はパラメータの先頭に,それ以外の場合は巻戻した 分だけ戻った位置にセットされる.

引数:
recog[i/o] engine instance
rewind_frame[in] frame length to rewind
reprocess[in] TRUE if re-processing recognition is required for the following processing

spsegment.c910 行で定義されています。

参照元 get_back_trellis().

関数の呼び出しグラフ:

呼出しグラフ:

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().

関数の呼び出しグラフ:

呼出しグラフ:

int ngram_firstwords ( NEXTWORD **  nw,
int  peseqlen,
int  maxnw,
RecogProcess r 
)

初期単語仮説集合を求める.

N-gramベースの探索では,初期仮説は単語末尾の無音単語に固定されている. ただし,ショートポーズセグメンテーション時は,第1パスで最終フレームに終端が 残った単語の中で尤度最大の単語となる.

引数:
nw[out] 次単語候補リスト(得られた初期単語仮説を格納する)
peseqlen[in] 入力フレーム長
maxnw[in] nw に格納できる単語の最大数
r[in] 認識処理インスタンス
戻り値:
nw に格納された単語候補数を返す.

ngram_decode.c496 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

int ngram_nextwords ( NODE hypo,
NEXTWORD **  nw,
int  maxnw,
RecogProcess r 
)

次単語仮説集合を返す.

与えられた部分文仮説から,次に接続しうる単語の集合を返す. 実際には, 第1パスの結果であるトレリス単語集合 bt 上で,展開元の部分文仮説の最終単語の (推定された)始端フレーム hypo->estimated_next_t の前後に存在する 単語集合を取出し,それらの N-gram 接続確率を計算して返す. 取り出された次単語仮説は,あらかじめ maxnm の長さだけ 領域が確保されている nw に格納される.

引数:
hypo[in] 展開元の文仮説
nw[out] 次単語候補リストを格納する領域へのポインタ
maxnw[in] nw の最大長
r[in] 認識処理インスタンス
戻り値:
抽出され nw に格納された次単語仮説の数を返す.

ngram_decode.c566 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

boolean ngram_acceptable ( NODE hypo,
RecogProcess r 
)

受理判定

与えられた部分文仮説が,文(すなわち探索終了)として 受理可能であるかどうかを返す. N-gram では文頭に対応する無音単語 (silhead) であれば受理する.

引数:
hypo[in] 部分文仮説
r[in] 認識処理インスタンス
戻り値:
文として受理可能であれば TRUE,不可能なら FALSE を返す.

ngram_decode.c616 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

int dfa_firstwords ( NEXTWORD **  nw,
int  peseqlen,
int  maxnw,
RecogProcess r 
)

文法にしたがって,文頭に接続しうる単語を最初の予測単語群として返す.

引数:
nw[out] 次単語集合の格納先へのポインタ
peseqlen[in] 入力フレーム長
maxnw[in] nw の許される最大長
r[in] 認識プロセスインスタンス
戻り値:
予測された単語数 (ただしエラー時は -1 を返す)

dfa_decode.c89 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

int dfa_nextwords ( NODE hypo,
NEXTWORD **  nw,
int  maxnw,
RecogProcess r 
)

部分文仮説に対して,文法に従って次に接続しうる単語群を返す.

引数:
hypo[in] 展開元の部分文仮説
nw[out] 次単語集合の格納先へのポインタ
maxnw[in] nw の許される最大長
r[in] 認識プロセスインスタンス
戻り値:
予測された単語数 (ただしエラー時は -1 を返す)

dfa_decode.c159 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

boolean dfa_acceptable ( NODE hypo,
RecogProcess r 
)

部分文仮説が文法上文として最終(受理可能)状態にあるかどうかを返す.

引数:
hypo[in] 部分文仮説
r[in] 認識プロセスインスタンス
戻り値:
受理可能状態にあるとき TRUE 受理不可能なとき FALSE

dfa_decode.c226 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

boolean dfa_look_around ( NEXTWORD nword,
NODE hypo,
RecogProcess r 
)

次単語候補がその推定された接続予測点の前後の単語トレリス上に あるかどうかをチェックし,もしあればそのトレリス単語へのポインタをセット する.

なお最尤の接続点はあとで決まるので,ここでは最適なトレリス単語 でなくてよい.

引数:
nword[i/o] 次単語候補 (対応するトレリス単語へのポインタが セットされる)
hypo[in] 展開元仮説
r[in] 認識プロセスインスタンス
戻り値:
単語トレリス上の予測位置付近に次単語が存在すれば TRUE,存在 しなければ FALSE を返す.

dfa_decode.c271 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

void segment_set_last_nword ( NODE hypo,
RecogProcess r 
)

認識結果から,次の入力区間の認識を開始する際の初期単語履歴をセットする.

透過語および仮説の重複を考慮して初期単語履歴が決定される.

引数:
hypo[in] 現在の入力区間の認識結果としての文候補
r[in] 認識処理インスタンス

search_bestfirst_main.c908 行で定義されています。

参照元 pass2_finalize_on_no_result(), と result_reorder_and_output().

関数の呼び出しグラフ:

呼出しグラフ:

void pass2_finalize_on_no_result ( RecogProcess r,
boolean  use_1pass_as_final 
)

第2パスの解が得られない場合の終了処理

第2パスが失敗した場合や第2パスが実行されない設定の場合の 認識終了処理を行う.use_1pass_as_final が TRUE のとき, 第1パスの結果を第2パスの結果としてコピーして格納し,認識成功とする. FALSE時は認識失敗とする. また,sp-segment 時は,次の認識区間用の初期仮説設定も第1パスの 結果から行う.

引数:
r[in] 認識処理インスタンス
use_1pass_as_final[in] TRUE 時第1パスの結果を第2パス結果に格納する

search_bestfirst_main.c1150 行で定義されています。

参照元 j_recognize_stream_core(), と wchmm_fbs().

void wchmm_fbs ( HTK_Param param,
RecogProcess r,
int  cate_bgn,
int  cate_num 
)

第2探索パスであるスタックデコーディングを行うメイン関数

引数のうち cate_bgn, cate_num は単語N-gramでは無視される.

引数:
param[in] 入力パラメータベクトル列
r[i/o] 認識処理インスタンス
cate_bgn[in] 展開対象とすべきカテゴリの開始番号
cate_num[in] 展開対象とすべきカテゴリの数

search_bestfirst_main.c1229 行で定義されています。

参照元 j_recognize_stream_core().

呼出しグラフ:

void wchmm_fbs_prepare ( RecogProcess r)

第2パス用のワークエリアを確保・初期化する.

ここで確保されるのは認識・パラメータに依らない値のみ.

引数:
r[i/o] 認識処理インスタンス

search_bestfirst_main.c2288 行で定義されています。

参照元 j_launch_recognition_instance().

void wchmm_fbs_free ( RecogProcess r)

第2パス用のワークエリアを解放する.

ここで解放されるのは認識・パラメータに依らない値のみ.

引数:
r[i/o] 認識処理インスタンス

search_bestfirst_main.c2330 行で定義されています。

参照元 j_recogprocess_free().

void clear_stocker ( StackDecode s)

リサイクル用ノード格納庫を空にする.

引数:
s[in] stack decoding work area

search_bestfirst_v1.c206 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void free_node ( NODE node)

仮説ノードの利用を終了してリサイクル用にストックする

引数:
node[in] 仮説ノード

search_bestfirst_v1.c170 行で定義されています。

参照元 free_all_nodes(), pass2_finalize_on_no_result(), put_all_in_stack(), put_to_stack(), result_reorder_and_output(), と wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

NODE* cpy_node ( NODE dst,
NODE src 
)

仮説をコピーする.

引数:
dst[out] コピー先の仮説
src[in] コピー元の仮説
戻り値:
dst を返す.

search_bestfirst_v1.c247 行で定義されています。

参照元 last_next_word(), と wchmm_fbs().

呼出しグラフ:

NODE* newnode ( RecogProcess r)

新たな仮説ノードを割り付ける.

もし格納庫に以前試用されなくなった ノードがある場合はそれを再利用する. なければ新たに割り付ける.

引数:
r[in] 認識処理インスタンス
戻り値:
新たに割り付けられた仮説ノードへのポインタを返す.

search_bestfirst_v1.c324 行で定義されています。

参照元 pass2_finalize_on_no_result(), と wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void malloc_wordtrellis ( RecogProcess r)

1単語分のトレリス計算用のワークエリアを確保.

引数:
r[in] 認識処理インスタンス

search_bestfirst_v1.c427 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void scan_word ( NODE now,
HTK_Param param,
RecogProcess r 
)

最後の1単語の前向きトレリスを計算して,文仮説の前向き尤度を更新する.

引数:
now[i/o] 文仮説
param[in] 入力パラメータ列
r[in] 認識処理インスタンス

< Temporal pointer to current buffer

< Temporal pointer to previous buffer

search_bestfirst_v1.c585 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void next_word ( NODE now,
NODE new,
NEXTWORD nword,
HTK_Param param,
RecogProcess r 
)

展開元仮説に次単語を接続して新しい仮説を生成する.

次単語の単語トレリス上の スコアから最尤接続点を求め,仮説スコアを計算する.

引数:
now[in] 展開元仮説
new[out] 新たに生成された仮説が格納される
nword[in] 接続する次単語の情報
param[in] 入力パラメータ列
r[in] 認識処理インスタンス

search_bestfirst_v1.c1378 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void start_word ( NODE new,
NEXTWORD nword,
HTK_Param param,
RecogProcess r 
)

与えられた単語から初期仮説を生成する.

引数:
new[out] 新たに生成された仮説が格納される
nword[in] 初期仮説単語の情報
param[in] 入力パラメータ列
r[in] 認識処理インスタンス

search_bestfirst_v1.c1607 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void last_next_word ( NODE now,
NODE new,
HTK_Param param,
RecogProcess r 
)

終端処理:終端まで達した文仮説の最終的なスコアをセットする.

引数:
now[in] 終端まで達した仮説
new[out] 最終的な文仮説のスコアを格納する場所へのポインタ
param[in] 入力パラメータ列
r[in] 認識処理インスタンス

search_bestfirst_v1.c1697 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

boolean wav2mfcc ( SP16  speech[],
int  speechlen,
Recog recog 
)

音声波形データから MFCC パラメータを抽出する.

エンジンインスタンス内の MFCC 計算インスタンスごとにパラメータ抽出が 行われ,それぞれの mfcc->param に格納される.

引数:
speech[in] 音声波形データ
speechlen[in] speech の長さ(単位:サンプル数)
recog[in] エンジンインスタンス
戻り値:
成功時 TRUE, エラー時 FALSE を返す.

wav2mfcc.c85 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

void j_put_header ( FILE *  strm)

ヘッダを出力する.

引数:
strm[in] 出力ストリーム

ヘッダを出力する.

引数:
strm[in] 出力ストリーム

version.c47 行で定義されています。

参照元 j_output_argument_help(), j_put_header(), opt_parse(), と print_engine_info().

void j_put_version ( FILE *  strm)

バージョン情報を出力する

引数:
strm[in] 出力ストリーム

version.c65 行で定義されています。

参照元 j_put_version(), と main().

void j_put_compile_defs ( FILE *  strm)

コンパイル時の設定を出力する.

引数:
strm[in] 入力ストリーム

コンパイル時の設定を出力する.

引数:
strm[in] 入力ストリーム

version.c88 行で定義されています。

参照元 j_output_argument_help(), j_put_compile_defs(), opt_parse(), と print_engine_info().

void j_put_library_defs ( FILE *  strm)

ライブラリの設定を出力する

引数:
strm[in] 出力ストリーム

version.c251 行で定義されています。

参照元 j_put_library_defs(), と opt_parse().

WCHMM_INFO* wchmm_new ( )

木構造化辞書構造体を新規に割り付ける.

戻り値:
新たにメモリ上に割り付けられた木構造化辞書構造体へのポインタを返す.

wchmm.c70 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

void wchmm_free ( WCHMM_INFO w)

木構造化辞書およびその内部の割付メモリを全て解放する.

引数:
w[in] 木構造化辞書

wchmm.c214 行で定義されています。

参照元 j_recogprocess_free().

関数の呼び出しグラフ:

呼出しグラフ:

void print_wchmm_info ( WCHMM_INFO wchmm)

木構造化辞書のサイズなどの情報を標準出力に出力する.

引数:
wchmm[in] 木構造化辞書

wchmm.c2082 行で定義されています。

参照元 print_engine_info().

関数の呼び出しグラフ:

呼出しグラフ:

boolean build_wchmm ( WCHMM_INFO wchmm,
JCONF_LM lmconf 
)

与えられた単語辞書と言語モデルから木構造化辞書を構築する.

この関数は 処理が遅く,Julianで"-oldtree"オプション指定時のみ使用されます. オプション 非指定時およびJuliusでは代わりに build_wchmm2() が用いられます.

引数:
wchmm[i/o] 木構造化辞書
lmconf[in] 言語モデル(LM)設定パラメータ

wchmm.c1542 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

boolean build_wchmm2 ( WCHMM_INFO wchmm,
JCONF_LM lmconf 
)

与えられた単語辞書と言語モデルから木構造化辞書を構築する.

この関数は bulid_wchmm() と同じ処理を行いますが, 最初に単語を音素列でソートして音素列の似た順に単語を並べるため, より高速に木構造化を行うことができる. とくにオプション指定をしない 限り,Julius/Julianではこちらが用いられる.

引数:
wchmm[i/o] 木構造化辞書
lmconf[in] 言語モデル(LM)設定パラメータ

wchmm.c1749 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

void wchmm_check_interactive ( WCHMM_INFO wchmm)

木構造化辞書の構造を起動時に対話的にチェックする際のコマンドループ

引数:
wchmm[in] 木構造化辞書

wchmm_check.c332 行で定義されています。

参照元 check_wchmm(), と j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

void check_wchmm ( WCHMM_INFO wchmm)

木構造化辞書内のリンク情報の一貫性をチェックする(内部デバッグ用)

引数:
wchmm[in] 木構造化辞書

wchmm_check.c447 行で定義されています。

参照元 build_wchmm(), と build_wchmm2().

関数の呼び出しグラフ:

呼出しグラフ:

boolean RealTimeInit ( Recog recog)

第1パス平行認識処理の初期化.

MFCC計算のワークエリア確保を行う. また必要な場合は,スペクトル減算用の ワークエリア準備,ノイズスペクトルのロード,CMN用の初期ケプストラム 平均データのロードなども行われる.

この関数は,システム起動後1回だけ呼ばれる.

引数:
recog[i/o] engine instance

realtime-1stpass.c220 行で定義されています。

参照元 j_final_fusion().

関数の呼び出しグラフ:

呼出しグラフ:

boolean RealTimePipeLinePrepare ( Recog recog)

第1パス平行認識処理の準備

計算用変数をリセットし,各種データを準備する. この関数は,ある入力(あるいはセグメント)の認識が 始まる前に呼ばれる.

引数:
recog[i/o] engine instance
戻り値:
TRUE on success. FALSE on failure.

realtime-1stpass.c372 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

boolean RealTimeMFCC ( MFCCCalc mfcc,
SP16 window,
int  windowlen 
)

音声波形からパラメータベクトルを計算する.

窓単位で取り出された音声波形からMFCCベクトルを計算する. 計算結果は mfcc->tmpmfcc に保存される.

引数:
mfcc[i/o] MFCC計算インスタンス
window[in] 窓単位で取り出された音声波形データ
windowlen[in] window の長さ
戻り値:
計算成功時,TRUE を返す. デルタ計算において入力フレームが 少ないなど,まだ得られていない場合は FALSE を返す.

realtime-1stpass.c476 行で定義されています。

参照元 j_recog_new().

関数の呼び出しグラフ:

呼出しグラフ:

int RealTimePipeLine ( SP16 Speech,
int  nowlen,
Recog recog 
)

第1パス平行音声認識処理のメイン

この関数内では,漸次的な特徴量抽出および第1パスの認識が行われる. 入力データに対して窓掛け・シフトを行いMFCC計算を行いながら, 音声認識を1フレームずつ並列実行する.

認識処理(decode_proceed())において,音声区間終了が要求される ことがある. この場合,未処理の音声を保存して第1パスを終了する よう呼出元に要求する.

SPSEGMENT_NAIST あるいは GMM_VAD などのバックエンドVAD定義時は,デコーダベースの VAD (音声区間開始検出)に伴うデコーディング制御が行われる. トリガ前は,認識処理が呼ばれるが,実際には各関数内で認識処理は 行われていない. 開始を検出した時,この関数はそこまでに得られた MFCC列を一定フレーム長分巻戻し,その巻戻し先から通常の認識処理を 再開する. なお,複数処理インスタンス間がある場合,開始トリガは どれかのインスタンスが検出した時点で全ての開始が同期される.

この関数は,音声入力ルーチンのコールバックとして呼ばれる. 音声データの数千サンプル録音ごとにこの関数が呼び出される.

引数:
Speech[in] 音声データへのバッファへのポインタ
nowlen[in] 音声データの長さ
recog[i/o] engine instance
戻り値:
エラー時に -1 を,正常時に 0 を返す. また,第1パスを 終了するよう呼出元に要求するときは 1 を返す.

realtime-1stpass.c788 行で定義されています。

参照元 j_recognize_stream_core(), と RealTimeResume().

関数の呼び出しグラフ:

呼出しグラフ:

int RealTimeResume ( Recog recog)

セグメントの認識再開処理

この関数はデコーダベースVADやショートポーズセグメンテーションによって 入力がセグメントに切られた場合に,その後の認識の再開に関する処理を行う. 具体的には,入力の認識を開始する前に,前回の入力セグメントにおける 巻戻し分のMFCC列から認識を開始する. さらに,前回のセグメンテーション時に 未処理だった残りの音声サンプルがあればそれも処理する.

引数:
recog[i/o] エンジンインスタンス
戻り値:
エラー時 -1,正常時 0 を返す. また,この入力断片の処理中に 文章の区切りが見つかったときは第1パスをここで中断するために 1 を返す.

realtime-1stpass.c939 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

boolean RealTimeParam ( Recog recog)

第1パス平行認識処理の終了処理を行う.

この関数は第1パス終了時に呼ばれ,入力長を確定したあと, decode_end() (セグメントで終了したときは decode_end_segmented())を 呼び出して第1パス終了処理を行う.

もし音声入力ストリームの終了によって認識が終わった場合(ファイル入力で 終端に達した場合など)は,デルタバッファに未処理の入力が残っているので, それをここで処理する.

引数:
recog[i/o] エンジンインスタンス
戻り値:
処理成功時 TRUE, エラー時 FALSE を返す.

realtime-1stpass.c1106 行で定義されています。

参照元 j_recognize_stream_core().

void RealTimeCMNUpdate ( MFCCCalc mfcc,
Recog recog 
)

ケプストラム平均の更新.

次回の認識に備えて,入力データからCMN用のケプストラム平均を更新する.

引数:
mfcc[i/o] 計算対象の MFCC計算インスタンス
recog[i/o] エンジンインスタンス

realtime-1stpass.c1358 行で定義されています。

参照元 j_recognize_stream_core().

void RealTimeTerminate ( Recog recog)

第1パス平行認識処理を中断する.

引数:
recog[i/o] エンジンインスタンス

realtime-1stpass.c1418 行で定義されています。

参照元 j_recognize_stream_core().

void realbeam_free ( Recog recog)

第1パス並行処理のためのワークエリアを開放する

引数:
recog[in] engine instance

realtime-1stpass.c1443 行で定義されています。

参照元 j_recog_free().

int mfcc_go ( Recog recog,
int(*)(Recog *)  ad_check 
)
引数:
recog
ad_check
戻り値:
2 when input termination requested by recognition process, 1 when segmentation request returned from input module, 0 when end of input returned from input module, -1 on error, -2 when input termination requested by ad_check().

realtime-1stpass.c1485 行で定義されています。

参照元 j_recognize_stream_core().

void word_align ( WORD_ID words,
short  wnum,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

単語ごとの forced alignment を行う.

引数:
words[in] 単語列
wnum[in] words の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

word_align.c370 行で定義されています。

参照元 do_alignment_all().

関数の呼び出しグラフ:

呼出しグラフ:

void phoneme_align ( WORD_ID words,
short  num,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

音素ごとの forced alignment を行う.

引数:
words[in] 単語列
num[in] words の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

word_align.c431 行で定義されています。

参照元 do_alignment_all().

関数の呼び出しグラフ:

呼出しグラフ:

void state_align ( WORD_ID words,
short  num,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

HMM状態ごとの forced alignment を行う.

引数:
words[in] 単語列
num[in] words の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

word_align.c492 行で定義されています。

参照元 do_alignment_all().

関数の呼び出しグラフ:

呼出しグラフ:

void word_rev_align ( WORD_ID revwords,
short  wnum,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

単語ごとの forced alignment を行う(単語が逆順で与えられる場合)

引数:
revwords[in] 単語列(逆順)
wnum[in] revwords の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

word_align.c398 行で定義されています。

関数の呼び出しグラフ:

void phoneme_rev_align ( WORD_ID revwords,
short  num,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

音素ごとの forced alignment を行う(単語が逆順で与えられる場合)

引数:
revwords[in] 単語列(逆順)
num[in] revwords の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

word_align.c459 行で定義されています。

関数の呼び出しグラフ:

void state_rev_align ( WORD_ID revwords,
short  num,
HTK_Param param,
SentenceAlign align,
RecogProcess r 
)

HMM状態ごとの forced alignment を行う(単語が逆順で与えられる場合)

引数:
revwords[in] 単語列(逆順)
num[in] revwords の単語数
param[in] 入力特徴ベクトル列
align[out] アラインメント結果を格納するSentence構造体
r[i/o] 認識処理インスタンス

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

関数の呼び出しグラフ:

void do_alignment_all ( RecogProcess r,
HTK_Param param 
)

認識結果に対して必要なアラインメントを全て実行する.

引数:
r[i/o] 認識処理インスタンス
param[in] 入力特徴ベクトル列

word_align.c547 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

char* filepath ( char *  filename,
char *  dirname 
)

相対パスをフルパスに変換する.

ファイルのパス名が相対パスであれば,カレントディレクトリをつけた フルパスに変換して返す. 絶対パスであれば,そのまま返す.

引数:
filename[in] ファイルのパス名
dirname[in] カレントディレクトリのパス名
戻り値:
絶対パス名の入った,新たに割り付けられたバッファ

m_options.c58 行で定義されています。

参照元 multigram_add_prefix_filelist(), multigram_add_prefix_list(), と opt_parse().

boolean opt_parse ( int  argc,
char *  argv[],
char *  cwd,
Jconf jconf 
)

オプション解析.

引数:
argc[in] argv に含まれる引数の数
argv[in] 引数値(文字列)の配列
cwd[in] カレントディレクトリ
jconf[out] 値を格納するjconf構造体
戻り値:
TRUE on success, or FALSE on error.

m_options.c174 行で定義されています。

参照元 config_file_parse(), config_string_parse(), と j_config_load_args().

呼出しグラフ:

void opt_release ( Jconf jconf)

オプション関連のメモリ領域を解放する.

引数:
jconf[i/o] jconf configuration data

m_options.c1423 行で定義されています。

参照元 j_jconf_free().

関数の呼び出しグラフ:

呼出しグラフ:

void get_dirname ( char *  path)

ファイルのパス名からディレクトリ名を抜き出す.

最後の '/' は残される.

引数:
path[i/o] ファイルのパス名(関数内で変更される)

m_jconf.c155 行で定義されています。

参照元 config_file_parse(), と multigram_add_prefix_filelist().

boolean config_string_parse ( char *  str,
Jconf jconf 
)

オプション指定を含む文字列を解析して値をセットする.

相対パス名はカレントからの相対として扱われる.

引数:
str[in] オプション指定を含む文字列
jconf[out] 値をセットする jconf 設定データ

m_jconf.c453 行で定義されています。

参照元 j_config_load_string().

関数の呼び出しグラフ:

呼出しグラフ:

boolean config_file_parse ( char *  conffile,
Jconf jconf 
)

jconf 設定ファイルを読み込んで解析し,対応するオプションを設定する.

オプション内の相対パスは、その jconf 設定ファイルからの相対となる.

引数:
conffile[in] jconf ファイルのパス名
jconf[out] 値をセットする jconf 設定データ

m_jconf.c509 行で定義されています。

参照元 j_config_load_file(), と opt_parse().

関数の呼び出しグラフ:

呼出しグラフ:

boolean checkpath ( char *  filename)

ファイルが存在して読み込み可能かチェックする.

引数:
filename[in] ファイルパス名

m_chkparam.c49 行で定義されています。

参照元 j_jconf_finalize(), multigram_add_prefix_filelist(), と multigram_add_prefix_list().

int set_beam_width ( WCHMM_INFO wchmm,
int  specified 
)

第1パスのビーム幅を決定する.

ユーザが "-b" オプションでビーム幅を指定しなかった場合は, 下記のうち小さい方がビーム幅として採用される.

引数:
wchmm[in] 木構造化辞書
specified[in] ユーザ指定ビーム幅(0: 全探索 -1: 未指定)
戻り値:
採用されたビーム幅.

m_chkparam.c437 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

void print_jconf_overview ( Jconf jconf)

全体設定パラメータ内のモジュール構成の概要をログに出力する.

引数:
jconf[in] global configuration variables

m_info.c42 行で定義されています。

参照元 j_jconf_finalize(), と print_engine_info().

関数の呼び出しグラフ:

呼出しグラフ:

void print_engine_info ( Recog recog)

エンジンインスタンスの全情報をログに出力する.

引数:
recog[in] engine instance

m_info.c149 行で定義されています。

参照元 j_recog_info().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_initialize ( Recog recog)

設定パラメータに従い音声入力デバイスをセットアップする.

引数:
recog[i/o] エンジンインスタンス

m_adin.c247 行で定義されています。

参照元 j_adin_init().

関数の呼び出しグラフ:

呼出しグラフ:

void create_mfcc_calc_instances ( Recog recog)

全てのAM処理インスタンスおよびGMM用に,MFCC計算インスタンスを生成する.

2つ以上のAM処理インスタンス(およびGMM)が同一の特徴量計算条件を持 つ場合,それらのインスタンスはひとつの MFCC 計算インスタンスを共有する.

引数:
recog[i/o] engine instance

m_fusion.c874 行で定義されています。

参照元 j_final_fusion().

関数の呼び出しグラフ:

呼出しグラフ:

void hmm_check ( RecogProcess r)

コマンドライン上でトライフォンのチェックを行なうモード ("-check triphone").

引数:
r[in] 認識処理インスタンス

hmm_check.c303 行で定義されています。

参照元 j_launch_recognition_instance().

関数の呼び出しグラフ:

呼出しグラフ:

boolean gmm_init ( Recog recog)

GMMの計算のための初期化.

起動時に一度だけ呼ばれる.

引数:
recog[i/o] エンジンインスタンス

gmm.c429 行で定義されています。

参照元 j_final_fusion().

関数の呼び出しグラフ:

呼出しグラフ:

void gmm_prepare ( Recog recog)

GMM計算のための準備を行なう.

1入力開始ごとに呼ばれる.

引数:
recog[i/o] エンジンインスタンス

gmm.c522 行で定義されています。

参照元 decode_proceed().

呼出しグラフ:

void gmm_proceed ( Recog recog)

与えられた入力ベクトル列上のあるフレームについて,全GMMのスコアを計算し, 計算結果を gmm_score に積算する.

GMM_VAD 定義時は,後で VAD 判定するために,過去 jconf->detect.gmm_margin フレーム分の VAD スコア (音声GMMの最大スコア - 雑音GMMの最大スコア)が 保存される.

引数:
recog[i/o] エンジンインスタンス

gmm.c574 行で定義されています。

参照元 decode_proceed().

関数の呼び出しグラフ:

呼出しグラフ:

void gmm_end ( Recog recog)

GMMの計算を終了し,結果を出力する.

gmm_proceed() によって累積された各フレームごとのスコアから, 最大スコアのGMMを決定する. その事後確率に基づく信頼度を計算し 最終的な結果を result_gmm() によって出力する.

引数:
recog[i/o] エンジンインスタンス

gmm.c657 行で定義されています。

参照元 decode_end(), と decode_end_segmented().

関数の呼び出しグラフ:

呼出しグラフ:

boolean gmm_valid_input ( Recog recog)

GMMの識別結果,最後の入力が音声入力として有効であったか 無効であったかを返す.

引数:
recog[i/o] エンジンインスタンス
戻り値:
一位のGMMの名前が gmm_reject_cmn_string 内に無ければ valid として TRUE, あれば invalid として FALSE を返す.

gmm.c734 行で定義されています。

参照元 j_recognize_stream_core().

呼出しグラフ:

void gmm_free ( Recog recog)

GMM計算に用いたワークエリアを開放する.

引数:
recog[i/o] engine instance

gmm.c758 行で定義されています。

参照元 j_recog_free().

呼出しグラフ:

void wordgraph_init ( WCHMM_INFO wchmm)

Define if you want debugging output for graph generation.

Define if you want much more debugging output for graph generation

グラフ出力を初期化する. 現在はデバッグ用処理のみ.

引数:
wchmm[in] 木構造化辞書

graphout.c54 行で定義されています。

参照元 wchmm_fbs().

呼出しグラフ:

void wordgraph_free ( WordGraph wg)

あるグラフ単語のメモリ領域を解放する.

引数:
wg[in] グラフ単語

graphout.c181 行で定義されています。

参照元 free_node(), wchmm_fbs(), wordgraph_clean(), と wordgraph_exec_erase().

呼出しグラフ:

void put_wordgraph ( FILE *  fp,
WordGraph wg,
WORD_INFO winfo 
)

グラフ単語の情報をテキストで出力する.

内容は以下のとおり:

   ID: left=左コンテキストのID[,ID,...] right=右コンテキストID[,ID,..]
   [左端フレーム..右端フレーム]
   wid=単語ID
   name="単語名"
   lname="N-gram 単語名,あるいはカテゴリ番号 (Julian)"
   f=探索中の左端での部分文スコア(g(n) + h(n+1)) n=この単語
   f_prev=探索中の右端での部分文スコア(g(n-1) + h(n)) n=この単語
   g_head=左端での累積Viterbiスコア g(n)
   g_prev=右端での累積Viterbiスコア g(n-1) + LM(n)
   lscore=言語スコア LM(n)   (Julius の場合のみ)
   AMavg=フレーム平均音響尤度
   cmscore=単語信頼度
 
引数:
fp[in] 出力先のファイルポインタ
wg[in] 出力するグラフ単語
winfo[in] 単語辞書

graphout.c2193 行で定義されています。

参照元 confnet_create(), graph_forward_backward(), result_confnet(), wordgraph_check_coherence(), wordgraph_dump(), と wordgraph_remove_context().

呼出しグラフ:

void wordgraph_dump ( FILE *  fp,
WordGraph root,
WORD_INFO winfo 
)

生成された単語グラフ中の全単語をテキスト出力する.

引数:
fp[in] 出力先のファイルポインタ
root[in] 単語グラフのルートノードへのポインタ
winfo[in] 単語辞書

graphout.c2252 行で定義されています。

参照元 graph_forward_backward(), と result_graph().

関数の呼び出しグラフ:

呼出しグラフ:

WordGraph* wordgraph_assign ( WORD_ID  wid,
WORD_ID  wid_left,
WORD_ID  wid_right,
int  leftframe,
int  rightframe,
LOGPROB  fscore_head,
LOGPROB  fscore_tail,
LOGPROB  gscore_head,
LOGPROB  gscore_tail,
LOGPROB  lscore,
LOGPROB  cm,
RecogProcess r 
)

新たな単語グラフ候補を生成して返す.

この時点ではまだ単語グラフ中には 登録されていない.

引数:
wid[in] 単語ID
wid_left[in] word ID of left context for determining head phone
wid_right[in] word ID of right context for determining tail phone
leftframe[in] 始端時刻(フレーム)
rightframe[in] 終端時刻(フレーム)
fscore_head[in] 始端での部分文スコア (g + h)
fscore_tail[in] 終端での部分文スコア (g + h)
gscore_head[in] 先頭での入力末端からのViterbiスコア (g)
gscore_tail[in] 末尾での入力末端からのViterbiスコア (g)
lscore[in] 言語スコア
cm[in] 信頼度
r[in] 認識処理インスタンス
戻り値:
新たに生成されたグラフ単語候補へのポインタ

graphout.c1901 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

boolean wordgraph_check_and_add_rightword ( WordGraph wg,
WordGraph right,
LOGPROB  lscore 
)

右コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.

引数:
wg[i/o] 調べるグラフ単語
right[in] このグラフ単語が wg の右コンテキストにあるかチェックする
lscore[in] 接続言語スコア
戻り値:
同じグラフ単語が右コンテキストに存在せず新たに追加した場合は TRUE, 右コンテキストとして同じグラフ単語がすでに存在しており追加しなかった場合は FALSEを返す.

graphout.c347 行で定義されています。

参照元 wchmm_fbs(), wordgraph_adjust_boundary_sub(), と wordgraph_link_context().

関数の呼び出しグラフ:

呼出しグラフ:

boolean wordgraph_check_and_add_leftword ( WordGraph wg,
WordGraph left,
LOGPROB  lscore 
)

左コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.

引数:
wg[i/o] 調べるグラフ単語
left[in] このグラフ単語が wg の左コンテキストにあるかチェックする
lscore[in] 接続言語スコア
戻り値:
同じグラフ単語が左コンテキストに存在せず新たに追加した場合は TRUE, 左コンテキストとして同じグラフ単語がすでに存在しており追加しなかった場合は FALSEを返す.

graphout.c295 行で定義されています。

参照元 wchmm_fbs(), wordgraph_adjust_boundary_sub(), と wordgraph_link_context().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_save ( WordGraph wg,
WordGraph right,
WordGraph **  root 
)

グラフ単語候補を単語グラフの一部として確定する.

確定されたグラフ単語には saved に TRUE がセットされる.

引数:
wg[i/o] 登録するグラフ単語候補
right[i/o] wg の右コンテキストとなる単語
root[i/o] 確定済み単語グラフのルートノードへのポインタ

graphout.c1957 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_purge_leaf_nodes ( WordGraph **  rootp,
RecogProcess r 
)

グラフ後処理その1:初期単語グラフの抽出.

探索中に生成された単語候補集合から,末端から始まるパス上に無いleaf単語を 削除することで初期単語グラフを抽出する.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ
r[in] 認識処理インスタンス

graphout.c941 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_depth_cut ( WordGraph **  rootp,
RecogProcess r 
)

グラフ後処理その1.

5:グラフの深さによる単語候補のカット

GRAPHOUT_DEPTHCUT 指定時,グラフの深さによる単語候補のカットを行う.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ
r[in] 認識処理インスタンス

graphout.c1050 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_adjust_boundary ( WordGraph **  rootp,
RecogProcess r 
)

グラフ後処理その2:単語境界情報の調整.

GRAPHOUT_PRECISE_BOUNDARY 定義時,後続単語に依存した正確な単語境界 を得るために,探索中において,グラフ単語を生成したあとに次回展開時に 事後的に単語境界を移動させる. このため,前後の単語のもつ(移動前の) 境界情報との対応がとれなくなるので,探索終了後に各単語の前後の単語へ 正しい単語境界を伝搬させることで整合性をとる.

単語境界のずれは単語間で伝搬するため,すべての単語境界が動かなくなるまで 調整が繰り返される. 巨大なグラフでは短い単語の沸きだしで処理が終わらない 場合があるが,この場合 GRAPHOUT_LIMIT_BOUNDARY_LOOP を指定することで, 繰り返す数の上限を graphout_limit_boundary_loop_num に制限できる.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ
r[i/o] 認識処理インスタンス

< frame list for adjust_boundary_sub

< frame score list for adjust_boundary_sub

graphout.c1595 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_clean ( WordGraph **  rootp)

単語グラフ内の全単語を全て解放する.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ

graphout.c871 行で定義されています。

参照元 clear_result().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_compaction_thesame ( WordGraph **  rootp)

グラフ後処理その3:単語の束ね(完全同一)

単語境界時刻と部分文仮説スコアが完全に一致する同じ単語どうしを一つに束ねる.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ

graphout.c1671 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_compaction_exacttime ( WordGraph **  rootp,
RecogProcess r 
)

グラフ後処理その4:単語の束ね(区間同一)

単語境界時刻が一致する同じ単語どうしを一つに束ねる. スコアが 同一でなくても束ねられる. この場合,部分文スコアが最も高い候補が 残る. graph_merge_neighbor_range が 負 の場合は実行されない.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ
r[i/o] 認識処理インスタンス

graphout.c1709 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_compaction_neighbor ( WordGraph **  rootp,
RecogProcess r 
)

グラフ後処理その5:単語の束ね(近傍区間)

似た単語境界時刻を持つ同じ単語どうしを一つに束ねる. 許すずれの幅は graph_merge_neighbor_range で与え,これが 0 か負である場合は実行されない.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ
r[i/o] 認識処理インスタンス

graphout.c1795 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

int wordgraph_sort_and_annotate_id ( WordGraph **  rootp,
RecogProcess r 
)

単語グラフ内の全単語を開始時間順にソートし,通し番号をつける.

引数:
rootp[i/o] 単語グラフのルートノードへのポインタ格納場所
r[i/o] 認識処理インスタンス

graphout.c820 行で定義されています。

参照元 find_1pass_result(), と wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void wordgraph_check_coherence ( WordGraph rootp,
RecogProcess r 
)

デバッグ用:単語グラフの整合性をチェックする.

引数:
rootp[in] 単語グラフのルートノードへのポインタ
r[i/o] 認識処理インスタンス

graphout.c2281 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void graph_forward_backward ( WordGraph root,
RecogProcess r 
)

生成されたラティス上において,forward-backward アルゴリズムにより 信頼度を計算する.

計算された値は各グラフ単語の graph_cm に格納される. 事後確率の計算では,探索中の信頼度計算と同じ α値(r->config->annotate.cm_alpha)が用いられる.

引数:
root[in] root graph node
r[in] recognition process instance

graphout.c2430 行で定義されています。

参照元 find_1pass_result(), と wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void jconf_set_default_values ( Jconf j)

パラメータ構造体 Jconf に初期値を代入する.

ここで値が初期化されるのは,Jconf 自身に格納される値のみである. 下位の構造(AM, LM, SEARCH)のパラメータはセットしないので, それぞれ別の関数で初期化する必要が有る.

引数:
j[in] パラメータ構造体

default.c57 行で定義されています。

参照元 j_jconf_new().

呼出しグラフ:

void jconf_set_default_values_am ( JCONF_AM j)

AMパラメータ構造体に初期値を代入する.

引数:
j[in] AMパラメータ構造体

default.c122 行で定義されています。

参照元 j_jconf_am_new().

関数の呼び出しグラフ:

呼出しグラフ:

void jconf_set_default_values_lm ( JCONF_LM j)

LMパラメータ構造体に初期値を代入する.

引数:
j[in] LMパラメータ構造体

default.c171 行で定義されています。

参照元 j_jconf_lm_new().

呼出しグラフ:

void jconf_set_default_values_search ( JCONF_SEARCH j)

探索(SEARCH)パラメータ構造体に初期値を代入する.

引数:
j[in] 探索パラメータ構造体

default.c218 行で定義されています。

参照元 j_jconf_search_new().

呼出しグラフ:

boolean multigram_load_all_gramlist ( PROCESS_LM lm)

起動時に指定されたすべての文法をロードする.

引数:
lm[i/o] 言語処理インスタンス

multi-gram.c887 行で定義されています。

参照元 j_load_lm().

関数の呼び出しグラフ:

呼出しグラフ:

void multigram_free_all ( MULTIGRAM root)

保持している文法をすべて解放する。

引数:
root[in] root pointer of grammar list

multi-gram.c1028 行で定義されています。

参照元 j_process_lm_free().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_setup_param ( ADIn adin,
Jconf jconf 
)

音声切り出し用各種パラメータをセット

設定を元に切り出し用のパラメータを計算し,ワークエリアにセットします.

引数:
adin[in] AD-in work area
jconf[in] configuration data

adin-cut.c138 行で定義されています。

参照元 adin_setup_all().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_thread_create ( Recog recog)

バッファを初期化して A/D-in スレッドを開始する.

引数:
recog[in] engine instance

adin-cut.c978 行で定義されています。

参照元 j_open_stream().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_thread_cancel ( Recog recog)

A/D-in スレッドを終了する

引数:
recog[in] engine instance

adin-cut.c1021 行で定義されています。

参照元 j_close_stream().

関数の呼び出しグラフ:

呼出しグラフ:

int adin_go ( int(*)(SP16 *, int, Recog *)  ad_process,
int(*)(Recog *)  ad_check,
Recog recog 
)

入力処理を行うトップ関数

スレッドモードでは,この関数は adin_thead_process() を呼び出し, 非スレッドモードでは adin_cut() を直接呼び出す. 引数や返り値は adin_cut() と同一である.

引数:
ad_process[in] function to process triggerted input.
ad_check[in] function to be called periodically.
recog[in] engine instance
戻り値:
2 when input termination requested by ad_process(), 1 when if detect end of an input segment (down trigger detected after up trigger), 0 when reached end of input device, -1 on error, -2 when input termination requested by ad_check().

adin-cut.c1259 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_standby ( ADIn a,
int  freq,
void *  arg 
)

デバイス依存の初期化関数を呼び出す.

引数:
a[in] A/D-in work area
freq[in] sampling frequency
arg[in] device-dependent argument
戻り値:
TRUE if succeeded, FALSE if failed.

adin-cut.c1290 行で定義されています。

参照元 adin_setup_all().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_begin ( ADIn a,
char *  file_or_dev_name 
)

音の取り込みを開始するデバイス依存の関数を呼び出す.

引数:
a[in] A/D-in work area
file_or_dev_name[in] device / file path to open or NULL for default
戻り値:
TRUE on success, FALSE on failure.

adin-cut.c1314 行で定義されています。

参照元 j_open_stream().

関数の呼び出しグラフ:

呼出しグラフ:

boolean adin_end ( ADIn a)

音の取り込みを終了するデバイス依存の関数を呼び出す.

引数:
a[in] A/D-in work area
戻り値:
TRUE on success, FALSE on failure.

adin-cut.c1340 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

void adin_free_param ( Recog recog)

音取り込み用ワークエリアのメモリを開放する.

引数:
recog[in] engine instance

adin-cut.c1364 行で定義されています。

参照元 j_recog_free().

関数の呼び出しグラフ:

呼出しグラフ:

CN_CLUSTER* confnet_create ( WordGraph root,
RecogProcess r 
)

Create a confusion network from word graph.

引数:
root[in] root pointer of word graph
r[in] recognition process instance
戻り値:
root pointer to the cluster list.

confnet.c697 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void graph_make_order ( WordGraph root,
RecogProcess r 
)

Extract order relationship between any two words in the word graph for confusion network generation.

引数:
root[in] root pointer to the word graph
r[in] recognition process instance

confnet.c154 行で定義されています。

参照元 wchmm_fbs().

関数の呼び出しグラフ:

呼出しグラフ:

void cn_free_all ( CN_CLUSTER **  croot)

Free all cluster holders.

引数:
croot[out] pointer to root pointer of cluster holder list.

confnet.c258 行で定義されています。

参照元 clear_result().

関数の呼び出しグラフ:

呼出しグラフ:

void callback_init ( Recog recog)

コールバック管理エリアの初期化

引数:
recog[i/o] engine instance

callback.c53 行で定義されています。

参照元 j_recog_new().

呼出しグラフ:

void callback_exec ( int  code,
Recog recog 
)

コールバックレジストリに登録されている関数を全て実行する.

引数:
code[in] callback code
recog[in] engine instance.

callback.c233 行で定義されています。

参照元 adin_cut(), adin_go(), callback_check_in_adin(), decode_proceed(), get_back_trellis(), gmm_end(), j_open_stream(), j_recognize_stream(), j_recognize_stream_core(), RealTimeParam(), RealTimeResume(), と result_error().

関数の呼び出しグラフ:

呼出しグラフ:

void callback_exec_adin ( int  code,
Recog recog,
SP16 buf,
int  len 
)

A/D-in タイプのコールバックに登録された関数を全て実行する.

引数:
code[in] callbcak code
recog[in] engine instance
buf[in] buffer that holds the current input speech which will be passed to the functions
len[in] length of buf

callback.c265 行で定義されています。

参照元 adin_cut().

関数の呼び出しグラフ:

呼出しグラフ:

int adin_cut_callback_store_buffer ( SP16 now,
int  len,
Recog recog 
)

検出された音をバッファに保存する adin_go() コールバック

この関数は,検出された音声入力を順次 recog->speech に記録して いく. バッファ処理モード(=非リアルタイムモード)で認識を行なう ときに用いられる.

引数:
now[in] 検出された音声波形データの断片
len[in] now の長さ(サンプル数)
recog[i/o] エンジンインスタンス
戻り値:
エラー時 -1 (adin_go は即時中断する),通常時 0 (adin_go は 続行する),区間終了要求時 1 (adin_go は現在の音声区間を閉じる).

recogmain.c385 行で定義されています。

参照元 j_recognize_stream_core(), と RealTimePipeLine().

SentenceAlign* result_align_new ( )

アラインメント結果の格納場所を確保

戻り値:
確保された領域へのポインタ

recogmain.c210 行で定義されています。

参照元 do_alignment_all().

関数の呼び出しグラフ:

呼出しグラフ:

void result_align_free ( SentenceAlign a)

アラインメント結果の格納場所を確保

引数:
a[i/o] 解放されるアラインメントデータ

recogmain.c242 行で定義されています。

参照元 result_sentence_free().

呼出しグラフ:

void result_sentence_malloc ( RecogProcess r,
int  num 
)

認識結果の格納場所を確保する.

引数:
r[out] recognition process instance
num[in] number of sentences to be output

recogmain.c270 行で定義されています。

参照元 find_1pass_result_word(), と j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ:

void result_sentence_free ( RecogProcess r)

認識結果の格納場所を解放する.

引数:
r[i/o] recognition process instance

recogmain.c292 行で定義されています。

参照元 clear_result().

関数の呼び出しグラフ:

呼出しグラフ:

void clear_result ( RecogProcess r)

認識結果の格納場所を全てクリアする.

引数:
r[in] recognition process instance.

recogmain.c324 行で定義されています。

参照元 j_recognize_stream_core().

関数の呼び出しグラフ:

呼出しグラフ: