⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dec_clean_1.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: dec_clean_1.cc//// system include files//#include <string.h>// isip include files//#include "decoder.h"#include "decoder_constants.h" // method: reset_cc//// arguments: none//// return: logical_1 indicating status//// this method resets and re-allocates if necessary the decoder// contents that need to be cleaned up before decoding a new utterance//logical_1 Decoder::reset_cc() {  // dummy variables  //  int_4 index = (int_4)0;  void_p startnode = (void_p)NULL;  Hash_cell* icell = (Hash_cell*)NULL;  Word* word_null = (Word*)NULL;  Lattice_node* latnode = (Lattice_node*)NULL;  Lex_tree* tree = (Lex_tree*)NULL;  Lex_node* lxn = (Lex_node*)NULL;  History* hist = (History*)NULL;  void_p* hist_word = (void_p*)NULL;  Instance* inst = (Instance*)NULL;  Trace* tr = (Trace*)NULL;  // reset the memory manager if necessary  //  if (restructure_memory_d == ISIP_TRUE) {    manager_d->reorder_blocks_cc();  }    // reset frame index  //  frame_d = (int_4)0;    // initialize the history list  //  history_list_d = new Link_list();    // allocate a new instance table  //  inst_table_d = new Hash_table((int_4)ISIP_2EXP16, HASH_TABLE_LONG_DRIVEN);    // initialize the active instance list  //  inst_count_d = (int_4)0;  inst_list_d = new Link_list();    // initialize the word-level lists  //  for (int_4 i = 0; i < num_words_d; i++) {    active_words_d[i] = (int_4)-1;    word_trlist_d[i] = (Link_list*)NULL;    word_scores_d[i] = DEC_DEFAULT_SCORE;  }    // initialize the model level lists  //  for (int_4 i = 0; i < num_cd_d; i++) {    active_models_d[i] = (int_4)-1;    model_trlist_d[i] = (Link_list*)NULL;    cd_models_d[i]->set_active_cc(ISIP_FALSE);  }    // initialize the nbest array  //  for (int_4 i = 0; i < num_nbest_d; i++) {    nbest_d[i] = (Trace*)NULL;  }      // reset states in the models  //  for (int_4 i = 0; i < num_states_d; i++) {    states_d[i]->set_frame_cc(frame_d);    states_d[i]->set_score_cc((float_4)0);  }      // initialize counts, beams and scores  //  frame_d = (int_4)0;  num_active_models_d = (int_4)0;  num_active_words_d = (int_4)0;  num_hyps_d = (int_4)0;  mapmi_thresh_d = DEC_DEFAULT_SCORE;  wordend_thresh_d = DEC_DEFAULT_SCORE;    for (int_4 i = 0; i < num_levels_d; i++) {    num_traces_total_d[i] = (int_4)0;    num_traces_gen_d[i] = (int_4)0;    num_traces_del_d[i] = (int_4)0;    total_gen_d[i] = (int_4)0;    total_del_d[i] = (int_4)0;    // note that this is not set to default instance score to allow for    // instance to be pruned even when beams are not specified by the    // user or are set to zero    //    beam_thresh_d[i] = INSTANCE_ACTIVE_SCORE;    max_score_d[i] = INSTANCE_ACTIVE_SCORE;  }        // create a sentence start trace  //  tr = manager_d->new_trace_cc();      tr->set_level_cc(DEC_WORD_LEVEL);  tr->set_score_cc((float_4)0);    // initialize the active word list with the null word  //  word_null = (Word*)((lexicon_d->hash_lookup_cc(WRD_NULL))->get_item_cc());  index = word_null->get_index_cc();  active_words_d[num_active_words_d++] = index;    // insert the start trace in the correct list  //  word_trlist_d[index] = new Link_list();  word_trlist_d[index]->insert_cc(tr);  num_traces_gen_d[DEC_WORD_LEVEL]++;    // if this function mode requires lattice input  //  if ((function_mode_d == DEC_LATTICE_RESCORE_FUNCTION) ||      (function_mode_d == DEC_LATTICE_VERIFY_FUNCTION)  ||      (function_mode_d == DEC_LATTICE_LATTICE_FUNCTION) ||      (function_mode_d == DEC_FORCE_ALIGN_FUNCTION)) {        // initialize list to store the active lexical trees    //    lextree_list_d = new Link_list();    // set the word information for the start trace    //    latnode = lattice_d->get_start_node_cc();    startnode = latnode;    hist_word = next_histwords_cc((void_p*)NULL, (void_p)startnode);        // set the history to the start node    //    hist = manager_d->new_hist_cc();    hist->init_cc(hist_word, DEC_WORD_LEVEL, sil_model_d, (int_4)0,		  frame_d, (float_4)0);    hist->set_type_cc(HISTORY_WORDGRAPH);    tr->set_hist_cc(hist);    history_list_d->insert_cc((void_p)hist);        // set the lexical information for the start trace    // create a new tree if one doesn't exist    //    tree = latnode->get_lex_tree_cc();    if (tree == (Lex_tree*)NULL) {            // build a start tree with the appropriate LM look-ahead      //      tree = new Lex_tree(startnode);            // set the appropriate params in the lattice node      //      latnode->set_lex_tree_cc(tree);            // insert it in the list of active trees      //      lextree_list_d->insert_cc(tree);    }  } // end if lattice mode    // otherwise if this is ngram lm decoding mode  //  else if ((function_mode_d == DEC_NGRAM_DECODE_FUNCTION) ||	   (function_mode_d == DEC_LATTICE_GENERATE_FUNCTION)) {    // set the history to the start node    //    hist = manager_d->new_hist_cc();    hist_word = next_histwords_cc((void_p*)NULL, (void_p)startnode);        hist->init_cc(hist_word, DEC_WORD_LEVEL, sil_model_d, (int_4)0,		  frame_d, (float_4)0);    hist->set_type_cc(HISTORY_NGRAM);    tr->set_hist_cc(hist);    history_list_d->insert_cc((void_p)hist);        // set the lexical tree    //    tree = (Lex_tree*)(lextree_list_d->get_head_cc()->get_item_cc());      } // end if ngram mode  // create a new instance for this trace  //  lxn = tree->get_head_cc();  inst = manager_d->new_instance_cc();  inst->set_params_cc(lxn, sil_model_d);    // put it in the instance table  //  index = 0;  int_4 hist_len = History::get_hist_len_cc();  int_4* hash_key = new int_4[hist_len + 2];  memset(hash_key, 0, (hist_len+2) * sizeof(int_4));  hash_key[0] = sil_model_d;  hash_key[1] = (int_4)lxn;  if (hist_word != (void_p*)NULL) {    while (index < hist_len && hist_word[index] != (void_p)NULL) {      hash_key[index + 2] = (int_4)hist_word[index];      index++;    }  }    icell = manager_d->new_hash_cc();  icell->set_cc(hash_key, hist_len + 2, (void_p)inst);  inst_table_d->hash_insert_cc(icell);  // delete the hash_key  //  delete [] hash_key;    // insert the instance in the active instance list  //  inst->set_frame_cc(frame_d);  inst->set_score_cc(INSTANCE_ACTIVE_SCORE);  inst_list_d->insert_cc((void_p)inst);  inst_count_d++;    // set the instance in the trace  //  tr->set_inst_cc(inst);    // update counts  //  for (int_4 i = 0; i < num_levels_d; i++) {    total_gen_d[i] += num_traces_gen_d[i];    total_del_d[i] += num_traces_del_d[i];    num_traces_total_d[i] += (num_traces_gen_d[i] - num_traces_del_d[i]);  }    // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -