*_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-fd96e6ae7743master
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 |
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 |
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 |
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 |
// 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 |
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 | ||||
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 |
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 |
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 |
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 */ |
// 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); |
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 |
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 |
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) |
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", |
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); | ||||
#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; |
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; |
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 |
// 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; | ||||
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 |
#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); |