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

📄 bw_phone_1.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: bw_phone_1.cc//// system include files//#include <memory.h>// isip include files//#include "bw_train.h"#include "bw_train_constants.h" // method: read_phones_cc//// arguments://  int_4 num_mono : (input) number of monophones//  int_4 ph_size : (input) size of phone context//  Train_Model** models : (input) array of model pointers//  int_4*& ph_map : (output) map of triphones to phone models//  int_4& num_ph : (output) number of phones//  char_1* file : (input) data file name//  int_4*& mod_map : (output) map of models to array of model objects//  int_4 context_mode : (input) the context mode//  // return: a Phone** pointing to a list of phone models//// this method reads through the phones file and returns a Phone**// pointing to a list of phone models//Train_Phone** read_phones_cc(int_4 num_mono_a, int_4 ph_size_a, Train_Model** models_a,		       int_4*& ph_map_a, int_4& num_ph_a, char_1* file_a,		       int_4*& mod_map_a, int_4 context_mode_a) {    // open file  //  FILE* fp = fopen((char*)file_a, "r");  if (fp == (FILE*)NULL) {    fprintf(stdout, "Cannot open file %s\n", file_a);    exit(ISIP_PROTO_ERROR);  }  // allocate memory for the phone map  //  int_4 size = (int_4)pow(num_mono_a, ph_size_a);  ph_map_a = new int_4[(int_4)pow(num_mono_a, ph_size_a)];  for (int_4 i = 0; i < size; i++) {    ph_map_a[i] = (int_4)0;  }    // variables to read data  //  char_1* tmp = new char_1[ISIP_MAX_STRING_LENGTH];  int_4 ind = (int_4)0;  int_4 mod = (int_4)0;  logical_1 number_flag = ISIP_FALSE;    int_4 nph = (int_4)0;  int_4* mph = (int_4*)NULL;    Train_Phone** phones = (Train_Phone**)NULL;    // read data from file  //  while (fscanf(fp, "%s", tmp) != EOF) {        // ignore comment lines    //    if (tmp[0] == (char_1)'#') {            // do nothing      //      fscanf(fp, "%[^\n]", tmp);      fscanf(fp, "%[\n]", tmp);    }        // read the phone data    //    else if (strcmp((char*)tmp, (char*)BW_STR_NUM_PHONES) == 0) {            // change the flag      //      number_flag = ISIP_TRUE;            // read the number of phones      //      fscanf(fp, "%s%ld", tmp, &num_ph_a);            // allocate space for the phone list      //      phones = new Train_Phone*[num_ph_a];      mod_map_a = new int_4[num_ph_a];            // now read the phone data      //      for (int_4 i = 0; i < num_ph_a; i++) {	// reset the temporary buffer	//	tmp = (char_1*)memset(tmp, (int_4)0, ISIP_MAX_STRING_LENGTH);		// read the phone string and the number of constituent monophones	//	fscanf(fp, "%s%ld", tmp, &nph);		// for word internal mode	//	if ((nph == (int_4)2)&&(context_mode_a == 2)){	  mph = new int_4[3];	  for (int_4 i = 0; i<10; i++) {	    if (tmp[i] == '-') {	      for (int_4 j = 0; j<2; j++) {		fscanf(fp, "%ld", &mph[j]);	      }	      mph[2] = 0;	    }	    else if (tmp[i] == '+') {	      for (int_4 j = 1; j<3; j++) {		fscanf(fp, "%ld", &mph[j]);	      }	      mph[0] = 0;	    }	  }	}	else {	  	  // read the constituent monophone indices	  //	  mph = new int_4[nph];	  for (int_4 j = 0; j < nph; j++) {	    fscanf(fp, "%ld", &mph[j]);	  }	}		// read the map index and model index	//	fscanf(fp, "%ld%ld", &ind, &mod);        mod_map_a[i] = mod;		// create the phone	//	phones[i] = new Train_Phone(tmp, nph, mph, models_a[mod]);		// store a link to this in the phone map	//	ph_map_a[ind] = i;		// free memory	//	delete [] mph;	mph = (int_4*)NULL;      }    }  }    // check the flag  //  if (number_flag == ISIP_FALSE) {    fprintf(stdout, "Error : no number of phones specified in %s\n",	    (char*)file_a);    exit(ISIP_PROTO_ERROR);  }    // close file  //  fclose(fp);    // free memory  //  delete [] tmp;    // exit gracefully  //  return phones;}

⌨️ 快捷键说明

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