Browse Source

Merge branch 'development'

master
Reece H. Dunn 12 years ago
parent
commit
2d203989f9
89 changed files with 1329 additions and 599 deletions
  1. 278
    0
      dictsource/bn_list
  2. 316
    0
      dictsource/bn_rules
  3. 3
    1
      dictsource/en_list
  4. 8
    6
      dictsource/en_rules
  5. 34
    34
      dictsource/hi_list
  6. 222
    222
      dictsource/hi_rules
  7. 50
    18
      dictsource/ml_list
  8. 126
    125
      dictsource/ml_rules
  9. 52
    55
      dictsource/pa_list
  10. 4
    3
      dictsource/pt_list
  11. 1
    0
      dictsource/pt_rules
  12. 5
    0
      dictsource/ur_list
  13. 4
    3
      dictsource/ur_rules
  14. 0
    0
      espeak-data/voices/asia/fa
  15. 0
    0
      espeak-data/voices/asia/fa-pin
  16. 0
    0
      espeak-data/voices/asia/hi
  17. 0
    0
      espeak-data/voices/asia/hy
  18. 0
    0
      espeak-data/voices/asia/hy-west
  19. 1
    1
      espeak-data/voices/asia/id
  20. 2
    0
      espeak-data/voices/asia/ka
  21. 0
    0
      espeak-data/voices/asia/kn
  22. 0
    0
      espeak-data/voices/asia/ku
  23. 0
    0
      espeak-data/voices/asia/ml
  24. 1
    1
      espeak-data/voices/asia/ne
  25. 0
    0
      espeak-data/voices/asia/ta
  26. 0
    0
      espeak-data/voices/asia/tr
  27. 0
    0
      espeak-data/voices/asia/vi
  28. 0
    0
      espeak-data/voices/asia/vi-hue
  29. 0
    0
      espeak-data/voices/asia/zh
  30. 0
    0
      espeak-data/voices/asia/zh-yue
  31. 0
    0
      espeak-data/voices/en
  32. 0
    0
      espeak-data/voices/en-us
  33. 5
    0
      espeak-data/voices/europe/bg
  34. 0
    0
      espeak-data/voices/europe/bs
  35. 0
    0
      espeak-data/voices/europe/ca
  36. 0
    0
      espeak-data/voices/europe/cs
  37. 1
    1
      espeak-data/voices/europe/cy
  38. 0
    0
      espeak-data/voices/europe/da
  39. 0
    0
      espeak-data/voices/europe/el
  40. 0
    0
      espeak-data/voices/europe/es
  41. 0
    0
      espeak-data/voices/europe/et
  42. 0
    0
      espeak-data/voices/europe/fi
  43. 0
    0
      espeak-data/voices/europe/fr-be
  44. 0
    0
      espeak-data/voices/europe/hr
  45. 0
    0
      espeak-data/voices/europe/hu
  46. 1
    1
      espeak-data/voices/europe/is
  47. 0
    0
      espeak-data/voices/europe/it
  48. 0
    0
      espeak-data/voices/europe/lv
  49. 1
    1
      espeak-data/voices/europe/mk
  50. 0
    0
      espeak-data/voices/europe/nl
  51. 0
    0
      espeak-data/voices/europe/no
  52. 0
    0
      espeak-data/voices/europe/pl
  53. 0
    0
      espeak-data/voices/europe/pt-pt
  54. 0
    0
      espeak-data/voices/europe/ro
  55. 1
    1
      espeak-data/voices/europe/ru
  56. 0
    0
      espeak-data/voices/europe/sk
  57. 0
    0
      espeak-data/voices/europe/sq
  58. 0
    0
      espeak-data/voices/europe/sr
  59. 0
    0
      espeak-data/voices/europe/sv
  60. 0
    2
      espeak-data/voices/ka
  61. 0
    0
      espeak-data/voices/other/af
  62. 0
    0
      espeak-data/voices/other/en-n
  63. 0
    0
      espeak-data/voices/other/en-rp
  64. 0
    0
      espeak-data/voices/other/en-sc
  65. 0
    0
      espeak-data/voices/other/en-wi
  66. 0
    0
      espeak-data/voices/other/en-wm
  67. 0
    0
      espeak-data/voices/other/eo
  68. 0
    0
      espeak-data/voices/other/grc
  69. 0
    0
      espeak-data/voices/other/jbo
  70. 0
    0
      espeak-data/voices/other/la
  71. 0
    0
      espeak-data/voices/other/sw
  72. 0
    5
      espeak-data/voices/test/bg
  73. 0
    4
      espeak-data/voices/test/ga
  74. 37
    0
      phsource/ph_bengali
  75. 2
    2
      phsource/ph_hindi
  76. 18
    1
      phsource/ph_malayalam
  77. 2
    12
      phsource/ph_pt_brazil
  78. 9
    9
      phsource/phonemes
  79. 38
    29
      src/compiledict.cpp
  80. 14
    7
      src/dictionary.cpp
  81. 5
    5
      src/extras.cpp
  82. 2
    2
      src/menus.cpp
  83. 23
    11
      src/numbers.cpp
  84. 2
    2
      src/synthdata.cpp
  85. 7
    0
      src/tr_languages.cpp
  86. 19
    7
      src/translate.cpp
  87. 21
    21
      src/translate.h
  88. 13
    6
      src/voices.cpp
  89. 1
    1
      src/wave_sada.cpp

