コード例 #1
0
ファイル: HTS_engine.c プロジェクト: hecomi/node-openjtalk
/* 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;
}
コード例 #2
0
 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;
     }
 }