diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index b605f7a3..a8c80cfc 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -72,10 +72,10 @@ aU@ E e@ eI I I2 i: i@ i@3 IR O O: o: O@ o@ OI oU O~ U u: U@ V VR -: ; b C d D dZ f -g h j k l m n N -p Q r r- s S t T -t2 tS v w x z Z +; b C d D dZ f g +h j k l m n N p +Q r r- s S t T t2 +tS v w x z Z Dictionary eo_dict @@ -111,9 +111,9 @@ S s2 t v Z Dictionary fr_dict -@ @- a A A~ e E E: -E~ i i: o O O~ u W -w^i W~ y Y +@ @- a A A~ e E E~ +i i: o O O~ u W w^i +W~ y Y * : ; b c d D dZ f g h j k l L m @@ -401,3 +401,14 @@ u# W y Y j k l m n p Q r R s S t tS v w z Z + + +Dictionary ku_dict + +a e E eI i I o u +U y + +: b d dZ f g h j +k l m n p q r R +s S t tS v w x z +Z diff --git a/dictsource/en_list b/dictsource/en_list index 1313a9e4..82175ec7 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -67,7 +67,7 @@ _& amp@sand _' praIm _( ElbrakIt _) A@brakIt -_* ast@rIsk: +_* ast@rIsk _+ plVs _, k0m@ _- h,aIf@n @@ -313,7 +313,7 @@ ague eIgju: aha a2hA: ahem a2h'@m ahoy a2hOI -airbus e@:bVs +airbus e@bVs airpower 'e@p,aU@ aisle aI@l ajar a2dZA@ @@ -2218,7 +2218,6 @@ Emma Em@ Evan Ev@n Gary garI2 Geraint gEraInt -Gilbert gIlb3t Giles gaIlz Glynn glIn Graeme greI@m diff --git a/dictsource/en_rules b/dictsource/en_rules index 80257624..f06a7fe7 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -2372,6 +2372,7 @@ g (i dZ gi (_ gI2 _) g (il g + g (ilC g l) ging dZI2N g (y dZ _) g (n diff --git a/dictsource/fr_list b/dictsource/fr_list index 54ed2493..c1cf7641 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -5,7 +5,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2008-02-11 Michel Such +// Updated 2008-02-14 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -421,7 +421,6 @@ adéquat adekuat2 adéquate adekuat airbus Erbys anus anys -any Eni ardent aRdA~ bissus bisys bonus bonys @@ -433,20 +432,18 @@ choeur k@r cocus coky discident disidA~ estomac Estoma -eye aj -eyes ajz fils fis imprudent E~pRydA~ iris iris juin ZyE~ malus malys -many mEni mars maRs minus minys occident OksidA~ orient ORjA~ pays pEi phallus falys +polder pOldEr prudent pRydA~ secret sYkRE souris suri @@ -475,13 +472,13 @@ processus pROsEsys août ut azimut azim'yt brut bR'yt +bouse buz but by $verb but byt club kl@b (le pub) l@||p'@b (un pub) W~||p'@b (du pub) dy||p'@b -connecticut kOnEktikyt cut cWt helmut Elmut hub _|@b @@ -499,19 +496,15 @@ zut zyt // et (t is said) -bridget bRidZEt exocet EgzOsEt fret fR'Et -gadget gadZEt +budget bydZE hamlet amlEt -jacket ZakEt knesset knEsEt lazaret lazaREt margaret maRgaREt net nEt offset OfsEt -pickpocket pikpOkEt -racket RakEt set sEt soviet sOvjEt @@ -525,7 +518,6 @@ yogourt yoguRt short SORt // art (t said) -stewart stiwaRt steward stiwaRt stuttgart StutgaRt hart aRt @@ -539,95 +531,103 @@ flirt fl@Rt // words from other languages -about @bawt +about _^_en acer asEr +again _^_en +against _^_en +alone _^_en +also _^_en +and _^_en amazon amaz'On -(audible manager) od'ibl||manadZ'@r -be bi -being biiN -by baj +any Eni +apple _^_en +at _^_en +(audible manager) odibl||manadZ@r +be _^_en +being _^_en bluetooth blut'us -byte bajt -bytes bajts +both _^_en +browser _^_en +can _^_en +computer _^_en (cyber link) sibEr||link debian dEbjAn -driver drajv@rz2 -download dOnlod +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 exit egzit -(file zilla) fajl@-||zija +eye _^_en +eyes _^_en +(file zilla) fajl||zija +fire _^_en firefox faj@RfOks -(fire wire) faj@R||wajr -firewire faj@Rwajr -google gu:g'@l -girl g@Rl +get _^_en +google gu:g@l gnome gnom gnu gnu hamburger _!A~b@rg@r -has _!az $u -his _!iz $u -inside insajd -insight insajt +help _^_en +in _^_en +into _^_en +inside _^_en +insight _^_en internet E~tERnEt (internet explorer) E~tErn'Et||EksplOr'@r -is iz -it it -its its +is _^_en +it _^_en +its _^_en klaxon klaksOn -leader li:d@R -let lEt +layer _^_en +let _^_en liszt list -lite lajt +lite _^_en +logon _^_en (mac os x) makoEsiks -mail mE:jl -maker mE:jk@r +made _^_en +mail _^_en media medja -messenger mesEnZ'@r -movy mu:v'i -my maj -name nejm -not nOt +messenger _^_en +my _^_en +name _^_en +not _^_en +of _^_en +often _^_en ok oke open Op'@n outlook autluk -outside autsajd -outsider autsajd@r -player plEj'@r -quick kwik +outside _^_en +outsider _^_en +player _^_en redhat REdat -release rili:z -same sejm +same _^_en +sametime _^_en schubert SubER -screamer skri:m@r -(search & destroy) s@:rS_||end_||dEsstrOj -skype sk'ajp@- -spybot spajbOt -sun s@n -sunlight s@nlajt +since _^_en +sun _^_en (text aloud) tEkst||@lawd -than Dan -the D@ $u -them DEm $u -then DEn $u -there DEr $u -they DE $u -thunderbird f@ndERb@Rd -time tajm -timer tajm@r +their _^_en +there _^_en +these _^_en +those _^_en +they _^_en +thus _^_en +thunderbird D'@ndYR||b@Rd +time _^_en +timer _^_en ubuntu ubuntu -update @pd'E:jt -upload @plod -very vEri -viavoice viavOjs -was waz $u -window windo -windows windoz -word wWRd -writer rajt@r +up _^_en +viking vikiN +was _^_en +won't _^_en yacht jot yes jEs $brk diff --git a/dictsource/fr_rules b/dictsource/fr_rules index d38cf9ca..f3a58f1c 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -1,12 +1,13 @@ // French translation rules + // This file is UTF-8 encoded // 2006-11-18 Gilles Casse // -// Updated: 2008-02-11 Michel Such +// Updated: 2008-02-14 Michel Such // // * The rules are based on Cicero TTS. -// +// Y // Letter classes: // A all vowels: a e i o u y â ä é ê è î ï ô ö ù û @@ -28,8 +29,6 @@ a (il_ a aie (me E // paiement ai E // aile - a (lk O // talk - a (ll_ O // football handball am (b A~ // jambon am (p A~ // camp am (m a // programmation @@ -50,12 +49,32 @@ ay Ej // paye a a // bateau +// group a: English section + _C) ad (_ _^_en // bad, had, sad + alk _^_en // talk, walk + all (_ _^_en // football handball + f) all (en_ _^_en // fallen + sm) all _^_en // small, smaller + ally (_ _^_en // really, naturally + a (wC _^_en + .group b bb b // abbé om) b (_ // plomb applomb b b // aube +// group b: English section + bird _^_en // bird + bly (_ _^_en // probably + board _^_en // board, keyboard + box (_ _^_en // box, inbox, outbox + bug (_ _^_en // bug, debug + bug (g _^_en // debugger + buil _^_en // build, built + _) buy _^_en + _) by _^_en // by, bye, bypass + .group c c' s // s @@ -98,6 +117,12 @@ cien (t_ i // ils appr�ient, remercient. i) cien (t_ sjA~ // coefficient +// group c: English section + cast (_ _^_en // broadcast + calt (_ _^_en // difficult + cut (_ _^_en // cut, shortcut + cy (_ _^_en // currency, frequency + .group d dd d // addition @@ -108,8 +133,6 @@ Csan) d (_ d _tan) d (_ d // stand Ctan) d (_ d - for) d (_ d - lor) d (_ d Can) d (_ t2 // grand ami, grand marchand Cen) d (_ t2 @@ -124,29 +147,25 @@ r) d (_ // lourd placard d d // don bled +// group d: English section + ') d (_ _^_en + lor) d (_ _^_en + day (_ _^_en + dle (X _^_en // bundle, handle + dly (_ _^_en + dy (_ _^_en + .group e e (Ce_ E eau o // bateau cheveaux - C) ea (d i: // read - Cr) ea (m i: // stream - Cl) ea (n i: // clean - C) ea (Cer i: // reader, cleaner + g) ea (s_ a // mangeas j) e (a // Jean Jeanne - sp) ea (k i: // speak speaker p) ect (_ E // suspect ect (_ Ekt // direct _trépi) ed e _pi) ed e // pied - ee i: // meeting _cl) ef (_ e // clef - Ck) e (r_ @ // worker, talker - _Cett) e (r_ @ // letter, better - eaC) e (r_ @ // speaker, streamer - gh) e (r_ @ // higher - ght) e (r_ @ // fighter, lighter - ooC) e (r_ @ // scooter - _ov) e (r @ // over ein (C E~ // peindre ein (_ E~ e (il E // vieille @@ -244,10 +263,6 @@ _trav) er (_ ER _ti) er (_ ER - th) er (_ @R // brother - th) er (s_ @R - w) er (_ @R // power - w) er (s_ @R er (_ e // parler léger er (s_ e @@ -283,6 +298,7 @@ @Cr) es (_C @- rC) es (_C @- // fortes dames + dg) et (_ Et // Bridget, gadget ') eu (_ y // eu eu (r_ @ // peur @@ -301,12 +317,6 @@ _) eû y // eût eû Y // jeûne - ew (_ ju // new - ews juz // news, newsreader - r) ew (_ u // crew - r) ews uz - i) ew (_ u // view - i) ews uz e (x E // exact ey (_ e // dahomey ey (C e // ceylan @@ -367,6 +377,33 @@ e @ // menue +// group e: English section + C) ead _^_en // read, head + eaf _^_en // leaf + eak _^_en // break, speak + Cr) eam _^_en // stream + Cl) ean _^_en // clean + l) ean _^_en // lean + m) ean _^_en // mean + ear _^_en // ear, search + eas _^_en // please + eat _^_en // eat, seat + ed (_ _^_en + ee _^_en // meeting + eave _^_en // leave + eft (_ _^_en // left + eive _^_en // receive + eith _^_en // either neither + ely (_ _^_en // lately + ooC) er (_ _^_en // scooter + _ov) er _^_en // over + _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 + .group ë u) ë // ambiguë @@ -379,6 +416,17 @@ _neu) f (_ans v // liaison: neuf ans _neu) f (_heures v +// group f: English section + fail (_ _^_en // fail + fail (A _^_en // failure + faith _^_en // failure + fly _^_en + ford (_ _^_en + friend _^_en // friend, friendly + full (_ _^_en + fully (_ _^_en + fy (_ _^_en + .group g g g @@ -421,6 +469,13 @@ g (_ g // grog gag goulag g Z // congé george +// group g: English section + gh _^_en // high, higher + girl _^_en // girl + gly (_ _^_en + give (X _^_en + gy (_ _^_en + .group h _) h (ac _! // hache @@ -467,7 +522,6 @@ _) h (ic _! // hic _) h (ide _! // hideux _) h (iér _! // hiéroglyphe _) h (i-fi _! // hi-fi -_) h (igh _! // highlandais _) h (i-han _! // hi-han _) h (iss _! // hisser _) h (it _! // hit, hit-parad @@ -503,6 +557,11 @@ _) h (umi // humide _) h (umo // humour h // ahuri +// group h: English section +_) half _^_en +_) h (As_ _^_en // has, his + here (_ _^_en // here + .group i i i // cri @@ -511,9 +570,6 @@ _) h (umo // humour i (es_ i // parties i (e_ i i (A j // fermier portier patio renier - ig (h aj // right, fight, light - wh) ile ajll // while, endwhile - wr) i (tA aj // write _) ill ill // illégal _m) ill il // mille v) ill il // village @@ -527,18 +583,26 @@ _) h (umo // humour imm imm // immaculé im (_ im // karim im (C E~ // timbre - ing (_ iN // parking in (h in // inhumain inct (_ E~ // distinct - ind (_ ajnd // find, mind - ind (ing_ ajnd // find, mind - ink ink // link, pink in (n i // innombrable in (C E~ // vingt - // in (_ E~ // vin in (_ W~ // vin ique (_ ik +// group i: English section + ike (X _^_en // bike, like + ill (_ _^_en // ill, will, fill + C) illy (_ _^_en // silly + ing (_ _^_en // parking + ind (_ _^_en // find, mind + ind (er_ _^_en // finder, reminder + ink _^_en // link, pink + ious (_ _^_en // various + iously (_ _^_en // previously + ism (_ _^_en // tourism + ize _^_en // realize + .group î î i // abîme @@ -560,10 +624,12 @@ _) h (umo // humour .group k k k // kafka - ket (_ kEt // basket - kets (_ kEt // basket +// group k: English section + ke (X _^_en // basket, make, take + ky (_ _^_en + .group l l l // lit ll l // aller @@ -572,11 +638,22 @@ _) h (umo // humour outi) l (_ // outil ui) ll j // juillet +// group l: English section + ') ld (_ _^_en + ') ll (_ _^_en + less (_ _^_en // noiseless + lessly (_ _^_en // endlessly + .group m m m // film mm m // pomme +// group m: English section + mail (A _^_en // mailer + may _^_en + mov (A _^_en // move, movy + .group n n n // une @@ -588,6 +665,10 @@ _) h (umo // humour A) ng (_ N // parking meeting nn n // panne +// group n: English section + n't (_ _^_en + ny (_ _^_en + .group o cr) oc (_ o // escroc @@ -635,11 +716,8 @@ p) oing (_ wE~ // poing r) o (ne_ o alc) oo (l O // alcool - oo (Ce u // boomer - C) oot ut // bootable football z) oo o // zoo - z) oo (l oo // zoologue - z) oo (ph oo // zoophile + z) oo (C oo // zoologue z) oo (m u // zoom oo (X u // pool _gal) op (_ o // galop @@ -650,7 +728,6 @@ p) oing (_ wE~ // poing v) ost (_ o // Prévost o (sA o // poser ot (_ o // mot dépots - C) ou (nd aw // sound, found _C) oup (_ u // coup, loup uC) oup (_ up2 // beaucoup @@ -660,8 +737,6 @@ p) oing (_ wE~ // poing oû u // coûter oyes (_ wa // troyes oy (A waj // noyer voyelles - oy (_ Oj // boy, toy - oys (_ Ojz // boys, toys oy wa // roy o (_ o // zorro allégro o (z_ o // berlioz @@ -672,6 +747,20 @@ 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 + old (er_ _^_en // folder, older + oo (Ce _^_en // boomer + C) oot _^_en // bootable football + C) ou (ld_ _^_en // could, should + oun (C _^_en // bounce, found + _C) ouse _^_en // mouse, house + C) outh _^_en // mouth, south + ow _^_en // cow, town, down + oy (X _^_en // boy, toy + .group ô ôt (_ o // rôt @@ -700,6 +789,16 @@ p) oing (_ wE~ // poing se) pt (_ t // sept se) pt (iè t // septième +// group p: English section + plug _^_en // plug + ply (_ _^_en // simply + print (_ _^_en // print + printer (_ _^_en // printer + _) prove (X _^_en // prove + _AC) prove (X _^_en // improve + _AC) provem _^_en // improvement + py (_ _^_en // copy + .group q q k // coq @@ -715,15 +814,21 @@ p) oing (_ wE~ // poing _) qu' (P3 k // qu'il n) q (_ k // cinq cent +// group q: English section + quick _^_en // quick, quickly + .group r - right rajt // copyright _su) rr RR // surréaliste cou) rr RR // courrai mou) rr RR // mourrai rr R // erreur r r // rien +// group r: English section + _) rule (X _^_en // rule + ry (_ _^_en // theory + .group s s s // verser sien @@ -740,6 +845,7 @@ e) s (_h z2 sch S // schéma dé) sh (A z // déshabiller sh S // shérif + CA) sh (_ _^_en // punish ss s // assez ai) s (em s // vraisemblable @@ -767,6 +873,7 @@ e) s (_h z2 ïu) s (_ s // laïus Culu) s (_ s // cumulus plu) s (_ z2 // plus, surplus + ylu) s (_ s // stylus mu) s (_ s _mu) s (_ ému) s (_ @@ -795,11 +902,27 @@ e) s (_h z2 s (j z s (v z +// group s: English section + ') s (_ _^_en // possessive + ship _^_en // friendship + shop _^_en // shop + sh (At _^_en // shut, shot + shout _^_en + sky _^_en + _) smil _^_en // smile, smiley + spy _^_en + A) ss (_ _^_en // boss, cross + C) s (ton _^_en // winston + stone (_ _^_en + sy (_ _^_en + .group t t t // bataille V) t (_ t2 // silent at end of verb unless next word starts with a vowel t (_ // silent at end of word + _) th (onX t // thon + _) th (ymX t // shym ts (_S1 z2 // silent at end of word unless next word starts with a vowel C) t (_ t // compost watt soft script malttact abrupt Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel @@ -813,7 +936,6 @@ C) te (_ t@- // patte s) th (m // asthme th t // théorie - sCar) t (_ t // smart, start hui) t (_ t // huit _) t t // tien tiers @@ -856,12 +978,20 @@ C) te (_ t@- // patte _ce) t (_ t +// group t: English section + _) th (AX _^_en // that, this, then, than + C) th (_ _^_en // month + try (_ _^_en // try, country + sCar) t (_ _^_en // smart, start + sCar) t (er_ _^_en // starter + ty (_ _^_en // party, buty + .group u u y // cruel nuage brut ui w^i - _b) usi iz // business, businessman + _b) usi _^_en // business, businessman c) ueill Wj // cueillir c) ueil (_ Wj // recueil _c) ul (_ y @@ -874,25 +1004,55 @@ C) te (_ t@- // patte um (b W~ // humble um (p W~ un (C W~ // emprunt lundi - C) un (_ W~ // brun + CC) un (_ W~ // brun uc) un (_ W~n2 // aucun un (_ W~n2 // un avion + _f) un @n // fun + _g) un @n // gun + _r) un @n // run + _s) un @n // sun, sunday fl) ux (_ y // flux, reflux g) u (A // fatigue g) u (ï y // ambiguïté g) u (ë y // ambiguë +// group u: English section + C) u (ch_ _^_en // much such + C) ui (ce _^_en // produice, juice + up (C _^_en // upper, update + under _^_en // under, understand, thunder + C) ur (ch _^_en // church + urn (X _^_en // burn, turn + ust (_ _^_en // just, trust + rib) u (teX _^_en // tribute, attribute + .group v v v +// goup v: English section + ') ve (_ _^_en + voice (_ _^_en + void (_ _^_en + vy (_ _^_en + .group w w w - wa (Ce_ wE // hardware software wave w (agon v // wagon - w (r // write + +// group w: English section + A) w _^_en + wa (Ce_ _^_en // hardware software wave + wr _^_en // write + w (ACh _^_en // wash, wish, with + way _^_en // way, away + wh _^_en // what, which, who + _) wi _^_en // winner, window, wire + wise _^_en + _) wom _^_en // woman + wor _^_en // word, world .group x diff --git a/dictsource/zh_rules b/dictsource/zh_rules index 39cbdb06..b16a4c7a 100644 --- a/dictsource/zh_rules +++ b/dictsource/zh_rules @@ -202,7 +202,7 @@ language). t) u (DnK wu@ uo uo - sh) ui wei + sh) ui rei sh) u (DnK wo- sh) uo wo diff --git a/docs/mbrola.html b/docs/mbrola.html index a7b323ed..10e5c058 100644 --- a/docs/mbrola.html +++ b/docs/mbrola.html @@ -73,6 +73,8 @@ will put the Mbrola speech output into a WAV file. Or you can pipe the output f

