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

fu) ch (s k fu) ch (s k
äu) ch C äu) ch C
eu) ch C eu) ch C
C) chen (_$4 C@n
C) chen (_S4 C@n
ä) chen (_ C@n ä) chen (_ C@n
e) chen (_ C@n e) chen (_ C@n
ü) chen (_ C@n ü) chen (_ C@n
k k k k
k) k k) k


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


kolleg k%Ole:g kolleg k%Ole:g
_) komme (C@ k%OmE _) komme (C@ k%OmE
_) leit (@P4 l'aIt _) leit (@P4 l'aIt
_) lern (@@P4 l'E*n _) lern (@@P4 l'E*n
_) lexi (@ lEksi: _) 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: @) lo (gisch l'o:


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

+ 26
- 15
dictsource/dict_phonemes View File



Dictionary ne_dict 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 - : b c ch d d. f
g h H j J k kh l g h H j J k kh l
iU o O Oa oI oU u uI iU o O Oa oI oU u uI
y Y yI yU 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 Dictionary ru_dict
(u) ; C f h j k kh (u) ; C f h j k kh
l m n N p ph r s l m n N p ph r s
s. S; t th ts ts. ts. tS; s. S; t th ts ts. ts. tS;
tS; tsh v w x z.
tS; tsh v w x X z.




Dictionary zhy_dict Dictionary zhy_dict
i: ie iu o o: oi u u: i: ie iu o o: oi u u:
ui uo 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

Pyrenees pIr@n'i:z Pyrenees pIr@n'i:z
Qatar katA@ Qatar katA@
Quebec kwI2bEk Quebec kwI2bEk
Raleigh rA:lI
Reno ri:noU Reno ri:noU
Sahel sA:h'El Sahel sA:h'El
Saigon saIg'0n Saigon saIg'0n

+ 196
- 196
dictsource/en_rules View File

ae i: ae i:
ae (val 'i: ae (val 'i:
aea i@ aea i@
@) aed (_$2 d
@) aed (_S2 d
_) ae (on i: _) ae (on i:
_) aer (o e@ _) aer (o e@
ae (l eI ae (l eI
ab (ular 'ab ab (ular 'ab
b) ab (y eIb b) ab (y eIb
b) ab (yl ab b) ab (yl ab
&) able (_$4iev @b@L // suffix
&) able (_S4iev @b@L // suffix
&c) able (_ @b@L &c) able (_ @b@L
@ct) 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 .group ac
_) ac (@ a2k _) ac (@ a2k
alz alt|s alz alt|s
&) al (_ @L &) al (_ @L
?8 &) al (_ a2l ?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 inst) al (_ O:l
&) al (d @L &) al (d @L
b) al (d O:l b) al (d O:l
_) anom a2n0m _) anom a2n0m
&) an (_ @n &) an (_ @n
?8 &) an (_ a2n ?8 &) an (_ a2n
@u) an (_$1 n
@i) an (_$1 n
@u) an (_S1 n
@i) an (_S1 n
Cc) an (_ an Cc) an (_ an
l) an (_ an l) an (_ an
ll) an (_ @n ll) an (_ @n
d) ang (er eIndZ d) ang (er eIndZ
r) ang (e eIndZ r) ang (e eIndZ
r) anging eIndZIN r) anging eIndZIN
r) anged ($1 d
r) anged (S1 d
perm) an @n perm) an @n
ang (er aNg ang (er aNg
m) anoeu (v @nu: m) anoeu (v @nu:
su) bt (l t su) bt (l t
de) bt t de) bt t
_) bug (le bju:g _) bug (le bju:g
@) bury (_$4i br%I
?3 @) bury (_$4i bEr%I
@) bury (_S4i br%I
?3 @) bury (_S4i bEr%I
_) by baI _) by baI




