Browse Source

[1.26.02] SelectVoice(), make voice_variants[] static.

lang=de  many translation improvements.
TranslateWord(), check that a prefix rule is still allowed after a suffix has been removed.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@43 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
ad4950c203

+ 55
- 16
dictsource/de_list View File

@@ -91,7 +91,7 @@ die %di:
das %das
den %de:n
dem %de:m
des %dEz
des %dEs

derselb $2
desselb dEss'Elb
@@ -120,9 +120,10 @@ deren ,dE*@n $brk
ab ap $u+ $brk
an an $u+ $brk
am am $u+ $brk
auf aUf $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
@@ -145,8 +146,8 @@ von fOn $u+ $brk
vom fOm $u+ $brk
vor ,fO* $strend
zu tsu: $u+ $brk
zum tsUm $u+ $brk
zur tsu:* $u+ $brk
zum tsUm $u+ $pause
zur tsu:* $u+ $pause
über ,yb3 $pause $strend
unter ,Unt3 $pause $strend
um Um $u+ $brk
@@ -161,7 +162,7 @@ noch $pause
(noch nicht) n'Ox||n,ICt $brk
(nicht mehr) n'ICt||,me:*
(nicht mehr) n,ICt||m'e:* $atend
(nicht nur) nICt||nu:* $pause
(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
@@ -261,10 +262,6 @@ ist %Ist
sind %zInt
seit %zaIt $only

gehen ge:@n $only
geht ge:t $only
gehe ge:@ $only

habe %hA:b@ $only
habst %habst $only
hast %hast $only
@@ -326,6 +323,7 @@ browser _^_EN
byte _^_EN
camcorder _^_EN
chart _^_EN
chat _^_EN
coach _^_EN
coke _^_EN
computer _^_EN
@@ -370,6 +368,7 @@ pidgin _^_EN
plot _^_EN
poster _^_EN
receiver _^_EN
research _^_EN
remake _^_EN
roadie _^_EN
roastbeef _^_EN
@@ -407,21 +406,33 @@ word _^_EN
// Main exceptions list
//=====================
abort ab'O*t
absentier apzEnt'i:*
abstinent $3
achsig 'aksIC2
akazie $alt
allein $2
andre and@-*@ // andere
anomalie $2
akazie $alt
antik ant'i:k
archaik a*k'A:Ik
arie $alt
arterie $alt
asphalt $2
außerdem aUs3de:m
aventurin avEntu:*'i:n
avenue av@n'y:

balkan $1
balkon $2
beben be:b@n
beere be:*@
bestie bEstI@
best bEst
beten be:t@n
bizarr $2
bronchie $alt

changier SaNZ'i:*
ciao tSaU
coup ku:

@@ -434,18 +445,26 @@ duett du:'Et
direkt $2
dritte d@-*It@

extravagant $1
einander aIn'and3
einerlei aIn@*laI
einig aInIC $only
einige aInIg@ $u+
einiges aInIg@s $u+
endivie $alt
erde E*d@
erst E*st

endlich EntlIC
episkopal e:pIsko:p'A:l
erde e:*d@
erst e:*st
ersten e:*st@n
erstmal e:*stma:l
extrem Ekstr'e:m

feuerrot $3
furie $alt

geben ge:b@n
geber ge:b3
gebt ge:bt
gegenüber ge:g@n'y:b3
gemein g@maIn
genial ge:nI'al
@@ -464,6 +483,11 @@ hm h@m
hostie $alt

immobilie $alt
indem Ind'e:m
inden Ind'e:n
inder Ind3
indes Ind'Es
indessen Ind'Es@n
injurie $alt
insbesondere $3
interess Int@*'Es
@@ -473,7 +497,7 @@ januar janu:A:*
kamelie $alt
kastanie $alt
kid kId
kommend kOm'End
kommend kOm'@nd
komödie $alt
konkret k%ONk@-*e:t
kurie $alt
@@ -488,18 +512,26 @@ machen max@n
marginalie $alt
materie $alt
menuette mEnu:'Et
minut $2
mikrofiche maIk@-*o:fIS
miteinander $1
mitte mIt@
modell mo:d'El
mumie $alt

nebulos $3

oberen o:b@*@n
oboe o:bo:@
orgie $alt
ok o:k'e:

passage pas'aZ@
petersilie $alt
pinie $alt
planet plan'Et
pochier pOS'i:*
pochs pOxs
präsident $3
prämie $alt
problem p@-*Obl'e:m
@@ -516,11 +548,14 @@ sofort $2
sogar $2
soweit $2
sowohl $2
spinozaisch spi:n'o:tsaIS
stalagmit stalagm'It
system z%IstEm

tag tA:g
the D@ // English
theater te:'A:t3
train t@-*e:n
tuerei tu:*aI

unten Unt@n
@@ -528,8 +563,12 @@ unten Unt@n
woher vo:h'e:r

verein fE*'aIn
vielbesprochen $3
vielleicht $2
vorbei fO*b'aI
vorbei fo:*b'aI
vorher fo:*h'e:*
vorherig fo:*h'e:*IC
vorig fo:*IC

//wahrscheinlich $2
warum vA:*'Um

+ 330
- 72
dictsource/de_rules View File

@@ -2,7 +2,7 @@

.group a
_) a (_ A:
a A:
a A
aa A:
ah (+ A:
ael A:El
@@ -18,37 +18,78 @@
ay aI
au aU

ab (t_ A:p
ag (t_ A:k

_) ab (C@P2 _!'ap
_) ab (arP2 _!'ap
_) ab (nor %ap
_) ab (or ap_|
_) ab (sor %ap
_) ab (str %ap
_) ab (sur %ap
_) abb (a %ab
_) abb (rev ab
_) abd (+ apd
_) abend A:b@nt
_) aberr ab_|E*
_) ab (er@P2 'ap
_) abge (@ 'abg@
_) ab (i ab
_) abzu 'abtsu:
_) ab (i ap
_) ab (j ap
_) ab (se ap
_) ab (so %ap
_) ab (sz ap
_) abzu 'aptsu:
_) ac (et ats
_) ad (ju at
_) an (@P2 _!'an
_) an (aly %an
_) an (a %an
_) a (natioP1 'A:
_) anath anat
_) an (der an
_) anti (@P4 ,antI
_) an (tw an
_) auf (@P3 _!'aUf
_) aus (@P3 _!'aUs

a (_ A:
a (C_ A:
s) a (g A:
@l) a (g A:
scl) a (g A:
s) a (m_ A:
s) a (mkeit A:
a (isier a
_) achs (@P4 'aks
_) achs (el 'aks
_) air _^_EN
ai (sch A:I
tr) ain En
akqu %akv
@A) al (_ 'al
@) an (_ 'an
@A) al (_ 'A:l
k) al (_ 'A:l
n) al (_ 'A:l
&kan) al (_ ,A:l
&sign) al (_ ,A:l
@) an (_ 'A:n
ein) an (der 'an
@) ant (_ 'ant
_) anthropo ,ant@-*o:p%o:
_) anti (@P4 ,anti:
anier (_ 'A:ni:3
arier (_ 'A:*i:3
adier (_ 'A:di:3
anier (_N 'A:ni:3
_) appe (ll@ ,apE
_) archa (i %a*CA
arier (_N 'A:*i:3
@l) ar (_ 'A:*
@t) ar (_ 'A:*
a (rch_ 'A:
@) at (_ 'A:t
@) atisch (_S6 'A:tIS
@) atisieren (_S9 A:tIs'i:*@n
a (tion a
_) au (Ceinand aU
_) aufent aUf@nt
_) authen aUtEn

.group b
_) b (_ be:
@@ -61,12 +102,18 @@

_) be (@P2 b@
&Cen) be (C@ b@
ungs) be (C@ b@
_) b (eHC b
_) be (C% bE
_) bei (P3 b'aI
_) bei (de baI
_) bei (ne baI
_) bei (ß baI
_) beo (b b,@o:

_) ba (lA b%a
_) ba (ll@ b%a
&) bar (_S3 bA:*
_) b (ebC b
_) b (ecC b
_) b (eet b
@@ -75,6 +122,7 @@
_) b (esen b
_) b (ess b
_) b (esten b
bestia bEsti:'A:
_) b (eug b
_) b (eul b
_) b (eut b
@@ -86,6 +134,7 @@
_) blue _^_EN
board _^_EN
_) boom _^_EN
bo (sh bo:

.group c
_) c (_ se:
@@ -96,25 +145,25 @@
a) ch x
o) ch x
u) ch x
fu) ch (s k
äu) ch C
eu) ch C
C) chen (_$4 C@n
ä) chen (_$4 C@n
e) chen (_$4 C@n
i) chen (_$4 C@n
// i) chen (_$4 C@n
ü) chen (_$4 C@n

_) chr k@-*
chs ks
chs ks (_
ck k

_) c (el S
_) cey tsaI
chat _^_EN
chef SEf
_) c (ent ts
_) ch (il S
chip _^_EN
chip (_ _^_EN
_) ch (ol k
_) ch (or k

@@ -134,11 +183,14 @@
d) d
d (_N t
d (h t
d (s_ t
ds (_ ts
dt t
ddt t

_) deal _^_EN
_) deme de:mE
demo (g de:mo:
demo (k de:mo:
design _^_EN
dge (_ _^_EN
_) dia d,i:a
@@ -161,6 +213,9 @@
eu OI
ey (_ e:

eb (t_ e:p
eg (t_ e:k

ell (_ 'El
&) e (_S1 @
@t) e (_S1 @
@@ -168,11 +223,18 @@
e (gt_+ e:
&) el (_ @l
&) eln (_S1 n
&) em (_S2 @m
&) e (lt_ @
&) em (_NS2 @m
&) em (_ 'e:m
_) end (C@P3 'Ent
_) endo (@ ,Endo:
@) en (_S2 @n
&) end (_N @nt
&) end (_ @nd
ier) end (_NS3 @nt
ier) end (_ @nd
@) ent (_ 'Ent
@) entlich @ntl%IC
@m) ent (_ 'Ent
@m) ente (_ 'Ent@
@) er (C 3
@@ -186,13 +248,17 @@
&) erer (_S4 @*3
&) eres (_S4 @*@s
&) er (C_ @*
&) er (n_ @r
er (d_ e:*
&) er (n_ @*
&) er (r_ E
w) er (k_ E*
&) er (nd_ @*
@) erin (_ @rIn
@) es (_S2 @s
&) et (_ @t
ig) et (_S2 @t
&t) et (_S2 @t
ier) et (_S2 @t
&) est (_S3 @st
&) este (_S4 @st@
&) estem (_S5 @st@m
@@ -203,29 +269,45 @@
&) en (@ E2n // [E2] can reduce to [@]
// &) er (C@ E2*
&) el (@ E2l
m) e (nt E

@) ei (_ 'aI
@@) erisch @*IS
&) erung (_ =@*UN

_) eil (aP3 'aIl
_) eil (fP3 'aIl
_) ein (@P3 _!'aIn
ein (and _|%aIn
_) eine (r@ aIn@
_) einig aInIg
mod) e (l@ E
s) e (lig e:
_) emp (@P3 _|%Emp
_) emph (@ %Emf
_) emp (ir %Emp
_) ene (rg %e:nE
_) ent (@P3 _|%Ent
_) enten Ent@n
_) ent (er Ent
_) epi (@ ,e:pi:
_) epi (sk e:pI
_) er (@P2 _|%E*
_) er (gie E*
_) er (beK E*
_) er (HC E* // lC, mC, nC, rC
_) ergeb (nis E*g'e:b
_) er (stC E*
_) er (ste E*
_) er (ste@@P2 _|%E*
mod) er (n E*

_) entert _^_EN
er (dig e:*
_) erob (er %E*o:b
@) eur (_ 'Y:*
euse (_ 'Y:z@
eusen (_ 'Y:z@n


.group f
@@ -233,10 +315,16 @@
f f
f) f

_) fest (P4 f'Est
_) faks (i f%akz
_) farb (C@P4 f'a*p
_) farb (l@P4 f'a*b
_) fein (@P4 f'aIn
_) fest (@P4 f'Est
_) flug fl'u:g
foto fo:to:
_) free _^_EN

_) feudal f%OIdA:l
_) feuer (@ fOI@*

.group g
_) g (_ ge:
@@ -251,7 +339,9 @@

_) g (eHC g // hC, lC, mC, nC, rC
_) ge (@P2 g@
g (ei+ g
ungs) ge (C@ g@
_) ge (beX ge:
g (ei+ g

_) gn (A g@-n
B) gn (A g@-n
@@ -261,10 +351,16 @@
gegen (_ ge:g@n
gegn ge:gn
gehen ge:@n
_) geh (eX ge:
general ge:nE*'al
_) g (ener g
_) g (eo+ g
_) ge (orP2 g@
ge (rman gE
ge (rät g@
@) ght (_ _^_EN
graph g@-*A:f
graph (_ g@-*'A:f
green _^_EN
guide _^_EN

@@ -275,34 +371,44 @@
h) h
ch) h h

_) herauf (P6 hE*'aUf
_) herab (P5 hE*'ab
_) heran (P5 hE*'an
_) herauf (P6 hE*'aUf
_) heraus (P6 hE*'aUs
_) herbei (P6 hE*'baI
_) herein (P6 hE*'aIn
_) herüber (P7 hE*'y:b3
_) herum (P5 hE*'Um
_) herunter (P8 hE*'Unt3
_) hervor (P6 hE*f'Or
_) hier (@ h%i:*

_) hinab (P5 hIn'ab
_) hinan (P5 hIn'an
_) hinauf (P6 hIn'aUf
_) hinaus (P6 hIn'aUs
_) hinein (P6 hIn'aIn
_) hinunter (P8 hIn'Unt3
_) hinweg (P6 hInv'e:g
_) hinzu (P5 hInts'u:

_) hinge (@P5 h'Ing@
_) hinter (@P6 h,Int3

_) haupt (@@P5 h'aUpt
// @) heit (_S4 haIt
_) hero h%e:*o:
_) high _^_EN
_) hinter (@ h,Int3
_) hoch (@P4 h'o:x
hoch ho:x
_) hyper _^_EN


.group i
_) i ( i:
i i:
ie i:
ih (+ i:
ieh i:

i (C% I
i (CC I
@@ -312,30 +418,19 @@
@) i (ng I
&CC) i (_ =i:

@) i (at_ I
&) ie (ll_ i:,E
&) ier (_ 'i:3
r) ien (@ IEn
&) ien (_S1 n
&n) ien (_ I@n
&) iens (_ =I;@ns
&) ient (_ =I;@nt
sch) ie (n i:
@) ieren 'i:*@n
@) iere (_ 'i:*@
@) ieret (_ 'i:*@t
@) ierest (_ 'i:*@st
@) ierst (_ 'i:*st
@) iert (_ 'i:*t
ierungs 'i:*UNs
ierung 'i:*UN
ib (t_ i:p

@) i (at_ I
i (d_ 'i:
i (erin =i:
ig (C IC
ig (m Ig
ig (n Ig
ig (l Ig
ig (r Ig
ig (ung Ig
ig (end_ Ig
igh aI
igtet Ikt@t
igtest Ikt@st
&) ig (_N IC
@@ -346,30 +441,71 @@
@) igsten (_ ICst@n
@) igster (_ ICst3
@) igstes (_ ICst@s

i (i i:_!

@) ik (_ 'i:k
@t) ik (_ =i:k
polit) ik 'i:k
@) ik (el_ 'i:k
@) ie (_ 'i:

bakter) ie =I@
famil) ie =I@
fer) ie (n =I@
fol) ie (_ =I@
formal) ie =I@
stud) ie (_ =I@

igh aI
r) i (na_ 'i:
@) ing (_N _^_EN
_) inter Int@*
@) ion (_ j'o:n
@) ional (_ jo:n,al
@) io (n Io:
@) is (_ Is
&) isch (_ =IS
is (mus_ 'Is
@) ist (_ 'Ist
@) it (_N 'It
@) ite (_ 'i:t@
@) ität (_S4 i:t'E:t

@s) i (v_ 'i:
@t) i (v_ 'i:


.group ie
ie i:
ieh i:
@) ie (_ 'i:

&) ie (ll_ i:,E
&) ie (r_ 'i:
&) ie (rlich 'i:
r) ien (@ IEn
&) ien (_ =I@n
&b) ien (_ =i:@n
g) ien (_ 'i:@n
m) ien (_ 'i:@n
ph) ien (_ 'i:@n
&n) ien (_ I@n
p) ien (_ 'i:@n
&r) ien (_ =i:@n
s) ien (_ 'i:@n
t) ien (_ 'i:@n
&) iens (_ =I;@ns
&) ient (_ =I;@nt
sch) ie (n i:
// @) ieren 'i:*@n
@) ie (reX 'i:
// @) iere (_ 'i:*@
// @) ierer (_ 'i:*3
// @) ieret (_ 'i:*@t
// @) ierest (_ 'i:*@st
// @) ierst (_ 'i:*st
// @) iert (_ 'i:*t
ierungs 'i:*UNs
ierung 'i:*UN
bakter) ie =I@
famil) ie =I@
fer) ie (n =I@
fol) ie (_ =I@
formal) ie =I@
stud) ie (_ =I@


.group j
_) j (_ jOt
j j
@@ -393,13 +529,37 @@
lin (_ l'i:n
l) lin (_ 'i:n

lady _^_EN
_) land (C@P4 l'ant
_) landes (@P6 l'and@s
_) lang (C@P4 l'aN
_) lang (t@ l'aN
langsam l'aNzA:m
_) leb (C le:p
_) leb (C@@P3 'le:p
_) leben (dig le:b'En
_) lehr (CP4 l'e:*
_) leit (@P4 l'aIt
_) lern (@@P4 l'E*n
_) lexi (@ lEksi:
@) lich (_$4 lIC
lady _^_EN
@) liche (_$5 lIC@
@) lichem (_$6 lIC@m
@) lichen (_$6 lIC@n
@) licher (_$6 lIC3
@) liches (_$6 lIC@s
@) lichere (_$7 lIC@*@
@) licherem (_$8 lIC@*@m
@) licheren (_$8 lIC@*@n
@) licherer (_$8 lIC@*@3
@) licheres (_$8 lIC@*@s
@) lichste (_$7 lICst@
@) lichstem (_$8 lICst@m
@) lichsten (_$8 lICst@n
@) lichster (_$8 lICst@r
@) lichstes (_$8 lICst@s
@) lichkeit (_$8 lICk%aIt
@) lichung (_$7 lIC%UN
@) lo (gisch l'o:

.group m
@@ -436,6 +596,8 @@
nk (A nk

nce (_ _^_EN
nebeneina (nd n,e:b@n_|aIn'a
&in) nen (_S3 @n
&) ness _^_EN
news _^_EN
nieder ni:d3
@@ -454,11 +616,20 @@
o (x O
&CC) o (_ =o:

ob (t_ o:p
og (t_ o:k

_) ober (@P4 _|,o:b3
_) ober (ste o:b3

@A) on (_ 'o:n
_) ob (jek %Op
_) obst (reP4 'o:pst
@) o (g_ 'o:
@) o (gin_ 'o:
o (m_ 'o:
@A) o (n_ 'o:
@) oo (_ u:
r) oo (m u:
z) oo (m u:
&t) or (_ =o:*


@@ -470,13 +641,19 @@
pf pF
ph f

passagie pasaZ'i:
_) pay _^_EN
_) peri p,e:*i:
_) periphe p,e:*i:fe:

philie f'i:li:
_) pro (@ %p@-*o:

_) po (e p%o:
_) poe (sc pY:
_) poly (@P4 p,o:ly:
partei p%a*taI
_) perfe (k p%E*fE
pool _^_EN
power _^_EN
_) preß (@P4 p@-*'Es
@@ -538,10 +715,13 @@
&) schaft (_S6 Saft
schein (lich S'aIn
schwer Sve:*
_) sechs (P5 z'Eks
_) selbst (@@P6 z'Elpst
shop _^_EN
_) sky _^_EN
soldat z%OldA:t
so (rt_ s_|O

sound _^_EN
speed _^_EN
_) street _^_EN
@@ -556,20 +736,42 @@
K) th t
tz ts

// &B) te (_$2 t@
&t) te (_ @
// &B) ten (_$3 t@n
// &t) ten (_ @n
// &B) tet (_$3 t@t

ier) t (_S1 t
ier) te (_S2 t@
ier) tem (_S3 t@m
ier) ten (_S3 t@n
ier) ter (_S3 t3
ier) tes (_S3 t@s
ier) tet (_S3 t@t
ier) tere (_S4 t@*@
ier) terem (_S5 t@*@m
ier) teren (_S5 t@*@n
ier) terer (_S5 t@*3
ier) teres (_S5 t@*@s
ier) tst (_S3 tst
ier) tste (_S4 tst@
ier) tstem (_S5 tst@m
ier) tsten (_S5 tst@n
ier) tster (_S5 tst3
ier) tstes (_S5 tst@s
ier) test (_S4 t@st
ier) teste (_S5 t@st@
ier) testem (_S6 t@st@m
ier) testen (_S6 t@st@n
ier) tester (_S6 t@st3
ier) testes (_S6 t@st@s

tch tS
_) teen _^_EN
thrill _^_EN
_pa) th t
@) tient (_ tsI'Ent
@) tion tsI,o:n
@) tion (_ tsI'o:n
@) ti (v_ t'i:
_) trail _^_EN
_) train _^_EN
_) tranqu _^_EN
_) tw _^_EN

@@ -587,20 +789,42 @@
u (x U
@) u (ng U

ub (t_ u:p
ug (t_ u:k

@) u (m_ U
rt) u (m_ u:
_) un Un
_) un (C@P2 'Un
_) unbe (@P4 _|,Unb@
_) unge (@P4 _|,Ung@
_) unver (@P5 _|,UnfE*
_) un (iv u:n
_) un (@P2 _|'Un
_) unab (@P4 _|,Un_|'ap
_) unan (@P4 _|,Un_|'an
_) unauf (@P5 _|,Un_|'aUf
_) unaus (@P5 _|,Un_|'aUs
_) unbe (@P4 _|'Unb@
_) unein (@P5 _|,Un_|'aIn
_) unge (@P4 _|'Ung@
_) unver (@P5 _|'UnfE*
_) un (i u:n
_) un (in@P2 _|'Un
_) unum (@P4 _|,Un_|'Um
_) under _^_EN
_) unter (@P5 _|%Unt3
_) unter (@P5 _|,Unt3


rep) u (bl u:
s) u (ch u:
&) uela (_ u:,e:la
@) uerisch (_ 'u:*IS
_) ultra (@P5 ,Ultra
um (_ Um
t) um (_ u:m
&) ungs (A %UNs_| // upto "ungs" is a prefix?
_) u (rk u:
_) u (rl u:
_) u (rv u:
us (_ Us
_) user _^_EN
ol) u (t_ u:

_) ueber (@P5 _|,y:b3

@@ -609,21 +833,43 @@
_) v (_ faU
v v
v) v
v (_N f

_) v f
_) vie fi:
_) vi (et v,i:
_) vi (CC vI
_) vi vi:

_) v v
_) v (ater f
_) v (ie f
_) v (iet v
_) v (iz f
_) v (oll f
_) v (olk f
_) v (on f

_) vehe ve:he:
_) ver (@P3 f%E*
_) vor (@P3 'fO*
_) ver (bal v%E*
_) viel (@P4 f'i:l
_) vier (g@P4 f'i:*
_) viet vIEt
_) voll (C@P4 f'Ol
_) voll (br f%Ol
_) voll (end f%Ol_|
_) voll (ko f%Ol
_) voll (stre f%Ol
_) voll (z f%Ol
_) vorder fO*d@*
-) vorha (nd fo:*h'a
_) vor (ne 'fO*
_) vorbei (@P6 fO*'baI


voraus fO*'aUs
vorüber fO*'yb3
_) vor (@P3 'fo:*
_) voraus (@P6 fo:*'aUs
_) vorbei (@P6 fo:*'baI
_) vorher (@P6 fo:*h'e:*
_) vorüber (@P7 fo:*'yb3

.group w
_) w (_ ve:
@@ -632,6 +878,7 @@
@) wert (_ vE*t
_) wh _^_EN
&) ware (_ _^_EN
_) wasch (@P5 v'aS
_) wo (hin v%o:
_) wohl (@P4 v'o:l
work _^_EN
@@ -648,7 +895,8 @@
y y:
y (CC y
y (x y
y (A j
_) y (A j
A) y (A j
@) y (_ I
t) y (_ _^_EN

@@ -660,16 +908,23 @@

_) zer (@ %tsE*
_) zu (C@P2 ts%u:
_) zu (nC tsU
_) zurück (@P6 tsu:*'yk
_) zyklo (@P5 ,tsy:klo:
zylin ts%i:lIn

.group ä
ä E:
äh (+ e:
äu OI

ä (C% E
ä (CC E
ä (sch E

äu OI
äb (t_ E:p
äg (t_ E:k
t) ät (_ 'E:t

.group ö
ö Y:
@@ -688,6 +943,9 @@
ü (sch y
ü (x y

üb (t_ y:p
üg (t_ y:k

_) über (@P4 _|,y:b3

.group ß

+ 8
- 8
dictsource/dict_phonemes View File

@@ -41,14 +41,14 @@ x z

Dictionary de_dict

3 @ @- a A: aI aU E
E2 E: e: I i: O o: OI
U u: W y y: Y:
* ; b C d D f g
h j k l m n N p
pF r s S t tS ts v
x z
3 @ @- a A A: aI aU
E E2 E: e: I i: O o:
OI U u: W y y: Y:
* : ; b C C2 d D
f g h j k l m n
N p pF r s S t tS
ts v x z Z


Dictionary el_dict

+ 2
- 3
dictsource/hr_rules View File

@@ -30,8 +30,7 @@
e E
j) e e
e (j e
r) e e
._) exe (%ekse // filetype
._) exe %ekse // filetype

.group f
f f
@@ -45,7 +44,7 @@

.group i
i i
._) ini (%ini // filetype
._) ini %ini // filetype

.group j
j j

+ 2
- 2
phsource/compile_report View File

@@ -9,7 +9,7 @@
en_wm 30 144
af 37 127
cy 29 122
de 29 120
de 30 121
eo 13 108
fi 40 127
fr 32 118
@@ -208,7 +208,7 @@
9 r/tr base en_sc pt_pt
30 r/trr base af de fi nl ru ro sv sw
11 r/xr base
1 ufric/ch base
2 ufric/ch base de
3 ufric/f base de ro
2 ufric/f_ base ro
4 ufric/h_ base fi hi

+ 14
- 3
phsource/ph_german View File

@@ -87,13 +87,13 @@ phoneme A:
vowel starttype (a) endtype (a)
length 240
formants vowel/aa_6
reduceto a 4 // ??
endphoneme

phoneme A
vowel starttype (a) endtype (a)
length 200
length 240
formants vowel/aa_6
reduceto a 4 // ??
endphoneme


@@ -145,7 +145,7 @@ endphoneme

phoneme e:
vowel starttype (e) endtype (e)
length 200
length 190
formants vowel/e_2
before * DFT+40
endphoneme
@@ -211,6 +211,17 @@ phoneme pF
wave ufric/f // could replace this with a [pf] wav file
endphoneme

phoneme C2 // for "ig" -> [IC] or [Ig]
vls pal frc palatal
beforevowel g
vowelin f1=0 f2=2700 400 600 f3=200 70
vowelout f1=0 f2=2700 400 600 f3=200 70 rms=20
length 100
lengthmod 3
wave ufric/ch
endphoneme


phoneme l/ // used for [l] when not before a vowel
liquid
length 100

+ 3
- 3
src/compiledict.cpp View File

@@ -689,7 +689,7 @@ void copy_rule_string(char *string, int &state)
case '$': // obsolete, replaced by S
case 'S':
output[ix++] = RULE_ENDING;
value = 0x80;
value = 0;
while(!isspace2(c = *p++) && (c != 0))
{
switch(c)
@@ -720,14 +720,14 @@ void copy_rule_string(char *string, int &state)
break;
default:
if(isdigit(c))
value = (c - '0') + 0x80;
value = (value*10) + (c - '0');
break;
}
}
p--;
output[ix++] = sxflags >> 16;
output[ix++] = sxflags >> 8;
c = value;
c = value | 0x80;
break;
}
}

+ 17
- 5
src/dictionary.cpp View File

@@ -2115,7 +2115,7 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec
}

#ifdef LOG_TRANSLATE
if((option_phonemes == 2) && (match.points > 0))
if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0))
{
// show each rule that matches, and it's points score
int pts;
@@ -2137,7 +2137,7 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec
}

#ifdef LOG_TRANSLATE
if(option_phonemes == 2)
if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
{
if(group_length <= 1)
fprintf(f_trans,"\n");
@@ -2188,7 +2188,7 @@ int Translator::TranslateRules(char *p, char *phonemes, int ph_size, char *end_p
return(0);

#ifdef LOG_TRANSLATE
if(option_phonemes == 2)
if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
{
char wordbuf[120];
int ix;
@@ -2345,8 +2345,20 @@ int Translator::TranslateRules(char *p, char *phonemes, int ph_size, char *end_p
if((match1.end_type != 0) && (end_phonemes != NULL))
{
/* a standard ending has been found, re-translate the word without it */
strcpy(end_phonemes,match1.phonemes);
return(match1.end_type);
if((match1.end_type & SUFX_P) && (word_flags & FLAG_NO_PREFIX))
{
// ignore the match on a prefix
}
else
{
if((match1.end_type & SUFX_P) && ((match1.end_type & 0x7f) == 0))
{
// no prefix length specified
match1.end_type |= p - p_start;
}
strcpy(end_phonemes,match1.phonemes);
return(match1.end_type);
}
}
if(match1.del_fwd != NULL)
*match1.del_fwd = REPLACED_E;

+ 29
- 2
src/extras.cpp View File

@@ -214,8 +214,8 @@ void DecodePhonemes2(const char *inptr, char *outptr)
int start;
static const char *stress_chars = "==,,'* ";

unsigned int replace_ph[] = {',',PH('@','-'),'W','3','y',PH('A',':'),'*',PH('_','!'),PH('_','|'),PH('O','I'),PH('Y',':'),PH('p','F'),PH('E','2'),0};
const char *replace_ph2[] = {NULL,NULL, "9","@r","Y", "a:", "r", "?", "?", "OY", "2:", "pf" ,"E",NULL};
unsigned int replace_ph[] = {',',PH('@','-'),'W','3','y','A',PH('A',':'),'*',PH('_','!'),PH('_','|'),PH('O','I'),PH('Y',':'),PH('p','F'),PH('E','2'),0};
const char *replace_ph2[] = {NULL,NULL,"9","@r","Y","a:", "a:", "r", "?", "?", "OY", "2:", "pf" ,"E",NULL};


start = 1;
@@ -289,11 +289,13 @@ void Lexicon_De()
FILE *f_out;
int ix;
int c;
int c2;
char *p;
int stress;
int count=0;
int start;
int matched=0;
int defer_stress = 0;
char buf[120];
char word[80];
char word2[80];
@@ -367,7 +369,32 @@ void Lexicon_De()
if((c == '?') && start)
continue; // omit initial [?]

if(c == '<')
{
if((c2 = pronounce[ix+1]) == 'i')
{
defer_stress =1;
#ifdef deleted
if(stress == 4)
{
*p++ = 'i';
c =':';
}
else
#endif
{
c = 'I';
}
ix++;
}
}

start =0;
if(defer_stress)
{
defer_stress = 0;
}
else
if(stress && (strchr(vowels,c) != NULL))
{
if(stress == 4)

+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.26.01 09.Jun.07";
const char *version_string = "1.26.02 11.Jun.07";
const int version_phdata = 0x012601;

int option_device_number = -1;

+ 38
- 2
src/translate.cpp View File

@@ -606,6 +606,7 @@ int Translator::TranslateWord(char *word1, int next_pause, WORD_TAB *wtab)
int unpron_length;
int add_plural_suffix = 0;
int prefix_flags = 0;
int confirm_prefix;
int spell_word;
int wflags = wtab->flags;
int wmark = wtab->wmark;
@@ -755,9 +756,42 @@ printf("TR3 length=%d\n",length);
c_temp = word[-1];

found = 0;
confirm_prefix = 1;
while(end_type & SUFX_P)
{
// Found a standard prefix, remove it and retranslate

if(confirm_prefix)
{
int end2;
char phonemes2[N_WORD_PHONEMES];
char end_phonemes2[N_WORD_PHONEMES];

// remove any standard suffix and confirm that the prefix is still recognised
end2 = TranslateRules(word, phonemes2, N_WORD_PHONEMES, end_phonemes2, wflags|FLAG_NO_PREFIX|FLAG_NO_TRACE, dictionary_flags);
if(end2)
{
RemoveEnding(word,end2,word_copy);
end_type = TranslateRules(word, phonemes, N_WORD_PHONEMES, end_phonemes, wflags|FLAG_NO_TRACE, dictionary_flags);
memcpy(word,word_copy,strlen(word_copy));
if((end_type & SUFX_P) == 0)
{
// after removing the suffix, the prefix is no longer recognised.
// Keep the suffix, but don't use the prefix
end_type = end2;
strcpy(phonemes,phonemes2);
strcpy(end_phonemes,end_phonemes2);
if(option_phonemes == 2)
{
DecodePhonemes(end_phonemes,end_phonemes2);
fprintf(f_trans," suffix [%s]\n\n",end_phonemes2);
}
}
confirm_prefix = 0;
continue;
}
}

strcat(prefix_phonemes,end_phonemes);
end_phonemes[0] = 0;
prefix_type = end_type;
@@ -775,6 +809,7 @@ printf("TR3 length=%d\n",length);
}
c_temp = word[-1];
word[-1] = ' ';
confirm_prefix = 1;

end_type = 0;
found = LookupDictList(word,phonemes,&dictionary_flags2,SUFX_P | (wflags << 16));
@@ -817,8 +852,9 @@ strcpy(phonemes2,phonemes);
dictionary_flags = dictionary_flags2;
if(found)
prefix_phonemes[0] = 0; // matched whole word, don't need prefix now
if(found || (dictionary_flags2 != 0))
prefix_flags = 1;

// if(found || (dictionary_flags2 != 0))
// prefix_flags = 1; // ?? this looks wrong
}
if(found == 0)
{

+ 2
- 0
src/translate.h View File

@@ -78,6 +78,8 @@
#define FLAG_DONT_SWITCH_TRANSLATOR 0x1000
#define FLAG_SUFFIX_REMOVED 0x2000
#define FLAG_HYPHEN_AFTER 0x4000
#define FLAG_NO_PREFIX 0x8000
#define FLAG_NO_TRACE 0x10000

// prefix/suffix flags (bits 8 to 14, bits 16 to 22) don't use 0x8000, 0x800000
#define SUFX_E 0x0100 // e may have been added

+ 1
- 1
src/voices.cpp View File

@@ -1156,7 +1156,7 @@ espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant)
espeak_VOICE *voices[N_VOICES_LIST]; // list of candidates
espeak_VOICE *voices2[N_VOICES_LIST+N_VOICE_VARIANTS];

espeak_VOICE voice_variants[N_VOICE_VARIANTS];
static espeak_VOICE voice_variants[N_VOICE_VARIANTS];

if(n_voices_list == 0)
espeak_ListVoices(NULL); // create the voices list

+ 1
- 1
windows/windows_sapi/ttsengobj.cpp View File

@@ -295,7 +295,7 @@ STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken)
gEmphasis = 0;
gSayas = 0;
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install);
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,0);
espeak_SetVoiceByName(voice);
espeak_SetSynthCallback(SynthCallback);

Loading…
Cancel
Save