+ 278
- 0
dictsource/bn_list View File

// Translation rules for Bengali
// This file is UTF8 encoded

// Numbers
devanagari numbers are changed to latin characters before translation
_0 S'u:n.nV'o:
_1 a'k
_2 d:UI
_3 t'i:n
_4 c'a:@'r
_5 ,pa~c
_6 ch'O:j
_7 S'a:t
_8 'a:th.
_9 n'O:j

_10 d'O:S
_11 a'g'a:rO:
_12 b'a:rO:
_13 t'a:rO:
_14 ch:O:d'dO:
_15 p'O:n'e:rO:
_16 S'o:lO:
_17 SO:t'e:rO:
_18 a:th'e:rO:
_19 U'n'IS

_20 kU:'ri
_21 e:kU'S
_22 b'a:IS
_23 t'e:IS
_24 c'O:b'bIS
_25 pa~O:c'IS
_26 ch'a:'bb'IS
_27 Sa:ta:S
_28 ath'a:S
_29 Unt'rIs
_30 t'i:rIS

_31 e:k't:rIS
_32 bat:'rIS
_33 tE't'rIS
_34 ca~o:u:t'rIS
_35 pa~O:it'rIS
_36 cha'trIS
_37 Sa~it'rIS
_38 at'tr'IS
_39 U'nO:cO:l'IS

_40 co:l'lIS
_41 e:k'co:l'lIS
_42 bi'al'lIS
_43 te:ta:l'lIS
_44 cu:a:l'lIS
_45 paI'nta:l'lIS
_46 che:co:l'lIS
_47 Sat'co:l'lIs
_48 at'co:l'lIS
_49 Uno:pan'ca:S

_50 p@n'ca:s
_51 e:ka:n'no:
_52 ba:h@n'no:
_53 t'Ip'pan'no:
_54 cu:wan'no:
_55 po:n'ca:n'no:
_56 chh@p:'an'no:
_57 Sa:ta:n'no:
_58 ath'a:n'no:
_59 Uno:s'ath

_60 s'a:th.
_61 e:k'so:t'tI
_62 ba:so:t'tI
_63 te:so:t'tI
_64 ca~o:u:so:t'tI
_65 pa~I'so:t'tI
_66 che:so:t'tI
_67 Sat'so:t'tI
_68 atso:t'ti
_69 ,Uno:Sat'to:r

_70 So:t'to:r
_71 e:kat'to:r
_72 ba:hat'to:r
_73 tIat'to:r
_74 cu:at'to:r
_75 pa~chat'to:r
_76 chI'at:to:r
_77 Sa:t@'t:o:r
_78 atat'to:r
_79 ,Uno:a:Si:

_80 a:Si
_81 e:ka:Si:
_82 bI'ra:Si:
_83 tIra:Si:
_84 cu:ra:Si:
_85 pa~ca:Si:
_86 chIa:Si:
_87 Sa:ta:Si:
_88 O:sto:a:Si:
_89 Uno:no:b'bo:I

