Browse Source

[1.46.39]

Fixes to speaking characters from foreign alphabets.
Allow $textmode and $text to translate between words in different alphabets.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@305 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
3eb5cb58d7

+ 32
- 18
dictsource/dict_phonemes View File

ts v x z ts v x z




Dictionary en_dict 2013-02-27
Dictionary en_dict 2013-03-01


0 0# 3 3: @ @- @2 @5 0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3 @L a a# A: A@ aa aI aI3
t tS ts tS; v x z Z t tS ts tS; v x z Z




Dictionary hi_dict 2012-04-12
Dictionary hi_dict 2013-03-01


@ @2 a a: aI aU e E
e: E: E~ i I i: l- o
O o: O: O~ o~ r- U u:
u~ V
@ @- @2 a a: aI aU a~
e E e: E: E~ i I i:
l- o O o: O: O~ o~ r-
u U u: u~ V


#X1 #X2 - : b bh c ch #X1 #X2 - : b bh c ch
d d. dh dh. f g gh h d d. dh dh. f g gh h
ts; v w x z Z Z; ts; v w x z Z Z;




Dictionary pt_dict 2013-02-25
Dictionary pt_dict 2013-02-27


& &/ &U~ &~ @ @- a A & &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU aI aU e E eI EI eU EU
tS tS` v w x z Z tS tS` v w x z Z




Dictionary ml_dict 2011-12-05
Dictionary ml_dict 2013-02-28


@ a a# a: aI aU e E @ a a# a: aI aU e E
e: i I i: o o: r- u e: i I i: o o: r- u
th. v w x z th. v w x z




Dictionary pa_dict 2012-05-04
Dictionary pa_dict 2013-03-01


@ a a~ e E eI e~ E~
i I i: i~ I~ o O O~
o~ r- u U U~ u~ V V~
@ a a~ e E e~ E~ i
I i~ I~ o O O~ o~ r-
u U U~ u~ V V~


: ; b bh c ch d d. : ; b bh c ch d d.
dh dh. dZ f g gh h H
j J Jh k kh l l. m
n N n. n^ p ph Q r
R R2 s S t t. th th.
v w x z
dh dh. f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q R R2
s S t t. th th. v x
z




Dictionary prs_dict 2009-12-01 Dictionary prs_dict 2009-12-01
t tS v w x z t tS v w x z




Dictionary ur_dict 2013-02-08
Dictionary ur_dict 2013-03-01


@ a a: aI aU e E e: @ a a: aI aU e E e:
i I i: O o: U u: V i I i: O o: U u: V
l l^ m n n^ p Q r l l^ m n n^ p Q r
R R2 s S t T t# tS R R2 s S t T t# tS
w x w x


Dictionary bn_dict 2013-02-28

@ a a: aI a~ e E e:
E: E~ i I i: i~ o O
o: O: O~ o~ r- u U u:
u~ V

#X1 #X2 : b bh c ch d
d. dh dh. g gh h H j
J Jh k kh l m n N
n. n^ p ph r r. s S
s. t t. th th. v w z

+ 3
- 1
dictsource/en_list View File

_‼ Ekskla#m'eIS@nz _‼ Ekskla#m'eIS@nz
_₠ jU@roU _₠ jU@roU


+ plVs $max3
+ plVs
# haS $max3 # haS $max3
@ _at_ $u+ @ _at_ $u+
& _and $u+ & _and $u+
converse $1 $only converse $1 $only
converse $verb converse $verb
convert $1 $noun convert $1 $noun
convict $1
convict $2 $verb convict $2 $verb
convolute k0nv@l'u:t convolute k0nv@l'u:t
coop ku:p coop ku:p
//mercenary m3:s@n@rI //mercenary m3:s@n@rI
merest mi@r@st merest mi@r@st
meringue m@raN meringue m@raN
meson mi:z0n
metabolic mEt@b'0lIk metabolic mEt@b'0lIk
metaphor mEt@fO@ metaphor mEt@fO@
metastable $alt1 metastable $alt1

+ 8
- 6
dictsource/en_rules View File



