Browse Source

Merge branch 'development'

master
Reece H. Dunn 12 years ago
parent
commit
1c76a958b4

+ 28
- 28
dictsource/bn_list View File

_3 t'i:n _3 t'i:n
_4 c'a:@'r _4 c'a:@'r
_5 ,pa~c _5 ,pa~c
_6 ch'O:j
_6 c#'O:j
_7 S'a:t _7 S'a:t
_8 'a:th.
_8 'a:t.#
_9 n'O:j _9 n'O:j


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


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


_33 tE't'rIS _33 tE't'rIS
_34 ca~o:u:t'rIS _34 ca~o:u:t'rIS
_35 pa~O:it'rIS _35 pa~O:it'rIS
_36 cha'trIS
_36 c#a'trIS
_37 Sa~it'rIS _37 Sa~it'rIS
_38 at'tr'IS _38 at'tr'IS
_39 U'nO:cO:l'IS _39 U'nO:cO:l'IS
_43 te:ta:l'lIS _43 te:ta:l'lIS
_44 cu:a:l'lIS _44 cu:a:l'lIS
_45 paI'nta:l'lIS _45 paI'nta:l'lIS
_46 che:co:l'lIS
_46 c#e:co:l'lIS
_47 Sat'co:l'lIs _47 Sat'co:l'lIs
_48 at'co:l'lIS _48 at'co:l'lIS
_49 Uno:pan'ca:S _49 Uno:pan'ca:S
_53 t'Ip'pan'no: _53 t'Ip'pan'no:
_54 cu:wan'no: _54 cu:wan'no:
_55 po:n'ca:n'no: _55 po:n'ca:n'no:
_56 chh@p:'an'no:
_56 c#h@p:'an'no:
_57 Sa:ta:n'no: _57 Sa:ta:n'no:
_58 ath'a:n'no:
_59 Uno:s'ath
_58 at#'a:n'no:
_59 Uno:s'at#


_60 s'a:th.
_60 s'a:t.#
_61 e:k'so:t'tI _61 e:k'so:t'tI
_62 ba:so:t'tI _62 ba:so:t'tI
_63 te:so:t'tI _63 te:so:t'tI
_64 ca~o:u:so:t'tI _64 ca~o:u:so:t'tI
_65 pa~I'so:t'tI _65 pa~I'so:t'tI
_66 che:so:t'tI
_66 c#e:so:t'tI
_67 Sat'so:t'tI _67 Sat'so:t'tI
_68 atso:t'ti _68 atso:t'ti
_69 ,Uno:Sat'to:r _69 ,Uno:Sat'to:r
_72 ba:hat'to:r _72 ba:hat'to:r
_73 tIat'to:r _73 tIat'to:r
_74 cu:at'to:r _74 cu:at'to:r
_75 pa~chat'to:r
_76 chI'at:to:r
_75 pa~c#at'to:r
_76 c#I'at:to:r
_77 Sa:t@'t:o:r _77 Sa:t@'t:o:r
_78 atat'to:r _78 atat'to:r
_79 ,Uno:a:Si: _79 ,Uno:a:Si:
_83 tIra:Si: _83 tIra:Si:
_84 cu:ra:Si: _84 cu:ra:Si:
_85 pa~ca:Si: _85 pa~ca:Si:
_86 chIa:Si:
_86 c#Ia:Si:
_87 Sa:ta:Si: _87 Sa:ta:Si:
_88 O:sto:a:Si: _88 O:sto:a:Si:
_89 Uno:no:b'bo:I _89 Uno:no:b'bo:I
_93 tIr'a:no:b'bo:I _93 tIr'a:no:b'bo:I
_94 cu:r'a:no:b'bo:I _94 cu:r'a:no:b'bo:I
_95 pa~ca:no:b'bo:I _95 pa~ca:no:b'bo:I
_96 chIa:no:b'bo:I
_96 c#Ia:no:b'bo:I
_97 S@ta:no:b'bo:I _97 S@ta:no:b'bo:I
_98 ata:no:b'bo:I _98 ata:no:b'bo:I
_99 nIra:no:b'bo:I _99 nIra:no:b'bo:I


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


// Single consonants // Single consonants
ক k@ ক k@
খ kh@
খ k#@
গ g@ গ g@
ঘ gh@
ঘ g#@
ঙ N'g ঙ N'g
চ c@ চ c@
ছ ch@
ছ c#@
জ J@ জ J@
ঝ Jh@
ঝ J#@
ঞ n^@ ঞ n^@
ট t.@ ট t.@
ঠ th.@
ঠ t.#@
ড d.@ ড d.@
ঢ dh.@
ঢ d.#@
ণ n.@ // retroflex n.@ ণ n.@ // retroflex n.@
ত t@ ত t@
থ th@
থ t#@
দ d@ দ d@
ধ dh@
ধ d#@
ন n@ ন n@
প p@ প p@
ফ ph@
ফ p#@
ব b@ ব b@
ভ bh@
ভ b#@
ম m@ ম m@
য় O:j য় O:j
য J@ য J@

+ 37
- 36
dictsource/bn_rules View File

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


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