_90 no:b:bo:I
_91 e:ka:no:b'bo:I
_92 bIra:no:b'bo:I
_93 tIr'a:no:b'bo:I
_94 cu:r'a:no:b'bo:I
_95 pa~ca:no:b'bo:I
_96 chIa:no:b'bo:I
_97 S@ta:no:b'bo:I
_98 ata:no:b'bo:I
_99 nIra:no:b'bo:I

_0C SO:
_0M1 h@z'a:r
_0M2 l'a:kh
_0M3 ko:tI
_0M4 o:r'bu:d
_dpt d@so:mIk

// Single consonants
ক k@
খ kh@
গ g@
ঘ gh@
ঙ N'g
চ c@
ছ ch@
জ J@
ঝ Jh@
ঞ n^@
ট t.@
ঠ th.@
ড d.@
ঢ dh.@
ণ n.@ // retroflex n.@
ত t@
থ th@
দ d@
ধ dh@
ন n@
প p@
ফ ph@
ব b@
ভ bh@
ম m@
য় O:j
য J@
র r@
ড় r-@
ঢ় hr@
ল l@
শ S@
ষ s.@ // retroflex [S]
স s@
হ H@
ৎ t@


// combining vowel signs
ा #X2a:
ि #X1I
ी #X2i:
ূ #X1U
ू #X2u:
ृ #X1rI
ে #X1e:
ৈ #X2E:
ো #X1o:
ৌ #X1O:
ॐ #X1o~m


// Punctuation
। dVn.d.V

// Pronouns
আমি $u // main: I
আমায় $u
আমার $u

আমরা $u // we
আমাদের $u

আপনি $u // you(formal)
আপনাকে $u
আপনার $u

তুমি $u // you (informal)
তোমায় $u
তোমার $u
তোমাদের $u

তুই $u // you (informal)
তোকে $u
তোর $u

এ $u // he/she/it
একে $u
এটার $u
এর $u

ইনি $u // they
এনাকে $u
এনার $u

ও $u // he/she/it
সে $u
ওর $u
তার $u

ওরা $u // they
তারা $u
ওদের $u // unheṃ: them
তাদের $u

এই $u // e:I this/it
এটা $u // e:ta: this/it
এটার $u // e:ta:'r this/it
এর $u // e:r this/it

ওটা $u // o:ta: that
ওটাকে $u // o:ta:ke: to that
ওটার $u // o:ta:'r of that

ওগুলো $u // o:gu:lo: those
ওগুলোকে $u // o:gu:lo:ke: to those
ওগুলোর $u // o:gu:lo:'r of those



// Prepositions/Postpositions
মধ্যে $u // moddhe in
উপর $u // upor on, above
নীচে $u // niche below

পূর্ব্বে $u // purbe before, prior
পর্য্যন্ত $u // parjonto till
অব্দি $u // abdi till
বিনা $u // bina without



// Questions
কেন $u $pause // kano why interrogative particle
কি $u $pause // ki what
কোথায় $u $pause // kothaay where
কখন $u $pause // kakhon when
কে $u $pause // ke who

// Conjunctions

এবং $u $pause // ebong: and
আর $u $pause // aar: and
অথবা $u $pause // athoba: or
কিন্তু $u $pause // kintu: but
যদি $pause // jodi: if
তবু $pause // tobu: still, yet
তবে $pause // tabe: if...then
অথচ $u // athacho: yet


// Verbs

ছিল $u // chilo: past aux
ছিলেন $u // chilen


করছি $u // korchi: continuous
করছিলাম $u // korchilam: past indefinite
করেছি $u // korechi: past


// Exceptions
ক্রিকেট krIk'Et
সাইবার s'aIb@r

+ 316
- 0
dictsource/bn_rules View File


// This file is UTF8 encoded

// letter groups:
// A vowel letters and vowel signs
// B vowel signs and virama ्
// C consonants
// Y vowel letters and vowel signs

// conditional rules
// ?2 use diphthong for "ai"
// ?3 use diphthong for "au"


.replace
০ 0
১ 1
২ 2
৩ 3
৪ 4
৫ 5
৬ 6
৭ 7
৮ 8
৯ 9


// Vowels


.group অ
অ a

