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

📄 dec_write_3.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: dec_write_3.cc//// system include files//#include <memory.h>#include <string.h>// isip include files//#include "decoder.h"#include "decoder_constants.h" // method: write_output_cc//// arguments://  char_1*& nbest_hypo: (input/output) output string pointer//  Path_list* final_plist: (input) final partial path list//// return: logical_1 indicating status//// this method writes the decoder output hypothesis to file// Note: for Communicator calling//logical_1 Decoder::write_nbest_cc(char_1*& nbest_hypo_a, Path_list* final_plist_a) {  // check file  //  if (nbest_hypo_a == (char_1*)NULL) {    error_handler_cc((char_1*)"write_nbest_cc",                     (char_1*)"NULL input nbest_hypo pointer");  }  nbest_hypo_a[0] = '\0';  char_1* tmp_hypo = nbest_hypo_a;    // dummy variables  //  int_4 num_paths = (int_4)0;  int_4 frame_index = (int_4)0;  static char_1* hypothesis = new char_1[ISIP_MAX_STRING_LENGTH];  static char_1* temp_string = new char_1[ISIP_MAX_STRING_LENGTH];  Lattice_node* lat_node = (Lattice_node*)NULL;  Link_node* next_pnode = (Link_node*)NULL;  Nbest_node* nnode = (Nbest_node*)NULL;  Nbest_node* prev_node = (Nbest_node*)NULL;  Word* word = (Word*)NULL;  Hash_table* hyp_table = new Hash_table((int_4)ISIP_2EXP16);  Hash_cell* hyp_cell = (Hash_cell*)NULL;  Memory_manager* manager = Link_list::get_manager_cc();    // get the partial paths list  //  Link_list* path_list = final_plist_a->get_paths_cc();  // loop through this list and get unique nbest hypothesis  //  if (path_list != (Link_list*)NULL) {    for (Link_node* node = path_list->get_head_cc();	 node != (Link_node*)NULL; node = next_pnode) {            // get the nbest node and the lattice node corresponding to this      // partial path      //      nnode = (Nbest_node*)(node->get_item_cc());      lat_node = nnode->get_lnode_cc();      frame_index = lat_node->get_frame_index_cc();	            word = lat_node->get_word_cc();      prev_node = nnode;            // back track through the nbest nodes corresponding to this      // partial path and populate the hypothesis      //      while(word != (Word*)NULL) {	// add word to hypothesis	//	sprintf((char*)temp_string, "%s %s", (char*)word->get_name_cc(),		(char*)hypothesis);	strcpy((char*)hypothesis, (char*)temp_string);		// get the previous node/word	//	prev_node = prev_node->get_prev_cc();	lat_node = prev_node->get_lnode_cc();	frame_index = lat_node->get_frame_index_cc();	word = lat_node->get_word_cc();      }      // get next partial hypothesis in the final list      //      next_pnode=node->get_next_cc();            // see if this hypothesis exists in the hash table      //      hyp_cell = hyp_table->hash_lookup_cc(hypothesis);            // if the hypothesis already exists, remove this node from the path list      // this can be done because the list already ordered      //      if (hyp_cell != (Hash_cell*)NULL) {	// remove the nbest node form the final list	//	delete nnode;	// free the corresponding link node	//	path_list->remove_cc(node);      }      // else add to the hypothesis table      //      else {	hyp_cell = manager->new_hash_cc();	hyp_cell->set_cc(hypothesis, (void_p)nnode);	hyp_table->hash_insert_cc(hyp_cell);      }	      // print the hypothesis and reset the string      //      memset(hypothesis, (int_4)0, strlen((char*)hypothesis));      memset(temp_string, (int_4)0, strlen((char*)temp_string));    }  }  // get the partial paths list  //  path_list = final_plist_a->get_paths_cc();    // loop through this list and print the unique nbest hypothesis  //  if (path_list != (Link_list*)NULL) {    for (Link_node* node = path_list->get_head_cc();	 node != (Link_node*)NULL && num_paths < num_nbest_d;	 node = next_pnode) {            // get the nbest node and the lattice node corresponding to this      // partial path      //      nnode = (Nbest_node*)(node->get_item_cc());      lat_node = nnode->get_lnode_cc();      frame_index = lat_node->get_frame_index_cc();	            word = lat_node->get_word_cc();      prev_node = nnode;            // get the hypothesis if there is any      //      if (word != NULL) {	// get the utterance score	//	sprintf((char*)hypothesis, "%d %f", (int)frame_d, nnode->get_score_cc());		// back track through the nbest nodes corresponding to this	// partial path and populate the hypothesis	//	while(word != (Word*)NULL) {	  	  // add word to hypothesis	  //	  sprintf((char*)temp_string, "%s %s", (char*)word->get_name_cc(),		  (char*)hypothesis);	  strcpy((char*)hypothesis, (char*)temp_string);	  	  // get the previous node/word	  //	  prev_node = prev_node->get_prev_cc();	  lat_node = prev_node->get_lnode_cc();	  frame_index = lat_node->get_frame_index_cc();	  word = lat_node->get_word_cc();	}		// print the hypothesis	//	tmp_hypo += sprintf((char*)tmp_hypo, "%s\n", (char_1*)hypothesis);      }            // get next partial hypothesis in the final list      //      next_pnode=node->get_next_cc();      // increment number of paths hypothesized so far      //      num_paths++;            // print the hypothesis and reset the string      //      memset(hypothesis, (int_4)0, strlen((char*)hypothesis));      memset(temp_string, (int_4)0, strlen((char*)temp_string));    }  }  // clean up the hash table  //  // remove the hash table of nbest nodes  //  Hash_cell** hcells = hyp_table->get_cells_cc();  Hash_cell* hcell = (Hash_cell*)NULL;  int_4 hsize = hyp_table->get_size_cc();  for (int_4 k = 0; k < hsize; k++) {    for (Hash_cell* cell = hcells[k]; cell != (Hash_cell*)NULL;         cell = hcell) {      hcell = cell->get_next_cc();      manager_d->delete_cc(cell);    }    hcells[k] = (Hash_cell*)NULL;  }  delete hyp_table;    // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

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