diff --git a/dictsource/cs_list b/dictsource/cs_list index 99609fa1..45557a43 100644 --- a/dictsource/cs_list +++ b/dictsource/cs_list @@ -140,6 +140,10 @@ si $u // Prepositions +// the $alt2 prepositions should also be included in cs_rules +// as prefixes, so "na-" (for example) is removed from the combined +// word before the pronuciation of the main word is determined. + skrz $u $brk $alt2 // though skrze $u $pause // through pro $u $pause $alt2 // for diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index e2913ac4..57db87f5 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -43,9 +43,9 @@ x z Dictionary de_dict 3 @ @- a A A: aI aU -E E2 E: e: EI I i2 i: -O o: OY U u: W y y: -Y: +E E2 E: e: EI I i2 I: +i: O o: OY U u: W y +y: Y: * : ; b C C2 d D dZ f g h j k l m @@ -69,8 +69,8 @@ Dictionary en_dict 0 3 3: @ @- @2 @5 @L a a2 A: A@ aa aI aI@ aU aU@ E e@ eI I I2 i: i@ -IR O O: o: O@ o@ OI oU -O~ U u: U@ V VR +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 @@ -281,7 +281,7 @@ u U uI u~ y g h j k l l^ m n N n^ p Q r R r- s S s# s; t T tS ts v -w x z Z +w w2 x z Z Dictionary ro_dict @@ -340,10 +340,10 @@ Dictionary zh_dict i i. i[ iou o o- ou u uai y -: f h j k kh l m -n N p ph r R s s. -S; t th ts ts. ts. tS; tS; -tsh v w x z z. +: f j k kh l m n +N p ph r R s s. S; +t th ts ts. ts. tS; tS; tsh +v w x z z. Dictionary jbo_dict @@ -358,11 +358,10 @@ t tS v w x z Z Dictionary th_dict -a a: e E: i i: o O -O: u y +3 a E i i: O O: -c d h k l m n N -p s t +: c d h k l m n +N p s t2 Dictionary hbs_dict @@ -379,8 +378,7 @@ ts tS; v x z Z Dictionary id_dict -@ a aI aU e E i o -O u +@ a aI aU E i O * ? b d dZ f g h j k l m n N n^ p diff --git a/dictsource/en_list b/dictsource/en_list index 63834bd7..89773d84 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -253,7 +253,7 @@ adamant ad@m@nt add ad addict adIkt $onlys addon ad0n -adher adh'i@ +adher adh'i@3 adieu a2dju: adieus a2dju:z adieux a2dju:z @@ -417,7 +417,7 @@ aubergine oUb3Zi:n auger O:g3 aurora $2 aussie 0zI -austere O:st'i@ +austere O:st'i@3 authority a2T0rItI2 authoritative O:T'0rIt@tIv autograph O:t@graf @@ -495,7 +495,7 @@ breathless brETl@s brethren brEDr@n bridesmaid braIdzmeId brigade $2 -brigadier brIga2d'i@ +brigadier brIga2d'i@3 brochure broUS3 brooch broUtS budgerigar bVdZ@rIgA@ @@ -533,11 +533,11 @@ canton kant0n caprice ka2pr'i:s caramel kar@mEl caravan kar@van -career k@r'i@ +career k@r'i@3 caress k@rEs carpel kA@p@l cascade $2 -cashmere kaSm'i@ +cashmere kaSm'i@3 catarrh k@tA@ catholic kaTlIk cavalier $3 @@ -647,7 +647,7 @@ convolute k0nv@l'u:t coop ku:p cooper ku:p3 coordinate koU'O:dIneIt $verb -copier k0pi@ +copier k0pi@3 coral k0r@L coronet k0r@nEt corporal kO@pr@L @@ -835,7 +835,7 @@ facade f@sA:d façade f@sA:d faeces fi:si:z fallible fal@b@L -familiar f@mIli@ +familiar f@mIli@3 famine famIn farewell $2 fasten faas@n @@ -951,11 +951,11 @@ helix hi:lIks hello h@loU henceforth hEnsfo@T hercules h3:kjUli:z -hereto hi@'tu: +hereto hi@3'tu: hermaphrodite $2 hermes h3:mi:z herod hEr@d -heroe hi@oU +heroe hi@roU heroic hI2roUIk heroin hEroUIn heroism hEroUIz@m @@ -1369,13 +1369,13 @@ phoenix fi:nIks photograph foUt@graf piano pI2anoU piecemeal p'i:sm,i:l -pier pi@ +pier pi@3 pigeon pIdZ@n pigsty pIgstaI pilot paIl@t pineapple p'aInap@L pint paInt -pioneer paI@n'i@ +pioneer paI@n'i@3 pious paI@s pipette pIp'Et piquant pi:k@nt @@ -1468,7 +1468,7 @@ radon reId0n ragged ragId rainforest r'eInf,0rIst rajah rA:dZA: -rapier reIpi@ +rapier reIpi@3 rapport rap'o@ rarest re@r@st rascal raask@L @@ -1516,7 +1516,7 @@ reign reIn rein reIn reined reInd reining reInIN -reindeer reIndi@ +reindeer reIndi@3 reinvent ri:Inv'Ent refinery rI2faIn@rI2 relative rEl@tIv @@ -1555,7 +1555,7 @@ retaliatory rIt'ali:@t@rI2 retrial ri:traI@l retry ri:traI reuse ri:'ju:z -rever rI2vi@ // revered +rever rI2vi@3 // revered rhododendron roUd@d'Endr@n rhetoric rEt@rIk $onlys rhinoceros raIn'0s@r@s @@ -1613,7 +1613,7 @@ secretive si:kr@tI2v secretary sEkr@trI2 sedate sI2deIt separate sEp@-r@t -separate sEp@reIt $verb +separate sEp3reIt $verb semen si:m@n semicolon sEmIk'oUl0n senator sEn@t3 @@ -1624,8 +1624,8 @@ series si:ri:z serene s@ri:n sergeant sA@dZ@nt settee $2 -severe sIv'i@ $only -severely sIv'i@lI2 $verbf +severe sIv'i@3 $only +severely sIv'i@3lI2 $verbf several sEvr@L shampoo $2 sheriff S'ErIf @@ -1643,7 +1643,7 @@ silhouette sIlUw'Et simon saIm@n simultaneous $3 singly sINglI2 $verbf -sincerest sIns'i@@st +sincerest sIns'i@r@st sinew sInju: sir s,3: ?5 sir s,VR @@ -1665,7 +1665,7 @@ sonar soUnA@ sonny sVnI2 sooth su:D soundbite saUndbaIt -souvenir su:v@n'i@ +souvenir su:v@n'i@3 sorbet sO@beI soviet soUvi@t spaghetti spag'EtI2 @@ -1737,7 +1737,7 @@ tariff tarIf taskforce t'askf,o@s tatar tA:t3 tearing te@r-I2N -tear ti@ $onlys +tear ti@3 $onlys tear te@ $verb teddybear t'Ed,Ib,e@ ten tEn // untenable @@ -2055,7 +2055,7 @@ Johannesburg $2 Kalgoorlie kalgU@lI2 Karachi k@rA@tSI2 Kiev ki:Ev -Khmer kmi@ +Khmer kmi@3 Korea kOr'i:@ Korean kOr'i:@n Kuala kwA:la2 @@ -2145,7 +2145,7 @@ Winnipeg wInI2pEg Wisconsin wIsk'0nsIn Wyoming waI'oUmI2N Xhosa kO:s@ -zaire zaI'i@ +zaire zaI'i@3 zimbabwe zI2mbA:bwI2 Aaron e@r@n @@ -2309,7 +2309,7 @@ zhivago ZI2vA:goU (first place) f'3:st_pl,eIs ?5 (first place) f'IRst_pl,eIs -(here and there) h'i@||@nd||D'e@ +(here and there) h'i@3||@nd||D'e@ (most of) moUst||@v (such as) sVtS||_a2z $pause @@ -2411,7 +2411,7 @@ beyond bI2j,0nd $strend2 beside bI2s,aId $strend2 between bI2tw,i:n $strend2 together t@g,ED3 $strend2 -near ,ni@ $strend2 +near ,ni@3 $strend2 thence DEns @@ -2536,7 +2536,7 @@ begun bI2gVn become bI,kVm $strend2 became bI,keIm $strend2 -we're %wi@ +we're %wi@3 you're %jO@ ?6 you're %jU@ they're %DeI3 diff --git a/dictsource/en_rules b/dictsource/en_rules index de046c1d..b4698926 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -85,7 +85,7 @@ _) aer (o e@ ae (l eI h) ae (m i: - h) aemorrh Em@r + h) aemorrh Em3r aer e@ _c) aer %e@ r) aer 'A@ @@ -744,7 +744,7 @@ _) aph (@ a2f ap (ath ap _) ap (e eIp - aper (ie a2pi@ + aper (ie a2pi@r _) aperi (t a2pEr@ _) aper (t ap@ _) aph (id eIf @@ -828,7 +828,7 @@ &z) ar (d_ 3 h) ar (ass @r &m) aran @ran - sep) ar (at @r + sep) ar (at 3r w) ar (e e@ k) ar (y ar c) arbo (h ,A@boU @@ -1531,7 +1531,7 @@ _) de (t@ dI2 de (tail di: deter dI2t3: - deter (i dI2ti@ + deter (i dI2ti@r detest dI2tEst _) de (th d%i: de (ton dE @@ -1637,7 +1637,7 @@ &) ecy (_ @sI2 ee i: ee (m 'i: - eer 'i@ + eer 'i@3 t) ee (n_ 'i: ees (_ i:z ch) eese i:z @@ -1775,12 +1775,12 @@ _l) ea (mi E b) ea (n i: XC) ea (n_ i: - ear i@ + ear i@3 _) ear (l 3: _) ear (n 3: ear (th 3: b) ear e@ - b) ear (d i@ + b) ear (d i@3 h) ear (d 3: h) ear (th A@ h) ear (k A@ @@ -1793,7 +1793,7 @@ t) ear (A e@ sw) ear e@ w) ear e@ - w) ear (y i@ + w) ear (y i@3 y) ear (n 3: eas (an Ez eas (en Ez @@ -1878,7 +1878,7 @@ @) ei (n_ i: b) ei (ng i:I eir e@ - w) eir i@ + w) eir i@3 l) ei (s E th) ei (sC i:I _s) eis (m aIz @@ -2107,13 +2107,13 @@ g) eral (d Er@L er (bial '3: _d) er (b A@ - &) er (A @r + &) er (A 3r @) er (o_ 'e@r eri (A 'i@rI2 er (iC Er - &) er (ing @r - er (ie_ @r - er (ie @r + &) er (ing 3r + er (ie_ 3r + er (ie 3r eries (_S2i z &) er (ous =@r m) er (c 3: @@ -2125,21 +2125,21 @@ _qu) er 3: c) er (am I2r &) ere (_ 3 - XC) ere (_ i@ - sph) ere (_ i@ - c) ere (_ 'i@ + XC) ere (_ i@3 + sph) ere (_ i@3 + c) ere (_ 'i@3 i) ere (_ I2e@ - ev) ere (_ i@ + ev) ere (_ i@3 mp) ere (_ e@ - _h) ere i@ + _h) ere i@3 h) ere (f ErI2 h) ere (di I2rE h) ere (s Er@ h) ere (t I2rE @) er (ence_ r er (ent_ r - adh) er (e 'i@ - coh) er (e 'i@ + adh) er (e 'i@3 + coh) er (e 'i@3 h) er (ed I2r c) ere (mon ErI2 h) er (en i@r @@ -2188,8 +2188,8 @@ _v) ery ErI2 _ev) ery rI2 qu) ery i@rI2 - z) er (o i@ - _C) er (o_ i@ + z) er (o i@r + _C) er (o_ i@r er (rA E err (_ 3: @@ -2584,7 +2584,7 @@ _l) io (n aI@ z) io (n aI@ r) ior (_ I3 - &) ior (+ i@ + &) ior (+ i@3 &) ior (_ j3 iority I'0rItI2 iou (rA j@ @@ -2677,7 +2677,7 @@ al) ia (nt I2@ _p) ia (nA i@ iar aI@ - @l) iar (_ i@ + @l) iar (_ i@3 iara (_ I'A:r@ iarch I2A@k iard (_ I23d @@ -2723,12 +2723,12 @@ @) ienne (_ I'En cl) ie (nt aI@ &) ier (y I2@r - ier i@ - &) ier (_NS2i @ + ier i@3 + &) ier (_NS2i 3 _h) ie (r aI@ pl) ier (_ aI@ _Cr) ier aI@ - ier (c i@ + ier (c i@3 ierre (_ I2e@ ie (t aI@ @) ie (th i@ @@ -2898,7 +2898,7 @@ _) inter (@P5 ,Int3 // prefix _) inter (AP5 ,Int@r inter (est Int@r - interfer Int@f'i@ + interfer Int@f'i@3 _) int (erio+ I2nt _) inter (n_ I2nt3: _) inter (nal I2nt3: @@ -3002,7 +3002,7 @@ irer (_ aI@r@ ir 3: ?5 ir IR - @C) ir (_ i@ + @C) ir (_ i@3 st) ir (_ 3: ?5 st) ir (_ IR ir (i Ir @@ -3012,7 +3012,7 @@ ir (o I2r g) ir (o aIr _C) ir (o_ aIr - @) ir (o_ 'i@ + @) ir (o_ 'i@r _) iron aI@n iron (A aIr'0n v) iro (n aIr@ @@ -4081,7 +4081,7 @@ per (petr p3: per (ple p3 per (sis p3 - persever p3:sIv'i@ + persever p3:sIv'i@3 per (sp p@ perspi (ra p3:sp@ per (su p3 @@ -4613,9 +4613,9 @@ l) u (ck V ucul VkjUl n) ucle ju:klI - n) uclear ju:kli@ + n) uclear ju:kli@3 ?3 n) ucle u:klI -?3 n) uclear u:kli@ +?3 n) uclear u:kli@3 @) u (ctive 'V u (guC V f) u (gal 'ju: @@ -4825,10 +4825,10 @@ b) ur (e ju:@r g) ure (_ 3 nj) ure (_ 3 - il) ure (_ i@ - en) ure (_ j@ - r) ure (_ i@ - &s) ure (_ j@ + il) ure (_ i@3 + en) ure (_ j3 + r) ure (_ i@3 + &s) ure (_ j@3 icat) ure (_ jU@ sat) ur (d 3 iz) ure 3 @@ -4848,7 +4848,7 @@ wh w wr r C) we (_ =wI - were (w wi@ + were (w wi@3 th) west w'Est we (w wi: where we@ @@ -5021,7 +5021,7 @@ Ee (d i: EE (_ i: Ee (_ 'i: - Eer (_ 'i@ + Eer (_ 'i@3 Ei (n_ i: Ei (_ aI El (_ @L diff --git a/dictsource/es_rules b/dictsource/es_rules index e65f55e7..55207f86 100644 --- a/dictsource/es_rules +++ b/dictsource/es_rules @@ -70,6 +70,7 @@ _) i (_ i i i i (A J^ + C) i (A j l) i (A %i r) i (A %i diff --git a/dictsource/fr_list b/dictsource/fr_list index 382594ae..7e687639 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -7,7 +7,7 @@ // -// Letters +// Letters names // If a letter has a "word" pronunciation which is different from its // "letter" name, then include the letter name here, with the letter // prefixed by a _ character. @@ -15,19 +15,43 @@ _à a:aksA~gRav â a:aksA~siRkO~flEks ä a:tRema +b be +c se ç sesedij +d de +e @ ë @:tRema é @:aksA~Egy è @:aksA~gRav ê @:aksA~siRkO~flEks -ï i:tRema ë @:tRema +f Ef +g Ze +h aS +i i +ï i:tRema +j Zi +k ka +l El +m Em +n En ñ Entilde +o o ô o:aksA~siRkO~flEks ö o:tRema +p pe +q ky +r ER +s Es +t te +u y ù y:aksA~gRav û y:aksA~siRkO~flEks ü y:tRema +v ve +w dubl@v'e +x iks +z zEd _y i:gR'Ek @@ -173,10 +197,6 @@ utf $abbrev xfce iksEfse@ xy $abbrev -ii d'Y $abbrev // roman numerals -iii tRw'a $abbrev -iv k'atR $abbrev - dr dOkt WR $dot $capital prof $dot diff --git a/dictsource/fr_rules b/dictsource/fr_rules index ae2e3c08..d46b8ff0 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -14,8 +14,6 @@ .group a - - ae (_ e // reggae vitae aen A~ // caen (diff Cicero: aA~) ae ae // maestro @@ -46,14 +44,14 @@ ay Ej // paye a a // bateau + .group b - _) b (_ be // b bb b // abbé om) b (_ // plomb applomb b b // aube + .group c - _) c (_ se // c c' s // s cch k // bacchanale cc (Y ks // accéder @@ -89,7 +87,6 @@ .group d - _) d (_ de dd d // addition _) d' (P2 d _lan) d (_ d // land @@ -110,9 +107,8 @@ r) d (_ // lourd placard d d // don bled -.group e - _) e (_ @ // e +.group e e (Ce_ E eau o // bateau cheveaux j) e (a // Jean Jeanne @@ -322,12 +318,13 @@ e @ // menue + .group ë u) ë // ambiguë ë E // citroën noël + .group f - _) f (_ Ef f f f (f _neu) f (_ans v // liaison: neuf ans @@ -335,7 +332,6 @@ .group g - _) g (_ Ze g g su) gg (Y gZ // suggérer suggestif @@ -376,12 +372,12 @@ g (_ g // grog gag goulag g Z // congé george + .group h - _) h (_ aS h // ahuri + .group i - _) i (_ i i i // cri ie (ment i // remerciement balbutiement @@ -415,25 +411,25 @@ î i // abîme în (i in // vînimes + .group ï ïn (C E~ // coïncider ïn (_ E~ a) ï j // aïeul ï i // ambiguïté + .group j - _) j (_ Zi j Z // adjoint joujoux .group k - _) k (_ ka k k // kafka ket (_ kEt // basket kets (_ kEt // basket + .group l - _) l (_ El l l // lit ll l // aller _) l' (P2 l @@ -443,13 +439,11 @@ .group m - _) m (_ Em m m // film mm m // pomme .group n - _) n (_ En n n // une nn n ng (_ N @@ -459,9 +453,8 @@ A) ng (_ N // parking meeting nn n // panne -.group o - _) o (_ o +.group o cr) oc (_ o // escroc o (ch o // cochon @@ -532,12 +525,13 @@ o O // sobre notions émotions + .group ô ôt (_ o // rôt ô o // cône + .group p - _) p (_ pe p p // pas p (p // appliquer ph f // phrase @@ -559,8 +553,8 @@ se) pt (_ t // sept se) pt (iè t // septième + .group q - _) q (_ ky q k // coq qu k // quatre _) que (_ k@ // que @@ -568,8 +562,8 @@ _) qu' (P3 k // qu'il n) q (_ k // cinq cent + .group r - _) r (_ ER right _^_EN // copyright _su) rr RR // surréaliste ou) rr RR // courrai @@ -577,8 +571,8 @@ rr R // erreur r r // rien + .group s - _) s (_ Es s s // verser sien s (_S1 z2 @@ -627,8 +621,8 @@ s (j z s (v z + .group t - _) t (_ te t t // bataille V) t (_ t2 // silent at end of verb unless next word starts with a vowel t (_ // silent at end of word @@ -684,7 +678,6 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe .group u - _) u (_ y u y // cruel nuage brut ui w^i @@ -705,18 +698,17 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe g) u (ï y // ambiguïté g) u (ë y // ambiguë + .group v - _) v (_ ve v v + .group w - _) w (_ dubl@v'e w w ware (_ _^_EN // hardware, software .group x - _) x (_ iks x ks xs ks // lexique lexicaux vox _e) x (A gz // exagérer exemple @@ -754,8 +746,8 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe yn E~ // laryngite + .group z - _) z (_ zEd z z zz z t) z s // tzigane diff --git a/dictsource/jbo_list b/dictsource/jbo_list index e248f0e0..e7750f59 100644 --- a/dictsource/jbo_list +++ b/dictsource/jbo_list @@ -1,4 +1,9 @@ +// This file is UTF8 encoded +// Spelling to phoneme words for Lojban (an artificial constructed language). + +// Note: initial/final "." has already been removed + // Numbers _0 no _1 pa @@ -48,12 +53,30 @@ e'o $u+ // request po'e $u+ // of zo'e $u+ // pronoun -i $u+ $pause +i i_: $u // sentence break (recognised by eSpeak program). Try a short pause after ".i" + +// end-of-clause [_;_] before these +noi _;_nOI $u +poi _;_pOI $u +no'u _;_nohu $u +po'u _;_pohu $u +goi _;_gOI $u + +ija _;_iZa // should this series be unstressed? +ijanai _;_iZanaI +ije _;_iZe +ije'i _;_iZehi +ijenai _;_iZenaI +ijo _;_iZo +ijonai _;_iZonaI +inaja _;_inaZa + +to _::to $u // start parenthesis, pause but don't raise intonation // terminators (include a pause after) -ku ku_: -boi bOI_: -vau vaU_: -kei keI_: -toi tOI_: +ku ku_:: $u +boi bOI_:: $u +vau vaU_:: $u +kei keI_:: $u +toi tOI_:: $u diff --git a/dictsource/jbo_rules b/dictsource/jbo_rules index d57415ee..7cc8fa89 100644 --- a/dictsource/jbo_rules +++ b/dictsource/jbo_rules @@ -2,6 +2,7 @@ // This file is UTF8 encoded // Spelling to phoneme rules for Lojban (an artificial constructed language). +// Note: initial/final "." has already been removed .group a a a @@ -33,6 +34,8 @@ .group g g g + _) gi ('A_ _;_gi + .group h h h diff --git a/docs/commands.html b/docs/commands.html index 6685dbd9..c1e3abda 100644 --- a/docs/commands.html +++ b/docs/commands.html @@ -162,6 +162,10 @@ The same as --compile, but source line numbers from the *_rules
Speaks the names of punctuation characters when they are encountered in the text. If <characters> are given, then only those listed punctuation characters are spoken, eg. --punct=".,;?"