// *************************************************************************** // ***************************************************************************
// * Copyright (C) 2005 to 2010 by Jonathan Duddington *
// * Copyright (C) 2005 to 2013 by Jonathan Duddington *
// * email: [email protected] * // * email: [email protected] *
// * * // * *
// * This program is free software; you can redistribute it and/or modify * // * This program is free software; you can redistribute it and/or modify *
co (ntrol+ k@ co (ntrol+ k@
conva (l k0nv@ conva (l k0nv@
_) co (nvenA k@ _) co (nvenA k@
_) co (nvi k0#
_) con (vi k%0#n
_) co (nvoy k0 _) co (nvoy k0
_) co (nw k0 _) co (nw k0
_) copy k0pI _) copy k0pI
_) des (k dEs _) des (k dEs
des (ol dEs des (ol dEs
des (pot dEs des (pot dEs
_) dess dI2z
_) dess (er dI2z
desta (b d%i:steI desta (b d%i:steI
desti dEstI desti dEstI
des (ul d%i:s des (ul d%i:s
v) es (t+ Es v) es (t+ Es
harv) es (t Is harv) es (t Is
esti (m EstI# esti (m EstI#
es (ty @s
&) es (ty @s


.group et .group et
_) et (on i:t _) et (on i:t
iah (_ 'aI@ iah (_ 'aI@
ia (m i@ ia (m i@
&) ia (n i@ &) ia (n i@
@) ia (nd I'a
@) ia (nic I'a @) ia (nic I'a
@) ia (nit I'a @) ia (nit I'a
@) ia (na_ i:'a @) ia (na_ i:'a
iority I'0rI2t%I iority I'0rI2t%I
iou (rA j@ iou (rA j@
iour (K j3 iour (K j3
@) ious (_ =I2@s
g) ious (_ =@s
@) ious =I2@s
g) ious =@s
ioux u: ioux u:
_r) io (t aI@ _r) io (t aI@
io (t_ I|@ io (t_ I|@
&d) Ed (_S2vei I#d &d) Ed (_S2vei I#d
&ch) Ed (_S2vei t &ch) Ed (_S2vei t
&k) Ed (_S2vei t &k) Ed (_S2vei t
ril) Ed (_S2 d
&@@om) Ed (_S2v d &@@om) Ed (_S2v d
&p) Ed (_S2vei t &p) Ed (_S2vei t
&t) Ed (_S2vei I#d &t) Ed (_S2vei I#d

+ 34
- 34
dictsource/hi_list View File



// Numbers // Numbers
// devanagari numbers are changed to latin characters before translation // devanagari numbers are changed to latin characters before translation
_0 S'u:n.jV
_0 s'u:n.jV
_1 'e:k _1 'e:k
_2 d'o: _2 d'o:
_3 t'i:n _3 t'i:n
_4 c'a:r:
_5 p'a:nc
_4 c:'a:r:
_5 'pa~c
_6 ch'@2 _6 ch'@2
_7 s'a:t _7 s'a:t
_8 'a:th. _8 'a:th.
?3 _9 n'aU ?3 _9 n'aU


_10 d'Vs _10 d'Vs
_11 gj'a:r@2
_12 b'a:r@2
_13 t'E:r@2
_14 ch'O:d@2
_15 p'Vndr@2
_16 s'o:l@2
_17 s'Vt:r@2
_18 Vth.:'a:r@2
_11 gj'a:r-ah
_12 b'a:rah
_13 t'e:r@2h
_14 ch'O:d@2h
_15 p'Vndr@2h
_16 s'o:l@2h
_17 sVtr@2h
_18 a:th:arah
_19 Unn'Is _19 Unn'Is


_20 b'i:s _20 b'i:s
_21 Ik:'Is _21 Ik:'Is
_22 b'a:Is _22 b'a:Is
_23 t'e:Is
_23 t'ue:Is
_24 c'O:bIs _24 c'O:bIs
_25 p@c:'Is _25 p@c:'Is
_26 ch@bb'i:rs _26 ch@bb'i:rs
_27 s@t:'a:Is _27 s@t:'a:Is
_28 ath:'a:Is _28 ath:'a:Is
_29 Unt'Is
_29 ,Unt'Is
_30 t'i:s _30 t'i:s


_31 Ik@t:'Is _31 Ik@t:'Is
_32 bat:'Is
_32 b'at:'I'S
_33 tE~t'Is // E~ ? _33 tE~t'Is // E~ ?
_34 cO~t'Is _34 cO~t'Is
_35 pE~t'Is _35 pE~t'Is
_54 c'Ou:wVn _54 c'Ou:wVn
_55 p'achpVn _55 p'achpVn
_56 chh@p:'Vn _56 chh@p:'Vn
_57 sVt:'a:w@n
_58 ath:'a:w@n
_57 santa:'w@n
_58 ath:a:'w@n
_59 Uns'Vth _59 Uns'Vth


_60 s'a:th. _60 s'a:th.
_61 'Iks@th. _61 'Iks@th.
_62 b'a:s@th. _62 b'a:s@th.
_63 t'Irs@th. _63 t'Irs@th.
_64 c'O~s@th.
_65 paIns@th.
_64 cO:'s@th.
_65 paI's@th.
_66 ch'Ija:s@th. _66 ch'Ija:s@th.
_67 s'Vrs@th. _67 s'Vrs@th.
_68 ars@th. _68 ars@th.
_79 ,Un^Ia:s'i: _79 ,Un^Ia:s'i:


_80 ,Vss'i: _80 ,Vss'i:
_81 Ikja:s'i:
_82 baIa:s'i:
_83 tIra:s'i:
_84 cO:ra:s'i:
_85 pI'ca:s'i:
_86 chIja:s'i:
_87 sVt:a:s'i:
_88 ath:a:s'i:
_89 nVwa:s'i:
_81 Ikja:s'i
_82 baIa:s'i
_83 tIra:s'i
_84 cO:ra:s'i
_85 pI'ca:s'i
_86 chIja:s'i
_87 sVt:a:s'i
_88 ath:a:s'i
_89 nVwa:s'i


_90 nVb:'e: _90 nVb:'e:
_91 Ikj'a:n@we: _91 Ikj'a:n@we:
_99 nIn^j'a:n@we: _99 nIn^j'a:n@we:


_0C s'O: _0C s'O:
_0M1 h@z'a:r
_0M1 h@J,a:r
_0M2 l'a:kh _0M2 l'a:kh
_0M3 cr'ore
_0M3 k@ro:r.V
_0M4 'Vr@b _0M4 'Vr@b
_0M5 kh'Vr@b _0M5 kh'Vr@b
_dpt _d@s@ml'o:_ // ?? what is Hi for "." ? _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
श S@ श S@
ष s.@ // retroflex [S] ष s.@ // retroflex [S]
स s@ स s@
ह H@
ह H@-
क़ q@ क़ q@
ख़ x@ ख़ x@
ग़ Q@ ग़ Q@
। dVn.d.V । dVn.d.V


// Pronouns // Pronouns
मैं $u // main: I
मैं $u // main: IrI
मुझे $u मुझे $u
मेरा $u मेरा $u
मेरी $u मेरी $u
मेरे $u मेरे $u


हम $u // we हम $u // we
हमे $u
हमे $u
हमारा $u हमारा $u
हमारी $u हमारी $u
हमारे $u हमारे $u
इसका $u इसका $u


ये $u // they ये $u // they
इन्हें $u
इन्हें $u
इनका $u इनका $u


वह $u // he/she/it वह $u // he/she/it


वे $u // they वे $u // they
वो $u वो $u
उन्हे $u // unheṃ: them
उन्हे $u // unheṃ: them
उनका $u उनका $u
उनकी $u उनकी $u
उनके $u उनके $u

+ 222
- 222
dictsource/hi_rules View File



// This file is UTF8 encoded
// This file is UTF8 encoded


// letter groups: // letter groups:
// A vowel letters and vowel signs // A vowel letters and vowel signs
// Vowels // Vowels


.group अ .group अ
अ V
अ (ह E // (h
अह) अ E
V
अ (ह E // (h
अह) अ E


.group आ .group आ
आ a:
a:


.group इ .group इ
इ I
I
// इँ i~ // इँ i~
// इं i~ // इं i~


.group ई .group ई
ई i:
ई (_ i
i:
ई (_ i


.group उ .group उ
उ U
U


.group ऊ .group ऊ
ऊ u:
ऊं u~ // + anusvara
ऊँ u~ // + candrabinbu
u
ऊं u~ // + anusvara
ऊँ u~ // + candrabinbu


.group ऋ .group ऋ
ऋ rI
rI


.group ऌ .group ऌ
ऌ l- // vocalic l
l- // vocalic l


.group ऍ .group ऍ
ऍ E // candra e
E // candra e


.group ऎ .group ऎ
ऎ e
e


.group ए .group ए
ए e:
e:


.group ऐ .group ऐ
ऐ E: // ?? [aI] [E:] [&:]
ऐं E~
ऐँ E~
?2 ऐ aI // ?? [aI] [E:] [&:]
E: // ?? [aI] [E:] [&:]
ऐं E~
ऐँ E~
?2 ऐ aI // ?? [aI] [E:] [&:]




.group ऑ .group ऑ
ऑ O // candra O
O // candra O


.group ऒ .group ऒ
ऒ o
o


.group ओ .group ओ
ओ o:
ओं o~ // +anusvara
ओँ o~ // +candrabindu
o:
ओं o~ // +anusvara
ओँ o~ // +candrabindu


.group औ .group औ
औ O: // ?? [aU] [O:]
औं O~ // +anusvara
औँ O~ // +candrabindu
?3 औ aU // ?? [aU] [O:]
O: // ?? [aU] [O:]
औं O~ // +anusvara
औँ O~ // +candrabindu
?3 औ aU // ?? [aU] [O:]




// Vowel Signs // Vowel Signs


.group ा .group ा
ा a: ा a:
ाव aU
ाव aU


.group ि .group ि
ि I
ि I
// िँ i~ // िँ i~
// िं i~ // िं i~


.group ी .group ी
ी i:
ी (_ i
i:
ी (_ i


.group ु .group ु
U
u


.group ू .group ू
ू u:
ूं u~ // or O~ ??
ूँ u~
u:
ूं u~ // or O~ ??
ूँ u~


.group ृ .group ृ
ृ rI
rI


.group ॄ .group ॄ
ॄ rI
rI


.group ॅ .group ॅ
ॅ E
E


.group ॆ .group ॆ
ॆ e
e


.group े .group े
े e:
e:


.group ै .group ै
ै E: // ?? [aI] [E:] [&:]
ैं E~
ैँ E~
?2 ै aI // ?? [aI] [E:] [&:]
E: // ?? [aI] [E:] [&:]
ैं E~
ैँ E~
?2 ै aI // ?? [aI] [E:] [&:]


.group ॉ .group ॉ
ॉ O
O


.group ॊ .group ॊ
ॊ o
o


.group ो .group ो
ो o:
ों o~
ोँ o~
o:
ों o~
ोँ o~


.group ौ .group ौ
ौ O: // [O:] or [aU] ??
ौं O~
ौँ O~
?3 ौ aU // [O:] or [aU] ??
O: // [O:] or [aU] ??
ौं O~
ौँ O~
?3 ौ aU // [O:] or [aU] ??


.group ॢ // vowel sign l .group ॢ // vowel sign l
ॢ l-
l-


.group ॣ // vowel sign ll .group ॣ // vowel sign ll
ॣ l-:
l-:


.group ॐ .group ॐ
ॐ o~m
o~m


// Consonants // Consonants


.group क .group क
क kV
क (B k
क (्य k:
क़ qV
क़ (B q
kV
क (B k
क (्य k:
क़ qV
क़ (B q


.group ख .group ख
ख khV
ख (B kh
ख़ xV
ख़ (B x
khV
ख (B kh
ख़ xV
ख़ (B x


.group ग .group ग
ग gV
ग (B g
ग़ QV
ग़ (B Q
gV
ग (B g
ग़ QV
ग़ (B Q


.group घ .group घ
घ ghV
घ (B gh
ghV
घ (B gh


.group ङ .group ङ
ङ NV
ङ (B N
्) ङ (_ N@
NV
ङ (B N
्) ङ (_ N@


.group च .group च
च cV
च (B c
च (्य c:
cV
च (B c
च (्य c:


.group छ .group छ
छ chV
छ (B ch
chV
छ (B ch


.group ज .group ज
ज JV
ज (B J
ज़ zV
ज़ (B z
JV
ज (B J
ज़ zV
ज़ (B z


.group झ .group झ
झ JhV
झ (B Jh
JhV
झ (B Jh


.group ञ .group ञ
ञ n^V
ञ (B n^
्) ञ (_ n^
n^V
ञ (B n^
्) ञ (_ n^


.group ट .group ट
ट t.V
ट (B t.
ट (्य t.:
t.V
ट (B t.
ट (्य t.:


.group ठ .group ठ
ठ th.V
ठ (B th.
th.V
ठ (B th.


.group ड .group ड
ड d.V
ड (B d.
d.V
ड (B d.


ड़ r.V
ड़ (B r.
ड़ r.V
ड़ (B r.


.group ढ .group ढ
ढ dh.V
ढ (B dh.
ढ़ r.hV // nukta (should retroflex flap)
ढ़ (B r.h // nukta
dh.V
ढ (B dh.
ढ़ r.hV // nukta (should retroflex flap)
ढ़ (B r.h // nukta


.group ण .group ण
ण n.V // (temporary) same as dental [n]
ण (B n.
्) ण (_ n.@
n.V // (temporary) same as dental [n]
ण (B n.
्) ण (_ n.@


.group त .group त
त tV
त (B t
त (्य t:
tV
त (B t
त (्य t:


.group थ .group थ
थ thV
थ (B th
thV
थ (B th


.group द .group द
द dV
द (B d
dV
द (B d


.group ध .group ध
ध dhV
ध (B dh
dhV
ध (B dh


.group न .group न
न nV
न (B n
्) न (_ n@
र्) न (_ n // r +virama
nV
न (B n
्) न (_ n@
र्) न (_ n // r +virama




.group ऩ .group ऩ
ऩ n: // should this be a long [n] ?
n: // should this be a long [n] ?


.group प .group प
प pV
प (B p
प (्य p:
pV
प (B p
प (्य p:


.group फ .group फ
फ phV
फ (B ph
फ़ fV
फ़ (B f
phV
फ (B ph
फ़ fV
फ़ (B f


.group ब .group ब
ब bV
ब (B b
bV
ब (B b


.group भ .group भ
भ bhV
भ (B bh
bhV
भ (B bh


.group म .group म
म mV
म (B m
्) म (_ m@
र्) म (_ m // r +virama
न्) म (_ m // n +virama
mV
म (B m
्) म (_ m@
र्) म (_ m // r +virama
न्) म (_ m // n +virama


.group य .group य
jV
य (B j
्) य (_ j@
j@
य (B j
्) य (_ j@


.group र .group र
र rV
र (B r
्) र (_ r@
rV
र (B r
्) र (_ r@


.group ऱ // rra .group ऱ // rra
ऱ rV // (temporary) same as [r]
ऱ (B r
्) ऱ (_ r@
rV // (temporary) same as [r]
ऱ (B r
्) ऱ (_ r@


.group ल .group ल
ल lV
ल (B l
्) ल (_ l@
lV
ल (B l
्) ल (_ l@


.group ळ .group ळ
ळ l.V
ळ (B l.
्) ळ (_ l.@
l.V
ळ (B l.
्) ळ (_ l.@


.group ऴ .group ऴ
ऴ l.V // (temporary) same as [l.]
ऴ (B l.
्) ऴ (_ l.@
l.V // (temporary) same as [l.]
ऴ (B l.
्) ऴ (_ l.@


.group व .group व
व vV
व (B v
_) व wV
_) व (B w
_) व (् v // +virma
vV
व (B v
_) व wV
_) व (B w
_) व (् v // +virma


.group श .group श
श SV
श (B S
SV
श (B S


.group ष .group ष
ष s.V //?? or retroflex [S]
ष (B s. //??
s.V //?? or retroflex [S]
ष (B s. //??


.group स .group स
स sV
स (B s
sV
स (B s


.group ह .group ह
ह HV
ह (B H
H
ह (B H




// nukta, modifies a consonant // nukta, modifies a consonant


.group ऽ // avagraha, lengthens a vowel ?? .group ऽ // avagraha, lengthens a vowel ??
ऽ :
:


.group ँ .group ँ
ँ n // candrabindu
.group ं
ं n // anusvara
(प m
(फ m
(ब m
(भ m
(म m
(ट n.
(ठ n.
(ड n.
(ढ n.
(ण n.
(च n^
(छ n^
(ज n^
(झ n^
(ञ n^
(य n^
(क N
(ख N
(ग N
(घ N
(ङ N
ं (ह N
ँ n // candrabindu
.group ं
n // anusvara
ं (प m
ं (फ m
ं (ब m
ं (भ m
ं (म m
ं (ट n.
ं (ठ n.
ं (ड n.
ं (ढ n.
ं (ण n.
ं (च n^
ं (छ n^
ं (ज n^
ं (झ n^
ं (ञ n^
ं (य n^
ं (क N
ं (ख N
ं (ग N
ं (घ N
ं (ङ N


.group ः .group ः
ः H // visarga
H // visarga


.group ् // virama .group ् // virama


// Extra consonants // Extra consonants


.group क़ // qa .group क़ // qa
क़ qV
क़ (B q
qV
क़ (B q


.group ख़ // khha .group ख़ // khha
ख़ xV
ख़ (B x
xV
ख़ (B x


.group ग़ // ghha .group ग़ // ghha
ग़ QV
ग़ (B Q
QV
ग़ (B Q


.group ज़ // za .group ज़ // za
ज़ zV
ज़ (B z
zV
ज़ (B z


.group ड़ // dddha (should retroflex flap) .group ड़ // dddha (should retroflex flap)
ड़ r.V
ड़ (B r.
r.V
ड़ (B r.


.group ढ़ // rha (aspirated version of dddha) .group ढ़ // rha (aspirated version of dddha)
ढ़ r.hV
ढ़ (B r.h
r.hV
ढ़ (B r.h


.group फ़ // fa .group फ़ // fa
फ़ fV
फ़ (B f
fV
फ़ (B f


.group य़ // yya .group य़ // yya
य़ jV
य़ (B j
jV
य़ (B j


.group ॠ // rr .group ॠ // rr
ॠ V-rr
V-rr


.group ॡ // ll .group ॡ // ll
ॡ l-: // long syllabic l
l-: // long syllabic l




// If we find a Latin letter a-z, then translate as English // If we find a Latin letter a-z, then translate as English
// (This is now done automatically by the eSpeak program) // (This is now done automatically by the eSpeak program)


.group o .group o
o _^_EN
D__) of (__D    me
o _^_EN
D__) of (__D    me








.group .group
$ dOlV
% pVsEnt
$ dOlV
% pVsEnt





+ 50
- 18
dictsource/ml_list View File

// numbers // numbers
_0 p'u:Jj@m _0 p'u:Jj@m
_1 'onny _1 'onny
_2 r'an.t.y
_3 m'unny
_2 r@n.d#y
_3 m'u:nny
_4 n'a:ly _4 n'a:ly
_5 'an^cy _5 'an^cy
_6 'aR2y
_6 'a:R2y
_7 'e:r.y _7 'e:r.y
_8 'et.t.y _8 'et.t.y
_9 'onpaty _9 'onpaty
_1X p'ati
_10 p'atty _10 p'atty
_1X p'ati

_11 p'atinonny _11 p'atinonny
_12 p'antran.t.y _12 p'antran.t.y
_15 p'atinan^cy
_16 p'atinaR2y
_17 p'atine:R2y
_18 p'atine:t.t.y
_19 p'attompatu _19 p'attompatu
_2X 'irupat
_3X m'uppat
_4X n'a:lppat
_5X 'anpat
_6X 'aR2upat
_7X 'er.upat
_8X 'en.pat
_9X t'on.n.u:R2
_20 'irup'aty
_2X 'irupatti
_30 m'uppaty
_3X m'uppatti':
_40 n'a:lppaty
_4X n'a:lppatti
_50 'anpaty
_5X 'anpatti
_60 'aR2upaty
_6X 'aR2upatti
_70 'er.'upaty
_7X 'er.'upatti
_80 'en.paty
_8X 'en.patti
_90 t'on.n.u:r:
_9X t'on.n.u:t.t.i

_0C n'u:R _0C n'u:R
_0M1 'a:jiRam
_0M2 l'aks.am
_1C0 n'u:r:
_1C n'u:t.t.i
_2C0 irunn'u:r
_2C irunn'u:t.t.i
_3C0 munn'u:r
_3C munn'u:t.t.i
_4C0 na:nnu:r
_4C na:nnu:t.t.i
_5C0 'an^cu:r
_5C 'an^cu:t.t.i
_6C0 aR2unu:r
_6C aR2unu:t.t.i
_7C0 'er.'unu:r
_7C 'er.'unu:t.t.i
_8C0 'en.n.u:r
_8C 'en.n.u:t.t.i
_9C0 tol.l.'a:jiRam
_9C tol.l.'a:jiRatti

_0M1x 'a:jiRam
_0M1 'a:jiRat.t.i
_0M2x l'aks.am
_0M2 l'aks.at.t.i
_0M3 k'o:t.i _0M3 k'o:t.i

_dpt _d'aS;a:mS;@m_ _dpt _d'aS;a:mS;@m_





+ 126
- 125
dictsource/ml_rules View File



// This file is UTF8 encoded
// This file is UTF8 encoded
// Spelling to phoneme rules for Malayalam // Spelling to phoneme rules for Malayalam


// A means vowel letters (not vowel signs) // A means vowel letters (not vowel signs)
൭ 7 ൭ 7
൮ 8 ൮ 8
൯ 9 ൯ 9
ോ ോ
ോ ോ
ൊ ൊ ൊ ൊ
ൌ ൌ ൌ ൌ






.group ക .group ക
ka
ക (B k
ka
ക (B k


.group ഖ .group ഖ
kha
ഖ (B kh
kha
ഖ (B kh


.group ഗ .group ഗ
ga
ഗ (B g
ga
ഗ (B g


.group ഘ .group ഘ
gha
ഘ (B gh
gha
ഘ (B gh


.group ങ .group ങ
Na
ങ (B N
Na
ങ (B N


.group ച .group ച
ca
ച (B c
ca
ച (B c


.group ഛ .group ഛ
cha
ഛ (B ch
cha
ഛ (B ch


.group ജ .group ജ
Ja
ജ (B J
Ja
ജ (B J


.group ഝ .group ഝ
Jha
ഝ (B Jh
Jha
ഝ (B Jh


.group ഞ .group ഞ
n^a
ഞ (B n^
n^a
ഞ (B n^


.group ട .group ട
t.a
ട (B t.
t.a
ട (B t.


.group ഠ .group ഠ
th.a
ഠ (B th.
th.a
ഠ (B th.


.group ഡ .group ഡ
d.a
ഡ (B d.
d.a
ഡ (B d.


.group ഢ .group ഢ
dh.a
ഢ (B dh.
dh.a
ഢ (B dh.


.group ണ .group ണ
n.a
ണ (B n.
n.a
ണ (B n.


.group ത .group ത
ta
ത (B t
ta
ത (B t


.group ഥ .group ഥ
tha
ഥ (B th
tha
ഥ (B th


.group ദ .group ദ
da
ദ (B d
da
ദ (B d


.group ധ .group ധ
dha
ധ (B dh
dha
ധ (B dh


.group ന .group ന
na
ന (B n
na
ന (B n


.group പ .group പ
pa
പ (B p
pa
പ (B p


.group ഫ .group ഫ
pha
ഫ (B p
pha
ഫ (B p


_പ്രൊ) ഫ (സര് fa
_പ്രൊ) ഫ (സര് fa




.group ബ .group ബ
ba
ബ (B b
ba
ബ (B b


.group ഭ .group ഭ
bha
ഭ (B bh
bha
ഭ (B bh


.group മ .group മ
ma
മ (B m
ma
മ (B m


.group യ .group യ
ja
യ (B j
ja
യ (B j


.group ര .group ര
ra
ര (B r
ra
ര (B r


.group റ .group റ
R2a
റ (B R2
ന്) റ d#
റ്റ t.t. // ?? R2R2 = t.t.
R2a
റ (B R2
ന്) റ d#
റ്റ t.t. // ?? R2R2 = t.t.


.group ല .group ല
la
ല (B l
la
ല (B l


.group ള .group ള
l.a
ള (B l.
l.a
ള (B l.


.group ഴ // retroflex [r.] ? .group ഴ // retroflex [r.] ?
r.a
ഴ (B r.
r.a
ഴ (B r.


.group വ .group വ
va
വ (B v
va
വ (B v


.group ശ .group ശ
S;a
ശ (B S;
S;a
ശ (B S;


.group ഷ .group ഷ
s.a
ഷ (B s.
s.a
ഷ (B s.


.group സ .group സ
sa
സ (B s
sa
സ (B s


.group ഹ .group ഹ
ha
ഹ (B h
ha
ഹ (B h




// chillu consonants // chillu consonants
.group ൺ .group ൺ
n.
n.


.group ൻ .group ൻ
n
n


.group ർ .group ർ
r
r


.group ൽ .group ൽ
l
l


.group ൾ .group ൾ
l.
l.


.group ൿ .group ൿ
ൿ k
ൿ k




.group 0xe0b4 // characters which start with UTF-8 bytes: [e0 b4] .group 0xe0b4 // characters which start with UTF-8 bytes: [e0 b4]


// avagraha
// avagraha


ം m // anusvara (this should nasalize the vowel)
ം m // anusvara (this should nasalize the vowel)


ഃ h // visarga
ഃ h // visarga


a
a


a:
a:


i
i


i:
i:


u
u


u:
u:


Ry
Ry


e
_) എ ;e
e
_) എ ;e


e:
_) ഏ ;e:
e:
_) ഏ ;e:


aI
aI


o
o


o:
o:


aU
aU


// combining vowel signs // combining vowel signs


a:
a:


ി i
ി (ല്K I
ി i
ി (ല്K I


.group 0xe0b5 // characters which start with UTF-8 bytes: [e0 b5] .group 0xe0b5 // characters which start with UTF-8 bytes: [e0 b5]


i:
i:


u
u


u:
u:


r-
r-


r-:
r-:


e
e


e:
e:


aI
aI


o
o


o:
o:


aU
ൗ aU // au length mark, treat at [aU] ?
aU
ൗ aU // au length mark, treat at [aU] ?


// virama
// chillu-virama (unofficial)
്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character
് (_ y // epenthetic vowel at end of word
// virama
// chillu-virama (unofficial)
്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character
് (_ y // epenthetic vowel at end of word


Ry:
Ry:


ly:
ly:






.group 0xe0a4 // devanagari .group 0xe0a4 // devanagari
0xe0a4 _^_HI // switch to hindi voice
0xe0a4 _^_HI // switch to hindi voice

.group 0xe0a5 // devanagari .group 0xe0a5 // devanagari
0xe0a5 _^_HI
0xe0a5 _^_HI




.group .group
$ do:l.ar
$ do:l.ar

+ 4
- 3
dictsource/pt_list View File

amarelo $alt amarelo $alt
ameba $alt ameba $alt
amores $alt2 amores $alt2
antonieta $alt2
apego $alt2 $noun apego $alt2 $noun
apelo $alt $verb apelo $alt $verb
aposto $alt $verb aposto $alt $verb
colabore $alt colabore $alt
colete $alt2 colete $alt2
colchete $alt2 colchete $alt2
colher $alt $verb
colher $alt $noun
colheres $alt $noun colheres $alt $noun
colmeia $alt colmeia $alt
colore $alt colore $alt
desespero $alt2 $noun desespero $alt2 $noun
desfecho $alt2 desfecho $alt2
desprezo $alt $verb desprezo $alt $verb
deva $alt2
devo $alt2
deveras $alt deveras $alt
dez $alt dez $alt
diarreia $alt diarreia $alt
foguete $alt2 foguete $alt2
foice $alt2 foice $alt2
forca $alt2 forca $alt2
força $alt2 $noun
forço $alt
forças $alt2 forças $alt2
fordes $alt2 fordes $alt2
fores $alt2 fores $alt2

+ 1
- 0
dictsource/pt_rules View File

viv) e (L07_ e // re- viv) e (L07_ e // re-
qu) e (brL04_ E qu) e (brL04_ E
_hosp) e (dL03_ E _hosp) e (dL03_ E
_d) e (vL03_ e
_gr) e (gL03_ e _gr) e (gL03_ e
_n) e (grL03_ e _n) e (grL03_ e
_estr) ei (L03_ EI _estr) ei (L03_ EI

+ 36
- 31
phsource/compile_report View File



87 phoneme tables
88 phoneme tables
new total new total
base 109 109 base 109 109
consonants 10 118 consonants 10 118
fr 64 146 fr 64 146
fr-ca 11 146 fr-ca 11 146
hi 57 150 hi 57 150
bn 5 150
ne 18 158
ur 6 150
ta 23 154 ta 23 154
kn 17 150 kn 17 150
ml 21 153
ur 6 150
ml 22 154
hu 25 124 hu 25 124
lt 44 139 lt 44 139
lv 29 127 lv 29 127
da 36 131 da 36 131
ka 20 114 ka 20 114
rw 15 132 rw 15 132
ne 18 158
pa 15 152 pa 15 152
prs 8 113 prs 8 113
sl 10 137 sl 10 137
[l/] fr [l/] fr
l/l_@ [l/3] base l/l_@ [l/3] base
[l/] fr [l/] fr
l/l@ [h6r] base
l/l@ [] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
l/L2_uL [l/2] base l/L2_uL [l/2] base
l/l_3 [l/] de l/l_3 [l/] de
l/l_4 [ll] sq l/l_4 [ll] sq
l/la [h6r] base
l/la [] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_a [l/3] base l/l_a [l/3] base
[l/] fr [l/] fr
l/le [h6r] base
l/le [] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[&:] af [&:] af
l/l_front [L] sq l/l_front [L] sq
l/l_front_ [l/4] sq l/l_front_ [l/4] sq
l/li [h6r] base
l/li [] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
ll/_ll [L] base ll/_ll [L] base
l/l_long [l] base l/l_long [l] base
[l] fr [l] fr
l/lo [h6r] base
l/lo [] base
[l#] base [l#] base
[l/2] fr [l/2] fr
[K] nso [K] nso
[l;] lt [l;] lt
[l] ru [l] ru
[l^] ru [l^] ru
l/lu [h6r] base
l/lu [] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[R] pl [R] pl
[r*] sr [r*] sr
[r] ru [r] ru
[x] pt
[r] tn [r] tn
r3/r_trill2 [R] base r3/r_trill2 [R] base
[r] cy [r] cy
[R] pl [R] pl
[r*] sr [r*] sr
[r] ru [r] ru
[x] pt
r3/r_uvl [r"] base r3/r_uvl [r"] base
[r2] de [r2] de
r3/r_uvl.wav [r"] base r3/r_uvl.wav [r"] base
[gh] hi [gh] hi
[kh] zh [kh] zh
[kh] tn [kh] tn
ustop/k_asp2 [k#] ka
ustop/k_asp2 [kh2] ml
[k#] ka
ustop/k_ejc [k`] am ustop/k_ejc [k`] am
ustop/ki [k] base ustop/ki [k] base
[k] base2 [k] base2
[k] base2 [k] base2
[k] et [k] et
[k] fr [k] fr
[kh2] ml
[k] lv [k] lv
[k] el [k] el
[k] zhy [k] zhy
vdiph/8u [oU] en-us vdiph/8u [oU] en-us
[ou] zh [ou] zh
vdiph/aae [aI] en-us vdiph/aae [aI] en-us
vdiph/aai [ai] lt
vdiph/aai [aI] ne
[ai] lt
[ai] lv [ai] lv
[aai] zhy [aai] zhy
[aI] sq [aI] sq
[aI] ne
vdiph/aai_2 [AI] af vdiph/aai_2 [AI] af
[AY] cy [AY] cy
vdiph/aai_3 [ai] fi vdiph/aai_3 [ai] fi
[aU] la [aU] la
[aau] zhy [aau] zhy
vdiph/aau_3 [aU] hi vdiph/aau_3 [aU] hi
[aU] ne
[aU] kn [aU] kn
[aU] ml [aU] ml
[aU] ne
[aU] te [aU] te
vdiph/aau_4 [aU] vi vdiph/aau_4 [aU] vi
vdiph/aau_6 [aU] de vdiph/aau_6 [aU] de
vdiph/eei [EI] base2 vdiph/eei [EI] base2
[eI] en [eI] en
[EI] de [EI] de
[eI] ne
[EI] nl [EI] nl
[EI] vi [EI] vi
[eI] hy [eI] hy
[eI] ne
[eI] prs [eI] prs
vdiph/eei_2 [eI] eo vdiph/eei_2 [eI] eo
[ei] fi [ei] fi
vdiph/eu [eU] base2 vdiph/eu [eU] base2
[eU] cy [eU] cy
[eU] eo [eU] eo
[eU] ne
[eU] lt [eU] lt
[eU] nl [eU] nl
[eU] sk [eU] sk
[eU] pt [eU] pt
[eU] vi [eU] vi
[eU] ne
vdiph/eu_2 [eu] fi vdiph/eu_2 [eu] fi
[eu] mt [eu] mt
vdiph/@i [Yi] et vdiph/@i [Yi] et
vdiph/oi [oI] base2 vdiph/oi [oI] base2
[OI] en-wm [OI] en-wm
[OY] de [OY] de
[oI] ne
[oI] it [oI] it
[OI] la [OI] la
[OI] is [OI] is
[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/oou [oU] cs vdiph/oou [oU] cs
[OU] grc [OU] grc
vdiph/ou [ou] fi vdiph/ou [ou] fi
[ou] zhy
[oU] ne [oU] ne
[ou] zhy
[ou] mt [ou] mt
vdiph/ou_2 [oU] lt vdiph/ou_2 [oU] lt
[oU] sk [oU] sk
[@U] id [@U] id
vdiph/ui [uI] base2 vdiph/ui [uI] base2
[uI] eo [uI] eo
[uI] ne
[ui] lt [ui] lt
[ui] lv [ui] lv
[uI] vi [uI] vi
[ui] zhy [ui] zhy
[uI] ne
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
[@2] en-sc [@2] en-sc
[@5] en-sc [@5] en-sc
[@3] hi [@3] hi
[@3] ne
[@3] ur [@3] ur
[@] da [@] da
[@3] ne
[@] am [@] am
vowel/3_2 [3:] en-n vowel/3_2 [3:] en-n
[@] zh [@] zh
vowel/aa_9 [a] fi vowel/aa_9 [a] fi
[a] et [a] et
[a:] hi [a:] hi
[a:] bn
[a] ne [a] ne
[a] pa [a] pa
[a] ak [a] ak
[a] mt [a] mt
[A] kk [A] kk
vowel/@_bck [@] hi vowel/@_bck [@] hi
[@] bn
[V] ne
[@/] ne
[@] ur [@] ur
[@] bg [@] bg
[@] zh [@] zh
[V] ne
[@/] ne
[@] pa [@] pa
vowel/e [e] base vowel/e [e] base
[e] base2 [e] base2
[eI] en-wi [eI] en-wi
[e:] af [e:] af
[e:] cy [e:] cy
[e] ne
[e] ta [e] ta
[e:] ta [e:] ta
[e] kn [e] kn
[?e] da [?e] da
[e] rw [e] rw
[e#] rw [e#] rw
[e] ne
[e] wo [e] wo
[e:] wo [e:] wo
[e] dv [e] dv
[i] en-wi [i] en-wi
[i:] cy [i:] cy
[i] eo [i] eo
[i] ne
[i:] ta [i:] ta
[i:] kn [i:] kn
[i:] ml [i:] ml
[i] ka [i] ka
[i] rw [i] rw
[i#] rw [i#] rw
[i] ne
[i] prs [i] prs
[i] nso [i] nso
[i] ak [i] ak
[@] hi [@] hi
[V] hi [V] hi
[@2] hi [@2] hi
[@] ml
[@] bn
[V] ne
[@/] ne
[@] ur [@] ur
[@2] ur [@2] ur
[@] ml
[@] ro [@] ro
[a#] no [a#] no
[@] id [@] id
[V] ne
[@/] ne
[@] pa [@] pa
[V] pa [V] pa
[@] si [@] si
[o] kl [o] kl
vowel/o_2 [o:] cy vowel/o_2 [o:] cy
[o:] hi [o:] hi
[o:] bn
[o:] hu [o:] hu
[o:] la [o:] la
[o:] no [o:] no
vowel/o_mid [U@] en-rp vowel/o_mid [U@] en-rp
[o] et [o] et
[O] fr [O] fr
[o] ne
[o] hu [o] hu
[o] bg [o] bg
[o] tr [o] tr
[o] ne
[o] az [o] az
[o] dv [o] dv
[o:] dv [o:] dv
[u] fi [u] fi
[u] fr-ca [u] fr-ca
[u:] hi [u:] hi
[u] ne
[u:] hu [u:] hu
[u:] lt [u:] lt
[u] nl [u] nl
[u] ka [u] ka
[u] rw [u] rw
[u#] rw [u#] rw
[u] ne
[u] pa [u] pa
[u] mt [u] mt
[u:] ga [u:] ga

+ 2
- 2
phsource/ph_hindi View File



phoneme a: phoneme a:
vowel long starttype #a endtype #a vowel long starttype #a endtype #a
length 230
length 190
FMT(vowel/aa_9) FMT(vowel/aa_9)
endphoneme endphoneme




phoneme o: phoneme o:
vowel long starttype #o endtype #o vowel long starttype #o endtype #o
length 220
length 227
FMT(vowel/o_2) FMT(vowel/o_2)
endphoneme endphoneme



+ 18
- 1
phsource/ph_malayalam View File

endphoneme endphoneme


phoneme r phoneme r
import_phoneme base/*
import_phoneme base/**
endphoneme endphoneme


phoneme R phoneme R
phoneme d# // 'rr' sounds like English 'd' phoneme d# // 'rr' sounds like English 'd'
import_phoneme base/d import_phoneme base/d
endphoneme endphoneme


phoneme kh2
vls vel stop
lengthmod 2
voicingswitch g
Vowelin f1=0 f2=2300 200 300 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/k_asp2, 50)
ENDIF
IF nextPh(l) THEN
WAV(ustop/kl)
ENDIF
WAV(ustop/k_asp2, 90)
endphoneme


+ 2
- 12
phsource/ph_pt_brazil View File

endphoneme endphoneme




phoneme x // this is [R] from Slovak/Czech
liquid
trill
ipa ʁ
lengthmod 6
IF thisPh(isWordStart) THEN
ChangePhoneme(h) // Change by Cleverson 22.09.2012
ENDIF

Vowelin f1=0 f2=1700 -300 300 f3=-300 80
Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
FMT(r3/r_trill) addWav(r3/r_trill.wav, 50)
phoneme x // (previously [R] from Slovak/Czech)
import_phoneme base/h
endphoneme endphoneme





+ 9
- 9
phsource/phonemes View File

phonemetable hi base phonemetable hi base
include ph_hindi include ph_hindi


phonemetable bn hi
include ph_bengali

phonemetable ne hi
include ph_nepali

phonemetable ur hi
include ph_urdu

phonemetable ta hi phonemetable ta hi
include ph_tamil include ph_tamil


phonemetable ml hi phonemetable ml hi
include ph_malayalam include ph_malayalam


phonemetable ur hi
include ph_urdu



phonemetable hu base phonemetable hu base
include ph_hungarian include ph_hungarian
phonemetable rw base2 phonemetable rw base2
include ph_kinyarwanda include ph_kinyarwanda


//phonemetable bn hi
//include ph_bengali

phonemetable ne hi
include ph_nepali

//phonemetable mr hi //phonemetable mr hi
//include ph_marathi //include ph_marathi



+ 38
- 29
src/compiledict.cpp View File



MNEM_TAB mnem_rules[] = { MNEM_TAB mnem_rules[] = {
{"unpr", 0x01}, {"unpr", 0x01},

{"w_alt1", 0x11}, {"w_alt1", 0x11},
{"w_alt2", 0x12}, {"w_alt2", 0x12},
{"w_alt3", 0x13}, {"w_alt3", 0x13},
// {"w_alt4", 0x14},
{"w_alt4", 0x14},
{"w_alt5", 0x15},
{"w_alt6", 0x16},
{"w_alt", 0x11}, // note: put longer names before their sub-strings {"w_alt", 0x11}, // note: put longer names before their sub-strings

{"p_alt1", 0x21}, {"p_alt1", 0x21},
{"p_alt2", 0x22}, {"p_alt2", 0x22},
{"p_alt3", 0x23}, {"p_alt3", 0x23},
// {"p_alt4", 0x24},
{"p_alt4", 0x24},
{"p_alt5", 0x25},
{"p_alt6", 0x26},
{"p_alt", 0x21}, {"p_alt", 0x21},
{NULL, -1} }; {NULL, -1} };






// these set the corresponding numbered bit if dictionary_flags // these set the corresponding numbered bit if dictionary_flags
{"$pause", 8}, /* ensure pause before this word */
{"$only", 9}, /* only match on this word without suffix */
{"$onlys", 10}, /* only match with none, or with 's' suffix */
{"$strend", 11}, /* full stress if at end of clause */
{"$strend2", 12}, /* full stress if at end of clause, or only followed by unstressed */
{"$unstressend",13}, /* reduce stress at end of clause */
{"$atend", 14}, /* use this pronunciation if at end of clause */
{"$atstart", 15}, // use this pronunciation at start of clause

{"$abbrev", 17}, /* use this pronuciation rather than split into letters */
{"$stem", 18}, // must have a suffix
{"$pause", 8}, // ensure pause before this word
{"$strend", 9}, // full stress if at end of clause
{"$strend2", 10}, // full stress if at end of clause, or only followed by unstressed
{"$unstressend",11}, // reduce stress at end of clause
{"$abbrev", 13}, // use this pronuciation rather than split into letters


// language specific // language specific
{"$double", 19}, // IT double the initial consonant of next word
{"$alt", 20}, // use alternative pronunciation
{"$alt1", 20}, // synonym for $alt
{"$alt2", 21},
{"$alt3", 22},
{"$double", 14}, // IT double the initial consonant of next word
{"$alt", 15}, // use alternative pronunciation
{"$alt1", 15}, // synonym for $alt
{"$alt2", 16},
{"$alt3", 17},
{"$alt4", 18},
{"$alt5", 19},
{"$alt6", 20},

{"$combine", 23}, // Combine with the next word {"$combine", 23}, // Combine with the next word


{"$dot", 24}, // ignore '.' after this word (abbreviation) {"$dot", 24}, // ignore '.' after this word (abbreviation)
{"$text", 29}, // word translates to replcement text, not phonemes {"$text", 29}, // word translates to replcement text, not phonemes


// flags in dictionary word 2 // flags in dictionary word 2
{"$verbf", 0x20}, /* verb follows */
{"$verbsf", 0x21}, /* verb follows, allow -s suffix */
{"$nounf", 0x22}, /* noun follows */
{"$pastf", 0x23}, /* past tense follows */
{"$verb", 0x24}, /* use this pronunciation when its a verb */
{"$noun", 0x25}, /* use this pronunciation when its a noun */
{"$past", 0x26}, /* use this pronunciation when its past tense */
{"$verbextend",0x28}, /* extend influence of 'verb follows' */
{"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */
{"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */
{"$verbf", 0x20}, // verb follows
{"$verbsf", 0x21}, // verb follows, allow -s suffix
{"$nounf", 0x22}, // noun follows
{"$pastf", 0x23}, // past tense follows
{"$verb", 0x24}, // use this pronunciation when its a verb
{"$noun", 0x25}, // use this pronunciation when its a noun
{"$past", 0x26}, // use this pronunciation when its past tense
{"$verbextend",0x28}, // extend influence of 'verb follows'
{"$capital", 0x29}, // use this pronunciation if initial letter is upper case
{"$allcaps", 0x2a}, // use this pronunciation if initial letter is upper case
{"$accent", 0x2b}, // character name is base-character name + accent name {"$accent", 0x2b}, // character name is base-character name + accent name
{"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :} {"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :}
{"$only", 0x2e}, // only match on this word without suffix
{"$onlys", 0x2f}, // only match with none, or with 's' suffix
{"$stem", 0x30}, // must have a suffix
{"$atend", 0x31}, // use this pronunciation if at end of clause
{"$atstart", 0x32}, // use this pronunciation at start of clause


// doesn't set dictionary_flags // doesn't set dictionary_flags
{"$?", 100}, // conditional rule, followed by byte giving the condition number {"$?", 100}, // conditional rule, followed by byte giving the condition number


// PROBLEM vowel reductions are not applied to the translated phonemes // PROBLEM vowel reductions are not applied to the translated phonemes
// condition rules are not applied // condition rules are not applied
TranslateWord(translator,phonetic,0,NULL);
TranslateWord(translator,phonetic,0,NULL,NULL);
text_not_phonemes = 0; text_not_phonemes = 0;
strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4); strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4);



+ 14
- 7
src/dictionary.cpp View File

int no_phonemes; int no_phonemes;
int skipwords; int skipwords;
int ix; int ix;
int c;
const char *word_end; const char *word_end;
const char *word1; const char *word1;
int wflags = 0; int wflags = 0;
// int wflags2;
char word_buf[N_WORD_BYTES+1]; char word_buf[N_WORD_BYTES+1];


if(wtab != NULL) if(wtab != NULL)
if((end_flags & FLAG_SUFX)==0) if((end_flags & FLAG_SUFX)==0)
{ {
// no suffix has been removed // no suffix has been removed
if(dictionary_flags & FLAG_STEM)
if(dictionary_flags2 & FLAG_STEM)
continue; // this word must have a suffix continue; // this word must have a suffix
} }


if((end_flags & SUFX_P) && (dictionary_flags & (FLAG_ONLY | FLAG_ONLY_S)))
if((end_flags & SUFX_P) && (dictionary_flags2 & (FLAG_ONLY | FLAG_ONLY_S)))
continue; // $only or $onlys, don't match if a prefix has been removed continue; // $only or $onlys, don't match if a prefix has been removed


if(end_flags & FLAG_SUFX) if(end_flags & FLAG_SUFX)
{ {
// a suffix was removed from the word // a suffix was removed from the word
if(dictionary_flags & FLAG_ONLY)
if(dictionary_flags2 & FLAG_ONLY)
continue; // no match if any suffix continue; // no match if any suffix


if((dictionary_flags & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0))
if((dictionary_flags2 & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0))
{ {
// only a 's' suffix allowed, but the suffix wasn't 's' // only a 's' suffix allowed, but the suffix wasn't 's'
continue; continue;
continue; continue;
} }


if((dictionary_flags & FLAG_ATEND) && (word_end < tr->clause_end))
if((dictionary_flags2 & FLAG_ATEND) && (word_end < tr->clause_end))
{ {
// only use this pronunciation if it's the last word of the clause // only use this pronunciation if it's the last word of the clause
continue; continue;
} }


if((dictionary_flags & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD))
if((dictionary_flags2 & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD))
{ {
// only use this pronunciation if it's the first word of a clause // only use this pronunciation if it's the first word of a clause
continue; continue;
fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags)); fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags));
} }
} }

ix = utf8_in(&c, word);
if((word[ix] == 0) && !IsAlpha(c))
{
flags[0] |= FLAG_MAX3;
}
return(word_end); return(word_end);


} }


found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab); found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);



if(flags[0] & FLAG_MAX3) if(flags[0] & FLAG_MAX3)
{ {
if(strcmp(ph_out, tr->phonemes_repeat) == 0) if(strcmp(ph_out, tr->phonemes_repeat) == 0)

+ 5
- 5
src/extras.cpp View File

} }


// translate // translate
TranslateWord(translator,&word1[1],0, NULL);
TranslateWord(translator,&word1[1],0, NULL, NULL);
DecodePhonemes(word_phonemes,phonemes); DecodePhonemes(word_phonemes,phonemes);


stress_posn1 = 0; stress_posn1 = 0;
vowel_ix++; vowel_ix++;
} }


TranslateWord(translator,&word2[1],0, NULL);
TranslateWord(translator,&word2[1],0, NULL, NULL);
DecodePhonemes(word_phonemes,phonemes2); DecodePhonemes(word_phonemes,phonemes2);


vowel_ix = 1; vowel_ix = 1;
} }


// translate // translate
TranslateWord(translator,&word2[1],0, NULL);
TranslateWord(translator,&word2[1],0, NULL, NULL);


DecodePhonemes2(word_phonemes,phonemes); // also need to change some phoneme names DecodePhonemes2(word_phonemes,phonemes); // also need to change some phoneme names


*pw1 = 0; *pw1 = 0;


// translate // translate
TranslateWord(translator, &word[2],0, NULL);
TranslateWord(translator, &word[2],0, NULL, NULL);
DecodePhonemes(word_phonemes,phonemes); DecodePhonemes(word_phonemes,phonemes);


// find the stress position in the translation // find the stress position in the translation
} }


// translate // translate
TranslateWord(translator, &word2[1],0, NULL);
TranslateWord(translator, &word2[1],0, NULL, NULL);
DecodePhonemes(word_phonemes,phonemes); DecodePhonemes(word_phonemes,phonemes);


// find the stress position in the translation // find the stress position in the translation

+ 2
- 2
src/menus.cpp View File



// DATA MENU // DATA MENU
data_menu = new wxMenu; data_menu = new wxMenu;
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data"));
data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate"));
data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary"));
data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)"));
data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data"));
data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate"));
data_menu->AppendSeparator(); data_menu->AppendSeparator();
data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list..."));
data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data"));

+ 23
- 11
src/numbers.cpp View File

current_alphabet = alphabet; current_alphabet = alphabet;
if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME)) if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME))
{ {
phontab_1 = tr->phoneme_tab_ix;
ph_buf2[0] = 0;
if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice
{ {
// Can't find the local name for this alphabet, use the English name // Can't find the local name for this alphabet, use the English name
phontab_1 = tr->phoneme_tab_ix;
ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2
if(Lookup(translator2, alphabet->name, &ph_alphabet[3]) != 0)
{
ph_alphabet[0] = phonPAUSE;
ph_alphabet[1] = phonSWITCH;
len = strlen(&ph_alphabet[3]) + 3;
ph_alphabet[len] = phonSWITCH; // switch back
ph_alphabet[len+1] = phontab_1;
ph_alphabet[len+2] = 0;
}
Lookup(translator2, alphabet->name, ph_buf2);
}
else
if(translator != tr)
{
phontab_1 = tr->phoneme_tab_ix;
strcpy(ph_buf2, ph_alphabet);
ph_alphabet[2] = translator->phoneme_tab_ix;
}

if(ph_buf2[0] != 0)
{
// we used a different language for the alphabet name (now in ph_buf2)
ph_alphabet[0] = phonPAUSE;
ph_alphabet[1] = phonSWITCH;
strcpy(&ph_alphabet[3], ph_buf2);
len = strlen(ph_buf2) + 3;
ph_alphabet[len] = phonSWITCH;
ph_alphabet[len+1] = phontab_1;
ph_alphabet[len+2] = 0;
} }
} }
} }
nextflags = 0; nextflags = 0;
if(IsAlpha(c2)) if(IsAlpha(c2))
{ {
nextflags = TranslateWord(tr, &word_end[2], 0, NULL);
nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL);
} }


if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))

+ 2
- 2
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.46.38 27.Feb.13";
const int version_phdata = 0x014636;
const char *version_string = "1.46.39 01.Mar.13";
const int version_phdata = 0x014639;


int option_device_number = -1; int option_device_number = -1;
FILE *f_logespeak = NULL; FILE *f_logespeak = NULL;

+ 7
- 0
src/tr_languages.cpp View File

} }
break; break;


case L('g','a'): // irish
{
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
}
break;

case L('h','i'): // Hindi case L('h','i'): // Hindi
case L('n','e'): // Nepali case L('n','e'): // Nepali
case L('p','a'): // Punjabi case L('p','a'): // Punjabi

+ 19
- 7
src/translate.cpp View File







int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab)
{//===========================================================================
int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab, char *word_out)
{//==================================================================================================
// word1 is terminated by space (0x20) character // word1 is terminated by space (0x20) character


char *word1; char *word1;


if(dictionary_flags[0] & FLAG_TEXTMODE) if(dictionary_flags[0] & FLAG_TEXTMODE)
{ {
if(word_out != NULL)
strcpy(word_out, word1);

first_char = word1[0]; first_char = word1[0];
stress_bits = dictionary_flags[0] & 0x7f; stress_bits = dictionary_flags[0] & 0x7f;
found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement
int word_flags; int word_flags;
int word_copy_len; int word_copy_len;
char word_copy[N_WORD_BYTES+1]; char word_copy[N_WORD_BYTES+1];
char word_replaced[N_WORD_BYTES+1];
char old_dictionary_name[40]; char old_dictionary_name[40];


if((f_logespeak != NULL) && (logging_type & 8)) if((f_logespeak != NULL) && (logging_type & 8))
while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++; while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++;
word_copy_len = ix; word_copy_len = ix;


flags = TranslateWord(translator, word, next_pause, wtab);
word_replaced[2] = 0;
flags = TranslateWord(translator, word, next_pause, wtab, &word_replaced[2]);


if(flags & FLAG_SPELLWORD) if(flags & FLAG_SPELLWORD)
{ {
{ {
strcpy(ph_buf,word_phonemes); strcpy(ph_buf,word_phonemes);


flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1);
flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1, NULL);
if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH)) if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH))
ok = 0; ok = 0;


if(ok) if(ok)
{ {
*p2 = '-'; // replace next space by hyphen *p2 = '-'; // replace next space by hyphen
flags = TranslateWord(translator, word, next_pause, wtab); // translate the combined word
flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word
if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f)))
{ {
// revert to separate words // revert to separate words
*p2 = ' '; *p2 = ' ';
flags = TranslateWord(translator, word, next_pause, wtab);
flags = TranslateWord(translator, word, next_pause, wtab, NULL);
} }
else else
{ {
{ {
// re-translate the word using the new translator // re-translate the word using the new translator
wtab[0].flags |= FLAG_TRANSLATOR2; wtab[0].flags |= FLAG_TRANSLATOR2;
flags = TranslateWord(translator2, word, next_pause, wtab);
if(word_replaced[2] != 0)
{
word_replaced[0] = 0; // byte before the start of the word
word_replaced[1] = ' ';
flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL);
}
else
flags = TranslateWord(translator2, word, next_pause, wtab, NULL);
// strcpy((char *)p,translator2->word_phonemes); // strcpy((char *)p,translator2->word_phonemes);
if(p[0] == phonSWITCH) if(p[0] == phonSWITCH)
{ {

+ 21
- 21
src/translate.h View File

#define FLAG_SKIPWORDS 0x80 #define FLAG_SKIPWORDS 0x80
#define FLAG_PREPAUSE 0x100 #define FLAG_PREPAUSE 0x100


#define FLAG_ONLY 0x200
#define FLAG_ONLY_S 0x400
#define BITNUM_FLAG_ONLY 9 // bit 9 is set
#define BITNUM_FLAG_ONLY_S 10 // bit 10 is set

#define FLAG_STRESS_END 0x800 /* full stress if at end of clause */
#define FLAG_STRESS_END2 0x1000 /* full stress if at end of clause, or only followed by unstressed */
#define FLAG_UNSTRESS_END 0x2000 /* reduce stress at end of clause */
#define FLAG_ATEND 0x4000 /* use this pronunciation if at end of clause */
#define FLAG_ATSTART 0x8000 // use this pronunciation if at start of clause
#define FLAG_SPELLWORD 0x10000 // re-translate the word as individual letters, separated by spaces
#define FLAG_ABBREV 0x20000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
#define FLAG_STEM 0x40000 // must have a suffix

#define FLAG_DOUBLING 0x80000 // doubles the following consonant
#define BITNUM_FLAG_ALT 19 // bit number of FLAG_ALT_TRANS - 1
#define FLAG_ALT_TRANS 0x100000 // language specific
#define FLAG_ALT2_TRANS 0x200000 // language specific
#define FLAG_ALT3_TRANS 0x400000 // language specific
#define FLAG_COMBINE 0x800000 // combine with the next word
#define FLAG_STRESS_END 0x200 // full stress if at end of clause
#define FLAG_STRESS_END2 0x400 // full stress if at end of clause, or only followed by unstressed
#define FLAG_UNSTRESS_END 0x800 // reduce stress at end of clause
#define FLAG_SPELLWORD 0x1000 // re-translate the word as individual letters, separated by spaces
#define FLAG_ABBREV 0x2000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
#define FLAG_DOUBLING 0x4000 // doubles the following consonant

#define BITNUM_FLAG_ALT 14 // bit number of FLAG_ALT_TRANS - 1
#define FLAG_ALT_TRANS 0x8000 // language specific
#define FLAG_ALT2_TRANS 0x10000 // language specific
#define FLAG_ALT3_TRANS 0x20000 // language specific
#define FLAG_COMBINE 0x40000 // combine with the next word


#define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation)
#define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot
#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 FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2
#define FLAG_SENTENCE 0x2000 // only if the clause is a sentence #define FLAG_SENTENCE 0x2000 // only if the clause is a sentence
#define FLAG_ONLY 0x4000
#define FLAG_ONLY_S 0x8000
#define FLAG_STEM 0x10000 // must have a suffix
#define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */
#define FLAG_ATSTART 0x30000 // use this pronunciation if at start of clause

#define BITNUM_FLAG_ALLCAPS 0x2a #define BITNUM_FLAG_ALLCAPS 0x2a
#define BITNUM_FLAG_HYPHENATED 0x2c #define BITNUM_FLAG_HYPHENATED 0x2c
#define BITNUM_FLAG_ONLY 0x2e
#define BITNUM_FLAG_ONLY_S 0x2f




// wordflags, flags in source word // wordflags, flags in source word
int Unpronouncable(Translator *tr, char *word, int posn); int Unpronouncable(Translator *tr, char *word, int posn);
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress); void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab, char *word_out);
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change); int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change);



+ 13
- 6
src/voices.cpp View File

break; break;


case V_DICTRULES: // conditional dictionary rules and list entries case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS:
// expect a list of numbers
while(*p != 0) while(*p != 0)
{ {
while(isspace(*p)) p++; while(isspace(*p)) p++;
n = -1; n = -1;
if(((n = atoi(p)) > 0) && (n < 32))
if((n = atoi(p)) > 0)
{ {
p++; p++;
conditional_rules |= (1 << n);
if((key==V_DICTRULES) && (n < 32))
conditional_rules |= (1 << n);
else
if((key==V_NUMBERS) && (n < 32))
langopts->numbers |= (1 << n);
else
if((key==V_NUMBERS) && (n < 64))
langopts->numbers |= (1 << (n-32));
else
fprintf(stderr,"Bad option number %d\n", n);
} }
while(isalnum(*p)) p++; while(isalnum(*p)) p++;
} }
new_translator->charset_a0 = charsets[value]; new_translator->charset_a0 = charsets[value];
break; break;


case V_NUMBERS:
sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2);
break;

case V_OPTION: case V_OPTION:
value2 = 0; value2 = 0;
if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0)) if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0))

+ 1
- 1
src/wave_sada.cpp View File

#else #else
// notdef USE_SADA // notdef USE_SADA


void wave_init() {}
init wave_init() {}
void* wave_open(const char* the_api) {return (void *)1;} void* wave_open(const char* the_api) {return (void *)1;}
size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
int wave_close(void* theHandler) {return 0;} int wave_close(void* theHandler) {return 0;}

Loading…
Cancel
Save