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
| @@ -91,10 +91,10 @@ Dictionary es_dict | |||
| @- a aI e E eI eU i | |||
| 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 | |||
| @@ -115,11 +115,10 @@ Dictionary fr_dict | |||
| E~ i i: o O O~ u W | |||
| 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 | |||
| @@ -214,10 +213,10 @@ Dictionary sk_dict | |||
| l- l: o o: oU r- r: 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 | |||
| @@ -387,3 +386,7 @@ O u | |||
| j k l m n N n^ p | |||
| r R s S t tS v w | |||
| x z | |||
| Dictionary ja_dict | |||
| @@ -2567,6 +2567,7 @@ he %hi: $verbsf | |||
| she %Si: $only $verbsf | |||
| it %It $verbsf | |||
| (it has) I2t||h'az $atend | |||
| it $allcaps $abbrev | |||
| we %wi: $verbf $only | |||
| you %ju: $verbf | |||
| they %DeI $verbf | |||
| @@ -3151,7 +3151,7 @@ | |||
| lle (_ l | |||
| @@o) lled (_$3v d | |||
| @@) lled (_$3v d | |||
| B) l (_N @L | |||
| B) l (_ @L | |||
| w) l (_ l | |||
| r) l (_ l | |||
| Al) l (_ | |||
| @@ -4743,8 +4743,10 @@ | |||
| j) une (_ u:n | |||
| l) une (_ u:n | |||
| r) une (_ u:n | |||
| ?3 t) une (_ u:n | |||
| _) una (b ,Vna2 | |||
| t) un (e ju:n | |||
| ?3 t) un (e u:n | |||
| _) un (if ju:n | |||
| un (ani %ju:n | |||
| _) under (@P5 ,Vnd3 // prefix | |||
| @@ -148,7 +148,7 @@ siquiera $pause | |||
| porque $pause // because | |||
| // questions | |||
| que $u+ $pause // what | |||
| que $u $pause // what | |||
| cuál $pause // which | |||
| cuáles $pause | |||
| cómo $pause // how | |||
| @@ -129,7 +129,7 @@ | |||
| _) r (_ E*e | |||
| r R | |||
| _) r R | |||
| A) r (A * | |||
| A) r (A ** | |||
| C) r (A @-* | |||
| rr *R | |||
| @@ -1,10 +1,11 @@ | |||
| // This file in UTF8 encoded | |||
| // 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. | |||
| // | |||
| @@ -173,11 +174,13 @@ _dpt virg'yl | |||
| abc $abbrev | |||
| ac $abbrev | |||
| adsl $abbrev | |||
| alt $pause | |||
| amd $abbrev | |||
| api $abbrev | |||
| avh $abbrev | |||
| cci $abbrev | |||
| cio $abbrev | |||
| ctrl kO~tRol | |||
| ctrl kO~tRol $pause | |||
| dept depaRt@mA~ | |||
| etc etseteRa | |||
| hmm h@m | |||
| @@ -364,23 +367,27 @@ y i:gR'Ek $atend | |||
| // pronunciation exceptions | |||
| consent kO~s'A~t2 | |||
| divers div'Erz2 | |||
| scient si | |||
| 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 evidt2 $verb | |||
| couvent k'uvt2 $verb | |||
| concurrent kO~kyR'A~ | |||
| récurrent RekyR'A~ | |||
| ferment fErm'A~ | |||
| ferment f'Ermt2 $verb | |||
| parent paR'A~ | |||
| 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~ | |||
| serment sErm'A~ | |||
| serpent sErp'A~ | |||
| @@ -405,23 +412,18 @@ accident aksidA~ | |||
| adéquat adekuat2 | |||
| adéquate adekuat | |||
| ardent aRdA~ | |||
| boeufs bY | |||
| bus bys | |||
| choeur kWr | |||
| choeur k@r | |||
| discident disidA~ | |||
| fils fis | |||
| haillon _|ajO~ | |||
| haricot _|aRiko | |||
| imprudent E~pRydA~ | |||
| juin ZwE~ | |||
| juin ZuE~ | |||
| mars maRs | |||
| occident OksidA~ | |||
| oeufs Y | |||
| orient ORjA~ | |||
| pays pEi | |||
| prudent pRydA~ | |||
| secret sYkRE | |||
| secrets sYkREz2 | |||
| souris suri | |||
| @@ -435,9 +437,6 @@ s'y si $verbf | |||
| qu'y ki $verbf | |||
| (sud est) sydEst | |||
| (nord est) nOREst | |||
| cci $abbrev | |||
| nvda $abbrev | |||
| open Op'@n | |||
| potentiomètre pOtA~sjOmEtR@- | |||
| processus pROsEsys | |||
| @@ -462,11 +461,10 @@ out aut | |||
| rut Ryt | |||
| scorbut skORbyt | |||
| scout skut | |||
| scouts skut | |||
| stout staut | |||
| uppercut ypERkyt | |||
| ut yt | |||
| zut syt | |||
| zut zyt | |||
| // et (t is said) | |||
| @@ -509,8 +507,6 @@ flirt fl@Rt | |||
| (sweat shirt) swEtS@Rt | |||
| (tee shirt) tiS@Rt | |||
| parfum paRfW~ | |||
| forum fOROm | |||
| // words from other languages | |||
| amazon amaz'On | |||
| @@ -551,6 +547,7 @@ new nj'u | |||
| news nj'uz | |||
| night najt | |||
| ok oke | |||
| open Op'@n | |||
| outlook autluk | |||
| player plEj'@r | |||
| reader Ri:d@R | |||
| @@ -563,7 +560,7 @@ skype sk'ajp@- | |||
| spybot spajbOt | |||
| sun s@n | |||
| sunlight s@nlajt | |||
| (text aloud) tEkst||@lau-d | |||
| (text aloud) tEkst||@lawd | |||
| thunderbird f@ndERb@Rd | |||
| ubuntu ubuntu | |||
| update @pd'E:jt | |||
| @@ -578,26 +575,23 @@ yacht jot | |||
| // tions (tjO~ instead of sjO~) | |||
| achetions aS@tjO~z2 | |||
| ajoutions aZutjO~z2 | |||
| apportions apORtjO~z2 | |||
| apprêtions apREtjO~z2 | |||
| arrêtions aREtjO~z2 | |||
| chantions SA~tjO~z2 | |||
| citions sitjO~z2 | |||
| comptions kO~tjO~z2 | |||
| constations kO~statjO~z2 | |||
| contentions kO~tA~tjO~z2 | |||
| dations datjO~z2 | |||
| discutions diskytjO~z2 | |||
| doutions dutjO~z2 | |||
| débutions debytjO~z2 | |||
| désertions dezERtjO~z2 | |||
| désertions dezERtjO~z2 $verb | |||
| détentions detA~tjO~z2 | |||
| escomptions EskO~tjO~z2 | |||
| exploitions EksplwatjO~z2 | |||
| exportions EkspORtjO~z2 | |||
| habitions abitjO~z2 | |||
| heurtions @RtjO~z2 | |||
| heurtions _!@RtjO~z2 | |||
| jetions Z@tjO~z2 | |||
| limitions limitjO~z2 | |||
| méritions meRitjO~z2 | |||
| @@ -605,8 +599,7 @@ partions paRtjO~z2 | |||
| pressentions pREsA~tjO~z2 | |||
| présentions pRezA~tjO~z2 | |||
| prêtions pREtjO~z2 | |||
| rations RatjO~z2 | |||
| redoutions R@dutjO~z2 | |||
| rations RatjO~z2 $verb | |||
| représentions R@pRezA~tjO~z2 | |||
| respections REspEktjO~z2 | |||
| ressentions R@sA~tjO~z2 | |||
| @@ -618,7 +611,6 @@ supportions sypORtjO~z2 | |||
| tentions tA~tjO~z2 | |||
| traitions tREtjO~z2 | |||
| votions vOtjO~z2 $u | |||
| écoutions ekutjO~z2 | |||
| étions etjO~z2 | |||
| évitions evitjO~z2 | |||
| @@ -634,3 +626,4 @@ vincent vE~sA~ | |||
| @@ -3,7 +3,7 @@ | |||
| // 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. | |||
| // | |||
| @@ -107,15 +107,14 @@ | |||
| quon) d (_ t2 | |||
| dt (_ t // Schmidt | |||
| _ni) d (_ // nid | |||
| _noeu) d (_ // noeud | |||
| r) d (_ // lourd placard | |||
| d d // don bled | |||
| .group e | |||
| e (Ce_ E | |||
| AC) e (_ @- // e muet | |||
| CC) e (_ @- // e muet | |||
| gu) e (_ @- // e muet | |||
| eau o // bateau cheveaux | |||
| j) e (a // Jean Jeanne | |||
| sp) ea (k i: // speak speaker | |||
| @@ -210,6 +209,7 @@ | |||
| en (s_ A~ | |||
| en (CA A~ // pentathlon | |||
| en (CC A~ // entre | |||
| en (ch_ En // french | |||
| _C) er (_ ER // fer | |||
| _Ch) er (_ ER // cher | |||
| @@ -249,14 +249,15 @@ | |||
| _r) es (A @s // resaisir resaluer | |||
| _r) e (ss @ // ressembler | |||
| _r) e (ssu e // ressusciter | |||
| _r) e (stra @ | |||
| _r) e (stre @ | |||
| _r) e (stro @ | |||
| _r) e (stru @ // restructurer | |||
| -) est (_ Est // -est | |||
| @Cr) es (_C =@ | |||
| rC) es (_C =@ // fortes dames | |||
| @Cr) es (_C @- | |||
| rC) es (_C @- // fortes dames | |||
| ') eu (_ y // eu | |||
| eu (r_ @ // peur | |||
| @@ -282,17 +283,20 @@ | |||
| ez (_ ez2 // nez mangez chez | |||
| _C) e (_ @ // je te | |||
| _CC) e (_ @ | |||
| _CC) e (_ @- | |||
| _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 | |||
| g) e (A // mangeons | |||
| AC) e (ment // vitement sûrement | |||
| AC) e (ment @- // vitement sûrement | |||
| Aqu) e (ment | |||
| enC) e (ment | |||
| enqu) e (ment | |||
| @@ -386,11 +390,13 @@ | |||
| .group h | |||
| _) h (ac _! // hache | |||
| _) h (ai _! // haine haillon | |||
| _) h (al _! // halte | |||
| _) h (amp _! // hampe | |||
| _) h (an _! // hanche | |||
| _) h (app _! // happer | |||
| _) h (arc _! // harceler | |||
| _) h (ari _! // haricot haridelle | |||
| _) h (arna _! // harnais | |||
| _) h (ard _! // hardi | |||
| _) h (arp _! // harpe | |||
| @@ -398,6 +404,7 @@ _) h (au _! // haut | |||
| _) h (av _! // havre | |||
| _) h (ern _! // hernie | |||
| _) h (ers _! // herse | |||
| _) h (eurt _! // heurter | |||
| _) h (ibo _! // hibou | |||
| _) h (ide _! // hideux | |||
| _) h (oll _! // hollandais | |||
| @@ -500,19 +507,22 @@ _) h (utte_ _! // hutte | |||
| cr) oc (_ o // escroc | |||
| o (ch o // cochon | |||
| o (che_ O // poche, cloche | |||
| oe (ll wa // moelleux | |||
| _) oe (C Y // oesophage | |||
| o (eu // soeur oeuf | |||
| oeu @ // soeur coeur | |||
| oeufs @ // oeufs boeufs | |||
| o (eC o // coefficient | |||
| _) oi (gnon O // oignons | |||
| oin (C wE~ | |||
| oin (_ wE~ // coin | |||
| oi wa // poil | |||
| oid (_ wa // froid | |||
| oê (l wE // poêle | |||
| oê (l wa // poêle | |||
| oî wa // boîte | |||
| 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 | |||
| om (b O~ // bombe | |||
| om (p O~ // pompe | |||
| @@ -606,7 +616,6 @@ _) h (utte_ _! // hutte | |||
| _A) qu (a ku // équateur | |||
| qu k // quatre | |||
| _) que (_ k@ // que | |||
| que (_ k@- // puisque banque... | |||
| _) qu' (P3 k // qu'il | |||
| n) q (_ k // cinq cent | |||
| @@ -616,8 +625,6 @@ _) h (utte_ _! // hutte | |||
| _su) rr RR // surréaliste | |||
| cou) rr RR // courrai | |||
| mou) rr RR // mourrai | |||
| rre (_ R@- // barre | |||
| C) re (_ R@- // litre | |||
| rr R // erreur | |||
| r r // rien | |||
| @@ -682,16 +689,11 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe | |||
| Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel | |||
| n) t (_ // silent at end of word | |||
| r) t (_ t2 // fort | |||
| tte (_ t@- // fillette | |||
| C) te (_ t@- // patte | |||
| a) te (_ t@- // tomate | |||
| aul) t (_ // Renault | |||
| tt t // attitude | |||
| tte (_ t@- // fillette | |||
| A) te (_ t@- // tomate | |||
| C) te (_ t@- // pente | |||
| s) th (m // asthme | |||
| th t // théorie | |||
| @@ -712,6 +714,9 @@ C) te (_ t@- // pente | |||
| t (ion s // programmation | |||
| Cisi) t (ion t // visitions | |||
| ci) t (ion t // citions | |||
| ou) t (ion t // ajoutions | |||
| s) t (ion t // gestion | |||
| t) t (ion t // combattions | |||
| @@ -739,13 +744,14 @@ C) te (_ t@- // pente | |||
| u y // cruel nuage brut | |||
| ui w^i | |||
| c) ueill Wj // cueillir | |||
| c) ueil (_ Wj // recueil | |||
| g) ueill Wj // orgueilleux | |||
| g) ueil (_ Wj // orgueil | |||
| c) ueill Wj | |||
| c) ueil (_ Wj | |||
| um (_ Om // album | |||
| f) um (_ W~ // parfum | |||
| um (b W~ // humble | |||
| um (p W~ | |||
| un (C W~ // emprunt lundi | |||
| @@ -763,7 +769,8 @@ C) te (_ t@- // pente | |||
| .group w | |||
| w w | |||
| ware (_ _^_EN // hardware, software | |||
| wa (Ce_ wE // hardware software wave | |||
| w (agon v // wagon | |||
| .group x | |||
| @@ -853,3 +860,4 @@ C) te (_ t@- // pente | |||
| @@ -2,54 +2,94 @@ | |||
| // This file is UTF-8 encoded | |||
| // 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 | |||
| _0 n'ula | |||
| _1 j'ed;en | |||
| _1 j'eden | |||
| _2 dv'a | |||
| _3 t'@-*i | |||
| _4 St'i*i | |||
| @@ -59,7 +99,7 @@ _7 s'ed;em | |||
| _8 'osem | |||
| _9 d;'ev&t; | |||
| _10 d;'esat; | |||
| _11 j'ed;ena:st; | |||
| _11 j'edena:st; | |||
| _12 dv'ana:st; | |||
| _13 t@-*'ina:st; | |||
| _14 Str-n'a:st; | |||
| @@ -82,7 +122,7 @@ _0M1 t;'isi:ts | |||
| _1M1 t;'isi:ts | |||
| _2M1 dv'et;'isi:ts | |||
| _0M2 m'ilio:n | |||
| _0M3 m'iljarda | |||
| _0M3 m'iljaRda | |||
| _dpt _:tSj,arka_ | |||
| @@ -639,7 +639,7 @@ _charak) te (r te | |||
| .group | |||
| ě e | |||
| ů u: // czech | |||
| $ dola:r | |||
| % pertsento | |||
| + plus | |||
| $ dola:R | |||
| % peRtsento | |||
| D_) % peRtsent | |||
| @@ -1,4 +1,4 @@ | |||
| 45 phoneme tables | |||
| 46 phoneme tables | |||
| new total | |||
| base 98 98 | |||
| base2 24 117 | |||
| @@ -15,7 +15,7 @@ | |||
| eo 13 110 | |||
| jbo 4 111 | |||
| fi 40 129 | |||
| fr 38 122 | |||
| fr 42 122 | |||
| fr_ca 11 122 | |||
| hi 50 134 | |||
| ta 15 136 | |||
| @@ -45,6 +45,7 @@ | |||
| sw 14 107 | |||
| th 50 141 | |||
| id 14 119 | |||
| ja 7 103 | |||
| Data file Used by | |||
| b/b [b] base | |||
| @@ -83,6 +84,7 @@ d/d [d] base | |||
| [d[] base | |||
| [d] base2 | |||
| [d] fi | |||
| [d] fr | |||
| [d] hi | |||
| [d.] hi | |||
| [d] hu | |||
| @@ -98,6 +100,7 @@ d/d_ [d] base | |||
| [d[] base | |||
| [d] base2 | |||
| [d] fi | |||
| [d] fr | |||
| [d] hi | |||
| [d.] hi | |||
| [d] hu | |||
| @@ -115,6 +118,7 @@ d/dr [*] base | |||
| [d[] base | |||
| [d] base2 | |||
| [d] fi | |||
| [d] fr | |||
| [d] hi | |||
| [d.] hi | |||
| [d] hu | |||
| @@ -128,6 +132,7 @@ d/dr [*] base | |||
| [d] sw | |||
| d/tap [*;] ro | |||
| d/tap1 [*] base | |||
| d/tap2 [t#] en_us | |||
| d/tap3 [*] base | |||
| d/tap4 [r] es | |||
| d/tap_i [*;] ro | |||
| @@ -135,6 +140,7 @@ d/xd [d] base | |||
| [d[] base | |||
| [d] base2 | |||
| [d] fi | |||
| [d] fr | |||
| [d] hi | |||
| [d.] hi | |||
| [d] hu | |||
| @@ -146,6 +152,7 @@ d/xd [d] base | |||
| [d] sw | |||
| d/xd_pzd [d;] pl | |||
| [d;] ru | |||
| d/x_tap [t#] en_us | |||
| dzh/dzh [dZ] base | |||
| [dZ;] base | |||
| [dz;] base | |||
| @@ -192,11 +199,11 @@ envelope/p_fallrise [4] vi | |||
| envelope/p_level [1] vi | |||
| [3] zhy | |||
| [6] zhy | |||
| [44] zh | |||
| [55] zh | |||
| envelope/p_rise [3] vi | |||
| [2] zhy | |||
| [5] zhy | |||
| [44] zh | |||
| [35] zh | |||
| [4] th | |||
| envelope/vi_5 [5] vi | |||
| @@ -209,14 +216,17 @@ g2/xg [g-] base | |||
| [g] hi | |||
| g/g [g] base | |||
| [g] cy | |||
| [g] fr | |||
| [g] hi | |||
| [g] es | |||
| g/g_ [g] base | |||
| [g] cy | |||
| [g] fr | |||
| [g] hi | |||
| [g] es | |||
| g/xg [g] base | |||
| [g] cy | |||
| [g] fr | |||
| [g] es | |||
| h/h_ [h] base | |||
| [h] fi | |||
| @@ -303,6 +313,7 @@ l/_l [l] base | |||
| [l] en_wi | |||
| [l] af | |||
| [l/] de | |||
| [l] fr | |||
| [l] hu | |||
| [l] sk | |||
| [l] ru | |||
| @@ -353,6 +364,7 @@ l/tl [l] base | |||
| [l] en | |||
| [l] en_wi | |||
| [l] af | |||
| [l] fr | |||
| [l] hu | |||
| [l] sk | |||
| [l] ru | |||
| @@ -551,11 +563,14 @@ ufric/f_ [f] base | |||
| ufric/ll [L] base | |||
| [l#] is | |||
| ufric/s [s] base | |||
| [s] fr | |||
| [s] es | |||
| [s#] pt | |||
| ufric/s_ [s] base | |||
| [z] base | |||
| [s2] fi | |||
| [s] fr | |||
| [z] fr | |||
| [z2] fr | |||
| [z3] fr | |||
| [s2] hu | |||
| @@ -564,14 +579,17 @@ ufric/s_ [s] base | |||
| [z;] ro | |||
| ufric/s! [s] base | |||
| [s2] fi | |||
| [s] fr | |||
| [s2] hu | |||
| [s] es | |||
| [s#] pt | |||
| ufric/s_continue [s2] fi | |||
| [s2] hu | |||
| ufric/sh [S] base | |||
| [S] fr | |||
| [s#] pt_pt | |||
| ufric/sh_ [S] base | |||
| [S] fr | |||
| [s#] pt_pt | |||
| ufric/sh_pzd [S;] base | |||
| [S;] ro | |||
| @@ -753,6 +771,7 @@ ustop/t_pzd [t;] pl | |||
| ustop/tr [t] base | |||
| [t[] base | |||
| [t2] en | |||
| [t] fr | |||
| [t.h] hi | |||
| [t] ru | |||
| ustop/ts [ts] base2 | |||
| @@ -1022,8 +1041,8 @@ vdiph/y#y_2 [Yy] af | |||
| [eoi] zhy | |||
| vdiph/y#y_3 [Y:] nl | |||
| vnasal/aa_n [A~] en | |||
| vnasal/aa_n2 [A~] fr | |||
| vnasal/aa_n3 [A~] af | |||
| [A~] fr | |||
| vnasal/a#_n [&~] pt | |||
| vnasal/a#u_n [&U~] pt | |||
| [&U~] pt_pt | |||
| @@ -1083,6 +1102,7 @@ voc/v_ [B] base | |||
| [v;] ro | |||
| [v] is | |||
| voc/vj [v] base | |||
| [v] fr | |||
| vocw/dh [D] base | |||
| [D] es | |||
| vocw/Q [Q] base | |||
| @@ -1100,10 +1120,12 @@ vocw/zh [Z] base | |||
| [Z;] ro | |||
| vocw/zh_rfx [z.] base | |||
| voc/z [z] base | |||
| [z] fr | |||
| [z2] fr | |||
| [z3] fr | |||
| [z;] ro | |||
| voc/z_ [z] base | |||
| [z] fr | |||
| [z2] fr | |||
| [z3] fr | |||
| [z;] ro | |||
| @@ -1131,7 +1153,6 @@ vowel/@ [@] base | |||
| [@4] hi | |||
| [@] th | |||
| vowel/@- [@-] base | |||
| [@-] fr | |||
| [r*] hr | |||
| vowel/& [a] en_rp | |||
| [&] fi | |||
| @@ -1148,8 +1169,7 @@ vowel/0_2 [0] en_n | |||
| vowel/0_3 [O] en_sc | |||
| [0] en_rp | |||
| [A] hu | |||
| vowel/@_2 [@] fr | |||
| [W] fr | |||
| vowel/@_2 [W] fr | |||
| vowel/@_3 [@] en_sc | |||
| [I] en_sc | |||
| [@2] en_sc | |||
| @@ -1187,6 +1207,7 @@ vowel/a [a] en_n | |||
| [a] th | |||
| [a:] th | |||
| [a] id | |||
| [a] ja | |||
| vowel/a# [a/] base2 | |||
| [a2] en_sc | |||
| [a2] en_wi | |||
| @@ -1341,6 +1362,7 @@ vowel/e_mid [E] en_rp | |||
| [E] is | |||
| [E] id | |||
| [E2] id | |||
| [e] ja | |||
| vowel/e_mid2 [E] af | |||
| [E] de | |||
| [E2] de | |||
| @@ -1354,6 +1376,7 @@ vowel/e_mid2 [E] af | |||
| vowel/@_fnt [@] en_wi | |||
| [@2] en_wi | |||
| [@2] hr | |||
| vowel/@_fr [@] fr | |||
| vowel/@_hgh [@] hr | |||
| vowel/i [i] base2 | |||
| [i:] en_n | |||
| @@ -1377,6 +1400,7 @@ vowel/i [i] base2 | |||
| [i] sw | |||
| [i] th | |||
| [i:] th | |||
| [i] ja | |||
| vowel/i# [i] en_us | |||
| [i] en_rp | |||
| [y:] cy | |||
| @@ -1507,6 +1531,7 @@ vowel/oo [O:] en_sc | |||
| [O] th | |||
| [O:] th | |||
| [O] id | |||
| [o] ja | |||
| vowel/oo_1 [O:] en_n | |||
| [O:] en_rp | |||
| [O@] en_rp | |||
| @@ -1565,7 +1590,6 @@ vowel/u [u:] en_wi | |||
| vowel/u# [u-] en | |||
| [u:] en_sc | |||
| vowel/u_2 [u1] fi | |||
| [u] fr | |||
| [u] sk | |||
| [U] hr | |||
| [u] ro | |||
| @@ -1576,13 +1600,14 @@ vowel/u_4 [u:] en_n | |||
| vowel/u#_4 [U] en_sc | |||
| [u:] en_sc | |||
| vowel/u_5 [u] sw | |||
| vowel/u#_5 [u:] en_us | |||
| vowel/u_6 [U] pt_pt | |||
| [u] pt_pt | |||
| vowel/u#_6 [u:] en_us | |||
| vowel/u_7 [u] vi | |||
| vowel/u_bck [u] base2 | |||
| [U] cy | |||
| [u] fi | |||
| [u] fr | |||
| [u] fr_ca | |||
| [u:] hi | |||
| [u:] hu | |||
| @@ -1615,6 +1640,7 @@ vowel/uu_bck [U] en_n | |||
| [U] pt | |||
| [U] no | |||
| [u] zhy | |||
| vowel/u_unr [u] ja | |||
| vowel/V [3] en_sc | |||
| vowel/V_2 [V] en | |||
| [a] af | |||
| @@ -1824,6 +1850,7 @@ x/b [b] base | |||
| x/b_ [b] base | |||
| x/d [d] base | |||
| [t#] en_us | |||
| [d] fr | |||
| [d.] hi | |||
| [d] hr | |||
| [d] el | |||
| @@ -1832,6 +1859,7 @@ x/d_ [d] base | |||
| [d[] base | |||
| [d] base2 | |||
| [d] fi | |||
| [d] fr | |||
| [d] hi | |||
| [d.] hi | |||
| [d] pl | |||
| @@ -1870,10 +1898,12 @@ x/dz_pzd [dZ;] base | |||
| x/dz_pzd_ [J2] hi | |||
| x/g_ [g] base | |||
| [g] cy | |||
| [g] fr | |||
| [g] es | |||
| [g] is | |||
| x/g2 [g] base | |||
| [g] cy | |||
| [g] fr | |||
| [g] hi | |||
| [g] es | |||
| [g] is | |||
| @@ -27,7 +27,7 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype (a) endtype (@) | |||
| length 200 | |||
| length 210 | |||
| formants vwl_en_us/a | |||
| reduceto a2 0 | |||
| endphoneme | |||
| @@ -52,7 +52,7 @@ endphoneme | |||
| phoneme E | |||
| vowel starttype (e) endtype (e) | |||
| length 180 | |||
| length 185 | |||
| // formants vowel/ee_2 | |||
| formants vwl_en_us/ee | |||
| reduceto I 0 | |||
| @@ -161,7 +161,7 @@ endphoneme | |||
| phoneme o@ | |||
| vowel starttype (o) endtype (@) | |||
| length 260 | |||
| length 250 | |||
| formants vwl_en_us/or | |||
| appendph r | |||
| endphoneme | |||
| @@ -178,8 +178,8 @@ endphoneme | |||
| phoneme u: | |||
| vowel starttype (u) endtype (u) | |||
| 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 | |||
| @@ -228,7 +228,7 @@ endphoneme | |||
| phoneme i@3 | |||
| vowel starttype (i) endtype (@) | |||
| length 260 | |||
| length 250 | |||
| formants vwl_en_us/ir | |||
| appendph r | |||
| endphoneme | |||
| @@ -271,12 +271,11 @@ endphoneme | |||
| 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 | |||
| @@ -13,16 +13,7 @@ phoneme @ | |||
| vowel starttype (@) endtype (@) | |||
| unstressed | |||
| length 170 | |||
| formants vowel/@_2 | |||
| endphoneme | |||
| phoneme @- // very short schwa | |||
| vowel nonsyllabic | |||
| starttype (@) endtype (@) | |||
| formants vowel/@- | |||
| unstressed | |||
| length 20 | |||
| formants vowel/@_fr | |||
| endphoneme | |||
| @@ -80,8 +71,8 @@ endphoneme | |||
| phoneme u | |||
| vowel starttype (u) endtype (u) | |||
| length 170 | |||
| formants vowel/u_2 | |||
| length 160 | |||
| formants vowel/u_bck | |||
| endphoneme | |||
| @@ -101,7 +92,8 @@ endphoneme | |||
| phoneme w | |||
| liquid | |||
| length 130 | |||
| unstressed | |||
| length 100 | |||
| beforenotvowel w/ | |||
| lengthmod 7 | |||
| formants w/w | |||
| @@ -128,7 +120,7 @@ endphoneme | |||
| phoneme A~ | |||
| vowel starttype (a) endtype (a) | |||
| length 180 | |||
| formants vnasal/aa_n3 | |||
| formants vnasal/aa_n2 | |||
| endphoneme | |||
| @@ -194,14 +186,74 @@ endphoneme | |||
| //=========== | |||
| // 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 | |||
| liquid | |||
| length 100 | |||
| lengthmod 7 | |||
| // beforenotvowel 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 | |||
| before (a) l/la | |||
| before (e) l/le | |||
| @@ -213,15 +265,31 @@ phoneme l | |||
| 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 | |||
| vcd uvl frc | |||
| 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 | |||
| lengthmod 7 | |||
| 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 | |||
| @@ -231,8 +299,8 @@ phoneme R | |||
| length 100 | |||
| lengthmod 7 | |||
| beforenotvowel r/ | |||
| formants vwl_fr/@R%40 | |||
| after r r/rr | |||
| formants vwl_fr/@R%60 | |||
| after r r/rr%60 | |||
| endphoneme | |||
| @@ -240,8 +308,34 @@ phoneme r/ // used for [r] when not preceding a vowel | |||
| vcd uvl frc | |||
| length 100 | |||
| 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 | |||
| @@ -250,11 +344,11 @@ phoneme t | |||
| vowelin f1=0 f2=1700 -100 100 f3=-100 80 | |||
| vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| 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 | |||
| endphoneme | |||
| @@ -265,8 +359,30 @@ phoneme t2 // silent unless followed by vowel | |||
| vowelin f1=0 f2=1600 -300 300 f3=-100 80 | |||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||
| 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 | |||
| @@ -274,8 +390,8 @@ phoneme z2 // silent unless followed by vowel | |||
| beforenotvowel NULL | |||
| vcd alv frc sibilant | |||
| 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 | |||
| endphoneme | |||
| @@ -284,68 +400,8 @@ phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else [] | |||
| beforenotvowel NULL | |||
| vcd alv frc sibilant | |||
| 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 | |||
| 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 | |||
| @@ -5,7 +5,7 @@ | |||
| phoneme 11 // tone: low level | |||
| stress | |||
| tone 15 10 envelope/p_fall NULL | |||
| tone 12 9 envelope/p_fall NULL | |||
| endphoneme | |||
| phoneme 21 // tone: low fall | |||
| @@ -20,12 +20,12 @@ endphoneme | |||
| phoneme 22 // tone: mid-low level | |||
| stress | |||
| tone 21 19 envelope/p_fall NULL | |||
| tone 22 20 envelope/p_fall NULL | |||
| endphoneme | |||
| phoneme 33 // tone: mid level | |||
| stress | |||
| tone 31 29 envelope/p_fall NULL | |||
| tone 32 30 envelope/p_fall NULL | |||
| endphoneme | |||
| phoneme 35 // tone: mid rise | |||
| @@ -35,7 +35,7 @@ endphoneme | |||
| phoneme 44 // tone: mid-high level | |||
| stress | |||
| tone 41 39 envelope/p_level NULL | |||
| tone 38 41 envelope/p_rise NULL | |||
| endphoneme | |||
| phoneme 51 // tone: high fall | |||
| @@ -594,13 +594,13 @@ endphoneme | |||
| phoneme ** // TEST flap after consonant | |||
| 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 | |||
| 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 (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 | |||
| endphoneme | |||
| @@ -1270,3 +1270,5 @@ include ph_thai | |||
| phonemetable id base2 | |||
| include ph_indonesian | |||
| phonemetable ja base | |||
| include ph_japanese | |||
| @@ -177,7 +177,7 @@ int Translator::LoadDictionary(const char *name, int no_error) | |||
| length = pw[1]; | |||
| 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); | |||
| } | |||
| if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000)) | |||
| @@ -247,7 +247,8 @@ static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00}; | |||
| static short oflow[] = {0, 20, 12, 4, 0}; | |||
| 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}; | |||
| typedef struct { | |||
| @@ -278,7 +279,7 @@ typedef struct { | |||
| unsigned char tail_shape; | |||
| } TONE_TABLE; | |||
| #define N_TONE_TABLE 11 | |||
| #define N_TONE_TABLE 13 | |||
| static TONE_TABLE tone_table[N_TONE_TABLE] = { | |||
| {PITCHfall, 30, 5, PITCHfall, 30, 8, // 0 statement | |||
| @@ -297,14 +298,14 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = { | |||
| 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 | |||
| 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 24, 30, 0}, | |||
| @@ -315,6 +316,12 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = { | |||
| {PITCHfrise, 39, 15, PITCHfall, 28, 14, // 10 question | |||
| 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}, | |||
| }; | |||
| @@ -327,8 +334,9 @@ unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = { | |||
| {5,7,1,0,0,4}, | |||
| {8,9,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} | |||
| }; | |||
| @@ -738,10 +746,10 @@ void Translator::CalcPitches_Tone(int clause_tone) | |||
| PHONEME_TAB *prev2_tph; // 2 tones previous | |||
| 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_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]; | |||
| @@ -1759,7 +1759,7 @@ f_input = f_in; // for GetC etc | |||
| c2 = GetC(); | |||
| } | |||
| while(!Eof()) | |||
| while(!Eof() || (ungot_char != 0)) | |||
| { | |||
| if(!iswalnum(c1)) | |||
| { | |||
| @@ -1791,7 +1791,7 @@ f_input = f_in; // for GetC etc | |||
| if((option_ssml) && (phoneme_mode==0)) | |||
| { | |||
| if((c1 == '&') && ((c2=='#') || isalpha(c2))) | |||
| if((c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z')))) | |||
| { | |||
| n_xml_buf = 0; | |||
| c1 = c2; | |||
| @@ -1818,6 +1818,10 @@ f_input = f_in; // for GetC etc | |||
| { | |||
| c1 = j; | |||
| } | |||
| else | |||
| { | |||
| c1 = '&'; | |||
| } | |||
| } | |||
| if((sayas_mode == 0x14) && (c1 <= 0x20)) | |||
| { | |||
| @@ -76,6 +76,7 @@ char textbuffile[L_tmpnam]; | |||
| int sample_rate_index; // current value | |||
| int current_voice_num=0; | |||
| int n_voice_files = 0; | |||
| int n_voice_variant_files = 0; | |||
| // output sound buffer, 2 bytes per sample | |||
| static unsigned short SoundBuf[4096]; | |||
| @@ -84,7 +85,9 @@ static int callback_inhibit = 0; | |||
| static int more_text=0; | |||
| #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 | |||
| static char static_buf[N_STATIC_BUF]; | |||
| @@ -127,9 +130,9 @@ static const char *help_text = | |||
| "--punct=\"<characters>\"\n" | |||
| "\t Speak the names of punctuation characters during speaking. If\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" | |||
| "\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n" | |||
| "\t higher values = a pitch increase (try -k20).\n"; | |||
| @@ -169,6 +172,7 @@ int GetFileLength(const char *filename) | |||
| void ReadVoiceNames2(char *directory) | |||
| {//================================== | |||
| int len; | |||
| int path_len; | |||
| int *type; | |||
| char *p; | |||
| _kernel_swi_regs regs; | |||
| @@ -184,6 +188,8 @@ void ReadVoiceNames2(char *directory) | |||
| regs.r[5] = sizeof(buf); | |||
| regs.r[6] = 0; | |||
| path_len = strlen(directory); | |||
| while(regs.r[3] > 0) | |||
| { | |||
| error = _kernel_swi(0x0c+os_X,®s,®s); /* OS_GBPB 10, read directory entries */ | |||
| @@ -202,11 +208,25 @@ void ReadVoiceNames2(char *directory) | |||
| } | |||
| else | |||
| { | |||
| p = Alloc(len+1); | |||
| p = (char *)malloc(len+1); | |||
| 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"; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -216,13 +236,15 @@ void ReadVoiceNames() | |||
| {//=================== | |||
| 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_variant_files = 0; | |||
| sprintf(directory,"%s.voices",path_home); | |||
| ReadVoiceNames2(directory); | |||
| voice_names[n_voice_files] = NULL; | |||
| voice_variant_names[n_voice_variant_files] = NULL; | |||
| } | |||
| @@ -557,10 +579,13 @@ void set_say_options(int reg2, int reg3) | |||
| void jsd_swi_functions(int *r) | |||
| /****************************/ | |||
| { | |||
| espeak_VOICE voice_select; | |||
| switch(r[0]) | |||
| { | |||
| case 0: /* major version */ | |||
| r[0] = 3; | |||
| r[0] = 4; | |||
| r[1] = 331; | |||
| break; | |||
| case 1: /* register user */ | |||
| @@ -579,6 +604,7 @@ void jsd_swi_functions(int *r) | |||
| case 5: /* get table of voice names */ | |||
| r[0] = (int)voice_names; | |||
| r[1] = (int)voice_variant_names; | |||
| break; | |||
| case 6: /* update voice data, r1 = voice_number */ | |||
| @@ -594,6 +620,15 @@ void jsd_swi_functions(int *r) | |||
| // init_voice((char *)r[1]); | |||
| 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: | |||
| r[0] = 0; | |||
| r[1] = 0; | |||
| @@ -709,6 +744,72 @@ void PitchAdjust(int pitch_adjustment) | |||
| 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 *p; | |||
| @@ -860,6 +961,12 @@ void command_line(char *arg_string, int wait) | |||
| return; | |||
| } | |||
| else | |||
| if(memcmp(command,"voices",6)==0) | |||
| { | |||
| DisplayVoices(stdout,&command[6]); | |||
| return; | |||
| } | |||
| else | |||
| if(strcmp(command,"help")==0) | |||
| { | |||
| printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.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; | |||
| int option_device_number = -1; | |||
| @@ -269,7 +269,7 @@ Translator *SelectTranslator(const char *name) | |||
| case L('f','r'): // french | |||
| { | |||
| 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(); | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| @@ -421,6 +421,11 @@ SetLengthMods(tr,3); // all equal | |||
| } | |||
| 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 | |||
| { | |||
| static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300}; | |||
| @@ -38,6 +38,8 @@ typedef struct { | |||
| int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer) | |||
| 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 consonant_amp; // amplitude of unvoiced consonants | |||
| int consonant_ampv; // amplitude of the noise component of voiced consonants | |||
| // parameters used by Wavegen | |||
| short freq[N_PEAKS]; // 100% = 256 | |||
| @@ -29,7 +29,9 @@ | |||
| #ifdef PLATFORM_WINDOWS | |||
| #include "windows.h" | |||
| #else | |||
| #ifndef PLATFORM_RISCOS | |||
| #ifdef PLATFORM_RISCOS | |||
| #include "kernel.h" | |||
| #else | |||
| #include "dirent.h" | |||
| #endif | |||
| #endif | |||
| @@ -103,7 +105,7 @@ espeak_VOICE voice_selected; | |||
| // these need a phoneme table to have been specified | |||
| #define V_REPLACE 28 | |||
| #define V_CONSONANTS 29 | |||
| typedef struct { | |||
| @@ -141,6 +143,7 @@ static keywtab_t keyword_tab[] = { | |||
| {"numbers", V_NUMBERS}, | |||
| {"option", V_OPTION}, | |||
| {"mbrola", V_MBROLA}, | |||
| {"consonants", V_CONSONANTS}, | |||
| // these just set a value in langopts.param[] | |||
| {"l_dieresis", 0x100+LOPT_DIERESES}, | |||
| @@ -368,6 +371,9 @@ void VoiceReset(int tone_only) | |||
| voice->n_harmonic_peaks = 5; | |||
| voice->peak_shape = 1; | |||
| voice->voicing = 64; | |||
| voice->consonant_amp = 100; | |||
| voice->consonant_ampv = 100; | |||
| #ifdef PLATFORM_RISCOS | |||
| voice->roughness = 1; | |||
| #else | |||
| @@ -836,6 +842,10 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); | |||
| break; | |||
| case V_CONSONANTS: | |||
| value = sscanf(p,"%d %d",&voice->consonant_amp, &voice->consonant_ampv); | |||
| break; | |||
| case V_MBROLA: | |||
| { | |||
| int srate = 16000; | |||
| @@ -937,8 +947,10 @@ char *ExtractVoiceVariantName(char *vname, int variant_num) | |||
| char *p; | |||
| static char variant_name[20]; | |||
| char variant_prefix[5]; | |||
| variant_name[0] = 0; | |||
| sprintf(variant_prefix,"!v%c",PATHSEP); | |||
| if(vname != NULL) | |||
| { | |||
| @@ -953,7 +965,7 @@ char *ExtractVoiceVariantName(char *vname, int variant_num) | |||
| else | |||
| { | |||
| // voice variant name, not number | |||
| strcpy(variant_name,"!v/"); | |||
| strcpy(variant_name,variant_prefix); | |||
| strncpy0(&variant_name[3],p,sizeof(variant_name)-3); | |||
| } | |||
| } | |||
| @@ -962,9 +974,9 @@ char *ExtractVoiceVariantName(char *vname, int variant_num) | |||
| if(variant_num > 0) | |||
| { | |||
| if(variant_num < 10) | |||
| sprintf(variant_name,"!v/m%d",variant_num); // male | |||
| sprintf(variant_name,"%sm%d",variant_prefix, variant_num); // male | |||
| 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); | |||
| @@ -1409,6 +1421,54 @@ void GetVoices(const char *path) | |||
| char fname[sizeof(path_home)+100]; | |||
| #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 | |||
| #ifdef PLATFORM_WINDOWS | |||
| WIN32_FIND_DATA FindFileData; | |||
| @@ -748,12 +748,6 @@ void WavegenInit(int rate, int wavemult_fact) | |||
| for(ix=0; ix<N_EMBEDDED_VALUES; 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 | |||
| // single peak for HF peaks | |||
| @@ -1011,7 +1005,7 @@ static void AdvanceParameters() | |||
| } // end of AdvanceParameters | |||
| #ifndef PLATFORM_RISCOS | |||
| static double resonator(RESONATOR *r, double input) | |||
| {//================================================ | |||
| double x; | |||
| @@ -1055,11 +1049,12 @@ static void setresonator(RESONATOR *rp, int freq, int bwidth, int init) | |||
| // a = 1.0 - b - c | |||
| rp->a = 1.0 - rp->b - rp->c; | |||
| } // end if setresonator | |||
| #endif | |||
| void InitBreath(void) | |||
| {//================== | |||
| #ifndef PLATFORM_RISCOS | |||
| int ix; | |||
| minus_pi_t = -PI / samplerate; | |||
| @@ -1069,12 +1064,14 @@ void InitBreath(void) | |||
| { | |||
| setresonator(&rbreath[ix],2000,200,1); | |||
| } | |||
| #endif | |||
| } // end of InitBreath | |||
| void SetBreath() | |||
| {//============= | |||
| #ifndef PLATFORM_RISCOS | |||
| int pk; | |||
| if(wvoice->breath[0] == 0) | |||
| @@ -1089,15 +1086,17 @@ void SetBreath() | |||
| setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0); | |||
| } | |||
| } | |||
| #endif | |||
| } // end of SetBreath | |||
| int ApplyBreath(void) | |||
| {//================== | |||
| int value = 0; | |||
| #ifndef PLATFORM_RISCOS | |||
| int noise; | |||
| int ix; | |||
| int amp; | |||
| int value = 0; | |||
| // use two random numbers, for alternate formants | |||
| noise = (rand() & 0x3fff) - 0x2000; | |||
| @@ -1110,6 +1109,7 @@ int ApplyBreath(void) | |||
| value += int(resonator(&rbreath[ix],noise) * amp); | |||
| } | |||
| } | |||
| #endif | |||
| return (value); | |||
| } | |||
| @@ -1320,10 +1320,12 @@ int Wavegen() | |||
| total = (total >> 6) * voicing; | |||
| } | |||
| #ifndef PLATFORM_RISCOS | |||
| if(wvoice->breath[0]) | |||
| { | |||
| total += ApplyBreath(); | |||
| } | |||
| #endif | |||
| // mix with sampled wave if required | |||
| z2 = 0; | |||
| @@ -1558,6 +1560,12 @@ void WavegenSetVoice(voice_t *v) | |||
| else | |||
| 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(); | |||
| } | |||
| @@ -1571,7 +1579,7 @@ static void SetAmplitude(int length, unsigned char *amp_env, int value) | |||
| amp_inc = (256 * ENV_LEN * STEPSIZE)/length; | |||
| 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; | |||
| } | |||