From 191ec1d37e9997e9567b389c502e819eb8e940fc Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 25 Apr 2011 16:51:06 +0000 Subject: [PATCH] [1.45.04] release Don't speak punctuation names faster at high speeds. lang=ml, recognise "virama + U+200d" (zero-width joiner) to indicte 'chillu' characters. Fix problem of punctuation character announcement repeated at the start of the next sentence after speaking is stopped. Fixed crash due to large numbers of box-drawing characters in text input. Fixed phoneme translation of 't' sounds for US-English voices. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@261 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/af_list | 31 ++++++++++++++++- dictsource/af_rules | 15 +++++++-- dictsource/de_list | 8 +++-- dictsource/de_rules | 12 ++++--- dictsource/dict_phonemes | 45 +++++++++++++------------ dictsource/en_list | 10 +++++- dictsource/en_rules | 9 +++-- dictsource/fr_list | 3 +- dictsource/fr_rules | 4 +-- dictsource/hu_list | 31 +++++++++++++++++ dictsource/hu_rules | 11 ++++-- dictsource/ka_list | 6 ++-- dictsource/kn_list | 6 +++- dictsource/nl_list | 2 +- dictsource/nl_rules | 14 ++++---- dictsource/ta_list | 6 ++++ dictsource/ta_rules | 70 +++++++++++++++++++++++++++++++++------ dictsource/tr_list | 7 +++- phsource/compile_report | 52 ++++++++++++++++++----------- phsource/mbrola/us | 7 ++-- phsource/mbrola/us3 | 2 ++ phsource/n/nr@ | Bin 1311 -> 1655 bytes phsource/n/nra | Bin 1325 -> 1669 bytes phsource/n/nre | Bin 1329 -> 1673 bytes phsource/n/nri | Bin 1293 -> 1637 bytes phsource/n/nro | Bin 1249 -> 1593 bytes phsource/n/nru | Bin 1323 -> 1667 bytes phsource/ph_dutch | 8 ++++- phsource/ph_french | 4 +-- phsource/ph_hindi | 4 +-- phsource/phonemes | 4 +-- src/compiledict.cpp | 4 +-- src/dictionary.cpp | 6 ++-- src/phonemelist.cpp | 13 +++++++- src/readclause.cpp | 49 +++++++++++++++++++++------ src/setlengths.cpp | 5 ++- src/synth_mbrola.cpp | 5 ++- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 7 ++-- src/translate.cpp | 13 +++++--- src/wavegen.cpp | 38 ++++++++++++--------- 41 files changed, 377 insertions(+), 136 deletions(-) diff --git a/dictsource/af_list b/dictsource/af_list index f1e15a08..324ad6ab 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -261,6 +261,7 @@ doebaai $2 duitswes dYytsv'Es efese e@f@s@ ermelo &rm@lo@ +florida flOrida franschhoek frA~nsh'uk fraserburg freIz@rbWrx2 gadara x2@dA:ra @@ -312,7 +313,9 @@ maputo map'u:tu mauritius mOr'iSjWs milaan $2 mesopotamië mEsuput'A:mi@ +miami _^_EN mpumalanga mpu:mal'aNga +monaco mOn'A:ku montagu mOnt@ky moreletapark mOr@l,Etap'ark moorreesburg mur'e@sbWrx2 @@ -328,6 +331,7 @@ oxford _^_EN palermo pal'&rmu pelindaba p&l@nd'A:ba perú p@ru +philadelphia f@l@d'&lfi;a piketberg p@kEtb&rx2 portugal pOrtyx2al potchefstroom pOtSIfstr'o@m @@ -413,6 +417,7 @@ beyers beI@rs blignault blIx2n@Ut blomerus blum'e@rWs blum blum +boris bOr@s borodin bOrud'in botha bo@ta bouwer b@U@r @@ -426,6 +431,7 @@ caesar siz@r carl kA:r@L carlyle _^_EN carol _^_EN +carmen karmEn casanova kasan'o@va cecil sEs@l cecile s@si:l @@ -492,6 +498,7 @@ elize il'i:z elmien $2 elsabe &ls@bi elsabé &ls@bi +elvis _^_EN emmarentia Emar'e~nSja engelbrecht EN@lbr&x2t erasmus $2 @@ -513,6 +520,7 @@ francois franSwa françois frA~nsw'A: gabriël x2A:bri@l gandhi gandi +gatsby _^_EN george _^_EN georgina dZO:dZ'ina gerhard x2&rart @@ -553,6 +561,7 @@ jaco jaku jakomina jakum'ina james _^_EN jane _^_EN + janine dZ@ni:n Jean ZA~n $capital jesebel je@s@b&l jessica _^_EN @@ -629,6 +638,7 @@ matteus mat'i:Ws matthee mat'e@ mattheüs mat'i:Ws matthéüs mat'i:Ws +maud mO:d maureen _^_EN mefistofeles mEfist'o@f@l@s melanie m@lA:ni @@ -649,6 +659,7 @@ mozart mo@tsart myburgh meIbWrx2 naomi na_'o@mi natasha n%at'aSa +natasja n%at'aSa naudé nOd'e@ nefertiti nEf@rt'iti neil _^_EN @@ -687,6 +698,7 @@ richard _^_EN riekert rik@rt robert _^_EN robin _^_EN +roger _^_EN ronel run'&l rossouw r@s@U rousseau r@s@U @@ -707,10 +719,12 @@ schutte skWt@ sebastian s@bastian servaas s@rfA:s shakespeare _^_EN +sharon S&r@-n sheila Si:la sigmund sigmunt sophia suf'i:ja sophie _^_EN +springsteen _^_EN stephan ste@fan stephanus st@fA:nWs stephen _^_EN @@ -774,6 +788,7 @@ alibama $3 antares $2 boeing _^_EN checkers tSEk@rs +chevrolet _^_FR chrysler kraIsl@r citroên s@trun ferrari f@rA:ri @@ -974,6 +989,7 @@ aspris $2 asseblief as@bl'if assessore $3 attraksie $2 +(au pair) @U||p'&:r aversie av'&rsi babelaas bab@lA:s @@ -990,6 +1006,7 @@ betlehemster bEtli:Emst&r bewe be@v@ bewend be@v@nt bewering b@ve@rIN +biopsie bi'Opsi bomaat bo@mA:t bordegoed bO:rd@x2ut borgene bOrx2@n@ @@ -1006,6 +1023,7 @@ camembert kam@mb'&:r camouflage kamufl'A:Z cannelloni $3 capita kapita +cappuccino kaputS'i:nu casino kas'i:n@U cedille s@dIl@ charisma kar'Isma @@ -1016,6 +1034,8 @@ cognac kOn^ak confetti $2 crescendo kr@SEndu crimpelene kr@mp@li:n +croissant _^_FR +crèche krES dadelik dA:d@lIk dagorde dax2_Ord@ @@ -1032,6 +1052,7 @@ deurkruis $2 deurry dY@rreI deurstaan $2 deurstraalde $2 +diffuus d@fy:s dikwels dIkv@ls diplomasie d@plo@mas'i disleksie $2 @@ -1083,6 +1104,8 @@ geen x2e@n geldelike x2&ld@l@k@ gelerendheid x2@le@r@ntheIt genade $2 + gener x2e@n@r + generlei x2e@n@rleI genesis x2e@n@s@s //gesamentlik x2@sA:m@ntl@k gentleman _^_EN @@ -1166,6 +1189,8 @@ kunsmatige kWnsm'A:t@x2@ kwansuis $2 lasagne las'anj@ +legaat l@x2A:t +legate l@x2A:t@ libido l@bidu liefdespel lifd@sp&l lipstiek lIpstik @@ -1200,6 +1225,7 @@ misterie m@ste@ri monsieur _^_FR motore mo@t'o@r@ motor mo@t@r +motorry mo@t@rreI motortjie mo@t@rki nadele nA:de@l@ @@ -1275,6 +1301,8 @@ oorsee $2 oorsese $2 oorval $2 $verb opend Op_Ent +oraal o@r'A:l +orale o@r'A:l@ oranjepers o@r'anj@p&:rs oudsher @Utsh&r @@ -1289,7 +1317,6 @@ patriotisme patri|ut'Ism@ pedaledemping p@dA:l@dEmp@N penorent pEno@rEnt per p@r $only -persent p@rsEnt petite p@tit pikanienie pikan'ini pinot pinu @@ -1328,6 +1355,7 @@ salute sal'yt@ samelewing sA:m@l,e@v@N sanhedrin sanh'e@dr@n sangemeenskap sanx2@me@nskap +sedeer s@de@r sedertdien $3 sektore $2 sinagoge s@n@x2o@x2@ @@ -1360,6 +1388,7 @@ subiet sWb'it suburbia sWb'Wrbija swangerswaar swaN@rswA:r swetterjoel $3 +séance s%e@A~ns tanga taNga tangas taNgas diff --git a/dictsource/af_rules b/dictsource/af_rules index 3f91b51c..c360fb04 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,5 +1,5 @@ //maintainer: Willem van der Walt - // email: wvdwalt@csir.co.za +// email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR //With contributions by Christo de Klerk @@ -851,6 +851,7 @@ de (kane d@ // fix stress and 1st e sound: (universiteits)dekane _) de (klass de@ // deklassifikasie/gedeklassifiseer de (klinA d%E // fix 1st e sound: deklinasie/deklineer/-nering and compounds + @) de (kontrak d@ // fix e sound: huweliksvoorwaardekontrak/te de (krimina d%e@ // fix e sound: (ge)dekriminaliseer/dekriminalisering, etc. de (laan d@ // fix e sound: tweede-/derde-/vierdelaan... kun) dele (K d@lE // fix e sounds: Aardryks-/wiskundeles/-se, etc. @@ -1114,6 +1115,7 @@ _) erde (C &rd@ // fix connecting e in compounds: erdekruik/-ware and similar _) ere e@r@ // ereamp/erediens/ererol/erevoorsitter ere (ksiA %e@rE // fix stress and e sounds: ereksie/ereksionele + _aller) erg _&rx2 // fix e sound, insert break: allerergs(te) u) ering 'e@r@N // aktuering/konstruering, etc. C) ersyds @rseIts // fix d and e sounds: enersyds/wedersyds, etc. ele (ganC %El@ // elegant/onelegant/elegansie @@ -1209,7 +1211,7 @@ ele (gie %El@ // move default stress: elegie/-ë elektr %ilEktr // move stress from 1st slb: elektries/elektrisiteit elek (trode %il%Ek // fix stress and e sounds: elektrode/-s and compounds - + @) eliga (_ @lix2a // fix e sound: kampioene-/tweedeliga _) ellende e@l'End@ _) ellendig e@l'End@x2 _) e (llipK %i // fix stress and e sound: ellips/-e/-ties/-e @@ -3673,6 +3675,8 @@ permanen p&rman'En // permanent/e/permanensie permit p@rm'It per (seel p%&r // move default stress: perseel and compounds + persent p@rsEnt // fix e sound and stress: veertig-/vyftigpersent(kans)... + @) persenta (si p@rsEntA: // restore default stress: groei-/stempersentasie, etc. per (sepsi p@r // fix stress and 1st e sound: persepsie/-s and compounds per (so p@r // persoon/persone pers (om p&rs_ // fix e sound, pause: persombudsman/-ne and compounds @@ -3785,7 +3789,7 @@ radika (li radika radika (le radik'A: radikaa radik'A: - radio rA:diu:- + radio rA:diu:_ // radioaktief, etc. radi (olo@ r%A:d%i // fix stress: radioloog/-loë/-logie, etc. raffinade (r r%af%in%ad@ // fix stress and 2nd a sound: raffinadery/-e and compounds rake (t rak'E // raket/te/tennisraket @@ -3929,6 +3933,7 @@ resi (tA r@s@ // fix vowel sounds: resitasie and compounds/resiteer respek r@spEk respek (teer r@sp%Ek // stress to end + _) reste (rend r%Este@ &) rele (_ r'e@l@ &A) reel (_ r'e@l // stress: immoreel/kultureel/struktureel/tekstureel/temporeel reti (re r@t@ // fix stress and vowel sounds: retireer/retirerende @@ -4203,6 +4208,7 @@ se (_ s@ //the word se and some ending in se __) se (_ s@ //Se at start of sentence. _) sebra se@bra // fix vowel sounds: sebra/-strepe; variant of zebra + _) se (dent s@ // fix stress and e sounds: sedent/-e _) se (doos s@ // fix stress and e sound: sedoos(wind) se (ggA s& // fix e sound: niksseggend/-e @) seko (no@ s_%Ek%u // fix e sound; default stress; insert short pause: bedryfs-landsekonomie/-s/-ekonoom @@ -4346,6 +4352,7 @@ sterrei st@r'eI sterre st&r@ sterretjie st'&rici + ster (wend st&r // fix e sound: eers-/laassterwend/-e sterwens (@ st&rv@ns_ // fix 2nd e sound and insert paus: sterwensuur/-kreet/-nood and similar ste (m stE // eliminate one m in derivatives like stemming ste (maat st@ // fix e sound: -dienstemaatskappy/-e and similar @@ -4509,6 +4516,7 @@ te (aa t@ // beroerteaanval/geboorteaanwas/lenteaand... teater t%iA:t@r // fix stress and e sound: teater and compounds tea (tra t%i%a // fix stress and vowel sounds: teatraal/teatrale + _) te (bowe t@ // fix e sound and stress: tebowe(koming) teen (argu t''e@n // forse stress on 1st slb.: teenargument/-e/-asie te (dom t@ // fix e sound: idiotedom and similar teen (oorges t%e@n_ // move default stress: teenoorgestel/-d/-e @@ -4638,6 +4646,7 @@ i) terende (_ t'e@r@nd@ //presipiterende moniterende ul) terende (_ t'e@r@nd@ //konsulterende resulterende ver) terende (_ t'e@r@nd@ //verterende in compounds + termi (na@ t%&rm%i // fix stress: terminaal/-nale ter (myn t%&r // move default stress: termyn/-aandele/-versekering, etc. _) terti (AK t&rSj // fix -ti- sound: Tertia/Tertius tesame t@sA:m@ // fix stress and vowel sounds: moved here because of compounds with tesame: tesamebeleid diff --git a/dictsource/de_list b/dictsource/de_list index 9b80aeb8..32548419 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -133,7 +133,7 @@ _dpt _kOma // ordinal numbers _ord t@ // default ending _ord20 st@ // 20,30,etc -_1o _'e:3st@ +_1o _'e:rst@ _3o dr'It@ _7o z'i:bt@ _8o _'axt@ @@ -149,7 +149,6 @@ bd band bde bEnd@ bzw b@tsi:UNsvaIz@ chr k@rIstUs -dm d'OYtS@||m'A:rk $capital $only $abbrev dr dOkt'o:r evtl e:vEntu:'El od o:d3 $only @@ -613,6 +612,7 @@ historie $alt hm h@m horsam hO3zA:m hostie $alt +hrhr harhar illegitim Ile:gi:t'i:m illiberal Ili:b@r'A:l @@ -715,6 +715,7 @@ tag tA:g telegen te:le:g'e:n the D@ // English theater te:'A:t3 +tja tjA: tonnage $alt tragödie $alt train tre:n @@ -758,3 +759,6 @@ Neumexiko $2 Neuseeland $2 Rwanda rU'andA: Sri sr,i: +Tom tOm +Tim tIm + diff --git a/dictsource/de_rules b/dictsource/de_rules index a74da387..f9272fed 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -30,6 +30,7 @@ ah (+ A: ael A:El ae E: + ae (CC E a (C% a a (CC a @@ -46,7 +47,8 @@ ag (t_ A:k _) ab (C@P2 _!'ap - _) ab (arP2 _!'ap + _) ab (äP2 _!'ap + _) ab (C@P2 _!'ap _) ab (nor %ap _) ab (or ap_| _) ab (sor %ap @@ -472,7 +474,7 @@ _) farb (C@P4 f'arp _) farb (l@P4 f'arb _) fein (@P4 f'aIn - _) fertig (CP6 f'ErtiC + _) fertig (C@P6 f'ErtiC _) fest (@P4 f'Est _) flug fl'u:g foto fo:to: @@ -519,7 +521,7 @@ _) ge (beX ge: geben ge:b@n ge(birg g@ - gegen (_@P5 ge:g@n + _) gegen (@P5 ge:g@n gegen ge:g@n gegn ge:gn gehen ge:@n @@ -613,7 +615,7 @@ i (d_ 'i: i (dee %i: i (erin =i: - ig (+ Ig# // [ig] or [iC] + @) ig (+ Ig# // [ig] or [iC] igh (K _^_EN i (i i:_! @@ -837,6 +839,7 @@ formal) ie =I@ oh (+ o: oo o: oe Y: + oe (CC W ou u: o (C% O @@ -940,7 +943,6 @@ formal) ie =I@ r r r (r b) r r // uses phonemes @-* - _) r r _) rh (A r // allow _rh rangier rA:NZ'i:r diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 0bbd891e..56d061ba 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -1,7 +1,7 @@ Phonemes which are used in the *_rules and *_list files -Dictionary af_dict 2011-02-09 +Dictionary af_dict 2011-04-06 & &: 3: @ @- @L @U a A: aI AI aU A~ E e: e@ @@ -66,7 +66,7 @@ s S t T tS v w x z Z -Dictionary hu_dict 2011-03-30 +Dictionary hu_dict 2011-04-23 a A a: E e: i i: o o: u u: Y y y: Y: @@ -77,7 +77,7 @@ n n^ p r R R2 s S s2 t t2 tS ts v z Z -Dictionary de_dict 2011-04-01 +Dictionary de_dict 2011-04-25 3 3: @ @- a A A: aI aU A~ E E2 E: e: EI i @@ -100,7 +100,7 @@ p Q r R s s; t T ts v x z z; -Dictionary en_dict 2011-03-30 +Dictionary en_dict 2011-04-25 0 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI@ aU @@ -116,7 +116,7 @@ S t T t2 tS v w x z Z -Dictionary eo_dict 2011-04-01 +Dictionary eo_dict 2011-04-02 @- a aI aU e eI eU i o oI u uI @@ -150,7 +150,7 @@ l m n N p r s S s2 t v w Z -Dictionary fr_dict 2011-03-01 +Dictionary fr_dict 2011-04-15 @ @- a A~ e E E: E~ i I o O O~ u u: w @@ -200,7 +200,7 @@ q r r. s S s. t T t. th th. v w x z -Dictionary ta_dict 2011-03-31 +Dictionary ta_dict 2011-04-13 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -325,12 +325,12 @@ k l m n p R s S t tS v w x -Dictionary nl_dict 2011-03-30 +Dictionary nl_dict 2011-04-15 8 @ @- a A a: A~ e -E E2 e: EI eU i I o -O O: o: O~ u VU Wy y -Y: yU +E e# E2 e: EI eU i I +o O O: o: O~ u VU Wy +y Y: yU * : ; b d D dZ f g h j k l m n N @@ -474,7 +474,7 @@ p R R^ s S t tS ts v w x z Z -Dictionary tr_dict 2011-03-17 +Dictionary tr_dict 2011-04-22 @ a e E i I o O u U W y Y @@ -533,11 +533,11 @@ s S t tS ts v w x z Z -Dictionary ml_dict 2011-04-01 +Dictionary ml_dict 2011-04-25 -@ a a: aI aU e E e: -i I i: o o: r- u u: -V y +@ a a# a: aI aU e E +e: i I i: o o: r- u +u: V y #X1 #X2 : ; b bh c ch d d# d. dh dh. dZ f g @@ -609,14 +609,15 @@ s. t T t. th th. v x z Z z. -Dictionary bg_dict 2011-03-25 +Dictionary bg_dict 2011-04-20 @ a e i o u : ; b C d d; dZ dz -f g j k l L l^ m -n n^ p r s S s; t -t; tS ts v x z Z z; +f g g; h j k l L +l^ m n n^ p r s S +s; t t; tS ts v x z +Z z; Dictionary nso_dict 2010-08-27 @@ -688,7 +689,7 @@ t. th th. tS v w x z Z -Dictionary kn_dict 2011-03-14 +Dictionary kn_dict 2011-04-06 a a: aI aU e E e: i I i: o o: r- u u: @@ -726,7 +727,7 @@ s s. S; t t. th th. tS v w z -Dictionary ka_dict 2011-03-11 +Dictionary ka_dict 2011-04-11 @ @- a e i o u diff --git a/dictsource/en_list b/dictsource/en_list index d4be232b..56c7840c 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -369,6 +369,7 @@ mc m@k $combine // combine with the following word mya $abbrev nato neItoU ny $abbrev +nyt $abbrev oem $abbrev ok $abbrev omg $abbrev @@ -384,6 +385,7 @@ ucla $abbrev ufo $abbrev ui $abbrev uk $abbrev +un $abbrev $allcaps url $abbrev usa $abbrev usb $abbrev @@ -392,7 +394,7 @@ VI $abbrev wwii dVb@Lju:dVb@Lju:t'u: xxx $abbrev // not roman 30 xy $abbrev -yd jA@d +yd $abbrev nd $only @@ -2303,6 +2305,7 @@ wilderness wIld3nEs winding waIndI2N // verb wind waInd $verb (wind up) w'aInd||'Vp +(winds down) w'aIndz||d'aUn winded wIndI2d winged wINd wither wID3 // not with+er @@ -2455,6 +2458,7 @@ Donegal d0nI2g'O:l Durham dVr@m Egyptian IdZ'IpS@n Eire e@r@ +Elysee eIl'i:zeI Erie i@ri Geneva dZ@ni:v@ Gdansk g@-dansk @@ -2479,6 +2483,7 @@ Jakarta $2 Jerusalem dZ@ru:s@l@m Johannesburg $2 Kalgoorlie kalgU@lI +Kannada kA:n@d@ Karachi ka#rA@tSI Kentucky $2 Kiev ki:Ev @@ -2517,6 +2522,7 @@ Montreal m0ntrI'O:l Morocco m@r0koU Munich mju:nIk Nairobi naIr'oUbI +Naples neIp@Lz Nauru naUru: Nebraska $2 Nepal nEp'O:l @@ -2613,6 +2619,7 @@ Alice alIs Allen al@n Alison alI2s@n Amanda $2 +Amos eIm0s Amy eImI Andre 0ndreI Anita a#ni:t@ @@ -2675,6 +2682,7 @@ Emmy EmI Etheridge ET@-rIdZ Etienne EtI'En Euler OIl3 +Eva i:v@ Evan Ev@n Gary garI Geraint gEraInt diff --git a/dictsource/en_rules b/dictsource/en_rules index 9d35c90f..238dc88d 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -2805,6 +2805,7 @@ &) ier (y I2@r ier i@3 &) ier (_NS2i 3 + &) ier's (_NS4i 3z _h) ie (r aI@ pl) ier (_ aI@ _Cr) ier aI@ @@ -2867,7 +2868,7 @@ .group im cl) im aIm _) im (@ %Im - l) im (@ Im + l) im Im _pr) im (a aIm sh) im (a_ 'i:m im (age Im @@ -5086,7 +5087,8 @@ fl) ui (d u:I dr) ui (d u:I c) uisine wIzi:n - circ) ui (t I + rc) ui (t I + rc) ui (tous ''ju:I g) ui (ta I2 j) ui (c u: uir (_ jU@ @@ -5285,11 +5287,12 @@ %Af) y (_ %I _C) y aI _C) y (ph aI - _C) y (st I + y (st I XC) y aI CC) y (n_ I // Cr) y %I _sC) y aI + _b) y (+ aI c) y (cl aI c) y (clic_ aI bic) y (cl I diff --git a/dictsource/fr_list b/dictsource/fr_list index 9d5875bc..9e4e0fbb 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2011-02-18 Michel Such +// Updated 2011-04-15 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -788,6 +788,7 @@ tuttiquanti tutikw'anti vaut $u+ vaux $u+ vénus venys +(vis à vis) vizavi vot vOt waluigi waluidZi wario warjo diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 147f9e75..e59dc09b 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -27,7 +27,7 @@ // http://www.fluxnic.net/cicero // // Rules are now maintained by Michel Such -// Last update: 2011-02-18 Michel Such +// Last update: 2011-04-15 Michel Such // // Letter classes: @@ -1517,7 +1517,7 @@ nC) y (_ _^_en // symbols that are normally spoken when reading text - , (D pilk:u +// , (D pilk:u $ dOlar ° d@gre _n_) ° // n° diff --git a/dictsource/hu_list b/dictsource/hu_list index 0b0b49f4..45bf553a 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -1733,6 +1733,37 @@ gondoltam $unstressend érzem $unstressend érzed $unstressend jellemző $unstressend +tartalmával $unstressend +fekszik $unstressend +keltett $unstressend +figyelmébe $unstressend +nevezte $unstressend +vetni $unstressend +bújnak $unstressend +jogról $unstressend +szeretnék $unstressend +számított $unstressend +vállalnak $unstressend +javítják $unstressend +javítják $unstressend +alkalmazottak $unstressend +dolgozók $unstressend +alkalmazottaknak $unstressend +szabály $unstressend +bérért $unstressend +jogait $unstressend +értékeket $unstressend +mutat $unstressend +támogatottságot $unstressend +kritizálta $unstressend +kitételt $unstressend +figyelmeztetett $unstressend +jogot $unstressend +aggódott $unstressend +hangoztatta $unstressend +jogok $unstressend +felelt $unstressend +állította $unstressend // word pairs diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 7800571e..fc72623b 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -138,8 +138,9 @@ hierar) ch (i h ma) ch (iná h oligar) ch h legpe) ch (es h: -mazo) ch (izm h -mazo) ch (is h + mazo) ch (izm h + mazo) ch (is h + ar) ch (aikus h .group d d d @@ -283,6 +284,7 @@ standar) d (jegy d kambo) dzs dZ: föl) d (szerke d //földszerkezet word for example need spokening single d before sz letter harma) d (szint d + kó) d (jel d .group dz fogó) dz (kod ts @@ -741,6 +743,7 @@ helybe) n (jár n polle) n (jelen n idé) ny (jel n^ vagyo) n (nyilatkozat n //for example vagyonnyilatkozat word need spokening single n phoneme before n^ phoneme, not two n^n^ phoneme. + szí) n (jelzés n .group o o o @@ -1022,6 +1025,7 @@ települé) ssz (er Ss //for example településszerkezet word need spok .group sz sz s szts stS: + para) szts (onk st|S //parasztsonkword need spokening st and single S phoneme sztsz st|s sztsze stsE sztsza stsA @@ -1104,6 +1108,7 @@ használ) t (cikk t pamu) t (cér t ha) t (cell t //for example hatcellás, hatcella word need spokening t before c letter. pár) t (székház t +hálóza) t (semleges t .group tj @@ -1294,7 +1299,7 @@ felada) ts (or t|S ada) ts t|S //for example adatsor, adatsebesség words ada) tsz t|s //for example adatszolgáltatás word gondola) ts (or t|S -művele) ts (o t|S +művele) ts (o t|S tábláza) ts (or t|S vizsgála) ts (or t|S állapo) ts (or t|S diff --git a/dictsource/ka_list b/dictsource/ka_list index 83e586d4..603b0f69 100755 --- a/dictsource/ka_list +++ b/dictsource/ka_list @@ -58,8 +58,10 @@ _80a 'ot#xots _8X 'ot#xots _0C0 asi _0C as -_0M1 'at#asi -_0M2 m'ilioni +_0M1 'at#as +_0M1x 'at#asi +_0M2 m'ilion +_0M2x m'ilioni _0and d%a _dpt mt#eli_ diff --git a/dictsource/kn_list b/dictsource/kn_list index df76f602..1f86620c 100755 --- a/dictsource/kn_list +++ b/dictsource/kn_list @@ -238,7 +238,7 @@ _0M1 s'a:virada _0M1x s'a:vira _0M2x l'akSa // 100,000 _0M2 l'akSada -_0M3 k'oti // 100,00,000 +_0M3 k'ot.i // 100,00,000 _0M4 b'ilion // ?? English _dpt _d'as.a:ms.a @@ -247,6 +247,10 @@ _dpt _d'as.a:ms.a (http ://) e:tSti:ti:'pi:_ +// English words +Kannada kannad.a + + // unstressed words ಅದು $u // that ಅದರ $u // that, possessive diff --git a/dictsource/nl_list b/dictsource/nl_list index 1a912164..63193056 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -259,7 +259,7 @@ geweest $u hebben $u // to have heb $u hebt $u -heeft $u +heeft $u hadden $u gehad $u diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 11f4e4d3..c50792ad 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -13,8 +13,8 @@ @@C) a (_ =a: _) aan (@P3 'a:n - @) aar (_@S3 a:r - @) aard (_@S4 a:rt + @) aar (_S3 a:r + @) aard (_S4 a:rt aa (rd_ 'a: aa (C_ 'a: z) aa (m_ a: @@ -130,7 +130,7 @@ .group e - e e: + e e# // [e:] but change to [@] in unstressed syllables &C) e (_S1qd @ e (_ @ e (CK E @@ -379,8 +379,8 @@ _) natuur na:t'yr _) noord (@P5 no:rd _) nieuws (@P6 n'iws - @@) nis (_@S3 nIs - @@) nisen (_@S5 nIs@n + @@) nis (_S3 nIs + @@) nisen (_S5 nIs@n .group o @@ -499,7 +499,7 @@ @) ssi (o S _) standaard (@P9 st'Anda:rt - @) straat (_@S6 stra:t + @) straat (_S6 stra:t _vre) s (e s @@ -612,7 +612,7 @@ .group z z z - zele (_@S4 ze:l@ // common suffix for cities. + zele (_S4 ze:l@ // common suffix for cities. _) zuid (@P4 zWyt diff --git a/dictsource/ta_list b/dictsource/ta_list index cf71455e..784017b9 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -291,6 +291,10 @@ tamil தமிழ் $text பீச் $alt பைக்குல $alt ப்ராண்ட் $alt +பீச்சு $alt +பிகு $alt +பூத்துக்கு $alt +பீரின் $alt (பி . ஏ) bije: @@ -350,6 +354,7 @@ tamil தமிழ் $text களில் $alt தடிக்க $alt தின $alt +தில் $alt // initial ட @@ -421,6 +426,7 @@ tamil தமிழ் $text கன $alt களிலும் $alt கடம் $alt +காட் $alt diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 3397b337..3b235eb9 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -60,8 +60,12 @@ // H or g .L06 க ஹ +// aU or el. +.L07 ௌ ெள + + // words before "bottle" -.L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி பிளாஸ்டிக் ப்ளாஸ்டிக் +.L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி பிளாஸ்டிக் ப்ளாஸ்டிக் கண்ணாடி கிளாஸ் க்ளாஸ் மது // words after "booga" .L11 வாழ்க்கை பூமி விருந்த மனிதன @@ -138,6 +142,7 @@ _) க (லாட்டா gV _) க (லீர gV _) க (லீல gV + _) க (ளுக் gV _) க (வண gV _) க (வன gV _) க (வர்னர gV @@ -207,6 +212,7 @@ _) க (ுகன g _) க (ுகராஜ g _) க (ுகை g +_மன்மதக்) க (ுகை g _) க (ுஜராத g _) க (ுஜால g _) க (ுடியாத்த g @@ -223,8 +229,7 @@ _) க (ுணம g _) க (ுணவதி g _) க (ுணவான g - _) க (ுணாதிசய g - _) க (ுணாளன g + _) க (ுணா g _) க (ுண்டடி g _) க (ுண்டன g _) க (ுண்டம்மா g @@ -234,6 +239,7 @@ _) க (ுண்டாய g _) க (ுண்டு g _) க (ுண்டை g + _) க (ுண்டோதர g _) க (ுதிக் g _) க (ுதிச் g _) க (ுதித் g @@ -241,6 +247,7 @@ _) க (ுபீர g _) க (ுபுகுபு g _) க (ுபுக் g + _) க (ுபேர g _) குப் (த gup _) க (ுப்பென்ற g _) க (ுமாஸ்தா g @@ -249,6 +256,7 @@ _) க (ும்மிடிப்பூண் g _) க (ும்மிருட்ட g _) க (ும்மெ g + _) க (ுருகுல g _) க (ுருக்கள g _) க (ுருக்குல g _) க (ுருசாமி g @@ -600,7 +608,6 @@ _துப்பாக்கி) க்க (ுண்ட gg ச் (_N tS ச்_) ச tSV // previous word ends in ச் ச்_) ச (B tS - _) ச (ெண்ட tS _) சாம்ப (ியன tSa:mp //sort @@ -623,7 +630,9 @@ _துப்பாக்கி) க்க (ுண்ட gg ச (ந்திர tSV _ஹட்) ச (ன sV _வாட்) ச (ன sV - _) ச (ப்பாத்தி tSV + _) ச (ப்பா tSV + _) ச (ப்பி tSV + _) ச (ப்பு tSV _டின்) ச (ர tSV _) சரசு (வதி sVrVs _) சர்ச (ி tSVrtS @@ -696,8 +705,9 @@ _தணிகா) ச (ல tSV _) சிரு (ஷ்டி sri _) ச (ிற்றம்பல tS _) ச (ிலிய tS - _) ச (ில்L05 tS - _) ச (ில்லL05ை tS + _) ச (ில்ற tS + _) ச (ில்லறை tS + _) ச (ிள்ற tS _சு) ச (ீந்திர tS _) ச (ீன_ tS _) ச (ீனத்து tS @@ -728,9 +738,11 @@ _தணிகா) ச (ல tSV _) சு (வீட s _) செக் (_ tSek _) ச (ெக்கோL04 tS + _) ச (ெங்கிஸ tS _) செச (னியா tSetSV _) செச (ன்யா tSetSV _) செச் (னியா tSetS + _) ச (ெட்டிநாட tS _) ச (ெட்டிப்பாளைய tS _) ச (ெட்டியார tS ச (ெண்பக s. @@ -757,6 +769,7 @@ _தணிகா) ச (ல tSV _) ச (ேர்மேன tS _) ச (ேலஞ் tS _) ச (ேஷ்டை tS + _) ச (ைத்திய tS _) ச (ைனாவ tS _) ச (ைனீஸ tS _) ச (ௌதரி tS @@ -839,6 +852,8 @@ _ரிப்போர்) ட t.V# _) ட (ான்ஜானிய t. _) டாபிக் t.a:pik _) ட (ாமி t. + _) டாய்லட் t.a:jlVt. + _) டாய்லெட் t.a:jlet. அண்) டார்டிக t.a:rt.ikV# _) ட (ாலமி t. _) ட (ால்ஸ்டாய t. @@ -908,6 +923,8 @@ _நாவல்) ட (ி t. _) ட (ிவிக t. _) ட (ிவிய t. _) ட (ிவில t. + _காண்) ட (ீன t. + _கேண்) ட (ீன t. _) ட (ுனிசியா t. _) ட (ுனிஸ t. _) ட (ுனீL04 t. @@ -968,6 +985,7 @@ _லான்_) ட (ென்னிஸ t. _) ட்ராக் t.ra:k _காண்) ட் (ராக்டர t. _) ட் (ராஜ t. + _நியூ) ட் (ரான t. _) ட (்ரான்சிஸ்டர t. _) ட் (ரான்ஸ்ஃபர t. _) ட்ரான்ஸ்ப (ர t.ra:nsfV @@ -1053,6 +1071,7 @@ _நடுரோ) ட் (ல t. _) த (சரத dV _) த (சரதர dV _) த (சரா dV + _) த (சாப்த dV _) த (சை dV _) த (டதட dV _) த (டபுடல dV @@ -1118,7 +1137,7 @@ _நடுரோ) ட் (ல t. _) த (ருமம dV _) த (ருமர dV _) த (ருமி dV - _) த (ர்க dV + _) த (ர்கா dV _) தர்க்க (ா dVgg _) த (ர்பார dV _) த (ர்பூச dV @@ -1206,11 +1225,13 @@ _நடுரோ) ட் (ல t. _) த (ிரவ d _) த (ிரவிய d _) தி (ராட்சை d + _) தி (ராணி t _) தி (ராவிட d _) திரு (திரா dri _) திரு (ஷ்டி dri _) த (ிரௌபதி d _) தி (ரௌபதி t + _) த (ில்லாக d _) த (ில்லி d _) த (ில்லு_ d _) த (ில்லு_முல்லு t @@ -1320,6 +1341,7 @@ _நடுரோ) ட் (ல t. _) த (ொனி d _) த (ொபதொப d _) த (ொபுக் d + _) த (ொப்புன d _) த (ொப்பெ d _) த (ொம் d _) த (ோசை d @@ -1373,6 +1395,7 @@ _பிரசார்_பார) த (ி t _ஜோ) திக (ா tik _கார்) திக் tik சட்ட) த (ிட்ட t + எ) தியோப (ிய tijo:p _பிர) த (ீ t த (ுறை t வீண்) த (ேவை t @@ -1383,6 +1406,7 @@ _பிரசார்_பார) த (ி t _ஸ்ரார்) த்த ddV# _சிறை) த்த (ண்டனை ddV பு) த்த (ன ddV + _வர்) த்த (மான ddV பு) த்த (ர ddV _விரு) த்தாச (ல dda:tSV அ) த்த (ாசி dd @@ -1480,6 +1504,7 @@ _காமசூ) த் (ர t பி_._) ப(ி_._சி b // b.b.c _) ப (L06ுகுணா bV + _) ப (L07லர b _) ப (கதூர bV _) ப (கத்சிங் bV _) ப (கவதி bV @@ -1488,6 +1513,7 @@ _காமசூ) த் (ர t _) ப (காசுர bV _) ப (காசூரன bV _) ப (கிரங்க bV + _) பக (ிரண்ட bVg _) ப (கிஷ்க bV _) ப (கீர bV _) ப (குள bV @@ -1537,6 +1563,7 @@ _சொந்த_) ப (ந்த bV _) ப (யந் bV _) ப (யபக்தி bV _) ப (யப் bV + _) ப (யப்பத pV _) ப (யம bV _) ப (யாலஜி bV _) பயாஸ்கோப் bVja:sko:p @@ -1544,6 +1571,7 @@ _சொந்த_) ப (ந்த bV _) ப (ரதநாட்டிய bV _) ப (ரதன bV _) ப (ரதர bV + _) பரத்து (வாஜ bVrVt _) ப (ரத்வாஜ bV _) ப (ராக்_ஒபாமா bV _) பரூக் fVrU:k @@ -1595,10 +1623,12 @@ _சொந்த_) ப (ந்த bV _) ப (வானி bV _) பவுண்ட (ன faUn.t.V _) ப (வுத்தத்தில bV + _) ப (வுலர bV _) ப (வ்ய bV _) ப (ஸ bV _) ப (ஹதூர bV _) ப (ஹிரங்க bV + _) ப (ஹிரண்ட bV _) ப (ஹ்ரெய bV _) ப (ாகங்க b _) ப (ாகத b @@ -1621,6 +1651,7 @@ _சொந்த_) ப (ந்த bV _L10_) ப (ாட்டில b // bottle _) ப (ாட்டிலி b _) ப (ாட்டிலுக் b + _) ப (ாட்டிலுடன b _) ப (ாட்டிலை b _) ப (ாட்டில்கள b _) ப (ாணங் b @@ -1666,6 +1697,7 @@ _சொந்த_) ப (ந்த bV _) ப (ார்L04லோனா b _) ப (ார்கவி b _) ப (ார்டர b + _) பார்ப (டா ba:rbV _) ப (ார்ம f _) ப (ாலக b _) ப (ாலக் p @@ -1803,6 +1835,7 @@ _ராகத்தின்_) ப (ாவ b _) பி (ரவுச b _) பி (ரவேச p _) பி (ரவேசி p + _) பி (ரஷ் b _) பி (ரஷ்ட p _) பி (ரஸல்ஸ b _) பி (ரஸாத p @@ -1894,7 +1927,8 @@ _ராகத்தின்_) ப (ாவ b _) ப (ிஸ்கோத் b _) ப (ீகார b _) ப (ீச்சில b - _) ப (ீச்சு b + _) ப (ீச்சுக்க b + _) ப (ீச்சுல b _) பீச் (ல bi:tS _) ப (ீஜ b _) ப (ீஜிங b @@ -1942,6 +1976,7 @@ _பெனசீர்_) ப (ுட்டோ b _) புரொபொ (சர profV _) ப (ுரோக்கர b _) பு (ரோக்கர b + _) புரோட (ான pro:t. _) பு (ரௌச b _) ப (ுல்லட் b _) ப (ுல்லா_ f @@ -1963,6 +1998,12 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ூதாகார b _) ப (ூதான b _) ப (ூதேவி b + _) பூத் (_ bu:t + _) ப (ூத்தில b + _) ப (ூத்துக்கா b + _) ப (ூத்துக்கிட்ட b + _) ப (ூத்துக்குப் b + _) ப (ூத்தை b _) பூப (தி bu:pV _) ப (ூபாள b _) ப (ூமத்திய b @@ -1981,6 +2022,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெட்ரூம b _) ப (ெனசீர b _) ப (ெப்ரவரி f + _) ப (ெர்னாட்ஷா b _) ப (ெர்னான்ட f _) ப (ெர்னார்ட b _) ப (ெர்முடா b @@ -2048,6 +2090,7 @@ _சந்திர_) ப (ோஸ b _) ப்ரபொ (சர profV _) ப் (ரம்ம b _) ப் (ரவுச b + _) ப் (ரஷ் b _) ப் (ரஸல்ஸ b _) ப் (ரான்சிஸ்க f _) ப் (ரான்ஸ f @@ -2063,6 +2106,7 @@ _சந்திர_) ப (ோஸ b _) ப்ரொப (சர profV _) ப்ரொபொ (சர profV _) ப் (ரோக்கர b + _) ப்ரோட (ான pro:t _) ப் (ரௌச b _) ப் (ளவுஸ b _) ப் (ளோரிடா f @@ -2193,7 +2237,9 @@ _வெளிப்) ப (ாக b _கல்) ப (ாக்க p _பிக்) ப (ாக்க+ p உ) ப (ாசனை p + ஈடு) ப (ாட p _வழி) ப (ாட p + _வேறு) ப (ாட p சமன்) ப (ாட p முரன்) ப (ாட p _க) ப (ாடபுர+ b @@ -2209,7 +2255,6 @@ _வெளிப்) ப (ாக b அL06மதா) ப (ாத b ஒளரங்கா) ப (ாத b ஔரங்கா) ப (ாத b - ப (ாதை p ஜிந்தா) ப (ாத் b ச) பாபதி ba:pVti அ) பாயிண்ட்மெண்ட pa:jin.t.ment.V# @@ -2325,6 +2370,7 @@ L03ந்தப்) பி (ராய p _வீர) ப (ெருமாள p _கலிய) ப (ெருமாள p ப (ெற p // ?? end-of-word + suffix ?? + _) ப (ெளத்த b _க) ப (ே f _கை) ப (ேசி p _செல்) ப (ேசி p @@ -2402,6 +2448,7 @@ _மைக்ரோசா) ப் (ட f _ர) ப்ப (ர bbV ஆ) ப்ப (ரிக்க fV தென்னா) ப்ப (ரிக்க fV + உயிர்) ப்ப (லி bbV அடி) ப்ப (ாக bb இறுதி) ப்ப (ாக bb துர்) ப்ப (ாக்கிய bb @@ -2499,7 +2546,7 @@ _சந்தேக) ப்ப (ுத்தி bb .group ம ம mV ம (B m - + _சL07) மி (ய m .group ய ய jV @@ -2614,6 +2661,7 @@ _சந்தேக) ப்ப (ுத்தி bb இ (லட்சிய இ (லட்சுமி இ (லண்டன + இ (லத்தீன இ (லவங்க இ (லாப இ (லேச diff --git a/dictsource/tr_list b/dictsource/tr_list index 61602890..7c32cebf 100644 --- a/dictsource/tr_list +++ b/dictsource/tr_list @@ -73,15 +73,20 @@ _' apOstR'Of _^ IndZ'EltmEiSa*et'I & _!v'E _& v'EiSa*et'I -_* j'@ld@z _@ kUjRUkl'U'a _\ t'ERs||ej,IktSIzg'I +_( atSpa*ant'Ez +_) kapapa*ant'Ez +_’ tEkt@Rn'ak +_‘ tEkt@Rn'ak + ¶ pa*agR'af § tSEnJ'El ° de*edZ'E _# dij'Ez _~ jaklaS'@k __ ,alttSIzg'I +* j'@ld@z $max3 = ESIt $max3 % jYzdE $max3 + aRt@ $max3 diff --git a/phsource/compile_report b/phsource/compile_report index ec2708f6..50743529 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -21,10 +21,10 @@ consonants 10 116 fr-ca 11 140 hi 59 150 ta 22 153 - kn 16 150 + kn 17 150 hu 25 122 lv 29 125 - nl 33 127 + nl 34 128 pl 22 120 sk 28 135 cs 6 135 @@ -57,13 +57,13 @@ consonants 10 116 da 27 120 ka 19 112 rw 15 130 - ml 19 152 + ml 21 153 ne 18 157 pa 14 151 prs 8 111 sl 10 135 gd 6 107 - bg 11 121 + bg 14 123 nso 12 111 ht 11 140 az 10 127 @@ -100,6 +100,7 @@ d/d [d] base [d] base2 [d] fi [d] fr + [d] kn [d] hu [d] pl [d;] pl @@ -111,6 +112,7 @@ d/d_ [d] base [d] fi [d] fr [d.] hi + [d] kn [d] hu [d] pl [d;] pl @@ -124,6 +126,7 @@ d/dr [*] base [d] fr [d.] hi [dh.] hi + [d] kn [d] hu [d] pl [d;] pl @@ -142,9 +145,8 @@ d/xd [d] base [d] fi [d] fr [z] fr - [d.] hi [dh] hi - [dh.] hi + [d] kn [d] hu [d] pl [d] hr @@ -153,6 +155,8 @@ d/xd [d] base d/xd3 [dh] hi d/xd_pzd [d;] pl d/xdr [d] fr + [d.] hi + [dh.] hi d/xdz [dz] consonants d/x_tap [t#] en [*] pt @@ -224,12 +228,14 @@ g/g [g] base [g] fr [g] es [g] ru + [g;] bg g/g_ [g] base [g-] en [g] cy [g] fr [g] es [g] ru + [g;] bg g/gr [g] fr g/xg [g] base [g-] en @@ -237,6 +243,7 @@ g/xg [g] base [g] fr [g] es [g] ru + [g;] bg g/xgr [g] fr h/h_ [h] base [h] fi @@ -361,8 +368,8 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h–u] base - [l#] base +l/l@ [l#] base + [”¦] base [l] fr [l/2] fr [K] nso @@ -395,16 +402,16 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h–u] base - [l#] base +l/la [l#] base + [”¦] base [l] fr [l/2] fr [K] nso [K] tn l/l_a [l/3] base [l/] fr -l/le [h–u] base - [l#] base +l/le [l#] base + [”¦] base [l] fr [l/2] fr [K] nso @@ -415,8 +422,8 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h–u] base - [l#] base +l/li [l#] base + [”¦] base [l] fr [l/2] fr [l] zh @@ -429,8 +436,8 @@ ll/ll [L] bg ll/_ll [L] bg l/l_long [l] base [l] fr -l/lo [h–u] base - [l#] base +l/lo [l#] base + [”¦] base [l/2] fr [K] nso [K] tn @@ -439,8 +446,8 @@ l/l_o [l/3] base l^/l_rfx [l.] base [l] ru [l^] ru -l/lu [h–u] base - [l#] base +l/lu [l#] base + [”¦] base [l] fr [l/2] fr [K] nso @@ -764,6 +771,7 @@ ustop/k_asp [kh] consonants [gh] hi [kh] zh [kh] tn +ustop/k_asp2 [k#] ka ustop/ki [k] base [k] base2 [c] af @@ -782,6 +790,7 @@ ustop/kl [k] base [k] lv [k] el [k] zhy + [k#] ka [kh] tn ustop/kr [k] base [k] base2 @@ -866,6 +875,7 @@ ustop/t_dnt [t] base [t] pl [t] hr ustop/t_dnt2 [t] base2 + [d] kn ustop/t_hi [t[] base ustop/t_pzd [c] base [t;] pl @@ -1358,7 +1368,6 @@ vowel/8_2 [U] en-us vowel/8_3 [eo] zhy vowel/8_5 [8] ku vowel/8_6 [V] sq - [y] ml vowel/8_7 [@] lv vowel/a [a] base [a] en @@ -1985,6 +1994,7 @@ vowel/u#_3 [U] ta [U:] ta vowel/u#_4 [U] en-sc [u:] en-sc + [y] ml vowel/u_5 [u] sw [u] nso [u] az @@ -2330,6 +2340,7 @@ x/d_ [d] base [d] fi [d] fr [d.] hi + [d] kn [d] pl [d] hr [d] is @@ -2337,6 +2348,7 @@ x/d_ [d] base x/d_dnt [d[] base [d] base2 [d] fi + [d] kn [d] hu [d] pl x/d_pzd [d;] pl @@ -2355,9 +2367,11 @@ x/g_ [g] base [g] es [g] is [g] ru + [g;] bg x/g2 [g] base [g] cy [g] es [g] is + [g;] bg x/g2_ [g-] en x/g3 [g] ru diff --git a/phsource/mbrola/us b/phsource/mbrola/us index 2e2db319..896e3a7a 100644 --- a/phsource/mbrola/us +++ b/phsource/mbrola/us @@ -20,6 +20,7 @@ 0 * NULL 0 4 +0 t# NULL 0 4 0 3: NULL 0 r= 0 IR NULL 0 r= 0 VR NULL 0 r= @@ -42,7 +43,7 @@ 0 i@ NULL 50 I @ 0 i@3 NULL 60 i r -0 p NULL 0 p_h -0 t NULL 0 t_h -0 k NULL 0 k_h +4 p VWL 0 p_h +4 t VWL 0 t_h +4 k VWL 0 k_h 0 t2 NULL 0 t diff --git a/phsource/mbrola/us3 b/phsource/mbrola/us3 index 1f59b143..169d5106 100644 --- a/phsource/mbrola/us3 +++ b/phsource/mbrola/us3 @@ -20,6 +20,8 @@ 0 * NULL 0 4 +2 t# n 0 t +0 t# NULL 0 4 0 3: NULL 0 r= 0 IR NULL 0 r= 0 VR NULL 0 r= diff --git a/phsource/n/nr@ b/phsource/n/nr@ index bf8889812a6b7e361c7c190f8ca8edc37f9901ec..caade63e375f9746189e214adffba1702dd3fe40 100644 GIT binary patch literal 1655 zcmb`Hzi-n}5XZlEZO5r&J5FdD+7M9!YJfHtGo7%C(x7NX89 z{0A8rJ0P(ZDMFQCs00fG5`+H$h7OgGV1VzvB(;+{dAj%R-QBy`_wl{?TbE|<%-^mJ z0C>I<8hA=2`3ub-&DK6N*V>NQb`!}Hzkp1nt>Ql8M1V-Er?*kmA5a$oR?Vilti99T zP!|C<)AfN!i!?(6M1UO!Mz>|%?Tx`0bcxyF2@z&40UP>;9$PBqq~(kRsb8g|?5-tD z;|R(aMg|Tg0}omFaJkx?9nOQCTO)W+BC)b2Vs5QA}zE{V9sA ztR_zw+*`^gCtGCpTBuU{-82R(GwU8u^( zy!y-H5Z_`FQ{-_FLmUCCkVT$a7JE=2r834bg1sC=D6x)t#*ESz&?@l-u0B~77%@z* zMc)WdyYzYF6p)^);vK~}&7E-f)ar7U$Sn6hvwIvu*CUsJ`6Zu=B$dsm1tT;*{Qj!c z(CpY25>$YK1~<~S6CIM%>rPdxYH^4BG@DM56;5^t2BWSHDQ0>tq+)f)H2T^h6PUw8 zoMjh}5cf$`a1@78<9q^l@rw4V+*inBl-z3EzrZn4JWh@^YBM~)!nj3Tz$u)^6`W>t zSuxDDYcKV8`Q6)!hR-?=Dn8PC(h*MEXHye`f%+;6*hkG~q*#af|1*C-t$l8D_}EZN zVhYWUP41{p#{k=?ds4yp_PVAwgGgIWu<@<1bWcy-UhmUkuDkBvGOavue`LL|hhJl? z*~i;!5=(f5b9|SVtmz`V<2vg*hZ}f|xA;OvOSnu9RTOc6M4sU_E;44C%w|>O6D*KP zmHR1X*v|~3m|*{mtA5I}x;gekmURxuB2PZ8n^K5LpUB8@1QeeU(n}6KzUoEk)gt%8 I*5Yd7KOlO)EdT%j delta 552 zcmey)GoOniIKb68B-k}@B8LhK%klT~CK^cAzhPkDdB9k~00Ivf8#q5O$S{G}6|4tX zGZ>dJg4jnm8<-z3J^-`7a5J#L*lTzZ;tbLZOfc~ZIR=J3OnboQXedM2atyW%S`5kz zVhlVC+(693z{eoKz&}}zaclk6|D?L&0XGBOMQeBwHWPA%Dnkl`A%iKI~it(F`^WQ4Hch$67FGFlaMqG8j#EU^!m@fuVs9W{xM*0l^218DM+)*&O5| zm>_Ynfzv?^+9QMqNOV0tJXJKEr^Z?6?9>7H7G6w zmj$;XuB1yrkP1T)bmLwZ!XPdSy6DCS)c@RM%*3s3%;Da9?tjm@gnT(?;@H^eiHY%n z1c2$AQwA>6X?}e3LoL|*#+T(~AE(9vy74f)U~Sf6(#)~eHp-vSu-oz zQ|%#r8Nh3&ny71a&CmcDz)}iET$yY6GX_QI60^h%8N9g*nAhj^Na^ivR)!@=J-rR* z_u7SB*obblBaIYC8XhueMGIG(bBeReIWP;3Qj$uwIonjyNWg?>Nmw+Ut3k!$FzFdQ zw>WI2n#?e`PpUJ?4DOLwxkYX;)LQ=bvHVHBsc$Yk4qn+$gbpI@G~*le?!5SaS#)9? z!`On&*gzfytfaMb6lg`or9d`$?nGUIPO1g8(ei4RRlE#xH1UOG23gJ?%_UDEEL2n6 z30H>}e1BnUDc@0NLRyAIN|Z|`>G0fUWcmBT-8UhfSAIyxcpEsR)6k?I8g%48_wBmY zuSJzIl&HBCt)fMh^4_d^CA|`>l$u+QRZ5A!Yh0OYsU_oz-{CXoUscL_?87On!9nas z2X@lyC#ODaWd&WwBko49i6^VbB##pPG2FluhA@aSqsq*iL zIHAvYslIGP=t1InZk9YELO+d>j*>pBN4;#(Ih2oo{rU8>Y_l?K_jy;mW`*xi>{1;t z>Rf-*%X)AKhp`=_IF4;NkK35R1ynJMC%DLea1VBnQZLrB-xc}I$1sh1@Tngqk4ao* z{596#eo{L_&Z`;QLq?sr_?OJxAab_A7LRil%z?0WoRDrq|#*9 M&J5uxT~_+$FZ_nVf&c&j delta 534 zcmZqWUCYH09N_9466_i{kwcYv3j@PM1IhX~3=BLE7%Lb+-~nR;=LZHECJ?)V^#E%I z;}S*?`v_+P^8>~QVD=Yo1{N554KG5RL7IUHCSD=Oz_5pD57-EH;udOjE$Y_lDC)7-rBOo>hVnwl#+)Um71w+(B9n k9zEDBQ)BR9@MSP%aApW%Fky&cC}*f(h-GM){EBrp04)k{M*si- diff --git a/phsource/n/nre b/phsource/n/nre index 4e0b436250b064940e18867b88865ab6dc70deed..e43df7e71035c2e7b0e1cde219fe945636093bf5 100644 GIT binary patch literal 1673 zcmb`HJ4_T&6o&tK?(FQ$E-MI;9g!7OKztE=668jM_`*OiMu;YwNJ3#O)Plxj?QM;X zg@ug?g@v8OOkrVVVq#-rF$E z#emPnhLsqJVH*ISWOKhj^R(*l zgw3_9_vB=HkL1cNa)Yhsu|L08_UboP&c`?DD=TX=K&H(xKcn|vvsi0l5qpaylCe;3 z%sNMA#$vUowpIRrEYvn$Ni8OconjH;I!4e>8hc2f%wHu;%BXVe;#@%oS~-_kAz$xR zsJH30r>iHG^ttP3t)#Q0>M0Q+;V>2!Qe$Bw)I^u6Tb#utC*_th6eT6;a^Io39HLkl z`}_6#ibkWHxS<0m`$HO#(Ux|bO2(+$i2cM^FtUD8X2Tye26K$wxpA1Vwi%-~UzJ43 z_e+EKpB)u(r$*mNnxmM+ zF`OmUUhL=S$6+X*Kf^e}A)Ms8!h5Q`!=bm>bv_m8w1AQLGKchruY1MUYU)Fs6Yz}m zYK3=5=gPmNN^8N``nMVqrebOnj^658EdQKGi7Wy!BH%aG6 Tw@9y~`;sGUs=Ol|A>$AmNyfP( delta 544 zcmaixF-yZh7>3`ANleqEQ7kQ*5L+suQdGo26y-#UA|fqybad!X=pxDLC>dQ{lny$% zbhyFI!9U<|KcGl|f?pD@B8VQ`@$hl?y$|2rxX-rLZMTjtx~FlKazvPu!$0$TENXn?ryz>|vEG=HXGkp1G8g zN9{eTF=0#A%X78ZZn9>^52kQc&$7*niUTL6`+3&D<}uRod~J%V>Q4?8#g}e8r+9OgTZ;diL!IVuf-SUhg=HLL1KZfa Jdh%)9eF65=Yf1nB diff --git a/phsource/n/nri b/phsource/n/nri index 196f2433764041f80fbe02559a53d576a06dc5c7..e2188db156e2c2ddd866ca210a5606cdf4b1e9ee 100644 GIT binary patch literal 1637 zcmcJPJxmi}7{~v2-1Yi#*H0*gHYI{h8>y%yCdQ`r#Hf=7EGimeLi`A#VQ@m?&_San z4h|*`E+#TE86yir2L=b+OpIII9T=E!@&CMSy(_EIH}A*&pXZ(&&yW9GpFV$Xwmvi2 z2VnWpeFJxR@c&%%N3;Fx8athUr(K5sjbDJ>(pGSTc`|{P)(Gt&r{CmRCa_{Q%|&fZ zd&RR%U@O$94+|ls1e6-&8l+;Q4<YCf{+n?;}9*eG4XTC@8pjfPK95jmp z|B4ehNgjtWz>#1V;z;onM?W&8G=@VM#1O{-^6X=ZIm3)4s7ii@dyFhI%t$jDU~G_Y zJB&riDM5OU%8w|7V~&vu%JkYgo?7gvbUKYBdmfaO(+7c`K6@} zzQxmKsd`Md;YM59C*Q60T3bx6^)Oio=8|)I&c~!b{5jp*?|Emx@;vsDl|4$;U?aPv z?z-+BwYu>yw^kXqc&k3aDfV@U|C>dOkV=~F7@k`cKN<%Y7T#;AyAqYWP~D^ pAh9IEwM`6WY78%e-Oj%Ws260jEk}cN7Bu#%wquK#$$ME>008yta%2Di diff --git a/phsource/n/nro b/phsource/n/nro index e0629a02686b9bda6a2c8fc1d9f55965e69d5ec9..9b503c3affb62c89f78972c8c0a8fbcddc408861 100644 GIT binary patch literal 1593 zcmdT^O=}ZT6g~5m&Loq`Bu#5$WALNUR9e)6AhejFHC5{embO~mD%h136$vgRf=hpZ zD{)a!q*4%Z)rAXDSMFUXvvF4>i>|6r&wWWclWcY4T;9C<&izQ{9PXRHRGnU!pBpy- z+`6-3;s%}g6Ih>G$H08s_I9yF#49!dH`Hpl$~;*>sMVbYiuyJBvVfZP-dfgHwI}pt z0Uw;Y5o)1kYJe zh{)T7#=Ti*Doi>`C+TU@mpt)I)wQzy(*CUecVK<1H$NaSo;Mvt*m>qhTK>PvoWK$ZWpJatBF;PgAu$e2rmqcazXX2}3J+OYX=nu?S54XFpS)L;uexsfawPmeiLc9i6 zwP-?emgE%mjtOzXjtMEcK^L-?4icR?^#asfMf31C6Eck&zvDh#>Rx!sZI?DJcj^PYXlQ@Y9jG&LKI@C>6%P3_sWHhZT)zT`%eGdv8?!DN@ zu7k|?$#$02y-MZ0@&wJI^6SgR*Dbyqp>krcz-nVNMB5sy@3`6nzgvTM{iEbJ(%_BJ z7+BKdx74QdkyY_q%66aj#*y`%?`faP#dGR~d+H|pHyRwrZJfn3T*gg2#tY2g0;b6I z2-z=SfXtPs%xSFPI+l2&-K9RmIEPtQOp)0GWUxeDbBb-3yf)3F20k&-#iRM`*2jtR RIa7JHduq=!Ci9kJhd=8$ysH2J delta 500 zcmdnV^N^DxIKb68B-k}@B8OxB8wLiR2aFXAAn<^(f%5}{3=@c5!Fqr-gK-HXh<${! zf%yUB12FpwHvW286;u zD99i%ayRZ;)hw2MRV1J2O-;q%f2Ly{yZi0Q9;BgAIcVL*rxzmbF>y|MM_b2_RgtO-u(G xyqlOmNJKC}T=a(X7*Gu)*g1G+2t(NG|KH;k0J;<+-XK{5j}C0En7o#?2LMnVZPNe% diff --git a/phsource/n/nru b/phsource/n/nru index 41dee8987b0f8705400eb1daed9a459bee53b614..890c49239ebb898012ea6e9ab76382f2e24e48b4 100644 GIT binary patch literal 1667 zcmcJP&ubGw6vw~2*-dsg$!-#3t4*ze)>`Y2)>fs`N~Zn-wQ8kOsv=aeS`jJ;LP3P0 zS1*buDTru6LFhs8R4|90J^2Uh!K0KOda8%|eUqfwdJ+7w!<%{geQ#!$`OKS<;SZI|sy zxDi{t1*I~UC%ixkob;M4c%<@p}aQgD%A?@)6Phs|bkbdjVk&4H)=7$X*A9>+MF z$(Y4FhwllFqKYq`M^9F8*i5a+x)PVKCG>n3rPY^nL;7!(y*OU^Z54Z4{r|c)%J0+& z&aeF$kJ;bym|y$fJPNpmK^(wAQrU(^Y@roMB1_uCbK^?8b#09AH8y}_l-#ttjVRe8vlT#%r~roLN_CrCuw| zsWNLWT0LZw*r*i$X{~f(3=`aMc z#toWwMyr)`QTp-a!)TSoXQiD;r|g=xk$mQQ9i(s`=W8< z-ak(@Y>g_)IqK)Qa-EoRiiJ=52CUy)e{+|0<1VY`44!ds1Mc{4Qt0Nsx6$v%DLlqg z43R+>q?W_vq>Yv jI`XJWm8GhTq|$_7o-N6Y45J0sveaY1+DWj_YHmLP__)Dx delta 552 zcmZqXUCqT29N_9466_i{k;Ae64Fdzu1I7vl5O~1Y!1;keh6%*3U_HQ^!MKDG#6H5= z!2E#m0hs-Tn}G$wcH~&Yix6j!W?+J;sgPq}*u%63Y>tL9gl){=!l2Kf22>`*AjrVO zz{|kTz{emoS&nf&^OC#zlMgV8*RTIijBDm#b zmY%$Z>0~_z;{nbGj30o$cHnrx=)kSRm;v;+1IJ3X1}=#I96081IzZVB3^F_ifZ+!T z8=wo=VQd8g;i1J4!H~*e%#g&O1q=r@26+Y<24x2M$zCj{>z^=K2tEMY3yPC>A{k&d zGea%gI}w=qKAf|}VeBb9Vv-QH1BVlz5Ku43Jq{cS(%azihAmDE81jMP;LR|J!3-E1 SdJNhODhvh;>XTow&IACi5p|;g diff --git a/phsource/ph_dutch b/phsource/ph_dutch index 48c3d408..b10449e2 100644 --- a/phsource/ph_dutch +++ b/phsource/ph_dutch @@ -113,10 +113,16 @@ endphoneme phoneme e: vowel starttype #e endtype #i length 190 - ChangeIfUnstressed(@) FMT(vdiph/ei) endphoneme +phoneme e# // as [e:] but change to [@] in unstressed syllables + vowel starttype #e endtype #i + length 190 + ChangeIfUnstressed(@) + ChangePhoneme(e:) +endphoneme + phoneme Y: vowel starttype #@ endtype #@ length 220 diff --git a/phsource/ph_french b/phsource/ph_french index 7ed038f5..01fddde3 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -1,7 +1,7 @@ //==================================================== // French //==================================================== -// Updated 2011-03-04 Michel Such +// Updated 2011-04-15 Michel Such phoneme #l virtual // Used for l and l/ @@ -336,7 +336,7 @@ phoneme i ELIF nextPhW(isVowel) THEN ChangePhoneme(j) ELSE - length 160 + length 150 IfNextVowelAppend(;) ENDIF diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 58bd6431..9833910b 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -373,7 +373,7 @@ phoneme d. Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 IF PreVoicing THEN - FMT(d/xd) + FMT(d/xdr) ENDIF IF nextPh(isPause2) THEN @@ -393,7 +393,7 @@ phoneme dh. Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 IF PreVoicing THEN - FMT(d/xd) + FMT(d/xdr) ENDIF FMT(d/dr) addWav(ustop/t) diff --git a/phsource/phonemes b/phsource/phonemes index 6cb63ac2..509506fc 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -968,10 +968,10 @@ phoneme d[ IF nextPh(isPause2) THEN FMT(d/d_) addWav(x/d_) ELIF nextPh(r) THEN - FMT(d/dr) addWav(x/d_dnt, 110) + FMT(d/dr) addWav(x/d_dnt, 100) ENDIF - FMT(d/d) addWav(x/d_dnt, 110) + FMT(d/d) addWav(x/d_dnt, 100) endphoneme diff --git a/src/compiledict.cpp b/src/compiledict.cpp index f05df3f8..cecd618e 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -524,7 +524,7 @@ step=1; // TEST { multiple_numeric_hyphen = 1; } - else +// else // ??? { flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED; } @@ -739,7 +739,7 @@ step=1; // TEST ix = multiple_string_end - multiple_string; if(multiple_numeric_hyphen) { - dict_line[length++] = ' '; + dict_line[length++] = ' '; // ??? } memcpy(&dict_line[length],multiple_string,ix); length += ix; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 40375af4..43487b5b 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -1185,8 +1185,8 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, switch(tr->langopts.stress_rule) { case 8: - // stress on first syllable, unless it is a light syllable - if(syllable_weight[1] > 0) + // stress on first syllable, unless it is a light syllable followed by a heavy syllable + if((syllable_weight[1] > 0) || (syllable_weight[2] == 0)) break; // else drop through to case 1 case 1: @@ -3250,7 +3250,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f } } - for(length=0; length=0; j--) @@ -190,7 +191,12 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { // LANG=Russian, [v] amd [v;] don't cause regression, or [R^] if((ph->mnemonic == 'v') || (ph->mnemonic == ((';'<<8)+'v')) || ((ph->mnemonic & 0xff)== 'R')) - type = phLIQUID; + { + if(word_end_devoice == 1) + voicing = 0; + else + type = phLIQUID; + } } if((type==phSTOP) || type==(phFRICATIVE)) @@ -231,6 +237,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) voicing = 0; } } + + word_end_devoice = 0; if(plist2[j].sourceix) { if(regression & 0x04) @@ -242,7 +250,10 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { // devoice word-final consonants, unless propagating voiced if(voicing == 0) + { voicing = 1; + word_end_devoice = 1; + } } } } diff --git a/src/readclause.cpp b/src/readclause.cpp index 18bc8ec2..f1dd0533 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -364,10 +364,10 @@ int towlower2(unsigned int c) { c = 0x131; // I -> ı } - } -#ifdef __WIN32__ - if(c == 0x130) // uppercase i-dot - return('i'); + } +#ifdef __WIN32__ + if(c == 0x130) // uppercase i-dot + return('i'); #endif return(towlower(c)); } @@ -901,14 +901,21 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output else if(punct_count < 4) { - sprintf(buf,"\001+10S"); + buf[0] = 0; + if(embedded_value[EMBED_S] < 300) + sprintf(buf,"\001+10S"); // Speak punctuation name faster, unless we are already speaking fast. It would upset Sonic SpeedUp + while(punct_count-- > 0) { sprintf(buf2," %s",punctname); strcat(buf, buf2); } - sprintf(buf2," \001-10S"); - strcat(buf, buf2); + + if(embedded_value[EMBED_S] < 300) + { + sprintf(buf2," \001-10S"); + strcat(buf, buf2); + } } else { @@ -2000,6 +2007,15 @@ terminator=0; // ?? Sentence intonation, but no pause ?? } // end of ProcessSsmlTag +static void RemoveChar(char *p) +{//======================= +// Replace a UTF-8 character by spaces + int c; + + memset(p, ' ', utf8_in(&c, p)); +} // end of RemoveChar + + static MNEM_TAB xml_char_mnemonics[] = { {"gt",'>'}, {"lt", 0xe000 + '<'}, // private usage area, to avoid confusion with XML tag @@ -2354,6 +2370,15 @@ f_input = f_in; // for GetC etc } } } + + if(c1 == 0xd4d) + { + // Malayalam virama, check if next character is Zero-width-joiner + if(c2 == 0x200d) + { + c1 = 0xd4e; // use this unofficial code for chillu-virama + } + } } if(iswupper(c1)) @@ -2408,8 +2433,9 @@ f_input = f_in; // for GetC etc UngetC(c2); if(end_clause_after_tag) - ix = end_clause_index; // delete clause-end punctiation - + { + RemoveChar(&buf[end_clause_index]); // delete clause-end punctiation + } buf[ix] = ' '; buf[ix+1] = 0; if(parag > 3) @@ -2485,7 +2511,7 @@ if(option_ssml) parag=1; continue; } - if((iswspace(c2) || (punct_data & 0x8000) || IsBracket(c2) || (c2=='?') || Eof())) // don't check for '-' because if prevent recognizing ':-)' + if((iswspace(c2) || (punct_data & 0x8000) || IsBracket(c2) || (c2=='?') || Eof() || (c2 == ctrl_embedded))) // don't check for '-' because it prevents recognizing ':-)' // if((iswspace(c2) || (punct_data & 0x8000) || IsBracket(c2) || (c2=='?') || (c2=='-') || Eof())) { // note: (c2='?') is for when a smart-quote has been replaced by '?' @@ -2682,7 +2708,7 @@ if(option_ssml) parag=1; } if(end_clause_after_tag) { - ix = end_clause_index; // delete clause-end punctuation + RemoveChar(&buf[end_clause_index]); // delete clause-end punctiation } buf[ix] = ' '; buf[ix+1] = 0; @@ -2707,6 +2733,7 @@ void InitText2(void) int param; ungot_char = 0; + ungot_char2 = 0; n_ssml_stack =1; n_param_stack = 1; diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 60d69795..519688cb 100644 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -141,6 +141,7 @@ void SetSpeed(int control) int s1; int wpm; int wpm2; + int wpm_value; double sonic; speed.loud_consonants = 0; @@ -153,6 +154,8 @@ void SetSpeed(int control) if(control == 2) wpm = embedded_value[EMBED_S2]; + wpm_value = wpm; + if(voice->speed_percent > 0) { wpm = (wpm * voice->speed_percent)/100; @@ -162,7 +165,7 @@ void SetSpeed(int control) { DoSonicSpeed(1 * 1024); } - if((wpm > 450) || ((wpm > speed.fast_settings[0]) && (wpm > 350))) + if((wpm_value > 450) || ((wpm_value > speed.fast_settings[0]) && (wpm > 350))) { wpm2 = wpm; wpm = 175; diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index a8459a36..f3d74ae5 100644 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -151,7 +151,10 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int #endif #ifdef PLATFORM_WINDOWS if(load_MBR() == FALSE) // load mbrola.dll - return(EE_INTERNAL_ERROR); + { + fprintf(stderr, "Can't load mbrola.dll\n"); + return(EE_INTERNAL_ERROR); + } #endif if(init_MBR(path) != 0) // initialise the required mbrola voice diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 488271d8..4ad64b36 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.45.12 01.Apr.11"; +const char *version_string = "1.45.04 25.Apr.11"; const int version_phdata = 0x014500; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 8c55cee3..b1e1f408 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -385,6 +385,7 @@ Translator *SelectTranslator(const char *name) case L('a','r'): // Arabic tr->letter_bits_offset = OFFSET_ARABIC; + tr->langopts.numbers = NUM_SWAP_TENS | NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_AND_HUNDRED | NUM_THOUSAND_AND | NUM_OMIT_1_THOUSAND; tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words break; @@ -393,7 +394,7 @@ Translator *SelectTranslator(const char *name) SetCyrillicLetters(tr); SetLetterVowel(tr,0x2a); tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word - tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word + tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x17; // devoice at end of word, and change voicing to match a following consonant (except v) tr->langopts.param[LOPT_REDUCE] = 2; tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS ; @@ -470,7 +471,8 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; - tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; + tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; +// tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; SetLetterVowel(tr,'y'); tr->langopts.param[LOPT_UNPRONOUNCABLE] = 2; // use de_rules for unpronouncable rules } @@ -1218,6 +1220,7 @@ SetLengthMods(tr,3); // all equal } tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words SetIndicLetters(tr); // call this after setting OFFSET_ + SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial) } break; diff --git a/src/translate.cpp b/src/translate.cpp index f6fbdcac..f57cfbbe 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -122,7 +122,7 @@ static const unsigned short brackets[] = { static const unsigned short breaks[] = {'_', 0}; // treat these characters as spaces, in addition to iswspace() -static const wchar_t chars_space[] = {0x2500,0}; // box drawing horiz +// static const wchar_t chars_space[] = {0x2500,0x2501,0}; // box drawing horiz // Translate character codes 0xA0 to 0xFF into their unicode values @@ -432,8 +432,10 @@ int IsSpace(unsigned int c) {//======================== if(c == 0) return(0); - if(wcschr(chars_space,c)) - return(1); + if((c >= 0x2500) && (c < 0x25a0)) + return(1); // box drawing characters +// if(wcschr(chars_space,c)) +// return(1); return(iswspace(c)); } @@ -867,6 +869,8 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt } word_copy_length = wordx - word_start; + if(word_copy_length >= N_WORD_BYTES) + word_copy_length = N_WORD_BYTES-1; memcpy(word_copy2, word_start, word_copy_length); spell_word = 0; @@ -3017,7 +3021,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } else { - ix += utf8_out(c,&sbuf[ix]); // sbuf[ix++] = c; + if((ix < (N_TR_SOURCE - 4))) + ix += utf8_out(c,&sbuf[ix]); // sbuf[ix++] = c; } if(pre_pause_add > pre_pause) pre_pause = pre_pause_add; diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 8ac20dee..56948585 100644 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -1540,14 +1540,32 @@ static int SetWithRange0(int value, int max) } +static void SetPitchFormants() +{//=========================== + int ix; + int factor; + int pitch_value; + + // adjust formants to give better results for a different voice pitch + if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE) + pitch_value = MAX_PITCH_VALUE; + + factor = 256 + (25 * (pitch_value - 50))/50; + for(ix=0; ix<=5; ix++) + { + wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; + } + factor = embedded_value[EMBED_T]*3; + wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256; + wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256; +} + + void SetEmbedded(int control, int value) {//===================================== // there was an embedded command in the text at this point int sign=0; int command; - int ix; - int factor; - int pitch_value; command = control & 0x1f; if((control & 0x60) == 0x60) @@ -1570,18 +1588,7 @@ void SetEmbedded(int control, int value) case EMBED_T: WavegenSetEcho(); // and drop through to case P case EMBED_P: - // adjust formants to give better results for a different voice pitch - if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE) - pitch_value = MAX_PITCH_VALUE; - - factor = 256 + (25 * (pitch_value - 50))/50; - for(ix=0; ix<=5; ix++) - { - wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; - } - factor = embedded_value[EMBED_T]*3; - wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256; - wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256; + SetPitchFormants(); break; case EMBED_A: // amplitude @@ -1618,6 +1625,7 @@ void WavegenSetVoice(voice_t *v) option_harmonic1 = 6; } WavegenSetEcho(); + SetPitchFormants(); MarkerEvent(espeakEVENT_SAMPLERATE,0,wvoice->samplerate,out_ptr); // WVoiceChanged(wvoice); }