string hey(string const& text) { if (is_silence(text)) { return "Fine. Be that way!"; } if (is_shouting(text)) { return "Whoa, chill out!"; } if (is_question(text)) { return "Sure."; } return "Whatever."; }
void set_response_with_data(char *response, complex short *data, int n) { static int count = 0; if (is_silence(data, n)) { switch (*response) { case RES_OK: *response = RES_OK_TO_SI; break; case RES_SI: *response = RES_SI; break; case RES_OK_TO_SI: count++; if (count == 3) { count = 0; *response = RES_SI; } break; default: break; } } else { *response = RES_OK; } }
static int ru_syl_boundary(const cst_item *i,const cst_val *v) { const char *p; const char *n; const char *nn; if (v == NULL) return TRUE; n=val_string(val_car(v)); if (is_silence(n)) return TRUE; if (!has_vowel_in_list(v)) return FALSE; if (!has_vowel_in_syl(i)) return FALSE; if (is_vowel(n)) return TRUE; if (val_cdr(v) == NULL) return FALSE; p = item_feat_string(i,"name"); nn = val_string(val_car(val_cdr(v))); if(is_vowel(p)) { if(is_vowel(nn)) return TRUE; if(is_sonorant(n)&&!is_sonorant(nn)) return FALSE; if(is_j(n)) return FALSE; return TRUE; } if(is_sonorant(p)) return TRUE; if(is_j(p)) return TRUE; return FALSE; }
void process_data(struct wav_file_headers* wav_headers, int in_fd) { int sample_size; int sample_c,i; short *sample; int size, wsize; int silence_counter = 0; int silence_flag = 0; int min_length_flag = 1; /* Default is always split */ int override_flag = 0; /* tblough 5/23/04 */ unsigned int bytecounter = 0; unsigned int file_bytecounter = 0; unsigned int start_time; unsigned int file_sample_c = 0; start_time = time(NULL); // Array of samples (NumChannels of them) sample = calloc(wav_headers->fmt.NumChannels * opts.buffer_amt, sizeof(short)); sample_size = wav_headers->fmt.BitsPerSample / 8; if(debug_level >= VERYVERBOSE) printf("sample size: %i\n", sample_size); sample_c = 0; do { size = read(in_fd, sample, sample_size * wav_headers->fmt.NumChannels * opts.buffer_amt); for(i=0; i<wav_headers->fmt.NumChannels * opts.buffer_amt; i++) { if((size == 0) && (debug_level >= VERYVERBOSE)) printf("End of Data\n"); if(debug_level >= INSANELYVERBOSE) printf("[%i,%i] 0x%hx (%hi) %i\n", sample_c, i, sample[i], sample[i], size); if(is_silence(sample[i])) silence_counter++; else { silence_counter = 0; } } if(silence_counter == 0) silence_flag=0; if(debug_level >= VERYVERBOSE) { printf("min_track_length: %f cur_track_length: %f\n", opts.min_track_length, file_sample_c / (float)wav_headers->fmt.SampleRate); } if(opts.min_track_length > 0) { /* Check to make sure we've seen enough samples before splitting */ if( opts.min_track_length <= (file_sample_c / wav_headers->fmt.SampleRate) ) min_length_flag = 1; else min_length_flag = 0; } // tblough 5/23/04 - modified to provide minimum track length override if((opts.override > opts.gap) && (silence_counter > OVERRIDE)) { if(debug_level >= VERYVERBOSE) { printf("Override GAP: %i Counter: %i\n", OVERRIDE, silence_counter); printf("Silence Detected @ %.2fs\n", calc_real_time(sample_c, wav_headers)); } override_flag = 1; } else override_flag = 0; if((silence_counter > GAP) && (! silence_flag) && (min_length_flag || override_flag)) { if(debug_level >= VERYVERBOSE) { printf("Silence GAP: %i Counter: %i\n", GAP, silence_counter); printf("Silence Detected @ %.2fs\n", calc_real_time(sample_c, wav_headers)); } silence_flag=1; if(opts.log_enabled) write_log_entry(file_bytecounter, file_sample_c, wav_headers); start_new_file(wav_headers, file_bytecounter, sample_c); file_bytecounter = 0; file_sample_c = 0; } // Only write if we should not skip the silence and there is silence // loescher 06/06/04 if (! (opts.skip_silence && silence_flag) ) { wsize = fwrite(sample, sample_size * wav_headers->fmt.NumChannels * opts.buffer_amt, 1, fd); file_bytecounter += wsize * sample_size * wav_headers->fmt.NumChannels * opts.buffer_amt; bytecounter += wsize * sample_size * wav_headers->fmt.NumChannels * opts.buffer_amt; } sample_c += opts.buffer_amt; file_sample_c += opts.buffer_amt; // Display stats if((opts.show_progress) && ((sample_c % 1000) == 0)) display_stats(sample_c, bytecounter, start_time, wav_headers); } while(size > 0);