Error message if accented letters are not recognized as alphabetic. "speak" program. Don't finish when an empty sentence is found. Compile dictionary: compile *_listx after *_list, not before. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@146 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -129,10 +129,10 @@ e: E: E~ I i: O o: O: | |||
| O~ r- U u: V | |||
| : b c ch d d. f g | |||
| h H j J k kh l m | |||
| n N n. n^ p ph Q q | |||
| r s S s. t T t. t.h | |||
| th v w x z | |||
| h H j J k kh l l. | |||
| m n N n. n^ p ph Q | |||
| q r s S s. t T t. | |||
| t.h th v w x z | |||
| Dictionary hu_dict | |||
| @@ -2278,7 +2278,7 @@ | |||
| phab) et (_ Et | |||
| ber) et (_ eI | |||
| gr) et (+ Et | |||
| f) et (a i: | |||
| f) et (a i:t | |||
| _m) et (e i:t | |||
| _p) et (e i:t | |||
| et (itor 'Et | |||
| @@ -5,7 +5,7 @@ | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| // | |||
| // Updated 2008-02-14 Michel Such <[email protected]> | |||
| // Updated 2008-02-20 Michel Such <[email protected]> | |||
| // | |||
| // * Numbers, a few abbreviations and exceptions. | |||
| // | |||
| @@ -32,7 +32,7 @@ e @ | |||
| f Ef | |||
| g Ze | |||
| h aS | |||
| i i | |||
| // i i | |||
| ï i:tRema | |||
| j Zi | |||
| k ka | |||
| @@ -197,6 +197,8 @@ mbrola Em'bRola | |||
| mlle mad@mwazEl | |||
| mme madam | |||
| mr m@sjY | |||
| nsi $abbrev | |||
| nsis $abbrev | |||
| nti $abbrev | |||
| nvda $abbrev | |||
| ong $abbrev | |||
| @@ -366,6 +368,7 @@ tout t'ut2 $u | |||
| // Letters which can be words | |||
| //=========================== | |||
| à a:aksA~gRav $atend | |||
| i i $atend | |||
| y i:gR'Ek $atend | |||
| @@ -375,6 +378,7 @@ y i:gR'Ek $atend | |||
| consent kO~s'A~t2 | |||
| scient si | |||
| bénéficient benefisi $verb | |||
| coing kwE~ | |||
| concurrent kO~kyR'A~ | |||
| content kO~t@-t2 $verb | |||
| couvent k'uvt2 $verb | |||
| @@ -386,9 +390,11 @@ divers divErz2 | |||
| évident evidt2 $verb | |||
| ferment fErm'A~ | |||
| ferment f'Ermt2 $verb | |||
| firent f'irt2 | |||
| parent paR'A~ | |||
| parent p'art2 $verb | |||
| pastis pastis | |||
| poing pwE~ | |||
| président pRezid'A~ | |||
| président pRezidt2 $verb | |||
| résident Rezid'A~ | |||
| @@ -400,6 +406,7 @@ sergent sErZ'A~ | |||
| serment sErm'A~ | |||
| serpent sErp'A~ | |||
| torrent tOR'A~ | |||
| tunis tynis | |||
| // MAIN WORD DICTIONARY | |||
| @@ -436,6 +443,7 @@ fils fis | |||
| imprudent E~pRydA~ | |||
| iris iris | |||
| juin ZyE~ | |||
| laser lazEr | |||
| malus malys | |||
| mars maRs | |||
| minus minys | |||
| @@ -533,49 +541,44 @@ flirt fl@Rt | |||
| // words from other languages | |||
| about _^_en | |||
| acer asEr | |||
| again _^_en | |||
| against _^_en | |||
| alone _^_en | |||
| also _^_en | |||
| and _^_en | |||
| amazon amaz'On | |||
| any Eni | |||
| apple _^_en | |||
| april _^_en | |||
| at _^_en | |||
| (audible manager) odibl||manadZ@r | |||
| be _^_en | |||
| being _^_en | |||
| bit _^_en | |||
| bluetooth blut'us | |||
| both _^_en | |||
| browser _^_en | |||
| can _^_en | |||
| computer _^_en | |||
| (cyber link) sibEr||link | |||
| (cyber link) _^_en | |||
| debian dEbjAn | |||
| does _^_en | |||
| doesn't _^_en | |||
| don't _^_en | |||
| driver _^_en | |||
| edit edit | |||
| emacs Emaks | |||
| emacspeak Emakspi:k | |||
| end _^_en | |||
| enter 'Ent@r | |||
| epson EpsOn | |||
| espeak @spi:k | |||
| ethernet etERnEt | |||
| ever _^_en | |||
| exit egzit | |||
| eye _^_en | |||
| eyes _^_en | |||
| false _^_en | |||
| (file zilla) fajl||zija | |||
| fire _^_en | |||
| firefox faj@RfOks | |||
| for _^_en | |||
| get _^_en | |||
| google gu:g@l | |||
| gnome gnom | |||
| gnu gnu | |||
| hamburger _!A~b@rg@r | |||
| help _^_en | |||
| hot _^_en | |||
| in _^_en | |||
| into _^_en | |||
| inside _^_en | |||
| @@ -585,20 +588,29 @@ internet E~tERnEt | |||
| is _^_en | |||
| it _^_en | |||
| its _^_en | |||
| june _^_en | |||
| july _^_en | |||
| klaxon klaksOn | |||
| later _^_en | |||
| latest _^_en | |||
| layer _^_en | |||
| let _^_en | |||
| liszt list | |||
| lite _^_en | |||
| login _^_en | |||
| logon _^_en | |||
| (mac os x) makoEsiks | |||
| made _^_en | |||
| mail _^_en | |||
| march _^_en | |||
| media medja | |||
| messenger _^_en | |||
| my _^_en | |||
| name _^_en | |||
| never _^_en | |||
| not _^_en | |||
| null _^_en | |||
| october _^_en | |||
| of _^_en | |||
| often _^_en | |||
| ok oke | |||
| @@ -606,13 +618,16 @@ open Op'@n | |||
| outlook autluk | |||
| outside _^_en | |||
| outsider _^_en | |||
| paint _^_en | |||
| player _^_en | |||
| redhat REdat | |||
| same _^_en | |||
| sametime _^_en | |||
| she _^_en | |||
| schubert SubER | |||
| since _^_en | |||
| sun _^_en | |||
| sure _^_en | |||
| (text aloud) tEkst||@lawd | |||
| their _^_en | |||
| there _^_en | |||
| @@ -620,16 +635,14 @@ these _^_en | |||
| those _^_en | |||
| they _^_en | |||
| thus _^_en | |||
| thunderbird D'@ndYR||b@Rd | |||
| time _^_en | |||
| timer _^_en | |||
| true _^_en | |||
| ubuntu ubuntu | |||
| up _^_en | |||
| viking vikiN | |||
| was _^_en | |||
| won't _^_en | |||
| yacht jot | |||
| yes jEs $brk | |||
| yes _^_en | |||
| // tions (tjO~ instead of sjO~) | |||
| @@ -4,7 +4,7 @@ | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| // | |||
| // Updated: 2008-02-14 Michel Such <[email protected]> | |||
| // Updated: 2008-02-20 Michel Such <[email protected]> | |||
| // | |||
| // * The rules are based on Cicero TTS. | |||
| // Y | |||
| @@ -15,6 +15,9 @@ | |||
| // Y front vowels: e i y é ê è î | |||
| // K not a vowel (i.e. consonant, space, ) | |||
| .L01 a b c d e f g h i l p q r t v | |||
| .L02 a e i o u y | |||
| .group a | |||
| ae (_ e // reggae vitae | |||
| @@ -51,11 +54,18 @@ | |||
| // group a: English section | |||
| _C) ad (_ _^_en // bad, had, sad | |||
| _) again (X _^_en // again, against | |||
| alk _^_en // talk, walk | |||
| all (_ _^_en // football handball | |||
| f) all (en_ _^_en // fallen | |||
| sm) all _^_en // small, smaller | |||
| ally (_ _^_en // really, naturally | |||
| ank _^_en // tank, blank | |||
| ark _^_en // dark, park | |||
| ainl _^_en | |||
| ainm _^_en | |||
| _C) ast (_ _^_en | |||
| _C) ast (eX _^_en | |||
| ather (_ _^_en // rather | |||
| aunc _^_en | |||
| a (wC _^_en | |||
| @@ -65,13 +75,16 @@ | |||
| b b // aube | |||
| // group b: English section | |||
| back _^_en | |||
| bbl _^_en | |||
| bird _^_en // bird | |||
| _) blue (X _^_en // probably | |||
| bly (_ _^_en // probably | |||
| board _^_en // board, keyboard | |||
| box (_ _^_en // box, inbox, outbox | |||
| bug (_ _^_en // bug, debug | |||
| bug (g _^_en // debugger | |||
| buil _^_en // build, built | |||
| buil _^_en | |||
| _) buy _^_en | |||
| _) by _^_en // by, bye, bypass | |||
| @@ -119,7 +132,8 @@ | |||
| // group c: English section | |||
| cast (_ _^_en // broadcast | |||
| calt (_ _^_en // difficult | |||
| chme _^_en | |||
| cult (_ _^_en // difficult | |||
| cut (_ _^_en // cut, shortcut | |||
| cy (_ _^_en // currency, frequency | |||
| @@ -149,8 +163,14 @@ | |||
| // group d: English section | |||
| ') d (_ _^_en | |||
| lor) d (_ _^_en | |||
| day (_ _^_en | |||
| _) dec _^_en | |||
| dece _^_en | |||
| _) def _^_en | |||
| dele _^_en | |||
| deter _^_en | |||
| _) devic _^_en | |||
| diffe _^_en | |||
| dle (X _^_en // bundle, handle | |||
| dly (_ _^_en | |||
| dy (_ _^_en | |||
| @@ -259,8 +279,11 @@ | |||
| _Ch) er (_ ER // cher | |||
| _env) er (_ ER | |||
| _hi) er (_ ER // hier | |||
| _hyp) er (_ ER // hyper | |||
| _hiv) er (_ ER // hiver | |||
| _sup) er (_ ER // super | |||
| _trav) er (_ ER | |||
| _univ) er (_ ER | |||
| _ti) er (_ ER | |||
| @@ -378,8 +401,10 @@ | |||
| e @ // menue | |||
| // group e: English section | |||
| eac _^_en | |||
| C) ead _^_en // read, head | |||
| eaf _^_en // leaf | |||
| eag _^_en // eagle | |||
| eak _^_en // break, speak | |||
| Cr) eam _^_en // stream | |||
| Cl) ean _^_en // clean | |||
| @@ -388,21 +413,33 @@ | |||
| ear _^_en // ear, search | |||
| eas _^_en // please | |||
| eat _^_en // eat, seat | |||
| eave _^_en // leave | |||
| ed (_ _^_en | |||
| _) edit _^_en | |||
| ee _^_en // meeting | |||
| eave _^_en // leave | |||
| eft (_ _^_en // left | |||
| ehen _^_en // comprehensive | |||
| eing _^_en // being, goeing | |||
| eive _^_en // receive | |||
| eith _^_en // either neither | |||
| ej _^_en | |||
| _) el (AC _^_en // element, eliminate | |||
| eld (_ _^_en // field | |||
| elf (_ _^_en // shelf | |||
| elves (_ _^_en // shelves | |||
| ember (_ _^_en | |||
| enter (_ _^_en // enter, center | |||
| ely (_ _^_en // lately | |||
| _) enhan _^_en | |||
| ooC) er (_ _^_en // scooter | |||
| _ov) er _^_en // over | |||
| ern (_ _^_en // western | |||
| _C) etter (_ _^_en // letter, better | |||
| ack) et (_ _^_en // racket, packet | |||
| ock) et (_ _^_en // rocket, pocket | |||
| ery (_ _^_en // query | |||
| qu) est (_ _^_en // request | |||
| qu) este (X_ _^_en // requested, requester | |||
| _) ev _^_en // even, ever, event | |||
| oC) ever _^_en // forever, however | |||
| .group ë | |||
| @@ -420,11 +457,12 @@ | |||
| fail (_ _^_en // fail | |||
| fail (A _^_en // failure | |||
| faith _^_en // failure | |||
| _) fire _^_en | |||
| fly _^_en | |||
| ford (_ _^_en | |||
| _) frame _^_en | |||
| _) freq _^_en | |||
| friend _^_en // friend, friendly | |||
| full (_ _^_en | |||
| fully (_ _^_en | |||
| fy (_ _^_en | |||
| @@ -470,6 +508,8 @@ | |||
| g Z // congé george | |||
| // group g: English section | |||
| _) game (X _^_en | |||
| @@) gate (X _^_en | |||
| gh _^_en // high, higher | |||
| girl _^_en // girl | |||
| gly (_ _^_en | |||
| @@ -591,15 +631,29 @@ _) h (As_ _^_en // has, his | |||
| ique (_ ik | |||
| // group i: English section | |||
| A_) i (_ _^_en | |||
| C_) i (_ _^_en | |||
| _) i (_A _^_en | |||
| _) i (_C _^_en | |||
| L02C) ic (_ _^_en | |||
| L02CC) ic (_ _^_en | |||
| @C) id (_ _^_en | |||
| idd _^_en | |||
| iev _^_en | |||
| ife (_ _^_en | |||
| igg _^_en | |||
| ike (X _^_en // bike, like | |||
| ill (_ _^_en // ill, will, fill | |||
| C) illy (_ _^_en // silly | |||
| ild _^_en | |||
| ilt _^_en | |||
| ing (_ _^_en // parking | |||
| ind (_ _^_en // find, mind | |||
| ind (er_ _^_en // finder, reminder | |||
| _C) ind (er_ _^_en // finder, reminder | |||
| _AC) ind (er_ _^_en // finder, reminder | |||
| ink _^_en // link, pink | |||
| ip (_ _^_en // chip, ship | |||
| ious (_ _^_en // various | |||
| iously (_ _^_en // previously | |||
| ist (_ _^_en // tourist | |||
| ism (_ _^_en // tourism | |||
| ize _^_en // realize | |||
| @@ -628,6 +682,7 @@ _) h (As_ _^_en // has, his | |||
| // group k: English section | |||
| ke (X _^_en // basket, make, take | |||
| key _^_en | |||
| ky (_ _^_en | |||
| .group l | |||
| @@ -642,7 +697,12 @@ _) h (As_ _^_en // has, his | |||
| ') ld (_ _^_en | |||
| ') ll (_ _^_en | |||
| less (_ _^_en // noiseless | |||
| _) live _^_en | |||
| ll (_ _^_en | |||
| lly (_ _^_en | |||
| lk (_ _^_en | |||
| lessly (_ _^_en // endlessly | |||
| lord (_ _^_en | |||
| .group m | |||
| @@ -650,6 +710,7 @@ _) h (As_ _^_en // has, his | |||
| mm m // pomme | |||
| // group m: English section | |||
| ') m (_ _^_en | |||
| mail (A _^_en // mailer | |||
| may _^_en | |||
| mov (A _^_en // move, movy | |||
| @@ -667,6 +728,7 @@ _) h (As_ _^_en // has, his | |||
| // group n: English section | |||
| n't (_ _^_en | |||
| nunc _^_en | |||
| ny (_ _^_en | |||
| @@ -684,10 +746,6 @@ _) h (As_ _^_en // has, his | |||
| _) oi (gnon O // oignons | |||
| oin (C wE~ | |||
| oin (_ wE~ // coin | |||
| C) oing (_ o'iN // going | |||
| c) oing (_ wE~ // coing | |||
| p) oing (_ wE~ // poing | |||
| oing (_ wE~ // poing, coing | |||
| oi wa // poil | |||
| oid (_ wa // froid | |||
| oê (l wa // poêle | |||
| @@ -719,7 +777,6 @@ p) oing (_ wE~ // poing | |||
| z) oo o // zoo | |||
| z) oo (C oo // zoologue | |||
| z) oo (m u // zoom | |||
| oo (X u // pool | |||
| _gal) op (_ o // galop | |||
| _sir) op (_ o // sirop | |||
| @@ -748,16 +805,26 @@ p) oing (_ wE~ // poing | |||
| o O // sobre notions émotions | |||
| // group o: English section | |||
| C) oad (_ _^_en // load, road | |||
| C) oad (eX _^_en // loaded | |||
| C) oat _^_en // boat | |||
| oa (X _^_en // approach, load | |||
| oa (CeX _^_en | |||
| oach _^_en | |||
| oes (_ _^_en | |||
| old (er_ _^_en // folder, older | |||
| C) oing (_ _^_en // going | |||
| _aC) ong (_ _^_en // along, among | |||
| oo (Ce _^_en // boomer | |||
| oo (X _^_en // pool | |||
| C) oot _^_en // bootable football | |||
| _) one _^_en | |||
| _) onl _^_en | |||
| orm (_ _^_en | |||
| _sC) ot _^_en | |||
| othe _^_en // other, mother | |||
| C) ou (ld_ _^_en // could, should | |||
| oun (C _^_en // bounce, found | |||
| _C) ouse _^_en // mouse, house | |||
| C) outh _^_en // mouth, south | |||
| _) over _^_en // over | |||
| ow _^_en // cow, town, down | |||
| oy (X _^_en // boy, toy | |||
| @@ -790,8 +857,12 @@ p) oing (_ wE~ // poing | |||
| se) pt (iè t // septième | |||
| // group p: English section | |||
| pad (_ _^_en | |||
| plug _^_en // plug | |||
| pmen _^_en | |||
| ply (_ _^_en // simply | |||
| _) pre (L01 _^_en | |||
| press (_ _^_en | |||
| print (_ _^_en // print | |||
| printer (_ _^_en // printer | |||
| _) prove (X _^_en // prove | |||
| @@ -826,6 +897,10 @@ mou) rr RR // mourrai | |||
| r r // rien | |||
| // group r: English section | |||
| AC) ram (_ _^_en | |||
| _) real _^_en | |||
| rese _^_en | |||
| rst (_ _^_en | |||
| _) rule (X _^_en // rule | |||
| ry (_ _^_en // theory | |||
| @@ -903,15 +978,18 @@ e) s (_h z2 | |||
| s (v z | |||
| // group s: English section | |||
| ') s (_ _^_en // possessive | |||
| ') s (_ _^_en | |||
| sh (_ _^_en | |||
| she (C_ _^_en | |||
| ship _^_en // friendship | |||
| shop _^_en // shop | |||
| sh (At _^_en // shut, shot | |||
| shout _^_en | |||
| sky _^_en | |||
| sk _^_en | |||
| _) smil _^_en // smile, smiley | |||
| spy _^_en | |||
| A) ss (_ _^_en // boss, cross | |||
| _) state _^_en // state, statement | |||
| C) s (ton _^_en // winston | |||
| stone (_ _^_en | |||
| sy (_ _^_en | |||
| @@ -979,11 +1057,19 @@ C) te (_ t@- // patte | |||
| _ce) t (_ t | |||
| // group t: English section | |||
| tch (_ _^_en | |||
| _) th (AX _^_en // that, this, then, than | |||
| C) th (_ _^_en // month | |||
| _) time _^_en | |||
| tle (_ _^_en | |||
| too _^_en | |||
| ttl _^_en | |||
| try (_ _^_en // try, country | |||
| sCar) t (_ _^_en // smart, start | |||
| sCar) t (er_ _^_en // starter | |||
| tme _^_en | |||
| tne _^_en | |||
| _) tun (AX _^_en | |||
| ty (_ _^_en // party, buty | |||
| @@ -1020,8 +1106,14 @@ C) te (_ t@- // patte | |||
| // group u: English section | |||
| C) u (ch_ _^_en // much such | |||
| C) ui (ce _^_en // produice, juice | |||
| up (C _^_en // upper, update | |||
| umber (_ _^_en | |||
| ump (_ _^_en | |||
| unch _^_en | |||
| _C) unct _^_en // function, punctuation | |||
| under _^_en // under, understand, thunder | |||
| _) up (C _^_en // upper, update | |||
| upt (_ _^_en | |||
| up (_ _^_en // setup | |||
| C) ur (ch _^_en // church | |||
| urn (X _^_en // burn, turn | |||
| ust (_ _^_en // just, trust | |||
| @@ -1033,7 +1125,8 @@ C) te (_ t@- // patte | |||
| // goup v: English section | |||
| ') ve (_ _^_en | |||
| voice (_ _^_en | |||
| vail (A _^_en | |||
| voice (X _^_en | |||
| void (_ _^_en | |||
| vy (_ _^_en | |||
| @@ -1045,11 +1138,13 @@ C) te (_ t@- // patte | |||
| // group w: English section | |||
| A) w _^_en | |||
| wa (Ce_ _^_en // hardware software wave | |||
| _) wan _^_en | |||
| wr _^_en // write | |||
| w (ACh _^_en // wash, wish, with | |||
| w (ACC _^_en // wash, wish, with | |||
| way _^_en // way, away | |||
| wh _^_en // what, which, who | |||
| _) wi _^_en // winner, window, wire | |||
| _) wi _^_en // wire | |||
| win _^_en // winner, window | |||
| wise _^_en | |||
| _) wom _^_en // woman | |||
| wor _^_en // word, world | |||
| @@ -1082,6 +1177,9 @@ C) te (_ t@- // patte | |||
| si) x (iè z // sixième | |||
| deu) x (iè z // deuxième | |||
| // group x: English section | |||
| xamp _^_en | |||
| .group y | |||
| y i // cryogénique myope | |||
| @@ -154,6 +154,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| य j@ | |||
| र r@ | |||
| ऱ r@ | |||
| ळ l.@ | |||
| व v@ | |||
| श S@ | |||
| ष s.@ // should be retroflex [S] | |||
| @@ -343,16 +343,16 @@ | |||
| ्) ल (_ lV | |||
| .group ळ | |||
| ळ lV // (temporary) same as [l] | |||
| ळ (B l | |||
| ?1 ल (_ l | |||
| ्) ल (_ lV | |||
| ळ l.V | |||
| ळ (B l. | |||
| ?1 ल (_ l. | |||
| ्) ल (_ l.V | |||
| .group ऴ | |||
| ऴ lV // (temporary) same as [l] | |||
| ऴ (B l | |||
| ?1 ल (_ l | |||
| ्) ल (_ lV | |||
| ऴ l.V // (temporary) same as [l.] | |||
| ऴ (B l. | |||
| ?1 ल (_ l. | |||
| ्) ल (_ l.V | |||
| .group व | |||
| व vV | |||
| @@ -48,6 +48,8 @@ _7 jedi | |||
| _8 sekiz | |||
| _9 dokuz | |||
| _10 on | |||
| _11 'onbir | |||
| _12 'oniki | |||
| _1X on | |||
| _2X jirmi | |||
| _3X otuz | |||
| @@ -58,10 +60,14 @@ _7X jetmiS | |||
| _8X seksEn | |||
| _9X doksan | |||
| _0C jyz | |||
| _2C 'ikijyz | |||
| _0M1 bIn | |||
| _1M1 bIn | |||
| _0M2 miljon | |||
| _1M2 miljon | |||
| _0M3 miljar | |||
| _dpt _virg,Yl | |||
| _1M3 miljar | |||
| _dpt _virg,Yl_| | |||
| @@ -6,6 +6,8 @@ | |||
| .group a | |||
| a a | |||
| avru (pa avr'u | |||
| .group b | |||
| b b | |||
| @@ -18,6 +20,8 @@ | |||
| .group d | |||
| d d | |||
| _) d (eğil 'd | |||
| .group e | |||
| e e | |||
| @@ -263,3 +263,5 @@ language). | |||
| 4 51 | |||
| 5 11 | |||
| | _| | |||
| @@ -17,8 +17,8 @@ | |||
| fi 40 130 | |||
| fr 44 125 | |||
| fr_ca 11 125 | |||
| hi 50 135 | |||
| ta 16 138 | |||
| hi 51 136 | |||
| ta 15 138 | |||
| hu 23 115 | |||
| nl 28 122 | |||
| pl 15 110 | |||
| @@ -47,7 +47,7 @@ | |||
| th 50 142 | |||
| id 14 120 | |||
| tr 14 123 | |||
| ku 12 120 | |||
| ku 13 120 | |||
| ja 7 104 | |||
| Data file Used by | |||
| @@ -361,7 +361,7 @@ l/l_long [l] base | |||
| [l;] ro | |||
| l/lo [(o)] base | |||
| [l] fr | |||
| l^/l_rfx [l.] ta | |||
| l^/l_rfx [l.] hi | |||
| l/lu [(u)] base | |||
| [l] fr | |||
| l/tl [l] base | |||
| @@ -952,6 +952,7 @@ vdiph/eeu_2 [EU] la | |||
| [EU] pt_pt | |||
| vdiph/eeu_3 [aU] en_n | |||
| [aU] en_wm | |||
| [eU] ku | |||
| vdiph/eey [ey] fi | |||
| vdiph/ei [eI] base2 | |||
| [e:] nl | |||
| @@ -216,6 +216,13 @@ endphoneme | |||
| // CONSONANTS | |||
| //=========== | |||
| phoneme l. | |||
| liquid rfx | |||
| lengthmod 7 | |||
| formants l^/l_rfx | |||
| endphoneme | |||
| phoneme v // no fricative noise | |||
| vcd lbd frc | |||
| @@ -96,13 +96,6 @@ phoneme u- | |||
| endphoneme | |||
| phoneme l. | |||
| liquid rfx | |||
| lengthmod 7 | |||
| formants l^/l_rfx | |||
| endphoneme | |||
| // ?? This is standard [v]. Should be it [v] without the fricative noise? | |||
| phoneme v | |||
| vcd lbd frc | |||
| @@ -1510,8 +1510,8 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| fprintf(f_log,"Using phonemetable: '%s'\n",PhonemeTabName()); | |||
| compile_dictlist_file(path,"roots"); | |||
| compile_dictlist_file(path,"listx"); | |||
| compile_dictlist_file(path,"list"); | |||
| compile_dictlist_file(path,"listx"); | |||
| compile_dictlist_file(path,"extra"); | |||
| compile_dictlist_end(f_out); | |||
| @@ -233,7 +233,7 @@ typedef struct { | |||
| int *body_drops; | |||
| unsigned char body_max_steps; | |||
| unsigned char body_lower_u; | |||
| char body_lower_u; | |||
| char n_overflow; | |||
| short *overflow; | |||
| @@ -270,8 +270,8 @@ static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = { | |||
| {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence | |||
| {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 9 comma | |||
| {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question | |||
| {20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 11 test | |||
| {19, 26, 36, 20, drops_0, 2, 4, 5, oflow_test2}, // 12 test | |||
| {15, 18, 18, 14, drops_0, 3, 3, 5, oflow_less}, // 11 test | |||
| {20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 12 test | |||
| }; | |||
| static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { | |||
| @@ -1069,6 +1069,10 @@ void Translator::CalcPitches(int clause_type) | |||
| { | |||
| p->env = PITCHrise; | |||
| } | |||
| else | |||
| if(p->tone > 5) | |||
| p->env = syl->env; | |||
| if(p->pitch1 > p->pitch2) | |||
| { | |||
| // swap so that pitch2 is the higher | |||
| @@ -1076,8 +1080,7 @@ void Translator::CalcPitches(int clause_type) | |||
| p->pitch1 = p->pitch2; | |||
| p->pitch2 = x; | |||
| } | |||
| if(p->tone > 5) | |||
| p->env = syl->env; | |||
| if(syl->flags & SYL_EMPHASIS) | |||
| { | |||
| @@ -37,8 +37,8 @@ | |||
| void Translator::LookupLetter(int letter, int next_byte, char *ph_buf1) | |||
| {//================================================================== | |||
| void Translator::LookupLetter(unsigned int letter, int next_byte, char *ph_buf1) | |||
| {//============================================================================= | |||
| int len; | |||
| unsigned char *p; | |||
| static char single_letter[10] = {0,0}; | |||
| @@ -643,6 +643,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags, | |||
| int this_value; | |||
| static int prev_value; | |||
| int decimal_count; | |||
| int max_decimal_count; | |||
| char string[12]; // for looking up entries in de_list | |||
| char buf1[100]; | |||
| char ph_append[50]; | |||
| @@ -783,8 +784,11 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags, | |||
| if(decimal_count > 1) | |||
| { | |||
| switch(langopts.numbers & 0x6000) | |||
| max_decimal_count = 2; | |||
| switch(langopts.numbers & 0xe000) | |||
| { | |||
| case 0x8000: | |||
| max_decimal_count = 5; | |||
| case 0x4000: | |||
| // French/Polish decimal fraction | |||
| while(word[n_digits] == '0') | |||
| @@ -794,7 +798,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags, | |||
| decimal_count--; | |||
| n_digits++; | |||
| } | |||
| if(decimal_count < 6) | |||
| if(decimal_count <= max_decimal_count) | |||
| { | |||
| LookupNum3(atoi(&word[n_digits]),buf1,0,0,0); | |||
| strcat(ph_out,buf1); | |||
| @@ -59,7 +59,7 @@ int (* uri_callback)(int, const char *, const char *) = NULL; | |||
| int (* phoneme_callback)(const char *) = NULL; | |||
| FILE *f_wave = NULL; | |||
| int quiet = 0; | |||
| int quiet = 0; | |||
| unsigned int samples_total = 0; | |||
| unsigned int samples_split = 0; | |||
| unsigned int wavefile_count = 0; | |||
| @@ -304,6 +304,9 @@ static int WavegenFile(void) | |||
| finished = WavegenFill(0); | |||
| if(quiet) | |||
| return(finished); | |||
| if(f_wave == NULL) | |||
| { | |||
| sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype); | |||
| @@ -794,15 +797,19 @@ int main (int argc, char **argv) | |||
| InitText(0); | |||
| SpeakNextClause(f_text,p_text,0); | |||
| ix = 1; | |||
| for(;;) | |||
| { | |||
| if(WavegenFile() != 0) | |||
| { | |||
| break; // finished, wavegen command queue is empty | |||
| if(ix == 0) | |||
| break; // finished, wavegen command queue is empty | |||
| } | |||
| if(Generate(phoneme_list,&n_phoneme_list,1)==0) | |||
| SpeakNextClause(NULL,NULL,1); | |||
| { | |||
| ix = SpeakNextClause(NULL,NULL,1); | |||
| } | |||
| } | |||
| CloseWaveFile(); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.31.12 16.Feb.08"; | |||
| const char *version_string = "1.31.13 21.Feb.08"; | |||
| const int version_phdata = 0x013105; | |||
| int option_device_number = -1; | |||
| @@ -100,6 +100,12 @@ void SynthesizeInit() | |||
| // next_pause.ph = phoneme_tab[phonPAUSE]; // this must be done after voice selection | |||
| next_pause.type = phPAUSE; | |||
| next_pause.newword = 0; | |||
| if(!iswalpha(0x010d)) | |||
| { | |||
| // check that c-caron is recognized as an alphabetic character | |||
| fprintf(stderr,"iswalpha() Accented letters are not recognized\n"); | |||
| } | |||
| } | |||
| @@ -277,7 +277,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||
| tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | |||
| tr->langopts.numbers = 0x1509 + 0x4000 + NUM_NOPAUSE | NUM_ROMAN; | |||
| tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN; | |||
| SetLetterVowel(tr,'y'); | |||
| } | |||
| break; | |||
| @@ -642,7 +642,7 @@ SetLengthMods(tr,3); // all equal | |||
| } | |||
| break; | |||
| case L('t','a'): | |||
| case L('t','a'): // Tamil | |||
| { | |||
| static const short stress_lengths_ta[8] = {190, 190, 200, 200, 0, 0, 220, 220}; | |||
| static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; | |||
| @@ -693,7 +693,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
| tr->langopts.numbers = 0x1d09; | |||
| tr->langopts.numbers = 0x1d09 + 0x4000; | |||
| tr->langopts.max_initial_consonants = 2; | |||
| } | |||
| break; | |||
| @@ -734,7 +734,7 @@ SetLengthMods(tr,3); // all equal | |||
| case L('z','h'): | |||
| case L_zhy: | |||
| { | |||
| static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 240,290}; | |||
| static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 240,250}; // 1=tone5. end-of-sentence, 6=tone 1&4, 7=tone 2&3 | |||
| static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 }; | |||
| tr = new Translator; | |||
| @@ -363,7 +363,7 @@ int IsAlpha(unsigned int c) | |||
| return(1); // Devanagari vowel signs and other signs | |||
| if((c >= 0xb81) && (c <= 0xbe5)) | |||
| return(1); // Devanagari vowel signs and other signs | |||
| return(1); // Tamil vowel signs and other signs | |||
| if((c >= 0x300) && (c <= 0x36f)) | |||
| return(1); // combining accents | |||
| @@ -2049,7 +2049,7 @@ if((c == '/') && (langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(prev_ou | |||
| else | |||
| if(IsAlpha(c)) | |||
| { | |||
| if(!IsAlpha(prev_out) || (langopts.ideographs && ((c >= 0x3000) || (prev_out >= 0x3000)))) | |||
| if(!IsAlpha(prev_out) || (langopts.ideographs && ((c > 0x3040) || (prev_out > 0x3040)))) | |||
| { | |||
| if(wcschr(punct_within_word,prev_out) == 0) | |||
| letter_count = 0; // don't reset count for an apostrophy within a word | |||
| @@ -428,7 +428,7 @@ private: | |||
| const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab); | |||
| const char *LookupSpecial(const char *string); | |||
| const char *LookupCharName(int c); | |||
| void LookupLetter(int letter, int next_byte, char *ph_buf); | |||
| void LookupLetter(unsigned int letter, int next_byte, char *ph_buf); | |||
| int LookupNum2(int value, int control, char *ph_out); | |||
| int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands); | |||
| int LookupThousands(int value, int thousandplex, char *ph_out); | |||