The -e option prevents Mbrola from stopping if it finds a combination of phonemes which it doesn't recognise. +

+Some mbrola voices (de5, de6) use a sample rate of 22050 Hz. These need -r22050 rather than -r16000.

Mbrola Voice Files

diff --git a/espeak-data/voices/mb/mb-de5-en b/espeak-data/voices/mb/mb-de5-en index 91120087..e416c6dc 100755 --- a/espeak-data/voices/mb/mb-de5-en +++ b/espeak-data/voices/mb/mb-de5-en @@ -3,5 +3,5 @@ language en gender female pitch 140 220 -mbrola de5 de5_phtrans 22050 +mbrola de5 de6_phtrans 22050 diff --git a/phsource/compile_report b/phsource/compile_report index 85c797e3..13c1f02b 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -48 phoneme tables +49 phoneme tables new total base 99 99 base2 24 118 @@ -30,7 +30,7 @@ ru 38 129 it 17 121 la 21 117 - es 8 119 + es 9 119 es_la 1 119 pt 27 134 pt_pt 20 134 @@ -47,6 +47,7 @@ th 50 142 id 14 120 tr 14 123 + ku 12 120 ja 7 104 Data file Used by @@ -621,6 +622,7 @@ ufric/x2 [x2] af [x2] nl [x2] pt ufric/x_hr [x] hr + [x] ku ufric/x_sr [h] sr [x] sr ustop/c [c] base @@ -678,7 +680,6 @@ ustop/kr [k] base [k] zhy [k] sw ustop/k_unasp [k] base - [q] base [k] base2 [k] fi [k] hi @@ -738,6 +739,7 @@ ustop/p_unasp_ [p] base2 [p] sk [p] la [p;] ro +ustop/q [q] base ustop/t [t] base [t2] en [t] fr @@ -940,6 +942,7 @@ vdiph/eei_2 [eI] eo [eI] id vdiph/eei_3 [eI] en_rp [eI] sk + [eI] ku vdiph/eeu [EU] pt [EU] grc [EU] vi @@ -1169,6 +1172,7 @@ vowel/& [a] en_rp [&] fi [&:] hi [&] sv + [E] ku vowel/0 [0] en [O] hi [O] pt @@ -1275,6 +1279,7 @@ vowel/aa [a] fi [aa] zhy vowel/aa# [0] en_wi [a2] fi + [a] ku vowel/aa_2 [A:] en [A@] en [A:] cy @@ -1383,6 +1388,7 @@ vowel/e_mid2 [E] af [e] fi [E] nl [e] sk + [e] es [e] ro [e] el [e] sw @@ -1442,6 +1448,7 @@ vowel/i_6 [i:] en_us [i] hr [i] id [i] tr + [i] ku vowel/i#_6 [i.] zh vowel/i#_7 [i[] zh vowel/i_en [i:] en @@ -1460,9 +1467,11 @@ vowel/ii [I] en_rp [I] nl [I] is [i] zhy + [e] ku vowel/ii# [Y] cy [y] pl [Y] ru + [I] ku vowel/ii_2 [i] zh vowel/ii_3 [I] cy [I] fi @@ -1526,6 +1535,7 @@ vowel/o_4 [oU] en_n vowel/o-_4 [o] ro vowel/o_5 [O] nl vowel/o_6 [O:] nl +vowel/o_7 [o] ku vowel/oe [W] en [W] af [W] de @@ -1623,6 +1633,7 @@ vowel/u#_4 [U] en_sc vowel/u_5 [u] sw vowel/u_6 [U] pt_pt [u] pt_pt + [u] ku vowel/u#_6 [u:] en_us vowel/u_7 [u] vi vowel/u#_7 [u#] tr @@ -1649,6 +1660,7 @@ vowel/u_bck2 [u:] la vowel/u_fnt [u:] en_rp vowel/uu [U] en [U] en_wm +vowel/uu# [U] ku vowel/uu_2 [U] base2 [U] de [U] ta @@ -1706,6 +1718,7 @@ vowel/y#_3 [W] is vowel/y_4 [y:] no vowel/y_5 [y:] sv [y] tr + [y] ku vowel/yy [y"] fr_ca [y] no vowel/yy_3 [y] sv diff --git a/phsource/ph_spanish b/phsource/ph_spanish index d435687f..2fb2251e 100644 --- a/phsource/ph_spanish +++ b/phsource/ph_spanish @@ -3,6 +3,12 @@ // Spanish - based on Base2 //==================================================== +phoneme e + vowel starttype (e) endtype (e) + length 170 + formants vowel/e_mid2 +endphoneme + phoneme E vowel starttype (e) endtype (e) length 180 diff --git a/phsource/ph_spanish_la b/phsource/ph_spanish_la new file mode 100644 index 00000000..4bf32ab4 --- /dev/null +++ b/phsource/ph_spanish_la @@ -0,0 +1,6 @@ + +//==================================================== +// Latin American Spanish - based on Spanish +//==================================================== + + diff --git a/phsource/phonemes b/phsource/phonemes index c06a3d43..086487b3 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -996,8 +996,8 @@ phoneme q vowelin f1=1 f2=1700 0 200 f3=-300 80 f4 paus rms=35 vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30 lengthmod 2 - wave ustop/k_unasp%60 - before _ ustop/k_unasp%50 + wave ustop/q%50 + before _ ustop/q%40 endphoneme @@ -1282,5 +1282,8 @@ include ph_indonesian phonemetable tr base2 include ph_turkish +phonemetable ku base2 +include ph_kurdish + phonemetable ja base include ph_japanese diff --git a/phsource/r3/@tap b/phsource/r3/@tap index 8c844f59..fec2aeea 100644 Binary files a/phsource/r3/@tap and b/phsource/r3/@tap differ diff --git a/phsource/vowel/& b/phsource/vowel/& index 9cd2844a..46166ea8 100644 Binary files a/phsource/vowel/& and b/phsource/vowel/& differ diff --git a/phsource/vowel/ii# b/phsource/vowel/ii# index ce675016..f3ec882b 100644 Binary files a/phsource/vowel/ii# and b/phsource/vowel/ii# differ diff --git a/phsource/vowel/u_6 b/phsource/vowel/u_6 index b763f969..bdce153b 100644 Binary files a/phsource/vowel/u_6 and b/phsource/vowel/u_6 differ diff --git a/phsource/vowel/uu# b/phsource/vowel/uu# new file mode 100644 index 00000000..287eb2d8 Binary files /dev/null and b/phsource/vowel/uu# differ diff --git a/src/Makefile b/src/Makefile index 09e2f963..6918c7ad 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,3 +1,5 @@ +# removed -fno-exceptions because it caused problems with stdio library on some platforms + PREFIX=/ BINDIR=$(PREFIX)/usr/bin INCDIR=$(PREFIX)/usr/include/espeak @@ -66,7 +68,7 @@ all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) .cpp.o: - $(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< + $(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c $< $(BIN_NAME): $(OBJS1) $(CXX) -o $@ $(OBJS1) $(LIBS1) @@ -78,7 +80,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME) x_%.o: %.cpp $(CXX) $(CXXFLAGS) -Wall -fpic -pedantic \ - -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o + -I. -D LIBRARY -c $< -o x_$*.o $(LIB_NAME): $(OBJS2) $(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) diff --git a/src/numbers.cpp b/src/numbers.cpp index f4114d44..f64f2f7a 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -454,6 +454,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous char ph_digits[50]; char ph_thousands[50]; char ph_hundred_and[12]; + char ph_thousand_and[12]; hundreds = value / 100; buf1[0] = 0; @@ -461,6 +462,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous if(hundreds > 0) { ph_thousands[0] = 0; + ph_thousand_and[0] = 0; Lookup("_0C",ph_100); @@ -486,6 +488,11 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous ph_digits[0] = 0; if(hundreds > 0) { + if((langopts.numbers & 0x100000) && (prev_thousands || (ph_thousands[0] != 0))) + { + Lookup("_0and",ph_thousand_and); + } + suppress_null = 1; found = 0; @@ -513,7 +520,7 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous } } - sprintf(buf1,"%s%s%s",ph_thousands,ph_digits,ph_100); + sprintf(buf1,"%s%s%s%s",ph_thousands,ph_thousand_and,ph_digits,ph_100); } ph_hundred_and[0] = 0; diff --git a/src/phoneme.h b/src/phoneme.h index c2662cce..13623b74 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -127,6 +127,7 @@ typedef struct { // Several phoneme tables may be loaded into memory. phoneme_tab points to // one for the current voice extern int n_phoneme_tab; +extern int current_phoneme_table; extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; extern unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited diff --git a/src/speak.cpp b/src/speak.cpp index e77fb790..175f2e50 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -91,6 +91,7 @@ static const char *help_text = "-q\t Quiet, don't produce any speech (may be useful with -x)\n" "-x\t Write phoneme mnemonics to stdout\n" "-X\t Write phonemes mnemonics and translation trace to stdout\n" +"-z\t No final sentence pause at the end of the text\n" "--stdout Write speech output to stdout\n" "--compile=\n" "\t Compile the pronunciation rules and dictionary in the current\n" @@ -500,6 +501,7 @@ int main (int argc, char **argv) option_phonemes = 0; option_waveout = 0; option_wordgap = 0; + option_endpause = 1; option_multibyte = espeakCHARS_AUTO; // auto f_trans = stdout; @@ -559,7 +561,7 @@ int main (int argc, char **argv) #else while(true) { - c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXm", + c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXmz", long_options, &option_index); /* Detect the end of the options. */ @@ -635,6 +637,10 @@ int main (int argc, char **argv) strncpy0(wavefile,optarg2,sizeof(wavefile)); break; + case 'z': + option_endpause = 0; + break; + case 0x100: // --stdin flag_stdin = 1; break; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 6ccb523d..fbddb27e 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,13 +35,14 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.31.10 12.Feb.08"; +const char *version_string = "1.31.12 16.Feb.08"; const int version_phdata = 0x013105; int option_device_number = -1; // copy the current phoneme table into here int n_phoneme_tab; +int current_phoneme_table; PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited @@ -574,6 +575,7 @@ void SelectPhonemeTable(int number) n_phoneme_tab = 0; SetUpPhonemeTable(number,0); // recursively for included phoneme tables n_phoneme_tab++; + current_phoneme_table = number; } // end of SelectPhonemeTable diff --git a/src/synthesize.cpp b/src/synthesize.cpp index f5d94ee6..35d529e0 100755 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1544,6 +1544,11 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) return(0); } + if(current_phoneme_table != voice->phoneme_tab_ix) + { + SelectPhonemeTable(voice->phoneme_tab_ix); + } + // read the next clause from the input text file, translate it, and generate // entries in the wavegen command queue p_text = translator->TranslateClause(f_text,p_text,&clause_tone,&voice_change); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 954e6474..18dd761e 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -440,6 +440,22 @@ SetLengthMods(tr,3); // all equal } break; + case L('k','u'): // Kurdish + { + static const unsigned char stress_amps_ku[8] = {16,16, 20,20, 20,24, 24,22 }; + static const short stress_lengths_ku[8] = {170,170, 190,170, 0,0, 230,240}; + + tr = new Translator(); + SetupTranslator(tr,stress_lengths_ku,stress_amps_ku); + tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 + + tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable + + tr->langopts.numbers = 0x100c69; + tr->langopts.max_initial_consonants = 2; + } + break; + case L('l','a'): //Latin { tr = new Translator(); diff --git a/src/translate.h b/src/translate.h index 2389bc2f..4968a951 100755 --- a/src/translate.h +++ b/src/translate.h @@ -316,7 +316,7 @@ typedef struct { // bit3= , decimal separator, not . // bit4=use three-and-twenty rather than twenty-three // bit5='and' between tens and units - // bit6=add "and" after hundred and thousand + // bit6=add "and" after hundred or thousand // bit7=don't have "and" both after hundreds and also between tens and units // bit8=only one primary stress in tens+units // bit9=only one vowel betwen tens and units @@ -328,6 +328,7 @@ typedef struct { // bit17=recognize roman numbers // bit18=Roman numbers only if upper case // bit19=don't add pause after a number + // bit20='and' before hundreds int numbers; // bits 1-4 use variant form of numbers before thousands,millions,etc.