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

📄 tr_st_eval_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: tr_st_eval_0.cc//// isip include files//#include "train_state.h"#include "train_state_constants.h"static float_8* trans_data = (float_8*)NULL;static int_4 trans_data_size = 0;// method: eval_score_cc//// arguments://  float_8* data : (input) a data feature vector//  int_4 frame : (input) the current frame index//  int_4& max_mix : (output) the highest mixture component //// return: a logical_1 indicating success//// this method evaluates the input feature vector against the Train_State// distribution and computes a log-distance metric (i.e. a log score// of the data given the model)//float_8 Train_State::eval_score_cc(float_8* data_a, int_4 frame_a,			     int_4& max_mix_a) {  // evaluate this state only if it has not been evaluated before  //  if (frame_d != frame_a) {    // temporary variables    //    float_8 tmp_score = (float_8)0;    float_8 tmp = (float_8)0;    float_8 max_score = (float_8)TRAIN_STATE_SCORE;    int_4 max_mix = (int_4)0;        if (trans_data_size < num_features_d) {      if (trans_data != (float_8*)NULL) {	delete [] trans_data;      }      trans_data = new float_8[num_features_d];      trans_data_size = num_features_d;    }        // assign frame index    //    frame_d = frame_a;        // initialize score    //    score_d = TRAIN_STATE_SCORE;        // loop over all mixture components, find the highest weight    //    for (int_4 i = 0; i < num_mixtures_d; i++) {      // reset tmp score      //      tmp_score = (float_8)scale_d[i];            // compute the likelihood of data given mixture      //      for (int_4 j = 0; j < num_features_d; j++) {		// compute the translated data and take the product to evaluate	// likelihood score	//	trans_data[j] = data_a[j] - (float_8)mean_d[i][j];	tmp_score += trans_data[j] * trans_data[j] * (float_8)covar_d[i][j];      }          // add the mixture weight, use recursive sum to protect against      // underflow      //      tmp_score = (float_8)weights_d[i] - (float_8)0.5 * tmp_score;                  if (tmp_score >= max_score) {	max_score = tmp_score;	max_mix = i;      }            if (score_d < tmp_score) {	tmp = score_d;	score_d = tmp_score;	tmp_score = tmp;      }      tmp = tmp_score - score_d;      if (tmp >= TRAIN_STATE_LOG_SCORE) {	score_d += (float_8)log(1.0 + exp((float_8)tmp));      }      else {	if (score_d < TRAIN_STATE_MIN_SCORE) {	  score_d = TRAIN_STATE_SCORE;	}      }    }    // return the index of the highest mixture    //    max_mix_a = (int_4)max_mix;  }    // return the log likelihood score  //  return score_d;}

⌨️ 快捷键说明

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