+

--split [="<minutes>"]
+
+Used with -w, it starts a new WAV file every <minutes> minutes, at the next sentence boundary. +

--voices [=<language code>]
Lists the available voices.
diff --git a/docs/index.html b/docs/index.html index 5e8ba405..20c517c9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -37,7 +37,7 @@ -eSpeak is a compact open source software speech synthesizer for English and other languages.   +eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows.   http://espeak.sourceforge.net

eSpeak produces good quality English speech. It uses a different synthesis method from other open source TTS engines, and sounds quite different. It's perhaps not as natural or "smooth", but I find the articulation clearer and easier to listen to for long periods. @@ -65,7 +65,7 @@ A Windows version of the espeakedit program is also available.


Languages. The eSpeak speech synthesizer supports several languages, however in most cases these are initial drafts and need more work to improve them. Assistance from native speakers is welcome for these, or other new languages. Please contact me if you want to help.

-eSpeak does text to speech synthesis for the following languages, some better than others. Afrikaans, Croatian, Czech, Dutch, English, Esperanto, Finnish, French, German, Greek, Hindi, Hungarian, Icelandic, Italian, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swahili, Swedish, Vietnamese, Welsh. See Languages. +eSpeak does text to speech synthesis for the following languages, some better than others. Afrikaans, Cantonese, Croatian, Czech, Dutch, English, Esperanto, Finnish, French, German, Greek, Hindi, Hungarian, Icelandic, Italian, Lojban, Macedonian, Mandarin, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Spanish, Swahili, Swedish, Vietnamese, Welsh. See Languages.


