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