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 <[email protected]> | // 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. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
// articles | // 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 | // 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 | |||||
puisque $u | |||||
lorsque lO2rsk@ $u+ | |||||
puisque pw^isk@ $u+ | |||||
presque $u+ | presque $u+ | ||||
que $u+ | |||||
(parce que) parsk@ $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 | 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 $noun | |||||
pas p'a2z2 | |||||
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 <[email protected]> | // 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: | // 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 | |||||
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 | // conjunctions | ||||
?1 e i $u // and | ?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 | // 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 | |||||
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 _ 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)) || |