Command line option --ipa can have option to include Tie or ZWJ characters to disabmiguate multi-letter phoneme names. Recognize and ignore UTF8-BOM byte sequence at the start of phoneme definition files. Languages changes: ta, nl, pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@306 d46cf337-b52f-0410-862d-fd96e6ae7743master
| aborigine ab@r'IdZ@ni | aborigine ab@r'IdZ@ni | ||||
| abracadabra abr@k@d'abr@ | abracadabra abr@k@d'abr@ | ||||
| absence abs@ns | absence abs@ns | ||||
| absent $1 | |||||
| absent abs'Ent $verb | absent abs'Ent $verb | ||||
| absentia abs'Ent2i:@ | absentia abs'Ent2i:@ | ||||
| absinthe absInT | absinthe absInT | ||||
| biased baI@st | biased baI@st | ||||
| bible baIb@L | bible baIb@L | ||||
| bidet bi:deI | bidet bi:deI | ||||
| bigot bIg@t // -ed | |||||
| bijou bi:Zu: | bijou bi:Zu: | ||||
| bikini bIk'i:ni | bikini bIk'i:ni | ||||
| binman bInman | binman bInman | ||||
| graduate gradju:@t | graduate gradju:@t | ||||
| graduate gradju:eIt $verb | graduate gradju:eIt $verb | ||||
| graffiti $alt3 | graffiti $alt3 | ||||
| grandson gr'andsVn | |||||
| gredient gri:di@nt // ingredient | gredient gri:di@nt // ingredient | ||||
| grenade gr@neId | grenade gr@neId | ||||
| griffon grIf@n | griffon grIf@n |
| m) otor oUt3 | m) otor oUt3 | ||||
| n) o (tor oU | n) o (tor oU | ||||
| otro (py '0tr@ | otro (py '0tr@ | ||||
| &) o (try @ | |||||
| c) otyle 0tIl'i: | c) otyle 0tIl'i: | ||||
| m) o (x @ | m) o (x @ | ||||
| o (x++ 0 | o (x++ 0 | ||||
| ?3 ag) on (_ 0n | ?3 ag) on (_ 0n | ||||
| rg) on (_ @n | rg) on (_ @n | ||||
| &s) on (_ @n | &s) on (_ @n | ||||
| ds) on (_ Vn | |||||
| &t) on (_ @n | &t) on (_ @n | ||||
| &tr) on (_ 0n | &tr) on (_ 0n | ||||
| fl) on (_ 0n | fl) on (_ 0n | ||||
| pers) on @n | pers) on @n | ||||
| pers) on (i '0n | pers) on (i '0n | ||||
| postp) on 'oUn | postp) on 'oUn | ||||
| _sp) on 0n | |||||
| on (ald 0n | on (ald 0n | ||||
| &) on (age_ @n | |||||
| d) on (at %oUn | d) on (at %oUn | ||||
| on (an_ oUn | on (an_ oUn | ||||
| _) on (io Vn | _) on (io Vn | ||||
| ?3 h) ov (er Vv | ?3 h) ov (er Vv | ||||
| l) ov Vv | l) ov Vv | ||||
| l) ov (e Vv | l) ov (e Vv | ||||
| _l) ove Vv | |||||
| _l) ove (@ Vv | |||||
| cl) ov (e oUv | cl) ov (e oUv | ||||
| _sl) ov (enA oUv | _sl) ov (enA oUv | ||||
| pl) ov oUv | pl) ov oUv |
| @) ent (st_ 'Ent | @) ent (st_ 'Ent | ||||
| @) ent (ste_ 'Ent | @) ent (ste_ 'Ent | ||||
| ag) ent 'Ent | ag) ent 'Ent | ||||
| X) es (_ Es | |||||
| @j) es (_S1 s | @j) es (_S1 s | ||||
| @z) es (_S1 s | @z) es (_S1 s | ||||
| @) es (_S2qd 'Es // double the previous vowel | @) es (_S2qd 'Es // double the previous vowel | ||||
| _) ge (@P2 Q@ | _) ge (@P2 Q@ | ||||
| ge (bied Q@ | ge (bied Q@ | ||||
| _) gee Qe: | _) gee Qe: | ||||
| _) gei QEI | |||||
| gener (aal Q,e:n@r | gener (aal Q,e:n@r | ||||
| _) gelijk Q@lEIk | _) gelijk Q@lEIk | ||||
| _) ge (rC QE | _) ge (rC QE | ||||
| @) s (_S1 s | @) s (_S1 s | ||||
| @) s (_$w_alt =s | @) s (_$w_alt =s | ||||
| _) samen(@P5 s'a:m@n | |||||
| sc (oop sk | sc (oop sk | ||||
| sc (opi sk | sc (opi sk | ||||
| &) sel (_ =s@l | &) sel (_ =s@l |
| derdes $alt | derdes $alt | ||||
| desapego $alt2 $noun | desapego $alt2 $noun | ||||
| descabelo $alt | descabelo $alt | ||||
| desce $alt | |||||
| descem $alt | |||||
| descordo $alt | descordo $alt | ||||
| desespero $alt2 $noun | desespero $alt2 $noun | ||||
| desfecho $alt2 | desfecho $alt2 | ||||
| desprezo $alt $verb | |||||
| desprezo $alt2 $noun | |||||
| deveras $alt | deveras $alt | ||||
| dez $alt | dez $alt | ||||
| diarreia $alt | diarreia $alt | ||||
| endereço $alt2 | endereço $alt2 | ||||
| endereço $alt $verb | endereço $alt $verb | ||||
| enforco $alt | enforco $alt | ||||
| enforque $alt | |||||
| enforquem $alt | |||||
| engordo $alt | engordo $alt | ||||
| enumerem $alt | |||||
| ensopa $alt | |||||
| ensopam $alt | |||||
| ensope $alt | |||||
| ensopem $alt | |||||
| ensopo $alt | |||||
| enredo $alt $verb | enredo $alt $verb | ||||
| enterro $alt2 $noun | enterro $alt2 $noun | ||||
| enumerem $alt | |||||
| envelope $alt | envelope $alt | ||||
| envolto $alt2 | envolto $alt2 | ||||
| enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
| etiqueta $alt2 | etiqueta $alt2 | ||||
| europa $alt | europa $alt | ||||
| exagero $alt $verb | exagero $alt $verb | ||||
| expeça $alt2 | |||||
| expeço $alt2 | |||||
| explore $alt | explore $alt | ||||
| faceta $alt2 | faceta $alt2 | ||||
| farelo $alt | farelo $alt | ||||
| fizerdes $alt | fizerdes $alt | ||||
| fizermos $alt | fizermos $alt | ||||
| foda $alt2 $verb | foda $alt2 $verb | ||||
| folheto $alt2 | |||||
| folga $alt | folga $alt | ||||
| fogos $alt | fogos $alt | ||||
| foguete $alt2 | foguete $alt2 | ||||
| foice $alt2 | foice $alt2 | ||||
| forca $alt2 | forca $alt2 | ||||
| força $alt2 $noun | força $alt2 $noun | ||||
| forço $alt | |||||
| forças $alt2 | forças $alt2 | ||||
| forço $alt | |||||
| fordes $alt2 | fordes $alt2 | ||||
| fores $alt2 | fores $alt2 | ||||
| forro $alt $verb | forro $alt $verb | ||||
| joguete $alt2 | joguete $alt2 | ||||
| lambreta $alt2 | lambreta $alt2 | ||||
| lebre $alt | lebre $alt | ||||
| lerda $alt | |||||
| lerdo $alt | |||||
| líderes $alt2 | líderes $alt2 | ||||
| lopes $alt | lopes $alt | ||||
| maior $alt | |||||
| maleta $alt2 | maleta $alt2 | ||||
| mantiverdes $alt | mantiverdes $alt | ||||
| mantiveres $alt | mantiveres $alt | ||||
| marmelo $alt | marmelo $alt | ||||
| marreta $alt2 | marreta $alt2 | ||||
| martelo $alt | martelo $alt | ||||
| melhor $alt | |||||
| menor $alt | |||||
| merda $alt | merda $alt | ||||
| megera $alt | megera $alt | ||||
| melo $alt | melo $alt | ||||
| moreia $alt | moreia $alt | ||||
| mortos $alt | mortos $alt | ||||
| motora $alt2 | motora $alt2 | ||||
| ?2 mulher mulj'Er | |||||
| ?4 mulher mul^'Er | |||||
| mulher $alt | |||||
| mui mwi | mui mwi | ||||
| muito mw'iNtU // -s is included as a suffix | muito mw'iNtU // -s is included as a suffix | ||||
| muita mw'iNt& | muita mw'iNt& | ||||
| nervo $alt2 | nervo $alt2 | ||||
| novos $alt | novos $alt | ||||
| obstetra $alt | obstetra $alt | ||||
| obsoleta $alt2 | |||||
| obsoleto $alt2 | |||||
| obtivera $alt | obtivera $alt | ||||
| obtivermos $alt | obtivermos $alt | ||||
| odisseia $alt | odisseia $alt | ||||
| paexa paeSa | paexa paeSa | ||||
| palacete $alt2 | palacete $alt2 | ||||
| palheta $alt2 | palheta $alt2 | ||||
| panfleto $alt2 | |||||
| pangeia $alt | pangeia $alt | ||||
| pantera $alt | pantera $alt | ||||
| paralelo $alt | paralelo $alt | ||||
| pedra $alt | pedra $alt | ||||
| pelego $alt2 | pelego $alt2 | ||||
| pelo $alt $verb | pelo $alt $verb | ||||
| perde $alt | |||||
| perdem $alt | |||||
| pesa $alt | |||||
| pesam $alt | |||||
| pesque $alt | pesque $alt | ||||
| pesquem $alt | pesquem $alt | ||||
| peso $alt $verb | peso $alt $verb | ||||
| piloto $alt2 $noun | piloto $alt2 $noun | ||||
| pintora $alt2 | pintora $alt2 | ||||
| pior $alt | |||||
| pirueta $alt2 | pirueta $alt2 | ||||
| plateia $alt | plateia $alt | ||||
| plebeia $alt | plebeia $alt | ||||
| pose $alt2 | pose $alt2 | ||||
| povos $alt | povos $alt | ||||
| poxa p'oS& | poxa p'oS& | ||||
| preta $alt2 | |||||
| preto $alt2 | |||||
| preço $alt2 | |||||
| primavera $alt | primavera $alt | ||||
| provo $alt | provo $alt | ||||
| puder $alt | puder $alt | ||||
| pudermos $alt | pudermos $alt | ||||
| puserdes $alt | puserdes $alt | ||||
| quarteto $alt2 | quarteto $alt2 | ||||
| queda $alt | |||||
| quinteto $alt2 | quinteto $alt2 | ||||
| quiserdes $alt | quiserdes $alt | ||||
| quisermos $alt | quisermos $alt | ||||
| rumores $alt2 | rumores $alt2 | ||||
| saleta $alt2 | saleta $alt2 | ||||
| sarjeta $alt | sarjeta $alt | ||||
| severa $alt | |||||
| severo $alt | |||||
| seborreia $alt | seborreia $alt | ||||
| seca $alt2 $noun | seca $alt2 $noun | ||||
| secas $alt2 | secas $alt2 | ||||
| sexteto $alt2 | sexteto $alt2 | ||||
| ?1 senhora $alt2 | ?1 senhora $alt2 | ||||
| senhores $alt2 | senhores $alt2 | ||||
| sincera $alt | |||||
| sincero $alt | |||||
| sinopse $alt | sinopse $alt | ||||
| sobe $alt | sobe $alt | ||||
| sobem $alt | |||||
| sobem $alt | |||||
| soco $alt2 | soco $alt2 | ||||
| soco $alt $verb | soco $alt $verb | ||||
| sofrem $alt | sofrem $alt | ||||
| sofreste $alt2 | sofreste $alt2 | ||||
| sogra $alt | sogra $alt | ||||
| sopre $alt | sopre $alt | ||||
| soprem $alt | |||||
| soprem $alt | |||||
| sopro $alt $verb | sopro $alt $verb | ||||
| soro $alt2 | soro $alt2 | ||||
| sorvete $alt2 | sorvete $alt2 | ||||
| suborno $alt $verb | suborno $alt $verb | ||||
| sufoco $alt2 $noun | sufoco $alt2 $noun | ||||
| sufocos $alt2 | sufocos $alt2 | ||||
| sugere $alt | |||||
| sugerem $alt | |||||
| suporto $alt | suporto $alt | ||||
| suor swOr | suor swOr | ||||
| tapete $alt2 | tapete $alt2 | ||||
| zorra $alt2 | zorra $alt2 | ||||
| // foreign words | // foreign words | ||||
| ?1 alt 'alt | ?1 alt 'alt | ||||
| ?2 agosto &g'ostU | ?2 agosto &g'ostU | ||||
| ?1 install ,inst'al | ?1 install ,inst'al | ||||
| ?2 internet iNtern'Et | ?2 internet iNtern'Et | ||||
| ?2 Intranet iNtRan'Et | ?2 Intranet iNtRan'Et | ||||
| ?2 inveja iNv'EZ& | |||||
| ?1 kernel k'Ern,El | ?1 kernel k'Ern,El | ||||
| ?2 kernel k'Ern@l | ?2 kernel k'Ern@l | ||||
| ?1 line l'ain | ?1 line l'ain | ||||
| ?1 lock l'Ok | ?1 lock l'Ok | ||||
| mail m'eIl | mail m'eIl | ||||
| mails m'eIls | 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 | ?2 mouse m'aUzi | ||||
| ?1 menu menu | ?1 menu menu | ||||
| ?1 next n'Ekst | ?1 next n'Ekst | ||||
| ?1 ovo 'ovu | ?1 ovo 'ovu | ||||
| ?1 pause p'au:z | ?1 pause p'au:z | ||||
| page p'eIdZ | page p'eIdZ | ||||
| ?2 pior pi'Or | |||||
| ?2 piores pi'O*is | |||||
| preço $alt2 | |||||
| python p'aIT&~N | python p'aIT&~N | ||||
| queda $alt | |||||
| ?1 readme r'i:dmi: | ?1 readme r'i:dmi: | ||||
| ?1 sapi s,ap'i | ?1 sapi s,ap'i | ||||
| ?1 scanner sk'En&r | ?1 scanner sk'En&r |
| ?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas. | ?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas. | ||||
| ?1 e (la_ 'E // eg: cadela, janela, vela, etc... | ?1 e (la_ 'E // eg: cadela, janela, vela, etc... | ||||
| ?1 C) e (cC ,E // eg: seleccionar, efectuar, 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 (ã i // leão, panteão, etc. | ||||
| ?1 C) e (a i // oceano, etc. | ?1 C) e (a i // oceano, etc. | ||||
| ?1 C) e (o 'i // eg: geologia, etc... | ?1 C) e (o 'i // eg: geologia, etc... | ||||
| sf) e (ra_ E // esfera, biosfera | sf) e (ra_ E // esfera, biosfera | ||||
| //sort | //sort | ||||
| _com) e (L05_ e | |||||
| fiz) e (L05_ E | fiz) e (L05_ E | ||||
| tiv) e (L05_ E // es- | |||||
| _com) e (L05_ e | |||||
| _coub) e (L05_ E | _coub) e (L05_ E | ||||
| _exag) e (L05_ E | _exag) e (L05_ E | ||||
| _houv) e (L05_ E | _houv) e (L05_ E | ||||
| _perd) e (L05_ e | _perd) e (L05_ e | ||||
| _soub) e (L05_ E | _soub) e (L05_ E | ||||
| tiv) e (L05_ E // es- | |||||
| _rend) e (L06_ e | |||||
| _vend) e (L06_ e | |||||
| _atend) e (L06_ e | _atend) e (L06_ e | ||||
| _compreend) e (L06_ e | _compreend) e (L06_ e | ||||
| _entend) e (L06_ e | _entend) e (L06_ e | ||||
| _estend) e (L06_ e | _estend) e (L06_ e | ||||
| _rend) e (L06_ e | |||||
| _vend) e (L06_ e | |||||
| respond) e (L06_ e // cor- | 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 | _aborrec) e (L07_ e | ||||
| _rejuvenec) e (L07_ e | |||||
| _adoec) e (L07_ e | _adoec) e (L07_ e | ||||
| _adormec) e (L07_ e | |||||
| _amanhec) e (L07_ e | _amanhec) e (L07_ e | ||||
| _anoitec) e (L07_ e | _anoitec) e (L07_ e | ||||
| _arrepend) e (L07_ e | _arrepend) e (L07_ e | ||||
| _beb) e (L07_ e | |||||
| _com) e (L07_ e | |||||
| _defend) e (L07_ e | _defend) e (L07_ e | ||||
| _depend) e (L07_ e | _depend) e (L07_ e | ||||
| _eleg) e (L07_ e | |||||
| _enlouquec) e (L07_ e | _enlouquec) e (L07_ e | ||||
| _entristec) e (L07_ e | _entristec) e (L07_ e | ||||
| _envaidec) e (L07_ e | _envaidec) e (L07_ e | ||||
| _envelhec) e (L07_ e | _envelhec) e (L07_ e | ||||
| _ergu) e (L07_ e | |||||
| _esclarec) e (L07_ e | _esclarec) e (L07_ e | ||||
| _escond) e (L07_ e | _escond) e (L07_ e | ||||
| _escurec) e (L07_ e | _escurec) e (L07_ e | ||||
| _esquec) e (L07_ e | _esquec) e (L07_ e | ||||
| _interromp) e (L07_ e | _interromp) e (L07_ e | ||||
| _mord) e (L07_ e | |||||
| _morr) e (L07_ e | |||||
| _obedec) 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- | 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- | conhec) e (L07_ e // & re- des- | ||||
| corr) e (L07_ e // per- con- in- so- dis- | |||||
| entend) e (L07_ e | 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- | preend) e (L07_ e // sur- com- | ||||
| _perec) e (L07_ e | |||||
| respond) e (L07_ e // cor- | 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 | qu) e (brL04_ E | ||||
| _hosp) e (dL03_ E | _hosp) e (dL03_ E | ||||
| _d) e (vL03_ e | |||||
| _gr) e (gL03_ e | _gr) e (gL03_ e | ||||
| _n) e (grL03_ e | _n) e (grL03_ e | ||||
| _estr) ei (L03_ EI | _estr) ei (L03_ EI | ||||
| _s) e (quL02_ E | _s) e (quL02_ E | ||||
| _p) e (quL02_ E | _p) e (quL02_ E | ||||
| l) e (que_ E | l) e (que_ E | ||||
| _sug) e (rL02_ E | |||||
| _imp) e (rL03_ E | _imp) e (rL03_ E | ||||
| _sev) e (rL03_ E | |||||
| _reit) e (rL03_ E | _reit) e (rL03_ E | ||||
| _sinc) e (rL03_ E | |||||
| _g) e (rL04_ E | _g) e (rL04_ E | ||||
| _op) e (rL04_ E | _op) e (rL04_ E | ||||
| _qu) e (rL04_ E | _qu) e (rL04_ E | ||||
| _alt) e (rL04_ E | _alt) e (rL04_ E | ||||
| _sup) e (rL04_ E | _sup) e (rL04_ E | ||||
| _tol) e (rL04_ E | _tol) e (rL04_ E | ||||
| _ven) e (rL04_ E | |||||
| _coop) e (rL04_ E | _coop) e (rL04_ E | ||||
| _temp) e (rL04_ E | _temp) e (rL04_ E | ||||
| _ven) e (rL04_ E | |||||
| _v) e (rbL03_ E | _v) e (rbL03_ E | ||||
| _p) e (rdL02_ E | |||||
| _l) e (rdL03_ E | |||||
| _h) e (rdL04_ E | _h) e (rdL04_ E | ||||
| _) e (rguL02_ E | _) e (rguL02_ E | ||||
| _alb) e (rguL02_ E | _alb) e (rguL02_ E | ||||
| _enx) e (rguL02_ E | _enx) e (rguL02_ E | ||||
| _bez) e (rrL03_ e | _bez) e (rrL03_ e | ||||
| _rejuven) e (çL03_ e | |||||
| _inv) e (rtL03_ e | _inv) e (rtL03_ e | ||||
| _f) e (rvL03_ e | _f) e (rvL03_ e | ||||
| _p) e (sL01_ E | |||||
| _d) e (scL02_ E | |||||
| _p) e (scL03_ E | _p) e (scL03_ E | ||||
| _m) e (sclL04 E | _m) e (sclL04 E | ||||
| _l) e (ssL02_ e | _l) e (ssL02_ e | ||||
| _esp) e (ssL03_ e | _esp) e (ssL03_ e | ||||
| _m) e (tL03_ e | _m) e (tL03_ e | ||||
| _com) e (tL03_ e | _com) e (tL03_ e | ||||
| _rem) e (tL03_ e | |||||
| prom) e (tL03_ e // com- | prom) e (tL03_ e // com- | ||||
| _derr) e (tL03_ e | _derr) e (tL03_ e | ||||
| _rem) e (tL03_ e | |||||
| _obsol) e (tL03_ e | |||||
| _pr) e (tL03_ e | |||||
| _sol) e (trL03_ E | _sol) e (trL03_ E | ||||
| _pen) e (trL04_ E | _pen) e (trL04_ E | ||||
| _atr) e (vL03_ e | |||||
| scr) e (vL03_ e // e- in- pre- ree- de- | 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 | _embel) e (zL04_ E | ||||
| pr) e (zL04_ E / des- menos- | |||||
| _acont) e (çL01_ e | _acont) e (çL01_ e | ||||
| _arref) e (çL01_ e | _arref) e (çL01_ e | ||||
| par) e (çL03_ e // a- re- com- rea- desa- | |||||
| _ado) e (çL03_ e | |||||
| _aqu) e (çL03_ e | _aqu) e (çL03_ e | ||||
| _car) e (çL03_ e | _car) e (çL03_ e | ||||
| _estrem) e (çL03_ e | |||||
| _mer) e (çL03_ e | _mer) e (çL03_ e | ||||
| _pad) e (çL03_ e // com- | _pad) e (çL03_ e // com- | ||||
| _per) e (çL03_ e | _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 | _esqu) e (çL03_ e | ||||
| _forn) e (çL03_ e | |||||
| _obed) e (çL03_ e | _obed) e (çL03_ e | ||||
| _ofer) e (çL03_ e | _ofer) e (çL03_ e | ||||
| abast) e (çL03_ e // re- | abast) e (çL03_ e // re- | ||||
| _aborr) e (çL03_ e | _aborr) e (çL03_ e | ||||
| _fortal) e (çL03_ e | |||||
| _ado) e (çL03_ e | |||||
| _amanh) e (çL03_ e | _amanh) e (çL03_ e | ||||
| _anoit) e (çL03_ e | _anoit) e (çL03_ e | ||||
| _enfraqu) e (çL03_ e | _enfraqu) e (çL03_ e | ||||
| _envaid) e (çL03_ e | _envaid) e (çL03_ e | ||||
| _envelh) e (çL03_ e | _envelh) e (çL03_ e | ||||
| _esclar) 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 | //endsort | ||||
| _m) o (rrL01_ o | _m) o (rrL01_ o | ||||
| _c) o (spL02_ O | _c) o (spL02_ O | ||||
| p) ostos (_ Ost=Us# // dispostos etc. | p) ostos (_ Ost=Us# // dispostos etc. | ||||
| _s) o (bL02_ O | |||||
| _s) o (prL02_ O | |||||
| //endsort | //endsort | ||||
| .group ô | .group ô |
| பாதிக்கக் $alt | பாதிக்கக் $alt | ||||
| புசு $alt | புசு $alt | ||||
| புஸு $alt | புஸு $alt | ||||
| பாதிக்காம $alt | |||||
| // initial த as [d] | // initial த as [d] | ||||
| தைவதம் $alt | தைவதம் $alt | ||||
| தாட்சண்யம் $alt | தாட்சண்யம் $alt | ||||
| தனம் $alt | தனம் $alt | ||||
| திக்கற்ற $alt | |||||
| தானு $alt | தானு $alt | ||||
| திட $alt | திட $alt | ||||
| தோ $alt | தோ $alt | ||||
| தம்ம $alt | தம்ம $alt | ||||
| தாயம் $alt | தாயம் $alt | ||||
| திமு $alt | திமு $alt | ||||
| தாவா $alt | |||||
| // initial ட | // initial ட | ||||
| டார்ச் t.a:rtS | டார்ச் t.a:rtS |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2009 to 2012 by Jonathan Duddington * | |||||
| * Copyright (C) 2009 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| _) க (ங்கூலி gV | _) க (ங்கூலி gV | ||||
| _) க (ங்கை gV | _) க (ங்கை gV | ||||
| _) க (ங்கோத gV | _) க (ங்கோத gV | ||||
| _) கஜ (க்ஸ்தான kVzV | |||||
| _) க (ஞ்சா gV | _) க (ஞ்சா gV | ||||
| _) க (டகட gV | _) க (டகட gV | ||||
| _) க (டத்தில gV | _) க (டத்தில gV | ||||
| _) க (லீர gV | _) க (லீர gV | ||||
| _) க (லீல gV | _) க (லீல gV | ||||
| _) க (லீஷிய gV | _) க (லீஷிய gV | ||||
| _) கல்த (ா gVlt | |||||
| _) க (ளுக் gV | _) க (ளுக் gV | ||||
| _) க (வண gV | _) க (வண gV | ||||
| _) க (வன gV | _) க (வன gV | ||||
| _) கி (ளாL04ி k | _) கி (ளாL04ி k | ||||
| _) கி (ளாL04ு k | _) கி (ளாL04ு k | ||||
| _) கி (ளாL04ை k | _) கி (ளாL04ை k | ||||
| _) கி (ளாமர g | |||||
| _) கி (ளாஸ்_ g | _) கி (ளாஸ்_ g | ||||
| _) கி (ளாஸ்_மேட k | _) கி (ளாஸ்_மேட k | ||||
| _) கிளிக் (_L29 kl.ik | _) கிளிக் (_L29 kl.ik | ||||
| _) க (ுகநாத g | _) க (ுகநாத g | ||||
| _) க (ுகன g | _) க (ுகன g | ||||
| _) க (ுகராஜ g | _) க (ுகராஜ g | ||||
| _) க (ுகா g | |||||
| _) க (ுகை g | _) க (ுகை g | ||||
| _மன்மதக்) க (ுகை g | _மன்மதக்) க (ுகை g | ||||
| _) க (ுஜராத g | _) க (ுஜராத g | ||||
| _) க (ுண்டத் k | _) க (ுண்டத் k | ||||
| _) க (ுண்டம k | _) க (ுண்டம k | ||||
| _) க (ுண்டல k | _) க (ுண்டல k | ||||
| _) க (ுண்டாக்கள k | |||||
| _) குண்டாந்த (டி gun.d.a:ntV | _) குண்டாந்த (டி gun.d.a:ntV | ||||
| _) க (ுண்டானில k | _) க (ுண்டானில k | ||||
| _) க (ுண்டானை k | _) க (ுண்டானை k | ||||
| _) க (ுண்டான் k | _) க (ுண்டான் k | ||||
| _) க (ுண்டாவி k | |||||
| _) க (ுண்டாவை k | |||||
| _) க (ுண்டி k | _) க (ுண்டி k | ||||
| _) க (ுண்டின g | _) க (ுண்டின g | ||||
| _) குண்ட (ூர gun.t.V# | _) குண்ட (ூர gun.t.V# | ||||
| _) க (ுபீர g | _) க (ுபீர g | ||||
| _) க (ுபுகுபு g | _) க (ுபுகுபு g | ||||
| _) க (ுபுக் g | _) க (ுபுக் g | ||||
| _) க (ுபேர g | |||||
| _) குப் (த gup | _) குப் (த gup | ||||
| _) க (ுப்புன g | _) க (ுப்புன g | ||||
| _) க (ுப்பென்ற g | _) க (ுப்பென்ற g | ||||
| _) க (ுருமூர்த்தி g | _) க (ுருமூர்த்தி g | ||||
| _) க (ுருரா g | _) க (ுருரா g | ||||
| _) க (ுருவடி g | _) க (ுருவடி g | ||||
| _) க (ுருவருள g | |||||
| _) க (ுருவா g | _) க (ுருவா g | ||||
| _) க (ுருவாய g | _) க (ுருவாய g | ||||
| _) க (ுருவிட g | _) க (ுருவிட g | ||||
| _) க (ுருவின g | _) க (ுருவின g | ||||
| _) க (ுருவிற்க g | |||||
| _) க (ுருவு g | _) க (ுருவு g | ||||
| _) க (ுருவுடை g | _) க (ுருவுடை g | ||||
| _) க (ுருவை g | _) க (ுருவை g | ||||
| _) க (ோர_முடிய k | _) க (ோர_முடிய k | ||||
| _) க (ோர_வேண்ட k | _) க (ோர_வேண்ட k | ||||
| _) க (ோரக g | _) க (ோரக g | ||||
| _) க (ோரக்கூட k | |||||
| _) க (ோரத்_தாண்ட g | _) க (ோரத்_தாண்ட g | ||||
| _) க (ோரத்தால g | _) க (ோரத்தால g | ||||
| _) க (ோரத்தை g | _) க (ோரத்தை g | ||||
| _) க் (ரீன g | _) க் (ரீன g | ||||
| _) க் (ரூப g | _) க் (ரூப g | ||||
| _) க் (ரௌண்ட g | _) க் (ரௌண்ட g | ||||
| _) க் (ளாமர g | |||||
| _) க் (ளாஸ்_ g | _) க் (ளாஸ்_ g | ||||
| _) க்வ (A kw | _) க்வ (A kw | ||||
| _) க் (வாலியர g | _) க் (வாலியர g | ||||
| தென்) க (ிழ k | தென்) க (ிழ k | ||||
| _பா) க (ிஸ்தான k | _பா) க (ிஸ்தான k | ||||
| அப) க (ீர்த்தி k | அப) க (ீர்த்தி k | ||||
| க (ீழே_ k | |||||
| க (ீழ்_ k | |||||
| _பல்) க (ு k | _பல்) க (ு k | ||||
| மலைக்) க (ுகை g | மலைக்) க (ுகை g | ||||
| _பால்) க (ுட k | _பால்) க (ுட k | ||||
| ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ?? | ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ?? | ||||
| சீர்) க (ேட k | சீர்) க (ேட k | ||||
| _லொ) கேட ke:t.V# | _லொ) கேட ke:t.V# | ||||
| _நசி) க (ேத k | |||||
| ம) க (ேந்திர H | ம) க (ேந்திர H | ||||
| _ரா) க (ேஷ k | _ரா) க (ேஷ k | ||||
| _மு) க (ேஷ k | _மு) க (ேஷ k | ||||
| _வி) க்க (ிரக gg | _வி) க்க (ிரக gg | ||||
| சத்தியா) க்கி (ரக gg | சத்தியா) க்கி (ரக gg | ||||
| L03) க்கி (ரஹ gg // a,i | L03) க்கி (ரஹ gg // a,i | ||||
| _சத்தியா) க்கி (ரஹ gg | |||||
| கு) க்கி (ராம gg | கு) க்கி (ராம gg | ||||
| அ) க்கி (ராம gg | அ) க்கி (ராம gg | ||||
| இ) க்கி (ராம gg | இ) க்கி (ராம gg | ||||
| //sort | //sort | ||||
| _ராஞ்) ச tSV# | _ராஞ்) ச tSV# | ||||
| எபிL09ே) ச zV# | |||||
| ராகவா) ச )(ாரி tS | |||||
| _ப) சக் tSVk | _ப) சக் tSVk | ||||
| _) ச (க்கரவர்த்தி tSV | _) ச (க்கரவர்த்தி tSV | ||||
| _) ச (க்கிலி tSV | _) ச (க்கிலி tSV | ||||
| _க) ச (க்ஸ்தான zV | |||||
| சங்க (ர s.VNkV | சங்க (ர s.VNkV | ||||
| _) ச (ட்டL08ஸ்கர tSV | _) ச (ட்டL08ஸ்கர tSV | ||||
| _) ச (ட்டினி tSV | _) ச (ட்டினி tSV | ||||
| _நீலலோ) ச (னி tSV | _நீலலோ) ச (னி tSV | ||||
| _மீனலோ) ச (னி tSV | _மீனலோ) ச (னி tSV | ||||
| _) ச (ப்பL11் tSV | _) ச (ப்பL11் tSV | ||||
| _) ச (ப்பலா tSV | |||||
| _) ச (ப்பா tSV | _) ச (ப்பா tSV | ||||
| _) ச (ப்பி tSV | _) ச (ப்பி tSV | ||||
| _) ச (ப்பு tSV | _) ச (ப்பு tSV | ||||
| _பங்) ச (ர tSV | _பங்) ச (ர tSV | ||||
| _பன்) ச (ர tSV | _பன்) ச (ர tSV | ||||
| _) சரசு (வதி sVrVs | _) சரசு (வதி sVrVs | ||||
| _ந) சரத் zVrVt | |||||
| _ந) ச (ருதீன zV | _ந) ச (ருதீன zV | ||||
| _) சர்ச (ி tSVrtS | _) சர்ச (ி tSVrtS | ||||
| _) ச (ர்ச்சில tSV | _) ச (ர்ச்சில tSV | ||||
| மருதா) ச (ல tSV | மருதா) ச (ல tSV | ||||
| வேதா) ச (ல tSV | வேதா) ச (ல tSV | ||||
| _சேஷா) ச (ல tSV | _சேஷா) ச (ல tSV | ||||
| _ஹிமா) ச (ல tSV | |||||
| _தணிகா) ச (ல tSV | _தணிகா) ச (ல tSV | ||||
| அருணா) ச (ல tSV | அருணா) ச (ல tSV | ||||
| வெங்கடா) ச (ல tSV | வெங்கடா) ச (ல tSV | ||||
| ஆ) ச (ாரங்கள tS | ஆ) ச (ாரங்கள tS | ||||
| ஆ) ச (ாரத் tS | ஆ) ச (ாரத் tS | ||||
| ஆ) ச (ாரம tS | ஆ) ச (ாரம tS | ||||
| _ரங்கா) ச (ாரி tS | |||||
| _வரதா) ச (ாரி tS | |||||
| _வேதா) ச (ாரி tS | |||||
| _கிருஷ்ணமா) ச (ாரி tS | |||||
| _தேசிகா) ச (ாரி tS | |||||
| _பட்டா) ச (ாரி tS | |||||
| அனந்தா) ச (ாரி tS | |||||
| ஆ) ச (ாரிய_ tS | |||||
| ஆ) ச (ாரியார tS | |||||
| அ) ச (ாருதீன z | அ) ச (ாருதீன z | ||||
| _) ச (ாருமதி tS | |||||
| _) சாருலத (ா tSa:rUlVt | _) சாருலத (ா tSa:rUlVt | ||||
| _) ச (ாருவ tS | _) ச (ாருவ tS | ||||
| _ஹ) ச (ாரே z | _ஹ) ச (ாரே z | ||||
| _) சிம்பன்ச (ி tSimpVnz | _) சிம்பன்ச (ி tSimpVnz | ||||
| _மலே) ச (ிய s. | _மலே) ச (ிய s. | ||||
| இந்தோனே) ச (ிய s. | இந்தோனே) ச (ிய s. | ||||
| _) ச (ியர்ஸ tS | |||||
| _பக்தி_) சிரத் (தை srVd | _பக்தி_) சிரத் (தை srVd | ||||
| _) சிரத்த (ைL27 srVdd | _) சிரத்த (ைL27 srVdd | ||||
| சி (ரம s | சி (ரம s | ||||
| _) ச (ேரி tS | _) ச (ேரி tS | ||||
| _தல) ச (ேரி tS | _தல) ச (ேரி tS | ||||
| _) ச (ேர்கள tS | _) ச (ேர்கள tS | ||||
| _) ச (ேர்மன tS | |||||
| _) ச (ேர்மேன tS | _) ச (ேர்மேன tS | ||||
| _) ச (ேலஞ் tS | _) ச (ேலஞ் tS | ||||
| _) ச (ேஷ்டை tS | _) ச (ேஷ்டை tS | ||||
| _) ச (ேஸ்_ tS | _) ச (ேஸ்_ tS | ||||
| _) சைத (ன்ய tSaItV | |||||
| _) ச (ைத்திய tS | _) ச (ைத்திய tS | ||||
| _) ச (ைனா tS | _) ச (ைனா tS | ||||
| _) ச (ைனா_நேவால s | _) ச (ைனா_நேவால s | ||||
| _) ச (ைனீஸ tS | _) ச (ைனீஸ tS | ||||
| _) ச (ோட்டா tS | _) ச (ோட்டா tS | ||||
| ஓ) ச (ோன z | ஓ) ச (ோன z | ||||
| அரி) ச (ோன z | |||||
| _) ச (ோன்ன tS | _) ச (ோன்ன tS | ||||
| _) ச (ோவு tS | _) ச (ோவு tS | ||||
| _) ச (ோவெ tS | _) ச (ோவெ tS | ||||
| _) ச (ௌக்கிதார tS | _) ச (ௌக்கிதார tS | ||||
| _) ச (ௌதரி tS | _) ச (ௌதரி tS | ||||
| _) ச (ௌதிரி tS | _) ச (ௌதிரி tS | ||||
| _) ச (ௌத்தாலா tS | |||||
| _) சௌப (ாத்தி tSaUp | _) சௌப (ாத்தி tSaUp | ||||
| _) ச (ௌபே tS | _) ச (ௌபே tS | ||||
| _) ச (ௌஹான tS | _) ச (ௌஹான tS | ||||
| _ப) ஜ (ார z | _ப) ஜ (ார z | ||||
| அ) ஜ (ாருதீன z | அ) ஜ (ாருதீன z | ||||
| _நா) ஜ (ி z | _நா) ஜ (ி z | ||||
| _) ஜிப்(_ zip | |||||
| _) ஜ (ிப்ப z | |||||
| _) ஜ (ியா z | _) ஜ (ியா z | ||||
| _) ஜ (ீனத் z | |||||
| _) ஜ (ீப்ரா z | |||||
| _) ஜ (ீரோ z | _) ஜ (ீரோ z | ||||
| _) ஜ (ுல்ஃபி z | _) ஜ (ுல்ஃபி z | ||||
| _) ஜ (ுல்பி z | _) ஜ (ுல்பி z | ||||
| _) ஜு (வால dZ | _) ஜு (வால dZ | ||||
| _) ஜ (ெனித் z | |||||
| _) ஜ (ெராக்ஸ z | _) ஜ (ெராக்ஸ z | ||||
| //endsort | //endsort | ||||
| _) டி (ரங் t. | _) டி (ரங் t. | ||||
| _) டி (ரங்கு t. | _) டி (ரங்கு t. | ||||
| _) டி (ரபிள t. | _) டி (ரபிள t. | ||||
| _) டி (ரம d. | |||||
| _) டிரம்பெட் t.rVmpet. | _) டிரம்பெட் t.rVmpet. | ||||
| _) டிர (ஸ d.re | _) டிர (ஸ d.re | ||||
| _) டிர (ஸ்ட t.rV | _) டிர (ஸ்ட t.rV | ||||
| _) டி (ரா_ d. | |||||
| _) டிராஃபிக் t.ra:fik | _) டிராஃபிக் t.ra:fik | ||||
| _) டி (ராகுலா d. | _) டி (ராகுலா d. | ||||
| _) டிராக் t.ra:k | _) டிராக் t.ra:k | ||||
| _) டி (ராயிங் d. | _) டி (ராயிங் d. | ||||
| கொலஸ்) டி (ரால _|t. | கொலஸ்) டி (ரால _|t. | ||||
| _) டி (ராலி t. | _) டி (ராலி t. | ||||
| _) டி (ராவ d. | |||||
| _) டி (ராவல t. | _) டி (ராவல t. | ||||
| _) டி (ராவெல t. | _) டி (ராவெல t. | ||||
| _) டிரிக (ர t.riggV | _) டிரிக (ர t.riggV | ||||
| _) டிரிக் t.rik | _) டிரிக் t.rik | ||||
| _) டிரிக்க (ர t.riggV | _) டிரிக்க (ர t.riggV | ||||
| _) டி (ரிங்_ t. | |||||
| _) டி (ரிங்க் d. | _) டி (ரிங்க் d. | ||||
| _) டி (ரிங்ஸ d. | |||||
| _) டிரினிட (ி t.rinit. | _) டிரினிட (ி t.rinit. | ||||
| _) டிரிப் t.rip | _) டிரிப் t.rip | ||||
| _) டி (ரிம் t. | _) டி (ரிம் t. | ||||
| _) டைப (ாய்ட t.aIf | _) டைப (ாய்ட t.aIf | ||||
| _) டைப் t.aIp | _) டைப் t.aIp | ||||
| _) ட (ைம்_ t. | _) ட (ைம்_ t. | ||||
| _) ட (ைல்ஸ t. | |||||
| _) டொக் t.ok | _) டொக் t.ok | ||||
| _) ட (ோக்கன t. | _) ட (ோக்கன t. | ||||
| _) ட (ோக்கியோ t. | _) ட (ோக்கியோ t. | ||||
| _) டோரண்ட (ோ t.o:rVn.t. | _) டோரண்ட (ோ t.o:rVn.t. | ||||
| _ப்ரி) ட (ோரிய t. | _ப்ரி) ட (ோரிய t. | ||||
| _) டோர்னமெண்ட t.o:rnVmen.t.V# | _) டோர்னமெண்ட t.o:rnVmen.t.V# | ||||
| _) ட (ோலிவுட் t. | |||||
| _லே) ட் t. | _லே) ட் t. | ||||
| @மெண்) ட் t. // -ment | @மெண்) ட் t. // -ment | ||||
| _பேண்) ட் t. | _பேண்) ட் t. | ||||
| ல) ட்சு (மண ks. | ல) ட்சு (மண ks. | ||||
| ல) ட்சு (மி ks. | ல) ட்சு (மி ks. | ||||
| _ல) ட்ட d.d.V# | _ல) ட்ட d.d.V# | ||||
| _கோலிவு) ட்ட d.d.V# | |||||
| _டோலிவு) ட்ட d.d.V# | |||||
| _பாலிவு) ட்ட d.d.V# | |||||
| _மாலிவு) ட்ட d.d.V# | |||||
| _ஹாலிவு) ட்ட d.d.V# | |||||
| _ரெ) ட்ட (ிய d.d. | _ரெ) ட்ட (ிய d.d. | ||||
| இ) ட்ட (ிலி d.d. | இ) ட்ட (ிலி d.d. | ||||
| அப்பாயிண்) ட்மெண்ட t.men.t.V# | அப்பாயிண்) ட்மெண்ட t.men.t.V# | ||||
| _) ட்ரிக (ர t.riggV | _) ட்ரிக (ர t.riggV | ||||
| _) ட்ரிக் t.rik | _) ட்ரிக் t.rik | ||||
| _) ட்ரிக்க (ர t.riggV | _) ட்ரிக்க (ர t.riggV | ||||
| _) ட் (ரிங்_ t. | |||||
| _நியூ) ட் (ரின t. | _நியூ) ட் (ரின t. | ||||
| _) ட்ரினிட (ி t.rinit. | _) ட்ரினிட (ி t.rinit. | ||||
| _) ட் (ரிம் t. | _) ட் (ரிம் t. | ||||
| ஸ்) த (B t | ஸ்) த (B t | ||||
| ப்) த tV | ப்) த tV | ||||
| ப்) த (B t | ப்) த (B t | ||||
| ட்) த tV | |||||
| ட்) த (B t | |||||
| த் (_த t | த் (_த t | ||||
| // exceptions, த as [d] | // exceptions, த as [d] | ||||
| _) த (கன dV | _) த (கன dV | ||||
| _) த (கி dV | _) த (கி dV | ||||
| _) த (க்க்ஷிண dV | _) த (க்க்ஷிண dV | ||||
| _) த (க்ஷன dV | |||||
| _) த (க்ஷிண dV | _) த (க்ஷிண dV | ||||
| _) த (க்ஷிணா dV | _) த (க்ஷிணா dV | ||||
| _) த (சகண்ட dV | _) த (சகண்ட dV | ||||
| _) த (ட்சன dV | _) த (ட்சன dV | ||||
| _) த (ட்சிண dV | _) த (ட்சிண dV | ||||
| _) த (ண்டக் dV | _) த (ண்டக் dV | ||||
| _) த (ண்டச்செலவ dV | |||||
| _) த (ண்டச்சோற dV | _) த (ண்டச்சோற dV | ||||
| _) த (ண்டத் dV | _) த (ண்டத் dV | ||||
| _) த (ண்டன dV | _) த (ண்டன dV | ||||
| _) த (னுச dV | _) த (னுச dV | ||||
| _) த (னுஷ dV | _) த (னுஷ dV | ||||
| _) த (ன்மந்திரி dV | _) த (ன்மந்திரி dV | ||||
| _) த (ன்ய dV | |||||
| _) த (ன்ராஜ dV | _) த (ன்ராஜ dV | ||||
| _) த (ன்வந்தரி dV | _) த (ன்வந்தரி dV | ||||
| _) தபதப dVbVdVbV# | _) தபதப dVbVdVbV# | ||||
| _) த (ம்பதி dV | _) த (ம்பதி dV | ||||
| _) த (ம்பிடி dV | _) த (ம்பிடி dV | ||||
| _) த (ம்மடிL11் dV | _) த (ம்மடிL11் dV | ||||
| _) த (ம்மத் dV | |||||
| _) த (ம்மம dV | |||||
| _) த (யவ dV | _) த (யவ dV | ||||
| _) த (யாணந்த dV | _) த (யாணந்த dV | ||||
| _) த (யான dV | _) த (யான dV | ||||
| _) த (ர்ப்பை dV | _) த (ர்ப்பை dV | ||||
| _) த (ர்ம dV | _) த (ர்ம dV | ||||
| _) த (லித் dV | _) த (லித் dV | ||||
| _) தலீத் dVli:t | |||||
| _அகாலி_) த (ள dV | _அகாலி_) த (ள dV | ||||
| _) த (ளவாய dV | |||||
| _) த (வக்கால dV | _) த (வக்கால dV | ||||
| _) த (வக்கோல dV | _) த (வக்கோல dV | ||||
| _) த (வத்த dV | _) த (வத்த dV | ||||
| _) த (வப் dV | _) த (வப் dV | ||||
| _) த (வம dV | _) த (வம dV | ||||
| _) தவுலதாப (ாத dVvUlVda:b | _) தவுலதாப (ாத dVvUlVda:b | ||||
| _) த (வே dV | |||||
| _) த (ாக்கா d | _) த (ாக்கா d | ||||
| _) த (ாக்காத t | _) த (ாக்காத t | ||||
| _) த (ாக்காம t | _) த (ாக்காம t | ||||
| _) த (ாராள d | _) த (ாராள d | ||||
| _) த (ாராவி d | _) த (ாராவி d | ||||
| _) த (ாவணி d | _) த (ாவணி d | ||||
| _) த (ாவா d | |||||
| _) த (ாவாக்க d | |||||
| _) த (ாவாவ d | |||||
| _) த (ாவேய d | _) த (ாவேய d | ||||
| _) த (ாஸ d | _) த (ாஸ d | ||||
| _) த (ிகம்பர d | _) த (ிகம்பர d | ||||
| _) த (ிகில d | _) த (ிகில d | ||||
| _) த (ிகுதிகு d | _) த (ிகுதிகு d | ||||
| _) த (ிக்கற்ற d | |||||
| _) த (ிக்கித்த d | _) த (ிக்கித்த d | ||||
| _) த (ிக்கில d | _) த (ிக்கில d | ||||
| _) த (ிக்கு d | _) த (ிக்கு d | ||||
| _) த (ிம்ம d | _) த (ிம்ம d | ||||
| _) தி (யாக t | _) தி (யாக t | ||||
| _) தி (யான d | _) தி (யான d | ||||
| _) தி (யேட்டர t | |||||
| _) த (ிரவ d | _) த (ிரவ d | ||||
| _) த (ிரவிய d | _) த (ிரவிய d | ||||
| _) தி (ராட்சை d | _) தி (ராட்சை d | ||||
| _) த (ிவால d | _) த (ிவால d | ||||
| _) த (ிவ்ய d | _) த (ிவ்ய d | ||||
| _) த (ிவ்விய d | _) த (ிவ்விய d | ||||
| _) தீக்ஷணி (ய di:ks.Vn | |||||
| _) த (ீக்ஷண்ய d | |||||
| _) த (ீக்ஷிதர d | _) த (ீக்ஷிதர d | ||||
| _) தீட்சணி (ய di:d.tSVn. | |||||
| _) த (ீட்சண்ய d | _) த (ீட்சண்ய d | ||||
| _) த (ீட்சித d | _) த (ீட்சித d | ||||
| _) த (ீட்சை d | _) த (ீட்சை d | ||||
| _) த (ீரச் d | _) த (ீரச் d | ||||
| _) த (ீரத்துட d | _) த (ீரத்துட d | ||||
| _) த (ீரன d | _) த (ீரன d | ||||
| _) த (ீரமிக d | |||||
| _) த (ீரமில்ல d | _) த (ீரமில்ல d | ||||
| _) த (ீரமுட d | _) த (ீரமுட d | ||||
| _) த (ீரம்மிக d | _) த (ீரம்மிக d | ||||
| _) தீர்க்க (முள்ள di:rggV# | _) தீர்க்க (முள்ள di:rggV# | ||||
| _) தீர்க்க (ம்_ di:rggV | _) தீர்க்க (ம்_ di:rggV | ||||
| _) தீர்க்க (ாயு di:rggV# | _) தீர்க்க (ாயு di:rggV# | ||||
| _) த (ீர்க்காலோசனை d | |||||
| _) த (ீவாளி d | _) த (ீவாளி d | ||||
| _) து(ரோக d | _) து(ரோக d | ||||
| _) த (ுக்க d | _) த (ுக்க d | ||||
| _) த (ுன்மதி d | _) த (ுன்மதி d | ||||
| _) த (ுன்மார்க்க d | _) த (ுன்மார்க்க d | ||||
| _) த (ுபாய d | _) த (ுபாய d | ||||
| _) த (ுபாஷி d | |||||
| _) த (ுபாஷ d | |||||
| _) த (ுப்பட்டா d | _) த (ுப்பட்டா d | ||||
| _) த (ுமளி d | _) த (ுமளி d | ||||
| _) த (ுரதிருஷ்ட d | _) த (ுரதிருஷ்ட d | ||||
| _) த (ுரதிர்ஷ்ட d | _) த (ுரதிர்ஷ்ட d | ||||
| _) த (ுரதிஷ்ட d | _) த (ுரதிஷ்ட d | ||||
| _) துராக்க (ிர tra:gg | |||||
| _) த (ுராசை d | _) த (ுராசை d | ||||
| _) த (ுரியோதனன d | _) த (ுரியோதனன d | ||||
| _) த (ுரியோதனா d | _) த (ுரியோதனா d | ||||
| _கௌ) த (மி tV | _கௌ) த (மி tV | ||||
| _புல்) த (ரை tV | _புல்) த (ரை tV | ||||
| _மண்) த (ரை tV | _மண்) த (ரை tV | ||||
| _சகுந்) த (லா tV | |||||
| _சாந்) த (லிங்க tV# | _சாந்) த (லிங்க tV# | ||||
| _கீ) த (ா t | _கீ) த (ா t | ||||
| _சீ) த (ா t | _சீ) த (ா t | ||||
| _சுப) த்த (ிர dd | _சுப) த்த (ிர dd | ||||
| _ரு) த்த (ிர dd | _ரு) த்த (ிர dd | ||||
| _ரௌ) த்த (ிர dd | _ரௌ) த்த (ிர dd | ||||
| _சூ) த்த (ிரச் dd | |||||
| _சூ) த்த (ிரச்சி dd | _சூ) த்த (ிரச்சி dd | ||||
| _சூ) த்த (ிரத் dd | |||||
| _சூ) த்த (ிரன dd | _சூ) த்த (ிரன dd | ||||
| _சூ) த்த (ிரப் dd | |||||
| _சூ) த்த (ிரரி dd | _சூ) த்த (ிரரி dd | ||||
| _சூ) த்த (ிரரே dd | |||||
| _சூ) த்த (ிரர் dd | _சூ) த்த (ிரர் dd | ||||
| ஆதி) த்தி (ராவிட dd | ஆதி) த்தி (ராவிட dd | ||||
| _சேஷா) த்த (ிரி dd | _சேஷா) த்த (ிரி dd | ||||
| _வில்_வி) த்த (ை dd | _வில்_வி) த்த (ை dd | ||||
| _வில்வி) த்த (ை dd | _வில்வி) த்த (ை dd | ||||
| _வி) த்த (ைகள dd | _வி) த்த (ைகள dd | ||||
| _வி) த்த (ைக்க dd | |||||
| _வி) த்த (ைக்காக dd | _வி) த்த (ைக்காக dd | ||||
| _வி) த்த (ைக்கு dd | _வி) த்த (ைக்கு dd | ||||
| வி) த்த (ையாக dd | வி) த்த (ையாக dd | ||||
| _) ப (கீர bV | _) ப (கீர bV | ||||
| _) ப (குள bV | _) ப (குள bV | ||||
| _) ப (க்கிங்L06ாம bV | _) ப (க்கிங்L06ாம bV | ||||
| _) ப (க்கீர fV | |||||
| _) ப (க்கெட் bV | _) ப (க்கெட் bV | ||||
| _) ப (க்கென்ற bV | _) ப (க்கென்ற bV | ||||
| _) பக் (த bVk | _) பக் (த bVk | ||||
| _) ப (ங்கம bV | _) ப (ங்கம bV | ||||
| _) பங்க (ர bVNkV | _) பங்க (ர bVNkV | ||||
| _) ப (ங்களா bV | _) ப (ங்களா bV | ||||
| _) ப (ங்களூர bV | |||||
| _) ப (ங்கார bV | _) ப (ங்கார bV | ||||
| _) ப (ங்க் bV | _) ப (ங்க் bV | ||||
| _) ப (சவகல்யாண bV | _) ப (சவகல்யாண bV | ||||
| _) ப (ராக்_ஒபாமா bV | _) ப (ராக்_ஒபாமா bV | ||||
| _) ப (ரிதா_ fV | _) ப (ரிதா_ fV | ||||
| _) ப (ரிதாவ fV | _) ப (ரிதாவ fV | ||||
| _) ப (ரீத fV | |||||
| _) பரூக் fVrU:k | _) பரூக் fVrU:k | ||||
| _) ப (ரோட bV | _) ப (ரோட bV | ||||
| _) ப (ர்ஃபி bV | _) ப (ர்ஃபி bV | ||||
| _) ப (லராம bV | _) ப (லராம bV | ||||
| _) ப (லவந்த bV | _) ப (லவந்த bV | ||||
| _) ப (லவான bV | _) ப (லவான bV | ||||
| _) ப (லவானவ pV | |||||
| _) ப (லவீன bV | _) ப (லவீன bV | ||||
| _) ப (லஹீன bV | _) ப (லஹீன bV | ||||
| _) பலாத்க (ார bVla:dk | _) பலாத்க (ார bVla:dk | ||||
| _) பாங்க (ாக் ba:Nk | _) பாங்க (ாக் ba:Nk | ||||
| _) ப (ாங்கில b | _) ப (ாங்கில b | ||||
| _) ப (ாங்க் b | _) ப (ாங்க் b | ||||
| _) ப (ாசிL04 f | |||||
| _) ப (ாசில f | _) ப (ாசில f | ||||
| _) ப (ாசு b | _) ப (ாசு b | ||||
| _) பாசுப (த pa:sUpV | _) பாசுப (த pa:sUpV | ||||
| _) ப (ாதிக்கவா b | _) ப (ாதிக்கவா b | ||||
| _) ப (ாதிக்கவில் b | _) ப (ாதிக்கவில் b | ||||
| _) ப (ாதிக்காத b | _) ப (ாதிக்காத b | ||||
| _) ப (ாதிக்காமல b | |||||
| _) ப (ாதிக்கால p | _) ப (ாதிக்கால p | ||||
| _) ப (ாதிக்கின்ற b | _) ப (ாதிக்கின்ற b | ||||
| _) ப (ாதிக்கிற b | _) ப (ாதிக்கிற b | ||||
| _) பாப (ாவ ba:b | _) பாப (ாவ ba:b | ||||
| _) ப (ாபிலோன b | _) ப (ாபிலோன b | ||||
| _) ப (ாபுவ b | _) ப (ாபுவ b | ||||
| _டைம்_) ப (ாம b | |||||
| _) ப (ாமாவ b | _) ப (ாமாவ b | ||||
| _) ப (ாமினி b | _) ப (ாமினி b | ||||
| _) ப (ாம்பே b | _) ப (ாம்பே b | ||||
| _) ப (ாரதி b | _) ப (ாரதி b | ||||
| _) ப (ாரத்த b | _) ப (ாரத்த b | ||||
| _) ப (ாரம b | _) ப (ாரம b | ||||
| _) ப (ாரமை p | |||||
| _) ப (ாரம்பரிய p | _) ப (ாரம்பரிய p | ||||
| _) ப (ாரம்மா p | _) ப (ாரம்மா p | ||||
| _) ப (ாரவி b | _) ப (ாரவி b | ||||
| _) ப (ாலுவ b | _) ப (ாலுவ b | ||||
| _) ப (ாலே_L25 b | _) ப (ாலே_L25 b | ||||
| _) ப (ாலை p | _) ப (ாலை p | ||||
| _) ப (ாலையா b | |||||
| _) ப (ால் p | _) ப (ால் p | ||||
| _) ப (ால்_தாக்கரே b | _) ப (ால்_தாக்கரே b | ||||
| _) பால்க (னி ba:lkV | _) பால்க (னி ba:lkV | ||||
| _) ப (ினிஷ f | _) ப (ினிஷ f | ||||
| _) ப (ின்_லேடன b | _) ப (ின்_லேடன b | ||||
| _) ப (ின்னங்கள b | _) ப (ின்னங்கள b | ||||
| _) ப (ின்னத்த b | |||||
| _) ப (ின்னத்தால b | _) ப (ின்னத்தால b | ||||
| _) ப (ின்னத்தை b | _) ப (ின்னத்தை b | ||||
| _) ப (ின்னம b | _) ப (ின்னம b | ||||
| _) பி (ரமுகர p | _) பி (ரமுகர p | ||||
| _) பி (ரமை b | _) பி (ரமை b | ||||
| _) பி (ரமோஷன p | _) பி (ரமோஷன p | ||||
| _) பி (ரமோஸ b | |||||
| _) ப (ிரம்ம b | _) ப (ிரம்ம b | ||||
| _) பி (ரம்ம b | _) பி (ரம்ம b | ||||
| _) பி (ரம்மன b | _) பி (ரம்மன b | ||||
| _) பி (ரளய p | _) பி (ரளய p | ||||
| _) பி (ரவகி p | _) பி (ரவகி p | ||||
| _) பி (ரவாக p | _) பி (ரவாக p | ||||
| _) பி (ரவாள p | |||||
| _) பி (ரவீண p | _) பி (ரவீண p | ||||
| _) பி (ரவீன p | _) பி (ரவீன p | ||||
| _) பி (ரவுச b | _) பி (ரவுச b | ||||
| _) பி (ரவேசி p | _) பி (ரவேசி p | ||||
| _) பி (ரஷ் b | _) பி (ரஷ் b | ||||
| _) பி (ரஷ்ட p | _) பி (ரஷ்ட p | ||||
| _) பி (ரஸ p | |||||
| _) பி (ரஸல்ஸ b | _) பி (ரஸல்ஸ b | ||||
| _) பி (ரஸாத p | _) பி (ரஸாத p | ||||
| _) பி (ரஸ்தா p | _) பி (ரஸ்தா p | ||||
| _) பி (ரான்ச f | _) பி (ரான்ச f | ||||
| _) பி (ரான்தி_ b | _) பி (ரான்தி_ b | ||||
| _) பி (ரான்ஸ f | _) பி (ரான்ஸ f | ||||
| _) பி (ராபல்ய p | |||||
| _) பி (ராப் p | _) பி (ராப் p | ||||
| _) பி (ராமண b | _) பி (ராமண b | ||||
| _) பி (ராமணன b | _) பி (ராமணன b | ||||
| _) பி (ராமிக் b | _) பி (ராமிக் b | ||||
| _) பி (ராமின்_ b | _) பி (ராமின்_ b | ||||
| _) பி (ராமிஸ p | _) பி (ராமிஸ p | ||||
| _) பி (ராம்மண b | |||||
| _) பி (ராய்லர b | _) பி (ராய்லர b | ||||
| _) பி (ரார்தன p | _) பி (ரார்தன p | ||||
| _) பி (ரார்தி p | _) பி (ரார்தி p | ||||
| _) பி (ராவுக்கு b | _) பி (ராவுக்கு b | ||||
| _) பி (ராவை b | _) பி (ராவை b | ||||
| _) பி (ரிகேட b | _) பி (ரிகேட b | ||||
| _) பி (ரிஜேஷ b | |||||
| _) பி (ரிட b | _) பி (ரிட b | ||||
| _) பிரிட (ோரிய prit. | _) பிரிட (ோரிய prit. | ||||
| _) பி (ரிட்டோரிய p | _) பி (ரிட்டோரிய p | ||||
| _) பி (ரியாவின p | _) பி (ரியாவின p | ||||
| _) பி (ரியாவு p | _) பி (ரியாவு p | ||||
| _) பி (ரியாவை p | _) பி (ரியாவை p | ||||
| _) பி (ரில்லிய b | |||||
| _) பி (ரிஸ்டன b | _) பி (ரிஸ்டன b | ||||
| _) பி (ரிஸ்டல b | _) பி (ரிஸ்டல b | ||||
| _) பிரிஸ்ப (ேன brisb | _) பிரிஸ்ப (ேன brisb | ||||
| _) பி (ரோகிதர p | _) பி (ரோகிதர p | ||||
| _) பி (ரௌச b | _) பி (ரௌச b | ||||
| _) பி (ரௌன b | _) பி (ரௌன b | ||||
| _) ப (ிர்லா b | |||||
| _) ப (ிலாஸ்பூர b | _) ப (ிலாஸ்பூர b | ||||
| _) பிலிடெல்ப (ிய filidelf | _) பிலிடெல்ப (ிய filidelf | ||||
| _) பிலிம filmV# | _) பிலிம filmV# | ||||
| _) ப (ீடித்த p | _) ப (ீடித்த p | ||||
| _) ப (ீடிப்புகை b | _) ப (ீடிப்புகை b | ||||
| _) ப (ீடிய b | _) ப (ீடிய b | ||||
| _) ப (ீடியாட் p | |||||
| _) ப (ீட்டில்ஸ b | _) ப (ீட்டில்ஸ b | ||||
| _) பீட்ரூட் bi:t.ru:t. | _) பீட்ரூட் bi:t.ru:t. | ||||
| _) பீத (ோவன bi:t | _) பீத (ோவன bi:t | ||||
| _) பீ (ராமண b | _) பீ (ராமண b | ||||
| _) ப (ீராமணர b | _) ப (ீராமணர b | ||||
| _) ப (ீரிட p | _) ப (ீரிட p | ||||
| _) ப (ீரியட p | |||||
| _) ப (ீரோ b | _) ப (ீரோ b | ||||
| _) ப (ீர்_முகமத p | _) ப (ீர்_முகமத p | ||||
| _) ப (ீர்_முஹமத p | _) ப (ீர்_முஹமத p | ||||
| _) ப (ெங்களூர b | _) ப (ெங்களூர b | ||||
| _) ப (ெங்கால b | _) ப (ெங்கால b | ||||
| _) பெசண்ட besVn.t.V# | _) பெசண்ட besVn.t.V# | ||||
| _) பெச (வாடா beZV | |||||
| _) பெஜ (வாடா beZV | |||||
| _) பெஞ்ச ben^tSV# | _) பெஞ்ச ben^tSV# | ||||
| _) ப (ெஞ்சமின b | _) ப (ெஞ்சமின b | ||||
| _) பெஞ்ச (மின ben^dZV | _) பெஞ்ச (மின ben^dZV | ||||
| _) ப (ெப்ரவரி f | _) ப (ெப்ரவரி f | ||||
| _) ப (ெயில f | _) ப (ெயில f | ||||
| _) பெரோஸ fero:zV# | _) பெரோஸ fero:zV# | ||||
| _) ப (ெர்க்கிலி b | |||||
| _) பெர்ட் (ரண்ட bert. | _) பெர்ட் (ரண்ட bert. | ||||
| _) ப (ெர்த் b | _) ப (ெர்த் b | ||||
| _) ப (ெர்னாட்ஷா b | _) ப (ெர்னாட்ஷா b | ||||
| _) ப (ைகுக்கு b | _) ப (ைகுக்கு b | ||||
| _) ப (ைக்கின b | _) ப (ைக்கின b | ||||
| _) ப (ைக்கிற்க b | _) ப (ைக்கிற்க b | ||||
| _) ப (ைக்கில b | |||||
| _) ப (ைக்குகள b | _) ப (ைக்குகள b | ||||
| _) ப (ைக்கும b | _) ப (ைக்கும b | ||||
| _) ப (ைசன b | _) ப (ைசன b | ||||
| _) ப (ொம்மனாட்டி p | _) ப (ொம்மனாட்டி p | ||||
| _) ப (ொம்மல b | _) ப (ொம்மல b | ||||
| _) ப (ொம்மை b | _) ப (ொம்மை b | ||||
| _) ப (ோஃபர்ஸ b | |||||
| _) ப (ோஃபோர் b | _) ப (ோஃபோர் b | ||||
| _) ப (ோக_L13 b | _) ப (ோக_L13 b | ||||
| _) ப (ோகங்க b | _) ப (ோகங்க b | ||||
| _) ப (ோகிய b | _) ப (ோகிய b | ||||
| _) ப (ோக்கஸ f | _) ப (ோக்கஸ f | ||||
| _) ப (ோங்கா b | _) ப (ோங்கா b | ||||
| _) ப (ோங்கானும p | |||||
| _) ப (ோங்கு b | _) ப (ோங்கு b | ||||
| _) ப (ோஜ b | _) ப (ோஜ b | ||||
| _) ப (ோடோ b | _) ப (ோடோ b | ||||
| _) ப (ோட்டோக்க f | _) ப (ோட்டோக்க f | ||||
| _) போட்டோக்ராப (ர fo:t.t.o:gra:fV | _) போட்டோக்ராப (ர fo:t.t.o:gra:fV | ||||
| _) ப (ோட்டோதான f | _) ப (ோட்டோதான f | ||||
| _) ப (ோணி b | |||||
| _) ப (ோண்டா b | _) ப (ோண்டா b | ||||
| _) ப (ோண்டி b | _) ப (ோண்டி b | ||||
| _) ப (ோதகன b | _) ப (ோதகன b | ||||
| _) ப (ோன்கூட f | _) ப (ோன்கூட f | ||||
| _) ப (ோன்லகூட f | _) ப (ோன்லகூட f | ||||
| _) ப (ோன்ஸ்லே b | _) ப (ோன்ஸ்லே b | ||||
| _) போப (ர்ஸ bo:fV | |||||
| _) போப (ால bo:p | _) போப (ால bo:p | ||||
| _) போப (ோர் bo:f | _) போப (ோர் bo:f | ||||
| _) ப (ோரடி b | _) ப (ோரடி b | ||||
| _மீள்) ப (தி pV | _மீள்) ப (தி pV | ||||
| சீதா) பதி pVti | சீதா) பதி pVti | ||||
| சேது) பதி pVti | சேது) பதி pVti | ||||
| _விடு) ப (தி pV | |||||
| தரணி) பதி pVti | தரணி) பதி pVti | ||||
| திரௌ) ப (தி pV | திரௌ) ப (தி pV | ||||
| பிரஜா) பத (ி pVt | பிரஜா) பத (ி pVt | ||||
| _க) ப (த் bV | _க) ப (த் bV | ||||
| அரா) பத் fVt | அரா) பத் fVt | ||||
| அல்) ப (த் pV | அல்) ப (த் pV | ||||
| _கிலா) பத் fVt | |||||
| _தா) ப (த்த bV | _தா) ப (த்த bV | ||||
| வீர) ப (த்தினி pV | வீர) ப (த்தினி pV | ||||
| _ரிஷி) ப (த்தினி pV | _ரிஷி) ப (த்தினி pV | ||||
| _ஊடு) ப (யிர pV | _ஊடு) ப (யிர pV | ||||
| _நடை) ப (யிற்சி pV | _நடை) ப (யிற்சி pV | ||||
| கா) ப (ர bV | கா) ப (ர bV | ||||
| _ஜெனி) ப (ர fV | |||||
| நாகா) ப (ரண bV | நாகா) ப (ரண bV | ||||
| _ஒலி) ப (ரப் pV | _ஒலி) ப (ரப் pV | ||||
| _ஒளி) ப (ரப் pV | _ஒளி) ப (ரப் pV | ||||
| _கார்) ப (ரேஷன pV | _கார்) ப (ரேஷன pV | ||||
| _பம்) ப (ர்_ pV | _பம்) ப (ர்_ pV | ||||
| _கன்) ப (ர்ம fV | _கன்) ப (ர்ம fV | ||||
| இன்) ப (ர்ம fV | |||||
| கரம்) ப (ற் pV | கரம்) ப (ற் pV | ||||
| _தீ) ப (ற்ற pV | _தீ) ப (ற்ற pV | ||||
| ஆள்) ப (ற்ற pV | ஆள்) ப (ற்ற pV | ||||
| _ஷில்) ப (ா p | _ஷில்) ப (ா p | ||||
| _முஸ்த) ப (ா f | _முஸ்த) ப (ா f | ||||
| _ஹனி) ப (ா f | _ஹனி) ப (ா f | ||||
| _ஹனீ) ப (ா f | |||||
| _போதும்) ப (ா p | _போதும்) ப (ா p | ||||
| _போலாம்) ப (ா p | _போலாம்) ப (ா p | ||||
| _வேண்டாம்) ப (ா p | _வேண்டாம்) ப (ா p | ||||
| ஒரு) ப (ாத p | ஒரு) ப (ாத p | ||||
| _படு) ப (ாத p | _படு) ப (ாத p | ||||
| _மறு) ப (ாத p | _மறு) ப (ாத p | ||||
| பரீதா) ப (ாத b | |||||
| ஆமதா) ப (ாத b | ஆமதா) ப (ாத b | ||||
| அL06மதா) ப (ாத b | அL06மதா) ப (ாத b | ||||
| அலாகா) ப (ாத b | |||||
| இஸ்லாமா) ப (ாத b | இஸ்லாமா) ப (ாத b | ||||
| ஒளரங்கா) ப (ாத b | ஒளரங்கா) ப (ாத b | ||||
| ஔரங்கா) ப (ாத b | ஔரங்கா) ப (ாத b | ||||
| முக) ப (ாவ b | முக) ப (ாவ b | ||||
| அட) ப (ாவ p | அட) ப (ாவ p | ||||
| வீண்) ப (ாவ p | வீண்) ப (ாவ p | ||||
| _படு) ப (ாவ p | |||||
| அடி) ப (ாவி p | அடி) ப (ாவி p | ||||
| _நவ) ப (ாஷ p | _நவ) ப (ாஷ p | ||||
| _தமிழ்ப்) ப (ாஷ _b | _தமிழ்ப்) ப (ாஷ _b | ||||
| @) ப (ின்னால்_ p | @) ப (ின்னால்_ p | ||||
| _) ப (ிப்ரவரி f | _) ப (ிப்ரவரி f | ||||
| _லெஸ்) ப (ியன b | _லெஸ்) ப (ியன b | ||||
| _மா) ப (ியா f | |||||
| _கன்) பி (யுச f | _கன்) பி (யுச f | ||||
| _பெர்) பி (யூம f | _பெர்) பி (யூம f | ||||
| _வரப்) பி (ரL04ாத p | _வரப்) பி (ரL04ாத p | ||||
| வீண்) பி (ரமை b | வீண்) பி (ரமை b | ||||
| துஷ்) பி (ரயோக p | துஷ்) பி (ரயோக p | ||||
| L03ந்தப்) பி (ரளய p | L03ந்தப்) பி (ரளய p | ||||
| _சொற்) பி (ரவாக p | |||||
| எக்ஸ்) பிர (ஸ pre | எக்ஸ்) பிர (ஸ pre | ||||
| ஆ) பி (ரஹாம b | ஆ) பி (ரஹாம b | ||||
| பயப்) பி (ராந்தி b | பயப்) பி (ராந்தி b | ||||
| ஆண்) ப (ிள்ளை p | ஆண்) ப (ிள்ளை p | ||||
| பெண்) ப (ிள்ளை p | பெண்) ப (ிள்ளை p | ||||
| அச்சா) ப (ீ f | அச்சா) ப (ீ f | ||||
| _ர) பீக் fi:k | |||||
| உப) ப (ீட p | உப) ப (ீட p | ||||
| விக்கி) ப (ீடியா p | விக்கி) ப (ீடியா p | ||||
| இம்) ப (ீரியல p | இம்) ப (ீரியல p | ||||
| _அன்) ப (ுட b | _அன்) ப (ுட b | ||||
| _மார்) ப (ுட b | _மார்) ப (ுட b | ||||
| ராஜ) ப (ுதன p | ராஜ) ப (ுதன p | ||||
| _மின்) ப (ுத்தக p | |||||
| _) புத்தம்ப (ுத puttVmp | _) புத்தம்ப (ுத puttVmp | ||||
| ராஜ) ப (ுத்திர p | ராஜ) ப (ுத்திர p | ||||
| வாயு) ப (ுத்திர p | வாயு) ப (ுத்திர p | ||||
| _பா) ப (ுலர p | _பா) ப (ுலர p | ||||
| _) பு (ளோரன்ஸ f | _) பு (ளோரன்ஸ f | ||||
| மண்) ப (ுழு p | மண்) ப (ுழு p | ||||
| _ஷாம்) ப (ூ p | |||||
| ப (ூச்சி p | ப (ூச்சி p | ||||
| ம்) ப (ூச்சி b | ம்) ப (ூச்சி b | ||||
| உறுதி) ப (ூண்ட p | உறுதி) ப (ூண்ட p | ||||
| _கை) ப (ேசி p | _கை) ப (ேசி p | ||||
| _செல்) ப (ேசி p | _செல்) ப (ேசி p | ||||
| அலை) ப (ேசி p | அலை) ப (ேசி p | ||||
| _திரை) ப (ேசி p | |||||
| தொலை) ப (ேசி p | தொலை) ப (ேசி p | ||||
| _மறு) ப (ேச்ச p | _மறு) ப (ேச்ச p | ||||
| ஒரு) ப (ேச்ச p | ஒரு) ப (ேச்ச p | ||||
| _ வெடி) ப (ொரு p | _ வெடி) ப (ொரு p | ||||
| _பழம்) ப (ொருள p | _பழம்) ப (ொருள p | ||||
| _தொல்) ப (ொருள p | _தொல்) ப (ொருள p | ||||
| _தேடு) ப (ொறி p | |||||
| வீண்) ப (ொழுத p | வீண்) ப (ொழுத p | ||||
| ப (ொழுதிலா_+ p | ப (ொழுதிலா_+ p | ||||
| ப (ொழுதிலும்_+ p | ப (ொழுதிலும்_+ p | ||||
| ப (ொழுதே_+ p | ப (ொழுதே_+ p | ||||
| ப (ொழுதோ_+ p | ப (ொழுதோ_+ p | ||||
| _விலை) ப (ோ p | _விலை) ப (ோ p | ||||
| _பிர) ப (ோL04 p | |||||
| _ஏக) ப (ோக b | _ஏக) ப (ோக b | ||||
| ராஜ) ப (ோக b | ராஜ) ப (ோக b | ||||
| ப (ோக_ p | ப (ோக_ p | ||||
| ப (ோன_ p | ப (ோன_ p | ||||
| ப (ோனது_ p | ப (ோனது_ p | ||||
| ப (ோனா p | ப (ோனா p | ||||
| அல்) ப (ோன்சா f | |||||
| ப (ோன்ற+ p // ?? end-of-word + suffix ?? | ப (ோன்ற+ p // ?? end-of-word + suffix ?? | ||||
| அல்) ப (ோன்ஸ f | அல்) ப (ோன்ஸ f | ||||
| ப (ோயிரு p | ப (ோயிரு p | ||||
| _டே) ப (் p | _டே) ப (் p | ||||
| _போ) ப் p | _போ) ப் p | ||||
| _லாக) ப் p | _லாக) ப் p | ||||
| ஆசி) ப் f | |||||
| _டெஸ்க்டா) ப் p | _டெஸ்க்டா) ப் p | ||||
| ஆ) ப் (கன f | |||||
| ஆ) ப் (கான f | ஆ) ப் (கான f | ||||
| _பா) ப்க (ார்ன pk | _பா) ப்க (ார்ன pk | ||||
| _ர) ப்ச (ர ptSV | _ர) ப்ச (ர ptSV | ||||
| _லி) ப் (ட f | _லி) ப் (ட f | ||||
| _மைக்ரோசா) ப் (ட f | _மைக்ரோசா) ப் (ட f | ||||
| _சா) ப்ட் (வேர ft | _சா) ப்ட் (வேர ft | ||||
| _ச) ப் (த_ p | |||||
| _ச) ப்த (மி_ ptV | |||||
| _ச) ப்த (மிய ptV | |||||
| _ச) ப் (தரிஷி p | |||||
| _ச) ப் (தஸ்வர p | |||||
| _ஹி) ப்னாட (ிச pna:t. | _ஹி) ப்னாட (ிச pna:t. | ||||
| கர்) ப்ப bbV# | கர்) ப்ப bbV# | ||||
| _நவா) ப்ப bbV# | _நவா) ப்ப bbV# | ||||
| _ர) ப்ப (ர bbV | _ர) ப்ப (ர bbV | ||||
| ஆ) ப்ப (ரிக்க fV | ஆ) ப்ப (ரிக்க fV | ||||
| தென்னா) ப்ப (ரிக்க fV | தென்னா) ப்ப (ரிக்க fV | ||||
| _துர்) ப்ப (ல bbV | |||||
| உ) ப்ப (லா bbV | உ) ப்ப (லா bbV | ||||
| உ) ப்ப (லாக bbV | உ) ப்ப (லாக bbV | ||||
| உ) ப்ப (லான bbV | உ) ப்ப (லான bbV | ||||
| _ஜ) ப்ப (ார bb | _ஜ) ப்ப (ார bb | ||||
| _துர்) ப்ப (ாஷ bb | _துர்) ப்ப (ாஷ bb | ||||
| அ) ப்ப (ாஸ bb | அ) ப்ப (ாஸ bb | ||||
| அ) ப்ப (ாஸாமி pp | |||||
| அ) ப்ப (ாஸ்வாமி pp | |||||
| உ) ப்ப (ி_ bb | உ) ப்ப (ி_ bb | ||||
| _ட) ப்ப (ிங் bb | _ட) ப்ப (ிங் bb | ||||
| உ) ப்ப (ின_ bb | உ) ப்ப (ின_ bb | ||||
| L03) ப்பி (ரகார pp | L03) ப்பி (ரகார pp | ||||
| _வெளி) ப்பி (ரகார pp | _வெளி) ப்பி (ரகார pp | ||||
| அதிக) ப்பி (ரசங்க pp | அதிக) ப்பி (ரசங்க pp | ||||
| _வன) ப்பி (ரதேச pp | |||||
| _காட்டு) ப்பி (ரதேச pp | |||||
| _நில) ப்பி (ரபு pp | _நில) ப்பி (ரபு pp | ||||
| _சத்திய) ப்பி (ரமா pp | _சத்திய) ப்பி (ரமா pp | ||||
| மன) ப்பி (ரமை bb | மன) ப்பி (ரமை bb | ||||
| _மன) ப்பி (ரவாக pp | _மன) ப்பி (ரவாக pp | ||||
| _ரத்த) ப்பி (ரவாக pp | _ரத்த) ப்பி (ரவாக pp | ||||
| இசை) ப்பி (ரவாக pp | இசை) ப்பி (ரவாக pp | ||||
| உரை) ப்பி (ரவாக pp | |||||
| இரத்த) ப்பி (ரவாக pp | இரத்த) ப்பி (ரவாக pp | ||||
| _ஒL10ி) ப்பி (ரவாக pp | _ஒL10ி) ப்பி (ரவாக pp | ||||
| தேச) ப்பி (ரஷ்ட pp | தேச) ப்பி (ரஷ்ட pp | ||||
| _ஜாதி) ப்பி (ரஷ்ட pp | _ஜாதி) ப்பி (ரஷ்ட pp | ||||
| _வான) ப்பி (ரஸ்த pp | |||||
| ஆ) ப்பி (ரிக்க f | ஆ) ப்பி (ரிக்க f | ||||
| தென்னா) ப்பி (ரிக்க fV | தென்னா) ப்பி (ரிக்க fV | ||||
| _கஜ) ப்ப (ிருஷ்ட bb | _கஜ) ப்ப (ிருஷ்ட bb | ||||
| _உ) ஸ்பெக் zbek | _உ) ஸ்பெக் zbek | ||||
| _நவா) ஸ zV# | _நவா) ஸ zV# | ||||
| பெர்னாண்ட) ஸ zV# | பெர்னாண்ட) ஸ zV# | ||||
| _ம) ஸ்த (ூர zd | |||||
| அரி) ஸ (ோன z | |||||
| .group ஹ | .group ஹ | ||||
| ஹ HV | ஹ HV |
| phoneme @L | phoneme @L | ||||
| vowel starttype #@ endtype l | vowel starttype #@ endtype l | ||||
| ipa əl | |||||
| ipa ə|l | |||||
| unstressed | unstressed | ||||
| length 160 | length 160 | ||||
| CALL vowelstart_l | CALL vowelstart_l |
| vowel starttype #a endtype #@ | vowel starttype #a endtype #@ | ||||
| length 250 | length 250 | ||||
| ipa aː | ipa aː | ||||
| AppendPhoneme(r) | |||||
| IF NOT nextPhW(r) THEN | |||||
| AppendPhoneme(r) | |||||
| ENDIF | |||||
| FMT(vowelr/aa_r) | FMT(vowelr/aa_r) | ||||
| endphoneme | endphoneme | ||||
| vowel starttype #o endtype #@ | vowel starttype #o endtype #@ | ||||
| length 230 | length 230 | ||||
| ipa ɔ | ipa ɔ | ||||
| AppendPhoneme(r) | |||||
| IF NOT nextPhW(r) THEN | |||||
| AppendPhoneme(r) | |||||
| ENDIF | |||||
| FMT(vowelr/oo_r) | FMT(vowelr/oo_r) | ||||
| endphoneme | endphoneme | ||||
| vowel starttype #o endtype #@ | vowel starttype #o endtype #@ | ||||
| length 230 | length 230 | ||||
| ipa o | ipa o | ||||
| AppendPhoneme(r) | |||||
| IF NOT nextPhW(r) THEN | |||||
| AppendPhoneme(r) | |||||
| ENDIF | |||||
| FMT(vowelr/oo_r) | FMT(vowelr/oo_r) | ||||
| endphoneme | endphoneme | ||||
| vowel starttype #e endtype #@ | vowel starttype #e endtype #@ | ||||
| length 220 | length 220 | ||||
| ipa e | ipa e | ||||
| AppendPhoneme(r) | |||||
| IF NOT nextPhW(r) THEN | |||||
| AppendPhoneme(r) | |||||
| ENDIF | |||||
| FMT(vdiph2/e@) | FMT(vdiph2/e@) | ||||
| endphoneme | endphoneme | ||||
| vowel starttype #i endtype #@ | vowel starttype #i endtype #@ | ||||
| ipa ɪ | ipa ɪ | ||||
| length 240 | length 240 | ||||
| AppendPhoneme(r) | |||||
| IF NOT nextPhW(r) THEN | |||||
| AppendPhoneme(r) | |||||
| ENDIF | |||||
| FMT(vowelr/i_r) | FMT(vowelr/i_r) | ||||
| endphoneme | endphoneme | ||||
| liquid rhotic | liquid rhotic | ||||
| lengthmod 7 | lengthmod 7 | ||||
| trill | trill | ||||
| IF nextPh(isNotVowel) THEN | IF nextPh(isNotVowel) THEN | ||||
| ChangePhoneme(r/) | ChangePhoneme(r/) | ||||
| ENDIF | ENDIF | ||||
| CALL base/r | CALL base/r | ||||
| ipa r | |||||
| endphoneme | endphoneme | ||||
| phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American | phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| ipa ɑːɹ | |||||
| ipa ɑː|ɹ | |||||
| IF nextPh(r-) THEN | IF nextPh(r-) THEN | ||||
| ipa ɑː | ipa ɑː | ||||
| ENDIF | ENDIF | ||||
| phoneme O@ | phoneme O@ | ||||
| vowel starttype #o endtype #@ | vowel starttype #o endtype #@ | ||||
| length 250 | length 250 | ||||
| ipa ɔːɹ | |||||
| ipa ɔː|ɹ | |||||
| IF nextPhW(r) THEN | IF nextPhW(r) THEN | ||||
| ipa ɔː | ipa ɔː | ||||
| ENDIF | ENDIF | ||||
| phoneme o@ | phoneme o@ | ||||
| vowel starttype #o endtype #@ | vowel starttype #o endtype #@ | ||||
| length 250 | length 250 | ||||
| ipa oːɹ | |||||
| ipa oː|ɹ | |||||
| IF nextPhW(r) THEN | IF nextPhW(r) THEN | ||||
| ipa oː | ipa oː | ||||
| ENDIF | ENDIF | ||||
| phoneme e@ | phoneme e@ | ||||
| vowel starttype #e endtype #@ | vowel starttype #e endtype #@ | ||||
| length 280 | length 280 | ||||
| ipa ɛɹ | |||||
| ipa ɛ|ɹ | |||||
| IF nextPhW(r) THEN | IF nextPhW(r) THEN | ||||
| ipa ɛ | ipa ɛ | ||||
| ENDIF | ENDIF | ||||
| phoneme i@3 | phoneme i@3 | ||||
| vowel starttype #i endtype #@ | vowel starttype #i endtype #@ | ||||
| length 280 | length 280 | ||||
| ipa ɪɹ | |||||
| ipa ɪ|ɹ | |||||
| IF nextPhW(r) THEN | IF nextPhW(r) THEN | ||||
| ipa ɪ | ipa ɪ | ||||
| ENDIF | ENDIF | ||||
| phoneme U@ | phoneme U@ | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 250 | length 250 | ||||
| ipa ʊɹ | |||||
| ipa ʊ|ɹ | |||||
| IF nextPhW(r-) THEN | IF nextPhW(r-) THEN | ||||
| ipa ʊ | ipa ʊ | ||||
| ENDIF | ENDIF |
| extern void FindPhonemesUsed(void); | extern void FindPhonemesUsed(void); | ||||
| extern void DisplayErrorFile(const char *fname); | 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 int utf8_out(unsigned int c, char *buf); | ||||
| extern void DrawEnvelopes(); | extern void DrawEnvelopes(); | ||||
| extern void ReadPhondataManifest(); | extern void ReadPhondataManifest(); | ||||
| enum { | enum { | ||||
| kPHONEMESTART = 1, | kPHONEMESTART = 1, | ||||
| kUTF8_BOM, | |||||
| kPROCEDURE, | kPROCEDURE, | ||||
| kENDPHONEME, | kENDPHONEME, | ||||
| kENDPROCEDURE, | kENDPROCEDURE, | ||||
| kTUNE_SPLIT, | kTUNE_SPLIT, | ||||
| }; | }; | ||||
| static const char utf8_bom[] = {0xef,0xbb,0xbf,0}; | |||||
| static keywtab_t k_intonation[] = { | static keywtab_t k_intonation[] = { | ||||
| {"tune", 0, kTUNE}, | {"tune", 0, kTUNE}, | ||||
| {"endtune", 0, kENDTUNE}, | {"endtune", 0, kENDTUNE}, | ||||
| {"phonemenumber",tSTATEMENT, kPHONEMENUMBER}, | {"phonemenumber",tSTATEMENT, kPHONEMENUMBER}, | ||||
| {"phonemetable",tSTATEMENT, kPHONEMETABLE}, | {"phonemetable",tSTATEMENT, kPHONEMETABLE}, | ||||
| {"include", tSTATEMENT, kINCLUDE}, | {"include", tSTATEMENT, kINCLUDE}, | ||||
| {utf8_bom, tSTATEMENT, kUTF8_BOM}, | |||||
| {"phoneme", tSTATEMENT, kPHONEMESTART}, | {"phoneme", tSTATEMENT, kPHONEMESTART}, | ||||
| {"procedure", tSTATEMENT, kPROCEDURE}, | {"procedure", tSTATEMENT, kPROCEDURE}, | ||||
| int keyword; | int keyword; | ||||
| int value; | int value; | ||||
| int phcode = 0; | int phcode = 0; | ||||
| int flags; | |||||
| int ix; | int ix; | ||||
| unsigned int c; | |||||
| int start; | |||||
| int count; | |||||
| int c; | |||||
| char *p; | char *p; | ||||
| char number_buf[12]; | char number_buf[12]; | ||||
| char ipa_buf[N_ITEM_STRING]; | |||||
| char ipa_buf[N_ITEM_STRING+1]; | |||||
| PHONEME_TAB phoneme_out2; | PHONEME_TAB phoneme_out2; | ||||
| PHONEME_PROG_LOG phoneme_prog_log; | PHONEME_PROG_LOG phoneme_prog_log; | ||||
| strcpy(item_string," "); | strcpy(item_string," "); | ||||
| // copy the string, recognize characters in the form U+9999 | // 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]=='+')) | if((c=='U') && (p[0]=='+')) | ||||
| { | { | ||||
| int j; | |||||
| // U+9999 | // 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; | number_buf[4] = 0; | ||||
| c = 0; | |||||
| c = '#'; | |||||
| sscanf(number_buf,"%x",&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]); | ix += utf8_out(c, &ipa_buf[ix]); | ||||
| count++; | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| ipa_buf[ix++] = c; | |||||
| ix += utf8_out(c, &ipa_buf[ix]); | |||||
| count++; | |||||
| } | } | ||||
| } | } | ||||
| ipa_buf[0] = flags; | |||||
| ipa_buf[ix] = 0; | 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; | *prog_out++ = (i_IPA_NAME << 8) + value; | ||||
| for(ix=0; ix < value; ix += 2) | 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; | break; | ||||
| } | } | ||||
| switch(item) | switch(item) | ||||
| { | { | ||||
| case kUTF8_BOM: | |||||
| break; // ignore bytes 0xef 0xbb 0xbf | |||||
| case kINCLUDE: | case kINCLUDE: | ||||
| NextItem(tSTRING); | NextItem(tSTRING); | ||||
| sprintf(buf,"%s%s",path_source,item_string); | sprintf(buf,"%s%s",path_source,item_string); |
| }; | }; | ||||
| 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 c; | ||||
| int mnem; | int mnem; | ||||
| int len; | int len; | ||||
| int first; | int first; | ||||
| int ix = 0; | int ix = 0; | ||||
| char *p; | 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; | PHONEME_DATA phdata; | ||||
| if(ph->code == phonEND_WORD) | if(ph->code == phonEND_WORD) | ||||
| InterpretPhoneme(NULL, 0, plist, &phdata, NULL); | 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(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); | |||||
| } | } | ||||
| } | } | ||||
| unsigned int max_len; | unsigned int max_len; | ||||
| int phon_out_ix=0; | int phon_out_ix=0; | ||||
| int stress; | int stress; | ||||
| unsigned int c; | |||||
| int c; | |||||
| char *p; | |||||
| char *buf; | char *buf; | ||||
| int count; | |||||
| int flags; | |||||
| char phon_buf[30]; | char phon_buf[30]; | ||||
| char phon_buf2[30]; | |||||
| PHONEME_LIST *plist; | PHONEME_LIST *plist; | ||||
| static const char *stress_chars = "==,,''"; | static const char *stress_chars = "==,,''"; | ||||
| static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | |||||
| if(phon_out != NULL) | if(phon_out != NULL) | ||||
| { | { | ||||
| } | } | ||||
| } | } | ||||
| 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->ph->code != phonSWITCH) | ||||
| { | { | ||||
| if(plist->synthflags & SFLAG_LENGTHEN) | 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)) | if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | ||||
| { | { | ||||
| // syllablic consonant | // 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) | 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); | |||||
| } | } | ||||
| } | } | ||||
| "\t Compile pronunciation rules and dictionary from the current\n" | "\t Compile pronunciation rules and dictionary from the current\n" | ||||
| "\t directory. <voice name> specifies the language\n" | "\t directory. <voice name> specifies the language\n" | ||||
| "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | ||||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||||
| "--path=\"<path>\"\n" | "--path=\"<path>\"\n" | ||||
| "\t Specifies the directory containing the espeak-data directory\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" | "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | ||||
| {"path", required_argument, 0, 0x107}, | {"path", required_argument, 0, 0x107}, | ||||
| {"phonout", required_argument, 0, 0x108}, | {"phonout", required_argument, 0, 0x108}, | ||||
| {"pho", no_argument, 0, 0x109}, | {"pho", no_argument, 0, 0x109}, | ||||
| {"ipa", no_argument, 0, 0x10a}, | |||||
| {"ipa", optional_argument, 0, 0x10a}, | |||||
| {"version", no_argument, 0, 0x10b}, | {"version", no_argument, 0, 0x10b}, | ||||
| {0, 0, 0, 0} | {0, 0, 0, 0} | ||||
| }; | }; | ||||
| case 0x10a: // --ipa | case 0x10a: // --ipa | ||||
| option_phonemes = 3; | 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; | break; | ||||
| case 0x10b: // -version | case 0x10b: // -version |
| "\t Compile pronunciation rules and dictionary from the current\n" | "\t Compile pronunciation rules and dictionary from the current\n" | ||||
| "\t directory. <voice name> specifies the language\n" | "\t directory. <voice name> specifies the language\n" | ||||
| "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" | ||||
| "\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" | |||||
| "--path=\"<path>\"\n" | "--path=\"<path>\"\n" | ||||
| "\t Specifies the directory containing the espeak-data directory\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" | "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" | ||||
| {"path", required_argument, 0, 0x107}, | {"path", required_argument, 0, 0x107}, | ||||
| {"phonout", required_argument, 0, 0x108}, | {"phonout", required_argument, 0, 0x108}, | ||||
| {"pho", no_argument, 0, 0x109}, | {"pho", no_argument, 0, 0x109}, | ||||
| {"ipa", no_argument, 0, 0x10a}, | |||||
| {"ipa", optional_argument, 0, 0x10a}, | |||||
| {"version", no_argument, 0, 0x10b}, | {"version", no_argument, 0, 0x10b}, | ||||
| {0, 0, 0, 0} | {0, 0, 0, 0} | ||||
| }; | }; | ||||
| case 0x10a: // --ipa | case 0x10a: // --ipa | ||||
| option_phonemes = 3; | 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; | break; | ||||
| case 0x10b: // --version | case 0x10b: // --version |
| static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) | static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) | ||||
| {//====================================================================== | {//====================================================================== | ||||
| ENTER("dispatch_audio"); | ENTER("dispatch_audio"); | ||||
| int a_wave_can_be_played = fifo_is_command_enabled(); | int a_wave_can_be_played = fifo_is_command_enabled(); | ||||
| #ifdef DEBUG_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, | (event) ? event->sample : 0, | ||||
| a_wave_can_be_played); | a_wave_can_be_played); | ||||
| #endif | #endif | ||||
| while(a_wave_can_be_played) { | while(a_wave_can_be_played) { | ||||
| // TBD: some event are filtered here but some insight might be given | // 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: 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. | // TBD: the last one has its size=0. | ||||
| if (event && (event->type == espeakEVENT_WORD) && (event->length==0)) | if (event && (event->type == espeakEVENT_WORD) && (event->length==0)) | ||||
| { | { | ||||
| } | } | ||||
| SHOW_TIME("LEAVE dispatch_audio\n"); | SHOW_TIME("LEAVE dispatch_audio\n"); | ||||
| return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error | return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error | ||||
| } | } | ||||
| int i=0; | int i=0; | ||||
| // The audio data are written to the output device. | // 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. | // Each event is declared to the "event" object which stores them internally. | ||||
| // The event object is responsible of calling the external callback | // The event object is responsible of calling the external callback | ||||
| // as soon as the relevant audio sample is played. | // as soon as the relevant audio sample is played. | ||||
| do | |||||
| do | |||||
| { // for each event | { // for each event | ||||
| espeak_EVENT* event; | espeak_EVENT* event; | ||||
| if (event_list_ix == 0) | if (event_list_ix == 0) | ||||
| if (my_mode==AUDIO_OUTPUT_PLAYBACK) | if (my_mode==AUDIO_OUTPUT_PLAYBACK) | ||||
| { | { | ||||
| while(1) | |||||
| while(1) | |||||
| { | { | ||||
| espeak_ERROR a_error = event_declare(event_list); | espeak_ERROR a_error = event_declare(event_list); | ||||
| if (a_error != EE_BUFFER_FULL) | if (a_error != EE_BUFFER_FULL) | ||||
| int GetFileLength(const char *filename) | int GetFileLength(const char *filename) | ||||
| {//==================================== | {//==================================== | ||||
| struct stat statbuf; | struct stat statbuf; | ||||
| if(stat(filename,&statbuf) != 0) | if(stat(filename,&statbuf) != 0) | ||||
| return(0); | return(0); | ||||
| if((statbuf.st_mode & S_IFMT) == S_IFDIR) | if((statbuf.st_mode & S_IFMT) == S_IFDIR) | ||||
| // if(S_ISDIR(statbuf.st_mode)) | // if(S_ISDIR(statbuf.st_mode)) | ||||
| return(-2); // a directory | return(-2); // a directory | ||||
| return(statbuf.st_size); | return(statbuf.st_size); | ||||
| } // end of GetFileLength | } // end of GetFileLength | ||||
| { | { | ||||
| sprintf(path_home,"%s/espeak-data",env); | sprintf(path_home,"%s/espeak-data",env); | ||||
| if(GetFileLength(path_home) == -2) | if(GetFileLength(path_home) == -2) | ||||
| return; // an espeak-data directory exists | |||||
| return; // an espeak-data directory exists | |||||
| } | } | ||||
| buf[0] = 0; | buf[0] = 0; | ||||
| { | { | ||||
| snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); | snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); | ||||
| if(GetFileLength(path_home) == -2) | 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")); | snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); | ||||
| ENTER("MarkerEvent"); | ENTER("MarkerEvent"); | ||||
| espeak_EVENT *ep; | espeak_EVENT *ep; | ||||
| double time; | double time; | ||||
| if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) | if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) | ||||
| return; | return; | ||||
| ep = &event_list[event_list_ix++]; | ep = &event_list[event_list_ix++]; | ||||
| ep->type = (espeak_EVENT_TYPE)type; | ep->type = (espeak_EVENT_TYPE)type; | ||||
| ep->unique_identifier = my_unique_identifier; | ep->unique_identifier = my_unique_identifier; | ||||
| ep->user_data = my_user_data; | ep->user_data = my_user_data; | ||||
| ep->text_position = char_position & 0xffffff; | ep->text_position = char_position & 0xffffff; | ||||
| ep->length = char_position >> 24; | ep->length = char_position >> 24; | ||||
| time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; | time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; | ||||
| ep->audio_position = int(time); | ep->audio_position = int(time); | ||||
| ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); | ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); | ||||
| #ifdef DEBUG_ENABLED | #ifdef DEBUG_ENABLED | ||||
| SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); | 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", | SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", | ||||
| 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) | unsigned int end_position, unsigned int flags, void* user_data) | ||||
| {//=========================================================================== | {//=========================================================================== | ||||
| #ifdef DEBUG_ENABLED | #ifdef DEBUG_ENABLED | ||||
| ENTER("sync_espeak_Synth"); | 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); | 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 | #endif | ||||
| espeak_ERROR aStatus; | espeak_ERROR aStatus; | ||||
| InitText(flags); | InitText(flags); | ||||
| my_unique_identifier = unique_identifier; | my_unique_identifier = unique_identifier; | ||||
| my_user_data = user_data; | my_user_data = user_data; | ||||
| for (int i=0; i < N_SPEECH_PARAM; i++) | for (int i=0; i < N_SPEECH_PARAM; i++) | ||||
| saved_parameters[i] = param_stack[0].parameter[i]; | saved_parameters[i] = param_stack[0].parameter[i]; | ||||
| case POS_CHARACTER: | case POS_CHARACTER: | ||||
| skip_characters = position; | skip_characters = position; | ||||
| break; | break; | ||||
| case POS_WORD: | case POS_WORD: | ||||
| skip_words = position; | skip_words = position; | ||||
| break; | break; | ||||
| case POS_SENTENCE: | case POS_SENTENCE: | ||||
| skip_sentences = position; | skip_sentences = position; | ||||
| break; | break; | ||||
| } | } | ||||
| if(skip_characters || skip_words || skip_sentences) | if(skip_characters || skip_words || skip_sentences) | ||||
| skipping_text = 1; | skipping_text = 1; | ||||
| end_character_position = end_position; | end_character_position = end_position; | ||||
| aStatus = Synthesize(unique_identifier, text, flags); | aStatus = Synthesize(unique_identifier, text, flags); | ||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| wave_flush(my_audio); | wave_flush(my_audio); | ||||
| #endif | #endif | ||||
| SHOW_TIME("LEAVE sync_espeak_Synth"); | SHOW_TIME("LEAVE sync_espeak_Synth"); | ||||
| return aStatus; | return aStatus; | ||||
| } // end of sync_espeak_Synth | } // end of sync_espeak_Synth | ||||
| 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) | unsigned int flags, void* user_data) | ||||
| {//========================================================================= | {//========================================================================= | ||||
| espeak_ERROR aStatus; | espeak_ERROR aStatus; | ||||
| InitText(flags); | InitText(flags); | ||||
| my_unique_identifier = unique_identifier; | my_unique_identifier = unique_identifier; | ||||
| my_user_data = user_data; | my_user_data = user_data; | ||||
| if(index_mark != NULL) | if(index_mark != NULL) | ||||
| { | { | ||||
| strncpy0(skip_marker, index_mark, sizeof(skip_marker)); | strncpy0(skip_marker, index_mark, sizeof(skip_marker)); | ||||
| skipping_text = 1; | skipping_text = 1; | ||||
| } | } | ||||
| end_character_position = end_position; | end_character_position = end_position; | ||||
| aStatus = Synthesize(unique_identifier, text, flags | espeakSSML); | aStatus = Synthesize(unique_identifier, text, flags | espeakSSML); | ||||
| SHOW_TIME("LEAVE sync_espeak_Synth_Mark"); | SHOW_TIME("LEAVE sync_espeak_Synth_Mark"); | ||||
| return (aStatus); | return (aStatus); | ||||
| } // end of sync_espeak_Synth_Mark | } // end of sync_espeak_Synth_Mark | ||||
| char buf[80]; | char buf[80]; | ||||
| my_unique_identifier = 0; | my_unique_identifier = 0; | ||||
| my_user_data = NULL; | my_user_data = NULL; | ||||
| sprintf(buf,"<say-as interpret-as=\"tts:char\">&#%d;</say-as>",character); | sprintf(buf,"<say-as interpret-as=\"tts:char\">&#%d;</say-as>",character); | ||||
| Synthesize(0, buf,espeakSSML); | Synthesize(0, buf,espeakSSML); | ||||
| } | } | ||||
| // Set the list of punctuation which are spoken for "some". | // Set the list of punctuation which are spoken for "some". | ||||
| my_unique_identifier = 0; | my_unique_identifier = 0; | ||||
| my_user_data = NULL; | my_user_data = NULL; | ||||
| wcsncpy(option_punctlist, punctlist, N_PUNCTLIST); | wcsncpy(option_punctlist, punctlist, N_PUNCTLIST); | ||||
| option_punctlist[N_PUNCTLIST-1] = 0; | option_punctlist[N_PUNCTLIST-1] = 0; | ||||
| } // end of sync_espeak_SetPunctuationList | } // end of sync_espeak_SetPunctuationList | ||||
| setlocale(LC_CTYPE,""); | setlocale(LC_CTYPE,""); | ||||
| } | } | ||||
| #endif | #endif | ||||
| init_path(path); | init_path(path); | ||||
| initialise(options); | initialise(options); | ||||
| select_output(output_type); | select_output(output_type); | ||||
| outbuf = (unsigned char*)realloc(outbuf,outbuf_size); | outbuf = (unsigned char*)realloc(outbuf,outbuf_size); | ||||
| if((out_start = outbuf) == NULL) | if((out_start = outbuf) == NULL) | ||||
| return(EE_INTERNAL_ERROR); | return(EE_INTERNAL_ERROR); | ||||
| // allocate space for event list. Allow 200 events per second. | // allocate space for event list. Allow 200 events per second. | ||||
| // Add a constant to allow for very small buf_length | // Add a constant to allow for very small buf_length | ||||
| n_event_list = (buf_length*200)/1000 + 20; | n_event_list = (buf_length*200)/1000 + 20; | ||||
| if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) | if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) | ||||
| return(EE_INTERNAL_ERROR); | return(EE_INTERNAL_ERROR); | ||||
| option_phonemes = 0; | option_phonemes = 0; | ||||
| option_mbrola_phonemes = 0; | option_mbrola_phonemes = 0; | ||||
| option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); | option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); | ||||
| VoiceReset(0); | VoiceReset(0); | ||||
| // SetVoiceByName("default"); | // SetVoiceByName("default"); | ||||
| for(param=0; param<N_SPEECH_PARAM; param++) | for(param=0; param<N_SPEECH_PARAM; param++) | ||||
| param_stack[0].parameter[param] = saved_parameters[param] = param_defaults[param]; | param_stack[0].parameter[param] = saved_parameters[param] = param_defaults[param]; | ||||
| SetParameter(espeakRATE,175,0); | SetParameter(espeakRATE,175,0); | ||||
| SetParameter(espeakVOLUME,100,0); | SetParameter(espeakVOLUME,100,0); | ||||
| SetParameter(espeakCAPITALS,option_capitals,0); | SetParameter(espeakCAPITALS,option_capitals,0); | ||||
| SetParameter(espeakPUNCTUATION,option_punctuation,0); | SetParameter(espeakPUNCTUATION,option_punctuation,0); | ||||
| SetParameter(espeakWORDGAP,0,0); | SetParameter(espeakWORDGAP,0,0); | ||||
| // DoVoiceChange(voice); | // DoVoiceChange(voice); | ||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| fifo_init(); | fifo_init(); | ||||
| #endif | #endif | ||||
| ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size, | |||||
| unsigned int position, | |||||
| ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size, | |||||
| unsigned int position, | |||||
| espeak_POSITION_TYPE position_type, | espeak_POSITION_TYPE position_type, | ||||
| unsigned int end_position, unsigned int flags, | |||||
| unsigned int end_position, unsigned int flags, | |||||
| unsigned int* unique_identifier, void* user_data) | unsigned int* unique_identifier, void* user_data) | ||||
| {//===================================================================================== | {//===================================================================================== | ||||
| #ifdef DEBUG_ENABLED | #ifdef DEBUG_ENABLED | ||||
| ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size, | |||||
| const char *index_mark, | |||||
| unsigned int end_position, | |||||
| unsigned int flags, | |||||
| ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size, | |||||
| const char *index_mark, | |||||
| unsigned int end_position, | |||||
| unsigned int flags, | |||||
| unsigned int* unique_identifier, | unsigned int* unique_identifier, | ||||
| void* user_data) | void* user_data) | ||||
| {//========================================================================= | {//========================================================================= | ||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| // Create the mark command | // Create the mark command | ||||
| t_espeak_command* c1 = create_espeak_mark(text, size, index_mark, end_position, | |||||
| t_espeak_command* c1 = create_espeak_mark(text, size, index_mark, end_position, | |||||
| flags, user_data); | flags, user_data); | ||||
| // Retrieve the unique identifier | // Retrieve the unique identifier | ||||
| *unique_identifier = c1->u.my_mark.unique_identifier; | *unique_identifier = c1->u.my_mark.unique_identifier; | ||||
| // Create the "terminated msg" command (same uid) | // Create the "terminated msg" command (same uid) | ||||
| t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data); | t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data); | ||||
| // Try to add these 2 commands (single transaction) | // Try to add these 2 commands (single transaction) | ||||
| if (c1 && c2) | if (c1 && c2) | ||||
| { | { | ||||
| value=0 No phoneme output (default) | value=0 No phoneme output (default) | ||||
| value=1 Output the translated phoneme symbols for the text | 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=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 | bit 4: produce mbrola pho data | ||||
| */ | */ | ||||
| option_phonemes = value & 3; | |||||
| option_phonemes = value & 7; | |||||
| option_mbrola_phonemes = value & 16; | option_mbrola_phonemes = value & 16; | ||||
| f_trans = stream; | f_trans = stream; | ||||
| if(stream == NULL) | if(stream == NULL) | ||||
| f_trans = stderr; | f_trans = stderr; | ||||
| } // end of espeak_SetPhonemes | } // end of espeak_SetPhonemes | ||||
| #pragma GCC visibility pop | #pragma GCC visibility pop | ||||
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| if(ph->code != phonEND_WORD) | if(ph->code != phonEND_WORD) | ||||
| { | { | ||||
| char phoneme_name[16]; | 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); | DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name); | ||||
| } | } | ||||
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.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; | int option_device_number = -1; | ||||
| FILE *f_logespeak = NULL; | FILE *f_logespeak = NULL; |
| } | } | ||||
| else | 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); | DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); | ||||
| done_phoneme_marker = 1; | done_phoneme_marker = 1; | ||||
| } | } | ||||
| if((option_phoneme_events) && (done_phoneme_marker == 0)) | 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); | DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); | ||||
| } | } | ||||
| if((option_phonemes > 0) || (phoneme_callback != NULL)) | if((option_phonemes > 0) || (phoneme_callback != NULL)) | ||||
| { | { | ||||
| int use_ipa = 0; | 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); | GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | ||||
| if(option_phonemes > 0) | if(option_phonemes > 0) |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| // ignore these characters | // ignore these characters | ||||
| static const unsigned short chars_ignore_default[] = { | static const unsigned short chars_ignore_default[] = { | ||||
| 0xad, 1, // soft hyphtn | |||||
| 0xad, 1, // soft hyphen | |||||
| 0x200c, 1, // zero width non-joiner | 0x200c, 1, // zero width non-joiner | ||||
| 0x200d, 1, // zero width joiner | 0x200d, 1, // zero width joiner | ||||
| 0, 0 }; | 0, 0 }; | ||||
| int name2 = 0; | int name2 = 0; | ||||
| Translator *tr; | 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 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_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 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_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 }; | 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() | // convert name string into a word of up to 4 characters, for the switch() | ||||
| { | { | ||||
| tr->letter_bits_offset = OFFSET_GURMUKHI; | 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')) | if(name2 == L('n','e')) | ||||
| { | { | ||||
| SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); | |||||
| tr->langopts.break_numbers = 0x2aaaa8; | tr->langopts.break_numbers = 0x2aaaa8; | ||||
| tr->langopts.max_digits = 22; | tr->langopts.max_digits = 22; | ||||
| tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS; | tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS; |
| *pn++ = tr->langopts.thousands_sep; | *pn++ = tr->langopts.thousands_sep; | ||||
| } | } | ||||
| *pn++ = ' '; | *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--; | pw--; |
| void SetVoiceStack(espeak_VOICE *v, const char *variant_name); | 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 InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata, WORD_PH_DATA *worddata); | ||||
| void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); | 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_trans; // for logging | ||||
| extern FILE *f_logespeak; | extern FILE *f_logespeak; |