Exemple #1
0
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.";
}
Exemple #2
0
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;
	}
}
Exemple #3
0
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;
}
Exemple #4
0
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);