static void fe_reset_vad_data(vad_data_t * vad_data) { vad_data->in_speech = 0; vad_data->pre_speech_frames = 0; vad_data->post_speech_frames = 0; fe_prespch_reset_cep(vad_data->prespch_buf); }
static void fe_reset_vad_data(vad_data_t * vad_data) { vad_data->global_state = 0; vad_data->state_changed = 0; vad_data->prespch_num = 0; vad_data->postspch_num = 0; fe_prespch_reset_cep(vad_data->prespch_buf); }
void fe_vad_hangover(fe_t * fe, mfcc_t * fea, int32 is_speech) { /* track vad state and deal with cepstrum prespeech buffer */ fe->vad_data->state_changed = 0; if (is_speech) { fe->vad_data->postspch_num = 0; if (!fe->vad_data->global_state) { fe->vad_data->prespch_num++; fe_prespch_write_cep(fe->vad_data->prespch_buf, fea); /* check for transition sil->speech */ if (fe->vad_data->prespch_num >= fe->prespch_len) { fe->vad_data->prespch_num = 0; fe->vad_data->global_state = 1; /* transition silence->speech occurred */ fe->vad_data->state_changed = 1; } } } else { fe->vad_data->prespch_num = 0; fe_prespch_reset_cep(fe->vad_data->prespch_buf); if (fe->vad_data->global_state) { fe->vad_data->postspch_num++; /* check for transition speech->sil */ if (fe->vad_data->postspch_num >= fe->postspch_len) { fe->vad_data->postspch_num = 0; fe->vad_data->global_state = 0; /* transition speech->silence occurred */ fe->vad_data->state_changed = 1; } } } if (fe->vad_data->store_pcm) { if (is_speech || fe->vad_data->global_state) fe_prespch_write_pcm(fe->vad_data->prespch_buf, fe->spch); if (!is_speech && !fe->vad_data->global_state) fe_prespch_reset_pcm(fe->vad_data->prespch_buf); } }