Browse Source

[1.39.18]

*_list  Allow Hyphens in multi-word entries  (aa-bb).  This will only match a pair of words which are hyphenated.
*_list  Fix abbreviations of the form  a.b.cde
Recognise Armenian punctuation, allow and process Armenian punctuation inside words (affects intonation type, and marks the focus word of the clause).
Mbrola: add a delay so that SAPI5 events better follow the speaking.
Mbrola: generate phoneme events, and hence SAPI5 viseme events.


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

+ 22
- 22
dictsource/de_rules View File

@@ -196,7 +196,7 @@
fu) ch (s k
äu) ch C
eu) ch C
C) chen (_$4 C@n
C) chen (_S4 C@n
ä) chen (_ C@n
e) chen (_ C@n
ü) chen (_ C@n
@@ -638,8 +638,8 @@
k k
k) k

// @) keit (_$4 kaIt
// @) keiten (_$6 kaIt@n
// @) keit (_S4 kaIt
// @) keiten (_S6 kaIt@n

kolleg k%Ole:g
_) komme (C@ k%OmE
@@ -667,24 +667,24 @@
_) leit (@P4 l'aIt
_) lern (@@P4 l'E*n
_) lexi (@ lEksi:
@) lich (_$4 lIC
@) 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
@) lich (_S4 lIC
@) liche (_S5 lIC@
@) lichem (_S6 lIC@m
@) lichen (_S6 lIC@n
@) licher (_S6 lIC3
@) liches (_S6 lIC@s
@) lichere (_S7 lIC@*@
@) licherem (_S8 lIC@*@m
@) licheren (_S8 lIC@*@n
@) licherer (_S8 lIC@*@3
@) licheres (_S8 lIC@*@s
@) lichste (_S7 lICst@
@) lichstem (_S8 lICst@m
@) lichsten (_S8 lICst@n
@) lichster (_S8 lICst@r
@) lichstes (_S8 lICst@s
@) lichkeit (_S8 lICk%aIt
@) lichung (_S7 lIC%UN
@) lo (gisch l'o:

.group m
@@ -847,7 +847,7 @@
_be) sp Sp
_ge) sp Sp
_ver) sp Sp
&C) st (_$2 st
&C) st (_S2 st
&C) ste (_S3 st@
&C) stem (_S4 st@m
&C) sten (_S4 st@n

+ 26
- 15
dictsource/dict_phonemes View File

@@ -305,10 +305,11 @@ tS v w z z.

Dictionary ne_dict

@ @- @2 @3 a a: aI aU
a~ e E e: E: E~ e~ i
I i: i~ l- o O o: O:
o~ O~ r- U u u: u~ V
@ @/ @2 @3 a aI aU a~
e E eI eU E~ e~ i I
i~ l- o O o: oI oU o~
O~ r- u uI u~ V VI VU
V~

- : b c ch d d. f
g h H j J k kh l
@@ -375,12 +376,12 @@ ea eI eo eU i i/ I^ iI
iU o O Oa oI oU u uI
y Y yI yU

* *; b b; c C d d;
dZ f f; g h j k l
l; m m; n N n; p p;
r s S S; t t; tS ts
ts; v v; w w2 x z Z
z; Z;
* *; - b b; c C d
d; dZ f f; g h j k
l l; m m; n N n; p
p; r s S S; t t; tS
ts ts; v v; w w2 x z
Z z; Z;


Dictionary ru_dict
@@ -497,7 +498,7 @@ uo y y& y@ yE yi yu
(u) ; C f h j k kh
l m n N p ph r s
s. S; t th ts ts. ts. tS;
tS; tsh v w x z.
tS; tsh v w x X z.


Dictionary zhy_dict
@@ -517,7 +518,17 @@ a a: ai au e e: ei i
i: ie iu o o: oi u u:
ui uo

b c d dZ f g h j
J k l l^ m n N n^
p R R2 s S t tS ts
v z Z
: b c d dZ f g h
j J k l l^ m n n^
p r R R2 s S t tS
ts v x z Z


Dictionary hy_dict

@ a aI e eI i i@ o
u W y

** b d dZ f g h j
k l m n p R3 s S
t tS ts v x z Z

+ 1
- 0
dictsource/en_list View File

@@ -2343,6 +2343,7 @@ Provence pr0v'A~s
Pyrenees pIr@n'i:z
Qatar katA@
Quebec kwI2bEk
Raleigh rA:lI
Reno ri:noU
Sahel sA:h'El
Saigon saIg'0n

+ 196
- 196
dictsource/en_rules View File

@@ -84,7 +84,7 @@
ae i:
ae (val 'i:
aea i@
@) aed (_$2 d
@) aed (_S2 d
_) ae (on i:
_) aer (o e@
ae (l eI
@@ -226,13 +226,13 @@
ab (ular 'ab
b) ab (y eIb
b) ab (yl ab
&) able (_$4iev @b@L // suffix
&) able (_S4iev @b@L // suffix
&c) able (_ @b@L
@ct) able (_ =@b@L
&) ability ($7iev @b'IlI2t%I // suffix
&) abilities ($9iev @b'IlI2t%Iz // suffix
&) ably (_$4iefv @bl%I
&c) ably (_$4fv @bl%I
&) ability (S7iev @b'IlI2t%I // suffix
&) abilities (S9iev @b'IlI2t%Iz // suffix
&) ably (_S4iefv @bl%I
&c) ably (_S4fv @bl%I

.group ac
_) ac (@ a2k
@@ -533,8 +533,8 @@
alz alt|s
&) al (_ @L
?8 &) al (_ a2l
@) ally (_$2 l%I
@@ic) ally (_$4 l%I
@) ally (_S2 l%I
@@ic) ally (_S4 l%I
inst) al (_ O:l
&) al (d @L
b) al (d O:l
@@ -675,8 +675,8 @@
_) anom a2n0m
&) an (_ @n
?8 &) an (_ a2n
@u) an (_$1 n
@i) an (_$1 n
@u) an (_S1 n
@i) an (_S1 n
Cc) an (_ an
l) an (_ an
ll) an (_ @n
@@ -725,7 +725,7 @@
d) ang (er eIndZ
r) ang (e eIndZ
r) anging eIndZIN
r) anged ($1 d
r) anged (S1 d
perm) an @n
ang (er aNg
m) anoeu (v @nu:
@@ -1121,8 +1121,8 @@
su) bt (l t
de) bt t
_) bug (le bju:g
@) bury (_$4i br%I
?3 @) bury (_$4i bEr%I
@) bury (_S4i br%I
?3 @) bury (_S4i bEr%I
_) by baI