espeakedit is a GUI program used to prepare and compile phoneme data. It is now available for download. Documentation is currently sparse, but if you want to use it to add or improve language support, let me know.
diff --git a/docs/languages.html b/docs/languages.html index f8d691e3..001a4484 100644 --- a/docs/languages.html +++ b/docs/languages.html @@ -3,7 +3,6 @@ eSpeak Speech Synthesizer - @@ -199,6 +198,11 @@ These languages are only initial naive implementations which have had little or

+jbo  Lojban
+
An artificial language. +
+

+

la  Latin
Stress rules are implemented, but it needs text where long vowels are marked with macrons.
diff --git a/espeak-data/voices/en/en-r b/espeak-data/voices/en/en-r index b5460897..8f42f35f 100755 --- a/espeak-data/voices/en/en-r +++ b/espeak-data/voices/en/en-r @@ -8,11 +8,8 @@ phonemes en_us dictrules 3 6 option 12 1 // reduce [t] -stressLength 145 120 175 175 0 0 260 270 +stressLength 145 125 170 170 0 0 265 280 stressAmp 17 16 20 20 20 22 23 20 //replace 03 I i //replace 03 I2 i - -formant 2 101 100 100 -formant 3 101 100 100 \ No newline at end of file diff --git a/espeak-data/voices/es b/espeak-data/voices/es index 3120797c..65e978fa 100755 --- a/espeak-data/voices/es +++ b/espeak-data/voices/es @@ -2,4 +2,5 @@ name spanish language es gender male +intonation 3 diff --git a/phsource/compile_report b/phsource/compile_report index 70b8de18..f95824e4 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,50 +1,48 @@ -45 phoneme tables +43 phoneme tables new total - base 99 99 - base2 24 118 - en 53 147 + base 98 98 + base2 24 117 + en 54 147 en_n 30 147 - en_us 37 147 + en_us 34 147 en_sc 39 149 en_rp 34 147 en_wm 30 147 en_wi 30 147 - af 38 131 - cy 29 125 - de 33 126 - eo 13 111 - jbo 4 112 - fi 40 130 - fr 35 122 - fr_ca 11 122 - hi 50 135 - ta 13 137 - hu 23 115 - nl 28 122 - pl 15 110 - sk 29 128 - cs 6 128 - hr 20 133 - mk 3 134 - sr 14 133 - ru 38 129 - it 17 121 - la 21 117 - es 9 120 - pt 27 134 - pt_pt 20 134 - ro 36 142 - el 8 118 - grc 12 123 - sv 25 121 - no 28 125 - is 32 124 - vi 42 137 - zhy 40 132 - zh 61 146 - sw 14 108 - th 50 142 - id 14 120 + af 38 130 + cy 29 124 + de 33 125 + eo 13 110 + jbo 4 111 + fi 40 129 + fr 35 121 + fr_ca 11 121 + hi 50 134 + ta 13 136 + hu 23 114 + nl 28 121 + pl 15 109 + sk 29 127 + cs 6 127 + hr 20 132 + mk 3 133 + sr 14 132 + ru 38 128 + it 17 120 + la 21 116 + es 7 117 + pt 27 133 + pt_pt 20 133 + ro 36 141 + el 8 117 + grc 12 122 + sv 25 120 + no 28 124 + is 32 123 + vi 42 136 + zhy 40 131 + zh 61 145 + sw 14 107 Data file Used by b/b [b] base @@ -118,8 +116,8 @@ d/dr [*] base [d] sw d/tap [*;] ro d/tap1 [*] base -d/tap2 [*2] base d/tap3 [*] base +d/tap4 [r] es d/tap_i [*;] ro d/xd [d] base [d[] base @@ -136,7 +134,6 @@ d/xd [d] base [d] sw d/xd_pzd [d;] pl [d;] ru -d/x_tap [*2] base dzh/dzh [dZ] base [dZ;] base [dz;] base @@ -164,8 +161,6 @@ dzh/xdzh [dZ] base dzh/xdz_pzd [J] base [J2] hi envelope/p_214 [214] zh - [5] th -envelope/p_451 [3] th envelope/p_512 [8] vi envelope/p_fall [2] vi [7] vi @@ -177,8 +172,6 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh - [1] th - [2] th envelope/p_fallrise [4] vi envelope/p_level [1] vi [3] zhy @@ -189,7 +182,6 @@ envelope/p_rise [3] vi [2] zhy [5] zhy [35] zh - [4] th envelope/vi_5 [5] vi envelope/vi_5amp [5] vi envelope/vi_6 [6] vi @@ -518,8 +510,6 @@ r/xr [(@)] base ufric/ch [C] base [J^] base [C2] de - [J2] es - [J3] es ufric/ch_sr [h] sr [x] sr ufric/f [f] base @@ -599,7 +589,6 @@ ustop/k_ [k] base [k] el [kh] zh [k] sw - [kh] th ustop/ki [c] base [k] base [k] base2 @@ -648,13 +637,11 @@ ustop/k_unasp [k] base [k] el [k] zhy ustop/k_unasp_ [k] zh - [k] th ustop/null [?] base ustop/p [p] base [p] fr [ph] hi [p] zhy - [ph] th ustop/p_ [p] base [p] fr [ph] hi @@ -688,7 +675,6 @@ ustop/p_unasp [p] base [p] la [p;] ro [p] zh - [p] th ustop/p_unasp_ [p] base2 [p] fi [p] hi @@ -711,7 +697,6 @@ ustop/t_ [t] base [t] sk [t] el [th] zh - [th] th ustop/t_dnt [t] base [t[] base [t] base2 @@ -752,9 +737,7 @@ ustop/t_short [t.] hi [t] sk [t] el ustop/tsh_pzd [tS;] zh - [ch] th ustop/tsh_pzd_unasp [tS;] zh - [c] th ustop/tsh_sr.wav [tS] sr ustop/ts_pzd [tS;] base [ts;] base @@ -772,11 +755,9 @@ ustop/ts_sr.wav [tS;] sr [dZ;] sr ustop/ts_unasp [ts] zh ustop/t_unasp [t] zh - [t] th vdiph/0i [OI] pt [OI] grc [OI] vi - [O:I] th vdiph/0i_2 [OI] en_sc [OI] en_wi [AI] no @@ -792,15 +773,13 @@ vdiph2/i@ [i@] en_n vdiph2/i@_2 [i@] en_wm vdiph2/ie [i@] en_wi [ie] fi - [ia] th - [i:a] th vdiph2/ii@ [i@] en + [i@3] en vdiph2/ii@_3 [i@] vi vdiph2/iioo [io] zh vdiph2/iu [iU] base2 [iU] vi [iu] zhy - [iU] th vdiph2/iu_2 [iu] fi vdiph2/iu_3 [iu] af vdiph2/iu_4 [Iu] cy @@ -813,15 +792,12 @@ vdiph2/oa [Oa] ro vdiph2/o_oo [o@] en_wi [o] is vdiph2/u-@ [y@] vi - [y:a] th vdiph2/u#@ [U@] en_sc vdiph2/uo [uo] fi vdiph2/uu@ [U@] en [U@] en_n [U@] en_wm [u@] vi - [ua] th - [u:a] th vdiph2/y#@ [Y@] af [y@] zh vdiph2/yu [yU] nl @@ -829,6 +805,7 @@ vdiph2/yu [yU] nl vdiph2/y-y# [yY] fi vdiph/8u [oU] en_us [ou] zh +vdiph/aae [aI] en_us vdiph/aai [aai] zhy vdiph/aai_2 [AI] af [AY] cy @@ -853,9 +830,6 @@ vdiph/ai [aI] base2 [aI] it [aI] pt [a:I] vi - [aI] th - [a:I] th - [aI] id vdiph/ai_2 [aI] cy [aY] cy vdiph/ai_3 [aI] no @@ -866,14 +840,12 @@ vdiph/ai_7 [aI] en_sc [aI2] en_sc [aI] is vdiph/ai_en2 [aI] en +vdiph/aoo [aU] en_us vdiph/au [aU] en [aU] af [a:U] vi - [aU] th - [a:U] th vdiph/au# [aU] en_sc -vdiph/au_2 [aU] en_us - [au] zhy +vdiph/au_2 [au] zhy vdiph/au_3 [aU] en_rp vdiph/au_4 [aU] base2 [aU] cy @@ -881,7 +853,6 @@ vdiph/au_4 [aU] base2 [aU] sk [aU] it [aU] is - [aU] id vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en @@ -890,14 +861,12 @@ vdiph/eei [EI] base2 [EI] vi vdiph/eei_2 [eI] eo [ei] fi - [eI] id vdiph/eei_3 [eI] en_rp [eI] sk vdiph/eeu [EU] pt [EU] grc [EU] vi [eu] zhy - [E:U] th vdiph/eeu_2 [EU] la [EU] pt_pt vdiph/eeu_3 [aU] en_n @@ -919,10 +888,7 @@ vdiph/eu [eU] base2 [eU] sk [eU] pt [eU] vi - [eU] th - [e:U] th vdiph/eu_2 [eu] fi -vdiph/@i [@:I] th vdiph/&i [&i] fi [aI] hi vdiph/@i_2 [eI] af @@ -942,7 +908,6 @@ vdiph/oi [oI] base2 [oI] it [OI] la [oI] vi - [o:I] th vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en_n @@ -953,9 +918,9 @@ vdiph/ooi [OI] en [OI] no [oi] zhy vdiph/ooi_2 [OI] af -vdiph/ooi_3 [OI] en_us - [OI] en_rp +vdiph/ooi_3 [OI] en_rp [aI] en_wm +vdiph/ooi_4 [OI] en_us vdiph/oou [oU] cs [OU] grc vdiph/ou [ou] fi @@ -968,15 +933,12 @@ vdiph/@u [u:] en_wm vdiph/@u_2 [oU] en_rp vdiph/@u_3 [@U] ro vdiph/@u_en [oU] en - [@U] id vdiph/ui [uI] base2 [uI] en [uI] eo [ui] fi [uI] vi [ui] zhy - [uI] th - [u:I] th vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy @@ -1035,8 +997,6 @@ voc/dh [D] base voc/dh_ [D] base [D] es voc/j [J^] base - [J3] es -voc/j2 [J2] es voc/Q [Q] base [Q^] base voc/Q_ [Q] base @@ -1061,7 +1021,7 @@ voc/v_ [B] base [v2] nl [v;] ro [v] is -voc/v2 [v] es +voc/vj [v] base vocw/dh [D] base [D] es vocw/Q [Q] base @@ -1074,7 +1034,6 @@ vocw/v [B] base [v] base [v] fr [v] ta - [v] es [v;] ro vocw/zh [Z] base [Z;] ro @@ -1109,7 +1068,6 @@ vowel/@ [@] base [@] en_rp [V] cy [@4] hi - [@] th vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1124,7 +1082,8 @@ vowel/0 [O] base2 vowel/0_2 [0] en_n [O] pt_pt [o] sw -vowel/0_3 [O:] en_us +vowel/0_3 [O] en_us + [O:] en_us [O] en_sc [0] en_rp [A] hu @@ -1142,7 +1101,6 @@ vowel/3_3 [3:] en_rp vowel/3_en [3:] en [e@] en_wm [3:] af - [@:] th vowel/@_4 [@] nl [@] no vowel/8_2 [U] en_us @@ -1163,9 +1121,6 @@ vowel/a [a] en_n [a] hr [a] it [a] zh - [a] th - [a:] th - [a] id vowel/a# [a/] base2 [a2] en_sc [a2] en_wi @@ -1182,8 +1137,7 @@ vowel/a_2 [a] base2 [a] pt_pt [a] ro [a:] vi -vowel/a#_2 [a] ta - [&] hr +vowel/a#_2 [&] hr [a2] sv [&] is [a/] sw @@ -1209,13 +1163,13 @@ vowel/a#_3 [a2] en [a] zhy vowel/a_4 [a/] el [a] vi -vowel/a_5 [a/] it +vowel/a_5 [a:] ta + [a/] it [a] la [a] sv [a] sw vowel/aa [a] fi [A] fr_ca - [a:] ta [A] no [A:] no [aa] zhy @@ -1262,9 +1216,6 @@ vowel/e [e] base2 [e] pt_pt [e] grc [e] vi - [e] th - [e:] th - [e] id vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1302,8 +1253,6 @@ vowel/ee_3 [&] af vowel/ee_6 [E] en_n [&] sk [E3] sv - [E] th - [E:] th vowel/e_mid [E] en_rp [e] jbo [E] fr_ca @@ -1317,8 +1266,6 @@ vowel/e_mid [E] en_rp [E] pt_pt [E] no [E] is - [E] id - [E2] id vowel/e_mid2 [E] af [E] de [E2] de @@ -1332,10 +1279,7 @@ vowel/e_mid2 [E] af vowel/@_fnt [@] en_wi [@2] en_wi [@2] hr -vowel/@_hgh [@] en_us - [@2] en_us - [@5] en_us - [@] hr +vowel/@_hgh [@] hr vowel/i [i] base2 [i:] en_n [i] en_wm @@ -1356,8 +1300,6 @@ vowel/i [i] base2 [i] zhy [i] zh [i] sw - [i] th - [i:] th vowel/i# [i] en_us [i] en_rp [y:] cy @@ -1374,8 +1316,6 @@ vowel/i_4 [i] fi [i] hu [I] it [i] is -vowel/i#_4 [y] th - [y:] th vowel/i_5 [i:] en_sc vowel/i#_5 [y] pt_pt [i/] pt_pt @@ -1383,7 +1323,6 @@ vowel/i#_5 [y] pt_pt vowel/i_6 [i:] en_us [i] ta [i] hr - [i] id vowel/i_en [i:] en [i] vi vowel/i_fnt [i:] en_wi @@ -1432,7 +1371,6 @@ vowel/@_low [3] en_rp [@2] hi [@] ro [@2] no - [@] id vowel/o [o] base2 [o:] en [oU] en_wi @@ -1448,9 +1386,6 @@ vowel/o [o] base2 [o:] sv [o] zh [u] zh - [o] th - [o:] th - [o] id vowel/o- [o-] zh vowel/o_2 [o:] cy [o:] hi @@ -1484,9 +1419,6 @@ vowel/oo [O:] en_sc [O] sv [O] no [o] zhy - [O] th - [O:] th - [O] id vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -1534,12 +1466,11 @@ vowel/u [u:] en_wi [u:] de [u] eo [U] fr + [u] ta + [u:] ta [u:] cs [U] la [u] zh - [u] th - [u:] th - [u] id vowel/u# [u-] en [u:] en_sc vowel/u_2 [u1] fi @@ -1563,7 +1494,6 @@ vowel/u_bck [u] base2 [u] fi [u] fr_ca [u:] hi - [u:] ta [u:] hu [u] nl [u] pl @@ -1589,7 +1519,6 @@ vowel/uu_bck [U] en_n [U] en_wi [U] fr_ca [U] hi - [u] ta [u] hu [U] pt [U] no @@ -1601,6 +1530,7 @@ vowel/V_2 [V] en [V#] ru vowel/V_3 [V] en_rp [V] hi + [a] ta vowel/V_4 [V] en_sc [@:] vi vowel/V_6 [V] en_us @@ -1682,7 +1612,6 @@ vwl_en_us/3_us [3] en_us [3:] en_us vwl_en_us/a [a] en_us [aa] en_us -vwl_en_us/aai [aI] en_us vwl_en_us/ai@ [aI@] en_us vwl_en_us/ar [A:] en_us [A@] en_us @@ -1690,11 +1619,10 @@ vwl_en_us/ee [E] en_us vwl_en_us/er [e@] en_us vwl_en_us/ii [I] en_us [I2] en_us -vwl_en_us/ir [i@] en_us +vwl_en_us/ir [i@3] en_us [i@] en_sc -vwl_en_us/oo [O] en_us +vwl_en_us/oor [O@] en_us vwl_en_us/or [O:] en_us - [O@] en_us [o@] en_us [O:] en_sc vwl_en_us/ur [U@] en_us @@ -1816,12 +1744,12 @@ x/d_ [d] base [d] pl [d] hr [d] ru + [r] es [d;] ro [d] el [d] is [d] sw -x/d_dnt [*2] base - [d[] base +x/d_dnt [d[] base [d] base2 [d] fi [d] hi diff --git a/phsource/d/tap4 b/phsource/d/tap4 new file mode 100644 index 00000000..410ee52e Binary files /dev/null and b/phsource/d/tap4 differ diff --git a/phsource/ph_english b/phsource/ph_english index aca36a09..2cc50292 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -305,6 +305,14 @@ phoneme i@ linkout r- endphoneme +phoneme i@3 + vowel starttype (i) endtype (@) + length 250 + formants vdiph2/ii@ + linkout r- +endphoneme + + phoneme U@ vowel starttype (u) endtype (@) diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 838ba68f..c0c694bb 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -5,42 +5,16 @@ //******************************************************************* -phoneme @ // Schwa - vowel starttype (@) endtype (@) - formants vowel/@_hgh - unstressed - linkout r- - length 130 -endphoneme - - phoneme 3 // Schwa, used for rhotic schwa in American vowel starttype (@) endtype (@) formants vwl_en_us/3_us -// formants vowel/3_2 unstressed linkout r- beforevowel @ - length 210 + length 215 endphoneme -phoneme @2 // Schwa, changes to I before a vowel - vowel starttype (@) endtype (@) - formants vowel/@_hgh - unstressed - beforevowel I2 - length 120 -endphoneme - -phoneme @5 // Schwa, changes to U before a vowel - vowel starttype (@) endtype (@) - formants vowel/@_hgh - unstressed - beforevowelpause U - length 130 -endphoneme - phoneme @L vowel starttype (@) endtype l @@ -54,7 +28,6 @@ endphoneme phoneme a vowel starttype (a) endtype (@) length 200 -// formants vowel/&_2 formants vwl_en_us/a reduceto a2 0 endphoneme @@ -62,8 +35,7 @@ endphoneme phoneme aa // 'bath' etc. vowel starttype (a) endtype (@) - length 220 -// formants vowel/&_2 + length 215 formants vwl_en_us/a linkout r- endphoneme @@ -89,7 +61,7 @@ endphoneme phoneme I vowel starttype (i) endtype (i) - length 150 + length 155 formants vwl_en_us/ii linkout ; endphoneme @@ -98,7 +70,7 @@ endphoneme phoneme I2 vowel starttype (i) endtype (i) unstressed - length 150 + length 155 formants vwl_en_us/ii linkout ; endphoneme @@ -106,7 +78,7 @@ endphoneme phoneme i // optional variant of [I] for end of words vowel starttype (i) endtype (i) - length 200 + length 190 // formants vwl_en_us/i_final3 formants vowel/i# linkout ; @@ -115,7 +87,7 @@ endphoneme phoneme 0 vowel starttype (o) endtype (o) - length 200 + length 195 formants vowel/aa_8 reduceto @ 0 endphoneme @@ -123,8 +95,7 @@ endphoneme phoneme V vowel starttype (a) endtype (@) - length 165 -// formants vowel/V + length 155 formants vowel/V_6 reduceto @ 0 endphoneme @@ -139,7 +110,7 @@ endphoneme phoneme A: vowel starttype (a) endtype (a) - length 200 + length 215 formants vowel/aa_8 before r vwl_en_us/ar linkout r- @@ -148,7 +119,7 @@ endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vowel starttype (a) endtype (@) - length 240 + length 255 formants vwl_en_us/ar appendph r endphoneme @@ -156,7 +127,7 @@ endphoneme phoneme 3: vowel starttype (@) endtype (@) - length 220 + length 240 formants vwl_en_us/3_us linkout r- endphoneme @@ -172,7 +143,7 @@ endphoneme phoneme O: vowel starttype (o) endtype (o) - length 200 + length 205 formants vowel/0_3 before r vwl_en_us/or reduceto @ 0 @@ -181,16 +152,16 @@ endphoneme phoneme O@ vowel starttype (o) endtype (@) - length 270 -// formants vwl_en_us/oor - formants vwl_en_us/or + length 265 + formants vwl_en_us/oor +// formants vwl_en_us/or appendph r endphoneme phoneme o@ vowel starttype (o) endtype (@) - length 270 + length 265 formants vwl_en_us/or appendph r endphoneme @@ -199,29 +170,29 @@ endphoneme phoneme O vowel starttype (o) endtype (o) length 200 - formants vwl_en_us/oo + formants vowel/0_3 reduceto @ 0 endphoneme phoneme u: vowel starttype (u) endtype (u) - length 170 + length 175 formants vowel/u#_5 // before l/2 vwl_en/u_L-40+l/L2_uL endphoneme phoneme aU - vowel starttype (a) endtype (u) - length 210 - formants vdiph/au_2 + vowel starttype (a) endtype (o) + length 235 + formants vdiph/aoo endphoneme phoneme oU vowel starttype (@) endtype (u) - length 240 + length 235 formants vdiph/8u endphoneme @@ -229,7 +200,7 @@ endphoneme phoneme aI vowel starttype (a) endtype (i) length 235 - formants vwl_en_us/aai + formants vdiph/aae endphoneme @@ -237,28 +208,27 @@ phoneme eI vowel starttype (e) endtype (i) length 220 formants vdiph2/ei_4 -// formants vwl_en_us/ei endphoneme phoneme OI vowel starttype (o) endtype (i) - length 300 - formants vdiph/ooi_3 + length 290 + formants vdiph/ooi_4 endphoneme phoneme e@ vowel starttype (e) endtype (@) - length 280 + length 275 formants vwl_en_us/er appendph r endphoneme -phoneme i@ +phoneme i@3 vowel starttype (i) endtype (@) - length 230 + length 255 formants vwl_en_us/ir appendph r endphoneme @@ -266,7 +236,7 @@ endphoneme phoneme U@ vowel starttype (@) endtype (@) - length 230 + length 235 formants vwl_en_us/ur linkout r- endphoneme @@ -274,7 +244,7 @@ endphoneme phoneme aI@ vowel starttype (a) endtype (@) - length 270 + length 265 formants vwl_en_us/ai@ linkout r- endphoneme @@ -282,7 +252,7 @@ endphoneme phoneme aU@ vowel starttype (a) endtype (@) - length 270 + length 260 formants vwl_en/aU@ linkout r- endphoneme diff --git a/phsource/ph_slovak b/phsource/ph_slovak index fdb0a8c2..3f432f99 100644 --- a/phsource/ph_slovak +++ b/phsource/ph_slovak @@ -137,7 +137,7 @@ phoneme R^/ // Czech r-caron (weaker, for after p,f,t,k) vcd pla frc sibilant vowelin f1=0 f2=1700 -300 300 f3=-300 80 vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk - formants voc/zh_2+r3/rz_cs%30 + formants voc/zh_2+r3/rz_cs%25 lengthmod 6 endphoneme diff --git a/phsource/ph_spanish b/phsource/ph_spanish index bd9226df..0cdd313c 100644 --- a/phsource/ph_spanish +++ b/phsource/ph_spanish @@ -56,30 +56,16 @@ phoneme s endphoneme -phoneme v // TEST - 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 - lengthmod 6 - formants voc/v2+vocw/v // shorter -endphoneme - -phoneme J2 // TEST palatal fricative (Kirshenbaum C) - vcd pal frc palatal - vowelin f1=2 f2=2700 400 600 f3=200 70 - vowelout f1=2 f2=2700 400 600 f3=200 70 len=100 - lengthmod 6 - formants voc/j2+ufric/ch%50 -endphoneme - -phoneme J3 // TEST palatal fricative (Kirshenbaum C) - vcd pal frc palatal - vowelin f1=2 f2=2700 400 600 f3=200 70 - vowelout f1=2 f2=2700 400 600 f3=200 70 len=100 - lengthmod 6 - formants voc/j+ufric/ch%5 +phoneme r // TEST flap ?? + vcd alv flp + brkafter + vowelout f1=3 f2=1500 -400 300 f3=-100 80 rms=35 len=50 + vowelin f1=0 f2=1500 -300 300 f3=-100 80 + formants d/tap4+x/d_%30 + lengthmod 3 endphoneme + diff --git a/phsource/ph_tamil b/phsource/ph_tamil index 92631b51..d4bf8908 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -7,14 +7,14 @@ phoneme a vowel starttype (@) endtype (@) length 130 - formants vowel/a#_2 + formants vowel/V_3 endphoneme phoneme a: vowel starttype (a) endtype (a) length 270 - formants vowel/aa + formants vowel/a_5 endphoneme @@ -64,14 +64,14 @@ endphoneme phoneme u vowel starttype (u) endtype (u) length 130 - formants vowel/uu_bck + formants vowel/u endphoneme phoneme u: vowel starttype (u) endtype (u) length 270 - formants vowel/u_bck + formants vowel/u endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index e823f3bb..23302d5b 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -28,8 +28,9 @@ phonemenumber 21 _^_ // Change language phonemenumber 22 _X1 // a language specific action phonemenumber 23 _| // very short pause phonemenumber 24 _:: // long pause -phonemenumber 25 _;_ // clause pause -phonemenumber 26 t# // reduced version of [t] +phonemenumber 25 t# // reduced version of [t] +phonemenumber 26 '! // stress - emphasized +phonemenumber 27 _;_ // clause pause // The base phoneme table contains the utility phonemes, the consonants, // and a schwa. The vowels are defined in the language specific phoneme @@ -137,7 +138,7 @@ phoneme _;_ // clause pause pause formants NULL starttype _ endtype _ - length 150 + length 200 lengthmod 1 endphoneme @@ -674,20 +675,6 @@ phoneme * // flap lengthmod 3 endphoneme -phoneme *2 // TEST flap - vcd alv flp - vowelout f1=2 f2=1700 -300 200 f3=-300 60 len=15 brk - vowelin f1=2 f2=1700 -300 150 f3=-200 80 - formants d/tap2+x/d_dnt%30 - after _ NULL - after @ d/x_tap - vowelin f1=1 f2=1700 -300 150 f3=-200 80 - before (i) d/tap2+x/d_dnt%30 - lengthmod 3 - switchvoicing t -endphoneme - - phoneme dZ @@ -790,6 +777,7 @@ phoneme v vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 lengthmod 6 formants voc/v+vocw/v + before (r) voc/vj+vocw/v before _ voc/v_+vocw/v switchvoicing f endphoneme diff --git a/phsource/vdiph/8u b/phsource/vdiph/8u index 2cd358b9..0339c285 100644 Binary files a/phsource/vdiph/8u and b/phsource/vdiph/8u differ diff --git a/phsource/vdiph/Vu_4 b/phsource/vdiph/Vu_4 new file mode 100644 index 00000000..40663692 Binary files /dev/null and b/phsource/vdiph/Vu_4 differ diff --git a/phsource/vwl_en_us/aai b/phsource/vdiph/aae similarity index 55% rename from phsource/vwl_en_us/aai rename to phsource/vdiph/aae index 45c1eb55..25b5ed8a 100644 Binary files a/phsource/vwl_en_us/aai and b/phsource/vdiph/aae differ diff --git a/phsource/vdiph/aoo b/phsource/vdiph/aoo new file mode 100644 index 00000000..a00fd14f Binary files /dev/null and b/phsource/vdiph/aoo differ diff --git a/phsource/vdiph/ooi_3 b/phsource/vdiph/ooi_3 index 7469a316..f512113d 100644 Binary files a/phsource/vdiph/ooi_3 and b/phsource/vdiph/ooi_3 differ diff --git a/phsource/vdiph/ooi_4 b/phsource/vdiph/ooi_4 new file mode 100644 index 00000000..8424bf6a Binary files /dev/null and b/phsource/vdiph/ooi_4 differ diff --git a/phsource/vdiph/vowelchart.png b/phsource/vdiph/vowelchart.png index 69d89a36..9fa880c8 100644 Binary files a/phsource/vdiph/vowelchart.png and b/phsource/vdiph/vowelchart.png differ diff --git a/phsource/vdiph2/ei_4 b/phsource/vdiph2/ei_4 index 084280c1..267ff01e 100644 Binary files a/phsource/vdiph2/ei_4 and b/phsource/vdiph2/ei_4 differ diff --git a/phsource/vdiph2/vowelchart.png b/phsource/vdiph2/vowelchart.png index a55d533c..9d8f3e12 100644 Binary files a/phsource/vdiph2/vowelchart.png and b/phsource/vdiph2/vowelchart.png differ diff --git a/phsource/voc/vj b/phsource/voc/vj new file mode 100644 index 00000000..44f2bfb1 Binary files /dev/null and b/phsource/voc/vj differ diff --git a/phsource/voc/zh_2 b/phsource/voc/zh_2 index f063c783..ac9fd245 100644 Binary files a/phsource/voc/zh_2 and b/phsource/voc/zh_2 differ diff --git a/phsource/vowel/V_6 b/phsource/vowel/V_6 new file mode 100644 index 00000000..46faf887 Binary files /dev/null and b/phsource/vowel/V_6 differ diff --git a/phsource/vowel/aa_8 b/phsource/vowel/aa_8 index af60e3da..2b8272c3 100644 Binary files a/phsource/vowel/aa_8 and b/phsource/vowel/aa_8 differ diff --git a/phsource/vowel/u_bck2 b/phsource/vowel/u_bck2 new file mode 100644 index 00000000..dfc99f0a Binary files /dev/null and b/phsource/vowel/u_bck2 differ diff --git a/phsource/vowel/vowelchart.png b/phsource/vowel/vowelchart.png index 1e935aab..211021b5 100644 Binary files a/phsource/vowel/vowelchart.png and b/phsource/vowel/vowelchart.png differ diff --git a/phsource/vwl_en_us/3_us b/phsource/vwl_en_us/3_us index b820a438..0e5ca6c6 100644 Binary files a/phsource/vwl_en_us/3_us and b/phsource/vwl_en_us/3_us differ diff --git a/phsource/vwl_en_us/@r_us b/phsource/vwl_en_us/@r_us deleted file mode 100644 index 2476b91d..00000000 Binary files a/phsource/vwl_en_us/@r_us and /dev/null differ diff --git a/phsource/vwl_en_us/V b/phsource/vwl_en_us/V deleted file mode 100644 index 74c045ca..00000000 Binary files a/phsource/vwl_en_us/V and /dev/null differ diff --git a/phsource/vwl_en_us/a b/phsource/vwl_en_us/a index cec2f646..3d9556ec 100644 Binary files a/phsource/vwl_en_us/a and b/phsource/vwl_en_us/a differ diff --git a/phsource/vwl_en_us/ai@ b/phsource/vwl_en_us/ai@ index f4932e36..32d27fed 100644 Binary files a/phsource/vwl_en_us/ai@ and b/phsource/vwl_en_us/ai@ differ diff --git a/phsource/vwl_en_us/ar b/phsource/vwl_en_us/ar index 22a1427f..5cc2166e 100644 Binary files a/phsource/vwl_en_us/ar and b/phsource/vwl_en_us/ar differ diff --git a/phsource/vwl_en_us/ee b/phsource/vwl_en_us/ee index 43e5dbc0..faa06f94 100644 Binary files a/phsource/vwl_en_us/ee and b/phsource/vwl_en_us/ee differ diff --git a/phsource/vwl_en_us/ei b/phsource/vwl_en_us/ei deleted file mode 100644 index 6a088d3d..00000000 Binary files a/phsource/vwl_en_us/ei and /dev/null differ diff --git a/phsource/vwl_en_us/er b/phsource/vwl_en_us/er index 344d6d07..a3da4331 100644 Binary files a/phsource/vwl_en_us/er and b/phsource/vwl_en_us/er differ diff --git a/phsource/vwl_en_us/ii b/phsource/vwl_en_us/ii index 6d1b6767..de744c3b 100644 Binary files a/phsource/vwl_en_us/ii and b/phsource/vwl_en_us/ii differ diff --git a/phsource/vwl_en_us/ir b/phsource/vwl_en_us/ir index 00397e58..9b5ae294 100644 Binary files a/phsource/vwl_en_us/ir and b/phsource/vwl_en_us/ir differ diff --git a/phsource/vwl_en_us/oo b/phsource/vwl_en_us/oo deleted file mode 100644 index e0496fa1..00000000 Binary files a/phsource/vwl_en_us/oo and /dev/null differ diff --git a/phsource/vwl_en_us/oor b/phsource/vwl_en_us/oor index 7a37a0ad..e005694d 100644 Binary files a/phsource/vwl_en_us/oor and b/phsource/vwl_en_us/oor differ diff --git a/phsource/vwl_en_us/or b/phsource/vwl_en_us/or index b44141ea..d4e998e6 100644 Binary files a/phsource/vwl_en_us/or and b/phsource/vwl_en_us/or differ diff --git a/src/event.cpp b/src/event.cpp index c032f203..bcb75ef1 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -193,11 +193,11 @@ static espeak_EVENT* event_copy (espeak_EVENT* event) static void event_notify(espeak_EVENT* event) { ENTER("event_notify"); - static unsigned int a_old_uid = 0; espeak_EVENT events[2]; memcpy(&events[0],event,sizeof(espeak_EVENT)); // the event parameter in the callback function should be an array of eventd + memcpy(&events[1],event,sizeof(espeak_EVENT)); events[1].type = espeakEVENT_LIST_TERMINATED; // ... terminated by an event type=0 if (event && my_callback) @@ -207,31 +207,33 @@ ENTER("event_notify"); switch(event->type) { case espeakEVENT_SENTENCE: - my_callback(NULL, 0, event); + my_callback(NULL, 0, events); a_old_uid = event->unique_identifier; break; + case espeakEVENT_MSG_TERMINATED: + case espeakEVENT_MARK: case espeakEVENT_WORD: - case espeakEVENT_MSG_TERMINATED: + case espeakEVENT_END: + case espeakEVENT_PHONEME: { +// jonsd - I'm not sure what this is for. gilles says it's for when Gnome Speech reads a file of blank lines if (a_old_uid != event->unique_identifier) { - espeak_EVENT_TYPE a_new_type = event->type; - event->type = espeakEVENT_SENTENCE; - my_callback(NULL, 0, event); - event->type = a_new_type; + espeak_EVENT_TYPE a_new_type = events[0].type; + events[0].type = espeakEVENT_SENTENCE; + my_callback(NULL, 0, events); + events[0].type = a_new_type; usleep(50000); } - my_callback(NULL, 0, event); + my_callback(NULL, 0, events); a_old_uid = event->unique_identifier; } break; default: - case espeakEVENT_LIST_TERMINATED: - case espeakEVENT_MARK: - case espeakEVENT_PLAY: - case espeakEVENT_END: + case espeakEVENT_LIST_TERMINATED: + case espeakEVENT_PLAY: break; } } diff --git a/src/extras.cpp b/src/extras.cpp index 30847e0d..9cea30b4 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -80,6 +80,8 @@ void CloseWaveFile3(FILE *f) unsigned int pos; static int value; + if(f == NULL) + return; fflush(f); pos = ftell(f); @@ -118,13 +120,13 @@ int TestUriCallback(int type, const char *uri, const char *base) int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events) {//==================================================================== int type; + f_events = fopen("/home/jsd1/speechdata/text/events","a"); fprintf(f_events,"--\n"); - if(f_wavtest == NULL) return(0); while((type = events->type) != 0) { - fprintf(f_events,"%5d %4d (%2d) %d ",events->audio_position,events->text_position,events->length,type); + fprintf(f_events,"%2d (%4d %4d) %5d %5d (%3d) ",type,events->unique_identifier,(int)events->user_data,events->audio_position,events->text_position,events->length); if((type==3) || (type==4)) fprintf(f_events,"'%s'\n",events->id.name); else @@ -136,15 +138,15 @@ int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events) events++; } - if(wav == NULL) + if((wav == NULL) && (f_wavtest != NULL)) { fprintf(f_events,"Finished\n"); CloseWaveFile3(f_wavtest); f_wavtest = NULL; - fclose(f_events); - return(0); } + fclose(f_events); + if(f_wavtest == NULL) return(0); fwrite(wav,numsamples*2,1,f_wavtest); return(0); } @@ -1154,71 +1156,11 @@ void Test2() fclose(f_out); } -void Test3() -{ - espeak_VOICE voicespec; - espeak_VOICE *newvoice; -int x; - - espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL,0); - memset(&voicespec,0,sizeof(voicespec)); - voicespec.languages = "de"; - voicespec.gender = 2; - - espeak_SetVoiceByProperties(&voicespec); - newvoice = espeak_GetCurrentVoice(); - x = 1; -} #endif -#define OUTPUT_MODE AUDIO_OUTPUT_PLAYBACK -#define TEXT "Hello world." -#define TEXT_SSML ("" TEXT "") -static void -speak(const char *text) -{ - int result; - result = espeak_Synth(text, strlen(text) + 1, 0, POS_CHARACTER, 0, espeakSSML, NULL, NULL); - assert(result == EE_OK); -} -int test4() { - espeak_ERROR result; - int sample_rate; - sample_rate = espeak_Initialize(OUTPUT_MODE, 2000, NULL, 0); - assert(sample_rate != EE_INTERNAL_ERROR); - espeak_SetSynthCallback(synth_callback); - - espeak_VOICE voice; - memset(&voice, 0, sizeof(espeak_VOICE)); -// voice.name = "default"; - // voice.languages = "en"; - voice.gender = 2; -// voice.age = 4; - - result = espeak_SetVoiceByProperties(&voice); - assert(result == EE_OK); - speak(TEXT_SSML); - speak(TEXT_SSML); - espeak_Synchronize(); - -#ifdef deleted - /* Now the same ting without ssml tags. */ -result = espeak_SetVoiceByProperties(&voice); - assert(result == EE_OK); - speak(TEXT); - speak(TEXT); - espeak_Synchronize(); -#endif - result = espeak_Terminate(); - assert(result == EE_OK); - - return 0; -} - - -const char* text1 = "Hello World2. This is the second sentence"; +const char* text1 = "Hello, World2 . This is the second sentence"; void TestTest(int control) {//======================= @@ -1227,10 +1169,9 @@ void TestTest(int control) unsigned int ix=0; char textbuf[2000]; espeak_VOICE voice; - unsigned int unique_identifier=0; + static unsigned int unique_identifier= 123; + static int user_data = 456; -//FindPhonemesUsed(); -//return; //CharsetToUnicode("ISO-8859-4"); //CharsetToUnicode("ISCII"); @@ -1243,7 +1184,7 @@ if(control==2) } memset(&voice,0,sizeof(voice)); - f = fopen("/home/jsd1/speechdata/text/test","r"); + f = fopen("/home/jsd1/speechdata/text/test.txt","r"); if(f==NULL) return; @@ -1259,13 +1200,15 @@ if(control==2) f_wavtest = OpenWaveFile3("/home/jsd1/speechdata/text/test.wav"); f_events = fopen("/home/jsd1/speechdata/text/events","w"); - fprintf(f_events,"Audio Text Length Type Id\n"); + fprintf(f_events,"Type Audio Text Length Id\n"); + fclose(f_events); - espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL,1000,NULL,1); + espeak_Initialize(AUDIO_OUTPUT_PLAYBACK,1000,NULL,0); espeak_SetSynthCallback(TestSynthCallback); espeak_SetUriCallback(TestUriCallback); - espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, NULL); + espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); + espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); espeak_SetParameter(espeakPUNCTUATION, 1, 0); espeak_Synchronize(); diff --git a/src/intonation.cpp b/src/intonation.cpp index d751af83..6c88abb5 100755 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -35,10 +35,15 @@ provide a more flexible intonation system. */ +// bits in SYLLABLE.flags +#define SYL_RISE 1 +#define SYL_EMPHASIS 2 +#define SYL_END_CLAUSE 4 + typedef struct { char stress; char env; - char flags; //bit 0=pitch rising, bit1=emnphasized + char flags; //bit 0=pitch rising, bit1=emnphasized, bit2=end of clause char nextph_type; short pitch1; short pitch2; @@ -286,7 +291,7 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = { 20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 28, 0}, {PITCHfall, 41, 4, PITCHfall, 41, 27, // 3 exclamation - 20, 25, 34, 24, drops_0, 3, 4, 5, oflow_emf, back_emf, 16, 4, 0}, + 20, 25, 36, 22, drops_0, 3, 4, 5, oflow_emf, back_emf, 16, 4, 0}, {PITCHfall, 38, 2, PITCHfall, 42, 30, // 4 statement, emphatic 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, @@ -456,7 +461,7 @@ static void set_pitch(SYLLABLE *syl, int base, int drop) if(drop < 0) { - flags = 1; + flags = SYL_RISE; drop = -drop; } @@ -892,8 +897,10 @@ void Translator::CalcPitches(int clause_type) int option; int group_tone; int group_tone_emph; + int group_tone_comma; int ph_start=0; int st_start; + int st_clause_end; int count; int n_primary; int count_primary; @@ -917,6 +924,11 @@ void Translator::CalcPitches(int clause_type) if(p->tone >= 4) n_primary++; } + else + if((p->ph->code == phonPAUSE_CLAUSE) && (n_st > 0)) + { + syllable_tab[n_st-1].flags |= SYL_END_CLAUSE; + } } syllable_tab[n_st].stress = 0; // extra 0 entry at the end @@ -938,6 +950,7 @@ void Translator::CalcPitches(int clause_type) group_tone = punct_to_tone[option][clause_type]; group_tone_emph = punct_to_tone[option][5]; // emphatic form of statement + group_tone_comma = punct_to_tone[option][1]; // emphatic form of statement if(clause_type == 4) no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */ @@ -975,7 +988,7 @@ void Translator::CalcPitches(int clause_type) if(syllable_tab[ix].stress == 6) { // emphasize this syllable, but don't end the current tone group - syllable_tab[st_ix].flags = 2; + syllable_tab[st_ix].flags = SYL_EMPHASIS; syl->stress = 5; break; } @@ -985,7 +998,7 @@ void Translator::CalcPitches(int clause_type) if(syl->stress == 6) { // an emphasized syllable, end the tone group after the next primary stress - syllable_tab[st_ix].flags = 2; + syllable_tab[st_ix].flags = SYL_EMPHASIS; count = 0; if((n_primary - count_primary) > 1) @@ -1011,6 +1024,14 @@ void Translator::CalcPitches(int clause_type) st_start = ix; } + if((st_start < st_ix) && (syl->flags & SYL_END_CLAUSE)) + { + // end of clause after this syllable, indicated by a phonPAUSE_CLAUSE phoneme + st_clause_end = st_ix+1; + count_pitch_vowels(st_start, st_clause_end, st_clause_end); + calc_pitches(st_start, st_clause_end, group_tone_comma); + st_start = st_clause_end; + } } if(st_start < st_ix) @@ -1040,7 +1061,7 @@ void Translator::CalcPitches(int clause_type) p->pitch2 = x; p->env = PITCHfall; - if(syl->flags & 1) + if(syl->flags & SYL_RISE) { p->env = PITCHrise; } @@ -1054,7 +1075,7 @@ void Translator::CalcPitches(int clause_type) if(p->tone > 5) p->env = syl->env; - if(syl->flags & 2) + if(syl->flags & SYL_EMPHASIS) { p->tone |= 8; // emphasized } diff --git a/src/phoneme.h b/src/phoneme.h index 1b938fc9..fb2acc23 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -85,6 +85,8 @@ #define phonPAUSE_LONG 24 #define phonT_REDUCED 25 #define phonSTRESS_TONIC 26 +#define phonPAUSE_CLAUSE 27 + extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop // place of articulation diff --git a/src/readclause.cpp b/src/readclause.cpp index 3e9928c1..9495288c 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -50,6 +50,7 @@ int ungot_char2 = 0; char *p_textinput; wchar_t *p_wchar_input; int ungot_char; +char *ungot_word = NULL; int end_of_input; int ignore_text=0; // set during ... to ignore text which has been replaced by an alias @@ -1741,6 +1742,13 @@ int Translator::ReadClause(FILE *f_in, char *buf, unsigned short *charix, int n_ f_input = f_in; // for GetC etc + if(ungot_word != NULL) + { + strcpy(buf,ungot_word); + ix += strlen(ungot_word); + ungot_word = NULL; + } + if(ungot_char2 != 0) { c2 = ungot_char2; @@ -1936,17 +1944,22 @@ f_input = f_in; // for GetC etc else if(iswspace(c1)) { + char *p_word; + if(translator_name == 0x6a626f) { // language jbo : lojban // treat "i" or ".i" as end-of-sentence - if(buf[ix-1] == 'i') + p_word = &buf[ix-1]; + if(p_word[0] == 'i') { - if(iswspace(buf[ix-2]) || ((buf[ix-2] == '.') && iswspace(buf[ix-3]))) + if(p_word[-1] == '.') + p_word--; + if(p_word[-1] == ' ') { + ungot_word = "i "; UngetC(c2); - buf[ix] = ' '; - buf[ix+1] = 0; + p_word[0] = 0; return(CLAUSE_PERIOD); } } diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 77ad1eb2..08d9b061 100755 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -467,7 +467,13 @@ void Translator::CalcLengths() { if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC)) more_syllables++; + + if(p2->ph->code == phonPAUSE_CLAUSE) + end_of_clause = 2; } + if(p2->ph->code == phonPAUSE_CLAUSE) + end_of_clause = 2; + if((p2->newword & 2) && (more_syllables==0)) { end_of_clause = 2; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 06305df6..2a790d66 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.30.15 17.Jan.08"; -const int version_phdata = 0x013010; +const char *version_string = "1.31 19.Jan.08"; +const int version_phdata = 0x013100; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index f941a63b..a4380c0f 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -423,8 +423,8 @@ SetLengthMods(tr,3); // all equal case L_jbo: // Lojban { - static const short stress_lengths_jbo[8] = {180,180, 220,220, 0,0, 260,280}; - static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker + static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300}; + static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker (from LOPT_SYLLABLE_CAPS) tr = new Translator(); SetupTranslator(tr,stress_lengths_jbo,NULL); tr->langopts.stress_rule = 2; @@ -572,14 +572,14 @@ SetLengthMods(tr,3); // all equal tr->langopts.spelling_stress = 1; tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word - tr->langopts.numbers = 0x1c01 + 0x4000; + tr->langopts.numbers = 0x0c01 + 0x4000 + NUM_ROMAN; tr->langopts.numbers2 = 0x40; tr->langopts.thousands_sep = 0; //no thousands separator tr->langopts.decimal_sep = ','; if(name2 == L('c','s')) { - tr->langopts.numbers2 = 0x8; // variant numbers before milliards + tr->langopts.numbers2 = 0x48; // variant numbers before milliards } SetLetterVowel(tr,'y'); @@ -623,7 +623,7 @@ SetLengthMods(tr,3); // all equal case L('t','a'): { - static const short stress_lengths_ta[8] = {190, 190, 210, 210, 0, 0, 230, 250}; + static const short stress_lengths_ta[8] = {190, 190, 210, 210, 0, 0, 220, 220}; static const unsigned char stress_amps_ta[8] = {17,14, 20,19, 20,24, 24,22 }; tr = new Translator();