lang=fr: removed unstressed monosyllable option. lang=pt,it: fixed crash when speaking some numbers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@218 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -837,7 +837,6 @@ | |||
| sst (@ sSt | |||
| sch S | |||
| sch (en_ sC | |||
| _) sh S | |||
| sh (K S | |||
| sou (nd saU | |||
| @@ -863,6 +862,14 @@ | |||
| _) safe _^_EN | |||
| &) schaft (_S6 Saft | |||
| ä) schen sC@n // but not wäschen | |||
| fe) schen sC@n | |||
| ie) schen sC@n | |||
| h) schen sC@n | |||
| ö) schen sC@n // but not löschen | |||
| äu) schen sC@n // but not täuschen | |||
| schein (lich S'aIn | |||
| _) schul (@P5 S'u:l | |||
| _) schul (d S'Ul | |||
| @@ -24,7 +24,7 @@ | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| // | |||
| // Updated 2009-02-01 Michel Such <[email protected]> | |||
| // Updated 2009-03-12 Michel Such <[email protected]> | |||
| // | |||
| // * Numbers, a few abbreviations and exceptions. | |||
| // | |||
| @@ -296,23 +296,23 @@ pr professeur $text *dot $capital | |||
| // articles | |||
| le $u+ $nounf | |||
| le $u+ $verb $verbextend | |||
| la $u+ $nounf | |||
| la $u+ $verb $verbextend | |||
| les lez2 $u+ $nounf | |||
| les lez2 $u+ $verb $verbextend | |||
| un $u+ $nounf | |||
| une $u+ $nounf | |||
| le $nounf $u+ | |||
| le $verbextend $u | |||
| la $nounf $u+ | |||
| la $verbextend $u | |||
| les lez2 $nounf $u= | |||
| les lez2 $verbextend $u | |||
| un $nounf $u+ | |||
| une $nounf $u+ | |||
| // conjonctions | |||
| mais $u+ | |||
| ou u $u $brk | |||
| ou $u $brk | |||
| eh $u $brk | |||
| et e $u $brk | |||
| et $u $brk | |||
| ni $u $brk | |||
| car $u+ $brk | |||
| car $u $brk | |||
| car $noun | |||
| cependant $brk | |||
| néanmoins $brk | |||
| @@ -328,14 +328,19 @@ aussi $u+ | |||
| certes $u+ | |||
| dont dO~t2 $u | |||
| lorsque $u | |||
| puisque $u | |||
| lorsque lO2rsk@ $u+ | |||
| puisque pw^isk@ $u+ | |||
| presque $u+ | |||
| que $u+ | |||
| (parce que) parsk@ $u+ | |||
| que $u+ | |||
| qui $u+ $verbf | |||
| (parce qu'il) parskil $u+ | |||
| (parce qu'ils) parskilz2 $u+ | |||
| (parce qu'elle) parskE2l $u+ | |||
| (parce qu'elles) parskE2lz2 $u+ | |||
| (parce qu'on) parskO~n2 $u+ | |||
| tant tA~t2 $u+ | |||
| qui $verbf $u+ | |||
| quoique $u | |||
| si $u | |||
| quant kA~t2 $u | |||
| // pronouns | |||
| @@ -399,7 +404,7 @@ leurs $u $verb $verbextend | |||
| (les leurs) le||lWr $u+ $verbf | |||
| // prepositions | |||
| de $u | |||
| de $u $nounf | |||
| du $u $nounf | |||
| des dez2 $u $nounf | |||
| @@ -421,7 +426,6 @@ en $u+ $verb $verbextend | |||
| par $u+ | |||
| parmi $u+ | |||
| pour $u+ | |||
| tant tA~t2 $u+ | |||
| autant $u+ | |||
| tandis $u+ | |||
| dès $u | |||
| @@ -441,8 +445,8 @@ très $u | |||
| // negative | |||
| ne $u $verbf | |||
| pas $u+ | |||
| pas $noun | |||
| pas p'a2z2 | |||
| pas pa $noun | |||
| plus $u+ | |||
| guère $u+ | |||
| jamais $u+ | |||
| @@ -452,7 +456,7 @@ oui $u+ | |||
| // questions | |||
| quand kA~t2 $u+ | |||
| quoi $u+ | |||
| où $brk $u+ | |||
| où $u+ | |||
| comme kO2m $u+ | |||
| comment $u+ | |||
| pourquoi $u+ | |||
| @@ -572,6 +576,7 @@ bus bys | |||
| bus by $verb | |||
| campus kA~pys | |||
| cancer kA~sEr | |||
| catcher catcheur $text | |||
| (chef d'oeuvre) chédeuvre $text | |||
| (chef d'oeuvres) chédeuvres $text | |||
| choeur kWr | |||
| @@ -591,7 +596,7 @@ laser lazEr | |||
| malus malys | |||
| mapper _^_en | |||
| mars mars | |||
| mieux mj'Y $u+ | |||
| mieux mjY $u+ | |||
| mrs _^_en | |||
| ours urs | |||
| parangon parA~gO~ | |||
| @@ -787,5 +792,5 @@ wallis wAlis | |||
| futuna futuna | |||
| zimbabwe zimbabwe | |||
| pest $1 | |||
| @@ -23,7 +23,7 @@ | |||
| // 2006-11-18 Gilles Casse <[email protected]> | |||
| // | |||
| // Updated: 2009-02-19 Michel Such <[email protected]> | |||
| // Updated: 2009-03-12 Michel Such <[email protected]> | |||
| // | |||
| // Letter classes: | |||
| @@ -257,6 +257,7 @@ _) ç' (P2v s | |||
| em (p A~ | |||
| en (_ A~n2 // en | |||
| en (hA A~n // enharmonique | |||
| _C) en (j E~ // benjamin | |||
| _) en (A A~n // enivrer | |||
| C) en (d_ A~ // comprend dépend | |||
| @@ -825,6 +826,7 @@ _) half _^_en | |||
| o (rC O2 | |||
| o (rX O2 | |||
| _) os (_ Os | |||
| o (sC O2 | |||
| s_) os (_ o | |||
| x_) os (_ o | |||
| C) o (se_ o2 | |||
| @@ -954,7 +956,7 @@ C) oing (_ _^_en // going | |||
| se) pt (_ t // sept | |||
| se) pt (iè t // septième | |||
| _) puisqu' (P7 pyisk | |||
| _) puisqu' (P7 pw^isk | |||
| // group p: English section | |||
| pad (_ _^_en | |||
| @@ -967,6 +969,7 @@ C) oing (_ _^_en // going | |||
| q k // coq | |||
| _) qu' (AP3 k | |||
| _) qua (d kwA // quadrature | |||
| _) qua (drill ka // quadriller | |||
| _a) qua kwA // aquarium | |||
| _a) qu (if ku // aquifère | |||
| _A) qui (dist kw^i // équidistant | |||
| @@ -239,6 +239,7 @@ | |||
| s (t s | |||
| s (x s | |||
| sc (Y S | |||
| sci (L01 S | |||
| sch (Y sk | |||
| sh (K S // foreign words | |||
| K) sh S // foreign words | |||
| @@ -175,11 +175,11 @@ _1C0 s'eIN | |||
| ?2_0C s'eINtUs# | |||
| _1C s'eINtu | |||
| ?1_2C duz'eINtus# | |||
| ?2_2C duz'eINtUs# | |||
| ?2_2C duz'eINtUz | |||
| ?1_3C tryz'eNtus# | |||
| ?2_3C tRez'eNtUs# | |||
| ?2_3C tRez'eNtUz | |||
| ?1_5C kin^'eINtus# | |||
| ?2_5C kin^'eINtUs# | |||
| ?2_5C kin^'eINtUz | |||
| ?1_0M1 m'il_ | |||
| ?2_0M1 m'iU_ | |||
| ?1_1M1 m'il_ | |||
| @@ -194,7 +194,7 @@ _1M3 'u~mbilj'&U~ | |||
| ?1_0M4 trilj'o~js# | |||
| ?2_0M4 trilj'o~jz | |||
| _1M4 'u~ntrilj'&U~ | |||
| _0and _i | |||
| _0and i | |||
| _dpt _v'irgul& | |||
| // _0Z2 seNt'Ezim& // 100ths | |||
| // _0Z3 mil'Ezim& // 1000ths | |||
| @@ -290,11 +290,11 @@ los $u | |||
| ?2 este $u+ $nounf 'estSi // this | |||
| ?2 estes $u+ $nounf 'estSis // these | |||
| ?2 esta 'Est& $brk $u+ $nounf | |||
| ?2 esta 'Est& $u+ $nounf | |||
| ?2 neste $u+ $nounf n'estSi //in this | |||
| ?2 nestes $u+ n'estSis //in these | |||
| ?2 esse $u+ $nounf 'esi // that | |||
| essa 'Es& $brk $u+ | |||
| essa 'Es& $u+ | |||
| desse d'esy $u+ | |||
| nesse n'esy $u+ | |||
| aquele &k'ely $u+ $nounf // that | |||
| @@ -302,7 +302,7 @@ aquela $u+ | |||
| daquele d&k'ely $u+ $nounf | |||
| ?1 que ky $u | |||
| ?2 que ke $u $pause | |||
| ?2 que ke $u | |||
| // possessive adjectives | |||
| meu $u+ $nounf | |||
| @@ -338,93 +338,93 @@ duma $u | |||
| duns $u | |||
| dumas $u | |||
| em $u $brk // in,on,at | |||
| no nu $u $brk $nounf | |||
| na $u $brk | |||
| ?2 nos nus# $u $brk | |||
| nas $u $brk | |||
| num $u $brk | |||
| numa $u $brk | |||
| nuns $u $brk | |||
| numas $u $brk | |||
| por $u $brk // by,for,through | |||
| pelo $u $brk | |||
| ?2 pela $u $brk p'el& | |||
| pelos $u $brk | |||
| ?2 pelas $u $brk p'el&s | |||
| ao $u $brk | |||
| à ,a: $brk | |||
| aos $u $brk | |||
| às ,a:s $brk | |||
| para $u $brk // for,to | |||
| pro $u $brk $nounf | |||
| pra $u $brk | |||
| pros $u $brk | |||
| pras $u $brk | |||
| prò $u $brk | |||
| prà $u $brk | |||
| pròs $u $brk | |||
| pràs $u $brk | |||
| com $u $brk // with | |||
| ?2 sem $pause // without | |||
| ?2 até $u $pause // until | |||
| ?2 desde $u $pause // from,since | |||
| ?2 entre $pause // between,among | |||
| ?2 por $u $pause // by,for,through | |||
| ?2 sobre s'obRy $pause // on,above,about | |||
| ?2 sob $pause // under,below | |||
| ?2 debaixo $pause // under,below | |||
| ?2 durante $pause | |||
| em $u // in,on,at | |||
| no nu $u $nounf | |||
| na $u | |||
| ?2 nos nus# $u | |||
| nas $u | |||
| num $u | |||
| numa $u | |||
| nuns $u | |||
| numas $u | |||
| por $u // by,for,through | |||
| pelo $u | |||
| ?2 pela $u p'el& | |||
| pelos $u | |||
| ?2 pelas $u p'el&s | |||
| ao $u | |||
| à ,a: | |||
| aos $u | |||
| às ,a:s | |||
| para $u // for,to | |||
| pro $u $nounf | |||
| pra $u | |||
| pros $u | |||
| pras $u | |||
| prò $u | |||
| prà $u | |||
| pròs $u | |||
| pràs $u | |||
| com $u // with | |||
| ?2 sem // without | |||
| ?2 até $u // until | |||
| ?2 desde $u // from,since | |||
| ?2 entre // between,among | |||
| ?2 por $u // by,for,through | |||
| ?2 sobre s'obRy // on,above,about | |||
| ?2 sob // under,below | |||
| ?2 debaixo // under,below | |||
| ?2 durante | |||
| // conjunctions | |||
| ?1 e i $u // and | |||
| ?2 e i $u $pause // and | |||
| se $u $brk // if | |||
| ?2 e i $u // and | |||
| se $u // if | |||
| ?2 mas $u $pause // but | |||
| ?2 porém $pause // however | |||
| ?2 todavia $pause // yet | |||
| ?2 contudo $pause // nevertheless | |||
| ?2 mas $u // but | |||
| ?2 porém // however | |||
| ?2 todavia // yet | |||
| ?2 contudo // nevertheless | |||
| ?2 ou $u $pause // or | |||
| ?2 quer $pause // whether | |||
| ?2 ou $u // or | |||
| ?2 quer // whether | |||
| ?2 assim $pause // thus | |||
| ?2 portanto $pause // therefore | |||
| ?2 assim // thus | |||
| ?2 portanto // therefore | |||
| ?2 porque $pause // because | |||
| ?2 pois $pause // because | |||
| ?2 como $u $pause // as | |||
| ?2 porque // because | |||
| ?2 pois // because | |||
| ?2 como $u // as | |||
| ?2 embora $pause // although | |||
| ?2 apesar $pause // despite | |||
| ?2 embora // although | |||
| ?2 apesar // despite | |||
| ?2 caso $pause // if | |||
| ?2 (desde que) d'esdZiki/ $pause // provided that | |||
| ?2 (exceto se) es'Etusi/ $pause // unless | |||
| ?2 (salvo se) s'alvusi/ $pause // unless | |||
| ?2 caso // if | |||
| ?2 (desde que) d'esdZiki/ // provided that | |||
| ?2 (exceto se) es'Etusi/ // unless | |||
| ?2 (salvo se) s'alvusi/ // unless | |||
| ?2 (para que) p,a*&ki/ $pause // so that | |||
| ?2 (para que) p,a*&ki/ // so that | |||
| ?2 quando $pause // when | |||
| ?2 onde $u $pause // where | |||
| ?2 apenas $pause // as soon as | |||
| ?2 mal $pause // as soon as, hardly | |||
| ?2 (logo que) l'Oguki/ $pause // as soon as | |||
| ?2 (antes que) '&~NtSiski/ $pause // before | |||
| ?2 (depois que) dep'OIski/ $pause // after | |||
| ?2 (sempre que) s'eNpriki/ $pause // whenever | |||
| ?2 enquanto $pause // while | |||
| ?2 quando // when | |||
| ?2 onde $u // where | |||
| ?2 apenas // as soon as | |||
| ?2 mal // as soon as, hardly | |||
| ?2 (logo que) l'Oguki/ // as soon as | |||
| ?2 (antes que) '&~NtSiski/ // before | |||
| ?2 (depois que) dep'OIski/ // after | |||
| ?2 (sempre que) s'eNpriki/ // whenever | |||
| ?2 enquanto // while | |||
| // negative | |||
| @@ -71,25 +71,31 @@ b/b_ [b] base | |||
| [b] hi | |||
| [b] bn | |||
| b/b@ [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b] bn | |||
| b/b@2 [b] base | |||
| [b] hi | |||
| [b] bn | |||
| b/ba [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b] bn | |||
| b/be [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b] bn | |||
| b/bi [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b;] ro | |||
| [b] bn | |||
| b/bo [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b] bn | |||
| b/bu [b] base | |||
| [b] fr | |||
| [b] hi | |||
| [b] bn | |||
| b/xb [b] base | |||
| @@ -10,7 +10,7 @@ endphoneme | |||
| phoneme @ | |||
| vowel starttype (@) endtype (@) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/@_hgh | |||
| before l/ DFT+l/l_@ | |||
| before (r) DFT+r/xr | |||
| @@ -19,7 +19,7 @@ endphoneme | |||
| phoneme @2 | |||
| vowel starttype (@) endtype (@) | |||
| length 150 | |||
| length 160 | |||
| formants vowel/@_fr | |||
| before (r) DFT+r3/r_@ | |||
| endphoneme | |||
| @@ -27,7 +27,7 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype (a) endtype (a) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/a_6 | |||
| after l l/la-15 | |||
| before l/ DFT+l/l_a | |||
| @@ -38,7 +38,7 @@ endphoneme | |||
| phoneme a2 | |||
| vowel starttype (a) endtype (a) | |||
| length 150 | |||
| length 165 | |||
| formants vowel/a_6 | |||
| after l l/la-15 | |||
| before l/ DFT+l/l_a | |||
| @@ -49,7 +49,7 @@ endphoneme | |||
| phoneme e | |||
| vowel starttype (e) endtype (e) | |||
| length 172 | |||
| length 175 | |||
| formants vowel/e | |||
| after l l/le-15 | |||
| before l/ DFT-20+l/xl | |||
| @@ -80,7 +80,7 @@ endphoneme | |||
| phoneme i | |||
| vowel starttype (i) endtype (i) | |||
| length 150 | |||
| length 160 | |||
| formants vowel/i_3 | |||
| linkout ; | |||
| after l l/li-15 | |||
| @@ -103,7 +103,7 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype (o) endtype (o) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/o_3 | |||
| after l l/lo-10 | |||
| before (r) DFT+r/xr | |||
| @@ -113,7 +113,7 @@ endphoneme | |||
| phoneme o2 | |||
| vowel starttype (o) endtype (o) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/o_2 | |||
| after l l/lo-10 | |||
| before l/ DFT+l/l_o | |||
| @@ -144,7 +144,7 @@ endphoneme | |||
| phoneme u | |||
| vowel starttype (u) endtype (u) | |||
| length 170 | |||
| length 175 | |||
| formants vowel/u_3 | |||
| after l l/lu-20 | |||
| before l/ DFT-20+l/l_u | |||
| @@ -155,7 +155,7 @@ endphoneme | |||
| phoneme u: // slitely longer than u | |||
| vowel starttype (u) endtype (u) | |||
| length 220 | |||
| length 240 | |||
| formants vowel/u_3 | |||
| after l l/lu-20 | |||
| before l/ DFT-20+l/l_u | |||
| @@ -166,7 +166,7 @@ endphoneme | |||
| phoneme y | |||
| vowel starttype (u) endtype (u) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/y_2 | |||
| after l l/lu-20 | |||
| before l/ DFT-30+l/l_y | |||
| @@ -177,7 +177,7 @@ endphoneme | |||
| phoneme Y | |||
| vowel starttype (@) endtype (@) | |||
| length 170 | |||
| length 180 | |||
| formants vowel/y# | |||
| after l l/l@-20 | |||
| before l/ DFT-20+l/l_@ | |||
| @@ -303,10 +303,16 @@ endphoneme | |||
| phoneme b | |||
| vcd blb stop | |||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 80 | |||
| formants b/b+x/b%70 | |||
| vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk | |||
| formants b/b+x/b%80 | |||
| before _ b/b_+x/b_ | |||
| before (a) b/ba+x/b%30 | |||
| before (@) b/b@+x/b%50 | |||
| before (e) b/be+x/b%50 | |||
| before (i) b/bi+x/b%50 | |||
| before l/ b/b_+x/b_ | |||
| before (o) b/bo+x/b%50 | |||
| before (u) b/bu+x/b%70 | |||
| before R b/b_+x/b_ | |||
| after _ NULL | |||
| after @ b/xb%50 | |||
| @@ -1111,7 +1111,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, | |||
| if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2)) | |||
| { | |||
| // option: don't stress monosyllables except at end-of-clause (lang=fr) | |||
| // option: don't stress monosyllables except at end-of-clause | |||
| vowel_stress[1] = 1; | |||
| dictionary_flags |= FLAG_STRESS_END2; | |||
| } | |||
| @@ -963,7 +963,7 @@ void ConvertToUtf8() | |||
| int ix; | |||
| FILE *f_in; | |||
| FILE *f_out; | |||
| char buf[80]; | |||
| char buf[200]; | |||
| wxString fname = wxFileSelector(_T("Convert file to UTF8"),wxString(path_home,wxConvLocal), | |||
| _T(""),_T(""),_T("*"),wxOPEN); | |||
| @@ -1033,7 +1033,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
| if(tr->langopts.numbers & 0x200) | |||
| { | |||
| // remove vowel from the end of tens if units starts with a vowel (LANG=Italian) | |||
| if((ix = strlen(ph_tens)-1) >= 0) | |||
| if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0)) | |||
| { | |||
| if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) | |||
| next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.40.10 12.Mar.09"; | |||
| const char *version_string = "1.40.11 13.Mar.09"; | |||
| const int version_phdata = 0x014000; | |||
| int option_device_number = -1; | |||
| @@ -380,7 +380,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
| tr->langopts.numbers = 0x309; | |||
| tr->langopts.numbers = 0x109; | |||
| tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands | |||
| if(name2 == L_grc) | |||
| @@ -483,7 +483,7 @@ Translator *SelectTranslator(const char *name) | |||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | |||
| tr->langopts.stress_rule = 3; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x0024 + 0x1; // don't use secondary stress, monosyllables are unstressed | |||
| 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 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL; | |||
| @@ -807,7 +807,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = 3; // stress on final syllable | |||
| tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000; | |||
| tr->langopts.numbers = 0x269 + 0x4000 + NUM_ROMAN; | |||
| tr->langopts.numbers = 0x069 + 0x4000 + NUM_ROMAN; | |||
| SetLetterVowel(tr,'y'); | |||
| ResetLetterBits(tr,0x2); | |||
| SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
| @@ -1670,21 +1670,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| } | |||
| else | |||
| { | |||
| if(ph_code == phonPAUSE_CLAUSE) | |||
| { | |||
| int j; | |||
| for(j = n_ph_list2-1; j > 0; j--) | |||
| { | |||
| if(ph_list2[j].synthflags & SFLAG_PROMOTE_STRESS) | |||
| { | |||
| // lang=fr: stress monosyllables before conjunctions 'et' 'qui' etc | |||
| ph_list2[j].stress = 4; | |||
| } | |||
| if(ph_list2[j].sourceix != 0) | |||
| break; | |||
| } | |||
| } | |||
| if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING]) | |||
| { | |||
| if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || | |||