/* HTS_Engine_create_gstream: synthesis speech */ void HTS_Engine_create_gstream(HTS_Engine * engine) { HTS_GStreamSet_create(&engine->gss, &engine->pss, engine->global.stage, engine->global.use_log_gain, engine->global.sampling_rate, engine->global.fperiod, engine->global.alpha, engine->global.beta, engine->global.audio_buff_size); }
/* HTS_Engine_synthesize_from_strings: synthesize speech from strings */ HTS_Boolean HTS_Engine_synthesize_from_strings(HTS_Engine * engine, char **lines, size_t num_lines) { size_t i; double f; HTS_Engine_refresh(engine); // Generate state sequence if (HTS_SStreamSet_create(&engine->sss, &engine->ms, lines, num_lines, engine->condition.speed) != TRUE) { HTS_Engine_refresh(engine); return FALSE; } if (engine->condition.additional_half_tone != 0.0) { for (i = 0; i < HTS_SStreamSet_get_total_state(&engine->sss); i++) { f = HTS_SStreamSet_get_mean(&engine->sss, 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_SStreamSet_set_mean(&engine->sss, 1, i, 0, f); } } // Generate parameter sequence if (HTS_PStreamSet_create(&engine->pss, &engine->sss, engine->condition.msd_threshold) != TRUE) { HTS_Engine_refresh(engine); return FALSE; } // Free state sequence HTS_SStreamSet_clear(&engine->sss); // Generate sound sample sequence if (HTS_GStreamSet_create(&engine->gss, &engine->pss, engine->condition.sampling_frequency, engine->condition.fperiod, engine->condition.alpha, engine->condition.beta) != TRUE) { HTS_Engine_refresh(engine); return FALSE; } return TRUE; }
/* HTS_Engine_generate_sample_sequence: generate sample sequence (3rd synthesis step) */ HTS_Boolean HTS_Engine_generate_sample_sequence(HTS_Engine * engine) { return HTS_GStreamSet_create(&engine->gss, &engine->pss, engine->condition.stage, engine->condition.use_log_gain, engine->condition.sampling_frequency, engine->condition.fperiod, engine->condition.alpha, engine->condition.beta, &engine->condition.stop, engine->condition.volume, engine->condition.audio_buff_size > 0 ? &engine->audio : NULL); }