diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 24e049e4..c2bd0274 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -9,10 +9,10 @@ eI e~ I i iu O O: o@ OI oI o~ u uI W y Y@ Yy -- : ; b c d dZ f -g h j k l m n N -p r r- s S t tS v -w x2 z Z +- : ; ? b c d dZ +f g h j k l m n +N p r r- s S t tS +v w x2 z Z Dictionary cs_dict @@ -311,13 +311,12 @@ t T tl# v x z Dictionary la_dict -@- a a: aI aU E e: EU -I i: O o: OI U u: y -y: +@- a a: E e: I i: O +o: U u: -* : ; b d f g -h j k l m n N p -r R s t w z +* : ; b d f g h +k l m n N p r R +s t w z Dictionary grc_dict @@ -377,3 +376,14 @@ y j k l L l^ m n N n^ p r R s S t tS ts tS; v x z Z + + +Dictionary id_dict + +@ a aI aU e E i o +O u + +* ? b d dZ f g h +j k l m n N n^ p +q r R s S t tS v +w x z diff --git a/dictsource/la_list b/dictsource/la_list index 86d87d83..fcf4a988 100644 --- a/dictsource/la_list +++ b/dictsource/la_list @@ -265,9 +265,10 @@ ii II // word, not numeric vi wI // word, not numeric i 'u:nUs $capital -ii d'UO $capital -vi s,Eks $capital +ii d'UO $allcaps +vi s,Eks $allcaps +// eSpeak translates Roman numbers to Arabic numerals _0 n'Ulla _1 'u:nUs _2 d'UO diff --git a/dictsource/la_rules b/dictsource/la_rules index 229ab597..b404e42a 100644 --- a/dictsource/la_rules +++ b/dictsource/la_rules @@ -14,6 +14,14 @@ // since this character is incompatible with older unicode versions. +.replace +â ā +ê ē +î ī +ô ō +û ū +ŷ yy + .L01 ae au eu oe a e i o u yy y ā ē ī ō ū ë ü é æ .L02 ng qu pr tr cr chr br dr gr pl cl bl gl ph th ch diff --git a/dictsource/no_list b/dictsource/no_list index 5e37bb11..5ab2ff80 100755 --- a/dictsource/no_list +++ b/dictsource/no_list @@ -45,8 +45,8 @@ _7 S'u-: _8 'Ot:@2 _9 n'i: _10 t'i: -_11 'Elle:v@2 -_12 t'u:lv +_11 'Elv@2 +_12 t'Olv _13 t@-*'Et:@n _14 fj'Urt@n _15 f'Emt@n @@ -62,8 +62,8 @@ _6X s'Eksti: _7X s'yt:i: _8X 'Ot:i: _9X n'It:i: -_0C h'u-:nd@-*e:d@2 -_1C 'Et||h'u-:nd@-*e:d@2 +_0C h'u-nd@-*@2 +_1C 'Et||h'u-nd@-*@2 _0M1 t'u-:s@n _1M1 'Et||t'u-:s@n _0M2 m'Illi:;,u:n@r @@ -257,4 +257,5 @@ i i: $atend der dE:r her hE:r kom kOm +noe nu:@2 // ?? system syst'e:m diff --git a/phsource/compile_report b/phsource/compile_report index 23439021..b2a554c5 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -44 phoneme tables +45 phoneme tables new total base 97 97 base2 24 116 @@ -44,6 +44,7 @@ zh 61 144 sw 14 106 th 50 140 + id 14 118 Data file Used by b/b [b] base @@ -648,6 +649,7 @@ ustop/k_unasp [k] base [k] zhy ustop/k_unasp_ [k] zh [k] th +ustop/null [?] base ustop/p [p] base [p] fr [ph] hi @@ -840,6 +842,7 @@ vdiph/aau_2 [aU] en_wi vdiph/aau_3 [aU] hi vdiph/aau_4 [aU] vi vdiph/ae [E:] fr_ca + [aI] la [ai] zh vdiph/ae_2 [aI] en_n vdiph/ai [aI] base2 @@ -852,12 +855,12 @@ vdiph/ai [aI] base2 [a:I] vi [aI] th [a:I] th + [aI] id vdiph/ai_2 [aI] cy [aY] cy vdiph/ai_3 [aI] no vdiph/ai_4 [aI] af vdiph/ai_5 [aI] de - [aI] la vdiph/ai_6 [aI] en_rp vdiph/ai_7 [aI] en_sc [aI2] en_sc @@ -878,6 +881,7 @@ vdiph/au_4 [aU] base2 [aU] sk [aU] it [aU] is + [aU] id vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en @@ -886,6 +890,7 @@ vdiph/eei [EI] base2 [EI] vi vdiph/eei_2 [eI] eo [ei] fi + [eI] id vdiph/eei_3 [eI] en_rp [eI] sk vdiph/eeu [EU] pt @@ -963,6 +968,7 @@ vdiph/@u [u:] en_wm vdiph/@u_2 [oU] en_rp vdiph/@u_3 [@U] ro vdiph/@u_en [oU] en + [@U] id vdiph/ui [uI] base2 [uI] en [uI] eo @@ -1155,10 +1161,10 @@ vowel/a [a] en_n [A] hr [a] hr [a] it - [a:] la [a] zh [a] th [a:] th + [a] id vowel/a# [a/] base2 [a2] en_sc [a2] en_wi @@ -1171,7 +1177,6 @@ vowel/a_2 [a] base2 [A@] en_wi [aa] en_wi [a] eo - [a] la [A] pt [a] pt_pt [a] ro @@ -1187,6 +1192,7 @@ vowel/a_3 [a] en_sc [aa] en_sc [a] fr [a:] cs + [a:] la [a] is vowel/a#_3 [a2] en [a2] en_n @@ -1203,6 +1209,7 @@ vowel/a#_3 [a2] en vowel/a_4 [a/] el [a] vi vowel/a_5 [a/] it + [a] la [a] sv [a] sw vowel/aa [a] fi @@ -1256,6 +1263,7 @@ vowel/e [e] base2 [e] vi [e] th [e:] th + [e] id vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1308,6 +1316,8 @@ vowel/e_mid [E] en_rp [E] pt_pt [E] no [E] is + [E] id + [E2] id vowel/e_mid2 [E] af [E] de [E2] de @@ -1373,6 +1383,7 @@ vowel/i#_5 [y] pt_pt vowel/i_6 [i:] en_us [i] ta [i] hr + [i] id vowel/i_en [i:] en [i] vi vowel/i_fnt [i:] en_wi @@ -1391,8 +1402,7 @@ vowel/ii [I] en_rp vowel/ii# [Y] cy [y] pl [Y] ru -vowel/ii_2 [I] la - [i] zh +vowel/ii_2 [i] zh vowel/ii_3 [I] cy [I] fi [I] hi @@ -1407,6 +1417,7 @@ vowel/ii_4 [I] en [I2] en_n vowel/ii_5 [I] en_wi [I2] en_wi + [I] la vowel/ii_6 [I] en_wm [I2] en_wm [I] sr @@ -1421,6 +1432,7 @@ vowel/@_low [3] en_rp [@2] hi [@] ro [@2] no + [@] id vowel/o [o] base2 [o:] en [oU] en_wi @@ -1430,7 +1442,7 @@ vowel/o [o] base2 [o:] ta [o] it [o/] it - [o:] la + [O] la [o] pt_pt [o] grc [o:] sv @@ -1438,10 +1450,12 @@ vowel/o [o] base2 [u] zh [o] th [o:] th + [o] id vowel/o- [o-] zh vowel/o_2 [o:] cy [o:] hi [o:] hu + [o:] la [o:] no vowel/o-_2 [V] en_n [V] en_wm @@ -1465,7 +1479,6 @@ vowel/oo [O:] en_sc [O@] en_wi [O] de [o] eo - [O] la [o] es [o] el [O] sv @@ -1473,6 +1486,7 @@ vowel/oo [O:] en_sc [o] zhy [O] th [O:] th + [O] id vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -1521,10 +1535,11 @@ vowel/u [u:] en_wi [u] eo [U] fr [u:] cs - [u:] la + [U] la [u] zh [u] th [u:] th + [u] id vowel/u# [u-] en [u:] en_sc vowel/u_2 [u1] fi @@ -1561,12 +1576,12 @@ vowel/u_bck [u] base2 [u:] no [u] is [u] zhy +vowel/u_bck2 [u:] la vowel/u_fnt [u:] en_rp vowel/uu [U] en [U] en_wm vowel/uu_2 [U] base2 [U] de - [U] la vowel/uu_3 [u] af vowel/uu_4 [U] fi [U] sv @@ -1594,6 +1609,7 @@ vowel/y [y:] en [y] fi [y:] hu [y] nl + [y] la [yu] zhy [y] zh vowel/y# [Y:] en @@ -1609,6 +1625,7 @@ vowel/y# [Y:] en vowel/y## [y#] is vowel/y_2 [y] fr [y"] fr + [y:] la vowel/y#_2 [Y] hu [Y:] sv vowel/y_3 [y] af @@ -1620,8 +1637,6 @@ vowel/yy [y"] fr_ca vowel/yy_3 [y] sv vowel/yy_4 [y] de [y] hu - [y] la - [y:] la [y] grc [y] is vwl_af/@ [@] af diff --git a/phsource/ph_latin b/phsource/ph_latin index a6341f0e..bdf943c5 100644 --- a/phsource/ph_latin +++ b/phsource/ph_latin @@ -7,8 +7,8 @@ phoneme a vowel starttype (a) endtype (a) - length 180 - formants vowel/a_2 + length 170 + formants vowel/a_5 endphoneme @@ -22,42 +22,42 @@ endphoneme phoneme I vowel starttype (i) endtype (i) length 150 - formants vowel/ii_2 + formants vowel/ii_5 linkout ; endphoneme phoneme O vowel starttype (o) endtype (o) - length 170 - formants vowel/oo + length 160 + formants vowel/o endphoneme phoneme U vowel starttype (u) endtype (u) length 160 - formants vowel/uu_2 + formants vowel/u endphoneme phoneme a: vowel starttype (a) endtype (a) - length 250 - formants vowel/a + length 270 + formants vowel/a_3 endphoneme phoneme e: vowel starttype (e) endtype (e) - length 240 + length 260 formants vowel/e endphoneme phoneme i: vowel starttype (i) endtype (i) - length 220 + length 240 formants vowel/i_2 after w w/wi2 endphoneme @@ -65,28 +65,28 @@ endphoneme phoneme o: vowel starttype (o) endtype (o) - length 240 - formants vowel/o + length 250 + formants vowel/o_2 endphoneme phoneme u: vowel starttype (u) endtype (u) - length 230 - formants vowel/u + length 250 + formants vowel/u_bck2 endphoneme phoneme y - vowel starttype (u) endtype (u) + vowel starttype (i) endtype (i) length 150 - formants vowel/yy_4 + formants vowel/y endphoneme phoneme y: - vowel starttype (u) endtype (u) - length 240 - formants vowel/yy_4 + vowel starttype (i) endtype (i) + length 250 + formants vowel/y_2 endphoneme @@ -100,28 +100,28 @@ endphoneme phoneme aI vowel starttype (a) endtype (i) - length 250 - formants vdiph/ai_5 + length 270 + formants vdiph/ae endphoneme phoneme eI vowel starttype (e) endtype (i) - length 250 + length 270 formants vdiph/ei endphoneme phoneme EU vowel starttype (e) endtype (u) - length 260 + length 270 formants vdiph/eeu_2 endphoneme phoneme OI vowel starttype (o) endtype (i) - length 230 + length 250 formants vdiph/oi endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index ae0b3b21..94dc2f00 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -142,14 +142,11 @@ phoneme _X1 // a language specific action endphoneme phoneme ? // glottal stop - pause + vls glt stop vowelin glstop vowelout glstop - formants NULL - starttype _ endtype _ - length 45 - lengthmod 5 // ?? - beforenotvowel _ // change to pause_short + wave ustop/null + lengthmod 2 // ?? nolink endphoneme @@ -1268,3 +1265,6 @@ include ph_swahili phonemetable th base include ph_thai +phonemetable id base2 +include ph_indonesian + diff --git a/phsource/vdiph/ae b/phsource/vdiph/ae index 90be5957..f6f5f76b 100644 Binary files a/phsource/vdiph/ae and b/phsource/vdiph/ae differ diff --git a/phsource/vowel/o_3 b/phsource/vowel/o_3 index b27442e0..8d313ec4 100644 Binary files a/phsource/vowel/o_3 and b/phsource/vowel/o_3 differ diff --git a/src/readclause.cpp b/src/readclause.cpp index 5c4ef3c4..3e9928c1 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -56,12 +56,13 @@ int ignore_text=0; // set during ... to ignore text which has be int clear_skipping_text = 0; // next clause should clear the skipping_text flag int count_characters = 0; int sayas_mode; +int ssml_ignore_l_angle = 0; static const char *punct_stop = ".:!?"; // pitch fall if followed by space static const char *punct_close = ")]}>;'\""; // always pitch fall unless followed by alnum // alter tone for announce punctuation or capitals -static const char *tone_punct_on = "\001+50R\001+15T"; // add reverberation, reduce low frequencies +static const char *tone_punct_on = "\001+50R\001+10T"; // add reverberation, reduce low frequencies static const char *tone_punct_off = "\001R\001T"; // punctuations symbols that can end a clause @@ -719,6 +720,11 @@ int Translator::AnnouncePunctuation(int c1, int c2, char *buf, int bufix) { // end the clause now and pick up the punctuation next time UngetC(c2); + if(option_ssml) + { + if(c1 == '<') + ssml_ignore_l_angle = c1; // this was < which was converted to <, don't pick it up again as < + } ungot_char2 = c1; buf[bufix] = ' '; buf[bufix+1] = 0; @@ -1811,7 +1817,7 @@ f_input = f_in; // for GetC etc } } else - if(c1 == '<') + if((c1 == '<') && !ssml_ignore_l_angle) { // SSML Tag n_xml_buf = 0; @@ -1856,6 +1862,7 @@ f_input = f_in; // for GetC etc continue; } } + ssml_ignore_l_angle=0; if(ignore_text) continue; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 77b915e4..b6e9ada9 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.30.12 14.Jan.08"; +const char *version_string = "1.30.14 15.Jan.08"; const int version_phdata = 0x013010; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 32839e8f..8d7741ca 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -365,6 +365,18 @@ SetLengthMods(tr,3); // all equal } break; + case L('i','d'): // Indonesian + { + static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240}; + static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 }; + tr = new Translator(); + SetupTranslator(tr,stress_lengths_id,stress_amps_id); + tr->langopts.stress_rule = 2; + tr->langopts.numbers = 0x1809 + NUM_ROMAN; + tr->langopts.stress_flags = 0x6 | 0x10; + } + break; + case L('i','s'): // Icelandic { static const unsigned char stress_amps_is[] = {16,16, 20,20, 20,24, 24,22 }; @@ -475,7 +487,7 @@ SetLengthMods(tr,3); // all equal case L('n','o'): // Norwegian { static const unsigned char stress_amps_no[] = {16,16, 20,20, 20,24, 24,22 }; - static const short stress_lengths_no[8] = {160,140, 200,190, 0,0, 220,240}; + static const short stress_lengths_no[8] = {160,140, 200,190, 0,0, 220,210}; tr = new Translator(); SetupTranslator(tr,stress_lengths_no,stress_amps_no);