|
From: Keiichiro O. <ur...@us...> - 2013-12-10 10:26:47
|
Update of /cvsroot/hts-engine/hts_engine_API/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16774/lib Modified Files: HTS_sstream.c Log Message: Fix a small bug: When model duration specified by label is zero, shortest duration should be used. Index: HTS_sstream.c =================================================================== RCS file: /cvsroot/hts-engine/hts_engine_API/src/lib/HTS_sstream.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** HTS_sstream.c 15 Dec 2012 07:40:51 -0000 1.21 --- HTS_sstream.c 10 Dec 2013 10:26:45 -0000 1.22 *************** *** 5,9 **** /* ----------------------------------------------------------------- */ /* */ ! /* Copyright (c) 2001-2012 Nagoya Institute of Technology */ /* Department of Computer Science */ /* */ --- 5,9 ---- /* ----------------------------------------------------------------- */ /* */ ! /* Copyright (c) 2001-2013 Nagoya Institute of Technology */ /* Department of Computer Science */ /* */ *************** *** 62,67 **** #include "HTS_hidden.h" ! /* HTS_set_duration: set duration from state duration probability distribution */ ! static double HTS_set_duration(size_t * duration, double *mean, double *vari, size_t size, double frame_length) { size_t i; --- 62,86 ---- #include "HTS_hidden.h" ! /* HTS_set_default_duration: set default duration from state duration probability distribution */ ! static double HTS_set_default_duration(size_t * duration, double *mean, double *vari, size_t size) ! { ! size_t i; ! double temp; ! size_t sum = 0; ! ! for (i = 0; i < size; i++) { ! temp = mean[i] + 0.5; ! if (temp < 1.0) ! duration[i] = 1; ! else ! duration[i] = (size_t) temp; ! sum += duration[i]; ! } ! ! return (double) sum; ! } ! ! /* HTS_set_specified_duration: set duration from state duration probability distribution and specified frame length */ ! static double HTS_set_specified_duration(size_t * duration, double *mean, double *vari, size_t size, double frame_length) { size_t i; *************** *** 72,88 **** size_t target_length; - /* if the frame length is not specified, only the mean vector is used */ - if (frame_length == 0.0) { - for (i = 0; i < size; i++) { - temp1 = (mean[i] + 0.5); - if (temp1 < 1.0) - duration[i] = 1; - else - duration[i] = (size_t) temp1; - sum += duration[i]; - } - return (double) sum; - } - /* get the target frame length */ if (frame_length + 0.5 < 1.0) --- 91,94 ---- *************** *** 94,98 **** if (target_length <= size) { if (target_length < size) ! HTS_error(-1, "HTS_set_duration: Specified frame length is too short.\n"); for (i = 0; i < size; i++) duration[i] = 1; --- 100,104 ---- if (target_length <= size) { if (target_length < size) ! HTS_error(-1, "HTS_set_specified_duration: Specified frame length is too short.\n"); for (i = 0; i < size; i++) duration[i] = 1; *************** *** 229,235 **** sst->vari[j] = (double *) HTS_calloc(sst->vector_length * HTS_ModelSet_get_window_size(ms, i), sizeof(double)); } ! sst->gv_switch = (HTS_Boolean *) HTS_calloc(sss->total_state, sizeof(HTS_Boolean)); ! for (j = 0; j < sss->total_state; j++) ! sst->gv_switch[j] = TRUE; } --- 235,245 ---- sst->vari[j] = (double *) HTS_calloc(sst->vector_length * HTS_ModelSet_get_window_size(ms, i), sizeof(double)); } ! if (HTS_ModelSet_use_gv(ms, i)) { ! sst->gv_switch = (HTS_Boolean *) HTS_calloc(sss->total_state, sizeof(HTS_Boolean)); ! for (j = 0; j < sss->total_state; j++) ! sst->gv_switch[j] = TRUE; ! } else { ! sst->gv_switch = NULL; ! } } *************** *** 247,255 **** temp = HTS_Label_get_end_frame(label, i); if (temp >= 0) { ! next_time += (size_t) HTS_set_duration(&sss->duration[next_state], &duration_mean[next_state], &duration_vari[next_state], state + sss->nstate - next_state, temp - next_time); next_state = state + sss->nstate; } else if (i + 1 == HTS_Label_get_size(label)) { HTS_error(-1, "HTS_SStreamSet_create: The time of final label is not specified.\n"); ! HTS_set_duration(&sss->duration[next_state], &duration_mean[next_state], &duration_vari[next_state], state + sss->nstate - next_state, 0.0); } state += sss->nstate; --- 257,265 ---- temp = HTS_Label_get_end_frame(label, i); if (temp >= 0) { ! next_time += (size_t) HTS_set_specified_duration(&sss->duration[next_state], &duration_mean[next_state], &duration_vari[next_state], state + sss->nstate - next_state, temp - next_time); next_state = state + sss->nstate; } else if (i + 1 == HTS_Label_get_size(label)) { HTS_error(-1, "HTS_SStreamSet_create: The time of final label is not specified.\n"); ! HTS_set_default_duration(&sss->duration[next_state], &duration_mean[next_state], &duration_vari[next_state], state + sss->nstate - next_state); } state += sss->nstate; *************** *** 263,271 **** } frame_length = temp / speed; } else { ! frame_length = 0.0; } - /* set state duration */ - HTS_set_duration(sss->duration, duration_mean, duration_vari, sss->total_state, frame_length); } HTS_free(duration_mean); --- 273,280 ---- } frame_length = temp / speed; + HTS_set_specified_duration(sss->duration, duration_mean, duration_vari, sss->total_state, frame_length); } else { ! HTS_set_default_duration(sss->duration, duration_mean, duration_vari, sss->total_state); } } HTS_free(duration_mean); *************** *** 485,489 **** if (sst->gv_vari) HTS_free(sst->gv_vari); ! HTS_free(sst->gv_switch); } HTS_free(sss->sstream); --- 494,499 ---- if (sst->gv_vari) HTS_free(sst->gv_vari); ! if (sst->gv_switch) ! HTS_free(sst->gv_switch); } HTS_free(sss->sstream); |