diff --git a/espeak-ng-data/lang/bat/ltg b/espeak-ng-data/lang/bat/ltg index 021faa8a..127234cb 100644 --- a/espeak-ng-data/lang/bat/ltg +++ b/espeak-ng-data/lang/bat/ltg @@ -2,6 +2,7 @@ name Latgalian language ltg maintainer Valdis Vitolins status testing +translator lv // Reuse pronunciation rules from Latvian phonemes lv dictionary lv dictrules 2 // Setting for Latgalian pronunciation diff --git a/espeak-ng-data/lang/poz/ms b/espeak-ng-data/lang/poz/ms index 27a2712a..a90a18b1 100644 --- a/espeak-ng-data/lang/poz/ms +++ b/espeak-ng-data/lang/poz/ms @@ -3,6 +3,8 @@ name Malay language ms phonemes id +translator id + stressLength 160 200 180 180 0 0 220 240 stressAmp 16 18 18 18 0 0 22 21 intonation 3 // Less intonation, and comma does not raise the pitch. diff --git a/espeak-ng-data/lang/sit/cmn b/espeak-ng-data/lang/sit/cmn index 7b7cfa26..07a77a72 100644 --- a/espeak-ng-data/lang/sit/cmn +++ b/espeak-ng-data/lang/sit/cmn @@ -3,6 +3,7 @@ language cmn language zh-cmn language zh +translator zh phonemes zh dictionary zh words 1 diff --git a/espeak-ng-data/lang/sit/hak b/espeak-ng-data/lang/sit/hak index 0c3bf14c..369a2739 100644 --- a/espeak-ng-data/lang/sit/hak +++ b/espeak-ng-data/lang/sit/hak @@ -2,5 +2,6 @@ name Hakka Chinese language hak maintainer Chen Chien-ting status testing +translator hak phonemes hak dictionary hak diff --git a/espeak-ng-data/lang/sit/yue b/espeak-ng-data/lang/sit/yue index c4c0c58d..462dcd6f 100644 --- a/espeak-ng-data/lang/sit/yue +++ b/espeak-ng-data/lang/sit/yue @@ -3,6 +3,7 @@ language yue language zh-yue language zh 8 +translator zhy phonemes zhy dictionary zhy diff --git a/espeak-ng-data/voices/mb/mb-ma1 b/espeak-ng-data/voices/mb/mb-ma1 index fe62fbd4..59135395 100644 --- a/espeak-ng-data/voices/mb/mb-ma1 +++ b/espeak-ng-data/voices/mb/mb-ma1 @@ -3,5 +3,6 @@ language ms 1 gender female pitch 140 260 phonemes id +translator id mbrola ma1 ma1_phtrans diff --git a/src/libespeak-ng/tr_languages.c b/src/libespeak-ng/tr_languages.c index d6751036..6bda0293 100644 --- a/src/libespeak-ng/tr_languages.c +++ b/src/libespeak-ng/tr_languages.c @@ -1169,7 +1169,6 @@ Translator *SelectTranslator(const char *name) } break; case L('l', 'v'): // latvian - case L3('l', 't', 'g'): // latgalian { static const unsigned char stress_amps_lv[8] = { 14, 10, 10, 8, 0, 0, 20, 15 }; static const short stress_lengths_lv[8] = { 180, 180, 180, 160, 0, 0, 230, 180 }; diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index 095240a4..3d64a18c 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -72,6 +72,7 @@ enum { V_NAME = 1, V_LANGUAGE, V_GENDER, + V_TRANSLATOR, V_PHONEMES, V_DICTIONARY, V_VARIANTS, @@ -126,6 +127,7 @@ static MNEM_TAB keyword_tab[] = { { "formant", V_FORMANT }, { "pitch", V_PITCH }, { "phonemes", V_PHONEMES }, + { "translator", V_TRANSLATOR }, { "dictionary", V_DICTIONARY }, { "stressLength", V_STRESSLENGTH }, { "stressAmp", V_STRESSAMP }, @@ -647,6 +649,17 @@ voice_t *LoadVoice(const char *vname, int control) current_voice_selected.age = age; } break; + case V_TRANSLATOR: + if (tone_only) break; + + sscanf(p, "%s", translator_name); + + if (new_translator != NULL) + DeleteTranslator(new_translator); + + new_translator = SelectTranslator(translator_name); + langopts = &new_translator->langopts; + break; case V_DICTIONARY: // dictionary sscanf(p, "%s", new_dictionary); break;