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

📄 bw_phone_2.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: bw_phone_2.cc//// system include files//#include <string.h>// isip include files//#include "bw_train.h"#include "bw_train_constants.h"// method: get_phn_index_cc//// arguments://  char_1* phone : (input) the input phone//  char_1** monophones : (input) the monophones//  int_4 num_mono : (input) the number of monophones//  int_4 ph_size : (input) the context size//  int_4 context_mode : (input) the current context mode//  int_4* phone_map : (input) the phone map used to compute the index//// return: the direct index for the input phone//// this method loops over all the monophone in the input phone and return// the index of the whole phone//int_4 get_phn_index_cc(char_1* phone_a, char_1** monophones_a,		       int_4 num_mono_a, int_4 ph_size_a,		       int_4 context_mode_a, int_4* phone_map_a) {    // local variables  //  int_4 ind = (int_4)0;  int_4 len1 = (int_4)0;  int_4 len2 = (int_4)0;  int_4* phn = new int_4[ph_size_a];  char_1* phn_str = (char_1*)NULL;  char_1* tmp_str = (char_1*)NULL;  // start checking the seperate phone  //  tmp_str = (char_1*)strstr((char*)phone_a, "-");  if (tmp_str == (char_1*)NULL) {                  // no "-" in this phone    // set the first phone    //    phn[0] = (int_4)0;        // check the middle phone    //    tmp_str = (char_1*)strstr((char*)phone_a, "+");        // check if this phone is a monophone    //    if (tmp_str == (char_1*)NULL) {                // no "+" in this phone            // this is a monophone, set the third phone      //      phn[2] = (int_4)0;      // check if the monophone is a valid phone      //      check_phone_cc(phone_a, monophones_a, num_mono_a);            // set the middle phone      //      for (int_4 k = 0; k < num_mono_a; k++) {	len1 = strlen((char*)phone_a);        len2 = strlen((char*)monophones_a[k]);	if (len1 == len2) {	  if (strcmp((char*)phone_a, (char*)monophones_a[k]) == 0) {	    phn[1] = k;	    break;	  }	}      }      ind = phone_map_a[get_nphone_ind_cc(ph_size_a,					  num_mono_a, phn,					  context_mode_a)];    }    // only "+" in this phone    //    else {                                                  // set the middle phone      //      tmp_str = (char_1*)strtok((char*)phone_a, "+");      // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[1] = k;	  break;	}      }            // set the third phone      //      tmp_str = (char_1*)strtok(NULL, " ");      // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[2] = k;	  break;	}      }      ind = phone_map_a[get_nphone_ind_cc(ph_size_a,					  num_mono_a, phn,					  context_mode_a)];    }  }    // "-" in this phone  //  else {                                                 // check the "+" symbol    //    tmp_str = (char_1*)strstr((char*)phone_a, "+");    if (tmp_str == (char_1*)NULL) {              // only "-" in this phone            // set the third phone      //      phn[2] = (int_4)0;            // set the first phone      //      tmp_str = (char_1*)strtok((char*)phone_a, "-");            // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[0] = k;	  break;	}      }            // set the second phone      //      tmp_str = (char_1*)strtok(NULL, " ");      // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[1] = k;	  break;	}      }      ind = phone_map_a[get_nphone_ind_cc(ph_size_a,					  num_mono_a, phn,					  context_mode_a)];    }    // both "-" & "+" in this phone    //    else {                                               // set the first phone      //      tmp_str = (char_1*)strtok((char*)phone_a, "-");            // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[0] = k;	  break;	}      }      // set the second phone      //      tmp_str = (char_1*)strtok(NULL, "+");      // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[1] = k;	  break;	}      }            // set the third phone      //      tmp_str = (char_1*)strtok(NULL, " ");            // check if the monophone is a valid phone      //      check_phone_cc(tmp_str, monophones_a, num_mono_a);            for (int_4 k = 0; k < num_mono_a; k++) {	if (strcmp((char*)tmp_str, (char*)monophones_a[k]) == 0) {	  phn[2] = k;	  break;	}      }      ind = phone_map_a[get_nphone_ind_cc(ph_size_a,					  num_mono_a, phn,					  context_mode_a)];    }  } // end of "-" in this phone  // free memory  //  delete [] phn;  tmp_str = (char_1*)NULL;  phn_str = (char_1*)NULL;   // exit gracefully  //  return ind;}

⌨️ 快捷键说明

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