.group ঘ .group ঘ
ঘ ghV
ঘ (B gh
ঘ g#V
ঘ (B g#


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


.group ছ .group ছ
ছ chV
ছ (B ch@
ছ c#V
ছ (B c#@


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


.group ঝ .group ঝ
ঝ Jh@
ঝ (B Jh@
ঝ J#@
ঝ (B J#@


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


.group ঠ .group ঠ
ঠ thV
ঠ (B th.
ঠ t.#V
ঠ (B t.#


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


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




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


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


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


.group ন .group ন
ন n@ ন n@
প্য (्য p: প্য (्য p:


.group ফ .group ফ
ফ ph@
ফ (B ph@
ফ ph@
ফ p#@
ফ (B p#@
ফ p#@


.group ব .group ব
ব (B b@ ব (B b@


.group ভ .group ভ
ভ bh@
ভ (B bh@
ভ b#@
ভ (B b#@


.group ম .group ম
ম mV ম mV

+ 65
- 65
dictsource/bo_rules View File

@) ཀ (_ k @) ཀ (_ k


.group ཁ .group ཁ
ཁ kha
ཁ (B kh
@) ཁ (_ kh
ཁ k#a
ཁ (B k#
@) ཁ (_ k#


.group ག .group ག
ག ga ག ga
@) ག (_ g @) ག (_ g


.group གྷ .group གྷ
གྷ gha
གྷ (B gh
@) གྷ (_ gh
གྷ g#a
གྷ (B g#
@) གྷ (_ g#


.group ང .group ང
ང Na ང Na
@) ཅ (_ c @) ཅ (_ c


.group ཆ .group ཆ
ཆ cha
ཆ (B ch
@) ཆ (_ ch
ཆ c#a
ཆ (B c#
@) ཆ (_ c#


.group ཇ .group ཇ
ཇ Ja ཇ Ja
@) ཊ (_ t. @) ཊ (_ t.


.group ཋ .group ཋ
ཋ th.a
ཋ (B th.
@) ཋ (_ th.
ཋ t.#a
ཋ (B t.#
@) ཋ (_ t.#


.group ཌ .group ཌ
ཌ d.a ཌ d.a
@) ཌ (_ d. @) ཌ (_ d.


.group ཌྷ .group ཌྷ
ཌྷ dh.a
ཌྷ (B dh.
@) ཌྷ (_ dh.
ཌྷ d.#a
ཌྷ (B d.#
@) ཌྷ (_ d.#


.group ཎ .group ཎ
ཎ n.a ཎ n.a
@) ཏ (_ t @) ཏ (_ t


.group ཐ .group ཐ
ཐ tha
ཐ (B th
@) ཐ (_ th
ཐ t#a
ཐ (B t#
@) ཐ (_ t#


.group ད .group ད
ད da ད da
@) ད (_ d @) ད (_ d


.group དྷ .group དྷ
དྷ dha
དྷ (B dh
@) དྷ (_ dh
དྷ d#a
དྷ (B d#
@) དྷ (_ d#


.group ན .group ན
ན na ན na
@) པ (_ p @) པ (_ p


.group ཕ .group ཕ
ཕ pha
ཕ (B ph
@) ཕ (_ ph
ཕ p#a
ཕ (B p#
@) ཕ (_ p#


.group བ .group བ
བ ba བ ba
@) བ (_ b @) བ (_ b


.group བྷ .group བྷ
བྷ bha
བྷ (B bh
@) བྷ (_ bh
བྷ b#a
བྷ (B b#
@) བྷ (_ b#


.group མ .group མ
མ ma མ ma
@) ཙ (_ ts @) ཙ (_ ts


.group ཚ .group ཚ
ཚ tsha
ཚ (B tsh
@) ཚ (_ tsh
ཚ ts#a
ཚ (B ts#
@) ཚ (_ ts#


.group ཛ .group ཛ
ཛ dza ཛ dza
@) ཛ (_ dz @) ཛ (_ dz


.group ཛྷ .group ཛྷ
ཛྷ dzha
ཛྷ (B dzh
@) ཛྷ (_ dzh
ཛྷ dz#a
ཛྷ (B dz#
@) ཛྷ (_ dz#


.group ཝ .group ཝ
ཝ wa ཝ wa
ྐ (B k ྐ (B k
@) ྐ (_ k @) ྐ (_ k


ྑ kha
ྑ (B kh
@) ྑ (_ kh
ྑ k#a
ྑ (B k#
@) ྑ (_ k#


ྒ ga ྒ ga
ྒ (B g ྒ (B g
@) ྒ (_ g @) ྒ (_ g


ྒྷ gha
@) ྒྷ (_ gh
ྒྷ g#a
@) ྒྷ (_ g#


ྔ Na ྔ Na
ྔ (B N ྔ (B N
ྕ (B c ྕ (B c
@) ྕ (_ c @) ྕ (_ c


ྖ cha
ྖ (B ch
@) ྖ (_ ch
ྖ c#a
ྖ (B c#
@) ྖ (_ c#


ྗ Ja ྗ Ja
ྗ (B J ྗ (B J
ྚ (B t. ྚ (B t.
@) ྚ (_ t. @) ྚ (_ t.


ྛ th.a
ྛ (B th.
@) ྛ (_ th.
ྛ t.#a
ྛ (B t.#
@) ྛ (_ t.#


ྜ d.a ྜ d.a
ྜ (B d. ྜ (B d.
@) ྜ (_ d. @) ྜ (_ d.


ྜྷ dh.a
ྜྷ (B dh.
@) ྜྷ (_ dh.
ྜྷ d.#a
ྜྷ (B d.#
@) ྜྷ (_ d.#


ྞ n.a ྞ n.a
ྞ (B n. ྞ (B n.
ྟ (B t ྟ (B t
@) ྟ (_ t @) ྟ (_ t


ྠ tha
ྠ (B th
@) ྠ (_ th
ྠ t#a
ྠ (B t#
@) ྠ (_ t#


ྡ da ྡ da
ྡ (B d ྡ (B d
@) ྡ (_ d @) ྡ (_ d


ྡྷ dha
ྡྷ (B dh
@) ྡྷ (_ dh
ྡྷ d#a
ྡྷ (B d#
@) ྡྷ (_ d#


ྣ na ྣ na
ྣ (B n ྣ (B n
ྤ (B p ྤ (B p
@) ྤ (_ p @) ྤ (_ p


ྥ pha
ྥ (B ph
@) ྥ (_ ph
ྥ p#a
ྥ (B p#
@) ྥ (_ p#


ྦ ba ྦ ba
ྦ (B b ྦ (B b
@) ྦ (_ b @) ྦ (_ b


ྦྷ bha
ྦྷ (B bh
@) ྦྷ (_ bh
ྦྷ b#a
ྦྷ (B b#
@) ྦྷ (_ b#


ྨ ma ྨ ma
ྨ (B m ྨ (B m
ྩ (B ts ྩ (B ts
@) ྩ (_ ts @) ྩ (_ ts


ྪ tsha
ྪ (B tsh
@) ྪ (_ tsh
ྪ ts#a
ྪ (B ts#
@) ྪ (_ ts#


ྫ dza ྫ dza
ྫ (B dz ྫ (B dz
@) ྫ (_ dz @) ྫ (_ dz


ྫྷ dzha
ྫྷ (B dzh
@) ྫྷ (_ dzh
ྫྷ dz#a
ྫྷ (B dz#
@) ྫྷ (_ dz#


ྭ wa ྭ wa
ྭ (B w ྭ (B w

+ 1
- 0
dictsource/de_list View File

_ar aR'AbIS _ar aR'AbIS
_cyr ky:R'IlIS _cyr ky:R'IlIS
_he hEbr'E:IS _he hEbr'E:IS
_zh Ci:n'e:zIS




// Numbers // Numbers

+ 30
- 30
dictsource/dv_list View File

_1 e'keI _1 e'keI
_2 d'eI _2 d'eI
_3 tineI _3 tineI
_4 ha'tha'reI
_4 ha't#a'reI
_5 fa'heI _5 fa'heI
_6 ha'eI _6 ha'eI
_7 ha'theI
_7 ha't#eI
_8 a'SeI _8 a'SeI
_9 n'uaeI _9 n'uaeI
_10 d'ihaeI _10 d'ihaeI
_11 e'gj'a:r@1 //egaara _11 e'gj'a:r@1 //egaara
_12 b'ar@2 //baara _12 b'ar@2 //baara
_13 t'E:r@2 //theyra _13 t'E:r@2 //theyra
_14 ch'O:d@2 //saada (d like in _2)
_14 c#'O:d@2 //saada (d like in _2)
_15 p'Vndr@2 //fanara _15 p'Vndr@2 //fanara
_16 s'o:l@2 //soalha lh like in ޅ _16 s'o:l@2 //soalha lh like in ޅ
_17 s'Vt:r@2 //sathaara _17 s'Vt:r@2 //sathaara
_18 Vth.:'a:r@2 //ashaara
_18 Vt.#:'a:r@2 //ashaara
_19 Unn'Is //navaara _19 Unn'Is //navaara


_20 b'i:s //vihi (we he) _20 b'i:s //vihi (we he)
_23 t'e:Is //tei wees _23 t'e:Is //tei wees
_24 c'O:bIs sav wees _24 c'O:bIs sav wees
_25 p@c:'Is //fansavees _25 p@c:'Is //fansavees
_26 ch@bb'i:rs // sabbees
_26 c#@bb'i:rs // sabbees
_27 s@t:'a:Is // sathawees _27 s@t:'a:Is // sathawees
_28 ath:'a:Is // asha wees
_28 at#:'a:Is // asha wees
_29 Unt'Is // ona thirees _29 Unt'Is // ona thirees
_30 t'i:s // thirees _30 t'i:s // thirees


_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
_36 chaT'tIs
_36 c#aT'tIs
_37 sE~t'Is _37 sE~t'Is
_38 art'Is _38 art'Is
_39 Unta:l'Is _39 Unta:l'Is
_43 tE~ta:l'Is _43 tE~ta:l'Is
_44 cO:wa:l'Is _44 cO:wa:l'Is
_45 paI'nta:l'Is _45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 sE~ta:l'Is _47 sE~ta:l'Is
_48 arta:l'Is _48 arta:l'Is
_49 'Un^ca:s _49 'Un^ca:s
_52 b'a:wVn _52 b'a:wVn
_53 t'IrpVn _53 t'IrpVn
_54 c'Ou:wVn _54 c'Ou:wVn
_55 p'achpVn
_56 chh@p:'Vn
_55 p'ac#pVn
_56 c#h@p:'Vn
_57 sVt:'a:w@n _57 sVt:'a:w@n
_58 ath:'a:w@n
_59 Uns'Vth
_58 at#:'a:w@n
_59 Uns'Vt#


_60 s'a:th. //fas dho (ދ) lhas
_61 'Iks@th.
_62 b'a:s@th.
_63 t'Irs@th.
_64 c'O~s@th.
_65 paIns@th.
_66 ch'Ija:s@th.
_67 s'Vrs@th.
_68 ars@th.
_60 s'a:t.# //fas dho (ދ) lhas
_61 'Iks@t.#
_62 b'a:s@t.#
_63 t'Irs@t.#
_64 c'O~s@t.#
_65 paIns@t.#
_66 c#'Ija:s@t.#
_67 s'Vrs@t.#
_68 ars@t.#
_69 Un@h,at:'Vr: _69 Un@h,at:'Vr:


_70 sat:'Vr: // hai dhiha _70 sat:'Vr: // hai dhiha
_71 Ikhat:'Vr:
_71 Ik#at:'Vr:
_72 b@hat:'Vr: _72 b@hat:'Vr:
_73 tIhat:'Vr: _73 tIhat:'Vr:
_74 cO:hat:'Vr: _74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 chIhat:'Vr:
_75 pac#,at:'Vr:
_76 c#Ihat:'Vr:
_77 s@t@hat:'Vr: _77 s@t@hat:'Vr:
_78 athhat:'Vr:
_78 at#hat:'Vr:
_79 ,Un^Ia:s'i: _79 ,Un^Ia:s'i:


_80 ,Vss'i: // addiha _80 ,Vss'i: // addiha
_83 tIra:s'i: _83 tIra:s'i:
_84 cO:ra:s'i: _84 cO:ra:s'i:
_85 pI'ca:s'i: _85 pI'ca:s'i:
_86 chIja:s'i:
_86 c#Ija:s'i:
_87 sVt:a:s'i: _87 sVt:a:s'i:
_88 ath:a:s'i:
_88 at#:a:s'i:
_89 nVwa:s'i: _89 nVwa:s'i:


_90 nVb:'e: nuvadhiha _90 nVb:'e: nuvadhiha
_93 tIr'a:n@we: _93 tIr'a:n@we:
_94 cO:r'a:m@we: _94 cO:r'a:m@we:
_95 p@c'a:n@we: _95 p@c'a:n@we:
_96 chIj'a:n@we:
_96 c#Ij'a:n@we:
_97 s@t:'a:n@we: _97 s@t:'a:n@we:
_98 ath:'a:n@we:
_98 at#:'a:n@we:
_99 nIn^j'a:n@we: _99 nIn^j'a:n@we:


_0C sa'theIka //satheyka (th like them)
_0C sa't#eIka //satheyka (th like them)
_0M1 h@z'a:r (haas) _0M1 h@z'a:r (haas)
_0M2 l'a:kh // lakka _0M2 l'a:kh // lakka
_0M3 cr'ore //curoadu _0M3 cr'ore //curoadu

+ 30
- 14
dictsource/en_list View File

_- h,aIf@n _- h,aIf@n
?3 _- daS ?3 _- daS
_. d0t _. d0t
?3_. pi@rI@d
?3_.p pi@rI@d
_: koUl@n _: koUl@n
_; sEmIk'oUl@n _; sEmIk'oUl@n
_< lEsDan _< lEsDan
_ka dZ'O@dZ@n _ka dZ'O@dZ@n
_ko k3r'i@n _ko k3r'i@n
_eth i:TI'0pIk _eth i:TI'0pIk

_ja dZ'ap@ni:z
_zh tS'aIni:z


// Cyrillic letters // Cyrillic letters
а a а a
ר ReS_ ר ReS_
ש Sin_ ש Sin_
ת tav_ ת tav_
ְ SvA:
ֱ E
ֲ a
ֳ o
ִ i:
ֵ E
ֶ E
ַ a
ָ a
ֹ o
ֻ u
ּ d'agES




// phonetic modifiers // phonetic modifiers




// General American // General American
?3 agile adZ@L
?3 docile doUs@L
?3 facile fas@L
?3 fertile f3:t@L
?3 fragile fradZ@L
?3 futile fju:t@L
?3 hostile h0st@L
?3 mobile moUb@L
agile $alt2
docile $alt2
ductile $alt2
facile $alt2
fertile $alt2
fragile $alt2
futile $alt2
hostile $alt2
mobile $alt2
?3 missile mIs@L ?3 missile mIs@L
?3 projectile pr@dZEkt@L
?3 puerile pjU@r@L
?3 sterile stEr@L
?3 virile vIr@L
projectile $alt2
puerile $alt2
senile $alt2
sterile $alt2
tensile $alt2
virile $alt2
?3 volatile v0la#t@L ?3 volatile v0la#t@L





+ 4
- 2
dictsource/en_rules View File

_) be (gg bE _) be (gg bE
_) belarus bEl@r'u:s _) belarus bEl@r'u:s
_) be (lC bE _) be (lC bE
_) be (lli bI2
_) be (llig bI2
_) be (sC bI2 _) be (sC bI2
_) be (stia bE _) be (stia bE
_) be (tB bE _) be (tB bE
for (see f%O@ for (see f%O@
for (ward f'o@ // straightforward for (ward f'o@ // straightforward
ft (en f ft (en f
&) ful (_S3 f@L
&) ful (_S3i f@L
&) fully (_S5 f@li &) fully (_S5 f@li
&) fulness (_S7 f@Ln@s &) fulness (_S7 f@Ln@s


nt) il (_ @L nt) il (_ @L
@v) il (_ @L @v) il (_ @L
@) ila (_ 'Il@ @) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) i (lage aI _C) i (lage aI
_d) i (lat %aI _d) i (lat %aI
l) il (ah_ aIl l) il (ah_ aIl
os (al_ 'oUz os (al_ 'oUz
_l) os (e u:z _l) os (e u:z
ose (_ oUz ose (_ oUz
c) ose (_ oUs
purp) ose @s purp) ose @s
_r) os (e# oUz _r) os (e# oUz
c) os (ec oUs c) os (ec oUs

+ 49
- 42
dictsource/hi_list View File

_3 t'i:n _3 t'i:n
_4 c:'a:r: _4 c:'a:r:
_5 'pa~c _5 'pa~c
_6 ch'@2
_6 c#'@2
_7 s'a:t _7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'O: _9 n'O:
?3 _9 n'aU ?3 _9 n'aU


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


_20 b'i:s _20 b'i:s
_23 t'ue: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 c#@bb'i:rs
_27 s@t:'a:Is _27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 ,Unt'Is _29 ,Unt'Is
_30 t'i:s _30 t'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
_36 chaT'tIs
_36 c#aT'tIs
_37 sE~t'Is _37 sE~t'Is
_38 art'Is _38 art'Is
_39 Unta:l'Is _39 Unta:l'Is
_43 tE~ta:l'Is _43 tE~ta:l'Is
_44 cO:wa:l'Is _44 cO:wa:l'Is
_45 paI'nta:l'Is _45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 sE~ta:l'Is _47 sE~ta:l'Is
_48 arta:l'Is _48 arta:l'Is
_49 'Un^ca:s _49 'Un^ca:s
_52 b'a:wVn _52 b'a:wVn
_53 t'IrpVn _53 t'IrpVn
_54 c'Ou:wVn _54 c'Ou:wVn
_55 p'achpVn
_56 chh@p:'Vn
_55 p'ac#pVn
_56 c#h@p:'Vn
_57 santa:'w@n _57 santa:'w@n
_58 ath:a:'w@n
_59 Uns'Vth
_60 s'a:th.
_61 'Iks@th.
_62 b'a:s@th.
_63 t'Irs@th.
_64 cO:'s@th.
_65 paI's@th.
_66 ch'Ija:s@th.
_67 s'Vrs@th.
_68 ars@th.
_58 at#:a:'w@n
_59 Uns'Vt#
_60 s'a:t.#
_61 'Iks@t.#
_62 b'a:s@t.#
_63 t'Irs@t.#
_64 cO:'s@t.#
_65 paI's@t.#
_66 c#'Ija:s@t.#
_67 s'Vrs@t.#
_68 ars@t.#
_69 Un@h,at:'Vr: _69 Un@h,at:'Vr:


_70 sat:'Vr: _70 sat:'Vr:
_71 Ikhat:'Vr:
_71 Ik#at:'Vr:
_72 b@hat:'Vr: _72 b@hat:'Vr:
_73 tIhat:'Vr: _73 tIhat:'Vr:
_74 cO:hat:'Vr: _74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 chIhat:'Vr:
_75 pac#,at:'Vr:
_76 c#Ihat:'Vr:
_77 s@t@hat:'Vr: _77 s@t@hat:'Vr:
_78 athhat:'Vr:
_78 at#hat:'Vr:
_79 ,Un^Ia:s'i: _79 ,Un^Ia:s'i:


_80 ,Vss'i: _80 ,Vss'i:
_83 tIra:s'i _83 tIra:s'i
_84 cO:ra:s'i _84 cO:ra:s'i
_85 pI'ca:s'i _85 pI'ca:s'i
_86 chIja:s'i
_86 c#Ija:s'i
_87 sVt:a:s'i _87 sVt:a:s'i
_88 ath:a:s'i
_88 at#:a:s'i
_89 nVwa:s'i _89 nVwa:s'i


_90 nVb:'e: _90 nVb:'e:
_93 tIr'a:n@we: _93 tIr'a:n@we:
_94 cO:r'a:m@we: _94 cO:r'a:m@we:
_95 p@c'a:n@we: _95 p@c'a:n@we:
_96 chIj'a:n@we:
_96 c#Ij'a:n@we:
_97 s@t:'a:n@we: _97 s@t:'a:n@we:
_98 ath:'a:n@we:
_98 at#:'a:n@we:
_99 nIn^j'a:n@we: _99 nIn^j'a:n@we:


_0C s'O: _0C s'O:
_0M1 h@J,a:r _0M1 h@J,a:r
_0M2 l'a:kh
_0M2 l'a:k#
_0M3 k@ro:r.V _0M3 k@ro:r.V
_0M4 'Vr@b _0M4 'Vr@b
_0M5 kh'Vr@b
_0M5 k#'Vr@b
_dpt _d@s@ml'o:_ // ?? what is Hi for "." ? _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?


// Single consonants // Single consonants
क k@ क k@
क़ q@ क़ q@
ख kh@
ख k#@
ख़ x@ ख़ x@
ग g@ ग g@
ग़ Q@ ग़ Q@
घ gh@
घ g#@
ङ N@ ङ N@
च c@ च c@
छ ch@
छ c#@
ज J@ ज J@
ज़ z@ ज़ z@
झ Jh@
झ J#@
ञ n^@ ञ n^@
ट t.@ ट t.@
ठ th.@
ठ t.#@
ड d.@ ड d.@
ड़ r.@ ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@ ण n.@ // retroflex n.@
त t@ त t@
थ th@
थ t#@
द d@ द d@
ध dh@
ध d#@
न n@ न n@
प p@ प p@
फ ph@
फ p#@
फ़ f@ फ़ f@
ब b@ ब b@
भ bh@
भ b#@
म m@ म m@
य j@ य j@
र r@ र r@
ॣ #X2l-: ॣ #X2l-:
ॐ #X1o~m ॐ #X1o~m


_?? Vks.@r
_a ej
_b bi:
_c si:
_d di:
_e i:
_f Ef


// Punctuation // Punctuation
। dVn.d.V । dVn.d.V

+ 20
- 20
dictsource/hi_rules View File

क़ (B q क़ (B q


.group ख .group ख
ख khV
ख (B kh
ख k#V
ख (B k#
ख़ xV ख़ xV
ख़ (B x ख़ (B x


ग़ (B Q ग़ (B Q


.group घ .group घ
घ ghV
घ (B gh
घ g#V
घ (B g#


.group ङ .group ङ
ङ NV ङ NV
च (्य c: च (्य c:


.group छ .group छ
छ chV
छ (B ch
छ c#V
छ (B c#


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


.group झ .group झ
झ JhV
झ (B Jh
झ J#V
झ (B J#


.group ञ .group ञ
ञ n^V ञ n^V
ट (्य t.: ट (्य t.:


.group ठ .group ठ
ठ th.V
ठ (B th.
ठ t.#V
ठ (B t.#


.group ड .group ड
ड d.V ड d.V
ड़ (B r. ड़ (B r.


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


त (्य t: त (्य t:


.group थ .group थ
थ thV
थ (B th
थ t#V
थ (B t#


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


.group ध .group ध
ध dhV
ध (B dh
ध d#V
ध (B d#


.group न .group न
न nV न nV
प (्य p: प (्य p:


.group फ .group फ
फ phV
फ (B ph
फ p#V
फ (B p#
फ़ fV फ़ fV
फ़ (B f फ़ (B f


ब (B b ब (B b


.group भ .group भ
भ bhV
भ (B bh
भ b#V
भ (B b#


.group म .group म
म mV म mV

+ 4
- 3
dictsource/hu_list View File



// characters // characters
_#9 tAb _#9 tAb
_#32 so:kYz
_#32 s'o:kYz
_cap n'AJ_| _cap n'AJ_|
_?? kAR2AktEr||ko:d // unknown characters (change this) _?? kAR2AktEr||ko:d // unknown characters (change this)


® bEjEJzEt: ® bEjEJzEt:
™ ve:djEJ ™ ve:djEJ
_` tompA _` tompA
_  so:kYz
_  s'o:kYz
_« bElSY:|bAl|ide:zY:jEl _« bElSY:|bAl|ide:zY:jEl
_» bElSY:|jobb|ide:zY:jEl _» bElSY:|jobb|ide:zY:jEl
_­ la:JkYtY:jEl _­ la:JkYtY:jEl


// Alphabets // Alphabets
_ar 'AR2Ab _ar 'AR2Ab
_cry ts'iR2ill
_cyr ts'iR2ill
_he h'e:bER2 _he h'e:bER2
_zh k'i:nAi




// Main Exceptions List // Main Exceptions List

+ 8
- 0
dictsource/hu_rules View File

szaba) d (szem d szaba) d (szem d
_tren) dsz (e d|s _tren) dsz (e d|s
vakon) d (sz d vakon) d (sz d
vé) d (jeggy d


.group dz .group dz
fogó) dz (kod ts fogó) dz (kod ts
_elle) n (jav n _elle) n (jav n
vagyo) n (jog n vagyo) n (jog n
nny (elv n|n^ nny (elv n|n^
haszo) n (jár n
boszorká) ny (jelet n^


.group o .group o
o o o o
ki) s (szőlő S ki) s (szőlő S
körö) s (szeg S körö) s (szeg S
kolbászo) s S kolbászo) s S
feldolgozá) s S


.group ss .group ss
ssz ss2 ssz ss2
pénze) sz (k s pénze) sz (k s
ellenállá) sz (ón Sz ellenállá) sz (ón Sz
ré) sz (árás Sz ré) sz (árás Sz
_te) szts (or st|S


.group t .group t
t t t t
zené) tj (átsz tj zené) tj (átsz tj
szen) tj (akab tj szen) tj (akab tj
közérze) tj (aví tj közérze) tj (aví tj
ké) tj (átszm tj


.group ts .group ts
ts (_S2 tS //general rule with word end of ts letters ts (_S2 tS //general rule with word end of ts letters
leme) tsz (vén ts leme) tsz (vén ts
_cha) tsz (ob t|s _cha) tsz (ob t|s
robo) ts (of t|S robo) ts (of t|S
merényle) ts (or t|S



.group tt .group tt
tt t: tt t:

+ 97
- 97
dictsource/kn_list View File

// letter names // letter names
ಕ್ ik ಕ್ ik
ಖ್ ikh
ಖ್ ik#
ಗ್ ig ಗ್ ig
ಘ್ igh
ಘ್ ig#
ಙ್ iN ಙ್ iN
ಚ್ ic ಚ್ ic
ಛ್ ich
ಛ್ ic#
ಜ್ iJ ಜ್ iJ
ಝ್ iJh
ಝ್ iJ#
ಞ್ in^ ಞ್ in^
ಟ್ it. ಟ್ it.
ಠ್ ith.
ಠ್ it.#
ಡ್ id. ಡ್ id.
ಢ್ idh.
ಢ್ id.#
ಣ್ in. ಣ್ in.
ತ್ it ತ್ it
ಥ್ ith
ಥ್ it#
ದ್ id ದ್ id
ಧ್ id.
ಧ್ id#
ನ್ in ನ್ in
ಪ್ ip ಪ್ ip
ಫ್ iph
ಫ್ ip#
ಬ್ ib ಬ್ ib
ಭ್ ibh
ಭ್ ib#
ಮ್ im ಮ್ im
ಯ್ ij ಯ್ ij
ರ್ ir ರ್ ir
// symbols // symbols
% pratis.ata % pratis.ata
! a:scharjachinhe
! a:sc#arjac#inhe
_? aks.ara _? aks.ara
. pu:rn.avira:ma . pu:rn.avira:ma
, alpavira:ma , alpavira:ma
¼ ka:lu ¼ ka:lu
½ ardha
½ ard#a
¾ mukka:lu ¾ mukka:lu
(1 / 2) ardha
(1 / 2) ard#a
(1 / 4) ka:lu (1 / 4) ka:lu
(3 / 4) mukka:lu (3 / 4) mukka:lu
÷ bha:ga:ka:ra
÷ b#a:ga:ka:ra
& mattu & mattu
_6 'a:ru _6 'a:ru
_7 'e:l.u _7 'e:l.u
_8 'ent.u _8 'ent.u
_9 'ombath:u
_1X h'ath:u
_9 'ombat#:u
_1X h'at#:u
_11 hann'ondu _11 hann'ondu
_12 han:erad.u _12 han:erad.u
_13 hadim'u:ru _13 hadim'u:ru
_16 hadina:ru _16 hadina:ru
_17 hadin'e:l.u _17 hadin'e:l.u
_18 hadin'ent.u _18 hadin'ent.u
_19 ha'th:'ombath:u
_19 ha't#:'ombat#:u
_2X Ip:ath:u
_21 'Ip:a'th:ondu
_22 Ip:a'th:erad.u
_23 Ip:a'th:m'u:ru
_24 Ip:a'th:n'a:lku
_25 Ip:a'th:'aIdu
_26 Ip:a'th:a:ru
_27 Ip:a'th:e:l.u
_28 Ip:a'th:ent.u
_29 Ip:a'th:ombath:u
_2X Ip:at#:u
_21 'Ip:a't#:ondu
_22 Ip:a't#:erad.u
_23 Ip:a't#:m'u:ru
_24 Ip:a't#:n'a:lku
_25 Ip:a't#:'aIdu
_26 Ip:a't#:a:ru
_27 Ip:a't#:e:l.u
_28 Ip:a't#:ent.u
_29 Ip:a't#:ombat#:u
_3X m'ovath:u
_31 m'ovath:ondu
_32 m'ovatherad.u
_33 m'ovathm'u:ru
_34 m'ovathn'a:lku
_35 m'ovath'aIdu
_36 m'ovatha:ru
_37 m'ovathe:l.u
_38 m'ovathent.u
_39 m'ovathombath:u
_3X m'ovat#:u
_31 m'ovat#:ondu
_32 m'ovat#erad.u
_33 m'ovat#m'u:ru
_34 m'ovat#n'a:lku
_35 m'ovat#'aIdu
_36 m'ovat#a:ru
_37 m'ovat#e:l.u
_38 m'ovat#ent.u
_39 m'ovat#ombat#:u
_4X n'alavath:u
_41 n'alavath:ondu
_42 n'alavatherad.u
_43 n'alavathm'u:ru
_44 n'alavathn'a:lku
_45 n'alavathaIdu
_46 n'alavatha:ru
_47 n'alavathe:l.u
_48 n'alavathent.u
_49 n'alavathombath:u
_4X n'alavat#:u
_41 n'alavat#:ondu
_42 n'alavat#erad.u
_43 n'alavat#m'u:ru
_44 n'alavat#n'a:lku
_45 n'alavat#aIdu
_46 n'alavat#a:ru
_47 n'alavat#e:l.u
_48 n'alavat#ent.u
_49 n'alavat#ombat#:u
_5X 'aIvath:u
_51 aIvath:ondu
_52 aIvatherad.u
_53 aIvathm'u:ru
_54 aIvathn'a:lku
_55 aIvath'aIdu
_56 aIvatha:ru
_57 aIvathe:l.u
_58 aIvathent.u
_59 aIvathombath:u
_6X 'aravath:u
_61 aravath:ondu
_62 aravatherad.u
_63 aravathm'u:ru
_64 aravathn'a:lku
_65 aravathaIdu
_66 aravatha:ru
_67 aravathe:l.u
_68 aravathent.u
_69 aravathombath:u
_5X 'aIvat#:u
_51 aIvat#:ondu
_52 aIvat#erad.u
_53 aIvat#m'u:ru
_54 aIvat#n'a:lku
_55 aIvat#'aIdu
_56 aIvat#a:ru
_57 aIvat#e:l.u
_58 aIvat#ent.u
_59 aIvat#ombat#:u
_6X 'aravat#:u
_61 aravat#:ondu
_62 aravat#erad.u
_63 aravat#m'u:ru
_64 aravat#n'a:lku
_65 aravat#aIdu
_66 aravat#a:ru
_67 aravat#e:l.u
_68 aravat#ent.u
_69 aravat#ombat#:u
_7X 'Ep:ath:u
_71 Ep:ath:ondu
_72 Ep:atherad.u
_73 Ep:athm'u:ru
_74 Ep:athn'a:lku
_75 Ep:athaIdu
_76 Ep:atha:ru
_77 Ep:athe:l.u
_78 Ep:athent.u
_79 Ep:athombath:u
_8X 'Embath:u
_81 Embath:ondu
_82 Embatherad.u
_83 Embathm'u:ru
_84 Embathn'a:lku
_85 EmbathaIdu
_86 Embatha:ru
_87 Embathe:l.u
_88 Embathent.u
_89 Embathombath:u
_7X 'Ep:at#:u
_71 Ep:at#:ondu
_72 Ep:at#erad.u
_73 Ep:at#m'u:ru
_74 Ep:at#n'a:lku
_75 Ep:at#aIdu
_76 Ep:at#a:ru
_77 Ep:at#e:l.u
_78 Ep:at#ent.u
_79 Ep:at#ombat#:u
_8X 'Embat#:u
_81 Embat#:ondu
_82 Embat#erad.u
_83 Embat#m'u:ru
_84 Embat#n'a:lku
_85 Embat#aIdu
_86 Embat#a:ru
_87 Embat#e:l.u
_88 Embat#ent.u
_89 Embat#ombat#:u
_9X th'ombath:u
_91 th'ombath:ondu
_92 th'ombath:erad.u
_93 th'ombathm'u:ru
_94 th'ombathn'a:lku
_95 th'ombathaIdu
_96 th'ombatha:ru
_97 th'ombathe:l.u
_98 th'ombathent.u
_99 th'ombathombath:u
_9X t#'ombat#:u
_91 t#'ombat#:ondu
_92 t#'ombat#:erad.u
_93 t#'ombat#m'u:ru
_94 t#'ombat#n'a:lku
_95 t#'ombat#aIdu
_96 t#'ombat#a:ru
_97 t#'ombat#e:l.u
_98 t#'ombat#ent.u
_99 t#'ombat#ombat#:u
_0C0 n'u:ru _0C0 n'u:ru
_1C0 nu:ru _1C0 nu:ru

+ 20
- 20
dictsource/kn_rules View File

ಕ (B k ಕ (B k


.group ಖ .group ಖ
ಖ kha
ಖ (B kh
ಖ k#a
ಖ (B k#


.group ಗ .group ಗ
ಗ ga ಗ ga
ಗ (B g ಗ (B g


.group ಘ .group ಘ
ಘ gha
ಘ (B gh
ಘ g#a
ಘ (B g#


.group ಙ .group ಙ
ಙ Na ಙ Na
ಚ (B c ಚ (B c


.group ಛ .group ಛ
ಛ cha
ಛ (B ch
ಛ c#a
ಛ (B c#


.group ಜ .group ಜ
ಜ Ja ಜ Ja
ಜ಼ (B z ಜ಼ (B z


.group ಝ .group ಝ
ಝ Jha
ಝ (B Jh
ಝ J#a
ಝ (B J#


.group ಞ .group ಞ
ಞ n^a ಞ n^a
ಟ (B t. ಟ (B t.


.group ಠ .group ಠ
ಠ th.a
ಠ (B th.
ಠ t.#a
ಠ (B t.#


.group ಡ .group ಡ
ಡ d.a ಡ d.a
ಡ (B d. ಡ (B d.


.group ಢ .group ಢ
ಢ dh.a
ಢ (B dh.
ಢ d.#a
ಢ (B d.#


.group ಣ .group ಣ
ಣ n.a ಣ n.a
ತ (B t ತ (B t


.group ಥ .group ಥ
ಥ tha
ಥ (B th
ಥ t#a
ಥ (B t#


.group ದ .group ದ
ದ da ದ da
ದ (B d ದ (B d


.group ಧ .group ಧ
ಧ dha
ಧ (B dh
ಧ d#a
ಧ (B d#


.group ನ .group ನ
ನ na ನ na
ಪ (B p ಪ (B p


.group ಫ .group ಫ
ಫ pha
ಫ (B ph
ಫ p#a
ಫ (B p#
ಫ಼ fa // nukta ಫ಼ fa // nukta
ಫ಼ (B f ಫ಼ (B f


ಬ (B b ಬ (B b


.group ಭ .group ಭ
ಭ bha
ಭ (B bh
ಭ b#a
ಭ (B b#


.group ಮ .group ಮ
ಮ ma ಮ ma

+ 3
- 3
dictsource/ml_list View File

U+d02 'a#m U+d02 'a#m
U+d03 visarg@m U+d03 visarg@m
U+d3d avagraha U+d3d avagraha
U+d4d chandraka:r@m
U+d4e chil.acharam // ??
U+d4d c#andraka:r@m
U+d4e c#il.ac#aram // ??


ൺ _'yn. // chillu consonants ൺ _'yn. // chillu consonants
ൻ _in ൻ _in
& samuccaj@m & samuccaj@m
_. bindu _. bindu
_, aNkuS;@m _, aNkuS;@m
_; ro:dhini
_; ro:d#ini
_? co:dj@cihn@m _? co:dj@cihn@m
_! a:S;c@rjacihn@m _! a:S;c@rjacihn@m



+ 21
- 21
dictsource/ml_rules View File

ക്ക (B k: ക്ക (B k:


.group ഖ .group ഖ
ഖ kha
ഖ (B kh
ഖ k#a
ഖ (B k#


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


.group ഘ .group ഘ
ഘ gha
ഘ (B gh
ഘ g#a
ഘ (B g#


.group ങ .group ങ
ങ Na ങ Na
ച (B c ച (B c


.group ഛ .group ഛ
ഛ cha
ഛ (B ch
ഛ c#a
ഛ (B c#


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


.group ഝ .group ഝ
ഝ Jha
ഝ (B Jh
ഝ J#a
ഝ (B J#


.group ഞ .group ഞ
ഞ n^a ഞ n^a
ട്ട (B t.: ട്ട (B t.:


.group ഠ .group ഠ
ഠ th.a
ഠ (B th.
ഠ t.#a
ഠ (B t.#


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


.group ഢ .group ഢ
ഢ dh.a
ഢ (B dh.
ഢ d.#a
ഢ (B d.#


.group ണ .group ണ
ണ n.a ണ n.a
ത്ത (B t: ത്ത (B t:


.group ഥ .group ഥ
ഥ tha
ഥ (B th
ഥ t#a
ഥ (B t#


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


.group ധ .group ധ
ധ dha
ധ (B dh
ധ d#a
ധ (B d#


.group ന .group ന
ന na ന na
പ്പ (B p: പ്പ (B p:


.group ഫ .group ഫ
ഫ pha
ഫ (B p
ഫ p#a
ഫ (B p#


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


ബ (B b ബ (B b


.group ഭ .group ഭ
ഭ bha
ഭ (B bh
ഭ b#a
ഭ (B b#


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


.group ല .group ല

+ 51
- 51
dictsource/ne_list View File

_3 t'i:n _3 t'i:n
_4 c'a:r: _4 c'a:r:
_5 p'a:nc _5 p'a:nc
_6 ch'@2
_6 c#'@2
_7 s'a:t _7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'V'u: _9 n'V'u:
_10 d'Vs _10 d'Vs
_11 e:'gh'a:r'V
_11 e:'g#'a:r'V
_12 b'a:r@2 _12 b'a:r@2
_13 t'e:hr@ _13 t'e:hr@
_14 ch'O:d@2
_14 c#'O:d@2
_15 p'Vndr@2 _15 p'Vndr@2
_16 s'o:r@2 _16 s'o:r@2
_17 s'Vtr@2 _17 s'Vtr@2
_18 a'th.'a:r@2
_18 a't.#'a:r@2
_19 U:nn'a:i's _19 U:nn'a:i's
_20 b'i:s _20 b'i:s
_23 t'e:Is _23 t'e:Is
_24 c'O:b'Is _24 c'O:b'Is
_25 p@c:'Is _25 p@c:'Is
_26 ch@b'b'i:s
_26 c#@b'b'i:s
_27 s@t:'a:Is _27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 U:n'Vnt'Is _29 U:n'Vnt'Is
_30 t'i:s _30 t'i:s
_33 t'e:t't'i:s _33 t'e:t't'i:s
_34 cO~,t'I:s _34 cO~,t'I:s
_35 pE~t'Is _35 pE~t'Is
_36 ch@:t't'I:s
_36 c#@:t't'I:s
_37 sE~t'Is _37 sE~t'Is
_38 art'Is _38 art'Is
_39 U:n'an'c'a:l'i:s _39 U:n'an'c'a:l'i:s
_43 t'ri:c'a:l'i:s _43 t'ri:c'a:l'i:s
_44 cO:wa:l'Is _44 cO:wa:l'Is
_45 paI'nta:l'Is _45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 s@'d.cta:l'Is _47 s@'d.cta:l'Is
_48 a'th.'c'a:l'Is
_48 a't.#'c'a:l'Is
_49 U'n'an'c'a:s _49 U'n'an'c'a:s
: :
_50 p@c'a:s _50 p@c'a:s
_53 t'rI:p'an'nV _53 t'rI:p'an'nV
_54 c'Ou:wVn'nV _54 c'Ou:wVn'nV
_55 p'ac'pVn'nV _55 p'ac'pVn'nV
_56 chh@p:'Vn'nV
_56 c#h@p:'Vn'nV
_57 s'Vn't:'a:w@n'n':V _57 s'Vn't:'a:w@n'n':V
_58 a'nth:'a:w@n'n':V
_59 U'n'Vn's'a:th.i:
_60 s'a:th.i:
_61 e:k'as@th.'th.i:
_62 b'E:s@th.':th.'i:
_63 t'r'i:,s@th.'th.'i:
_64 c'O:s@th.'th.'i:
_65 p'E~'s@th.'th.'i:
_66 ch'E's@th.'th.'i:
_67 s'Vt's@th.'th.'i:
_68 a'th.,s@th.'th.'i:
_58 a'nt#:'a:w@n'n':V
_59 U'n'Vn's'a:t.#i:
_60 s'a:t.#i:
_61 e:k'as@t.#'t.#i:
_62 b'E:s@t.#':t.#'i:
_63 t'r'i:,s@t.#'t.#'i:
_64 c'O:s@t.#'t.#'i:
_65 p'E~'s@t.#'t.#'i:
_66 c#'E's@t.#'t.#'i:
_67 s'Vt's@t.#'t.#'i:
_68 a't.#,s@t.#'t.#'i:
_69 U:n'an's'Vtt'ar'i: _69 U:n'an's'Vtt'ar'i:
_70 s'at't@r'i:: _70 s'at't@r'i::
_72 b@h'att'Vr: _72 b@h'att'Vr:
_73 tIjatt:'Vr: _73 tIjatt:'Vr:
_74 cO:hat:'Vr: _74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 ch@'j'ah'at't'Vr:
_75 pac#,at:'Vr:
_76 c#@'j'ah'at't'Vr:
_77 s@t@hatt:'Vr: _77 s@t@hatt:'Vr:
_78 athhatt:'Vr:
_78 at#hatt:'Vr:
_79 U'n'a:s'i: _79 U'n'a:s'i:
_80 a's's'i: _80 a's's'i:
_83 trIj'a:s'i: _83 trIj'a:s'i:
_84 cO:ra:s'i: _84 cO:ra:s'i:
_85 p'ac'a:s'i: _85 p'ac'a:s'i:
_86 ch@j'a:s'i:
_86 c#@j'a:s'i:
_87 s'V:t'a:s'i: _87 s'V:t'a:s'i:
_88 a'th.:a:s'i:
_88 a't.#:a:s'i:
_89 u:n'a:n'ab'b'e: _89 u:n'a:n'ab'b'e:
_90 n@b'b'e: _90 n@b'b'e:
_93 trIj'a:n@b'b'e: _93 trIj'a:n@b'b'e:
_94 cO:r'a:n@b'b'e: _94 cO:r'a:n@b'b'e:
_95 p@n'c'a:n@b'b'e: _95 p@n'c'a:n@b'b'e:
_96 ch@j'a:n@b'b'e:
_96 c#@j'a:n@b'b'e:
_97 s@n't:'a:n@b'b'e: _97 s@n't:'a:n@b'b'e:
_98 a'n'th.'a:n@b'b'e:
_98 a'n't.#'a:n@b'b'e:
_99 U:n'n'a:nsh@je: _99 U:n'n'a:nsh@je:
_0C s'aj@ _0C s'aj@
_0M1 h@z'a:r@ _0M1 h@z'a:r@
_0M2 l'a:kh@
_0M2 l'a:k#@
_0M3 k'a'ro:d.@ _0M3 k'a'ro:d.@
_0M4 'Vr@b _0M4 'Vr@b
_0M5 kh'Vr@b'V
_0M5 k#'Vr@b'V
_0M6 n'i:l' _0M6 n'i:l'
_0M7 p'Vd'm@ _0M7 p'Vd'm@
_0M8 sh'an,kh@
_0M9 m'ah'a:,sh'ankh@
_0M10 p@r'a:rrd:dh@
_0M8 sh'an,k#@
_0M9 m'ah'a:,sh'ank#@
_0M10 p@r'a:rrd:d#@
_dpt _th'o:plo_
_dpt _t#'o:plo_
// Symbols in Nepali // Symbols in Nepali
// Single consonants // Single consonants
क k@ क k@
क़ q@ क़ q@
ख kh@
ख k#@
ख़ x@ ख़ x@
ग g@ ग g@
ग़ Q@ ग़ Q@
घ gh@
घ g#@
ङ N@ ङ N@
च c@ च c@
छ ch@
छ c#@
ज J@ ज J@
ज़ z@ ज़ z@
झ Jh@
झ J#@
ञ n^@ ञ n^@
ट t.@ ट t.@
ठ th.@
ठ t.#@
ड d.@ ड d.@
ड़ r.@ ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@ ण n.@ // retroflex n.@
त t@ त t@
थ th@
थ t#@
द d@ द d@
ध dh@
ध d#@
न n@ न n@
प p@ प p@
फ ph@
फ p#@
फ़ f@ फ़ f@
ब b@ ब b@
भ bh@
भ b#@
म m@ म m@
य j@ य j@
र r@ र r@
पो $u $pause पो $u $pause
हो $u $brk हो $u $brk
के k'e,: $brk के k'e,: $brk
दुःख d'u,,kh@
सुख s'u=kh@
दुःख d'u,,k#@
सुख s'u=k#@
जव J'Vv@ जव J'Vv@
राष्ट्रिय r'a:S,t.rI:j@2 $2 राष्ट्रिय r'a:S,t.rI:j@2 $2
सित s'it@ सित s'it@
होइन h'oi:n@2 होइन h'oi:n@2
भएन bh'Vj'en@2
भएन b#'Vj'en@2
गएन g'Vj'en@2 गएन g'Vj'en@2
खाएन khaj'en@2
खाएन k#aj'en@2
दिएन d'ij'en@2 दिएन d'ij'en@2
छुन ch'un'@
छुन c#'un'@
बाट b'a:t.@ बाट b'a:t.@
अथवा $pause अथवा $pause
वा $pause वा $pause

+ 119
- 119
dictsource/ne_rules View File

.group ख .group ख
ख khV
ख (B kh
?1 ख (_ kh
्) ख (_ kh@/
ख (्ख kh,
खँ khV~'
खॅ khV~'
ख k#V
ख (B k#
?1 ख (_ k#
्) ख (_ k#@/
ख (्ख k#,
खँ k#V~'
खॅ k#V~'
.group ग .group ग
ग gV ग gV
गॅ gV~' गॅ gV~'
.group घ .group घ
घ ghV
घ (B gh
?1 घ (_ gh
घ (्घ gh,
्) घ (_ gh@/
घँ ghV~'
घॅ ghV~'
घ g#V
घ (B g#
?1 घ (_ g#
घ (्घ g#,
्) घ (_ g#@/
घँ g#V~'
घॅ g#V~'
.group ङ // Phoneme adjustment suggested .group ङ // Phoneme adjustment suggested
चॅ cV~' चॅ cV~'
.group छ .group छ
छ chV
छ (B ch
्) छ (C ch@
छ (_ ch@
छँ chV~'
छॅ chV~'
छ c#V
छ (B c#
्) छ (C c#@
छ (_ c#@
छँ c#V~'
छॅ c#V~'
.group ज .group ज
ज JV ज JV
्) ज (_ J@/ ्) ज (_ J@/
.group झ // Phoneme adjustment suggested. .group झ // Phoneme adjustment suggested.
झ JhV
झ (B Jh
झँ JhV~'
झॅ JhV~'
झ J#V
झ (B J#
झँ J#V~'
झॅ J#V~'
झ (्झ J, झ (्झ J,
झ (_ Jh
झ (_ J#
.group ञ // Phoneme adjustment suggested .group ञ // Phoneme adjustment suggested
ञ n^V ञ n^V
ट (्य t.: ट (्य t.:
.group ठ .group ठ
ठ th.V
ठ (B th.
ठँ t.hV~'
ठॅ t.hV~'
ठ (्ठ th.,
्) ठ (_ th.@/
?1 ठ (_ t.h
ठ t.#V
ठ (B t.#
ठँ t.#V~'
ठॅ t.#V~'
ठ (्ठ t.#,
्) ठ (_ t.#@/
?1 ठ (_ t.#
.group ड .group ड
ड d.V ड d.V
ड़ॅ d.:V~' ड़ॅ d.:V~'
.group ढ .group ढ
ढ dh.V
ढ (B dh.
ढँ d.hV~'
ढॅ d.hV~'
्) ढ (_ dh.@/
?1 ढ (_ d.h
ढ़ d.hV: // nukta
ढ़ (B d.h // nukta
ढ d.#V
ढ (B d.#
ढँ d.#V~'
ढॅ d.#V~'
्) ढ (_ d.#@/
?1 ढ (_ d.#
ढ़ d.#V: // nukta
ढ़ (B d.# // nukta
.group ण .group ण
ण n.V // Phoneme adjustment suggested ण n.V // Phoneme adjustment suggested
?1 त (_ t, ?1 त (_ t,
.group थ .group थ
थ thV
थँ thV~'
थॅ thV~'
थ (B th
्) थ (_ th@/
थ (्य th,
?1 थ (_ th
थ t#V
थँ t#V~'
थॅ t#V~'
थ (B t#
्) थ (_ t#@/
थ (्य t#,
?1 थ (_ t#
.group द .group द
द dV द dV
्) द (_ d@/ ्) द (_ d@/
.group ध .group ध
ध dhV
धँ dhV~'
धॅ dhV~'
ध (B dh
?1 ध (_ dh
्) ध (_ dh@/
ध d#V
धँ d#V~'
धॅ d#V~'
ध (B d#
?1 ध (_ d#
्) ध (_ d#@/
.group न .group न
न nV न nV
्) प (_ p@/ ्) प (_ p@/
.group फ .group फ
फ phV
फँ phV~'
फॅ phV~'
फ (B ph
फ (्न ph:
?1 फ (_ ph
्) फ (_ ph@/
फ p#V
फँ p#V~'
फॅ p#V~'
फ (B p#
फ (्न p#:
?1 फ (_ p#
्) फ (_ p#@/
.group ब .group ब
ब bV ब bV
्) ब (_ b@/ ्) ब (_ b@/
.group भ .group भ
भ bhV
भँ bhV~'
भॅ bhV~'
भ (B bh
?1 भ (_ bh
भ (्य bh,
भ b#V
भँ b#V~'
भॅ b#V~'
भ (B b#
?1 भ (_ b#
भ (्य b#,
्) भ (_ bh@/ ्) भ (_ bh@/
.group म .group म
.group [ .group [
[ l'eftbr'ak'et [ l'eftbr'ak'et
[ (_A th'ul'ok'osht.@2suru
[ (_C th'ul'ok'osht.@2suru
[ (_० th'ul'ok'osht.@2suru
[ (_१ th'ul'ok'osht.@2suru
[ (_२ th'ul'ok'osht.@2suru
[ (_३ th'ul'ok'osht.@2suru
[ (_४ th'ul'ok'osht.@2suru
[ (_५ th'ul'ok'osht.@2suru
[ (_६ th'ul'ok'osht.@2suru
[ (_७ th'ul'ok'osht.@2suru
[ (_८ th'ul'ok'osht.@2suru
[ (_९ th'ul'ok'osht.@2suru
[ (_A t#'ul'ok'osht.@2suru
[ (_C t#'ul'ok'osht.@2suru
[ (_० t#'ul'ok'osht.@2suru
[ (_१ t#'ul'ok'osht.@2suru
[ (_२ t#'ul'ok'osht.@2suru
[ (_३ t#'ul'ok'osht.@2suru
[ (_४ t#'ul'ok'osht.@2suru
[ (_५ t#'ul'ok'osht.@2suru
[ (_६ t#'ul'ok'osht.@2suru
[ (_७ t#'ul'ok'osht.@2suru
[ (_८ t#'ul'ok'osht.@2suru
[ (_९ t#'ul'ok'osht.@2suru
.group ] .group ]
] r'aitbr'ak'et ] r'aitbr'ak'et
A_) ] th'ul'ok'osht.@2b'Vnd@2
C_) ] th'ul'ok'osht.@2b'Vnd@2
०_) ] th'ul'ok'osht.@2b'Vnd@2
१_) ] th'ul'ok'osht.@2b'Vnd@2
२_) ] th'ul'ok'osht.@2b'Vnd@2
३_) ] th'ul'ok'osht.@2b'Vnd@2
४_) ] th'ul'ok'osht.@2b'Vnd@2
५_) ] th'ul'ok'osht.@2b'Vnd@2
६_) ] th'ul'ok'osht.@2b'Vnd@2
७_) ] th'ul'ok'osht.@2b'Vnd@2
८_) ] th'ul'ok'osht.@2b'Vnd@2
९_) ] th'ul'ok'osht.@2b'Vnd@2
A_) ] t#'ul'ok'osht.@2b'Vnd@2
C_) ] t#'ul'ok'osht.@2b'Vnd@2
०_) ] t#'ul'ok'osht.@2b'Vnd@2
१_) ] t#'ul'ok'osht.@2b'Vnd@2
२_) ] t#'ul'ok'osht.@2b'Vnd@2
३_) ] t#'ul'ok'osht.@2b'Vnd@2
४_) ] t#'ul'ok'osht.@2b'Vnd@2
५_) ] t#'ul'ok'osht.@2b'Vnd@2
६_) ] t#'ul'ok'osht.@2b'Vnd@2
७_) ] t#'ul'ok'osht.@2b'Vnd@2
८_) ] t#'ul'ok'osht.@2b'Vnd@2
९_) ] t#'ul'ok'osht.@2b'Vnd@2
.group { .group {
{ l'eftbr'eIs { l'eftbr'eIs
{ (_A b'a:Ng'ek'oshth.@2suru
{ (_C b'a:Ng'ek'oshth.@2suru
{ (_० b'a:Ng'ek'oshth.@2suru
{ (_१ b'a:Ng'ek'oshth.@2suru
{ (_२ b'a:Ng'ek'oshth.@2suru
{ (_३ b'a:Ng'ek'oshth.@2suru
{ (_४ b'a:Ng'ek'oshth.@2suru
{ (_५ b'a:Ng'ek'oshth.@2suru
{ (_६ b'a:Ng'ek'oshth.@2suru
{ (_७ b'a:Ng'ek'oshth.@2suru
{ (_८ b'a:Ng'ek'oshth.@2suru
{ (_९ b'a:Ng'ek'oshth.@2suru
{ (_A b'a:Ng'ek'osht.#@2suru
{ (_C b'a:Ng'ek'osht.#@2suru
{ (_० b'a:Ng'ek'osht.#@2suru
{ (_१ b'a:Ng'ek'osht.#@2suru
{ (_२ b'a:Ng'ek'osht.#@2suru
{ (_३ b'a:Ng'ek'osht.#@2suru
{ (_४ b'a:Ng'ek'osht.#@2suru
{ (_५ b'a:Ng'ek'osht.#@2suru
{ (_६ b'a:Ng'ek'osht.#@2suru
{ (_७ b'a:Ng'ek'osht.#@2suru
{ (_८ b'a:Ng'ek'osht.#@2suru
{ (_९ b'a:Ng'ek'osht.#@2suru
.group } .group }
} r'aItbr'eIs } r'aItbr'eIs
A_) } b'a:Ng'ek'oshth.@2b'Vnd@2
C_) } b'a:Ng'ek'oshth.@2b'Vnd@2
०_) } b'a:Ng'ek'oshth.@2b'Vnd@2
१_) } b'a:Ng'ek'oshth.@2b'Vnd@2
२_) } b'a:Ng'ek'oshth.@2b'Vnd@2
३_) } b'a:Ng'ek'oshth.@2b'Vnd@2
४_) } b'a:Ng'ek'oshth.@2b'Vnd@2
५_) } b'a:Ng'ek'oshth.@2b'Vnd@2
६_) } b'a:Ng'ek'oshth.@2b'Vnd@2
७_) } b'a:Ng'ek'oshth.@2b'Vnd@2
८_) } b'a:Ng'ek'oshth.@2b'Vnd@2
९_) } b'a:Ng'ek'oshth.@2b'Vnd@2
A_) } b'a:Ng'ek'osht.#@2b'Vnd@2
C_) } b'a:Ng'ek'osht.#@2b'Vnd@2
०_) } b'a:Ng'ek'osht.#@2b'Vnd@2
१_) } b'a:Ng'ek'osht.#@2b'Vnd@2
२_) } b'a:Ng'ek'osht.#@2b'Vnd@2
३_) } b'a:Ng'ek'osht.#@2b'Vnd@2
४_) } b'a:Ng'ek'osht.#@2b'Vnd@2
५_) } b'a:Ng'ek'osht.#@2b'Vnd@2
६_) } b'a:Ng'ek'osht.#@2b'Vnd@2
७_) } b'a:Ng'ek'osht.#@2b'Vnd@2
८_) } b'a:Ng'ek'osht.#@2b'Vnd@2
९_) } b'a:Ng'ek'osht.#@2b'Vnd@2
// Special Symbols with special meanings // Special Symbols with special meanings
.group .group
। pur',n.@,w'ir'a:m // Fullstop of Devanagari । pur',n.@,w'ir'a:m // Fullstop of Devanagari
॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice.
॥ d'i:rg#@,w'ir'a:m // Double Fullstop - means Read sentence twice.
ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!).
॰ saNks.e:p@s'u:c@k@ ॰ saNks.e:p@s'u:c@k@
$ dOlV
$ dOlV
% prVtish'vt % prVtish'vt
// Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! // Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels!
़ n'u'k't'a: // Name of symbol. ़ n'u'k't'a: // Name of symbol.
॑ Ud'Vtt,@ ॑ Ud'Vtt,@
॓ Ud:dh@r,@n.@a:r'Vmbh@
॔ ,Ud:dh@r,@n.@'Vnt@
ॽ k,@n.th.@w'Ira:m
॓ Ud:d#@r,@n.@a:r'Vmb#@
॔ ,Ud:d#@r,@n.@'Vnt@
ॽ k,@n.t.#@w'Ira:m
॒ a'n'ud'Vtt,@ ॒ a'n'ud'Vtt,@

+ 241
- 168
dictsource/pa_list View File


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


// Numbers
_0 z'iRo
_1 'Ik:
_2 d'o
_3 t'I~n
_4 c'aR
_5 p'VnJ
_6 ch'e
_7 s'Vt:
_8 'Vth.:
_9 n'O~

_10 d'Vs
_11 gI'aRa~
_12 b'aRa~
_13 t'eRa~
_14 c'Oda~
_15 p'Vnd@Ra~
_16 s'ol.a~
_17 s@t'aRa~
_18 Vth.'aRa~
_19 'Unni

_20 v'iH
_21 Ik:i
_22 b'ai
_23 t'ei
_24 c'Ovi
_25 p'Vc:i
_26 ch'Vb:i
_27 s@t'ai
_28 Vth.'ai
_29 Un'Vt:i

_30 t'iH
_31 Ik'Vt:i
_32 b'Vt:i
_33 t'et:i
_34 c'ONti
_35 p'ENti
_36 ch'Vt:i
_37 s'ENti

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

_40 c'ali
_41 Ik@t'ali
_42 be'ali
_43 t@R@t'ali
_44 cUt'ali
_45 p@nt'ali
_46 chI'ali
_47 s@nt'ali
_48 ,@R2@t'ali
_49 Un'VnJa

_50 p@nJ'aH
_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.

_60 s'Vth.:
_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

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

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

_90 n'Vb:e
_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~
_97 s@t'an@ve~
_98 Vth.'an@ve~
_99 n@R2'I~n@v,e~

_0C s'O
_0M1 H@J'aR
_0M2 l'Vkh: // 100,000
_0M3 k'VRoR // 10,000,000
_0M4 'VR@b // 1,000,000,000
_0M5 kh'VR@b // 100,000,000,000

_dpt _dOth // ??


// character names
ਂ bInd'i
ੰ tIpp'i
ੱ VddVk
ਃ visaRg
੍ hVlVnt

ਅ 'ERV
ੲ 'IRI
ੳ 'URV
_ਆ 'ERV||kVnn'a
_ਇ 'IRI||sIh'aRi
_ਈ 'IRI||bIh'aRi
_ਉ 'URV||'OnkaR
_ਊ 'URV||dUl'EnkaR
_ਏ 'IRI||l'avam
_ਐ 'ERV||dUl'avam
_ਓ 'URV||hoR'a
_ਔ 'ERV||kVnOR'a

ਾ kVnn'a
ਿ sIh'aRi
ੀ bIh'aRi
ੁ OnkaR
ੂ dUl'EnkaR
ੇ l'ava~
ੈ d@l'ava~
ੋ hoR'a
ੌ kVn'ORa

। d.'Vnd.i
ਸਰਕਾਰ sR@k'aR
ਸਰਕਾਰੀ sR@k'aRi

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

// This file is UTF8 encoded
// Punjabi/Gurmukhi
// Numbers
_0 z'iRo
_1 'Ik:
_2 d'o
_3 t'I~n
_4 c'aR
_5 p'VnJ
_6 c#'e
_7 s'Vt:
_8 'Vt.#:
_9 n'O~
_10 d'Vs
_11 gI'aRa~
_12 b'aRa~
_13 t'eRa~
_14 c'Oda~
_15 p'Vnd@Ra~
_16 s'ol.a~
_17 s@t'aRa~
_18 Vt.#'aRa~
_19 'Unni
_20 v'iH
_21 Ik:i
_22 b'ai
_23 t'ei
_24 c'Ovi
_25 p'Vc:i
_26 c#'Vb:i
_27 s@t'ai
_28 Vt.#'ai
_29 Un'Vt:i
_30 t'iH
_31 Ik'Vt:i
_32 b'Vt:i
_33 t'et:i
_34 c'ONti
_35 p'ENti
_36 c#'Vt:i
_37 s'ENti
_38 Vt.#'Vt:i
_39 U~Nt'ali
_40 c'ali
_41 Ik@t'ali
_42 be'ali
_43 t@R@t'ali
_44 cUt'ali
_45 p@nt'ali
_46 c#I'ali
_47 s@nt'ali
_48 ,@R2@t'ali
_49 Un'VnJa
_50 p@nJ'aH
_51 ,@k@v'VnJa
_52 b@v'VnJa
_53 t,@R@v'VnJa
_54 cUR'VnJa
_55 p,@c@v'VnJa
_56 c#@p'VnJa
_57 s,@t@v'VnJa
_58 ,@t.#@v'VnJa
_59 Un.'at.#
_60 s'Vt.#:
_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 c#e'aH@t.
_67 s@t'aH@t.
_68 ,@t.#'aH@t.
_69 Un.'Vt:@R
_70 s'Vt:@R
_71 Ik'Vt:@R
_72 b@H'Vt:@R
_73 t@H'et:@R
_74 cOH'Vt:@R
_75 p@J'Vt:@R
_76 c#IH'Vt:@R
_77 s@t'Vt:@R
_78 Vt.#'Vt:@R
_79 Un.'asi
_80 'Vssi
_81 ,IkI;'asi
_82 bI;'asi
_83 t,@RI;'asi
_84 cUR'asi
_85 p@c'asi
_86 c#I;'asi
_87 s@t'asi
_88 Vt.#'asi
_89 Un'an@v,e~
_90 n'Vb:e
_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 c#I'an@ve~
_97 s@t'an@ve~
_98 Vt.#'an@ve~
_99 n@R2'I~n@v,e~
_0C s'O
_0M1 H@J'aR
_0M2 l'Vk#: // 100,000
_0M3 k'VRoR // 10,000,000
_0M4 'VR@b // 1,000,000,000
_0M5 k#'VR@b // 100,000,000,000
_dpt _dOt# // ??
// character names
ਂ bInd'i
ੰ tIpp'i
ੱ VddVk
ਃ visaRg
੍ hVlVnt
ਅ 'ERV
ੲ 'IRI
ੳ 'URV
_ਆ 'ERV||kVnn'a
_ਇ 'IRI||sIh'aRi
_ਈ 'IRI||bIh'aRi
_ਉ 'URV||'OnkaR
_ਊ 'URV||dUl'EnkaR
_ਏ 'IRI||l'avam
_ਐ 'ERV||dUl'avam
_ਓ 'URV||hoR'a
_ਔ 'ERV||kVnOR'a
ਾ kVnn'a
ਿ sIh'aRi
ੀ bIh'aRi
ੁ OnkaR
ੂ dUl'EnkaR
ੇ l'ava~
ੈ d@l'ava~
ੋ hoR'a
ੌ kVn'ORa
// Punctuation
। d.'Vnd.i
// Pronouns
// ਪੁਰਖਵਾਚੀ ਪੜਨਾਂਵ
ਮੈਂ $u // main: I
ਮੈਨੂੰ $u
ਮੇਰਾ $u
ਮੇਰੀ $u
ਮੇਰੇ $u
ਅਸੀਂ $u // we
ਸਾਨੂੰ $u
ਸਾਡਾ $u
ਸਾਡੀ $u
ਸਾਡੇ $u
ਆਪ $u // you(formal)
ਆਪਨੂੰ $u
ਆਪਦਾ $u
ਆਪਦੀ $u
ਆਪਦੇ $u
ਤੂੰ $u // you (informal)
ਤੂਸੀਂ $u // you(formal)
ਤੁਹਾਨੂੰ $u
ਤੁਹਾਡਾ $u
ਤੁਹਾਡੀ $u
ਤੁਹਾਡੇ $u
ਤੂੰ $u // you (informal)
ਤੈਨੂੰ $u
ਤੇਰਾ $u
ਇਹ $u // he/she/it
ਇਸਤੋਂ $u
ਇਸਦਾ $u
ਇਹ $u // they
ਇਨ੍ਹਾਂਨੂੰ $u
ਇਨ੍ਹਾਂਦਾ $u
ਉਹ $u // he/she/it
ਉਸਤੋਂ $u
ਉਸਦਾ $u
ਉਸਦੀ $u
ਉਸਦੇ $u
ਉਹ $u // they
ਉਨ੍ਹਾਂਨੂੰ $u // unhannu: them
ਉਨ੍ਹਾਂਦਾ $u
ਉਨ੍ਹਾਂਦੀ $u
ਉਨ੍ਹਾਂਦੇ $u
// Prepositions/Postpositions
ਦਾ $u // dā: of, possessive particle
ਦੀ $u // dī
ਦੇ $u // de
ਨੂੰ $u // nu: to
ਤੱਕ $u // tak: until, for(time)
ਬਿਨਾ $u $pause // without (preposition)
ਵਿਚ $u // in
ਵਿੱਚ $u // in
ਤੋਂ $u // ton: from, with, by
// Verbs
ਹਾਂ $u // to be
ਹੋ $u
ਹੈ $u
ਹੈਂ $u
ਹਨ $u
ਸੀ $u // si: past aux
ਸਨ $u // san: past aux
ਰਹਾ $u // rahā: continuous
ਰਹੇ $u // rahe
ਰਹੀ $u // rahī
$textmode
ਸੋਫਟਵਿਅਰ software
ਈਮੇਲ email
ਕੀਬੋਰਡ keyboard
ਬੋਰਡ board
$phonememode

+ 45
- 45
dictsource/pa_rules View File

ੱ) ਕ (_ k: ੱ) ਕ (_ k:


.group ਖ .group ਖ
ਖ khV
ਖ (B kh
@) ਖ (_ kh
ੱ) ਖ kh:V
ੱ) ਖ (B kh:
ੱ) ਖ (_ kh:
ਖ k#V
ਖ (B k#
@) ਖ (_ k#
ੱ) ਖ k#:V
ੱ) ਖ (B k#:
ੱ) ਖ (_ k#:


.group ਗ .group ਗ
ਗ gV ਗ gV
ੱ) ਗ (_ g: ੱ) ਗ (_ g:


.group ਘ .group ਘ
ਘ ghV
ਘ (B gh
@) ਘ (_ gh
ਘ g#V
ਘ (B g#
@) ਘ (_ g#
_) ਘ k+V // high tone _) ਘ k+V // high tone
_) ਘ (B k+ _) ਘ (B k+


ੱ) ਚ (_ c: ੱ) ਚ (_ c:


.group ਛ .group ਛ
ਛ chV
ਛ (B ch
@) ਛ (_ ch
ੱ) ਛ ch:V
ੱ) ਛ (B ch:
ੱ) ਛ (_ ch:
ਛ c#V
ਛ (B c#
@) ਛ (_ c#
ੱ) ਛ c#:V
ੱ) ਛ (B c#:
ੱ) ਛ (_ c#:


.group ਜ .group ਜ
ਜ JV ਜ JV
ੱ) ਜ (_ J: ੱ) ਜ (_ J:


.group ਝ .group ਝ
ਝ JhV
ਝ (B Jh
@) ਝ (_ Jh
ਝ J#V
ਝ (B J#
@) ਝ (_ J#
_) ਝ c+V _) ਝ c+V
_) ਝ (B c+ _) ਝ (B c+


ੱ) ਟ (_ t.: ੱ) ਟ (_ t.:


.group ਠ .group ਠ
ਠ th.V
ਠ (B th.
@) ਠ (_ th.
ੱ) ਠ th.:V
ੱ) ਠ (B th.:
ੱ) ਠ (_ th.:
ਠ t.#V
ਠ (B t.#
@) ਠ (_ t.#
ੱ) ਠ t.#:V
ੱ) ਠ (B t.#:
ੱ) ਠ (_ t.#:


.group ਡ .group ਡ
ਡ d.V ਡ d.V
ੱ) ਡ (_ d.: ੱ) ਡ (_ d.:


.group ਢ .group ਢ
ਢ dh.V
ਢ (B dh.
@) ਢ (_ dh.
ਢ d.#V
ਢ (B d.#
@) ਢ (_ d.#
_) ਢ t.+V _) ਢ t.+V
_) ਢ (B t. _) ਢ (B t.


ੱ) ਤ (_ t: ੱ) ਤ (_ t:


.group ਥ .group ਥ
ਥ thV
ਥ (B th
@) ਥ (_ th
ੱ) ਥ th:V
ੱ) ਥ (B th:
ੱ) ਥ (_ th:
ਥ t#V
ਥ (B t#
@) ਥ (_ t#
ੱ) ਥ t#:V
ੱ) ਥ (B t#:
ੱ) ਥ (_ t#:


.group ਦ .group ਦ
ਦ dV ਦ dV
ੱ) ਦ (_ d: ੱ) ਦ (_ d:


.group ਧ .group ਧ
ਧ dhV
ਧ (B dh
@) ਧ (_ dh
ਧ d#V
ਧ (B d#
@) ਧ (_ d#
_) ਧ t+V _) ਧ t+V
_) ਧ (B t+ _) ਧ (B t+


ੱ) ਪ (_ p: ੱ) ਪ (_ p:


.group ਫ .group ਫ
ਫ phV
ਫ (B ph
@) ਫ (_ ph
ੱ) ਫ ph:V
ੱ) ਫ (B ph:
ੱ) ਫ (_ ph:
ਫ p#V
ਫ (B p#
@) ਫ (_ p#
ੱ) ਫ p#:V
ੱ) ਫ (B p#:
ੱ) ਫ (_ p#:


.group ਬ .group ਬ
ਬ bV ਬ bV
ੱ) ਬ (_ b: ੱ) ਬ (_ b:


.group ਭ .group ਭ
ਭ bhV
ਭ (B bh
@) ਭ (_ bh
ਭ b#V
ਭ (B b#
@) ਭ (_ b#
_) ਭ p+V _) ਭ p+V
_) ਭ (B p+ _) ਭ (B p+



+ 2
- 0
dictsource/pt_list View File

_ar 'a*aby _ar 'a*aby
_cyr si*'ilikU _cyr si*'ilikU
_he eb*'aIkU _he eb*'aIkU
_zh Sin'es




// character names // character names
gameta $alt2 gameta $alt2
geleia $alt geleia $alt
gelo $alt $verb gelo $alt $verb
genebra $alt
germe $alt germe $alt
gesso $alt2 gesso $alt2
golpe $alt golpe $alt

+ 11
- 6
dictsource/pt_rules View File

_soub) e (L05_ E _soub) e (L05_ E
_rend) e (L06_ e _rend) e (L06_ e
_vend) e (L06_ e _vend) e (L06_ e
_atend) e (L06_ e
tend) e (L06_ e / a- con- en- es-
_compreend) e (L06_ e _compreend) e (L06_ e
_entend) e (L06_ e
_estend) e (L06_ e
respond) e (L06_ e // cor- respond) e (L06_ e // cor-
_enraivec) e (L07_ e _enraivec) e (L07_ e
_espairec) e (L07_ e _espairec) e (L07_ e
vert) e (L07_ e // in- re- con- vert) e (L07_ e // in- re- con-
_eleg) e (L07_ e _eleg) e (L07_ e
_ergu) e (L07_ e _ergu) e (L07_ e
_escond) e (L06_ e
_mord) e (L06_ e
_mord) e (L07_ e _mord) e (L07_ e
_morr) e (L07_ e _morr) e (L07_ e
_perd) e (L07_ e _perd) e (L07_ e
_agradec) e (L07_ e _agradec) e (L07_ e
_amanhec) e (L07_ e _amanhec) e (L07_ e
_anoitec) e (L07_ e _anoitec) e (L07_ e
_arrepend) e (L06_ e
_arrepend) e (L07_ e _arrepend) e (L07_ e
_cresc) e (L07_ e _cresc) e (L07_ e
_defend) e (L06_ e
_defend) e (L07_ e _defend) e (L07_ e
_depend) e (L06_ e
_depend) e (L07_ e _depend) e (L07_ e
_emagrec) e (L07_ e _emagrec) e (L07_ e
_enlouquec) e (L07_ e _enlouquec) e (L07_ e
_escurec) e (L07_ e _escurec) e (L07_ e
_esquec) e (L07_ e _esquec) e (L07_ e
_interromp) e (L07_ e _interromp) e (L07_ e
_obedec) e (L07_ e
obedec) e (L07_ e / des-
_suspend) e (L07_ e
_perec) e (L07_ e _perec) e (L07_ e
_rejuvenec) e (L07_ e _rejuvenec) e (L07_ e
aprend) e (L07_ e // re- aprend) e (L07_ e // re-
conhec) e (L07_ e // & re- des- conhec) e (L07_ e // & re- des-
entend) e (L07_ e
tend) e (L07_ e / en- con- a- es-
preend) e (L07_ e // sur- com- preend) e (L07_ e // sur- com-
respond) e (L07_ e // cor- respond) e (L07_ e // cor-
qu) e (brL04_ E qu) e (brL04_ E
acel) e (rL04_ E / des- acel) e (rL04_ E / des-
_hosp) e (dL03_ E _hosp) e (dL03_ E
_amort) e (çL03_ e
_in) e (ptL03_ E _in) e (ptL03_ E
_gr) e (gL03_ e _gr) e (gL03_ e
_n) e (grL03_ e _n) e (grL03_ e
_aqu) e (çL03_ e _aqu) e (çL03_ e
_car) e (çL03_ e _car) e (çL03_ e
_mer) e (çL03_ e _mer) e (çL03_ e
_pad) e (çL03_ e // com-
pad) e (çL03_ e // com-
_per) e (çL03_ e _per) e (çL03_ e
conh) e (çL03_ e // re- conh) e (çL03_ e // re-
_esqu) e (çL03_ e _esqu) e (çL03_ e

+ 1
- 0
dictsource/ta_list View File

_ar arVbU _ar arVbU
_cyr sirillik _cyr sirillik
_he ;ebire:jVm _he ;ebire:jVm
_zh tS'i:nV




// abbreviations // abbreviations

+ 19
- 19
dictsource/te_list View File

_11 padakond.u _11 padakond.u
_12 pannemd.u _12 pannemd.u
_13 padamu:d.u: _13 padamu:d.u:
_14 padhna:lugu
_14 pad#na:lugu
_15 padihe:nu _15 padihe:nu
_16 padaha:ru _16 padaha:ru
_17 padihe:d.u _17 padihe:d.u
_18 paddhenimidi
_18 padd#enimidi
_19 pamdommadi _19 pamdommadi
_2X iravaI _2X iravaI
_3X muppaI _3X muppaI
_4X nalubhaI
_5X ja:bhaI
_4X nalub#aI
_5X ja:b#aI
_6X aravaI _6X aravaI
_7X d.ebhbaI
_8X jenabhaI
_9X tombhaI
_7X d.eb#baI
_8X jenab#aI
_9X tomb#aI
_0C vandala _0C vandala
_0C0 vandalu _0C0 vandalu
_1C okavanda _1C okavanda
_, ka:ma: _, ka:ma:
_; semi:ko:lan _; semi:ko:lan
_: ko:lan _: ko:lan
_! a:S;carja:rthaka
_? praS;na:rthaka
_! a:S;carja:rt#aka
_? praS;na:rt#aka
_- haIfan _- haIfan
__ amd.ar||sko:r __ amd.ar||sko:r




// consonants with virama // consonants with virama
క్ ik క్ ik
ఖ్ ikh
ఖ్ ik#
గ్ ig గ్ ig
ఘ్ igh
ఘ్ ig#
ఙ్ iN ఙ్ iN
చ్ ic చ్ ic
ఛ్ ich
ఛ్ ic#
జ్ iJ జ్ iJ
ఝ్ iJh
ఝ్ iJ#
ఞ్ in^ ఞ్ in^
ట్ it. ట్ it.
ఠ్ ith.
ఠ్ it.#
డ్ id. డ్ id.
ఢ్ idh.
ఢ్ id.#
ణ్ in. ణ్ in.
త్ it త్ it
థ్ ith
థ్ it#
ద్ id ద్ id
ధ్ idh
ధ్ id#
న్ in న్ in
ప్ ip ప్ ip
ఫ్ iph
ఫ్ ip#
బ్ ib బ్ ib
భ్ ibh
భ్ ib#
మ్ im మ్ im
య్ ij య్ ij
ర్ ir ర్ ir

+ 20
- 20
dictsource/te_rules View File

క (B k క (B k


.group ఖ .group ఖ
ఖ kha
ఖ (B kh
ఖ k#a
ఖ (B k#


.group గ .group గ
గ ga గ ga
గ (B g గ (B g


.group ఘ .group ఘ
ఘ gha
ఘ (B gh
ఘ g#a
ఘ (B g#


.group ఙ .group ఙ
ఙ Na ఙ Na
చ (B c చ (B c


.group ఛ .group ఛ
ఛ cha
ఛ (B ch
ఛ c#a
ఛ (B c#


.group జ .group జ
జ Ja జ Ja
జ (B J జ (B J


.group ఝ .group ఝ
ఝ Jha
ఝ (B Jh
ఝ J#a
ఝ (B J#


.group ఞ .group ఞ
ఞ n^a ఞ n^a
ట (B t. ట (B t.


.group ఠ .group ఠ
ఠ th.a
ఠ (B th.
ఠ t.#a
ఠ (B t.#


.group డ .group డ
డ d.a డ d.a
డ (B d. డ (B d.


.group ఢ .group ఢ
ఢ dh.a
ఢ (B dh.
ఢ d.#a
ఢ (B d.#


.group ణ .group ణ
ణ n.a ణ n.a
త (B t త (B t


.group థ .group థ
థ tha
థ (B th
థ t#a
థ (B t#


.group ద .group ద
ద da ద da
ద (B d ద (B d


.group ధ .group ధ
ధ dha
ధ (B dh
ధ d#a
ధ (B d#


.group న .group న
న na న na
ప (B p ప (B p


.group ఫ .group ఫ
ఫ pha
ఫ (B ph
ఫ p#a
ఫ (B p#


.group బ .group బ
బ ba బ ba
బ (B b బ (B b


.group భ .group భ
భ bha
భ (B bh
భ b#a
భ (B b#


.group మ .group మ
మ ma మ ma

+ 43
- 43
dictsource/ur_list View File

ن nu:n ن nu:n
و va:O و va:O
ہ He: ہ He:
ں ghUnna
ﮨ cho:ti:||He:
ں g#Unna
ﮨ c#o:ti:||He:
ھ dO||caSmi:||He: ھ dO||caSmi:||He:
ء HamzaH ء HamzaH
ی cho:t.i:||je:
ی c#o:t.i:||je:
ے bar.i:||je: ے bar.i:||je:
ئ h'amza ئ h'amza


_3 t'i:n _3 t'i:n
_4 c'a:R _4 c'a:R
_5 p'a:Nc _5 p'a:Nc
_6 ch'eh
_6 c#'eh
_7 s'a:t _7 s'a:t
_8 'a:th
_8 'a:t#
_9 n'aU _9 n'aU
_10 d'as _10 d'as
_11 gj'a:RaH _11 gj'a:RaH
_15 p'andRaH _15 p'andRaH
_16 s'o:laH _16 s'o:laH
_17 s'atRaH _17 s'atRaH
_18 ath'a:RaH
_18 at#'a:RaH
_19 'Unni:s _19 'Unni:s
_20 b'i:s _20 b'i:s
_21 Ikk'i:s _21 Ikk'i:s
_23 te:'i:s _23 te:'i:s
_24 caUb'i:s _24 caUb'i:s
_25 pacc'i:s _25 pacc'i:s
_26 chabb'i:s
_26 c#abb'i:s
_27 sat:a:'i:s _27 sat:a:'i:s
_28 ,ath.a:j'i:s
_28 ,at.#a:j'i:s
_29 Unt'i:s _29 Unt'i:s
_30 t'i:s _30 t'i:s
_31 ikVt'i:s _31 ikVt'i:s
_33 t'aINt'i:s _33 t'aINt'i:s
_34 caUNt'i:s _34 caUNt'i:s
_35 paINt'i:s _35 paINt'i:s
_36 chat:'i:s
_36 c#at:'i:s
_37 saINt'i:s _37 saINt'i:s
_38 aRt'i:s _38 aRt'i:s
_39 Unta:l'i:s _39 Unta:l'i:s
_43 te:Nta:l'i:s _43 te:Nta:l'i:s
_44 cava:l'i:s _44 cava:l'i:s
_45 paINta:l'i:s _45 paINta:l'i:s
_46 chIja:l'i:s
_46 c#Ija:l'i:s
_47 saINta:l'i:s _47 saINta:l'i:s
_48 aRta:l'i:s _48 aRta:l'i:s
_49 Unc'a:s _49 Unc'a:s
_53 t'IRpan _53 t'IRpan
_54 c'aUvan _54 c'aUvan
_55 p'acpan _55 p'acpan
_56 ch'appan
_56 c#'appan
_57 sat:'a:van _57 sat:'a:van
_58 ath'a:van
_59 Uns'ath
_60 s'a:th
_61 'Iksath
_62 b'a:sath
_63 t'IRsath
_64 c'aUsath
_65 p'aINsath
_66 chIj'a:sath
_67 s'aRsath
_68 'aRsath
_58 at#'a:van
_59 Uns'at#
_60 s'a:t#
_61 'Iksat#
_62 b'a:sat#
_63 t'IRsat#
_64 c'aUsat#
_65 p'aINsat#
_66 c#Ij'a:sat#
_67 s'aRsat#
_68 'aRsat#
_69 UnH,at:'aR _69 UnH,at:'aR
_70 sat:'aR _70 sat:'aR
_71 IkHat:'aR _71 IkHat:'aR
_72 baHat:'aR _72 baHat:'aR
_73 tIHat:'aR _73 tIHat:'aR
_74 caUHat:'aR _74 caUHat:'aR
_75 pachat:'aR
_76 chIHat:'aR
_77 sathat:'aR
_78 athHat:'aR
_75 pac#at:'aR
_76 c#IHat:'aR
_77 sat#at:'aR
_78 at#Hat:'aR
_79 Unna:s'i: _79 Unna:s'i:
_80 ass'i: _80 ass'i:
_81 Ika:s'i: _81 Ika:s'i:
_83 tIRa:s'i: _83 tIRa:s'i:
_84 caURa:s'i: _84 caURa:s'i:
_85 paca:s'i: _85 paca:s'i:
_86 chIja:s'i:
_86 c#Ija:s'i:
_87 sat:a:s'i: _87 sat:a:s'i:
_88 atha:s'i:
_88 at#a:s'i:
_89 nava:s'i: _89 nava:s'i:
_90 navv'e: _90 navv'e:
_91 Ikj'a:nve: _91 Ikj'a:nve:
_93 tIT'a:nve: _93 tIT'a:nve:
_94 caUR'a:nve: _94 caUR'a:nve:
_95 pac'a:nve: _95 pac'a:nve:
_96 chIj'a:nve:
_96 c#Ij'a:nve:
_97 sat:'a:nve: _97 sat:'a:nve:
_98 ath:'a:nve:
_98 at#:'a:nve:
_99 nInj'a:nve: _99 nInj'a:nve:


_0C s'aU _0C s'aU
_0M1 Haz'a:R _0M1 Haz'a:R
_0M2 l'a:kh
_0M2 l'a:k#
_0M3 kaR'o:R _0M3 kaR'o:R
_0M4 'aRab _0M4 'aRab
_0M5 'khaRab
_0M5 'k#aRab
_dpt _ISaRI'Ia_ _dpt _ISaRI'Ia_




کسے k'Ise: کسے k'Ise:
اسی 'Isi: اسی 'Isi:
اسے 'Ise: اسے 'Ise:
مجھ m'UJh
مجھے m'UJhe:
تجھے t'UJhe:
مجھ m'UJ#
مجھے m'UJ#e:
تجھے t'UJ#e:
جن J'In جن J'In
جنھیں J,InH'e:n جنھیں J,InH'e:n
انھوں ,UnH'o:n انھوں ,UnH'o:n


// Pronunciation exceptions // Pronunciation exceptions
پاکستان p'a:k'i:st'a:n پاکستان p'a:k'i:st'a:n
سندھ s'Indh
کچھ k'Uch
سندھ s'Ind#
کچھ k'Uc#
لنکس l'Ink,s لنکس l'Ink,s
لفظ l'afz. لفظ l'afz.
سرچ s'aRc سرچ s'aRc
مصری m'Is.R,i: مصری m'Is.R,i:
انتظام ,IntIz.'a:m انتظام ,IntIz.'a:m
مختصر m,Uxtas.'aR مختصر m,Uxtas.'aR
پھر ph'IR
پھرا ph'IRa:
پھر p#'IR
پھرا p#'IRa:
منتخب m,Unt'ax@b منتخب m,Unt'ax@b
منتقل m,Unt'aqIl منتقل m,Unt'aqIl
نیا n'aja: نیا n'aja:
اردو 'URd,u: اردو 'URd,u:
احتجاجی 'e:Hte:J,a:Ji: احتجاجی 'e:Hte:J,a:Ji:
احتجاج 'e:HtIJ,a:J احتجاج 'e:HtIJ,a:J
بدھ b'Udh
بدھ b'Ud#
تجزیے t,aJz'i:;e: تجزیے t,aJz'i:;e:
دوست d'o:st دوست d'o:st
زندگی z,Ind'agi: زندگی z,Ind'agi:
گزشتہ gUz'aSta گزشتہ gUz'aSta
رشتہ R'ISta رشتہ R'ISta
اخر 'a:xIR اخر 'a:xIR
آنکھ 'a:nkh
آنکھ 'a:nk#
شکار SIk'a:R شکار SIk'a:R
جلد J'ald جلد J'ald
مواد mav'a:d مواد mav'a:d
شدہ S'Ud,a شدہ S'Ud,a
بغیر baQ'e:R بغیر baQ'e:R
امیدوار Um'i:dva:R امیدوار Um'i:dva:R
لکھ l'Ikh
لکھئیے l'Ikhj,e:
لکھ l'Ik#
لکھئیے l'Ik#j,e:

+ 22
- 22
dictsource/ur_rules View File



.group ب .group ب
ب bV ب bV
بھ bhV
بھ (L01 bh
بھ b#V
بھ (L01 b#
ب (L01 b ب (L01 b


.group پ .group پ
پ pV پ pV
پھ phV
پھ p#V
پ (L01 p پ (L01 p
پھ (L01 ph
پھ (L01 p#




.group ت .group ت
ت tV ت tV
تھ thV
تھ t#V
ت (L01 t ت (L01 t
تھ (L01 th
تھ (L01 t#


.group ٹ .group ٹ
ٹ t.V ٹ t.V
ٹھ th.V
ٹھ t.#V
ٹ (L01 t. ٹ (L01 t.
ٹھ (L01 th.
ٹھ (L01 t.#


.group ث .group ث
ث sV ث sV


.group ج .group ج
ج JV ج JV
جھ JhV
جھ J#V
ج (L01 J ج (L01 J
جھ (L01 Jh
جھ (L01 J#




.group چ .group چ
چ cV چ cV
چھ chV
چھ c#V
چ (L01 c چ (L01 c
چھ (L01 ch
چھ (L01 c#


.group ح .group ح
ح HV ح HV


.group د .group د
د dV د dV
دھ dhV
دھ d#V
د (L01 d د (L01 d
دھ (L01 dh
دھ (L01 d#


.group ڈ .group ڈ
ڈ d.V ڈ d.V
ڈھ dh.V
ڈھ d.#V
ڈ (L01 d. ڈ (L01 d.
ڈھ (L01 dh.
ڈھ (L01 d.#


.group ذ .group ذ
ذ DV ذ DV


.group ط .group ط
ط tV ط tV
طھ thV
طھ t#V
ط (L01 t ط (L01 t
طھ (L01 th
طھ (L01 t#


.group ظ .group ظ
ظ z.V ظ z.V


.group ک .group ک
ک kV ک kV
کھ khV
کھ k#V
ک (L01 k ک (L01 k
کھ (L01 kh
کھ (L01 k#


.group گ .group گ
گ gV گ gV
گھ ghV
گھ g#V
گ (L01 g گ (L01 g
گھ (L01 gh
گھ (L01 g#


.group ل .group ل
ل lV ل lV

+ 1
- 2
phsource/ph_english_n View File

phoneme i // optional variant of [I] for end of words phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 150 length 150
IfNextVowelAppend(;)
FMT(vowel/e_3)
FMT(vowel/e_2)
endphoneme endphoneme





+ 1
- 0
phsource/ph_english_us View File

vowel starttype #i endtype #i vowel starttype #i endtype #i
unstressed unstressed
length 160 length 160
ipa ᵻ
// FMT(vowel/@_fnt) // FMT(vowel/@_fnt)
FMT(vowel/ii#) FMT(vowel/ii#)
endphoneme endphoneme

+ 19
- 19
phsource/ph_hindi View File

endphoneme endphoneme




phoneme ph
phoneme p#
import_phoneme consonants/ph import_phoneme consonants/ph
endphoneme endphoneme


endphoneme endphoneme




phoneme bh
phoneme b#
vcd blb stop vcd blb stop
lengthmod 5 lengthmod 5
voicingswitch ph
voicingswitch p#
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30


endphoneme endphoneme




phoneme th // dental variant of /t/
phoneme t# // dental variant of /t/
vls dnt stop vls dnt stop
lengthmod 2 lengthmod 2
voicingswitch d voicingswitch d
endphoneme endphoneme




phoneme dh
phoneme d#
vcd dnt stop vcd dnt stop
lengthmod 5 lengthmod 5
voicingswitch th
voicingswitch t#
Vowelin f1=0 f2=1500 -300 300 f3=-100 80 Vowelin f1=0 f2=1500 -300 300 f3=-100 80
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20


WAV(ustop/t_short) WAV(ustop/t_short)
endphoneme endphoneme


phoneme th.
phoneme t.#
vls rfx stop vls rfx stop
lengthmod 2 lengthmod 2
ipa ʈh
voicingswitch dh.
ipa ʈU+02B0
voicingswitch d.#
Vowelin f1=0 f2=1800 -300 300 f3=-400 80 Vowelin f1=0 f2=1800 -300 300 f3=-400 80
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
// WAV(ustop/th_rfx) // WAV(ustop/th_rfx)
endphoneme endphoneme




phoneme dh.
phoneme d.#
vcd rfx stop vcd rfx stop
lengthmod 5 lengthmod 5
ipa ɖh
voicingswitch th.
ipa ɖU+02B0
voicingswitch t.#
Vowelin f1=1 f2=1800 -300 300 f3=-400 80 Vowelin f1=1 f2=1800 -300 300 f3=-400 80
Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2


endphoneme endphoneme




phoneme ch
phoneme c#
CALL base/tS; CALL base/tS;
ipa ch ipa ch
endphoneme endphoneme
endphoneme endphoneme




phoneme Jh
phoneme J#
vcd pal afr sibilant vcd pal afr sibilant
lengthmod 5 lengthmod 5
voicingswitch ch
voicingswitch c#
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1


voicingswitch g voicingswitch g
endphoneme endphoneme


phoneme kh
phoneme k#
import_phoneme consonants/kh import_phoneme consonants/kh
voicingswitch gh
voicingswitch g#
endphoneme endphoneme




endphoneme endphoneme




phoneme gh
phoneme g#
vcd dnt stop vcd dnt stop
lengthmod 5 lengthmod 5
voicingswitch kh
voicingswitch k#
Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20



+ 1
- 16
phsource/ph_malayalam View File

import_phoneme base/R2 import_phoneme base/R2
endphoneme endphoneme


phoneme d# // 'rr' sounds like English 'd'
phoneme d2 // '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


+ 1
- 1
phsource/ph_s_gaelic View File

endphoneme endphoneme


phoneme t phoneme t
import_phoneme hi/th
import_phoneme hi/t#
endphoneme endphoneme


phoneme d phoneme d

+ 2
- 2
phsource/ph_tibetan View File

FMT(d/xdz) addWav(ustop/ts2, 140) FMT(d/xdz) addWav(ustop/ts2, 140)
endphoneme endphoneme


phoneme tsh
phoneme ts#
vls alv afr sibilant vls alv afr sibilant
voicingswitch dz voicingswitch dz
lengthmod 2 lengthmod 2
endphoneme endphoneme




phoneme dzh
phoneme dz#
vcd alv afr sibilant vcd alv afr sibilant
voicingswitch ts voicingswitch ts
lengthmod 5 lengthmod 5

+ 14
- 12
phsource/phonemes View File

phonemetable cy base phonemetable cy base
include ph_welsh include ph_welsh


phonemetable ga base
include ph_irish

phonemetable de base phonemetable de base
include ph_german include ph_german


phonemetable fr-ca fr phonemetable fr-ca fr
include ph_french_ca include ph_french_ca


phonemetable nl base
include ph_dutch



phonemetable hi base phonemetable hi base
include ph_hindi include ph_hindi
phonemetable ur hi phonemetable ur hi
include ph_urdu include ph_urdu


phonemetable pa hi
include ph_punjabi

phonemetable ta hi phonemetable ta hi
include ph_tamil include ph_tamil


include ph_malayalam include ph_malayalam





phonemetable hu base phonemetable hu base
include ph_hungarian include ph_hungarian


phonemetable lv base phonemetable lv base
include ph_latvian include ph_latvian


phonemetable nl base
include ph_dutch

phonemetable pl base phonemetable pl base
include ph_polish include ph_polish


phonemetable ka base phonemetable ka base
include ph_georgian include ph_georgian


phonemetable fa base
include ph_farsi



//************************************************************************************** //**************************************************************************************
// The following lines are experimental, for future additions. // The following lines are experimental, for future additions.
//phonemetable mn base //phonemetable mn base
//include ph_mongolian //include ph_mongolian


phonemetable pa hi
include ph_punjabi

phonemetable prs base phonemetable prs base
include ph_dari include ph_dari


phonemetable kk base phonemetable kk base
include ph_kazakh include ph_kazakh


phonemetable fa base
include ph_farsi

phonemetable ga base
include ph_irish

phonemetable tt base phonemetable tt base
include ph_tatar include ph_tatar


phonemetable kl base phonemetable kl base
include ph_greenlandic include ph_greenlandic




BIN
phsource/ustop/q2.wav View File


BIN
phsource/ustop/q2_i.wav View File


+ 96
- 106
src/compiledict.cpp View File

{"p_alt5", 0x25}, {"p_alt5", 0x25},
{"p_alt6", 0x26}, {"p_alt6", 0x26},
{"p_alt", 0x21}, {"p_alt", 0x21},
{NULL, -1} };
{NULL, -1}
};


MNEM_TAB mnem_flags[] = { MNEM_TAB mnem_flags[] = {
// these in the first group put a value in bits0-3 of dictionary_flags // these in the first group put a value in bits0-3 of dictionary_flags
//========================================================== //==========================================================
/* Lookup a mnemonic string in a table, return its name */ /* Lookup a mnemonic string in a table, return its name */
{ {
while(table->mnem != NULL)
{
if(table->value==value)
return(table->mnem);
table++;
}
return(""); /* not found */
while(table->mnem != NULL)
{
if(table->value==value)
return(table->mnem);
table++;
}
return(""); /* not found */
} /* end of LookupMnemValue */ } /* end of LookupMnemValue */




int len; int len;
int total = 0; int total = 0;


buf[0] = 0;
buf[0] = 0;
if((stress = flags[0] & 0xf) != 0) if((stress = flags[0] & 0xf) != 0)
{ {
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
total = strlen(buf);
buf += total;
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
total = strlen(buf);
buf += total;
} }


for(ix=8; ix<64; ix++)
{
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
{
name = LookupMnemName(mnem_flags, ix);
len = strlen(name) + 1;
total += len;
if(total >= buf_len)
continue;
sprintf(buf, " %s", name);
buf += len;
}
}
for(ix=8; ix<64; ix++)
{
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
{
name = LookupMnemName(mnem_flags, ix);
len = strlen(name) + 1;
total += len;
if(total >= buf_len)
continue;
sprintf(buf, " %s", name);
buf += len;
}
}
} }






char *DecodeRule(const char *group_chars, int group_length, char *rule, int control) char *DecodeRule(const char *group_chars, int group_length, char *rule, int control)
{//================================================================================= {//=================================================================================
/* Convert compiled match template to ascii */
/* Convert compiled match template to ascii */


unsigned char rb;
unsigned char rb;
unsigned char c; unsigned char c;
char *p; char *p;
int ix;
int ix;
int match_type; int match_type;
int finished=0; int finished=0;
int value; int value;
int condition_num=0; int condition_num=0;
int at_start = 0; int at_start = 0;
const char *name; const char *name;
char buf[60];
char buf_pre[60];
char buf[60];
char buf_pre[60];
char suffix[20]; char suffix[20];
static char output[60]; static char output[60];


static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'};
static char symbols[] =
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'
};


static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; static char symbols_lg[] = {'A','B','C','H','F','G','Y'};


match_type = 0; match_type = 0;
buf_pre[0] = 0;
buf_pre[0] = 0;


for(ix=0; ix<group_length; ix++) for(ix=0; ix<group_length; ix++)
{ {
buf[ix] = 0; buf[ix] = 0;


p = &buf[strlen(buf)]; p = &buf[strlen(buf)];
while(!finished)
{
while(!finished)
{
rb = *rule++; rb = *rule++;


if(rb <= RULE_LINENUM) if(rb <= RULE_LINENUM)
} }
c = ' '; c = ' ';
} }
else
if(rb == RULE_ENDING)
else if(rb == RULE_ENDING)
{ {
static const char *flag_chars = "eipvdfq tba "; static const char *flag_chars = "eipvdfq tba ";
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f); flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
suffix_char = 'P'; suffix_char = 'P';
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f); sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
rule += 3; rule += 3;
for(ix=0;ix<9;ix++)
for(ix=0; ix<9; ix++)
{ {
if(flags & 1) if(flags & 1)
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]); sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
p += strlen(suffix); p += strlen(suffix);
c = ' '; c = ' ';
} }
else
if(rb == RULE_LETTERGP)
else if(rb == RULE_LETTERGP)
{ {
c = symbols_lg[*rule++ - 'A']; c = symbols_lg[*rule++ - 'A'];
} }
else
if(rb == RULE_LETTERGP2)
else if(rb == RULE_LETTERGP2)
{ {
value = *rule++ - 'A'; value = *rule++ - 'A';
p[0] = 'L'; p[0] = 'L';
} }
p+=2; p+=2;
} }
else
if(rb <= RULE_LAST_RULE)
else if(rb <= RULE_LAST_RULE)
c = symbols[rb]; c = symbols[rb];
else
if(rb == RULE_SPACE)
else if(rb == RULE_SPACE)
c = '_'; c = '_';
else else
c = rb; c = rb;
while(ix < 8) while(ix < 8)
output[ix++]=' '; output[ix++]=' ';
output[ix]=0; output[ix]=0;
return(output);
return(output);
} /* end of DecodeRule */ } /* end of DecodeRule */




unsigned char flag_codes[100]; unsigned char flag_codes[100];
char encoded_ph[200]; char encoded_ph[200];
unsigned char bad_phoneme[4]; unsigned char bad_phoneme[4];
static char nullstring[] = {0};
static char nullstring[] = {0};


text_not_phonemes = 0; text_not_phonemes = 0;
phonetic = word = nullstring; phonetic = word = nullstring;
{ {
text_mode = 1; text_mode = 1;
} }
else
if(flagnum == 201)
else if(flagnum == 201)
{ {
text_mode = 0; text_mode = 0;
} }
else
if(flagnum == BITNUM_FLAG_TEXTMODE)
else if(flagnum == BITNUM_FLAG_TEXTMODE)
{ {
text_not_phonemes = 1; text_not_phonemes = 1;
} }
word = p+1; word = p+1;
step = 1; step = 1;
} }
else
if(!isspace2(c))
else if(!isspace2(c))
{ {
word = p; word = p;
step = 1; step = 1;
step = 3; step = 3;
} }
} }
else
if(c == ')')
else if(c == ')')
{ {
if(multiple_words) if(multiple_words)
{ {
multiple_words = 0; multiple_words = 0;
step = 3; step = 3;
} }
else
if(word[0] != '_')
else if(word[0] != '_')
{ {
fprintf(f_log, "%5d: Missing '('\n", linenum); fprintf(f_log, "%5d: Missing '('\n", linenum);
error_count++; error_count++;
{ {
multiple_words++; multiple_words++;
} }
else
if(c == ')')
else if(c == ')')
{ {
p[0] = ' '; // terminate extra string p[0] = ' '; // terminate extra string
multiple_string_end = p+1; multiple_string_end = p+1;
// This is a special word, used by eSpeak. Translate this into phonemes now // This is a special word, used by eSpeak. Translate this into phonemes now
strcat(phonetic, " "); // need a space to indicate word-boundary strcat(phonetic, " "); // need a space to indicate word-boundary


// PROBLEM vowel reductions are not applied to the translated phonemes
// condition rules are not applied
// PROBLEM vowel reductions are not applied to the translated phonemes
// condition rules are not applied
TranslateWord(translator,phonetic,0,NULL,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);
error_need_dictionary++; error_need_dictionary++;
fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum); fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum);
} }
{
{
//char decoded_phonemes[128]; //char decoded_phonemes[128];
//DecodePhonemes(word_phonemes,decoded_phonemes); //DecodePhonemes(word_phonemes,decoded_phonemes);
//printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes); //printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes);
}
}
} }
else else
{ {
ix = utf8_out(wc, word); ix = utf8_out(wc, word);
word[ix] = 0; word[ix] = 0;
} }
else
if(word[0] != '_')
else if(word[0] != '_')
{ {
// convert to lower case, and note if the word is all-capitals // convert to lower case, and note if the word is all-capitals
int c2; int c2;
fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum); fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum);
error_count++; error_count++;
} }
else
if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
else if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
{ {
fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c); fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c);
error_count++; error_count++;
case 'a': case 'a':
sxflags |= SUFX_A; sxflags |= SUFX_A;
break; break;
case 'm':
sxflags |= SUFX_M;
break;
case 'm':
sxflags |= SUFX_M;
break;
default: default:
if(isdigit(c)) if(isdigit(c))
value = (value*10) + (c - '0'); value = (value*10) + (c - '0');
char *pa, *pb; char *pa, *pb;
int ix; int ix;


if((ix = strcmp(pa = *a,pb = *b)) != 0)
return(ix);
if((ix = strcmp(pa = *a,pb = *b)) != 0)
return(ix);
pa += (strlen(pa)+1); pa += (strlen(pa)+1);
pb += (strlen(pb)+1); pb += (strlen(pb)+1);
return(strcmp(pa,pb));
return(strcmp(pa,pb));
} /* end of string_sorter */ } /* end of string_sorter */




if(rule_pre[0] != 0) if(rule_pre[0] != 0)
{ {
p = buf; p = buf;
for(ix=strlen(rule_pre)-1;ix>=0;ix--)
for(ix=strlen(rule_pre)-1; ix>=0; ix--)
*p++ = rule_pre[ix]; *p++ = rule_pre[ix];
sprintf(p,") "); sprintf(p,") ");
spaces -= strlen(buf); spaces -= strlen(buf);
for(ix=0; ix<spaces; ix++) for(ix=0; ix<spaces; ix++)
fputc(' ',f_out);
fputc(' ',f_out);
fprintf(f_out,"%s",buf); fprintf(f_out,"%s",buf);
spaces = 0; spaces = 0;
} }
int length; int length;
int max_length = 0; int max_length = 0;


#define N_LETTERGP_ITEMS 200
#define N_LETTERGP_ITEMS 200
char *items[N_LETTERGP_ITEMS]; char *items[N_LETTERGP_ITEMS];
char item_length[N_LETTERGP_ITEMS]; char item_length[N_LETTERGP_ITEMS];


break; break;


case 2: // .replace case 2: // .replace
{
int replace1;
int replace2;
char *p;

p = buf;
replace1 = 0;
replace2 = 0;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20) // not space or zero-byte
{ {
int replace1;
int replace2;
char *p;

p = buf;
replace1 = 0;
replace2 = 0;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20) // not space or zero-byte
{
p += utf8_in(&c,p);
replace1 += (c << ix);
ix += 16;
}
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20)
{
p += utf8_in(&c,p);
replace2 += (c << ix);
ix += 16;
}
if(replace1 != 0)
{
Write4Bytes(f_out,replace1); // write as little-endian
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary()
}
p += utf8_in(&c,p);
replace1 += (c << ix);
ix += 16;
} }
break;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20)
{
p += utf8_in(&c,p);
replace2 += (c << ix);
ix += 16;
}
if(replace1 != 0)
{
Write4Bytes(f_out,replace1); // write as little-endian
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary()
}
}
break;
} }
} }
fclose(f_temp); fclose(f_temp);

+ 272
- 301
src/dictionary.cpp
File diff suppressed because it is too large
View File


+ 410
- 412
src/numbers.cpp
File diff suppressed because it is too large
View File


+ 13
- 13
src/phonemelist.cpp View File

/*************************************************************************** /***************************************************************************
* Copyright (C) 2005 to 2011 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 *
PHONEME_LIST2 *plist2; PHONEME_LIST2 *plist2;
WORD_PH_DATA worddata; WORD_PH_DATA worddata;


memset(&worddata, 0, sizeof(worddata));
memset(&worddata, 0, sizeof(worddata));
plist2 = ph_list2; plist2 = ph_list2;
phlist = phoneme_list; phlist = phoneme_list;
end_sourceix = plist2[n_ph_list2-1].sourceix; end_sourceix = plist2[n_ph_list2-1].sourceix;
max_stress = 0; max_stress = 0;
for(j = n_ph_list2-3; j>=0; j--) for(j = n_ph_list2-3; j>=0; j--)
{ {
// start with the last phoneme (before the terminating pauses) and move forwards
// start with the last phoneme (before the terminating pauses) and move backwards
if((plist2[j].stresslevel & 0x7f) > max_stress) if((plist2[j].stresslevel & 0x7f) > max_stress)
max_stress = plist2[j].stresslevel & 0x7f; max_stress = plist2[j].stresslevel & 0x7f;
if(plist2[j].sourceix != 0) if(plist2[j].sourceix != 0)
{ {
voicing = 1; voicing = 1;
} }
else
if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants
else if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants
{ {
plist2[j].phcode = ph->end_type; // change to voiced equivalent plist2[j].phcode = ph->end_type; // change to voiced equivalent
} }
} }
else
if((type==phVSTOP) || type==(phVFRICATIVE))
else if((type==phVSTOP) || type==(phVFRICATIVE))
{ {
if((voicing==0) && (regression & 0xf)) if((voicing==0) && (regression & 0xf))
{ {
voicing = 2; voicing = 2;
} }
else
if((voicing==1) && (ph->end_type != 0))
else if((voicing==1) && (ph->end_type != 0))
{ {
plist2[j].phcode = ph->end_type; // change to unvoiced equivalent plist2[j].phcode = ph->end_type; // change to unvoiced equivalent
} }


if(plist3->phcode == phonSWITCH) if(plist3->phcode == phonSWITCH)
{ {
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH)))
continue; // next phoneme is also a phonSWITCH, so ignore

// change phoneme table // change phoneme table
SelectPhonemeTable(plist3->tone_ph); SelectPhonemeTable(plist3->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG; switched_language ^= SFLAG_SWITCHED_LANG;
phlist[ix].newword = 2; // end of clause phlist[ix].newword = 2; // end of clause


phlist[ix].phcode = phonPAUSE; phlist[ix].phcode = phonPAUSE;
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes
phlist[ix].length = post_pause; // length of the pause, depends on the punctuation phlist[ix].length = post_pause; // length of the pause, depends on the punctuation
phlist[ix].sourceix = end_sourceix; phlist[ix].sourceix = end_sourceix;
phlist[ix].synthflags = 0; phlist[ix].synthflags = 0;
phlist[ix++].ph = phoneme_tab[phonPAUSE];
phlist[ix++].ph = phoneme_tab[phonPAUSE];


phlist[ix].phcode = phonPAUSE; phlist[ix].phcode = phonPAUSE;
phlist[ix].type = phPAUSE;
phlist[ix].type = phPAUSE;
phlist[ix].length = 0; phlist[ix].length = 0;
phlist[ix].sourceix=0; phlist[ix].sourceix=0;
phlist[ix].synthflags = 0; phlist[ix].synthflags = 0;
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];


n_phoneme_list = ix; n_phoneme_list = ix;
} // end of MakePhonemeList } // end of MakePhonemeList

+ 18
- 9
src/readclause.cpp View File





static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause) static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause)
{//==========================================================================================================
{//=============================================================================================================
// announce punctuation names // announce punctuation names
// c1: the punctuation character // c1: the punctuation character
// c2: the following character // c2: the following character


int punct_count; int punct_count;
const char *punctname;
int found = 0;
const char *punctname = NULL;
int soundicon; int soundicon;
int attributes; int attributes;
int short_pause; int short_pause;
int bufix1; int bufix1;
char buf[200]; char buf[200];
char buf2[80]; char buf2[80];
char ph_buf[30];


c2 = *c2_ptr; c2 = *c2_ptr;
buf[0] = 0; buf[0] = 0;
// add an embedded command to play the soundicon // add an embedded command to play the soundicon
sprintf(buf,"\001%dI ",soundicon); sprintf(buf,"\001%dI ",soundicon);
UngetC(c2); UngetC(c2);
found = 1;
} }
else else
if((punctname = LookupCharName(tr, c1, 0)) != NULL)
{ {
found = 1;
if((c1 == '.') && (end_clause) && (c2 != '.'))
{
if(LookupSpecial(tr, "_.p", ph_buf))
{
punctname = ph_buf; // use word for 'period' instead of 'dot'
}
}
if(punctname == NULL)
{
punctname = LookupCharName(tr, c1, 0);
}

if(punctname == NULL)
return(-1);

if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{ {
punct_count=1; punct_count=1;
} }
} }


if(found == 0)
return(-1);

bufix1 = *bufix; bufix1 = *bufix;
len = strlen(buf); len = strlen(buf);
strcpy(&output[*bufix],buf); strcpy(&output[*bufix],buf);

+ 1
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.46.44 08.Mar.13";
const char *version_string = "1.46.45 10.Mar.13";
const int version_phdata = 0x014640; const int version_phdata = 0x014640;


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

+ 48
- 41
src/tr_languages.cpp View File

{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS}, {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS},
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0},
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{NULL, 0, 0, 0, 0, 0} {NULL, 0, 0, 0, 0, 0}
}; };




ALPHABET *AlphabetFromChar(int c) ALPHABET *AlphabetFromChar(int c)
{//=============================== {//===============================
// Find the alphabet from a character.
ALPHABET *alphabet = alphabets;
while(alphabet->name != NULL)
{
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
{
return(alphabet);
}
alphabet++;
}
return(NULL);
// Find the alphabet from a character.
ALPHABET *alphabet = alphabets;
while(alphabet->name != NULL)
{
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
{
return(alphabet);
}
alphabet++;
}
return(NULL);
} }




tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
tr->letter_bits_offset = OFFSET_BENGALI; tr->letter_bits_offset = OFFSET_BENGALI;
SetIndicLetters(tr); // call this after setting OFFSET_BENGALI SetIndicLetters(tr); // call this after setting OFFSET_BENGALI
SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->letter_bits_offset = OFFSET_THAANA; tr->letter_bits_offset = OFFSET_THAANA;
tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000
tr->langopts.numbers = 1; tr->langopts.numbers = 1;


// stress last syllable if it doesn't end in vowel or "s" or "n" // stress last syllable if it doesn't end in vowel or "s" or "n"
// 'diminished' is an unstressed final syllable // 'diminished' is an unstressed final syllable
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels


if(name2 == L('c','a')) if(name2 == L('c','a'))
{ {
// stress last syllable unless word ends with a vowel
tr->punct_within_word = ca_punct_within_word; tr->punct_within_word = ca_punct_within_word;
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
} }
else else
if(name2 == L('a','n')) if(name2 == L('a','n'))
{ {
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
} }
else else
if(name2 == L_pap) if(name2 == L_pap)
{ {
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
// stress last syllable unless word ends with a vowel
tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
} }
else else
{ {
SetupTranslator(tr,stress_lengths_fi,stress_amps_fi); SetupTranslator(tr,stress_lengths_fi,stress_amps_fi);


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY; // move secondary stress from light to a following heavy syllable
tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.long_stop = 130; tr->langopts.long_stop = 130;


{ {
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.accents = 2; // Say "Capital" after the letter. tr->langopts.accents = 2; // Say "Capital" after the letter.
} }
break; break;


case L('g','a'): // irish
{
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
}
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
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable


tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.numbers = NUM_SWAP_TENS;
tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
tr->letter_bits_offset = OFFSET_DEVANAGARI; tr->letter_bits_offset = OFFSET_DEVANAGARI;
tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2


tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10;
tr->langopts.stress_flags = S_FINAL_NO_2;
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
tr->langopts.max_initial_consonants = 5; tr->langopts.max_initial_consonants = 5;
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
case L('h','t'): // Haitian Creole case L('h','t'): // Haitian Creole
// memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); // memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths));
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4;
break; break;




tr->langopts.vowel_pause = 0x20; tr->langopts.vowel_pause = 0x20;
tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x8036 | S_HYPEN_UNSTRESS;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS;
tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd1 = 2;
tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? ! tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
SetLetterBits(tr,LETTERGP_C,hy_consonants); SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 6; tr->langopts.max_initial_consonants = 6;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
} }
break; break;


SetupTranslator(tr,stress_lengths_id,stress_amps_id); SetupTranslator(tr,stress_lengths_id,stress_amps_id);
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN;
tr->langopts.stress_flags = 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.accents = 2; // "capital" after letter name tr->langopts.accents = 2; // "capital" after letter name
} }
break; break;


SetupTranslator(tr,stress_lengths_is,NULL); SetupTranslator(tr,stress_lengths_is,NULL);
tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10;
tr->langopts.stress_flags = S_FINAL_NO_2;
tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels
tr->langopts.param[LOPT_REDUCE] = 2; tr->langopts.param[LOPT_REDUCE] = 2;




tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS;
tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS;
tr->langopts.vowel_pause = 1; tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2; tr->langopts.unstressed_wd2 = 2;
{ {
// character codes offset by 0x1080 // character codes offset by 0x1080
static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0};
static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,
0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
static const char ka_consonants[] =
{0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x41,0x42,0x44,
0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBits(tr,LETTERGP_A,ka_vowels); SetLetterBits(tr,LETTERGP_A,ka_vowels);
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
tr->charset_a0 = charsets[4]; // ISO-8859-4 tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT;
tr->langopts.stress_flags = 0x16 + 0x40000;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1;
} }
break; break;


break; break;


case L('t','t'): // Tatar case L('t','t'): // Tatar
{
{
SetCyrillicLetters(tr); SetCyrillicLetters(tr);
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4;
}
break;
}
break;


case L('u','k'): // Ukrainian case L('u','k'): // Ukrainian
{ {
break; break;


case L('u','r'): // Urdu case L('u','r'): // Urdu
{
tr->letter_bits_offset = OFFSET_ARABIC; tr->letter_bits_offset = OFFSET_ARABIC;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.numbers = NUM_SWAP_TENS;
tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
}
break; break;


case L('v','i'): // Vietnamese case L('v','i'): // Vietnamese

+ 456
- 480
src/translate.cpp
File diff suppressed because it is too large
View File


+ 9
- 3
src/translate.h View File

// alphabet flags // alphabet flags
#define AL_DONT_NAME 0x01 // don't speak the alphabet name #define AL_DONT_NAME 0x01 // don't speak the alphabet name
#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters #define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters
#define AL_WORDS 0x04 // use the language to speak words
#define AL_WORDS 0x04 // use the language to speak words
#define AL_NOT_CODE 0x08 // don't speak the character code




#define N_LOPTS 21 #define N_LOPTS 21
#define S_INITIAL_2 0x2000 #define S_INITIAL_2 0x2000
// bit13= If there is only one syllable before the primary stress, give it a secondary stress // bit13= If there is only one syllable before the primary stress, give it a secondary stress


#define S_MID_DIM 0x10000
// bit 16= Set (not first or last) syllables to diminished stress

#define S_PRIORITY_STRESS 0x20000 #define S_PRIORITY_STRESS 0x20000
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"


#define S_EO_CLAUSE1 0x40000 #define S_EO_CLAUSE1 0x40000
// bit18= don't lengthen short vowels more than long vowels at end-of-clause // bit18= don't lengthen short vowels more than long vowels at end-of-clause


#define S_FINAL_LONG 0x80000
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel



#define S_HYPEN_UNSTRESS 0x100000 #define S_HYPEN_UNSTRESS 0x100000
// bit20= hyphenated words, 2nd part is unstressed // bit20= hyphenated words, 2nd part is unstressed
// bit21= don't lengthen vowels at end-of-clause // bit21= don't lengthen vowels at end-of-clause


// bit15= Give stress to the first unstressed syllable // bit15= Give stress to the first unstressed syllable
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel




int stress_flags; int stress_flags;
const char *transpose_map; const char *transpose_map;
char dictionary_name[40]; char dictionary_name[40];


char phon_out[400];
char phon_out[500];
char phonemes_repeat[20]; char phonemes_repeat[20];
int phonemes_repeat_count; int phonemes_repeat_count;
int phoneme_tab_ix; int phoneme_tab_ix;

+ 185
- 182
src/voices.cpp 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 *
{"unknown", 0}, {"unknown", 0},
{"male", 1}, {"male", 1},
{"female", 2}, {"female", 2},
{NULL, 0 }};
{NULL, 0 }
};


int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0};
//int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0}; //int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0};
V_STRESSADD, V_STRESSADD,
V_DICTRULES, V_DICTRULES,
V_STRESSRULE, V_STRESSRULE,
V_STRESSOPT,
V_CHARSET, V_CHARSET,
V_NUMBERS, V_NUMBERS,
V_OPTION, V_OPTION,
static MNEM_TAB options_tab[] = { static MNEM_TAB options_tab[] = {
{"reduce_t", LOPT_REDUCE_T}, {"reduce_t", LOPT_REDUCE_T},
{"bracket", LOPT_BRACKET_PAUSE}, {"bracket", LOPT_BRACKET_PAUSE},
{NULL, -1} };
{NULL, -1}
};


static MNEM_TAB keyword_tab[] = { static MNEM_TAB keyword_tab[] = {
{"name", V_NAME}, {"name", V_NAME},
{"formant", V_FORMANT}, {"formant", V_FORMANT},
{"pitch", V_PITCH}, {"pitch", V_PITCH},
{"phonemes", V_PHONEMES}, {"phonemes", V_PHONEMES},
{"translator", V_TRANSLATOR},
{"translator", V_TRANSLATOR},
{"dictionary", V_DICTIONARY}, {"dictionary", V_DICTIONARY},
{"stressLength", V_STRESSLENGTH}, {"stressLength", V_STRESSLENGTH},
{"stressAmp", V_STRESSAMP}, {"stressAmp", V_STRESSAMP},
{"tunes", V_TUNES}, {"tunes", V_TUNES},
{"dictrules", V_DICTRULES}, {"dictrules", V_DICTRULES},
{"stressrule", V_STRESSRULE}, {"stressrule", V_STRESSRULE},
{"stressopt", V_STRESSOPT},
{"charset", V_CHARSET}, {"charset", V_CHARSET},
{"replace", V_REPLACE}, {"replace", V_REPLACE},
{"words", V_WORDGAP}, {"words", V_WORDGAP},
{"l_sonorant_min", 0x100+LOPT_SONORANT_MIN}, {"l_sonorant_min", 0x100+LOPT_SONORANT_MIN},
{"l_length_mods", 0x100+LOPT_LENGTH_MODS}, {"l_length_mods", 0x100+LOPT_LENGTH_MODS},
{"apostrophe", 0x100+LOPT_APOSTROPHE}, {"apostrophe", 0x100+LOPT_APOSTROPHE},
{NULL, 0} };
{NULL, 0}
};


#define N_VOICE_VARIANTS 12 #define N_VOICE_VARIANTS 12
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
tone_pts[ix] = -1; tone_pts[ix] = -1;


sscanf(string,"%d %d %d %d %d %d %d %d %d %d", sscanf(string,"%d %d %d %d %d %d %d %d %d %d",
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
&tone_pts[8],&tone_pts[9]);
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
&tone_pts[8],&tone_pts[9]);
} }




while(isspace(*p)) p++; while(isspace(*p)) p++;
strncpy0(vname,p,sizeof(vname)); strncpy0(vname,p,sizeof(vname));
} }
else
if(memcmp(linebuf,"language",8)==0)
else if(memcmp(linebuf,"language",8)==0)
{ {
priority = DEFAULT_LANGUAGE_PRIORITY; priority = DEFAULT_LANGUAGE_PRIORITY;
vlanguage[0] = 0; vlanguage[0] = 0;
n_languages++; n_languages++;
} }
} }
else
if(memcmp(linebuf,"gender",6)==0)
else if(memcmp(linebuf,"gender",6)==0)
{ {
sscanf(&linebuf[6],"%s %d",vgender,&age); sscanf(&linebuf[6],"%s %d",vgender,&age);
} }
else
if(memcmp(linebuf,"variants",8)==0)
else if(memcmp(linebuf,"variants",8)==0)
{ {
sscanf(&linebuf[8],"%d",&n_variants); sscanf(&linebuf[8],"%d",&n_variants);
} }
// Adjustment of harmonic amplitudes, steps of 8Hz // Adjustment of harmonic amplitudes, steps of 8Hz
// value of 128 means no change // value of 128 means no change
// memset(voice->tone_adjust,128,sizeof(voice->tone_adjust)); // memset(voice->tone_adjust,128,sizeof(voice->tone_adjust));
SetToneAdjust(voice,tone_points);
SetToneAdjust(voice,tone_points);


// default values of speed factors // default values of speed factors
voice->speedf1 = 256; voice->speedf1 = 256;
// Read 8 integer numbers // Read 8 integer numbers
memset(data, 0, 8+sizeof(int)); memset(data, 0, 8+sizeof(int));
return(sscanf(data_in,"%d %d %d %d %d %d %d %d", return(sscanf(data_in,"%d %d %d %d %d %d %d %d",
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
} }




char buf[sizeof(path_home)+30]; char buf[sizeof(path_home)+30];
char path_voices[sizeof(path_home)+12]; char path_voices[sizeof(path_home)+12];


int dict_min = 0;
int dict_min = 0;
int stress_amps[8]; int stress_amps[8];
int stress_lengths[8]; int stress_lengths[8];
int stress_add[8]; int stress_add[8];
static char voice_name[40]; // voice name for current_voice_selected static char voice_name[40]; // voice name for current_voice_selected
static char voice_languages[100]; // list of languages and priorities for current_voice_selected static char voice_languages[100]; // list of languages and priorities for current_voice_selected


// which directory to look for a named voice
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";
// which directory to look for a named voice
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";




strncpy0(voicename, vname, sizeof(voicename)); strncpy0(voicename, vname, sizeof(voicename));
} }
else else
{ {
if(voicename[0]==0)
strcpy(voicename,"default");
if(voicename[0]==0)
strcpy(voicename,"default");


sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory


if(GetFileLength(buf) <= 0) if(GetFileLength(buf) <= 0)
{ {
// then look in the appropriate subdirectory
if((voicename[0]=='m') && (voicename[1]=='b'))
{
voice_dir = "mb"; // mbrola voices
}
else
{
sprintf(name2, "%s ", voicename);
if(strstr(voices_europe, voicename) != NULL)
voice_dir = "europe";
else
if(strstr(voices_asia, voicename) != NULL)
voice_dir = "asia";
else
voice_dir = "other";

sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);

if(GetFileLength(buf) <= 0)
{
// if not found, look in "test" sub-directory
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
}
}
// then look in the appropriate subdirectory
if((voicename[0]=='m') && (voicename[1]=='b'))
{
voice_dir = "mb"; // mbrola voices
}
else
{
sprintf(name2, "%s ", voicename);
if(strstr(voices_europe, voicename) != NULL)
voice_dir = "europe";
else if(strstr(voices_asia, voicename) != NULL)
voice_dir = "asia";
else
voice_dir = "other";

sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);

if(GetFileLength(buf) <= 0)
{
// if not found, look in "test" sub-directory
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
}
}
} }
} }


switch(key) switch(key)
{ {
case V_LANGUAGE: case V_LANGUAGE:
{
unsigned int len;
int priority;
{
unsigned int len;
int priority;


if(tone_only)
break;
if(tone_only)
break;

priority = DEFAULT_LANGUAGE_PRIORITY;
language_name[0] = 0;


priority = DEFAULT_LANGUAGE_PRIORITY;
language_name[0] = 0;
sscanf(p,"%s %d",language_name,&priority);
if(strcmp(language_name,"variant") == 0)
break;


sscanf(p,"%s %d",language_name,&priority);
if(strcmp(language_name,"variant") == 0)
break;
len = strlen(language_name) + 2;
// check for space in languages[]
if(len < (sizeof(voice_languages)-langix-1))
{
voice_languages[langix] = priority;


len = strlen(language_name) + 2;
// check for space in languages[]
if(len < (sizeof(voice_languages)-langix-1))
{
voice_languages[langix] = priority;
strcpy(&voice_languages[langix+1],language_name);
langix += len;
}


strcpy(&voice_languages[langix+1],language_name);
langix += len;
}
// only act on the first language line
if(language_set == 0)
{
language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);


// only act on the first language line
if(language_set == 0)
{
language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);

if(new_translator != NULL)
DeleteTranslator(new_translator);

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
}
if(new_translator != NULL)
DeleteTranslator(new_translator);

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
} }
break;
}
break;


case V_NAME: case V_NAME:
if(tone_only == 0) if(tone_only == 0)
break; break;


case V_GENDER: case V_GENDER:
{
int age = 0;
char vgender[80];
sscanf(p,"%s %d",vgender,&age);
current_voice_selected.gender = LookupMnem(genders,vgender);
current_voice_selected.age = age;
}
break;
{
int age = 0;
char vgender[80];
sscanf(p,"%s %d",vgender,&age);
current_voice_selected.gender = LookupMnem(genders,vgender);
current_voice_selected.age = age;
}
break;


case V_TRANSLATOR: case V_TRANSLATOR:
if(tone_only) break; if(tone_only) break;
sscanf(p,"%s",translator_name); sscanf(p,"%s",translator_name);


if(new_translator != NULL) if(new_translator != NULL)
DeleteTranslator(new_translator);
DeleteTranslator(new_translator);


new_translator = SelectTranslator(translator_name); new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts; langopts = &new_translator->langopts;
break; break;


case V_PITCH: case V_PITCH:
{
double factor;
// default is pitch 82 118
n = sscanf(p,"%d %d",&pitch1,&pitch2);
voice->pitch_base = (pitch1 - 9) << 12;
voice->pitch_range = (pitch2 - pitch1) * 108;
factor = double(pitch1 - 82)/82;
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
}
break;
{
double factor;
// default is pitch 82 118
n = sscanf(p,"%d %d",&pitch1,&pitch2);
voice->pitch_base = (pitch1 - 9) << 12;
voice->pitch_range = (pitch2 - pitch1) * 108;
factor = double(pitch1 - 82)/82;
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
}
break;


case V_STRESSLENGTH: // stressLength case V_STRESSLENGTH: // stressLength
stress_lengths_set = Read8Numbers(p,stress_lengths); stress_lengths_set = Read8Numbers(p,stress_lengths);


case V_DICTRULES: // conditional dictionary rules and list entries case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS: case V_NUMBERS:
// expect a list of numbers
case V_STRESSOPT:
// expect a list of numbers
while(*p != 0) while(*p != 0)
{ {
while(isspace(*p)) p++; while(isspace(*p)) p++;
if((n = atoi(p)) > 0) if((n = atoi(p)) > 0)
{ {
p++; p++;
if((key==V_DICTRULES) && (n < 32))
conditional_rules |= (1 << n);
if(n < 32)
{
if(key==V_DICTRULES)
conditional_rules |= (1 << n);
else if(key==V_NUMBERS)
langopts->numbers |= (1 << n);
else if(key==V_STRESSOPT)
langopts->stress_flags |= (1 << n);
}
else 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);
{
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++;
} }


case V_STRESSRULE: case V_STRESSRULE:
sscanf(p,"%d %d %d %d",&langopts->stress_rule, sscanf(p,"%d %d %d %d",&langopts->stress_rule,
&langopts->stress_flags,
&langopts->unstressed_wd1,
&langopts->unstressed_wd2);
&langopts->stress_flags,
&langopts->unstressed_wd1,
&langopts->unstressed_wd2);
break; break;


case V_CHARSET: case V_CHARSET:
break; break;


case V_TONE: case V_TONE:
{
int tone_data[12];
ReadTonePoints(p,tone_data);
SetToneAdjust(voice,tone_data);
}
break;
{
int tone_data[12];
ReadTonePoints(p,tone_data);
SetToneAdjust(voice,tone_data);
}
break;


case V_VOICING: case V_VOICING:
if(sscanf(p,"%d",&value)==1) if(sscanf(p,"%d",&value)==1)
break; break;


case V_BREATH: case V_BREATH:
voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
for(ix=1; ix<8; ix++)
{
if(ix % 2)
voice->breath[ix] = -voice->breath[ix];
}
voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
for(ix=1; ix<8; ix++)
{
if(ix % 2)
voice->breath[ix] = -voice->breath[ix];
}
break; break;


case V_BREATHW: case V_BREATHW:
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
break; break;


case V_CONSONANTS: case V_CONSONANTS:
break; break;


case V_MBROLA: case V_MBROLA:
{
int srate = 16000;
char name[40];
char phtrans[40];
{
int srate = 16000;
char name[40];
char phtrans[40];


phtrans[0] = 0;
sscanf(p,"%s %s %d",name,phtrans,&srate);
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK)
{
fprintf(stderr,"mbrola voice not found\n");
}
voice->samplerate = srate;
phtrans[0] = 0;
sscanf(p,"%s %s %d",name,phtrans,&srate);
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK)
{
fprintf(stderr,"mbrola voice not found\n");
} }
break;
voice->samplerate = srate;
}
break;


case V_KLATT: case V_KLATT:
voice->klattv[0] = 1; // default source: IMPULSIVE voice->klattv[0] = 1; // default source: IMPULSIVE
SetSpeed(3); SetSpeed(3);
break; break;


case V_DICTMIN:
case V_DICTMIN:
sscanf(p,"%d",&dict_min); sscanf(p,"%d",&dict_min);
break;
break;


default: default:
if((key & 0xff00) == 0x100) if((key & 0xff00) == 0x100)
} }
voice->phoneme_tab_ix = ix; voice->phoneme_tab_ix = ix;
new_translator->phoneme_tab_ix = ix; new_translator->phoneme_tab_ix = ix;
new_translator->dict_min_size = dict_min;
new_translator->dict_min_size = dict_min;
LoadDictionary(new_translator, new_dictionary, control & 4); LoadDictionary(new_translator, new_dictionary, control & 4);
if(dictionary_name[0]==0) if(dictionary_name[0]==0)
return(NULL); // no dictionary loaded return(NULL); // no dictionary loaded
// match on voice name // match on voice name
score += 500; score += 500;
} }
else
if(strcmp(voice_spec->name,voice->identifier)==0)
else if(strcmp(voice_spec->name,voice->identifier)==0)
{ {
score += 400; score += 400;
} }
} }


if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) && if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) &&
((voice->gender == 1) || (voice->gender == 2)))
((voice->gender == 1) || (voice->gender == 2)))
{ {
if(voice_spec->gender == voice->gender) if(voice_spec->gender == voice->gender)
score += 50; score += 50;
{ {
match_fname = ix; // matching identifier, use this if no matching name match_fname = ix; // matching identifier, use this if no matching name
} }
else
if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
else if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
{ {
match_fname2 = ix; match_fname2 = ix;
} }
gender = 0; gender = 0;
if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13))) if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
gender = 2; gender = 2;
else
if(voice_select2.gender == 1)
else if(voice_select2.gender == 1)
gender = 1; gender = 1;


#define AGE_OLD 60 #define AGE_OLD 60
} }
#else #else
#ifdef PLATFORM_WINDOWS #ifdef PLATFORM_WINDOWS
WIN32_FIND_DATAA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;


#undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string #undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string
sprintf(fname,"%s\\*",path); sprintf(fname,"%s\\*",path);


if(FindFileData.cFileName[0] != '.') if(FindFileData.cFileName[0] != '.')
{ {
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
ftype = GetFileLength(fname);

if(ftype == -2)
{
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
ftype = GetFileLength(fname);

if(ftype == -2)
{
// a sub-sirectory
GetVoices(fname);
}
else if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
} }
} while(FindNextFileA(hFind, &FindFileData) != 0); } while(FindNextFileA(hFind, &FindFileData) != 0);
FindClose(hFind); FindClose(hFind);
if(n_voices_list >= (N_VOICES_LIST-2)) if(n_voices_list >= (N_VOICES_LIST-2))
break; // voices list is full break; // voices list is full


if(ent->d_name[0] == '.')
continue;
if(ent->d_name[0] == '.')
continue;


sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name);


// a sub-sirectory // a sub-sirectory
GetVoices(fname); GetVoices(fname);
} }
else
if(ftype > 0)
else if(ftype > 0)
{ {
// a regular line, add it to the voices list // a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL) if((f_voice = fopen(fname,"r")) == NULL)


variant_name = ExtractVoiceVariantName(buf, 0, 1); variant_name = ExtractVoiceVariantName(buf, 0, 1);


for(ix=0; ;ix++)
for(ix=0; ; ix++)
{ {
// convert voice name to lower case (ascii) // convert voice name to lower case (ascii)
if((buf[ix] = tolower(buf[ix])) == 0) if((buf[ix] = tolower(buf[ix])) == 0)


// sort the voices list // sort the voices list
qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *),
(int (__cdecl *)(const void *,const void *))VoiceNameSorter);
(int (__cdecl *)(const void *,const void *))VoiceNameSorter);




if(voice_spec) if(voice_spec)

Loading…
Cancel
Save