From 359b2327a9c395c029a685d1c9bf02afaac2c045 Mon Sep 17 00:00:00 2001 From: jonsd Date: Tue, 23 Sep 2008 00:17:19 +0000 Subject: [PATCH] [1.39.06] Added languages for possible development: bn, ml Changes to phonemes: [x] [C] hi: [ph] [th] git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@194 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 22 +++++-- dictsource/en_list | 4 +- dictsource/en_rules | 10 +++- dictsource/fr_list | 64 ++++++++++---------- dictsource/fr_rules | 10 +++- espeak-data/voices/af | 2 +- phsource/compile_report | 126 ++++++++++++++++++++++----------------- phsource/mbrola/fr1 | 2 + phsource/ph_french | 126 +++++++++++++++++++++------------------ phsource/ph_hindi | 9 ++- phsource/ph_tamil | 2 +- phsource/phonemes | 15 +++-- phsource/ufric/ch.wav | Bin 4722 -> 3668 bytes phsource/ufric/ch_.wav | Bin 0 -> 4722 bytes src/synthdata.cpp | 2 +- src/tr_languages.cpp | 37 +++++++----- src/translate.cpp | 22 +++---- 17 files changed, 264 insertions(+), 189 deletions(-) create mode 100644 phsource/ufric/ch_.wav 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 1d252c4bcad4c907599dd2d0b358cd744e8b8d70..13263ce190c9667db4a7a441403ccdfbf1344ace 100644 GIT binary patch literal 3668 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,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