#include "search.h"
関数 | ||||
void | bt_init (BACKTRELLIS *bt) | |||
単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行) | ||||
void | bt_prepare (BACKTRELLIS *bt) | |||
次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行). | ||||
void | bt_free (BACKTRELLIS *bt) | |||
単語トレリスのメモリを開放する. | ||||
TRELLIS_ATOM * | bt_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_ATOM * | bt_binsearch_atom (BACKTRELLIS *bt, int time, WORD_ID wkey) | |||
単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する. | ||||
void | make_iwcache_index (WCHMM_INFO *wchmm) | |||
単語先頭ノードのうちFactoring においてキャッシュが必要なノードの リストを作成する. | ||||
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) | |||
木構造化辞書上の全ノードに successor list を構築するメイン関数(unigram factoring 用 | ||||
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 値を計算する. | ||||
LOGPROB * | max_successor_prob_iw (WCHMM_INFO *wchmm, WORD_ID lastword) | |||
単語間の factoring 値のリストを返す. | ||||
void | calc_all_unigram_factoring_values (WCHMM_INFO *wchmm) | |||
木構造化辞書上の 1-gram factoring 値を計算して格納する. | ||||
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) | |||
巻き戻し処理 | ||||
void | outprob_style_cache_init (WCHMM_INFO *wchmm) | |||
語頭トライフォン変化用キャッシュの初期化 | ||||
CD_Set * | lcdset_lookup_with_category (WCHMM_INFO *wchmm, HMM_Logical *hmm, WORD_ID category) | |||
単語末尾のトライフォンセット (pseudo phone set) を検索する. | ||||
void | lcdset_register_with_category_all (WCHMM_INFO *wchmm) | |||
全ての単語末用カテゴリ付き pseudo phone set を生成する. | ||||
void | lcdset_remove_with_category_all (WCHMM_INFO *wchmm) | |||
カテゴリ付き pseudo phone set をすべて消去する. | ||||
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 | clear_stocker (StackDecode *s) | |||
リサイクル用ノード格納庫を空にする. | ||||
void | free_node (NODE *node) | |||
仮説ノードの利用を終了してリサイクル用にストックする | ||||
NODE * | cpy_node (NODE *dst, NODE *src) | |||
仮説をコピーする. | ||||
NODE * | newnode (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_INFO * | wchmm_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_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) | |||
グラフ出力を初期化する. | ||||
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) | |||
生成された単語グラフ中の全単語をテキスト出力する. | ||||
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 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) | |||
グラフ単語候補を単語グラフの一部として確定する. | ||||
WordGraph * | wordgraph_check_merge (WordGraph *now, WordGraph **root, WORD_ID next_wid, boolean *merged_p, JCONF_SEARCH *jconf) | |||
ある単語グラフ候補について,既に確定したグラフ単語中に同じ位置に 同じ単語があるかどうかを調べる. | ||||
WordGraph * | wordgraph_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を返す. | ||||
MULTIGRAM * | multigram_get_grammar_by_name (PROCESS_LM *lm, char *gramname) | |||
LM中の文法を名前で検索する. | ||||
MULTIGRAM * | multigram_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) | |||
音の取り込みを開始するデバイス依存の関数を呼び出す. | ||||
boolean | adin_end (ADIn *a) | |||
音の取り込みを終了するデバイス依存の関数を呼び出す. | ||||
void | adin_free_param (Recog *recog) | |||
音取り込み用ワークエリアのメモリを開放する. | ||||
CN_CLUSTER * | confnet_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() コールバック | ||||
SentenceAlign * | result_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) | |||
Load a plugin file. | ||||
boolean | plugin_load_dir (char *dir) | |||
Search for plugin file in a directory and load them. | ||||
void | plugin_load_dirs (char *dirent) | |||
read in plugins in multiple directories | ||||
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) |
extern.h で定義されています。
void bt_init | ( | BACKTRELLIS * | bt | ) |
単語トレリスを保持する 単語トレリス 構造体を初期化する(起動時に1回だけ実行)
bt | [in] 初期化する 単語トレリス 構造体へのポインタ |
backtrellis.c の 79 行で定義されています。
参照元 j_launch_recognition_instance().
呼出しグラフ:
void bt_prepare | ( | BACKTRELLIS * | bt | ) |
次回の認識用に 単語トレリス 構造体を準備する (認識開始時ごとに実行).
bt | [in] 対象とする単語トレリス構造体へのポインタ |
backtrellis.c の 104 行で定義されています。
呼出しグラフ:
void bt_free | ( | BACKTRELLIS * | bt | ) |
単語トレリスのメモリを開放する.
bt | [out] pointer to the word trellis structure. |
backtrellis.c の 131 行で定義されています。
呼出しグラフ:
TRELLIS_ATOM* bt_new | ( | BACKTRELLIS * | bt | ) |
トレリス単語を新たに割り付ける.
bt | [out] pointer to the word trellis structure. |
backtrellis.c の 154 行で定義されています。
参照元 save_trellis().
呼出しグラフ:
void bt_store | ( | BACKTRELLIS * | bt, | |
TRELLIS_ATOM * | tatom | |||
) |
第1パスで出現したトレリス単語(単語終端のトレリス情報)を格納する.
ここでは格納だけ行い,第1パス終了後に bt_relocate_rw() で フレーム順に再配置する.
bt | [i/o] トレリス単語を格納するバックトレリス構造体 | |
tatom | [in] 出現したトレリス単語へのポインタ |
backtrellis.c の 190 行で定義されています。
参照元 save_trellis().
呼出しグラフ:
void bt_relocate_rw | ( | BACKTRELLIS * | bt | ) |
第1パス終了後, 格納された単語トレリス情報をフレーム順に再配置する.
bt | [i/o] 単語トレリス構造体 |
backtrellis.c の 218 行で定義されています。
参照元 finalize_1st_pass().
呼出しグラフ:
void set_terminal_words | ( | RecogProcess * | r | ) |
逐次デコーディング時, 第1パス終了後に, 入力セグメントの両端に残った最尤単語仮説を取り出し, それらを 第2パスにおける初期/最終仮説としてセットする.
r | [in] 認識処理インスタンス |
backtrellis.c の 295 行で定義されています。
参照元 finalize_segment().
呼出しグラフ:
void bt_discount_pescore | ( | WCHMM_INFO * | wchmm, | |
BACKTRELLIS * | bt, | |||
HTK_Param * | param | |||
) |
第1パス終了後, 第2パスでのトレリス再接続計算のために, 全時間に渡って各トレリス単語の終端の最終状態の出力尤度を再計算し, それを累積から差し引いておく.
第2パスでは,仮説接続時には 接続仮説を考慮して接続点の状態の尤度が再計算される.
wchmm | [in] 木構造化辞書 | |
bt | [in] 単語トレリス構造体 | |
param | [in] 入力パラメータ情報 |
backtrellis.c の 367 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
void bt_discount_lm | ( | BACKTRELLIS * | bt | ) |
第2パスのために2-gramスコアをトレリス上の単語から差し引く.
bt | [in] word trellis |
backtrellis.c の 401 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
void bt_sort_rw | ( | BACKTRELLIS * | bt | ) |
bt_relocate_rw() 終了後, 高速アクセスのために バックトレリス構造体内のトレリス単語をフレームごとに 単語IDでソートしておく.
bt | [i/o] 単語トレリス構造体 |
backtrellis.c の 468 行で定義されています。
参照元 finalize_1st_pass().
呼出しグラフ:
TRELLIS_ATOM* bt_binsearch_atom | ( | BACKTRELLIS * | bt, | |
int | t, | |||
WORD_ID | wkey | |||
) |
単語トレリス内の指定時刻フレーム上に,指定単語の終端があるかどうかを 検索する.
bt | [in] 単語トレリス構造体 | |
t | [in] 検索する終端時刻(フレーム) | |
wkey | [in] 検索する単語の単語ID |
backtrellis.c の 509 行で定義されています。
参照元 start_word().
呼出しグラフ:
void make_iwcache_index | ( | WCHMM_INFO * | wchmm | ) |
単語先頭ノードのうちFactoring においてキャッシュが必要なノードの リストを作成する.
1-gram factoring は,枝ノードにおいて直前単語に依存しない固定値 (unigramの最大値)を与える. このため,単語間の factoring 計算において, 木構造化辞書上で複数の単語で共有されている単語先頭ノードについては, その値は直前単語によらず固定値であり,認識時に単語間キャッシュを保持 する必要はない.
この関数では,単語先頭ノードのリストからそのような factoring キャッシュが 不要なノードを除外して,1-gram factoring 時に単語間キャッシュが必要な 単語先頭ノード(=他の単語と共有されていない独立した単語先頭ノード)の リストを作成し,wchmm->start2isolate および wchmm->isolatenum に格納する.
wchmm | [i/o] 木構造化辞書 |
factoring_sub.c の 865 行で定義されています。
void adjust_sc_index | ( | WCHMM_INFO * | wchmm | ) |
構築された factoring 情報を multipath 用に調整する.
factoring 情報を, モデル全体をスキップする遷移がある場合はその先の音素へコピーする. また,(出力を持たない)文頭文法ノードに単語先頭ノードからコピーする.
wchmm | [in] 木構造化辞書 |
factoring_sub.c の 635 行で定義されています。
void make_successor_list | ( | WCHMM_INFO * | wchmm | ) |
木構造化辞書上の全ノードに successor list を構築するメイン関数
wchmm | [i/o] 木構造化辞書 |
factoring_sub.c の 374 行で定義されています。
参照元 make_successor_list_unigram_factoring().
呼出しグラフ:
void make_successor_list_unigram_factoring | ( | WCHMM_INFO * | wchmm | ) |
木構造化辞書上の全ノードに successor list を構築するメイン関数(unigram factoring 用
wchmm | [i/o] 木構造化辞書 |
factoring_sub.c の 487 行で定義されています。
void max_successor_cache_init | ( | WCHMM_INFO * | wchmm | ) |
木構造化辞書用の factoring キャッシュをメモリ割り付けして初期化する.
この関数はプログラム開始時に一度だけ呼ばれる.
wchmm | [i/o] 木構造化辞書 |
factoring_sub.c の 729 行で定義されています。
参照元 j_launch_recognition_instance().
呼出しグラフ:
void max_successor_cache_free | ( | WCHMM_INFO * | wchmm | ) |
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.c の 1080 行で定義されています。
参照元 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_sub.c の 1187 行で定義されています。
参照元 beam_inter_word().
呼出しグラフ:
void calc_all_unigram_factoring_values | ( | WCHMM_INFO * | wchmm | ) |
木構造化辞書上の 1-gram factoring 値を計算して格納する.
1-gram factoring では単語間で共有されている枝ノードでは 1-gram の最大値 を与える. 単語履歴によらないため,その値は認識開始前に 計算しておくことができる. この関数は木構造化辞書 全体について,共有されている(successor list に2つ以上の単語を持つノード) ノードの 1-gram factoring 値を計算して格納する. 1-gram factoring値を 計算後は,そのノードの successor list はもはや不要であるため,ここで 削除する.
実際には,factoring 値は wchmm->fscore に順次保存され,ノードの scid にその保存値へのインデックス(1-)の負の値が格納される. 不要になった successor list は,実際には compaction_successor 内で,対応するノードの scid が負になっている successor list を削除することで行なわれる.
wchmm | [i/o] 木構造化辞書 |
factoring_sub.c の 928 行で定義されています。
参照元 make_successor_list_unigram_factoring().
呼出しグラフ:
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] ノード番号 |
factoring_sub.c の 1333 行で定義されています。
参照元 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] 音声認識処理インスタンス |
参照元 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 |
< Local workarea to hold the generated trellis word
< Temporal work to hold the current node number on the lexicon tree
参照元 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] 音声認識処理インスタンス |
参照元 decode_end().
呼出しグラフ:
void fsbeam_free | ( | FSBeam * | d | ) |
第1パスのためのワークエリア領域を開放する
d | [in] work are for 1st pass input handling |
呼出しグラフ:
void finalize_1st_pass | ( | RecogProcess * | r, | |
int | len | |||
) |
第1パスの終了処理を行う.
この関数は get_back_trellis_end() の直後に呼ばれ,第1パスの終了処理を 行う. 生成した単語トレリス構造体の最終的な後処理を行い第2パスで アクセス可能な形に内部を変換する. また, 仮説のバックトレースを行い第1パスのベスト仮説を出力する.
r | [in] 認識処理インスタンス | |
len | [in] 第1パスで処理された最終的なフレーム長 |
参照元 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 |
参照元 get_back_trellis()・proceed_one_frame()・RealTimeParam()・RealTimeResume().
呼出しグラフ:
void decode_end_segmented | ( | Recog * | recog | ) |
第1パスの終了処理(セグメント時)
入力が何らかの事由によって途中でセグメントされた時に,第1パスの認識処理を 終了して次回再開するための処理を行う.
まず,各認識処理インスタンスに対して,最尤単語系列を見付け,第1パスの 認識結果として格納する. また,認識失敗・入力棄却の時はエラーステータスをそ れぞれセットする.
そして,次回の認識で,次のセグメントの認識を,検出された末尾雑音 区間から再開するために,その末尾雑音区間を切り出しておく処理を呼ぶ.
recog | [in] engine instance |
参照元 get_back_trellis()・RealTimeParam().
呼出しグラフ:
void decode_end | ( | Recog * | recog | ) |
第1パスの終了処理
入力が最後まで処理されて終了したときに,第1パスの認識処理を 終了させる.
各認識処理インスタンスに対して,その時点での第1パスの最尤単語 系列を格納する. また,認識失敗・入力棄却の時はエラーステータスをそ れぞれセットする.
recog | [in] engine instance |
参照元 get_back_trellis()・RealTimeParam()・RealTimeTerminate().
呼出しグラフ:
フレーム同期ビーム探索メイン関数(バッチ処理用)
与えられた入力ベクトル列に対して第1パス(フレーム同期ビーム探索)を 行い,その結果を出力する. また全フレームに渡る単語終端を,第2パス のために単語トレリス構造体に格納する.
この関数は入力ベクトル列があらかじめ得られている場合に用いられる. 第1パスが入力と並列して実行されるオンライン認識の場合, この関数は用いられず,代わりにこのファイルで定義されている各サブ関数が 直接 realtime-1stpass.c 内から呼ばれる.
recog | [in] エンジンインスタンス |
参照元 j_recognize_stream_core().
呼出しグラフ:
boolean is_sil | ( | WORD_ID | w, | |
RecogProcess * | r | |||
) |
ショートポーズ単語かどうか判定
与えられた単語がショートポーズ単語であるかどうか調べる.
w | [in] 単語ID | |
r | [in] 音声認識処理インスタンス |
spsegment.c の 98 行で定義されています。
参照元 detect_end_of_segment()・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.c の 154 行で定義されています。
参照元 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.c の 194 行で定義されています。
参照元 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] 現在の入力フレーム |
spsegment.c の 262 行で定義されています。
参照元 decode_proceed().
呼出しグラフ:
void finalize_segment | ( | Recog * | recog | ) |
逐次デコーディングのための第1パス終了時の処理
逐次デコーディング使用時,この関数は finalize_1st_pass() 後に呼ばれ, そのセグメントの第1パスの終了処理を行う. 具体的には, 続く第2パスのための始終端単語のセット,および 次回デコーディングを再開するときのために,入力ベクトル列の未処理部分の コピーを rest_param に残す.
recog | [in] エンジンインスタンス |
spsegment.c の 632 行で定義されています。
参照元 decode_end()・decode_end_segmented().
呼出しグラフ:
巻き戻しと認識再開の必要性をチェックする.
音声認識処理において巻き戻しが必要がどうか調べ,必要な場合は フレーム数と,巻き戻した後に巻戻し分の認識処理を行うかどうかを返す.
recog | [in] engine instance | |
rf_ret | [out] length of frame to rewind | |
repro_ret | [out] TRUE if re-process is required after rewinding |
spsegment.c の 837 行で定義されています。
参照元 get_back_trellis()・proceed_one_frame().
呼出しグラフ:
巻き戻し処理
次回の入力処理の開始点を決定し,巻き戻し分パラメータを詰める. 再開指定の場合開始点はパラメータの先頭に,それ以外の場合は巻戻した 分だけ戻った位置にセットされる.
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.c の 910 行で定義されています。
参照元 get_back_trellis()・proceed_one_frame().
呼出しグラフ:
void outprob_style_cache_init | ( | WCHMM_INFO * | wchmm | ) |
語頭トライフォン変化用キャッシュの初期化
wchmm | [i/o] 木構造化辞書 |
outprob_style.c の 100 行で定義されています。
参照元 init_nodescore().
呼出しグラフ:
CD_Set* lcdset_lookup_with_category | ( | WCHMM_INFO * | wchmm, | |
HMM_Logical * | hmm, | |||
WORD_ID | category | |||
) |
単語末尾のトライフォンセット (pseudo phone set) を検索する.
文法認識では,各カテゴリごとに独立した pseudo phone set を用いる. ここでは単語末用カテゴリ付き pseudo phone set を検索する.
wchmm | [in] 木構造化辞書 | |
hmm | [in] 単語の末尾の HMM | |
category | [in] 単語の属するカテゴリ |
outprob_style.c の 144 行で定義されています。
参照元 lcdset_register_with_category()・outprob_style()・wchmm_add_word().
呼出しグラフ:
void lcdset_register_with_category_all | ( | WCHMM_INFO * | wchmm | ) |
全ての単語末用カテゴリ付き pseudo phone set を生成する.
辞書上のすべての単語について,その末尾に登場しうるカテゴリ付き pseudo phone set を生成する(文法認識用).
wchmm | [i/o] 木構造化辞書情報 |
outprob_style.c の 267 行で定義されています。
参照元 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.c の 317 行で定義されています。
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.c の 354 行で定義されています。
参照元 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.c の 520 行で定義されています。
参照元 lcdset_register_with_category()・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.c の 552 行で定義されています。
参照元 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] 認識処理インスタンス |
ngram_decode.c の 496 行で定義されています。
参照元 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] 認識処理インスタンス |
ngram_decode.c の 563 行で定義されています。
boolean ngram_acceptable | ( | NODE * | hypo, | |
RecogProcess * | r | |||
) |
受理判定
与えられた部分文仮説が,文(すなわち探索終了)として 受理可能であるかどうかを返す. N-gram では文頭に対応する無音単語 (silhead) であれば受理する.
hypo | [in] 部分文仮説 | |
r | [in] 認識処理インスタンス |
ngram_decode.c の 613 行で定義されています。
int dfa_firstwords | ( | NEXTWORD ** | nw, | |
int | peseqlen, | |||
int | maxnw, | |||
RecogProcess * | r | |||
) |
文法にしたがって,文頭に接続しうる単語を最初の予測単語群として返す.
nw | [out] 次単語集合の格納先へのポインタ | |
peseqlen | [in] 入力フレーム長 | |
maxnw | [in] nw の許される最大長 | |
r | [in] 認識プロセスインスタンス |
dfa_decode.c の 89 行で定義されています。
参照元 wchmm_fbs().
呼出しグラフ:
int dfa_nextwords | ( | NODE * | hypo, | |
NEXTWORD ** | nw, | |||
int | maxnw, | |||
RecogProcess * | r | |||
) |
部分文仮説に対して,文法に従って次に接続しうる単語群を返す.
hypo | [in] 展開元の部分文仮説 | |
nw | [out] 次単語集合の格納先へのポインタ | |
maxnw | [in] nw の許される最大長 | |
r | [in] 認識プロセスインスタンス |
dfa_decode.c の 155 行で定義されています。
boolean dfa_acceptable | ( | NODE * | hypo, | |
RecogProcess * | r | |||
) |
部分文仮説が文法上文として最終(受理可能)状態にあるかどうかを返す.
hypo | [in] 部分文仮説 | |
r | [in] 認識プロセスインスタンス |
dfa_decode.c の 222 行で定義されています。
boolean dfa_look_around | ( | NEXTWORD * | nword, | |
NODE * | hypo, | |||
RecogProcess * | r | |||
) |
次単語候補がその推定された接続予測点の前後の単語トレリス上に あるかどうかをチェックし,もしあればそのトレリス単語へのポインタをセット する.
なお最尤の接続点はあとで決まるので,ここでは最適なトレリス単語 でなくてよい.
nword | [i/o] 次単語候補 (対応するトレリス単語へのポインタが セットされる) | |
hypo | [in] 展開元仮説 | |
r | [in] 認識プロセスインスタンス |
dfa_decode.c の 267 行で定義されています。
void segment_set_last_nword | ( | NODE * | hypo, | |
RecogProcess * | r | |||
) |
認識結果から,次の入力区間の認識を開始する際の初期単語履歴をセットする.
透過語および仮説の重複を考慮して初期単語履歴が決定される.
hypo | [in] 現在の入力区間の認識結果としての文候補 | |
r | [in] 認識処理インスタンス |
search_bestfirst_main.c の 904 行で定義されています。
参照元 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.c の 1146 行で定義されています。
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.c の 1225 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
void clear_stocker | ( | StackDecode * | s | ) |
void free_node | ( | NODE * | node | ) |
仮説ノードの利用を終了してリサイクル用にストックする
node | [in] 仮説ノード |
search_bestfirst_v1.c の 170 行で定義されています。
参照元 free_all_nodes()・put_all_in_stack()・put_to_stack()・result_reorder_and_output().
呼出しグラフ:
仮説をコピーする.
dst | [out] コピー先の仮説 | |
src | [in] コピー元の仮説 |
search_bestfirst_v1.c の 247 行で定義されています。
参照元 last_next_word().
呼出しグラフ:
NODE* newnode | ( | RecogProcess * | r | ) |
新たな仮説ノードを割り付ける.
もし格納庫に以前試用されなくなった ノードがある場合はそれを再利用する. なければ新たに割り付ける.
r | [in] 認識処理インスタンス |
search_bestfirst_v1.c の 324 行で定義されています。
参照元 pass2_finalize_on_no_result().
呼出しグラフ:
void malloc_wordtrellis | ( | RecogProcess * | r | ) |
1単語分のトレリス計算用のワークエリアを確保.
r | [in] 認識処理インスタンス |
search_bestfirst_v1.c の 427 行で定義されています。
参照元 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.c の 585 行で定義されています。
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.c の 1378 行で定義されています。
void start_word | ( | NODE * | new, | |
NEXTWORD * | nword, | |||
HTK_Param * | param, | |||
RecogProcess * | r | |||
) |
与えられた単語から初期仮説を生成する.
new | [out] 新たに生成された仮説が格納される | |
nword | [in] 初期仮説単語の情報 | |
param | [in] 入力パラメータ列 | |
r | [in] 認識処理インスタンス |
search_bestfirst_v1.c の 1610 行で定義されています。
void last_next_word | ( | NODE * | now, | |
NODE * | new, | |||
HTK_Param * | param, | |||
RecogProcess * | r | |||
) |
終端処理:終端まで達した文仮説の最終的なスコアをセットする.
now | [in] 終端まで達した仮説 | |
new | [out] 最終的な文仮説のスコアを格納する場所へのポインタ | |
param | [in] 入力パラメータ列 | |
r | [in] 認識処理インスタンス |
search_bestfirst_v1.c の 1704 行で定義されています。
音声波形データから MFCC パラメータを抽出する.
エンジンインスタンス内の MFCC 計算インスタンスごとにパラメータ抽出が 行われ,それぞれの mfcc->param に格納される.
speech | [in] 音声波形データ | |
speechlen | [in] speech の長さ(単位:サンプル数) | |
recog | [in] エンジンインスタンス |
wav2mfcc.c の 85 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
void j_put_header | ( | FILE * | strm | ) |
void j_put_version | ( | FILE * | strm | ) |
void j_put_compile_defs | ( | FILE * | strm | ) |
void j_put_library_defs | ( | FILE * | strm | ) |
WCHMM_INFO* wchmm_new | ( | ) |
木構造化辞書構造体を新規に割り付ける.
参照元 j_launch_recognition_instance()・multigram_rebuild_wchmm().
呼出しグラフ:
void wchmm_free | ( | WCHMM_INFO * | w | ) |
木構造化辞書およびその内部の割付メモリを全て解放する.
w | [in] 木構造化辞書 |
参照元 j_recogprocess_free()・multigram_rebuild_wchmm().
呼出しグラフ:
void print_wchmm_info | ( | WCHMM_INFO * | wchmm | ) |
boolean build_wchmm | ( | WCHMM_INFO * | wchmm, | |
JCONF_LM * | lmconf | |||
) |
与えられた単語辞書と言語モデルから木構造化辞書を構築する.
この関数は 処理が遅く,Julianで"-oldtree"オプション指定時のみ使用されます. オプション 非指定時およびJuliusでは代わりに build_wchmm2() が用いられます.
wchmm | [i/o] 木構造化辞書 | |
lmconf | [in] 言語モデル(LM)設定パラメータ |
参照元 j_launch_recognition_instance()・multigram_rebuild_wchmm().
呼出しグラフ:
boolean build_wchmm2 | ( | WCHMM_INFO * | wchmm, | |
JCONF_LM * | lmconf | |||
) |
与えられた単語辞書と言語モデルから木構造化辞書を構築する.
この関数は bulid_wchmm() と同じ処理を行いますが, 最初に単語を音素列でソートして音素列の似た順に単語を並べるため, より高速に木構造化を行うことができる. とくにオプション指定をしない 限り,Julius/Julianではこちらが用いられる.
wchmm | [i/o] 木構造化辞書 | |
lmconf | [in] 言語モデル(LM)設定パラメータ |
参照元 j_launch_recognition_instance()・multigram_rebuild_wchmm().
呼出しグラフ:
void wchmm_check_interactive | ( | WCHMM_INFO * | wchmm | ) |
木構造化辞書の構造を起動時に対話的にチェックする際のコマンドループ
wchmm | [in] 木構造化辞書 |
wchmm_check.c の 328 行で定義されています。
参照元 j_launch_recognition_instance()・multigram_rebuild_wchmm().
呼出しグラフ:
void check_wchmm | ( | WCHMM_INFO * | wchmm | ) |
第1パス平行認識処理の初期化.
MFCC計算のワークエリア確保を行う. また必要な場合は,スペクトル減算用の ワークエリア準備,ノイズスペクトルのロード,CMN用の初期ケプストラム 平均データのロードなども行われる.
この関数は,システム起動後1回だけ呼ばれる.
recog | [i/o] engine instance |
realtime-1stpass.c の 220 行で定義されています。
参照元 j_final_fusion().
呼出しグラフ:
第1パス平行認識処理の準備
計算用変数をリセットし,各種データを準備する. この関数は,ある入力(あるいはセグメント)の認識が 始まる前に呼ばれる.
recog | [i/o] engine instance |
realtime-1stpass.c の 372 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
音声波形からパラメータベクトルを計算する.
窓単位で取り出された音声波形からMFCCベクトルを計算する. 計算結果は mfcc->tmpmfcc に保存される.
mfcc | [i/o] MFCC計算インスタンス | |
window | [in] 窓単位で取り出された音声波形データ | |
windowlen | [in] window の長さ |
realtime-1stpass.c の 476 行で定義されています。
参照元 j_recog_new().
呼出しグラフ:
第1パス平行音声認識処理のメイン
この関数内では,漸次的な特徴量抽出および第1パスの認識が行われる. 入力データに対して窓掛け・シフトを行いMFCC計算を行いながら, 音声認識を1フレームずつ並列実行する.
認識処理(decode_proceed())において,音声区間終了が要求される ことがある. この場合,未処理の音声を保存して第1パスを終了する よう呼出元に要求する.
SPSEGMENT_NAIST あるいは GMM_VAD などのバックエンドVAD定義時は,デコーダベースの VAD (音声区間開始検出)に伴うデコーディング制御が行われる. トリガ前は,認識処理が呼ばれるが,実際には各関数内で認識処理は 行われていない. 開始を検出した時,この関数はそこまでに得られた MFCC列を一定フレーム長分巻戻し,その巻戻し先から通常の認識処理を 再開する. なお,複数処理インスタンス間がある場合,開始トリガは どれかのインスタンスが検出した時点で全ての開始が同期される.
この関数は,音声入力ルーチンのコールバックとして呼ばれる. 音声データの数千サンプル録音ごとにこの関数が呼び出される.
Speech | [in] 音声データへのバッファへのポインタ | |
nowlen | [in] 音声データの長さ | |
recog | [i/o] engine instance |
realtime-1stpass.c の 787 行で定義されています。
参照元 j_recognize_stream_core()・RealTimeResume().
呼出しグラフ:
int RealTimeResume | ( | Recog * | recog | ) |
セグメントの認識再開処理
この関数はデコーダベースVADやショートポーズセグメンテーションによって 入力がセグメントに切られた場合に,その後の認識の再開に関する処理を行う. 具体的には,入力の認識を開始する前に,前回の入力セグメントにおける 巻戻し分のMFCC列から認識を開始する. さらに,前回のセグメンテーション時に 未処理だった残りの音声サンプルがあればそれも処理する.
recog | [i/o] エンジンインスタンス |
realtime-1stpass.c の 938 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
第1パス平行認識処理の終了処理を行う.
この関数は第1パス終了時に呼ばれ,入力長を確定したあと, decode_end() (セグメントで終了したときは decode_end_segmented())を 呼び出して第1パス終了処理を行う.
もし音声入力ストリームの終了によって認識が終わった場合(ファイル入力で 終端に達した場合など)は,デルタバッファに未処理の入力が残っているので, それをここで処理する.
recog | [i/o] エンジンインスタンス |
realtime-1stpass.c の 1105 行で定義されています。
ケプストラム平均の更新.
次回の認識に備えて,入力データからCMN用のケプストラム平均を更新する.
mfcc | [i/o] 計算対象の MFCC計算インスタンス | |
recog | [i/o] エンジンインスタンス |
realtime-1stpass.c の 1357 行で定義されています。
void RealTimeTerminate | ( | Recog * | recog | ) |
void realbeam_free | ( | Recog * | recog | ) |
第1パス並行処理のためのワークエリアを開放する
recog | [in] engine instance |
realtime-1stpass.c の 1442 行で定義されています。
参照元 j_recog_free().
recog |
ad_check |
realtime-1stpass.c の 1484 行で定義されています。
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.c の 370 行で定義されています。
参照元 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.c の 431 行で定義されています。
参照元 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.c の 492 行で定義されています。
参照元 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.c の 398 行で定義されています。
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.c の 459 行で定義されています。
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.c の 520 行で定義されています。
void do_alignment_all | ( | RecogProcess * | r, | |
HTK_Param * | param | |||
) |
認識結果に対して必要なアラインメントを全て実行する.
r | [i/o] 認識処理インスタンス | |
param | [in] 入力特徴ベクトル列 |
word_align.c の 547 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
char* filepath | ( | char * | filename, | |
char * | dirname | |||
) |
相対パスをフルパスに変換する.
ファイルのパス名が相対パスであれば,カレントディレクトリをつけた フルパスに変換して返す. 絶対パスであれば,そのまま返す.
filename | [in] ファイルのパス名 | |
dirname | [in] カレントディレクトリのパス名 |
m_options.c の 58 行で定義されています。
参照元 multigram_add_prefix_filelist()・multigram_add_prefix_list()・opt_parse().
オプション解析.
argc | [in] argv に含まれる引数の数 | |
argv | [in] 引数値(文字列)の配列 | |
cwd | [in] カレントディレクトリ | |
jconf | [out] 値を格納するjconf構造体 |
m_options.c の 174 行で定義されています。
参照元 config_file_parse()・j_config_load_args()・j_config_load_args_new().
呼出しグラフ:
void opt_release | ( | Jconf * | jconf | ) |
オプション関連のメモリ領域を解放する.
jconf | [i/o] jconf configuration data |
m_options.c の 1390 行で定義されています。
参照元 j_jconf_free().
呼出しグラフ:
void get_dirname | ( | char * | path | ) |
ファイルのパス名からディレクトリ名を抜き出す.
最後の '/' は残される.
path | [i/o] ファイルのパス名(関数内で変更される) |
jconf 設定ファイルを読み込んで解析し,対応するオプションを設定する.
conffile | [in] jconf ファイルのパス名 | |
jconf | [out] 値をセットする jconf 設定データ |
参照元 j_config_load_file()・j_config_load_file_new()・opt_parse().
呼出しグラフ:
boolean checkpath | ( | char * | filename | ) |
ファイルが存在して読み込み可能かチェックする.
filename | [in] ファイルパス名 |
m_chkparam.c の 49 行で定義されています。
参照元 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.c の 437 行で定義されています。
参照元 j_launch_recognition_instance()・multigram_rebuild_wchmm().
呼出しグラフ:
void print_jconf_overview | ( | Jconf * | jconf | ) |
全体設定パラメータ内のモジュール構成の概要をログに出力する.
jconf | [in] global configuration variables |
参照元 j_jconf_finalize()・print_engine_info().
呼出しグラフ:
void print_engine_info | ( | Recog * | recog | ) |
void create_mfcc_calc_instances | ( | Recog * | recog | ) |
全てのAM処理インスタンスおよびGMM用に,MFCC計算インスタンスを生成する.
2つ以上のAM処理インスタンス(およびGMM)が同一の特徴量計算条件を持 つ場合,それらのインスタンスはひとつの MFCC 計算インスタンスを共有する.
recog | [i/o] engine instance |
m_fusion.c の 826 行で定義されています。
参照元 j_final_fusion().
呼出しグラフ:
void hmm_check | ( | RecogProcess * | r | ) |
コマンドライン上でトライフォンのチェックを行なうモード ("-check triphone").
r | [in] 認識処理インスタンス |
hmm_check.c の 303 行で定義されています。
参照元 j_launch_recognition_instance().
呼出しグラフ:
void gmm_prepare | ( | Recog * | recog | ) |
void gmm_proceed | ( | Recog * | recog | ) |
与えられた入力ベクトル列上のあるフレームについて,全GMMのスコアを計算し, 計算結果を gmm_score に積算する.
GMM_VAD 定義時は,後で VAD 判定するために,過去 jconf->detect.gmm_margin フレーム分の VAD スコア (音声GMMの最大スコア - 雑音GMMの最大スコア)が 保存される.
recog | [i/o] エンジンインスタンス |
参照元 decode_proceed().
呼出しグラフ:
void gmm_end | ( | Recog * | recog | ) |
GMMの計算を終了し,結果を出力する.
gmm_proceed() によって累積された各フレームごとのスコアから, 最大スコアのGMMを決定する. その事後確率に基づく信頼度を計算し 最終的な結果を result_gmm() によって出力する.
recog | [i/o] エンジンインスタンス |
参照元 decode_end()・decode_end_segmented().
呼出しグラフ:
GMMの識別結果,最後の入力が音声入力として有効であったか 無効であったかを返す.
recog | [i/o] エンジンインスタンス |
参照元 j_recognize_stream_core().
呼出しグラフ:
void gmm_free | ( | Recog * | recog | ) |
void wordgraph_init | ( | WCHMM_INFO * | wchmm | ) |
グラフ出力を初期化する.
現在はデバッグ用処理のみ.
wchmm | [in] 木構造化辞書 |
graphout.c の 54 行で定義されています。
参照元 wchmm_fbs().
呼出しグラフ:
void wordgraph_free | ( | WordGraph * | wg | ) |
あるグラフ単語のメモリ領域を解放する.
wg | [in] グラフ単語 |
graphout.c の 181 行で定義されています。
参照元 free_node()・wordgraph_clean()・wordgraph_exec_erase().
呼出しグラフ:
グラフ単語の情報をテキストで出力する.
内容は以下のとおり:
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.c の 2193 行で定義されています。
参照元 graph_forward_backward()・result_confnet()・wordgraph_check_coherence()・wordgraph_dump().
呼出しグラフ:
生成された単語グラフ中の全単語をテキスト出力する.
fp | [in] 出力先のファイルポインタ | |
root | [in] 単語グラフのルートノードへのポインタ | |
winfo | [in] 単語辞書 |
graphout.c の 2252 行で定義されています。
参照元 graph_forward_backward()・outfile_graph()・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.c の 1901 行で定義されています。
右コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.
wg | [i/o] 調べるグラフ単語 | |
right | [in] このグラフ単語が wg の右コンテキストにあるかチェックする | |
lscore | [in] 接続言語スコア |
graphout.c の 347 行で定義されています。
呼出しグラフ:
左コンテキストに指定したグラフ単語が既にあるかどうかチェックし, なければ追加する.
wg | [i/o] 調べるグラフ単語 | |
left | [in] このグラフ単語が wg の左コンテキストにあるかチェックする | |
lscore | [in] 接続言語スコア |
graphout.c の 295 行で定義されています。
呼出しグラフ:
グラフ単語候補を単語グラフの一部として確定する.
確定されたグラフ単語には saved に TRUE がセットされる.
wg | [i/o] 登録するグラフ単語候補 | |
right | [i/o] wg の右コンテキストとなる単語 | |
root | [i/o] 確定済み単語グラフのルートノードへのポインタ |
graphout.c の 1957 行で定義されています。
WordGraph* wordgraph_check_merge | ( | WordGraph * | now, | |
WordGraph ** | root, | |||
WORD_ID | next_wid, | |||
boolean * | merged_p, | |||
JCONF_SEARCH * | jconf | |||
) |
ある単語グラフ候補について,既に確定したグラフ単語中に同じ位置に 同じ単語があるかどうかを調べる.
もしあれば,単語グラフ候補の コンテキストをその確定済みグラフ単語にマージする.
GRAPHOUT_SEARCH定義時は,さらにここで探索を中止すべきかどうかも判定する. すなわち,次単語仮説がそのグラフ単語の左コンテキストとして既に確定した グラフ単語中にあれば,それ以上の展開は不要で探索を中止すべきと判定する.
now | [i/o] 単語グラフ候補 | |
root | [i/o] 確定済み単語グラフのルートノードへのポインタ | |
next_wid | [in] 次単語仮説 | |
merged_p | [out] 探索を中止すべきなら TRUE,続行してよければ FALSE が格納される (GRAPHOUT_SEARCH 定義時) | |
jconf | [in] 探索用設定パラメータ |
graphout.c の 2020 行で定義されています。
void wordgraph_purge_leaf_nodes | ( | WordGraph ** | rootp, | |
RecogProcess * | r | |||
) |
グラフ後処理その1:初期単語グラフの抽出.
探索中に生成された単語候補集合から,末端から始まるパス上に無いleaf単語を 削除することで初期単語グラフを抽出する.
rootp | [i/o] 単語グラフのルートノードへのポインタ | |
r | [in] 認識処理インスタンス |
graphout.c の 941 行で定義されています。
void wordgraph_depth_cut | ( | WordGraph ** | rootp, | |
RecogProcess * | r | |||
) |
グラフ後処理その1.
5:グラフの深さによる単語候補のカット
GRAPHOUT_DEPTHCUT 指定時,グラフの深さによる単語候補のカットを行う.
rootp | [i/o] 単語グラフのルートノードへのポインタ | |
r | [in] 認識処理インスタンス |
graphout.c の 1050 行で定義されています。
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.c の 1595 行で定義されています。
void wordgraph_clean | ( | WordGraph ** | rootp | ) |
単語グラフ内の全単語を全て解放する.
rootp | [i/o] 単語グラフのルートノードへのポインタ |
graphout.c の 871 行で定義されています。
参照元 clear_result().
呼出しグラフ:
void wordgraph_compaction_thesame | ( | WordGraph ** | rootp | ) |
グラフ後処理その3:単語の束ね(完全同一)
単語境界時刻と部分文仮説スコアが完全に一致する同じ単語どうしを一つに束ねる.
rootp | [i/o] 単語グラフのルートノードへのポインタ |
graphout.c の 1671 行で定義されています。
void wordgraph_compaction_exacttime | ( | WordGraph ** | rootp, | |
RecogProcess * | r | |||
) |
グラフ後処理その4:単語の束ね(区間同一)
単語境界時刻が一致する同じ単語どうしを一つに束ねる. スコアが 同一でなくても束ねられる. この場合,部分文スコアが最も高い候補が 残る. graph_merge_neighbor_range が 負 の場合は実行されない.
rootp | [i/o] 単語グラフのルートノードへのポインタ | |
r | [i/o] 認識処理インスタンス |
graphout.c の 1709 行で定義されています。
void wordgraph_compaction_neighbor | ( | WordGraph ** | rootp, | |
RecogProcess * | r | |||
) |
グラフ後処理その5:単語の束ね(近傍区間)
似た単語境界時刻を持つ同じ単語どうしを一つに束ねる. 許すずれの幅は graph_merge_neighbor_range で与え,これが 0 か負である場合は実行されない.
rootp | [i/o] 単語グラフのルートノードへのポインタ | |
r | [i/o] 認識処理インスタンス |
graphout.c の 1795 行で定義されています。
int wordgraph_sort_and_annotate_id | ( | WordGraph ** | rootp, | |
RecogProcess * | r | |||
) |
単語グラフ内の全単語を開始時間順にソートし,通し番号をつける.
rootp | [i/o] 単語グラフのルートノードへのポインタ格納場所 | |
r | [i/o] 認識処理インスタンス |
graphout.c の 820 行で定義されています。
void wordgraph_check_coherence | ( | WordGraph * | rootp, | |
RecogProcess * | r | |||
) |
デバッグ用:単語グラフの整合性をチェックする.
rootp | [in] 単語グラフのルートノードへのポインタ | |
r | [i/o] 認識処理インスタンス |
graphout.c の 2281 行で定義されています。
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.c の 2430 行で定義されています。
void jconf_set_default_values | ( | Jconf * | j | ) |
パラメータ構造体 Jconf に初期値を代入する.
ここで値が初期化されるのは,Jconf 自身に格納される値のみである. 下位の構造(AM, LM, SEARCH)のパラメータはセットしないので, それぞれ別の関数で初期化する必要が有る.
j | [in] パラメータ構造体 |
参照元 j_jconf_new().
呼出しグラフ:
void jconf_set_default_values_am | ( | JCONF_AM * | j | ) |
void jconf_set_default_values_lm | ( | JCONF_LM * | j | ) |
void jconf_set_default_values_search | ( | JCONF_SEARCH * | j | ) |
boolean multigram_load_all_gramlist | ( | PROCESS_LM * | lm | ) |
起動時に指定されたすべての文法をロードする.
lm | [i/o] 言語処理インスタンス |
multi-gram.c の 886 行で定義されています。
参照元 j_load_lm().
呼出しグラフ:
void multigram_free_all | ( | MULTIGRAM * | root | ) |
保持している文法をすべて解放する。
root | [in] root pointer of grammar list |
multi-gram.c の 1027 行で定義されています。
参照元 j_process_lm_free().
呼出しグラフ:
音声切り出し用各種パラメータをセット
設定を元に切り出し用のパラメータを計算し,ワークエリアにセットします.
adin | [in] AD-in work area | |
jconf | [in] configuration data |
adin-cut.c の 138 行で定義されています。
参照元 adin_setup_all().
呼出しグラフ:
バッファを初期化して A/D-in スレッドを開始する.
recog | [in] engine instance |
adin-cut.c の 976 行で定義されています。
参照元 j_open_stream().
呼出しグラフ:
A/D-in スレッドを終了する
recog | [in] engine instance |
adin-cut.c の 1019 行で定義されています。
参照元 j_close_stream().
呼出しグラフ:
入力処理を行うトップ関数
スレッドモードでは,この関数は 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 |
adin-cut.c の 1234 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
デバイス依存の初期化関数を呼び出す.
a | [in] A/D-in work area | |
freq | [in] sampling frequency | |
arg | [in] device-dependent argument |
adin-cut.c の 1265 行で定義されています。
参照元 adin_setup_all().
呼出しグラフ:
音の取り込みを開始するデバイス依存の関数を呼び出す.
a | [in] A/D-in work area |
adin-cut.c の 1288 行で定義されています。
参照元 j_open_stream().
呼出しグラフ:
音の取り込みを終了するデバイス依存の関数を呼び出す.
a | [in] A/D-in work area |
adin-cut.c の 1313 行で定義されています。
参照元 j_close_stream()・j_recognize_stream_core().
呼出しグラフ:
void adin_free_param | ( | Recog * | recog | ) |
音取り込み用ワークエリアのメモリを開放する.
recog | [in] engine instance |
adin-cut.c の 1337 行で定義されています。
参照元 j_recog_free().
呼出しグラフ:
CN_CLUSTER* confnet_create | ( | WordGraph * | root, | |
RecogProcess * | r | |||
) |
void graph_make_order | ( | WordGraph * | root, | |
RecogProcess * | r | |||
) |
void cn_free_all | ( | CN_CLUSTER ** | croot | ) |
Free all cluster holders.
croot | [out] pointer to root pointer of cluster holder list. |
参照元 clear_result().
呼出しグラフ:
void callback_init | ( | Recog * | recog | ) |
コールバック管理エリアの初期化
recog | [i/o] engine instance |
callback.c の 53 行で定義されています。
参照元 j_recog_new().
呼出しグラフ:
void callback_exec | ( | int | code, | |
Recog * | recog | |||
) |
コールバックレジストリに登録されている関数を全て実行する.
code | [in] callback code | |
recog | [in] engine instance. |
callback.c の 233 行で定義されています。
参照元 adin_go()・callback_check_in_adin()・decode_proceed()・get_back_trellis()・gmm_end()・j_open_stream()・j_recognize_stream()・j_recognize_stream_core()・proceed_one_frame()・RealTimeParam()・RealTimeResume()・result_error().
呼出しグラフ:
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.c の 265 行で定義されています。
参照元 adin_cut().
呼出しグラフ:
検出された音をバッファに保存する adin_go() コールバック
この関数は,検出された音声入力を順次 recog->speech に記録して いく. バッファ処理モード(=非リアルタイムモード)で認識を行なう ときに用いられる.
now | [in] 検出された音声波形データの断片 | |
len | [in] now の長さ(サンプル数) | |
recog | [i/o] エンジンインスタンス |
recogmain.c の 385 行で定義されています。
SentenceAlign* result_align_new | ( | ) |
void result_align_free | ( | SentenceAlign * | a | ) |
void result_sentence_malloc | ( | RecogProcess * | r, | |
int | num | |||
) |
認識結果の格納場所を確保する.
r | [out] recognition process instance | |
num | [in] number of sentences to be output |
recogmain.c の 270 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
void result_sentence_free | ( | RecogProcess * | r | ) |
認識結果の格納場所を解放する.
r | [i/o] recognition process instance |
recogmain.c の 292 行で定義されています。
参照元 clear_result().
呼出しグラフ:
void clear_result | ( | RecogProcess * | r | ) |
認識結果の格納場所を全てクリアする.
r | [in] recognition process instance. |
recogmain.c の 324 行で定義されています。
参照元 j_recognize_stream_core().
呼出しグラフ:
boolean plugin_load_file | ( | char * | file | ) |
Load a plugin file.
file | [in] plugin file path |
参照元 plugin_load_dir().
boolean plugin_load_dir | ( | char * | dir | ) |
Search for plugin file in a directory and load them.
dir | [in] directory |
参照元 plugin_load_dirs().
void plugin_load_dirs | ( | char * | dirent | ) |
read in plugins in multiple directories
dirent | [i/o] directory entry in form of "dir1:dir2:dir3:...". |
参照元 opt_parse().