Browse Source

[1.40.13]

lang=it, added dictsource/it_listx with corrections for stress position and open/close vowel type.
Changes to allow compilation on WinCE (Windows Mobile), with notes in platforms/windowsMobile.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@219 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 16 years ago
parent
commit
206026b498

+ 174
- 174
dictsource/de_list View File

@@ -180,209 +180,209 @@ demselb $2
denselb $2

// conjunctions
und Unt $pause $u+
aber ,A:b3 $pause $strend
oder ,o:d3 $pause $strend
sondern $pause
denn dEn $pause $u+
weil $pause $strend
als $pause $u+
bevor be:f'o:* $pause
also $pause $strend
wenn ,vEn $pause $strend
sowie $2 $pause
obgleich $2 $pause
obwohl $2 $pause
deren ,dE*@n $brk
und Unt $u+ $pause
aber A:b3 $u+ $pause
oder o:d3 $u+ $pause
sondern $pause
denn dEn $u+ $pause
weil $pause
als $u+ $pause
bevor be:fo:* $2 $pause
also $pause
wenn ,vEn $pause $strend
sowie $2 $pause
obgleich $2 $pause
obwohl $2 $pause
deren dE*@n $u+ $brk

// prepositions
ab ap $u+ $brk
an an $u+ $brk
am am $u+ $brk
auf aUf $u+ $pause
aus ,aUs $brk $strend
bei baI $u+ $pause $only
beim baIm $u+ $brk
bis bIs $u+ $pause
da $u+
durch $u+ $pause
für fy:* $u+ $pause $only
gegen ge:g@n $u+ $pause
gegend ge:g@nt
hin hIn
in In $u+ $brk
ab ap $u+ $brk
an an $u+ $brk
am am $u+ $brk
auf aUf $u+ $pause
aus ,aUs $brk $strend
bei baI $u+ $pause $only
beim baIm $u+ $brk
bis bIs $u+ $pause
da $u+
durch $u+ $pause
für fy:* $u+ $pause $only
gegen ge:g@n $u+ $pause
gegend ge:g@nt
hin hIn
in In $u+ $brk
//(in die) %Ind%i:
//(in den) %Ind%e:n
//(in der) %Ind%E*
im Im $u+ $brk
ins Ins $u+ $brk
mit mIt $u+ $pause
nach nax $u+ $brk
ob ,Ob $pause $strend $only
pro ,p@-*o: $pause
von fOn $u+ $brk
//(von dem) %fOn%de:m $brk
vom fOm $u+ $brk
vor ,fO* $strend
zu tsu: $u+ $brk
zum tsUm $u+ $pause
zur tsu:* $u+ $pause
über ,yb3 $pause $strend
unter ,Unt3 $pause $strend
um Um $u+ $brk
//(um die) %Umd%i: $brk
//(um den) %Umd%e:m $brk
während $pause
im Im $u+ $brk
ins Ins $u+ $brk
mit mIt $u+ $pause
nach nax $u+ $brk
ob ,Ob $pause $strend $only
pro ,p@-*o: $pause
von fOn $u+ $brk
//(von dem) %fOn%de:m $brk
vom fOm $u+ $brk
vor ,fO* $strend
zu tsu: $u+ $brk
zum tsUm $u+ $pause
zur tsu:* $u+ $pause
über ,yb3 $pause $strend
unter ,Unt3 $pause $strend
um Um $u+ $brk
//(um die) %Umd%i: $brk
//(um den) %Umd%e:m $brk
während $pause

// misc
so zo: $u+
doch dOx $u+
noch $pause
(noch nicht) n'Ox||n,ICt $brk
(nicht mehr) n'ICt||,me:*
(nicht mehr) n,ICt||m'e:* $atend
(nicht nur) n'ICt||n'u:* $pause
(gar nicht) g,A:*n'ICt
so zo: $u+
doch dOx $u+
noch $pause
(noch nicht) n'Ox||n,ICt $brk
(nicht mehr) n'ICt||,me:*
(nicht mehr) n,ICt||m'e:* $atend
(nicht nur) n'ICt||n'u:* $pause
(gar nicht) g,A:*n'ICt

// should these be in the Rules because they can be a prefix in a
// compound verb ?
daran dA:*'an
darauf $2
daraus $2
dabei $2
dadurch dA:d'U*x
dafür $2
dagegen $2
daher dA:h'Er
dahin dA:h'In
damit dA:m'It
danach $2
daneben $2
darein $2
darin dA:*'In
darüber $2
darum $2
darunter $2
davon dA:f'On
dazu dA:ts'u:
umher Umh'E*
umhin Umh'In
woran vo:*'an
worauf $2
woraus $2
worin vo:*'In
daran dA:*'an
darauf $2
daraus $2
dabei $2
dadurch dA:d'U*x
dafür $2
dagegen $2
daher dA:h'Er
dahin dA:h'In
damit dA:m'It
danach $2
daneben $2
darein $2
darin dA:*'In
darüber $2
darum $2
darunter $2
davon dA:f'On
dazu dA:ts'u:
umher Umh'E*
umhin Umh'In
woran vo:*'an
worauf $2
woraus $2
worin vo:*'In

// pronouns
ich %IC $only
du %du: $only
er %Er $brk $only
es %Ez $only
sie %zi: $only
wir %vi:* $only
ihr %i:*
man %man $only
sich %zIC $only
(es ist) %Ez%Ist
daß das $u+
dass das $u+
ein aIn $u+
eine ,aIn@
einem ,aIn@m
einen ,aIn@n
einer ,aIn3
eines ,aIn@s
ich IC $u $only
du du: $u $only
er Er $u $brk $only
es Ez $u $only
sie zi: $u $only
wir vi:* $u $only
ihr i:* $u
man man $u $only
sich zIC $u $only
(es ist) %Ez%Ist
daß das $u+
dass das $u+
ein aIn $u+
eine aIn@ $u
einem aIn@m $u
einen aIn@n $u
einer aIn3 $u
eines aIn@s $u

//kein $u+
//keine $u+

mein $u+
meine $u+
mein $u+
meine $u+

dein $u+
deine $u+
dein $u+
deine $u+

sein $u // can also be verb "to be"
seine $u+
sein $u // can also be verb "to be"
seine $u+

unsre ,Unz*@
unsere ,Unz*@
unser ,Unz3
unserm ,Uns3m
unserem ,Uns@*@m
unsre Unz*@ $u
unsere Unz*@ $u
unser Unz3 $u
unserm Uns3m $u
unserem Uns@*@m $u


ihre ,i:*@
ihrem ,i:*@m
ihrer ,i:*3
ihre i:*@ $u
ihrem i:*@m $u
ihrer i:*3 $u

dies ,di:z
diese ,di:z@
dies di:z $u
diese di:z@ $u

//
was vas
wie $u $pause
was vas
wie $u $pause

// abverbs
auch ,aUx
dann $u
etwa $u
ganz g,ants $only
je $u
nur $brk
auch ,aUx
dann $u
etwa $u
ganz g,ants $only
je $u
nur $brk

// verbs

bin %bIn
bist %bIst
ist %Ist
sind %zInt
seit %zaIt $only
habe %hA:b@ $only
habst %habst $only
hast %hast $only
hat %hat $only
haben h,A:b@n $only
hatte h,at@ $only
hatten h,at@n $only
hätte h,Et@ $only
hättest h,EtEst $only
hättet h,Et@t $only
hätten h,Et@n $only
war %vA:* $only
warst %vA:*st $only
wart %vA:*t $only
waren 'vA:*@n
will %vIl $only
willst %vIlst $only
wollen %vOl@n $only
wolt %vOlt
werden v,E*d@n
werde v,E*d@
werdst v,E*dst
werdet v,E*d@t
wurden vU*d@n
wurde vU*d@
wurdst vU*dst
wurdet vU*d@t
können ,kWn@n $only
kann ,kan $only
kannst ,kanst $only
könnt ,kWnt $only
konnt ,kOnt $only
sollen ,zOl@n
soll ,zOl
sollst ,zOlst
sollte ,zOlt@
sollten ,zOlt@n
bin bIn $u
bist bIst $u
ist Ist $u
sind zInt $u
seit zaIt $u $only
habe %hA:b@ $only
habst %habst $only
hast %hast $only
hat %hat $only
haben h,A:b@n $only
hatte h,at@ $only
hatten h,at@n $only
hätte h,Et@ $only
hättest h,EtEst $only
hättet h,Et@t $only
hätten h,Et@n $only
war %vA:* $only
warst %vA:*st $only
wart %vA:*t $only
waren 'vA:*@n
will %vIl $only
willst %vIlst $only
wollen %vOl@n $only
wolt %vOlt
werden v,E*d@n
werde v,E*d@
werdst v,E*dst
werdet v,E*d@t
wurden vU*d@n
wurde vU*d@
wurdst vU*dst
wurdet vU*d@t
können ,kWn@n $only
kann ,kan $only
kannst ,kanst $only
könnt ,kWnt $only
konnt ,kOnt $only
sollen ,zOl@n
soll ,zOl
sollst ,zOlst
sollte ,zOlt@
sollten ,zOlt@n




+ 6
- 1
dictsource/de_rules View File

