// function to create test data for recognition // // include files // #include #include #include #include #include #include // globals // #define NUM_STATES 3 // global data types // typedef char *String; // global functions // float_4 get_rand_cc (float_4 up_lim, float_4 low_lim); // main function // main (int argc, String *argv) { if (argc != 4) { fprintf (stderr, "Usage: create_data.exe \n"); exit (1); } FILE *inFile = fopen (argv[2], "r"); FILE *outFile = fopen (argv[3], "w"); if ((inFile == NULL) || (outFile == NULL)) { fprintf (stderr, "Can't open some file. Get a life.\n"); exit (1); } // open input file and start reading strings // String data_str = new char[10]; int_2 dur_frms = 0; float_4 noise_d = atof (argv[1]); int_2 temp_dur = 0; while (fscanf (inFile, "%s%hd", data_str, &dur_frms) != EOF) { if (strcmp (data_str, "one") == 0) { // state one_1 // temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); // state one_2 // dur_frms -= temp_dur; temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); // state one_3 // temp_dur = dur_frms - temp_dur; for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); } else if (strcmp (data_str, "two") == 0) { // state two_1 // temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); // state two_2 // dur_frms -= temp_dur; temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1.0 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); // state two_3 // temp_dur = dur_frms - temp_dur; for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1.0 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); } else if (strcmp (data_str, "three") == 0) { // state three_1 // temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1.0 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); // state three_2 // dur_frms -= temp_dur; temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1.0 + get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); // state three_3 // temp_dur = dur_frms - temp_dur; for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); } else if (strcmp (data_str, "four") == 0) { // state four_1 // temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", 1.0 + get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); // state four_2 // dur_frms -= temp_dur; temp_dur = (int_2) get_rand_cc (dur_frms, 1); for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d); // state four_3 // temp_dur = dur_frms - temp_dur; for (int_2 i = 0; i < temp_dur; i++) fprintf (outFile, "%.2f %.2f %.2f ", get_rand_cc (0.1, -0.1) * noise_d, get_rand_cc (0.1, -0.1) * noise_d, 1.0 + get_rand_cc (0.1, -0.1) * noise_d); } else if (strcmp (data_str, "") == 0) { // state silence_1 // for (int_2 i = 0; i < dur_frms; i++) fprintf (outFile, "%.2f %.2f %.2f ", 0.5 + get_rand_cc (0.1, -0.1) * noise_d, 0.5 + get_rand_cc (0.1, -0.1) * noise_d, 0.5 + get_rand_cc (0.1, -0.1) * noise_d); } } // close file // fclose (inFile); fclose (outFile); } // random number generator // float_4 get_rand_cc (float_4 up_lim, float_4 low_lim) { int_2 int_rand = rand (); float_4 float_rand = (up_lim - low_lim) * (float_4) int_rand; float_rand /= RAND_MAX; float_rand += low_lim; // seed random generator // srand (int_rand); return (float_rand); }