cst_voice *register___VOICENAME__(const char *voxdir) { cst_voice *v; cst_lexicon *lex; if (__VOICENAME___clunits) return __VOICENAME___clunits; /* Already registered */ v = new_voice(); v->name = "__NICKNAME__"; /* Sets up language specific parameters in the __VOICENAME__. */ __FLITELANG___init(v); /* Things that weren't filled in already. */ flite_feat_set_string(v->features,"name","__VOICENAME__"); /* Duration model */ flite_feat_set(v->features,"dur_cart",cart_val(&__VOICENAME___dur_cart)); flite_feat_set(v->features,"dur_stats",dur_stats_val((dur_stats *)__VOICENAME___dur_stats)); /* Lexicon */ lex = __FLITELEX___init(); flite_feat_set(v->features,"lexicon",lexicon_val(lex)); flite_feat_set(v->features,"postlex_func",uttfunc_val(lex->postlex)); /* Waveform synthesis */ flite_feat_set(v->features,"wave_synth_func",uttfunc_val(&clunits_synth)); flite_feat_set(v->features,"clunit_db",clunit_db_val(&__VOICENAME___db)); flite_feat_set_int(v->features,"sample_rate",__VOICENAME___db.sts->sample_rate); flite_feat_set_string(v->features,"join_type","simple_join"); flite_feat_set_string(v->features,"resynth_type","fixed"); if ((voxdir != NULL) && (__VOICENAME___db.sts->sts == NULL) && (__VOICENAME___db.sts->sts_paged == NULL) && (__VOICENAME___db.sts->frames == NULL)) flite_mmap_clunit_voxdata(voxdir,v); /* Unit selection */ __VOICENAME___db.unit_name_func = __VOICENAME___unit_name; __VOICENAME___clunits = v; return __VOICENAME___clunits; }
void usenglish_init(cst_voice *v) { us_text_init(); /* utterance break function */ feat_set(v->features,"utt_break",breakfunc_val(&default_utt_break)); /* Phoneset */ feat_set(v->features,"phoneset",phoneset_val(&us_phoneset)); feat_set_string(v->features,"silence",us_phoneset.silence); /* Text analyser */ feat_set_string(v->features,"text_whitespace",us_english_whitespace); feat_set_string(v->features,"text_postpunctuation",us_english_punctuation); feat_set_string(v->features,"text_prepunctuation", us_english_prepunctuation); feat_set_string(v->features,"text_singlecharsymbols", us_english_singlecharsymbols); feat_set(v->features,"tokentowords_func",itemfunc_val(&us_tokentowords)); /* very simple POS tagger */ feat_set(v->features,"pos_tagger_cart",cart_val(&us_pos_cart)); /* Phrasing */ feat_set(v->features,"phrasing_cart",cart_val(&us_phrasing_cart)); /* Intonation */ feat_set(v->features,"int_cart_accents",cart_val(&us_int_accent_cart)); feat_set(v->features,"int_cart_tones",cart_val(&us_int_tone_cart)); #ifndef FLITE_PLUS_HTS_ENGINE /* Duration */ feat_set(v->features,"dur_cart",cart_val(&us_durz_cart)); feat_set(v->features,"dur_stats",dur_stats_val((dur_stats *)us_dur_stats)); /* f0 model */ feat_set(v->features,"f0_model_func",uttfunc_val(&us_f0_model)); #endif /* !FLITE_PLUS_HTS_ENGINE */ us_ff_register(v->ffunctions); }