lang=en-r: change to phoneme [t#] (reduced "t") Added "consonants" attribute to voice files. Minor change to intonation types 2 and 3. lang=zh: adjust tone levels lang=fr: adjust stressAmp, adjust consonant strengths. Platform RISC_OS. Disable the "breath" attribute in voices because floating point is not allowed in callbacks. Platform RISC_OS. Implement ListVoices() git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@132 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @- a aI e E eI eU i | @- a aI e E eI eU i | ||||
| o oI u | o oI u | ||||
| * b B d D f g j | |||||
| J J^ k l l^ m n n^ | |||||
| p Q r R s t T tS | |||||
| v w x | |||||
| * ** b B d D f g | |||||
| j J J^ k l l^ m n | |||||
| n^ p Q r R s t T | |||||
| tS v w x | |||||
| Dictionary fi_dict | Dictionary fi_dict | ||||
| E~ i i: o O O~ u W | E~ i i: o O O~ u W | ||||
| w^i W~ y Y | w^i W~ y Y | ||||
| * - : ; b c d dZ | |||||
| f g h j k l L m | |||||
| n N n^ p r R s S | |||||
| t t2 tS v w z Z z2 | |||||
| z3 | |||||
| * : ; b c d dZ f | |||||
| g h j k l L m n | |||||
| N n^ p r R s S t | |||||
| t2 tS v w z Z z2 z3 | |||||
| Dictionary hi_dict | Dictionary hi_dict | ||||
| l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
| u: | u: | ||||
| * b d d; dZ f g h | |||||
| j k l l^ m n N n^ | |||||
| p r R R^ R^/ s S t | |||||
| t; tS ts v x z Z | |||||
| * : b d d; dZ f g | |||||
| h j k l l^ m n N | |||||
| n^ p r R R^ R^/ s S | |||||
| t t; tS ts v x z Z | |||||
| Dictionary sv_dict | Dictionary sv_dict | ||||
| j k l m n N n^ p | j k l m n N n^ p | ||||
| r R s S t tS v w | r R s S t tS v w | ||||
| x z | x z | ||||
| Dictionary ja_dict | |||||
| she %Si: $only $verbsf | she %Si: $only $verbsf | ||||
| it %It $verbsf | it %It $verbsf | ||||
| (it has) I2t||h'az $atend | (it has) I2t||h'az $atend | ||||
| it $allcaps $abbrev | |||||
| we %wi: $verbf $only | we %wi: $verbf $only | ||||
| you %ju: $verbf | you %ju: $verbf | ||||
| they %DeI $verbf | they %DeI $verbf |
| lle (_ l | lle (_ l | ||||
| @@o) lled (_$3v d | @@o) lled (_$3v d | ||||
| @@) lled (_$3v d | @@) lled (_$3v d | ||||
| B) l (_N @L | |||||
| B) l (_ @L | |||||
| w) l (_ l | w) l (_ l | ||||
| r) l (_ l | r) l (_ l | ||||
| Al) l (_ | Al) l (_ | ||||
| j) une (_ u:n | j) une (_ u:n | ||||
| l) une (_ u:n | l) une (_ u:n | ||||
| r) une (_ u:n | r) une (_ u:n | ||||
| ?3 t) une (_ u:n | |||||
| _) una (b ,Vna2 | _) una (b ,Vna2 | ||||
| t) un (e ju:n | t) un (e ju:n | ||||
| ?3 t) un (e u:n | |||||
| _) un (if ju:n | _) un (if ju:n | ||||
| un (ani %ju:n | un (ani %ju:n | ||||
| _) under (@P5 ,Vnd3 // prefix | _) under (@P5 ,Vnd3 // prefix |
| porque $pause // because | porque $pause // because | ||||
| // questions | // questions | ||||
| que $u+ $pause // what | |||||
| que $u $pause // what | |||||
| cuál $pause // which | cuál $pause // which | ||||
| cuáles $pause | cuáles $pause | ||||
| cómo $pause // how | cómo $pause // how |
| _) r (_ E*e | _) r (_ E*e | ||||
| r R | r R | ||||
| _) r R | _) r R | ||||
| A) r (A * | |||||
| A) r (A ** | |||||
| C) r (A @-* | C) r (A @-* | ||||
| rr *R | rr *R | ||||
| // This file in UTF8 encoded | // This file in UTF8 encoded | ||||
| // 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
| // | // | ||||
| // Updated 2008-01-21 Michel Such <[email protected]> | |||||
| // Updated 2008-01-25 Michel Such <[email protected]> | |||||
| // | // | ||||
| // * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
| // | // | ||||
| abc $abbrev | abc $abbrev | ||||
| ac $abbrev | ac $abbrev | ||||
| adsl $abbrev | adsl $abbrev | ||||
| alt $pause | |||||
| amd $abbrev | amd $abbrev | ||||
| api $abbrev | api $abbrev | ||||
| avh $abbrev | |||||
| cci $abbrev | cci $abbrev | ||||
| cio $abbrev | cio $abbrev | ||||
| ctrl kO~tRol | |||||
| ctrl kO~tRol $pause | |||||
| dept depaRt@mA~ | dept depaRt@mA~ | ||||
| etc etseteRa | etc etseteRa | ||||
| hmm h@m | hmm h@m | ||||
| // pronunciation exceptions | // pronunciation exceptions | ||||
| consent kO~s'A~t2 | consent kO~s'A~t2 | ||||
| divers div'Erz2 | |||||
| scient si | scient si | ||||
| bénéficient benefisi $verb | bénéficient benefisi $verb | ||||
| président pRezid'A~ | |||||
| président pRezidt2 $verb | |||||
| résident Rezid'A~ | |||||
| résident Rezidt2 $verb | |||||
| ressent r@s'A~t2 | |||||
| concurrent kO~kyR'A~ | |||||
| couvent k'uvt2 $verb | |||||
| dessus d@sy | |||||
| dessous d@su | |||||
| divers divErz2 | |||||
| ►évident evid'A~ | ►évident evid'A~ | ||||
| évident evidt2 $verb | évident evidt2 $verb | ||||
| couvent k'uvt2 $verb | |||||
| concurrent kO~kyR'A~ | |||||
| récurrent RekyR'A~ | |||||
| ferment fErm'A~ | ferment fErm'A~ | ||||
| ferment f'Ermt2 $verb | ferment f'Ermt2 $verb | ||||
| parent paR'A~ | parent paR'A~ | ||||
| parent p'art2 $verb | parent p'art2 $verb | ||||
| pastis pastis | |||||
| président pRezid'A~ | |||||
| président pRezidt2 $verb | |||||
| résident Rezid'A~ | |||||
| résident Rezidt2 $verb | |||||
| ressent r@s'A~t2 | |||||
| récurrent RekyR'A~ | |||||
| riz ri | |||||
| sergent sErZ'A~ | sergent sErZ'A~ | ||||
| serment sErm'A~ | serment sErm'A~ | ||||
| serpent sErp'A~ | serpent sErp'A~ | ||||
| adéquat adekuat2 | adéquat adekuat2 | ||||
| adéquate adekuat | adéquate adekuat | ||||
| ardent aRdA~ | ardent aRdA~ | ||||
| boeufs bY | |||||
| bus bys | bus bys | ||||
| choeur kWr | |||||
| choeur k@r | |||||
| discident disidA~ | discident disidA~ | ||||
| fils fis | fils fis | ||||
| haillon _|ajO~ | |||||
| haricot _|aRiko | |||||
| imprudent E~pRydA~ | imprudent E~pRydA~ | ||||
| juin ZwE~ | |||||
| juin ZuE~ | |||||
| mars maRs | mars maRs | ||||
| occident OksidA~ | occident OksidA~ | ||||
| oeufs Y | |||||
| orient ORjA~ | orient ORjA~ | ||||
| pays pEi | pays pEi | ||||
| prudent pRydA~ | prudent pRydA~ | ||||
| secret sYkRE | secret sYkRE | ||||
| secrets sYkREz2 | |||||
| souris suri | souris suri | ||||
| qu'y ki $verbf | qu'y ki $verbf | ||||
| (sud est) sydEst | (sud est) sydEst | ||||
| (nord est) nOREst | (nord est) nOREst | ||||
| cci $abbrev | |||||
| nvda $abbrev | |||||
| open Op'@n | |||||
| potentiomètre pOtA~sjOmEtR@- | potentiomètre pOtA~sjOmEtR@- | ||||
| processus pROsEsys | processus pROsEsys | ||||
| rut Ryt | rut Ryt | ||||
| scorbut skORbyt | scorbut skORbyt | ||||
| scout skut | scout skut | ||||
| scouts skut | |||||
| stout staut | stout staut | ||||
| uppercut ypERkyt | uppercut ypERkyt | ||||
| ut yt | ut yt | ||||
| zut syt | |||||
| zut zyt | |||||
| // et (t is said) | // et (t is said) | ||||
| (sweat shirt) swEtS@Rt | (sweat shirt) swEtS@Rt | ||||
| (tee shirt) tiS@Rt | (tee shirt) tiS@Rt | ||||
| parfum paRfW~ | |||||
| forum fOROm | |||||
| // words from other languages | // words from other languages | ||||
| amazon amaz'On | amazon amaz'On | ||||
| news nj'uz | news nj'uz | ||||
| night najt | night najt | ||||
| ok oke | ok oke | ||||
| open Op'@n | |||||
| outlook autluk | outlook autluk | ||||
| player plEj'@r | player plEj'@r | ||||
| reader Ri:d@R | reader Ri:d@R | ||||
| spybot spajbOt | spybot spajbOt | ||||
| sun s@n | sun s@n | ||||
| sunlight s@nlajt | sunlight s@nlajt | ||||
| (text aloud) tEkst||@lau-d | |||||
| (text aloud) tEkst||@lawd | |||||
| thunderbird f@ndERb@Rd | thunderbird f@ndERb@Rd | ||||
| ubuntu ubuntu | ubuntu ubuntu | ||||
| update @pd'E:jt | update @pd'E:jt | ||||
| // tions (tjO~ instead of sjO~) | // tions (tjO~ instead of sjO~) | ||||
| achetions aS@tjO~z2 | achetions aS@tjO~z2 | ||||
| ajoutions aZutjO~z2 | |||||
| apportions apORtjO~z2 | apportions apORtjO~z2 | ||||
| apprêtions apREtjO~z2 | apprêtions apREtjO~z2 | ||||
| arrêtions aREtjO~z2 | arrêtions aREtjO~z2 | ||||
| chantions SA~tjO~z2 | chantions SA~tjO~z2 | ||||
| citions sitjO~z2 | |||||
| comptions kO~tjO~z2 | comptions kO~tjO~z2 | ||||
| constations kO~statjO~z2 | constations kO~statjO~z2 | ||||
| contentions kO~tA~tjO~z2 | contentions kO~tA~tjO~z2 | ||||
| dations datjO~z2 | dations datjO~z2 | ||||
| discutions diskytjO~z2 | discutions diskytjO~z2 | ||||
| doutions dutjO~z2 | |||||
| débutions debytjO~z2 | débutions debytjO~z2 | ||||
| désertions dezERtjO~z2 | |||||
| désertions dezERtjO~z2 $verb | |||||
| détentions detA~tjO~z2 | détentions detA~tjO~z2 | ||||
| escomptions EskO~tjO~z2 | escomptions EskO~tjO~z2 | ||||
| exploitions EksplwatjO~z2 | exploitions EksplwatjO~z2 | ||||
| exportions EkspORtjO~z2 | exportions EkspORtjO~z2 | ||||
| habitions abitjO~z2 | habitions abitjO~z2 | ||||
| heurtions @RtjO~z2 | |||||
| heurtions _!@RtjO~z2 | |||||
| jetions Z@tjO~z2 | jetions Z@tjO~z2 | ||||
| limitions limitjO~z2 | limitions limitjO~z2 | ||||
| méritions meRitjO~z2 | méritions meRitjO~z2 | ||||
| pressentions pREsA~tjO~z2 | pressentions pREsA~tjO~z2 | ||||
| présentions pRezA~tjO~z2 | présentions pRezA~tjO~z2 | ||||
| prêtions pREtjO~z2 | prêtions pREtjO~z2 | ||||
| rations RatjO~z2 | |||||
| redoutions R@dutjO~z2 | |||||
| rations RatjO~z2 $verb | |||||
| représentions R@pRezA~tjO~z2 | représentions R@pRezA~tjO~z2 | ||||
| respections REspEktjO~z2 | respections REspEktjO~z2 | ||||
| ressentions R@sA~tjO~z2 | ressentions R@sA~tjO~z2 | ||||
| tentions tA~tjO~z2 | tentions tA~tjO~z2 | ||||
| traitions tREtjO~z2 | traitions tREtjO~z2 | ||||
| votions vOtjO~z2 $u | votions vOtjO~z2 $u | ||||
| écoutions ekutjO~z2 | |||||
| étions etjO~z2 | étions etjO~z2 | ||||
| évitions evitjO~z2 | évitions evitjO~z2 | ||||
| // 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
| // | // | ||||
| // Updated: 2008-01-21 Michel Such <[email protected]> | |||||
| // Updated: 2008-01-25 Michel Such <[email protected]> | |||||
| // | // | ||||
| // * The rules are based on Cicero TTS. | // * The rules are based on Cicero TTS. | ||||
| // | // | ||||
| quon) d (_ t2 | quon) d (_ t2 | ||||
| dt (_ t // Schmidt | dt (_ t // Schmidt | ||||
| _ni) d (_ // nid | |||||
| _noeu) d (_ // noeud | |||||
| r) d (_ // lourd placard | r) d (_ // lourd placard | ||||
| d d // don bled | d d // don bled | ||||
| .group e | .group e | ||||
| e (Ce_ E | e (Ce_ E | ||||
| AC) e (_ @- // e muet | |||||
| CC) e (_ @- // e muet | |||||
| gu) e (_ @- // e muet | |||||
| eau o // bateau cheveaux | eau o // bateau cheveaux | ||||
| j) e (a // Jean Jeanne | j) e (a // Jean Jeanne | ||||
| sp) ea (k i: // speak speaker | sp) ea (k i: // speak speaker | ||||
| en (s_ A~ | en (s_ A~ | ||||
| en (CA A~ // pentathlon | en (CA A~ // pentathlon | ||||
| en (CC A~ // entre | en (CC A~ // entre | ||||
| en (ch_ En // french | |||||
| _C) er (_ ER // fer | _C) er (_ ER // fer | ||||
| _Ch) er (_ ER // cher | _Ch) er (_ ER // cher | ||||
| _r) es (A @s // resaisir resaluer | _r) es (A @s // resaisir resaluer | ||||
| _r) e (ss @ // ressembler | _r) e (ss @ // ressembler | ||||
| _r) e (ssu e // ressusciter | |||||
| _r) e (stra @ | _r) e (stra @ | ||||
| _r) e (stre @ | _r) e (stre @ | ||||
| _r) e (stro @ | _r) e (stro @ | ||||
| _r) e (stru @ // restructurer | _r) e (stru @ // restructurer | ||||
| -) est (_ Est // -est | -) est (_ Est // -est | ||||
| @Cr) es (_C =@ | |||||
| rC) es (_C =@ // fortes dames | |||||
| @Cr) es (_C @- | |||||
| rC) es (_C @- // fortes dames | |||||
| ') eu (_ y // eu | ') eu (_ y // eu | ||||
| eu (r_ @ // peur | eu (r_ @ // peur | ||||
| ez (_ ez2 // nez mangez chez | ez (_ ez2 // nez mangez chez | ||||
| _C) e (_ @ // je te | _C) e (_ @ // je te | ||||
| _CC) e (_ @ | |||||
| _CC) e (_ @- | |||||
| _qu) e (_ @ // que | _qu) e (_ @ // que | ||||
| @Cr) e (_C =@ // quatre pattes | |||||
| rC) e (_C =@ | |||||
| @Cr) e (_C @- // quatre pattes | |||||
| CC) e (_C @- | |||||
| ch) e (_C @- | |||||
| gu) e (_C @- | |||||
| qu) e (_C @- | |||||
| e (_ // montre | e (_ // montre | ||||
| g) e (A // mangeons | g) e (A // mangeons | ||||
| AC) e (ment // vitement sûrement | |||||
| AC) e (ment @- // vitement sûrement | |||||
| Aqu) e (ment | Aqu) e (ment | ||||
| enC) e (ment | enC) e (ment | ||||
| enqu) e (ment | enqu) e (ment | ||||
| .group h | .group h | ||||
| _) h (ac _! // hache | _) h (ac _! // hache | ||||
| _) h (ai _! // haine haillon | |||||
| _) h (al _! // halte | _) h (al _! // halte | ||||
| _) h (amp _! // hampe | _) h (amp _! // hampe | ||||
| _) h (an _! // hanche | _) h (an _! // hanche | ||||
| _) h (app _! // happer | _) h (app _! // happer | ||||
| _) h (arc _! // harceler | _) h (arc _! // harceler | ||||
| _) h (ari _! // haricot haridelle | |||||
| _) h (arna _! // harnais | _) h (arna _! // harnais | ||||
| _) h (ard _! // hardi | _) h (ard _! // hardi | ||||
| _) h (arp _! // harpe | _) h (arp _! // harpe | ||||
| _) h (av _! // havre | _) h (av _! // havre | ||||
| _) h (ern _! // hernie | _) h (ern _! // hernie | ||||
| _) h (ers _! // herse | _) h (ers _! // herse | ||||
| _) h (eurt _! // heurter | |||||
| _) h (ibo _! // hibou | _) h (ibo _! // hibou | ||||
| _) h (ide _! // hideux | _) h (ide _! // hideux | ||||
| _) h (oll _! // hollandais | _) h (oll _! // hollandais | ||||
| cr) oc (_ o // escroc | cr) oc (_ o // escroc | ||||
| o (ch o // cochon | o (ch o // cochon | ||||
| o (che_ O // poche, cloche | |||||
| oe (ll wa // moelleux | oe (ll wa // moelleux | ||||
| _) oe (C Y // oesophage | _) oe (C Y // oesophage | ||||
| o (eu // soeur oeuf | |||||
| oeu @ // soeur coeur | |||||
| oeufs @ // oeufs boeufs | |||||
| o (eC o // coefficient | o (eC o // coefficient | ||||
| _) oi (gnon O // oignons | _) oi (gnon O // oignons | ||||
| oin (C wE~ | oin (C wE~ | ||||
| oin (_ wE~ // coin | oin (_ wE~ // coin | ||||
| oi wa // poil | oi wa // poil | ||||
| oid (_ wa // froid | oid (_ wa // froid | ||||
| oê (l wE // poêle | |||||
| oê (l wa // poêle | |||||
| oî wa // boîte | oî wa // boîte | ||||
| o (mm O // comme | o (mm O // comme | ||||
| dr) o (me_ o // vélodrome | |||||
| radi) o (C o // radiophonique | |||||
| dr) o (me_ O // vélodrome | |||||
| ph) o (ne_ O // téléphone | ph) o (ne_ O // téléphone | ||||
| om (b O~ // bombe | om (b O~ // bombe | ||||
| om (p O~ // pompe | om (p O~ // pompe | ||||
| _A) qu (a ku // équateur | _A) qu (a ku // équateur | ||||
| qu k // quatre | qu k // quatre | ||||
| _) que (_ k@ // que | _) que (_ k@ // que | ||||
| que (_ k@- // puisque banque... | |||||
| _) qu' (P3 k // qu'il | _) qu' (P3 k // qu'il | ||||
| n) q (_ k // cinq cent | n) q (_ k // cinq cent | ||||
| _su) rr RR // surréaliste | _su) rr RR // surréaliste | ||||
| cou) rr RR // courrai | cou) rr RR // courrai | ||||
| mou) rr RR // mourrai | mou) rr RR // mourrai | ||||
| rre (_ R@- // barre | |||||
| C) re (_ R@- // litre | |||||
| rr R // erreur | rr R // erreur | ||||
| r r // rien | r r // rien | ||||
| Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel | Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel | ||||
| n) t (_ // silent at end of word | n) t (_ // silent at end of word | ||||
| r) t (_ t2 // fort | r) t (_ t2 // fort | ||||
| tte (_ t@- // fillette | |||||
| C) te (_ t@- // patte | C) te (_ t@- // patte | ||||
| a) te (_ t@- // tomate | |||||
| aul) t (_ // Renault | aul) t (_ // Renault | ||||
| tt t // attitude | tt t // attitude | ||||
| tte (_ t@- // fillette | |||||
| A) te (_ t@- // tomate | |||||
| C) te (_ t@- // pente | |||||
| s) th (m // asthme | s) th (m // asthme | ||||
| th t // théorie | th t // théorie | ||||
| t (ion s // programmation | t (ion s // programmation | ||||
| Cisi) t (ion t // visitions | |||||
| ci) t (ion t // citions | |||||
| ou) t (ion t // ajoutions | |||||
| s) t (ion t // gestion | s) t (ion t // gestion | ||||
| t) t (ion t // combattions | t) t (ion t // combattions | ||||
| u y // cruel nuage brut | u y // cruel nuage brut | ||||
| ui w^i | ui w^i | ||||
| c) ueill Wj // cueillir | |||||
| c) ueil (_ Wj // recueil | |||||
| g) ueill Wj // orgueilleux | g) ueill Wj // orgueilleux | ||||
| g) ueil (_ Wj // orgueil | g) ueil (_ Wj // orgueil | ||||
| c) ueill Wj | |||||
| c) ueil (_ Wj | |||||
| um (_ Om // album | um (_ Om // album | ||||
| f) um (_ W~ // parfum | |||||
| um (b W~ // humble | um (b W~ // humble | ||||
| um (p W~ | um (p W~ | ||||
| un (C W~ // emprunt lundi | un (C W~ // emprunt lundi | ||||
| .group w | .group w | ||||
| w w | w w | ||||
| ware (_ _^_EN // hardware, software | |||||
| wa (Ce_ wE // hardware software wave | |||||
| w (agon v // wagon | |||||
| .group x | .group x | ||||
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| // Letters | // Letters | ||||
| _a a: | |||||
| á d,l-he:'a: | |||||
| ä 'a:prehlasovane: | |||||
| b be: | |||||
| c tse: | |||||
| č tSe: | |||||
| d de: | |||||
| ď d;e: | |||||
| e e: | |||||
| é d,l-he:'e: | |||||
| f ef | |||||
| g ge: | |||||
| h ha: | |||||
| i i: | |||||
| í d,l-he:'i: | |||||
| j je: | |||||
| _k ka: | |||||
| l el | |||||
| ľ el^ | |||||
| ĺ d,l-he:'el | |||||
| m em | |||||
| n en | |||||
| ň en^ | |||||
| _o o: | |||||
| ó d,l-he:'o: | |||||
| ô 'o:sv,oka:n^om | |||||
| p pe: | |||||
| q kve: | |||||
| r er | |||||
| _s es | |||||
| š eS | |||||
| t te: | |||||
| ť t;e: | |||||
| u u: | |||||
| ú dl-he:'u: | |||||
| _v ve: | |||||
| w dv'ojite:,ve: | |||||
| x iks | |||||
| y ipsilon | |||||
| ý d,l-he:'i: | |||||
| _z zet | |||||
| ž Zet | |||||
| _a a: | |||||
| á d,l-he:'a: | |||||
| ä 'a:pRehlasovane: | |||||
| b be: | |||||
| c tse: | |||||
| č tSe: | |||||
| d de: | |||||
| ď d;e: | |||||
| e e: | |||||
| é d,l-he:'e: | |||||
| f ef | |||||
| g ge: | |||||
| h ha: | |||||
| i i: | |||||
| í d,l-he:'i: | |||||
| j je: | |||||
| _k ka: | |||||
| l el | |||||
| ľ el^ | |||||
| ĺ d,l-he:'el | |||||
| m em | |||||
| n en | |||||
| ň en^ | |||||
| _o o: | |||||
| ó d,l-he:'o: | |||||
| ô 'o:sv,oka:n^om | |||||
| p pe: | |||||
| q kve: | |||||
| r eR | |||||
| ř eR^ | |||||
| _s es | |||||
| š eS | |||||
| t te: | |||||
| ť t;e: | |||||
| u u: | |||||
| ú dl-he:'u: | |||||
| ů 'u:s_kR'oUZkem | |||||
| _v ve: | |||||
| w dv'ojite:,ve: | |||||
| x iks | |||||
| y ipsilon | |||||
| ý d,l-he:'i: | |||||
| _z zet | |||||
| ž Zet | |||||
| // character names | |||||
| _cap vel^ke: | |||||
| _?? simbol | |||||
| _#9 tab | |||||
| _#32 'medzeRa | |||||
| _?A znak | |||||
| _! vi:kRitSn^i:k | |||||
| _" u:vodzovki | |||||
| _# kRi:Zik | |||||
| _$ dola:R | |||||
| _& ampeRsand | |||||
| _' apostRof | |||||
| _( za:tvoRka | |||||
| _) zatvoRit; | |||||
| _* hviezda | |||||
| + plus | |||||
| _, tSiaRka | |||||
| _- pomltSka | |||||
| _. bodka | |||||
| _/ lomeno | |||||
| _: dvojbodka | |||||
| _; bodkotSiaRka | |||||
| _< menSi: | |||||
| _= Rovna:sa | |||||
| _> vetSSi: | |||||
| _? ota:zn^ik | |||||
| _@ zavin:atS | |||||
| _[ hRanata:||za:tvoRka | |||||
| _\ opatSne:||lomeno | |||||
| _] hRanata:||zatvoRit; | |||||
| _^ stRieZka | |||||
| _` aktsent | |||||
| _{ zloZena:||za:tvoRka | |||||
| _| zvisla:||tSiaRa | |||||
| _} zloZena:||zatvoRit; | |||||
| _~ vlnovka | |||||
| € euRo | |||||
| // Numbers | // Numbers | ||||
| _0 n'ula | _0 n'ula | ||||
| _1 j'ed;en | |||||
| _1 j'eden | |||||
| _2 dv'a | _2 dv'a | ||||
| _3 t'@-*i | _3 t'@-*i | ||||
| _4 St'i*i | _4 St'i*i | ||||
| _8 'osem | _8 'osem | ||||
| _9 d;'ev&t; | _9 d;'ev&t; | ||||
| _10 d;'esat; | _10 d;'esat; | ||||
| _11 j'ed;ena:st; | |||||
| _11 j'edena:st; | |||||
| _12 dv'ana:st; | _12 dv'ana:st; | ||||
| _13 t@-*'ina:st; | _13 t@-*'ina:st; | ||||
| _14 Str-n'a:st; | _14 Str-n'a:st; | ||||
| _1M1 t;'isi:ts | _1M1 t;'isi:ts | ||||
| _2M1 dv'et;'isi:ts | _2M1 dv'et;'isi:ts | ||||
| _0M2 m'ilio:n | _0M2 m'ilio:n | ||||
| _0M3 m'iljarda | |||||
| _0M3 m'iljaRda | |||||
| _dpt _:tSj,arka_ | _dpt _:tSj,arka_ | ||||
| .group | .group | ||||
| ě e | ě e | ||||
| ů u: // czech | ů u: // czech | ||||
| $ dola:r | |||||
| % pertsento | |||||
| + plus | |||||
| $ dola:R | |||||
| % peRtsento | |||||
| D_) % peRtsent | |||||
| 45 phoneme tables | |||||
| 46 phoneme tables | |||||
| new total | new total | ||||
| base 98 98 | base 98 98 | ||||
| base2 24 117 | base2 24 117 | ||||
| eo 13 110 | eo 13 110 | ||||
| jbo 4 111 | jbo 4 111 | ||||
| fi 40 129 | fi 40 129 | ||||
| fr 38 122 | |||||
| fr 42 122 | |||||
| fr_ca 11 122 | fr_ca 11 122 | ||||
| hi 50 134 | hi 50 134 | ||||
| ta 15 136 | ta 15 136 | ||||
| sw 14 107 | sw 14 107 | ||||
| th 50 141 | th 50 141 | ||||
| id 14 119 | id 14 119 | ||||
| ja 7 103 | |||||
| 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] fr | |||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [d] hu | [d] hu | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] fr | |||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [d] hu | [d] hu | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] fr | |||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [d] hu | [d] hu | ||||
| [d] sw | [d] sw | ||||
| d/tap [*;] ro | d/tap [*;] ro | ||||
| d/tap1 [*] base | d/tap1 [*] base | ||||
| d/tap2 [t#] en_us | |||||
| d/tap3 [*] base | d/tap3 [*] base | ||||
| d/tap4 [r] es | d/tap4 [r] es | ||||
| d/tap_i [*;] ro | d/tap_i [*;] ro | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] fr | |||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [d] hu | [d] hu | ||||
| [d] sw | [d] sw | ||||
| d/xd_pzd [d;] pl | d/xd_pzd [d;] pl | ||||
| [d;] ru | [d;] ru | ||||
| d/x_tap [t#] en_us | |||||
| dzh/dzh [dZ] base | dzh/dzh [dZ] base | ||||
| [dZ;] base | [dZ;] base | ||||
| [dz;] base | [dz;] base | ||||
| envelope/p_level [1] vi | envelope/p_level [1] vi | ||||
| [3] zhy | [3] zhy | ||||
| [6] zhy | [6] zhy | ||||
| [44] zh | |||||
| [55] zh | [55] zh | ||||
| envelope/p_rise [3] vi | envelope/p_rise [3] vi | ||||
| [2] zhy | [2] zhy | ||||
| [5] zhy | [5] zhy | ||||
| [44] zh | |||||
| [35] zh | [35] zh | ||||
| [4] th | [4] th | ||||
| envelope/vi_5 [5] vi | envelope/vi_5 [5] vi | ||||
| [g] hi | [g] hi | ||||
| g/g [g] base | g/g [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | |||||
| [g] hi | [g] hi | ||||
| [g] es | [g] es | ||||
| g/g_ [g] base | g/g_ [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | |||||
| [g] hi | [g] hi | ||||
| [g] es | [g] es | ||||
| g/xg [g] base | g/xg [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | |||||
| [g] es | [g] es | ||||
| h/h_ [h] base | h/h_ [h] base | ||||
| [h] fi | [h] fi | ||||
| [l] en_wi | [l] en_wi | ||||
| [l] af | [l] af | ||||
| [l/] de | [l/] de | ||||
| [l] fr | |||||
| [l] hu | [l] hu | ||||
| [l] sk | [l] sk | ||||
| [l] ru | [l] ru | ||||
| [l] en | [l] en | ||||
| [l] en_wi | [l] en_wi | ||||
| [l] af | [l] af | ||||
| [l] fr | |||||
| [l] hu | [l] hu | ||||
| [l] sk | [l] sk | ||||
| [l] ru | [l] ru | ||||
| ufric/ll [L] base | ufric/ll [L] base | ||||
| [l#] is | [l#] is | ||||
| ufric/s [s] base | ufric/s [s] base | ||||
| [s] fr | |||||
| [s] es | [s] es | ||||
| [s#] pt | [s#] pt | ||||
| ufric/s_ [s] base | ufric/s_ [s] base | ||||
| [z] base | [z] base | ||||
| [s2] fi | [s2] fi | ||||
| [s] fr | |||||
| [z] fr | |||||
| [z2] fr | [z2] fr | ||||
| [z3] fr | [z3] fr | ||||
| [s2] hu | [s2] hu | ||||
| [z;] ro | [z;] ro | ||||
| ufric/s! [s] base | ufric/s! [s] base | ||||
| [s2] fi | [s2] fi | ||||
| [s] fr | |||||
| [s2] hu | [s2] hu | ||||
| [s] es | [s] es | ||||
| [s#] pt | [s#] pt | ||||
| ufric/s_continue [s2] fi | ufric/s_continue [s2] fi | ||||
| [s2] hu | [s2] hu | ||||
| ufric/sh [S] base | ufric/sh [S] base | ||||
| [S] fr | |||||
| [s#] pt_pt | [s#] pt_pt | ||||
| ufric/sh_ [S] base | ufric/sh_ [S] base | ||||
| [S] fr | |||||
| [s#] pt_pt | [s#] pt_pt | ||||
| ufric/sh_pzd [S;] base | ufric/sh_pzd [S;] base | ||||
| [S;] ro | [S;] ro | ||||
| ustop/tr [t] base | ustop/tr [t] base | ||||
| [t[] base | [t[] base | ||||
| [t2] en | [t2] en | ||||
| [t] fr | |||||
| [t.h] hi | [t.h] hi | ||||
| [t] ru | [t] ru | ||||
| ustop/ts [ts] base2 | ustop/ts [ts] base2 | ||||
| [eoi] zhy | [eoi] zhy | ||||
| vdiph/y#y_3 [Y:] nl | vdiph/y#y_3 [Y:] nl | ||||
| vnasal/aa_n [A~] en | vnasal/aa_n [A~] en | ||||
| vnasal/aa_n2 [A~] fr | |||||
| vnasal/aa_n3 [A~] af | vnasal/aa_n3 [A~] af | ||||
| [A~] fr | |||||
| vnasal/a#_n [&~] pt | vnasal/a#_n [&~] pt | ||||
| vnasal/a#u_n [&U~] pt | vnasal/a#u_n [&U~] pt | ||||
| [&U~] pt_pt | [&U~] pt_pt | ||||
| [v;] ro | [v;] ro | ||||
| [v] is | [v] is | ||||
| voc/vj [v] base | voc/vj [v] base | ||||
| [v] fr | |||||
| vocw/dh [D] base | vocw/dh [D] base | ||||
| [D] es | [D] es | ||||
| vocw/Q [Q] base | vocw/Q [Q] base | ||||
| [Z;] ro | [Z;] ro | ||||
| vocw/zh_rfx [z.] base | vocw/zh_rfx [z.] base | ||||
| voc/z [z] base | voc/z [z] base | ||||
| [z] fr | |||||
| [z2] fr | [z2] fr | ||||
| [z3] fr | [z3] fr | ||||
| [z;] ro | [z;] ro | ||||
| voc/z_ [z] base | voc/z_ [z] base | ||||
| [z] fr | |||||
| [z2] fr | [z2] fr | ||||
| [z3] fr | [z3] fr | ||||
| [z;] ro | [z;] ro | ||||
| [@4] hi | [@4] hi | ||||
| [@] th | [@] th | ||||
| vowel/@- [@-] base | vowel/@- [@-] base | ||||
| [@-] fr | |||||
| [r*] hr | [r*] hr | ||||
| vowel/& [a] en_rp | vowel/& [a] en_rp | ||||
| [&] fi | [&] fi | ||||
| vowel/0_3 [O] en_sc | vowel/0_3 [O] en_sc | ||||
| [0] en_rp | [0] en_rp | ||||
| [A] hu | [A] hu | ||||
| vowel/@_2 [@] fr | |||||
| [W] fr | |||||
| vowel/@_2 [W] fr | |||||
| vowel/@_3 [@] en_sc | vowel/@_3 [@] en_sc | ||||
| [I] en_sc | [I] en_sc | ||||
| [@2] en_sc | [@2] en_sc | ||||
| [a] th | [a] th | ||||
| [a:] th | [a:] th | ||||
| [a] id | [a] id | ||||
| [a] ja | |||||
| vowel/a# [a/] base2 | vowel/a# [a/] base2 | ||||
| [a2] en_sc | [a2] en_sc | ||||
| [a2] en_wi | [a2] en_wi | ||||
| [E] is | [E] is | ||||
| [E] id | [E] id | ||||
| [E2] id | [E2] id | ||||
| [e] ja | |||||
| vowel/e_mid2 [E] af | vowel/e_mid2 [E] af | ||||
| [E] de | [E] de | ||||
| [E2] de | [E2] de | ||||
| vowel/@_fnt [@] en_wi | vowel/@_fnt [@] en_wi | ||||
| [@2] en_wi | [@2] en_wi | ||||
| [@2] hr | [@2] hr | ||||
| vowel/@_fr [@] fr | |||||
| vowel/@_hgh [@] hr | vowel/@_hgh [@] hr | ||||
| vowel/i [i] base2 | vowel/i [i] base2 | ||||
| [i:] en_n | [i:] en_n | ||||
| [i] sw | [i] sw | ||||
| [i] th | [i] th | ||||
| [i:] th | [i:] th | ||||
| [i] ja | |||||
| vowel/i# [i] en_us | vowel/i# [i] en_us | ||||
| [i] en_rp | [i] en_rp | ||||
| [y:] cy | [y:] cy | ||||
| [O] th | [O] th | ||||
| [O:] th | [O:] th | ||||
| [O] id | [O] id | ||||
| [o] ja | |||||
| vowel/oo_1 [O:] en_n | vowel/oo_1 [O:] en_n | ||||
| [O:] en_rp | [O:] en_rp | ||||
| [O@] en_rp | [O@] en_rp | ||||
| vowel/u# [u-] en | vowel/u# [u-] en | ||||
| [u:] en_sc | [u:] en_sc | ||||
| vowel/u_2 [u1] fi | vowel/u_2 [u1] fi | ||||
| [u] fr | |||||
| [u] sk | [u] sk | ||||
| [U] hr | [U] hr | ||||
| [u] ro | [u] ro | ||||
| vowel/u#_4 [U] en_sc | vowel/u#_4 [U] en_sc | ||||
| [u:] en_sc | [u:] en_sc | ||||
| vowel/u_5 [u] sw | vowel/u_5 [u] sw | ||||
| vowel/u#_5 [u:] en_us | |||||
| vowel/u_6 [U] pt_pt | vowel/u_6 [U] pt_pt | ||||
| [u] pt_pt | [u] pt_pt | ||||
| vowel/u#_6 [u:] en_us | |||||
| vowel/u_7 [u] vi | vowel/u_7 [u] vi | ||||
| vowel/u_bck [u] base2 | vowel/u_bck [u] base2 | ||||
| [U] cy | [U] cy | ||||
| [u] fi | [u] fi | ||||
| [u] fr | |||||
| [u] fr_ca | [u] fr_ca | ||||
| [u:] hi | [u:] hi | ||||
| [u:] hu | [u:] hu | ||||
| [U] pt | [U] pt | ||||
| [U] no | [U] no | ||||
| [u] zhy | [u] zhy | ||||
| vowel/u_unr [u] ja | |||||
| vowel/V [3] en_sc | vowel/V [3] en_sc | ||||
| vowel/V_2 [V] en | vowel/V_2 [V] en | ||||
| [a] af | [a] af | ||||
| x/b_ [b] base | x/b_ [b] base | ||||
| x/d [d] base | x/d [d] base | ||||
| [t#] en_us | [t#] en_us | ||||
| [d] fr | |||||
| [d.] hi | [d.] hi | ||||
| [d] hr | [d] hr | ||||
| [d] el | [d] el | ||||
| [d[] base | [d[] base | ||||
| [d] base2 | [d] base2 | ||||
| [d] fi | [d] fi | ||||
| [d] fr | |||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [d] pl | [d] pl | ||||
| x/dz_pzd_ [J2] hi | x/dz_pzd_ [J2] hi | ||||
| x/g_ [g] base | x/g_ [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | |||||
| [g] es | [g] es | ||||
| [g] is | [g] is | ||||
| x/g2 [g] base | x/g2 [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | |||||
| [g] hi | [g] hi | ||||
| [g] es | [g] es | ||||
| [g] is | [g] is |
| phoneme a | phoneme a | ||||
| vowel starttype (a) endtype (@) | vowel starttype (a) endtype (@) | ||||
| length 200 | |||||
| length 210 | |||||
| formants vwl_en_us/a | formants vwl_en_us/a | ||||
| reduceto a2 0 | reduceto a2 0 | ||||
| endphoneme | endphoneme | ||||
| phoneme E | phoneme E | ||||
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 180 | |||||
| length 185 | |||||
| // formants vowel/ee_2 | // formants vowel/ee_2 | ||||
| formants vwl_en_us/ee | formants vwl_en_us/ee | ||||
| reduceto I 0 | reduceto I 0 | ||||
| phoneme o@ | phoneme o@ | ||||
| vowel starttype (o) endtype (@) | vowel starttype (o) endtype (@) | ||||
| length 260 | |||||
| length 250 | |||||
| formants vwl_en_us/or | formants vwl_en_us/or | ||||
| appendph r | appendph r | ||||
| endphoneme | endphoneme | ||||
| phoneme u: | phoneme u: | ||||
| vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
| length 170 | length 170 | ||||
| formants vowel/u#_5 | |||||
| // before l/2 vwl_en/u_L-40+l/L2_uL | |||||
| formants vowel/u#_6 | |||||
| // formants vowel/u#_5 | |||||
| endphoneme | endphoneme | ||||
| phoneme i@3 | phoneme i@3 | ||||
| vowel starttype (i) endtype (@) | vowel starttype (i) endtype (@) | ||||
| length 260 | |||||
| length 250 | |||||
| formants vwl_en_us/ir | formants vwl_en_us/ir | ||||
| appendph r | appendph r | ||||
| endphoneme | endphoneme | ||||
| phoneme t# // reduced [t] as in "city" | phoneme t# // reduced [t] as in "city" | ||||
| vls alv stop | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| lengthmod 5 | |||||
| wave x/d%70 | |||||
| vcd alv stop | |||||
| vowelin f1=1 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||||
| formants d/tap2+x/d%70 | |||||
| after @ d/x_tap | |||||
| lengthmod 2 | |||||
| endphoneme | endphoneme | ||||
| vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
| unstressed | unstressed | ||||
| length 170 | length 170 | ||||
| formants vowel/@_2 | |||||
| endphoneme | |||||
| phoneme @- // very short schwa | |||||
| vowel nonsyllabic | |||||
| starttype (@) endtype (@) | |||||
| formants vowel/@- | |||||
| unstressed | |||||
| length 20 | |||||
| formants vowel/@_fr | |||||
| endphoneme | endphoneme | ||||
| phoneme u | phoneme u | ||||
| vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
| length 170 | |||||
| formants vowel/u_2 | |||||
| length 160 | |||||
| formants vowel/u_bck | |||||
| endphoneme | endphoneme | ||||
| phoneme w | phoneme w | ||||
| liquid | liquid | ||||
| length 130 | |||||
| unstressed | |||||
| length 100 | |||||
| beforenotvowel w/ | beforenotvowel w/ | ||||
| lengthmod 7 | lengthmod 7 | ||||
| formants w/w | formants w/w | ||||
| phoneme A~ | phoneme A~ | ||||
| vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
| length 180 | length 180 | ||||
| formants vnasal/aa_n3 | |||||
| formants vnasal/aa_n2 | |||||
| endphoneme | endphoneme | ||||
| //=========== | //=========== | ||||
| // uses the consonants in file "phonemes", unless overridden here | // uses the consonants in file "phonemes", unless overridden here | ||||
| phoneme b | |||||
| vcd blb stop | |||||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk | |||||
| formants b/b+x/b%45 | |||||
| before _ b/b_+x/b%45 | |||||
| before (a) b/ba+x/b%45 | |||||
| before (@) b/b@+x/b%45 | |||||
| before (e) b/be+x/b%45 | |||||
| before (i) b/bi+x/b%45 | |||||
| before (o) b/bo+x/b%45 | |||||
| before (u) b/bu+x/b%45 | |||||
| before @- b/b@2+x/b%45 | |||||
| after _ NULL | |||||
| after @ b/xb%45 | |||||
| lengthmod 5 | |||||
| switchvoicing p | |||||
| endphoneme | |||||
| phoneme d | |||||
| vcd alv stop | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| formants d/d%30+x/d%30 | |||||
| before _ d/d_%30+x/d_%30 | |||||
| before r d/dr%60+x/d%60 | |||||
| after _ NULL | |||||
| after @ d/xd%40 | |||||
| lengthmod 5 | |||||
| switchvoicing t | |||||
| endphoneme | |||||
| phoneme g | |||||
| vcd vel stop | |||||
| vowelin f1=2 f2=2300 200 300 f3=-300 80 | |||||
| vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| formants g/g%30+x/g2%30 | |||||
| before _ g/g_+x/g_ | |||||
| after _ NULL | |||||
| after @ g/xg%30 | |||||
| lengthmod 5 | |||||
| switchvoicing k | |||||
| endphoneme | |||||
| phoneme k | |||||
| vls vel stop | |||||
| vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/k%45 // reduce strength of noise burst | |||||
| before _ ustop/k_%45 | |||||
| before r ustop/kr%45 | |||||
| before l ustop/kl%45 | |||||
| before (i) ustop/ki%45 | |||||
| switchvoicing g | |||||
| endphoneme | |||||
| phoneme l | phoneme l | ||||
| liquid | liquid | ||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| // beforenotvowel l/ | // beforenotvowel l/ | ||||
| formants l/l | formants l/l | ||||
| // after _ l/_l | |||||
| // after t l/tl | |||||
| after _ l/_l | |||||
| after t l/tl | |||||
| after l/ l/l_long // double l, make it longer | after l/ l/l_long // double l, make it longer | ||||
| before (a) l/la | before (a) l/la | ||||
| before (e) l/le | before (e) l/le | ||||
| endphoneme | endphoneme | ||||
| phoneme p | |||||
| vls blb stop | |||||
| vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||||
| vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||||
| lengthmod 2 | |||||
| wave ustop/p%45 | |||||
| before _ ustop/p_%45 | |||||
| before r ustop/pr%45 | |||||
| before R ustop/pr%45 | |||||
| before @- ustop/p_unasp%45 | |||||
| before l ustop/pl%45 | |||||
| switchvoicing b | |||||
| endphoneme | |||||
| phoneme r | phoneme r | ||||
| vcd uvl frc | vcd uvl frc | ||||
| vowelin f1=0 f2=800 -100 100 f3=-400 100 | vowelin f1=0 f2=800 -100 100 f3=-400 100 | ||||
| vowelout f1=0 f2=800 -100 100 f3=-400 100 len=0 rms=20 | |||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| beforenotvowel r/ | beforenotvowel r/ | ||||
| formants vwl_fr/@R%40 | |||||
| after t r/tr | |||||
| before _ r3/r_ | |||||
| formants vwl_fr/@R%60 | |||||
| after t r/tr%60 | |||||
| before _ r3/r_%60 | |||||
| endphoneme | endphoneme | ||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| beforenotvowel r/ | beforenotvowel r/ | ||||
| formants vwl_fr/@R%40 | |||||
| after r r/rr | |||||
| formants vwl_fr/@R%60 | |||||
| after r r/rr%60 | |||||
| endphoneme | endphoneme | ||||
| vcd uvl frc | vcd uvl frc | ||||
| length 100 | length 100 | ||||
| lengthmod 2 // | lengthmod 2 // | ||||
| formants r3/r_+r3/rx | |||||
| before n r3/r_n+r3/rx | |||||
| formants r3/r_+r3/rx%60 | |||||
| before n r3/r_n+r3/rx%60 | |||||
| endphoneme | |||||
| phoneme s | |||||
| vls alv frc sibilant | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 3 | |||||
| wave ufric/s%45 | |||||
| before _ ufric/s_%45 | |||||
| before p ufric/s!%45 | |||||
| before t ufric/s!%45 | |||||
| before k ufric/s!%45 | |||||
| switchvoicing z | |||||
| endphoneme | |||||
| phoneme S | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=2100 100 300 f3=-100 80 | |||||
| vowelout f1=0 f2=2100 100 300 f3=-100 80 | |||||
| length 100 | |||||
| lengthmod 3 | |||||
| wave ufric/sh%45 | |||||
| before _ ufric/sh_%45 | |||||
| switchvoicing Z | |||||
| endphoneme | endphoneme | ||||
| vowelin f1=0 f2=1700 -100 100 f3=-100 80 | vowelin f1=0 f2=1700 -100 100 f3=-100 80 | ||||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t%50 | |||||
| before _ ustop/t_%40 | |||||
| before @- ustop/t%50 | |||||
| // before r ustop/tr | |||||
| // before R ustop/tr | |||||
| wave ustop/t%30 | |||||
| before _ ustop/t_%30 | |||||
| before @- ustop/t%30 | |||||
| before r ustop/tr%30 | |||||
| before R ustop/tr%30 | |||||
| switchvoicing d | switchvoicing d | ||||
| endphoneme | endphoneme | ||||
| vowelin f1=0 f2=1600 -300 300 f3=-100 80 | vowelin f1=0 f2=1600 -300 300 f3=-100 80 | ||||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t | |||||
| before _ ustop/t_ | |||||
| wave ustop/t%45 | |||||
| before _ ustop/t_%45 | |||||
| endphoneme | |||||
| phoneme v | |||||
| vcd lbd frc | |||||
| vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=10 | |||||
| lengthmod 6 | |||||
| formants voc/v+vocw/v%75 | |||||
| before (r) voc/vj+vocw/v%75 | |||||
| before _ voc/v_+vocw/v%75 | |||||
| switchvoicing f | |||||
| endphoneme | |||||
| phoneme z | |||||
| vcd alv frc sibilant | |||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | |||||
| formants voc/z+ufric/s_%45 | |||||
| before _ voc/z_+ufric/s_%45 | |||||
| lengthmod 6 | |||||
| switchvoicing s | |||||
| endphoneme | endphoneme | ||||
| beforenotvowel NULL | beforenotvowel NULL | ||||
| vcd alv frc sibilant | vcd alv frc sibilant | ||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | ||||
| formants voc/z+ufric/s_ | |||||
| before _ voc/z_+ufric/s_ | |||||
| formants voc/z+ufric/s_%45 | |||||
| before _ voc/z_+ufric/s_%45 | |||||
| lengthmod 6 | lengthmod 6 | ||||
| endphoneme | endphoneme | ||||
| beforenotvowel NULL | beforenotvowel NULL | ||||
| vcd alv frc sibilant | vcd alv frc sibilant | ||||
| vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 | ||||
| formants voc/z+ufric/s_ | |||||
| before _ voc/z_+ufric/s_ | |||||
| lengthmod 6 | |||||
| endphoneme | |||||
| phoneme k | |||||
| vls vel stop | |||||
| vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/k%60 // reduce strength of noise burst | |||||
| before _ ustop/k_ | |||||
| before r ustop/kr | |||||
| before l ustop/kl | |||||
| before (i) ustop/ki | |||||
| switchvoicing g | |||||
| endphoneme | |||||
| phoneme v | |||||
| vcd lbd frc | |||||
| vowelin f1=0 f2=1000 -300 -200 f3=-300 100 | |||||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 | |||||
| formants voc/z+ufric/s_%45 | |||||
| before _ voc/z_+ufric/s_%45 | |||||
| lengthmod 6 | lengthmod 6 | ||||
| formants voc/v+vocw/v | |||||
| before _ voc/v_+vocw/v | |||||
| switchvoicing f | |||||
| endphoneme | |||||
| phoneme p | |||||
| vls blb stop | |||||
| vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||||
| vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||||
| lengthmod 2 | |||||
| wave ustop/p | |||||
| before _ ustop/p_ | |||||
| before r ustop/pr%70 | |||||
| before R ustop/pr | |||||
| before @- ustop/p_unasp | |||||
| before l ustop/pl | |||||
| switchvoicing b | |||||
| endphoneme | |||||
| phoneme b | |||||
| vcd blb stop | |||||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk | |||||
| formants b/b+x/b | |||||
| before _ b/b_+x/b | |||||
| before (a) b/ba+x/b | |||||
| before (@) b/b@+x/b | |||||
| before (e) b/be+x/b | |||||
| before (i) b/bi+x/b | |||||
| before (o) b/bo+x/b | |||||
| before (u) b/bu+x/b | |||||
| before @- b/b@2+x/b | |||||
| after _ NULL | |||||
| after @ b/xb | |||||
| lengthmod 5 | |||||
| switchvoicing p | |||||
| endphoneme | endphoneme | ||||
| phoneme 11 // tone: low level | phoneme 11 // tone: low level | ||||
| stress | stress | ||||
| tone 15 10 envelope/p_fall NULL | |||||
| tone 12 9 envelope/p_fall NULL | |||||
| endphoneme | endphoneme | ||||
| phoneme 21 // tone: low fall | phoneme 21 // tone: low fall | ||||
| phoneme 22 // tone: mid-low level | phoneme 22 // tone: mid-low level | ||||
| stress | stress | ||||
| tone 21 19 envelope/p_fall NULL | |||||
| tone 22 20 envelope/p_fall NULL | |||||
| endphoneme | endphoneme | ||||
| phoneme 33 // tone: mid level | phoneme 33 // tone: mid level | ||||
| stress | stress | ||||
| tone 31 29 envelope/p_fall NULL | |||||
| tone 32 30 envelope/p_fall NULL | |||||
| endphoneme | endphoneme | ||||
| phoneme 35 // tone: mid rise | phoneme 35 // tone: mid rise | ||||
| phoneme 44 // tone: mid-high level | phoneme 44 // tone: mid-high level | ||||
| stress | stress | ||||
| tone 41 39 envelope/p_level NULL | |||||
| tone 38 41 envelope/p_rise NULL | |||||
| endphoneme | endphoneme | ||||
| phoneme 51 // tone: high fall | phoneme 51 // tone: high fall |
| phoneme ** // TEST flap after consonant | phoneme ** // TEST flap after consonant | ||||
| liquid alv | liquid alv | ||||
| vowelout f1=3 f2=1700 -300 300 f3=-300 80 rms=35 len=15 | |||||
| vowelin f1=0 f2=1700 -300 300 f3=-300 80 | |||||
| vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15 | |||||
| vowelin f1=0 f2=1600 -300 300 f3=-300 80 | |||||
| formants r3/@tap+r3/rx | formants r3/@tap+r3/rx | ||||
| vowelin f1=0 f2=1700 -300 300 f3=-400 80 | |||||
| vowelin f1=3 f2=1600 -300 300 f3=-300 80 | |||||
| before (i) r3/@tap_i+r3/rx | before (i) r3/@tap_i+r3/rx | ||||
| before (e) r3/@tap_i+r3/rx | before (e) r3/@tap_i+r3/rx | ||||
| vowelin f1=2 f2=1700 -300 300 f3=-300 80 | |||||
| vowelin f1=2 f2=1600 -300 300 f3=-300 80 | |||||
| before (a) r3/@tap+r3/rx | before (a) r3/@tap+r3/rx | ||||
| endphoneme | endphoneme | ||||
| phonemetable id base2 | phonemetable id base2 | ||||
| include ph_indonesian | include ph_indonesian | ||||
| phonemetable ja base | |||||
| include ph_japanese |
| length = pw[1]; | length = pw[1]; | ||||
| if(size <= (N_HASH_DICT + sizeof(int)*2)) | if(size <= (N_HASH_DICT + sizeof(int)*2)) | ||||
| { | { | ||||
| fprintf(stderr,"Empty dictionary: '%s\n",fname); | |||||
| fprintf(stderr,"Empty _dict file: '%s\n",fname); | |||||
| return(2); | return(2); | ||||
| } | } | ||||
| if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000)) | if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000)) |
| static short oflow[] = {0, 20, 12, 4, 0}; | static short oflow[] = {0, 20, 12, 4, 0}; | ||||
| static short oflow_emf[] = {5, 24, 15, 10, 5}; | static short oflow_emf[] = {5, 24, 15, 10, 5}; | ||||
| static short oflow_less[] = {1, 17, 10, 5, 1}; | |||||
| static short oflow_less[] = {3, 19, 12, 7, 2}; | |||||
| static short oflow_test2[] = {20, 0, 20, 0, 20}; | |||||
| static short back_emf[] = {35, 32, 0}; | static short back_emf[] = {35, 32, 0}; | ||||
| typedef struct { | typedef struct { | ||||
| unsigned char tail_shape; | unsigned char tail_shape; | ||||
| } TONE_TABLE; | } TONE_TABLE; | ||||
| #define N_TONE_TABLE 11 | |||||
| #define N_TONE_TABLE 13 | |||||
| static TONE_TABLE tone_table[N_TONE_TABLE] = { | static TONE_TABLE tone_table[N_TONE_TABLE] = { | ||||
| {PITCHfall, 30, 5, PITCHfall, 30, 8, // 0 statement | {PITCHfall, 30, 5, PITCHfall, 30, 8, // 0 statement | ||||
| 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, | ||||
| {PITCHfall, 28, 6, PITCHfall, 28, 10, // 5 statement, less intonation | |||||
| 20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 12, 6, 0}, | |||||
| {PITCHfall, 28, 5, PITCHfall, 28, 9, // 5 statement, less intonation | |||||
| 20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 12, 7, 0}, | |||||
| {PITCHfrise2, 33,11, PITCHfall, 28,10, // 6 comma, less intonation | |||||
| 20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 9,14, 0}, | |||||
| {PITCHfrise2, 32,8, PITCHfrise2, 28,9, // 6 comma, less intonation | |||||
| 20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 10,16, 0}, | |||||
| {PITCHfrise2, 28, 7, PITCHfall, 28, 12, // 7 comma, less intonation, less rise | |||||
| 20, 25, 30, 22, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0}, | |||||
| {PITCHfrise2, 28, 7, PITCHfall, 29, 14, // 7 comma, less intonation, less rise | |||||
| 20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less, NULL, 14, 8, 0}, | |||||
| {PITCHrise, 30, 20, PITCHfall, 19, 14, // 8 pitch raises at end of sentence | {PITCHrise, 30, 20, PITCHfall, 19, 14, // 8 pitch raises at end of sentence | ||||
| 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 24, 30, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 24, 30, 0}, | ||||
| {PITCHfrise, 39, 15, PITCHfall, 28, 14, // 10 question | {PITCHfrise, 39, 15, PITCHfall, 28, 14, // 10 question | ||||
| 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 20, 36, 0}, | 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 20, 36, 0}, | ||||
| {PITCHfall, 28, 6, PITCHfall, 28, 10, // 11 test | |||||
| 20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less, NULL, 12, 6, 0}, | |||||
| {PITCHfall, 35, 9, PITCHfall, 35, 12, // 12 test | |||||
| 19, 26, 36, 20, drops_0, 2, 4, 5, oflow_test2, NULL, 16, 10, 0}, | |||||
| }; | }; | ||||
| {5,7,1,0,0,4}, | {5,7,1,0,0,4}, | ||||
| {8,9,10,3,0,0}, | {8,9,10,3,0,0}, | ||||
| {8,8,10,3,0,0}, | {8,8,10,3,0,0}, | ||||
| {0,1,2,3,0,4}, | |||||
| {0,1,2,3,0,0} }; | |||||
| {11,11,11,11,0,0}, // 6 test | |||||
| {12,12,12,12,0,0} | |||||
| }; | |||||
| PHONEME_TAB *prev2_tph; // 2 tones previous | PHONEME_TAB *prev2_tph; // 2 tones previous | ||||
| PHONEME_LIST *prev_p; | PHONEME_LIST *prev_p; | ||||
| int pitch_adjust = 10; // pitch gradient through the clause - inital value | |||||
| int pitch_adjust = 0; // pitch gradient through the clause - inital value | |||||
| int pitch_decrement = 0; // decrease by this for each stressed syllable | int pitch_decrement = 0; // decrease by this for each stressed syllable | ||||
| int pitch_low = 10; // until it drops to this | |||||
| int pitch_high = 10; // then reset to this | |||||
| int pitch_low = 0; // until it drops to this | |||||
| int pitch_high = 0; // then reset to this | |||||
| p = &phoneme_list[0]; | p = &phoneme_list[0]; | ||||
| c2 = GetC(); | c2 = GetC(); | ||||
| } | } | ||||
| while(!Eof()) | |||||
| while(!Eof() || (ungot_char != 0)) | |||||
| { | { | ||||
| if(!iswalnum(c1)) | if(!iswalnum(c1)) | ||||
| { | { | ||||
| if((option_ssml) && (phoneme_mode==0)) | if((option_ssml) && (phoneme_mode==0)) | ||||
| { | { | ||||
| if((c1 == '&') && ((c2=='#') || isalpha(c2))) | |||||
| if((c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z')))) | |||||
| { | { | ||||
| n_xml_buf = 0; | n_xml_buf = 0; | ||||
| c1 = c2; | c1 = c2; | ||||
| { | { | ||||
| c1 = j; | c1 = j; | ||||
| } | } | ||||
| else | |||||
| { | |||||
| c1 = '&'; | |||||
| } | |||||
| } | } | ||||
| if((sayas_mode == 0x14) && (c1 <= 0x20)) | if((sayas_mode == 0x14) && (c1 <= 0x20)) | ||||
| { | { |
| int sample_rate_index; // current value | int sample_rate_index; // current value | ||||
| int current_voice_num=0; | int current_voice_num=0; | ||||
| int n_voice_files = 0; | int n_voice_files = 0; | ||||
| int n_voice_variant_files = 0; | |||||
| // output sound buffer, 2 bytes per sample | // output sound buffer, 2 bytes per sample | ||||
| static unsigned short SoundBuf[4096]; | static unsigned short SoundBuf[4096]; | ||||
| static int more_text=0; | static int more_text=0; | ||||
| #define N_VOICE_NAMES 60 | #define N_VOICE_NAMES 60 | ||||
| static char *voice_names[40]; | |||||
| #define N_VOICE_VARIANT_NAMES 30 | |||||
| static char *voice_names[N_VOICE_NAMES]; | |||||
| static char *voice_variant_names[N_VOICE_VARIANT_NAMES]; | |||||
| #define N_STATIC_BUF 8000 | #define N_STATIC_BUF 8000 | ||||
| static char static_buf[N_STATIC_BUF]; | static char static_buf[N_STATIC_BUF]; | ||||
| "--punct=\"<characters>\"\n" | "--punct=\"<characters>\"\n" | ||||
| "\t Speak the names of punctuation characters during speaking. If\n" | "\t Speak the names of punctuation characters during speaking. If\n" | ||||
| "\t =<characters> is omitted, all punctuation is spoken.\n" | "\t =<characters> is omitted, all punctuation is spoken.\n" | ||||
| //"--voices=<langauge>\n" | |||||
| //"\t List the available voices for the specified language.\n" | |||||
| //"\t If <language> is omitted, then list all voices.\n" | |||||
| "--voices=<langauge>\n" | |||||
| "\t List the available voices for the specified language.\n" | |||||
| "\t If <language> is omitted, then list all voices.\n" | |||||
| "-k <integer>\n" | "-k <integer>\n" | ||||
| "\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | "\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | ||||
| "\t higher values = a pitch increase (try -k20).\n"; | "\t higher values = a pitch increase (try -k20).\n"; | ||||
| void ReadVoiceNames2(char *directory) | void ReadVoiceNames2(char *directory) | ||||
| {//================================== | {//================================== | ||||
| int len; | int len; | ||||
| int path_len; | |||||
| int *type; | int *type; | ||||
| char *p; | char *p; | ||||
| _kernel_swi_regs regs; | _kernel_swi_regs regs; | ||||
| regs.r[5] = sizeof(buf); | regs.r[5] = sizeof(buf); | ||||
| regs.r[6] = 0; | regs.r[6] = 0; | ||||
| path_len = strlen(directory); | |||||
| while(regs.r[3] > 0) | while(regs.r[3] > 0) | ||||
| { | { | ||||
| error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| p = Alloc(len+1); | |||||
| p = (char *)malloc(len+1); | |||||
| strcpy(p,&buf[20]); | strcpy(p,&buf[20]); | ||||
| voice_names[n_voice_files++] = p; | |||||
| if(n_voice_files >= (N_VOICE_NAMES-1)) | |||||
| break; | |||||
| if(strcmp(&directory[path_len-3],".!v")==0) | |||||
| { | |||||
| if(n_voice_variant_files >= (N_VOICE_VARIANT_NAMES-1)) | |||||
| continue; | |||||
| voice_variant_names[n_voice_variant_files++] = p; | |||||
| } | |||||
| else | |||||
| { | |||||
| if(n_voice_files >= (N_VOICE_NAMES-1)) | |||||
| continue; | |||||
| voice_names[n_voice_files++] = p; | |||||
| if(strcmp(p,"en")==0) | |||||
| { | |||||
| voice_names[n_voice_files++] = "en+f2"; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| {//=================== | {//=================== | ||||
| char directory[sizeof(path_home)+10]; | char directory[sizeof(path_home)+10]; | ||||
| for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++) | |||||
| voice_names[n_voice_files] = NULL; | |||||
| n_voice_files = 0; | n_voice_files = 0; | ||||
| n_voice_variant_files = 0; | |||||
| sprintf(directory,"%s.voices",path_home); | sprintf(directory,"%s.voices",path_home); | ||||
| ReadVoiceNames2(directory); | ReadVoiceNames2(directory); | ||||
| voice_names[n_voice_files] = NULL; | |||||
| voice_variant_names[n_voice_variant_files] = NULL; | |||||
| } | } | ||||
| void jsd_swi_functions(int *r) | void jsd_swi_functions(int *r) | ||||
| /****************************/ | /****************************/ | ||||
| { | { | ||||
| espeak_VOICE voice_select; | |||||
| switch(r[0]) | switch(r[0]) | ||||
| { | { | ||||
| case 0: /* major version */ | case 0: /* major version */ | ||||
| r[0] = 3; | |||||
| r[0] = 4; | |||||
| r[1] = 331; | |||||
| break; | break; | ||||
| case 1: /* register user */ | case 1: /* register user */ | ||||
| case 5: /* get table of voice names */ | case 5: /* get table of voice names */ | ||||
| r[0] = (int)voice_names; | r[0] = (int)voice_names; | ||||
| r[1] = (int)voice_variant_names; | |||||
| break; | break; | ||||
| case 6: /* update voice data, r1 = voice_number */ | case 6: /* update voice data, r1 = voice_number */ | ||||
| // init_voice((char *)r[1]); | // init_voice((char *)r[1]); | ||||
| break; | break; | ||||
| case 8: | |||||
| // list voices, r[1] contains optional language name (or "variant") | |||||
| voice_select.languages = (char *)r[1]; | |||||
| voice_select.age = 0; | |||||
| voice_select.gender = 0; | |||||
| voice_select.name = NULL; | |||||
| r[0] = (int)espeak_ListVoices(&voice_select); | |||||
| break; | |||||
| default: | default: | ||||
| r[0] = 0; | r[0] = 0; | ||||
| r[1] = 0; | r[1] = 0; | ||||
| void DisplayVoices(FILE *f_out, char *language) | |||||
| {//============================================ | |||||
| int ix; | |||||
| const char *p; | |||||
| int len; | |||||
| int count; | |||||
| int scores = 0; | |||||
| const espeak_VOICE *v; | |||||
| const char *lang_name; | |||||
| char age_buf[12]; | |||||
| const espeak_VOICE **voices; | |||||
| espeak_VOICE voice_select; | |||||
| static char genders[4] = {' ','M','F',' '}; | |||||
| if(language[0] == '=') | |||||
| { | |||||
| // display only voices for the specified language, in order of priority | |||||
| voice_select.languages = &language[1]; | |||||
| voice_select.age = 0; | |||||
| voice_select.gender = 0; | |||||
| voice_select.name = NULL; | |||||
| voices = espeak_ListVoices(&voice_select); | |||||
| scores = 1; | |||||
| } | |||||
| else | |||||
| { | |||||
| voices = espeak_ListVoices(NULL); | |||||
| } | |||||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); | |||||
| for(ix=0; (v = voices[ix]) != NULL; ix++) | |||||
| { | |||||
| count = 0; | |||||
| p = v->languages; | |||||
| while(*p != 0) | |||||
| { | |||||
| len = strlen(p+1); | |||||
| lang_name = p+1; | |||||
| if(v->age == 0) | |||||
| strcpy(age_buf," "); | |||||
| else | |||||
| sprintf(age_buf,"%3d",v->age); | |||||
| if(count==0) | |||||
| { | |||||
| fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", | |||||
| p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); | |||||
| } | |||||
| else | |||||
| { | |||||
| fprintf(f_out,"(%s %d)",lang_name,p[0]); | |||||
| } | |||||
| count++; | |||||
| p += len+2; | |||||
| } | |||||
| // if(scores) | |||||
| // fprintf(f_out,"%3d ",v->score); | |||||
| fputc('\n',f_out); | |||||
| } | |||||
| } // end of DisplayVoices | |||||
| char *param_string(char **argp) | char *param_string(char **argp) | ||||
| {//============================ | {//============================ | ||||
| char *p; | char *p; | ||||
| return; | return; | ||||
| } | } | ||||
| else | else | ||||
| if(memcmp(command,"voices",6)==0) | |||||
| { | |||||
| DisplayVoices(stdout,&command[6]); | |||||
| return; | |||||
| } | |||||
| else | |||||
| if(strcmp(command,"help")==0) | if(strcmp(command,"help")==0) | ||||
| { | { | ||||
| printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.31.01 23.Jan.08"; | |||||
| const char *version_string = "1.31.03 26.Jan.08"; | |||||
| const int version_phdata = 0x013100; | const int version_phdata = 0x013100; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| case L('f','r'): // french | case L('f','r'): // french | ||||
| { | { | ||||
| static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 235}; | static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 235}; | ||||
| static const unsigned char stress_amps_fr[8] = {16,14, 20,20, 20,24, 24,22 }; | |||||
| static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 22,22 }; | |||||
| tr = new Translator(); | tr = new Translator(); | ||||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
| } | } | ||||
| break; | break; | ||||
| case L('j','a'): // TEST | |||||
| tr = new Translator(); | |||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||||
| break; | |||||
| case L_jbo: // Lojban | case L_jbo: // Lojban | ||||
| { | { | ||||
| static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300}; | static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300}; |
| int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer) | int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer) | ||||
| int voicing; // 100% = 64, level of formant-synthesized sound | int voicing; // 100% = 64, level of formant-synthesized sound | ||||
| int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths) | int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths) | ||||
| int consonant_amp; // amplitude of unvoiced consonants | |||||
| int consonant_ampv; // amplitude of the noise component of voiced consonants | |||||
| // parameters used by Wavegen | // parameters used by Wavegen | ||||
| short freq[N_PEAKS]; // 100% = 256 | short freq[N_PEAKS]; // 100% = 256 |
| #ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
| #include "windows.h" | #include "windows.h" | ||||
| #else | #else | ||||
| #ifndef PLATFORM_RISCOS | |||||
| #ifdef PLATFORM_RISCOS | |||||
| #include "kernel.h" | |||||
| #else | |||||
| #include "dirent.h" | #include "dirent.h" | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| // these need a phoneme table to have been specified | // these need a phoneme table to have been specified | ||||
| #define V_REPLACE 28 | #define V_REPLACE 28 | ||||
| #define V_CONSONANTS 29 | |||||
| typedef struct { | typedef struct { | ||||
| {"numbers", V_NUMBERS}, | {"numbers", V_NUMBERS}, | ||||
| {"option", V_OPTION}, | {"option", V_OPTION}, | ||||
| {"mbrola", V_MBROLA}, | {"mbrola", V_MBROLA}, | ||||
| {"consonants", V_CONSONANTS}, | |||||
| // these just set a value in langopts.param[] | // these just set a value in langopts.param[] | ||||
| {"l_dieresis", 0x100+LOPT_DIERESES}, | {"l_dieresis", 0x100+LOPT_DIERESES}, | ||||
| voice->n_harmonic_peaks = 5; | voice->n_harmonic_peaks = 5; | ||||
| voice->peak_shape = 1; | voice->peak_shape = 1; | ||||
| voice->voicing = 64; | voice->voicing = 64; | ||||
| voice->consonant_amp = 100; | |||||
| voice->consonant_ampv = 100; | |||||
| #ifdef PLATFORM_RISCOS | #ifdef PLATFORM_RISCOS | ||||
| voice->roughness = 1; | voice->roughness = 1; | ||||
| #else | #else | ||||
| voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); | voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); | ||||
| break; | break; | ||||
| case V_CONSONANTS: | |||||
| value = sscanf(p,"%d %d",&voice->consonant_amp, &voice->consonant_ampv); | |||||
| break; | |||||
| case V_MBROLA: | case V_MBROLA: | ||||
| { | { | ||||
| int srate = 16000; | int srate = 16000; | ||||
| char *p; | char *p; | ||||
| static char variant_name[20]; | static char variant_name[20]; | ||||
| char variant_prefix[5]; | |||||
| variant_name[0] = 0; | variant_name[0] = 0; | ||||
| sprintf(variant_prefix,"!v%c",PATHSEP); | |||||
| if(vname != NULL) | if(vname != NULL) | ||||
| { | { | ||||
| else | else | ||||
| { | { | ||||
| // voice variant name, not number | // voice variant name, not number | ||||
| strcpy(variant_name,"!v/"); | |||||
| strcpy(variant_name,variant_prefix); | |||||
| strncpy0(&variant_name[3],p,sizeof(variant_name)-3); | strncpy0(&variant_name[3],p,sizeof(variant_name)-3); | ||||
| } | } | ||||
| } | } | ||||
| if(variant_num > 0) | if(variant_num > 0) | ||||
| { | { | ||||
| if(variant_num < 10) | if(variant_num < 10) | ||||
| sprintf(variant_name,"!v/m%d",variant_num); // male | |||||
| sprintf(variant_name,"%sm%d",variant_prefix, variant_num); // male | |||||
| else | else | ||||
| sprintf(variant_name,"!v/f%d",variant_num-10); // female | |||||
| sprintf(variant_name,"%sf%d",variant_prefix, variant_num-10); // female | |||||
| } | } | ||||
| return(variant_name); | return(variant_name); | ||||
| char fname[sizeof(path_home)+100]; | char fname[sizeof(path_home)+100]; | ||||
| #ifdef PLATFORM_RISCOS | #ifdef PLATFORM_RISCOS | ||||
| int len; | |||||
| int *type; | |||||
| char *p; | |||||
| _kernel_swi_regs regs; | |||||
| _kernel_oserror *error; | |||||
| char buf[80]; | |||||
| char directory2[sizeof(path_home)+100]; | |||||
| regs.r[0] = 10; | |||||
| regs.r[1] = (int)path; | |||||
| regs.r[2] = (int)buf; | |||||
| regs.r[3] = 1; | |||||
| regs.r[4] = 0; | |||||
| regs.r[5] = sizeof(buf); | |||||
| regs.r[6] = 0; | |||||
| while(regs.r[3] > 0) | |||||
| { | |||||
| error = _kernel_swi(0x0c+0x20000,®s,®s); /* OS_GBPB 10, read directory entries */ | |||||
| if((error != NULL) || (regs.r[3] == 0)) | |||||
| { | |||||
| break; | |||||
| } | |||||
| type = (int *)(&buf[16]); | |||||
| len = strlen(&buf[20]); | |||||
| sprintf(fname,"%s.%s",path,&buf[20]); | |||||
| if(*type == 2) | |||||
| { | |||||
| // a sub-directory | |||||
| GetVoices(fname); | |||||
| } | |||||
| else | |||||
| { | |||||
| // a regular line, add it to the voices list | |||||
| if((f_voice = fopen(fname,"r")) == NULL) | |||||
| continue; | |||||
| // pass voice file name within the voices directory | |||||
| voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, &buf[20]); | |||||
| fclose(f_voice); | |||||
| if(voice_data != NULL) | |||||
| { | |||||
| voices_list[n_voices_list++] = voice_data; | |||||
| } | |||||
| } | |||||
| } | |||||
| #else | #else | ||||
| #ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
| WIN32_FIND_DATA FindFileData; | WIN32_FIND_DATA FindFileData; |
| for(ix=0; ix<N_EMBEDDED_VALUES; ix++) | for(ix=0; ix<N_EMBEDDED_VALUES; ix++) | ||||
| embedded_value[ix] = embedded_default[ix]; | embedded_value[ix] = embedded_default[ix]; | ||||
| if(rate <= 11000) | |||||
| { | |||||
| // adjust some parameters for telephony with low sample rates | |||||
| consonant_amp = 50; | |||||
| option_harmonic1 = 6; | |||||
| } | |||||
| // set up window to generate a spread of harmonics from a | // set up window to generate a spread of harmonics from a | ||||
| // single peak for HF peaks | // single peak for HF peaks | ||||
| } // end of AdvanceParameters | } // end of AdvanceParameters | ||||
| #ifndef PLATFORM_RISCOS | |||||
| static double resonator(RESONATOR *r, double input) | static double resonator(RESONATOR *r, double input) | ||||
| {//================================================ | {//================================================ | ||||
| double x; | double x; | ||||
| // a = 1.0 - b - c | // a = 1.0 - b - c | ||||
| rp->a = 1.0 - rp->b - rp->c; | rp->a = 1.0 - rp->b - rp->c; | ||||
| } // end if setresonator | } // end if setresonator | ||||
| #endif | |||||
| void InitBreath(void) | void InitBreath(void) | ||||
| {//================== | {//================== | ||||
| #ifndef PLATFORM_RISCOS | |||||
| int ix; | int ix; | ||||
| minus_pi_t = -PI / samplerate; | minus_pi_t = -PI / samplerate; | ||||
| { | { | ||||
| setresonator(&rbreath[ix],2000,200,1); | setresonator(&rbreath[ix],2000,200,1); | ||||
| } | } | ||||
| #endif | |||||
| } // end of InitBreath | } // end of InitBreath | ||||
| void SetBreath() | void SetBreath() | ||||
| {//============= | {//============= | ||||
| #ifndef PLATFORM_RISCOS | |||||
| int pk; | int pk; | ||||
| if(wvoice->breath[0] == 0) | if(wvoice->breath[0] == 0) | ||||
| setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0); | setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0); | ||||
| } | } | ||||
| } | } | ||||
| #endif | |||||
| } // end of SetBreath | } // end of SetBreath | ||||
| int ApplyBreath(void) | int ApplyBreath(void) | ||||
| {//================== | {//================== | ||||
| int value = 0; | |||||
| #ifndef PLATFORM_RISCOS | |||||
| int noise; | int noise; | ||||
| int ix; | int ix; | ||||
| int amp; | int amp; | ||||
| int value = 0; | |||||
| // use two random numbers, for alternate formants | // use two random numbers, for alternate formants | ||||
| noise = (rand() & 0x3fff) - 0x2000; | noise = (rand() & 0x3fff) - 0x2000; | ||||
| value += int(resonator(&rbreath[ix],noise) * amp); | value += int(resonator(&rbreath[ix],noise) * amp); | ||||
| } | } | ||||
| } | } | ||||
| #endif | |||||
| return (value); | return (value); | ||||
| } | } | ||||
| total = (total >> 6) * voicing; | total = (total >> 6) * voicing; | ||||
| } | } | ||||
| #ifndef PLATFORM_RISCOS | |||||
| if(wvoice->breath[0]) | if(wvoice->breath[0]) | ||||
| { | { | ||||
| total += ApplyBreath(); | total += ApplyBreath(); | ||||
| } | } | ||||
| #endif | |||||
| // mix with sampled wave if required | // mix with sampled wave if required | ||||
| z2 = 0; | z2 = 0; | ||||
| else | else | ||||
| pk_shape = pk_shape2; | pk_shape = pk_shape2; | ||||
| consonant_amp = (v->consonant_amp * 26) /100; | |||||
| if(samplerate <= 11000) | |||||
| { | |||||
| consonant_amp = consonant_amp*2; // emphasize consonants at low sample rates | |||||
| option_harmonic1 = 6; | |||||
| } | |||||
| WavegenSetEcho(); | WavegenSetEcho(); | ||||
| } | } | ||||
| amp_inc = (256 * ENV_LEN * STEPSIZE)/length; | amp_inc = (256 * ENV_LEN * STEPSIZE)/length; | ||||
| amplitude = (value * general_amplitude)/16; | amplitude = (value * general_amplitude)/16; | ||||
| amplitude_v = amplitude * 15; // for wave mixed with voiced sounds | |||||
| amplitude_v = (amplitude * wvoice->consonant_ampv * 15)/100; // for wave mixed with voiced sounds | |||||
| amplitude_env = amp_env; | amplitude_env = amp_env; | ||||
| } | } |