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

📄 bw_trans_1.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: bw_trans_1.cc//// isip include files//#include "bw_train.h"#include "bw_train_constants.h"// method: acc_trans_cc//// arguments://  float_8*** new_trans : (output) the accumulation of numerator//  float_8** for_probt : (input) the forward probabilities of current frame//  float_8*** back_prob : (input) the backward probabilities//  float_4*** transitions : (input) the old transitions//  State** states : (input) the states for all models//  Train_Model** models : (input) the models sequence//  int_4 num_mod : (input) the number of models in current transcription//  int_4* model_list : (input) the model index list//  int_4* trans_map : (input) the mapping from model index to transition//                             matrix index//  int_4* st_map : (input) the mapping from model index and local state//                          index to global state index//  int_4 num_vect : (input) the number of frames in current data file//  float_8** vectors : (input) the input feature vectors//  float_8 utt_prob_a : (input) the utterance probability//  float_8*** state_scores : (output/input) the state score array//  int_4 frame : (input) the current frame index//  int_2* upper : (input) upper bound//  int_2* lower : (input) lower bound////  return a logical_1 indicating status//// this method updates the transition accumulators for// every utterance//logical_1 acc_trans_cc(float_8*** new_trans_a, float_8** for_probt_a,		       float_8*** back_prob_a,		       float_4*** transitions_a, Train_State** states_a,		       Train_Model** models_a, int_4 num_mod_a, int_4* model_list_a,		       int_4* trans_map_a, int_4** st_map_a, int_4 num_vect_a,		       float_8** vectors_a, float_8 utt_prob_a,		       float_8*** state_scores_a, int_4 frame_a,		       int_2* upper_a, int_2* lower_a) {  // local variables  //  int_4 loc_st = (int_4)0;  int_4 trans_ind = (int_4)0;  float_8 num_score = BW_LOG_ZERO;  float_8 tmp_prob = BW_LOG_ZERO;  float_8 tmp_trans = BW_LOG_ZERO;  float_8 tmp_trans1 = BW_LOG_ZERO;  int_4 tmp_mix = (int_4)0;  // loop over all the input models  //  for (int_4 q = lower_a[frame_a]; q <= upper_a[frame_a]; q++) {        // get the number of states in current model    //    loc_st = models_a[model_list_a[q-1]]->get_num_states_cc();    trans_ind = trans_map_a[model_list_a[q-1]];    // loop over all the states in the model    //    for (int_4 i = 1; i <= loc_st-1; i++) {      // loop over the emitting states      //      for (int_4 j = 2; j <= loc_st; j++) {	// get the transition between state i and state j	//	tmp_trans = transitions_a[trans_ind][i-1][j-1];	// check if it is a valid transitions	//	if (tmp_trans <= BW_LOG_MIN) {	  continue;	}	// if it is not a valid transition	//	else {	  	  // get the transition between first state and last state	  //	  tmp_trans1 = transitions_a[trans_ind][0][loc_st-1];	  	  // reset the score	  //	  num_score = BW_LOG_ZERO;	  	  // check if it is a within model transition	  //	  if ((i > 1) && (j < loc_st) && (frame_a != num_vect_a)) {	    	    // compute the output probability	    //	    if (state_scores_a[frame_a+1][q][j] != BW_LOG_ZERO) {	      tmp_prob = state_scores_a[frame_a+1][q][j];	    }	    else {	      tmp_prob = states_a[st_map_a[model_list_a[q-1]][j-1]]		->eval_score_cc(vectors_a[frame_a], frame_a+1, tmp_mix);	      state_scores_a[frame_a+1][q][j] = tmp_prob;	    }	    num_score = log_add_cc(num_score, (for_probt_a[q][i] +					       tmp_trans + tmp_prob +					       back_prob_a[frame_a+1]					       [q][j]));	  }	  	  // this is the case that transition is from a non-emitting state	  // into HMM	  //	  else if ((i == 1) && (j < loc_st) && (frame_a != num_vect_a)) {	    	    // compute the output probability	    //	    if (state_scores_a[frame_a][q][j] != BW_LOG_ZERO) {	      tmp_prob = state_scores_a[frame_a][q][j];	    }	    else {	      tmp_prob  = states_a[st_map_a[model_list_a[q-1]][j-1]]		->eval_score_cc(vectors_a[frame_a-1], frame_a, tmp_mix);	      state_scores_a[frame_a][q][j] = tmp_prob;	    }	    num_score = log_add_cc(num_score, (for_probt_a[q][1] +					       tmp_trans + tmp_prob +					       back_prob_a[frame_a][q][j]));	  }	  	  // this is the transition out of HMM into non-emitting state	  //	  else if ((i > 1) && (j == loc_st)) {	    	    num_score = log_add_cc(num_score, (for_probt_a[q][i] +					       tmp_trans + back_prob_a					       [frame_a][q][loc_st]));	  }	  	  // transition from non-emitting entry to exit	  //	  else if ((i == 1) && (j == loc_st)) {	    	    if (q < num_mod_a) {	      num_score = log_add_cc(num_score, (for_probt_a[q][1] +						 tmp_trans + back_prob_a						 [frame_a][q+1][1]));	    }	  }	}		// divide by the utterance score	//	num_score -= utt_prob_a;		// update the transition matrix	//	if (num_score > BW_MIN_EARG) {	  new_trans_a[trans_ind][i-1][j-1] += exp(num_score);	}      } //end if the transitions is valid     } // end of loop all valid states  } // end of loop all models    // exit gracefully  //  return(ISIP_TRUE);}

⌨️ 快捷键说明

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