diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 33ab4177..177980fb 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -134,9 +134,9 @@ W~ y Y : ; b c d dZ f g h j k l m n N n2 -n^ p p2 r R r2 s S -t t2 t3 tS v w z Z -z2 z3 +n^ p p2 r R R2 r2 s +S t t2 t3 tS v w z +Z z2 z3 Dictionary grc_dict @@ -474,11 +474,23 @@ tS v w z Dictionary ml_dict a a: aI aU e E e: i -I i: l- o o: r- u u: -V y +I i: o o: r- u u: V +y : b c ch d d. dZ f g h j J k kh l l. m n N n. n^ p ph R R2 s s. S; t t. t.h th tS v w z z. + + +Dictionary bn_dict + +a a~ e e: e~ i I i~ +l- o O oI oU o~ O~ r- +u u~ V + +** b c ch d d. e[ g +h j J k kh l m n +N p ph r R s S t +t. t.h th z. diff --git a/dictsource/en_list b/dictsource/en_list index c5903d28..c200be4c 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -1245,7 +1245,6 @@ laser leIz3 lasso las'u: lawyer lOI3 lava lA:v@ -layout leIaUt le l@ $only lead li:d leafy li:fI2 @@ -1292,6 +1291,7 @@ machismo m@tSIzmoU mademoiselle mad@m@zEl magazine $3 magi meIdZaI +(main st) m'eInstr,i:t maintain $2 maintainer $2 majority m@dZ0rItI2 @@ -2047,6 +2047,7 @@ visit vIzIt voila vwal'a volcano v0lk'eInoU +(wall st) w'O:lstr,i:t wane weIn wannabe w0na2bi: warring wO@rIN @@ -2291,6 +2292,7 @@ Provence pr0v'A~s Pyrenees pIr@n'i:z Qatar katA@ Quebec kwI2bEk +Reno ri:noU Sahel sA:h'El Saigon saIg'0n Santiago santI'A:goU diff --git a/dictsource/en_rules b/dictsource/en_rules index d871e70f..16d8ea8f 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -100,8 +100,8 @@ &) ah (_ @ m) a (hog @ m) a (jes a - m) a (jesti @ m) a (jor_ eI + m) a (jore eI _) a (k@ a2 @) a (ki_ 'a n) aked eIkId @@ -1519,6 +1519,7 @@ de (pt dE de (put dE _) de (rai dI2 + de (reg d%i: de (rel dE de (riC dI2 de (rog dI2 @@ -2876,7 +2877,7 @@ in (dex In in (dia In _) in (dic In - _) indi (ge ,IndI2 + _) indi (ge IndI _) in (digo In _) in (dir In _) in (disP2 ,In @@ -3991,6 +3992,7 @@ c) ou (th u: s) ou (ther V y) ou (t u: + y) ou (t_ aU ou (v u: oux (_ u: @@ -4040,6 +4042,7 @@ .group ow ow oU + ow (itz =oUv ow (ay_ @w kn) owle (d 0lI _) ow (l aU @@ -4301,6 +4304,7 @@ rea (gen rI2eI _) re (alig ,ri: _) re (all ,ri: + rea (m ri: _) re (au@P2 ,ri: re (ck rE reckon rEk@n @@ -4586,6 +4590,7 @@ @) tur (y tS@r @) tur (_ tS3 ture (_ tS3 + tz ts .group th th T @@ -4956,6 +4961,7 @@ .group y y j + _) y' (CP2 j@ y (C_ I y (CC I _) y (C@ I diff --git a/dictsource/fr_list b/dictsource/fr_list index 71b2ca14..e98e43e9 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2008-09-13 Michel Such +// Updated 2008-09-21 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -87,7 +87,7 @@ _ac2 dublaksA~tEg'y _brv bR'Ev _ced sed'ij _cir aksA~sirkO~fl'Eks -_dia trem'a +_dia tR@m'a _dot pwE~syskr'i _grv aksA~gr'av _hac kar'O~ @@ -109,7 +109,7 @@ _#32 Espas _" gijmE _# djEz -_' apOstrOf +_' a2postR'Of _( 'uvr@-parA~t'Ez _) f'Erm parA~t'Ez _* asterisk: @@ -140,8 +140,8 @@ _} f'E2rm_akOl'ad _0 zero _1 W~ _2 dYz2 -_3 tRwAz2 -_4 katr +_3 tR2wAz2 +_4 katR2=@- _5 sE~k _6 siz3 _7 sEt @@ -150,7 +150,7 @@ _9 nWf _10 diz3 _11 _!O~z _12 duz -_13 tREz +_13 tR2Ez _14 katOrz _15 kE~z _16 sEz @@ -160,15 +160,15 @@ _19 diznWf _20 vE~ _21 vE~te:W~ _22 vE~tdYz2 -_23 vE~t:trwAz2 -_24 vE~tkatr +_23 vE~t:tR2wAz2 +_24 vE~tkatR2=@- _25 vE~tsE~k _26 vE~tsiz3 _27 vE~tsEt _28 vE~tw^it3 _29 vE~tnWf -_3X tRA~t -_31 tRA~te:W~ +_3X tR2A~t +_31 tR2A~te:W~ _4X karA~t _41 karA~te:W~ _5X sE~kA~t @@ -178,25 +178,25 @@ _61 swAsA~te:W~ _7X swAsA~t:diz3 _71 swAsA~te:O~z _72 swAsA~t:duz -_73 swAsA~t:trEz +_73 swAsA~t:tR2Ez _74 swAsA~t:katOrz _75 swAsA~t:kE~z _76 swAsA~t:sEz _77 swAsA~t:dis:Et _78 swAsA~t:diz'w^it3 _79 swAsA~t:diznWf -_8X katr@vE~ -_80 katR@vE~z2 -_9X katR@vE~diz3 -_91 katR@vE~:O~z -_92 katR@vE~:duz -_93 katR@vE~:trEz -_94 katR@vE~:katOrz -_95 katR@vE~:kE~z -_96 katR@vE~:sEz -_97 katR@vE~:dis:Et -_98 katR@vE~:dizw^it3 -_99 katR@vE~:diznWf +_8X katR2@vE~ +_80 katR2@vE~z2 +_9X katR2@vE~diz3 +_91 katR2@vE~:O~z +_92 katR2@vE~:duz +_93 katR2@vE~:tR2Ez +_94 katR2@vE~:katOrz +_95 katR2@vE~:kE~z +_96 katR2@vE~:sEz +_97 katR2@vE~:dis:Et +_98 katR2@vE~:dizw^it3 +_99 katR2@vE~:diznWf _0C sA~ _1C0 sA~t2 _0M1 mil @@ -210,8 +210,8 @@ _dpt virgyl ?2 _7X sEptA~t ?2 _71 sEptA~te:W~ ?2 _72 sEptA~t:dYz2 -?2 _73 sEptA~t:trwAz2 -?2 _74 sEptA~t:katr +?2 _73 sEptA~t:tR2wAz2 +?2 _74 sEptA~t:katR2=@- ?2 _75 sEptA~t:sE~k ?2 _76 sEptA~t:siz3 ?2 _77 sEptA~t:sEt @@ -220,8 +220,8 @@ _dpt virgyl ?2 _9X no2nA~t ?2 _91 no2nA~te:W~ ?2 _92 no2nA~t:dYz2 -?2 _93 no2nA~t:trwAz2 -?2 _94 no2nA~t:katr +?2 _93 no2nA~t:tR2wAz2 +?2 _94 no2nA~t:katR2=@- ?2 _95 no2nA~t:sE~k ?2 _96 no2nA~t:siz3 ?2 _97 no2nA~t:sEt @@ -229,11 +229,11 @@ _dpt virgyl ?2 _99 no2nA~t:nWf (21 ème) vE~te:yniEm -(31 ème) tRA~te:yniEm +(31 ème) tR2A~te:yniEm (41 ème) karA~te:yniEm (51 ème) sE~kA~te:yniEm (61 ème) swAsA~te:yniEm -(81 ème) katR@vE~:yniEm +(81 ème) katR2@vE~:yniEm // ABBREVIATIONS //************** @@ -264,7 +264,7 @@ jaws dZ'O2wz kde $abbrev kg kilogRam khz kiloE2rts -km kilomEtr +km kilomètre $text kw kilowat m. m@sjY mbrola EmbRola @@ -521,7 +521,7 @@ telles $u+ tout t'ut2 $u+ toute t'ut $u+ toutes t'utz2 $u+ -rien rjE~n2 $u+ +rien Ri'E~n2 $u+ // Letters which can be words //=========================== @@ -575,8 +575,10 @@ bus bys bus by $verb campus kA~pys (chef d'oeuvre) chédeuvre $text +(chef d'oeuvres) chédeuvres $text choeur kWr cocus coky +converter converteur $text dernier dE2rnjer2 éloquent ElokA~t2 fier fier $verb diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 8ed98d1b..a09819b3 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2008-09-16 Michel Such +// Updated: 2008-09-19 Michel Such // // Letter classes: @@ -33,6 +33,7 @@ // K not a vowel (i.e. consonant, space, ) .L01 d e l n r t u +.L02 b c d f g h k p t v .group a @@ -960,7 +961,10 @@ C) oing (_ _^_en // going .group r -C) r R +L02) r R2 +L02) re (_ R2=@- +L02) re (s_ R2=@- +_) r R _su) rr rr // surréaliste cou) rr rr // courrai @@ -968,7 +972,7 @@ cou) rr (i r // courrier mou) rr rr // mourrai rr r // erreur r r // rien - _) radio (@P5 radio + _) radio (@P5 Radio // group r: English section _) real _^_en diff --git a/espeak-data/voices/af b/espeak-data/voices/af index dcb61343..be22ac78 100755 --- a/espeak-data/voices/af +++ b/espeak-data/voices/af @@ -2,7 +2,7 @@ name afrikaans language af gender male roughness 0 -pitch 55 122 +pitch 60 122 diff --git a/phsource/compile_report b/phsource/compile_report index 0d92a572..da3e3dfd 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -52 phoneme tables +53 phoneme tables new total base 98 98 base2 24 117 @@ -15,11 +15,10 @@ eo 13 110 jbo 4 111 fi 40 129 - fr 54 134 - fr_ca 11 134 + fr 55 135 + fr_ca 11 135 hi 51 135 ta 17 138 - ml 13 137 hu 23 114 nl 28 121 pl 18 111 @@ -52,6 +51,8 @@ ko 18 145 da 15 128 sq 12 122 + ml 13 137 + bn 20 143 Data file Used by b/b [b] base @@ -246,7 +247,6 @@ h/h@ [h] base [h] fi [H] hi [h] hi - [th] hi [h] sr [] la h/ha [h] base @@ -281,6 +281,7 @@ j2/j2i [(i)] base j2/j2o [(o)] base j2/j2u [(u)] base j2/xj2 [(i)] base +j/e_ [e[] bn j/_j [j] base [j] zh j/j_ [j/] base @@ -310,7 +311,6 @@ l/l [l] base [l] en_wi [l] af [l] fr - [l/] fr [l] hu [l] sk [l] ru @@ -334,6 +334,11 @@ l/_l [l] base [l] zh l/l_ [l/] base [l/] fr +l/l_@ [@] fr + [W] fr + [Y] fr + [@2] fr + [W2] fr l/l@ [(@)] base [W] fr [Y] fr @@ -341,15 +346,9 @@ l/l@ [(@)] base l/L1_aL [(a)] base l/L1_eL [(e)] base l/L1_iL [(i)] base - [i] fr - [i:] fr l/L1_@L [(@)] base l/L1_oL [(o)] base - [o2] fr l/L1_uL [(u)] base - [u] fr - [y] fr - [u:] fr l/L2_aL [(a)] base l/L2_eL [(e)] base l/L2_iL [(i)] base @@ -366,19 +365,27 @@ l/l_4 [ll] sq l/la [(a)] base [a] fr [a2] fr +l/l_a [a] fr + [a2] fr + [wA] fr + [A~] fr l/le [(e)] base [E] fr [e] fr [E2] fr +l/l_e [E] fr + [E2] fr l/L_eL_af [&] af [&:] af l/li [(i)] base [i] fr [i:] fr [l] zh +l/l_i [i] fr + [i:] fr + [w^i] fr l/l_long [l] base [l] fr - [l/] fr [l] la [l;] ro l/lo [(o)] base @@ -387,6 +394,9 @@ l/lo [(o)] base [O2] fr [o2] fr [wA] fr +l/l_o [O] fr + [O2] fr + [o2] fr l^/l_rfx [l.] hi [l.] sq l/lu [(u)] base @@ -394,6 +404,9 @@ l/lu [(u)] base [y] fr [u:] fr [w^i] fr +l/l_u [u] fr + [u:] fr +l/l_y [y] fr l/tl [l] base [l] en [l] en_wi @@ -411,17 +424,7 @@ l/xl [(@)] base [(i)] base [(o)] base [(u)] base - [@] fr - [E] fr - [O] fr - [W] fr - [Y] fr - [a] fr [e] fr - [@2] fr - [W2] fr - [wA] fr - [w^i] fr m/_m [m] base [m;] ru [m;] ro @@ -497,22 +500,21 @@ r2/r2o [(o)] base r2/r2u [(u)] base r3/r_ [r/] base [r/] af + [r/2] fr [r/] ru r3/r_@ [(@)] base - [@2] fr r3/r#_ [r#] is -r3/r_2 [r/] fr r3/r_a [(a)] base r3/r_e [(e)] base [E] fr r3/r_i [(i)] base [i] fr + [w^i] fr r3/r_n [r/] base - [r/] fr + [r/2] fr [r/] ru r3/r_o [(o)] base [O] fr - [O2] fr r3/r_ru [R4] ru r3/r_ru2 [R4] ru r3/r_trill [R2] base @@ -541,8 +543,9 @@ r3/rx [*] base [r/] af [R] fr [r] fr - [r/] fr + [R2] fr [r2] fr + [r/2] fr [R] fr_ca [r/] ru [x] pt_pt @@ -579,7 +582,7 @@ r/rr [r/] base [r/] af [r] de [r] fi - [r/] fr + [r/2] fr [r2] nl [r] ru [r/] ru @@ -589,11 +592,12 @@ r/ru [(u)] base r/tr [r] base [r] en_sc [R] fr + [R2] fr r/trr [r/] base [r/] af [r] de [r] fi - [r/] fr + [r/2] fr [r2] nl [r] ru [r/] ru @@ -610,16 +614,14 @@ r/xr [(@)] base [e] fr [i] fr [u] fr - [y] fr [a2] fr [i:] fr [u:] fr - [wA] fr [A~] fr - [w^i] fr ufric/ch [C] base [J^] base [C2] de +ufric/ch_ [C] base ufric/ch_sr [h] sr [x] sr ufric/f [f] base @@ -697,7 +699,8 @@ ufric/x2 [x2] af [x2] nl [x2] pt [x] ku -ufric/x_hr [x] hr +ufric/x_hr [x] base + [x] hr ufric/x_sr [h] sr [x] sr ustop/c [c] base @@ -775,13 +778,13 @@ ustop/null [?] base ustop/p [p] base [p] fr [p2] fr - [ph] hi [p] zhy ustop/p_ [p] base [p] fr [p2] fr [ph] hi [ph] zh +ustop/p_asp [ph] hi ustop/percus10 [(X1] base ustop/pl [p] base [p] base2 @@ -846,6 +849,7 @@ ustop/t_dnt [t] base [t2] en [t] fi [t] hi + [th] hi [t] hu [t] pl [t] hr @@ -856,13 +860,11 @@ ustop/t_dnt [t] base [t`] ko ustop/t_dnt2 [t[] vi ustop/t_hi [t] hi - [th] hi ustop/t_pzd [t;] pl [t;] ru ustop/tr [t] base [t[] base [t2] en - [t] fr [t.h] hi [t] ru ustop/ts [ts] base2 @@ -1074,6 +1076,7 @@ vdiph/oi [oI] base2 [oI] it [OI] la [oI] vi + [oI] bn vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en_n @@ -1091,6 +1094,7 @@ vdiph/oou [oU] cs [OU] grc vdiph/ou [ou] fi [ou] zhy + [oU] bn vdiph/ou_2 [oU] sk [oU] ro vdiph/ou_3 [oU] is @@ -1137,28 +1141,35 @@ vnasal/a#u_n [&U~] pt [&U~] pt_pt vnasal/ee_n [E~] en [E~] fr_ca + [E~] bn vnasal/ee_n2 [a] en_us [E~] hi [&~] pt_pt vnasal/ee_u_n [E~] pl vnasal/e_n [e~] af [e~] pt + [e~] bn vnasal/i_n [i~] pt + [i~] bn vnasal/m- [m-] sw +vnasal/&_n [a~] bn vnasal/n- [n-] sw vnasal/nn- [N-] sw vnasal/oi_n [oI~] pt vnasal/o_n [o~] hi [o~] pt + [o~] bn vnasal/o_n2 [o~] af vnasal/o_n3 [O~] fr vnasal/oo_n [O~] en vnasal/oo_n2 [O~] hi [o] zh + [O~] bn vnasal/oo_n3 [O~] pl vnasal/u_n [u~] hi [u~] pt [u] zh + [u~] bn vnasal/W_n [E~] fr [W~] fr voc/bh [B] base @@ -1247,8 +1258,8 @@ vowel/@ [@] base [@] en_rp [V] cy [@4] hi - [@] ml [@] sq + [@] ml vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1304,6 +1315,7 @@ vowel/a [a] en_n [a] zh [a] id [a] ko + [a] bn vowel/a# [a/] base2 [a2] en_sc [a2] en_wi @@ -1345,23 +1357,23 @@ vowel/a#_3 [a2] en [3] de [@] de [a] hi - [a] ml [a#] ru [&] pt_pt [&/] pt_pt [@] vi [a] zhy + [a] ml vowel/a_4 [a/] el [a] vi vowel/a_5 [a] fr [a2] fr [a:] ta - [a:] ml [a/] it [a] la [a] sv [a] sw [a] tr + [a:] ml vowel/aa [a] fi [A] fr_ca [A] no @@ -1407,8 +1419,6 @@ vowel/e [e] base2 [E:] fr [e] ta [e:] ta - [e] ml - [e:] ml [e] hr [e/] it [e:] la @@ -1421,6 +1431,9 @@ vowel/e [e] base2 [e#] rw [e] ko [e] da + [e] ml + [e:] ml + [e] bn vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1452,6 +1465,7 @@ vowel/ee_2 [E] en [E] zh [E#] ku [&] da + [E] bn vowel/ee#_2 [E-] sv vowel/ee_3 [&] af [&:] af @@ -1510,7 +1524,6 @@ vowel/i [i] base2 [i] eo [I] fr [i:] ta - [i:] ml [i:] hu [i] it [i] pt_pt @@ -1523,6 +1536,7 @@ vowel/i [i] base2 [i] rw [i#] rw [i] ko + [i:] ml vowel/i# [i] en_rp [y:] cy vowel/i_2 [i:] en_rp @@ -1545,11 +1559,12 @@ vowel/i#_5 [y] pt_pt [i/] pt_pt [y] ro vowel/i_6 [i] ta - [i] ml [i] hr [i] tr [i] ku [i] id + [i] ml + [i] bn vowel/i#_6 [i.] zh vowel/i_7 [i] pl vowel/i#_7 [i[] zh @@ -1571,9 +1586,9 @@ vowel/ii [I] en_rp [i] zhy [I] ku vowel/ii# [Y] cy - [y] ml [Y] ru [I] ku + [y] ml vowel/ii_2 [i] zh vowel/ii#_2 [y] pl vowel/ii_3 [I] cy @@ -1621,8 +1636,6 @@ vowel/o [o] base2 [o] hi [o] ta [o:] ta - [o] ml - [o:] ml [o] it [o/] it [O] la @@ -1632,6 +1645,9 @@ vowel/o [o] base2 [o] id [o] rw [o#] rw + [o] ml + [o:] ml + [o] bn vowel/o_2 [o:] cy [o2] fr [o:] hi @@ -1699,6 +1715,7 @@ vowel/oo_4 [O] base2 [3:] en_wi [O:] hi [O] it + [O] bn vowel/oo_5 [O] pl [O] is vowel/oo_en [O] en @@ -1728,11 +1745,12 @@ vowel/u [u:] en_wi [U] fr [u] ta [u:] ta - [u] ml - [u:] ml [u:] cs [U] la [u] id + [u] ml + [u:] ml + [u] bn vowel/u# [u:] en_sc [Y] tr vowel/u_2 [u1] fi @@ -1805,6 +1823,7 @@ vowel/V_2 [V] en vowel/V_3 [V] en_rp [V] hi [V] ta + [V] bn vowel/V_4 [V] en_sc [@:] vi [V] da @@ -1908,15 +1927,13 @@ vwl_fr/@R [x] pt_pt vwl_fr/@R2 [R] fr_ca vwl_fr/@R3 [R] fr [r] fr + [R2] fr [r2] fr -vwl_fr/@R4 [r] fr +vwl_fr/@R4 [R] fr + [r] fr [r2] fr -vwl_fr/r_a [a] fr - [a2] fr -vwl_fr/r_e [E2] fr vwl_fr/ri [i] fr vwl_fr/r_u [u] fr -vwl_fr/r_y [y] fr vwl_fr/w_a [wA] fr vwl_hi/A [a:] hi vwl_hi/l-voc [l-] jbo @@ -1982,6 +1999,7 @@ w/w [w] base w/_w [w] base [w] zh w/w_ [w/] base + [o[] bn w/w@ [(@)] base w/w2 [w2] base2 [w] pl diff --git a/phsource/mbrola/fr1 b/phsource/mbrola/fr1 index 0f48f170..2456857c 100644 --- a/phsource/mbrola/fr1 +++ b/phsource/mbrola/fr1 @@ -2,6 +2,7 @@ volume 15 0 l/2 NULL 0 l 0 l/ NULL 0 l 0 r/ NULL 0 R +0 r/2 NULL 0 R 0 r- NULL 0 R 0 l- NULL 0 l 0 w/ NULL 0 w @@ -35,6 +36,7 @@ volume 15 0 n2 NULL 0 n 0 p2 NULL 0 p 0 r2 NULL 0 R +0 R2 NULL 0 R 0 t2 NULL 0 t 0 t3 NULL 0 t 0 z2 NULL 0 z diff --git a/phsource/ph_french b/phsource/ph_french index b0328a50..2e7879dd 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -12,7 +12,7 @@ phoneme @ vowel starttype (@) endtype (@) length 170 formants vowel/@_hgh - before l/ DFT-30+l/xl+20 + before l/ DFT+l/l_@ endphoneme @@ -20,8 +20,7 @@ phoneme @2 vowel starttype (@) endtype (@) length 150 formants vowel/@_fr - before l/ DFT-30+l/xl+20 - before R DFT-20+r3/r_@ + before l/ DFT+l/l_@ endphoneme @@ -30,8 +29,7 @@ phoneme a length 170 formants vowel/a_5 after l l/la-15 - before l/ DFT-20+l/xl - before r/ DFT+vwl_fr/r_a + before l/ DFT+l/l_a reduceto a2 1 endphoneme @@ -41,8 +39,8 @@ phoneme a2 length 150 formants vowel/a_5 after l l/la-15 + before l/ DFT+l/l_a before (r) DFT-20+r/xr - before r/ DFT+vwl_fr/r_a endphoneme @@ -62,8 +60,8 @@ phoneme E length 175 formants vowel/e_mid after l l/le-15 - before l/ DFT-20+l/xl - before r/ DFT+r3/r_e + before l/ DFT+l/l_e + before r/2 DFT+r3/r_e reduceto E2 1 endphoneme @@ -73,7 +71,7 @@ phoneme E2 length 175 formants vowel/e_mid after l l/le-15 - before r/ DFT+vwl_fr/r_e + before l/ DFT+l/l_e endphoneme @@ -84,9 +82,9 @@ phoneme i linkout ; after l l/li-15 after (r) vwl_fr/ri - before l/ DFT-20+l/L1_iL-80 + before l/ DFT+l/l_i before (r) DFT+r/xr - before r/ DFT+r3/r_i + before r/2 DFT+r3/r_i endphoneme @@ -96,8 +94,8 @@ phoneme i: // longer than i formants vowel/i_3 linkout ; after l l/li-15 - before l/ DFT-20+l/L1_iL-80 - before r/ DFT-20+r/xr-25 + before l/ DFT+l/l_i + before r/2 DFT-20+r/xr-25 endphoneme @@ -114,7 +112,7 @@ phoneme o2 length 170 formants vowel/o_2 after l l/lo-10 - before l/ DFT-20+l/L1_oL-80 + before l/ DFT+l/l_o endphoneme @@ -123,8 +121,8 @@ phoneme O length 170 formants vowel/o_mid after l l/lo-10 - before l/ DFT-10+l/xl - before r/ DFT-30+r3/r_o + before l/ DFT+l/l_o + before r/2 DFT+r3/r_o reduceto o 1 endphoneme @@ -134,18 +132,19 @@ phoneme O2 // Like O but no reduceto length 170 formants vowel/o_mid after l l/lo-10 - before r/ DFT-20+r3/r_o + before l/ DFT+l/l_o +// before r/2 DFT+r3/r_o endphoneme phoneme u vowel starttype (u) endtype (u) - length 180 + length 170 formants vowel/u_3 after l l/lu-20 - before l/ DFT-20+l/L1_uL-80 + before l/ DFT-20+l/l_u before (r) DFT+r/xr - before r/ DFT-20+vwl_fr/r_u + before r/2 DFT+vwl_fr/r_u endphoneme @@ -154,8 +153,9 @@ phoneme u: // slitely longer than u length 220 formants vowel/u_3 after l l/lu-20 - before l/ DFT-20+l/L1_uL-80 - before r/ DFT+r/xr-40 + before l/ DFT-20+l/l_u + before l/ DFT-20+l/l_u + before r/2 DFT+r/xr-40 endphoneme @@ -164,9 +164,7 @@ phoneme y length 170 formants vowel/y_2 after l l/lu-20 - before l/ DFT-20+l/L1_uL-80 - before (r) vwl_fr/r_y - before r/ DFT+r/xr-30 + before l/ DFT-30+l/l_y endphoneme @@ -175,8 +173,8 @@ phoneme Y length 170 formants vowel/y# after l l/l@-20 - before l/ DFT-40+l/xl+15 - before r/ DFT+r/xr-40 + before l/ DFT-20+l/l_@ + before r/2 DFT+r/xr-40 endphoneme @@ -185,8 +183,8 @@ phoneme W length 180 formants vowel/@_5 after l l/l@-20 - before l/ DFT-40+l/xl+15 - before r/ DFT+vwl_fr/r_@ + before l/ DFT-20+l/l_@ + before r/2 DFT+vwl_fr/r_@ reduceto Y 1 endphoneme @@ -196,8 +194,8 @@ phoneme W2 // same as W but don't reduce length 180 formants vowel/@_3 after l l/l@-20 - before l/ DFT-40+l/xl+15 - before r/ DFT+vwl_fr/r_@ + before l/ DFT-20+l/l_@ + before r/2 DFT+vwl_fr/r_@ endphoneme @@ -206,8 +204,7 @@ phoneme wA length 240 formants vwl_fr/w_a after l l/lo-10 - before l/ DFT-10+l/xl - before r/ DFT-30+r/xr + before l/ DFT-10+l/l_a endphoneme @@ -216,8 +213,8 @@ phoneme w^i length 220 formants vdiph/yi_fr after l l/lu-20 - before l/ DFT-20+l/xl - before r/ DFT+r/xr-30 + before l/ DFT+l/l_i + before r/2 DFT+r3/r_i endphoneme @@ -225,7 +222,8 @@ phoneme A~ vowel starttype (a) endtype (a) length 190 formants vnasal/aa_n2 - before r/ DFT+r/xr-40 + before r/2 DFT+r/xr-40 + before l/ DFT+l/l_a endphoneme @@ -298,7 +296,8 @@ phoneme b vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk formants b/b+x/b%70 before _ b/b_+x/b_ - before R b/b+x/b_ + before l/ b/b_+x/b_ + before R2 b/b_+x/b_ after _ NULL after @ b/xb%50 lengthmod 5 @@ -311,8 +310,8 @@ phoneme d vowelout f1=0 f2=1700 -300 300 f3=-100 80 formants d/d+x/d%40 before _ d/d_+x/d_%50 - before (r) d/dr+x/d%50 - before r/ d/dr+x/d%50 + before R2 d/dr+x/d%50 + before r/2 d/dr+x/d%50 after _ d/d+x/d%50 after (@) d/xd lengthmod 5 @@ -340,8 +339,8 @@ phoneme k lengthmod 2 wave ustop/k%40 // reduce strength of noise burst before _ ustop/k_ - before R ustop/kr%45 - before r/ ustop/kr%45 + before R2 ustop/kr%45 + before r/2 ustop/kr%45 before l ustop/kl%45 before l/ ustop/kl%45 before (i) ustop/ki%45 @@ -366,8 +365,6 @@ phoneme l/ // used for [l] when not before a vowel length 100 lengthmod 7 formants l/l_ - before b l/l_long - after b l/l before (r) l/_l beforevowel l endphoneme @@ -392,9 +389,10 @@ phoneme p wave ustop/p%50 after _ ustop/p%70 before _ ustop/p_%70 - before R ustop/pr%70 + before R2 ustop/pr%75 before @- ustop/p_unasp%60 before l ustop/pl%30 + before l/ ustop/pl%30 switchvoicing b endphoneme @@ -411,12 +409,12 @@ endphoneme phoneme r - liquid pal starttype (r) endtype (r) + liquid rfx starttype (r) endtype (r) vowelin f1=0 f2=800 -50 50 f3=-100 100 len=40 vowelout f1=0 f2=1500 -400 400 f3=-600 80 length 100 lengthmod 7 - beforenotvowel r/ + beforenotvowel r/2 formants vwl_fr/@R3+r3/rx%30 after (e) vwl_fr/@R4+r3/rx%15 after (u) vwl_fr/@R4+r3/rx%15 @@ -425,7 +423,7 @@ endphoneme phoneme r2 // silent unless followed by vowel - liquid pal starttype (r) endtype (r) + liquid rfx starttype (r) endtype (r) vowelin f1=0 f2=800 -50 50 f3=-100 100 len=40 vowelout f1=0 f2=1500 -400 400 f3=-600 80 length 100 @@ -440,23 +438,38 @@ endphoneme phoneme R // for beginning of words - vcd pal frc - vowelin f1=0 f2=800 -50 50 f3=-100 100 + vcd rfx flp + vowelin f1=0 f2=800 -50 50 f3=-100 80 length 100 lengthmod 7 - beforenotvowel r/ - formants vwl_fr/@R3+r3/rx%40 + beforenotvowel r/2 + formants vwl_fr/@R3-20+r3/rx%25 + before (u) vwl_fr/@R4-20+r3/rx%25 after k r/tr after p r/tr after t r/tr endphoneme -phoneme r/ // variant of [r] when not preceding a vowel - vcd pal frc + +phoneme R2 // After consonnants + vcd rfx frc + vowelin f1=0 f2=800 -50 50 f3=-100 80 + length 100 + lengthmod 7 + beforenotvowel r/2 + formants vwl_fr/@R3-20+r3/rx%25 + after k r/tr + after p r/tr + after t r/tr +endphoneme + + +phoneme r/2 // variant of [r] when not preceding a vowel + vcd rfx frc vowelout f1=0 f2=800 -50 50 f3=-600 80 len=40 length 100 lengthmod 2 - formants r3/r_2+r3/rx%40 + formants r3/r_+r3/rx%35 after _ r/rr after t r/trr after p r/trr @@ -466,7 +479,6 @@ phoneme r/ // variant of [r] when not preceding a vowel endphoneme - phoneme s vls alv frc sibilant vowelin f1=0 f2=1700 -300 300 f3=-100 80 @@ -500,8 +512,8 @@ phoneme t lengthmod 2 wave ustop/t_short%50 before _ ustop/t_%40 - before R ustop/tr%30 - before r/ ustop/t_short%50 + before R2 ustop/t_short%50 + before r/2 ustop/t_short%50 switchvoicing d endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 6d9526c1..3a0ae837 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -285,7 +285,7 @@ phoneme ph vowelin f1=0 f2=1000 -50 -100 f3=-200 80 vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 lengthmod 2 - wave ustop/p + wave ustop/p_asp before _ ustop/p_ before r ustop/pr before l ustop/pl @@ -347,12 +347,14 @@ endphoneme -phoneme th // dental variant of /t/ Same as [t] for now +phoneme th // dental variant of /t/ vls dnt stop vowelin f1=0 f2=1500 -300 300 f3=-100 80 vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 lengthmod 2 - wave ustop/t_hi%50+h/h@ + wave ustop/t_dnt%50 + before _ ustop/t_dnt%35 +// wave ustop/t_hi%50+h/h@ switchvoicing d endphoneme @@ -554,3 +556,4 @@ endphoneme // switchvoicing k //endphoneme + diff --git a/phsource/ph_tamil b/phsource/ph_tamil index 910f82ac..47578b69 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -5,7 +5,7 @@ phoneme a - vowel starttype (@) endtype (@) + vowel starttype (a) endtype (a) length 130 formants vowel/a reduceto V 4 diff --git a/phsource/phonemes b/phsource/phonemes index 6a46d9ac..4531ae53 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -512,7 +512,6 @@ endphoneme - phoneme ; // linking j, (formerly [j-]) used between (i) vowels // and a following vowel // also to palatalize consonants @@ -1101,6 +1100,7 @@ phoneme C length 100 lengthmod 3 wave ufric/ch + before _ ufric/ch_ endphoneme @@ -1110,7 +1110,8 @@ phoneme x vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 length 100 lengthmod 3 - wave ufric/x + wave ufric/x_hr%30 + before _ ufric/x%120 switchvoicing Q endphoneme @@ -1190,9 +1191,6 @@ include ph_hindi phonemetable ta hi include ph_tamil -phonemetable ml hi -include ph_malayalam - phonemetable hu base include ph_hungarian @@ -1292,3 +1290,10 @@ include ph_danish phonemetable sq es include ph_albanian + +phonemetable ml hi +include ph_malayalam + +phonemetable bn hi +include ph_bengali + diff --git a/phsource/ufric/ch.wav b/phsource/ufric/ch.wav index 1d252c4b..13263ce1 100644 Binary files a/phsource/ufric/ch.wav and b/phsource/ufric/ch.wav differ diff --git a/phsource/ufric/ch_.wav b/phsource/ufric/ch_.wav new file mode 100644 index 00000000..1d252c4b Binary files /dev/null and b/phsource/ufric/ch_.wav differ diff --git a/src/synthdata.cpp b/src/synthdata.cpp index cead6397..84ad2b0d 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.39.04 19.Sep.08"; +const char *version_string = "1.39.05 22.Sep.08"; const int version_phdata = 0x013900; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index bc447a15..3635bc21 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -46,6 +46,7 @@ #define OFFSET_GREEK 0x380 #define OFFSET_CYRILLIC 0x420 #define OFFSET_DEVANAGARI 0x900 +#define OFFSET_BENGALI 0x980 #define OFFSET_TAMIL 0xb80 #define OFFSET_MALAYALAM 0xd00 #define OFFSET_KOREAN 0x1100 @@ -88,6 +89,20 @@ static const unsigned int replace_cyrillic_latin[] = 0}; // ѓ ѕ ќ +void SetIndicLetters(Translator *tr) +{ + // Set letter types for Indic scripts, Devanagari, Tamill, etc + static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f}; + + memset(tr->letter_bits,0,sizeof(tr->letter_bits)); + SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters + SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4c); // vowel signs + SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama + SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range + SetLetterBits(tr,LETTERGP_C,dev_consonants2); // additional consonants + tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words +} + void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps) {//================================================================================== if(lengths != NULL) @@ -313,7 +328,6 @@ Translator *SelectTranslator(const char *name) case L('h','i'): { - static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f}; static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,24, 24,22 }; @@ -327,13 +341,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.numbers = 0x011; tr->langopts.numbers2 = 0x100; tr->letter_bits_offset = OFFSET_DEVANAGARI; - - memset(tr->letter_bits,0,sizeof(tr->letter_bits)); - SetLetterBitsRange(tr,LETTERGP_A,0x06,0x14); // vowel letters - SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs + virama - SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range - SetLetterBits(tr,LETTERGP_C,dev_consonants2); // additional consonants - tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words + SetIndicLetters(tr); } break; @@ -713,6 +721,7 @@ SetLengthMods(tr,3); // all equal case L('t','a'): // Tamil case L('m','l'): // Malayalam + case L('b','n'): // Bengali { static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; @@ -729,14 +738,12 @@ SetLengthMods(tr,3); // all equal { tr->letter_bits_offset = OFFSET_MALAYALAM; } + if(name2 == L('b','n')) + { + tr->letter_bits_offset = OFFSET_BENGALI; + } tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words - - memset(tr->letter_bits,0,sizeof(tr->letter_bits)); - SetLetterBitsRange(tr,LETTERGP_A,0x05,0x14); // vowel letters - SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4c); // vowel signs - SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama - SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range - tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words + SetIndicLetters(tr); } break; diff --git a/src/translate.cpp b/src/translate.cpp index 9ed17a6e..18440966 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -361,14 +361,13 @@ int IsAlpha(unsigned int c) if(iswalpha(c)) return(1); - if((c >= 0x901) && (c <= 0x957)) - return(1); // Devanagari vowel signs and other signs - - if((c >= 0xb81) && (c <= 0xbe5)) - return(1); // Tamil vowel signs and other signs - - if((c >= 0xd01) && (c <= 0xd57)) - return(1); // Malayalam vowel signs and other signs + if((c >= 0x901) && (c <= 0xdf7)) + { + // Indic scripts: Devanagari, Tamil, etc + if((c & 0x7f) < 0x64) + return(1); + return(0); + } if((c >= 0x300) && (c <= 0x36f)) return(1); // combining accents @@ -1924,6 +1923,7 @@ int Translator::TranslateChar(char *ptr, int prev_in, unsigned int c, unsigned i int initial; int medial; int final; + int next2; static const unsigned char hangul_compatibility[0x34] = { 0, 0x00,0x01,0xaa,0x02,0xac,0xad,0x03, @@ -1938,10 +1938,12 @@ int Translator::TranslateChar(char *ptr, int prev_in, unsigned int c, unsigned i { case L('a','f'): // look for 'n and replace by a special character (unicode: schwa) - + + utf8_in(&next2, &ptr[1], 0); + if(!iswalpha(prev_in)) { - if((c == '\'') && (next_in == 'n') && isspace(ptr[1])) + if((c == '\'') && (next_in == 'n') && IsSpace(next2)) { // n preceded by either apostrophe or U2019 "right single quotation mark" ptr[0] = ' '; // delete the n