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

📄 cmmf_read_1.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: cmmf_read_1.cc//// isip include files//#include "convert_mmf.h"#include "convert_mmf_constants.h"// method: read_states_ascii_cc//// arguments://  int_4& num_st : (output) number of states//  int_4& num_feat : (output) number of features in data vector//  char_1* file : (input) data file name//  // return: a State** pointing to a list of States//// this method reads the State models from file --- each mixture// component in the States is assumed to have a diagonal covariance// matrix//Train_State** read_states_ascii_cc(int_4& num_st_a, int_4& num_feat_a,			     char_1* file_a) {    // open file  //  FILE* fp = fopen((char*)file_a, "r");  if (fp == (FILE*)NULL) {    fprintf(stdout, "cannot open file %s\n", file_a);    exit(ISIP_PROTO_ERROR);	  }	    // variables to read data  //  char_1* tmp = new char_1[ISIP_MAX_STRING_LENGTH];  int_4 ind = (int_4)0;  int_4 mix_ind = (int_4)0;  logical_1 number_flag = ISIP_FALSE;  logical_1 size_flag = ISIP_FALSE;    int_4 num_mix = (int_4)0;  float_4* weights = (float_4*)NULL;  float_4* scale = (float_4*)NULL;  float_4** mean = (float_4**)NULL;  float_4** covar = (float_4**)NULL;    Train_State** states = (Train_State**)NULL;    // read data from file  //  while (fscanf(fp, "%s", tmp) != EOF) {        // ignore comment lines    //    if (tmp[0] == (char_1)'#') {            // do nothing      //      fscanf(fp, "%[^\n]", tmp);      fscanf(fp, "%[\n]", tmp);    }        // read the size of the feature vector    //    else if (strcmp((char*)tmp, (char*)CMMF_STR_FEATURE_SIZE) == 0) {            // change the flag      //      size_flag = ISIP_TRUE;            fscanf(fp, "%s", tmp);      fscanf(fp, "%ld", &num_feat_a);            // set the feature size      //      Train_State::set_num_features_cc(num_feat_a);    }        // read the number of states    //    else if (strcmp((char*)tmp, (char*)CMMF_STR_NUM_STATES) == 0) {            // change the flag      //      number_flag = ISIP_TRUE;            // check the flag      //      if (size_flag == ISIP_FALSE) {	fprintf(stdout, "Error : no size of feature specified in %s\n",		(char*)file_a);	exit(ISIP_PROTO_ERROR);      }            fscanf(fp, "%s", tmp);      fscanf(fp, "%ld", &num_st_a);            // allocate space for the Train_States list      //      states = new Train_State*[num_st_a];            // now read the Train_State data      //      for (int_4 i = 0; i < num_st_a; i++) {		// read the Train_State index	//	fscanf(fp, "%s%ld", tmp, &ind);		// read the number of mixtures	//	fscanf(fp, "%s%ld", tmp, &num_mix);		if (num_mix > 0) {	  	  // allocate and initialize the state parameters	  //	  weights = new float_4[num_mix];	  scale = new float_4[num_mix];	  mean = new float_4*[num_mix];	  covar = new float_4*[num_mix];	  	  // read data for each mixture	  //	  for (int_4 j = 0; j < num_mix; j++) {	    	    // read mixture index	    //	    fscanf(fp, "%s%ld", tmp, &mix_ind);	    	    // read the mixture weight	    //	    fscanf(fp, "%s%f", tmp, &weights[j]);	    	    // allocate space and read the mean vector	    //	    mean[j] = new float_4[num_feat_a];	    fscanf(fp, "%s", tmp);	    for (int_4 k = 0; k < num_feat_a; k++) {	      fscanf(fp, "%f", &mean[j][k]);	    }	    	    // allocate space and read the covar matrix	    //	    covar[j] = new float_4[num_feat_a];	    fscanf(fp, "%s", tmp);	    for (int_4 k = 0; k < num_feat_a; k++) {	      fscanf(fp, "%f", &covar[j][k]);	    }	    	    // read the scale factor	    //	    fscanf(fp, "%s%f", tmp, &scale[j]);	  }	  	  	  // create the state	  //	  states[ind] = new Train_State();	  states[ind]->set_num_mixtures_cc(num_mix);	  states[ind]->set_weights_cc(weights);	  states[ind]->set_scale_cc(scale);	  states[ind]->set_covar_cc(covar);	  states[ind]->set_mean_cc(mean);			  // free memory	  //	  for (int_4 kl = 0; kl < num_mix; kl++) {	    delete [] mean[kl];	  }	  delete [] mean;	  for (int_4 kl = 0; kl < num_mix; kl++) {	    delete [] covar[kl];	  }	  delete [] covar;	  delete [] scale;	  delete [] weights;	}      }    }  }    if (number_flag == ISIP_FALSE) {    fprintf(stdout, "Error : no number of states specified in %s\n",	    (char*)file_a);    exit(ISIP_PROTO_ERROR);  }    // close file  //  fclose(fp);    // free memory  //  delete [] tmp;    // exit gracefully  //  return states;}

⌨️ 快捷键说明

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