| street _^_EN | street _^_EN | ||||
| boy _^_EN | boy _^_EN | ||||
| square _^_EN | square _^_EN | ||||
| appeal _^_EN | |||||
| apple _^_EN | apple _^_EN | ||||
| beachbuggy _^_EN | beachbuggy _^_EN | ||||
| beachvolley _^_EN | beachvolley _^_EN | ||||
| browser _^_EN | |||||
| chart _^_EN | chart _^_EN | ||||
| coach _^_EN | coach _^_EN | ||||
| coke _^_EN | coke _^_EN | ||||
| firewall _^_EN | firewall _^_EN | ||||
| freak _^_EN | freak _^_EN | ||||
| friendly _^_EN | friendly _^_EN | ||||
| groupie _^_EN | |||||
| homepage _^_EN | homepage _^_EN | ||||
| hooligan _^_EN | hooligan _^_EN | ||||
| interface _^_EN | interface _^_EN | ||||
| boston _^_EN $alt | boston _^_EN $alt | ||||
| bronx _^_EN $alt | bronx _^_EN $alt | ||||
| boyle _^_EN $alt | boyle _^_EN $alt | ||||
| clarence _^_EN $alt | |||||
| cyrus _^_EN | cyrus _^_EN | ||||
| cia _^_EN $alt | cia _^_EN $alt | ||||
| fox _^_EN | fox _^_EN | ||||
| oregon _^_EN $alt | oregon _^_EN $alt | ||||
| piccadilly _^_EN | piccadilly _^_EN | ||||
| reynolds _^_EN $alt | reynolds _^_EN $alt | ||||
| purvis _^_EN | |||||
| //purvis _^_EN | |||||
| white _^_EN $alt | white _^_EN $alt | ||||
| // PB French words | // PB French words | ||||
| renæssance $alt | renæssance $alt | ||||
| ressource $alt | ressource $alt | ||||
| restance $alt | restance $alt | ||||
| revanche $alt | |||||
| romance $alt | romance $alt | ||||
| seance $alt | seance $alt | ||||
| service $alt | service $alt | ||||
| srilankan $alt | srilankan $alt | ||||
| sudan $alt | sudan $alt | ||||
| taiwan $alt | taiwan $alt | ||||
| texan $alt | |||||
| tibetan $alt | tibetan $alt | ||||
| tongan $alt | tongan $alt | ||||
| trojan $alt | trojan $alt | ||||
| eugenik $alt | eugenik $alt | ||||
| excentrik $alt | excentrik $alt | ||||
| fabrik $alt | fabrik $alt | ||||
| falkeblik $alt | |||||
| //falkeblik $alt | |||||
| folkloristik $alt | folkloristik $alt | ||||
| fonetik $alt | fonetik $alt | ||||
| fysik $alt | fysik $alt | ||||
| homiletik $alt | homiletik $alt | ||||
| hydraulik $alt | hydraulik $alt | ||||
| informatik $alt | informatik $alt | ||||
| journalistik $alt | |||||
| kamik $alt | kamik $alt | ||||
| karakteristik $alt | karakteristik $alt | ||||
| kasuistik $alt | kasuistik $alt | ||||
| ironi $alt | ironi $alt | ||||
| kakofoni $alt | kakofoni $alt | ||||
| kapellani $alt | kapellani $alt | ||||
| katatoni $alt | |||||
| kleptomani $alt | kleptomani $alt | ||||
| koloni $alt | koloni $alt | ||||
| kompagni $alt | kompagni $alt | ||||
| kvadrofoni $alt | kvadrofoni $alt | ||||
| litani $alt | litani $alt | ||||
| ludomani $alt | ludomani $alt | ||||
| makaroni m&k@r'Vni $alt | |||||
| mani $alt | mani $alt | ||||
| misogyni $alt | misogyni $alt | ||||
| monomani $alt | monomani $alt | ||||
| kontinuer $alt | kontinuer $alt | ||||
| kontraher $alt | kontraher $alt | ||||
| kontrasigner $alt | kontrasigner $alt | ||||
| kontraster $alt | |||||
| kontrastere $alt | |||||
| kontribuer $alt | kontribuer $alt | ||||
| kontroller $alt | |||||
| kontrollere $alt | |||||
| konturere $alt | konturere $alt | ||||
| konvener $alt | konvener $alt | ||||
| konverger $alt | konverger $alt | ||||
| konverser $alt | konverser $alt | ||||
| konverter $alt | konverter $alt | ||||
| konvojere $alt | konvojere $alt | ||||
| konvoluter $alt | |||||
| konvolutere $alt | |||||
| kooperer $alt | kooperer $alt | ||||
| koordiner $alt | koordiner $alt | ||||
| kopiere $alt | kopiere $alt | ||||
| lamenter $alt | lamenter $alt | ||||
| laminer $alt | laminer $alt | ||||
| lancer $alt | lancer $alt | ||||
| lasere $alt | |||||
| //lasere $alt | |||||
| latiniser $alt | latiniser $alt | ||||
| lavpasteuriser $alt | lavpasteuriser $alt | ||||
| legaliser $alt | legaliser $alt | ||||
| patiner $alt | patiner $alt | ||||
| patroniser $alt | patroniser $alt | ||||
| patruljere $alt | patruljere $alt | ||||
| afpatruljer $alt | |||||
| pausere $alt | pausere $alt | ||||
| pelleter $alt | pelleter $alt | ||||
| pendulere $alt | pendulere $alt | ||||
| strabadsere $alt | strabadsere $alt | ||||
| stranguler $alt | stranguler $alt | ||||
| stratificer $alt | stratificer $alt | ||||
| strukturer $alt | |||||
| strukturere $alt | |||||
| omstrukturer $alt | omstrukturer $alt | ||||
| studere $alt | studere $alt | ||||
| indstudere $alt | indstudere $alt | ||||
| taktreguler $alt | taktreguler $alt | ||||
| taljere $alt | taljere $alt | ||||
| tamburer $alt | tamburer $alt | ||||
| tamponer $alt | |||||
| tamponere $alt | |||||
| tangere $alt | tangere $alt | ||||
| tapetser $alt | tapetser $alt | ||||
| tarer $alt | tarer $alt | ||||
| futon $alt | futon $alt | ||||
| føljeton fWljet'Vn $alt | føljeton fWljet'Vn $alt | ||||
| facon $alt | facon $alt | ||||
| kamæleon $alt | |||||
| lazaron $alt | lazaron $alt | ||||
| makron $alt | makron $alt | ||||
| melon $alt | melon $alt | ||||
| patolog $alt | patolog $alt | ||||
| politolog $alt | politolog $alt | ||||
| prolog $alt | prolog $alt | ||||
| proktolog $alt | |||||
| psykolog $alt | psykolog $alt | ||||
| radiolog $alt | radiolog $alt | ||||
| runolog $alt | runolog $alt | ||||
| økologi $alt | økologi $alt | ||||
| // final -ose - stressed o | // final -ose - stressed o | ||||
| acidose $alt | |||||
| antibiose $alt | antibiose $alt | ||||
| apoteose $alt | apoteose $alt | ||||
| asbestose $alt | asbestose $alt | ||||
| professor $alt | professor $alt | ||||
| provisor $alt | provisor $alt | ||||
| revisor $alt | revisor $alt | ||||
| sektor $alt | |||||
| sensor $alt | sensor $alt | ||||
| sponsor $alt | sponsor $alt | ||||
| successor $alt | successor $alt | ||||
| emp $abbrev | emp $abbrev | ||||
| hbo $abbrev // TV station | hbo $abbrev // TV station | ||||
| usa $abbrev | usa $abbrev | ||||
| kfum $abbrev | |||||
| who $abbrev $allcaps // PB World Health Organization | who $abbrev $allcaps // PB World Health Organization | ||||
| ussr $abbrev $allcaps // Sovjet Union | ussr $abbrev $allcaps // Sovjet Union | ||||
| vsop $abbrev | vsop $abbrev | ||||
| (bh'er) b,e:h'O:V | (bh'er) b,e:h'O:V | ||||
| (l'chaim) l&kr'ajm | (l'chaim) l&kr'ajm | ||||
| scsi skVsi // PB | scsi skVsi // PB | ||||
| ike ajk // PB name | |||||
| ikes ajks // PB | |||||
| // Try to catch errors | // Try to catch errors | ||||
| x z | x z | ||||
| Dictionary da_dict 2011-05-05 | |||||
| Dictionary da_dict 2011-07-21 | |||||
| & &# 0 3 @ @- a A | & &# 0 3 @ @- a A | ||||
| aI e E i o O u V | aI e E i o O u V | ||||
| * - : ? b B d D | * - : ? b B d D | ||||
| dZ f g h j J k l | dZ f g h j J k l | ||||
| l/2 l/3 m n N p r R | l/2 l/3 m n N p r R | ||||
| s S t T tS v w x | |||||
| z Z | |||||
| R3 s S t T tS v w | |||||
| x z Z | |||||
| Dictionary hu_dict 2011-06-25 | |||||
| Dictionary hu_dict 2011-08-19 | |||||
| a A a: E e: i i: o | a A a: E e: i i: o | ||||
| o: u u: Y y y: Y: | o: u u: Y y y: Y: | ||||
| ts v x z | ts v x z | ||||
| Dictionary en_dict 2011-06-21 | |||||
| Dictionary en_dict 2011-08-17 | |||||
| 0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
| a a# A: A@ aa aI aI@ aU | a a# A: A@ aa aI aI@ aU | ||||
| s2 t v w Z | s2 t v w Z | ||||
| Dictionary fr_dict 2011-05-21 | |||||
| Dictionary fr_dict 2011-08-14 | |||||
| @ @- a A~ e E E: E~ | @ @- a A~ e E E: E~ | ||||
| i I o O O~ u u: w | i I o O O~ u u: w | ||||
| t. th th. v w x z | t. th th. v w x z | ||||
| Dictionary ta_dict 2011-06-25 | |||||
| Dictionary ta_dict 2011-08-21 | |||||
| a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
| I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
| U: V V# | U: V V# | ||||
| #X1 #X2 : ; b C d d. | |||||
| dZ f g h H j k l | |||||
| l. m n N n. n^ p Q | |||||
| r R s S s. t T t. | |||||
| th tS v w z z. | |||||
| # #X1 #X2 : ; b C d | |||||
| d. dZ f g h H j k | |||||
| l l. m n N n. n^ p | |||||
| Q r R s S s. t T | |||||
| t. th tS v w z z. | |||||
| Dictionary hy_dict 2008-12-22 | Dictionary hy_dict 2008-12-22 | ||||
| t tS v w x | t tS v w x | ||||
| Dictionary nl_dict 2011-06-08 | |||||
| Dictionary nl_dict 2011-07-23 | |||||
| 8 @ @- a A a: A~ e | 8 @ @- a A a: A~ e | ||||
| E e# E2 e: EI eU i I | E e# E2 e: EI eU i I | ||||
| w x z Z | w x z Z | ||||
| Dictionary ro_dict 2011-03-10 | |||||
| Dictionary ro_dict 2011-07-21 | |||||
| @ @- @I @U a aI aU e | @ @- @I @U a aI aU e | ||||
| ea eI eo eU i i/ I^ iI | ea eI eo eU i i/ I^ iI | ||||
| Z; | Z; | ||||
| Dictionary sk_dict 2010-03-12 | |||||
| Dictionary sk_dict 2011-08-08 | |||||
| & @- a a: e e: i i: | & @- a a: e e: i i: | ||||
| l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
| * ; b d d; dZ dz f | * ; b d d; dZ dz f | ||||
| g h j k l l^ m n | g h j k l l^ m n | ||||
| N n^ p r R R^ R^/ s | N n^ p r R R^ R^/ s | ||||
| S t t; tS ts v x z | |||||
| Z | |||||
| S t t; tS ts v w x | |||||
| z Z | |||||
| Dictionary sq_dict 2008-12-22 | Dictionary sq_dict 2008-12-22 | ||||
| tS v w z | tS v w z | ||||
| Dictionary am_dict 2010-10-02 | |||||
| Dictionary am_dict 2011-08-23 | |||||
| @ a e i o u y | @ a e i o u y | ||||
| ? b d dZ f g h j | |||||
| k l m n N n^ p R | |||||
| s S t tS ts v w x | |||||
| z Z | |||||
| : ? b d dZ f g h | |||||
| j k k` l m n N n^ | |||||
| p p` r R s S t t` | |||||
| tS tS` v w x z Z | |||||
| Dictionary ml_dict 2011-04-25 | Dictionary ml_dict 2011-04-25 | ||||
| k l l. m m# n N n# | k l l. m m# n N n# | ||||
| N# n. n.# n^ n^# p r s | N# n. n.# n^ n^# p r s | ||||
| S t t. th tS v w z | S t t. th tS v w z | ||||
| Dictionary et_dict 2011-07-01 | |||||
| & &: &i 8 8: 8u a A1 | |||||
| a: e E1 e: i I I1 i1 | |||||
| i: o O1 o: u U1 u: Y | |||||
| y Y: y: Yi yi | |||||
| : b d d^ dZ f g h | |||||
| j k l l^ m n N n^ | |||||
| p r R s S s2 s^ t | |||||
| t^ v w z Z | |||||
| Dictionary mt_dict 2011-07-29 | |||||
| @ a ai au e ei eu i | |||||
| I ie iu l- o u U ui | |||||
| y yi yY | |||||
| * : b c C d dZ f | |||||
| g h j k l m n p | |||||
| q r s S t tS v w | |||||
| x z Z |
| v vi: | v vi: | ||||
| w d'Vb@Lju: | w d'Vb@Lju: | ||||
| x Eks | x Eks | ||||
| y waI | |||||
| z zEd | z zEd | ||||
| ?3 z zi: | ?3 z zi: | ||||
| _· mId@Ld0t | _· mId@Ld0t | ||||
| _¸ sEd'Il@ | _¸ sEd'Il@ | ||||
| _¹ su:p@skrIptw'0n | _¹ su:p@skrIptw'0n | ||||
| _º maskjUlIn'O@dI2n@L | |||||
| //_º maskjUlIn'O@dI2n@L | |||||
| _º dI2gr'i:z | |||||
| _» raIt'gIl@mEt | _» raIt'gIl@mEt | ||||
| _¿ %Inv,3:tI2dkw'EstS@n | _¿ %Inv,3:tI2dkw'EstS@n | ||||
| ui $abbrev | ui $abbrev | ||||
| uk $abbrev | uk $abbrev | ||||
| un $abbrev $allcaps | un $abbrev $allcaps | ||||
| unhcr $abbrev | |||||
| url $abbrev | url $abbrev | ||||
| usa $abbrev | usa $abbrev | ||||
| usb $abbrev | usb $abbrev | ||||
| anon a#n0n | anon a#n0n | ||||
| anonymous $2 | anonymous $2 | ||||
| another a#nVD3 | another a#nVD3 | ||||
| answer aans3 | |||||
| ante anti | ante anti | ||||
| antecedent antIs'i:d@nt | antecedent antIs'i:d@nt | ||||
| antibody $1 | antibody $1 | ||||
| cutaway kVt@weI | cutaway kVt@weI | ||||
| cutoff kVt0f | cutoff kVt0f | ||||
| cutout kVtaUt | cutout kVtaUt | ||||
| cwm kUm | |||||
| cyan saI'an | cyan saI'an | ||||
| cymru kVmri | cymru kVmri | ||||
| dais deIIs | dais deIIs | ||||
| damaged d'amI2dZd | damaged d'amI2dZd | ||||
| dandelion dandI2laI@n | dandelion dandI2laI@n | ||||
| ddu DI // Welsh | |||||
| de d@ $only | de d@ $only | ||||
| debacle deIb'A:k@L | debacle deIb'A:k@L | ||||
| debrief di:br'i:f | debrief di:br'i:f | ||||
| dungaree dVNga#r'i: | dungaree dVNga#r'i: | ||||
| duvet du:veI | duvet du:veI | ||||
| d'ye dj@ | d'ye dj@ | ||||
| dynamo $1 | |||||
| ebook i:bUk | ebook i:bUk | ||||
| eweek i:wi:k | eweek i:wi:k | ||||
| flier flaI3 | flier flaI3 | ||||
| flourish flVrI2S | flourish flVrI2S | ||||
| ?3 flourish fl3:I2S | ?3 flourish fl3:I2S | ||||
| flyby flaIbaI | |||||
| focus foUk@s // ed,ing | focus foUk@s // ed,ing | ||||
| foothold fUthoUld | foothold fUthoUld | ||||
| forage f0rI2dZ | forage f0rI2dZ | ||||
| labored leIb@d | labored leIb@d | ||||
| laborer leIb@r3 | laborer leIb@r3 | ||||
| lager lA:g3 | lager lA:g3 | ||||
| laity leI@ti | |||||
| landowner l'and,oUn3 | landowner l'and,oUn3 | ||||
| las ,las | las ,las | ||||
| ?3 las ,lA:s | ?3 las ,lA:s | ||||
| literature lItrI2tS3 | literature lItrI2tS3 | ||||
| live laIv $onlys | live laIv $onlys | ||||
| live lIv $verb | live lIv $verb | ||||
| lived lIvd | |||||
| livecd l'aIvsi:d'i: | livecd l'aIvsi:d'i: | ||||
| livestock l'aIvst,0k | |||||
| lively laIvlI | lively laIvlI | ||||
| llama lA:m@ | llama lA:m@ | ||||
| locale loUk'aal | locale loUk'aal | ||||
| marijuana marI2w'A:n@ | marijuana marI2w'A:n@ | ||||
| marshall mA@S@L | marshall mA@S@L | ||||
| martinet $3 | martinet $3 | ||||
| massacre mas@k3 | |||||
| massage masA:Z | massage masA:Z | ||||
| mausoleum mO:s@li:@m | mausoleum mO:s@li:@m | ||||
| mayhem meIhEm | mayhem meIhEm | ||||
| minibus mInIbVs | minibus mInIbVs | ||||
| mining maInIN // not mini | mining maInIN // not mini | ||||
| minuet mInju:'Et | minuet mInju:'Et | ||||
| minus maIn@s | |||||
| minute mInIt $onlys | minute mInIt $onlys | ||||
| mirage mIrA:Z | mirage mIrA:Z | ||||
| misery mIz@rI | misery mIz@rI | ||||
| record $verb | record $verb | ||||
| redcross $2 | redcross $2 | ||||
| redeye r'Ed,aI | redeye r'Ed,aI | ||||
| redial ri:daI@l | |||||
| redo ri:du: | redo ri:du: | ||||
| redone ri:d'Vn | redone ri:d'Vn | ||||
| reference rEfr@ns | reference rEfr@ns | ||||
| sclera skli@r | sclera skli@r | ||||
| scourge sk3:dZ | scourge sk3:dZ | ||||
| scrotum skroUt@m | scrotum skroUt@m | ||||
| scythe saID | |||||
| seabed si:bEd | seabed si:bEd | ||||
| sealion si:laI@n | sealion si:laI@n | ||||
| seance seI0ns | seance seI0ns | ||||
| several sEvr@L | several sEvr@L | ||||
| shallow SaloU | shallow SaloU | ||||
| shampoo $2 | shampoo $2 | ||||
| shepherd SEp@d | |||||
| sheriff S'ErI2f | sheriff S'ErI2f | ||||
| shew SoU | shew SoU | ||||
| shia Si:@ | shia Si:@ | ||||
| Dyfed d'VvId | Dyfed d'VvId | ||||
| Edinburgh EdInb%Vr@ | Edinburgh EdInb%Vr@ | ||||
| Ely i:li | Ely i:li | ||||
| Enfield $1 | |||||
| Exeter EksIt3 | Exeter EksIt3 | ||||
| Exmoor EksmU@ | Exmoor EksmU@ | ||||
| Fylde faIld | Fylde faIld | ||||
| Cohen koU@n | Cohen koU@n | ||||
| Cthulhu k@-Tu:l#u: | Cthulhu k@-Tu:l#u: | ||||
| Chrysler kraIzl3 | Chrysler kraIzl3 | ||||
| Dante danteI | |||||
| Disney dIzni | Disney dIzni | ||||
| Dolce d0ltSeI | Dolce d0ltSeI | ||||
| Dvorak d@-vo@Zak | Dvorak d@-vo@Zak |
| sw) a (B 0 | sw) a (B 0 | ||||
| a (Be# eI | a (Be# eI | ||||
| w) a (Be# eI | w) a (Be# eI | ||||
| a (Cee+ a | |||||
| a (BeCo_ a | a (BeCo_ a | ||||
| a (BerA a | a (BerA a | ||||
| a (BerC a | a (BerC a | ||||
| w) a (d 0 | w) a (d 0 | ||||
| ow) a (d @ | ow) a (d @ | ||||
| ae i: | ae i: | ||||
| aea i@ | |||||
| aea 'i@ | |||||
| @) aed (_S2 d | @) aed (_S2 d | ||||
| ae (l eI | ae (l eI | ||||
| h) ae (m i: | h) ae (m i: | ||||
| @) awi (_ 'A:wI | @) awi (_ 'A:wI | ||||
| _) aw (k O: | _) aw (k O: | ||||
| _) aw (ok a#w | _) aw (ok a#w | ||||
| awr (_ aU@ | |||||
| C) a (x+ a | C) a (x+ a | ||||
| _) a (x+ a | _) a (x+ a | ||||
| ay eI | ay eI | ||||
| acou (st a#ku: | acou (st a#ku: | ||||
| ac (quie ,a | ac (quie ,a | ||||
| _) acre eIk@ | _) acre eIk@ | ||||
| mass) acre @k3 | |||||
| _) ac (ri ak | _) ac (ri ak | ||||
| ac (ro ak | ac (ro ak | ||||
| m) acro (@ akr@ | m) acro (@ akr@ | ||||
| ai (_ aI | ai (_ aI | ||||
| aic (_ 'eIIk | aic (_ 'eIIk | ||||
| aic (al 'eIIk | aic (al 'eIIk | ||||
| aie eI@ | |||||
| ai (i aI | ai (i aI | ||||
| @) ai (Ca_ 'eI | @) ai (Ca_ 'eI | ||||
| aig (n 'eI | aig (n 'eI | ||||
| @erd) am (_ am | @erd) am (_ am | ||||
| ?!3 &h) am (_N @m | ?!3 &h) am (_N @m | ||||
| &s) am (_ @m | &s) am (_ @m | ||||
| @r) am (a 'A:m | |||||
| @r) am (a_ 'A:m | |||||
| _) am (al a#m | _) am (al a#m | ||||
| amateur am@t3 | amateur am@t3 | ||||
| amaz a#meIz | amaz a#meIz | ||||
| tr) an (si an | tr) an (si an | ||||
| tr) ansis anz'Is | tr) ansis anz'Is | ||||
| tr) an (som an | tr) an (som an | ||||
| answ (er aans | |||||
| ante (nn ant'E | ante (nn ant'E | ||||
| _) anti (@P4 ,antI // prefix | _) anti (@P4 ,antI // prefix | ||||
| ant (iq ant | ant (iq ant | ||||
| &h) ar (d_ 3 | &h) ar (d_ 3 | ||||
| &ch) ar (d 3 | &ch) ar (d 3 | ||||
| &k) ar (d_ 3 | &k) ar (d_ 3 | ||||
| &p) ar (d_ 3 | |||||
| &st) ar (d_ 3 | &st) ar (d_ 3 | ||||
| &w) ar (d_ 3 | &w) ar (d_ 3 | ||||
| aw) ar (d O@ | aw) ar (d O@ | ||||
| eot) ar (d_ A@ | eot) ar (d_ A@ | ||||
| &z) ar (d_ 3 | &z) ar (d_ 3 | ||||
| ar (dry 3 | |||||
| h) ar (ass @r | h) ar (ass @r | ||||
| &m) aran @ran | &m) aran @ran | ||||
| sep) ar (at 3r | sep) ar (at 3r | ||||
| co (mpou k0 | co (mpou k0 | ||||
| co (mprehen k0 | co (mprehen k0 | ||||
| co (mprom k0 | co (mprom k0 | ||||
| co (mpt k0 | |||||
| _) comp (tr k%0m | |||||
| co (mputa k,0 | co (mputa k,0 | ||||
| _) co (mr k0 | _) co (mr k0 | ||||
| _) con (@ k%0n | _) con (@ k%0n | ||||
| &) en (ce_ @n | &) en (ce_ @n | ||||
| ?8 &) en (ce_ En | ?8 &) en (ce_ En | ||||
| f) en (ce_ En | f) en (ce_ En | ||||
| g) ener (al En@r | |||||
| _) en (ough I2n | _) en (ough I2n | ||||
| .group eo | .group eo | ||||
| %C) ers (_S4 3z | %C) ers (_S4 3z | ||||
| ?8 %C) ers (_S4 a#z | ?8 %C) ers (_S4 a#z | ||||
| ss) er (_S2 3 | ss) er (_S2 3 | ||||
| ss) ers (_S3 3z | |||||
| all) er (_ 3 | all) er (_ 3 | ||||
| mb) er (_ 3 | mb) er (_ 3 | ||||
| lin) er (_S1 3 | lin) er (_S1 3 | ||||
| _) er (A I2r | _) er (A I2r | ||||
| _) er 3: | _) er 3: | ||||
| _) err (A Er | _) err (A Er | ||||
| @) eral (ity @r'al | |||||
| &) eram (ent r@m | &) eram (ent r@m | ||||
| X) era (_ i@r@ | X) era (_ i@r@ | ||||
| cam) era @-r@ | |||||
| XC) err Er | XC) err Er | ||||
| erre 'e@ | erre 'e@ | ||||
| erred (_ '3:d | erred (_ '3:d | ||||
| &) ico (_ =I2koU | &) ico (_ =I2koU | ||||
| i (cus_ =I | i (cus_ =I | ||||
| _) i (d aI | _) i (d aI | ||||
| up) i (de I | |||||
| ir) i (d I | ir) i (d I | ||||
| acc) i (d I | acc) i (d I | ||||
| c) i (dal 'aI | c) i (dal 'aI | ||||
| inte (llec Int@ | inte (llec Int@ | ||||
| _) inter (@P5 ,Int3 // prefix | _) inter (@P5 ,Int3 // prefix | ||||
| _) inter (AP5 ,Int@r | _) inter (AP5 ,Int@r | ||||
| inter (est Int@r | |||||
| inter (est Intr | |||||
| interfer Int@f'i@3 | interfer Int@f'i@3 | ||||
| _) int (erio+ %Int | _) int (erio+ %Int | ||||
| _) inter (n_ %Int3: | _) inter (n_ %Int3: | ||||
| inism (_ InIz@m | inism (_ InIz@m | ||||
| infor (matio Inf3 | infor (matio Inf3 | ||||
| ino (_ 'i:noU | ino (_ 'i:noU | ||||
| _m) in (us aIn | |||||
| _m) inu (te aIn'ju: | _m) inu (te aIn'ju: | ||||
| _m) inute (m InIt | _m) inute (m InIt | ||||
| _) intra Intr@ | _) intra Intr@ | ||||
| n) ion =i@n | n) ion =i@n | ||||
| v) io (l aI@ | v) io (l aI@ | ||||
| ione (_ 'aI@ni | ione (_ 'aI@ni | ||||
| g) io (n @ | |||||
| g) io (n+ @ | |||||
| m) io (n I20 | m) io (n I20 | ||||
| sh) io (n @ | sh) io (n @ | ||||
| _) io (n aI0 | _) io (n aI0 | ||||
| ir (at %aIr | ir (at %aIr | ||||
| ir (ate =i@r | ir (ate =i@r | ||||
| ire aI@ | ire aI@ | ||||
| ir (ee aI@ | |||||
| ?8 ire aIa# | ?8 ire aIa# | ||||
| s) ir (en aI@ | s) ir (en aI@ | ||||
| c) ire (n aIr@ | c) ire (n aIr@ | ||||
| .group it | .group it | ||||
| _) it' %It | |||||
| _m) it (o aIt | _m) it (o aIt | ||||
| it (a_N 'i:t | it (a_N 'i:t | ||||
| it (o_ 'i:t | it (o_ 'i:t | ||||
| @) iv (e Iv | @) iv (e Iv | ||||
| iv (e# aIv | iv (e# aIv | ||||
| h) iv (e_ aIv | h) iv (e_ aIv | ||||
| l) ive (l aIv | |||||
| _l) ive (B aIv | |||||
| l) iv (en aIv | l) iv (en aIv | ||||
| r) ival aIv@L | r) ival aIv@L | ||||
| ct) iv (al 'aIv | ct) iv (al 'aIv | ||||
| Al) l (_ | Al) l (_ | ||||
| &) lim (ent lIm | &) lim (ent lIm | ||||
| &B) ling (_ lIN | &B) ling (_ lIN | ||||
| &B) lings (_ lINz | |||||
| ng) ling (_ @-lIN | ng) ling (_ @-lIN | ||||
| &t) ling (_ _lIN | &t) ling (_ _lIN | ||||
| &l) ling (_S4vd IN | &l) ling (_S4vd IN | ||||
| X) o (By_ oU | X) o (By_ oU | ||||
| _) o (Cy+ 0 | _) o (Cy+ 0 | ||||
| o (Be# oU | o (Be# oU | ||||
| oi (ce# OI | |||||
| o (BeCo_ 0 | o (BeCo_ 0 | ||||
| o (BenC oU | o (BenC oU | ||||
| o (Beon 'oU | o (Beon 'oU | ||||
| @@) ol (ar 'oUl | @@) ol (ar 'oUl | ||||
| h) ol (ar 0l | h) ol (ar 0l | ||||
| m) ole (st @lE | m) ole (st @lE | ||||
| b) ol (t oUl | |||||
| c) ol (our Vl | c) ol (our Vl | ||||
| @@) ol (us 'oUl | @@) ol (us 'oUl | ||||
| contr) ol oUl | contr) ol oUl | ||||
| olm (_ oUm | olm (_ oUm | ||||
| olo (gi '0l@ | olo (gi '0l@ | ||||
| olo (gic @l'0 | olo (gic @l'0 | ||||
| v) olt oUlt | |||||
| olt oUlt | |||||
| w) olv Ulv | w) olv Ulv | ||||
| N_p) oly ,0lI | N_p) oly ,0lI | ||||
| os (al_ 'oUz | os (al_ 'oUz | ||||
| _l) os (e u:z | _l) os (e u:z | ||||
| ose (_ oUz | ose (_ oUz | ||||
| purp) ose (_ @s | |||||
| purp) ose @s | |||||
| _r) os (e# oUz | _r) os (e# oUz | ||||
| c) os (ec oUs | c) os (ec oUs | ||||
| c) os (ine_ oUs | c) os (ine_ oUs | ||||
| y) ou (t_ aU | y) ou (t_ aU | ||||
| ou (v u: | ou (v u: | ||||
| oux (_ u: | oux (_ u: | ||||
| ou (z u: | |||||
| .group ov | .group ov | ||||
| @) ov (al u:v | @) ov (al u:v | ||||
| _) pt (Y t | _) pt (Y t | ||||
| ph f | ph f | ||||
| ph (am_ p | |||||
| phenome (n fI2n0mI | phenome (n fI2n0mI | ||||
| phenyl f,i:naIl | phenyl f,i:naIl | ||||
| p (haza p | p (haza p | ||||
| &ant) ry (_S2 r%I | &ant) ry (_S2 r%I | ||||
| .group re | .group re | ||||
| // _) re (@P2 %ri: | |||||
| _) re (C@ rI2 | _) re (C@ rI2 | ||||
| // _) re (A rI2 | |||||
| &Ct) red (_ @d | &Ct) red (_ @d | ||||
| &B) red (_ r@d | &B) red (_ r@d | ||||
| noeuv) re @ | |||||
| uv) re @ | |||||
| rer (_ r@ | rer (_ r@ | ||||
| re (_ 3 | re (_ 3 | ||||
| A) re (_ r@ | A) re (_ r@ | ||||
| _) scar (A ske@ | _) scar (A ske@ | ||||
| _) scar (a skar | _) scar (a skar | ||||
| scarc ske@s | scarc ske@s | ||||
| sc (i s | |||||
| sc (L02 s | |||||
| sci (b s@ | sci (b s@ | ||||
| sci (_ =skaI | sci (_ =skaI | ||||
| scis (_ =skIs | scis (_ =skIs | ||||
| @) u (late =jU | @) u (late =jU | ||||
| u (le_ ju: | u (le_ ju: | ||||
| s) u (le_ ju: | s) u (le_ ju: | ||||
| f) ul (fil %Vl | |||||
| f) ul (fil %Ul | |||||
| j) u (li u: | j) u (li u: | ||||
| @) uli (_ =jUlaI | @) uli (_ =jUlaI | ||||
| b) ull Ul | b) ull Ul | ||||
| f) ull Ul | f) ull Ul | ||||
| p) ull Ul | p) ull Ul | ||||
| b) ully UlI | b) ully UlI | ||||
| _f) ully UlI | |||||
| _f) u (lC U | |||||
| f) u (lcr V | |||||
| &f) ully (_ @l%I | &f) ully (_ @l%I | ||||
| ?8 &f) ully (_ Vl%I | ?8 &f) ully (_ Vl%I | ||||
| &) u (lous_ =jU | &) u (lous_ =jU | ||||
| p) un (ish Vn | p) un (ish Vn | ||||
| r) un (i u:n | r) un (i u:n | ||||
| un (A Vn | un (A Vn | ||||
| un (er ju:n | |||||
| C) un (er ju:n | |||||
| _) un (reC@P2 ,Vn | _) un (reC@P2 ,Vn | ||||
| un (regi %Vn | un (regi %Vn | ||||
| _) wr (Y r | _) wr (Y r | ||||
| C) w (_ w@ | C) w (_ w@ | ||||
| C) w (X U // Welsh names | |||||
| wh w | wh w | ||||
| wr r | wr r | ||||
| C) we (_ =wI | C) we (_ =wI | ||||
| xure (_ kS%U@ | xure (_ kS%U@ | ||||
| .group y | .group y | ||||
| _) y (_ waI | |||||
| -) y (- @ // Welsh names | |||||
| y j | y j | ||||
| _) y' (CP2 j@ | _) y' (CP2 j@ | ||||
| y (C_ I | y (C_ I | ||||
| Ette (_ 'Et | Ette (_ 'Et | ||||
| E (tic_ E | E (tic_ E | ||||
| Eus (_ I2@s | Eus (_ I2@s | ||||
| Ew (_ u: | |||||
| ob) Ey (_ eI | ob) Ey (_ eI | ||||
| // French translation rules for Espeak | // French translation rules for Espeak | ||||
| // *************************************************************************** | // *************************************************************************** | ||||
| // * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
| // * Copyright (C) 2005 to 2010 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 * | ||||
| // http://www.fluxnic.net/cicero | // http://www.fluxnic.net/cicero | ||||
| // | // | ||||
| // Rules are now maintained by Michel Such <[email protected]> | // Rules are now maintained by Michel Such <[email protected]> | ||||
| // Last update: 2011-05-20 Michel Such <[email protected]> | |||||
| // Last update: 2011-08-13 Michel Such <[email protected]> | |||||
| // | // | ||||
| // Letter classes: | // Letter classes: | ||||
| // When these diphtonges are after a consonant folllowing e, e is not mute | // When these diphtonges are after a consonant folllowing e, e is not mute | ||||
| .L10 ia ie io ua ue ui uo | .L10 ia ie io ua ue ui uo | ||||
| .L11 b p | .L11 b p | ||||
| .L12 é è aï al ib ie l om on ré | |||||
| .L12 é è aï al ib ie iq l om on ym ré | |||||
| // Words ending "son" pust sound english if preceded by L13 | // Words ending "son" pust sound english if preceded by L13 | ||||
| .L13 d g k l p er hn | .L13 d g k l p er hn | ||||
| _) yahoo (P5 ja'u | _) yahoo (P5 ja'u | ||||
| ym (L11 E~ // tympan | ym (L11 E~ // tympan | ||||
| ym (_ E~ // thym | |||||
| X) ys (_ is | X) ys (_ is | ||||
| yn (K E~ // laryngite | yn (K E~ // laryngite |
| LST ElESte: $allcaps | LST ElESte: $allcaps | ||||
| BAR bAR2 $allcaps | BAR bAR2 $allcaps | ||||
| //SS EsEs $allcaps | //SS EsEs $allcaps | ||||
| ALT Alt $allcaps | |||||
| TAB tAb $allcaps | |||||
| (a . m .) An^n^i||m'int $hasdot | (a . m .) An^n^i||m'int $hasdot | ||||
| ún u:JnEvEzEt: $hasdot | ún u:JnEvEzEt: $hasdot | ||||
| dr doktoR2 $hasdot | dr doktoR2 $hasdot | ||||
| körülményei $unstressend | körülményei $unstressend | ||||
| bízva $unstressend | bízva $unstressend | ||||
| száma $unstressend | száma $unstressend | ||||
| képes $unstressend | |||||
| számoltak $unstressend | |||||
| fakadó $unstressend | |||||
| firtatta $unstressend | |||||
| ítélték $unstressend | |||||
| itélték $unstressend | |||||
| fogják $unstressend | |||||
| bennem $unstressend | |||||
| állhat $unstressend | |||||
| lényege $unstressend | |||||
| derített $unstressend | |||||
| gyártotta $unstressend | |||||
| beszélni $unstressend | |||||
| számítógéppel $unstressend | |||||
| változást $unstressend | |||||
| lettek $unstressend | |||||
| tapasztalattal $unstressend | |||||
| súlyát $unstressend | |||||
| hatnak $unstressend | |||||
| rugalmas $unstressend | |||||
| anyagok $unstressend | |||||
| tárgyak $unstressend | |||||
| váltak $unstressend | |||||
| szűrő $unstressend | |||||
| szűrők $unstressend | |||||
| vitát $unstressend | |||||
| tevő $unstressend | |||||
| lévő $unstressend | |||||
| ajánlat $unstressend | |||||
| jelentkezhetnek $unstressend | |||||
| léphessen $unstressend | |||||
| építeni $unstressend | |||||
| darabra $unstressend | |||||
| figyelmesek $unstressend | |||||
| láttuk $unstressend | |||||
| hullott $unstressend | |||||
| szóltak $unstressend | |||||
| hallatszott $unstressend | |||||
| keresték $unstressend | |||||
| gépeket $unstressend | |||||
| követte $unstressend | |||||
| keresik $unstressend | |||||
| éreztem $unstressend | |||||
| vitatta $unstressend | |||||
| vitatja $unstressend | |||||
| útját $unstressend | |||||
| nehézségeket $unstressend | |||||
| város $unstressend | |||||
| polgármester $unstressend | |||||
| elkezdődött $unstressend | |||||
| vezető $unstressend | |||||
| feladatokat $unstressend | |||||
| jelzem $unstressend | |||||
| valósul $unstressend | |||||
| készül $unstressend | |||||
| megbízatást $unstressend | |||||
| polgármestert $unstressend | |||||
| nyertek $unstressend | |||||
| került $unstressend | |||||
| jelezte $unstressend | |||||
| végezni $unstressend | |||||
| tartunk $unstressend | |||||
| személy $unstressend | |||||
| fizetni $unstressend | |||||
| Éva $unstressend | |||||
| bánik $unstressend | |||||
| kiszolgáló $unstressend | |||||
| alapul $unstressend | |||||
| jelezni $unstressend | |||||
| fogadta $unstressend | |||||
| kapcsolat $unstressend | |||||
| tervet $unstressend | |||||
| szolgáltatását $unstressend | |||||
| segíti $unstressend | |||||
| felkerültek $unstressend | |||||
| mutatni $unstressend | |||||
| korlátozott $unstressend | |||||
| // word pairs | // word pairs | ||||
| (hogy a) h,oJ,A | (hogy a) h,oJ,A |
| bb (L01 b // only speak one b if followed by a consonant | bb (L01 b // only speak one b if followed by a consonant | ||||
| bbr bR2 //special exception with always need executing | bbr bR2 //special exception with always need executing | ||||
| bbj bj //special exception with always need executing | |||||
| .group c | .group c | ||||
| c ts | c ts | ||||
| cs (-sz tS|s //need spokening single ts and single s phoneme | cs (-sz tS|s //need spokening single ts and single s phoneme | ||||
| ccs (-sz tS|s //need spokening single ts and single s phoneme | ccs (-sz tS|s //need spokening single ts and single s phoneme | ||||
| licen) c (sértés ts | licen) c (sértés ts | ||||
| _fil) c (csík ts | |||||
| _pia) c (csarnok ts | |||||
| _pol) c (csat ts | |||||
| _mala) c (sivít ts | |||||
| _kilen) c (csöv ts | |||||
| _kilen) c (csomó ts | |||||
| szanité) c (cs ts | |||||
| pokró) c (cs ts | |||||
| kul) cs (zörg tS | |||||
| kartá) cs (zápo tS | |||||
| ínyen) c (ség ts | |||||
| .group ch | .group ch | ||||
| anar) ch (i h | anar) ch (i h | ||||
| harma) d (szint d | harma) d (szint d | ||||
| kó) d (jel d | kó) d (jel d | ||||
| harma) d (sor d | harma) d (sor d | ||||
| beszé) d (javít d | |||||
| rekor) d (sugár d | |||||
| máso) d (szaká d //For example másodszakács, másodszakáccsá words need spokening single d phoneme before s phoneme | |||||
| _ná) d (söv d //for example nádsövénnyé word | |||||
| .group dz | .group dz | ||||
| fogó) dz (kod ts | fogó) dz (kod ts | ||||
| kapáló) dz z | kapáló) dz z | ||||
| _ó) dz (ko ts | _ó) dz (ko ts | ||||
| gyűrű) dz (ik z | gyűrű) dz (ik z | ||||
| burkoló) dz z | |||||
| .group e | .group e | ||||
| e E | e E | ||||
| ggb gb //special exception with always need executing | ggb gb //special exception with always need executing | ||||
| ggr gR2 //special exception with always need executing | ggr gR2 //special exception with always need executing | ||||
| ?1 _) goeth gY:tE | ?1 _) goeth gY:tE | ||||
| _me) ggy (en_ J: //Single meggyen word need spokening longer J: phoneme | |||||
| me) g (gy g | me) g (gy g | ||||
| ggy (L01 J | ggy (L01 J | ||||
| ggyb Jb //special exception with always need executing | ggyb Jb //special exception with always need executing | ||||
| ggyr JR2 //special exception with always need executing | ggyr JR2 //special exception with always need executing | ||||
| szöve) g (gyűjt g | szöve) g (gyűjt g | ||||
| ta) g (gyűl g | ta) g (gyűl g | ||||
| gu) gg (ol g | gu) gg (ol g | ||||
| orszá) g (gyarapod g | |||||
| anya) g (gyár g | |||||
| anya) g (gyűjt g | |||||
| végi) g (gya g | |||||
| me) ggy (mag J | |||||
| me) ggy (íz J: | |||||
| bádo) g (gy g | |||||
| szö) g (gyár g | |||||
| han) g (gyakor g | |||||
| ele) ggy (é J: | |||||
| _jé) g (gyár g | |||||
| .group gy | .group gy | ||||
| gy J | gy J | ||||
| e) gy (összeg J: | e) gy (összeg J: | ||||
| e) gys (ík J|S //for example egysíkú word need spokening single J and S phoneme | e) gys (ík J|S //for example egysíkú word need spokening single J and S phoneme | ||||
| _e) gy (öntet J: | _e) gy (öntet J: | ||||
| tár) gy (sor J | |||||
| .group h | .group h | ||||
| h h | h h | ||||
| _sz) í (vattak i | _sz) í (vattak i | ||||
| _sz) í (vattákk i | _sz) í (vattákk i | ||||
| _sz) í (vató i | _sz) í (vató i | ||||
| _v) í (zi i //for example vízipipa, vízimentők beginning words need spokening i, not i: phoneme | |||||
| .group j | .group j | ||||
| j j | j j | ||||
| _) közt kYst | _) közt kYst | ||||
| k (-k k: //for example marok-körző word need cut one k letter and need spokening k: phoneme only | k (-k k: //for example marok-körző word need cut one k letter and need spokening k: phoneme only | ||||
| k-) k //silent with second k phoneme | k-) k //silent with second k phoneme | ||||
| _játé) kk (liens k: //exceptiof for kk (L01 rule | |||||
| .group l | .group l | ||||
| bű) n (jel n | bű) n (jel n | ||||
| negyve) n (yard n | negyve) n (yard n | ||||
| ötve) n (yard n | ötve) n (yard n | ||||
| benzi) n (jegy n | |||||
| elle) n (javaslat n | elle) n (javaslat n | ||||
| késő) n (jövő n | késő) n (jövő n | ||||
| közbe) n (jár n | közbe) n (jár n | ||||
| idé) ny (jel n^ | idé) ny (jel n^ | ||||
| vagyo) n (nyilatkozat n //for example vagyonnyilatkozat word need spokening single n phoneme before n^ phoneme, not two n^n^ phoneme. | vagyo) n (nyilatkozat n //for example vagyonnyilatkozat word need spokening single n phoneme before n^ phoneme, not two n^n^ phoneme. | ||||
| szí) n (jelzés n | szí) n (jelzés n | ||||
| kormá) ny (jelentés n^ | |||||
| benzi) nj nj | |||||
| mikrofo) n (nyílás n | |||||
| szí) n (nyom n | |||||
| .group o | .group o | ||||
| o o | o o | ||||
| viselkedé) s (zava S | viselkedé) s (zava S | ||||
| alkalmazá) s (szerver S | alkalmazá) s (szerver S | ||||
| fá) s (szárú S | fá) s (szárú S | ||||
| ritmu) s (zavar S | |||||
| pedagógu) s (sztrájk S | |||||
| .group ss | .group ss | ||||
| ssz ss2 | ssz ss2 | ||||
| _má) ssz (ó Ss | _má) ssz (ó Ss | ||||
| mennydörgé) ssz (erű Ss | mennydörgé) ssz (erű Ss | ||||
| robbaná) ss S: | robbaná) ss S: | ||||
| hamva) ssz s: | |||||
| robbaná) ssz (er Ss | robbaná) ssz (er Ss | ||||
| danubiu) ss s: //a radio station name | danubiu) ss s: //a radio station name | ||||
| danubiu) ssz s: //a radio station name | danubiu) ssz s: //a radio station name | ||||
| meglepeté) ssz (erű Ss | meglepeté) ssz (erű Ss | ||||
| motoro) ssz (án Ss | motoro) ssz (án Ss | ||||
| ülé) ssz (ak Ss | ülé) ssz (ak Ss | ||||
| tölté) ssz (abályoz Sss | |||||
| tölté) ssz (abályoz Ss | |||||
| orvo) ssz (övetség Ss | orvo) ssz (övetség Ss | ||||
| orvo) ssz (akértő Ss | orvo) ssz (akértő Ss | ||||
| orvo) ssz (emély Ss | orvo) ssz (emély Ss | ||||
| gyor) ssz (űr Ss //for example gyorsszűrő word need spokening single S and s phoneme | gyor) ssz (űr Ss //for example gyorsszűrő word need spokening single S and s phoneme | ||||
| _a) ssz (iszt s //for example the asszisztens word need spokening one s phoneme | _a) ssz (iszt s //for example the asszisztens word need spokening one s phoneme | ||||
| eltu) ss (ol S | eltu) ss (ol S | ||||
| ellátá) ssz (er Ss | |||||
| égé) ssz (ag Ss | |||||
| csapá) ssz (erű Ss | |||||
| menekülé) ssz (erű Ss | |||||
| _ökrö) ssz (ekere Ss | |||||
| .group sz | .group sz | ||||
| sz s | sz s | ||||
| _ka) sztsze st|sE | _ka) sztsze st|sE | ||||
| szemete) szs (ák SZ | szemete) szs (ák SZ | ||||
| dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme | dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme | ||||
| _búzá) szs (ák SZ | |||||
| _szene) szs (ák SZ | |||||
| _szalmá) szs (ák SZ | |||||
| va) szs (anér SZ | |||||
| gaboná) szs (ák SZ | |||||
| va) sz (ápor Sz | |||||
| .group t | .group t | ||||
| t t | t t | ||||
| álla) tj (ólét tj | álla) tj (ólét tj | ||||
| dolgoza) tj (avít tj | dolgoza) tj (avít tj | ||||
| természe) tj (ár tj | természe) tj (ár tj | ||||
| terüle) tj (elöl tj | |||||
| .group ts | .group ts | ||||
| ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
| _hé) tsz (ob t|s //same as prewious rule | _hé) tsz (ob t|s //same as prewious rule | ||||
| gyakorla) ts (oroz t|S | gyakorla) ts (oroz t|S | ||||
| támogato) ts (ág tS: | támogato) ts (ág tS: | ||||
| já) tsz (hass ts | |||||
| .group tt | .group tt | ||||
| tt t: | tt t: | ||||
| találko) z (t s | találko) z (t s | ||||
| eszkö) z (sor z | eszkö) z (sor z | ||||
| gő) z (síp z | gő) z (síp z | ||||
| matró) z (sapka z | |||||
| matró) z (sapk z | |||||
| nehé) z (súly z | nehé) z (súly z | ||||
| tör) zsz (ászló Z|z | tör) zsz (ászló Z|z | ||||
| zsz z|s //general exception. Need difference first z and second sz phoneme. eg: rajzszög, rajzszeg, mézszín words. | zsz z|s //general exception. Need difference first z and second sz phoneme. eg: rajzszög, rajzszeg, mézszín words. | ||||
| pofo) z (kod s | pofo) z (kod s | ||||
| ezkö) z (sáv z | ezkö) z (sáv z | ||||
| eszkö) z (sáv z | eszkö) z (sáv z | ||||
| _mé) z (sárg z | |||||
| tű) z (sáv z | |||||
| _tí) z (sor z | |||||
| _szá) z (sor z | |||||
| ré) z (sisak z | |||||
| matró) z (zsák z | |||||
| ré) z (sodrony z | |||||
| há) z (sarkot z | |||||
| .group | .group | ||||
| $ dolla:R2 | $ dolla:R2 |
| ən @-n // char.replacement for 'n | ən @-n // char.replacement for 'n | ||||
| ət t // char.replacement for 't | ət t // char.replacement for 't | ||||
| // pronouns | |||||
| ik $u | |||||
| me $u | |||||
| jij $u | |||||
| je $u | |||||
| gij $u | |||||
| ge $u | |||||
| u $u | |||||
| hij $u | |||||
| zij $u | |||||
| ze $u | |||||
| wij $u | |||||
| we $u | |||||
| // pronouns (may have -zelf suffix) | |||||
| ik %Ik | |||||
| me m@ | |||||
| jij j%EI | |||||
| je j@ | |||||
| gij Q%EI | |||||
| ge g@ | |||||
| u %y | |||||
| hij h%EI | |||||
| zij z%EI | |||||
| ze z@ | |||||
| wij v#%EI | |||||
| we v#@ | |||||
| jullie $u | jullie $u | ||||
| hen $u | |||||
| zich $u | |||||
| hen h%En | |||||
| zich z%Ix | |||||
| onszelf Ons'Elf | |||||
| // possessives | // possessives | ||||
| mijn $u | mijn $u | ||||
| hoewel $pause // although | hoewel $pause // although | ||||
| of $u $pause // whether | of $u $pause // whether | ||||
| omdat $pause // because | omdat $pause // because | ||||
| nadat $u $pause // after | |||||
| nadat $u2 $pause // after | |||||
| nudat $pause // now that | nudat $pause // now that | ||||
| sinds $pause // since | sinds $pause // since | ||||
| tenzij $pause // unless | tenzij $pause // unless | ||||
| mormel $alt | mormel $alt | ||||
| mortel $alt | mortel $alt | ||||
| morzel $alt | morzel $alt | ||||
| navel $alt | |||||
| obstakel $alt | obstakel $alt | ||||
| parabel $alt | parabel $alt | ||||
| partikel $alt | partikel $alt | ||||
| ongastvrij OnQAstvr'EI | ongastvrij OnQAstvr'EI | ||||
| ongelooflijk $3 | ongelooflijk $3 | ||||
| ongemakkelijk $3 | ongemakkelijk $3 | ||||
| ongelukkig $3 | |||||
| //ongelukkig $3 | |||||
| ongerieflijk $3 | ongerieflijk $3 | ||||
| ongrondwettig $3 | |||||
| //ongrondwettig $3 | |||||
| partijvoorzitters $2 | partijvoorzitters $2 | ||||
| pistache pist'AS | pistache pist'AS | ||||
| proces $2 | proces $2 | ||||
| waarschijnlijk $2 | waarschijnlijk $2 | ||||
| wanen v#a:n@n | wanen v#a:n@n | ||||
| wangen v#AN@n | wangen v#AN@n | ||||
| wanluidend $2 | |||||
| wanschapen $2 | |||||
| wantrouwend $2 | |||||
| ziekenhuisbevalling zi:k@nhWysb@vAlIN | ziekenhuisbevalling zi:k@nhWysb@vAlIN | ||||
| Justine Zyst'in | Justine Zyst'in | ||||
| kennedy kEn@dE | kennedy kEn@dE | ||||
| Laurent lo:r'An^ | Laurent lo:r'An^ | ||||
| Naomi $2 | |||||
| Nys nEIsd'WyzEnt | Nys nEIsd'WyzEnt | ||||
| //Trademarks | //Trademarks | ||||
| alexandrië $3 | alexandrië $3 | ||||
| canada kAna:da: | canada kAna:da: | ||||
| Kinshasa kInS'a:sa: | Kinshasa kInS'a:sa: | ||||
| Nairobi nAjr'o:bi | |||||
| Napel $alt | |||||
| Rochefort roS'for | Rochefort roS'for | ||||
| Zelzate zelzat@ | Zelzate zelzat@ | ||||
| (vond dat de) vOn_tA_t@ | (vond dat de) vOn_tA_t@ | ||||
| nadelig $2 // nadelig(e) | |||||
| nadelige $2 | |||||
| naderhand $3 | |||||
| nadien $2 $only | |||||
| nadrukke $2 // nadrukkelijk | |||||
| nafta nAfta: | |||||
| nalatig $2 // nalatig(e) | |||||
| nalatige $2 | |||||
| nasaal $2 | |||||
| nasi nAsi | |||||
| navoel $2 // navoelbaar(/bare) | |||||
| navulbaar $2 | |||||
| // translation rules for Dutch | // translation rules for Dutch | ||||
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| // Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant | |||||
| .L01 g k | .L01 g k | ||||
| aire (_ 'E:r@ | aire (_ 'E:r@ | ||||
| air (_ 'Er | air (_ 'Er | ||||
| @) agne (_ 'An^@ | @) agne (_ 'An^@ | ||||
| ale (_ 'a:l@ | |||||
| @) ant (_ 'Ant | @) ant (_ 'Ant | ||||
| @) ant (e_ 'Ant | @) ant (e_ 'Ant | ||||
| @) ant (en_ 'Ant | @) ant (en_ 'Ant | ||||
| bs (_N ps | bs (_N ps | ||||
| baan ba:n | baan ba:n | ||||
| &) baar (_ =ba:r | |||||
| &) baar (_S4 =ba:r | |||||
| &) bare (_S4 =ba:r@ | |||||
| _) bij (C@P3 b'EI | _) bij (C@P3 b'EI | ||||
| _) binnen (P6 b'In@n | _) binnen (P6 b'In@n | ||||
| _) boven (P5 b'o:v@n | _) boven (P5 b'o:v@n | ||||
| .group e | .group e | ||||
| e e# // [e:] but change to [@] in unstressed syllables | e e# // [e:] but change to [@] in unstressed syllables | ||||
| X) e e: // first syllable in a word | X) e e: // first syllable in a word | ||||
| &C) e (_S1qd @ | |||||
| e (_ @ | e (_ @ | ||||
| e (CK E | e (CK E | ||||
| e (x E | e (x E | ||||
| eeuw eU | eeuw eU | ||||
| eu Y: | eu Y: | ||||
| &C) e (_S1qd @ | |||||
| KAC) e (_S1e @ // remove 'e' and double the vowel | |||||
| el) e (_+S1qd @ | |||||
| er) e (_+S1qd @ | |||||
| ig) e (_+S1qd @ | |||||
| ea (_ 'e:a: | ea (_ 'e:a: | ||||
| eau o: //words with French origin | eau o: //words with French origin | ||||
| @) ee (_ 'e: | @) ee (_ 'e: | ||||
| &) em (_ @m | &) em (_ @m | ||||
| &) e (ment @ | &) e (ment @ | ||||
| &) e (nissen_ @ | &) e (nissen_ @ | ||||
| &) en (_S2qd @n | |||||
| &) en (_S2qd @n // double the previous vowel | |||||
| KAC) en (_S2e @n | |||||
| el) en (_+S2qd @n | |||||
| er) en (_+S2qd @n | |||||
| &) ens (_S3q @ns | &) ens (_S3q @ns | ||||
| ll) en (_S3 @n | ll) en (_S3 @n | ||||
| &) end (_ @nd | &) end (_ @nd | ||||
| &) ende (_ @nd@ | |||||
| &) enden (_ @nd@n | |||||
| &) ende (_S1 @ | |||||
| &) enden (_S2 @n | |||||
| eden e:d@n | eden e:d@n | ||||
| &) ent (_$w_alt =@nt | &) ent (_$w_alt =@nt | ||||
| @) ent (_ 'Ent | @) ent (_ 'Ent | ||||
| @) ent (ste_ 'Ent | @) ent (ste_ 'Ent | ||||
| ag) ent 'Ent | ag) ent 'Ent | ||||
| @j) es (_ @s | @j) es (_ @s | ||||
| @) es (_S2qd 'Es | |||||
| @) es (_S2qd 'Es // double the previous vowel | |||||
| KAC) es (_S2e @s | |||||
| @) essen (_S5qd 'Es@n | @) essen (_S5qd 'Es@n | ||||
| @) eres (_S4qd @r'Es | @) eres (_S4qd @r'Es | ||||
| @) eressen (_S7sq @r'Es@n | @) eressen (_S7sq @r'Es@n | ||||
| .group g | .group g | ||||
| g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] | ||||
| gg Q | gg Q | ||||
| s) g x | |||||
| _) ge (@P2 Q@ | _) ge (@P2 Q@ | ||||
| ge (bied Q@ | ge (bied Q@ | ||||
| ie (CtjeX_ 'i | ie (CtjeX_ 'i | ||||
| ie (ren_ 'i | ie (ren_ 'i | ||||
| ie (rd_ 'i | ie (rd_ 'i | ||||
| @) ig (_S2dq @x | |||||
| @) ige (_S3dq @Q@ | |||||
| @) igen (_ @Q@n | |||||
| @) iger (_ @Q@r | |||||
| @) igere (_ @Q@r@ | |||||
| @) igst (_ @Qst | |||||
| @) igste (_ @Qst@ | |||||
| @) ig (_S2dq =@x | |||||
| @) ige (_S3dq =@Q@ | |||||
| @) igen (_ =@Q@n | |||||
| @) iger (_ =@Q@r | |||||
| @) igere (_ =@Q@r@ | |||||
| @) igst (_ =@Qst | |||||
| @) igste (_ =@Qst@ | |||||
| ij (_ 'EI | ij (_ 'EI | ||||
| ij (e_ 'EI | ij (e_ 'EI | ||||
| @) ij (n_ 'EI | @) ij (n_ 'EI | ||||
| n (k$w_alt3 n | n (k$w_alt3 n | ||||
| _) na (C@@P2 n'a: | _) na (C@@P2 n'a: | ||||
| _) na (tion na: | |||||
| _) na (C@ n'a: | |||||
| _) na (C% nA | |||||
| _) na (cht nA | |||||
| _) narci (s n%ArsI | |||||
| _) na (rc n%A | |||||
| _) na (der na: | _) na (der na: | ||||
| _) na (tion na: | |||||
| _) nano (@P4 n'a:no: | |||||
| _) na (polA n%a: | |||||
| napoleon n%a:po:l@jOn | |||||
| _) natuur na:t'yr | _) natuur na:t'yr | ||||
| naturel na:tyr'El | |||||
| na (tur n%a: | |||||
| na (vig n%a: | |||||
| _) na (vr na: | |||||
| _) na (volg@ n%a: | |||||
| _) noord (@P5 no:rd | _) noord (@P5 no:rd | ||||
| _) nieuws (@P6 n'iws | _) nieuws (@P6 n'iws | ||||
| @@) nis (_S3 nIs | @@) nis (_S3 nIs | ||||
| _) on (@P2 %On | _) on (@P2 %On | ||||
| oo (X 'o: | oo (X 'o: | ||||
| oon 'o:n // in compounds, eg. telefoongesprek | oon 'o:n // in compounds, eg. telefoongesprek | ||||
| oo (C_ 'o: | |||||
| _) oost (@P4 o:st | _) oost (@P4 o:st | ||||
| _) op (@@P2 'Op | _) op (@@P2 'Op | ||||
| _) open (@P4 'o:p@n | _) open (@P4 'o:p@n | ||||
| _) op (era 'o:p | _) op (era 'o:p | ||||
| _) op (tion Op | _) op (tion Op | ||||
| @at) or (_ 'o:r | |||||
| ou (che_ u | ou (che_ u | ||||
| ouch (en_ uS | ouch (en_ uS | ||||
| _) over (@P4 ,o:v@r | _) over (@P4 ,o:v@r | ||||
| s (s | s (s | ||||
| A) s (A z | A) s (A z | ||||
| s (b z | s (b z | ||||
| s (g z | |||||
| s (d z | |||||
| sc s | sc s | ||||
| sch sx | sch sx | ||||
| sch (_ s | sch (_ s | ||||
| sj S | sj S | ||||
| @@) s (_S1 s | @@) s (_S1 s | ||||
| sc (oop sk | |||||
| sc (opi sk | |||||
| &) sel (_ =s@l | &) sel (_ =s@l | ||||
| &) selen (_ =s@l@n | &) selen (_ =s@l@n | ||||
| @) si (o S | @) si (o S | ||||
| .group v | .group v | ||||
| v v | v v | ||||
| s) v f | |||||
| _) van (@P3 v%An | _) van (@P3 v%An | ||||
| _) vanzelf (@P7 vAnz,Elf | _) vanzelf (@P7 vAnz,Elf | ||||
| _) wan (@P3 v#'An | _) wan (@P3 v#'An | ||||
| _) wan (L01@P3 v#'AN | _) wan (L01@P3 v#'AN | ||||
| _) wan (del v#An | _) wan (del v#An | ||||
| _) wanhopig v#Anh'o:p@Q | |||||
| _) wan (kel v#AN | _) wan (kel v#AN | ||||
| _) wann (eer v#An | |||||
| _) wanordelijk v#An_|'Ord@l@k | |||||
| _) wansmakelijk v#Ansm'a:k@l@k | |||||
| _) wanstaltig v#Anst'Alt@Q | |||||
| _) wantrouwig v#Antr'VU@Q | |||||
| _) wanvoeglijk v#Anv'uxl@k | |||||
| _) weg (@P3 v#'EQ | _) weg (@P3 v#'EQ | ||||
| _) weg (en v#e:Q | _) weg (en v#e:Q | ||||
| _) weg (e_ v#e:Q // bewegelijk | _) weg (e_ v#e:Q // bewegelijk | ||||
| .group z | .group z | ||||
| z z | z z | ||||
| z (z | z (z | ||||
| s) z | |||||
| zele (_S4 ze:l@ // common suffix for cities. | zele (_S4 ze:l@ // common suffix for cities. | ||||
| @) zelf (_S4 s'Elf | |||||
| _) zoge (@P4 z,og@ | _) zoge (@P4 z,og@ | ||||
| _) zuid (@P4 zWyt | _) zuid (@P4 zWyt | ||||
| ou (_N 'oU | ou (_N 'oU | ||||
| ou (_ ou | ou (_ ou | ||||
| o (AAA o | o (AAA o | ||||
| @C) o (riii_ 'o | |||||
| .group p | .group p |
| stĺp stl:p | stĺp stl:p | ||||
| plch pl-x | plch pl-x | ||||
| čln tSl-n | čln tSl-n | ||||
| plť pl-t; | |||||
| tĺk tl:k | |||||
| vlk vl-k | |||||
| // don't soften (d,n,t) before e,i | // don't soften (d,n,t) before e,i | ||||
| aktívni $alt | aktívni $alt |
| _] vVlV||sadUrVm // வல சதுரம் | _] vVlV||sadUrVm // வல சதுரம் | ||||
| _{ id.V||gVn.Vm // இட கணம் | _{ id.V||gVn.Vm // இட கணம் | ||||
| _} vVlV||gVn.Vm // வல கணம் | _} vVlV||gVn.Vm // வல கணம் | ||||
| < kuRaIvU // குறைவு | |||||
| > migUdi // மிகுதி | |||||
| _" me:Rgo:l. // மேற்கோள் | _" me:Rgo:l. // மேற்கோள் | ||||
| _' ot.RaI||m'e:Rgo:l. // ொற்றை மேற்கோள் | _' ot.RaI||m'e:Rgo:l. // ொற்றை மேற்கோள் | ||||
| __ ad.ig||ko:d.U // அடிக் கோடு | __ ad.ig||ko:d.U // அடிக் கோடு | ||||
| // abbreviations | // abbreviations | ||||
| ரூ ru:ba:j $dot $only | ரூ ru:ba:j $dot $only | ||||
| (பி . ஏ) bije: $dot | |||||
| (கி . மீ) kilo:mi:t.t.Vr $dot | |||||
| // numbers | // numbers | ||||
| _0 suz.ijVm // சுழியம் | _0 suz.ijVm // சுழியம் | ||||
| _dpt _pul.l.i | _dpt _pul.l.i | ||||
| // drop final [U] when followed by an ordinal suffix | |||||
| _1o onR | |||||
| _2o irVn.d. | |||||
| _3o mu:nR | |||||
| _4o na:ng | |||||
| _5o aInd | |||||
| _6o a:R | |||||
| _7o ;e:l | |||||
| _8o ;et.t. | |||||
| _9o onbVd. | |||||
| _10o patt | |||||
| _11o patinonR | |||||
| _12o pVnnirVn.d. | |||||
| _19o pattonbVd | |||||
| _20o irUbVd | |||||
| _30o muppVd // முப்பது | |||||
| _40o na:RpVd | |||||
| _50o aImbVd | |||||
| _60o aRUbVd | |||||
| _70o ;ez.UbVd | |||||
| _80o ;en.bVd | |||||
| _90o ton.n.u:R | |||||
| _1Co nu:R | |||||
| _2Co irUnu:R | |||||
| _3Co munnu:R | |||||
| _4Co na:nu:R | |||||
| _5Co aInu:R | |||||
| _6Co aRUnu:R | |||||
| _7Co ;ez.Unu:R | |||||
| _8Co ;en.n.u:R | |||||
| _#ம் a:m // ordinal suffix | _#ம் a:m // ordinal suffix | ||||
| _#-ம் a:m // ordinal suffix | |||||
| _#ல் il | |||||
| _#வது a:vVdU | |||||
| _#வதும் a:vVdUm | |||||
| _#வதுமாக a:vVdUma:gV | |||||
| _#-ம் a:m // ordinal suffix with hyphen | |||||
| _#-ல் il | |||||
| _#-வது a:vVdU | |||||
| _#-வதும் a:vVdUm | |||||
| _#-வதுமாக a:vVdUma:gV | |||||
| // English words | // English words | ||||
| tamil தமிழ் $text | tamil தமிழ் $text | ||||
| பந்தா $alt | பந்தா $alt | ||||
| பிரா bra: | பிரா bra: | ||||
| ப்ரா $alt | ப்ரா $alt | ||||
| (பி . ஏ) bije: | |||||
| பலம் $alt | |||||
| பலமாக $alt | |||||
| பலமா $alt | |||||
| // initial த as [d] | // initial த as [d] | ||||
| தின $alt | தின $alt | ||||
| தில் $alt | தில் $alt | ||||
| தன $alt | தன $alt | ||||
| தடியா $alt | |||||
| தட $alt | |||||
| // initial ட | // initial ட | ||||
| களிலும் $alt | களிலும் $alt | ||||
| கடம் $alt | கடம் $alt | ||||
| காட் $alt | காட் $alt | ||||
| கிடு $alt | |||||
| பைக்கில் baIkkIl | பைக்கில் baIkkIl | ||||
| தாங்ஸ் Ta:Nks // thanks | தாங்ஸ் Ta:Nks // thanks | ||||
| டிபுடி d.EpjUt.i // deputy | டிபுடி d.EpjUt.i // deputy | ||||
| டிபன் t.ifVn | |||||
| ஆகா a:Ha: | ஆகா a:Ha: | ||||
| ஓகோ o:Ho: | ஓகோ o:Ho: | ||||
| கப் kVp | கப் kVp |
| language variant | language variant | ||||
| name female1 | name female1 | ||||
| gender female | |||||
| gender female 70 | |||||
| pitch 145 200 | |||||
| flutter 7 | |||||
| pitch 140 200 | |||||
| flutter 8 | |||||
| roughness 4 | roughness 4 | ||||
| formant 0 115 80 150 | formant 0 115 80 150 | ||||
| formant 1 120 80 180 | formant 1 120 80 180 | ||||
| formant 7 110 70 150 | formant 7 110 70 150 | ||||
| formant 8 110 70 150 | formant 8 110 70 150 | ||||
| stressAdd -10 -10 -20 -20 0 0 40 70 | |||||
| stressAdd -10 -10 -20 -20 0 0 40 60 |
| gender male 70 | gender male 70 | ||||
| pitch 75 109 | pitch 75 109 | ||||
| flutter 4 | |||||
| flutter 5 | |||||
| roughness 4 | roughness 4 | ||||
| consonants 80 100 | consonants 80 100 | ||||
| formant 7 100 50 100 | formant 7 100 50 100 | ||||
| formant 8 100 50 100 | formant 8 100 50 100 | ||||
| voicing 155 | voicing 155 | ||||
| fast_test 0 45 75 | |||||
| name english | name english | ||||
| language en-uk 2 | language en-uk 2 | ||||
| language en-gb 2 | |||||
| language en 2 | language en 2 | ||||
| gender male | gender male | ||||
| name lancashire | name lancashire | ||||
| language en-uk-north | language en-uk-north | ||||
| language en-uk 3 | language en-uk 3 | ||||
| language en 5 | |||||
| gender male | gender male | ||||
| phonemes en-n | phonemes en-n |
| name english_rp | name english_rp | ||||
| language en-uk-rp | language en-uk-rp | ||||
| language en-uk 4 | language en-uk 4 | ||||
| language en 5 | |||||
| gender male | gender male | ||||
| phonemes en-rp | phonemes en-rp |
| name en-westindies | name en-westindies | ||||
| language en-wi | language en-wi | ||||
| language en-uk 4 | language en-uk 4 | ||||
| language en 10 | |||||
| gender male | gender male | ||||
| phonemes en-wi | phonemes en-wi |
| name english_wmids | name english_wmids | ||||
| language en-uk-wmids | language en-uk-wmids | ||||
| language en-uk 9 | |||||
| language en 9 | |||||
| gender male | gender male | ||||
| phonemes en-wm | phonemes en-wm |
| name spanish-latin-american | name spanish-latin-american | ||||
| language es-la | language es-la | ||||
| language es-mx 6 | language es-mx 6 | ||||
| language es 6 | |||||
| gender male | gender male | ||||
| phonemes es-la | phonemes es-la |
| language fr-be | |||||
| name french (Belgium) | name french (Belgium) | ||||
| language fr-be | |||||
| language fr 8 | |||||
| gender male | gender male | ||||
| dictrules 2 | dictrules 2 |
| name hindi-test | |||||
| name hindi | |||||
| language hi | language hi | ||||
| gender male | gender male | ||||
| translator hi | |||||
| phonemes hi | |||||
| dictionary hi | |||||
| dictrules 1 |
| name armenian-west | name armenian-west | ||||
| language hy-west | language hy-west | ||||
| language hy 8 | |||||
| gender male | gender male | ||||
| // change consonants for West Armenian pronunciation | // change consonants for West Armenian pronunciation |
| name en-german-5 | name en-german-5 | ||||
| language en | |||||
| language en 9 | |||||
| gender female | gender female | ||||
| pitch 140 220 | pitch 140 220 |
| name en-greek | name en-greek | ||||
| language en 7 | |||||
| language en 9 | |||||
| gender male | gender male | ||||
| pitch 82 117 | pitch 82 117 |
| name en-swedish-f | name en-swedish-f | ||||
| language en | |||||
| language en 10 | |||||
| gender female | gender female | ||||
| pitch 140 220 | pitch 140 220 |
| name portugal | name portugal | ||||
| language pt-pt | language pt-pt | ||||
| language pt 6 | |||||
| gender male | gender male | ||||
| phonemes pt-pt | phonemes pt-pt | ||||
| 74 phoneme tables | |||||
| 76 phoneme tables | |||||
| new total | new total | ||||
| base 107 107 | base 107 107 | ||||
| consonants 10 116 | consonants 10 116 | ||||
| jbo 2 114 | jbo 2 114 | ||||
| nci 3 123 | nci 3 123 | ||||
| fi 40 133 | fi 40 133 | ||||
| et 47 139 | |||||
| fr 59 140 | fr 59 140 | ||||
| fr-ca 11 140 | fr-ca 11 140 | ||||
| hi 57 148 | hi 57 148 | ||||
| ta 22 151 | |||||
| ta 23 152 | |||||
| kn 17 148 | kn 17 148 | ||||
| ml 21 151 | ml 21 151 | ||||
| hu 25 122 | hu 25 122 | ||||
| cs 7 135 | cs 7 135 | ||||
| hr 25 140 | hr 25 140 | ||||
| mk 3 141 | mk 3 141 | ||||
| sr 14 140 | |||||
| sr 14 142 | |||||
| ru 49 137 | ru 49 137 | ||||
| bg 14 123 | bg 14 123 | ||||
| it 19 127 | it 19 127 | ||||
| ht 11 140 | ht 11 140 | ||||
| az 10 127 | az 10 127 | ||||
| ak 8 109 | ak 8 109 | ||||
| am 8 123 | |||||
| am 14 112 | |||||
| wo 18 118 | wo 18 118 | ||||
| dv 14 148 | dv 14 148 | ||||
| te 16 148 | te 16 148 | ||||
| si 24 154 | si 24 154 | ||||
| tn 27 119 | tn 27 119 | ||||
| mt 32 127 | |||||
| Data file Used by | Data file Used by | ||||
| b/b [b] base | b/b [b] base | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d^] et | |||||
| [d] fr | [d] fr | ||||
| [d] kn | [d] kn | ||||
| [d] hu | [d] hu | ||||
| [d;] pl | [d;] pl | ||||
| [d] hr | [d] hr | ||||
| [d] sq | [d] sq | ||||
| [d] mt | |||||
| d/d_ [d] base | d/d_ [d] base | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d^] et | |||||
| [d] fr | [d] fr | ||||
| [d.] hi | [d.] hi | ||||
| [d] kn | [d] kn | ||||
| [d;] pl | [d;] pl | ||||
| [d] hr | [d] hr | ||||
| [d] sq | [d] sq | ||||
| [d] mt | |||||
| d/d_dnt [d] sr | d/d_dnt [d] sr | ||||
| d/dr [*] base | d/dr [*] base | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d^] et | |||||
| [d] fr | [d] fr | ||||
| [d.] hi | [d.] hi | ||||
| [dh.] hi | [dh.] hi | ||||
| [d;] pl | [d;] pl | ||||
| [d] hr | [d] hr | ||||
| [d] sq | [d] sq | ||||
| [d] mt | |||||
| d/tap [*;] ro | d/tap [*;] ro | ||||
| d/tap1 [*] base | d/tap1 [*] base | ||||
| d/tap2 [t#] en | d/tap2 [t#] en | ||||
| [dz] consonants | [dz] consonants | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d] fr | [d] fr | ||||
| [z] fr | [z] fr | ||||
| [dh] hi | [dh] hi | ||||
| [d] hr | [d] hr | ||||
| [d] sr | [d] sr | ||||
| [d] sq | [d] sq | ||||
| [d] mt | |||||
| d/xd3 [dh] hi | d/xd3 [dh] hi | ||||
| d/xd_pzd [d;] pl | |||||
| d/xd_pzd [d^] et | |||||
| [d;] pl | |||||
| d/xdr [d] fr | d/xdr [d] fr | ||||
| [d.] hi | [d.] hi | ||||
| [dh.] hi | [dh.] hi | ||||
| g/xgr [g] fr | g/xgr [g] fr | ||||
| h/h_ [h] base | h/h_ [h] base | ||||
| [h] fi | [h] fi | ||||
| [h] et | |||||
| [<h>] la | [<h>] la | ||||
| [h] mt | |||||
| h/h@ [h] base | h/h@ [h] base | ||||
| [h] fi | [h] fi | ||||
| [h] sr | |||||
| [h] et | |||||
| [h#] sr | |||||
| [<h>] la | [<h>] la | ||||
| [h] mt | |||||
| h/ha [h] base | h/ha [h] base | ||||
| [h] fi | [h] fi | ||||
| [h] et | |||||
| [<h>] la | [<h>] la | ||||
| [h] mt | |||||
| h/he [h] base | h/he [h] base | ||||
| [h] fi | [h] fi | ||||
| [h] et | |||||
| [<h>] la | [<h>] la | ||||
| [h] mt | |||||
| h/hi [h] base | h/hi [h] base | ||||
| [h] fi | [h] fi | ||||
| [h] et | |||||
| [<h>] la | [<h>] la | ||||
| [h] mt | |||||
| h/ho [h] base | h/ho [h] base | ||||
| [<h>] la | [<h>] la | ||||
| h/hu [h] base | h/hu [h] base | ||||
| [<h>] la | [<h>] la | ||||
| h/hu_fi [h] fi | h/hu_fi [h] fi | ||||
| [h] et | |||||
| [h] mt | |||||
| j2/_j2 [;] base | j2/_j2 [;] base | ||||
| j2/j2@ [;] base | j2/j2@ [;] base | ||||
| j2/j2a [;] base | j2/j2a [;] base | ||||
| [l/] fr | [l/] fr | ||||
| l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| l/l@ [l#] base | |||||
| [”¦] base | |||||
| l/l@ [h1ô] base | |||||
| [l#] base | |||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| [K] nso | [K] nso | ||||
| l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
| l/l_3 [l/] de | l/l_3 [l/] de | ||||
| l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
| l/la [l#] base | |||||
| [”¦] base | |||||
| l/la [h1ô] base | |||||
| [l#] base | |||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| [K] nso | [K] nso | ||||
| [K] tn | [K] tn | ||||
| l/l_a [l/3] base | l/l_a [l/3] base | ||||
| [l/] fr | [l/] fr | ||||
| l/le [l#] base | |||||
| [”¦] base | |||||
| l/le [h1ô] base | |||||
| [l#] base | |||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| [K] nso | [K] nso | ||||
| [&:] af | [&:] af | ||||
| l/l_front [L] sq | l/l_front [L] sq | ||||
| l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
| l/li [l#] base | |||||
| [”¦] base | |||||
| l/li [h1ô] base | |||||
| [l#] base | |||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| [l] zh | [l] zh | ||||
| ll/_ll [L] bg | ll/_ll [L] bg | ||||
| l/l_long [l] base | l/l_long [l] base | ||||
| [l] fr | [l] fr | ||||
| l/lo [l#] base | |||||
| [”¦] base | |||||
| l/lo [h1ô] base | |||||
| [l#] base | |||||
| [l/2] fr | [l/2] fr | ||||
| [K] nso | [K] nso | ||||
| [K] tn | [K] tn | ||||
| l^/l_rfx [l.] base | l^/l_rfx [l.] base | ||||
| [l] ru | [l] ru | ||||
| [l^] ru | [l^] ru | ||||
| l/lu [l#] base | |||||
| [”¦] base | |||||
| l/lu [h1ô] base | |||||
| [l#] base | |||||
| [l] fr | [l] fr | ||||
| [l/2] fr | [l/2] fr | ||||
| [K] nso | [K] nso | ||||
| [r-] tn | [r-] tn | ||||
| r3/r_ [r/] base | r3/r_ [r/] base | ||||
| [r/] af | [r/] af | ||||
| [r] et | |||||
| [r/] tn | [r/] tn | ||||
| r3/r#_ [r#] is | r3/r#_ [r#] is | ||||
| r3/r_n [r/] base | r3/r_n [r/] base | ||||
| [r] et | |||||
| r3/r_ru [R4] ru | r3/r_ru [R4] ru | ||||
| r3/r_ru2 [R4] ru | r3/r_ru2 [R4] ru | ||||
| r3/r_trill [R2] base | r3/r_trill [R2] base | ||||
| [r] af | [r] af | ||||
| [r] tn | [r] tn | ||||
| r3/r_trill_short [R2] fi | r3/r_trill_short [R2] fi | ||||
| [R2] et | |||||
| r3/r_trill.wav [R2] base | r3/r_trill.wav [R2] base | ||||
| [R2] fi | [R2] fi | ||||
| [R2] et | |||||
| [R2] lv | [R2] lv | ||||
| [R] pl | [R] pl | ||||
| [r*] sr | [r*] sr | ||||
| r3/rx [*] base | r3/rx [*] base | ||||
| [r/] base | [r/] base | ||||
| [r/] af | [r/] af | ||||
| [r] et | |||||
| [r/] fr | [r/] fr | ||||
| [R] fr-ca | [R] fr-ca | ||||
| [x] pt-pt | [x] pt-pt | ||||
| ufric/ch [C] base | ufric/ch [C] base | ||||
| [J^] base | [J^] base | ||||
| ufric/ch_ [C] base | ufric/ch_ [C] base | ||||
| ufric/ch_sr [h] sr | |||||
| [x] sr | |||||
| ufric/ch_sr [h#] sr | |||||
| [x#] sr | |||||
| ufric/f [f] base | ufric/f [f] base | ||||
| [pF] de | [pF] de | ||||
| [f] fr | [f] fr | ||||
| [S;] zh | [S;] zh | ||||
| ufric/sh_rfx [s.] base | ufric/sh_rfx [s.] base | ||||
| [s.] zh | [s.] zh | ||||
| ufric/s_pal [s^] et | |||||
| ufric/s_pzd [s;] base | ufric/s_pzd [s;] base | ||||
| [z;] base | [z;] base | ||||
| [s;] ro | [s;] ro | ||||
| ufric/x_hr [x] base | ufric/x_hr [x] base | ||||
| [x] hr | [x] hr | ||||
| [x] ru | [x] ru | ||||
| ufric/x_sr [h] sr | |||||
| [x] sr | |||||
| ufric/x_sr [h#] sr | |||||
| [x#] sr | |||||
| ufric/xx [X] base | ufric/xx [X] base | ||||
| [Q"] base | [Q"] base | ||||
| ustop/c [c] base | ustop/c [c] base | ||||
| [kh] zh | [kh] zh | ||||
| [kh] tn | [kh] tn | ||||
| ustop/k_asp2 [k#] ka | ustop/k_asp2 [k#] ka | ||||
| ustop/k_ejc [k`] am | |||||
| ustop/ki [k] base | ustop/ki [k] base | ||||
| [k] base2 | [k] base2 | ||||
| [c] af | [c] af | ||||
| [k] et | |||||
| [k] fr | [k] fr | ||||
| [k] lv | [k] lv | ||||
| [k^] mk | [k^] mk | ||||
| ustop/kl [k] base | ustop/kl [k] base | ||||
| [kh] consonants | [kh] consonants | ||||
| [k] base2 | [k] base2 | ||||
| [k] et | |||||
| [k] fr | [k] fr | ||||
| [k] lv | [k] lv | ||||
| [k] el | [k] el | ||||
| [kh] tn | [kh] tn | ||||
| ustop/kr [k] base | ustop/kr [k] base | ||||
| [k] base2 | [k] base2 | ||||
| [k] et | |||||
| [k] el | [k] el | ||||
| [k] zhy | [k] zhy | ||||
| ustop/k_unasp [k] base | ustop/k_unasp [k] base | ||||
| [k-] consonants | [k-] consonants | ||||
| [k] base2 | [k] base2 | ||||
| [k] et | |||||
| [k] lv | [k] lv | ||||
| [k] el | [k] el | ||||
| [k] zhy | [k] zhy | ||||
| [p] zh | [p] zh | ||||
| [p] sq | [p] sq | ||||
| [p] da | [p] da | ||||
| [p`] am | |||||
| ustop/p_unasp_ [p-] consonants | ustop/p_unasp_ [p-] consonants | ||||
| [p] base2 | [p] base2 | ||||
| [p] fr | [p] fr | ||||
| [t] lv | [t] lv | ||||
| [t] sk | [t] sk | ||||
| [th] zh | [th] zh | ||||
| [t`] am | |||||
| ustop/t_dnt [t] base | ustop/t_dnt [t] base | ||||
| [t[] base | [t[] base | ||||
| [t] base2 | [t] base2 | ||||
| [t] en-us | [t] en-us | ||||
| [t] et | |||||
| [dh] hi | [dh] hi | ||||
| [th] hi | [th] hi | ||||
| [t] hu | [t] hu | ||||
| ustop/t_dnt2 [t] base2 | ustop/t_dnt2 [t] base2 | ||||
| [d] kn | [d] kn | ||||
| ustop/t_hi [t[] base | ustop/t_hi [t[] base | ||||
| [t] et | |||||
| [t`] am | |||||
| ustop/t_pzd [c] base | ustop/t_pzd [c] base | ||||
| [t^] et | |||||
| [t;] pl | [t;] pl | ||||
| ustop/tr [t] base | ustop/tr [t] base | ||||
| [t] en-us | [t] en-us | ||||
| ustop/tsh_pzd [tS;] zh | ustop/tsh_pzd [tS;] zh | ||||
| ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
| ustop/tsh_sr [tS] sr | ustop/tsh_sr [tS] sr | ||||
| ustop/tsh_unasp [tS`] am | |||||
| ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
| [Jh] hi | [Jh] hi | ||||
| [tS;] ru | [tS;] ru | ||||
| vdiph2/i@_2 [i@] en-wm | vdiph2/i@_2 [i@] en-wm | ||||
| vdiph2/ie [i@] en-wi | vdiph2/ie [i@] en-wi | ||||
| [ie] fi | [ie] fi | ||||
| [ie] mt | |||||
| vdiph2/ie_2 [ie] lv | vdiph2/ie_2 [ie] lv | ||||
| vdiph2/ii@ [i@] en | vdiph2/ii@ [i@] en | ||||
| [i@3] en | [i@3] en | ||||
| [iu] zhy | [iu] zhy | ||||
| vdiph2/iu_2 [iu] fi | vdiph2/iu_2 [iu] fi | ||||
| [iu] lv | [iu] lv | ||||
| [iu] mt | |||||
| vdiph2/iu_3 [iu] af | vdiph2/iu_3 [iu] af | ||||
| vdiph2/iu_4 [Iu] cy | vdiph2/iu_4 [Iu] cy | ||||
| [Yu] cy | [Yu] cy | ||||
| vdiph2/iy [iy] fi | vdiph2/iy [iy] fi | ||||
| [iy] mt | |||||
| vdiph2/o@ [o@] af | vdiph2/o@ [o@] af | ||||
| [u@] zh | [u@] zh | ||||
| vdiph2/oa [Oa] ro | vdiph2/oa [Oa] ro | ||||
| vdiph2/u#@ [U@] en-sc | vdiph2/u#@ [U@] en-sc | ||||
| vdiph2/uaa [uo] lv | vdiph2/uaa [uo] lv | ||||
| vdiph2/uo [uo] fi | vdiph2/uo [uo] fi | ||||
| [uo] mt | |||||
| vdiph2/uu@ [U@] en | vdiph2/uu@ [U@] en | ||||
| [U@] en-n | [U@] en-n | ||||
| [U@] en-wm | [U@] en-wm | ||||
| [yu] zh | [yu] zh | ||||
| vdiph2/y-y# [yY] fi | vdiph2/y-y# [yY] fi | ||||
| [y@] vi | [y@] vi | ||||
| [yY] mt | |||||
| vdiph/8u [oU] en-us | vdiph/8u [oU] en-us | ||||
| [8u] et | |||||
| [ou] zh | [ou] zh | ||||
| vdiph/aae [aI] en-us | vdiph/aae [aI] en-us | ||||
| vdiph/aai [ai] lv | vdiph/aai [ai] lv | ||||
| vdiph/aai_2 [AI] af | vdiph/aai_2 [AI] af | ||||
| [AY] cy | [AY] cy | ||||
| vdiph/aai_3 [ai] fi | vdiph/aai_3 [ai] fi | ||||
| [ai] mt | |||||
| vdiph/aau [au] fi | vdiph/aau [au] fi | ||||
| [au] lv | [au] lv | ||||
| [aU] is | [aU] is | ||||
| [aU:] is | [aU:] is | ||||
| [au] mt | |||||
| vdiph/aau_2 [aU] en-wi | vdiph/aau_2 [aU] en-wi | ||||
| [VU] nl | [VU] nl | ||||
| [aU] la | [aU] la | ||||
| [ei] fi | [ei] fi | ||||
| [ei] lv | [ei] lv | ||||
| [eI] id | [eI] id | ||||
| [ei] mt | |||||
| vdiph/eei_3 [eI] sk | vdiph/eei_3 [eI] sk | ||||
| [eI] ku | [eI] ku | ||||
| vdiph/eeu [EU] pt | vdiph/eeu [EU] pt | ||||
| [aU] en-wm | [aU] en-wm | ||||
| [eU] ku | [eU] ku | ||||
| vdiph/eey [ey] fi | vdiph/eey [ey] fi | ||||
| [ey] mt | |||||
| vdiph/ei [eI] base2 | vdiph/ei [eI] base2 | ||||
| [e:] nl | [e:] nl | ||||
| [eI] la | [eI] la | ||||
| [eU] vi | [eU] vi | ||||
| [eU] ne | [eU] ne | ||||
| vdiph/eu_2 [eu] fi | vdiph/eu_2 [eu] fi | ||||
| vdiph/@i [@I] vi | |||||
| [eu] mt | |||||
| vdiph/@i [Yi] et | |||||
| [@I] vi | |||||
| [@:I] vi | [@:I] vi | ||||
| vdiph/&i [&i] fi | vdiph/&i [&i] fi | ||||
| [&i] et | |||||
| [aI] hi | [aI] hi | ||||
| [i] mt | |||||
| vdiph/@i_2 [eI] af | vdiph/@i_2 [eI] af | ||||
| [@I] cy | [@I] cy | ||||
| [@Y] cy | [@Y] cy | ||||
| [oi] lv | [oi] lv | ||||
| [OI] no | [OI] no | ||||
| [oi] zhy | [oi] zhy | ||||
| [oi] mt | |||||
| vdiph/ooi_2 [OI] af | vdiph/ooi_2 [OI] af | ||||
| [oI] eo | [oI] eo | ||||
| vdiph/ooi_3 [OI] en-rp | vdiph/ooi_3 [OI] en-rp | ||||
| vdiph/ou [ou] fi | vdiph/ou [ou] fi | ||||
| [ou] zhy | [ou] zhy | ||||
| [oU] ne | [oU] ne | ||||
| [ou] mt | |||||
| vdiph/ou_2 [oU] sk | vdiph/ou_2 [oU] sk | ||||
| [oU] ro | [oU] ro | ||||
| vdiph/ou_3 [oU] is | vdiph/ou_3 [oU] is | ||||
| vdiph/ui_3 [uI] cy | vdiph/ui_3 [uI] cy | ||||
| [uY] cy | [uY] cy | ||||
| vdiph/ui_4 [ui] fi | vdiph/ui_4 [ui] fi | ||||
| [ui] mt | |||||
| vdiph/Vi [VI] ne | vdiph/Vi [VI] ne | ||||
| vdiph/Vu [@U] af | vdiph/Vu [@U] af | ||||
| [VU] ne | [VU] ne | ||||
| vdiph/&y [&y] fi | vdiph/&y [&y] fi | ||||
| [Wy] nl | [Wy] nl | ||||
| vdiph/yi [yi] fi | vdiph/yi [yi] fi | ||||
| [yi] et | |||||
| [yI] grc | [yI] grc | ||||
| [u-I] no | [u-I] no | ||||
| [yi] zh | [yi] zh | ||||
| [yi] mt | |||||
| vdiph/y#i [Yi] fi | vdiph/y#i [Yi] fi | ||||
| [Yi] mt | |||||
| vdiph/y#i_2 [Yy] is | vdiph/y#i_2 [Yy] is | ||||
| [Yy:] is | [Yy:] is | ||||
| vdiph/y#y [Yy] fi | vdiph/y#y [Yy] fi | ||||
| [Yy] mt | |||||
| vdiph/y#y_2 [Yy] af | vdiph/y#y_2 [Yy] af | ||||
| [eoi] zhy | [eoi] zhy | ||||
| vdiph/y#y_3 [Y:] nl | vdiph/y#y_3 [Y:] nl | ||||
| voc/Q_ulv [Q"] base | voc/Q_ulv [Q"] base | ||||
| voc/v [v] base | voc/v [v] base | ||||
| [v] fi | [v] fi | ||||
| [v] et | |||||
| [v] fr | [v] fr | ||||
| [v;] ro | [v;] ro | ||||
| [v] mt | |||||
| voc/v_ [B] base | voc/v_ [B] base | ||||
| [v] base | [v] base | ||||
| [v] fi | [v] fi | ||||
| [v] et | |||||
| [v] fr | [v] fr | ||||
| [v#] es | [v#] es | ||||
| [v;] ro | [v;] ro | ||||
| [v] mt | |||||
| voc/v# [v#] base | voc/v# [v#] base | ||||
| voc/v#_ [v#] base | voc/v#_ [v#] base | ||||
| voc/v2 [v#] es | voc/v2 [v#] es | ||||
| [r*] hr | [r*] hr | ||||
| vowel/& [a] en-rp | vowel/& [a] en-rp | ||||
| [&] fi | [&] fi | ||||
| [&] et | |||||
| [&:] et | |||||
| [&:] hi | [&:] hi | ||||
| [&] lv | [&] lv | ||||
| [&:] lv | [&:] lv | ||||
| [W2] fr | [W2] fr | ||||
| vowel/8 [o-] zh | vowel/8 [o-] zh | ||||
| vowel/8_2 [U] en-us | vowel/8_2 [U] en-us | ||||
| [8] et | |||||
| [8] sv | [8] sv | ||||
| vowel/8_3 [eo] zhy | vowel/8_3 [eo] zhy | ||||
| vowel/8_5 [8] ku | vowel/8_5 [8] ku | ||||
| vowel/8_6 [V] sq | vowel/8_6 [V] sq | ||||
| vowel/8_7 [@] lv | |||||
| vowel/8_7 [8:] et | |||||
| [@] lv | |||||
| vowel/a [a] base | vowel/a [a] base | ||||
| [a] en | [a] en | ||||
| [aa] en | [aa] en | ||||
| [a] zh | [a] zh | ||||
| [a] id | [a] id | ||||
| [a] sl | [a] sl | ||||
| [a] am | |||||
| vowel/a# [a] base2 | vowel/a# [a] base2 | ||||
| [a/] base2 | [a/] base2 | ||||
| [a#] en-sc | [a#] en-sc | ||||
| [a] tn | [a] tn | ||||
| vowel/a_6 [a] ca | vowel/a_6 [a] ca | ||||
| [a:] vi | [a:] vi | ||||
| [a] am | |||||
| [a:] wo | [a:] wo | ||||
| vowel/a_7 [a] en | vowel/a_7 [a] en | ||||
| [a] fr | [a] fr | ||||
| [a] sk | |||||
| [a] ht | [a] ht | ||||
| vowel/aa [A] fr-ca | |||||
| vowel/aa [a:] et | |||||
| [A] fr-ca | |||||
| [A] no | [A] no | ||||
| [A:] no | [A:] no | ||||
| [aa] zhy | [aa] zhy | ||||
| [A:] de | [A:] de | ||||
| vowel/aa_8 [0] en-us | vowel/aa_8 [0] en-us | ||||
| [A:] en-us | [A:] en-us | ||||
| [A] et | |||||
| [A1] et | |||||
| [A] nl | [A] nl | ||||
| [a:] is | [a:] is | ||||
| vowel/aa_9 [a] fi | vowel/aa_9 [a] fi | ||||
| [a] et | |||||
| [a:] hi | [a:] hi | ||||
| [a] ne | [a] ne | ||||
| [a] pa | [a] pa | ||||
| [a] ak | [a] ak | ||||
| [a] mt | |||||
| vowel/@_bck [@] hi | vowel/@_bck [@] hi | ||||
| [@] bg | [@] bg | ||||
| [@] zh | [@] zh | ||||
| vowel/e_5 [i] en-sc | vowel/e_5 [i] en-sc | ||||
| vowel/e_6 [e] ht | vowel/e_6 [e] ht | ||||
| [e] ak | [e] ak | ||||
| vowel/e_7 [e] et | |||||
| [e:] et | |||||
| vowel/e_8 [E:] de | vowel/e_8 [E:] de | ||||
| [e] fr | [e] fr | ||||
| vowel/ee [E] en-n | vowel/ee [E] en-n | ||||
| [E] pa | [E] pa | ||||
| vowel/ee#_2 [E-] sv | vowel/ee#_2 [E-] sv | ||||
| [E#] sq | [E#] sq | ||||
| [@] am | |||||
| [e] tn | [e] tn | ||||
| vowel/ee_3 [&] af | vowel/ee_3 [&] af | ||||
| [&:] af | [&:] af | ||||
| [E] pt | [E] pt | ||||
| [E] vi | [E] vi | ||||
| vowel/ee_4 [E] sq | |||||
| vowel/ee_4 [E] et | |||||
| [E1] et | |||||
| [E] sq | |||||
| vowel/ee_5 [E] en | vowel/ee_5 [E] en | ||||
| [E] ak | [E] ak | ||||
| [E] wo | [E] wo | ||||
| [e] am | [e] am | ||||
| [e] te | [e] te | ||||
| [e:] si | [e:] si | ||||
| [e] mt | |||||
| vowel/@_fnt [@] en-wi | vowel/@_fnt [@] en-wi | ||||
| [@2] en-wi | [@2] en-wi | ||||
| [@2] hr | [@2] hr | ||||
| [i] prs | [i] prs | ||||
| [i] nso | [i] nso | ||||
| [i] ak | [i] ak | ||||
| [i] am | |||||
| [i:] wo | [i:] wo | ||||
| [i:] dv | [i:] dv | ||||
| [i:] te | [i:] te | ||||
| vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
| vowel/i_2 [i2] de | vowel/i_2 [i2] de | ||||
| [i:] de | [i:] de | ||||
| [i] et | |||||
| [i] nl | [i] nl | ||||
| [i:] la | [i:] la | ||||
| [i:] sv | [i:] sv | ||||
| vowel/i#_2 [y] am | vowel/i#_2 [y] am | ||||
| vowel/i_3 [i] af | vowel/i_3 [i] af | ||||
| [I] et | |||||
| [I1] et | |||||
| [i:] sk | [i:] sk | ||||
| vowel/i_4 [i] fi | vowel/i_4 [i] fi | ||||
| [i] hu | [i] hu | ||||
| [i:] is | [i:] is | ||||
| [i] vi | [i] vi | ||||
| [i] da | [i] da | ||||
| [i] mt | |||||
| vowel/i_5 [i:] en-sc | vowel/i_5 [i:] en-sc | ||||
| vowel/i#_5 [y] pt-pt | vowel/i#_5 [y] pt-pt | ||||
| [i/] pt-pt | [i/] pt-pt | ||||
| [i] tr | [i] tr | ||||
| [i] ku | [i] ku | ||||
| [i] id | [i] id | ||||
| [i] am | |||||
| [i] dv | [i] dv | ||||
| [i] te | [i] te | ||||
| [i] si | [i] si | ||||
| vowel/i#_6 [i.] zh | vowel/i#_6 [i.] zh | ||||
| vowel/i_7 [i] pl | |||||
| vowel/i_7 [i:] et | |||||
| [i] pl | |||||
| [i] sq | [i] sq | ||||
| vowel/i#_7 [i[] zh | vowel/i#_7 [i[] zh | ||||
| vowel/i_8 [i] fr | vowel/i_8 [i] fr | ||||
| [i] sq | [i] sq | ||||
| vowel/ii_2 [I] en | vowel/ii_2 [I] en | ||||
| [i] zh | [i] zh | ||||
| [I] mt | |||||
| vowel/ii#_2 [y] pl | vowel/ii#_2 [y] pl | ||||
| vowel/ii_3 [I] cy | vowel/ii_3 [I] cy | ||||
| [I] fi | [I] fi | ||||
| vowel/ii_4 [I2] en | vowel/ii_4 [I2] en | ||||
| [I] en-us | [I] en-us | ||||
| [I2] tn | [I2] tn | ||||
| vowel/ii_5 [i] ta | |||||
| vowel/ii_5 [i1] et | |||||
| [i] ta | |||||
| [i] bg | [i] bg | ||||
| [I] la | [I] la | ||||
| [i] zh | [i] zh | ||||
| [@/] ne | [@/] ne | ||||
| [@] pa | [@] pa | ||||
| [V] pa | [V] pa | ||||
| [@] am | |||||
| [@] si | [@] si | ||||
| vowel/@_low2 [@/] en-us | vowel/@_low2 [@/] en-us | ||||
| [@2] en-us | [@2] en-us | ||||
| [oU] en-wi | [oU] en-wi | ||||
| [o:] de | [o:] de | ||||
| [o] eo | [o] eo | ||||
| [o:] et | |||||
| [o] fr | [o] fr | ||||
| [o] hi | [o] hi | ||||
| [o] ta | [o] ta | ||||
| vowel/oe_2 [W] no | vowel/oe_2 [W] no | ||||
| vowel/oe_4 [W] sv | vowel/oe_4 [W] sv | ||||
| vowel/o_mid [U@] en-rp | vowel/o_mid [U@] en-rp | ||||
| [O] et | |||||
| [o] et | |||||
| [O1] et | |||||
| [O] fr | [O] fr | ||||
| [o] hu | [o] hu | ||||
| [o] bg | [o] bg | ||||
| [o] si | [o] si | ||||
| [o:] si | [o:] si | ||||
| [O] tn | [O] tn | ||||
| [o] mt | |||||
| vowel/oo_2 [0] en-sc | vowel/oo_2 [0] en-sc | ||||
| [O] cy | [O] cy | ||||
| [o] cs | [o] cs | ||||
| [u] am | [u] am | ||||
| [u] wo | [u] wo | ||||
| vowel/u#_2 [u-] sv | vowel/u#_2 [u-] sv | ||||
| vowel/u_3 [u] et | |||||
| [u:] et | |||||
| vowel/u#_3 [U] ta | vowel/u#_3 [U] ta | ||||
| [U:] ta | [U:] ta | ||||
| vowel/u#_4 [U] en-sc | vowel/u#_4 [U] en-sc | ||||
| [u:] en-sc | [u:] en-sc | ||||
| [y] ml | [y] ml | ||||
| vowel/u_5 [u] sw | |||||
| vowel/u_5 [U] et | |||||
| [U1] et | |||||
| [u] sw | |||||
| [u] nso | [u] nso | ||||
| [u] az | [u] az | ||||
| [u] tn | [u] tn | ||||
| [u#] rw | [u#] rw | ||||
| [u] ne | [u] ne | ||||
| [u] pa | [u] pa | ||||
| [u] mt | |||||
| vowel/u_bck2 [u] fr | vowel/u_bck2 [u] fr | ||||
| [u:] fr | [u:] fr | ||||
| [u:] la | [u:] la | ||||
| [y] zh | [y] zh | ||||
| vowel/uu_4 [U] fi | vowel/uu_4 [U] fi | ||||
| [U] sv | [U] sv | ||||
| [U] mt | |||||
| vowel/uu_bck [U] en-wi | vowel/uu_bck [U] en-wi | ||||
| [U] fr-ca | [U] fr-ca | ||||
| [U] hi | [U] hi | ||||
| vowel/y [y] base2 | vowel/y [y] base2 | ||||
| [y:] de | [y:] de | ||||
| [y] fi | [y] fi | ||||
| [y] et | |||||
| [y:] et | |||||
| [y] fr | [y] fr | ||||
| [y:] hu | [y:] hu | ||||
| [y] nl | [y] nl | ||||
| [y] sq | [y] sq | ||||
| [y] da | [y] da | ||||
| [y] az | [y] az | ||||
| [y] mt | |||||
| vowel/y# [Y] base2 | vowel/y# [Y] base2 | ||||
| [3:] en-wm | [3:] en-wm | ||||
| [Y:] de | [Y:] de | ||||
| [Y] fi | [Y] fi | ||||
| [Y] et | |||||
| [Y:] et | |||||
| [Y] fr | [Y] fr | ||||
| [Y:] hu | [Y:] hu | ||||
| [8] nl | [8] nl | ||||
| [Y] ro | [Y] ro | ||||
| [oe] zhy | [oe] zhy | ||||
| [W] tr | [W] tr | ||||
| [Y] mt | |||||
| vowel/y## [y] is | vowel/y## [y] is | ||||
| vowel/y_2 [y:] la | vowel/y_2 [y:] la | ||||
| [y] zh | [y] zh | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d] fr | [d] fr | ||||
| [d.] hi | [d.] hi | ||||
| [d] kn | [d] kn | ||||
| [d] hr | [d] hr | ||||
| [d] is | [d] is | ||||
| [d] sq | [d] sq | ||||
| [d] mt | |||||
| x/d_dnt [d[] base | x/d_dnt [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] et | |||||
| [d] kn | [d] kn | ||||
| [d] hu | [d] hu | ||||
| [d] pl | [d] pl | ||||
| x/d_pzd [d;] pl | |||||
| [d] mt | |||||
| x/d_pzd [d^] et | |||||
| [d;] pl | |||||
| x/dzh [J] base | x/dzh [J] base | ||||
| [dZ] base | [dZ] base | ||||
| x/dzh_ [dZ] base | x/dzh_ [dZ] base |
| voicingswitch d | voicingswitch d | ||||
| lengthmod 2 | lengthmod 2 | ||||
| IF prevPh(isVowel) OR prevPh(n) THEN | |||||
| IF nextPh(isVowel) AND nextPh(isUnstressed) AND thisPh(notWordStart) AND nextPh(notWordStart) THEN | |||||
| ChangePhoneme(t#) | |||||
| IF prevPhW(isVowel) OR prevPhW(n) THEN | |||||
| IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN | |||||
| IF next2Ph(n) AND next2Ph(notWordStart) THEN | |||||
| ELSE | |||||
| ChangePhoneme(t#) | |||||
| ENDIF | |||||
| ENDIF | ENDIF | ||||
| ENDIF | ENDIF | ||||
| // This is for letter "h" at the beginning of a word | // This is for letter "h" at the beginning of a word | ||||
| phoneme x | |||||
| // Use [x] from lang=hr, request by Gašić Dajan 27.06.2011 | |||||
| phoneme x# | |||||
| vls vel frc | vls vel frc | ||||
| lengthmod 3 | lengthmod 3 | ||||
| IF nextPh(#i) OR nextPh(#e) THEN | IF nextPh(#i) OR nextPh(#e) THEN | ||||
| // This is for letter "h" not at the beginning of word | // This is for letter "h" not at the beginning of word | ||||
| phoneme h | |||||
| // Use standard [h], request by Gašić Dajan 27.06.2011 | |||||
| phoneme h# | |||||
| vls vel frc | vls vel frc | ||||
| lengthmod 3 | lengthmod 3 | ||||
| IF nextPh(#@) THEN | IF nextPh(#@) THEN |
| FMT(vowel/e_mid) | FMT(vowel/e_mid) | ||||
| endphoneme | endphoneme | ||||
| phoneme a | phoneme a | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 120 | length 120 | ||||
| IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN | |||||
| FMT(vowel/a_7) | |||||
| ENDIF | |||||
| FMT(vowel/a) | FMT(vowel/a) | ||||
| endphoneme | endphoneme | ||||
| phoneme V# // omit if the next phoneme is a vowel | phoneme V# // omit if the next phoneme is a vowel | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 130 | length 130 | ||||
| IF nextPhW(isVowel) THEN | |||||
| IF nextPhW(isVowel) OR nextPhW(#) THEN | |||||
| ChangePhoneme(NULL) | ChangePhoneme(NULL) | ||||
| ENDIF | ENDIF | ||||
| ChangePhoneme(V) | ChangePhoneme(V) | ||||
| endphoneme | endphoneme | ||||
| phoneme a: | phoneme a: | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 300 | length 300 | ||||
| length 50 | length 50 | ||||
| endphoneme | endphoneme | ||||
| phoneme # // a NULL phoneme for 'virama' | |||||
| virtual | |||||
| ChangePhoneme(NULL) | |||||
| endphoneme | |||||
| phoneme q | phoneme q | ||||
| vls uvl stop | vls uvl stop | ||||
| lengthmod 2 | lengthmod 2 | ||||
| Vowelin f1=1 f2=1700 0 200 f3=-300 80 paus f4 rms=30 | |||||
| Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 | |||||
| Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | ||||
| IF nextPh(isPause2) THEN | IF nextPh(isPause2) THEN | ||||
| phonemetable fi base | phonemetable fi base | ||||
| include ph_finnish | include ph_finnish | ||||
| phonemetable et base | |||||
| include ph_estonian | |||||
| phonemetable fr base | phonemetable fr base | ||||
| include ph_french | include ph_french | ||||
| phonemetable ak base | phonemetable ak base | ||||
| include ph_akan | include ph_akan | ||||
| phonemetable am base2 | |||||
| phonemetable am base | |||||
| include ph_amhari | include ph_amhari | ||||
| phonemetable wo base | phonemetable wo base | ||||
| phonemetable tn base | phonemetable tn base | ||||
| include ph_setswana | include ph_setswana | ||||
| phonemetable mt base | |||||
| include ph_maltese |
| [Setup] | [Setup] | ||||
| AppName=eSpeak | AppName=eSpeak | ||||
| AppVerName=eSpeak version 1.45.01 | |||||
| AppVerName=eSpeak version 1.45.05 | |||||
| AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | ||||
| WindowVisible=yes | WindowVisible=yes | ||||
| $1d: Result := 'sv'; | $1d: Result := 'sv'; | ||||
| $1f: Result := 'tr'; | $1f: Result := 'tr'; | ||||
| $21: Result := 'id'; | $21: Result := 'id'; | ||||
| $25: Result := 'et'; | |||||
| $26: Result := 'lv'; | $26: Result := 'lv'; | ||||
| $2a: Result := 'vi'; | $2a: Result := 'vi'; | ||||
| $2b: Result := 'hy'; | $2b: Result := 'hy'; | ||||
| $2f: Result := 'mk'; | $2f: Result := 'mk'; | ||||
| $36: Result := 'af'; | $36: Result := 'af'; | ||||
| $39: Result := 'hi'; | $39: Result := 'hi'; | ||||
| //$3a: Result := 'mt'; | |||||
| $41: Result := 'sw'; | $41: Result := 'sw'; | ||||
| $49: Result := 'ta'; | $49: Result := 'ta'; | ||||
| $4b: Result := 'kn'; | $4b: Result := 'kn'; | ||||
| 'mk': value := $42f; | 'mk': value := $42f; | ||||
| 'ml': value := $44c; | 'ml': value := $44c; | ||||
| 'mn': value := $450; | 'mn': value := $450; | ||||
| 'mt': value := $43a; | |||||
| 'ne': value := $461; | 'ne': value := $461; | ||||
| 'nl': value := $413; | 'nl': value := $413; | ||||
| 'no': value := $414; | 'no': value := $414; | ||||
| 'ro': value := $418; | 'ro': value := $418; | ||||
| 'ru': value := $419; | 'ru': value := $419; | ||||
| 'rw': value := $487; | 'rw': value := $487; | ||||
| 'si': value := $45b; | |||||
| 'sk': value := $41b; | 'sk': value := $41b; | ||||
| 'sq': value := $41c; | 'sq': value := $41c; | ||||
| 'sr': value := $81a; | 'sr': value := $81a; |
| [Setup] | [Setup] | ||||
| AppName=eSpeakEdit | AppName=eSpeakEdit | ||||
| AppVerName=eSpeakEdit version 1.45.01 | |||||
| AppVerName=eSpeakEdit version 1.45.05 | |||||
| DefaultDirName={pf}\eSpeak | DefaultDirName={pf}\eSpeak | ||||
| DefaultGroupName=eSpeak | DefaultGroupName=eSpeak | ||||
| OutputBaseFilename=setup_espeakedit | OutputBaseFilename=setup_espeakedit |
| MKDIR = mkdir -p | MKDIR = mkdir -p | ||||
| AUDIO = portaudio | AUDIO = portaudio | ||||
| #AUDIO = portaudio0 | |||||
| #AUDIO = portaudio2 | |||||
| #AUDIO = pulseaudio | #AUDIO = pulseaudio | ||||
| #AUDIO = sada | #AUDIO = sada | ||||
| LIB_AUDIO=-lportaudio | LIB_AUDIO=-lportaudio | ||||
| USE_AUDIO=-DUSE_PORTAUDIO | USE_AUDIO=-DUSE_PORTAUDIO | ||||
| else | else | ||||
| ifeq ($(AUDIO),portaudio0) | |||||
| WAVE=wave.cpp | |||||
| LIB_AUDIO=/usr/lib/libportaudio.so.0 | |||||
| USE_AUDIO=-DUSE_PORTAUDIO | |||||
| else | |||||
| ifeq ($(AUDIO),portaudio2) | |||||
| WAVE=wave.cpp | |||||
| LIB_AUDIO=/usr/lib/libportaudio.so.2 | |||||
| USE_AUDIO=-DUSE_PORTAUDIO | |||||
| else | |||||
| ifeq ($(AUDIO),sada) | ifeq ($(AUDIO),sada) | ||||
| WAVE=wave_sada.cpp | WAVE=wave_sada.cpp | ||||
| USE_AUDIO=-DUSE_SADA | USE_AUDIO=-DUSE_SADA | ||||
| endif | endif | ||||
| endif | endif | ||||
| endif | endif | ||||
| endif | |||||
| endif | |||||
| speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | ||||
| readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ |
| {"glstop", tTRANSITION, 8}, | {"glstop", tTRANSITION, 8}, | ||||
| {"lenadd", tTRANSITION, 9}, | {"lenadd", tTRANSITION, 9}, | ||||
| {"f4", tTRANSITION, 10}, | {"f4", tTRANSITION, 10}, | ||||
| {"paus", tTRANSITION, 11}, | |||||
| {"gpaus", tTRANSITION, 11}, | |||||
| {"colr=", tTRANSITION, 12}, | {"colr=", tTRANSITION, 12}, | ||||
| {"amp=", tTRANSITION, 13}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) | {"amp=", tTRANSITION, 13}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) | ||||
| */ | */ | ||||
| int ix; | int ix; | ||||
| int len; | |||||
| int max_len; | |||||
| unsigned int len; | |||||
| unsigned int max_len; | |||||
| int phon_out_ix=0; | int phon_out_ix=0; | ||||
| int stress; | int stress; | ||||
| unsigned int c; | unsigned int c; | ||||
| const char *word_end; | const char *word_end; | ||||
| const char *word1; | const char *word1; | ||||
| int wflags = 0; | int wflags = 0; | ||||
| int wflags2; | |||||
| // int wflags2; | |||||
| char word_buf[N_WORD_BYTES+1]; | char word_buf[N_WORD_BYTES+1]; | ||||
| if(wtab != NULL) | if(wtab != NULL) | ||||
| if(end_type & SUFX_E) | if(end_type & SUFX_E) | ||||
| { | { | ||||
| if(tr->translator_name == L('n','l')) | |||||
| { | |||||
| if(((word_end[0] & 0x80) == 0) && ((word_end[-1] & 0x80) == 0) && IsVowel(tr, word_end[-1]) && IsLetter(tr, word_end[0], LETTERGP_C) && !IsVowel(tr, word_end[-2])) | |||||
| { | |||||
| //double the vowel before the (ascii) final consonant | |||||
| word_end[1] = word_end[0]; | |||||
| word_end[0] = word_end[-1]; | |||||
| word_end[2] = ' '; | |||||
| } | |||||
| } | |||||
| else | |||||
| if(tr->translator_name == L('e','n')) | if(tr->translator_name == L('e','n')) | ||||
| { | { | ||||
| // add 'e' to end of stem | // add 'e' to end of stem |
| static int start_mbrola(const char *voice_path) | static int start_mbrola(const char *voice_path) | ||||
| { | { | ||||
| int error, p_stdin[2], p_stdout[2], p_stderr[2]; | int error, p_stdin[2], p_stdout[2], p_stderr[2]; | ||||
| ssize_t written; | |||||
| char charbuf[20]; | char charbuf[20]; | ||||
| if (mbr_state != MBR_INACTIVE) { | if (mbr_state != MBR_INACTIVE) { | ||||
| dup2(p_stderr[1], 2) == -1) { | dup2(p_stderr[1], 2) == -1) { | ||||
| snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | ||||
| "dup2(): %s\n", strerror(errno)); | "dup2(): %s\n", strerror(errno)); | ||||
| write(p_stderr[1], mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
| written = write(p_stderr[1], mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
| _exit(1); | _exit(1); | ||||
| } | } | ||||
| /* if execution reaches this point then the exec() failed */ | /* if execution reaches this point then the exec() failed */ | ||||
| snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | snprintf(mbr_errorbuf, sizeof(mbr_errorbuf), | ||||
| "mbrola: %s\n", strerror(errno)); | "mbrola: %s\n", strerror(errno)); | ||||
| write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
| written = write(2, mbr_errorbuf, strlen(mbr_errorbuf)); | |||||
| _exit(1); | _exit(1); | ||||
| } | } | ||||
| int suffix_ix; | int suffix_ix; | ||||
| int skipwords = 0; | int skipwords = 0; | ||||
| char *p; | char *p; | ||||
| char string[20]; // for looking up entries in **_list | |||||
| char string[32]; // for looking up entries in **_list | |||||
| char buf1[100]; | char buf1[100]; | ||||
| char ph_append[50]; | char ph_append[50]; | ||||
| char ph_buf[200]; | char ph_buf[200]; | ||||
| char ph_buf2[50]; | char ph_buf2[50]; | ||||
| char ph_zeros[50]; | char ph_zeros[50]; | ||||
| char suffix[20]; | |||||
| char suffix[30]; // string[] must be long enough for sizeof(suffix)+2 | |||||
| char buf_digit_lookup[50]; | char buf_digit_lookup[50]; | ||||
| static const char str_pause[2] = {phonPAUSE_NOLINK,0}; | static const char str_pause[2] = {phonPAUSE_NOLINK,0}; |
| if(regression & 0x2) | if(regression & 0x2) | ||||
| { | { | ||||
| // [v] amd [v;] don't cause regression, or [R^] | // [v] amd [v;] don't cause regression, or [R^] | ||||
| if((ph->mnemonic == 'v') || (ph->mnemonic == ((';'<<8)+'v')) || ((ph->mnemonic & 0xff)== 'R')) | |||||
| if(((ph->mnemonic & 0xff) == 'v') || ((ph->mnemonic & 0xff)== 'R')) | |||||
| { | { | ||||
| stop_propagation = 1; | stop_propagation = 1; | ||||
| if(regression & 0x10) | |||||
| voicing = 0; | |||||
| } | } | ||||
| } | } | ||||
| // stop propagation at a word boundary | // stop propagation at a word boundary | ||||
| voicing = 0; | voicing = 0; | ||||
| } | } | ||||
| if(regression & 0x10) | |||||
| if(regression & 0x100) | |||||
| { | { | ||||
| // devoice word-final consonants, unless propagating voiced | // devoice word-final consonants, unless propagating voiced | ||||
| if(voicing == 0) | if(voicing == 0) |
| // frame 0 is for the defaults, before any ssml tags. | // frame 0 is for the defaults, before any ssml tags. | ||||
| typedef struct { | typedef struct { | ||||
| int tag_type; | int tag_type; | ||||
| int voice_variant; | |||||
| int voice_variant_number; | |||||
| int voice_gender; | int voice_gender; | ||||
| int voice_age; | int voice_age; | ||||
| char voice_name[40]; | char voice_name[40]; | ||||
| static int n_ssml_stack; | static int n_ssml_stack; | ||||
| static SSML_STACK ssml_stack[N_SSML_STACK]; | static SSML_STACK ssml_stack[N_SSML_STACK]; | ||||
| static espeak_VOICE base_voice; | |||||
| static char base_voice_variant_name[40] = {0}; | |||||
| static char current_voice_id[40] = {0}; | static char current_voice_id[40] = {0}; | ||||
| // Use the voice properties from the SSML stack to choose a voice, and switch | // Use the voice properties from the SSML stack to choose a voice, and switch | ||||
| // to that voice if it's not the current voice | // to that voice if it's not the current voice | ||||
| int ix; | int ix; | ||||
| const char *p; | |||||
| SSML_STACK *sp; | SSML_STACK *sp; | ||||
| const char *v_id; | const char *v_id; | ||||
| int voice_name_specified; | int voice_name_specified; | ||||
| int voice_found; | int voice_found; | ||||
| espeak_VOICE voice_select; | espeak_VOICE voice_select; | ||||
| char voice_name[40]; | |||||
| static char voice_name[40]; | |||||
| char language[40]; | char language[40]; | ||||
| char buf[80]; | |||||
| strcpy(voice_name,ssml_stack[0].voice_name); | strcpy(voice_name,ssml_stack[0].voice_name); | ||||
| strcpy(language,ssml_stack[0].language); | strcpy(language,ssml_stack[0].language); | ||||
| voice_select.age = ssml_stack[0].voice_age; | voice_select.age = ssml_stack[0].voice_age; | ||||
| voice_select.gender = ssml_stack[0].voice_gender; | voice_select.gender = ssml_stack[0].voice_gender; | ||||
| voice_select.variant = ssml_stack[0].voice_variant; | |||||
| voice_select.variant = ssml_stack[0].voice_variant_number; | |||||
| voice_select.identifier = NULL; | voice_select.identifier = NULL; | ||||
| for(ix=0; ix<n_ssml_stack; ix++) | for(ix=0; ix<n_ssml_stack; ix++) | ||||
| if(sp->language[0] != 0) | if(sp->language[0] != 0) | ||||
| { | { | ||||
| strcpy(language, sp->language); | strcpy(language, sp->language); | ||||
| // is this language provided by the base voice? | |||||
| p = base_voice.languages; | |||||
| while(*p++ != 0) | |||||
| { | |||||
| if(strcmp(p, language) == 0) | |||||
| { | |||||
| // yes, change the language to the main language of the base voice | |||||
| strcpy(language, &base_voice.languages[1]); | |||||
| break; | |||||
| } | |||||
| p += (strlen(p) + 1); | |||||
| } | |||||
| if(voice_name_specified == 0) | if(voice_name_specified == 0) | ||||
| voice_name[0] = 0; // forget a previous voice name if a language is specified | voice_name[0] = 0; // forget a previous voice name if a language is specified | ||||
| } | } | ||||
| if(sp->voice_gender != 0) | if(sp->voice_gender != 0) | ||||
| { | |||||
| voice_select.gender = sp->voice_gender; | voice_select.gender = sp->voice_gender; | ||||
| } | |||||
| if(sp->voice_age != 0) | if(sp->voice_age != 0) | ||||
| voice_select.age = sp->voice_age; | voice_select.age = sp->voice_age; | ||||
| if(sp->voice_variant != 0) | |||||
| voice_select.variant = sp->voice_variant; | |||||
| if(sp->voice_variant_number != 0) | |||||
| voice_select.variant = sp->voice_variant_number; | |||||
| } | } | ||||
| voice_select.name = voice_name; | voice_select.name = voice_name; | ||||
| v_id = SelectVoice(&voice_select, &voice_found); | v_id = SelectVoice(&voice_select, &voice_found); | ||||
| if(v_id == NULL) | if(v_id == NULL) | ||||
| return("default"); | return("default"); | ||||
| if((strchr(v_id, '+') == NULL) && ((voice_select.gender == 0) || (voice_select.gender == base_voice.gender)) && (base_voice_variant_name[0] != 0)) | |||||
| { | |||||
| // a voice variant has not been selected, use the original voice variant | |||||
| sprintf(buf, "%s+%s", v_id, base_voice_variant_name); | |||||
| strncpy0(voice_name, buf, sizeof(voice_name)); | |||||
| return(voice_name); | |||||
| } | |||||
| return(v_id); | return(v_id); | ||||
| } // end of VoiceFromStack | } // end of VoiceFromStack | ||||
| } // end of AddNameData | } // end of AddNameData | ||||
| void SetVoiceStack(espeak_VOICE *v) | |||||
| {//================================ | |||||
| void SetVoiceStack(espeak_VOICE *v, const char *variant_name) | |||||
| {//========================================================== | |||||
| SSML_STACK *sp; | SSML_STACK *sp; | ||||
| sp = &ssml_stack[0]; | sp = &ssml_stack[0]; | ||||
| if(v->languages != NULL) | if(v->languages != NULL) | ||||
| strcpy(sp->language,v->languages); | strcpy(sp->language,v->languages); | ||||
| if(v->name != NULL) | if(v->name != NULL) | ||||
| strcpy(sp->voice_name,v->name); | |||||
| sp->voice_variant = v->variant; | |||||
| strncpy0(sp->voice_name, v->name, sizeof(sp->voice_name)); | |||||
| sp->voice_variant_number = v->variant; | |||||
| sp->voice_age = v->age; | sp->voice_age = v->age; | ||||
| sp->voice_gender = v->gender; | sp->voice_gender = v->gender; | ||||
| strncpy0(base_voice_variant_name, variant_name, sizeof(base_voice_variant_name)); | |||||
| memcpy(&base_voice, ¤t_voice_selected, sizeof(base_voice)); | |||||
| } | } | ||||
| attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); | attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); | ||||
| attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name)); | attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name)); | ||||
| ssml_sp->voice_variant = attrnumber(variant,1,0)-1; | |||||
| ssml_sp->voice_variant_number = attrnumber(variant,1,0)-1; | |||||
| ssml_sp->voice_age = attrnumber(age,0,0); | ssml_sp->voice_age = attrnumber(age,0,0); | ||||
| ssml_sp->voice_gender = attrlookup(gender,mnem_gender); | ssml_sp->voice_gender = attrlookup(gender,mnem_gender); | ||||
| ssml_sp->tag_type = tag_type; | ssml_sp->tag_type = tag_type; | ||||
| {"reduced",2}, | {"reduced",2}, | ||||
| {"moderate",3}, | {"moderate",3}, | ||||
| {"strong",4}, | {"strong",4}, | ||||
| {"x-strong",5}, | |||||
| {NULL,-1}}; | {NULL,-1}}; | ||||
| static const char *prosody_attr[5] = { | static const char *prosody_attr[5] = { | ||||
| if(translator->langopts.tone_language == 1) | if(translator->langopts.tone_language == 1) | ||||
| { | { | ||||
| static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,90}; | |||||
| static unsigned char emphasis_to_volume[] = {100,100,70,110,140,140}; | |||||
| static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,100}; | |||||
| static unsigned char emphasis_to_volume[] = {100,100,70,110,135,150}; | |||||
| // tone language (eg.Chinese) do emphasis by increasing the pitch range. | // tone language (eg.Chinese) do emphasis by increasing the pitch range. | ||||
| sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value]; | sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value]; | ||||
| sp->parameter[espeakVOLUME] = emphasis_to_volume[value]; | sp->parameter[espeakVOLUME] = emphasis_to_volume[value]; | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| static unsigned char emphasis_to_volume2[] = {100,100,75,100,120,150}; | |||||
| sp->parameter[espeakVOLUME] = emphasis_to_volume2[value]; | |||||
| sp->parameter[espeakEMPHASIS] = value; | sp->parameter[espeakEMPHASIS] = value; | ||||
| } | } | ||||
| ProcessParamStack(outbuf, outix); | ProcessParamStack(outbuf, outix); |
| fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | ||||
| } | } | ||||
| LoadConfig(); | LoadConfig(); | ||||
| SetVoiceStack(NULL); | |||||
| SetVoiceStack(NULL, ""); | |||||
| SynthesizeInit(); | SynthesizeInit(); | ||||
| for(param=0; param<N_SPEECH_PARAM; param++) | for(param=0; param<N_SPEECH_PARAM; param++) |
| #include "wave.h" | #include "wave.h" | ||||
| unsigned char *outbuf=NULL; | unsigned char *outbuf=NULL; | ||||
| extern espeak_VOICE voice_selected; | |||||
| espeak_EVENT *event_list=NULL; | espeak_EVENT *event_list=NULL; | ||||
| int event_list_ix=0; | int event_list_ix=0; | ||||
| fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home); | ||||
| } | } | ||||
| memset(&voice_selected,0,sizeof(voice_selected)); | |||||
| SetVoiceStack(NULL); | |||||
| memset(¤t_voice_selected,0,sizeof(current_voice_selected)); | |||||
| SetVoiceStack(NULL, ""); | |||||
| SynthesizeInit(); | SynthesizeInit(); | ||||
| InitNamedata(); | InitNamedata(); | ||||
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.45.31 25.Jun.11"; | |||||
| const char *version_string = "1.45.40 23.Aug.11"; | |||||
| const int version_phdata = 0x014500; | const int version_phdata = 0x014500; | ||||
| int option_device_number = -1; | int option_device_number = -1; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| fclose(f); | |||||
| } // end of LoadConfig | } // end of LoadConfig | ||||
| } | } | ||||
| if(flags & 0x40) | if(flags & 0x40) | ||||
| DoPause(12,0); // add a short pause after the consonant | |||||
| DoPause(20,0); // add a short pause after the consonant | |||||
| if(flags & 16) | if(flags & 16) | ||||
| return(len); | return(len); |
| 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,17, 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] = {200, 200, 210, 210, 0, 0, 230, 230}; | ||||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | tr->langopts.stress_flags = 0x0024; // don't use secondary stress | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
| tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | |||||
| } | } | ||||
| break; | break; | ||||
| SetCyrillicLetters(tr); | SetCyrillicLetters(tr); | ||||
| SetLetterVowel(tr,0x2a); | SetLetterVowel(tr,0x2a); | ||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x17; // devoice at end of word, and change voicing to match a following consonant (except v) | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) | |||||
| tr->langopts.param[LOPT_REDUCE] = 2; | tr->langopts.param[LOPT_REDUCE] = 2; | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS ; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS ; | ||||
| tr->langopts.word_gap = 0x8; // don't use linking phonemes | tr->langopts.word_gap = 0x8; // don't use linking phonemes | ||||
| tr->langopts.vowel_pause = 0x30; | tr->langopts.vowel_pause = 0x30; | ||||
| tr->langopts.param[LOPT_PREFIXES] = 1; | tr->langopts.param[LOPT_PREFIXES] = 1; | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||||
| tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; | tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; | ||||
| } | } | ||||
| break; | break; | ||||
| case L('m','t'): // Maltese | |||||
| { | |||||
| tr->charset_a0 = charsets[3]; // ISO-8859-3 | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||||
| tr->langopts.stress_rule = STRESSPOSN_2R; // penultimate | |||||
| tr->langopts.numbers = 1; | |||||
| } | |||||
| break; | |||||
| case L('n','l'): // Dutch | case L('n','l'): // Dutch | ||||
| { | { | ||||
| tr->langopts.vowel_pause = 0x30; // ?? | tr->langopts.vowel_pause = 0x30; // ?? | ||||
| tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
| tr->langopts.param[LOPT_PREFIXES] = 1; | tr->langopts.param[LOPT_PREFIXES] = 1; | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word | |||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_1900 | NUM_ORDINAL_DOT; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_1900 | NUM_ORDINAL_DOT; | ||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x8; | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | |||||
| tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | ||||
| tr->langopts.numbers2 = 0x40; | tr->langopts.numbers2 = 0x40; | ||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | ||||
| tr->langopts.stress_flags = 0x20; | tr->langopts.stress_flags = 0x20; | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x13; | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | |||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | ||||
| tr->langopts.numbers2 = 0x100; // plural forms of millions etc | tr->langopts.numbers2 = 0x100; // plural forms of millions etc | ||||
| tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator | tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator |
| } | } | ||||
| void Word_EmbeddedCmd() | |||||
| {//==================== | |||||
| // Process embedded commands for emphasis, sayas, and break | |||||
| int embedded_cmd; | |||||
| int value; | |||||
| do | |||||
| { | |||||
| embedded_cmd = embedded_list[embedded_read++]; | |||||
| value = embedded_cmd >> 8; | |||||
| switch(embedded_cmd & 0x1f) | |||||
| { | |||||
| case EMBED_Y: | |||||
| option_sayas = value; | |||||
| break; | |||||
| case EMBED_F: | |||||
| option_emphasis = value; | |||||
| break; | |||||
| case EMBED_B: | |||||
| // break command | |||||
| if(value == 0) | |||||
| pre_pause = 0; // break=none | |||||
| else | |||||
| pre_pause += value; | |||||
| break; | |||||
| } | |||||
| } while(((embedded_cmd & 0x80) == 0) && (embedded_read < embedded_ix)); | |||||
| } // end of Word_EmbeddedCmd | |||||
| int SetTranslator2(const char *new_language) | int SetTranslator2(const char *new_language) | ||||
| {//========================================= | {//========================================= | ||||
| // Set translator2 to a second language | // Set translator2 to a second language | ||||
| int next_tone=0; | int next_tone=0; | ||||
| unsigned char *p; | unsigned char *p; | ||||
| int srcix; | int srcix; | ||||
| int embedded_cmd; | |||||
| int value; | |||||
| int found_dict_flag; | int found_dict_flag; | ||||
| unsigned char ph_code; | unsigned char ph_code; | ||||
| PHONEME_LIST2 *plist2; | PHONEME_LIST2 *plist2; | ||||
| { | { | ||||
| embedded_flag = SFLAG_EMBEDDED; | embedded_flag = SFLAG_EMBEDDED; | ||||
| do | |||||
| { | |||||
| embedded_cmd = embedded_list[embedded_read++]; | |||||
| value = embedded_cmd >> 8; | |||||
| switch(embedded_cmd & 0x1f) | |||||
| { | |||||
| case EMBED_Y: | |||||
| option_sayas = value; | |||||
| break; | |||||
| case EMBED_F: | |||||
| option_emphasis = value; | |||||
| break; | |||||
| case EMBED_B: | |||||
| // break command | |||||
| if(value == 0) | |||||
| pre_pause = 0; // break=none | |||||
| else | |||||
| pre_pause += value; | |||||
| break; | |||||
| } | |||||
| } while((embedded_cmd & 0x80) == 0); | |||||
| Word_EmbeddedCmd(); | |||||
| } | } | ||||
| if((word[0] == 0) || (word_flags & FLAG_DELETE_WORD)) | if((word[0] == 0) || (word_flags & FLAG_DELETE_WORD)) | ||||
| } | } | ||||
| } | } | ||||
| if((dict_flags & (FLAG_ALLOW_DOT | FLAG_NEEDS_DOT)) && (ix == word_count-1) && (terminator & CLAUSE_DOT)) | |||||
| if((dict_flags & (FLAG_ALLOW_DOT | FLAG_NEEDS_DOT)) && (ix == word_count - 1 - dictionary_skipwords) && (terminator & CLAUSE_DOT)) | |||||
| { | { | ||||
| // probably an abbreviation such as Mr. or B. rather than end of sentence | // probably an abbreviation such as Mr. or B. rather than end of sentence | ||||
| clause_pause = 10; | clause_pause = 10; | ||||
| } | } | ||||
| } | } | ||||
| if(embedded_read < embedded_ix) | |||||
| { | |||||
| // any embedded commands not yet processed? | |||||
| Word_EmbeddedCmd(); | |||||
| } | |||||
| for(ix=0; ix<2; ix++) | for(ix=0; ix<2; ix++) | ||||
| { | { | ||||
| // terminate the clause with 2 PAUSE phonemes | // terminate the clause with 2 PAUSE phonemes |
| #define LOPT_PREFIXES 3 | #define LOPT_PREFIXES 3 | ||||
| // non-zero, change voiced/unoiced to match last consonant in a cluster | // non-zero, change voiced/unoiced to match last consonant in a cluster | ||||
| // bit 0=use regressive voicing | |||||
| // bit 1=LANG=cz,bg don't propagate over [v] | // bit 1=LANG=cz,bg don't propagate over [v] | ||||
| // bit 2=don't propagate acress word boundaries | // bit 2=don't propagate acress word boundaries | ||||
| // bit 3=LANG=pl, propagate over liquids and nasals | // bit 3=LANG=pl, propagate over liquids and nasals | ||||
| // bit 4=devoice word-final consonants | |||||
| // bit 4=LANG=cz,sk don't progagate to [v] | |||||
| // bit 8=devoice word-final consonants | |||||
| #define LOPT_REGRESSIVE_VOICING 4 | #define LOPT_REGRESSIVE_VOICING 4 | ||||
| // 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') | // 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') | ||||
| void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); | void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); | ||||
| int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change); | int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change); | ||||
| void SetVoiceStack(espeak_VOICE *v); | |||||
| 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); | ||||
| // percentages shown to user, ix=N_PEAKS means ALL peaks | // percentages shown to user, ix=N_PEAKS means ALL peaks | ||||
| extern USHORT voice_pcnt[N_PEAKS+1][3]; | extern USHORT voice_pcnt[N_PEAKS+1][3]; | ||||
| extern espeak_VOICE current_voice_selected; | |||||
| extern voice_t *voice; | extern voice_t *voice; | ||||
| extern int tone_points[12]; | extern int tone_points[12]; |
| static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
| static int len_path_voices; | static int len_path_voices; | ||||
| espeak_VOICE voice_selected; | |||||
| espeak_VOICE current_voice_selected; | |||||
| enum { | enum { | ||||
| int pitch1; | int pitch1; | ||||
| int pitch2; | int pitch2; | ||||
| static char voice_identifier[40]; // file name for voice_selected | |||||
| static char voice_name[40]; // voice name for voice_selected | |||||
| static char voice_languages[100]; // list of languages and priorities for voice_selected | |||||
| static char voice_identifier[40]; // file name for current_voice_selected | |||||
| static char voice_name[40]; // voice name for current_voice_selected | |||||
| static char voice_languages[100]; // list of languages and priorities for current_voice_selected | |||||
| strcpy(voicename,vname); | strcpy(voicename,vname); | ||||
| if(voicename[0]==0) | if(voicename[0]==0) | ||||
| voice_name[0] = 0; | voice_name[0] = 0; | ||||
| voice_languages[0] = 0; | voice_languages[0] = 0; | ||||
| voice_selected.identifier = voice_identifier; | |||||
| voice_selected.name = voice_name; | |||||
| voice_selected.languages = voice_languages; | |||||
| current_voice_selected.identifier = voice_identifier; | |||||
| current_voice_selected.name = voice_name; | |||||
| current_voice_selected.languages = voice_languages; | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| case V_GENDER: | case V_GENDER: | ||||
| { | { | ||||
| int age; | |||||
| int age = 0; | |||||
| char vgender[80]; | char vgender[80]; | ||||
| sscanf(p,"%s %d",vgender,&age); | sscanf(p,"%s %d",vgender,&age); | ||||
| voice_selected.gender = LookupMnem(genders,vgender); | |||||
| voice_selected.age = age; | |||||
| current_voice_selected.gender = LookupMnem(genders,vgender); | |||||
| current_voice_selected.age = age; | |||||
| } | } | ||||
| break; | break; | ||||
| } // end of LoadVoice | } // end of LoadVoice | ||||
| static char *ExtractVoiceVariantName(char *vname, int variant_num) | |||||
| {//=============================================================== | |||||
| static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir) | |||||
| {//=========================================================================== | |||||
| // Remove any voice variant suffix (name or number) from a voice name | // Remove any voice variant suffix (name or number) from a voice name | ||||
| // Returns the voice variant name | // Returns the voice variant name | ||||
| char *p; | char *p; | ||||
| static char variant_name[20]; | |||||
| static char variant_name[40]; | |||||
| char variant_prefix[5]; | char variant_prefix[5]; | ||||
| variant_name[0] = 0; | variant_name[0] = 0; | ||||
| sprintf(variant_prefix,"!v%c",PATHSEP); | sprintf(variant_prefix,"!v%c",PATHSEP); | ||||
| if(add_dir == 0) | |||||
| variant_prefix[0] = 0; | |||||
| if(vname != NULL) | if(vname != NULL) | ||||
| { | { | ||||
| if((p = strchr(vname,'+')) != NULL) | if((p = strchr(vname,'+')) != NULL) | ||||
| { | { | ||||
| // The voice name has a +variant suffix | // The voice name has a +variant suffix | ||||
| variant_num = 0; | |||||
| *p++ = 0; // delete the suffix from the voice name | *p++ = 0; // delete the suffix from the voice name | ||||
| if(isdigit(*p)) | if(isdigit(*p)) | ||||
| { | { | ||||
| else | else | ||||
| { | { | ||||
| // voice variant name, not number | // voice variant name, not number | ||||
| strcpy(variant_name,variant_prefix); | |||||
| strncpy0(&variant_name[3],p,sizeof(variant_name)-3); | |||||
| sprintf(variant_name, "%s%s", variant_prefix, p); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| char buf[60]; | char buf[60]; | ||||
| strncpy0(buf,vname,sizeof(buf)); | strncpy0(buf,vname,sizeof(buf)); | ||||
| variant_name = ExtractVoiceVariantName(buf,variant_num); | |||||
| variant_name = ExtractVoiceVariantName(buf,variant_num, 1); | |||||
| if((v = LoadVoice(buf,0)) == NULL) | if((v = LoadVoice(buf,0)) == NULL) | ||||
| return(NULL); | return(NULL); | ||||
| espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) | |||||
| {//===================================================================== | |||||
| espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2) | |||||
| {//====================================================================== | |||||
| int ix; | int ix; | ||||
| int match_fname = -1; | int match_fname = -1; | ||||
| int match_fname2 = -1; | int match_fname2 = -1; | ||||
| int match_name = -1; | int match_name = -1; | ||||
| const char *id; | |||||
| const char *id; // this is the filename within espeak-data/voices | |||||
| char *variant_name; | |||||
| int last_part_len; | int last_part_len; | ||||
| char last_part[41]; | char last_part[41]; | ||||
| char name[40]; | |||||
| if(voices == NULL) | if(voices == NULL) | ||||
| { | { | ||||
| voices = voices_list; | voices = voices_list; | ||||
| } | } | ||||
| strncpy0(name, name2, sizeof(name)); | |||||
| if((variant_name = strchr(name, '+')) != NULL) | |||||
| { | |||||
| *variant_name = 0; | |||||
| variant_name++; | |||||
| } | |||||
| sprintf(last_part,"%c%s",PATHSEP,name); | sprintf(last_part,"%c%s",PATHSEP,name); | ||||
| last_part_len = strlen(last_part); | last_part_len = strlen(last_part); | ||||
| break; | break; | ||||
| } | } | ||||
| else | else | ||||
| if(strcmp(name,id = voices[ix]->identifier)==0) | |||||
| { | |||||
| match_fname = ix; // matching identifier, use this if no matching name | |||||
| } | |||||
| else | |||||
| if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||||
| { | { | ||||
| match_fname2 = ix; | |||||
| id = voices[ix]->identifier; | |||||
| if(strcmp(name, id)==0) | |||||
| { | |||||
| match_fname = ix; // matching identifier, use this if no matching name | |||||
| } | |||||
| else | |||||
| if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||||
| { | |||||
| match_fname2 = ix; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| strncpy0(buf,voice_select2.name,sizeof(buf)); | strncpy0(buf,voice_select2.name,sizeof(buf)); | ||||
| variant_name = ExtractVoiceVariantName(buf,0); | |||||
| variant_name = ExtractVoiceVariantName(buf,0,0); | |||||
| vp = SelectVoiceByName(voices_list,buf); | vp = SelectVoiceByName(voices_list,buf); | ||||
| if(vp != NULL) | if(vp != NULL) | ||||
| { | { | ||||
| if(variant_name[0] != 0) | if(variant_name[0] != 0) | ||||
| { | { | ||||
| sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); // omit the !v/ from variant_name | |||||
| sprintf(voice_id,"%s+%s", vp->identifier, variant_name); | |||||
| return(voice_id); | return(voice_id); | ||||
| } | } | ||||
| if(vp->variant != 0) | if(vp->variant != 0) | ||||
| { | { | ||||
| variant_name = ExtractVoiceVariantName(NULL,vp->variant); | |||||
| sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); | |||||
| variant_name = ExtractVoiceVariantName(NULL, vp->variant, 0); | |||||
| sprintf(voice_id,"%s+%s", vp->identifier, variant_name); | |||||
| return(voice_id); | return(voice_id); | ||||
| } | } | ||||
| static char buf[60]; | static char buf[60]; | ||||
| strncpy0(buf,name,sizeof(buf)); | strncpy0(buf,name,sizeof(buf)); | ||||
| variant_name = ExtractVoiceVariantName(buf,0); | |||||
| variant_name = ExtractVoiceVariantName(buf, 0, 1); | |||||
| memset(&voice_selector,0,sizeof(voice_selector)); | memset(&voice_selector,0,sizeof(voice_selector)); | ||||
| // voice_selector.name = buf; | // voice_selector.name = buf; | ||||
| } | } | ||||
| DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
| SetVoiceStack(&voice_selector); | |||||
| SetVoiceStack(&voice_selector, variant_name); | |||||
| return(EE_OK); | return(EE_OK); | ||||
| } | } | ||||
| LoadVoice(variant_name,2); | LoadVoice(variant_name,2); | ||||
| } | } | ||||
| DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
| SetVoiceStack(&voice_selector); | |||||
| SetVoiceStack(&voice_selector, variant_name); | |||||
| return(EE_OK); | return(EE_OK); | ||||
| } | } | ||||
| } | } | ||||
| LoadVoiceVariant(voice_id,0); | LoadVoiceVariant(voice_id,0); | ||||
| DoVoiceChange(voice); | DoVoiceChange(voice); | ||||
| SetVoiceStack(voice_selector); | |||||
| SetVoiceStack(voice_selector, ""); | |||||
| return(EE_OK); | return(EE_OK); | ||||
| } // end of SetVoiceByProperties | } // end of SetVoiceByProperties | ||||
| ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | ||||
| {//================================================== | {//================================================== | ||||
| return(&voice_selected); | |||||
| return(¤t_voice_selected); | |||||
| } | } | ||||
| #pragma GCC visibility pop | #pragma GCC visibility pop |