/* HTS_Engine_generate_state_sequence: genereate state sequence (1st synthesis step) */ static HTS_Boolean HTS_Engine_generate_state_sequence(HTS_Engine * engine) { size_t i, state_index, model_index; double f; if (HTS_SStreamSet_create(&engine->sss, &engine->ms, &engine->label, engine->condition.phoneme_alignment_flag, engine->condition.speed, engine->condition.duration_iw, engine->condition.parameter_iw, engine->condition.gv_iw) != TRUE) { HTS_Engine_refresh(engine); return FALSE; } if (engine->condition.additional_half_tone != 0.0) { state_index = 0; model_index = 0; for (i = 0; i < HTS_Engine_get_total_state(engine); i++) { f = HTS_Engine_get_state_mean(engine, 1, i, 0); f += engine->condition.additional_half_tone * HALF_TONE; if (f < MIN_LF0) f = MIN_LF0; else if (f > MAX_LF0) f = MAX_LF0; HTS_Engine_set_state_mean(engine, 1, i, 0, f); state_index++; if (state_index >= HTS_Engine_get_nstate(engine)) { state_index = 0; model_index++; } } } return TRUE; }
void std_hts_engine_impl::set_time_info() { int fperiod=HTS_Engine_get_fperiod(engine.get()); int n=HTS_Engine_get_nstate(engine.get()); int time=0; int dur=0; int i=0; for(label_sequence::iterator lab_iter=input->lbegin();lab_iter!=input->lend();++lab_iter,++i) { lab_iter->set_time(time); dur=0; for(int j=0;j<n;++j) dur+=HTS_Engine_get_state_duration(engine.get(),i*n+j)*fperiod; lab_iter->set_duration(dur); time+=dur; } }