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

📄 ts_context_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: ts_context_0.cc//// system include files//#include <string.h>// isip include files//#include "tie_state.h"#include "tie_state_constants.h"// method: pool_context_cc//// arguments://    FILE* fpm : (input)  file pointer to model file//    int_4 num_states : (input) number of states in input//    int_4 num_context : (input) context size//    char_1** mono           : (input)  monophone list//    int_4 num_mono          : (input)  number of monophones//    int_4**& l_context : (output) left context list for states //    int_4**& r_context : (output) right context list for states//// return: a logical_1 showing status//// this is method is used to pool the left and right context of all the states// the parsing of model files are designed for tri-phone models //logical_1 pool_context_cc(FILE* fpm_a, int_4 num_states_a,			  int_4 num_context_a, char_1** mono_a,			  int_4 num_mono_a, int_4**& l_context_a,			  int_4**& r_context_a) { 			      // variables to read data  //  char_1* tmp = new char_1[ISIP_MAX_STRING_LENGTH];  char_1* name = new char_1[ISIP_MAX_STRING_LENGTH];  char_1* temp_str = (char_1*)NULL;    int_4 num_model;  int_4 temp_int;  int_4 state_ind = (int_4)0;  int_4 num_states = (int_4)0;    int_4 i;  int_4 j;  char_1* lph = (char_1*)NULL;  char_1* cph = (char_1*)NULL;  char_1* rph = (char_1*)NULL;  int_4 n_lph = 0;  int_4 n_cph = 0;  int_4 n_rph = 0;    // reset the file pointer position  //  fseek(fpm_a,0,SEEK_SET);    // read data from file  //  while (fscanf(fpm_a, "%s", tmp) != EOF) {        // ignore comment lines    //    if (tmp[0] == (char_1)'#') {            // do nothing      //      fscanf(fpm_a, "%[^\n]", tmp);      fscanf(fpm_a, "%[\n]", tmp);    }        // read the model data    //    else if (strcmp((char*)tmp, TS_STR_NUM_MODELS) == 0) {            // read the number of models      //      fscanf(fpm_a, "%s%ld", tmp, &num_model);      // allocate memory for the left and right context list      // we keep the dummy state[0]      //      l_context_a = new int_4*[num_states_a];      r_context_a = new int_4*[num_states_a];            for(i=0; i<num_states_a; i++) {	l_context_a[i] = new int_4[num_context_a];	r_context_a[i] = new int_4[num_context_a];      }      // now read the model data      //      for (int_4 i = 0; i < num_model; i++) {		// read the model index	//	fscanf(fpm_a, "%s%ld", tmp, &temp_int);    // index line 	fscanf(fpm_a, "%s%s", tmp, name);          // phone name	fscanf(fpm_a, "%s%ld", tmp, &num_states);  // num_states	 	fscanf(fpm_a, "%s%ld", tmp, &temp_int);    // skip this transition line		if(num_states>3) {		  // check if the left context exist	  //	  temp_str = (char_1*)strstr((char*)name, "-");	  // if not	  //	  if(temp_str == (char_1*)NULL) {	    lph = (char_1*)NULL;	    	    // check if right context exist	    //	    temp_str = (char_1*)strstr((char*)name, "+");	    if(temp_str == (char_1*)NULL) {	      cph = name ;	      rph = (char_1*)NULL;	    }	    else {	      cph = (char_1*)strtok((char*)name, "+");	      rph = (char_1*)strtok((char*)NULL, ISIP_STRING_SPACE);	    } 	  }	  // if left context exist	  //	  else {	       	    // check if right context exist	    //	    temp_str = (char_1*)strstr((char*)name, "+");	    lph = (char_1*)strtok((char*)name, "-");	    	    if(temp_str == (char_1*)NULL) {	      cph = (char_1*)strtok((char*)NULL, ISIP_STRING_SPACE);	      rph = (char_1*)NULL;	    }	    else {	      cph = (char_1*)strtok((char*)NULL, "+");	      rph = (char_1*)strtok((char*)NULL, ISIP_STRING_SPACE);	    } 	  }	    	  // get the left context index	  //	  if(lph!=(char_1*)NULL) {	    for(j=0; j<num_mono_a; j++) {	      if(strcmp((char*)lph, (char*)mono_a[j])==0) {		n_lph = j;		break;	      }	    }	  }	  else {	    n_lph = TS_EMPTY_PHN;	  }	  	  // get the control phone index	  //	  if(cph!=(char_1*)NULL) {	  	    for(j=0;j<num_mono_a;j++) {  	      if(strcmp((char*)cph, (char*)mono_a[j])==0) {		n_cph = j;		break;	      }	    }	  }	  else {	    n_cph = TS_EMPTY_PHN;	  }	  	  // get the right context index	  //	  if(rph!=(char_1*)NULL) {	   	    for(j=0; j<num_mono_a; j++) {	    	      if(strcmp((char*)rph, (char*)mono_a[j])==0) {		n_rph = j;		break;	      }	    }	  }	  else {	    n_rph = TS_EMPTY_PHN;	  }	  	  // read the states	  //	  fscanf(fpm_a, "%s", tmp);	  for (j = 0; j < num_states; j++) {	    	    // set the state index	    //	    fscanf(fpm_a, "%ld", &state_ind);	    	    if((j>0)&&(j<num_states-1)) {	      	      l_context_a[state_ind][0] = n_lph;	      r_context_a[state_ind][0] = n_rph;	      	    }	  }	  	}     		// skip the next line	//	else {	  	  fscanf(fpm_a, "%[^\n]", tmp);	  fscanf(fpm_a, "%[\n]", tmp);	  	  fscanf(fpm_a, "%[^\n]", tmp);	  fscanf(fpm_a, "%[\n]", tmp);	}       }          }  }    // free memory  //    delete [] name;  delete [] tmp;    return ISIP_TRUE;}

⌨️ 快捷键说明

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