Browse Source

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.
master
Juho Hiltunen 4 years ago
parent
commit
0cf3ee564c

+ 18
- 0
docs/voices.md View File

@@ -21,6 +21,8 @@
- [speed](#speed)
- [words](#words)
- [Language Attributes](#language-attributes)
- [brackets](#brackets)
- [bracketsAnnounced](#bracketsAnnounced)
- [phonemes](#phonemes)
- [dictionary](#dictionary)
- [dictrules](#dictrules)
@@ -335,6 +337,22 @@ vowel and the next start with a vowel.

## Language Attributes

### brackets

brackets <value>

Default value: 4

Increases the pause when reading brackets. Example: "Pause (with brackets)".

### bracketsAnnounced

bracketsAnnounced <value>

Default value: 2

Increases the pause when reading brackets when --punct is set to read bracket names. Example: "Pause (with brackets)".

### phonemes

phonemes <name>

+ 2
- 1
espeak-ng-data/lang/urj/hu View File

@@ -1,6 +1,7 @@
name Hungarian
language hu
option bracket 0 0
brackets 0
bracketsAnnounced 0
pitch 81 117



+ 3
- 3
src/libespeak-ng/dictionary.c View File

@@ -2309,9 +2309,9 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c

// is it a bracket ?
if (letter == 0xe000+'(') {
if (pre_pause < tr->langopts.param2[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param2[LOPT_BRACKET_PAUSE]; // a bracket, already spoken by AnnouncePunctuation()
}
if (pre_pause < tr->langopts.param[LOPT_BRACKET_PAUSE_ANNOUNCED])
pre_pause = tr->langopts.param[LOPT_BRACKET_PAUSE_ANNOUNCED]; // a bracket, already spoken by AnnouncePunctuation()
}
if (IsBracket(letter)) {
if (pre_pause < tr->langopts.param[LOPT_BRACKET_PAUSE])
pre_pause = tr->langopts.param[LOPT_BRACKET_PAUSE];

+ 1
- 1
src/libespeak-ng/tr_languages.c View File

@@ -291,7 +291,7 @@ static Translator *NewTranslator(void)
tr->langopts.param[LOPT_MAXAMP_EOC] = 19;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word
tr->langopts.param[LOPT_BRACKET_PAUSE] = 4; // pause at bracket
tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2; // pauses when announcing bracket names
tr->langopts.param[LOPT_BRACKET_PAUSE_ANNOUNCED] = 2; // pauses when announcing bracket names
tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL;
tr->langopts.alt_alphabet_lang = L('e', 'n');

+ 5
- 3
src/libespeak-ng/translate.h View File

@@ -285,7 +285,7 @@ typedef struct {
#define AL_NOT_CODE 0x08 // don't speak the character code
#define AL_NO_SYMBOL 0x10 // don't repeat "symbol" or "character"

#define N_LOPTS 21
#define N_LOPTS 22
#define LOPT_DIERESES 1
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
// bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
@@ -339,7 +339,7 @@ typedef struct {
// bit 1: stressed syllable: $alt change [e],[o] to [E],[O], $alt2 change [E],[O] to [e],[o]
#define LOPT_ALT 15

// pause for bracket (default=4), pause when announcing bracket names (default=2)
// pause for bracket (default=4), also see LOPT_BRACKET_PAUSE_ANNOUNCED
#define LOPT_BRACKET_PAUSE 16

// bit 1, don't break clause before annoucning . ? !
@@ -355,6 +355,9 @@ typedef struct {
// bit 1 Apostrophe at end of word is part of the word
#define LOPT_APOSTROPHE 20

// pause when announcing bracket names (default=2), also see LOPT_BRACKET_PAUSE
#define LOPT_BRACKET_PAUSE_ANNOUNCED 21

// stress_rule
#define STRESSPOSN_1L 0 // 1st syllable
#define STRESSPOSN_2L 1 // 2nd syllable
@@ -428,7 +431,6 @@ typedef struct {
int unstressed_wd1; // stress for $u word of 1 syllable
int unstressed_wd2; // stress for $u word of >1 syllable
int param[N_LOPTS];
int param2[N_LOPTS];
unsigned char *length_mods;
unsigned char *length_mods0;


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

@@ -102,7 +102,6 @@ enum {
V_STRESSRULE,
V_STRESSOPT,
V_NUMBERS,
V_OPTION,

V_MBROLA,
V_KLATT,
@@ -116,11 +115,6 @@ enum {
V_CONSONANTS
};

static MNEM_TAB options_tab[] = {
{ "bracket", LOPT_BRACKET_PAUSE },
{ NULL, -1 }
};

static MNEM_TAB keyword_tab[] = {
{ "name", V_NAME },
{ "language", V_LANGUAGE },
@@ -154,7 +148,6 @@ static MNEM_TAB keyword_tab[] = {
{ "breath", V_BREATH },
{ "breathw", V_BREATHW },
{ "numbers", V_NUMBERS },
{ "option", V_OPTION },
{ "mbrola", V_MBROLA },
{ "consonants", V_CONSONANTS },
{ "klatt", V_KLATT },
@@ -170,6 +163,8 @@ static MNEM_TAB keyword_tab[] = {
{ "l_sonorant_min", 0x100+LOPT_SONORANT_MIN },
{ "l_length_mods", 0x100+LOPT_LENGTH_MODS },
{ "apostrophe", 0x100+LOPT_APOSTROPHE },
{ "brackets", 0x100+LOPT_BRACKET_PAUSE },
{ "bracketsAnnounced", 0x100+LOPT_BRACKET_PAUSE_ANNOUNCED },

{ NULL, 0 }
};
@@ -490,7 +485,6 @@ voice_t *LoadVoice(const char *vname, int control)
int ix;
int n;
int value;
int value2;
int langix = 0;
int tone_only = control & 2;
bool language_set = false;
@@ -508,7 +502,6 @@ voice_t *LoadVoice(const char *vname, int control)
char translator_name[40];
char new_dictionary[40];
char phonemes_name[40];
char option_name[40];
const char *language_type;
char buf[sizeof(path_home)+30];
char path_voices[sizeof(path_home)+12];
@@ -771,18 +764,6 @@ voice_t *LoadVoice(const char *vname, int control)
else
fprintf(stderr, "Cannot set stressrule: language not set, or is invalid.\n");
break;
case V_OPTION:
if (langopts) {
value2 = 0;
if (((sscanf(p, "%s %d %d", option_name, &value, &value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0)) ||
((sscanf(p, "%d %d %d", &ix, &value, &value2) >= 2) && (ix < N_LOPTS))) {
langopts->param[ix] = value;
langopts->param2[ix] = value2;
} else
fprintf(stderr, "Bad voice option: %s %s\n", buf, p);
} else
fprintf(stderr, "Cannot set option: language not set, or is invalid.\n");
break;
case V_ECHO:
// echo. suggest: 135mS 11%
value = 0;

Loading…
Cancel
Save