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