d d d d
d (d d (d
_) d' (AP2 d _) d' (AP2 d
@@e) d (_$1 d // suffix
@@e) d (_S1 d // suffix
ddh d ddh d
dj dZ dj dZ
dg (_ dZ dg (_ dZ
e (quiv %I e (quiv %I
e'er e@ e'er e@
h) e (sion 'i: 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 &Cr) e's (_ @z
@) e (tio i: @) e (tio i:
discr) e (tion E discr) e (tion E
_s) ew u: _s) ew u:
_s) ew (_ oU _s) ew (_ oU
e (work e (work
eway (_$3 weI
eway (_S3 weI
@) ez (_ =Ez @) ez (_ =Ez


.group ea .group ea
C) ea (ven E C) ea (ven E


.group ed .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 @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 yw) ed (_ Ed
@x) ed (_$2vi t
y) ed (_$2v d
@x) ed (_S2vi t
y) ed (_S2v d
edly (_ Idl%I edly (_ Idl%I
c) ed (e_ 'i:d c) ed (e_ 'i:d
p) ed (e_ i:d p) ed (e_ i:d


.group er .group er
&) er 3 &) 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 &) er (_ 3
?8 &) er (_ a2 // (temporary because [3] -> [a2] is only for word-final ?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 all) er (_ 3
mb) er (_ 3 mb) er (_ 3
lin) er (_S1 3 lin) er (_S1 3
err (_ 3: err (_ 3:


.group es .group es
&) es (_$1i z
&) es (_S1i z
ese (_ i:z ese (_ i:z
@n) 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 (carp I2s
es (cape %Es es (cape %Es
es (capi %Es es (capi %Es
_) eth (a ET _) eth (a ET
eth (ic ET eth (ic ET
eth (y i:T eth (y i:T
@C) eth (_$3e @T
@C) eth (_S3e @T
etta (_ 'Et@ etta (_ 'Et@
ette (_ 'Et ette (_ 'Et
pal) ett (e @t pal) ett (e @t
A) han (_ h'an // places A) han (_ h'an // places
ha (st heI ha (st heI
_) he' %hi: _) he' %hi:
@) head (_$4 hEd
@) head (_S4 hEd
heir e@ heir e@
_) hetero hEtroU _) hetero hEtroU
K) hl L K) hl L
&) hold (_$4 hoUld
&) hold (_S4 hoUld
holme hoUm holme hoUm
_) homeo hoUmi:oU _) homeo hoUmi:oU
_) homo (s h,oUmoU _) homo (s h,oUmoU
_) horri h0rI _) horri h0rI
_) horse hO@s _) horse hO@s
_) house (@ haUs _) house (@ haUs
house (_$5 haUs
houses (_$6 haUzI2z
house (_S5 haUs
houses (_S6 haUzI2z


.group i .group i
i I i I
_) i (o aI _) i (o aI
&) ial (_ =I2@l &) ial (_ =I2@l
@) ibab aIb@b @) ibab aIb@b
@) ible (_$4ev @b@L
@) ibly (_$4efv @bl%I
@) ible (_S4ev @b@L
@) ibly (_S4efv @bl%I
i (bilit I i (bilit I
l) i (bel aI l) i (bel aI
b) i (ble_ aI b) i (ble_ aI
is (o_ aIz is (o_ aIz
ise (_ aIz ise (_ aIz
iser (_ aIz3 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 is (er+_ aIz
iz (er_ aIz iz (er_ aIz
prAm) is Is prAm) is Is
.group ie .group ie
ie I ie I
ie (_ I ie (_ I
ied (_$2i d // suffix
ied (_S2i d // suffix
ie (c aI ie (c aI
ie (ce i: ie (ce i:
ie (_ aI ie (_ aI
ie (v i: ie (v i:
iew (_ ju: iew (_ ju:
iew ju: iew ju:
ies (_$2i z
ies (_S2i z
spec) ies (_ i:z spec) ies (_ i:z
ser) ies (_ i:z ser) ies (_ i:z
_ar) ies (_ i:z _ar) ies (_ i:z
?3 s) im (ult aIm ?3 s) im (ult aIm


.group in .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 Br) ing (_ IN


?7 &) in (_ @n ?7 &) in (_ @n
_) llan L%an _) llan L%an
l (E l l (E l
lle (_ l lle (_ l
@@o) lled (_$3v d
@@) lled (_$3v d
@@o) lled (_S3v d
@@) lled (_S3v d
B) l (_ @L B) l (_ @L
w) l (_ l w) l (_ l
r) l (_ l r) l (_ l
?3 _) lo (gK lO ?3 _) lo (gK lO
@) lo (gous =l@ @) lo (gous =l@
lu (na lu: lu (na lu:
@) ly (_$2i l%I
@l) ly (_$2 I2
@) ly (_S2i l%I
@l) ly (_S2 I2
f) ly (_ laI 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 multip) ly laI
&p) ly (_$2 l%I
&p) ly (_S2 l%I
p) ly (_ laI p) ly (_ laI
_) ly (d lI _) ly (d lI


@t) le (B@ @L @t) le (B@ @L
tt) le (@ @-l tt) le (@ @-l
&C) le (ss 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 .group m
m m m m
_) mn n _) mn n
&B) me (_ m%I &B) me (_ m%I
@) men (_ mEn @) 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 mEnt (_ m@nt
tor) me (nt m'E tor) me (nt m'E
C) mented m'EntId C) mented m'EntId
_) mono m0noU _) mono m0noU
mon (opol m@n mon (opol m@n
mon (ox m0n mon (ox m0n
@) most(_$4 moUst
@) most(_S4 moUst
&) mouth (_ m@T &) mouth (_ m@T
_) multi mVltI _) multi mVltI


.group n .group n
n n n n
n) n n) n
&ia) n (_$1 n
&ia) ns (_$2 nz
&ia) n (_S1 n
&ia) ns (_S2 nz
@) name (_ neIm @) name (_ neIm
_) nano (P4 n,anoU _) nano (P4 n,anoU
necessit n@sEsIt necessit n@sEsIt
&) ness (_$4i n@s
?8 &) ness (_$4i nEs
&) ness (_S4i n@s
?8 &) ness (_S4i nEs
@) n (cC N @) n (cC N
@) n (ch n @) n (ch n
n (c_ N n (c_ N
_) on (io Vn _) on (io Vn
ec) on (d @n ec) on (d @n
m) 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 _) one w0n
_) once (_ w0ns _) once (_ w0ns
?6 _) one wVn ?6 _) one wVn
p) or (t o@ p) or (t o@
or (A o@r or (A o@r
&) or (ate 3r &) or (ate 3r
@@) or (_$2d 3 // suffix
@@) or (_S2d 3 // suffix
&) or (_ 3 &) or (_ 3
?8 @@) or (_$2d o@ // suffix
?8 @@) or (_S2d o@ // suffix
?8 &) or (_ o@ ?8 &) or (_ o@
_c) or (@ O@ _c) or (@ O@
c) or (k O@ c) or (k O@
p (hole p p (hole p
sym) pa p@ sym) pa p@
_) pico pi:koU _) pico pi:koU
piece (_$5 pi:s
piece (_S5 pi:s
por (tray p%o@ por (tray p%o@
// _) post (@@P4 p,oUst // prefix // _) post (@@P4 p,oUst // prefix
pneu nju: pneu nju:
@) s (hill_ s @) s (hill_ s
@) s (hous s @) s (hous s
_) she' %Si: _) 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@ sia (_ =Zi@
?3 sia (_ =Z@ ?3 sia (_ =Z@
ssia (_ S@ ssia (_ S@
a) ssure S'U@ a) ssure S'U@
ea) s (y z ea) s (y z
s (_ z s (_ z
@) s (_$1 z
@) s (_S1 z
_BA) s (_ s _BA) s (_ s
&se) s (_$1 I2z
&sse) s (_$2 I2z
&se) s (_S1 I2z
&sse) s (_S2 I2z
ss (_ s ss (_ s
sse (_ s sse (_ s
c) s (_ s c) s (_ s
@ce) s (_$1 Iz
@ce) s (_S1 Iz
f) s (_ s f) s (_ s
ng) s (_$1 z
ng) s (_S1 z
k) s (_ s k) s (_ s
n) s (_$1 z
n) s (_S1 z
p) s (_ s p) s (_ s
th) 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 _ha) s (_ z


.group su .group su
s) t (l s) t (l
to (morr t@ to (morr t@
_) to (nn tV _) to (nn tV
@) town (_$4 taUn
@) town (_S4 taUn
_) tri (A traI _) tri (A traI
_) trie traI _) trie traI
_) tri (CA traI _) tri (CA traI
wh (ol h wh (ol h
m) w (ich_ m) w (ich_
B) wing (_ wIN B) wing (_ wIN
@) wise (_$4 waIz
@) wise (_S4 waIz
e) with (_ w'ID e) with (_ w'ID
with (C w%ID with (C w%ID
with (A w%ID with (A w%ID
E (BCe_ @ E (BCe_ @
E (Cia 'i: E (Cia 'i:
Ea (_ =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 y) Ed (_ d
Edly (_$4e Idl%I
Edly (_S4e Idl%I
E (dia_ i: E (dia_ i:
E (dic_ i: E (dic_ i:
nak) E (d I nak) E (d I
Er (C 3 Er (C 3
Ery (_ @r%I Ery (_ @r%I
E (x_ E 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 Ese (_ i:z
E (sia 'i: E (sia 'i:
Esque 'Esk Esque 'Esk




.group ' .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 6_) 's (_ I2z
16_) 's (_ z 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 .group 0xce // Greek letters

+ 2
- 1
dictsource/fr_list View File



// 2006-11-18 Gilles Casse <[email protected]> // 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. // * Numbers, a few abbreviations and exceptions.
// //
(chef d'oeuvres) chédeuvres $text (chef d'oeuvres) chédeuvres $text
choeur kWr choeur kWr
cocus koky cocus koky
couscous kuskus
dernier dE2rnjer2 dernier dE2rnjer2
éloquent ElokA~t2 éloquent ElokA~t2
fan f'an fan f'an

+ 3
- 3
dictsource/ro_rules View File

i (A j i (A j


@) i (e_ 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 (-Că i
ţ) i (-Ci i ţ) i (-Ci i



+ 123
- 66
phsource/compile_report View File

55 phoneme tables
57 phoneme tables
new total 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 Data file Used by
b/b [b] base b/b [b] base
[R] sk [R] sk
[r*] sr [r*] sr
[x] pt [x] pt
[R] lv
[R2] lv
r3/r_trill2 [R] base r3/r_trill2 [R] base
[r] cy [r] cy
[R] hr [R] hr
[R] sk [R] sk
[r*] sr [r*] sr
[x] pt [x] pt
[R] lv
[R2] lv
r3/r_u [(u)] base r3/r_u [(u)] base
r3/rx [*] base r3/rx [*] base
[r/] base [r/] base
[x] pt_pt [x] pt_pt
[*;] ro [*;] ro
[r#] is [r#] is
[Q2] hy
r3/rz_cs [R^] sk r3/rz_cs [R^] sk
[R^/] sk [R^/] sk
r3/@tap [**] base r3/@tap [**] base
[s#] pt [s#] pt
[z;] ro [z;] ro
[s2] is [s2] is
[s2] lv
ufric/s! [s] base ufric/s! [s] base
[s2] fi [s2] fi
[s] fr [s] fr
[s] es [s] es
[s#] pt [s#] pt
[s2] is [s2] is
[s2] lv
ufric/s_continue [s2] fi ufric/s_continue [s2] fi
[s2] hu [s2] hu
[s2] is [s2] is
[s2] lv
ufric/sh [S] base ufric/sh [S] base
[S] fr [S] fr
[s#] pt_pt [s#] pt_pt
[x] hr [x] hr
ufric/x_sr [h] sr ufric/x_sr [h] sr
[x] sr [x] sr
ufric/xx3 [X] base
[Q] hy
ustop/c [c] base ustop/c [c] base
ustop/k [k] base ustop/k [k] base
[k] en [k] en
[k] sq [k] sq
[k] bn [k] bn
[k] lv [k] lv
[k`] om
ustop/k_unasp_ [k] zh ustop/k_unasp_ [k] zh
ustop/null [?] base ustop/null [?] base
ustop/p [p] base ustop/p [p] base
[ph] hi [ph] hi
[ph] zh [ph] zh
[ph] bn [ph] bn
[ph] hy
ustop/p_asp [ph] hi ustop/p_asp [ph] hi
[ph] hy
ustop/percus10 [(X1] base ustop/percus10 [(X1] base
ustop/pl [p] base ustop/pl [p] base
[p] base2 [p] base2
[p] bn [p] bn
[ph] bn [ph] bn
[p] lv [p] lv
[ph] hy
ustop/pr [p] base ustop/pr [p] base
[p] base2 [p] base2
[p] fi [p] fi
[p;] ro [p;] ro
[p] bn [p] bn
[ph] bn [ph] bn
[ph] hy
ustop/p_unasp [p] base ustop/p_unasp [p] base
[p] base2 [p] base2
[p] fi [p] fi
[p] sq [p] sq
[p] bn [p] bn
[p] lv [p] lv
[p`] om
ustop/p_unasp_ [p] base2 ustop/p_unasp_ [p] base2
[p] fi [p] fi
[p] hi [p] hi
[t] sw [t] sw
[t`] ko [t`] ko
[t] bn [t] bn
[t`] om
ustop/t_dnt2 [t[] vi ustop/t_dnt2 [t[] vi
ustop/t_hi [t] hi ustop/t_hi [t] hi
[t] bn [t] bn
[z] zhy [z] zhy
[tsh] zh [tsh] zh
[ts] lv [ts] lv
[ts] hy
ustop/tsh [tS] base ustop/tsh [tS] base
[c] zhy [c] zhy
ustop/tsh_ [tS] base ustop/tsh_ [tS] base
[c] hu [c] hu
[c`] ko [c`] ko
[c] bn [c] bn
[c`] om
ustop/ts_pzd3 [tS;] hr ustop/ts_pzd3 [tS;] hr
[dZ;] hr [dZ;] hr
ustop/t_sr [d] sr ustop/t_sr [d] sr
vdiph2/eo [eo] ro vdiph2/eo [eo] ro
vdiph2/e[u [e[u] ro vdiph2/e[u [e[u] ro
vdiph2/i@ [i@] en_n vdiph2/i@ [i@] en_n
[i@] hy
vdiph2/i@_2 [i@] en_wm vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi vdiph2/ie [i@] en_wi
[ie] fi [ie] fi
[ou] zh [ou] zh
vdiph/aae [aI] en_us vdiph/aae [aI] en_us
vdiph/aai [aai] zhy vdiph/aai [aai] zhy
[aI] ne
[ai] lv
vdiph/aai_2 [AI] af vdiph/aai_2 [AI] af
[AY] cy [AY] cy
vdiph/aai_3 [ai] fi vdiph/aai_3 [ai] fi
vdiph/aau [au] fi vdiph/aau [au] fi
[au] lv
vdiph/aau_2 [aU] en_wi vdiph/aau_2 [aU] en_wi
[aU] de [aU] de
[VU] nl [VU] nl
[aI] pt [aI] pt
[a:I] vi [a:I] vi
[aI] id [aI] id
[ai] lv
[aI] hy
vdiph/ai_2 [aI] cy vdiph/ai_2 [aI] cy
[aY] cy [aY] cy
vdiph/ai_3 [aI] no vdiph/ai_3 [aI] no
[EI] de [EI] de
[EI] nl [EI] nl
[EI] vi [EI] vi
[eI] ne
[eI] hy
vdiph/eei_2 [eI] eo vdiph/eei_2 [eI] eo
[ei] fi [ei] fi
[eI] id [eI] id
[eU] sk [eU] sk
[eU] pt [eU] pt
[eU] vi [eU] vi
[eU] ne
vdiph/eu_2 [eu] fi vdiph/eu_2 [eu] fi
vdiph/&i [&i] fi vdiph/&i [&i] fi
[aI] hi [aI] hi
[aI] bn [aI] bn
[aI] ne
vdiph/@i_2 [eI] af vdiph/@i_2 [eI] af
[@I] cy [@I] cy
[@Y] cy [@Y] cy
[oI] it [oI] it
[OI] la [OI] la
[oI] vi [oI] vi
[oI] ne
vdiph/oi_2 [oI] af vdiph/oi_2 [oI] af
vdiph/ooi [OI] en vdiph/ooi [OI] en
[OI] en_n [OI] en_n
vdiph/ooi_4 [OI] en_us vdiph/ooi_4 [OI] en_us
vdiph/oou [oU] cs vdiph/oou [oU] cs
[OU] grc [OU] grc
[au] lv
vdiph/ou [ou] fi vdiph/ou [ou] fi
[ou] zhy [ou] zhy
[oU] ne
vdiph/ou_2 [oU] sk vdiph/ou_2 [oU] sk
[oU] ro [oU] ro
vdiph/ou_3 [oU] is vdiph/ou_3 [oU] is
[ui] fi [ui] fi
[uI] vi [uI] vi
[ui] zhy [ui] zhy
[uI] ne
[ui] lv [ui] lv
vdiph/u-i [yI] vi vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy vdiph/ui_3 [uI] cy
[uY] cy [uY] cy
vdiph/Vi [@:I] vi vdiph/Vi [@:I] vi
[VI] ne
vdiph/Vu [@U] af vdiph/Vu [@U] af
[VU] ne
vdiph/Vu_2 [oU] en_wm vdiph/Vu_2 [oU] en_wm
vdiph/Vu_3 [o:] nl vdiph/Vu_3 [o:] nl
vdiph/Vu_4 [@U] vi vdiph/Vu_4 [@U] vi
[u~] bn [u~] bn
[u:~] bn [u:~] bn
[u~] ne [u~] ne
vnasal/V_n [V~] ne
vnasal/W_n [E~] fr vnasal/W_n [E~] fr
[W~] fr [W~] fr
voc/bh [B] base voc/bh [B] base
[x2] pt [x2] pt
voc/Q_less [Q] nl voc/Q_less [Q] nl
[x2] pt [x2] pt
voc/Q_ulv [Q] hy
voc/v [v] base voc/v [v] base
[v] fi [v] fi
[v] fr [v] fr
[@4] hi [@4] hi
[@] ml [@] ml
[@4] bn [@4] bn
[@] hy
vowel/@- [@-] base vowel/@- [@-] base
[r*] hr [r*] hr
vowel/& [a] en_rp vowel/& [a] en_rp
[&] sv [&] sv
[&] bn [&] bn
[&:] bn [&:] bn
[&:] lv
vowel/0 [0] en vowel/0 [0] en
[O] hi [O] hi
[O] pt [O] pt
[8] sv [8] sv
vowel/8_3 [eo] zhy vowel/8_3 [eo] zhy
vowel/8_5 [8] ku vowel/8_5 [8] ku
vowel/8_7 [@] lv
vowel/a [a] en_n vowel/a [a] en_n
[aa] en_n [aa] en_n
[a] en_wm [a] en_wm
[&/] pt [&/] pt
[a#] rw [a#] rw
[a/] rw [a/] rw
[&] lv
[a] om
vowel/a_2 [a] base2 vowel/a_2 [a] base2
[a] en_wi [a] en_wi
[A:] en_wi [A:] en_wi
[a] is [a] is
[A] zh [A] zh
[A] da [A] da
[a:] om
vowel/a#_3 [a2] en vowel/a#_3 [a2] en
[a2] en_n [a2] en_n
[a2] en_us [a2] en_us
[a] tr [a] tr
[a] sq [a] sq
[a:] ml [a:] ml
[a] lv
vowel/a_6 [a] fr vowel/a_6 [a] fr
[a2] fr [a2] fr
vowel/aa [a] fi vowel/aa [a] fi
[A] no [A] no
[A:] no [A:] no
[aa] zhy [aa] zhy
[a] lv
[a:] lv
[a] hy
vowel/aa# [O] en_us vowel/aa# [O] en_us
[0] en_wi [0] en_wi
[a2] fi [a2] fi
[A] zh [A] zh
vowel/aa_3 [A:] af vowel/aa_3 [A:] af
[A] sq [A] sq
[a:] lv
vowel/aa_4 [O:] en_us vowel/aa_4 [O:] en_us
[A:] sv [A:] sv
[O] vi [O] vi
[A] fr [A] fr
[a] pl [a] pl
vowel/@_bck [@] hi vowel/@_bck [@] hi
[@/] hi
[@] zh [@] zh
[@] bn [@] bn
[@/] ne
vowel/e [e] base2 vowel/e [e] base2
[e:] en [e:] en
[eI] en_n [eI] en_n
[e:] hu [e:] hu
[e] ku [e] ku
vowel/e_5 [i] en_sc vowel/e_5 [i] en_sc
vowel/e_6 [e] om
vowel/e_7 [e] sq vowel/e_7 [e] sq
vowel/ee [E] en_n vowel/ee [E] en_n
[E] sv [E] sv
vowel/ee_6 [&] sk vowel/ee_6 [&] sk
[E3] sv [E3] sv
[E] ku [E] ku
[&] lv
[&:] lv
vowel/e_mid [E] en_rp vowel/e_mid [E] en_rp
[e] jbo [e] jbo
[E] fr [E] fr
[E] da [E] da
[E] bn [E] bn
[e] lv [e] lv
[e] hy
vowel/e_mid2 [E] af vowel/e_mid2 [E] af
[E] de [E] de
[E2] de [E2] de
[e] tr [e] tr
[E] ko [E] ko
[e:] lv [e:] lv
[E] om
vowel/@_fnt [@] en_wi vowel/@_fnt [@] en_wi
[@2] en_wi [@2] en_wi
[@2] hr [@2] hr
[i] ko [i] ko
[i:] ml [i:] ml
[i] ne [i] ne
[i] hy
[i:] om
vowel/i# [y:] cy vowel/i# [y:] cy
vowel/i_2 [i2] de vowel/i_2 [i2] de
[i:] de [i:] de
[I] is [I] is
[i] zhy [i] zhy
[I] ku [I] ku
[I] om
vowel/ii# [Y] cy vowel/ii# [Y] cy
[Y] ru [Y] ru
[I] ku [I] ku
[V] bn [V] bn
[@2] bn [@2] bn
[V] ne [V] ne
[@/] ne
vowel/o [o] base2 vowel/o [o] base2
[o:] en [o:] en
[oU] en_n [oU] en_n
[o] ml [o] ml
[o:] ml [o:] ml
[o] bn [o] bn
[o] hy
vowel/o_2 [o:] cy vowel/o_2 [o:] cy
[o2] fr [o2] fr
[o:] hi [o:] hi
[W] af [W] af
[W] de [W] de
[W] da [W] da
[W] hy
vowel/oe_2 [W] no vowel/oe_2 [W] no
[W] tr [W] tr
vowel/oe_4 [W] sv vowel/oe_4 [W] sv
[o] hu [o] hu
[o] tr [o] tr
[o] ne [o] ne
[o:] om
vowel/oo [O:] en_sc vowel/oo [O:] en_sc
[O] en_wi [O] en_wi
[O:] en_wi [O:] en_wi
[O:] hi [O:] hi
[O] it [O] it
[O] bn [O] bn
[O] om
vowel/oo_5 [O] pl vowel/oo_5 [O] pl
[O] is [O] is
[O] sq [O] sq
[u] ml [u] ml
[u:] ml [u:] ml
[u] bn [u] bn
[u:] om
vowel/u# [u:] en_sc vowel/u# [u:] en_sc
[Y] tr [Y] tr
vowel/u_2 [u1] fi vowel/u_2 [u1] fi
[u] sq [u] sq
[u:] bn [u:] bn
[u] ne [u] ne
[u] hy
vowel/u_bck2 [u:] la vowel/u_bck2 [u:] la
vowel/u_fnt [u:] en_rp vowel/u_fnt [u:] en_rp
vowel/uu [U] en vowel/uu [U] en
[U] no [U] no
[u] zhy [u] zhy
[U] bn [U] bn
[U] om
vowel/u_unr [u-] ko vowel/u_unr [u-] ko
vowel/V [3] en_sc vowel/V [3] en_sc
[V] ne
vowel/V_2 [V] en vowel/V_2 [V] en
[a] af [a] af
[V] ru [V] ru
[V] hi [V] hi
[V] ta [V] ta
[V] bn [V] bn
[V] ne
vowel/V_4 [V] en_sc vowel/V_4 [V] en_sc
[@:] vi [@:] vi
[V] da [V] da
[y] hu [y] hu
[y] grc [y] grc
[y] is [y] is
[y] hy
vweak/@ [@#] om
vweak/a [a#] om
vwl_af/@ [@] af vwl_af/@ [@] af
vwl_af/I [I] af vwl_af/I [I] af
vwl_af/r@ [@] af vwl_af/r@ [@] af
vwl_fr/@R2 [R] fr_ca vwl_fr/@R2 [R] fr_ca
vwl_fr/@R3 [R] fr vwl_fr/@R3 [R] fr
[r] fr [r] fr
[Q2] hy
vwl_fr/@R4 [R] fr vwl_fr/@R4 [R] fr
[r] fr [r] fr
[r2] fr [r2] fr
[Q2] hy
vwl_fr/@R5 [r] fr vwl_fr/@R5 [r] fr
[Q2] hy
vwl_fr/r_a [a] fr vwl_fr/r_a [a] fr
[a2] fr [a2] fr
[wA] fr [wA] fr
vwl_no/y# [Y:] no vwl_no/y# [Y:] no
vwl_no/y#y [Yy] no vwl_no/y#y [Yy] no
vwl_ro/ii- [I^] ro vwl_ro/ii- [I^] ro
[I#] om
vwl_ro/li [I^] ro vwl_ro/li [I^] ro
vwl_ro/mi [I^] ru vwl_ro/mi [I^] ru
[I^] ro [I^] ro

+ 6
- 0
phsource/ph_hindi View File

reduceto @- 0 reduceto @- 0
endphoneme endphoneme


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

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

+ 13
- 0
phsource/phonemes View File

switchvoicing Q switchvoicing Q
endphoneme endphoneme


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



phoneme h phoneme h
vls glt apr vls glt apr


phonemetable lv base phonemetable lv base
include ph_latvian 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

break; break;
case 1: case 1:
if(c == '-')
{
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED;
c = ' ';
}
if(isspace2(c)) if(isspace2(c))
{ {
p[0] = 0; /* terminate english word */ p[0] = 0; /* terminate english word */

+ 13
- 2
src/dictionary.cpp View File

// don't use the contraction if any of the words are emphasized // don't use the contraction if any of the words are emphasized
for(ix=0; ix <= skipwords; ix++) 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; condition_failed = 1;
} }
} }
} }


if(dictionary_flags2 & FLAG_HYPHENATED)
{
if(!(word_flags & FLAG_HYPHEN_AFTER))
{
continue;
}
}
if(dictionary_flags2 & FLAG_CAPITAL) if(dictionary_flags2 & FLAG_CAPITAL)
{ {
if(!(word_flags & FLAG_FIRST_UPPER)) if(!(word_flags & FLAG_FIRST_UPPER))
if(length > 0) if(length > 0)
{ {
// found an abbreviation containing dots // found an abbreviation containing dots
nbytes = utf8_nbytes(word2);
nbytes = 0;
while(((c = word2[nbytes]) != 0) && (c != ' '))
{
nbytes++;
}
memcpy(&word[length],word2,nbytes); memcpy(&word[length],word2,nbytes);
word[length+nbytes] = 0; word[length+nbytes] = 0;
found = LookupDict2(word, word2, ph_out, flags, end_flags, wtab); found = LookupDict2(word, word2, ph_out, flags, end_flags, wtab);

+ 2
- 1
src/extras.cpp View File



while((type = events->type) != 0) 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)) if((type==3) || (type==4))
fprintf(f_events,"'%s'\n",events->id.name); fprintf(f_events,"'%s'\n",events->id.name);
else else

+ 56
- 17
src/readclause.cpp View File

0x3001, // ideograph comma 0x3001, // ideograph comma
0x3002, // ideograph period 0x3002, // ideograph period


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

0xff01, // fullwidth exclamation 0xff01, // fullwidth exclamation
0xff0c, // fullwidth comma 0xff0c, // fullwidth comma
0xff0e, // fullwidth period 0xff0e, // fullwidth period
CLAUSE_COMMA+0x8000, // ideograph comma CLAUSE_COMMA+0x8000, // ideograph comma
CLAUSE_PERIOD+0x8000, // ideograph period 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_EXCLAMATION+0x8000, // fullwidth
CLAUSE_COMMA+0x8000, CLAUSE_COMMA+0x8000,
CLAUSE_PERIOD+0x8000, CLAUSE_PERIOD+0x8000,
{NULL,-1}}; {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. /* Find the end of the current clause.
Write the clause into buf Write the clause into buf


int any_alnum = 0; int any_alnum = 0;
int self_closing; int self_closing;
int punct_data; int punct_data;
int stressed_word = 0;
const char *p; const char *p;
wchar_t xml_buf[N_XML_BUF+1]; wchar_t xml_buf[N_XML_BUF+1];


clause_upper_count = 0; clause_upper_count = 0;
clause_lower_count = 0; clause_lower_count = 0;
end_of_input = 0; end_of_input = 0;
*tone_type = 0;


f_input = f_in; // for GetC etc f_input = f_in; // for GetC etc


if(iswalnum(c1)) if(iswalnum(c1))
any_alnum = 1; any_alnum = 1;
else 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);
}
} }
} }
} }


if((phoneme_mode==0) && (sayas_mode==0) && ((punct = lookupwchar(punct_chars,c1)) != 0)) 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 '?' // note: (c2='?') is for when a smart-quote has been replaced by '?'
buf[ix] = ' '; buf[ix] = ' ';
return(CLAUSE_NONE); return(CLAUSE_NONE);
} }
} }

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

+ 4
- 1
src/setlengths.cpp View File

if(end_of_clause == 2) if(end_of_clause == 2)
{ {
// this is the last syllable in the clause, lengthen it - more for short vowels // 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) if(p->type != phVOWEL)

+ 2
- 2
src/speak_lib.cpp View File

ep->text_position = char_position & 0xffff; ep->text_position = char_position & 0xffff;
ep->length = char_position >> 24; 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->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 > 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", 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

char path[sizeof(path_home)+15]; char path[sizeof(path_home)+15];


mbrola_name[0] = 0; mbrola_name[0] = 0;
mbrola_delay = 0;

if(mbrola_voice == NULL) if(mbrola_voice == NULL)
{ {
samplerate = samplerate_native; samplerate = samplerate_native;
else else
SetParameter(espeakVOICETYPE,1,0); SetParameter(espeakVOICETYPE,1,0);
strcpy(mbrola_name,mbrola_voice); strcpy(mbrola_name,mbrola_voice);
mbrola_delay = 3800; // improve synchronization of events
return(EE_OK); return(EE_OK);
} // end of LoadMbrolaTable } // end of LoadMbrolaTable


else else
len = (80 * speed_factor2)/256; 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)); sprintf(buf,"%s\t",WordToString(name));
strcat(mbr_buf,buf); strcat(mbr_buf,buf);



+ 1
- 1
src/synthdata.cpp View File

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


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

+ 1
- 0
src/synthesize.cpp View File

int n_phoneme_list=0; int n_phoneme_list=0;
PHONEME_LIST phoneme_list[N_PHONEME_LIST]; PHONEME_LIST phoneme_list[N_PHONEME_LIST];


int mbrola_delay;
char mbrola_name[20]; char mbrola_name[20];


int speed_factor1; int speed_factor1;

+ 1
- 0
src/synthesize.h View File

extern int vowel_transition[4]; extern int vowel_transition[4];
extern int vowel_transition0, vowel_transition1; extern int vowel_transition0, vowel_transition1;


extern int mbrola_delay;
extern char mbrola_name[20]; extern char mbrola_name[20];


// from synthdata file // from synthdata file

+ 19
- 2
src/tr_languages.cpp View File

// start of unicode pages for character sets // start of unicode pages for character sets
#define OFFSET_GREEK 0x380 #define OFFSET_GREEK 0x380
#define OFFSET_CYRILLIC 0x420 #define OFFSET_CYRILLIC 0x420
#define OFFSET_ARMENIAN 0x530
#define OFFSET_DEVANAGARI 0x900 #define OFFSET_DEVANAGARI 0x900
#define OFFSET_BENGALI 0x980 #define OFFSET_BENGALI 0x980
#define OFFSET_TAMIL 0xb80 #define OFFSET_TAMIL 0xb80
} }
break; 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 case L('i','d'): // Indonesian
{ {
static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240}; static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240};
tr->langopts.stress_rule = 0; tr->langopts.stress_rule = 0;
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
tr->charset_a0 = charsets[4]; // ISO-8859-4 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; break;



+ 16
- 3
src/translate.cpp View File

dictionary_flags[0] &= ~FLAG_PAUSE1; dictionary_flags[0] &= ~FLAG_PAUSE1;
} }


if(wflags & FLAG_EMPHASIZED)
if(wflags & FLAG_EMPHASIZED2)
{ {
// A word is indicated in the source text as stressed // A word is indicated in the source text as stressed
// Give it stress level 6 (for the intonation module) // Give it stress level 6 (for the intonation module)
ChangeWordStress(this,word_phonemes,6); 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 dictionary_flags[0] |= FLAG_PAUSE1; // precede by short pause
} }
else else


int terminator; int terminator;
int tone; int tone;
int tone2;


p_textinput = (char *)vp_input; p_textinput = (char *)vp_input;
p_wchar_input = (wchar_t *)vp_input; p_wchar_input = (wchar_t *)vp_input;


for(ix=0; ix<N_TR_SOURCE; ix++) for(ix=0; ix<N_TR_SOURCE; ix++)
charix[ix] = 0; 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; charix[N_TR_SOURCE] = count_characters;


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


for(p=source; *p != 0; p++) for(p=source; *p != 0; p++)
{ {
c = '\''; 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 c = TranslateChar(&source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function
if(c == 8) if(c == 8)
continue; // ignore this character continue; // ignore this character

+ 11
- 4
src/translate.h View File

#define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */ #define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */
#define FLAG_ALLCAPS 0x400 // only if the word is all capitals #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_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 // wordflags, flags in source word
#define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */ #define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */
#define FLAG_PHONEMES 0x8 /* word is phonemes */ #define FLAG_PHONEMES 0x8 /* word is phonemes */
#define FLAG_LAST_WORD 0x10 /* last word in clause */ #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_EMBEDDED 0x40 /* word is preceded by embedded commands */
#define FLAG_HYPHEN 0x80 #define FLAG_HYPHEN 0x80
#define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space #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_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_DONT_SWITCH_TRANSLATOR 0x1000
#define FLAG_SUFFIX_REMOVED 0x2000 #define FLAG_SUFFIX_REMOVED 0x2000
#define FLAG_HYPHEN_AFTER 0x4000 #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_TRACE 0x10000 // passed to TranslateRules() to suppress dictionary lookup printout
#define FLAG_NO_PREFIX 0x20000 #define FLAG_NO_PREFIX 0x20000
// bits 0-7 pause x 10mS, bits 12-14 intonation type, // bits 0-7 pause x 10mS, bits 12-14 intonation type,
// bit 19=sentence, bit 18=clause, bits 17=voice change // bit 19=sentence, bit 18=clause, bits 17=voice change
// bit 16 used to distinguish otherwise identical types // 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_SENTENCE 0x80000
#define CLAUSE_BIT_VOICE 0x20000 #define CLAUSE_BIT_VOICE 0x20000
#define PUNCT_IN_WORD 0x100000


#define CLAUSE_NONE 0 + 0x04000 #define CLAUSE_NONE 0 + 0x04000
#define CLAUSE_PARAGRAPH 70 + 0x80000 #define CLAUSE_PARAGRAPH 70 + 0x80000
#define SAYAS_DIGITS 0x40 // + number of digits #define SAYAS_DIGITS 0x40 // + number of digits
#define SAYAS_DIGITS1 0xc1 #define SAYAS_DIGITS1 0xc1


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

// Rule: // Rule:
// [4] [match] [1 pre] [2 post] [3 phonemes] 0 // [4] [match] [1 pre] [2 post] [3 phonemes] 0
// match 1 pre 2 post 0 - use common phoneme string // match 1 pre 2 post 0 - use common phoneme string
// bit15= Give stress to the first unstressed syllable // bit15= Give stress to the first unstressed syllable
// bit16= Don't diminish consecutive syllables within a word. // bit16= Don't diminish consecutive syllables within a word.
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" // 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 stress_flags;
int unstressed_wd1; // stress for $u word of 1 syllable int unstressed_wd1; // stress for $u word of 1 syllable
void MakePhonemeList(int post_pause, int new_sentence); void MakePhonemeList(int post_pause, int new_sentence);
int SubstitutePhonemes(PHONEME_LIST2 *plist_out); 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); 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); const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab);

Loading…
Cancel
Save