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

📄 ts_model_2.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: ts_model_2.cc//// system include files//#include <string.h>// isip include files//#include "tie_state.h"#include "tie_state_constants.h"// method: write_clist_cc//// arguments://   FILE* fp_out_clist: (output) file pointer to clist file//   Hash_table*& phy_models: (output) hash table of the physical models//   int_4& num_phy_models_a: (input) the number of physical models//   Cd_model** cd_models: (input) a set of cd_models//   int_4 num_cd_models_a: (input) the number of cd_models//   int_4 phone_size_a: (input) the size of the cd phones, such as triphone//// return: a logical_1 indicating status//// this method loops through the cd_models and writes into the cd_phones// list//logical_1 write_clist_cc(FILE* fp_out_clist_a, Hash_table*& phy_models_a,			 int_4& num_phy_models_a, Cd_model** cd_models_a,			 int_4 num_cd_models_a, int_4 phone_size_a) {    // variables about the hash table  //  char_1* key_string = new char_1[ISIP_MAX_STRING_LENGTH];  char_1* tmp = new char_1[ISIP_MAX_STRING_LENGTH];  num_phy_models_a = 0;    if( phy_models_a == (Hash_table*)NULL) {    phy_models_a =  new Hash_table(num_cd_models_a);  }    Hash_cell* logi_model = (Hash_cell*)NULL;  Hash_cell* model_cell = (Hash_cell*)NULL;  char_1* item = (char_1*)NULL;  int_4 k = 0;    // variables about cd_models  //  char_1** phones = (char_1**)NULL;  int_4 num_states ;  int_4* states_ind = (int_4*)NULL;  int_4 cd_phone_len = phone_size_a*TS_MAX_PHONE_LENGTH;  char_1* cd_phone = new char_1[cd_phone_len];  char_1* prev_phone = (char_1*)NULL;  // get the cd_models  //  for (int_4 i = 0; i < num_cd_models_a; i++) {        if(cd_models_a[i]->get_yesphy_cc() == ISIP_FALSE) {      continue;    }        num_states = cd_models_a[i]->get_num_states_cc();    // get this cd phone    //    phones = cd_models_a[i]->get_phones_cc();    strcpy((char*)cd_phone, (char*)"");    if(num_states == 1) {      strcpy((char*)cd_phone, (char*)phones[1]);    }    for (k = 0; k < num_states/2; k++) {      if (strcmp((char*)phones[k], (char*)TS_CDM_EMPTY_PHN) != 0) {	strcat((char*)cd_phone, (char*)phones[k]);	strcat((char*)cd_phone, (char*)"-");      }    }        strcat((char*)cd_phone, (char*)phones[k]);    k++;        for (; k < num_states; k++) {      if (strcmp((char*)phones[k], (char*)TS_CDM_EMPTY_PHN) != 0) {	strcat((char*)cd_phone, (char*)"+");	strcat((char*)cd_phone, (char*)phones[k]);      }    }        // get the state indices    //    states_ind = cd_models_a[i]->get_states_ind_cc();         // create the key string    //    sprintf((char*)key_string, "%ld", states_ind[0]);        for (int_4 j = 1; j < num_states; j++) {      strcat((char*)key_string, "-");      sprintf((char*)tmp, "%ld", states_ind[j]);      strcat((char*)key_string, (char*)tmp);    }              // there is no models corresponding to this phone yet    //    model_cell = phy_models_a->hash_lookup_cc(key_string);        if(model_cell == (Hash_cell*)NULL) {      // create a hash cell      //      logi_model = new Hash_cell(item, key_string);      // set the item of the model_cell      //      item = new char_1[cd_phone_len];      strcpy((char*)item, (char*)cd_phone);            logi_model->set_item_cc((void_p)item);            // insert this model into the hash table      //      phy_models_a->hash_insert_cc(logi_model);      cd_models_a[i]->set_yesphy_cc(ISIP_TRUE);      num_phy_models_a ++;            // print this phone into the clist file      //      fprintf(fp_out_clist_a, "%s\n", item);          }        // this phone shares the same model with others    //    else {      prev_phone = (char_1*)(model_cell->get_item_cc());      cd_models_a[i]->set_yesphy_cc(ISIP_FALSE);      fprintf(fp_out_clist_a, "%s\t%s\n", cd_phone, prev_phone);    }  }    // free memory  //  delete [] key_string;  delete [] cd_phone;  delete [] tmp;    // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

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