@@ -98,8 +98,10 @@
_) achs (el 'aks
j) ag (d A:k
_) air _^_EN
m) air (_ aI3
ai (sch A:I
tr) ain En
air (_ E:r
akqu %akv
@A) al (_ 'A:l
g) al (_ 'A:l
@@ -131,7 +133,8 @@
_) aufent aUf@nt
austra (l %aUst@-*A
_) authen aUtEn
ay (_ EI
ay (_N EI
m) ayr (_ aI3
p) ay EI

.group b
@@ -356,6 +359,7 @@
ein (and _|%aIn
_) eine (r@ aIn@
_) einig aInIg
m) eir (_ aI3
_) eisen (@P5 'aIz@n
_) e (lek %e:
_) elektro (@P7 e:l'Ekt@-*o:
@@ -884,6 +888,7 @@

sound _^_EN
speed _^_EN
@) straße (_S6 st*,A:s@
_) street _^_EN
style _^_EN
synthesi _^_EN

+ 6
- 6
dictsource/dict_phonemes View File

@@ -157,10 +157,10 @@ S s2 t v Z

Dictionary fr_dict

@ @- @2 a a2 A~ e E
E2 E~ i i: o O o2 O2
O~ u u: W W2 w^i wA W~
y Y
@ @- @2 @3 a a2 A~ e
E E2 E~ i i: o O o2
O2 O~ u u: W W2 w^i wA
W~ y Y

: b d dZ f g h j
k l m n N n2 n^ p
@@ -254,8 +254,8 @@ S s2 t T tl# v x z

Dictionary it_dict

@- a a/ aI aU e E i
I o O oI u
@- a a/ aI aU e E eI
i I o O u

* : ; b d dZ f g
h j k l l^ m n N

+ 256
- 254
dictsource/en_list View File

@@ -132,7 +132,7 @@ _{ lEftbreIs
_| vi:b'A@
_} raItbreIs
~ tIld@ $max3
_¡ Inv,3:tI2dEkskl@m'eIS@n
%Inv,3:tI2dEkskl@m'eIS@n
_¦ broUk@nb'A@
_¨ daIa2r'i:sIs
_ª fEmI2nIn'O@dI2n@L
@@ -146,7 +146,7 @@ _¸ sEd'Il@
_¹ su:p@skrIptw'0n
_º maskjUlIn'O@dI2n@L
_» raIt'gIl@mEt
_¿ Inv,3:tI2dkw'EstS@n
_¿ %Inv,3:tI2dkw'EstS@n

_‐ haIf@n
_‑ haIf@n
@@ -668,7 +668,6 @@ blockade $2
blouse blaUz
blurry bl3:rI
?5 blurry blVRrI
bogey boUgI
boing bOIN
bombard $2
bonbon b0nb0n
@@ -1057,6 +1056,7 @@ extract $2 $verb
extradite Ekstr@daIt // extradited
extrem Ekstr'i:m // extremism
extremist Ekstr'i:mIst
extricate $1
eyrie i@rI

facade f@sA:d
@@ -1092,6 +1092,7 @@ fiord fi:O@d
fix fIks // for fixer
fjord fIO@d
flagellum fla2dZEl@m
flamenco fla2mENkoU
flexible flEksIb@L
flier flaI3
flourish flVrI2S
@@ -1162,6 +1163,7 @@ grenade gr@neId
griffon grIf@n
grosvenor groUv@n3
groupie gru:pI
guacamole gwA:ka2m'oUli:
gui gu:I
guinea gInI
gurus gu:ru:z
@@ -1228,6 +1230,7 @@ hyperbole haIp'3:b@lI
hypothesis haIp'0T@sIs
hypotheses haIp'0T@si:z
hypotenuse haIp'0t@nju:s
hypoxia haIp'0ksi@


icon aIk0n
@@ -1776,6 +1779,7 @@ reference rEfr@ns
referee rEf@r'i:
referral rI2f3:r@L
referring rI2f3:rI2N
refinery rI2faIn@rI
refit ri:fIt
reflex ri:flEks
reflux ri:flVks
@@ -1784,12 +1788,12 @@ regal ri:g@L
regime reIZ'i:m
region ri:dZ@n // & regional
reign reIn
reiki reIki:
rein reIn
reined reInd
reining reInI2N
reindeer reIndi@3
reinvent ri:Inv'Ent
refinery rI2faIn@rI
relative rEl@tIv
relic rElIk
relish rElI2S
@@ -2672,121 +2676,121 @@ so ,soU $strend2 $verbf
//prepositions
// these should be stressed at the end of a sentence

of 0v $u $only
?6 of Vv $u $only
(of a) @v@ $nounf
(of an) @v@n $nounf
(of which) 0vw'ItS $pause
?6 (of the) %VD@2 $nounf
?6 (of which) Vvw'ItS $pause
for fO@ $u
(for a) f@@ $nounf
(for an) f@@n $nounf
(for the) f3D@2 $nounf
of 0v $u $only
?6 of Vv $u $only
(of a) @v@ $nounf
(of an) @v@n $nounf
(of which) 0vwItS $2 $pause
?6 (of the) %VD@2 $nounf
?6 (of which) VvwItS $2 $pause
for fO@ $u
(for a) f@@ $nounf
(for an) f@@n $nounf
(for the) f3D@2 $nounf
(for a while) f@@||w'aIl
(for one) fO@w'0n $atend
(for one) fO@w0n $2 $atend

to t@5 $verbf // @ change to U before vowel
(to be) t@b%I $pastf
(to be) t@||'bi: $atend
(to to) %tU_t@5 $verbf
to t@5 $verbf // @ change to U before vowel
(to be) t@b%I $pastf
(to be) t@||'bi: $atend
(to to) %tU_t@5 $verbf
(to and fro) tu:@ndfr'oU
to tu: $u $atend
to tu: $allcaps
to tu: $u $atend
to tu: $u $allcaps


at at $nounf $only $u
(at a) %at@ $nounf
at at $nounf $only $u
(at a) %at@ $nounf
(at once) a2t_w0ns
(at will) a2t_w'Il

with wID $u
with wID $u
(with the) w%IDD@2 $nounf

in %In $strend $only $nounf
in %In $strend $only $nounf
(in the) %InD@2
(in which) In||w,ItS $pause
(in which) In||wItS $u2 $pause

on ,0n $strend2
on ,0n $strend2
(on the) %0nD@2

(out of) ,aUt@v
into ,IntU
onto ,0ntU $strend2
onto ,0ntU $strend2
unto ,VntU
?3 into ,Int2U
?3 onto ,0nt2U $strend2
?3 onto ,0nt2U $strend2
?3 unto ,Vnt2U
upon @p,0n
from %fr0m
?3 from %frVm
(from where) %fr0m||w'e@ $pause
(from which) %fr0m||w'ItS $pause
up ,Vp $strend2
down ,daUn $only $strend2
by %baI
across @kr,0s $strend2
per %p3:
upon @p0n $u2
from fr0m $u
?3 from frVm $u
(from where) %fr0m||w'e@ $pause
(from which) %fr0m||w'ItS $pause
up ,Vp $strend2
down ,daUn $only $strend2
by baI $u
across @kr0s $u2 $strend2
per p3: $u
(per cent) p3||s'Ent
(per se) p,3:||s'eI
through %Tru: $strend2
toward %tUwO@d
over ,oUv3 $strend2 $only
under ,Vnd3 $strend2 $only
within %wID,In
without %wID,aUt $strend2
above @b,Vv $strend2
about a2b,aUt $strend2
through Tru: $u $strend2
toward tUwO@d $2
over oUv3 $u $strend2 $only
under Vnd3 $u $strend2 $only
within wIDIn $u2
without wIDaUt $u2 $strend2
above @bVv $u2 $strend2
about a2baUt $u2 $strend2
against a2gEnst
ahead a2hEd
among a2m,VN $strend2
amongst a2m,VNst $strend2
among a2mVN $u2 $strend2
amongst a2mVNst $u2 $strend2
around a2raUnd
before bIf,o@ $strend2
behind bIh,aInd $strend2
below bIl,oU $strend2
beneath bI2n,i:T $strend2
beyond bIj,0nd $strend2
beside bIs,aId $strend2
between bItw,i:n $strend2
together t@g,ED3 $strend2
near ,ni@3 $strend2
before bIfo@ $u2 $strend2
behind bIhaInd $u2 $strend2
below bIloU $u2 $strend2
beneath bI2ni:T $u2 $strend2
beyond bIj0nd $u2 $strend2
beside bIsaId $u2 $strend2
between bItwi:n $u2 $strend2
together t@gED3 $u2 $strend2
near ,ni@3 $strend2
thence DEns


//aux. verbs

be %bi: $pastf $only
been ,bi:n $pastf $only
?3 been ,bIn $pastf $only
being ,bi:IN $pastf $only $strend2
is %Iz $pastf $only // use contraction for 'is a'
be %bi: $pastf $only
been ,bi:n $pastf $only
?3 been ,bIn $pastf $only
being ,bi:IN $pastf $only $strend2
is %Iz $pastf $only // use contraction for 'is a'
// am %am $nounf $only // now in en_rules
are %A@ $pastf $only
was %w0z $pastf $only
?3 was %wVz $pastf $only
?3 wasn't wVznt $pastf $only
wast %w0st $only $pastf $only
were %w3: $pastf $only
isn't ,Iz@nt $pastf $strend2
aren't ,A@nt $pastf $strend2
weren't ,w3:nt $pastf $strend2
will $u+ $only $verbf $strend2
will $noun
are %A@ $pastf $only
was %w0z $pastf $only
?3 was %wVz $pastf $only
?3 wasn't wVznt $pastf $only
wast %w0st $only $pastf $only
were %w3: $pastf $only
isn't ,Iz@nt $pastf $strend2
aren't ,A@nt $pastf $strend2
weren't ,w3:nt $pastf $strend2
will $u+ $only $verbf $strend2
//will $noun // but not "this/these/that/those will"
(will to) wIlt@5
would $u+ $verbf $only $strend2
(would have) w%Udh%a2v $pastf
(would have) wUdhav $pastf $atend
(would have to) wUd,havt@5 $verbf $strend2
(wouldn't have) ,wUdnt@v $pastf $strend2
(would have to) wUdhavt@5 $u2 $verbf $strend2
(wouldn't have) wUdnt@v $u1 $pastf $strend2
(wouldn't have to) ,wUdntavt@5 $verbf $strend2
won't woUnt $u+ $verbf $strend2 $only
won't woUnt $u+ $verbf $strend2 $only
wouldst $u+
(won't have) woUnta2v $pastf $u1
(won't have) woUnthav $pastf $atend
(won't have to) w'oUntavt@5 $verbf $strend2
(won't have) woUnta2v $pastf $u1
(won't have) woUnthav $pastf $atend
(won't have to) w'oUntavt@5 $verbf $strend2

must $verbf
(must have) mVsta2v $pastf $1
@@ -2800,81 +2804,81 @@ shall ,Sal $verbf $only $strend2
shalt ,Salt $verbf $only
should ,SUd $verbf $only $strend2
(should have) SUd@v $pastf $u1+
(should have to) SUd,havt@5 $verbf $strend2
shouldn't ,SUdnt $verbf $strend2 $only
(shouldn't have) SUdnth@v $pastf $u1+
(shouldn't have to) 'SUdntavt@5 $verbf $strend2
shalln't ,SA:nt $verbf $strend2
shan't ,SA:nt $verbf $strend2
can %kan $verbf $only $strend2
can't kA:nt $verbf $only $strend2
?3 cannot $2 $verbf $only $strend2
(can't have) kA:nta2v $pastf
(can't have to) ,kA:nt'avt@5 $verbf $atend
?3 can't kant $verbf $only $strend2
?3 (can't have) kanta2v $pastf
(should have to) SUdhavt@5 $u2 $verbf $strend2
shouldn't ,SUdnt $verbf $strend2 $only
(shouldn't have) SUdnth@v $pastf $u1+
(shouldn't have to) 'SUdntavt@5 $verbf $strend2
shalln't ,SA:nt $verbf $strend2
shan't ,SA:nt $verbf $strend2
can %kan $verbf $only $strend2
can't kA:nt $verbf $only $strend2
?3 cannot $2 $verbf $only $strend2
(can't have) kA:nta2v $pastf
(can't have to) ,kA:nt'avt@5 $verbf $atend
?3 can't kant $verbf $only $strend2
?3 (can't have) kanta2v $pastf
?3 (can't have to) ,kant'avt@5 $verbf $atend
could %kUd $verbf $strend2 $only
(could have) ,kUda2v $pastf
(could have) kUdhav $pastf $atend
(could have to) kUd,havt@5 $verbf $strend2
could %kUd $verbf $strend2 $only
(could have) ,kUda2v $pastf
(could have) kUdhav $pastf $atend
(could have to) kUdhavt@5 $u2 $verbf $strend2
couldn't ,kUd@nt $verbf $strend2
(couldn't have) kUd@nt@v $pastf $u1+
(couldn't have to) 'kUd@ntavt@5 $verbf $strend2

may meI $verbf $strend2
(may have) meIha2v $pastf $u1+
(may have to) ,meIh'avt@5 $verbf $atend
might ,maIt $verbf $strend2 $only
(might have) maItha2v $pastf $u1+
(might have to) ,maIth'avt@5 $verbf $atend
may meI $verbf $strend2
(may have) meIha2v $pastf $u1+
(may have to) ,meIh'avt@5 $verbf $atend
might ,maIt $verbf $strend2 $only
(might have) maItha2v $pastf $u1+
(might have to) ,maIth'avt@5 $verbf $atend

have %hav $pastf $only $strend2
have %hav $pastf $only $strend2
haves havz
(have been) %hav%bIn $pastf
has %ha2z $pastf $only
has haz $only $atend
(has been) %haz%bIn $pastf
(has to) haztU $atend
has haz $allcaps
hath %haT $pastf $only
had %had $pastf $strend2 $only
(had been) %had%bIn $pastf
having ,havI2N $strend2 $pastf $only
haven't hav@nt $pastf
hadn't had@nt $pastf
hasn't haz@nt $pastf
get %gEt $strend2 $pastf $only
getting ,gEtI2N $strend2 $pastf $only
got %g0t $strend2 $pastf $only
go ,goU $strend2 $only
goes %goUz $strend2 $only
going ,goUI2N $strend2 $only
gone %g0n $strend2 $only
?3 gone %gOn $strend2 $only
went %wEnt $strend2 $only
do du: $verbf
(do not) du:n0t $verbf $u2+
does dVz $verbf
(does not) dVzn0t $verbf $u2+
don't doUnt $verbf
doesn't dVz@nt $verbf
doesnt dVz@nt $verbf
doing ,du:I2N $strend2 $only
did dId $verbf
(did not) dIdn0t $verbf $u2+
didn't dIdnt $verbf
(have been) %hav%bIn $pastf
has %ha2z $pastf $only
has haz $only $atend
(has been) %haz%bIn $pastf
(has to) haztU $atend
has haz $allcaps
hath %haT $pastf $only
had %had $pastf $strend2 $only
(had been) %had%bIn $pastf
having ,havI2N $strend2 $pastf $only
haven't hav@nt $pastf
hadn't had@nt $pastf
hasn't haz@nt $pastf
get %gEt $strend2 $pastf $only
getting ,gEtI2N $strend2 $pastf $only
got %g0t $strend2 $pastf $only
go ,goU $strend2 $only
goes %goUz $strend2 $only
going ,goUI2N $strend2 $only
gone %g0n $strend2 $only
?3 gone %gOn $strend2 $only
went %wEnt $strend2 $only
do du: $verbf
(do not) du:n0t $verbf $u2+
does dVz $verbf
(does not) dVzn0t $verbf $u2+
don't doUnt $verbf
doesn't dVz@nt $verbf
doesnt dVz@nt $verbf
doing ,du:I2N $strend2 $only
did dId $verbf
(did not) dIdn0t $verbf $u2+
didn't dIdnt $verbf
done dVn

putting pUtI2N
put ,pUt $onlys $strend2
put ,pUt $onlys $strend2

become bI,kVm $strend2
became bI,keIm $strend2
become bIkVm $u2 $strend2
became bIkeIm $u2 $strend2

we're %wi@3
you're %jO@
@@ -2884,58 +2888,58 @@ it'd %It@d
that'd %Dat@d
there'd %De@d

I'll %aIl $verbf
you'll %ju:l $verbf
he'll %hi:l $verbf
she'll %Si:l $verbf
we'll %wi:l $verbf
they'll %DeIl $verbf
there'll %De@l $verbf
I'll aIl $u $verbf
you'll ju:l $u $verbf
he'll hi:l $u $verbf
she'll Si:l $u $verbf
we'll wi:l $u $verbf
they'll DeIl $u $verbf
there'll De@l $u $verbf

I've %aIv $pastf
you've %ju:v $pastf
he's %hi:z $pastf
she's %Si:z $pastf
we've %wi:v $pastf
they've %DeIv $pastf
I've aIv $u $pastf
you've ju:v $u $pastf
he's hi:z $u $pastf
she's Si:z $u $pastf
we've wi:v $u $pastf
they've DeIv $u $pastf

we'd %wi:d $pastf
we'd wi:d $u $pastf

I aI $u+ $verbf $only
I aI $u+ $verbf $only
(I am) %aIa2m
(I am) %aIam $atend
he %hi: $verbsf
she %Si: $only $verbsf
it %It $verbsf
(it has) %It||haz $atend
(it is) %It||Iz $atend
(it was) %It||w0z $atend
it $allcaps $abbrev
we %wi: $verbf $only
you %ju: $verbf
they %DeI $verbf
(I am) %aIam $atend
he hi: $u $verbsf
she Si: $u $only $verbsf
it It $u $verbsf
(it has) %It||haz $atend
(it is) %It||Iz $atend
(it was) %It||w0z $atend
it $allcaps $abbrev
we wi: $u $verbf $only
you ju: $u $verbf
they DeI $u $verbf

thee ,Di:
thou DaU
thy ,DaI
thine ,DaIn

me ,mi: $only
him ,hIm $only
us ,Vz $only
us $abbrev $allcaps
them ,DEm $only
my %maI $nounf $strend2
his h%Iz $nounf $only $strend2
her %h3: $nounf $only
hers %h3:z $strend2
its %Its $nounf
our %aU@ $nounf $only
?3 our %aU3 $nounf $only
your %jO@ $nounf $only
?6 your %jU@ $nounf $only
their %De@ $nounf $only
me ,mi: $only
him ,hIm $only
us ,Vz $only
us $abbrev $allcaps
them ,DEm $only
my maI $u $nounf $strend2
his hIz $u $nounf $only $strend2
her h3: $u $nounf $only
hers h3:z $u $strend2
its Its $u $nounf
our aU@ $u $nounf $only
?3 our aU3 $u $nounf $only
your jO@ $u $nounf $only
?6 your jU@ $u $nounf $only
their De@ $u $nounf $only
theirs De@z

none n0n
@@ -2946,76 +2950,76 @@ someone sVmw0n

//conjunctions

although OlD'oU $pause
and %and $pause $only
as ,az $pause $only
(as is) ,az,Iz $pause
(as it is) ,azIt,Iz $u+
because bIk'Vz $pause
once $pause
or %O@ $pause $only
nor nO@ $pause $only
but ,bVt $pause $only
if ,If $pause $only
despite $pause
instead $pause
otherwise VD3waIz $pause
regardless $pause
since sIns $pause
thus DVs $pause
although OlD'oU $pause
and and $u $pause $only
as ,az $pause $only
(as is) ,az,Iz $pause
(as it is) ,azIt,Iz $u+
because bIkVz $2 $pause
once $pause
or O@ $u $pause $only
nor nO@ $pause $only
but ,bVt $pause $only
if ,If $pause $only
despite $pause
instead $pause
otherwise VD3waIz $pause
regardless $pause
since sIns $pause
thus DVs $pause
though ,DoU
whenever wEn,Ev3 $pause
within $pause
whoever hu:'Ev3
whatever w0t'Ev3 $pause
?3 whatever wVt'Ev3 $pause
while $pause
whilst waIlst $pause
(rather than) r'A:D3||Da2n $pause
//some adverbs (note -ly suffix already implies verb-follows)
just $verbf
never $verbf
now $verbf
now naU $verbf $allcaps
soon $verbf
still $verbf
already O:lr,EdI $verbf $strend2
not ,n0t $verbextend $only $strend
(not have) n0ta2v $pastf $u1
(not have) n0thav $pastf $atend
(not have to) ,n0thavt@5 $pastf $strend
(not a) ,n0t@ $nounf
not n0t $allcaps $verbextend // don't spell "NOT"; speak it with stress
only oUnlI $verbextend
any ,EnI $nounf $only
many mEnI $nounf
whenever wEnEv3 $u2 $pause
within $pause
whoever hu:Ev3 $2
whatever w0tEv3 $2 $pause
?3 whatever wVtEv3 $2 $pause
while $pause
whilst waIlst $pause
(rather than) r'A:D3||Da2n $pause
//some adverbs
just $verbf
never $verbf
now $verbf
now naU $verbf $allcaps
soon $verbf
still $verbf
already O:lrEdI $u2 $verbf $strend2
not ,n0t $verbextend $only $strend
(not have) n0ta2v $pastf $u1
(not have) n0thav $pastf $atend
(not have to) ,n0thavt@5 $pastf $strend
(not a) ,n0t@ $nounf
not n0t $allcaps $verbextend // don't spell "NOT"; speak it with stress
only oUnlI $verbextend
any ,EnI $nounf $only
many mEnI $nounf
(many of) mEnI|@v
some ,sVm $nounf $unstressend $only
some ,sVm $nounf $unstressend $only
(some one) sVmw0n
one w0n $nounf $onlys $unstressend
ones w0nz $only $unstressend
this %DIs $nounf $strend $verbsf
(this one) D'Isw,0n $verbsf
that %Dat $nounf $strend2 $verbsf
(that a) ,Dat@ $nounf
(that an) ,Dat@n $nounf
(that it) ,Da2tIt $verbsf
one w0n $nounf $onlys $unstressend
ones w0nz $only $unstressend
this DIs $u+ $nounf $verbsf
(this one) D'Isw,0n $verbsf
that Dat $u $nounf $strend2 $verbsf
(that a) ,Dat@ $nounf
(that an) ,Dat@n $nounf
(that it) ,Da2tIt $verbsf
(that one) D'atw,0n
(that the) %DatD@2
these %Di:z $nounf $strend2 $only
those %DoUz $nounf $strend2 $only
there %De@ $strend2 $only
these Di:z $u $nounf $strend2 $only
those DoUz $u $nounf $strend2 $only
there De@ $u $strend2 $only
(there be) De@b'i:

than %Dan $only
(than a) ,Dan@ $nounf
(than an) ,Dan@n $nounf
then DEn $verbf
than Dan $u $only
(than a) ,Dan@ $nounf
(than an) ,Dan@n $nounf
then DEn $verbf

// these should be stressed at the start of a sentence
which ,wItS $pause $strend2 $only $verbf
@@ -3102,5 +3106,3 @@ like laIk $strend2
?3 vitamin vaIt@mIn
?3 zebra zi:br@




+ 17
- 7
dictsource/en_rules View File

@@ -625,6 +625,7 @@
amaz (o am@z
ambi (d ambI
ch) am (b eIm
fl) ame eIm
As) ame (_ 'A:mE
_) ame (l a2mi:
&) am (ent @m
@@ -1604,7 +1605,7 @@
di (scot dI
di (scount dI
di (scov dI2
_) di (se ,dI
_) di (seP3 ,dIs
di (sh_ dI
di (shC dI
_) di (shev+ dI2
@@ -1743,7 +1744,7 @@
r) eu (d OI
eu (m_ i:
s) eu (m_ 'i@
eur 3:
l) eur 3:
?5 eur VR
eur (_ '3:
?3 eur (_ 'U@
@@ -2001,7 +2002,7 @@
_) ena (m I2na
&) en (Ance @n
&) en (ch En
encha (n %EntSaa
_) encha (n %EntSaa
enclav EnkleIv
en (core 0n
&) ency (_ @ns%I
@@ -2442,6 +2443,7 @@
o) g (et dZ
er) g (et dZ
for) ge (t gE
bo) g (Ey g
&) gia (_ dZ@
&) gia (C_ dZ@
&) giu (m dZ@
@@ -2455,6 +2457,7 @@
g (ird g
g (irl g
g (irt g
_) g (it g
g (ive g
@) guay (_ gwaI
gue (_ g
@@ -2491,6 +2494,9 @@
_) house (@ haUs
house (_S5 haUs
houses (_S6 haUzI2z
_) hypo (@P4 h,aIpoU
hypo (de h,aIp@
hypo (thet h,aIp@

.group i
i I
@@ -2724,8 +2730,9 @@
iah (_ 'aI@
ia (m I2@
&) ia (n i@
&) ia (nic I'a
&) ia (na I'a
@) ia (nic I'a
@) ia (nit I'a
@) ia (na I'a
ia (ng_ ja
_f) ia (nc I'0
_f) iance I'0nseI
@@ -2778,6 +2785,7 @@
ie (ntal I'E
g) ie (n i:
sc) ie (nc aI@
ie (ntiC aI@
_sc) ie (n aI@
?8 _sc) ie (n aIa2
ie (nCiA I2'E
@@ -3149,7 +3157,7 @@
it (um aIt

.group iv
@) iva (_ 'aIv@
@l) iva (_ 'aIv@
@) iv (e Iv
iv (e# aIv
h) iv (e_ aIv
@@ -3760,6 +3768,7 @@
_h) on (ey Vn
n) on (e 0n
m) one (ta VnI
m) one (ti 0nI2
_) one (r oUn@
m) on (ey Vn
und) one (_ Vn
@@ -4348,6 +4357,7 @@
_) rho (t roU
rhyth rID
_) rm ,A@Em
rrhea r'i@
rrhoea r'i@
_) ru (bL01 ru:
_) run (a rVn
@@ -4403,8 +4413,8 @@
re (gist rE
rehen rIh'En
_) re (i@P2 r,i:
_) rei (l raI
_) rei (c raI
_) rei (l raI
_) rele (g rElI2
rele (nt rI2lE
rele (v rElI

+ 13
- 6
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2009-03-12 Michel Such <[email protected]>
// Updated 2009-04-04 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -233,7 +233,7 @@ _dpt virgyl
abc $abbrev
ac $abbrev
adsl $abbrev
alt $pause
alt _::alt
amd $abbrev
anpe $abbrev
api $abbrev
@@ -242,7 +242,7 @@ bd boulevard $text
brltty $abbrev
cci $abbrev
cio $abbrev
ctrl control $text $pause
ctrl _::kO~tRol
dept depart@-mA~
edf $abbrev
etc etsetera
@@ -253,16 +253,21 @@ ibm $abbrev
ide $abbrev
ip $abbrev
jaws dZ'awz
kbit kilobit
kbits kilobit
kde $abbrev
kg kilogram
khz kiloE2rts
km kilomètre $text
kw kilowat
kw kilowat
m. m@sjY
mbit mega2bit
mbits mega2bit
mbrola Embrola
mhz megaE2rts
mlle mad@mwAzEl
mme madam
mlle mademoiselle $text
mme madame $text
mr m@sjY
nsi $abbrev
nsis $abbrev
@@ -576,7 +581,6 @@ 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
@@ -594,6 +598,7 @@ hélas elas $u+
iris iris
laser lazEr
malus malys
mailto mEjltu_
mapper _^_en
mars mars
mieux mjY $u+
@@ -605,6 +610,7 @@ polder pOldEr
premier pr@mjer2
program _^_en
quit _^_en
recorder ricordeur $text
scanner skaner2
scanner skanWr $noun
sir _^_EN
@@ -794,3 +800,4 @@ zimbabwe zimbabwe





+ 10
- 7
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2009-03-12 Michel Such <[email protected]>
// Updated: 2009-04-01 Michel Such <[email protected]>
//

// Letter classes:
@@ -126,6 +126,7 @@
e) ch (_ k // varech
_A) ch (o_ k // écho
mani) ch (é k // manichéisme
mito) ch (o k // mitochondrie
_eu) ch (ari k // eucharistie
or) ch (esC k // orchestre
or) ch (iC k // orchidée
@@ -213,17 +214,17 @@ _) ç' (P2v s

// Define use of the final 'e' in french
e (_
rch) e (_ =@-
rch) e (s_ =@-
elqu) e =@-
rch) e (_ =@3
rch) e (s_ =@3
elqu) e =@3
uisqu) e =@
rsqu) e =@
_C) e (_ @2 // je te
-c) e (_ @-
-j) e (_ @-
C) e (- @-
L02r) e (_ =@-
L02r) e (s_ =@-
L02r) e (_ =@3
L02r) e (s_ =@3

e (Ce_ E
eau o // bateau cheveaux
@@ -246,6 +247,7 @@ _) ç' (P2v s
gu) e (rA @
qu) e (rA @
v) e (lop @-
tch) e (rX W
@) em (me a // patiemment
em (b A~ // décembre
em (mACC A~ // emmancher
@@ -870,7 +872,8 @@ _) half _^_en
om (_ Om // www.web.com
on (K O~ // mon
on (t_ O~t2 // mont vont sont
_m) ont (CAC O~ // montpellier
_m) ont (pAC O~ // Montpellier
_m) ont (rAal O~ // Montreal
onsh (A O~z // bonshommes
onh (A On // bonhomme
_) on (z _!O~ // onze, onzi�me

+ 114
- 88
dictsource/it_list View File

@@ -1,6 +1,9 @@
// This file is UTF-8 encoded

// Italian: any [E] or [O] phonemes in unstressed words must be listed explicitly

// $alt change [e] or [o] in the stressed syllable to [E] or [O]
// $alt2 change [E] or [O] in the stressed syllable to [e] or [o]
// Any [E] or [O] phonemes in unstressed words must be listed explicitly


// character names
@@ -148,38 +151,38 @@ _0Z3 mill'ezimi // 1000ths
(http ://) 'ak:at,i:t,i:p'i:_

// articles
i $u
il $u
la $u
le $u
lo $u
un $u
una $u
i $u $only
il $u $only
la $u $only
le $u $only
lo $u $only
un $u $only
una $u $only

gli l^i $u
gli l^i $only $u


// pronouns
io $u+
tu $u+
lui $u+
lei $u+
noi $u+
voi $u+
loro $u+
egli $u+
ella $u+
essa $u+
esse $u+
essi $u+
mi $u+
ti $u+
si $u+
ci $u+
vi vi $u+
li li $u+
io $u+ $only
tu $u+ $only
lui $u+ $only
lei $u+ $only
noi $u+ $only
voi $u+ $only
loro $u+ $only
egli el^i $u+
ella ella $u+
essa essa $u+
esse esse $u+
essi essi $u+
mi $u+ $only
ti $u+ $only
si $u+ $only
ci $u+ $only
vi vi $u+ $only
li li $u+ $only


// words that double the following consonant
@@ -216,7 +219,7 @@ queste $u // these

quel $u // that
quella $u // that
quei $u // those
quei kw2ej // those
quegli $u // those
quelle $u // those

@@ -235,7 +238,7 @@ tuttavia $pause // however
invece $pause // instead
malevolenza $pause // despite
pertanto $pause // therefore
né $pause // neither-nor
né $pause $only // neither-nor

(in cui) in||kw2,i $pause // in which
che $u $pause // which
@@ -243,16 +246,16 @@ che $u $pause // which

// prepositions
a $u // $double
al $u
al $u $only
allo $u
alla $u
ai $u
agli $u
agli $u $only
alle $u

ad $u $brk

da $u $brk // by
da $u $only $brk // by
dal $u
dallo $u
dalla $u // by the
@@ -260,25 +263,25 @@ dai $u
dagli $u
dalle $u

di $u $brk // of
del $u
di $u $only $brk // of
del $u $only
dello $u
della $u // of the
dei $u
degli $u
delle $u
de $u
de $u $only

in $u $brk // in
nel $u $brk
in $u $brk $only // in
nel $u $brk $only
nello $u $brk
nella $u $brk // in the
nei $u $brk
negli $u $brk
nelle $u $brk
ne $u $brk
ne $u $brk $only

su $u //$double // on
su $u $only //$double // on
sul $u
sullo $u
sulla $u // on the
@@ -287,15 +290,15 @@ sugli $u
sulle $u

con $u $pause $only // with
col $u
coi $u
col $u $only
coi $u $only

attraverso $u+ $brk // across, through
attraverso $brk $3 // across, through
contro $u+ $brk // against
accanto $u+ $brk // beside
verso $u+ $brk // toward
sopra $u+ $brk // above
sotto $u+ $brk // below
sotto $u+ $brk $alt2 // below
per $u $pause $only // for
eccetto $pause // except
senza $pause // without
@@ -315,9 +318,9 @@ fu $u //$double
fummo $u
foste $u
furono $u
ero $u
eri $u
era $u
ero $u $only
eri $u $only
era $u $only
eravamo $u
eravate $u
erano $u
@@ -425,14 +428,7 @@ aces _^_EN


// exceptions
aereo $2
difficile $2
pneumatici $3

nott nOt: $stem
tavol $1 $stem
vent vEnt $stem

aereo a'EReo
celsius tsElsj'us
conoscerla $2
no nO
@@ -441,38 +437,68 @@ principi $1
tesser tess'ER
uomini $1

// $alt = use ò or è in the stressed syllable
quia kw'ia


// If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o'
$textmode

abbandonatel $4
abbazie abbazìe
abbinano $2
abbinini $2
abbisognino $3
abituarcisi $2
accalcano $2
accalchino $2
accantonal $3
accatastano $3
accatastino $3
accavallio $4
accenditi $2
accertano $2 $alt
accertino $2 $alt
acclamano $2
acclamino $2
accolit $2 $alt
accomunano $3
accomunino $3
accorpano $2 $alt
accorpino $2 $alt
accostarcisi $3
accovacciano $3
accovaccino $3
acefala $2
acer accer // acer/i/o
acid accid // acida/e
acidul $1


// fix errors in it_listx
accetto $alt
agosta $1
allora $alt2
anomalo $2 $alt
antera $2
aton $1
bagli $2 $only
barbera $2
bocca $alt2
borro $alt2
capello $alt2
ceca $alt
collodi $2 $alt $only
corsa $alt2
doma $alt
ei eI
epa $alt
esper $1 $alt
est $only
fieri f'ieRi
forca $alt2
fori $alt $only
gener $1
genes $1
gorga $alt2
gotta $alt2
ias iaz $1
indolo $2
leggi ledZ'i
lena $alt2
nocciola $2
olimpiade olimp'iade
orca $alt2
ossa $alt2
pena $alt2
peoni $1 $only
pesce $alt2
peste $alt
ponto $alt
protas $1

rene $alt
scopa $alt2
sera $alt2
teco $alt2
vicari $1 $only
vicaria $3
volto $alt2
zone $alt2










+ 4126
- 0
dictsource/it_listx
File diff suppressed because it is too large
View File


+ 199
- 99
dictsource/it_rules View File

@@ -7,14 +7,17 @@
// K not a vowel (i.e. consonant or end-of-word)
// Y front vowels: e i (& accents)
.L01 a à o ò ó u ù
.L02 e é è


.group a
a a:
a (CK a
ai aI (K
a a
ai (K aI
ao (_ aU
au a%u

&) a (_S1q a // lookup it_list without suffix
@C) a (_S1q a // lookup it_list without suffix
@i) a (_S1q a // lookup it_list without suffix

@) a (cA_ =a
@) a (che_ =a
@@ -23,16 +26,20 @@
@) a (bile_ 'a
@) a (ggine_ 'a

_) ae (ro aI
_) ae (r aI
@) avano (_S5 'avano
a (tterA_ 'a

.group à
à ''a
ài (K ''aI
ào (_ ''aU
àu ''a%u

.group b
b b
bb b:

li) be =be
.group c
c k
cc k:
@@ -51,38 +58,63 @@
n) dere =deRe

.group e
e e:
e (CK e
e (T E: // The word has $alt in it_list
e (CKT E // $alt
ei ej (K

e (r E: // ?? [E] before 'r'
e (rK E
e (rsi_N e
e e
ei Ej (K
@C) e (_S1q e // lookup it_list without suffix
@Ar) e (_ e

e (C_ E
e (A E
e (C%A_ E // doubled consonant
e (CiCA_ E
e (CulA_ E
e (llu E
e (st E
e (ttA_ e
c) e (ttA_ E
e (tti@ E
e (zzA_ e

e (r E
e (rsi_N e
A) e (r_ 'E

_r) e E

&) e (_S1q e // lookup it_list without suffix
// @) e (ce_ =e
@) e (ci_ =e
C) e (re_ =e

@) e (nte_ E
@m) e (nte_ e
@) e (nza_ E
@) e (volA_ 'e
e (l E
r) e (m E
e (monA_ 'e
e (nA_ E
g) e (ne E
e (ngA_ e
e (nCA_ E
@m) e (ntA_ e
%C) e (rA_ =E
C) e (re_ =E
gg) e (ro_ E
f) e (rm e
@) e (rrimo_ 'E
@) e (simo_ 'e
h) e (ss e
m) e (ss e
_sC) e (ss e
e (ssa_ e
e (tr E
e (ti E

e (vi_ E
e (vo_ E
@) e (volA_ 'e
e (zA E

@) evano(_S5 'evano

.group f
f f

@A) f (ico_ =f
@A) f (ichA_ =f
@A) f (ilo_ =f
@A) f (ero_ =f
A) f (ero_ =f
.group g
g g
@@ -90,6 +122,8 @@
gh g
g (Y dZ
gi (L01 dZj
gi (a_ dZ'i
n) gi (a_ dZj
gg (Y dZ:
ggi (L01 dZ:
@) gger (lo_ =dZ:eR
@@ -100,55 +134,74 @@
gn n^
gu (A gw

@) g (ero_ =g
@) gno (lA_ n^'o

.group h
h
ha h'a
_) ha h'a
_) hà h'a

.group i
i i:
i (CK i
i i
i (A j
l) i (A %i
r) i (A %i
_C) i (a i
_C) i (à i
i (o i
i (ò i
i (ó i
@) ia (_ =i%a
@) io (_ =i%o
@) ià (_ i'a
X) ia (_ 'ia
af) ia (_ 'ia
fon) ia (_ 'ia
scop) ia (_ 'ia
er) ia (_ 'ia
gor) ia (_ 'ia
metr) ia (_ 'ia
t) ia (_ 'ia
@) io (_S1q =i%o
a) i (+ j
e) i (+ j
à) i (+ j
L02) i (+ j
o) i (+ j

&) i (_S1q i // lookup it_list without suffix
@C) i (_S1q i // lookup it_list without suffix

@) i (co_ =i
@) i (ci_ =i
@) i (dA_ =i
@) i (dere_ 'i
@) i (le_ =i
@) i (li_ =i
@) i (ma_ =i
r) i (ma_ i
laCr) i (ma_ =i
st) i (ma_ i
enz) i (ma_ i
@) i (mo_ =i
@) iera (_ i'E:Ra
@) iere (_ i'E:Re
@) i (ente_ i
@) i (ante_ i
@) i (Ante_ i
i (acA_ 'i
i (asi_ 'i
@) i (bile_ 'i
@) i (cA_ =i
tr) i (ce_ i
@) i (chA_ =i
@) i (dA_ =i
@) i (dere_ 'i
@) ie (rA_ i'E
@) ié (rA_ i'E
@) iè (rA_ i'E
@) i (gA_ =i
i (genA_ 'i
c) i (lA_ =i
g) i (lA_ =i
ss) i (lA_ =i
b) i (le_ =i
m) i (le_ =i
i (lA_ =i
@) i (ma_ =i
r) i (ma_ i
laCr) i (ma_ =i
st) i (ma_ i
enz) i (ma_ i
@) i (mo_ =i
inas (_ 'inas
i (ne_ =i
@) issima(_S6 'issima
@) issime(_S6 'issime
@) issimi(_S6 'issimi
@) issimo(_S6 'issimo
@) issero(_S6 'issero
@) i (sti 'i
p) i (te_ =i

.group j
@@ -165,43 +218,83 @@
.group m
m m
A) mi (a m'i:
@) mi (co_ m'i:
A) mi (a_ m'i
.group n
n n
n (g N
n (ge n
n (gé n
n (gè n
n (gi n
n (gY n
n (k N
.group o
o o:
o (CK o
o (T O: // $alt
o (CKT O // $alt
oi oI (K
o o
oi O%I
oi (o_ o%I
oi (sCA_ o'i

o (C%A_ O // doubled consonant
o (CACA_ O
o (Cr O
o (CC_ O

o (r O: // ?? [O] before 'r'
o (rK O
o (re_ o

&) o (_S1q o // lookup it_list without suffix
@C) o (_S1q o // lookup it_list without suffix
@i) o (_S1q o // lookup it_list without suffix

@) o (ista_ o
@) o (ismo_ o
i) o O
i) o (ne o
i) o (so_ o

m) o (bile O
o (ca_ O
o (co_ O
@) o (di_ =o
@) o (do_ =o
@) o (fono_ 'O
o (genA_ 'O
l) o (gico_ 'O
@) o (gnolo_ 'o
@) o (nzolo_ 'o
@) o (grafo_ 'O
@) o (fono_ 'O
@) o (metro_ 'O
o (lX O
nd) o (lA_ =O
ns) o (lA_ =O
CC) o (lA_ =O
u) o (lA_ O
v) o (lA_ =o
@) o (la_ O
gn) o (la_ O
o (li O
@) o (liA_ O
@) o (lo_ =O
i) o (lA_ O
ci) o (lA_ =O
@) o (logo_ 'O
o (str 'O
@) o (di_ =o
@) o (do_ =o
@) o (lo_ =o
c) o (ltA_ O
sc) o (ltA_ o
v) o (lt O
@) o (metro_ 'O
@) o (ma_ O
@) o (mo_ O
dr) o (mo_ =o
o (ni O
o (ni_ o
o (no_ O
@) o (nomo_ 'O
@) o (nzolo_ 'o
o (o O
o (polA_ 'O
sc) o (p O
o (r O
o (re_ o
f) o (rmA_ o
o (si_ O
o (ss O
Ar) o (ssA_ o
o (st O
o (stracA_ 'O
o (ttol O
o (zA O

.group p
@@ -239,11 +332,15 @@
s (t s
s (x s
sc (Y S
sci (L01 S
sci (A S
sci (i S%i
sci (ì S%i
sch (Y sk
sh (K S // foreign words
K) sh S // foreign words
@) sia s'ia
@) sia z'ia
@C) sia s'ia
@) sià zi'a
@) s (_S1 s
.group t
@@ -251,14 +348,15 @@
tt t:
.group u
u u:
u (CK u
u u
u (A w2
Kr) u (A u
Kl) u (A u

@) u (dine_ 'u
@) u (colo_ 'u
u (ito_ 'u
@) u (lA_ =u

.group v
v v
@@ -279,24 +377,26 @@
A) zz ts:

_) z (i dz
_) z (ì dz
z (L01A dz

.group
à 'a:
à (CK 'a
é 'e:
é (CK 'e
è 'E:
è (CK 'E
ì 'i:
ì (CK 'i
ó 'o:
ó (CK 'o
ò 'O:
ò (CK 'O
ù 'u:
ù (CK 'u
$ dolla:ro
è ''E
èi (K ''Ej
é ''e
éi (K ''eI
ì ''i
ó ''o
ói ''o|I
ò ''O
òi ''OI
ù ''u
$ dollaro
, (D v'irgola
! _p'untoesklamat'ivo_
!) !
@@ -307,4 +407,4 @@
A_) - (_D _
C_) - (_D _

§ setsi'o:ne
§ setsi'one

+ 6
- 10
phsource/compile_report View File

@@ -15,8 +15,8 @@
eo 13 115
jbo 4 116
fi 40 134
fr 54 140
fr_ca 11 140
fr 55 141
fr_ca 11 141
hi 60 149
ta 17 152
hu 23 119
@@ -71,31 +71,25 @@ 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
@@ -476,6 +470,7 @@ l/lo [(o)] base
[wA] fr
l/l_o [(o)] base
[O] fr
[o] fr
[O2] fr
[o2] fr
l^/l_rfx [l.] hi
@@ -727,6 +722,7 @@ ufric/ll [L] base
[l#] is
ufric/s [s] base
[s] fr
[z] fr
[z2] fr
[s] es
[s#] pt
@@ -1481,6 +1477,7 @@ vowel/@ [@] base
[@] kn
[@4] bn
vowel/@- [@-] base
[@3] fr
[r*] hr
vowel/& [a] en_rp
[&] fi
@@ -2228,8 +2225,7 @@ vwl_fr/@R2 [R] fr_ca
vwl_fr/@R3 [R] fr
[r] fr
[Q2] hy
vwl_fr/@R4 [R] fr
[r2] fr
vwl_fr/@R4 [r2] fr
[Q2] hy
vwl_fr/@R5 [r] fr
[Q2] hy

+ 2
- 0
phsource/mbrola/fr1 View File

@@ -10,6 +10,7 @@ volume 15
0 ; NULL 0 NULL
0 g- NULL 0 NULL
0 @- NULL 0 NULL
0 @3 NULL 0 NULL
0 * NULL 0 R
0 : NULL 0 NULL

@@ -83,3 +84,4 @@ volume 15





+ 57
- 49
phsource/ph_french View File

@@ -10,7 +10,7 @@ endphoneme

phoneme @
vowel starttype (@) endtype (@)
length 180
length 190
formants vowel/@_hgh
before l/ DFT+l/l_@
before (r) DFT+r/xr
@@ -19,15 +19,24 @@ endphoneme

phoneme @2
vowel starttype (@) endtype (@)
length 160
length 170
formants vowel/@_fr
before (r) DFT+r3/r_@
endphoneme


phoneme @3 // Mute at end of word
vowel nonsyllabic
starttype (@) endtype _
formants vowel/@-
unstressed
length 40
endphoneme


phoneme a
vowel starttype (a) endtype (a)
length 180
length 200
formants vowel/a_6
after l l/la-15
before l/ DFT+l/l_a
@@ -38,7 +47,7 @@ endphoneme

phoneme a2
vowel starttype (a) endtype (a)
length 165
length 190
formants vowel/a_6
after l l/la-15
before l/ DFT+l/l_a
@@ -49,7 +58,7 @@ endphoneme

phoneme e
vowel starttype (e) endtype (e)
length 175
length 190
formants vowel/e
after l l/le-15
before l/ DFT-20+l/xl
@@ -59,7 +68,7 @@ endphoneme

phoneme E
vowel starttype (e) endtype (e)
length 175
length 190
formants vowel/e_mid
after l l/le-15
before l/ DFT+l/l_e
@@ -70,7 +79,7 @@ endphoneme

phoneme E2
vowel starttype (e) endtype (e)
length 175
length 190
formants vowel/e_mid
after l l/le-15
before l/ DFT+l/l_e
@@ -80,7 +89,7 @@ endphoneme

phoneme i
vowel starttype (i) endtype (i)
length 160
length 170
formants vowel/i_3
linkout ;
after l l/li-15
@@ -92,7 +101,7 @@ endphoneme

phoneme i: // longer than i
vowel starttype (i) endtype (i)
length 240
length 250
formants vowel/i_3
linkout ;
after l l/li-15
@@ -103,9 +112,10 @@ endphoneme

phoneme o
vowel starttype (o) endtype (o)
length 180
length 190
formants vowel/o_3
after l l/lo-10
before l/ DFT+l/l_o
before (r) DFT+r/xr
reduceto o2 1
endphoneme
@@ -113,7 +123,7 @@ endphoneme

phoneme o2
vowel starttype (o) endtype (o)
length 180
length 190
formants vowel/o_2
after l l/lo-10
before l/ DFT+l/l_o
@@ -123,7 +133,7 @@ endphoneme

phoneme O
vowel starttype (o) endtype (o)
length 170
length 190
formants vowel/o_mid
after l l/lo-10
before l/ DFT+l/l_o
@@ -134,7 +144,7 @@ endphoneme

phoneme O2 // Like O but no reduceto
vowel starttype (o) endtype (o)
length 170
length 190
formants vowel/o_mid
after l l/lo-10
before l/ DFT+l/l_o
@@ -144,7 +154,7 @@ endphoneme

phoneme u
vowel starttype (u) endtype (u)
length 175
length 190
formants vowel/u_3
after l l/lu-20
before l/ DFT-20+l/l_u
@@ -166,7 +176,7 @@ endphoneme

phoneme y
vowel starttype (u) endtype (u)
length 180
length 190
formants vowel/y_2
after l l/lu-20
before l/ DFT-30+l/l_y
@@ -177,7 +187,7 @@ endphoneme

phoneme Y
vowel starttype (@) endtype (@)
length 180
length 190
formants vowel/y#
after l l/l@-20
before l/ DFT-20+l/l_@
@@ -188,7 +198,7 @@ endphoneme

phoneme W
vowel starttype (@) endtype (@)
length 180
length 200
formants vowel/@_5
after l l/l@-20
before l/ DFT-20+l/l_@
@@ -199,7 +209,7 @@ endphoneme

phoneme W2 // same as W but don't reduce
vowel starttype (@) endtype (@)
length 180
length 200
formants vowel/@_3
after l l/l@-20
before l/ DFT-20+l/l_@
@@ -209,7 +219,7 @@ endphoneme

phoneme wA
vowel starttype (o) endtype (a)
length 220
length 240
formants vwl_fr/w_a
after l l/lo-10
before l/ DFT-10+l/l_a
@@ -220,7 +230,7 @@ endphoneme

phoneme w^i
vowel starttype (u) endtype (i)
length 220
length 240
formants vdiph/yi_fr
after l l/lu-20
before l/ DFT+l/l_i
@@ -230,7 +240,7 @@ endphoneme

phoneme A~
vowel starttype (a) endtype (a)
length 190
length 210
formants vnasal/aa_n2
before r/2 DFT+r/xr-40
before l/ DFT+l/l_a
@@ -239,7 +249,7 @@ endphoneme

phoneme E~ // same as W~ for fr-fr
vowel starttype (e) endtype (e)
length 200
length 210
formants vnasal/W_n
before n2 DFT-100
endphoneme
@@ -247,7 +257,7 @@ endphoneme

phoneme O~
vowel starttype (o) endtype (o)
length 200
length 210
formants vnasal/o_n3
// before n2 vowel/o_mid
endphoneme
@@ -255,7 +265,7 @@ endphoneme

phoneme W~
vowel starttype (@) endtype (@)
length 204
length 210
formants vnasal/W_n
endphoneme

@@ -302,17 +312,12 @@ endphoneme
// uses the consonants in file "phonemes", unless overridden here

phoneme b
vcd blb stop
vowelout f1=0 f2=1000 -500 -300 f3=-300 80 brk
formants b/b+x/b%80
vcd blb frc
vowelin f1=2 f2=1000 -300 -200 f3=-100 100
vowelout f1=0 f2=1000 -500 -300 f3=-100 60 len=50
formants b/b+x/b%70
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
@@ -427,22 +432,22 @@ endphoneme

phoneme r
liquid rfx starttype (r) endtype (r)
vowelin f1=0 f2=1600 -300 300 f3=100 80
vowelout f1=1 f2=1600 -300 300 f3=100 80 brk
vowelin f1=0 f2=1800 -200 200 f3=-200 80
vowelout f1=1 f2=1800 -200 200 f3=-200 80 brk
length 100
lengthmod 7
beforenotvowel r/2
formants vwl_fr/@R3+r3/rx%30
after @2 vwl_fr/@R5+r3/rx%40
after (u) vwl_fr/@R5+r3/rx%30
after (e) vwl_fr/@R5+r3/rx%25
after (u) vwl_fr/@R5+r3/rx%30
endphoneme


phoneme r2 // silent unless followed by vowel
liquid rfx starttype (r) endtype (r)
vowelin f1=0 f2=1000 -200 200 f3=-100 100 len=40
vowelout f1=0 f2=1200 -200 200 f3=-100 100 len=20
vowelin f1=0 f2=1000 -200 200 f3=-200 80 len=40
vowelout f1=0 f2=1200 -200 200 f3=-200 80 len=20
length 100
lengthmod 7
beforenotvowel NULL
@@ -451,19 +456,21 @@ endphoneme


phoneme R // After consonnants
vcd frc
vowelin f1=0 f2=1600 -300 300 f3=100 80
liquid starttype (r) endtype (r)
vowelin f1=0 f2=1800 -200 200 f3=-200 80
length 100
lengthmod 7
beforenotvowel r/2
formants vwl_fr/@R3+r3/rx%20
after t vwl_fr/@R4
formants vwl_fr/@R3+r3/rx%30
after b vwl_fr/@R3+r3/rx%60
after p vwl_fr/@R3+r3/rx%60
after t vwl_fr/@R3+r3/rx%60
endphoneme


phoneme r/2 // variant of [r] when not preceding a vowel
liquid
vowelout f1=2 f2=1600 -300 300 f3=100 80 brk
vowelout f1=2 f2=1800 -200 200 f3=-200 80 brk
length 100
lengthmod 2
formants r3/r_2+r3/rx%20
@@ -488,8 +495,8 @@ endphoneme

phoneme S
vls pla frc sibilant
vowelin f1=0 f2=2100 100 300 f3=-100 80
vowelout f1=0 f2=2100 100 300 f3=-100 80
vowelin f1=0 f2=1900 100 300 f3=-100 80
vowelout f1=0 f2=1900 100 300 f3=-100 80
length 100
lengthmod 3
wave ufric/sh%45
@@ -500,10 +507,10 @@ endphoneme

phoneme t
vls alv stop
vowelin f1=0 f2=1700 -100 100 f3=-100 80
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
vowelin f1=0 f2=1600 -300 300 f3=-100 80
vowelout f1=0 f2=1600 -300 250 f3=-100 80 brk
lengthmod 2
wave ustop/t_short%50
wave ustop/t_short%40
before _ ustop/t_%40
before R ustop/t_short%50
before r/2 ustop/t_short%50
@@ -549,7 +556,7 @@ endphoneme
phoneme z
vcd alv frc sibilant
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
formants voc/z+ufric/s_%45
formants voc/z+ufric/s%30
before _ voc/z_+ufric/s_%45
lengthmod 6
switchvoicing s
@@ -579,3 +586,4 @@ endphoneme





+ 1
- 1
phsource/ph_german View File

@@ -85,7 +85,7 @@ endphoneme

phoneme A:
vowel starttype (a) endtype (a)
length 240
length 250
formants vowel/aa_6
endphoneme


+ 52
- 7
src/dictionary.cpp View File

@@ -696,7 +696,7 @@ static int Unpronouncable_en(Translator *tr, char *word)
0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48
0x02, 0x00, 0x41, 0xca, 0x9b, 0x06, 0x20, 0x80,
0x02, 0x00, 0x41, 0xca, 0xbb, 0x06, 0x20, 0x80,
0x91, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, // 64
0x08, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x22, 0x00, 0x01, 0x00, };
@@ -1408,7 +1408,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
stress = 3; /* use secondary stress for remaining syllables */
}
else
if((vowel_stress[v-1] <= 1) && (vowel_stress[v+1] <= 1))
if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2))))
{
/* trochaic: give stress to vowel surrounded by unstressed vowels */

@@ -1558,7 +1558,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
max_stress = vowel_stress[v];
}

if((*p == phonLENGTHEN) && ((opt_length = tr->langopts.param[LOPT_IT_LENGTHEN]) != 0))
if((*p == phonLENGTHEN) && ((opt_length = tr->langopts.param[LOPT_IT_LENGTHEN]) & 1))
{
// remove lengthen indicator from non-stressed syllables
int shorten=0;
@@ -1576,13 +1576,20 @@ void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags,
shorten = 1;
}

if(((opt_length & 0xf)==2) && (v != (vowel_count - 2)))
shorten = 1; // LANG=Italian, remove lengthen indicator from non-penultimate syllables

if(shorten)
p++;
}

if((v_stress >= 4) && (tr->langopts.param[LOPT_IT_LENGTHEN] == 2))
{
// LANG=Italian, lengthen penultimate stressed vowels, unless followed by 2 consonants
if((v == (vowel_count - 2)) && (syllable_weight[v] == 0))
{
*output++ = phcode;
phcode = phonLENGTHEN;
}
}

v++;
}

@@ -2193,7 +2200,7 @@ static void MatchRule(Translator *tr, char *word[], const char *group, char *rul

case RULE_LETTERGP2: // match against a list of utf-8 strings
letter_group = *rule++ - 'A';
if((n_bytes = IsLetterGroup(tr, pre_ptr-letter_xbytes,letter_group,1)) >0)
if((n_bytes = IsLetterGroup(tr, pre_ptr,letter_group,1)) >0)
{
add_points = (20-distance_right);
pre_ptr -= (n_bytes-1);
@@ -2683,6 +2690,44 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
} /* end of TranslateRules */


void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags)
{//========================================================================
// apply after the translation is complete
int ix;
int len;
char *p;

len = strlen(phonemes);

switch(tr->translator_name)
{
case L('i','t'):
for(ix=0; ix<(len-1); ix++)
{
if(phonemes[ix] == phonSTRESS_P)
{
p = &phonemes[ix+1];
if((dict_flags & FLAG_ALT2_TRANS) != 0)
{
if(*p == PhonemeCode('E'))
*p = PhonemeCode('e');
if(*p == PhonemeCode('O'))
*p = PhonemeCode('o');
}
else
{
if(*p == PhonemeCode('e'))
*p = PhonemeCode('E');
if(*p == PhonemeCode('o'))
*p = PhonemeCode('O');
}
break;
}
}
break;
}
} // end of ApplySpecialAttribute2


void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags)
{//=======================================================================

+ 3
- 0
src/espeak.cpp View File

@@ -658,5 +658,8 @@ int main (int argc, char **argv)
}

espeak_Synchronize();

if(f_phonemes_out != stdout)
fclose(f_phonemes_out); // needed for WinCE
return(0);
}

+ 4
- 0
src/espeakedit.cpp View File

@@ -204,6 +204,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame)
EVT_MENU(MENU_VOWELCHART3, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_RU, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_DE, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_IT, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_IT2, MyFrame::OnTools)
EVT_MENU(MENU_TO_UTF8, MyFrame::OnTools)
EVT_MENU(MENU_COUNT_WORDS, MyFrame::OnTools)
EVT_MENU(MENU_TEST, MyFrame::OnTools)
@@ -457,6 +459,8 @@ void MyFrame::OnTools(wxCommandEvent& event)

case MENU_LEXICON_RU:
case MENU_LEXICON_DE:
case MENU_LEXICON_IT:
case MENU_LEXICON_IT2:
CompareLexicon(event.GetId()); // Compare a lexicon with _rules translation
break;


+ 315
- 0
src/extras.cpp View File

@@ -288,6 +288,315 @@ static void DecodePhonemes2(const char *inptr, char *outptr)
} // end of DecodePhonemes2


void Lexicon_It(int pass)
{//======================
int count=0;
int matched=0;
int ix;
int c;
char *p;
int len;
int vowel_ix;
int stress_posn1;
int stress_posn2;
int stress_vowel1;
int stress_vowel2;
int use_phonemes;
FILE *f_in;
FILE *f_out;
FILE *f_listx;
FILE *f_list_in;
long int displ;
const char *alt_string;
char buf[200];
char word[80];
char word1[80];
char word2[80];
char word_stem[80];
char temp[80];
char phonemes[80];
char phonemes2[80];
char buf_out[120];
WORD_TAB winfo;
static const char *vowels1 = "aeiou";
static const char *vowels2 = "aeou";

static const char ex1[] = {'a',0xc3,0xac,0}; // aì
static const char ex2[] = {'e',0xc3,0xac,0}; // eì
static const char ex3[] = {0xc3,0xb9,'a',0}; // ùa
static const char ex4[] = {0xc3,0xb9,'e',0}; // ùe
static const char ex5[] = {0xc3,0xb9,'i',0}; // ùi
static const char ex6[] = {0xc3,0xb9,'o',0}; // ùo
static const char ex7[] = {'c',0xc3,0xac,'a',0}; // cìa
static const char ex8[] = {'c',0xc3,0xac,'o',0}; // cìo
static const char ex9[] = {'c',0xc3,0xac,'u',0}; // cìu
static const char ex10[] = {'g','l',0xc3,0xac,0}; // glì


static const char *exceptions[] = {ex1, ex2, ex3, ex4, ex5, ex6, ex7, ex8, ex9, ex10, NULL};

wxString fname = wxFileSelector(_T("Italian Lexicon"),path_dir1,_T(""),_T(""),_T("*"),wxOPEN);

strcpy(buf,fname.mb_str(wxConvLocal));
if((f_in = fopen(buf,"r")) == NULL)
{
wxLogError(_T("Can't read file ")+fname);
return;
}
path_dir1 = wxFileName(fname).GetPath();
if((f_out = fopen("compare_it","w")) == NULL)
{
wxLogError(_T("Can't write file: compare_it "));
return;
}

if(pass == 1)
{
sprintf(buf,"%s/it_listx",path_dsource);
remove(buf);
CompileDictionary(path_dsource,"it",NULL,NULL,0);
f_listx = fopen(buf,"w");
}
else
{
sprintf(buf,"%s/it_listx2",path_dsource);
f_listx = fopen(buf,"w");
sprintf(buf,"%s/it_listx",path_dsource);
if((f_list_in = fopen(buf,"r")) == NULL)
{
wxLogError(_T("Can't read file: it_listx"));
return;
}
}
if(f_listx == NULL)
{
wxLogError(_T("Can't write file: it_listx"));
return;
}


LoadVoice("it",0);

while(!feof(f_in))
{
count++;

if(fgets(buf,sizeof(buf),f_in) == NULL)
break;

if((p = strstr(buf,"//")) != NULL)
*p = 0;
if((sscanf(buf,"%s %s",word,temp)) < 2)
continue;

if(strlen(word) < 8)
sprintf(buf_out,"%s\t\t%s\t",word,temp);
else
sprintf(buf_out,"%s\t%s",word,temp);

sprintf(word1," %s ",word);

// should we remove a vowel ending to produce a stem ?
strcpy(word_stem, word);
len = strlen(word) - 1;
utf8_in(&c, temp);
// if(iswlower(c))
{
if((word[len] == 'a') && (strchr(vowels1, word[len-1]) == NULL))
word_stem[len] = 0;
else
if((word[len] == 'o') && (strchr(vowels2, word[len-1]) == NULL))
word_stem[len] = 0;
}

// convert word to lower-case
word2[0] = ' ';
for(ix=0, p=&word2[1];;)
{
ix += utf8_in(&c,&temp[ix]);
c = towlower(c);
p += utf8_out(c,p);
if(c == 0)
break;
}
strcat(word2," ");

use_phonemes = 0;
for(ix=0; ; ix++)
{
if(exceptions[ix] == NULL)
break;

if(strstr(word2, exceptions[ix]) != NULL)
{
// the word contains a string for which we must do a complete phoneme translation
use_phonemes = 1;
strcpy(word_stem, word);
break;
}
}
// translate
memset(&winfo,0,sizeof(winfo));
TranslateWord(translator,&word1[1],0,&winfo);
DecodePhonemes(word_phonemes,phonemes);

stress_posn1 = 0;
stress_posn2 = 0;
stress_vowel1 = 0;
stress_vowel2 = 0;

vowel_ix = 1;
for(ix=0; ;ix++)
{
if((c = word_phonemes[ix]) == 0)
break;
if(c == phonSTRESS_P)
{
stress_posn1 = vowel_ix;
stress_vowel1 = word_phonemes[ix+1];
}

if((c != phonSCHWA_SHORT) && (phoneme_tab[c]->type == phVOWEL))
vowel_ix++;
}

memset(&winfo,0,sizeof(winfo));
TranslateWord(translator,&word2[1],0,&winfo);
DecodePhonemes(word_phonemes,phonemes2);

vowel_ix = 1;
for(ix=0; ;ix++)
{
if((c = word_phonemes[ix]) == 0)
break;
if(c == phonSTRESS_P)
{
stress_posn2 = vowel_ix;
stress_vowel2 = word_phonemes[ix+1];
}

if((c != phonSCHWA_SHORT) && (phoneme_tab[c]->type == phVOWEL))
vowel_ix++;
}

if(stress_posn2 == (vowel_ix-1))
{
// stress is on the final vowel, don't renove it
strcpy(word_stem, word);
}

if(pass == 1)
{
if(use_phonemes)
{
fprintf(f_listx,"%s ", word_stem);
for(p = phonemes2; *p != 0; p++)
{
if(*p != ',')
fputc(*p, f_listx); // omit secondary stress marks
}
fputc('\n',f_listx);
}
else
if((stress_posn1 != stress_posn2) && (stress_posn1 > 0) && (stress_posn2 > 0))
{
fprintf(f_listx,"%s $%d\n", word_stem, stress_posn2);
}
}

// reduce [E] and [O] to [e] and [o] if not stressed
for(ix=0; phonemes[ix] != 0; ix++)
{
if((phonemes[ix] == 'E') || (phonemes[ix] == 'O'))
{
if((pass == 2) || (ix==0) || (phonemes[ix-1] != '\''))
phonemes[ix] = tolower(phonemes[ix]);
}
}

for(ix=0; phonemes2[ix] != 0; ix++)
{
if((phonemes2[ix] == 'E') || (phonemes2[ix] == 'O'))
{
if((pass == 2) || (ix==0) || (phonemes2[ix-1] != '\''))
phonemes2[ix] = tolower(phonemes2[ix]);
}
}

if(strcmp(phonemes,phonemes2) == 0)
{
alt_string = NULL;
if((pass == 2) && (stress_posn1 > 0) && (stress_posn2 > 0))
{
if(((stress_vowel1 == PhonemeCode('E')) && (stress_vowel2 == PhonemeCode('e'))) ||
((stress_vowel1 == PhonemeCode('O')) && (stress_vowel2 == PhonemeCode('o'))))
{
alt_string = " $alt2";
}
else
if(((stress_vowel1 == PhonemeCode('e')) && (stress_vowel2 == PhonemeCode('E'))) ||
((stress_vowel1 == PhonemeCode('o')) && (stress_vowel2 == PhonemeCode('O'))))
{
alt_string = " $alt";
}

if(alt_string != NULL)
{
while(!feof(f_list_in))
{
displ = ftell(f_list_in);
if(fgets(buf, sizeof(buf), f_list_in) == NULL)
break;

sscanf(buf, "%s", word1);
if(strcmp(word1, word_stem) < 0)
{
fprintf(f_listx,"%s",buf); // copy it_listx from pass 1 until we reach the matching word
}
else
if(strcmp(word1, word_stem) == 0)
{
p = buf;
while((*p != '\n') && (*p != 0)) *p++;
*p = 0;
fprintf(f_listx,"%s %s\n",buf,alt_string); // add $alt or $alt2 to the entry
break;
}
else
{
fprintf(f_listx,"%s %s\n", word_stem, alt_string); // add a new word with $alt or $alt2
fseek(f_list_in, displ, SEEK_SET);
break;
}
}
}
}
matched++;
}
else
{
fprintf(f_out,"%s\t%s\t%s\n",buf_out,phonemes,phonemes2);
}
}

if(pass == 2)
{
while(fgets(buf, sizeof(buf), f_list_in) != NULL)
{
fprintf(f_listx, "%s", buf); // copy the remaining entries from pass 1
}
fclose(f_list_in);
}
fclose(f_in);
fclose(f_out);
fclose(f_listx);
wxLogStatus(_T("Completed, equal=%d different=%d"),matched,count-matched);
}


void Lexicon_De()
{//==============
// Compare eSpeak's translation of German words with a pronunciation lexicon
@@ -766,6 +1075,12 @@ void CompareLexicon(int id)
case MENU_LEXICON_DE:
Lexicon_De();
break;
case MENU_LEXICON_IT:
Lexicon_It(1);
break;
case MENU_LEXICON_IT2:
Lexicon_It(2);
break;
}
} // end of CompareLexicon


+ 3
- 3
src/klatt.cpp View File

@@ -1087,9 +1087,9 @@ void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v

if(wvoice != NULL)
{
if((wvoice->klatt[0] > 0) && (wvoice->klatt[0] <=3 ))
if((wvoice->klattv[0] > 0) && (wvoice->klattv[0] <=3 ))
{
kt_globals.glsource = wvoice->klatt[0];
kt_globals.glsource = wvoice->klattv[0];
kt_globals.scale_wav = scale_wav_tab[kt_globals.glsource];
}
kt_globals.f0_flutter = wvoice->flutter/32;
@@ -1167,7 +1167,7 @@ void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v
klattp_inc[ix] = double((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length;

if((ix>0) && (ix < KLATT_AVp))
klattp1[ix] = klattp[ix] = (klattp[ix] + wvoice->klatt[ix]);
klattp1[ix] = klattp[ix] = (klattp[ix] + wvoice->klattv[ix]);
}

nsamples = length;

+ 2
- 0
src/main.h View File

@@ -153,6 +153,8 @@ enum {
MENU_LEXICON,
MENU_LEXICON_RU,
MENU_LEXICON_DE,
MENU_LEXICON_IT,
MENU_LEXICON_IT2,
MENU_TO_UTF8,
MENU_COUNT_WORDS,
MENU_TEST,

+ 2
- 0
src/menus.cpp View File

@@ -111,6 +111,8 @@ wxMenuBar *MakeMenu(int type)
lexicon_menu = new wxMenu;
lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)"));
lexicon_menu->Append(MENU_LEXICON_DE, _("German"));
lexicon_menu->Append(MENU_LEXICON_IT, _("Italian"));
lexicon_menu->Append(MENU_LEXICON_IT2, _("Italian, pass 2"));

tools_menu = new wxMenu;
tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu);

+ 3
- 0
src/readclause.cpp View File

@@ -306,6 +306,8 @@ const wchar_t *wcschr(const wchar_t *str, int c)
return(NULL);
}

#ifndef WINCE
// wcslen() is provided by WINCE, but not the other wchar functions
const int wcslen(const wchar_t *str)
{
int ix=0;
@@ -316,6 +318,7 @@ const int wcslen(const wchar_t *str)
}
return(ix);
}
#endif

float wcstod(const wchar_t *str, wchar_t **tailptr)
{

+ 3
- 0
src/speak.cpp View File

@@ -883,5 +883,8 @@ int main (int argc, char **argv)
fprintf(stderr,"-w option must be used because the program was built without a sound interface\n");
#endif // USE_PORTAUDIO
}

if((f_trans != stdout) && (f_trans != stderr))
fclose(f_trans); // needed for WinCe
return(0);
}

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.40.11 13.Mar.09";
const char *version_string = "1.40.13 5.Apr.09";
const int version_phdata = 0x014000;

int option_device_number = -1;

+ 14
- 1
src/synthesize.h View File

@@ -101,7 +101,7 @@ typedef struct {
unsigned char klattp[N_KLATTP];
} frame_t;

typedef struct {
typedef struct { // 43 bytes
short frflags;
unsigned char length;
unsigned char rms;
@@ -112,6 +112,19 @@ typedef struct {
} frame_t2; // the original, without Klatt additions, used for file "phondata"


typedef struct { // 44 bytes
short frflags;
short ffreq[7];
unsigned char length;
unsigned char rms;
unsigned char fheight[8];
unsigned char fwidth[6]; // width/4 f0-5
unsigned char fright[3]; // width/4 f0-2
unsigned char bw[4]; // Klatt bandwidth BNZ, f1,f2,f3
unsigned char klattp[5]; // AV, FNZ, Tilt, spare, spare (Aspr, Skew ?)
} frame_t3; // TESTING



// formant data used by wavegen
typedef struct {

+ 6
- 3
src/tr_languages.cpp View File

@@ -325,7 +325,7 @@ Translator *SelectTranslator(const char *name)

case L('d','e'):
{
static const short stress_lengths_de[8] = {150,130, 190,190, 0, 0, 260,275};
static const short stress_lengths_de[8] = {150,130, 200,200, 0, 0, 260,275};
tr->langopts.stress_rule = 0;
tr->langopts.word_gap = 0x8; // don't use linking phonemes
tr->langopts.vowel_pause = 0x30;
@@ -636,6 +636,7 @@ SetLengthMods(tr,3); // all equal

tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x10 | 0x20000;
tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2;
@@ -643,22 +644,24 @@ SetLengthMods(tr,3); // all equal
tr->langopts.param[LOPT_IT_DOUBLING] = 2; // double the first consonant if the previous word ends in a stressed vowel
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
tr->langopts.param[LOPT_REDUCE] = 1; // reduce vowels even if phonemes are specified in it_list
tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2
tr->langopts.numbers = 0x2709 + NUM_ROMAN;
tr->langopts.accents = 2; // Say "Capital" after the letter.
SetLetterVowel(tr,'y');
}
break;

case L_jbo: // Lojban
{
static const short stress_lengths_jbo[8] = {145,145, 170,160, 0,0, 330,350};
static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker (from LOPT_SYLLABLE_CAPS)
static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker (from LOPT_CAPS_IN_WORD)

SetupTranslator(tr,stress_lengths_jbo,NULL);
tr->langopts.stress_rule = 2;
tr->langopts.vowel_pause = 0x20c; // pause before a word which starts with a vowel, or after a word which ends in a consonant
// tr->langopts.word_gap = 1;
tr->punct_within_word = jbo_punct_within_word;
tr->langopts.param[LOPT_SYLLABLE_CAPS] = 1; // capitals indicate stressed syllables
tr->langopts.param[LOPT_CAPS_IN_WORD] = 2; // capitals indicate stressed syllables
SetLetterVowel(tr,'y');
}
break;

+ 8
- 3
src/translate.cpp View File

@@ -1203,6 +1203,11 @@ strcpy(phonemes2,phonemes);
dictionary_flags[0] |= FLAG_DOT;
}

if((tr->langopts.param[LOPT_ALT] & 2) && ((dictionary_flags[0] & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) != 0))
{
ApplySpecialAttribute2(tr,word_phonemes,dictionary_flags[0]);
}

return(dictionary_flags[0]);
} // end of TranslateWord

@@ -1508,7 +1513,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
if(pre_pause < 1)
pre_pause = 1;
}
if((flags & FLAG_PREPAUSE) && (tr->prepause_timeout == 0))
if((flags & FLAG_PREPAUSE) && ((word_flags && FLAG_LAST_WORD) == 0) && (tr->prepause_timeout == 0))
{
// the word is marked in the dictionary list with $pause
if(pre_pause < 4) pre_pause = 4;
@@ -2296,9 +2301,9 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{
c = towlower2(c);

if(tr->langopts.param[LOPT_SYLLABLE_CAPS])
if((j = tr->langopts.param[LOPT_CAPS_IN_WORD]) > 0)
{
if(syllable_marked == 0)
if((j == 2) && (syllable_marked == 0))
{
char_inserted = c;
c = 0x2c8; // stress marker

+ 7
- 3
src/translate.h View File

@@ -240,7 +240,7 @@ extern const int param_defaults[N_SPEECH_PARAM];



#define N_LOPTS 15
#define N_LOPTS 16
#define LOPT_DIERESES 1
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
// bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
@@ -283,13 +283,16 @@ extern const int param_defaults[N_SPEECH_PARAM];
// change [t] when followed by unstressed vowel
#define LOPT_REDUCE_T 12

// stressed syllable is indicated by capitals
#define LOPT_SYLLABLE_CAPS 13
// 1 = allow capitals inside a word
// 2 = stressed syllable is indicated by capitals
#define LOPT_CAPS_IN_WORD 13

// bit 0=Italian "syntactic doubling" of consoants in the word after a word marked with $double attribute
// bit 1=also after a word which ends with a stressed vowel
#define LOPT_IT_DOUBLING 14

// Call ApplySpecialAttributes() if $alt or $alt2 is set for a word
#define LOPT_ALT 15


typedef struct {
@@ -562,6 +565,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
void MakePhonemeList(Translator *tr, int post_pause, int new_sentence);
int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch);
void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags);
void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags);
void AppendPhonemes(Translator *tr, char *string, int size, const char *ph);

void CalcLengths(Translator *tr);

+ 2
- 1
src/transldlg.cpp View File

@@ -454,7 +454,8 @@ void TranslDlg::OnCommand(wxCommandEvent& event)
t_phonetic->AppendText(wxString(buf,wxConvUTF8));
}
t_phonetic->AppendText(_T("---\n"));
fclose(f_trans);
if(f_trans != NULL)
fclose(f_trans);
remove(fname_temp);
}
t_phonetic->AppendText(wxString(phon_out,wxConvLocal));

+ 1
- 1
src/voice.h View File

@@ -40,7 +40,7 @@ typedef struct {
int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths)
int consonant_amp; // amplitude of unvoiced consonants
int consonant_ampv; // amplitude of the noise component of voiced consonants
int klatt[8];
int klattv[8];

// parameters used by Wavegen
short freq[N_PEAKS]; // 100% = 256

+ 4
- 4
src/voices.cpp View File

@@ -387,7 +387,7 @@ void VoiceReset(int tone_only)
voice->voicing = 64;
voice->consonant_amp = 100;
voice->consonant_ampv = 100;
memset(voice->klatt,0,sizeof(voice->klatt));
memset(voice->klattv,0,sizeof(voice->klattv));
memset(speed.fast_settings,0,sizeof(speed.fast_settings));

#ifdef PLATFORM_RISCOS
@@ -880,8 +880,8 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_KLATT:
Read8Numbers(p,voice->klatt);
voice->klatt[KLATT_Kopen] -= 40;
Read8Numbers(p,voice->klattv);
voice->klattv[KLATT_Kopen] -= 40;
break;

case V_FAST:
@@ -1562,7 +1562,7 @@ static void GetVoices(const char *path)
DIR *dir;
struct dirent *ent;

if((dir = opendir(path)) == NULL)
if((dir = opendir((char *)path)) == NULL) // note: (char *) is needed for WINCE
return;

while((ent = readdir(dir)) != NULL)

Loading…
Cancel
Save