diff --git a/dictsource/en_list b/dictsource/en_list index 208b18bc..a521e25b 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -620,6 +620,7 @@ ablaut ablaUt aborigine ab@r'IdZ@ni abracadabra abr@k@d'abr@ absence abs@ns +absent $1 absent abs'Ent $verb absentia abs'Ent2i:@ absinthe absInT @@ -902,6 +903,7 @@ bias baI@s biased baI@st bible baIb@L bidet bi:deI +bigot bIg@t // -ed bijou bi:Zu: bikini bIk'i:ni binman bInman @@ -1606,6 +1608,7 @@ gourmet gU@meI graduate gradju:@t graduate gradju:eIt $verb graffiti $alt3 +grandson gr'andsVn gredient gri:di@nt // ingredient grenade gr@neId griffon grIf@n diff --git a/dictsource/en_rules b/dictsource/en_rules index 37889166..5a6576c4 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -4082,6 +4082,7 @@ m) otor oUt3 n) o (tor oU otro (py '0tr@ + &) o (try @ c) otyle 0tIl'i: m) o (x @ o (x++ 0 @@ -4192,7 +4193,6 @@ ?3 ag) on (_ 0n rg) on (_ @n &s) on (_ @n - ds) on (_ Vn &t) on (_ @n &tr) on (_ 0n fl) on (_ 0n @@ -4209,7 +4209,9 @@ pers) on @n pers) on (i '0n postp) on 'oUn + _sp) on 0n on (ald 0n + &) on (age_ @n d) on (at %oUn on (an_ oUn _) on (io Vn @@ -4585,7 +4587,7 @@ ?3 h) ov (er Vv l) ov Vv l) ov (e Vv - _l) ove Vv + _l) ove (@ Vv cl) ov (e oUv _sl) ov (enA oUv pl) ov oUv diff --git a/dictsource/nl_rules b/dictsource/nl_rules index c15ddde1..f5b726e5 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -244,6 +244,7 @@ @) ent (st_ 'Ent @) ent (ste_ 'Ent ag) ent 'Ent + X) es (_ Es @j) es (_S1 s @z) es (_S1 s @) es (_S2qd 'Es // double the previous vowel @@ -323,6 +324,7 @@ _) ge (@P2 Q@ ge (bied Q@ _) gee Qe: + _) gei QEI gener (aal Q,e:n@r _) gelijk Q@lEIk _) ge (rC QE @@ -630,6 +632,7 @@ _) inn (@P2 'I // ?? inneren @) s (_S1 s @) s (_$w_alt =s + _) samen(@P5 s'a:m@n sc (oop sk sc (opi sk &) sel (_ =s@l diff --git a/dictsource/pt_list b/dictsource/pt_list index 36e7edf6..f7005d56 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -757,12 +757,10 @@ der $alt derdes $alt desapego $alt2 $noun descabelo $alt -desce $alt -descem $alt descordo $alt desespero $alt2 $noun desfecho $alt2 -desprezo $alt $verb +desprezo $alt2 $noun deveras $alt dez $alt diarreia $alt @@ -781,10 +779,17 @@ encosto $alt $verb endereço $alt2 endereço $alt $verb enforco $alt +enforque $alt +enforquem $alt engordo $alt -enumerem $alt +ensopa $alt +ensopam $alt +ensope $alt +ensopem $alt +ensopo $alt enredo $alt $verb enterro $alt2 $noun +enumerem $alt envelope $alt envolto $alt2 enxerto $alt2 $noun @@ -818,8 +823,6 @@ estorvo $alt $verb etiqueta $alt2 europa $alt exagero $alt $verb -expeça $alt2 -expeço $alt2 explore $alt faceta $alt2 farelo $alt @@ -833,14 +836,15 @@ fezes $alt fizerdes $alt fizermos $alt foda $alt2 $verb +folheto $alt2 folga $alt fogos $alt foguete $alt2 foice $alt2 forca $alt2 força $alt2 $noun -forço $alt forças $alt2 +forço $alt fordes $alt2 fores $alt2 forro $alt $verb @@ -882,10 +886,9 @@ joguem $alt joguete $alt2 lambreta $alt2 lebre $alt -lerda $alt -lerdo $alt líderes $alt2 lopes $alt +maior $alt maleta $alt2 mantiverdes $alt mantiveres $alt @@ -894,6 +897,8 @@ marcelo $alt marmelo $alt marreta $alt2 martelo $alt +melhor $alt +menor $alt merda $alt megera $alt melo $alt @@ -917,8 +922,7 @@ morda $alt2 moreia $alt mortos $alt motora $alt2 -?2 mulher mulj'Er -?4 mulher mul^'Er +mulher $alt mui mwi muito mw'iNtU // -s is included as a suffix muita mw'iNt& @@ -931,8 +935,6 @@ naquele $alt2 $nounf nervo $alt2 novos $alt obstetra $alt -obsoleta $alt2 -obsoleto $alt2 obtivera $alt obtivermos $alt odisseia $alt @@ -948,6 +950,7 @@ pachorra $alt2 paexa paeSa palacete $alt2 palheta $alt2 +panfleto $alt2 pangeia $alt pantera $alt paralelo $alt @@ -956,15 +959,12 @@ pastora $alt2 pedra $alt pelego $alt2 pelo $alt $verb -perde $alt -perdem $alt -pesa $alt -pesam $alt pesque $alt pesquem $alt peso $alt $verb piloto $alt2 $noun pintora $alt2 +pior $alt pirueta $alt2 plateia $alt plebeia $alt @@ -976,8 +976,7 @@ portos $alt pose $alt2 povos $alt poxa p'oS& -preta $alt2 -preto $alt2 +preço $alt2 primavera $alt provo $alt puder $alt @@ -985,6 +984,7 @@ puderdes $alt pudermos $alt puserdes $alt quarteto $alt2 +queda $alt quinteto $alt2 quiserdes $alt quisermos $alt @@ -1018,8 +1018,6 @@ rosno $alt rumores $alt2 saleta $alt2 sarjeta $alt -severa $alt -severo $alt seborreia $alt seca $alt2 $noun secas $alt2 @@ -1030,11 +1028,9 @@ selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 senhores $alt2 -sincera $alt -sincero $alt sinopse $alt sobe $alt -sobem $alt +sobem $alt soco $alt2 soco $alt $verb sofrem $alt @@ -1042,7 +1038,7 @@ sofre $alt sofreste $alt2 sogra $alt sopre $alt -soprem $alt +soprem $alt sopro $alt $verb soro $alt2 sorvete $alt2 @@ -1052,8 +1048,6 @@ soubermos $alt suborno $alt $verb sufoco $alt2 $noun sufocos $alt2 -sugere $alt -sugerem $alt suporto $alt suor swOr tapete $alt2 @@ -1098,8 +1092,6 @@ zero $alt zorra $alt2 - - // foreign words ?1 alt 'alt ?2 agosto &g'ostU @@ -1144,7 +1136,6 @@ zorra $alt2 ?1 install ,inst'al ?2 internet iNtern'Et ?2 Intranet iNtRan'Et -?2 inveja iNv'EZ& ?1 kernel k'Ern,El ?2 kernel k'Ern@l ?1 line l'ain @@ -1153,16 +1144,6 @@ zorra $alt2 ?1 lock l'Ok mail m'eIl mails m'eIls -?1 maior m,&j'Or- -?2 maior maI'Or -?2 maiores maI'O*is -?1 menor myn'Or- -?2 menor men'Or -?2 menores men'O*is -?2 melhor melj'Or -?2 melhores melj'O*is -?4 melhor mel^'Or -?4 melhores mel^'O*is ?2 mouse m'aUzi ?1 menu menu ?1 next n'Ekst @@ -1173,11 +1154,7 @@ zorra $alt2 ?1 ovo 'ovu ?1 pause p'au:z page p'eIdZ -?2 pior pi'Or -?2 piores pi'O*is -preço $alt2 python p'aIT&~N -queda $alt ?1 readme r'i:dmi: ?1 sapi s,ap'i ?1 scanner sk'En&r diff --git a/dictsource/pt_rules b/dictsource/pt_rules index e1a5a932..ec031928 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -304,7 +304,7 @@ ?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas. ?1 e (la_ 'E // eg: cadela, janela, vela, etc... ?1 C) e (cC ,E // eg: seleccionar, efectuar, etc... -?1 C) ecç 'Es // eg: selecção, etc... +?1 C) ecç 'Es // eg: selecção, etc... ?1 C) e (ã i // leão, panteão, etc. ?1 C) e (a i // oceano, etc. ?1 C) e (o 'i // eg: geologia, etc... @@ -345,69 +345,69 @@ sf) e (ra_ E // esfera, biosfera //sort - _com) e (L05_ e fiz) e (L05_ E + tiv) e (L05_ E // es- + _com) e (L05_ e _coub) e (L05_ E _exag) e (L05_ E _houv) e (L05_ E _perd) e (L05_ e _soub) e (L05_ E - tiv) e (L05_ E // es- + _rend) e (L06_ e + _vend) e (L06_ e _atend) e (L06_ e _compreend) e (L06_ e _entend) e (L06_ e _estend) e (L06_ e - _rend) e (L06_ e - _vend) e (L06_ e respond) e (L06_ e // cor- + bat) e (L07_ e // re- com- + ced) e (L07_ e // pro- con- su- + met) e (L07_ e // co- pro- arre- re- intro- compro- sub- + viv) e (L07_ e // re- + _beb) e (L07_ e + _com) e (L07_ e + _tem) e (L07_ e + colh) e (L07_ e // & es- + corr) e (L07_ e // per- con- in- so- dis- + torc) e (L07_ e // con- + venc) e (L07_ e // con- + vert) e (L07_ e // in- re- con- + _eleg) e (L07_ e + _ergu) e (L07_ e + _mord) e (L07_ e + _morr) e (L07_ e + _perd) e (L07_ e + _sofr) e (L07_ e + merec) e (L07_ e // des- + padec) e (L07_ e // com- + parec) e (L07_ e // a- rea- com- desa- _aborrec) e (L07_ e -_rejuvenec) e (L07_ e _adoec) e (L07_ e +_adormec) e (L07_ e _amanhec) e (L07_ e _anoitec) e (L07_ e _arrepend) e (L07_ e - _beb) e (L07_ e - _com) e (L07_ e _defend) e (L07_ e _depend) e (L07_ e - _eleg) e (L07_ e _enlouquec) e (L07_ e _entristec) e (L07_ e _envaidec) e (L07_ e _envelhec) e (L07_ e - _ergu) e (L07_ e _esclarec) e (L07_ e _escond) e (L07_ e _escurec) e (L07_ e _esquec) e (L07_ e _interromp) e (L07_ e - _mord) e (L07_ e - _morr) e (L07_ e _obedec) e (L07_ e - _perd) e (L07_ e - _sofr) e (L07_ e - _tem) e (L07_ e +_perec) e (L07_ e +_rejuvenec) e (L07_ e aprend) e (L07_ e // re- - bat) e (L07_ e // re- com- - ced) e (L07_ e // pro- con- su- - colh) e (L07_ e // & es- conhec) e (L07_ e // & re- des- - corr) e (L07_ e // per- con- in- so- dis- entend) e (L07_ e - merec) e (L07_ e // des- - met) e (L07_ e // co- pro- arre- re- intro- compro- sub- - padec) e (L07_ e // com- - parec) e (L07_ e // a- rea- com- desa- preend) e (L07_ e // sur- com- -_perec) e (L07_ e respond) e (L07_ e // cor- - torc) e (L07_ e // con- - venc) e (L07_ e // con- - vert) e (L07_ e // in- re- con- - viv) e (L07_ e // re- qu) e (brL04_ E _hosp) e (dL03_ E - _d) e (vL03_ e _gr) e (gL03_ e _n) e (grL03_ e _estr) ei (L03_ EI @@ -416,57 +416,67 @@ respond) e (L07_ e // cor- _s) e (quL02_ E _p) e (quL02_ E l) e (que_ E + _sug) e (rL02_ E _imp) e (rL03_ E + _sev) e (rL03_ E _reit) e (rL03_ E + _sinc) e (rL03_ E _g) e (rL04_ E _op) e (rL04_ E _qu) e (rL04_ E _alt) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E + _ven) e (rL04_ E _coop) e (rL04_ E _temp) e (rL04_ E - _ven) e (rL04_ E _v) e (rbL03_ E + _p) e (rdL02_ E + _l) e (rdL03_ E _h) e (rdL04_ E _) e (rguL02_ E _alb) e (rguL02_ E _enx) e (rguL02_ E _bez) e (rrL03_ e - _rejuven) e (çL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e + _p) e (sL01_ E + _d) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E _l) e (ssL02_ e _esp) e (ssL03_ e _m) e (tL03_ e _com) e (tL03_ e + _rem) e (tL03_ e prom) e (tL03_ e // com- _derr) e (tL03_ e - _rem) e (tL03_ e +_obsol) e (tL03_ e + _pr) e (tL03_ e _sol) e (trL03_ E _pen) e (trL04_ E - _atr) e (vL03_ e scr) e (vL03_ e // e- in- pre- ree- de- - _pr) e (zL04_ E + _d) e (vL03_ e + _atr) e (vL03_ e _embel) e (zL04_ E + pr) e (zL04_ E / des- menos- _acont) e (çL01_ e _arref) e (çL01_ e + par) e (çL03_ e // a- re- com- rea- desa- + _ado) e (çL03_ e _aqu) e (çL03_ e _car) e (çL03_ e -_estrem) e (çL03_ e _mer) e (çL03_ e _pad) e (çL03_ e // com- _per) e (çL03_ e - par) e (çL03_ e // a- re- com- rea- desa- +_rejuven) e (çL03_ e + conh) e (çL03_ e // re- _esqu) e (çL03_ e + _forn) e (çL03_ e _obed) e (çL03_ e _ofer) e (çL03_ e abast) e (çL03_ e // re- _aborr) e (çL03_ e -_fortal) e (çL03_ e - _ado) e (çL03_ e _amanh) e (çL03_ e _anoit) e (çL03_ e _enfraqu) e (çL03_ e @@ -476,8 +486,8 @@ _entrist) e (çL03_ e _envaid) e (çL03_ e _envelh) e (çL03_ e _esclar) e (çL03_ e - _forn) e (çL03_ e - conh) e (çL03_ e // re- +_estrem) e (çL03_ e +_fortal) e (çL03_ e //endsort @@ -787,6 +797,8 @@ _desenv) o (lvL02_ O _m) o (rrL01_ o _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. + _s) o (bL02_ O + _s) o (prL02_ O //endsort .group ô diff --git a/dictsource/ta_list b/dictsource/ta_list index 31b5e89d..083ff0e2 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -379,6 +379,7 @@ tamil தமிழ் $text பாதிக்கக் $alt புசு $alt புஸு $alt +பாதிக்காம $alt // initial த as [d] @@ -398,7 +399,6 @@ tamil தமிழ் $text தைவதம் $alt தாட்சண்யம் $alt தனம் $alt -திக்கற்ற $alt தானு $alt திட $alt தோ $alt @@ -446,6 +446,8 @@ tamil தமிழ் $text தம்ம $alt தாயம் $alt திமு $alt +தாவா $alt + // initial ட டார்ச் t.a:rtS diff --git a/dictsource/ta_rules b/dictsource/ta_rules index ee2b5310..89ae853f 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2009 to 2012 by Jonathan Duddington * + * Copyright (C) 2009 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -168,6 +168,7 @@ _) க (ங்கூலி gV _) க (ங்கை gV _) க (ங்கோத gV + _) கஜ (க்ஸ்தான kVzV _) க (ஞ்சா gV _) க (டகட gV _) க (டத்தில gV @@ -224,6 +225,7 @@ _) க (லீர gV _) க (லீல gV _) க (லீஷிய gV + _) கல்த (ா gVlt _) க (ளுக் gV _) க (வண gV _) க (வன gV @@ -329,6 +331,7 @@ _) கி (ளாL04ி k _) கி (ளாL04ு k _) கி (ளாL04ை k + _) கி (ளாமர g _) கி (ளாஸ்_ g _) கி (ளாஸ்_மேட k _) கிளிக் (_L29 kl.ik @@ -351,6 +354,7 @@ _) க (ுகநாத g _) க (ுகன g _) க (ுகராஜ g + _) க (ுகா g _) க (ுகை g _மன்மதக்) க (ுகை g _) க (ுஜராத g @@ -378,10 +382,13 @@ _மன்மதக்) க (ுகை g _) க (ுண்டத் k _) க (ுண்டம k _) க (ுண்டல k + _) க (ுண்டாக்கள k _) குண்டாந்த (டி gun.d.a:ntV _) க (ுண்டானில k _) க (ுண்டானை k _) க (ுண்டான் k + _) க (ுண்டாவி k + _) க (ுண்டாவை k _) க (ுண்டி k _) க (ுண்டின g _) குண்ட (ூர gun.t.V# @@ -393,6 +400,7 @@ _மன்மதக்) க (ுகை g _) க (ுபீர g _) க (ுபுகுபு g _) க (ுபுக் g + _) க (ுபேர g _) குப் (த gup _) க (ுப்புன g _) க (ுப்பென்ற g @@ -425,10 +433,12 @@ _மன்மதக்) க (ுகை g _) க (ுருமூர்த்தி g _) க (ுருரா g _) க (ுருவடி g + _) க (ுருவருள g _) க (ுருவா g _) க (ுருவாய g _) க (ுருவிட g _) க (ுருவின g + _) க (ுருவிற்க g _) க (ுருவு g _) க (ுருவுடை g _) க (ுருவை g @@ -520,6 +530,7 @@ _மன்மதக்) க (ுகை g _) க (ோர_முடிய k _) க (ோர_வேண்ட k _) க (ோரக g + _) க (ோரக்கூட k _) க (ோரத்_தாண்ட g _) க (ோரத்தால g _) க (ோரத்தை g @@ -553,6 +564,7 @@ _மன்மதக்) க (ுகை g _) க் (ரீன g _) க் (ரூப g _) க் (ரௌண்ட g + _) க் (ளாமர g _) க் (ளாஸ்_ g _) க்வ (A kw _) க் (வாலியர g @@ -704,6 +716,8 @@ _தொன்ம) க (ால k தென்) க (ிழ k _பா) க (ிஸ்தான k அப) க (ீர்த்தி k + க (ீழே_ k + க (ீழ்_ k _பல்) க (ு k மலைக்) க (ுகை g _பால்) க (ுட k @@ -767,6 +781,7 @@ _நினைவு) க (ூர k ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ?? சீர்) க (ேட k _லொ) கேட ke:t.V# + _நசி) க (ேத k ம) க (ேந்திர H _ரா) க (ேஷ k _மு) க (ேஷ k @@ -842,6 +857,7 @@ _கர்ப்ப) க்கி (ர gg _வி) க்க (ிரக gg சத்தியா) க்கி (ரக gg L03) க்கி (ரஹ gg // a,i +_சத்தியா) க்கி (ரஹ gg கு) க்கி (ராம gg அ) க்கி (ராம gg இ) க்கி (ராம gg @@ -925,9 +941,12 @@ _துப்பாக்கி) க்க (ுண்ட gg //sort _ராஞ்) ச tSV# + எபிL09ே) ச zV# + ராகவா) ச )(ாரி tS _ப) சக் tSVk _) ச (க்கரவர்த்தி tSV _) ச (க்கிலி tSV + _க) ச (க்ஸ்தான zV சங்க (ர s.VNkV _) ச (ட்டL08ஸ்கர tSV _) ச (ட்டினி tSV @@ -960,6 +979,7 @@ _விமோ) ச (ன tSV _நீலலோ) ச (னி tSV _மீனலோ) ச (னி tSV _) ச (ப்பL11் tSV + _) ச (ப்பலா tSV _) ச (ப்பா tSV _) ச (ப்பி tSV _) ச (ப்பு tSV @@ -970,6 +990,7 @@ _மீனலோ) ச (னி tSV _பங்) ச (ர tSV _பன்) ச (ர tSV _) சரசு (வதி sVrVs + _ந) சரத் zVrVt _ந) ச (ருதீன zV _) சர்ச (ி tSVrtS _) ச (ர்ச்சில tSV @@ -984,6 +1005,7 @@ _L04்விட்) ச (ர்லாந்த zV மருதா) ச (ல tSV வேதா) ச (ல tSV _சேஷா) ச (ல tSV + _ஹிமா) ச (ல tSV _தணிகா) ச (ல tSV அருணா) ச (ல tSV வெங்கடா) ச (ல tSV @@ -1025,7 +1047,17 @@ _தணிகா) ச (ல tSV ஆ) ச (ாரங்கள tS ஆ) ச (ாரத் tS ஆ) ச (ாரம tS + _ரங்கா) ச (ாரி tS + _வரதா) ச (ாரி tS + _வேதா) ச (ாரி tS +_கிருஷ்ணமா) ச (ாரி tS +_தேசிகா) ச (ாரி tS +_பட்டா) ச (ாரி tS +அனந்தா) ச (ாரி tS + ஆ) ச (ாரிய_ tS + ஆ) ச (ாரியார tS அ) ச (ாருதீன z + _) ச (ாருமதி tS _) சாருலத (ா tSa:rUlVt _) ச (ாருவ tS _ஹ) ச (ாரே z @@ -1086,6 +1118,7 @@ _தணிகா) ச (ல tSV _) சிம்பன்ச (ி tSimpVnz _மலே) ச (ிய s. இந்தோனே) ச (ிய s. + _) ச (ியர்ஸ tS _பக்தி_) சிரத் (தை srVd _) சிரத்த (ைL27 srVdd சி (ரம s @@ -1203,10 +1236,12 @@ _மங்களே) சு (வர s _) ச (ேரி tS _தல) ச (ேரி tS _) ச (ேர்கள tS + _) ச (ேர்மன tS _) ச (ேர்மேன tS _) ச (ேலஞ் tS _) ச (ேஷ்டை tS _) ச (ேஸ்_ tS + _) சைத (ன்ய tSaItV _) ச (ைத்திய tS _) ச (ைனா tS _) ச (ைனா_நேவால s @@ -1214,12 +1249,14 @@ _மங்களே) சு (வர s _) ச (ைனீஸ tS _) ச (ோட்டா tS ஓ) ச (ோன z + அரி) ச (ோன z _) ச (ோன்ன tS _) ச (ோவு tS _) ச (ோவெ tS _) ச (ௌக்கிதார tS _) ச (ௌதரி tS _) ச (ௌதிரி tS + _) ச (ௌத்தாலா tS _) சௌப (ாத்தி tSaUp _) ச (ௌபே tS _) ச (ௌஹான tS @@ -1246,11 +1283,16 @@ _மங்களே) சு (வர s _ப) ஜ (ார z அ) ஜ (ாருதீன z _நா) ஜ (ி z + _) ஜிப்(_ zip + _) ஜ (ிப்ப z _) ஜ (ியா z + _) ஜ (ீனத் z + _) ஜ (ீப்ரா z _) ஜ (ீரோ z _) ஜ (ுல்ஃபி z _) ஜ (ுல்பி z _) ஜு (வால dZ + _) ஜ (ெனித் z _) ஜ (ெராக்ஸ z //endsort @@ -1401,9 +1443,11 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ரங் t. _) டி (ரங்கு t. _) டி (ரபிள t. + _) டி (ரம d. _) டிரம்பெட் t.rVmpet. _) டிர (ஸ d.re _) டிர (ஸ்ட t.rV + _) டி (ரா_ d. _) டிராஃபிக் t.ra:fik _) டி (ராகுலா d. _) டிராக் t.ra:k @@ -1427,12 +1471,15 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ராயிங் d. கொலஸ்) டி (ரால _|t. _) டி (ராலி t. + _) டி (ராவ d. _) டி (ராவல t. _) டி (ராவெல t. _) டிரிக (ர t.riggV _) டிரிக் t.rik _) டிரிக்க (ர t.riggV + _) டி (ரிங்_ t. _) டி (ரிங்க் d. + _) டி (ரிங்ஸ d. _) டிரினிட (ி t.rinit. _) டிரிப் t.rip _) டி (ரிம் t. @@ -1518,6 +1565,7 @@ _லான்_) ட (ென்னிஸ t. _) டைப (ாய்ட t.aIf _) டைப் t.aIp _) ட (ைம்_ t. + _) ட (ைல்ஸ t. _) டொக் t.ok _) ட (ோக்கன t. _) ட (ோக்கியோ t. @@ -1527,6 +1575,7 @@ _லான்_) ட (ென்னிஸ t. _) டோரண்ட (ோ t.o:rVn.t. _ப்ரி) ட (ோரிய t. _) டோர்னமெண்ட t.o:rnVmen.t.V# + _) ட (ோலிவுட் t. _லே) ட் t. @மெண்) ட் t. // -ment _பேண்) ட் t. @@ -1535,6 +1584,11 @@ _ஹெல்மெ) ட் t. ல) ட்சு (மண ks. ல) ட்சு (மி ks. _ல) ட்ட d.d.V# +_கோலிவு) ட்ட d.d.V# +_டோலிவு) ட்ட d.d.V# +_பாலிவு) ட்ட d.d.V# +_மாலிவு) ட்ட d.d.V# +_ஹாலிவு) ட்ட d.d.V# _ரெ) ட்ட (ிய d.d. இ) ட்ட (ிலி d.d. அப்பாயிண்) ட்மெண்ட t.men.t.V# @@ -1577,6 +1631,7 @@ _ஹெல்மெ) ட் t. _) ட்ரிக (ர t.riggV _) ட்ரிக் t.rik _) ட்ரிக்க (ர t.riggV + _) ட் (ரிங்_ t. _நியூ) ட் (ரின t. _) ட்ரினிட (ி t.rinit. _) ட் (ரிம் t. @@ -1642,6 +1697,8 @@ _நடுரோ) ட் (ல t. ஸ்) த (B t ப்) த tV ப்) த (B t + ட்) த tV + ட்) த (B t த் (_த t // exceptions, த as [d] @@ -1654,6 +1711,7 @@ _நடுரோ) ட் (ல t. _) த (கன dV _) த (கி dV _) த (க்க்ஷிண dV + _) த (க்ஷன dV _) த (க்ஷிண dV _) த (க்ஷிணா dV _) த (சகண்ட dV @@ -1686,6 +1744,7 @@ _நடுரோ) ட் (ல t. _) த (ட்சன dV _) த (ட்சிண dV _) த (ண்டக் dV + _) த (ண்டச்செலவ dV _) த (ண்டச்சோற dV _) த (ண்டத் dV _) த (ண்டன dV @@ -1714,6 +1773,7 @@ _நடுரோ) ட் (ல t. _) த (னுச dV _) த (னுஷ dV _) த (ன்மந்திரி dV + _) த (ன்ய dV _) த (ன்ராஜ dV _) த (ன்வந்தரி dV _) தபதப dVbVdVbV# @@ -1723,6 +1783,8 @@ _நடுரோ) ட் (ல t. _) த (ம்பதி dV _) த (ம்பிடி dV _) த (ம்மடிL11் dV + _) த (ம்மத் dV + _) த (ம்மம dV _) த (யவ dV _) த (யாணந்த dV _) த (யான dV @@ -1762,13 +1824,16 @@ _நடுரோ) ட் (ல t. _) த (ர்ப்பை dV _) த (ர்ம dV _) த (லித் dV + _) தலீத் dVli:t _அகாலி_) த (ள dV + _) த (ளவாய dV _) த (வக்கால dV _) த (வக்கோல dV _) த (வத்த dV _) த (வப் dV _) த (வம dV _) தவுலதாப (ாத dVvUlVda:b + _) த (வே dV _) த (ாக்கா d _) த (ாக்காத t _) த (ாக்காம t @@ -1804,12 +1869,14 @@ _அகாலி_) த (ள dV _) த (ாராள d _) த (ாராவி d _) த (ாவணி d - _) த (ாவா d + _) த (ாவாக்க d + _) த (ாவாவ d _) த (ாவேய d _) த (ாஸ d _) த (ிகம்பர d _) த (ிகில d _) த (ிகுதிகு d + _) த (ிக்கற்ற d _) த (ிக்கித்த d _) த (ிக்கில d _) த (ிக்கு d @@ -1853,7 +1920,6 @@ _அகாலி_) த (ள dV _) த (ிம்ம d _) தி (யாக t _) தி (யான d - _) தி (யேட்டர t _) த (ிரவ d _) த (ிரவிய d _) தி (ராட்சை d @@ -1881,7 +1947,10 @@ _அகாலி_) த (ள dV _) த (ிவால d _) த (ிவ்ய d _) த (ிவ்விய d + _) தீக்ஷணி (ய di:ks.Vn + _) த (ீக்ஷண்ய d _) த (ீக்ஷிதர d + _) தீட்சணி (ய di:d.tSVn. _) த (ீட்சண்ய d _) த (ீட்சித d _) த (ீட்சை d @@ -1894,6 +1963,7 @@ _அகாலி_) த (ள dV _) த (ீரச் d _) த (ீரத்துட d _) த (ீரன d + _) த (ீரமிக d _) த (ீரமில்ல d _) த (ீரமுட d _) த (ீரம்மிக d @@ -1909,6 +1979,7 @@ _) தீர்க்க (_சுமங்கலி di:rggV _) தீர்க்க (முள்ள di:rggV# _) தீர்க்க (ம்_ di:rggV _) தீர்க்க (ாயு di:rggV# + _) த (ீர்க்காலோசனை d _) த (ீவாளி d _) து(ரோக d _) த (ுக்க d @@ -1923,12 +1994,13 @@ _) தீர்க்க (_சுமங்கலி di:rggV _) த (ுன்மதி d _) த (ுன்மார்க்க d _) த (ுபாய d - _) த (ுபாஷி d + _) த (ுபாஷ d _) த (ுப்பட்டா d _) த (ுமளி d _) த (ுரதிருஷ்ட d _) த (ுரதிர்ஷ்ட d _) த (ுரதிஷ்ட d + _) துராக்க (ிர tra:gg _) த (ுராசை d _) த (ுரியோதனன d _) த (ுரியோதனா d @@ -2041,6 +2113,7 @@ _வசந்) த tV# _கௌ) த (மி tV _புல்) த (ரை tV _மண்) த (ரை tV + _சகுந்) த (லா tV _சாந்) த (லிங்க tV# _கீ) த (ா t _சீ) த (ா t @@ -2163,9 +2236,13 @@ L03வ்வு) த்த (ியோக dd _சுப) த்த (ிர dd _ரு) த்த (ிர dd _ரௌ) த்த (ிர dd + _சூ) த்த (ிரச் dd _சூ) த்த (ிரச்சி dd + _சூ) த்த (ிரத் dd _சூ) த்த (ிரன dd + _சூ) த்த (ிரப் dd _சூ) த்த (ிரரி dd + _சூ) த்த (ிரரே dd _சூ) த்த (ிரர் dd ஆதி) த்தி (ராவிட dd _சேஷா) த்த (ிரி dd @@ -2199,6 +2276,7 @@ _மொழி) த்து (வே dd _வில்_வி) த்த (ை dd _வில்வி) த்த (ை dd _வி) த்த (ைகள dd + _வி) த்த (ைக்க dd _வி) த்த (ைக்காக dd _வி) த்த (ைக்கு dd வி) த்த (ையாக dd @@ -2296,6 +2374,7 @@ _சி) த்ரலேக (ா trVle:k _) ப (கீர bV _) ப (குள bV _) ப (க்கிங்L06ாம bV + _) ப (க்கீர fV _) ப (க்கெட் bV _) ப (க்கென்ற bV _) பக் (த bVk @@ -2305,6 +2384,7 @@ _சி) த்ரலேக (ா trVle:k _) ப (ங்கம bV _) பங்க (ர bVNkV _) ப (ங்களா bV + _) ப (ங்களூர bV _) ப (ங்கார bV _) ப (ங்க் bV _) ப (சவகல்யாண bV @@ -2394,6 +2474,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ராக்_ஒபாமா bV _) ப (ரிதா_ fV _) ப (ரிதாவ fV + _) ப (ரீத fV _) பரூக் fVrU:k _) ப (ரோட bV _) ப (ர்ஃபி bV @@ -2454,6 +2535,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லராம bV _) ப (லவந்த bV _) ப (லவான bV + _) ப (லவானவ pV _) ப (லவீன bV _) ப (லஹீன bV _) பலாத்க (ார bVla:dk @@ -2511,6 +2593,7 @@ _டீயும்_) ப (ன்னும்_ bV _) பாங்க (ாக் ba:Nk _) ப (ாங்கில b _) ப (ாங்க் b + _) ப (ாசிL04 f _) ப (ாசில f _) ப (ாசு b _) பாசுப (த pa:sUpV @@ -2547,6 +2630,7 @@ _டெட்_) ப (ாடி b _) ப (ாதிக்கவா b _) ப (ாதிக்கவில் b _) ப (ாதிக்காத b + _) ப (ாதிக்காமல b _) ப (ாதிக்கால p _) ப (ாதிக்கின்ற b _) ப (ாதிக்கிற b @@ -2603,6 +2687,7 @@ _டெட்_) ப (ாடி b _) பாப (ாவ ba:b _) ப (ாபிலோன b _) ப (ாபுவ b +_டைம்_) ப (ாம b _) ப (ாமாவ b _) ப (ாமினி b _) ப (ாம்பே b @@ -2616,6 +2701,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாரதி b _) ப (ாரத்த b _) ப (ாரம b + _) ப (ாரமை p _) ப (ாரம்பரிய p _) ப (ாரம்மா p _) ப (ாரவி b @@ -2661,6 +2747,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலுவ b _) ப (ாலே_L25 b _) ப (ாலை p + _) ப (ாலையா b _) ப (ால் p _) ப (ால்_தாக்கரே b _) பால்க (னி ba:lkV @@ -2726,6 +2813,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ினிஷ f _) ப (ின்_லேடன b _) ப (ின்னங்கள b + _) ப (ின்னத்த b _) ப (ின்னத்தால b _) ப (ின்னத்தை b _) ப (ின்னம b @@ -2791,6 +2879,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரமுகர p _) பி (ரமை b _) பி (ரமோஷன p + _) பி (ரமோஸ b _) ப (ிரம்ம b _) பி (ரம்ம b _) பி (ரம்மன b @@ -2805,6 +2894,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரளய p _) பி (ரவகி p _) பி (ரவாக p + _) பி (ரவாள p _) பி (ரவீண p _) பி (ரவீன p _) பி (ரவுச b @@ -2812,6 +2902,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரவேசி p _) பி (ரஷ் b _) பி (ரஷ்ட p + _) பி (ரஸ p _) பி (ரஸல்ஸ b _) பி (ரஸாத p _) பி (ரஸ்தா p @@ -2845,6 +2936,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரான்ச f _) பி (ரான்தி_ b _) பி (ரான்ஸ f + _) பி (ராபல்ய p _) பி (ராப் p _) பி (ராமண b _) பி (ராமணன b @@ -2852,6 +2944,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ராமிக் b _) பி (ராமின்_ b _) பி (ராமிஸ p + _) பி (ராம்மண b _) பி (ராய்லர b _) பி (ரார்தன p _) பி (ரார்தி p @@ -2864,6 +2957,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ராவுக்கு b _) பி (ராவை b _) பி (ரிகேட b + _) பி (ரிஜேஷ b _) பி (ரிட b _) பிரிட (ோரிய prit. _) பி (ரிட்டோரிய p @@ -2887,6 +2981,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரியாவின p _) பி (ரியாவு p _) பி (ரியாவை p + _) பி (ரில்லிய b _) பி (ரிஸ்டன b _) பி (ரிஸ்டல b _) பிரிஸ்ப (ேன brisb @@ -2914,6 +3009,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரோகிதர p _) பி (ரௌச b _) பி (ரௌன b + _) ப (ிர்லா b _) ப (ிலாஸ்பூர b _) பிலிடெல்ப (ிய filidelf _) பிலிம filmV# @@ -2966,6 +3062,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ீடித்த p _) ப (ீடிப்புகை b _) ப (ீடிய b + _) ப (ீடியாட் p _) ப (ீட்டில்ஸ b _) பீட்ரூட் bi:t.ru:t. _) பீத (ோவன bi:t @@ -2979,6 +3076,7 @@ _விளையாடு_) ப (ாம்பே p _) பீ (ராமண b _) ப (ீராமணர b _) ப (ீரிட p + _) ப (ீரியட p _) ப (ீரோ b _) ப (ீர்_முகமத p _) ப (ீர்_முஹமத p @@ -3083,6 +3181,8 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெங்களூர b _) ப (ெங்கால b _) பெசண்ட besVn.t.V# + _) பெச (வாடா beZV + _) பெஜ (வாடா beZV _) பெஞ்ச ben^tSV# _) ப (ெஞ்சமின b _) பெஞ்ச (மின ben^dZV @@ -3104,6 +3204,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெப்ரவரி f _) ப (ெயில f _) பெரோஸ fero:zV# + _) ப (ெர்க்கிலி b _) பெர்ட் (ரண்ட bert. _) ப (ெர்த் b _) ப (ெர்னாட்ஷா b @@ -3152,6 +3253,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ைகுக்கு b _) ப (ைக்கின b _) ப (ைக்கிற்க b + _) ப (ைக்கில b _) ப (ைக்குகள b _) ப (ைக்கும b _) ப (ைசன b @@ -3171,6 +3273,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ொம்மனாட்டி p _) ப (ொம்மல b _) ப (ொம்மை b + _) ப (ோஃபர்ஸ b _) ப (ோஃபோர் b _) ப (ோக_L13 b _) ப (ோகங்க b @@ -3188,6 +3291,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோகிய b _) ப (ோக்கஸ f _) ப (ோங்கா b + _) ப (ோங்கானும p _) ப (ோங்கு b _) ப (ோஜ b _) ப (ோடோ b @@ -3195,6 +3299,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோட்டோக்க f _) போட்டோக்ராப (ர fo:t.t.o:gra:fV _) ப (ோட்டோதான f + _) ப (ோணி b _) ப (ோண்டா b _) ப (ோண்டி b _) ப (ோதகன b @@ -3223,6 +3328,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோன்கூட f _) ப (ோன்லகூட f _) ப (ோன்ஸ்லே b + _) போப (ர்ஸ bo:fV _) போப (ால bo:p _) போப (ோர் bo:f _) ப (ோரடி b @@ -3365,6 +3471,7 @@ _விரகதா) ப (+ bV# _மீள்) ப (தி pV சீதா) பதி pVti சேது) பதி pVti + _விடு) ப (தி pV தரணி) பதி pVti திரௌ) ப (தி pV பிரஜா) பத (ி pVt @@ -3389,6 +3496,7 @@ _ராஷ்டிர) ப (தி pV _க) ப (த் bV அரா) பத் fVt அல்) ப (த் pV + _கிலா) பத் fVt _தா) ப (த்த bV வீர) ப (த்தினி pV _ரிஷி) ப (த்தினி pV @@ -3419,6 +3527,7 @@ _சொந்த) ப (ந்த bV _ஊடு) ப (யிர pV _நடை) ப (யிற்சி pV கா) ப (ர bV +_ஜெனி) ப (ர fV நாகா) ப (ரண bV _ஒலி) ப (ரப் pV _ஒளி) ப (ரப் pV @@ -3429,6 +3538,7 @@ _சொந்த) ப (ந்த bV _கார்) ப (ரேஷன pV _பம்) ப (ர்_ pV _கன்) ப (ர்ம fV + இன்) ப (ர்ம fV கரம்) ப (ற் pV _தீ) ப (ற்ற pV ஆள்) ப (ற்ற pV @@ -3463,6 +3573,7 @@ _முனிசி) ப (ல pV _ஷில்) ப (ா p _முஸ்த) ப (ா f _ஹனி) ப (ா f + _ஹனீ) ப (ா f _போதும்) ப (ா p _போலாம்) ப (ா p _வேண்டாம்) ப (ா p @@ -3506,8 +3617,10 @@ _வெளிப்) ப (ாக b ஒரு) ப (ாத p _படு) ப (ாத p _மறு) ப (ாத p + பரீதா) ப (ாத b ஆமதா) ப (ாத b அL06மதா) ப (ாத b +அலாகா) ப (ாத b இஸ்லாமா) ப (ாத b ஒளரங்கா) ப (ாத b ஔரங்கா) ப (ாத b @@ -3554,6 +3667,7 @@ _ப்ரின்சி) ப (ால p முக) ப (ாவ b அட) ப (ாவ p வீண்) ப (ாவ p + _படு) ப (ாவ p அடி) ப (ாவி p _நவ) ப (ாஷ p _தமிழ்ப்) ப (ாஷ _b @@ -3605,6 +3719,7 @@ _கன்னா) ப (ின்னா p @) ப (ின்னால்_ p _) ப (ிப்ரவரி f _லெஸ்) ப (ியன b + _மா) ப (ியா f _கன்) பி (யுச f _பெர்) பி (யூம f _வரப்) பி (ரL04ாத p @@ -3625,6 +3740,7 @@ _ஞானப்) பிரக (ா prVk வீண்) பி (ரமை b துஷ்) பி (ரயோக p L03ந்தப்) பி (ரளய p + _சொற்) பி (ரவாக p எக்ஸ்) பிர (ஸ pre ஆ) பி (ரஹாம b பயப்) பி (ராந்தி b @@ -3654,6 +3770,7 @@ L03ந்தப்) பி (ராய p ஆண்) ப (ிள்ளை p பெண்) ப (ிள்ளை p அச்சா) ப (ீ f + _ர) பீக் fi:k உப) ப (ீட p விக்கி) ப (ீடியா p இம்) ப (ீரியல p @@ -3661,6 +3778,7 @@ L03ந்தப்) பி (ராய p _அன்) ப (ுட b _மார்) ப (ுட b ராஜ) ப (ுதன p + _மின்) ப (ுத்தக p _) புத்தம்ப (ுத puttVmp ராஜ) ப (ுத்திர p வாயு) ப (ுத்திர p @@ -3679,6 +3797,7 @@ L03ந்தப்) பி (ராய p _பா) ப (ுலர p _) பு (ளோரன்ஸ f மண்) ப (ுழு p + _ஷாம்) ப (ூ p ப (ூச்சி p ம்) ப (ூச்சி b உறுதி) ப (ூண்ட p @@ -3708,6 +3827,7 @@ _கோலாலம்) ப (ூர p _கை) ப (ேசி p _செல்) ப (ேசி p அலை) ப (ேசி p + _திரை) ப (ேசி p தொலை) ப (ேசி p _மறு) ப (ேச்ச p ஒரு) ப (ேச்ச p @@ -3732,6 +3852,7 @@ _கோலாலம்) ப (ூர p _ வெடி) ப (ொரு p _பழம்) ப (ொருள p _தொல்) ப (ொருள p + _தேடு) ப (ொறி p வீண்) ப (ொழுத p ப (ொழுதிலா_+ p ப (ொழுதிலும்_+ p @@ -3743,6 +3864,7 @@ _ வெடி) ப (ொரு p ப (ொழுதே_+ p ப (ொழுதோ_+ p _விலை) ப (ோ p + _பிர) ப (ோL04 p _ஏக) ப (ோக b ராஜ) ப (ோக b ப (ோக_ p @@ -3780,6 +3902,7 @@ _விலை) ப (ோ p ப (ோன_ p ப (ோனது_ p ப (ோனா p + அல்) ப (ோன்சா f ப (ோன்ற+ p // ?? end-of-word + suffix ?? அல்) ப (ோன்ஸ f ப (ோயிரு p @@ -3802,7 +3925,9 @@ _விலை) ப (ோ p _டே) ப (் p _போ) ப் p _லாக) ப் p + ஆசி) ப் f _டெஸ்க்டா) ப் p + ஆ) ப் (கன f ஆ) ப் (கான f _பா) ப்க (ார்ன pk _ர) ப்ச (ர ptSV @@ -3810,6 +3935,11 @@ _டெஸ்க்டா) ப் p _லி) ப் (ட f _மைக்ரோசா) ப் (ட f _சா) ப்ட் (வேர ft + _ச) ப் (த_ p + _ச) ப்த (மி_ ptV + _ச) ப்த (மிய ptV + _ச) ப் (தரிஷி p + _ச) ப் (தஸ்வர p _ஹி) ப்னாட (ிச pna:t. கர்) ப்ப bbV# _நவா) ப்ப bbV# @@ -3822,6 +3952,7 @@ _மைக்ரோசா) ப் (ட f _ர) ப்ப (ர bbV ஆ) ப்ப (ரிக்க fV தென்னா) ப்ப (ரிக்க fV + _துர்) ப்ப (ல bbV உ) ப்ப (லா bbV உ) ப்ப (லாக bbV உ) ப்ப (லான bbV @@ -3837,6 +3968,8 @@ _மைக்ரோசா) ப் (ட f _ஜ) ப்ப (ார bb _துர்) ப்ப (ாஷ bb அ) ப்ப (ாஸ bb + அ) ப்ப (ாஸாமி pp + அ) ப்ப (ாஸ்வாமி pp உ) ப்ப (ி_ bb _ட) ப்ப (ிங் bb உ) ப்ப (ின_ bb @@ -3848,6 +3981,8 @@ _யாதவ) ப்பி (ரகாச pp L03) ப்பி (ரகார pp _வெளி) ப்பி (ரகார pp அதிக) ப்பி (ரசங்க pp + _வன) ப்பி (ரதேச pp +_காட்டு) ப்பி (ரதேச pp _நில) ப்பி (ரபு pp _சத்திய) ப்பி (ரமா pp மன) ப்பி (ரமை bb @@ -3861,10 +3996,12 @@ _சத்திய) ப்பி (ரமா pp _மன) ப்பி (ரவாக pp _ரத்த) ப்பி (ரவாக pp இசை) ப்பி (ரவாக pp + உரை) ப்பி (ரவாக pp இரத்த) ப்பி (ரவாக pp _ஒL10ி) ப்பி (ரவாக pp தேச) ப்பி (ரஷ்ட pp _ஜாதி) ப்பி (ரஷ்ட pp + _வான) ப்பி (ரஸ்த pp ஆ) ப்பி (ரிக்க f தென்னா) ப்பி (ரிக்க fV _கஜ) ப்ப (ிருஷ்ட bb @@ -4028,6 +4165,8 @@ _சந்தேக) ப்ப (ுத்தி bb _உ) ஸ்பெக் zbek _நவா) ஸ zV# பெர்னாண்ட) ஸ zV# + _ம) ஸ்த (ூர zd + அரி) ஸ (ோன z .group ஹ ஹ HV diff --git a/phsource/ph_english b/phsource/ph_english index 4f7bbdbd..48368c97 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -162,7 +162,7 @@ endphoneme phoneme @L vowel starttype #@ endtype l - ipa əl + ipa ə|l unstressed length 160 CALL vowelstart_l diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index ee3b2c97..a4637e41 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -168,7 +168,9 @@ phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in Ameri vowel starttype #a endtype #@ length 250 ipa aː - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/aa_r) endphoneme @@ -211,7 +213,9 @@ phoneme O@ vowel starttype #o endtype #@ length 230 ipa ɔ - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/oo_r) endphoneme @@ -219,7 +223,9 @@ phoneme o@ vowel starttype #o endtype #@ length 230 ipa o - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/oo_r) endphoneme @@ -305,7 +311,9 @@ phoneme e@ vowel starttype #e endtype #@ length 220 ipa e - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vdiph2/e@) endphoneme @@ -314,7 +322,9 @@ phoneme i@3 vowel starttype #i endtype #@ ipa ɪ length 240 - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/i_r) endphoneme @@ -380,11 +390,11 @@ phoneme r liquid rhotic lengthmod 7 trill - IF nextPh(isNotVowel) THEN ChangePhoneme(r/) ENDIF CALL base/r + ipa r endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 93d2454e..662689c7 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -151,7 +151,7 @@ endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vowel starttype #a endtype #a - ipa ɑːɹ + ipa ɑː|ɹ IF nextPh(r-) THEN ipa ɑː ENDIF @@ -192,7 +192,7 @@ endphoneme phoneme O@ vowel starttype #o endtype #@ length 250 - ipa ɔːɹ + ipa ɔː|ɹ IF nextPhW(r) THEN ipa ɔː ENDIF @@ -204,7 +204,7 @@ endphoneme phoneme o@ vowel starttype #o endtype #@ length 250 - ipa oːɹ + ipa oː|ɹ IF nextPhW(r) THEN ipa oː ENDIF @@ -269,7 +269,7 @@ endphoneme phoneme e@ vowel starttype #e endtype #@ length 280 - ipa ɛɹ + ipa ɛ|ɹ IF nextPhW(r) THEN ipa ɛ ENDIF @@ -288,7 +288,7 @@ endphoneme phoneme i@3 vowel starttype #i endtype #@ length 280 - ipa ɪɹ + ipa ɪ|ɹ IF nextPhW(r) THEN ipa ɪ ENDIF @@ -300,7 +300,7 @@ endphoneme phoneme U@ vowel starttype #@ endtype #@ length 250 - ipa ʊɹ + ipa ʊ|ɹ IF nextPhW(r-) THEN ipa ʊ ENDIF diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 762f6e58..35bcb361 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -44,6 +44,7 @@ extern void FindPhonemesUsed(void); extern void DisplayErrorFile(const char *fname); +extern int utf8_in(int *c, const char *buf); extern int utf8_out(unsigned int c, char *buf); extern void DrawEnvelopes(); extern void ReadPhondataManifest(); @@ -157,6 +158,7 @@ static keywtab_t k_properties[] = { enum { kPHONEMESTART = 1, + kUTF8_BOM, kPROCEDURE, kENDPHONEME, kENDPROCEDURE, @@ -210,6 +212,8 @@ enum { kTUNE_SPLIT, }; +static const char utf8_bom[] = {0xef,0xbb,0xbf,0}; + static keywtab_t k_intonation[] = { {"tune", 0, kTUNE}, {"endtune", 0, kENDTUNE}, @@ -250,6 +254,7 @@ static keywtab_t keywords[] = { {"phonemenumber",tSTATEMENT, kPHONEMENUMBER}, {"phonemetable",tSTATEMENT, kPHONEMETABLE}, {"include", tSTATEMENT, kINCLUDE}, + {utf8_bom, tSTATEMENT, kUTF8_BOM}, {"phoneme", tSTATEMENT, kPHONEMESTART}, {"procedure", tSTATEMENT, kPROCEDURE}, @@ -2720,11 +2725,14 @@ int CompilePhoneme(int compile_phoneme) int keyword; int value; int phcode = 0; + int flags; int ix; - unsigned int c; + int start; + int count; + int c; char *p; char number_buf[12]; - char ipa_buf[N_ITEM_STRING]; + char ipa_buf[N_ITEM_STRING+1]; PHONEME_TAB phoneme_out2; PHONEME_PROG_LOG phoneme_prog_log; @@ -2852,32 +2860,58 @@ int CompilePhoneme(int compile_phoneme) strcpy(item_string," "); // copy the string, recognize characters in the form U+9999 - p = item_string; - ix = 0; - while((c = *p++) != 0) + flags = 0; + count = 0; + ix = 1; + + for(p=item_string; *p != 0;) { + p += utf8_in(&c, p); + + if((c == '|') && (count > 0)) + { + // '|' means don't allow a tie or joiner before this letter + flags |= (1 << (count -1)); + } + else if((c=='U') && (p[0]=='+')) { + int j; // U+9999 - memcpy(number_buf,&p[1],4); // U+ should be followed by 4 hex digits + p++; + memcpy(number_buf,p,4); // U+ should be followed by 4 hex digits number_buf[4] = 0; - c = 0; + c = '#'; sscanf(number_buf,"%x",&c); - p += 5; + + // move past the 4 hexdecimal digits + for(j=0; j<4; j++) + { + if(!isalnum(*p)) + break; + p++; + } ix += utf8_out(c, &ipa_buf[ix]); + count++; } else { - ipa_buf[ix++] = c; + ix += utf8_out(c, &ipa_buf[ix]); + count++; } } + ipa_buf[0] = flags; ipa_buf[ix] = 0; - value = strlen(ipa_buf); // number of UTF-8 bytes + + start = 1; + if(flags != 0) + start = 0; // only include the flags byte if bits are set + value = strlen(&ipa_buf[start]); // number of UTF-8 bytes *prog_out++ = (i_IPA_NAME << 8) + value; for(ix=0; ix < value; ix += 2) { - *prog_out++ = (ipa_buf[ix] << 8) + (ipa_buf[ix+1] & 0xff); + *prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); } break; } @@ -3400,6 +3434,9 @@ static void CompilePhonemeFiles() switch(item) { + case kUTF8_BOM: + break; // ignore bytes 0xef 0xbb 0xbf + case kINCLUDE: NextItem(tSTRING); sprintf(buf,"%s%s",path_source,item_string); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 2c9ffcd7..720c5723 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -524,15 +524,14 @@ unsigned short ipa1[96] = { }; -char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa) -{//===================================================================================== +char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags) +{//=================================================================================================== int c; int mnem; int len; int first; int ix = 0; char *p; - unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme PHONEME_DATA phdata; if(ph->code == phonEND_WORD) @@ -564,20 +563,28 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int InterpretPhoneme(NULL, 0, plist, &phdata, NULL); } - len = strlen(phdata.ipa_string); + p = phdata.ipa_string; + if(*p == 0x20) + { + // indicates no name for this phoneme + *phon_out = 0; + return(phon_out); + } + if((*p != 0) && ((*p & 0xff) < 0x20)) + { + // name starts with a flags byte + if(flags != NULL) + *flags = *p; + p++; + } + + len = strlen(p); if(len > 0) { - if((ipa_control = phdata.ipa_string[0]) > 0x20) - { - strcpy(&phon_out[ix], phdata.ipa_string); - ix += len; - } - if(ipa_control >= 0x20) - { - phon_out = &phon_out[ix]; - *phon_out = 0; - return(phon_out); // 0x20 = ignore phoneme - } + strcpy(phon_out, p); + phon_out += len; + *phon_out = 0; + return(phon_out); } } @@ -630,12 +637,17 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) unsigned int max_len; int phon_out_ix=0; int stress; - unsigned int c; + int c; + char *p; char *buf; + int count; + int flags; char phon_buf[30]; + char phon_buf2[30]; PHONEME_LIST *plist; static const char *stress_chars = "==,,''"; + static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner if(phon_out != NULL) { @@ -672,22 +684,38 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) } } - buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa); + flags = 0; + WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); + count = 0; + for(p=phon_buf2; *p != 0;) + { + p += utf8_in(&c, p); + if(use_ipa > 1) + { + // look for non-inital alphabetic character, but not diacritic, superscript etc. + if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) + { + buf += utf8_out(char_tie[use_ipa-2], buf); + } + } + buf += utf8_out(c, buf); + count++; + } if(plist->ph->code != phonSWITCH) { if(plist->synthflags & SFLAG_LENGTHEN) { - buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa, NULL); } if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) { // syllablic consonant - buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa, NULL); } if(plist->tone_ph > 0) { - buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa, NULL); } } diff --git a/src/espeak.cpp b/src/espeak.cpp index 25bc9aac..f9669a9e 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -67,6 +67,7 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" +"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -362,7 +363,7 @@ int main (int argc, char **argv) {"path", required_argument, 0, 0x107}, {"phonout", required_argument, 0, 0x108}, {"pho", no_argument, 0, 0x109}, - {"ipa", no_argument, 0, 0x10a}, + {"ipa", optional_argument, 0, 0x10a}, {"version", no_argument, 0, 0x10b}, {0, 0, 0, 0} }; @@ -604,6 +605,17 @@ int main (int argc, char **argv) case 0x10a: // --ipa option_phonemes = 3; + if(optarg2 != NULL) + { + value = -1; + sscanf(optarg2,"%d",&value); + if((value<0) || (value>2)) + { + fprintf(stderr,"Bad value for -ipa=\n"); + value = 0; + } + option_phonemes += value; + } break; case 0x10b: // -version diff --git a/src/speak.cpp b/src/speak.cpp index 661df32c..7ce8e70a 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -101,6 +101,7 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" +"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -485,7 +486,7 @@ int main (int argc, char **argv) {"path", required_argument, 0, 0x107}, {"phonout", required_argument, 0, 0x108}, {"pho", no_argument, 0, 0x109}, - {"ipa", no_argument, 0, 0x10a}, + {"ipa", optional_argument, 0, 0x10a}, {"version", no_argument, 0, 0x10b}, {0, 0, 0, 0} }; @@ -723,6 +724,17 @@ int main (int argc, char **argv) case 0x10a: // --ipa option_phonemes = 3; + if(optarg2 != NULL) + { + value = -1; + sscanf(optarg2,"%d",&value); + if((value<0) || (value>2)) + { + fprintf(stderr,"Bad value for -ipa=\n"); + value = 0; + } + option_phonemes += value; + } break; case 0x10b: // --version diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index 78feaff8..6c5d6bc3 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -82,12 +82,12 @@ void WVoiceChanged(voice_t *wvoice) static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) {//====================================================================== ENTER("dispatch_audio"); - + int a_wave_can_be_played = fifo_is_command_enabled(); - + #ifdef DEBUG_ENABLED - SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", - (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, + SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", + (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, (event) ? event->sample : 0, a_wave_can_be_played); #endif @@ -134,8 +134,8 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) while(a_wave_can_be_played) { // TBD: some event are filtered here but some insight might be given // TBD: in synthesise.cpp for avoiding to create WORDs with size=0. - // TBD: For example sentence "or ALT)." returns three words - // "or", "ALT" and "". + // TBD: For example sentence "or ALT)." returns three words + // "or", "ALT" and "". // TBD: the last one has its size=0. if (event && (event->type == espeakEVENT_WORD) && (event->length==0)) { @@ -171,7 +171,7 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) } SHOW_TIME("LEAVE dispatch_audio\n"); - + return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error } @@ -183,12 +183,12 @@ static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_ int i=0; // The audio data are written to the output device. - // The list of events in event_list (index: event_list_ix) is read: + // The list of events in event_list (index: event_list_ix) is read: // Each event is declared to the "event" object which stores them internally. // The event object is responsible of calling the external callback // as soon as the relevant audio sample is played. - do + do { // for each event espeak_EVENT* event; if (event_list_ix == 0) @@ -231,7 +231,7 @@ int sync_espeak_terminated_msg( uint32_t unique_identifier, void* user_data) if (my_mode==AUDIO_OUTPUT_PLAYBACK) { - while(1) + while(1) { espeak_ERROR a_error = event_declare(event_list); if (a_error != EE_BUFFER_FULL) @@ -290,14 +290,14 @@ static void select_output(espeak_AUDIO_OUTPUT output_type) int GetFileLength(const char *filename) {//==================================== struct stat statbuf; - + if(stat(filename,&statbuf) != 0) return(0); - + if((statbuf.st_mode & S_IFMT) == S_IFDIR) // if(S_ISDIR(statbuf.st_mode)) return(-2); // a directory - + return(statbuf.st_size); } // end of GetFileLength @@ -337,7 +337,7 @@ static void init_path(const char *path) { sprintf(path_home,"%s/espeak-data",env); if(GetFileLength(path_home) == -2) - return; // an espeak-data directory exists + return; // an espeak-data directory exists } buf[0] = 0; @@ -362,7 +362,7 @@ static void init_path(const char *path) { snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); if(GetFileLength(path_home) == -2) - return; // an espeak-data directory exists + return; // an espeak-data directory exists } snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); @@ -561,21 +561,21 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un ENTER("MarkerEvent"); espeak_EVENT *ep; double time; - + if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) return; - + ep = &event_list[event_list_ix++]; ep->type = (espeak_EVENT_TYPE)type; ep->unique_identifier = my_unique_identifier; ep->user_data = my_user_data; ep->text_position = char_position & 0xffffff; ep->length = char_position >> 24; - + time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; ep->audio_position = int(time); ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); - + #ifdef DEBUG_ENABLED SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", @@ -605,22 +605,22 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un -espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size, - unsigned int position, espeak_POSITION_TYPE position_type, +espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size, + unsigned int position, espeak_POSITION_TYPE position_type, unsigned int end_position, unsigned int flags, void* user_data) {//=========================================================================== - + #ifdef DEBUG_ENABLED ENTER("sync_espeak_Synth"); SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); #endif espeak_ERROR aStatus; - + InitText(flags); my_unique_identifier = unique_identifier; my_user_data = user_data; - + for (int i=0; i < N_SPEECH_PARAM; i++) saved_parameters[i] = param_stack[0].parameter[i]; @@ -629,26 +629,26 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, case POS_CHARACTER: skip_characters = position; break; - + case POS_WORD: skip_words = position; break; - + case POS_SENTENCE: skip_sentences = position; break; - + } if(skip_characters || skip_words || skip_sentences) skipping_text = 1; - + end_character_position = end_position; - + aStatus = Synthesize(unique_identifier, text, flags); #ifdef USE_ASYNC wave_flush(my_audio); #endif - + SHOW_TIME("LEAVE sync_espeak_Synth"); return aStatus; } // end of sync_espeak_Synth @@ -656,29 +656,29 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, -espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size, - const char *index_mark, unsigned int end_position, +espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size, + const char *index_mark, unsigned int end_position, unsigned int flags, void* user_data) {//========================================================================= espeak_ERROR aStatus; - + InitText(flags); - + my_unique_identifier = unique_identifier; my_user_data = user_data; - + if(index_mark != NULL) { strncpy0(skip_marker, index_mark, sizeof(skip_marker)); skipping_text = 1; } - + end_character_position = end_position; - - + + aStatus = Synthesize(unique_identifier, text, flags | espeakSSML); SHOW_TIME("LEAVE sync_espeak_Synth_Mark"); - + return (aStatus); } // end of sync_espeak_Synth_Mark @@ -710,7 +710,7 @@ void sync_espeak_Char(wchar_t character) char buf[80]; my_unique_identifier = 0; my_user_data = NULL; - + sprintf(buf,"&#%d;",character); Synthesize(0, buf,espeakSSML); } @@ -722,7 +722,7 @@ void sync_espeak_SetPunctuationList(const wchar_t *punctlist) // Set the list of punctuation which are spoken for "some". my_unique_identifier = 0; my_user_data = NULL; - + wcsncpy(option_punctlist, punctlist, N_PUNCTLIST); option_punctlist[N_PUNCTLIST-1] = 0; } // end of sync_espeak_SetPunctuationList @@ -771,7 +771,7 @@ ENTER("espeak_Initialize"); setlocale(LC_CTYPE,""); } #endif - + init_path(path); initialise(options); select_output(output_type); @@ -788,30 +788,30 @@ ENTER("espeak_Initialize"); outbuf = (unsigned char*)realloc(outbuf,outbuf_size); if((out_start = outbuf) == NULL) return(EE_INTERNAL_ERROR); - + // allocate space for event list. Allow 200 events per second. // Add a constant to allow for very small buf_length n_event_list = (buf_length*200)/1000 + 20; if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) return(EE_INTERNAL_ERROR); - + option_phonemes = 0; option_mbrola_phonemes = 0; option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); VoiceReset(0); // SetVoiceByName("default"); - + for(param=0; paramu.my_mark.unique_identifier; - + // Create the "terminated msg" command (same uid) t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data); - + // Try to add these 2 commands (single transaction) if (c1 && c2) { @@ -1152,15 +1152,15 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) value=0 No phoneme output (default) value=1 Output the translated phoneme symbols for the text value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) - value=3 as (1), but produces IPA phoneme names rather than ascii + value=3 as (1), but produces IPA phoneme names rather than ascii bit 4: produce mbrola pho data */ - option_phonemes = value & 3; + option_phonemes = value & 7; option_mbrola_phonemes = value & 16; f_trans = stream; if(stream == NULL) f_trans = stderr; - + } // end of espeak_SetPhonemes @@ -1269,4 +1269,4 @@ ESPEAK_API const char *espeak_Info(const char **ptr) #pragma GCC visibility pop - + diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 0abda433..961254ef 100644 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -490,7 +490,7 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr if(ph->code != phonEND_WORD) { char phoneme_name[16]; - WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA); + WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name); } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 55f6bff4..a2e35543 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.39 01.Mar.13"; -const int version_phdata = 0x014639; +const char *version_string = "1.46.40 03.Mar.13"; +const int version_phdata = 0x014640; int option_device_number = -1; FILE *f_logespeak = NULL; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 5db0db9e..0928c08d 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1438,7 +1438,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) } else { - WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); + WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); done_phoneme_marker = 1; } @@ -1751,7 +1751,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if((option_phoneme_events) && (done_phoneme_marker == 0)) { - WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); + WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); } @@ -1937,8 +1937,8 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) if((option_phonemes > 0) || (phoneme_callback != NULL)) { int use_ipa = 0; - if(option_phonemes == 3) - use_ipa = 1; + if(option_phonemes >= 3) + use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); if(option_phonemes > 0) diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index d903b139..e71750e1 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -163,7 +163,7 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last) // ignore these characters static const unsigned short chars_ignore_default[] = { - 0xad, 1, // soft hyphtn + 0xad, 1, // soft hyphen 0x200c, 1, // zero width non-joiner 0x200d, 1, // zero width joiner 0, 0 }; @@ -436,13 +436,16 @@ Translator *SelectTranslator(const char *name) int name2 = 0; Translator *tr; + static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250}; + static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 }; + static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 }; static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; - static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; + static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270}; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; // convert name string into a word of up to 4 characters, for the switch() @@ -836,8 +839,17 @@ Translator *SelectTranslator(const char *name) { tr->letter_bits_offset = OFFSET_GURMUKHI; } + else + if(name2 == L('g','u')) + { +SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); + tr->letter_bits_offset = OFFSET_GUJARATI; + tr->langopts.stress_rule = STRESSPOSN_2R; + } + else if(name2 == L('n','e')) { +SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->langopts.break_numbers = 0x2aaaa8; tr->langopts.max_digits = 22; tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS; diff --git a/src/translate.cpp b/src/translate.cpp index 9917f04a..8125d76f 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -3309,17 +3309,21 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre *pn++ = tr->langopts.thousands_sep; } *pn++ = ' '; - if(tr->langopts.break_numbers & (1 << (nx-1))) - { - // the next group only has 1 digits (i.e. NUM2_10000), make it three - *pn++ = '0'; - *pn++ = '0'; - } - if(tr->langopts.break_numbers & (1 << (nx-2))) - { - // the next group only has 2 digits (i.e. NUM2_10000), make it three - *pn++ = '0'; - } + + if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0) + { + if(tr->langopts.break_numbers & (1 << (nx-1))) + { + // the next group only has 1 digits, make it three + *pn++ = '0'; + *pn++ = '0'; + } + if(tr->langopts.break_numbers & (1 << (nx-2))) + { + // the next group only has 2 digits (eg. Indian languages), make it three + *pn++ = '0'; + } + } } } pw--; diff --git a/src/translate.h b/src/translate.h index 2d7c5aa2..2d9ff38e 100644 --- a/src/translate.h +++ b/src/translate.h @@ -721,7 +721,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix void SetVoiceStack(espeak_VOICE *v, const char *variant_name); void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata, WORD_PH_DATA *worddata); void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); -char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa); +char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags); extern FILE *f_trans; // for logging extern FILE *f_logespeak;