| // ?8 Use full vowel, not schwa in some word endings | // ?8 Use full vowel, not schwa in some word endings | ||||
| // $alt use strong ending | // $alt use strong ending | ||||
| // $alt2 use weak ending | |||||
| // letter names, as they are spoken as a single character in text | // letter names, as they are spoken as a single character in text | ||||
| _18 'eIti:n | _18 'eIti:n | ||||
| _19 n'aInti:n | _19 n'aInti:n | ||||
| _2X tw'Enti | _2X tw'Enti | ||||
| ?3 _2X tw'Eni | |||||
| _3X T'3:ti | _3X T'3:ti | ||||
| ?5 _3X T'IRti | ?5 _3X T'IRti | ||||
| _4X f'o@ti | _4X f'o@ti | ||||
| ?7 _7X s'@v@nti | ?7 _7X s'@v@nti | ||||
| _8X 'eIti | _8X 'eIti | ||||
| _9X n'aInti | _9X n'aInti | ||||
| _0C h'Vndr@d | _0C h'Vndr@d | ||||
| _0M1 T'aUz@nd | _0M1 T'aUz@nd | ||||
| _0M2 m'Ili@n | _0M2 m'Ili@n | ||||
| askew a#skju: | askew a#skju: | ||||
| ass as | ass as | ||||
| assess a#sEs | assess a#sEs | ||||
| asus eIs@s | |||||
| atlas atl@s | atlas atl@s | ||||
| atop a#t0p | atop a#t0p | ||||
| attache at'aSeI $only | attache at'aSeI $only | ||||
| bizzare bIz'A@ | bizzare bIz'A@ | ||||
| blancmange bl@m0nZ | blancmange bl@m0nZ | ||||
| blase blA:zeI | blase blA:zeI | ||||
| bleh blEh | |||||
| blockade $2 | blockade $2 | ||||
| blouse blaUz | blouse blaUz | ||||
| bluest blu:@st | bluest blu:@st | ||||
| caprice ka#pr'i:s | caprice ka#pr'i:s | ||||
| caramel kar@mEl | caramel kar@mEl | ||||
| caravan kar@van | caravan kar@van | ||||
| carburetor kA@b@r'Et3 | |||||
| ?3 carburetor kA@b@reIt3 | |||||
| career k@r'i@3 | career k@r'i@3 | ||||
| caress k@rEs | caress k@rEs | ||||
| carpel kA@p@l | carpel kA@p@l | ||||
| cascade $2 | cascade $2 | ||||
| cashier kaS'i@3 | |||||
| cashmere kaSm'i@3 | cashmere kaSm'i@3 | ||||
| catastrophe ka#tastr@f%i | catastrophe ka#tastr@f%i | ||||
| catarrh k@tA@ | catarrh k@tA@ | ||||
| charade Sa#rA:d | charade Sa#rA:d | ||||
| charismatic karIsm'atIk | charismatic karIsm'atIk | ||||
| charit tSarIt // charitable | charit tSarIt // charitable | ||||
| charlatan SA@l@t@n | |||||
| chassis SaSi | |||||
| chateau SatoU | chateau SatoU | ||||
| chemise SEm'i:z | chemise SEm'i:z | ||||
| chevrolet SEvr@leI | chevrolet SEvr@leI | ||||
| corporal kO@pr@L | corporal kO@pr@L | ||||
| corporate kO@p@r@t | corporate kO@p@r@t | ||||
| corps kO@ $only | corps kO@ $only | ||||
| corral k@r'al | |||||
| cosmos k0zm0s | cosmos k0zm0s | ||||
| countered kaUnt3d | countered kaUnt3d | ||||
| coupon ku:p0n | coupon ku:p0n | ||||
| edwardian Edw'O@di@n | edwardian Edw'O@di@n | ||||
| efile i:faIl | efile i:faIl | ||||
| egg Eg // egging | egg Eg // egging | ||||
| egregious Igr'i:dZ@s | |||||
| eh eI | eh eI | ||||
| eid i:d | eid i:d | ||||
| el ,El $only | el ,El $only | ||||
| élite Il'i:t | élite Il'i:t | ||||
| embed Emb'Ed | embed Emb'Ed | ||||
| ember Emb3 | ember Emb3 | ||||
| emphasis Emf@sIs | |||||
| empire $1 | empire $1 | ||||
| emu i:mju: | emu i:mju: | ||||
| enroute 0nr'u:t | enroute 0nr'u:t | ||||
| famine famIn | famine famIn | ||||
| farewell $2 | farewell $2 | ||||
| fasten faas@n | fasten faas@n | ||||
| fatigue fa#ti:g | |||||
| fathom faD@m | fathom faD@m | ||||
| (faux pas) f'oU||p'A: | (faux pas) f'oU||p'A: | ||||
| favorite feIv@-rI2t // sp. | favorite feIv@-rI2t // sp. | ||||
| forever $2 | forever $2 | ||||
| forewarn $2 | forewarn $2 | ||||
| formid fO@m'Id // formidable | formid fO@m'Id // formidable | ||||
| formica fO@m'aIk@ | |||||
| fortunate fO@tS@n@t | fortunate fO@tS@n@t | ||||
| fortune fO@tSu:n | fortune fO@tSu:n | ||||
| foyer fOIeI | foyer fOIeI | ||||
| gimme gImi | gimme gImi | ||||
| giraffe dZI2raaf | giraffe dZI2raaf | ||||
| goin ,goUI2n $only // for goin' | goin ,goUI2n $only // for goin' | ||||
| gonna g,@n@ | |||||
| goodbye $2 | goodbye $2 | ||||
| goodday $2 | goodday $2 | ||||
| goodnight $2 | goodnight $2 | ||||
| huzzah h@z'A: | huzzah h@z'A: | ||||
| hyperbola haIp'3:b@l@ | hyperbola haIp'3:b@l@ | ||||
| hyperbole haIp'3:b@li | hyperbole haIp'3:b@li | ||||
| hypothesis haIp'0T@sIs | |||||
| hypotheses haIp'0T@si:z | |||||
| hypotenuse haIp'0t@nju:s | hypotenuse haIp'0t@nju:s | ||||
| hypoxia haIp'0ksi@ | hypoxia haIp'0ksi@ | ||||
| iconbar aIk0nbA@ | iconbar aIk0nbA@ | ||||
| idly aIdlI | idly aIdlI | ||||
| ignoramus Igno@r'eIm@s | ignoramus Igno@r'eIm@s | ||||
| illiterate $alt2 | |||||
| imagine I2madZI2n | imagine I2madZI2n | ||||
| impedance Imp'i:d@ns | impedance Imp'i:d@ns | ||||
| imperative Imp'Er@tIv | imperative Imp'Er@tIv | ||||
| landowner l'and,oUn3 | landowner l'and,oUn3 | ||||
| las ,las $only | las ,las $only | ||||
| ?3 las ,lA:s $only | ?3 las ,lA:s $only | ||||
| lasagne l@zanj@ | |||||
| lasagna l@zanj@ | |||||
| laser leIz3 | laser leIz3 | ||||
| lasso las'u: | lasso las'u: | ||||
| latte lateI | latte lateI | ||||
| linen lInI2n | linen lInI2n | ||||
| liqueur lI2kjU@ | liqueur lI2kjU@ | ||||
| liter li:t3 | liter li:t3 | ||||
| literate $alt2 | |||||
| literature lItrI2tS3 | literature lItrI2tS3 | ||||
| live laIv $onlys | live laIv $onlys | ||||
| live lIv $verb | live lIv $verb | ||||
| meadow mEdoU | meadow mEdoU | ||||
| mediaeval mEdI'i:v@L | mediaeval mEdI'i:v@L | ||||
| medicine mEds@n | medicine mEds@n | ||||
| melee mEleI | |||||
| ?3 melee meIleI | |||||
| melon mEl@n | melon mEl@n | ||||
| menus mEnju:z | menus mEnju:z | ||||
| memo mEmoU | memo mEmoU | ||||
| naif naI'i:f | naif naI'i:f | ||||
| naïve naI'i:v | naïve naI'i:v | ||||
| naivete naI'i:v@teI | |||||
| naked neIkI#d | naked neIkI#d | ||||
| nasa nasa# | nasa nasa# | ||||
| nascent neIs@nt | nascent neIs@nt | ||||
| panacea pana#s'i:@ | panacea pana#s'i:@ | ||||
| panache $2 | panache $2 | ||||
| pancreas pankri@s | pancreas pankri@s | ||||
| papaya pa#paI;@ | |||||
| parabola p@rab@l@ | parabola p@rab@l@ | ||||
| paralysis p@ral@sIs | paralysis p@ral@sIs | ||||
| parameter p@ramI2t3 | parameter p@ramI2t3 | ||||
| radar reIdA@ | radar reIdA@ | ||||
| radish radIS | radish radIS | ||||
| ragged ragI#d | ragged ragI#d | ||||
| raiment reIm@nt | |||||
| rainforest r'eInf,0rI2st | rainforest r'eInf,0rI2st | ||||
| rajah rA:dZA: | rajah rA:dZA: | ||||
| rapier reIpi@3 | rapier reIpi@3 | ||||
| sofa soUf@ | sofa soUf@ | ||||
| soiree swA:reI | soiree swA:reI | ||||
| sojourn soUdZ3:n | sojourn soUdZ3:n | ||||
| solder s0ld3 | |||||
| soldier soUldZ3 | soldier soUldZ3 | ||||
| solemn s0l@m | solemn s0l@m | ||||
| solicit s@lIsI2t // solicited,ing | solicit s@lIsI2t // solicited,ing | ||||
| souvenir su:v@n'i@3 | souvenir su:v@n'i@3 | ||||
| sorbet sO@beI | sorbet sO@beI | ||||
| soyabean sOI@bi:n | soyabean sOI@bi:n | ||||
| spaghetti spag'Eti | |||||
| spaghetti spa#gEti | |||||
| spasm spas@m | spasm spas@m | ||||
| specific sp@sIfIk | specific sp@sIfIk | ||||
| specimen spEsI2m@n | specimen spEsI2m@n | ||||
| suspect $verb | suspect $verb | ||||
| symbol sImb@L | symbol sImb@L | ||||
| sync sINk | sync sINk | ||||
| synthesis sInT@sIs $only | |||||
| synthesise sInT@saIz | |||||
| tableau tabloU | tableau tabloU | ||||
| tablet tabl@t | tablet tabl@t | ||||
| Cincinnati sInsIn'ati | Cincinnati sInsIn'ati | ||||
| Cologne k@loUn | Cologne k@loUn | ||||
| Columbus $2 | Columbus $2 | ||||
| Congo $1 | |||||
| Congo k0NgoU | |||||
| Connecticut k@nEtI2k@t | Connecticut k@nEtI2k@t | ||||
| Copenhagen koUp@nh'eIg@n | Copenhagen koUp@nh'eIg@n | ||||
| Cruz kru:z | Cruz kru:z | ||||
| Cyprus saIpr@s | Cyprus saIpr@s | ||||
| Dahomey $2 | Dahomey $2 | ||||
| Dallas dal@s | |||||
| Damascus da#mask@s | Damascus da#mask@s | ||||
| Dakota da#koUt@ | Dakota da#koUt@ | ||||
| Danish deInIS | Danish deInIS | ||||
| Lois loUIs | Lois loUIs | ||||
| Louis lu:i | Louis lu:i | ||||
| Louise lu:w'i:z | Louise lu:w'i:z | ||||
| Luigi lu:'i:dZi | |||||
| Luis lu:Is | Luis lu:Is | ||||
| Lupe lu:peI | Lupe lu:peI | ||||
| Madeline mad@lI2n | Madeline mad@lI2n | ||||
| Maurice m0rIs | Maurice m0rIs | ||||
| Mavis meIvIs | Mavis meIvIs | ||||
| Megan mEg@n | Megan mEg@n | ||||
| Melissa $2 | |||||
| Melissa m@lIs@ | |||||
| Michele mI2SEl | Michele mI2SEl | ||||
| Michelle mI2SEl | Michelle mI2SEl | ||||
| Miguel mi:Q'El | Miguel mi:Q'El | ||||
| Pandora $2 | Pandora $2 | ||||
| Patricia pa#trIS@ | Patricia pa#trIS@ | ||||
| Penelope p@nEl@pi | Penelope p@nEl@pi | ||||
| Persephone p3s'Ef@ni | |||||
| Phoebe fi:bi: | Phoebe fi:bi: | ||||
| Rachael reItS@L | Rachael reItS@L | ||||
| Rachel reItS@L | Rachel reItS@L | ||||
| Rees ri:s | Rees ri:s | ||||
| Reese ri:s | Reese ri:s | ||||
| Reggie rEdZi | Reggie rEdZi | ||||
| Remus ri:m@s | |||||
| Reynold rEn@Ld | Reynold rEn@Ld | ||||
| Rhys ri:s | Rhys ri:s | ||||
| Rihanna rI'A:n@ | Rihanna rI'A:n@ | ||||
| Disney dIzni | Disney dIzni | ||||
| Dolce d0ltSeI | Dolce d0ltSeI | ||||
| Dvorak d@-vo@Zak | Dvorak d@-vo@Zak | ||||
| Folger foUldZ3 | |||||
| Gibson gIbs@n | Gibson gIbs@n | ||||
| Guinness gInIs | Guinness gInIs | ||||
| Hades heIdi:z | Hades heIdi:z | ||||
| Mackenna m@kEn@ | Mackenna m@kEn@ | ||||
| Mackenzie m@kEnzi | Mackenzie m@kEnzi | ||||
| Medusa $2 | |||||
| Montague m0nt@gju: | Montague m0nt@gju: | ||||
| Niro ni@roU | Niro ni@roU | ||||
| Patel pa#tEl | Patel pa#tEl | ||||
| Wii wi:: | Wii wi:: | ||||
| Yaesu jeIsu: | Yaesu jeIsu: | ||||
| Yamaha jam@hA: | Yamaha jam@hA: | ||||
| zeus zju:s | |||||
| zhivago ZI2vA:goU | zhivago ZI2vA:goU | ||||
| .L02 i y | .L02 i y | ||||
| .L03 a i o u // vowel, not 'e' | .L03 a i o u // vowel, not 'e' | ||||
| .L05 c g k | .L05 c g k | ||||
| .L06 s z | |||||
| .L10 grap log met scop // scientific endings | .L10 grap log met scop // scientific endings | ||||
| st) an (_ an | st) an (_ an | ||||
| m) an (_ an | m) an (_ an | ||||
| hum) an (_ @n | hum) an (_ @n | ||||
| &) an (ty_ @n | |||||
| &) an (t_ @n | &) an (t_ @n | ||||
| ?8 &) an (t_ a#n | ?8 &) an (t_ a#n | ||||
| pl) an (t_ an | pl) an (t_ an | ||||
| @) aneous 'eIni@s | @) aneous 'eIni@s | ||||
| p) an (el an | p) an (el an | ||||
| &) an (ese @n | &) an (ese @n | ||||
| _) ane (s anI | |||||
| an (gul 'an | an (gul 'an | ||||
| &) ani (_ 'A:nI | &) ani (_ 'A:nI | ||||
| an (ia 'eIn | an (ia 'eIn | ||||
| _) arr (@ a#r | _) arr (@ a#r | ||||
| _) arr (ant ar | _) arr (ant ar | ||||
| _) arr (o ar | _) arr (o ar | ||||
| _) arro (g ar@ | |||||
| ar (i_ 'A:r | ar (i_ 'A:r | ||||
| ?3 @) ar (io_ 'ar | ?3 @) ar (io_ 'ar | ||||
| _b) ar (L02t ar | _b) ar (L02t ar | ||||
| .group at | .group at | ||||
| _g) ator eIt3 | _g) ator eIt3 | ||||
| &) ate (_$w_alt2 @t | |||||
| pal) ate (_ @t | pal) ate (_ @t | ||||
| consul) ate (_ @t | consul) ate (_ @t | ||||
| macul) ate (_ @t | macul) ate (_ @t | ||||
| @@e) d (_S1 d // suffix | @@e) d (_S1 d // suffix | ||||
| db (_ d,i:bi: | db (_ d,i:bi: | ||||
| ddh d | ddh d | ||||
| dh (K d | |||||
| dj dZ | dj dZ | ||||
| dg (_ dZ | dg (_ dZ | ||||
| dg (C dZ | dg (C dZ | ||||
| de (law dE | de (law dE | ||||
| de (leg dE | de (leg dE | ||||
| de (lica dE | de (lica dE | ||||
| de (ll dE | |||||
| _) de (ll dE | |||||
| de (lph dE | de (lph dE | ||||
| _) de (lt dE | _) de (lt dE | ||||
| delu (g dElju: | delu (g dElju: | ||||
| j) eo (p E | j) eo (p E | ||||
| _l) eo i@ | _l) eo i@ | ||||
| p) eo (pl i: | p) eo (pl i: | ||||
| _) eor eI3 | |||||
| @) eosis i:'oUsIs | @) eosis i:'oUsIs | ||||
| &) eous (_ =i@s | &) eous (_ =i@s | ||||
| th) eo (@ I2@ | th) eo (@ I2@ | ||||
| es (tate I2s | es (tate I2s | ||||
| @) esc (enC 'Es | @) esc (enC 'Es | ||||
| pr) es (ent Ez | pr) es (ent Ez | ||||
| magn) es (i 'i:z | |||||
| es (iA i:z | |||||
| es (ian_ 'i:z | es (ian_ 'i:z | ||||
| es (ic 'i:z | es (ic 'i:z | ||||
| th) eses (_ @si:z | |||||
| th) esis (_ @sIs | |||||
| th) es (iL06e_ @s | |||||
| r) esis (_ 'i:sIs | r) esis (_ 'i:sIs | ||||
| es (ive 'i:s | es (ive 'i:s | ||||
| esque 'Esk | esque 'Esk | ||||
| Cr) es (t Es | Cr) es (t Es | ||||
| v) es (t+ Es | v) es (t+ Es | ||||
| harv) es (t Is | harv) es (t Is | ||||
| esti (m EstI# | |||||
| v) es (ty @s | v) es (ty @s | ||||
| .group et | .group et | ||||
| .group ev | .group ev | ||||
| _) ev I2v | _) ev I2v | ||||
| _) eva (ne Ev@ | |||||
| _) eve i:v | _) eve i:v | ||||
| _) even i:v@n | _) even i:v@n | ||||
| _) eve (nt I2vE | _) eve (nt I2vE | ||||
| _) g (ilK g | _) g (ilK g | ||||
| g (ilC g | g (ilC g | ||||
| l) ging dZI2N | l) ging dZI2N | ||||
| _) g (iz g | |||||
| g (y dZ | g (y dZ | ||||
| exa) gg (er dZ | exa) gg (er dZ | ||||
| ght t | ght t | ||||
| _) hypo (@P4 h,aIpoU | _) hypo (@P4 h,aIpoU | ||||
| _) hypo (cr hIp0 | _) hypo (cr hIp0 | ||||
| hypo (de h,aIp@ | hypo (de h,aIp@ | ||||
| hypo (thes haIp'0 | |||||
| hypo (thet h,aIp@ | hypo (thet h,aIp@ | ||||
| .group i | .group i | ||||
| &) ial (_ =I2@l | &) ial (_ =I2@l | ||||
| i (ani_ I | i (ani_ I | ||||
| _) i (b aI | _) i (b aI | ||||
| i (ba_ 'i: | |||||
| @) ibab aIb@b | @) ibab aIb@b | ||||
| l) i (bel aI | l) i (bel aI | ||||
| l) i (ber I | l) i (ber I | ||||
| ize (d_ aIz | ize (d_ aIz | ||||
| i (zen I2 | i (zen I2 | ||||
| iz (er_ aIz | iz (er_ aIz | ||||
| i (zon_ 'aI | |||||
| p) izz (a i:t|s | p) izz (a i:t|s | ||||
| _) in (fo_ In | _) in (fo_ In | ||||
| _) infra (P5 ,Infr@ | _) infra (P5 ,Infr@ | ||||
| _) infra (c %Infra | _) infra (c %Infra | ||||
| in (ga_ 'IN | |||||
| in (got IN | in (got IN | ||||
| _) in (gro IN | _) in (gro IN | ||||
| _) in (jur In | _) in (jur In | ||||
| .group io | .group io | ||||
| io (_ =I2oU | |||||
| ?7 io (_ =i:oU | |||||
| &) io (_ =I2oU | |||||
| ?7 &) io (_ =i:oU | |||||
| io (_ i:oU | |||||
| b) io aIoU | b) io aIoU | ||||
| b) io (logy aI0 | b) io (logy aI0 | ||||
| card) io I2oU | card) io I2oU | ||||
| _) ki (lC@ kI2 | _) ki (lC@ kI2 | ||||
| _) ki (ll@ kI | _) ki (ll@ kI | ||||
| _) kilo (@ kIl@ | _) kilo (@ kIl@ | ||||
| kinesis k@n'i:sI#s | |||||
| kuan kwan | kuan kwan | ||||
| ku (ch ku: | ku (ch ku: | ||||
| kuwait ku:w'eIt | kuwait ku:w'eIt | ||||
| ninth naInT | ninth naInT | ||||
| n (Co_ =n | n (Co_ =n | ||||
| _) non (@P3 n,0n | _) non (@P3 n,0n | ||||
| nonchala (n n0nS@l@ | |||||
| ?3 nonchala (n n0nS@l'A: | |||||
| _) nurse (B n3:s | _) nurse (B n3:s | ||||
| .group ng | .group ng | ||||
| oer oU@ | oer oU@ | ||||
| _) oe (s i: | _) oe (s i: | ||||
| &) oe (s_S2 z | &) oe (s_S2 z | ||||
| oe (soph I2 | |||||
| oesopha I2s0f@ | |||||
| p) oe (t oUI | p) oe (t oUI | ||||
| f) oe (tA i: | f) oe (tA i: | ||||
| p) oe (ti oUE | p) oe (ti oUE | ||||
| t) ol (er 0l | t) ol (er 0l | ||||
| m) ol (ec @l | m) ol (ec @l | ||||
| m) ol (ecule 0l | m) ol (ecule 0l | ||||
| &) ol (enC @l | |||||
| old oUld | old oUld | ||||
| w) olf Ulf | w) olf Ulf | ||||
| p) olice @li:s | p) olice @li:s | ||||
| per (cei p3 | per (cei p3 | ||||
| per (culi p3 | per (culi p3 | ||||
| per (cus p3 | per (cus p3 | ||||
| _) peregrin pEr@grIn | |||||
| per (fec p3 | per (fec p3 | ||||
| per (iph p@r | per (iph p@r | ||||
| perme (a p3:mI | perme (a p3:mI | ||||
| qu (_ k | qu (_ k | ||||
| quay ki: | quay ki: | ||||
| jac) qu k | jac) qu k | ||||
| mes) qui (t k'i: | |||||
| li) quor k3 | li) quor k3 | ||||
| quy kwI | quy kwI | ||||
| un) rede (C ,ri:dI2 | un) rede (C ,ri:dI2 | ||||
| re (dem+ rI2 | re (dem+ rI2 | ||||
| _) re (dC rE | _) re (dC rE | ||||
| _) re (dolen rE | |||||
| _) re (dr r%i: | _) re (dr r%i: | ||||
| _) re (eduP2 r%i: | _) re (eduP2 r%i: | ||||
| _) re (emP2 r%i: | _) re (emP2 r%i: | ||||
| sch (o sk | sch (o sk | ||||
| sch (C S | sch (C S | ||||
| sch (_ S | sch (_ S | ||||
| _e) sch S | |||||
| ?3 sch (ed sk | ?3 sch (ed sk | ||||
| _) sch (il S | _) sch (il S | ||||
| _) scar (A ske@ | _) scar (A ske@ | ||||
| _) tian tjan | _) tian tjan | ||||
| &) tial S@L | &) tial S@L | ||||
| &) ti (ali SI | &) ti (ali SI | ||||
| i) tia (liL06 S@ | |||||
| &) tien S@n | &) tien S@n | ||||
| &) tience S@ns | &) tience S@ns | ||||
| &) tion S=@n | &) tion S=@n | ||||
| _l) u (a u: | _l) u (a u: | ||||
| r) u (aC+ u: | r) u (aC+ u: | ||||
| u (a_ =ju: | u (a_ =ju: | ||||
| s) ua (d weI | |||||
| s) ua (de weI | |||||
| s) uag weIdZ | s) uag weIdZ | ||||
| @g) ua (ge wI | @g) ua (ge wI | ||||
| u (al_ ju: | u (al_ ju: | ||||
| fl) ui (d u:I | fl) ui (d u:I | ||||
| dr) ui (d u:I | dr) ui (d u:I | ||||
| c) uisine wIzi:n | c) uisine wIzi:n | ||||
| c) uis wIz | |||||
| rc) ui (t I | rc) ui (t I | ||||
| rc) ui (tous ''ju:I | rc) ui (tous ''ju:I | ||||
| g) ui (ta I2 | g) ui (ta I2 |
| váltana $unstressend | váltana $unstressend | ||||
| találtam $unstressend | találtam $unstressend | ||||
| (sem biztosak) SEm_'||bistoSAk $unstressend | (sem biztosak) SEm_'||bistoSAk $unstressend | ||||
| kaphatnak $unstressend | |||||
| költ $unstressend | |||||
| hivatalt $unstressend | |||||
| támogatással $unstressend | |||||
| ugyanis $unstressend | |||||
| bizonyítják $unstressend | |||||
| ösztönzése $unstressend | |||||
| elvégezze $unstressend | |||||
| intézet $unstressend | |||||
| takarítani $unstressend | |||||
| bízza $unstressend | |||||
| bízna $unstressend | |||||
| filmekkel $unstressend | |||||
| lejátszóhoz $unstressend | |||||
| filmeket $unstressend | |||||
| vesződni $unstressend | |||||
| (legkényelmesebb az) lEgke:n^ElmESEb:_||Az $unstressend | |||||
| sejtem $unstressend | |||||
| vonalat $unstressend | |||||
| ragaszkodni $unstressend | |||||
| (mellett az) mEl:Et:_||Az $unstressend | |||||
| (a felület) A'||fElylEt $unstressend | |||||
| terveket $unstressend | |||||
| tervek $unstressend | |||||
| közben $unstressend | |||||
| menetrendet $unstressend | |||||
| (az indoklást) Az_'||indokla:St $unstressend | |||||
| hóbort $unstressend | |||||
| fogom $unstressend | |||||
| (az adatokat) Az_'||AdAtokAt $unstressend | |||||
| zajlik $unstressend | |||||
| kütyüt $unstressend | |||||
| tartok $unstressend | |||||
| (törvényt is) tYR2ve:n^t_||iS $unstressend | |||||
| ülésen $unstressend | |||||
| jogszabály $unstressend | |||||
| törvényjavaslatról $unstressend | |||||
| rövid $unstressend | |||||
| vonulhatnának $unstressend | |||||
| (horderejű kérdésben) hoR2dER2Ejy:_||ke:R2de:SbEn $unstressend | |||||
| törvényjavaslatához $unstressend | |||||
| (miniszter volt) ministER2||volt $unstressend | |||||
| szavazatot $unstressend | |||||
| (rendelkezést is) REndElkEze:St_||iS $unstressend | |||||
| (lehetővé tenné) lEhEtY:ve:_||tEn:e: $unstressend | |||||
| (indítványnak van) indi:tva:n^nAk_||vAn $unstressend | |||||
| (ellenére is biztosítaná) El:Ene:R2E_||iS_||bistoSi:tAna: $unstressend | |||||
| emelni $unstressend | |||||
| (csak ki) tSAk_||ki $unstressend | |||||
| indítványokról $unstressend | |||||
| (a módosítások) A'||mo:doSi:ta:Sok $unstressend | |||||
| közölni $unstressend | |||||
| tudjanak $unstressend | |||||
| piacot $unstressend | |||||
| rakott $unstressend | |||||
| (ott van) ot:_||vAn $unstressend | |||||
| // word pairs | // word pairs | ||||
| _) ப (ாதித்த b | _) ப (ாதித்த b | ||||
| _) ப (ாதிப்படை b | _) ப (ாதிப்படை b | ||||
| _) ப (ாதிப்படைகி b | _) ப (ாதிப்படைகி b | ||||
| _) ப (ாதிப்படைய b | |||||
| _) ப (ாதிப்படையுமெ b | _) ப (ாதிப்படையுமெ b | ||||
| _) ப (ாதிப்படைவ b | _) ப (ாதிப்படைவ b | ||||
| _) ப (ாதிப்பதா b | _) ப (ாதிப்பதா b |
| lengthmod 3 | lengthmod 3 | ||||
| WAV(ufric/x2, 60) | WAV(ufric/x2, 60) | ||||
| endphoneme | endphoneme | ||||
| phoneme L | |||||
| import_phoneme sq/ll | |||||
| // import_phoneme base/l- | |||||
| endphoneme | |||||
| phoneme l | |||||
| liquid | |||||
| IF nextPhW(isFlag1) THEN | |||||
| ELSE | |||||
| ChangePhoneme(L) // Hard | |||||
| ENDIF | |||||
| CALL base/l | |||||
| endphoneme |
| }; | }; | ||||
| static void WritePhMnemonic(char **buf, PHONEME_TAB *ph, PHONEME_LIST *plist) | |||||
| {//======================================================================================= | |||||
| char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa) | |||||
| {//===================================================================================== | |||||
| int c; | int c; | ||||
| int mnem; | int mnem; | ||||
| int len; | int len; | ||||
| int first; | int first; | ||||
| int ix = 0; | int ix = 0; | ||||
| char *phon_out; | |||||
| char *p; | |||||
| unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme | 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; | ||||
| phon_out = *buf; | |||||
| if(ph->code == phonEND_WORD) | if(ph->code == phonEND_WORD) | ||||
| { | { | ||||
| // ignore | // ignore | ||||
| phon_out[0] = 0; | phon_out[0] = 0; | ||||
| return; | |||||
| return(phon_out); | |||||
| } | |||||
| if(ph->code == phonSWITCH) | |||||
| { | |||||
| // the tone_ph field contains a phoneme table number | |||||
| p = phoneme_tab_list[plist->tone_ph].name; | |||||
| sprintf(phon_out, "(%s)", p); | |||||
| return(phon_out + strlen(phon_out)); | |||||
| } | } | ||||
| if(option_phonemes == 3) | |||||
| if(use_ipa) | |||||
| { | { | ||||
| // has an ipa name been defined for this phoneme ? | // has an ipa name been defined for this phoneme ? | ||||
| phdata.ipa_string[0] = 0; | phdata.ipa_string[0] = 0; | ||||
| } | } | ||||
| if(ipa_control >= 0x20) | if(ipa_control >= 0x20) | ||||
| { | { | ||||
| *buf += ix; | |||||
| return; // 0x20 = ignore phoneme | |||||
| phon_out = &phon_out[ix]; | |||||
| *phon_out = 0; | |||||
| return(phon_out); // 0x20 = ignore phoneme | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if((c == '/') && (option_phoneme_variants==0)) | if((c == '/') && (option_phoneme_variants==0)) | ||||
| break; // discard phoneme variant indicator | break; // discard phoneme variant indicator | ||||
| if(option_phonemes == 3) | |||||
| if(use_ipa) | |||||
| { | { | ||||
| // convert from ascii to ipa | // convert from ascii to ipa | ||||
| if(first && (c == '_')) | if(first && (c == '_')) | ||||
| first = 0; | first = 0; | ||||
| } | } | ||||
| *buf += ix; | |||||
| phon_out = &phon_out[ix]; | |||||
| *phon_out = 0; | |||||
| return(phon_out); | |||||
| } // end of WritePhMnemonic | } // end of WritePhMnemonic | ||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out) | |||||
| {//============================================================ | |||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||||
| {//========================================================================= | |||||
| /* Can be called after a clause has been translated into phonemes, in order | /* Can be 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 phon_out_ix=0; | int phon_out_ix=0; | ||||
| int stress; | int stress; | ||||
| unsigned int c; | unsigned int c; | ||||
| char *p; | |||||
| char *buf; | char *buf; | ||||
| char phon_buf[30]; | char phon_buf[30]; | ||||
| PHONEME_LIST *plist; | PHONEME_LIST *plist; | ||||
| c = 0; | c = 0; | ||||
| if(stress > 5) stress = 5; | if(stress > 5) stress = 5; | ||||
| if(option_phonemes == 3) | |||||
| if(use_ipa) | |||||
| { | { | ||||
| c = 0x2cc; // ipa, secondary stress | c = 0x2cc; // ipa, secondary stress | ||||
| if(stress > 3) | if(stress > 3) | ||||
| } | } | ||||
| } | } | ||||
| if(plist->ph->code == phonSWITCH) | |||||
| { | |||||
| // the tone_ph field contains a phoneme table number | |||||
| p = phoneme_tab_list[plist->tone_ph].name; | |||||
| buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa); | |||||
| sprintf(buf, "(%s)", p); | |||||
| buf += (strlen(p) + 2); | |||||
| } | |||||
| else | |||||
| if(plist->ph->code != phonSWITCH) | |||||
| { | { | ||||
| WritePhMnemonic(&buf, plist->ph, plist); | |||||
| if(plist->synthflags & SFLAG_LENGTHEN) | if(plist->synthflags & SFLAG_LENGTHEN) | ||||
| { | { | ||||
| WritePhMnemonic(&buf, phoneme_tab[phonLENGTHEN], NULL); | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa); | |||||
| } | } | ||||
| if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | ||||
| { | { | ||||
| // syllablic consonant | // syllablic consonant | ||||
| WritePhMnemonic(&buf, phoneme_tab[phonSYLLABIC], NULL); | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa); | |||||
| } | } | ||||
| if(plist->tone_ph > 0) | if(plist->tone_ph > 0) | ||||
| { | { | ||||
| WritePhMnemonic(&buf, phoneme_tab[plist->tone_ph], NULL); | |||||
| buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa); | |||||
| } | } | ||||
| } | } | ||||
| fprintf(f_events,"'%s'\n",events->id.name); | fprintf(f_events,"'%s'\n",events->id.name); | ||||
| else | else | ||||
| if(type==espeakEVENT_PHONEME) | if(type==espeakEVENT_PHONEME) | ||||
| fprintf(f_events,"[%s]\n",WordToString(events->id.number)); | |||||
| { | |||||
| char buf[10]; | |||||
| // fprintf(f_events,"[%s]\n",WordToString(events->id.number)); //old version, only 4 characters bytes | |||||
| memcpy(buf, events->id.string, 8); | |||||
| buf[8] = 0; | |||||
| fprintf(f_events,"[%s]\n", buf); | |||||
| } | |||||
| else | else | ||||
| fprintf(f_events,"%d\n",events->id.number); | fprintf(f_events,"%d\n",events->id.number); | ||||
| fprintf(f_events,"Type Audio Text Length Id\n"); | fprintf(f_events,"Type Audio Text Length Id\n"); | ||||
| fclose(f_events); | fclose(f_events); | ||||
| espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL,1000,NULL,1); | |||||
| espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, 1000, NULL, espeakINITIALIZE_PHONEME_IPA); | |||||
| espeak_SetSynthCallback(TestSynthCallback); | espeak_SetSynthCallback(TestSynthCallback); | ||||
| espeak_SetUriCallback(TestUriCallback); | espeak_SetUriCallback(TestUriCallback); | ||||
| void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) | |||||
| void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||||
| {//====================================================================================== | {//====================================================================================== | ||||
| // Do nothing in the command-line version. | // Do nothing in the command-line version. | ||||
| if(type == 2) | if(type == 2) |
| #endif | #endif | ||||
| void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr) | |||||
| {//====================================================================================== | |||||
| // type: 1=word, 2=sentence, 3=named mark, 4=play audio, 5=end | |||||
| void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr) | |||||
| {//================================================================================================== | |||||
| // type: 1=word, 2=sentence, 3=named mark, 4=play audio, 5=end, 7=phoneme | |||||
| ENTER("MarkerEvent"); | ENTER("MarkerEvent"); | ||||
| espeak_EVENT *ep; | espeak_EVENT *ep; | ||||
| double time; | double time; | ||||
| PHONEME_TAB *ph; | |||||
| if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) | if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) | ||||
| return; | return; | ||||
| if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) | if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) | ||||
| ep->id.name = &namedata[value]; | ep->id.name = &namedata[value]; | ||||
| else | else | ||||
| if(type == espeakEVENT_PHONEME) | |||||
| { | |||||
| int *p; | |||||
| p = (int *)(ep->id.string); | |||||
| p[0] = value; | |||||
| p[1] = value2; | |||||
| } | |||||
| else | |||||
| { | |||||
| ep->id.number = value; | ep->id.number = value; | ||||
| } | |||||
| } // end of MarkerEvent | } // end of MarkerEvent | ||||
| option_phonemes = 0; | option_phonemes = 0; | ||||
| option_mbrola_phonemes = 0; | option_mbrola_phonemes = 0; | ||||
| option_phoneme_events = (options & 1); | |||||
| option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); | |||||
| VoiceReset(0); | VoiceReset(0); | ||||
| // SetVoiceByName("default"); | // SetVoiceByName("default"); |
| #define ESPEAK_API | #define ESPEAK_API | ||||
| #endif | #endif | ||||
| #define ESPEAK_API_REVISION 6 | |||||
| #define ESPEAK_API_REVISION 7 | |||||
| /* | /* | ||||
| Revision 2 | Revision 2 | ||||
| Added parameter "options" to eSpeakInitialize() | Added parameter "options" to eSpeakInitialize() | ||||
| Revision 6 | Revision 6 | ||||
| Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | ||||
| Revision 7 24.Dec.2011 | |||||
| Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics. | |||||
| Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names. | |||||
| */ | */ | ||||
| /********************/ | /********************/ | ||||
| /* Initialization */ | /* Initialization */ | ||||
| int sample; // sample id (internal use) | int sample; // sample id (internal use) | ||||
| void* user_data; // pointer supplied by the calling program | void* user_data; // pointer supplied by the calling program | ||||
| union { | union { | ||||
| int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic. | |||||
| int number; // used for WORD and SENTENCE events. | |||||
| const char *name; // used for MARK and PLAY events. UTF8 string | const char *name; // used for MARK and PLAY events. UTF8 string | ||||
| char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | |||||
| } id; | } id; | ||||
| } espeak_EVENT; | } espeak_EVENT; | ||||
| /* | /* | ||||
| } espeak_ERROR; | } espeak_ERROR; | ||||
| #define espeakINITIALIZE_PHONEME_EVENTS 0x0001 | #define espeakINITIALIZE_PHONEME_EVENTS 0x0001 | ||||
| #define espeakINITIALIZE_PHONEME_IPA 0x0002 | |||||
| #define espeakINITIALIZE_DONT_EXIT 0x8000 | #define espeakINITIALIZE_DONT_EXIT 0x8000 | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| path: The directory which contains the espeak-data directory, or NULL for the default location. | path: The directory which contains the espeak-data directory, or NULL for the default location. | ||||
| options: bit 0: 1=allow espeakEVENT_PHONEME events. | options: bit 0: 1=allow espeakEVENT_PHONEME events. | ||||
| bit 1: 1= espeakEVENT_PHONEME events give IPA phoneme names, not eSpeak phoneme names | |||||
| bit 15: 1=don't exit if espeak_data is not found (used for --help) | bit 15: 1=don't exit if espeak_data is not found (used for --help) | ||||
| Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). | Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). |
| len = (80 * speed.wav_factor)/256; | len = (80 * speed.wav_factor)/256; | ||||
| if(ph->code != phonEND_WORD) | if(ph->code != phonEND_WORD) | ||||
| DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | |||||
| { | |||||
| char phoneme_name[16]; | |||||
| WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA); | |||||
| DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name); | |||||
| } | |||||
| ptr += sprintf(ptr,"%s\t",WordToString(name)); | ptr += sprintf(ptr,"%s\t",WordToString(name)); | ||||
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.46.10 21.Dec.11"; | |||||
| const char *version_string = "1.46.11 24.Dec.11"; | |||||
| const int version_phdata = 0x014600; | const int version_phdata = 0x014600; | ||||
| int option_device_number = -1; | int option_device_number = -1; | ||||
| if(control & 0x100) | if(control & 0x100) | ||||
| { | { | ||||
| // change phonemes pass | |||||
| // "change phonemes" pass | |||||
| plist->ph = phoneme_tab[plist->phcode]; | plist->ph = phoneme_tab[plist->phcode]; | ||||
| } | } | ||||
| ph = plist->ph; | ph = plist->ph; |
| // Type 1=word, 2=sentence, 3=named marker, 4=play audio, 5=end | // Type 1=word, 2=sentence, 3=named marker, 4=play audio, 5=end | ||||
| if(WcmdqFree() > 5) | if(WcmdqFree() > 5) | ||||
| { | { | ||||
| wcmdq[wcmdq_tail][0] = WCMD_MARKER; | |||||
| wcmdq[wcmdq_tail][1] = type; | |||||
| wcmdq[wcmdq_tail][2] = (char_posn & 0xffffff) | (length << 24); | |||||
| wcmdq[wcmdq_tail][3] = value; | |||||
| wcmdq[wcmdq_tail][0] = WCMD_MARKER + (type << 8); | |||||
| wcmdq[wcmdq_tail][1] = (char_posn & 0xffffff) | (length << 24); | |||||
| wcmdq[wcmdq_tail][2] = value; | |||||
| WcmdqInc(); | |||||
| } | |||||
| } // end of DoMarker | |||||
| void DoPhonemeMarker(int type, int char_posn, int length, char *name) | |||||
| {//================================================================== | |||||
| // This could be used to return an index to the word currently being spoken | |||||
| // Type 7=phoneme | |||||
| int *p; | |||||
| if(WcmdqFree() > 5) | |||||
| { | |||||
| wcmdq[wcmdq_tail][0] = WCMD_MARKER + (type << 8); | |||||
| wcmdq[wcmdq_tail][1] = (char_posn & 0xffffff) | (length << 24); | |||||
| p = (int *)name; | |||||
| wcmdq[wcmdq_tail][2] = p[0]; // up to 8 bytes of UTF8 characters | |||||
| wcmdq[wcmdq_tail][3] = p[1]; | |||||
| WcmdqInc(); | WcmdqInc(); | ||||
| } | } | ||||
| } // end of DoMarker | } // end of DoMarker | ||||
| unsigned char *pitch_env=NULL; | unsigned char *pitch_env=NULL; | ||||
| unsigned char *amp_env; | unsigned char *amp_env; | ||||
| PHONEME_TAB *ph; | PHONEME_TAB *ph; | ||||
| int use_ipa=0; | |||||
| char phoneme_name[16]; | |||||
| static int sourceix=0; | static int sourceix=0; | ||||
| PHONEME_DATA phdata; | PHONEME_DATA phdata; | ||||
| if(option_quiet) | if(option_quiet) | ||||
| return(0); | return(0); | ||||
| if(option_phoneme_events & espeakINITIALIZE_PHONEME_IPA) | |||||
| use_ipa = 1; | |||||
| if(mbrola_name[0] != 0) | if(mbrola_name[0] != 0) | ||||
| return(MbrolaGenerate(phoneme_list,n_ph,resume)); | return(MbrolaGenerate(phoneme_list,n_ph,resume)); | ||||
| if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD)) | if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD)) | ||||
| { | { | ||||
| // Note, for vowels, do the phoneme event after the vowel-start | // Note, for vowels, do the phoneme event after the vowel-start | ||||
| DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic); | |||||
| WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); | |||||
| DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); | |||||
| } | } | ||||
| switch(p->type) | switch(p->type) | ||||
| if(option_phoneme_events) | if(option_phoneme_events) | ||||
| { | { | ||||
| DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic); | |||||
| WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); | |||||
| DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); | |||||
| } | } | ||||
| fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
| if((option_phonemes > 0) || (phoneme_callback != NULL)) | if((option_phonemes > 0) || (phoneme_callback != NULL)) | ||||
| { | { | ||||
| GetTranslatedPhonemeString(translator->phon_out,sizeof(translator->phon_out)); | |||||
| int use_ipa = 0; | |||||
| if(option_phonemes == 3) | |||||
| use_ipa = 1; | |||||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||||
| if(option_phonemes > 0) | if(option_phonemes > 0) | ||||
| { | { | ||||
| fprintf(f_trans,"%s\n",translator->phon_out); | fprintf(f_trans,"%s\n",translator->phon_out); |
| void WavegenInit(int rate, int wavemult_fact); | void WavegenInit(int rate, int wavemult_fact); | ||||
| float polint(float xa[],float ya[],int n,float x); | float polint(float xa[],float ya[],int n,float x); | ||||
| int WavegenFill(int fill_zeros); | int WavegenFill(int fill_zeros); | ||||
| void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr); | |||||
| void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr); | |||||
| extern unsigned char *wavefile_data; | extern unsigned char *wavefile_data; | ||||
| void MbrolaReset(void); | void MbrolaReset(void); | ||||
| void DoEmbedded(int *embix, int sourceix); | void DoEmbedded(int *embix, int sourceix); | ||||
| void DoMarker(int type, int char_posn, int length, int value); | void DoMarker(int type, int char_posn, int length, int value); | ||||
| //int DoSample(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int length_mod, int amp); | |||||
| void DoPhonemeMarker(int type, int char_posn, int length, char *name); | |||||
| int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp); | int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp); | ||||
| int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation); | int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation); | ||||
| int PauseLength(int pause, int control); | int PauseLength(int pause, int control); |
| int IsAlpha(unsigned int c); | int IsAlpha(unsigned int c); | ||||
| int isspace2(unsigned int c); | int isspace2(unsigned int c); | ||||
| int towlower2(unsigned int c); | int towlower2(unsigned int c); | ||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out); | |||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||||
| Translator *SelectTranslator(const char *name); | Translator *SelectTranslator(const char *name); | ||||
| int SetTranslator2(const char *name); | int SetTranslator2(const char *name); | ||||
| 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); | void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata); | ||||
| 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); | |||||
| extern FILE *f_trans; // for logging | extern FILE *f_trans; // for logging | ||||
| extern FILE *f_logespeak; | extern FILE *f_logespeak; |
| char phon_out[N_PH_LIST*2]; | char phon_out[N_PH_LIST*2]; | ||||
| int clause_tone; | int clause_tone; | ||||
| int clause_count; | int clause_count; | ||||
| int use_ipa = 0; | |||||
| FILE *f; | FILE *f; | ||||
| int fd_temp; | int fd_temp; | ||||
| char fname_temp[100]; | char fname_temp[100]; | ||||
| t_phonetic->SetDefaultStyle(style_phonetic_large); | t_phonetic->SetDefaultStyle(style_phonetic_large); | ||||
| translate_text = 3; | translate_text = 3; | ||||
| use_ipa = 1; | |||||
| break; | break; | ||||
| case T_PROCESS: | case T_PROCESS: | ||||
| myframe->OnProsody(event); | myframe->OnProsody(event); | ||||
| } | } | ||||
| prosodycanvas->LayoutData(ph_list,n_ph_list); | prosodycanvas->LayoutData(ph_list,n_ph_list); | ||||
| option_phoneme_events = 1; | |||||
| option_phoneme_events = espeakINITIALIZE_PHONEME_EVENTS; | |||||
| option_log_frames = 1; | option_log_frames = 1; | ||||
| MakeWave2(ph_list,n_ph_list); | MakeWave2(ph_list,n_ph_list); | ||||
| option_log_frames = 0; | option_log_frames = 0; | ||||
| CalcPitches(translator,clause_tone); | CalcPitches(translator,clause_tone); | ||||
| CalcLengths(translator); | CalcLengths(translator); | ||||
| GetTranslatedPhonemeString(translator->phon_out,sizeof(translator->phon_out)); | |||||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||||
| if(clause_count++ > 0) | if(clause_count++ > 0) | ||||
| strcat(phon_out," ||"); | strcat(phon_out," ||"); | ||||
| strcat(phon_out,translator->phon_out); | strcat(phon_out,translator->phon_out); |
| #ifdef LOG_FRAMES | #ifdef LOG_FRAMES | ||||
| static void LogMarker(int type, int value) | |||||
| {//======================================= | |||||
| static void LogMarker(int type, int value, int value2) | |||||
| {//=================================================== | |||||
| char buf[20]; | |||||
| int *p; | |||||
| if(option_log_frames == 0) | if(option_log_frames == 0) | ||||
| return; | return; | ||||
| if(f_log) | if(f_log) | ||||
| { | { | ||||
| if(type == espeakEVENT_PHONEME) | if(type == espeakEVENT_PHONEME) | ||||
| fprintf(f_log,"Phoneme [%s]\n",WordToString(value)); | |||||
| { | |||||
| p = (int *)buf; | |||||
| p[0] = value; | |||||
| p[1] = value2; | |||||
| buf[8] = 0; | |||||
| fprintf(f_log,"Phoneme [%s]\n", buf); | |||||
| } | |||||
| else | else | ||||
| fprintf(f_log,"\n"); | fprintf(f_log,"\n"); | ||||
| fclose(f_log); | fclose(f_log); | ||||
| } | } | ||||
| WavegenSetEcho(); | WavegenSetEcho(); | ||||
| SetPitchFormants(); | SetPitchFormants(); | ||||
| MarkerEvent(espeakEVENT_SAMPLERATE,0,wvoice->samplerate,out_ptr); | |||||
| MarkerEvent(espeakEVENT_SAMPLERATE, 0, wvoice->samplerate, 0, out_ptr); | |||||
| // WVoiceChanged(wvoice); | // WVoiceChanged(wvoice); | ||||
| } | } | ||||
| long *q; | long *q; | ||||
| int length; | int length; | ||||
| int result; | int result; | ||||
| int marker_type; | |||||
| static int resume=0; | static int resume=0; | ||||
| static int echo_complete=0; | static int echo_complete=0; | ||||
| q = wcmdq[wcmdq_head]; | q = wcmdq[wcmdq_head]; | ||||
| length = q[1]; | length = q[1]; | ||||
| switch(q[0]) | |||||
| switch(q[0] & 0xff) | |||||
| { | { | ||||
| case WCMD_PITCH: | case WCMD_PITCH: | ||||
| SetPitch(length,(unsigned char *)q[2],q[3] >> 16,q[3] & 0xffff); | SetPitch(length,(unsigned char *)q[2],q[3] >> 16,q[3] & 0xffff); | ||||
| #endif | #endif | ||||
| case WCMD_MARKER: | case WCMD_MARKER: | ||||
| MarkerEvent(q[1],q[2],q[3],out_ptr); | |||||
| marker_type = q[0] >> 8; | |||||
| MarkerEvent(marker_type, q[1],q[2],q[3],out_ptr); | |||||
| #ifdef LOG_FRAMES | #ifdef LOG_FRAMES | ||||
| LogMarker(q[1],q[3]); | |||||
| LogMarker(marker_type, q[2], q[3]); | |||||
| #endif | #endif | ||||
| if(q[1] == 1) | |||||
| if(marker_type == 1) // word marker | |||||
| { | { | ||||
| current_source_index = q[2] & 0xffffff; | |||||
| current_source_index = q[1] & 0xffffff; | |||||
| } | } | ||||
| break; | break; | ||||