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

📄 bw_comb_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: bw_comb_0.cc//// isip include files//#include "bw_train.h"#include "bw_train_constants.h"// method: combine_acc_cc//// arguments://  float_8*** new_trans : (output) numerator accumulators of transitions//  float_8*** train_mean : (output) mean accumulators//  float_8*** train_covar : (output) covariance accumulators//  float_8** mix_weights : (output) mixture weights accumulators//  float_8* state_occ : (output) state occupance accumulators//  int_4* model_access_counts : (output) counts of model accesses//  int_4 num_trans : (input) number of transition matrixes//  int_4* trans_size : (input) sizes of transition matrixes//  int_4 num_states : (input) number of states//  int_4 num_mix : (input) number of mixtures//  int_4 num_features : (input) number of features//  int_4 num_models: (input) number of models//  FILE* fp_acc_list : (input) accumulators file list//// return: a logical flag to indicate success//// this method reads all the accumulator files and updates means,// covariances, model access counts. This method is called when the training// is run in combined mode//logical_1 combine_acc_cc(float_8*** new_trans_a, float_8*** train_mean_a,			 float_8*** train_covar_a,			 float_8** mix_weights_a, float_8* state_occ_a,			 int_4* model_access_counts, int_4 num_trans_a,			 int_4* trans_size_a, int_4 num_states_a,			 int_4 num_mix_a, int_4 num_features_a,			 int_4 num_models_a, FILE* fp_acc_list_a) {  // local variables  //  int_4 tmp = (int_4)0;  char_1* acc_file = new char_1[ISIP_MAX_STRING_LENGTH];  FILE* facc = (FILE*)NULL;    // allocate memory for temporary variables  //  float_8*** temp_trans = new float_8**[num_trans_a];      for (int_4 i = 0; i < num_trans_a; i++) {        // get the size of current covariance matrix    //    tmp = trans_size_a[i];    temp_trans[i] = new float_8*[tmp];          for (int_4 j = 0; j < tmp; j++) {      temp_trans[i][j] = new float_8[tmp];      for (int_4 k = 0; k < tmp; k++) {	temp_trans[i][j][k] = BW_LOG_ZERO;      }    }  }    // allocate memory for the new parameters for all states  //  float_8*** temp_mean = new float_8**[num_states_a];  float_8*** temp_covar = new float_8**[num_states_a];  float_8** temp_weights = new float_8*[num_states_a];  float_8* temp_occ = new float_8[num_states_a];  int_4* temp_model_counts = new int_4[num_models_a];    for (int_4 i = 0; i < num_states_a; i++) {    temp_mean[i] = new float_8*[num_mix_a];    temp_covar[i] = new float_8*[num_mix_a];    temp_weights[i] = new float_8[num_mix_a];    temp_occ[i] = (float_8)0.0;    for (int_4 j = 0; j < num_mix_a; j++) {      temp_mean[i][j] = new float_8[num_features_a];      temp_covar[i][j] = new float_8[num_features_a];      temp_weights[i][j] = (float_8)0.0;      for (int_4 k = 0; k < num_features_a; k++) {	temp_mean[i][j][k] = (float_8)0.0;	temp_covar[i][j][k] = (float_8)0.0;      }    }  }    // loop over all the accumulator files  //  while (fgets((char*)acc_file, ISIP_MAX_STRING_LENGTH, fp_acc_list_a) !=	 (char*)NULL) {        expand_filename_cc(acc_file);    facc = fopen((char*)acc_file, "rb");    // read the transition accumulators    //    for (int_4 i = 0; i < num_trans_a; i++) {      tmp = trans_size_a[i];      for (int_4 j = 0; j < tmp; j++) {	fread((void_p)temp_trans[i][j], sizeof(float_8), tmp, facc);		// update data arrays	//	for (int_4 k = 0; k < tmp; k++) {	  new_trans_a[i][j][k] += temp_trans[i][j][k];	}      }    }        // read the states accumulators    //    for (int_4 i = 0; i < num_states_a; i++) {      for (int_4 j = 0; j < num_mix_a; j++) {	fread((void_p)temp_mean[i][j], sizeof(float_8), num_features_a,	      facc);	fread((void_p)temp_covar[i][j], sizeof(float_8), num_features_a,	      facc);		// update means and variances	//	for (int_4 k = 0; k < num_features_a; k++) {	  train_mean_a[i][j][k] += temp_mean[i][j][k];	  train_covar_a[i][j][k] += temp_covar[i][j][k];	}      }            // read mixture weightes and update      //      fread((void_p)temp_weights[i], sizeof(float_8), num_mix_a, facc);      for (int_4 j = 0; j < num_mix_a; j++) {	mix_weights_a[i][j] += temp_weights[i][j];      }    }        // read state occupancy accumulators and update    //    fread((void_p)temp_occ, sizeof(float_8), num_states_a, facc);    for (int_4 i = 0; i < num_states_a; i++) {      state_occ_a[i] += temp_occ[i];    }    // read the model access counts    //    fread((void_p)temp_model_counts, sizeof(int_4), num_models_a, facc);    for (int_4 i = 0; i < num_models_a; i++) {      model_access_counts[i] += temp_model_counts[i];    }        // close file    //    fclose(facc);    facc = (FILE*)NULL;  }    // clean up  //  for (int_4 i = 0; i < num_trans_a; i++) {    for (int_4 j = 0; j < trans_size_a[i]; j++) {      delete [] temp_trans[i][j];    }    delete [] temp_trans[i];  }  delete [] temp_trans;    for (int_4 i = 0; i < num_states_a; i++) {    for (int_4 j =0; j < num_mix_a; j++) {      delete [] temp_mean[i][j];      delete [] temp_covar[i][j];    }    delete [] temp_mean[i];    delete [] temp_covar[i];    delete [] temp_weights[i];  }  delete [] temp_mean;  delete [] temp_covar;  delete [] temp_weights;  delete [] temp_occ;  delete [] temp_model_counts;  delete [] acc_file;  // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

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