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
sst (@ sSt | sst (@ sSt | ||||
sch S | sch S | ||||
sch (en_ sC | |||||
_) sh S | _) sh S | ||||
sh (K S | sh (K S | ||||
sou (nd saU | sou (nd saU | ||||
_) safe _^_EN | _) safe _^_EN | ||||
&) schaft (_S6 Saft | &) 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 | schein (lich S'aIn | ||||
_) schul (@P5 S'u:l | _) schul (@P5 S'u:l | ||||
_) schul (d S'Ul | _) schul (d S'Ul |
// 2006-11-18 Gilles Casse <gcasse@oralux.org> | // 2006-11-18 Gilles Casse <gcasse@oralux.org> | ||||
// | // | ||||
// Updated 2009-02-01 Michel Such <michel.such@free.fr> | // Updated 2009-03-12 Michel Such <michel.such@free.fr> | ||||
// | // | ||||
// * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
// articles | // articles | ||||
le $u+ $nounf | le $nounf $u+ | ||||
le $u+ $verb $verbextend | le $verbextend $u | ||||
la $u+ $nounf | la $nounf $u+ | ||||
la $u+ $verb $verbextend | la $verbextend $u | ||||
les lez2 $u+ $nounf | les lez2 $nounf $u= | ||||
les lez2 $u+ $verb $verbextend | les lez2 $verbextend $u | ||||
un $u+ $nounf | un $nounf $u+ | ||||
une $u+ $nounf | une $nounf $u+ | ||||
// conjonctions | // conjonctions | ||||
mais $u+ | mais $u+ | ||||
ou u $u $brk | ou $u $brk | ||||
eh $u $brk | eh $u $brk | ||||
et e $u $brk | et $u $brk | ||||
ni $u $brk | ni $u $brk | ||||
car $u+ $brk | car $u $brk | ||||
car $noun | car $noun | ||||
cependant $brk | cependant $brk | ||||
néanmoins $brk | néanmoins $brk | ||||
certes $u+ | certes $u+ | ||||
dont dO~t2 $u | dont dO~t2 $u | ||||
lorsque $u | lorsque lO2rsk@ $u+ | ||||
puisque $u | puisque pw^isk@ $u+ | ||||
presque $u+ | presque $u+ | ||||
que $u+ | |||||
(parce que) parsk@ $u+ | (parce que) parsk@ $u+ | ||||
que $u+ | (parce qu'il) parskil $u+ | ||||
qui $u+ $verbf | (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 | quoique $u | ||||
si $u | |||||
quant kA~t2 $u | quant kA~t2 $u | ||||
// pronouns | // pronouns | ||||
(les leurs) le||lWr $u+ $verbf | (les leurs) le||lWr $u+ $verbf | ||||
// prepositions | // prepositions | ||||
de $u | de $u $nounf | ||||
du $u $nounf | du $u $nounf | ||||
des dez2 $u $nounf | des dez2 $u $nounf | ||||
par $u+ | par $u+ | ||||
parmi $u+ | parmi $u+ | ||||
pour $u+ | pour $u+ | ||||
tant tA~t2 $u+ | |||||
autant $u+ | autant $u+ | ||||
tandis $u+ | tandis $u+ | ||||
dès $u | dès $u | ||||
// negative | // negative | ||||
ne $u $verbf | ne $u $verbf | ||||
pas $u+ | pas p'a2z2 | ||||
pas $noun | pas pa $noun | ||||
plus $u+ | plus $u+ | ||||
guère $u+ | guère $u+ | ||||
jamais $u+ | jamais $u+ | ||||
// questions | // questions | ||||
quand kA~t2 $u+ | quand kA~t2 $u+ | ||||
quoi $u+ | quoi $u+ | ||||
où $brk $u+ | où $u+ | ||||
comme kO2m $u+ | comme kO2m $u+ | ||||
comment $u+ | comment $u+ | ||||
pourquoi $u+ | pourquoi $u+ | ||||
bus by $verb | bus by $verb | ||||
campus kA~pys | campus kA~pys | ||||
cancer kA~sEr | cancer kA~sEr | ||||
catcher catcheur $text | |||||
(chef d'oeuvre) chédeuvre $text | (chef d'oeuvre) chédeuvre $text | ||||
(chef d'oeuvres) chédeuvres $text | (chef d'oeuvres) chédeuvres $text | ||||
choeur kWr | choeur kWr | ||||
malus malys | malus malys | ||||
mapper _^_en | mapper _^_en | ||||
mars mars | mars mars | ||||
mieux mj'Y $u+ | mieux mjY $u+ | ||||
mrs _^_en | mrs _^_en | ||||
ours urs | ours urs | ||||
parangon parA~gO~ | parangon parA~gO~ | ||||
futuna futuna | futuna futuna | ||||
zimbabwe zimbabwe | zimbabwe zimbabwe | ||||
pest $1 | |||||
// 2006-11-18 Gilles Casse <gcasse@oralux.org> | // 2006-11-18 Gilles Casse <gcasse@oralux.org> | ||||
// | // | ||||
// Updated: 2009-02-19 Michel Such <michel.such@free.fr> | // Updated: 2009-03-12 Michel Such <michel.such@free.fr> | ||||
// | // | ||||
// Letter classes: | // Letter classes: | ||||
em (p A~ | em (p A~ | ||||
en (_ A~n2 // en | en (_ A~n2 // en | ||||
en (hA A~n // enharmonique | en (hA A~n // enharmonique | ||||
_C) en (j E~ // benjamin | |||||
_) en (A A~n // enivrer | _) en (A A~n // enivrer | ||||
C) en (d_ A~ // comprend dépend | C) en (d_ A~ // comprend dépend | ||||
o (rC O2 | o (rC O2 | ||||
o (rX O2 | o (rX O2 | ||||
_) os (_ Os | _) os (_ Os | ||||
o (sC O2 | |||||
s_) os (_ o | s_) os (_ o | ||||
x_) os (_ o | x_) os (_ o | ||||
C) o (se_ o2 | C) o (se_ o2 | ||||
se) pt (_ t // sept | se) pt (_ t // sept | ||||
se) pt (iè t // septième | se) pt (iè t // septième | ||||
_) puisqu' (P7 pyisk | _) puisqu' (P7 pw^isk | ||||
// group p: English section | // group p: English section | ||||
pad (_ _^_en | pad (_ _^_en | ||||
q k // coq | q k // coq | ||||
_) qu' (AP3 k | _) qu' (AP3 k | ||||
_) qua (d kwA // quadrature | _) qua (d kwA // quadrature | ||||
_) qua (drill ka // quadriller | |||||
_a) qua kwA // aquarium | _a) qua kwA // aquarium | ||||
_a) qu (if ku // aquifère | _a) qu (if ku // aquifère | ||||
_A) qui (dist kw^i // équidistant | _A) qui (dist kw^i // équidistant |
s (t s | s (t s | ||||
s (x s | s (x s | ||||
sc (Y S | sc (Y S | ||||
sci (L01 S | |||||
sch (Y sk | sch (Y sk | ||||
sh (K S // foreign words | sh (K S // foreign words | ||||
K) sh S // foreign words | K) sh S // foreign words |
?2_0C s'eINtUs# | ?2_0C s'eINtUs# | ||||
_1C s'eINtu | _1C s'eINtu | ||||
?1_2C duz'eINtus# | ?1_2C duz'eINtus# | ||||
?2_2C duz'eINtUs# | ?2_2C duz'eINtUz | ||||
?1_3C tryz'eNtus# | ?1_3C tryz'eNtus# | ||||
?2_3C tRez'eNtUs# | ?2_3C tRez'eNtUz | ||||
?1_5C kin^'eINtus# | ?1_5C kin^'eINtus# | ||||
?2_5C kin^'eINtUs# | ?2_5C kin^'eINtUz | ||||
?1_0M1 m'il_ | ?1_0M1 m'il_ | ||||
?2_0M1 m'iU_ | ?2_0M1 m'iU_ | ||||
?1_1M1 m'il_ | ?1_1M1 m'il_ | ||||
?1_0M4 trilj'o~js# | ?1_0M4 trilj'o~js# | ||||
?2_0M4 trilj'o~jz | ?2_0M4 trilj'o~jz | ||||
_1M4 'u~ntrilj'&U~ | _1M4 'u~ntrilj'&U~ | ||||
_0and _i | _0and i | ||||
_dpt _v'irgul& | _dpt _v'irgul& | ||||
// _0Z2 seNt'Ezim& // 100ths | // _0Z2 seNt'Ezim& // 100ths | ||||
// _0Z3 mil'Ezim& // 1000ths | // _0Z3 mil'Ezim& // 1000ths | ||||
?2 este $u+ $nounf 'estSi // this | ?2 este $u+ $nounf 'estSi // this | ||||
?2 estes $u+ $nounf 'estSis // these | ?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 neste $u+ $nounf n'estSi //in this | ||||
?2 nestes $u+ n'estSis //in these | ?2 nestes $u+ n'estSis //in these | ||||
?2 esse $u+ $nounf 'esi // that | ?2 esse $u+ $nounf 'esi // that | ||||
essa 'Es& $brk $u+ | essa 'Es& $u+ | ||||
desse d'esy $u+ | desse d'esy $u+ | ||||
nesse n'esy $u+ | nesse n'esy $u+ | ||||
aquele &k'ely $u+ $nounf // that | aquele &k'ely $u+ $nounf // that | ||||
daquele d&k'ely $u+ $nounf | daquele d&k'ely $u+ $nounf | ||||
?1 que ky $u | ?1 que ky $u | ||||
?2 que ke $u $pause | ?2 que ke $u | ||||
// possessive adjectives | // possessive adjectives | ||||
meu $u+ $nounf | meu $u+ $nounf | ||||
duns $u | duns $u | ||||
dumas $u | dumas $u | ||||
em $u $brk // in,on,at | em $u // in,on,at | ||||
no nu $u $brk $nounf | no nu $u $nounf | ||||
na $u $brk | na $u | ||||
?2 nos nus# $u $brk | ?2 nos nus# $u | ||||
nas $u $brk | nas $u | ||||
num $u $brk | num $u | ||||
numa $u $brk | numa $u | ||||
nuns $u $brk | nuns $u | ||||
numas $u $brk | numas $u | ||||
por $u // by,for,through | |||||
por $u $brk // by,for,through | pelo $u | ||||
pelo $u $brk | ?2 pela $u p'el& | ||||
?2 pela $u $brk p'el& | pelos $u | ||||
pelos $u $brk | ?2 pelas $u p'el&s | ||||
?2 pelas $u $brk p'el&s | ao $u | ||||
à ,a: | |||||
ao $u $brk | aos $u | ||||
à ,a: $brk | às ,a:s | ||||
aos $u $brk | para $u // for,to | ||||
às ,a:s $brk | pro $u $nounf | ||||
pra $u | |||||
para $u $brk // for,to | pros $u | ||||
pro $u $brk $nounf | pras $u | ||||
pra $u $brk | prò $u | ||||
pros $u $brk | prà $u | ||||
pras $u $brk | pròs $u | ||||
prò $u $brk | pràs $u | ||||
prà $u $brk | com $u // with | ||||
pròs $u $brk | ?2 sem // without | ||||
pràs $u $brk | ?2 até $u // until | ||||
?2 desde $u // from,since | |||||
com $u $brk // with | ?2 entre // between,among | ||||
?2 sem $pause // without | ?2 por $u // by,for,through | ||||
?2 até $u $pause // until | ?2 sobre s'obRy // on,above,about | ||||
?2 desde $u $pause // from,since | ?2 sob // under,below | ||||
?2 entre $pause // between,among | ?2 debaixo // under,below | ||||
?2 por $u $pause // by,for,through | ?2 durante | ||||
?2 sobre s'obRy $pause // on,above,about | |||||
?2 sob $pause // under,below | |||||
?2 debaixo $pause // under,below | |||||
?2 durante $pause | |||||
// conjunctions | // conjunctions | ||||
?1 e i $u // and | ?1 e i $u // and | ||||
?2 e i $u $pause // and | ?2 e i $u // and | ||||
se $u $brk // if | se $u // if | ||||
?2 mas $u $pause // but | ?2 mas $u // but | ||||
?2 porém $pause // however | ?2 porém // however | ||||
?2 todavia $pause // yet | ?2 todavia // yet | ||||
?2 contudo $pause // nevertheless | ?2 contudo // nevertheless | ||||
?2 ou $u $pause // or | ?2 ou $u // or | ||||
?2 quer $pause // whether | ?2 quer // whether | ||||
?2 assim $pause // thus | ?2 assim // thus | ||||
?2 portanto $pause // therefore | ?2 portanto // therefore | ||||
?2 porque $pause // because | ?2 porque // because | ||||
?2 pois $pause // because | ?2 pois // because | ||||
?2 como $u $pause // as | ?2 como $u // as | ||||
?2 embora $pause // although | ?2 embora // although | ||||
?2 apesar $pause // despite | ?2 apesar // despite | ||||
?2 caso $pause // if | ?2 caso // if | ||||
?2 (desde que) d'esdZiki/ $pause // provided that | ?2 (desde que) d'esdZiki/ // provided that | ||||
?2 (exceto se) es'Etusi/ $pause // unless | ?2 (exceto se) es'Etusi/ // unless | ||||
?2 (salvo se) s'alvusi/ $pause // 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 quando // when | ||||
?2 onde $u $pause // where | ?2 onde $u // where | ||||
?2 apenas $pause // as soon as | ?2 apenas // as soon as | ||||
?2 mal $pause // as soon as, hardly | ?2 mal // as soon as, hardly | ||||
?2 (logo que) l'Oguki/ $pause // as soon as | ?2 (logo que) l'Oguki/ // as soon as | ||||
?2 (antes que) '&~NtSiski/ $pause // before | ?2 (antes que) '&~NtSiski/ // before | ||||
?2 (depois que) dep'OIski/ $pause // after | ?2 (depois que) dep'OIski/ // after | ||||
?2 (sempre que) s'eNpriki/ $pause // whenever | ?2 (sempre que) s'eNpriki/ // whenever | ||||
?2 enquanto $pause // while | ?2 enquanto // while | ||||
// negative | // negative |
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/b@ [b] base | b/b@ [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/b@2 [b] base | b/b@2 [b] base | ||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/ba [b] base | b/ba [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/be [b] base | b/be [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/bi [b] base | b/bi [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b;] ro | [b;] ro | ||||
[b] bn | [b] bn | ||||
b/bo [b] base | b/bo [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/bu [b] base | b/bu [b] base | ||||
[b] fr | |||||
[b] hi | [b] hi | ||||
[b] bn | [b] bn | ||||
b/xb [b] base | b/xb [b] base |
phoneme @ | phoneme @ | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 170 | length 180 | ||||
formants vowel/@_hgh | formants vowel/@_hgh | ||||
before l/ DFT+l/l_@ | before l/ DFT+l/l_@ | ||||
before (r) DFT+r/xr | before (r) DFT+r/xr | ||||
phoneme @2 | phoneme @2 | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 150 | length 160 | ||||
formants vowel/@_fr | formants vowel/@_fr | ||||
before (r) DFT+r3/r_@ | before (r) DFT+r3/r_@ | ||||
endphoneme | endphoneme | ||||
phoneme a | phoneme a | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 170 | length 180 | ||||
formants vowel/a_6 | formants vowel/a_6 | ||||
after l l/la-15 | after l l/la-15 | ||||
before l/ DFT+l/l_a | before l/ DFT+l/l_a | ||||
phoneme a2 | phoneme a2 | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 150 | length 165 | ||||
formants vowel/a_6 | formants vowel/a_6 | ||||
after l l/la-15 | after l l/la-15 | ||||
before l/ DFT+l/l_a | before l/ DFT+l/l_a | ||||
phoneme e | phoneme e | ||||
vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
length 172 | length 175 | ||||
formants vowel/e | formants vowel/e | ||||
after l l/le-15 | after l l/le-15 | ||||
before l/ DFT-20+l/xl | before l/ DFT-20+l/xl | ||||
phoneme i | phoneme i | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 150 | length 160 | ||||
formants vowel/i_3 | formants vowel/i_3 | ||||
linkout ; | linkout ; | ||||
after l l/li-15 | after l l/li-15 | ||||
phoneme o | phoneme o | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 170 | length 180 | ||||
formants vowel/o_3 | formants vowel/o_3 | ||||
after l l/lo-10 | after l l/lo-10 | ||||
before (r) DFT+r/xr | before (r) DFT+r/xr | ||||
phoneme o2 | phoneme o2 | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 170 | length 180 | ||||
formants vowel/o_2 | formants vowel/o_2 | ||||
after l l/lo-10 | after l l/lo-10 | ||||
before l/ DFT+l/l_o | before l/ DFT+l/l_o | ||||
phoneme u | phoneme u | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 170 | length 175 | ||||
formants vowel/u_3 | formants vowel/u_3 | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-20+l/l_u | before l/ DFT-20+l/l_u | ||||
phoneme u: // slitely longer than u | phoneme u: // slitely longer than u | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 220 | length 240 | ||||
formants vowel/u_3 | formants vowel/u_3 | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-20+l/l_u | before l/ DFT-20+l/l_u | ||||
phoneme y | phoneme y | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 170 | length 180 | ||||
formants vowel/y_2 | formants vowel/y_2 | ||||
after l l/lu-20 | after l l/lu-20 | ||||
before l/ DFT-30+l/l_y | before l/ DFT-30+l/l_y | ||||
phoneme Y | phoneme Y | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
length 170 | length 180 | ||||
formants vowel/y# | formants vowel/y# | ||||
after l l/l@-20 | after l l/l@-20 | ||||
before l/ DFT-20+l/l_@ | before l/ DFT-20+l/l_@ | ||||
phoneme b | phoneme b | ||||
vcd blb stop | vcd blb stop | ||||
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 | vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk | ||||
formants b/b+x/b%70 | formants b/b+x/b%80 | ||||
before _ b/b_+x/b_ | 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 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_ | before R b/b_+x/b_ | ||||
after _ NULL | after _ NULL | ||||
after @ b/xb%50 | after @ b/xb%50 |
if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2)) | 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; | vowel_stress[1] = 1; | ||||
dictionary_flags |= FLAG_STRESS_END2; | dictionary_flags |= FLAG_STRESS_END2; | ||||
} | } |
int ix; | int ix; | ||||
FILE *f_in; | FILE *f_in; | ||||
FILE *f_out; | FILE *f_out; | ||||
char buf[80]; | char buf[200]; | ||||
wxString fname = wxFileSelector(_T("Convert file to UTF8"),wxString(path_home,wxConvLocal), | wxString fname = wxFileSelector(_T("Convert file to UTF8"),wxString(path_home,wxConvLocal), | ||||
_T(""),_T(""),_T("*"),wxOPEN); | _T(""),_T(""),_T("*"),wxOPEN); |
if(tr->langopts.numbers & 0x200) | if(tr->langopts.numbers & 0x200) | ||||
{ | { | ||||
// remove vowel from the end of tens if units starts with a vowel (LANG=Italian) | // 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) | if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS) | ||||
next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; | next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014000; | ||||
int option_device_number = -1; | int option_device_number = -1; |
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | 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 | tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands | ||||
if(name2 == L_grc) | if(name2 == L_grc) | ||||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->langopts.stress_rule = 3; // stress on final syllable | 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.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | ||||
tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL; | tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL; | ||||
tr->langopts.stress_rule = 3; // stress on final syllable | tr->langopts.stress_rule = 3; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000; | tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000; | ||||
tr->langopts.numbers = 0x269 + 0x4000 + NUM_ROMAN; | tr->langopts.numbers = 0x069 + 0x4000 + NUM_ROMAN; | ||||
SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
ResetLetterBits(tr,0x2); | ResetLetterBits(tr,0x2); | ||||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y |
} | } | ||||
else | 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(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING]) | ||||
{ | { | ||||
if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || | if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || |