code cleanup: move stressLength, stressAdd and stressAmp handling in LoadVoice()
From now on, stressLength must be set before stressAdd because
stressLength will overwrite any previous value. Usually stressLength is
set in a language file and stressAdd in a voice file.
Previously the order of the two commands didn't matter.
Code cleanup: remove param2 from langopts and rename keyword option in language files.
- param2[] is only used to set a second value to LOPT_BRACKET_PAUSE. It is simpler
to have two values in param[] instead. This simplifies the codebase.
- Instead of setting "option bracket X Y" in language files, use
keywords "brackets X" and "bracketsAnnounced Y" instead to follow the
naming convention of other keywords.
- Add missing documentation to docs/voices.md.
Revert "Move most stress rule definitions from tr_languages.c to language files"
This reverts commit 0f55204522.
This breaks using voice files like mb-de5-en. It could also use
named values for the stress rules (e.g. 'first-syllable').
Move most stress rule definitions from tr_languages.c to language files
Keyword stressRule in voices.c handles setting langopts->stress_rule.
tr_languages.c still contains the setting for some languages that don't have a language file yet.
Contributes to:
Issue #218, https://github.com/espeak-ng/espeak-ng/issues/218
Move handling of SetLetterVowel() to language files
Contributes to:
Issue #218, https://github.com/espeak-ng/espeak-ng/issues/218
Changes:
language files have a new keyword letterVowel. It can be a latin alphabet from a-z or a hex value (used by bulgarian).
Errors in parsing the values are only reported, nothing is done about them.
About testing:
I haven't noticed any differences in the output audio with letterVowel set or unset in any tested language. The code seems to work and the correct bits seem to be set, but I don't know how to confirm from the final audio.
TODO:
1. Write better documentation in docs/voices.md
2. The code uses new_translator. Should it use translator instead?
This is not used by any of the espeak-ng voices and languages.
Additionally, this functionality would be superceded by support
for specifying the language used by different scripts in the
language argument on the command line.
1. Store the encoding enumeration values in the Translation
object, instead of the charset table.
2. Use the encoding.c charset table data instead of the ones
in translate.c.
3. Remove the charset language file option -- it is only used
in the Arabic language file, but is used incorrectly there.
4. Specify ISO 8859-6 for the 8-bit encoding for Arabic instead
of UTF-8, so that espeakCHARS_8BIT and espeakCHARS_AUTO work
correctly for Arabic.