diff --git a/docs/add_language.md b/docs/add_language.md index aa16bd52..0664a309 100644 --- a/docs/add_language.md +++ b/docs/add_language.md @@ -23,18 +23,17 @@ gradual process of improvement. ## 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. +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: -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. +* `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 diff --git a/docs/voices.md b/docs/voices.md index a4041365..d7d72ae4 100644 --- a/docs/voices.md +++ b/docs/voices.md @@ -84,9 +84,20 @@ listed below. It selects the default behaviour and characteristics for the language, and sets default values for "phonemes", "dictionary" and other -attributes. The \ 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 \ 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 \ value gives the preference of this voice compared with others for the specified language. A low value indicates a diff --git a/espeak-data/voices/asia/fa-pin b/espeak-data/voices/asia/fa-Latn similarity index 91% rename from espeak-data/voices/asia/fa-pin rename to espeak-data/voices/asia/fa-Latn index f3adbfca..5349a58c 100644 --- a/espeak-data/voices/asia/fa-pin +++ b/espeak-data/voices/asia/fa-Latn @@ -1,6 +1,6 @@ name persian-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 phonemes fa diff --git a/espeak-data/voices/asia/hy-west b/espeak-data/voices/asia/hy-arevmda similarity index 93% rename from espeak-data/voices/asia/hy-west rename to espeak-data/voices/asia/hy-arevmda index 85b3f75b..234f1bca 100644 --- a/espeak-data/voices/asia/hy-west +++ b/espeak-data/voices/asia/hy-arevmda @@ -1,5 +1,5 @@ name armenian-west -language hy-west +language hy-arevmda language hy 8 gender male diff --git a/espeak-data/voices/asia/vi-hue b/espeak-data/voices/asia/vi-VN-x-central similarity index 88% rename from espeak-data/voices/asia/vi-hue rename to espeak-data/voices/asia/vi-VN-x-central index 83849f89..8a609173 100644 --- a/espeak-data/voices/asia/vi-hue +++ b/espeak-data/voices/asia/vi-VN-x-central @@ -1,5 +1,5 @@ name vietnam_hue -language vi-hue +language vi-vn-x-central phonemes vi-hue dictrules 1 gender male diff --git a/espeak-data/voices/asia/vi-sgn b/espeak-data/voices/asia/vi-VN-x-south similarity index 88% rename from espeak-data/voices/asia/vi-sgn rename to espeak-data/voices/asia/vi-VN-x-south index 07c4a12e..7556ccea 100644 --- a/espeak-data/voices/asia/vi-sgn +++ b/espeak-data/voices/asia/vi-VN-x-south @@ -1,5 +1,5 @@ name vietnam_sgn -language vi-sgn +language vi-vn-x-south phonemes vi-sgn dictrules 2 gender male diff --git a/espeak-data/voices/en b/espeak-data/voices/en index 84d12dd8..50cdf222 100644 --- a/espeak-data/voices/en +++ b/espeak-data/voices/en @@ -1,6 +1,5 @@ name english language en-gb 2 -language en-uk 2 language en 2 gender male diff --git a/espeak-data/voices/en-us b/espeak-data/voices/en-us index 6846aa8b..7c8922ea 100644 --- a/espeak-data/voices/en-us +++ b/espeak-data/voices/en-us @@ -1,7 +1,6 @@ // moving towards US English name english-us language en-us 2 -language en-r language en 3 gender male diff --git a/espeak-data/voices/es-la b/espeak-data/voices/es-419 similarity index 91% rename from espeak-data/voices/es-la rename to espeak-data/voices/es-419 index 4fbacd1b..ba9ca064 100644 --- a/espeak-data/voices/es-la +++ b/espeak-data/voices/es-419 @@ -1,5 +1,5 @@ name spanish-latin-am -language es-la +language es-419 language es-mx 6 language es 6 gender male diff --git a/espeak-data/voices/mb/mb-en1 b/espeak-data/voices/mb/mb-en1 index 8de8e01c..996df1b1 100644 --- a/espeak-data/voices/mb/mb-en1 +++ b/espeak-data/voices/mb/mb-en1 @@ -1,5 +1,5 @@ name english-mb-en1 -language en-uk 3 +language en-gb 3 language en 2 gender male diff --git a/espeak-data/voices/other/en-wi b/espeak-data/voices/other/en-029 similarity index 89% rename from espeak-data/voices/other/en-wi rename to espeak-data/voices/other/en-029 index 302538de..91fa644a 100644 --- a/espeak-data/voices/other/en-wi +++ b/espeak-data/voices/other/en-029 @@ -1,6 +1,5 @@ name en-westindies -language en-wi -language en-uk 4 +language en-029 language en 10 gender male diff --git a/espeak-data/voices/other/en-sc b/espeak-data/voices/other/en-GB-scotland similarity index 90% rename from espeak-data/voices/other/en-sc rename to espeak-data/voices/other/en-GB-scotland index f8d55554..9aec4342 100644 --- a/espeak-data/voices/other/en-sc +++ b/espeak-data/voices/other/en-GB-scotland @@ -1,5 +1,5 @@ name en-scottish -language en-sc +language en-gb-scotland language en 4 gender male diff --git a/espeak-data/voices/other/en-n b/espeak-data/voices/other/en-GB-x-gbclan similarity index 79% rename from espeak-data/voices/other/en-n rename to espeak-data/voices/other/en-GB-x-gbclan index 755bf5f7..e29eb036 100644 --- a/espeak-data/voices/other/en-n +++ b/espeak-data/voices/other/en-GB-x-gbclan @@ -1,6 +1,6 @@ name english-north -language en-uk-north -language en-uk 3 +language en-gb-x-gbclan +language en-gb 3 language en 5 gender male diff --git a/espeak-data/voices/other/en-wm b/espeak-data/voices/other/en-GB-x-gbcwmd similarity index 80% rename from espeak-data/voices/other/en-wm rename to espeak-data/voices/other/en-GB-x-gbcwmd index 33ff4fe4..2c614799 100644 --- a/espeak-data/voices/other/en-wm +++ b/espeak-data/voices/other/en-GB-x-gbcwmd @@ -1,6 +1,6 @@ name english_wmids -language en-uk-wmids -language en-uk 9 +language en-gb-x-gbcwmd +language en-gb 9 language en 9 gender male diff --git a/espeak-data/voices/other/en-rp b/espeak-data/voices/other/en-GB-x-rp similarity index 80% rename from espeak-data/voices/other/en-rp rename to espeak-data/voices/other/en-GB-x-rp index abc1dbcb..bbc934e7 100644 --- a/espeak-data/voices/other/en-rp +++ b/espeak-data/voices/other/en-GB-x-rp @@ -1,6 +1,6 @@ name english_rp -language en-uk-rp -language en-uk 4 +language en-gb-x-rp +language en-gb 4 language en 5 gender male diff --git a/src/espeak-ng.c b/src/espeak-ng.c index 32b9dac0..ddcc60c6 100644 --- a/src/espeak-ng.c +++ b/src/espeak-ng.c @@ -146,7 +146,7 @@ void DisplayVoices(FILE *f_out, char *language) } else 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++) { count = 0; @@ -156,7 +156,7 @@ void DisplayVoices(FILE *f_out, char *language) lang_name = p+1; if (v->age == 0) - strcpy(age_buf, " "); + strcpy(age_buf, " --"); else sprintf(age_buf, "%3d", v->age); @@ -168,7 +168,7 @@ void DisplayVoices(FILE *f_out, char *language) if ((buf[j] = c) == 0) 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); } else fprintf(f_out, "(%s %d)", lang_name, p[0]); diff --git a/src/speak-ng.c b/src/speak-ng.c index f52d334d..7a323ee8 100644 --- a/src/speak-ng.c +++ b/src/speak-ng.c @@ -153,7 +153,7 @@ void DisplayVoices(FILE *f_out, char *language) } else 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++) { count = 0; @@ -163,7 +163,7 @@ void DisplayVoices(FILE *f_out, char *language) lang_name = p+1; if (v->age == 0) - strcpy(age_buf, " "); + strcpy(age_buf, " --"); else sprintf(age_buf, "%3d", v->age); @@ -175,7 +175,7 @@ void DisplayVoices(FILE *f_out, char *language) if ((buf[j] = c) == 0) 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); } else fprintf(f_out, "(%s %d)", lang_name, p[0]);