}; | }; | ||||
static const MNEM_TAB langopts_tab[] = { | static const MNEM_TAB langopts_tab[] = { | ||||
{ "maintainer", V_MAINTAINER }, | |||||
{ "status", V_STATUS }, | |||||
{ "lowercaseSentence", V_LOWERCASE_SENTENCE }, | { "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: { | case V_LOWERCASE_SENTENCE: { | ||||
if (CheckTranslator(translator, langopts_tab, key) != 0) | if (CheckTranslator(translator, langopts_tab, key) != 0) | ||||
break; | break; | ||||
translator->langopts.lowercase_sentence = true; | translator->langopts.lowercase_sentence = true; | ||||
break; | 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_MAINTAINER: | ||||
case V_STATUS: | case V_STATUS: | ||||
break; | break; |
voice_t *LoadVoiceVariant(const char *voice_name, int variant); | voice_t *LoadVoiceVariant(const char *voice_name, int variant); | ||||
espeak_ng_STATUS DoVoiceChange(voice_t *v); | espeak_ng_STATUS DoVoiceChange(voice_t *v); | ||||
void WavegenSetVoice(voice_t *v); | void WavegenSetVoice(voice_t *v); | ||||
int Read8Numbers(char *data_in, int data[8]); | |||||
void ReadTonePoints(char *string, int *tone_pts); | void ReadTonePoints(char *string, int *tone_pts); | ||||
void VoiceReset(int control); | void VoiceReset(int control); | ||||
void FreeVoiceList(void); | void FreeVoiceList(void); |
/* | /* | ||||
* Copyright (C) 2005 to 2015 by Jonathan Duddington | * Copyright (C) 2005 to 2015 by Jonathan Duddington | ||||
* email: [email protected] | * email: [email protected] | ||||
{ "pitch", V_PITCH }, | { "pitch", V_PITCH }, | ||||
{ "phonemes", V_PHONEMES }, | { "phonemes", V_PHONEMES }, | ||||
{ "dictionary", V_DICTIONARY }, | { "dictionary", V_DICTIONARY }, | ||||
{ "stressLength", V_STRESSLENGTH }, | |||||
{ "stressAmp", V_STRESSAMP }, | { "stressAmp", V_STRESSAMP }, | ||||
{ "stressAdd", V_STRESSADD }, | { "stressAdd", V_STRESSADD }, | ||||
{ "stressLength", V_STRESSLENGTH }, | |||||
{ "intonation", V_INTONATION }, | { "intonation", V_INTONATION }, | ||||
{ "tunes", V_TUNES }, | { "tunes", V_TUNES }, | ||||
{ "dictrules", V_DICTRULES }, | { "dictrules", V_DICTRULES }, | ||||
replace_phonemes[n_replace_phonemes++].type = flags; | 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 | // Read 8 integer numbers | ||||
memset(data, 0, 8*sizeof(int)); | memset(data, 0, 8*sizeof(int)); | ||||
key = LookupMnem(keyword_tab, buf); | key = LookupMnem(keyword_tab, buf); | ||||
LoadLanguageOptions(translator, key); | |||||
LoadLanguageOptions(translator, key, p); | |||||
switch (key) | switch (key) | ||||
{ | { | ||||
case V_LANGUAGE: | case V_LANGUAGE: | ||||
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch | voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch | ||||
} | } | ||||
break; | 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 | case V_STRESSAMP: { // stressAmp | ||||
if (CheckTranslator(translator, keyword_tab, key) != 0) | if (CheckTranslator(translator, keyword_tab, key) != 0) | ||||
break; | break; |