| @@ -82,18 +82,19 @@ enum { | |||
| }; | |||
| static const MNEM_TAB langopts_tab[] = { | |||
| { "maintainer", V_MAINTAINER }, | |||
| { "status", V_STATUS }, | |||
| { "lowercaseSentence", V_LOWERCASE_SENTENCE }, | |||
| { "stressLength", V_STRESSLENGTH }, | |||
| { "maintainer", V_MAINTAINER }, | |||
| { "status", V_STATUS }, | |||
| { NULL, 0 } | |||
| { NULL, 0 } | |||
| }; | |||
| extern int CheckTranslator(Translator *tr, const MNEM_TAB *keyword_tab, int key); | |||
| void LoadLanguageOptions(Translator *translator, int key, char *keyValue ) { | |||
| int ix; | |||
| void LoadLanguageOptions(Translator *translator, int key ) { | |||
| switch (key) | |||
| { | |||
| switch (key) { | |||
| case V_LOWERCASE_SENTENCE: { | |||
| if (CheckTranslator(translator, langopts_tab, key) != 0) | |||
| break; | |||
| @@ -101,8 +102,21 @@ void LoadLanguageOptions(Translator *translator, int key ) { | |||
| translator->langopts.lowercase_sentence = true; | |||
| break; | |||
| } | |||
| case V_STRESSLENGTH: { | |||
| if (CheckTranslator(translator, langopts_tab, key) != 0) | |||
| break; | |||
| //printf("parsing: %s", keyValue); | |||
| int stress_lengths_set = 0; | |||
| int stress_lengths[8]; | |||
| stress_lengths_set = Read8Numbers(keyValue, stress_lengths); | |||
| for (ix = 0; ix < stress_lengths_set; ix++) { | |||
| translator->stress_lengths[ix] = stress_lengths[ix]; | |||
| } | |||
| break; | |||
| } | |||
| break; | |||
| case V_MAINTAINER: | |||
| case V_STATUS: | |||
| break; | |||
| @@ -91,6 +91,7 @@ voice_t *LoadVoice(const char *voice_name, int control); | |||
| voice_t *LoadVoiceVariant(const char *voice_name, int variant); | |||
| espeak_ng_STATUS DoVoiceChange(voice_t *v); | |||
| void WavegenSetVoice(voice_t *v); | |||
| int Read8Numbers(char *data_in, int data[8]); | |||
| void ReadTonePoints(char *string, int *tone_pts); | |||
| void VoiceReset(int control); | |||
| void FreeVoiceList(void); | |||
| @@ -1,3 +1,4 @@ | |||
| /* | |||
| * Copyright (C) 2005 to 2015 by Jonathan Duddington | |||
| * email: [email protected] | |||
| @@ -134,9 +135,9 @@ static const MNEM_TAB keyword_tab[] = { | |||
| { "pitch", V_PITCH }, | |||
| { "phonemes", V_PHONEMES }, | |||
| { "dictionary", V_DICTIONARY }, | |||
| { "stressLength", V_STRESSLENGTH }, | |||
| { "stressAmp", V_STRESSAMP }, | |||
| { "stressAdd", V_STRESSADD }, | |||
| { "stressLength", V_STRESSLENGTH }, | |||
| { "intonation", V_INTONATION }, | |||
| { "tunes", V_TUNES }, | |||
| { "dictrules", V_DICTRULES }, | |||
| @@ -476,7 +477,7 @@ static void PhonemeReplacement(char *p) | |||
| replace_phonemes[n_replace_phonemes++].type = flags; | |||
| } | |||
| static int Read8Numbers(char *data_in, int data[8]) | |||
| int Read8Numbers(char *data_in, int data[8]) | |||
| { | |||
| // Read 8 integer numbers | |||
| memset(data, 0, 8*sizeof(int)); | |||
| @@ -632,7 +633,8 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| key = LookupMnem(keyword_tab, buf); | |||
| LoadLanguageOptions(translator, key); | |||
| LoadLanguageOptions(translator, key, p); | |||
| switch (key) | |||
| { | |||
| case V_LANGUAGE: | |||
| @@ -706,20 +708,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch | |||
| } | |||
| break; | |||
| case V_STRESSLENGTH: {// stressLength | |||
| if (CheckTranslator(translator, keyword_tab, key) != 0) | |||
| break; | |||
| int stress_lengths_set = 0; | |||
| int stress_lengths[8]; | |||
| stress_lengths_set = Read8Numbers(p, stress_lengths); | |||
| for (ix = 0; ix < stress_lengths_set; ix++) { | |||
| translator->stress_lengths[ix] = stress_lengths[ix]; | |||
| } | |||
| break; | |||
| } | |||
| case V_STRESSAMP: { // stressAmp | |||
| if (CheckTranslator(translator, keyword_tab, key) != 0) | |||
| break; | |||