Change API function: espeak_TextToPhonemes(). Fix bug: number following a non-ascii character could cause crash. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@361 d46cf337-b52f-0410-862d-fd96e6ae7743master
| ts v x z | ts v x z | ||||
| Dictionary en_dict 2013-05-29 | |||||
| Dictionary en_dict 2013-05-31 | |||||
| 0 0# 3 3: @ @- @2 @5 | 0 0# 3 3: @ @- @2 @5 | ||||
| @L a a# A: A@ aa aI aI3 | @L a a# A: A@ aa aI aI3 | ||||
| tS ts tS; v x z Z | tS ts tS; v x z Z | ||||
| Dictionary ml_dict 2013-05-19 | |||||
| Dictionary ml_dict 2013-05-30 | |||||
| @ a a# a: aI aU e E | @ a a# a: aI aU e E | ||||
| e: i I i: o o: r- u | e: i I i: o o: r- u | ||||
| ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
| Dictionary pt_dict 2013-05-29 | |||||
| Dictionary pt_dict 2013-05-31 | |||||
| & &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
| aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
| x z Z | x z Z | ||||
| Dictionary sl_dict 2013-05-22 | |||||
| Dictionary sl_dict 2013-05-31 | |||||
| @ @- a e E E# i o | @ @- a e E E# i o | ||||
| O o+ u y | O o+ u y |
| accusation akju:z'eIS@n | accusation akju:z'eIS@n | ||||
| acer eIs3 | acer eIs3 | ||||
| acetylene a#sEt@li:n | acetylene a#sEt@li:n | ||||
| accurate akjUr@t | |||||
| accurate $alt2 | |||||
| accursed a#k3:sI#d | accursed a#k3:sI#d | ||||
| ?5 accursed a#kVRsI#d | ?5 accursed a#kVRsI#d | ||||
| achille a#kIli: | achille a#kIli: | ||||
| apprentice a#prEnt2Is | apprentice a#prEnt2Is | ||||
| approximate a#pr0ksIm@t $only | approximate a#pr0ksIm@t $only | ||||
| approximate a#pr0ksImeIt $verb | approximate a#pr0ksImeIt $verb | ||||
| approximately a#pr0ksIm@tli | |||||
| aqueduct akwI#dVkt | aqueduct akwI#dVkt | ||||
| arab ar@b | arab ar@b | ||||
| arabic $1 | arabic $1 | ||||
| chimpanzee $3 | chimpanzee $3 | ||||
| chipotle tSI2poUtleI | chipotle tSI2poUtleI | ||||
| chisel tSIz@L | chisel tSIz@L | ||||
| chivalrous SIv@Lr@s | |||||
| chloroplast $1 | chloroplast $1 | ||||
| chocolate tS0kl@t | chocolate tS0kl@t | ||||
| cholera k0l@r@ | cholera k0l@r@ | ||||
| collage k0l'A:Z | collage k0l'A:Z | ||||
| collarbone k0l3boUn | collarbone k0l3boUn | ||||
| college k0lI2dZ | college k0lI2dZ | ||||
| collegiate k@li:dZI@t | |||||
| colloquial k@loUkwI@L | colloquial k@loUkwI@L | ||||
| colon koUl@n | colon koUl@n | ||||
| color kVl3 | color kVl3 | ||||
| corolla k@roUl@ | corolla k@roUl@ | ||||
| corollary $2 | corollary $2 | ||||
| corporal kO@pr@L | corporal kO@pr@L | ||||
| corporate kO@p@r@t | |||||
| corporate $alt2 | |||||
| corps kO@ $only | corps kO@ $only | ||||
| corral k@r'al | corral k@r'al | ||||
| corsage kO@s'A:Z | corsage kO@s'A:Z | ||||
| ?3 deity di:@t2i | ?3 deity di:@t2i | ||||
| deja deIZA: $only | deja deIZA: $only | ||||
| deli dElI | deli dElI | ||||
| deliberate dI2lIb@r@t | |||||
| delicate dElI2k@t | |||||
| deliberate $alt2 | |||||
| delicate $alt2 | |||||
| delimit dI2lImIt // delimited | delimit dI2lImIt // delimited | ||||
| delivery $alt2 | delivery $alt2 | ||||
| demolish dI2m0lIS | demolish dI2m0lIS | ||||
| fi f,aI // as in "hi-fi" | fi f,aI // as in "hi-fi" | ||||
| fiasco fi:'askoU | fiasco fi:'askoU | ||||
| fiat fi:@t | fiat fi:@t | ||||
| ficus fIk@s | |||||
| fiery faI3rI | fiery faI3rI | ||||
| ?3 fillet fI2leI | ?3 fillet fI2leI | ||||
| finagle fI#neIg@L | finagle fI#neIg@L | ||||
| freelance fri:laans | freelance fri:laans | ||||
| freon fri:0n | freon fri:0n | ||||
| fricassee frIka#seI | fricassee frIka#seI | ||||
| frigate frIg@t | |||||
| frigate $alt2 | |||||
| fringer frIndZ3 // infringer | fringer frIndZ3 // infringer | ||||
| fringing frIndZIN | fringing frIndZIN | ||||
| frisson fri:s'O~ | frisson fri:s'O~ | ||||
| goto goUtu: | goto goUtu: | ||||
| gourmand gU@mA:nd | gourmand gU@mA:nd | ||||
| gourmet gU@meI | gourmet gU@meI | ||||
| graduate gradju:@t | |||||
| graduate $alt2 | |||||
| graduate gradju:eIt $verb | graduate gradju:eIt $verb | ||||
| graffiti $alt3 | graffiti $alt3 | ||||
| grandson gr'andsVn | grandson gr'andsVn | ||||
| gurus gu:ru:z | gurus gu:ru:z | ||||
| habitual $alt3 | habitual $alt3 | ||||
| hacienda hasI'End@ | |||||
| hacienda hA:sI'End@ | |||||
| haggis hagIs | haggis hagIs | ||||
| haha hA:h'A: | haha hA:h'A: | ||||
| halation $alt3 // in- | halation $alt3 // in- | ||||
| impinging Imp'IndZIN | impinging Imp'IndZIN | ||||
| implacable Impl'ak@b@L | implacable Impl'ak@b@L | ||||
| imprecise ImprIs'aIs | imprecise ImprIs'aIs | ||||
| inanimate In'anIm@t | |||||
| inappropriate ,Ina#proUpri@t | |||||
| inanimate $alt2 | |||||
| inappropriate Ina#pr'oUpri@t | |||||
| incense Ins'Ens $verb | incense Ins'Ens $verb | ||||
| incoming InkVmIN | incoming InkVmIN | ||||
| increase Inkr'i:s $verb | increase Inkr'i:s $verb | ||||
| indefine $3 | indefine $3 | ||||
| indeterminate IndI2t'3:mI2n@t | |||||
| indeterminate $alt2 | |||||
| indicative $2 | indicative $2 | ||||
| indices IndI2si:z | indices IndI2si:z | ||||
| indict Ind'aIt | indict Ind'aIt | ||||
| indie Indi | indie Indi | ||||
| indirect $3 | indirect $3 | ||||
| ?3 indirect Ind3r'Ekt | ?3 indirect Ind3r'Ekt | ||||
| indiscriminate IndI2skr'ImI2n@t | |||||
| indiscriminate $alt2 | |||||
| indo IndoU | indo IndoU | ||||
| indoor $1 $only | indoor $1 $only | ||||
| industry IndVstrI | industry IndVstrI | ||||
| iron aI3n | iron aI3n | ||||
| irony aIr@nI | irony aIr@nI | ||||
| isosceles aIs'0s@li:z | isosceles aIs'0s@li:z | ||||
| itinerary aIt'In@r@rI | |||||
| ja jA: | ja jA: | ||||
| jagged dZagI#d | jagged dZagI#d | ||||
| laborer leIb@r3 | laborer leIb@r3 | ||||
| laborious $alt3 | laborious $alt3 | ||||
| labyrinth lab3rInT | labyrinth lab3rInT | ||||
| lascivious $alt3 | |||||
| lager lA:g3 | lager lA:g3 | ||||
| lagoon $alt3 | |||||
| laity leI@ti | laity leI@ti | ||||
| landowner l'and,oUn3 | landowner l'and,oUn3 | ||||
| lapel $alt3 | lapel $alt3 | ||||
| //mercenary m3:s@n@rI | //mercenary m3:s@n@rI | ||||
| merest mi@r@st | merest mi@r@st | ||||
| meringue m@raN | meringue m@raN | ||||
| merlot me@l'oU | |||||
| merlot m3:l'oU | |||||
| mesa meIs@ | mesa meIs@ | ||||
| meson mi:z0n | meson mi:z0n | ||||
| metabolic mEt@b'0lIk | metabolic mEt@b'0lIk | ||||
| obesity oUb'i:s@ti | obesity oUb'i:s@ti | ||||
| obey oUb'eI | obey oUb'eI | ||||
| obituary 0b'ItSU@i | obituary 0b'ItSU@i | ||||
| ?3 obituary oUb'ItSUe@i | |||||
| ?3 obituary oUb'ItSu:e@i | |||||
| object $1 $onlys | object $1 $onlys | ||||
| object $verb | object $verb | ||||
| obsolete 0bs@li:t | obsolete 0bs@li:t | ||||
| orion 0r'aI@n | orion 0r'aI@n | ||||
| ornate $2 | ornate $2 | ||||
| orphan O@f@n // orphaned | orphan O@f@n // orphaned | ||||
| ottoman 0t@m@n | |||||
| outage aUtI2dZ | outage aUtI2dZ | ||||
| outback $1 | outback $1 | ||||
| outcome $1 | outcome $1 | ||||
| spoonfed spu:nfEd | spoonfed spu:nfEd | ||||
| squirrel skwIr@L | squirrel skwIr@L | ||||
| staccato $alt3 | staccato $alt3 | ||||
| stasis steIsI#s | |||||
| standby standbaI | standby standbaI | ||||
| stagnate $2 | stagnate $2 | ||||
| ?3 stalagmite $alt3 | ?3 stalagmite $alt3 | ||||
| telephon tElI2foUn // for telephoning | telephon tElI2foUn // for telephoning | ||||
| temperature tEmprI2tS3 | temperature tEmprI2tS3 | ||||
| ?!3 temporary tEmpr@rI | ?!3 temporary tEmpr@rI | ||||
| ?3 template tEmpl@t | |||||
| ?3 template $alt2 | |||||
| tetanus tEt@n@s | tetanus tEt@n@s | ||||
| therefore $1 | therefore $1 | ||||
| thereof De@r'0v | thereof De@r'0v | ||||
| Alamo al@moU | Alamo al@moU | ||||
| Albuquerque alb@k3:ki | Albuquerque alb@k3:ki | ||||
| Algiers $2 | Algiers $2 | ||||
| Altura O:lt'U@r@ | |||||
| Amman a#m'A:n | Amman a#m'A:n | ||||
| Andes andi:z | Andes andi:z | ||||
| Angeles andZ@li:s | Angeles andZ@li:s | ||||
| Monte m0nt2i | Monte m0nt2i | ||||
| Munich mju:nIk | Munich mju:nIk | ||||
| Myanmar mjA:nmA@ | Myanmar mjA:nmA@ | ||||
| Niagara naI'agr@ | |||||
| Nairobi naIr'oUbi | Nairobi naIr'oUbi | ||||
| Naples neIp@Lz | Naples neIp@Lz | ||||
| Nauru naUru: | Nauru naUru: | ||||
| upon @p0n $u2 | upon @p0n $u2 | ||||
| from fr0m $u | from fr0m $u | ||||
| ?3 from frVm $u | ?3 from frVm $u | ||||
| (from the) fr,VmD@ | |||||
| (from the) %frVmD@2 | |||||
| (from where) %frVm||w'e@ $pause | (from where) %frVm||w'e@ $pause | ||||
| (from which) %frVm||w'ItS $pause | (from which) %frVm||w'ItS $pause | ||||
| up ,Vp $strend2 | up ,Vp $strend2 |
| _s) ata (n eIt@ | _s) ata (n eIt@ | ||||
| _g) ator eIt3 | _g) ator eIt3 | ||||
| &) ate (_$w_alt2 @t | &) ate (_$w_alt2 @t | ||||
| &) ately (_ @tli | |||||
| der) ated (_ eItI#d | der) ated (_ eItI#d | ||||
| pal) ate (_ @t | pal) ate (_ @t | ||||
| consul) ate (_ @t | consul) ate (_ @t | ||||
| g) au (s aU | g) au (s aU | ||||
| ?!3 s) au (s 0 | ?!3 s) au (s 0 | ||||
| ?!3 au (str 0 | ?!3 au (str 0 | ||||
| au (sch aU | |||||
| au (_ aU | au (_ aU | ||||
| _) auch %O:x | _) auch %O:x | ||||
| aud (_ 'O:d | aud (_ 'O:d | ||||
| _) co (nw k0 | _) co (nw k0 | ||||
| _) copy k0pI | _) copy k0pI | ||||
| _) copoly k'oUp,0lI | _) copoly k'oUp,0lI | ||||
| ?!3 _) co (rL03 k0# | |||||
| coro (ll k0#r0 | coro (ll k0#r0 | ||||
| co (rrect k@ | co (rrect k@ | ||||
| correspo k,0rIsp'0 | correspo k,0rIsp'0 | ||||
| _) co (rri k0 | |||||
| _) co (rr k0 | |||||
| co (rro k@ | co (rro k@ | ||||
| co (rrup k@ | co (rrup k@ | ||||
| _) co (sm k0 | _) co (sm k0 | ||||
| l) ith (er ID | l) ith (er ID | ||||
| _t) ith aID | _t) ith aID | ||||
| it (i_ 'i:t | it (i_ 'i:t | ||||
| _) it (iner %aIt | |||||
| itius (_ 'IS@s | itius (_ 'IS@s | ||||
| itis (_ 'aItIs | itis (_ 'aItIs | ||||
| &) it (ive_ =I2t | &) it (ive_ =I2t | ||||
| &) name (_S4 neIm | &) name (_S4 neIm | ||||
| _) nano (P4 n,anoU | _) nano (P4 n,anoU | ||||
| nause nO:sI | nause nO:sI | ||||
| _) navig navIg | |||||
| necessit n@sEsIt | necessit n@sEsIt | ||||
| &) ness (_S4im n@s | &) ness (_S4im n@s | ||||
| ?8 &) ness (_S4im nEs | ?8 &) ness (_S4im nEs | ||||
| rEr (_ r3 | rEr (_ r3 | ||||
| C) rh r | C) rh r | ||||
| rheu ru: | rheu ru: | ||||
| rhi (n raI | |||||
| rhi (n# raI | |||||
| rhi (z raI | rhi (z raI | ||||
| _) rho (d roU | _) rho (d roU | ||||
| _) rhodo (@ roUd@ | _) rhodo (@ roUd@ | ||||
| th (ill th | th (ill th | ||||
| ee) thing DI2N | ee) thing DI2N | ||||
| the (_ D | the (_ D | ||||
| &) th (L03_ =T | |||||
| ou) thed (_ Dd | ou) thed (_ Dd | ||||
| th (en_ D | th (en_ D | ||||
| g) th (en_ T | g) th (en_ T | ||||
| %B) y (_S1d I | %B) y (_S1d I | ||||
| _C) y (Ce aI | _C) y (Ce aI | ||||
| C) y (i I | C) y (i I | ||||
| &C) y (an_ =I | |||||
| &C) y (en_ =I | |||||
| y (iC_ j | y (iC_ j | ||||
| sf) y (_ aI | sf) y (_ aI | ||||
| Cf) y (_ %I | Cf) y (_ %I |
| _0C0 n'u:r:y | _0C0 n'u:r:y | ||||
| _0C nu:t.t.i | _0C nu:t.t.i | ||||
| _1C0 orynu:ry | |||||
| _1C orynu:t.t.i | |||||
| _2C0 iRynn'u:ry | _2C0 iRynn'u:ry | ||||
| _2C irunnu:t.t.i | _2C irunnu:t.t.i | ||||
| _3C0 munn'u:ry | _3C0 munn'u:ry | ||||
| _12f p'antran.t | _12f p'antran.t | ||||
| _13f p'atimu:v | _13f p'atimu:v | ||||
| _14f p'atina:l | _14f p'atina:l | ||||
| _15f patin'ai:j | |||||
| _18f patin'enn | |||||
| _19f p'attomp'atin | _19f p'attomp'atin | ||||
| _20f 'iruvatin | _20f 'iruvatin | ||||
| _2Xf 'iruvatt | _2Xf 'iruvatt |
| me $u $verbf // reflexive | me $u $verbf // reflexive | ||||
| te $u $verbf | te $u $verbf | ||||
| nos $u $nounf | nos $u $nounf | ||||
| vos vus $u | |||||
| vos $u | |||||
| la $u | la $u | ||||
| lo lU $u | lo lU $u | ||||
| las $u | las $u | ||||
| quarteto $alt2 | quarteto $alt2 | ||||
| queda $alt | queda $alt | ||||
| quede $alt2 | quede $alt2 | ||||
| quimera $alt | |||||
| quitinete $alt | quitinete $alt | ||||
| quinteto $alt2 | quinteto $alt2 | ||||
| ramalhete $alt2 | ramalhete $alt2 | ||||
| recordo $alt | recordo $alt | ||||
| recorto $alt | recorto $alt | ||||
| rede $alt2 | rede $alt2 | ||||
| reembolso $alt $verb | |||||
| reembolso $alt2 | |||||
| reembolso $alt $verb | |||||
| reforço $alt $verb | reforço $alt $verb | ||||
| reforços $alt | reforços $alt | ||||
| refresco $alt $verb | refresco $alt $verb | ||||
| soco $alt2 | soco $alt2 | ||||
| soco $alt $verb | soco $alt $verb | ||||
| sogra $alt | sogra $alt | ||||
| sopa $alt2 | |||||
| sopro $alt2 $noun | sopro $alt2 $noun | ||||
| soro $alt2 | soro $alt2 | ||||
| sorvete $alt2 | sorvete $alt2 |
| ib) e (rL04_ E | ib) e (rL04_ E | ||||
| d) e (rL04_ E | d) e (rL04_ E | ||||
| ed) e (rL04_ e | ed) e (rL04_ e | ||||
| m) e (rL04_ E | |||||
| iv) e (rL04_ E | iv) e (rL04_ E | ||||
| pod) e (rA_ e | pod) e (rA_ e | ||||
| êCC) e (C@ e | êCC) e (C@ e | ||||
| ôC) e (C@ e | ôC) e (C@ e | ||||
| áC) e (C@ e | áC) e (C@ e | ||||
| áCC) e (C@ e | |||||
| áCC) e (CA_ e | |||||
| éCC) e (CA_ e | |||||
| éCCC) e (C@ e | éCCC) e (C@ e | ||||
| íC) el (_ eU | íC) el (_ eU | ||||
| íC) e (C@ e | íC) e (C@ e | ||||
| íCC) e (C@ e | íCC) e (C@ e | ||||
| óC) e (C@ e | óC) e (C@ e | ||||
| óCC) e (C@ e | |||||
| óCC) e (CA_ e | |||||
| úC) e (C@ e | úC) e (C@ e | ||||
| úC) el (_ eU | úC) el (_ eU | ||||
| ection (_ 'EkS&~N | ection (_ 'EkS&~N | ||||
| ad) e (quL04_ E | ad) e (quL04_ E | ||||
| _dig) e (rL02_ E | _dig) e (rL02_ E | ||||
| _ing) e (rL02_ E | _ing) e (rL02_ E | ||||
| _m) e (rL03_ E | |||||
| _sev) e (rL03_ E | _sev) e (rL03_ E | ||||
| _reit) e (rL03_ E | _reit) e (rL03_ E | ||||
| _sinc) e (rL03_ E | _sinc) e (rL03_ E | ||||
| gen) e (rL04_ E // de- re- | gen) e (rL04_ E // de- re- | ||||
| _alt) e (rL04_ E | _alt) e (rL04_ E | ||||
| _enc) e (rL04_ E | _enc) e (rL04_ E | ||||
| _esm) e (rL04_ E | |||||
| _esm) e (rL04_ E | |||||
| _imp) e (rL04_ E | _imp) e (rL04_ E | ||||
| _min) e (rL04_ E | _min) e (rL04_ E | ||||
| _sug) e (rL04_ E | _sug) e (rL04_ E | ||||
| eson) e (rL04_ E | eson) e (rL04_ E | ||||
| _apod) e (rL04_ E | _apod) e (rL04_ E | ||||
| _coop) e (rL04_ E | _coop) e (rL04_ E | ||||
| _enum) e (rL04_ E | |||||
| _exub) e (rL04_ E | _exub) e (rL04_ E | ||||
| _temp) e (rL04_ E | _temp) e (rL04_ E | ||||
| _adult) e (rL04_ E | _adult) e (rL04_ E | ||||
| _aglom) e (rL04_ E | |||||
| _dilac) e (rL04_ E | _dilac) e (rL04_ E | ||||
| _encarc) e (rL04_ E | _encarc) e (rL04_ E | ||||
| _incin) e (rL04_ E | _incin) e (rL04_ E | ||||
| //endsort | //endsort | ||||
| .group é | .group é | ||||
| é ''E | é ''E | ||||
| éi ''EI | éi ''EI | ||||
| ?2 _) os (_ Us | ?2 _) os (_ Us | ||||
| ?2 _) os (_A Uz | ?2 _) os (_A Uz | ||||
| ?2 _) os (_G Uz | ?2 _) os (_G Uz | ||||
| ?2 _v) os (_ us | |||||
| ?2 _v) os (_A uz | |||||
| ?2 _v) os (_G uz | |||||
| ou ow | ou ow | ||||
| oi oI | oi oI | ||||
| oi ($w_alt OI | oi ($w_alt OI | ||||
| v) o (re_ o | v) o (re_ o | ||||
| b) o (rL04_ O | b) o (rL04_ O | ||||
| o (p_ O | o (p_ O | ||||
| C) o (pL04_ O | |||||
| ?1 _) o (C O // eg: olá, orla, opção, etc... | ?1 _) o (C O // eg: olá, orla, opção, etc... | ||||
| ?1 _C) o (CACAC u // Documento, documentação, localizar, etc. | ?1 _C) o (CACAC u // Documento, documentação, localizar, etc. | ||||
| ?1 f) o (rmat u // formatar, formato. | ?1 f) o (rmat u // formatar, formato. | ||||
| _engl) o (bL04_ O | _engl) o (bL04_ O | ||||
| _sal) o (brL03_ o | _sal) o (brL03_ o | ||||
| _) o (cL03_ o | _) o (cL03_ o | ||||
| _barr) o (cL03_ o | |||||
| _m) o (fL01_ O | _m) o (fL01_ O | ||||
| _m) o (fL02_ O | _m) o (fL02_ O | ||||
| _af) o (fL04_ O | _af) o (fL04_ O | ||||
| _emp) o (lgL04_ O | _emp) o (lgL04_ O | ||||
| _) o (lhL04_ O | _) o (lhL04_ O | ||||
| m) o (lhL04_ O | m) o (lhL04_ O | ||||
| emb) o (lsL02_ O | |||||
| emb) o (lsL04_ O | |||||
| _env) o (ltL03_ o | _env) o (ltL03_ o | ||||
| ent) o (pL02_ O | |||||
| _c) o (pL03_ O | |||||
| _t) o (pL04_ O | |||||
| _ens) o (pL04_ O | |||||
| _gal) o (pL04_ O | |||||
| _s) o (prL04_ O | _s) o (prL04_ O | ||||
| _al) o (prL04_ O | _al) o (prL04_ O | ||||
| _ass) o (prL04_ O | _ass) o (prL04_ O |
| skozi sko+zi $u+ | skozi sko+zi $u+ | ||||
| za $u+ | za $u+ | ||||
| le lE | |||||
| // conjunctions | |||||
| če tSE $u | |||||
| ker kER | |||||
| ter tER $u+ | |||||
| vseeno us'E:Eno | |||||
| // verb: to be | // verb: to be | ||||
| sem s@m $u | sem s@m $u |
| .group e | .group e | ||||
| e e: | e e: | ||||
| e (X$w_alt3+ 'E | e (X$w_alt3+ 'E | ||||
| ee i: | |||||
| ee i: | |||||
| _n) ee E:E | |||||
| _r) ee E:E | |||||
| _pr) ee E:E | |||||
| e (X$w_alt4 @ | e (X$w_alt4 @ | ||||
| @) e (n_ E# | @) e (n_ E# | ||||
| @C) e (r_ E# | @C) e (r_ E# | ||||
| o (č_ 'o: | o (č_ 'o: | ||||
| o (j_ 'o: | o (j_ 'o: | ||||
| o (l_ 'o: | o (l_ 'o: | ||||
| oo u: | |||||
| o (oč o: | |||||
| .group p | .group p | ||||
| p p | p p |
| Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 | Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 | ||||
| ENDIF | ENDIF | ||||
| IF nextPh(isPause2) AND prevPhW(isVowel) THEN | |||||
| IF thisPh(isWordEnd) THEN | |||||
| WAV(ustop/k) | |||||
| ELIF nextPh(isPause2) THEN | |||||
| WAV(ustop/k_) | WAV(ustop/k_) | ||||
| ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN | ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN | ||||
| WAV(ustop/kr) | WAV(ustop/kr) |
| 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | ||||
| }; | }; | ||||
| #define N_PHON_OUT 500 | |||||
| static char *phon_out_buf = NULL; | |||||
| static int phon_out_size = 0; | |||||
| char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags) | char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags) | ||||
| {//=================================================================================================== | {//=================================================================================================== | ||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode) | |||||
| {//=============================================================================== | |||||
| const char *GetTranslatedPhonemeString(int phoneme_mode) | |||||
| {//======================================================= | |||||
| /* Called after a clause has been translated into phonemes, in order | /* Called after a clause has been translated into phonemes, in order | ||||
| to display the clause in phoneme mnemonic form. | to display the clause in phoneme mnemonic form. | ||||
| int ix; | int ix; | ||||
| unsigned int len; | unsigned int len; | ||||
| unsigned int max_len; | |||||
| int phon_out_ix=0; | int phon_out_ix=0; | ||||
| int stress; | int stress; | ||||
| int c; | int c; | ||||
| use_tie = 0; | use_tie = 0; | ||||
| } | } | ||||
| if(phon_out != NULL) | |||||
| for(ix=1; ix<(n_phoneme_list-2); ix++) | |||||
| { | { | ||||
| for(ix=1; ix<(n_phoneme_list-2); ix++) | |||||
| { | |||||
| buf = phon_buf; | |||||
| buf = phon_buf; | |||||
| plist = &phoneme_list[ix]; | |||||
| plist = &phoneme_list[ix]; | |||||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
| if(plist->newword) | |||||
| *buf++ = ' '; | |||||
| else | |||||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
| if(plist->newword) | |||||
| *buf++ = ' '; | |||||
| else | |||||
| { | |||||
| if((separate_phonemes != 0) && (ix > 1)) | |||||
| { | { | ||||
| if((separate_phonemes != 0) && (ix > 1)) | |||||
| utf8_in(&c, phon_buf2); | |||||
| if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||||
| { | { | ||||
| utf8_in(&c, phon_buf2); | |||||
| if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||||
| { | |||||
| *buf++ = separate_phonemes; | |||||
| } | |||||
| *buf++ = separate_phonemes; | |||||
| } | } | ||||
| } | } | ||||
| } | |||||
| if(plist->synthflags & SFLAG_SYLLABLE) | |||||
| if(plist->synthflags & SFLAG_SYLLABLE) | |||||
| { | |||||
| if((stress = plist->stresslevel) > 1) | |||||
| { | { | ||||
| if((stress = plist->stresslevel) > 1) | |||||
| { | |||||
| c = 0; | |||||
| if(stress > 5) stress = 5; | |||||
| c = 0; | |||||
| if(stress > 5) stress = 5; | |||||
| if(use_ipa) | |||||
| { | |||||
| c = 0x2cc; // ipa, secondary stress | |||||
| if(stress > 3) | |||||
| c = 0x02c8; // ipa, primary stress | |||||
| } | |||||
| else | |||||
| { | |||||
| c = stress_chars[stress]; | |||||
| } | |||||
| if(use_ipa) | |||||
| { | |||||
| c = 0x2cc; // ipa, secondary stress | |||||
| if(stress > 3) | |||||
| c = 0x02c8; // ipa, primary stress | |||||
| } | |||||
| else | |||||
| { | |||||
| c = stress_chars[stress]; | |||||
| } | |||||
| if(c != 0) | |||||
| { | |||||
| buf += utf8_out(c, buf); | |||||
| if(c != 0) | |||||
| { | |||||
| buf += utf8_out(c, buf); | |||||
| // if(separate_phonemes) | // if(separate_phonemes) | ||||
| // *buf++ = separate_phonemes; | // *buf++ = separate_phonemes; | ||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | |||||
| flags = 0; | |||||
| count = 0; | |||||
| for(p=phon_buf2; *p != 0;) | |||||
| flags = 0; | |||||
| count = 0; | |||||
| for(p=phon_buf2; *p != 0;) | |||||
| { | |||||
| p += utf8_in(&c, p); | |||||
| if(use_tie > 0) | |||||
| { | { | ||||
| p += utf8_in(&c, p); | |||||
| if(use_tie > 0) | |||||
| // look for non-inital alphabetic character, but not diacritic, superscript etc. | |||||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||||
| { | { | ||||
| // look for non-inital alphabetic character, but not diacritic, superscript etc. | |||||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||||
| { | |||||
| buf += utf8_out(char_tie[use_tie-1], buf); | |||||
| } | |||||
| buf += utf8_out(char_tie[use_tie-1], buf); | |||||
| } | } | ||||
| buf += utf8_out(c, buf); | |||||
| count++; | |||||
| } | } | ||||
| 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, NULL); | |||||
| } | |||||
| if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | |||||
| { | |||||
| // syllablic consonant | |||||
| 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, NULL); | |||||
| } | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa, NULL); | |||||
| } | } | ||||
| len = buf - phon_buf; | |||||
| max_len = (n_phon_out - phon_out_ix - 5); // allow for " ..." and zero byte terminator | |||||
| if(len > max_len) | |||||
| if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | |||||
| { | |||||
| // syllablic consonant | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa, NULL); | |||||
| } | |||||
| if(plist->tone_ph > 0) | |||||
| { | { | ||||
| strcpy(&phon_buf[max_len], " ..."); | |||||
| len = max_len + 4; | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa, NULL); | |||||
| } | } | ||||
| phon_buf[len] = 0; | |||||
| strcpy(&phon_out[phon_out_ix], phon_buf); | |||||
| phon_out_ix += len; | |||||
| } | |||||
| if(len > max_len) | |||||
| len = buf - phon_buf; | |||||
| if((phon_out_ix + len) >= phon_out_size) | |||||
| { | |||||
| // enlarge the phoneme buffer | |||||
| phon_out_size = phon_out_ix + len + N_PHON_OUT; | |||||
| if((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL) | |||||
| { | { | ||||
| break; | |||||
| phon_out_size = 0; | |||||
| return(""); | |||||
| } | } | ||||
| } | } | ||||
| phon_out[phon_out_ix] = 0; | |||||
| phon_buf[len] = 0; | |||||
| strcpy(&phon_out_buf[phon_out_ix], phon_buf); | |||||
| phon_out_ix += len; | |||||
| } | } | ||||
| phon_out_buf[phon_out_ix] = 0; | |||||
| return(phon_out_buf); | |||||
| } // end of GetTranslatedPhonemeString | } // end of GetTranslatedPhonemeString | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| if((!found) && (tensunits == 0)) | |||||
| if((hundreds==1) && (tr->langopts.numbers2 & NUM2_OMIT_1_HUNDRED_ONLY) && ((control & 1)==0)) | |||||
| { | { | ||||
| // is there a special pronunciation for exactly n00 ? | |||||
| sprintf(string,"_%dC0",hundreds); | |||||
| found = Lookup(tr, string, ph_digits); | |||||
| // only look for special 100 if there are previous thousands | |||||
| } | } | ||||
| if(!found) | |||||
| else | |||||
| { | { | ||||
| sprintf(string,"_%dC",hundreds); | |||||
| found = Lookup(tr, string, ph_digits); // is there a specific pronunciation for n-hundred ? | |||||
| if((!found) && (tensunits == 0)) | |||||
| { | |||||
| // is there a special pronunciation for exactly n00 ? | |||||
| sprintf(string,"_%dC0",hundreds); | |||||
| found = Lookup(tr, string, ph_digits); | |||||
| } | |||||
| if(!found) | |||||
| { | |||||
| sprintf(string,"_%dC",hundreds); | |||||
| found = Lookup(tr, string, ph_digits); // is there a specific pronunciation for n-hundred ? | |||||
| } | |||||
| } | } | ||||
| if(found) | if(found) | ||||
| { | { | ||||
| if((tr->langopts.numbers & NUM_OMIT_1_HUNDRED) != 0) | if((tr->langopts.numbers & NUM_OMIT_1_HUNDRED) != 0) | ||||
| say_one_hundred = 0; | say_one_hundred = 0; | ||||
| if(((tr->langopts.numbers2 & NUM2_OMIT_1_HUNDRED_ONLY) != 0) && ((control & 1)==0)) | |||||
| say_one_hundred = 0; | |||||
| } | } | ||||
| if(say_one_hundred != 0) | if(say_one_hundred != 0) |
| } // end of espeak_SetPhonemes | } // end of espeak_SetPhonemes | ||||
| ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode) | |||||
| {//============================================================================================================== | |||||
| ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode) | |||||
| {//================================================================================================= | |||||
| /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | ||||
| bits 4-7: 0=eSpeak phoneme names, 1=IPA | bits 4-7: 0=eSpeak phoneme names, 1=IPA | ||||
| */ | */ | ||||
| option_multibyte = textmode & 7; | option_multibyte = textmode & 7; | ||||
| TranslateClause(translator, NULL, text, NULL, NULL); | |||||
| GetTranslatedPhonemeString(buffer, size, phonememode); | |||||
| *textptr = TranslateClause(translator, NULL, *textptr, NULL, NULL); | |||||
| return(GetTranslatedPhonemeString(phonememode)); | |||||
| } | } | ||||
| #define ESPEAK_API | #define ESPEAK_API | ||||
| #endif | #endif | ||||
| #define ESPEAK_API_REVISION 7 | |||||
| #define ESPEAK_API_REVISION 9 | |||||
| /* | /* | ||||
| Revision 2 | Revision 2 | ||||
| Added parameter "options" to eSpeakInitialize() | Added parameter "options" to eSpeakInitialize() | ||||
| Revision 8 26.Apr.2013 | Revision 8 26.Apr.2013 | ||||
| Added function espeak_TextToPhonemes(). | Added function espeak_TextToPhonemes(). | ||||
| Revision 9 30.May.2013 | |||||
| Changed function espeak_TextToPhonemes(). | |||||
| */ | */ | ||||
| /********************/ | /********************/ | ||||
| /* Initialization */ | /* Initialization */ |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.47.11b 28.May.13"; | |||||
| const char *version_string = "1.47.11c 31.May.13"; | |||||
| const int version_phdata = 0x014709; | const int version_phdata = 0x014709; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| char *voice_change; | char *voice_change; | ||||
| static FILE *f_text=NULL; | static FILE *f_text=NULL; | ||||
| static const void *p_text=NULL; | static const void *p_text=NULL; | ||||
| const char *phon_out; | |||||
| if(control == 4) | if(control == 4) | ||||
| { | { | ||||
| if(option_phonemes >= 3) | if(option_phonemes >= 3) | ||||
| phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | ||||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode); | |||||
| phon_out = GetTranslatedPhonemeString(phoneme_mode); | |||||
| if(option_phonemes > 0) | if(option_phonemes > 0) | ||||
| { | { | ||||
| fprintf(f_trans,"%s\n",translator->phon_out); | |||||
| fprintf(f_trans,"%s\n",phon_out); | |||||
| } | } | ||||
| if(phoneme_callback != NULL) | if(phoneme_callback != NULL) | ||||
| { | { | ||||
| phoneme_callback(translator->phon_out); | |||||
| phoneme_callback(phon_out); | |||||
| } | } | ||||
| } | } | ||||
| if(name2 == L('m','l')) | if(name2 == L('m','l')) | ||||
| { | { | ||||
| tr->letter_bits_offset = OFFSET_MALAYALAM; | tr->letter_bits_offset = OFFSET_MALAYALAM; | ||||
| tr->langopts.numbers = NUM_OMIT_1_THOUSAND; | |||||
| tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_OMIT_1_HUNDRED; | |||||
| tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY; | tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY; | ||||
| } | } | ||||
| else | else |
| c = ' '; | c = ' '; | ||||
| pre_pause_add = 4; | pre_pause_add = 4; | ||||
| } | } | ||||
| else if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) | |||||
| else if((prev_out == ' ') && IsAlpha(prev_out2) && !IsAlpha(prev_in)) | |||||
| { | { | ||||
| // insert extra space between a word + space + hyphen, to distinguish 'a -2' from 'a-2' | // insert extra space between a word + space + hyphen, to distinguish 'a -2' from 'a-2' | ||||
| sbuf[ix++] = ' '; | sbuf[ix++] = ' '; | ||||
| decimal_sep_count = 1; | decimal_sep_count = 1; | ||||
| } | } | ||||
| } | } | ||||
| else if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) | |||||
| else if((prev_out == ' ') && IsAlpha(prev_out2) && !IsAlpha(prev_in)) | |||||
| { | { | ||||
| // insert extra space between a word and a number, to distinguish 'a 2' from 'a2' | // insert extra space between a word and a number, to distinguish 'a 2' from 'a2' | ||||
| sbuf[ix++] = ' '; | sbuf[ix++] = ' '; |
| const char *transpose_map; | const char *transpose_map; | ||||
| char dictionary_name[40]; | char dictionary_name[40]; | ||||
| char phon_out[500]; | |||||
| char phonemes_repeat[20]; | char phonemes_repeat[20]; | ||||
| int phonemes_repeat_count; | int phonemes_repeat_count; | ||||
| int phoneme_tab_ix; | int phoneme_tab_ix; | ||||
| int iswupper2(int c); | int iswupper2(int c); | ||||
| int towlower2(unsigned int c); | int towlower2(unsigned int c); | ||||
| int towupper2(unsigned int c); | int towupper2(unsigned int c); | ||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode); | |||||
| const char *GetTranslatedPhonemeString(int phoneme_mode); | |||||
| const char *WordToString2(unsigned int word); | const char *WordToString2(unsigned int word); | ||||
| ALPHABET *AlphabetFromChar(int c); | ALPHABET *AlphabetFromChar(int c); | ||||
| ALPHABET *AlphabetFromName(const char *name); | ALPHABET *AlphabetFromName(const char *name); |
| int translate_text = 0; | int translate_text = 0; | ||||
| char buf[1000]; | char buf[1000]; | ||||
| char phon_out[N_PH_LIST*2]; | char phon_out[N_PH_LIST*2]; | ||||
| const char *phon_out2; | |||||
| int clause_tone; | int clause_tone; | ||||
| int clause_count; | int clause_count; | ||||
| int use_ipa = 0; | int use_ipa = 0; | ||||
| CalcPitches(translator,clause_tone); | CalcPitches(translator,clause_tone); | ||||
| CalcLengths(translator); | CalcLengths(translator); | ||||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||||
| phon_out2 = GetTranslatedPhonemeString(use_ipa); | |||||
| if(clause_count++ > 0) | if(clause_count++ > 0) | ||||
| strcat(phon_out," ||"); | strcat(phon_out," ||"); | ||||
| strcat(phon_out,translator->phon_out); | |||||
| t_phonetic->SetValue(wxString(translator->phon_out,wxConvUTF8)); | |||||
| strcat(phon_out, phon_out2); | |||||
| t_phonetic->SetValue(wxString(phon_out2, wxConvUTF8)); | |||||
| if((n_ph_list + n_phoneme_list) >= N_PH_LIST) | if((n_ph_list + n_phoneme_list) >= N_PH_LIST) | ||||
| { | { |