Browse Source

Use BCP 47 conformant language codes for the languages and accents.

master
Reece H. Dunn 9 years ago
parent
commit
77b5f6a1c0

+ 11
- 12
docs/add_language.md View File



## 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



+ 14
- 3
docs/voices.md View File



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

espeak-data/voices/asia/fa-pin → espeak-data/voices/asia/fa-Latn View File

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



espeak-data/voices/asia/hy-west → espeak-data/voices/asia/hy-arevmda View File

name armenian-west name armenian-west
language hy-west
language hy-arevmda
language hy 8 language hy 8
gender male gender male



espeak-data/voices/asia/vi-hue → espeak-data/voices/asia/vi-VN-x-central View File

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

espeak-data/voices/asia/vi-sgn → espeak-data/voices/asia/vi-VN-x-south View File

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

+ 0
- 1
espeak-data/voices/en View File

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



+ 0
- 1
espeak-data/voices/en-us View File

// 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



espeak-data/voices/es-la → espeak-data/voices/es-419 View File

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

+ 1
- 1
espeak-data/voices/mb/mb-en1 View File

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



espeak-data/voices/other/en-wi → espeak-data/voices/other/en-029 View File

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



espeak-data/voices/other/en-sc → espeak-data/voices/other/en-GB-scotland View File

name en-scottish name en-scottish
language en-sc
language en-gb-scotland
language en 4 language en 4
gender male gender male



espeak-data/voices/other/en-n → espeak-data/voices/other/en-GB-x-gbclan View File

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



espeak-data/voices/other/en-wm → espeak-data/voices/other/en-GB-x-gbcwmd View File

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



espeak-data/voices/other/en-rp → espeak-data/voices/other/en-GB-x-rp View File

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



+ 3
- 3
src/espeak-ng.c View File

} 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]);

+ 3
- 3
src/speak-ng.c View File

} 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]);

Loading…
Cancel
Save