@@ -1447,7 +1447,7 @@
d d
d (d
_) d' (AP2 d
@@e) d (_$1 d // suffix
@@e) d (_S1 d // suffix
ddh d
dj dZ
dg (_ dZ
@@ -1714,20 +1714,20 @@
e (quiv %I
e'er e@
h) e (sion 'i:
&f) e's (_$2i s
&k) e's (_$2i s
&p) e's (_$2i s
&t) e's (_$2i s
&c) e's (_$2i Iz
&g) e's (_$2i Iz
&ch) e's (_$2i Iz
&ph) e's (_$2i Iz
&s) e's (_$2i Iz
&sh) e's (_$2i Iz
&th) e's (_$2i z
&r) e's (_$2i z
&x) e's (_$2i Iz
&C) e's (_$2i z
&f) e's (_S2i s
&k) e's (_S2i s
&p) e's (_S2i s
&t) e's (_S2i s
&c) e's (_S2i Iz
&g) e's (_S2i Iz
&ch) e's (_S2i Iz
&ph) e's (_S2i Iz
&s) e's (_S2i Iz
&sh) e's (_S2i Iz
&th) e's (_S2i z
&r) e's (_S2i z
&x) e's (_S2i Iz
&C) e's (_S2i z
&Cr) e's (_ @z
@) e (tio i:
discr) e (tion E
@@ -1756,7 +1756,7 @@
_s) ew u:
_s) ew (_ oU
e (work
eway (_$3 weI
eway (_S3 weI
@) ez (_ =Ez

.group ea
@@ -1851,28 +1851,28 @@
C) ea (ven E

.group ed
@@) ed (_$2dvei d
@C) ed (_$2dvei d
@c) ed (_$2vdei t
@d) ed (_$2dvei I2d
?8 @d) ed (_$2dvei Ed
&ch) ed (_$2vei t
&sh) ed (_$2vei t
@@) ed (_S2dvei d
@C) ed (_S2dvei d
@c) ed (_S2vdei t
@d) ed (_S2dvei I2d
?8 @d) ed (_S2dvei Ed
&ch) ed (_S2vei t
&sh) ed (_S2vei t
@Csh) ed (_ Ed
@f) ed (_$2vdei t
@g) ed (_$1vi d
@k) ed (_$2vdei t
&en) ed (_$2v d
cl) ed (_$1v d
@p) ed (_$2vdei t
@@er) ed (_$2v d
@ss) ed (_$2dv t
@t) ed (_$2vdei I2d
?8 @t) ed (_$2vdei Ed
@fr) ed (_$2v Id
@f) ed (_S2vdei t
@g) ed (_S1vi d
@k) ed (_S2vdei t
&en) ed (_S2v d
cl) ed (_S1v d
@p) ed (_S2vdei t
@@er) ed (_S2v d
@ss) ed (_S2dv t
@t) ed (_S2vdei I2d
?8 @t) ed (_S2vdei Ed
@fr) ed (_S2v Id
yw) ed (_ Ed
@x) ed (_$2vi t
y) ed (_$2v d
@x) ed (_S2vi t
y) ed (_S2v d
edly (_ Idl%I
c) ed (e_ 'i:d
p) ed (e_ i:d
@@ -2113,14 +2113,14 @@

.group er
&) er 3
@@@) er (_$2de 3 // suffix
%C) er (_$3 3
ll) er (_$2 3
@@@) er (_S2de 3 // suffix
%C) er (_S3 3
ll) er (_S2 3
&) er (_ 3
?8 &) er (_ a2 // (temporary because [3] -> [a2] is only for word-final
%C) ers (_$4 3z
?8 %C) ers (_$4 a2z
ss) er (_$2 3
%C) ers (_S4 3z
?8 %C) ers (_S4 a2z
ss) er (_S2 3
all) er (_ 3
mb) er (_ 3
lin) er (_S1 3
@@ -2228,30 +2228,30 @@
err (_ 3:

.group es
&) es (_$1i z
&) es (_S1i z
ese (_ i:z
@n) ese (_ 'i:z
&f) es (_$1 s
&k) es (_$1 s
&p) es (_$1 s
&t) es (_$1 s
&c) es (_$1 I2z
&g) es (_$1 I2z
&ch) es (_$1 I2z
&ph) es (_$1 I2z
neri) es (_$2i z
&s) es (_$1 I2z
&us) es (_$2e I2z
&rus) es (_$2 I2z
&tus) es (_$2 I2z
&ss) es (_$2 I2z
sh) es (_$2 I2z
&th) es (_$1 z
&r) es (_$1 z
&qu) es (_$1 s
&x) es (_$2 I2z
&z) es (_$2 I2z
&C) es (_$1i z
&f) es (_S1 s
&k) es (_S1 s
&p) es (_S1 s
&t) es (_S1 s
&c) es (_S1 I2z
&g) es (_S1 I2z
&ch) es (_S1 I2z
&ph) es (_S1 I2z
neri) es (_S2i z
&s) es (_S1 I2z
&us) es (_S2e I2z
&rus) es (_S2 I2z
&tus) es (_S2 I2z
&ss) es (_S2 I2z
sh) es (_S2 I2z
&th) es (_S1 z
&r) es (_S1 z
&qu) es (_S1 s
&x) es (_S2 I2z
&z) es (_S2 I2z
&C) es (_S1i z
es (carp I2s
es (cape %Es
es (capi %Es
@@ -2290,7 +2290,7 @@
_) eth (a ET
eth (ic ET
eth (y i:T
@C) eth (_$3e @T
@C) eth (_S3e @T
etta (_ 'Et@
ette (_ 'Et
pal) ett (e @t
@@ -2459,11 +2459,11 @@
A) han (_ h'an // places
ha (st heI
_) he' %hi:
@) head (_$4 hEd
@) head (_S4 hEd
heir e@
_) hetero hEtroU
K) hl L
&) hold (_$4 hoUld
&) hold (_S4 hoUld
holme hoUm
_) homeo hoUmi:oU
_) homo (s h,oUmoU
@@ -2477,8 +2477,8 @@
_) horri h0rI
_) horse hO@s
_) house (@ haUs
house (_$5 haUs
houses (_$6 haUzI2z
house (_S5 haUs
houses (_S6 haUzI2z

.group i
i I
@@ -2520,8 +2520,8 @@
_) i (o aI
&) ial (_ =I2@l
@) ibab aIb@b
@) ible (_$4ev @b@L
@) ibly (_$4efv @bl%I
@) ible (_S4ev @b@L
@) ibly (_S4efv @bl%I
i (bilit I
l) i (bel aI
b) i (ble_ aI
@@ -2653,9 +2653,9 @@
is (o_ aIz
ise (_ aIz
iser (_ aIz3
@) ism (_$3de Iz@m
an) ism (_$3d Iz@m
@iB) ism (_$3d Iz@m
@) ism (_S3de Iz@m
an) ism (_S3d Iz@m
@iB) ism (_S3d Iz@m
is (er+_ aIz
iz (er_ aIz
prAm) is Is
@@ -2739,7 +2739,7 @@
.group ie
ie I
ie (_ I
ied (_$2i d // suffix
ied (_S2i d // suffix
ie (c aI
ie (ce i:
ie (_ aI
@@ -2792,7 +2792,7 @@
ie (v i:
iew (_ ju:
iew ju:
ies (_$2i z
ies (_S2i z
spec) ies (_ i:z
ser) ies (_ i:z
_ar) ies (_ i:z
@@ -2857,20 +2857,20 @@
?3 s) im (ult aIm

.group in
@) ing (_+$3dve I2N
@) ings (_$4dve I2Nz
@) ingly (_$5dve I2Ng-lI
@) ingment (_$7dve I2Ng-m@nt
logu) ing (_$4v I2N
x) ing (_+$3v I2N
@@om) ing (_$3dv I2N
en) ing (_$3v I2N
en) ings (_$4v I2Nz
en) ingly (_$5vf I2Ng-lI
er) ing (_$3v I2N
er) ings (_$4v I2Nz
er) ingly (_$5vf I2Ng-lI
er) ingment (_$7v I2Ng-m@nt
@) ing (_+S3dve I2N
@) ings (_S4dve I2Nz
@) ingly (_S5dve I2Ng-lI
@) ingment (_S7dve I2Ng-m@nt
logu) ing (_S4v I2N
x) ing (_+S3v I2N
@@om) ing (_S3dv I2N
en) ing (_S3v I2N
en) ings (_S4v I2Nz
en) ingly (_S5vf I2Ng-lI
er) ing (_S3v I2N
er) ings (_S4v I2Nz
er) ingly (_S5vf I2Ng-lI
er) ingment (_S7v I2Ng-m@nt
Br) ing (_ IN

?7 &) in (_ @n
@@ -3208,8 +3208,8 @@
_) llan L%an
l (E l
lle (_ l
@@o) lled (_$3v d
@@) lled (_$3v d
@@o) lled (_S3v d
@@) lled (_S3v d
B) l (_ @L
w) l (_ l
r) l (_ l
@@ -3224,14 +3224,14 @@
?3 _) lo (gK lO
@) lo (gous =l@
lu (na lu:
@) ly (_$2i l%I
@l) ly (_$2 I2
@) ly (_S2i l%I
@l) ly (_S2 I2
f) ly (_ laI
ief) ly (_$2 l%I
ff) ly (_$2 l%I
of) ly (_$2 l%I
ief) ly (_S2 l%I
ff) ly (_S2 l%I
of) ly (_S2 l%I
multip) ly laI
&p) ly (_$2 l%I
&p) ly (_S2 l%I
p) ly (_ laI
_) ly (d lI

@@ -3256,12 +3256,12 @@
@t) le (B@ @L
tt) le (@ @-l
&C) le (ss l@
@) less (_$4i l@s
@) lessly (_$6i l@sl%I
@) lessness (_$8i l@sn@s
?8 @) less (_$4i lEs
?8 @) lessly (_$6i lEsl%I
?8 @) lessness (_$8i lEsnEs
@) less (_S4i l@s
@) lessly (_S6i l@sl%I
@) lessness (_S8i l@sn@s
?8 @) less (_S4i lEs
?8 @) lessly (_S6i lEsl%I
?8 @) lessness (_S8i lEsnEs

.group m
m m
@@ -3294,10 +3294,10 @@
_) mn n
&B) me (_ m%I
@) men (_ mEn
&) ment (_$4 m@nt
&) ments (_$5 m@nt|s
?8 &) ment (_$4 mEnt
?8 &) ments (_$5 mEnt|s
&) ment (_S4 m@nt
&) ments (_S5 m@nt|s
?8 &) ment (_S4 mEnt
?8 &) ments (_S5 mEnt|s
mEnt (_ m@nt
tor) me (nt m'E
C) mented m'EntId
@@ -3313,7 +3313,7 @@
_) mono m0noU
mon (opol m@n
mon (ox m0n
@) most(_$4 moUst
@) most(_S4 moUst
&) mouth (_ m@T
_) multi mVltI

@@ -3349,13 +3349,13 @@
.group n
n n
n) n
&ia) n (_$1 n
&ia) ns (_$2 nz
&ia) n (_S1 n
&ia) ns (_S2 nz
@) name (_ neIm
_) nano (P4 n,anoU
necessit n@sEsIt
&) ness (_$4i n@s
?8 &) ness (_$4i nEs
&) ness (_S4i n@s
?8 &) ness (_S4i nEs
@) n (cC N
@) n (ch n
n (c_ N
@@ -3723,8 +3723,8 @@
_) on (io Vn
ec) on (d @n
m) on (d_ @n
&C) oned (_$2v d
&C) oning (_$3v I2N
&C) oned (_S2v d
&C) oning (_S3v I2N
_) one w0n
_) once (_ w0ns
?6 _) one wVn
@@ -3801,9 +3801,9 @@
p) or (t o@
or (A o@r
&) or (ate 3r
@@) or (_$2d 3 // suffix
@@) or (_S2d 3 // suffix
&) or (_ 3
?8 @@) or (_$2d o@ // suffix
?8 @@) or (_S2d o@ // suffix
?8 &) or (_ o@
_c) or (@ O@
c) or (k O@
@@ -4150,7 +4150,7 @@
p (hole p
sym) pa p@
_) pico pi:koU
piece (_$5 pi:s
piece (_S5 pi:s
por (tray p%o@
// _) post (@@P4 p,oUst // prefix
pneu nju:
@@ -4489,10 +4489,10 @@
@) s (hill_ s
@) s (hous s
_) she' %Si:
&) ship (_$4 SIp
&) ships (_$5 SIps
&) shire (_$5 S@
?3 &) shire (_$5 Si@
&) ship (_S4 SIp
&) ships (_S5 SIps
&) shire (_S5 S@
?3 &) shire (_S5 Si@
sia (_ =Zi@
?3 sia (_ =Z@
ssia (_ S@
@@ -4530,29 +4530,29 @@
a) ssure S'U@
ea) s (y z
s (_ z
@) s (_$1 z
@) s (_S1 z
_BA) s (_ s
&se) s (_$1 I2z
&sse) s (_$2 I2z
&se) s (_S1 I2z
&sse) s (_S2 I2z
ss (_ s
sse (_ s
c) s (_ s
@ce) s (_$1 Iz
@ce) s (_S1 Iz
f) s (_ s
ng) s (_$1 z
ng) s (_S1 z
k) s (_ s
n) s (_$1 z
n) s (_S1 z
p) s (_ s
th) s (_ s
t) s (_$1 s
te) s (_$1 s
&c) s (_$1 s
&f) s (_$1 s
&k) s (_$1 s
&p) s (_$1 s
&pe) s (_$1 s
&th) s (_$1 s
&t) s (_$1 s
t) s (_S1 s
te) s (_S1 s
&c) s (_S1 s
&f) s (_S1 s
&k) s (_S1 s
&p) s (_S1 s
&pe) s (_S1 s
&th) s (_S1 s
&t) s (_S1 s
_ha) s (_ z

.group su
@@ -4629,7 +4629,7 @@
s) t (l
to (morr t@
_) to (nn tV
@) town (_$4 taUn
@) town (_S4 taUn
_) tri (A traI
_) trie traI
_) tri (CA traI
@@ -4999,7 +4999,7 @@
wh (ol h
m) w (ich_
B) wing (_ wIN
@) wise (_$4 waIz
@) wise (_S4 waIz
e) with (_ w'ID
with (C w%ID
with (A w%ID
@@ -5144,19 +5144,19 @@
E (BCe_ @
E (Cia 'i:
Ea (_ =i@
@@) Ed (_$2vei d
&C) Ed (_$2vei d
&c) Ed (_$2vei t
&d) Ed (_$2vei Id
&ch) Ed (_$2vei t
&k) Ed (_$2vei t
&@@om) Ed (_$2v d
&p) Ed (_$2vei t
&t) Ed (_$2vei Id
ur) Ed (_$1vi d
&x) Ed (_$2v t
@@) Ed (_S2vei d
&C) Ed (_S2vei d
&c) Ed (_S2vei t
&d) Ed (_S2vei Id
&ch) Ed (_S2vei t
&k) Ed (_S2vei t
&@@om) Ed (_S2v d
&p) Ed (_S2vei t
&t) Ed (_S2vei Id
ur) Ed (_S1vi d
&x) Ed (_S2v t
y) Ed (_ d
Edly (_$4e Idl%I
Edly (_S4e Idl%I
E (dia_ i:
E (dic_ i:
nak) E (d I
@@ -5200,21 +5200,21 @@
Er (C 3
Ery (_ @r%I
E (x_ E
&) Es (_$2e z
c) Es (_$2e I2z
c) E's (_$3e I2z
f) Es (_$2e s
g) Es (_$2e I2z
ch) Es (_$2e I2z
ph) Es (_$2e I2z
k) Es (_$2e s
p) Es (_$2e s
s) Es (_$2e I2z
s) E's (_$2e I2z
sh) Es (_$2e I2z
t) Es (_$2e s
x) Es (_$2 I2z
Cr) Es (_$2e @z
&) Es (_S2e z
c) Es (_S2e I2z
c) E's (_S3e I2z
f) Es (_S2e s
g) Es (_S2e I2z
ch) Es (_S2e I2z
ph) Es (_S2e I2z
k) Es (_S2e s
p) Es (_S2e s
s) Es (_S2e I2z
s) E's (_S2e I2z
sh) Es (_S2e I2z
t) Es (_S2e s
x) Es (_S2 I2z
Cr) Es (_S2e @z
Ese (_ i:z
E (sia 'i:
Esque 'Esk
@@ -5229,25 +5229,25 @@


.group '
's (_$2 z
f) 's (_$2 s
p) 's (_$2 s
t) 's (_$2 s
k) 's (_$2 s
se) 's (_$2 I2z
s) 's (_$2 I2z
ce) 's (_$2 I2z
ch) 's (_$2 I2z
och) 's (_$2 s
sh) 's (_$2 I2z
x) 's (_$2 I2z
z) 's (_$2 I2z
's (_S2 z
f) 's (_S2 s
p) 's (_S2 s
t) 's (_S2 s
k) 's (_S2 s
se) 's (_S2 I2z
s) 's (_S2 I2z
ce) 's (_S2 I2z
ch) 's (_S2 I2z
och) 's (_S2 s
sh) 's (_S2 I2z
x) 's (_S2 I2z
z) 's (_S2 I2z
6_) 's (_ I2z
16_) 's (_ z
're (_$3 @
've (_$3 v
'd (_$2 d
'll (_$3 @L
're (_S3 @
've (_S3 v
'd (_S2 d
'll (_S3 @L


.group 0xce // Greek letters

+ 2
- 1
dictsource/fr_list View File

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

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-10-24 Michel Such <[email protected]>
// Updated 2008-11-06 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -603,6 +603,7 @@ cancer kA~sEr
(chef d'oeuvres) chédeuvres $text
choeur kWr
cocus koky
couscous kuskus
dernier dE2rnjer2
éloquent ElokA~t2
fan f'an

+ 3
- 3
dictsource/ro_rules View File

@@ -176,9 +176,9 @@
i (A j

@) i (e_ j
&C) i (_N$1q i/
&) i (_N$1q i
&) i (-N$1q i // don't reduce to [I^] if a hyphen follows
&C) i (_NS1q i/
&) i (_NS1q i
&) i (-NS1q i // don't reduce to [I^] if a hyphen follows
ţ) i (-Că i
ţ) i (-Ci i


+ 123
- 66
phsource/compile_report View File

@@ -1,60 +1,62 @@
55 phoneme tables
57 phoneme tables
new total
base 100 100
base2 24 119
en 51 146
en_n 31 146
en_us 36 147
en_sc 39 148
en_rp 34 146
en_wm 30 146
en_wi 30 146
af 39 132
cy 29 126
de 33 127
eo 13 112
jbo 4 113
fi 40 131
fr 54 137
fr_ca 11 137
hi 51 137
ta 17 140
hu 23 116
nl 28 123
pl 18 113
sk 29 131
cs 6 131
hr 26 136
mk 3 137
sr 14 136
ru 39 131
it 17 122
la 21 118
es 9 120
es_la 1 120
pt 28 136
pt_pt 20 136
ro 36 143
el 8 119
grc 12 124
sv 25 122
no 28 126
is 33 126
vi 42 138
zhy 40 133
zh 65 150
sw 14 109
tr 18 124
ku 18 124
id 15 121
rw 15 126
ko 18 147
da 15 130
sq 23 128
ml 13 139
bn 59 145
ne 14 141
lv 26 121
base 101 101
base2 24 120
en 51 147
en_n 31 147
en_us 36 148
en_sc 39 149
en_rp 34 147
en_wm 30 147
en_wi 30 147
af 39 133
cy 29 127
de 33 128
eo 13 113
jbo 4 114
fi 40 132
fr 54 138
fr_ca 11 138
hi 52 139
ta 17 142
hu 23 117
nl 28 124
pl 18 114
sk 29 132
cs 6 132
hr 26 137
mk 3 138
sr 14 137
ru 39 132
it 17 123
la 21 119
es 9 121
es_la 1 121
pt 28 137
pt_pt 20 137
ro 36 144
el 8 120
grc 12 125
sv 25 123
no 28 127
is 33 127
vi 42 139
zhy 40 134
zh 65 151
sw 14 110
tr 18 125
ku 18 125
id 15 122
rw 15 127
ko 18 149
da 15 131
sq 23 129
ml 13 141
bn 59 147
ne 23 151
lv 28 123
hy 16 114
om 18 118

Data file Used by
b/b [b] base
@@ -579,7 +581,7 @@ r3/r_trill [R2] base
[R] sk
[r*] sr
[x] pt
[R] lv
[R2] lv
r3/r_trill2 [R] base
[r] cy
[R] hr
@@ -593,7 +595,7 @@ r3/r_trill.wav [R2] base
[R] sk
[r*] sr
[x] pt
[R] lv
[R2] lv
r3/r_u [(u)] base
r3/rx [*] base
[r/] base
@@ -607,6 +609,7 @@ r3/rx [*] base
[x] pt_pt
[*;] ro
[r#] is
[Q2] hy
r3/rz_cs [R^] sk
[R^/] sk
r3/@tap [**] base
@@ -712,6 +715,7 @@ ufric/s_ [s] base
[s#] pt
[z;] ro
[s2] is
[s2] lv
ufric/s! [s] base
[s2] fi
[s] fr
@@ -719,9 +723,11 @@ ufric/s! [s] base
[s] es
[s#] pt
[s2] is
[s2] lv
ufric/s_continue [s2] fi
[s2] hu
[s2] is
[s2] lv
ufric/sh [S] base
[S] fr
[s#] pt_pt
@@ -762,6 +768,8 @@ ufric/x_hr [x] base
[x] hr
ufric/x_sr [h] sr
[x] sr
ufric/xx3 [X] base
[Q] hy
ustop/c [c] base
ustop/k [k] base
[k] en
@@ -840,6 +848,7 @@ ustop/k_unasp [k] base
[k] sq
[k] bn
[k] lv
[k`] om
ustop/k_unasp_ [k] zh
ustop/null [?] base
ustop/p [p] base
@@ -853,7 +862,9 @@ ustop/p_ [p] base
[ph] hi
[ph] zh
[ph] bn
[ph] hy
ustop/p_asp [ph] hi
[ph] hy
ustop/percus10 [(X1] base
ustop/pl [p] base
[p] base2
@@ -869,6 +880,7 @@ ustop/pl [p] base
[p] bn
[ph] bn
[p] lv
[ph] hy
ustop/pr [p] base
[p] base2
[p] fi
@@ -880,6 +892,7 @@ ustop/pr [p] base
[p;] ro
[p] bn
[ph] bn
[ph] hy
ustop/p_unasp [p] base
[p] base2
[p] fi
@@ -894,6 +907,7 @@ ustop/p_unasp [p] base
[p] sq
[p] bn
[p] lv
[p`] om
ustop/p_unasp_ [p] base2
[p] fi
[p] hi
@@ -941,6 +955,7 @@ ustop/t_dnt [t] base
[t] sw
[t`] ko
[t] bn
[t`] om
ustop/t_dnt2 [t[] vi
ustop/t_hi [t] hi
[t] bn
@@ -963,6 +978,7 @@ ustop/ts [ts] base2
[z] zhy
[tsh] zh
[ts] lv
[ts] hy
ustop/tsh [tS] base
[c] zhy
ustop/tsh_ [tS] base
@@ -994,6 +1010,7 @@ ustop/ts_pzd2 [c] hi
[c] hu
[c`] ko
[c] bn
[c`] om
ustop/ts_pzd3 [tS;] hr
[dZ;] hr
ustop/t_sr [d] sr
@@ -1023,6 +1040,7 @@ vdiph2/ei_4 [eI] en_us
vdiph2/eo [eo] ro
vdiph2/e[u [e[u] ro
vdiph2/i@ [i@] en_n
[i@] hy
vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi
[ie] fi
@@ -1070,11 +1088,12 @@ vdiph/8u [oU] en_us
[ou] zh
vdiph/aae [aI] en_us
vdiph/aai [aai] zhy
[aI] ne
[ai] lv
vdiph/aai_2 [AI] af
[AY] cy
vdiph/aai_3 [ai] fi
vdiph/aau [au] fi
[au] lv
vdiph/aau_2 [aU] en_wi
[aU] de
[VU] nl
@@ -1096,7 +1115,7 @@ vdiph/ai [aI] base2
[aI] pt
[a:I] vi
[aI] id
[ai] lv
[aI] hy
vdiph/ai_2 [aI] cy
[aY] cy
vdiph/ai_3 [aI] no
@@ -1129,6 +1148,8 @@ vdiph/eei [EI] base2
[EI] de
[EI] nl
[EI] vi
[eI] ne
[eI] hy
vdiph/eei_2 [eI] eo
[ei] fi
[eI] id
@@ -1160,11 +1181,11 @@ vdiph/eu [eU] base2
[eU] sk
[eU] pt
[eU] vi
[eU] ne
vdiph/eu_2 [eu] fi
vdiph/&i [&i] fi
[aI] hi
[aI] bn
[aI] ne
vdiph/@i_2 [eI] af
[@I] cy
[@Y] cy
@@ -1182,6 +1203,7 @@ vdiph/oi [oI] base2
[oI] it
[OI] la
[oI] vi
[oI] ne
vdiph/oi_2 [oI] af
vdiph/ooi [OI] en
[OI] en_n
@@ -1198,8 +1220,10 @@ vdiph/ooi_3 [OI] en_rp
vdiph/ooi_4 [OI] en_us
vdiph/oou [oU] cs
[OU] grc
[au] lv
vdiph/ou [ou] fi
[ou] zhy
[oU] ne
vdiph/ou_2 [oU] sk
[oU] ro
vdiph/ou_3 [oU] is
@@ -1214,13 +1238,16 @@ vdiph/ui [uI] base2
[ui] fi
[uI] vi
[ui] zhy
[uI] ne
[ui] lv
vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy
[uY] cy
vdiph/Vi [@:I] vi
[VI] ne
vdiph/Vu [@U] af
[VU] ne
vdiph/Vu_2 [oU] en_wm
vdiph/Vu_3 [o:] nl
vdiph/Vu_4 [@U] vi
@@ -1282,6 +1309,7 @@ vnasal/u_n [u~] hi
[u~] bn
[u:~] bn
[u~] ne
vnasal/V_n [V~] ne
vnasal/W_n [E~] fr
[W~] fr
voc/bh [B] base
@@ -1298,6 +1326,7 @@ voc/Q_ [Q] base
[x2] pt
voc/Q_less [Q] nl
[x2] pt
voc/Q_ulv [Q] hy
voc/v [v] base
[v] fi
[v] fr
@@ -1374,6 +1403,7 @@ vowel/@ [@] base
[@4] hi
[@] ml
[@4] bn
[@] hy
vowel/@- [@-] base
[r*] hr
vowel/& [a] en_rp
@@ -1382,7 +1412,6 @@ vowel/& [a] en_rp
[&] sv
[&] bn
[&:] bn
[&:] lv
vowel/0 [0] en
[O] hi
[O] pt
@@ -1419,6 +1448,7 @@ vowel/8_2 [U] en_us
[8] sv
vowel/8_3 [eo] zhy
vowel/8_5 [8] ku
vowel/8_7 [@] lv
vowel/a [a] en_n
[aa] en_n
[a] en_wm
@@ -1444,7 +1474,7 @@ vowel/a# [a/] base2
[&/] pt
[a#] rw
[a/] rw
[&] lv
[a] om
vowel/a_2 [a] base2
[a] en_wi
[A:] en_wi
@@ -1472,6 +1502,7 @@ vowel/a_3 [a] en_sc
[a] is
[A] zh
[A] da
[a:] om
vowel/a#_3 [a2] en
[a2] en_n
[a2] en_us
@@ -1496,7 +1527,6 @@ vowel/a_5 [a:] ta
[a] tr
[a] sq
[a:] ml
[a] lv
vowel/a_6 [a] fr
[a2] fr
vowel/aa [a] fi
@@ -1504,6 +1534,9 @@ vowel/aa [a] fi
[A] no
[A:] no
[aa] zhy
[a] lv
[a:] lv
[a] hy
vowel/aa# [O] en_us
[0] en_wi
[a2] fi
@@ -1514,7 +1547,6 @@ vowel/aa_2 [A:] en
[A] zh
vowel/aa_3 [A:] af
[A] sq
[a:] lv
vowel/aa_4 [O:] en_us
[A:] sv
[O] vi
@@ -1535,8 +1567,10 @@ vowel/a_en [a] en
[A] fr
[a] pl
vowel/@_bck [@] hi
[@/] hi
[@] zh
[@] bn
[@/] ne
vowel/e [e] base2
[e:] en
[eI] en_n
@@ -1580,6 +1614,7 @@ vowel/e_3 [i] en_n
[e:] hu
[e] ku
vowel/e_5 [i] en_sc
vowel/e_6 [e] om
vowel/e_7 [e] sq
vowel/ee [E] en_n
[E] sv
@@ -1609,6 +1644,8 @@ vowel/ee_3 [&] af
vowel/ee_6 [&] sk
[E3] sv
[E] ku
[&] lv
[&:] lv
vowel/e_mid [E] en_rp
[e] jbo
[E] fr
@@ -1631,6 +1668,7 @@ vowel/e_mid [E] en_rp
[E] da
[E] bn
[e] lv
[e] hy
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1645,6 +1683,7 @@ vowel/e_mid2 [E] af
[e] tr
[E] ko
[e:] lv
[E] om
vowel/@_fnt [@] en_wi
[@2] en_wi
[@2] hr
@@ -1675,6 +1714,8 @@ vowel/i [i] base2
[i] ko
[i:] ml
[i] ne
[i] hy
[i:] om
vowel/i# [y:] cy
vowel/i_2 [i2] de
[i:] de
@@ -1726,6 +1767,7 @@ vowel/ii [I] en_n
[I] is
[i] zhy
[I] ku
[I] om
vowel/ii# [Y] cy
[Y] ru
[I] ku
@@ -1777,6 +1819,7 @@ vowel/@_low [3] en_rp
[V] bn
[@2] bn
[V] ne
[@/] ne
vowel/o [o] base2
[o:] en
[oU] en_n
@@ -1797,6 +1840,7 @@ vowel/o [o] base2
[o] ml
[o:] ml
[o] bn
[o] hy
vowel/o_2 [o:] cy
[o2] fr
[o:] hi
@@ -1820,6 +1864,7 @@ vowel/oe [W] en
[W] af
[W] de
[W] da
[W] hy
vowel/oe_2 [W] no
[W] tr
vowel/oe_4 [W] sv
@@ -1829,6 +1874,7 @@ vowel/o_mid [U@] en_rp
[o] hu
[o] tr
[o] ne
[o:] om
vowel/oo [O:] en_sc
[O] en_wi
[O:] en_wi
@@ -1869,6 +1915,7 @@ vowel/oo_4 [O] base2
[O:] hi
[O] it
[O] bn
[O] om
vowel/oo_5 [O] pl
[O] is
[O] sq
@@ -1906,6 +1953,7 @@ vowel/u [u:] en_wi
[u] ml
[u:] ml
[u] bn
[u:] om
vowel/u# [u:] en_sc
[Y] tr
vowel/u_2 [u1] fi
@@ -1951,6 +1999,7 @@ vowel/u_bck [u] base2
[u] sq
[u:] bn
[u] ne
[u] hy
vowel/u_bck2 [u:] la
vowel/u_fnt [u:] en_rp
vowel/uu [U] en
@@ -1974,8 +2023,10 @@ vowel/uu_bck [U] en_wi
[U] no
[u] zhy
[U] bn
[U] om
vowel/u_unr [u-] ko
vowel/V [3] en_sc
[V] ne
vowel/V_2 [V] en
[a] af
[V] ru
@@ -1985,7 +2036,6 @@ vowel/V_3 [V] en_rp
[V] hi
[V] ta
[V] bn
[V] ne
vowel/V_4 [V] en_sc
[@:] vi
[V] da
@@ -2032,6 +2082,9 @@ vowel/yy_4 [y] de
[y] hu
[y] grc
[y] is
[y] hy
vweak/@ [@#] om
vweak/a [a#] om
vwl_af/@ [@] af
vwl_af/I [I] af
vwl_af/r@ [@] af
@@ -2087,10 +2140,13 @@ vwl_fr/@R [x] pt_pt
vwl_fr/@R2 [R] fr_ca
vwl_fr/@R3 [R] fr
[r] fr
[Q2] hy
vwl_fr/@R4 [R] fr
[r] fr
[r2] fr
[Q2] hy
vwl_fr/@R5 [r] fr
[Q2] hy
vwl_fr/r_a [a] fr
[a2] fr
[wA] fr
@@ -2112,6 +2168,7 @@ vwl_no/u#2 [u-:] no
vwl_no/y# [Y:] no
vwl_no/y#y [Yy] no
vwl_ro/ii- [I^] ro
[I#] om
vwl_ro/li [I^] ro
vwl_ro/mi [I^] ru
[I^] ro

+ 6
- 0
phsource/ph_hindi View File

@@ -16,6 +16,12 @@ phoneme @
reduceto @- 0
endphoneme

phoneme @/
vowel starttype (@) endtype (@)
length 130
formants vowel/@_bck
endphoneme

phoneme V
vowel starttype (@) endtype (@)
length 130

+ 13
- 0
phsource/phonemes View File

@@ -1138,6 +1138,13 @@ phoneme x
switchvoicing Q
endphoneme

phoneme X
vls uvl frc
lengthmod 3
wave ufric/xx3
before _ ufric/xx3%70
endphoneme


phoneme h
vls glt apr
@@ -1325,3 +1332,9 @@ include ph_nepali

phonemetable lv base
include ph_latvian

phonemetable hy base
include ph_armenian_west

phonemetable om base
include ph_oromo

BIN
phsource/vdiph/aau View File


BIN
phsource/vdiph/vowelchart.png View File


BIN
phsource/vdiph2/vowelchart.png View File


BIN
phsource/vnasal/V_n View File


BIN
phsource/vnasal/vowelchart.png View File


BIN
phsource/vowel/8_7 View File


BIN
phsource/vowel/vowelchart.png View File


+ 5
- 0
src/compiledict.cpp View File

@@ -312,6 +312,11 @@ static char nullstring[] = {0};
break;
case 1:
if(c == '-')
{
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED;
c = ' ';
}
if(isspace2(c))
{
p[0] = 0; /* terminate english word */

+ 13
- 2
src/dictionary.cpp View File

@@ -2867,7 +2867,7 @@ const char *Translator::LookupDict2(const char *word, const char *word2, char *p
// don't use the contraction if any of the words are emphasized
for(ix=0; ix <= skipwords; ix++)
{
if((wtab != NULL) && (wtab[ix].flags & FLAG_EMPHASIZED))
if((wtab != NULL) && (wtab[ix].flags & FLAG_EMPHASIZED2))
{
condition_failed = 1;
}
@@ -2935,6 +2935,13 @@ const char *Translator::LookupDict2(const char *word, const char *word2, char *p
}
}

if(dictionary_flags2 & FLAG_HYPHENATED)
{
if(!(word_flags & FLAG_HYPHEN_AFTER))
{
continue;
}
}
if(dictionary_flags2 & FLAG_CAPITAL)
{
if(!(word_flags & FLAG_FIRST_UPPER))
@@ -3070,7 +3077,11 @@ int Translator::LookupDictList(char **wordptr, char *ph_out, unsigned int *flags
if(length > 0)
{
// found an abbreviation containing dots
nbytes = utf8_nbytes(word2);
nbytes = 0;
while(((c = word2[nbytes]) != 0) && (c != ' '))
{
nbytes++;
}
memcpy(&word[length],word2,nbytes);
word[length+nbytes] = 0;
found = LookupDict2(word, word2, ph_out, flags, end_flags, wtab);

+ 2
- 1
src/extras.cpp View File

@@ -126,7 +126,8 @@ int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events)

while((type = events->type) != 0)
{
fprintf(f_events,"%2d (%4d %4d) %5d %5d (%3d) ",type,events->unique_identifier,(int)events->user_data,events->audio_position,events->text_position,events->length);
fprintf(f_events,"%2d (%4d %4ld) %5d %5d (%3d) ",type,events->unique_identifier,(long)events->user_data,events->audio_position,events->text_position,events->length);

if((type==3) || (type==4))
fprintf(f_events,"'%s'\n",events->id.name);
else

+ 56
- 17
src/readclause.cpp View File

@@ -82,6 +82,12 @@ const unsigned short punct_chars[] = {',','.','?','!',':',';',
0x3001, // ideograph comma
0x3002, // ideograph period

0x0589, // Armenian period
0x055d, // Armenian comma
0x055c, // Armenian exclamation
0x055e, // Armenian question
0x055b, // Armenian emphasis mark

0xff01, // fullwidth exclamation
0xff0c, // fullwidth comma
0xff0e, // fullwidth period
@@ -106,6 +112,12 @@ static const unsigned int punct_attributes [] = { 0,
CLAUSE_COMMA+0x8000, // ideograph comma
CLAUSE_PERIOD+0x8000, // ideograph period

CLAUSE_PERIOD+0x8000, // Armenian period
CLAUSE_COMMA, // Armenian comma
CLAUSE_EXCLAMATION + PUNCT_IN_WORD, // Armenian exclamation
CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question
CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark

CLAUSE_EXCLAMATION+0x8000, // fullwidth
CLAUSE_COMMA+0x8000,
CLAUSE_PERIOD+0x8000,
@@ -1826,8 +1838,8 @@ MNEM_TAB xml_char_mnemonics[] = {
{NULL,-1}};


int Translator::ReadClause(FILE *f_in, char *buf, short *charix, int n_buf)
{//========================================================================
int Translator::ReadClause(FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type)
{//========================================================================================
/* Find the end of the current clause.
Write the clause into buf

@@ -1855,6 +1867,7 @@ int Translator::ReadClause(FILE *f_in, char *buf, short *charix, int n_buf)
int any_alnum = 0;
int self_closing;
int punct_data;
int stressed_word = 0;
const char *p;
wchar_t xml_buf[N_XML_BUF+1];

@@ -1872,6 +1885,7 @@ int Translator::ReadClause(FILE *f_in, char *buf, short *charix, int n_buf)
clause_upper_count = 0;
clause_lower_count = 0;
end_of_input = 0;
*tone_type = 0;

f_input = f_in; // for GetC etc

@@ -2110,25 +2124,35 @@ f_input = f_in; // for GetC etc
if(iswalnum(c1))
any_alnum = 1;
else
if(iswspace(c1))
{
char *p_word;
if(stressed_word)
{
stressed_word = 0;
c1 = CHAR_EMPHASIS; // indicate this word is strtessed
UngetC(c2);
c2 = ' ';
}

if(translator_name == 0x6a626f)
if(iswspace(c1))
{
// language jbo : lojban
// treat "i" or ".i" as end-of-sentence
p_word = &buf[ix-1];
if(p_word[0] == 'i')
char *p_word;
if(translator_name == 0x6a626f)
{
if(p_word[-1] == '.')
p_word--;
if(p_word[-1] == ' ')
// language jbo : lojban
// treat "i" or ".i" as end-of-sentence
p_word = &buf[ix-1];
if(p_word[0] == 'i')
{
ungot_word = "i ";
UngetC(c2);
p_word[0] = 0;
return(CLAUSE_PERIOD);
if(p_word[-1] == '.')
p_word--;
if(p_word[-1] == ' ')
{
ungot_word = "i ";
UngetC(c2);
p_word[0] = 0;
return(CLAUSE_PERIOD);
}
}
}
}
@@ -2218,7 +2242,17 @@ if(option_ssml) parag=1;

if((phoneme_mode==0) && (sayas_mode==0) && ((punct = lookupwchar(punct_chars,c1)) != 0))
{
if((iswspace(c2) || (punct_attributes[punct] & 0x8000) || IsBracket(c2) || (c2=='?') || (c2=='-') || Eof()))
punct_data = punct_attributes[punct];

if(punct_data & PUNCT_IN_WORD)
{
// Armenian punctuation inside a word
stressed_word = 1;
*tone_type = punct_data >> 12 & 0xf; // override the end-of-sentence type
continue;
}

if((iswspace(c2) || (punct_data & 0x8000) || IsBracket(c2) || (c2=='?') || (c2=='-') || Eof()))
{
// note: (c2='?') is for when a smart-quote has been replaced by '?'
buf[ix] = ' ';
@@ -2295,6 +2329,11 @@ if(option_ssml) parag=1;
return(CLAUSE_NONE);
}
}

if(stressed_word)
{
ix += utf8_out(CHAR_EMPHASIS, &buf[ix]);
}
buf[ix] = ' ';
buf[ix+1] = 0;
return(CLAUSE_EOF); // end of file

+ 4
- 1
src/setlengths.cpp View File

@@ -542,7 +542,10 @@ void Translator::CalcLengths()
if(end_of_clause == 2)
{
// this is the last syllable in the clause, lengthen it - more for short vowels
length_mod = length_mod * (256 + (280 - p->ph->std_length)/3)/256;
len = p->ph->std_length;
if(langopts.stress_flags & 0x40000)
len=200; // don't lengthen short vowels more than long vowels at end-of-clause
length_mod = length_mod * (256 + (280 - len)/3)/256;
}

if(p->type != phVOWEL)

+ 2
- 2
src/speak_lib.cpp View File

@@ -517,9 +517,9 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char
ep->text_position = char_position & 0xffff;
ep->length = char_position >> 24;
time = (double(count_samples + (out_ptr - out_start)/2)*1000.0)/samplerate;
time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate;
ep->audio_position = int(time);
ep->sample = (count_samples + (out_ptr - out_start)/2);
ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2);
SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start);
SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n",

+ 7
- 0
src/synth_mbrola.cpp View File

@@ -123,6 +123,8 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int
char path[sizeof(path_home)+15];

mbrola_name[0] = 0;
mbrola_delay = 0;

if(mbrola_voice == NULL)
{
samplerate = samplerate_native;
@@ -193,6 +195,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int
else
SetParameter(espeakVOICETYPE,1,0);
strcpy(mbrola_name,mbrola_voice);
mbrola_delay = 3800; // improve synchronization of events
return(EE_OK);
} // end of LoadMbrolaTable

@@ -602,6 +605,10 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola)
else
len = (80 * speed_factor2)/256;

#ifdef USE_MBROLA_LIB
MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic);
#endif

sprintf(buf,"%s\t",WordToString(name));
strcat(mbr_buf,buf);


+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.39.14 02.Nov.08";
const char *version_string = "1.39.18 06.Nov.08";
const int version_phdata = 0x013900;

int option_device_number = -1;

+ 1
- 0
src/synthesize.cpp View File

@@ -42,6 +42,7 @@ static void SmoothSpect(void);
int n_phoneme_list=0;
PHONEME_LIST phoneme_list[N_PHONEME_LIST];

int mbrola_delay;
char mbrola_name[20];

int speed_factor1;

+ 1
- 0
src/synthesize.h View File

@@ -220,6 +220,7 @@ extern int wavefile_amp2;
extern int vowel_transition[4];
extern int vowel_transition0, vowel_transition1;

extern int mbrola_delay;
extern char mbrola_name[20];

// from synthdata file

+ 19
- 2
src/tr_languages.cpp View File

@@ -45,6 +45,7 @@
// start of unicode pages for character sets
#define OFFSET_GREEK 0x380
#define OFFSET_CYRILLIC 0x420
#define OFFSET_ARMENIAN 0x530
#define OFFSET_DEVANAGARI 0x900
#define OFFSET_BENGALI 0x980
#define OFFSET_TAMIL 0xb80
@@ -431,6 +432,22 @@ SetLengthMods(tr,3); // all equal
}
break;

case L('h','y'): // Armenian
{
static const char hy_vowels[] = {0x31, 0x35, 0x37, 0x38, 0x3b, 0x48, 0x55, 0};
static const char hy_consonants[] = {0x32,0x33,0x34,0x36,0x39,0x3a,0x3c,0x3d,0x3e,0x3f,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
tr = new Translator();
tr->langopts.stress_rule = 3; // default stress on final syllable

tr->letter_bits_offset = OFFSET_ARMENIAN;
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBits(tr,LETTERGP_A,hy_vowels);
SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 4;
}
break;

case L('i','d'): // Indonesian
{
static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240};
@@ -563,8 +580,8 @@ SetLengthMods(tr,3); // all equal
tr->langopts.stress_rule = 0;
tr->langopts.spelling_stress = 1;
tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.numbers = 0x409;
tr->langopts.stress_flags = 0x16;
tr->langopts.numbers = 0x409 + 0x8000 + 0x10000;
tr->langopts.stress_flags = 0x16 + 0x40000;
}
break;


+ 16
- 3
src/translate.cpp View File

@@ -1179,13 +1179,13 @@ strcpy(phonemes2,phonemes);
dictionary_flags[0] &= ~FLAG_PAUSE1;
}

if(wflags & FLAG_EMPHASIZED)
if(wflags & FLAG_EMPHASIZED2)
{
// A word is indicated in the source text as stressed
// Give it stress level 6 (for the intonation module)
ChangeWordStress(this,word_phonemes,6);

// if(!(wflags & FLAG_LAST_WORD)) // ?? omit pre-pause if it's the last word in the sentence?
if(wflags & FLAG_EMPHASIZED)
dictionary_flags[0] |= FLAG_PAUSE1; // precede by short pause
}
else
@@ -2030,6 +2030,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_

int terminator;
int tone;
int tone2;

p_textinput = (char *)vp_input;
p_wchar_input = (wchar_t *)vp_input;
@@ -2044,12 +2045,17 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_

for(ix=0; ix<N_TR_SOURCE; ix++)
charix[ix] = 0;
terminator = translator->ReadClause(f_text,source,charix,N_TR_SOURCE);
terminator = translator->ReadClause(f_text, source, charix, N_TR_SOURCE, &tone2);

charix[N_TR_SOURCE] = count_characters;

clause_pause = (terminator & 0xfff) * 10; // mS
tone = (terminator >> 12) & 0xf;
if(tone2 != 0)
{
// override the tone type
tone = tone2;
}

for(p=source; *p != 0; p++)
{
@@ -2248,6 +2254,13 @@ if((c == '/') && (langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(prev_ou
c = '\'';
}

if(c == CHAR_EMPHASIS)
{
// this character is a marker that the previous word is the focus of the clause
c = ' ';
word_flags |= FLAG_FOCUS;
}

c = TranslateChar(&source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function
if(c == 8)
continue; // ignore this character

+ 11
- 4
src/translate.h View File

@@ -76,7 +76,8 @@
#define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */
#define FLAG_ALLCAPS 0x400 // only if the word is all capitals
#define FLAG_ACCENT 0x800 // character name is base-character name + accent name

#define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2
#define BITNUM_FLAG_HYPHENATED 0x2c


// wordflags, flags in source word
@@ -86,15 +87,16 @@
#define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */
#define FLAG_PHONEMES 0x8 /* word is phonemes */
#define FLAG_LAST_WORD 0x10 /* last word in clause */
//#define FLAG_SPELLING 0x20 // speak the word as individual letters
#define FLAG_EMBEDDED 0x40 /* word is preceded by embedded commands */
#define FLAG_HYPHEN 0x80
#define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space
#define FLAG_FIRST_WORD 0x200 // first word in clause
#define FLAG_FOCUS 0x400 // the focus word of a clause
#define FLAG_EMPHASIZED 0x800
#define FLAG_EMPHASIZED2 0xc00 // FLAG_FOCUS | FLAG_EMPHASIZED
#define FLAG_DONT_SWITCH_TRANSLATOR 0x1000
#define FLAG_SUFFIX_REMOVED 0x2000
#define FLAG_HYPHEN_AFTER 0x4000
#define FLAG_EMPHASIZED 0x8000

#define FLAG_NO_TRACE 0x10000 // passed to TranslateRules() to suppress dictionary lookup printout
#define FLAG_NO_PREFIX 0x20000
@@ -161,8 +163,10 @@
// bits 0-7 pause x 10mS, bits 12-14 intonation type,
// bit 19=sentence, bit 18=clause, bits 17=voice change
// bit 16 used to distinguish otherwise identical types
// bit 20= punctuation character can be inside a word (Armenian)
#define CLAUSE_BIT_SENTENCE 0x80000
#define CLAUSE_BIT_VOICE 0x20000
#define PUNCT_IN_WORD 0x100000

#define CLAUSE_NONE 0 + 0x04000
#define CLAUSE_PARAGRAPH 70 + 0x80000
@@ -187,6 +191,8 @@
#define SAYAS_DIGITS 0x40 // + number of digits
#define SAYAS_DIGITS1 0xc1

#define CHAR_EMPHASIS 0x0530 // this is an unused character code

// Rule:
// [4] [match] [1 pre] [2 post] [3 phonemes] 0
// match 1 pre 2 post 0 - use common phoneme string
@@ -306,6 +312,7 @@ typedef struct {
// bit15= Give stress to the first unstressed syllable
// bit16= Don't diminish consecutive syllables within a word.
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
// bit18= don't lengthen short vowels more than long vowels at end-of-clause

int stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable
@@ -435,7 +442,7 @@ private:
void MakePhonemeList(int post_pause, int new_sentence);
int SubstitutePhonemes(PHONEME_LIST2 *plist_out);

int ReadClause(FILE *f_in, char *buf, short *charix, int n_buf);
int ReadClause(FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type);
int AnnouncePunctuation(int c1, int c2, char *buf, int ix);

const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab);

Loading…
Cancel
Save