.group আ
আ a:

.group ই
ই I
ইঁ i~
ইং I'ng

.group ঈ
ঈ i:
ঈ (_ i

.group উ
উ U

.group ঊ
ঊ u:
ঊং u~ // + anusvara
ঊঁ u~ // + candrabinbu

.group ঋ
ঋ rI

.group এঁ
এঁ E // candra e

.group ঐ
ঐ e

.group এ
এ e:

.group ঐ
ঐ E: // ?? [aI] [E:] [&:]
ঐং E~
ঐঁ E~
?2 ঐ aI // ?? [aI] [E:] [&:]


.group ওঁ
ওঁ O // candra O

.group ঔ
ঔ o

.group ও
ও o:
ওং o~ // +anusvara
ওঁ o~ // +candrabindu

.group ঔ
ঔ O: // ?? [aU] [O:]
ঔঁ O~ // +candrabindu


// Vowel Signs

.group া
া a:
.group ি
ি I
.group ী
ী i:
ী (_ i

.group ূ
ূ U

.group ু
ু u:
.group ৃ
ৃ rI

.group ে
ে e:

.group ৈ
ৈ E: // ?? [aI] [E:] [&:]
.group ো
ো o:
.group ৌ
ৌ O: // [O:] or [aU] ??
.group ॐ
ॐ o~m

// Consonants

.group ক
ক k@
ক (B k
ক্য (्য kja:
ক্ষ kh'@

.group খ
খ khV
খ (B kh@
.group গ
গ gV
গ (B g@
ঈ)গ (ল g@

.group ঘ
ঘ ghV
ঘ (B gh

.group ঙ
ঙ N'g
ঙ্ (B N
গা)ঙ (চি Ng@

.group চ
চ cV
চ (B c
্য) চ্য c'j@

.group ছ
ছ chV
ছ (B ch@

.group জ
জ J@
জ (B J@
্) জ zV
জ (B J@

.group ঝ
ঝ Jh@
ঝ (B Jh@

.group ঞ
ঞ n^V
ঞ্ (B n^
.group ট
ট tV
ট (B tV
ট (्য় t.j@

.group ঠ
ঠ thV
ঠ (B th.

.group ড
ড d.V
ড (B d.

.group ঢ
ঢ dh.V
ঢ (B dh.
.group ণ
ণ n.V // (temporary) same as dental [n]
ণ (B n.
ণ্ম n.m


.group ত
ত t@
ত (B t@
.group থ
থ th@
থ (B th.
ক) থ (ন th@

.group দ
দ d@
দ (B d.
ব) দ (ল d@

.group ধ
ধ dh@
ধ (B dh.
সা) ধ (ন dh@

.group ন
ন n@
ন (B n@
্) ন (্ n@
র্) ন (_ r.n // r +virama অর্ণব


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

.group প
প p@
প (B p
প্য (्য p:

.group ফ
ফ ph@
ফ (B ph@
ফ ph@

.group ব
ব b@
ব (B b@

.group ভ
ভ bh@
ভ (B bh@

.group ম
ম mV
्) ম (_ mV
র্) ম (_ r.m@ // r +virama
ন্) ম (_ n.m // n +virama

.group য়
য় jV
য় (B jV
.group য
য J@
য (B J@
्) য (_ ja

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


.group ল
ল l
ল (B l@
ক) ল (ম l@


.group শ
শ S@
শ (B S@

.group ষ
ষ s
ষ (B s //??

.group স
স s@
স (B s.

.group হ
হ H@
হ (B H@
হ্ব v@
.group হ্ব
B) হ্ব (B v@
.group ৎ
ৎ (B t@t



// nukta, modifies a consonant

.group ্যা // ja'falaa
্যা a

.group ँ
ँ n // candrabindu

.group ং
ং aN'g // anusvara

.group ः
ः H // visarga

.group ্ // virama






+ 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

+ 52
- 55
dictsource/pa_list View File


// This file is UTF8 encoded // This file is UTF8 encoded
// Punjabi/Gurmukhi // Punjabi/Gurmukhi


_16 s'ol.a~ _16 s'ol.a~
_17 s@t'aRa~ _17 s@t'aRa~
_18 Vth.'aRa~ _18 Vth.'aRa~
_19 'Uni
_19 'Unni


_20 v'iH _20 v'iH
_21 Ik:i _21 Ik:i
_22 b'ai _22 b'ai
_23 t'ei _23 t'ei
_24 c'Ovi _24 c'Ovi
_25 p'VnJhi
_25 p'Vc:i
_26 ch'Vb:i _26 ch'Vb:i
_27 s@t'ai _27 s@t'ai
_28 Vth.'ai _28 Vth.'ai
_30 t'iH _30 t'iH
_31 Ik'Vt:i _31 Ik'Vt:i
_32 b'Vt:i _32 b'Vt:i
_33 t'eti
_34 c'O~ti
_35 p'E~ti
_33 t'et:i
_34 c'ONti
_35 p'ENti
_36 ch'Vt:i _36 ch'Vt:i
_37 s'E~ti
_37 s'ENti

_38 Vth.'Vt:i _38 Vth.'Vt:i
_39 Un@t'ali
_39 U~Nt'ali


_40 c'ali _40 c'ali
_41 Ik@t'ali _41 Ik@t'ali
_42 b@t'ali
_42 be'ali
_43 t@R@t'ali _43 t@R@t'ali
_44 cOt'ali
_45 p@nJ@t'ali
_44 cUt'ali
_45 p@nt'ali
_46 chI'ali _46 chI'ali
_47 s@nt'ali _47 s@nt'ali
_48 Vth.:@t'ali
_49 'Un.I~Ja
_48 ,@R2@t'ali
_49 Un'VnJa


_50 p@nJ'aH _50 p@nJ'aH
_51 'Ik@vI~Ja
_52 b'VvI~Ja
_53 t'VR@vI~Ja
_54 c'VRI~Ja
_55 p'Vc@vI~Ja
_56 ch'VpI~Ja
_57 s'Vt@vI~Ja
_58 'Vth.:@vI~Ja
_51 ,@k@v'VnJa
_52 b@v'VnJa
_53 t,@R@v'VnJa
_54 cUR'VnJa
_55 p,@c@v'VnJa
_56 ch@p'VnJa
_57 s,@t@v'VnJa
_58 ,@th.@v'VnJa
_59 Un.'ath. _59 Un.'ath.


_60 s'Vth.: _60 s'Vth.:
_61 Ik'ath.
_62 b'ath.H
_63 t@R'eth.H
_64 c'Oth.H
_65 p'E~th.
_66 chI'ath.
_67 s@t'aH@th.
_68 Vth.:'ath.
_61 Ik'aH@t.
_62 b'aH@t.
_63 t@R'e~H@t.
_64 c'O~H@t.
_65 p'E~H@t.
_66 che'aH@t.
_67 s@t'aH@t.
_68 ,@th.'aH@t.
_69 Un.'Vt:@R _69 Un.'Vt:@R


_70 s'Vt:@R _70 s'Vt:@R
_71 IkH'Vt:@R
_71 Ik'Vt:@R
_72 b@H'Vt:@R _72 b@H'Vt:@R
_73 t@H'Vt:@R
_73 t@H'et:@R
_74 cOH'Vt:@R _74 cOH'Vt:@R
_75 p@nJ'Vt:@R
_75 p@J'Vt:@R
_76 chIH'Vt:@R _76 chIH'Vt:@R
_77 s@t'Vt:@R _77 s@t'Vt:@R
_78 Vth.'Vt:@R _78 Vth.'Vt:@R
_79 Un.'asi _79 Un.'asi


_80 'Vssi _80 'Vssi
_81 Ik'asi
_82 bI'asi
_83 t@R@'asi
_84 c@R'asi
_85 p@nJ'asi
_86 chI'asi
_81 ,IkI;'asi
_82 bI;'asi
_83 t,@RI;'asi
_84 cUR'asi
_85 p@c'asi
_86 chI;'asi
_87 s@t'asi _87 s@t'asi
_88 Vth.'asi _88 Vth.'asi
_89 Un.a~n@v'eN
_89 Un'an@v,e~


_90 n'Vb:e _90 n'Vb:e
_91 Ik@'an@v,e~
_92 bI;'an@v,e~
_93 t@R@'an@ve~
_94 c@R'an@ve~
_95 p@c'an@ve~
_91 Ik'an@v,e~
_92 b'an@v,e~
_93 t@R'a~n@v,e~
_94 cUR'an@v,e~
_95 p@c'an@v,e~
_96 chI'an@ve~ _96 chI'an@ve~
_97 s@t'an@ve~ _97 s@t'an@ve~
_98 Vth.'an@ve~ _98 Vth.'an@ve~
_99 nIR'Vnn@ve~
_99 n@R2'I~n@v,e~


_0C s'O _0C s'O
_0M1 H@J'aR _0M1 H@J'aR
ੱ VddVk ੱ VddVk
ਃ visaRg ਃ visaRg
੍ hVlVnt ੍ hVlVnt
ॄ addak



ਅ 'ERV ਅ 'ERV
ੲ 'IRI ੲ 'IRI
ੌ kVn'ORa ੌ kVn'ORa


। d.'Vnd.i । d.'Vnd.i
₹ rupi


ਸਰਕਾਰ sR@k'aR ਸਰਕਾਰ sR@k'aR
ਸਰਕਾਰੀ sR@k'aRi ਸਰਕਾਰੀ sR@k'aRi


$textmode
ਸੋਫਟਵਿਅਰ software
ਈਮੇਲ email
ਕੀਬੋਰਡ keyboard
ਬੋਰਡ board
$phonememode


// English words
ਸੋਫਟਵਿਅਰ s'OftwER
ਵੈਬਪੇਜ w'EbpeIdZ
ਈਮੇਲ 'i:meIl
ਕੀਬੋਰਡ k'i:boRd

+ 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

+ 5
- 0
dictsource/ur_list View File



// Exception of phonemes // Exception of phonemes


یہ jE $u
کہ kE $u
وہ wo: $u


پاکستان p'a:k'i:st'a:n پاکستان p'a:k'i:st'a:n

+ 4
- 3
dictsource/ur_rules View File





// vowel signs, alif acts as consonants at start of word if these follow // vowel signs, alif acts as consonants at start of word if these follow
.L01 َ ِ ُ و ی ع ا
.L01 َ ِ ُ و ی ع ا ے




// VOWELS // VOWELS
_) ا a _) ا a
_) او u: _) او u:
_) ای i: _) ای i:
ائ a:j


.group آ .group آ
آ a: آ a:
وُ u: وُ u:
وٗ u: وٗ u:
و (L01 v و (L01 v
_) و v
_) و vV


.group ی .group ی
ی e: ی e:
ی (L01 j ی (L01 j
ی (_ i: ی (_ i:
_) ی j
_) ی jV




.group ے // yeh barree .group ے // yeh barree

espeak-data/voices/test/fa → espeak-data/voices/asia/fa View File


espeak-data/voices/test/fa-pin → espeak-data/voices/asia/fa-pin View File


espeak-data/voices/hi → espeak-data/voices/asia/hi View File


espeak-data/voices/hy → espeak-data/voices/asia/hy View File


espeak-data/voices/hy-west → espeak-data/voices/asia/hy-west View File


espeak-data/voices/id → espeak-data/voices/asia/id View File

name indonesian-test
name indonesian
language id language id
gender male gender male



+ 2
- 0
espeak-data/voices/asia/ka View File

name georgian
language ka

espeak-data/voices/kn → espeak-data/voices/asia/kn View File


espeak-data/voices/ku → espeak-data/voices/asia/ku View File


espeak-data/voices/ml → espeak-data/voices/asia/ml View File


espeak-data/voices/test/ne → espeak-data/voices/asia/ne View File

name nepali-test
name nepali
language ne language ne
gender male gender male



espeak-data/voices/ta → espeak-data/voices/asia/ta View File


espeak-data/voices/tr → espeak-data/voices/asia/tr View File


espeak-data/voices/vi → espeak-data/voices/asia/vi View File


espeak-data/voices/vi-hue → espeak-data/voices/asia/vi-hue View File


espeak-data/voices/zh → espeak-data/voices/asia/zh View File


espeak-data/voices/zh-yue → espeak-data/voices/asia/zh-yue View File


espeak-data/voices/en/en → espeak-data/voices/en View File


espeak-data/voices/en/en-us → espeak-data/voices/en-us View File


+ 5
- 0
espeak-data/voices/europe/bg View File

name bulgarian
language bg

stressAmp 13 12 17 17 20 22 22 21
stressLength 180 170 200 200 200 200 210 220

espeak-data/voices/bs → espeak-data/voices/europe/bs View File


espeak-data/voices/ca → espeak-data/voices/europe/ca View File


espeak-data/voices/cs → espeak-data/voices/europe/cs View File


espeak-data/voices/cy → espeak-data/voices/europe/cy View File

language cy language cy
name welsh-test
name welsh
gender male gender male


intonation 4 intonation 4

espeak-data/voices/da → espeak-data/voices/europe/da View File


espeak-data/voices/el → espeak-data/voices/europe/el View File


espeak-data/voices/es → espeak-data/voices/europe/es View File


espeak-data/voices/et → espeak-data/voices/europe/et View File


espeak-data/voices/fi → espeak-data/voices/europe/fi View File


espeak-data/voices/fr-be → espeak-data/voices/europe/fr-be View File


espeak-data/voices/hr → espeak-data/voices/europe/hr View File


espeak-data/voices/hu → espeak-data/voices/europe/hu View File


espeak-data/voices/is → espeak-data/voices/europe/is View File

name icelandic-test
name icelandic
language is language is
gender male gender male



espeak-data/voices/it → espeak-data/voices/europe/it View File


espeak-data/voices/lv → espeak-data/voices/europe/lv View File


espeak-data/voices/mk → espeak-data/voices/europe/mk View File

name macedonian-test
name macedonian
language mk language mk
gender male gender male



espeak-data/voices/nl → espeak-data/voices/europe/nl View File


espeak-data/voices/no → espeak-data/voices/europe/no View File


espeak-data/voices/pl → espeak-data/voices/europe/pl View File


espeak-data/voices/pt-pt → espeak-data/voices/europe/pt-pt View File


espeak-data/voices/ro → espeak-data/voices/europe/ro View File


espeak-data/voices/ru → espeak-data/voices/europe/ru View File

name russian_test
name russian
language ru language ru
gender male gender male



espeak-data/voices/sk → espeak-data/voices/europe/sk View File


espeak-data/voices/sq → espeak-data/voices/europe/sq View File


espeak-data/voices/sr → espeak-data/voices/europe/sr View File


espeak-data/voices/sv → espeak-data/voices/europe/sv View File


+ 0
- 2
espeak-data/voices/ka View File

name georgian-test
language ka

espeak-data/voices/af → espeak-data/voices/other/af View File


espeak-data/voices/en/en-n → espeak-data/voices/other/en-n View File


espeak-data/voices/en/en-rp → espeak-data/voices/other/en-rp View File


espeak-data/voices/en/en-sc → espeak-data/voices/other/en-sc View File


espeak-data/voices/en/en-wi → espeak-data/voices/other/en-wi View File


espeak-data/voices/en/en-wm → espeak-data/voices/other/en-wm View File


espeak-data/voices/eo → espeak-data/voices/other/eo View File


espeak-data/voices/test/grc → espeak-data/voices/other/grc View File


espeak-data/voices/test/jbo → espeak-data/voices/other/jbo View File


espeak-data/voices/la → espeak-data/voices/other/la View File


espeak-data/voices/sw → espeak-data/voices/other/sw View File


+ 0
- 5
espeak-data/voices/test/bg View File

name bulgarian-test
language bg

stressAmp 13 12 17 17 20 22 22 21
stressLength 180 170 200 200 200 200 210 220

+ 0
- 4
espeak-data/voices/test/ga View File

name irish-test
language ga
stressrule 0


+ 37
- 0
phsource/ph_bengali View File


//====================================================
// Bengali, inherits from Hindi
//====================================================

phoneme @
vowel flag1 starttype #@ endtype #@
length 65

ChangeIfDiminished(@-)
IF nextPh(H) THEN
FMT(vowel/@_low)
ENDIF
FMT(vowel/@_bck)
endphoneme


phoneme V
vowel flag1 starttype #@ endtype #@
length 180
CALL hi/V
endphoneme


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


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


+ 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