static void Open_JTalk_initialize(Open_JTalk * open_jtalk) { Mecab_initialize(&open_jtalk->mecab); NJD_initialize(&open_jtalk->njd); JPCommon_initialize(&open_jtalk->jpcommon); HTS_Engine_initialize(&open_jtalk->engine); }
void OpenJTalk_initialize(OpenJTalk * open_jtalk, HTS_Boolean use_lpf, int sampling_rate, int fperiod, double alpha, int stage, double beta, int audio_buff_size, double uv_threshold, HTS_Boolean use_log_gain, double gv_weight_mgc, double gv_weight_lf0, double gv_weight_lpf) { Mecab_initialize(&open_jtalk->mecab); NJD_initialize(&open_jtalk->njd); JPCommon_initialize(&open_jtalk->jpcommon); if (use_lpf) HTS_Engine_initialize(&open_jtalk->engine, 3); else HTS_Engine_initialize(&open_jtalk->engine, 2); HTS_Engine_set_sampling_rate(&open_jtalk->engine, sampling_rate); HTS_Engine_set_fperiod(&open_jtalk->engine, fperiod); HTS_Engine_set_alpha(&open_jtalk->engine, alpha); HTS_Engine_set_gamma(&open_jtalk->engine, stage); HTS_Engine_set_log_gain(&open_jtalk->engine, use_log_gain); HTS_Engine_set_beta(&open_jtalk->engine, beta); HTS_Engine_set_audio_buff_size(&open_jtalk->engine, audio_buff_size); HTS_Engine_set_msd_threshold(&open_jtalk->engine, 1, uv_threshold); HTS_Engine_set_gv_weight(&open_jtalk->engine, 0, gv_weight_mgc); HTS_Engine_set_gv_weight(&open_jtalk->engine, 1, gv_weight_lf0); if (use_lpf) HTS_Engine_set_gv_weight(&open_jtalk->engine, 2, gv_weight_lpf); }
static int setup(struct app *app) { #ifdef HTS_MELP #define NR_STREAMS 3 #else #define NR_STREAMS 2 #endif /* HTS_MELP */ double gv_weight[] = { app->gv_weight_mgc, app->gv_weight_lf0, #ifdef HTS_MELP app->gv_weight_lpf #endif /* HTS_MELP */ }; int i; app->play_h = play_init(&app->play_info, "default", SND_PCM_FORMAT_S16_LE, 1, app->sampling_rate, 500000, 8); Mecab_initialize(&app->mecab); if (Mecab_load(&app->mecab, app->dn_mecab) != TRUE) return -1; NJD_initialize(&app->njd); JPCommon_initialize(&app->jpcommon); HTS_Engine_initialize(&app->engine); if (HTS_Engine_load(&app->engine, &app->fn_voice, 1) != TRUE) return -1; HTS_Engine_set_sampling_frequency(&app->engine, (size_t)app->sampling_rate); if (app->fperiod >= 0) HTS_Engine_set_fperiod(&app->engine, app->fperiod); if (app->alpha >= 0.0) HTS_Engine_set_alpha(&app->engine, app->alpha); if (app->beta >= 0.0) HTS_Engine_set_beta(&app->engine, app->beta); if (app->half_tone >= 0.0) HTS_Engine_add_half_tone(&app->engine, app->half_tone); if (app->audio_buff_size > 0) HTS_Engine_set_audio_buff_size(&app->engine, app->audio_buff_size); if (app->uv_threshold >= 0.0) HTS_Engine_set_msd_threshold(&app->engine, 1, app->uv_threshold); if (app->speed >= 0.0) HTS_Engine_set_speed(&app->engine, app->speed); for (i = 0; i < NR_STREAMS; i++) if (gv_weight[i] >= 0.0) HTS_Engine_set_gv_weight(&app->engine, i, gv_weight[i]); return 0; }
void TextToSpeech::initialize( int sampling_rate, int fperiod, double alpha, int stage, double beta, int audio_buff_size, double uv_threshold, HTS_Boolean use_log_gain, double gv_weight_mgc, double gv_weight_lf0, double gv_weight_lpf) { Mecab_initialize(&open_jtalk_.mecab); NJD_initialize(&open_jtalk_.njd); JPCommon_initialize(&open_jtalk_.jpcommon); HTS_Engine_initialize(&open_jtalk_.engine, 2); HTS_Engine_set_sampling_rate(&open_jtalk_.engine, sampling_rate); HTS_Engine_set_fperiod(&open_jtalk_.engine, fperiod); HTS_Engine_set_alpha(&open_jtalk_.engine, alpha); HTS_Engine_set_gamma(&open_jtalk_.engine, stage); HTS_Engine_set_log_gain(&open_jtalk_.engine, use_log_gain); HTS_Engine_set_beta(&open_jtalk_.engine, beta); HTS_Engine_set_audio_buff_size(&open_jtalk_.engine, audio_buff_size); HTS_Engine_set_msd_threshold(&open_jtalk_.engine, 1, uv_threshold); HTS_Engine_set_gv_weight(&open_jtalk_.engine, 0, gv_weight_mgc); HTS_Engine_set_gv_weight(&open_jtalk_.engine, 1, gv_weight_lf0); }
int OpenJTalk_Create(OpenJTalk** openjtalk,Mecab* mecab,int argc,const char **argv) { /* file names of models */ char *fn_ms_dur = NULL; char *fn_ms_mgc = NULL; char *fn_ms_lf0 = NULL; char *fn_ms_lpf = NULL; /* file names of trees */ char *fn_ts_dur = NULL; char *fn_ts_mgc = NULL; char *fn_ts_lf0 = NULL; char *fn_ts_lpf = NULL; /* file names of windows */ int num_ws_mgc = 0, num_ws_lf0 = 0, num_ws_lpf = 0; /* file names of global variance */ char *fn_ms_gvm = NULL; char *fn_ms_gvl = NULL; char *fn_ms_gvf = NULL; /* file names of global variance trees */ char *fn_ts_gvm = NULL; char *fn_ts_gvl = NULL; char *fn_ts_gvf = NULL; /* file names of global variance switch */ char *fn_gv_switch = NULL; /* global parameter */ int sampling_rate = 16000; int fperiod = 80; double alpha = 0.42; int stage = 0; /* gamma = -1.0/stage */ double beta = 0.0; int audio_buff_size = 1600; double uv_threshold = 0.5; double gv_weight_mgc = 1.0; double gv_weight_lf0 = 1.0; double gv_weight_lpf = 1.0; HTS_Boolean use_log_gain = FALSE; HTS_Boolean use_lpf = FALSE; /* alloc OpenJTalk ythis pointer! */ *openjtalk = (struct OpenJTalk*)malloc(sizeof(struct OpenJTalk)); (*openjtalk)->mecab = mecab; (*openjtalk)->errorout[0] = '\0'; /* delta window handler for mel-cepstrum */ (*openjtalk)->fn_ws_mgc = (char **) calloc(argc, sizeof(char *)); /* delta window handler for log f0 */ (*openjtalk)->fn_ws_lf0 = (char **) calloc(argc, sizeof(char *)); /* delta window handler for low-pass filter */ (*openjtalk)->fn_ws_lpf = (char **) calloc(argc, sizeof(char *)); /* parse command line */ if (argc == 1) { sprintf((*openjtalk)->errorout,"option error!"); return -1; } /* read command */ while (--argc) { if (**++argv == '-') { switch (*(*argv + 1)) { case 't': switch (*(*argv + 2)) { case 'd': fn_ts_dur = (char*)*(++argv); break; case 'm': fn_ts_mgc = (char*)*(++argv); break; case 'f': case 'p': fn_ts_lf0 = (char*)*(++argv); break; case 'l': fn_ts_lpf = (char*)*(++argv); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-t%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 'm': switch (*(*argv + 2)) { case 'd': fn_ms_dur = (char*)*(++argv); break; case 'm': fn_ms_mgc = (char*)*(++argv); break; case 'f': case 'p': fn_ms_lf0 = (char*)*(++argv); break; case 'l': fn_ms_lpf = (char*)*(++argv); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-m%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 'd': switch (*(*argv + 2)) { case 'm': (*openjtalk)->fn_ws_mgc[num_ws_mgc++] = (char*)*(++argv); break; case 'f': case 'p': (*openjtalk)->fn_ws_lf0[num_ws_lf0++] = (char*)*(++argv); break; case 'l': (*openjtalk)->fn_ws_lpf[num_ws_lpf++] = (char*)*(++argv); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-d%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 's': sampling_rate = atoi(*++argv); --argc; break; case 'p': fperiod = atoi(*++argv); --argc; break; case 'a': alpha = atof(*++argv); --argc; break; case 'g': stage = atoi(*++argv); --argc; break; case 'l': use_log_gain = TRUE; break; case 'b': beta = atof(*++argv); --argc; break; case 'u': uv_threshold = atof(*++argv); --argc; break; case 'e': switch (*(*argv + 2)) { case 'm': fn_ts_gvm = (char*)*(++argv); break; case 'f': case 'p': fn_ts_gvl = (char*)*(++argv); break; case 'l': fn_ts_gvf = (char*)*(++argv); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-e%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 'c': switch (*(*argv + 2)) { case 'm': fn_ms_gvm = (char*)*(++argv); break; case 'f': case 'p': fn_ms_gvl = (char*)*(++argv); break; case 'l': fn_ms_gvf = (char*)*(++argv); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-c%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 'j': switch (*(*argv + 2)) { case 'm': gv_weight_mgc = atof(*(++argv)); break; case 'f': case 'p': gv_weight_lf0 = atof(*(++argv)); break; case 'l': gv_weight_lpf = atof(*(++argv)); break; default: sprintf((*openjtalk)->errorout,"Invalid option '-j%c'.\n", *(*argv + 2)); return 0; } --argc; break; case 'k': fn_gv_switch = (char*)*++argv; --argc; break; case 'z': audio_buff_size = atoi(*++argv); --argc; break; default: sprintf((*openjtalk)->errorout,"Invalid option '-%c'.\n", *(*argv + 1)); return 0; } } } /* number of models,trees check */ if (fn_ms_dur == NULL || fn_ms_mgc == NULL || fn_ms_lf0 == NULL || fn_ts_dur == NULL || fn_ts_mgc == NULL || fn_ts_lf0 == NULL || num_ws_mgc <= 0 || num_ws_lf0 <= 0) { sprintf((*openjtalk)->errorout,"Specify models (trees) for each parameter.\n"); return 0; } if (fn_ms_lpf != NULL && fn_ts_lpf != NULL && num_ws_lpf > 0) use_lpf = TRUE; /* initialize */ NJD_initialize(&(*openjtalk)->njd); JPCommon_initialize(&(*openjtalk)->jpcommon); if (use_lpf) HTS_Engine_initialize(&(*openjtalk)->engine, 3); else HTS_Engine_initialize(&(*openjtalk)->engine, 2); HTS_Engine_set_sampling_rate(&(*openjtalk)->engine, sampling_rate); HTS_Engine_set_fperiod(&(*openjtalk)->engine, fperiod); HTS_Engine_set_alpha(&(*openjtalk)->engine, alpha); HTS_Engine_set_gamma(&(*openjtalk)->engine, stage); HTS_Engine_set_log_gain(&(*openjtalk)->engine, use_log_gain); HTS_Engine_set_beta(&(*openjtalk)->engine, beta); HTS_Engine_set_audio_buff_size(&(*openjtalk)->engine, audio_buff_size); HTS_Engine_set_msd_threshold(&(*openjtalk)->engine, 1, uv_threshold); HTS_Engine_set_gv_weight(&(*openjtalk)->engine, 0, gv_weight_mgc); HTS_Engine_set_gv_weight(&(*openjtalk)->engine, 1, gv_weight_lf0); if (use_lpf) { HTS_Engine_set_gv_weight(&(*openjtalk)->engine, 2, gv_weight_lpf); } /* Load! */ HTS_Engine_load_duration_from_fn(&(*openjtalk)->engine, &fn_ms_dur, &fn_ts_dur, 1); HTS_Engine_load_parameter_from_fn(&(*openjtalk)->engine, &fn_ms_mgc, &fn_ts_mgc, (*openjtalk)->fn_ws_mgc, 0, FALSE, num_ws_mgc, 1); HTS_Engine_load_parameter_from_fn(&(*openjtalk)->engine, &fn_ms_lf0, &fn_ts_lf0, (*openjtalk)->fn_ws_lf0, 1, TRUE, num_ws_lf0, 1); if (HTS_Engine_get_nstream(&(*openjtalk)->engine) == 3) HTS_Engine_load_parameter_from_fn(&(*openjtalk)->engine, &fn_ms_lpf, &fn_ts_lpf, (*openjtalk)->fn_ws_lpf, 2, FALSE, num_ws_lpf, 1); if (fn_ms_gvm != NULL) { if (fn_ts_gvm != NULL) HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvm, &fn_ts_gvm, 0, 1); else HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvm, NULL, 0, 1); } if (fn_ms_gvl != NULL) { if (fn_ts_gvl != NULL) HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvl, &fn_ts_gvl, 1, 1); else HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvl, NULL, 1, 1); } if (HTS_Engine_get_nstream(&(*openjtalk)->engine) == 3 && fn_ms_gvf != NULL) { if (fn_ts_gvf != NULL) HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvf, &fn_ts_gvf, 2, 1); else HTS_Engine_load_gv_from_fn(&(*openjtalk)->engine, &fn_ms_gvf, NULL, 2, 1); } if (fn_gv_switch != NULL) HTS_Engine_load_gv_switch_from_fn(&(*openjtalk)->engine, fn_gv_switch); return 1; }
void NJD_refresh(NJD * njd) { NJD_clear(njd); NJD_initialize(njd); }