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

denselb $2 denselb $2


// conjunctions // 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 // 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 die) %Ind%i:
//(in den) %Ind%e:n //(in den) %Ind%e:n
//(in der) %Ind%E* //(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 // 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 // should these be in the Rules because they can be a prefix in a
// compound verb ? // 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 // 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+ //kein $u+
//keine $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 // 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 // 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

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


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


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

+ 6
- 6
dictsource/dict_phonemes View File



Dictionary fr_dict 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 : b d dZ f g h j
k l m n N n2 n^ p k l m n N n2 n^ p


Dictionary it_dict 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 * : ; b d dZ f g
h j k l l^ m n N h j k l l^ m n N

+ 256
- 254
dictsource/en_list View File

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


_‐ haIf@n _‐ haIf@n
_‑ haIf@n _‑ haIf@n
blouse blaUz blouse blaUz
blurry bl3:rI blurry bl3:rI
?5 blurry blVRrI ?5 blurry blVRrI
bogey boUgI
boing bOIN boing bOIN
bombard $2 bombard $2
bonbon b0nb0n bonbon b0nb0n
extradite Ekstr@daIt // extradited extradite Ekstr@daIt // extradited
extrem Ekstr'i:m // extremism extrem Ekstr'i:m // extremism
extremist Ekstr'i:mIst extremist Ekstr'i:mIst
extricate $1
eyrie i@rI eyrie i@rI


facade f@sA:d facade f@sA:d
fix fIks // for fixer fix fIks // for fixer
fjord fIO@d fjord fIO@d
flagellum fla2dZEl@m flagellum fla2dZEl@m
flamenco fla2mENkoU
flexible flEksIb@L flexible flEksIb@L
flier flaI3 flier flaI3
flourish flVrI2S flourish flVrI2S
griffon grIf@n griffon grIf@n
grosvenor groUv@n3 grosvenor groUv@n3
groupie gru:pI groupie gru:pI
guacamole gwA:ka2m'oUli:
gui gu:I gui gu:I
guinea gInI guinea gInI
gurus gu:ru:z gurus gu:ru:z
hypothesis haIp'0T@sIs hypothesis haIp'0T@sIs
hypotheses haIp'0T@si:z hypotheses haIp'0T@si:z
hypotenuse haIp'0t@nju:s hypotenuse haIp'0t@nju:s
hypoxia haIp'0ksi@




icon aIk0n icon aIk0n
referee rEf@r'i: referee rEf@r'i:
referral rI2f3:r@L referral rI2f3:r@L
referring rI2f3:rI2N referring rI2f3:rI2N
refinery rI2faIn@rI
refit ri:fIt refit ri:fIt
reflex ri:flEks reflex ri:flEks
reflux ri:flVks reflux ri:flVks
regime reIZ'i:m regime reIZ'i:m
region ri:dZ@n // & regional region ri:dZ@n // & regional
reign reIn reign reIn
reiki reIki:
rein reIn rein reIn
reined reInd reined reInd
reining reInI2N reining reInI2N
reindeer reIndi@3 reindeer reIndi@3
reinvent ri:Inv'Ent reinvent ri:Inv'Ent
refinery rI2faIn@rI
relative rEl@tIv relative rEl@tIv
relic rElIk relic rElIk
relish rElI2S relish rElI2S
//prepositions //prepositions
// these should be stressed at the end of a sentence // 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 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 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 once) a2t_w0ns
(at will) a2t_w'Il (at will) a2t_w'Il


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


in %In $strend $only $nounf
in %In $strend $only $nounf
(in the) %InD@2 (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 (on the) %0nD@2


(out of) ,aUt@v (out of) ,aUt@v
into ,IntU into ,IntU
onto ,0ntU $strend2
onto ,0ntU $strend2
unto ,VntU unto ,VntU
?3 into ,Int2U ?3 into ,Int2U
?3 onto ,0nt2U $strend2
?3 onto ,0nt2U $strend2
?3 unto ,Vnt2U ?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 cent) p3||s'Ent
(per se) p,3:||s'eI (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 against a2gEnst
ahead a2hEd ahead a2hEd
among a2m,VN $strend2
amongst a2m,VNst $strend2
among a2mVN $u2 $strend2
amongst a2mVNst $u2 $strend2
around a2raUnd 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 thence DEns




