Browse Source

code cleanup: use translator instead of langopts in LoadVoice()

Since new_translator isn't used anymore langopts will always point to
translator anyway.
master
Juho Hiltunen 4 years ago
parent
commit
7c32085dcd
1 changed files with 21 additions and 24 deletions
  1. 21
    24
      src/libespeak-ng/voices.c

+ 21
- 24
src/libespeak-ng/voices.c View File

int stress_lengths_set = 0; int stress_lengths_set = 0;
int stress_add_set = 0; int stress_add_set = 0;
int conditional_rules = 0; int conditional_rules = 0;
LANGUAGE_OPTIONS *langopts = NULL;


char voicename[40]; char voicename[40];
char language_name[40]; char language_name[40];
*p = 0; // remove previous variant name *p = 0; // remove previous variant name
sprintf(buf, "+%s", &vname[3]); // omit !v/ from the variant filename sprintf(buf, "+%s", &vname[3]); // omit !v/ from the variant filename
strcat(voice_identifier, buf); strcat(voice_identifier, buf);
langopts = &translator->langopts;
} }
VoiceReset(tone_only); VoiceReset(tone_only);


SelectPhonemeTableName(phonemes_name); SelectPhonemeTableName(phonemes_name);


translator = SelectTranslator(translator_name); translator = SelectTranslator(translator_name);
langopts = &translator->langopts;
strncpy0(voice->language_name, language_name, sizeof(voice->language_name)); strncpy0(voice->language_name, language_name, sizeof(voice->language_name));
} }
} }
VoiceFormant(p); VoiceFormant(p);
break; break;
case V_LOWERCASE_SENTENCE: { case V_LOWERCASE_SENTENCE: {
if (langopts)
langopts->lowercase_sentence = true;
if (translator)
translator->langopts.lowercase_sentence = true;
else else
fprintf(stderr, "Cannot set lowercaseSentence: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set lowercaseSentence: language not set, or is invalid.\n");
break; break;
case V_INTONATION: // intonation case V_INTONATION: // intonation
sscanf(p, "%d", &option_tone_flags); sscanf(p, "%d", &option_tone_flags);
if ((option_tone_flags & 0xff) != 0) { if ((option_tone_flags & 0xff) != 0) {
if (langopts)
langopts->intonation_group = option_tone_flags & 0xff;
if (translator)
translator->langopts.intonation_group = option_tone_flags & 0xff;
else else
fprintf(stderr, "Cannot set intonation: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set intonation: language not set, or is invalid.\n");
} }
break; break;
case V_TUNES: case V_TUNES:
n = sscanf(p, "%s %s %s %s %s %s", names[0], names[1], names[2], names[3], names[4], names[5]); n = sscanf(p, "%s %s %s %s %s %s", names[0], names[1], names[2], names[3], names[4], names[5]);
if (langopts) {
langopts->intonation_group = 0;
if (translator) {
translator->langopts.intonation_group = 0;
for (ix = 0; ix < n; ix++) { for (ix = 0; ix < n; ix++) {
if (strcmp(names[ix], "NULL") == 0) if (strcmp(names[ix], "NULL") == 0)
continue; continue;
if ((value = LookupTune(names[ix])) < 0) if ((value = LookupTune(names[ix])) < 0)
fprintf(stderr, "Unknown tune '%s'\n", names[ix]); fprintf(stderr, "Unknown tune '%s'\n", names[ix]);
else else
langopts->tunes[ix] = value;
translator->langopts.tunes[ix] = value;
} }
} else } else
fprintf(stderr, "Cannot set tunes: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set tunes: language not set, or is invalid.\n");
case V_DICTRULES: // conditional dictionary rules and list entries case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS: case V_NUMBERS:
case V_STRESSOPT: case V_STRESSOPT:
if (langopts) {
if (translator) {
// expect a list of numbers // expect a list of numbers
while (*p != 0) { while (*p != 0) {
while (isspace(*p)) p++; while (isspace(*p)) p++;
if (key == V_DICTRULES) if (key == V_DICTRULES)
conditional_rules |= (1 << n); conditional_rules |= (1 << n);
else if (key == V_NUMBERS) else if (key == V_NUMBERS)
langopts->numbers |= (1 << n);
translator->langopts.numbers |= (1 << n);
else if (key == V_STRESSOPT) else if (key == V_STRESSOPT)
langopts->stress_flags |= (1 << n);
translator->langopts.stress_flags |= (1 << n);
} else { } else {
if ((key == V_NUMBERS) && (n < 64)) if ((key == V_NUMBERS) && (n < 64))
langopts->numbers2 |= (1 << (n-32));
translator->langopts.numbers2 |= (1 << (n-32));
else else
fprintf(stderr, "Bad option number %d\n", n); fprintf(stderr, "Bad option number %d\n", n);
} }
} }
while (isalnum(*p)) p++; while (isalnum(*p)) p++;
} }
ProcessLanguageOptions(langopts);
ProcessLanguageOptions(&(translator->langopts));
} else } else
fprintf(stderr, "Cannot set stressopt: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set stressopt: language not set, or is invalid.\n");
break; break;
PhonemeReplacement(p); PhonemeReplacement(p);
break; break;
case V_WORDGAP: // words case V_WORDGAP: // words
if (langopts)
sscanf(p, "%d %d", &langopts->word_gap, &langopts->vowel_pause);
if (translator)
sscanf(p, "%d %d", &translator->langopts.word_gap, &translator->langopts.vowel_pause);
else else
fprintf(stderr, "Cannot set wordgap: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set wordgap: language not set, or is invalid.\n");
break; break;
case V_STRESSRULE: case V_STRESSRULE:
if (langopts)
sscanf(p, "%d %d %d %d", &langopts->stress_rule,
&langopts->stress_flags,
&langopts->unstressed_wd1,
&langopts->unstressed_wd2);
if (translator)
sscanf(p, "%d %d %d %d", &translator->langopts.stress_rule,
&translator->langopts.stress_flags,
&translator->langopts.unstressed_wd1,
&translator->langopts.unstressed_wd2);
else else
fprintf(stderr, "Cannot set stressrule: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set stressrule: language not set, or is invalid.\n");
break; break;
break; break;
default: default:
if ((key & 0xff00) == 0x100) { if ((key & 0xff00) == 0x100) {
if (langopts)
sscanf(p, "%d", &langopts->param[key &0xff]);
if (translator)
sscanf(p, "%d", &translator->langopts.param[key &0xff]);
else else
fprintf(stderr, "Cannot set voice attribute: language not set, or is invalid.\n"); fprintf(stderr, "Cannot set voice attribute: language not set, or is invalid.\n");
} else } else

Loading…
Cancel
Save