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

📄 dec_input_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: dec_input_0.cc// // isip include files//#include "decoder.h"#include "decoder_constants.h"// method: read_features_cc//// arguments://  FILE* fp: (input) file pointer//  logical_1& start: (input) flag indicating start of utterance to//                    intialize the circular buffer implemented in//                    the compute_delta_cc method//  // return: a logical_1 indicating status//// this method reads in the input feature vector from file//logical_1 Decoder::read_features_cc(FILE* fp_a, logical_1& start) {  // check file  //  if (fp_a == (FILE*)NULL) {    error_handler_cc((char_1*)"read_features_cc",		     (char_1*)"NULL input file pointer");  }    // initialize features if not done so  //  if (features_d == (float_4*)NULL) {    features_d = new float_4[num_feat_d];    memset(features_d, 0, sizeof(float_4)*num_feat_d);  }  for (int_4 i = 0; i < num_feat_d; i++) {    features_d[i] = (int_4)0;  }    float_8* tmp_features = new float_8[num_feat_d];  memset(tmp_features, 0, sizeof(float_8)*num_feat_d);    for (int_4 i = 0; i < num_feat_d; i++){    tmp_features[i] = (int_4)0;  }  float_4* features_float = new float_4[num_feat_d];  memset(features_float, 0, sizeof(float_4)*num_feat_d);    for (int_4 i = 0; i < num_feat_d; i++){    features_float[i] = (int_4)0;  }    // local variables  //  logical_1 flag = ISIP_FALSE;  int_4 i = 0;  int_4 time = (int_4)0;  int_4 temp_num_feat = (int_4)0;  // if this is ascii format data  //  if (input_format_d == DEC_ASCII_FORMAT) {        // if this is input format is HTK    // error    if (input_feature_format_d == DEC_HTK_FORMAT) {      error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"HTK feature file should be in binary and not ascii");    }        // read values one at a time    //    while (fscanf(fp_a, "%lf", &tmp_features[i]) != EOF) {            // copy the data to the float buffer      //      features_d[i] = tmp_features[i++];            // error message if input feature value is NaN      //      if (isnan(features_d[i-1])) {	error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");      }            // if data is read      //      if (i == num_feat_d) {	flag = ISIP_TRUE;	break;      }    }  }    // otherwise this is binary format data  //  else {    // compute deltas or accelerations on the fly if required    // if the input feature format is HTK read features as floats    //    if (acc_d == ISIP_TRUE) {      temp_num_feat = num_feat_d/3;    }    else if (delta_d == ISIP_TRUE) {      temp_num_feat = num_feat_d/2;    }    else temp_num_feat = num_feat_d;        if (((delta_d || acc_d) == ISIP_TRUE)	&& (input_feature_format_d == DEC_HTK_FORMAT) ) {            // read vector at once      //      if ((int_4)fread(features_float, sizeof(float_4), temp_num_feat, fp_a)	  == temp_num_feat) {	for (int_4 j = 0; j < temp_num_feat; j++) {	  features_d[j] = features_float[j];	  tmp_features[j] = (float_8)features_float[j];	}	// if first utterence	//	if (start) {	  time = DEC_UTT_START;	}		else {	  time = DEC_UTT_DURING;	}		// compute only deltas on the fly if required	//	if (delta_d == ISIP_TRUE) {	  while(!Extract_feature::compute_delta_cc(tmp_features,						   temp_num_feat, delta_win_d,						   acc_d, time)) {	    start = ISIP_FALSE;	    time = DEC_UTT_DURING;	    	    if ((int_4)fread(features_float, sizeof(float_4),			     temp_num_feat, fp_a)		!= temp_num_feat) {	      for (int_4 k = 0; k < temp_num_feat; k++) {		tmp_features[k] = (float_8)features_float[k];	      }	      break;	    }	  }	}	for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = (float_4)tmp_features[j];	}		// error message if input feature value is NaN	//	for (int_4 j = 0; j < num_feat_d; j++) {	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}	flag = ISIP_TRUE;      }            else {		// last frames	//	time = DEC_UTT_END;		// compute deltas and accelerations on the fly if required	//	if (delta_d == ISIP_TRUE) {	  if (Extract_feature::compute_delta_cc(tmp_features, temp_num_feat,						delta_win_d, acc_d, time)) {	    flag = ISIP_TRUE;	  }	}		for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = (float_4)tmp_features[j];	}		// error message if input feature value is NaN	//	for (int_4 j = 0; j < num_feat_d; j++) {	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}      }    }    // read features as doubles if not HTK format    //    else if (((delta_d || acc_d) == ISIP_TRUE)	&& (input_feature_format_d == DEC_ISIP_PROTO_FORMAT)) {           // read vector at once      //      if ((int_4)fread(tmp_features, sizeof(float_8), temp_num_feat, fp_a)	  == temp_num_feat) {	for (int_4 j = 0; j < temp_num_feat; j++) {	  features_d[j] = (float_4)tmp_features[j];	}	// if first utterence	//	if (start) {	  time = DEC_UTT_START;	}		else {	  time = DEC_UTT_DURING;	}		// compute only deltas on the fly if required	//	if (delta_d == ISIP_TRUE) {	  while(!Extract_feature::compute_delta_cc(tmp_features,						   temp_num_feat, delta_win_d,						   acc_d, time)) {	    start = ISIP_FALSE;	    time = DEC_UTT_DURING;	    	    if ((int_4)fread(tmp_features, sizeof(float_8), temp_num_feat,			     fp_a) != temp_num_feat) {	      break;	    }	  }	}	for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = (float_4)tmp_features[j];	}		// error message if input feature value is NaN	//	for (int_4 j = 0; j < num_feat_d; j++) {	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}	flag = ISIP_TRUE;      }            else {		// last frames	//	time = DEC_UTT_END;		// compute deltas and accelerations on the fly if required	//	if (delta_d == ISIP_TRUE) {	  if (Extract_feature::compute_delta_cc(tmp_features, temp_num_feat,						delta_win_d, acc_d, time)) {	    flag = ISIP_TRUE;	  }	}		for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = (float_4)tmp_features[j];	}		// error message if input feature value is NaN	//	for (int_4 j = 0; j < num_feat_d; j++) {	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}      }    }        // read vector at once as doubles (ISIP format)    //    else if (input_feature_format_d == DEC_ISIP_PROTO_FORMAT) {      if ((int_4)fread(tmp_features, sizeof(float_8), num_feat_d, fp_a)	  == num_feat_d) {	for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = (float_4)tmp_features[j];	  	  // error message if input feature value is NaN	  //	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}	flag = ISIP_TRUE;            }    }        // read vector at once as float (htk format)    //    else if (input_feature_format_d == DEC_HTK_FORMAT) {      if ((int_4)fread(features_float, sizeof(float_4), num_feat_d, fp_a)	  == num_feat_d) {	for (int_4 j = 0; j < num_feat_d; j++) {	  features_d[j] = features_float[j];	  	  // error message if input feature value is NaN	  //	  if (isnan(features_d[j])) {	    error_handler_cc((char_1*)"dec_input_0.cc", (char_1*)"Input feature value is NaN");	  }	}	flag = ISIP_TRUE;            }    }        else {      flag = ISIP_FALSE;          }  }    // clean up  //  delete [] tmp_features;  delete [] features_float;    // exit gracefully  //  return flag;}

⌨️ 快捷键说明

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