## Language Code | ## Language Code | ||||
Generally, the language's international | |||||
[ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) code is used to identify | |||||
the language. It is used in the filenames which contain the language's | |||||
data. In the examples below the code **"fr"** is used as an example. | |||||
Replace this with the code of your language. | |||||
If the language does not have a 2-letter ISO\_639-1 code, then use the | |||||
3-letter ISO\_639-3 code. Language codes may differ from country codes. | |||||
It is possible to have different variants of a language for different | |||||
dialects. For example the sound of some phonemes are changed, or some of | |||||
the pronunciation rules differ. | |||||
The language is identified using the | |||||
[BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) language tag. | |||||
When this is not enough to identify an accent, the | |||||
[bcp47-data](https://github.com/rhdunn/bcp47-data) accents file describes | |||||
the private use tags used by eSpeak NG. For example: | |||||
* `en` -- English | |||||
* `en-GB-scotland` -- English with a Scottish accent | |||||
* `en-GB-x-rp` -- English with a Received Pronunciation accent | |||||
* `es-419` -- Spanish with a Latin American accent | |||||
* `fr-CA` -- French with a Canadian accent | |||||
## Language Files | ## Language Files | ||||
It selects the default behaviour and characteristics for the language, | It selects the default behaviour and characteristics for the language, | ||||
and sets default values for "phonemes", "dictionary" and other | and sets default values for "phonemes", "dictionary" and other | ||||
attributes. The \<language code\> should be a two-letter ISO 639-1 | |||||
language code. One or more language variant codes may be appended, | |||||
separated by hyphens. (eg. en-uk-north). | |||||
attributes. | |||||
The \<language code\> is a | |||||
[BCP 47](https://en.wikipedia.org/wiki/IETF_language_tag) language tag. | |||||
When this is not enough to identify an accent, the | |||||
[bcp47-data](https://github.com/rhdunn/bcp47-data) accents file describes | |||||
the private use tags used by eSpeak NG. For example: | |||||
* `en` -- English | |||||
* `en-GB-scotland` -- English with a Scottish accent | |||||
* `en-GB-x-rp` -- English with a Received Pronunciation accent | |||||
* `es-419` -- Spanish with a Latin American accent | |||||
* `fr-CA` -- French with a Canadian accent | |||||
The optional \<priority\> value gives the preference of this voice | The optional \<priority\> value gives the preference of this voice | ||||
compared with others for the specified language. A low value indicates a | compared with others for the specified language. A low value indicates a |
name persian-pinglish | name persian-pinglish | ||||
// Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat and SMS (texte messages).), called Pinglish | // Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat and SMS (texte messages).), called Pinglish | ||||
language fa-pin | |||||
language fa-Latn | |||||
dictrules 1 | dictrules 1 | ||||
phonemes fa | phonemes fa | ||||
name armenian-west | name armenian-west | ||||
language hy-west | |||||
language hy-arevmda | |||||
language hy 8 | language hy 8 | ||||
gender male | gender male | ||||
name vietnam_hue | name vietnam_hue | ||||
language vi-hue | |||||
language vi-vn-x-central | |||||
phonemes vi-hue | phonemes vi-hue | ||||
dictrules 1 | dictrules 1 | ||||
gender male | gender male |
name vietnam_sgn | name vietnam_sgn | ||||
language vi-sgn | |||||
language vi-vn-x-south | |||||
phonemes vi-sgn | phonemes vi-sgn | ||||
dictrules 2 | dictrules 2 | ||||
gender male | gender male |
name english | name english | ||||
language en-gb 2 | language en-gb 2 | ||||
language en-uk 2 | |||||
language en 2 | language en 2 | ||||
gender male | gender male | ||||
// moving towards US English | // moving towards US English | ||||
name english-us | name english-us | ||||
language en-us 2 | language en-us 2 | ||||
language en-r | |||||
language en 3 | language en 3 | ||||
gender male | gender male | ||||
name spanish-latin-am | name spanish-latin-am | ||||
language es-la | |||||
language es-419 | |||||
language es-mx 6 | language es-mx 6 | ||||
language es 6 | language es 6 | ||||
gender male | gender male |
name english-mb-en1 | name english-mb-en1 | ||||
language en-uk 3 | |||||
language en-gb 3 | |||||
language en 2 | language en 2 | ||||
gender male | gender male | ||||
name en-westindies | name en-westindies | ||||
language en-wi | |||||
language en-uk 4 | |||||
language en-029 | |||||
language en 10 | language en 10 | ||||
gender male | gender male | ||||
name en-scottish | name en-scottish | ||||
language en-sc | |||||
language en-gb-scotland | |||||
language en 4 | language en 4 | ||||
gender male | gender male | ||||
name english-north | name english-north | ||||
language en-uk-north | |||||
language en-uk 3 | |||||
language en-gb-x-gbclan | |||||
language en-gb 3 | |||||
language en 5 | language en 5 | ||||
gender male | gender male | ||||
name english_wmids | name english_wmids | ||||
language en-uk-wmids | |||||
language en-uk 9 | |||||
language en-gb-x-gbcwmd | |||||
language en-gb 9 | |||||
language en 9 | language en 9 | ||||
gender male | gender male | ||||
name english_rp | name english_rp | ||||
language en-uk-rp | |||||
language en-uk 4 | |||||
language en-gb-x-rp | |||||
language en-gb 4 | |||||
language en 5 | language en 5 | ||||
gender male | gender male | ||||
} else | } else | ||||
voices = espeak_ListVoices(NULL); | voices = espeak_ListVoices(NULL); | ||||
fprintf(f_out, "Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
fprintf(f_out, "Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
for (ix = 0; (v = voices[ix]) != NULL; ix++) { | for (ix = 0; (v = voices[ix]) != NULL; ix++) { | ||||
count = 0; | count = 0; | ||||
lang_name = p+1; | lang_name = p+1; | ||||
if (v->age == 0) | if (v->age == 0) | ||||
strcpy(age_buf, " "); | |||||
strcpy(age_buf, " --"); | |||||
else | else | ||||
sprintf(age_buf, "%3d", v->age); | sprintf(age_buf, "%3d", v->age); | ||||
if ((buf[j] = c) == 0) | if ((buf[j] = c) == 0) | ||||
break; | break; | ||||
} | } | ||||
fprintf(f_out, "%2d %-12s%s%c %-20s %-13s ", | |||||
fprintf(f_out, "%2d %-15s%s/%c %-18s %-20s ", | |||||
p[0], lang_name, age_buf, genders[v->gender], buf, v->identifier); | p[0], lang_name, age_buf, genders[v->gender], buf, v->identifier); | ||||
} else | } else | ||||
fprintf(f_out, "(%s %d)", lang_name, p[0]); | fprintf(f_out, "(%s %d)", lang_name, p[0]); |
} else | } else | ||||
voices = espeak_ListVoices(NULL); | voices = espeak_ListVoices(NULL); | ||||
fprintf(f_out, "Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
fprintf(f_out, "Pty Language Age/Gender VoiceName File Other Languages\n"); | |||||
for (ix = 0; (v = voices[ix]) != NULL; ix++) { | for (ix = 0; (v = voices[ix]) != NULL; ix++) { | ||||
count = 0; | count = 0; | ||||
lang_name = p+1; | lang_name = p+1; | ||||
if (v->age == 0) | if (v->age == 0) | ||||
strcpy(age_buf, " "); | |||||
strcpy(age_buf, " --"); | |||||
else | else | ||||
sprintf(age_buf, "%3d", v->age); | sprintf(age_buf, "%3d", v->age); | ||||
if ((buf[j] = c) == 0) | if ((buf[j] = c) == 0) | ||||
break; | break; | ||||
} | } | ||||
fprintf(f_out, "%2d %-12s%s%c %-20s %-13s ", | |||||
fprintf(f_out, "%2d %-15s%s/%c %-18s %-20s ", | |||||
p[0], lang_name, age_buf, genders[v->gender], buf, v->identifier); | p[0], lang_name, age_buf, genders[v->gender], buf, v->identifier); | ||||
} else | } else | ||||
fprintf(f_out, "(%s %d)", lang_name, p[0]); | fprintf(f_out, "(%s %d)", lang_name, p[0]); |