//aux. verbs //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 // 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 (will to) wIlt@5
would $u+ $verbf $only $strend2 would $u+ $verbf $only $strend2
(would have) w%Udh%a2v $pastf (would have) w%Udh%a2v $pastf
(would have) wUdhav $pastf $atend (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 (wouldn't have to) ,wUdntavt@5 $verbf $strend2
won't woUnt $u+ $verbf $strend2 $only
won't woUnt $u+ $verbf $strend2 $only
wouldst $u+ 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 $verbf
(must have) mVsta2v $pastf $1 (must have) mVsta2v $pastf $1
shalt ,Salt $verbf $only shalt ,Salt $verbf $only
should ,SUd $verbf $only $strend2 should ,SUd $verbf $only $strend2
(should have) SUd@v $pastf $u1+ (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 ?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 ,kUd@nt $verbf $strend2
(couldn't have) kUd@nt@v $pastf $u1+ (couldn't have) kUd@nt@v $pastf $u1+
(couldn't have to) 'kUd@ntavt@5 $verbf $strend2 (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 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 done dVn


putting pUtI2N 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 we're %wi@3
you're %jO@ you're %jO@
that'd %Dat@d that'd %Dat@d
there'd %De@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) %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: thee ,Di:
thou DaU thou DaU
thy ,DaI thy ,DaI
thine ,DaIn 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 theirs De@z


none n0n none n0n


//conjunctions //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 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 (many of) mEnI|@v
some ,sVm $nounf $unstressend $only
some ,sVm $nounf $unstressend $only
(some one) sVmw0n (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 one) D'atw,0n
(that the) %DatD@2 (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: (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 // these should be stressed at the start of a sentence
which ,wItS $pause $strend2 $only $verbf which ,wItS $pause $strend2 $only $verbf
?3 vitamin vaIt@mIn ?3 vitamin vaIt@mIn
?3 zebra zi:br@ ?3 zebra zi:br@





+ 17
- 7
dictsource/en_rules View File

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


.group i .group i
i I i I
iah (_ 'aI@ iah (_ 'aI@
ia (m I2@ ia (m I2@
&) ia (n i@ &) 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 ia (ng_ ja
_f) ia (nc I'0 _f) ia (nc I'0
_f) iance I'0nseI _f) iance I'0nseI
ie (ntal I'E ie (ntal I'E
g) ie (n i: g) ie (n i:
sc) ie (nc aI@ sc) ie (nc aI@
ie (ntiC aI@
_sc) ie (n aI@ _sc) ie (n aI@
?8 _sc) ie (n aIa2 ?8 _sc) ie (n aIa2
ie (nCiA I2'E ie (nCiA I2'E
it (um aIt it (um aIt


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

+ 13
- 6
dictsource/fr_list View File



// 2006-11-18 Gilles Casse <[email protected]> // 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. // * Numbers, a few abbreviations and exceptions.
// //
abc $abbrev abc $abbrev
ac $abbrev ac $abbrev
adsl $abbrev adsl $abbrev
alt $pause
alt _::alt
amd $abbrev amd $abbrev
anpe $abbrev anpe $abbrev
api $abbrev api $abbrev
brltty $abbrev brltty $abbrev
cci $abbrev cci $abbrev
cio $abbrev cio $abbrev
ctrl control $text $pause
ctrl _::kO~tRol
dept depart@-mA~ dept depart@-mA~
edf $abbrev edf $abbrev
etc etsetera etc etsetera
ide $abbrev ide $abbrev
ip $abbrev ip $abbrev
jaws dZ'awz jaws dZ'awz
kbit kilobit
kbits kilobit
kde $abbrev kde $abbrev
kg kilogram kg kilogram
khz kiloE2rts khz kiloE2rts
km kilomètre $text km kilomètre $text
kw kilowat kw kilowat
kw kilowat
m. m@sjY m. m@sjY
mbit mega2bit
mbits mega2bit
mbrola Embrola mbrola Embrola
mhz megaE2rts mhz megaE2rts
mlle mad@mwAzEl
mme madam
mlle mademoiselle $text
mme madame $text
mr m@sjY mr m@sjY
nsi $abbrev nsi $abbrev
nsis $abbrev nsis $abbrev
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
iris iris iris iris
laser lazEr laser lazEr
malus malys malus malys
mailto mEjltu_
mapper _^_en mapper _^_en
mars mars mars mars
mieux mjY $u+ mieux mjY $u+
premier pr@mjer2 premier pr@mjer2
program _^_en program _^_en
quit _^_en quit _^_en
recorder ricordeur $text
scanner skaner2 scanner skaner2
scanner skanWr $noun scanner skanWr $noun
sir _^_EN sir _^_EN








+ 10
- 7
dictsource/fr_rules View File



// 2006-11-18 Gilles Casse <[email protected]> // 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: // Letter classes:
e) ch (_ k // varech e) ch (_ k // varech
_A) ch (o_ k // écho _A) ch (o_ k // écho
mani) ch (é k // manichéisme mani) ch (é k // manichéisme
mito) ch (o k // mitochondrie
_eu) ch (ari k // eucharistie _eu) ch (ari k // eucharistie
or) ch (esC k // orchestre or) ch (esC k // orchestre
or) ch (iC k // orchidée or) ch (iC k // orchidée


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


e (Ce_ E e (Ce_ E
eau o // bateau cheveaux eau o // bateau cheveaux
gu) e (rA @ gu) e (rA @
qu) e (rA @ qu) e (rA @
v) e (lop @- v) e (lop @-
tch) e (rX W
@) em (me a // patiemment @) em (me a // patiemment
em (b A~ // décembre em (b A~ // décembre
em (mACC A~ // emmancher em (mACC A~ // emmancher
om (_ Om // www.web.com om (_ Om // www.web.com
on (K O~ // mon on (K O~ // mon
on (t_ O~t2 // mont vont sont 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 onsh (A O~z // bonshommes
onh (A On // bonhomme onh (A On // bonhomme
_) on (z _!O~ // onze, onzi�me _) on (z _!O~ // onze, onzi�me

+ 114
- 88
dictsource/it_list View File

// This file is UTF-8 encoded // 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 // character names
(http ://) 'ak:at,i:t,i:p'i:_ (http ://) 'ak:at,i:t,i:p'i:_


// articles // 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 // 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 // words that double the following consonant


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


invece $pause // instead invece $pause // instead
malevolenza $pause // despite malevolenza $pause // despite
pertanto $pause // therefore pertanto $pause // therefore
né $pause // neither-nor
né $pause $only // neither-nor


(in cui) in||kw2,i $pause // in which (in cui) in||kw2,i $pause // in which
che $u $pause // which che $u $pause // which


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


ad $u $brk ad $u $brk


da $u $brk // by
da $u $only $brk // by
dal $u dal $u
dallo $u dallo $u
dalla $u // by the dalla $u // by the
dagli $u dagli $u
dalle $u dalle $u


di $u $brk // of
del $u
di $u $only $brk // of
del $u $only
dello $u dello $u
della $u // of the della $u // of the
dei $u dei $u
degli $u degli $u
delle $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 nello $u $brk
nella $u $brk // in the nella $u $brk // in the
nei $u $brk nei $u $brk
negli $u $brk negli $u $brk
nelle $u $brk nelle $u $brk
ne $u $brk
ne $u $brk $only


su $u //$double // on
su $u $only //$double // on
sul $u sul $u
sullo $u sullo $u
sulla $u // on the sulla $u // on the
sulle $u sulle $u


con $u $pause $only // with 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 contro $u+ $brk // against
accanto $u+ $brk // beside accanto $u+ $brk // beside
verso $u+ $brk // toward verso $u+ $brk // toward
sopra $u+ $brk // above sopra $u+ $brk // above
sotto $u+ $brk // below
sotto $u+ $brk $alt2 // below
per $u $pause $only // for per $u $pause $only // for
eccetto $pause // except eccetto $pause // except
senza $pause // without senza $pause // without
fummo $u fummo $u
foste $u foste $u
furono $u furono $u
ero $u
eri $u
era $u
ero $u $only
eri $u $only
era $u $only
eravamo $u eravamo $u
eravate $u eravate $u
erano $u erano $u




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

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

aereo a'EReo
celsius tsElsj'us celsius tsElsj'us
conoscerla $2 conoscerla $2
no nO no nO
tesser tess'ER tesser tess'ER
uomini $1 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' // 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

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



.group a .group a
a a:
a (CK a
ai aI (K
a a
ai (K aI
ao (_ aU 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 (cA_ =a
@) a (che_ =a @) a (che_ =a
@) a (bile_ 'a @) a (bile_ 'a
@) a (ggine_ 'a @) a (ggine_ 'a


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


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

.group b .group b
b b b b
bb b: bb b:


li) be =be
.group c .group c
c k c k
cc k: cc k:
n) dere =deRe n) dere =deRe


.group e .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 (ce_ =e
@) e (ci_ =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 (rrimo_ 'E
@) e (simo_ '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 .group f
f f f f


@A) f (ico_ =f
@A) f (ichA_ =f
@A) f (ilo_ =f @A) f (ilo_ =f
@A) f (ero_ =f
A) f (ero_ =f
.group g .group g
g g g g
gh g gh g
g (Y dZ g (Y dZ
gi (L01 dZj gi (L01 dZj
gi (a_ dZ'i
n) gi (a_ dZj
gg (Y dZ: gg (Y dZ:
ggi (L01 dZ: ggi (L01 dZ:
@) gger (lo_ =dZ:eR @) gger (lo_ =dZ:eR
gn n^ gn n^
gu (A gw gu (A gw


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

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


.group i .group i
i i:
i (CK i
i i
i (A j i (A j
l) i (A %i l) i (A %i
r) i (A %i r) i (A %i
_C) i (a i _C) i (a i
_C) i (à i
i (o i i (o i
i (ò i i (ò i
i (ó i i (ó i
@) ia (_ =i%a @) 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 a) i (+ j
e) i (+ j
à) i (+ j
L02) i (+ j
o) 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 (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 @) issima(_S6 'issima
@) issime(_S6 'issime @) issime(_S6 'issime
@) issimi(_S6 'issimi @) issimi(_S6 'issimi
@) issimo(_S6 'issimo @) issimo(_S6 'issimo
@) issero(_S6 'issero @) issero(_S6 'issero
@) i (sti 'i
p) i (te_ =i


.group j .group j
.group m .group m
m m m m
A) mi (a m'i:
@) mi (co_ m'i:
A) mi (a_ m'i
.group n .group n
n n n n
n (g N n (g N
n (ge n
n (gé n
n (gè n
n (gi n
n (gY n
n (k N n (k N
.group o .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 (gnolo_ 'o
@) o (nzolo_ 'o
@) o (grafo_ '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 (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 .group p
s (t s s (t s
s (x s s (x s
sc (Y S sc (Y S
sci (L01 S
sci (A S
sci (i S%i
sci (ì S%i
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
@) sia s'ia
@) sia z'ia
@C) sia s'ia
@) sià zi'a
@) s (_S1 s @) s (_S1 s
.group t .group t
tt t: tt t:
.group u .group u
u u:
u (CK u
u u
u (A w2 u (A w2
Kr) u (A u Kr) u (A u
Kl) u (A u Kl) u (A u


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


.group v .group v
v v v v
A) zz ts: A) zz ts:


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


.group .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 , (D v'irgola
! _p'untoesklamat'ivo_ ! _p'untoesklamat'ivo_
!) ! !) !
A_) - (_D _ A_) - (_D _
C_) - (_D _ C_) - (_D _


§ setsi'o:ne
§ setsi'one

+ 6
- 10
phsource/compile_report View File

eo 13 115 eo 13 115
jbo 4 116 jbo 4 116
fi 40 134 fi 40 134
fr 54 140
fr_ca 11 140
fr 55 141
fr_ca 11 141
hi 60 149 hi 60 149
ta 17 152 ta 17 152
hu 23 119 hu 23 119
[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
[wA] fr [wA] fr
l/l_o [(o)] base l/l_o [(o)] base
[O] fr [O] fr
[o] fr
[O2] fr [O2] fr
[o2] fr [o2] fr
l^/l_rfx [l.] hi l^/l_rfx [l.] hi
[l#] is [l#] is
ufric/s [s] base ufric/s [s] base
[s] fr [s] fr
[z] fr
[z2] fr [z2] fr
[s] es [s] es
[s#] pt [s#] pt
[@] kn [@] kn
[@4] bn [@4] bn
vowel/@- [@-] base vowel/@- [@-] base
[@3] fr
[r*] hr [r*] hr
vowel/& [a] en_rp vowel/& [a] en_rp
[&] fi [&] fi
vwl_fr/@R3 [R] fr vwl_fr/@R3 [R] fr
[r] fr [r] fr
[Q2] hy [Q2] hy
vwl_fr/@R4 [R] fr
[r2] fr
vwl_fr/@R4 [r2] fr
[Q2] hy [Q2] hy
vwl_fr/@R5 [r] fr vwl_fr/@R5 [r] fr
[Q2] hy [Q2] hy

+ 2
- 0
phsource/mbrola/fr1 View File

0 ; NULL 0 NULL 0 ; NULL 0 NULL
0 g- NULL 0 NULL 0 g- NULL 0 NULL
0 @- NULL 0 NULL 0 @- NULL 0 NULL
0 @3 NULL 0 NULL
0 * NULL 0 R 0 * NULL 0 R
0 : NULL 0 NULL 0 : NULL 0 NULL










+ 57
- 49
phsource/ph_french View File



phoneme @ phoneme @
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 180
length 190
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 160
length 170
formants vowel/@_fr formants vowel/@_fr
before (r) DFT+r3/r_@ before (r) DFT+r3/r_@
endphoneme endphoneme




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


phoneme a phoneme a
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
length 180
length 200
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 165
length 190
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 175
length 190
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 E phoneme E
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 175
length 190
formants vowel/e_mid formants vowel/e_mid
after l l/le-15 after l l/le-15
before l/ DFT+l/l_e before l/ DFT+l/l_e


phoneme E2 phoneme E2
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 175
length 190
formants vowel/e_mid formants vowel/e_mid
after l l/le-15 after l l/le-15
before l/ DFT+l/l_e before l/ DFT+l/l_e


phoneme i phoneme i
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
length 160
length 170
formants vowel/i_3 formants vowel/i_3
linkout ; linkout ;
after l l/li-15 after l l/li-15


phoneme i: // longer than i phoneme i: // longer than i
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
length 240
length 250
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 180
length 190
formants vowel/o_3 formants vowel/o_3
after l l/lo-10 after l l/lo-10
before l/ DFT+l/l_o
before (r) DFT+r/xr before (r) DFT+r/xr
reduceto o2 1 reduceto o2 1
endphoneme endphoneme


phoneme o2 phoneme o2
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 180
length 190
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 O phoneme O
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 170
length 190
formants vowel/o_mid formants vowel/o_mid
after l l/lo-10 after l l/lo-10
before l/ DFT+l/l_o before l/ DFT+l/l_o


phoneme O2 // Like O but no reduceto phoneme O2 // Like O but no reduceto
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 170
length 190
formants vowel/o_mid formants vowel/o_mid
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 175
length 190
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 180
length 190
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 180
length 190
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 W phoneme W
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 180
length 200
formants vowel/@_5 formants vowel/@_5
after l l/l@-20 after l l/l@-20
before l/ DFT-20+l/l_@ before l/ DFT-20+l/l_@


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


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


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


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


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


phoneme O~ phoneme O~
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 200
length 210
formants vnasal/o_n3 formants vnasal/o_n3
// before n2 vowel/o_mid // before n2 vowel/o_mid
endphoneme endphoneme


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


// uses the consonants in file "phonemes", unless overridden here // uses the consonants in file "phonemes", unless overridden here


phoneme b 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 _ 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


phoneme r phoneme r
liquid rfx starttype (r) endtype (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 length 100
lengthmod 7 lengthmod 7
beforenotvowel r/2 beforenotvowel r/2
formants vwl_fr/@R3+r3/rx%30 formants vwl_fr/@R3+r3/rx%30
after @2 vwl_fr/@R5+r3/rx%40 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 (e) vwl_fr/@R5+r3/rx%25
after (u) vwl_fr/@R5+r3/rx%30
endphoneme endphoneme




phoneme r2 // silent unless followed by vowel phoneme r2 // silent unless followed by vowel
liquid rfx starttype (r) endtype (r) 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 length 100
lengthmod 7 lengthmod 7
beforenotvowel NULL beforenotvowel NULL




phoneme R // After consonnants 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 length 100
lengthmod 7 lengthmod 7
beforenotvowel r/2 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 endphoneme




phoneme r/2 // variant of [r] when not preceding a vowel phoneme r/2 // variant of [r] when not preceding a vowel
liquid 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 length 100
lengthmod 2 lengthmod 2
formants r3/r_2+r3/rx%20 formants r3/r_2+r3/rx%20


phoneme S phoneme S
vls pla frc sibilant 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 length 100
lengthmod 3 lengthmod 3
wave ufric/sh%45 wave ufric/sh%45


phoneme t phoneme t
vls alv stop 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 lengthmod 2
wave ustop/t_short%50
wave ustop/t_short%40
before _ ustop/t_%40 before _ ustop/t_%40
before R ustop/t_short%50 before R ustop/t_short%50
before r/2 ustop/t_short%50 before r/2 ustop/t_short%50
phoneme z phoneme z
vcd alv frc sibilant vcd alv frc sibilant
vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 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 before _ voc/z_+ufric/s_%45
lengthmod 6 lengthmod 6
switchvoicing s switchvoicing s








+ 1
- 1
phsource/ph_german View File



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



+ 52
- 7
src/dictionary.cpp View File

0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32 0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48 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 0x91, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, // 64
0x08, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x22, 0x00, 0x01, 0x00, }; 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, };
stress = 3; /* use secondary stress for remaining syllables */ stress = 3; /* use secondary stress for remaining syllables */
} }
else 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 */ /* trochaic: give stress to vowel surrounded by unstressed vowels */


max_stress = vowel_stress[v]; 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 // remove lengthen indicator from non-stressed syllables
int shorten=0; int shorten=0;
shorten = 1; shorten = 1;
} }


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

if(shorten) if(shorten)
p++; 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++; v++;
} }




case RULE_LETTERGP2: // match against a list of utf-8 strings case RULE_LETTERGP2: // match against a list of utf-8 strings
letter_group = *rule++ - 'A'; 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); add_points = (20-distance_right);
pre_ptr -= (n_bytes-1); pre_ptr -= (n_bytes-1);
} /* end of TranslateRules */ } /* 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) void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags)
{//======================================================================= {//=======================================================================

+ 3
- 0
src/espeak.cpp View File

} }


espeak_Synchronize(); espeak_Synchronize();

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

+ 4
- 0
src/espeakedit.cpp View File

EVT_MENU(MENU_VOWELCHART3, MyFrame::OnTools) EVT_MENU(MENU_VOWELCHART3, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_RU, MyFrame::OnTools) EVT_MENU(MENU_LEXICON_RU, MyFrame::OnTools)
EVT_MENU(MENU_LEXICON_DE, 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_TO_UTF8, MyFrame::OnTools)
EVT_MENU(MENU_COUNT_WORDS, MyFrame::OnTools) EVT_MENU(MENU_COUNT_WORDS, MyFrame::OnTools)
EVT_MENU(MENU_TEST, MyFrame::OnTools) EVT_MENU(MENU_TEST, MyFrame::OnTools)


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



+ 315
- 0
src/extras.cpp View File

} // end of DecodePhonemes2 } // 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() void Lexicon_De()
{//============== {//==============
// Compare eSpeak's translation of German words with a pronunciation lexicon // Compare eSpeak's translation of German words with a pronunciation lexicon
case MENU_LEXICON_DE: case MENU_LEXICON_DE:
Lexicon_De(); Lexicon_De();
break; break;
case MENU_LEXICON_IT:
Lexicon_It(1);
break;
case MENU_LEXICON_IT2:
Lexicon_It(2);
break;
} }
} // end of CompareLexicon } // end of CompareLexicon



+ 3
- 3
src/klatt.cpp View File



if(wvoice != NULL) 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.scale_wav = scale_wav_tab[kt_globals.glsource];
} }
kt_globals.f0_flutter = wvoice->flutter/32; kt_globals.f0_flutter = wvoice->flutter/32;
klattp_inc[ix] = double((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length; klattp_inc[ix] = double((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length;


if((ix>0) && (ix < KLATT_AVp)) 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; nsamples = length;

+ 2
- 0
src/main.h View File

MENU_LEXICON, MENU_LEXICON,
MENU_LEXICON_RU, MENU_LEXICON_RU,
MENU_LEXICON_DE, MENU_LEXICON_DE,
MENU_LEXICON_IT,
MENU_LEXICON_IT2,
MENU_TO_UTF8, MENU_TO_UTF8,
MENU_COUNT_WORDS, MENU_COUNT_WORDS,
MENU_TEST, MENU_TEST,

+ 2
- 0
src/menus.cpp View File

lexicon_menu = new wxMenu; lexicon_menu = new wxMenu;
lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)")); lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)"));
lexicon_menu->Append(MENU_LEXICON_DE, _("German")); 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 = new wxMenu;
tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu); tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu);

+ 3
- 0
src/readclause.cpp View File

return(NULL); return(NULL);
} }


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


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

+ 3
- 0
src/speak.cpp View File

fprintf(stderr,"-w option must be used because the program was built without a sound interface\n"); fprintf(stderr,"-w option must be used because the program was built without a sound interface\n");
#endif // USE_PORTAUDIO #endif // USE_PORTAUDIO
} }

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

+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.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; const int version_phdata = 0x014000;


int option_device_number = -1; int option_device_number = -1;

+ 14
- 1
src/synthesize.h View File

unsigned char klattp[N_KLATTP]; unsigned char klattp[N_KLATTP];
} frame_t; } frame_t;


typedef struct {
typedef struct { // 43 bytes
short frflags; short frflags;
unsigned char length; unsigned char length;
unsigned char rms; unsigned char rms;
} frame_t2; // the original, without Klatt additions, used for file "phondata" } 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 // formant data used by wavegen
typedef struct { typedef struct {

+ 6
- 3
src/tr_languages.cpp View File



case L('d','e'): 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.stress_rule = 0;
tr->langopts.word_gap = 0x8; // don't use linking phonemes tr->langopts.word_gap = 0x8; // don't use linking phonemes
tr->langopts.vowel_pause = 0x30; tr->langopts.vowel_pause = 0x30;


tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = 2; tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x10 | 0x20000;
tr->langopts.vowel_pause = 1; tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_IT_DOUBLING] = 2; // double the first consonant if the previous word ends in a stressed vowel 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_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_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.numbers = 0x2709 + NUM_ROMAN;
tr->langopts.accents = 2; // Say "Capital" after the letter. tr->langopts.accents = 2; // Say "Capital" after the letter.
SetLetterVowel(tr,'y');
} }
break; break;


case L_jbo: // Lojban case L_jbo: // Lojban
{ {
static const short stress_lengths_jbo[8] = {145,145, 170,160, 0,0, 330,350}; 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); SetupTranslator(tr,stress_lengths_jbo,NULL);
tr->langopts.stress_rule = 2; 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.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->langopts.word_gap = 1;
tr->punct_within_word = jbo_punct_within_word; 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'); SetLetterVowel(tr,'y');
} }
break; break;

+ 8
- 3
src/translate.cpp View File

dictionary_flags[0] |= FLAG_DOT; 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]); return(dictionary_flags[0]);
} // end of TranslateWord } // end of TranslateWord


if(pre_pause < 1) if(pre_pause < 1)
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 // the word is marked in the dictionary list with $pause
if(pre_pause < 4) pre_pause = 4; if(pre_pause < 4) pre_pause = 4;
{ {
c = towlower2(c); 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; char_inserted = c;
c = 0x2c8; // stress marker c = 0x2c8; // stress marker

+ 7
- 3
src/translate.h View File







#define N_LOPTS 15
#define N_LOPTS 16
#define LOPT_DIERESES 1 #define LOPT_DIERESES 1
// 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables // 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 // bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
// change [t] when followed by unstressed vowel // change [t] when followed by unstressed vowel
#define LOPT_REDUCE_T 12 #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 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 // bit 1=also after a word which ends with a stressed vowel
#define LOPT_IT_DOUBLING 14 #define LOPT_IT_DOUBLING 14


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




typedef struct { typedef struct {
void MakePhonemeList(Translator *tr, int post_pause, int new_sentence); 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); 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 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 AppendPhonemes(Translator *tr, char *string, int size, const char *ph);


void CalcLengths(Translator *tr); void CalcLengths(Translator *tr);

+ 2
- 1
src/transldlg.cpp View File

t_phonetic->AppendText(wxString(buf,wxConvUTF8)); t_phonetic->AppendText(wxString(buf,wxConvUTF8));
} }
t_phonetic->AppendText(_T("---\n")); t_phonetic->AppendText(_T("---\n"));
fclose(f_trans);
if(f_trans != NULL)
fclose(f_trans);
remove(fname_temp); remove(fname_temp);
} }
t_phonetic->AppendText(wxString(phon_out,wxConvLocal)); t_phonetic->AppendText(wxString(phon_out,wxConvLocal));

+ 1
- 1
src/voice.h View File

int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths) 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_amp; // amplitude of unvoiced consonants
int consonant_ampv; // amplitude of the noise component of voiced consonants int consonant_ampv; // amplitude of the noise component of voiced consonants
int klatt[8];
int klattv[8];


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

+ 4
- 4
src/voices.cpp View File

voice->voicing = 64; voice->voicing = 64;
voice->consonant_amp = 100; voice->consonant_amp = 100;
voice->consonant_ampv = 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)); memset(speed.fast_settings,0,sizeof(speed.fast_settings));


#ifdef PLATFORM_RISCOS #ifdef PLATFORM_RISCOS
break; break;


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


case V_FAST: case V_FAST:
DIR *dir; DIR *dir;
struct dirent *ent; struct dirent *ent;


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


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

Loading…
Cancel
Save