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

📄 ht_print_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: ht_print_0.cc//// isip include files//#include "hmm_train.h"#include "hmm_train_constants.h"// method: print_hyps_cc//// arguments://  int_4 hyps : (input) number of hypotheses//  char_1* file : (input) name of output file//  Train_Trace** array : (input) array of nbest hypotheses//  int_4 frame_a : (input) the current frame index//  Train_Phone** phones : (input) list of phone models//  int_4 ph_size : (input) size of phone context//  int_4* ngen : (input) number of traces generated//  int_4* ndel : (number of traces deleted//  int_4* ntr : (output) total number of active traces//// return: a logical_1 flag indicating success//// this method dumps the n-best hypotheses to the output file//logical_1 print_hyps_cc(int_4 hyps_a, char_1* file_a, Train_Trace** array_a,			int_4 frame_a, Train_Phone** phones_a, int_4 ph_size_a,			int_4* ngen_a, int_4* ndel_a, int_4* ntr_a) {    // dummy variables  //  Train_Trace* tr = (Train_Trace*)NULL;  Train_Trace* btr = (Train_Trace*)NULL;  Train_Trace** back = (Train_Trace**)NULL;  Train_Word* word = (Train_Word*)NULL;  Train_Phone* phone = (Train_Phone*)NULL;  Train_Link_list* trlist = (Train_Link_list*)NULL;    int_4 frm = (int_4)0;  int_4 pfrm = (int_4)0;    float_8 score = (float_8)0;  float_8 presc = (float_8)0;  float_8 wdsc = (float_8)0;  int_4 phn = (int_4)0;  Train_Lex_node* lex_node = (Train_Lex_node*)NULL;  Train_Lattice_node* lat_node = (Train_Lattice_node*)NULL;  int_4 level = HT_WORD_LEVEL;  // print the n-best list of word-hypotheses to file  //  FILE* fp = fopen((char*)file_a, "w");  if (fp == (FILE*)NULL) {    fprintf(stdout, "Cannot open output file %s\n", file_a);    exit(ISIP_PROTO_ERROR);  }    // output the number of traces  //  fprintf(fp, "%-8s = %8ld\n\n", "Time", frame_a);  fprintf(fp, "%16s %8s %8s %8s\n", "Train_Word", "Train_Phone", "Train_State", "Total");  fprintf(fp, "%-8s %8ld %8ld %8ld %8ld\n", "Live", ntr_a[HT_WORD_LEVEL],	  ntr_a[HT_PHONE_LEVEL], ntr_a[HT_STATE_LEVEL],	  ntr_a[HT_WORD_LEVEL] + ntr_a[HT_PHONE_LEVEL] +	  ntr_a[HT_STATE_LEVEL]);  fprintf(fp, "%-8s %8ld %8ld %8ld %8ld\n", "New", ngen_a[HT_WORD_LEVEL],	  ngen_a[HT_PHONE_LEVEL], ngen_a[HT_STATE_LEVEL],	  ngen_a[HT_WORD_LEVEL] + ngen_a[HT_PHONE_LEVEL] +	  ngen_a[HT_STATE_LEVEL]);  fprintf(fp, "%-8s %8ld %8ld %8ld %8ld\n", "Deleted", ndel_a[HT_WORD_LEVEL],	  ndel_a[HT_PHONE_LEVEL], ndel_a[HT_STATE_LEVEL],	  ndel_a[HT_WORD_LEVEL] + ndel_a[HT_PHONE_LEVEL] +	  ndel_a[HT_STATE_LEVEL]);    // print the n-best word hypotheses  //  for (int_4 ff = 0; ff < hyps_a; ff++) {    // initialize variables    //    trlist = new Train_Link_list();    score = (float_8)0;    presc = (float_8)0;    wdsc = (float_8)0;    frm = (int_4)0;    pfrm = (int_4)0;    // put the traces in the right order    //    for (tr = array_a[ff]; tr != (Train_Trace*)NULL; tr = btr) {      trlist->insert_cc(tr);      back = tr->get_back_ptr_cc();      if (back != (Train_Trace**)NULL) {	btr = back[0];      }      else {	break;      }    }    // now loop again and output data    //    Train_Link_node* nd = trlist->get_curr_cc();     while (nd != (Train_Link_node*)NULL) {      // get the trace      //      tr = (Train_Trace*)(nd->get_item_cc());      // get the trace params      //      frm = tr->get_frame_ind_cc();      // make sure this is not start trace      //      if (frm > (int_4)0) {	// get the params	//	score = tr->get_score_cc();	lat_node = tr->get_lat_node_cc();	lex_node = tr->get_lex_node_cc();	phn = lex_node->get_phone_cc();		level = tr->get_level_cc();	// if this is at the state level	//	if (level == HT_STATE_LEVEL) {	  	  // print state-level data	  //	  fprintf(fp, "\n%.4ld %.4ld %.6f s%-3ld", pfrm, frm,		  score - presc, (int_4)(tr->get_state_ind_cc()));	  presc = score;	  pfrm = frm;	}		// if this is at the phone level	//	if (level == HT_PHONE_LEVEL) {	  	  // get the phone information	  //	  phone = phones_a[tr->get_phone_ind_cc()];	  	  // print phone-level data	  //	  fprintf(fp, "\n%.4ld %.4ld %.6f %-12s", pfrm, frm, score - presc,		  phone->get_name_cc());	  presc = score;	  pfrm = frm;	}		// if this is at the word level	//	if (level == HT_WORD_LEVEL) {	  // also get word info	  //	  word = lat_node->get_word_cc();	  	  // print the word info	  //	  fprintf(fp, " %-20s %.6f %.6f", word->get_name_cc(),		  score - presc, score - wdsc);	  presc = score;	  wdsc = score;	  pfrm = frm;	}      } // end if frm > 0      // the previous node in the list      //      nd = nd->get_prev_cc();    }        // print new line    //    fprintf(fp, "\n");    // free memory    //    delete trlist;    trlist = (Train_Link_list*)NULL;  }  // close file  //  fclose(fp);  // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

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