@@ -1,6 +1,5 @@ | |||
name Vietnamese (Northern) | |||
language vi | |||
gender male | |||
words 1 | |||
pitch 80 118 |
@@ -2,7 +2,6 @@ name Vietnamese (Central) | |||
language vi-vn-x-central | |||
phonemes vi-hue | |||
dictrules 1 | |||
gender male | |||
words 1 | |||
pitch 82 118 //80 118 |
@@ -2,7 +2,6 @@ name Vietnamese (Southern) | |||
language vi-vn-x-south | |||
phonemes vi-sgn | |||
dictrules 2 | |||
gender male | |||
words 1 | |||
pitch 82 118 //80 118 |
@@ -1,5 +1,4 @@ | |||
name Esperanto | |||
language eo | |||
gender male | |||
apostrophe 2 |
@@ -1,6 +1,5 @@ | |||
name Lingua Franca Nova | |||
language lfn | |||
gender male | |||
phonemes base2 | |||
l_unpronouncable 0 |
@@ -1,6 +1,5 @@ | |||
name Nahuatl (Classical) | |||
language nci | |||
gender male | |||
intonation 3 | |||
stressrule 2 |
@@ -1,4 +1,2 @@ | |||
name Lithuanian | |||
language lt | |||
gender male | |||
@@ -1,6 +1,5 @@ | |||
name Latvian | |||
language lv | |||
gender male | |||
maintainer Valdis Vitolins <[email protected]> | |||
status mature | |||
words 0 2 |
@@ -1,5 +1,4 @@ | |||
name Swahili | |||
language sw | |||
gender male | |||
status testing |
@@ -1,5 +1,4 @@ | |||
name Setswana | |||
language tn | |||
gender male | |||
status testing |
@@ -1,5 +1,4 @@ | |||
name Welsh | |||
language cy | |||
gender male | |||
intonation 4 |
@@ -1,6 +1,5 @@ | |||
name Malayalam | |||
language ml | |||
gender male | |||
intonation 2 | |||
//consonants 80 |
@@ -1,6 +1,5 @@ | |||
name Tamil | |||
language ta | |||
gender male | |||
intonation 2 | |||
consonants 80 |
@@ -1,7 +1,4 @@ | |||
name Danish | |||
language da | |||
gender male | |||
tunes s2 c2 q2 e2 | |||
@@ -1,4 +1,2 @@ | |||
name Icelandic | |||
language is | |||
gender male | |||
@@ -1,6 +1,5 @@ | |||
name Norwegian | |||
language no | |||
language nb | |||
gender male | |||
intonation 4 |
@@ -1,4 +1,2 @@ | |||
name Swedish | |||
language sv | |||
gender male | |||
@@ -1,6 +1,5 @@ | |||
name Afrikaans | |||
language af | |||
gender male | |||
maintainer Christo de Klerk <[email protected]> | |||
status mature |
@@ -1,5 +1,2 @@ | |||
name German | |||
language de | |||
gender male | |||
@@ -1,7 +1,6 @@ | |||
name English (Great Britain) | |||
language en-gb 2 | |||
language en 2 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature |
@@ -1,7 +1,6 @@ | |||
name English (Caribbean) | |||
language en-029 | |||
language en 10 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature |
@@ -1,7 +1,6 @@ | |||
name English (Scotland) | |||
language en-gb-scotland | |||
language en 4 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature |
@@ -2,7 +2,6 @@ name English (Lancaster) | |||
language en-gb-x-gbclan | |||
language en-gb 3 | |||
language en 5 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature | |||
@@ -14,5 +13,3 @@ stressLength 160 150 180 180 220 220 290 290 | |||
replace 00 i@3 i@ | |||
replace 03 N n | |||
replace 03 i I2 | |||
@@ -2,7 +2,6 @@ name English (West Midlands) | |||
language en-gb-x-gbcwmd | |||
language en-gb 9 | |||
language en 9 | |||
gender male | |||
phonemes en-wm | |||
@@ -2,7 +2,6 @@ name English (Received Pronunciation) | |||
language en-gb-x-rp | |||
language en-gb 4 | |||
language en 5 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature |
@@ -1,7 +1,6 @@ | |||
name English (America) | |||
language en-us 2 | |||
language en 3 | |||
gender male | |||
maintainer Reece H. Dunn <[email protected]> | |||
status mature | |||
@@ -15,4 +14,3 @@ stressAmp 17 16 19 19 19 19 21 19 | |||
replace 03 I i | |||
replace 03 I2 i | |||
@@ -1,3 +1,2 @@ | |||
name Dutch | |||
language nl | |||
gender male |
@@ -1,5 +1,2 @@ | |||
name Greek (Modern) | |||
language el | |||
gender male | |||
@@ -1,8 +1,6 @@ | |||
name Greek (Ancient) | |||
language grc | |||
gender male | |||
stressLength 170 170 190 190 0 0 230 240 | |||
dictrules 1 | |||
words 3 | |||
@@ -1,3 +1,2 @@ | |||
name Bengali | |||
language bn | |||
gender male |
@@ -1,3 +1,2 @@ | |||
name Hindi | |||
language hi | |||
gender male |
@@ -1,5 +1,4 @@ | |||
name Nepali | |||
language ne | |||
gender male | |||
dictrules 1 |
@@ -1,3 +1,2 @@ | |||
name Armenian (East Armenia) | |||
language hy | |||
gender male |
@@ -1,7 +1,6 @@ | |||
name Armenian (West Armenia) | |||
language hy-arevmda | |||
language hy 8 | |||
gender male | |||
dictrules 1 | |||
@@ -19,4 +18,3 @@ replace 00 tS dZ | |||
replace 00 k g | |||
replace 00 R2 R // ?? | |||
@@ -1,6 +1,5 @@ | |||
name Albanian | |||
language sq | |||
gender male | |||
// add this line to remove 'ë' at the end of words | |||
// replace 00 @/ NULL |
@@ -1,6 +1,5 @@ | |||
name Kurdish | |||
language ku | |||
gender male | |||
//words 1 48 | |||
@@ -1,6 +1,5 @@ | |||
name Latin | |||
language la | |||
gender male | |||
stressrule 2 33 0 2 | |||
// rule=penultimate | |||
// flags=0100001 (no automatic secondary stress + don't stres monosyllables) |
@@ -1,6 +1,5 @@ | |||
name Japanese | |||
language jp | |||
phonemes jp | |||
gender male | |||
intonation 4 |
@@ -1,6 +1,5 @@ | |||
name Korean | |||
language ko | |||
gender male | |||
pitch 80 118 | |||
intonation 2 | |||
@@ -1,6 +1,5 @@ | |||
name Indonesian | |||
language id | |||
gender male | |||
stressLength 160 200 180 180 0 0 220 240 | |||
stressAmp 16 18 18 18 0 0 22 21 |
@@ -1,7 +1,6 @@ | |||
// Last updated: 14 October 2010, Jason Ong ([email protected]) | |||
name Malay | |||
language ms | |||
gender male | |||
phonemes id | |||
translator id |
@@ -1,3 +1,2 @@ | |||
name Aragonese | |||
language an | |||
gender male |
@@ -1,4 +1,2 @@ | |||
name Catalan | |||
language ca | |||
gender male | |||
@@ -1,5 +1,4 @@ | |||
name Spanish (Spain) | |||
language es | |||
gender male | |||
dictrules 1 | |||
tunes s6 c6 q6 e6 |
@@ -2,7 +2,6 @@ name Spanish (Latin America) | |||
language es-419 | |||
language es-mx 6 | |||
language es 6 | |||
gender male | |||
phonemes es-la | |||
dictrules 2 |
@@ -1,7 +1,6 @@ | |||
name French (France) | |||
language fr-fr | |||
language fr | |||
gender male | |||
dictrules 1 | |||
tunes s3 c3 q3 e3 |
@@ -1,7 +1,6 @@ | |||
name French (Belgium) | |||
language fr-be | |||
language fr 8 | |||
gender male | |||
dictrules 2 | |||
tunes s3 c3 q3 e3 |
@@ -1,9 +1,7 @@ | |||
name Italian | |||
language it | |||
gender male | |||
maintainer Christian Leo M <[email protected]> | |||
status mature | |||
tunes s4 c4 q4 e4 | |||
@@ -1,7 +1,6 @@ | |||
name Portuguese (Brazil) | |||
language pt-br | |||
language pt | |||
gender male | |||
dictrules 2 | |||
stressLength 200 115 230 230 0 0 250 270 |
@@ -1,7 +1,6 @@ | |||
name Portuguese (Portugal) | |||
language pt-pt | |||
language pt 6 | |||
gender male | |||
phonemes pt-pt | |||
dictrules 1 |
@@ -1,3 +1,2 @@ | |||
name Romanian | |||
language ro | |||
gender male |
@@ -1,7 +1,6 @@ | |||
name Arabic | |||
language ar | |||
phonemes ar | |||
gender male | |||
pitch 160 120 | |||
roughness 0 | |||
speed 70 |
@@ -1,6 +1,5 @@ | |||
name Chinese (Mandarin) | |||
language zh | |||
gender male | |||
words 1 | |||
pitch 80 118 | |||
@@ -6,7 +6,6 @@ language zhy | |||
translator zhy | |||
phonemes zhy | |||
dictionary zhy | |||
gender male | |||
// interpret English letters as 1=English words, 2=jyutping | |||
dictrules 1 |
@@ -1,4 +1,2 @@ | |||
name Turkish | |||
language tr | |||
gender male | |||
@@ -1,3 +1,2 @@ | |||
name Tatar | |||
language tt | |||
gender male |
@@ -1,4 +1,2 @@ | |||
name Finnish | |||
language fi | |||
gender male | |||
@@ -1,6 +1,5 @@ | |||
name Hungarian | |||
language hu | |||
gender male | |||
option bracket 0 0 | |||
pitch 81 117 | |||
@@ -2,7 +2,6 @@ name Bosnian | |||
language bs | |||
phonemes hr | |||
dictionary hbs | |||
gender male | |||
pitch 81 120 | |||
formant 0 100 100 100 |
@@ -1,4 +1,2 @@ | |||
name Czech | |||
language cs | |||
gender male | |||
@@ -1,7 +1,6 @@ | |||
name Croatian | |||
language hr | |||
language hbs | |||
gender male | |||
dictionary hbs | |||
@@ -1,4 +1,2 @@ | |||
name Macedonian | |||
language mk | |||
gender male | |||
@@ -1,5 +1,4 @@ | |||
name Polish | |||
language pl | |||
gender male | |||
intonation 2 |
@@ -1,6 +1,5 @@ | |||
name Russian | |||
language ru | |||
gender male | |||
replace 03 a a# | |||
@@ -1,4 +1,2 @@ | |||
name Slovak | |||
language sk | |||
gender male | |||
@@ -1,6 +1,5 @@ | |||
name Serbian | |||
language sr | |||
gender male | |||
dictionary hbs | |||
// attributes towards !variant3 pitch 80 120 |
@@ -265,7 +265,7 @@ void ReadTonePoints(char *string, int *tone_pts) | |||
&tone_pts[8], &tone_pts[9]); | |||
} | |||
static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname) | |||
static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, int is_language_file) | |||
{ | |||
// Read a Voice file, allocate a VOICE_DATA and set data from the | |||
// file's language, gender, name lines | |||
@@ -320,6 +320,8 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname) | |||
break; | |||
case V_GENDER: | |||
sscanf(p, "%s %d", vgender, &age); | |||
if (is_language_file) | |||
fprintf(stderr, "Error (%s): gender attribute specified on a language file\n", fname); | |||
break; | |||
case V_VARIANTS: | |||
sscanf(p, "%d", &n_variants); | |||
@@ -1389,7 +1391,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
return vp->identifier; | |||
} | |||
static void GetVoices(const char *path, int len_path_voices) | |||
static void GetVoices(const char *path, int len_path_voices, int is_language_file) | |||
{ | |||
FILE *f_voice; | |||
espeak_VOICE *voice_data; | |||
@@ -1416,14 +1418,14 @@ static void GetVoices(const char *path, int len_path_voices) | |||
if (ftype == -EISDIR) { | |||
// a sub-directory | |||
GetVoices(fname, len_path_voices); | |||
GetVoices(fname, len_path_voices, is_language_file); | |||
} else if (ftype > 0) { | |||
// a regular file, add it to the voices list | |||
if ((f_voice = fopen(fname, "r")) == NULL) | |||
continue; | |||
// pass voice file name within the voices directory | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices); | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, is_language_file); | |||
fclose(f_voice); | |||
if (voice_data != NULL) | |||
@@ -1452,14 +1454,14 @@ static void GetVoices(const char *path, int len_path_voices) | |||
if (ftype == -EISDIR) { | |||
// a sub-directory | |||
GetVoices(fname, len_path_voices); | |||
GetVoices(fname, len_path_voices, is_language_file); | |||
} else if (ftype > 0) { | |||
// a regular file, add it to the voices list | |||
if ((f_voice = fopen(fname, "r")) == NULL) | |||
continue; | |||
// pass voice file name within the voices directory | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices); | |||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, is_language_file); | |||
fclose(f_voice); | |||
if (voice_data != NULL) | |||
@@ -1567,10 +1569,10 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
FreeVoiceList(); | |||
sprintf(path_voices, "%s%cvoices", path_home, PATHSEP); | |||
GetVoices(path_voices, strlen(path_voices)+1); | |||
GetVoices(path_voices, strlen(path_voices)+1, 0); | |||
sprintf(path_voices, "%s%clang", path_home, PATHSEP); | |||
GetVoices(path_voices, strlen(path_voices)+1); | |||
GetVoices(path_voices, strlen(path_voices)+1, 1); | |||
voices_list[n_voices_list] = NULL; // voices list terminator | |||
espeak_VOICE **new_voices = (espeak_VOICE **)realloc(voices, sizeof(espeak_VOICE *)*(n_voices_list+1)); |