@@ -35,58 +35,11 @@ | |||
#include "mnemonics.h" // for MNEM_TAB | |||
#include "translate.h" // for Translator | |||
#include "synthdata.h" // for n_tunes, tunes | |||
#include "voice.h" // for ReadNumbers, Read8Numbers | |||
#include "voice.h" // for ReadNumbers, Read8Numbers, ... | |||
static int CheckTranslator(Translator *tr, const MNEM_TAB *keyword_tab, int key); | |||
static int LookupTune(const char *name); | |||
enum { | |||
V_NAME = 1, | |||
V_LANGUAGE, | |||
V_GENDER, | |||
V_PHONEMES, | |||
V_DICTIONARY, | |||
V_VARIANTS, | |||
V_MAINTAINER, | |||
V_STATUS, | |||
// these affect voice quality, are independent of language | |||
V_FORMANT, | |||
V_PITCH, | |||
V_ECHO, | |||
V_FLUTTER, | |||
V_ROUGHNESS, | |||
V_CLARITY, | |||
V_TONE, | |||
V_VOICING, | |||
V_BREATH, | |||
V_BREATHW, | |||
// these override defaults set by the translator | |||
V_LOWERCASE_SENTENCE, | |||
V_WORDGAP, | |||
V_INTONATION, | |||
V_TUNES, | |||
V_STRESSLENGTH, | |||
V_STRESSAMP, | |||
V_STRESSADD, | |||
V_DICTRULES, | |||
V_STRESSRULE, | |||
V_STRESSOPT, | |||
V_NUMBERS, | |||
V_MBROLA, | |||
V_KLATT, | |||
V_FAST, | |||
V_SPEED, | |||
V_DICTMIN, | |||
// these need a phoneme table to have been specified | |||
V_REPLACE, | |||
V_CONSONANTS | |||
}; | |||
extern const MNEM_TAB langopts_tab[]; | |||
void LoadLanguageOptions(Translator *translator, int key, char *keyValue ) { |
@@ -84,6 +84,110 @@ extern espeak_VOICE current_voice_selected; | |||
extern voice_t *voice; | |||
extern int tone_points[12]; | |||
typedef enum { | |||
V_NAME = 1, | |||
V_LANGUAGE, | |||
V_GENDER, | |||
V_PHONEMES, | |||
V_DICTIONARY, | |||
V_VARIANTS, | |||
V_MAINTAINER, | |||
V_STATUS, | |||
// these affect voice quality, are independent of language | |||
V_FORMANT, | |||
V_PITCH, | |||
V_ECHO, | |||
V_FLUTTER, | |||
V_ROUGHNESS, | |||
V_CLARITY, | |||
V_TONE, | |||
V_VOICING, | |||
V_BREATH, | |||
V_BREATHW, | |||
// these override defaults set by the translator | |||
V_LOWERCASE_SENTENCE, | |||
V_WORDGAP, | |||
V_INTONATION, | |||
V_TUNES, | |||
V_STRESSLENGTH, | |||
V_STRESSAMP, | |||
V_STRESSADD, | |||
V_DICTRULES, | |||
V_STRESSRULE, | |||
V_STRESSOPT, | |||
V_NUMBERS, | |||
V_MBROLA, | |||
V_KLATT, | |||
V_FAST, | |||
V_SPEED, | |||
V_DICTMIN, | |||
// these need a phoneme table to have been specified | |||
V_REPLACE, | |||
V_CONSONANTS | |||
} VOICELANGATTRIBUTES; | |||
static const MNEM_TAB langopts_tab[] = { | |||
{ "dictrules", V_DICTRULES }, | |||
{ "intonation", V_INTONATION }, | |||
{ "l_dieresis", 0x100+LOPT_DIERESES }, | |||
{ "l_prefix", 0x100+LOPT_PREFIXES }, | |||
{ "l_regressive_v", 0x100+LOPT_REGRESSIVE_VOICING }, | |||
{ "l_unpronouncable", 0x100+LOPT_UNPRONOUNCABLE }, | |||
{ "l_sonorant_min", 0x100+LOPT_SONORANT_MIN }, | |||
{ "lowercaseSentence", V_LOWERCASE_SENTENCE }, | |||
{ "numbers", V_NUMBERS }, | |||
{ "stressAdd", V_STRESSADD }, | |||
{ "stressAmp", V_STRESSAMP }, | |||
{ "stressLength", V_STRESSLENGTH }, | |||
{ "stressOpt", V_STRESSOPT }, | |||
{ "stressRule", V_STRESSRULE }, | |||
{ "tunes", V_TUNES }, | |||
{ "words", V_WORDGAP }, | |||
{ "maintainer", V_MAINTAINER }, | |||
{ "status", V_STATUS }, | |||
{ NULL, 0 } | |||
}; | |||
static const MNEM_TAB keyword_tab[] = { | |||
{ "name", V_NAME }, | |||
{ "language", V_LANGUAGE }, | |||
{ "gender", V_GENDER }, | |||
{ "variants", V_VARIANTS }, | |||
{ "formant", V_FORMANT }, | |||
{ "pitch", V_PITCH }, | |||
{ "phonemes", V_PHONEMES }, | |||
{ "dictionary", V_DICTIONARY }, | |||
{ "replace", V_REPLACE }, | |||
{ "echo", V_ECHO }, | |||
{ "flutter", V_FLUTTER }, | |||
{ "roughness", V_ROUGHNESS }, | |||
{ "clarity", V_CLARITY }, | |||
{ "tone", V_TONE }, | |||
{ "voicing", V_VOICING }, | |||
{ "breath", V_BREATH }, | |||
{ "breathw", V_BREATHW }, | |||
{ "mbrola", V_MBROLA }, | |||
{ "consonants", V_CONSONANTS }, | |||
{ "klatt", V_KLATT }, | |||
{ "fast_test2", V_FAST }, | |||
{ "speed", V_SPEED }, | |||
{ "dict_min", V_DICTMIN }, | |||
{ "apostrophe", 0x100+LOPT_APOSTROPHE }, | |||
{ "brackets", 0x100+LOPT_BRACKET_PAUSE }, | |||
{ "bracketsAnnounced", 0x100+LOPT_BRACKET_PAUSE_ANNOUNCED }, | |||
{ NULL, 0 } | |||
}; | |||
const char *SelectVoice(espeak_VOICE *voice_select, int *found); | |||
espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name); | |||
voice_t *LoadVoice(const char *voice_name, int control); |
@@ -73,111 +73,6 @@ static espeak_VOICE *voices_list[N_VOICES_LIST]; | |||
espeak_VOICE current_voice_selected; | |||
enum { | |||
V_NAME = 1, | |||
V_LANGUAGE, | |||
V_GENDER, | |||
V_PHONEMES, | |||
V_DICTIONARY, | |||
V_VARIANTS, | |||
V_MAINTAINER, | |||
V_STATUS, | |||
// these affect voice quality, are independent of language | |||
V_FORMANT, | |||
V_PITCH, | |||
V_ECHO, | |||
V_FLUTTER, | |||
V_ROUGHNESS, | |||
V_CLARITY, | |||
V_TONE, | |||
V_VOICING, | |||
V_BREATH, | |||
V_BREATHW, | |||
// these override defaults set by the translator | |||
V_LOWERCASE_SENTENCE, | |||
V_WORDGAP, | |||
V_INTONATION, | |||
V_TUNES, | |||
V_STRESSLENGTH, | |||
V_STRESSAMP, | |||
V_STRESSADD, | |||
V_DICTRULES, | |||
V_STRESSRULE, | |||
V_STRESSOPT, | |||
V_NUMBERS, | |||
V_MBROLA, | |||
V_KLATT, | |||
V_FAST, | |||
V_SPEED, | |||
V_DICTMIN, | |||
// these need a phoneme table to have been specified | |||
V_REPLACE, | |||
V_CONSONANTS | |||
}; | |||
const MNEM_TAB langopts_tab[] = { | |||
{ "dictrules", V_DICTRULES }, | |||
{ "intonation", V_INTONATION }, | |||
{ "l_dieresis", 0x100+LOPT_DIERESES }, | |||
{ "l_prefix", 0x100+LOPT_PREFIXES }, | |||
{ "l_regressive_v", 0x100+LOPT_REGRESSIVE_VOICING }, | |||
{ "l_unpronouncable", 0x100+LOPT_UNPRONOUNCABLE }, | |||
{ "l_sonorant_min", 0x100+LOPT_SONORANT_MIN }, | |||
{ "lowercaseSentence", V_LOWERCASE_SENTENCE }, | |||
{ "numbers", V_NUMBERS }, | |||
{ "stressAdd", V_STRESSADD }, | |||
{ "stressAmp", V_STRESSAMP }, | |||
{ "stressLength", V_STRESSLENGTH }, | |||
{ "stressOpt", V_STRESSOPT }, | |||
{ "stressRule", V_STRESSRULE }, | |||
{ "tunes", V_TUNES }, | |||
{ "words", V_WORDGAP }, | |||
{ "maintainer", V_MAINTAINER }, | |||
{ "status", V_STATUS }, | |||
{ NULL, 0 } | |||
}; | |||
static const MNEM_TAB keyword_tab[] = { | |||
{ "name", V_NAME }, | |||
{ "language", V_LANGUAGE }, | |||
{ "gender", V_GENDER }, | |||
{ "variants", V_VARIANTS }, | |||
{ "formant", V_FORMANT }, | |||
{ "pitch", V_PITCH }, | |||
{ "phonemes", V_PHONEMES }, | |||
{ "dictionary", V_DICTIONARY }, | |||
{ "replace", V_REPLACE }, | |||
{ "echo", V_ECHO }, | |||
{ "flutter", V_FLUTTER }, | |||
{ "roughness", V_ROUGHNESS }, | |||
{ "clarity", V_CLARITY }, | |||
{ "tone", V_TONE }, | |||
{ "voicing", V_VOICING }, | |||
{ "breath", V_BREATH }, | |||
{ "breathw", V_BREATHW }, | |||
{ "mbrola", V_MBROLA }, | |||
{ "consonants", V_CONSONANTS }, | |||
{ "klatt", V_KLATT }, | |||
{ "fast_test2", V_FAST }, | |||
{ "speed", V_SPEED }, | |||
{ "dict_min", V_DICTMIN }, | |||
{ "apostrophe", 0x100+LOPT_APOSTROPHE }, | |||
{ "brackets", 0x100+LOPT_BRACKET_PAUSE }, | |||
{ "bracketsAnnounced", 0x100+LOPT_BRACKET_PAUSE_ANNOUNCED }, | |||
{ NULL, 0 } | |||
}; | |||
#define N_VOICE_VARIANTS 12 | |||
const char variants_either[N_VOICE_VARIANTS] = { 1, 2, 12, 3, 13, 4, 14, 5, 11, 0 }; | |||
const char variants_male[N_VOICE_VARIANTS] = { 1, 2, 3, 4, 5, 6, 0 }; |