Browse Source

[1.47.03c]

Phoneme definition files: added prev2PhW() and next3PhW().
Added language: ms (Malay).


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

+ 16
- 13
dictsource/bn_list View File



_10 d'OS _10 d'OS
_11 '&garo _11 '&garo
_12 b'aro
_13 t'ero
_14 tS'owddo
_15 p'Onero
_16 S'olo
_17 S'Otero
_18 'at.#aro
_12 b'arO
_13 t'erO
_14 tS'owddO
_15 p'OnerO
_16 S'olO
_17 S'OterO
_18 'at.#arO
_19 'uniS _19 'uniS


_20 b'iS // ??
_20 k'uri // or b'iS ??
_21 'ekuS _21 'ekuS
_22 b'ajS _22 b'ajS
_23 t'ejS _23 t'ejS
_24 tS'ObbiS _24 tS'ObbiS
_25 p'O~tSiS _25 p'O~tSiS
_26 tS#'ObbiS
_26 tSh'ObbiS
_27 S'ataS _27 S'ataS
_28 'at.#aS _28 'at.#aS
_29 'untriS _29 'untriS
ধ d#O ধ d#O
ন d'ontennO ন d'ontennO
প pO প pO
ফ p#O
fO // or [p#O] ?
ব bO ব bO
ভ b#O ভ b#O
ম mO ম mO
য় Oj য় Oj
য ontostedZ'O য ontostedZ'O
র rO র rO
ঢ় hrO
ড় r.O
ড় r.O // (d. + nukta)
ঢ় hr.O
ঢ় hr.O // (d#. + nukta)
ল lO ল lO
শ taleboS:O শ taleboS:O
ষ mud#en:oS:O ষ mud#en:oS:O
ৎ kh'Ond.otO ৎ kh'Ond.otO


// full vowels // full vowels
SOro'O
SOro'a
অ O
আ a
ই hrOS:o'i ই hrOS:o'i
ঈ dirg#o'i ঈ dirg#o'i
উ hrOS:o'u উ hrOS:o'u

+ 23
- 45
dictsource/bn_rules View File

ৌ ow ৌ ow
ৌঁ o~w ৌঁ o~w

// Consonants // Consonants


.group ক .group ক
ক kV ক kV
ক (B k ক (B k
ক (_ k


.group খ .group খ
খ k#V খ k#V
খ (B k# খ (B k#
খ (_ k#
.group গ .group গ
গ gV গ gV
গ (B g গ (B g
গ (_ g




.group ঘ .group ঘ
ঘ g#V ঘ g#V
ঘ (B g# ঘ (B g#
ঘ (_ g#


.group ঙ .group ঙ
ঙ NV ঙ NV
ঙ্ (B N ঙ্ (B N
ঙ্ (_ N




.group চ .group চ
চ tSV চ tSV
চ (B tS চ (B tS
চ (_ tS




.group ছ .group ছ
ছ tS#V ছ tS#V
ছ (B tS# ছ (B tS#
ছ (_ tS#


.group জ .group জ
জ JV জ JV
জ (B J জ (B J
জ (_ J
জ্ব JV জ্ব JV
জ্ব (B J জ্ব (B J
.group ঝ .group ঝ
ঝ J#V ঝ J#V
ঝ (B J# ঝ (B J#
ঝ (_ J#


.group ঞ .group ঞ
ঞ nV ঞ nV
ঞ্ (B n ঞ্ (B n
ঞ্ (_ n


.group ট .group ট
ট t.V ট t.V
ট (B t. ট (B t.
ট (_ t.




.group ঠ .group ঠ
ঠ t.#V ঠ t.#V
ঠ (B t.# ঠ (B t.#
ঠ (_ t.#


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


ড় r.V // nukta ড় r.V // nukta
ড় (B r. ড় (B r.

.group ঢ .group ঢ
ঢ d.#V
ঢ (B d.#
ঢ (_ d.#
ঢ d.#V
ঢ (B d.#

ঢ় hr.V
ঢ় (B hr.
.group ণ .group ণ
ণ nV // should be [n.] if adjacent to t. or d. ? ণ nV // should be [n.] if adjacent to t. or d. ?
ণ (B n ণ (B n
ণ (_ n






.group ত .group ত
ত tV ত tV
ত (B t ত (B t
ত (_ t


.group থ .group থ
থ t#V থ t#V
থ (B t# থ (B t#
থ (_ t#




.group দ .group দ
দ dV দ dV
দ (B d দ (B d
দ (_ d




.group ধ .group ধ
ধ d#V ধ d#V
ধ (B d# ধ (B d#
ধ (_ d#




.group ন .group ন
ন nV ন nV
ন (B n ন (B n
ন (_ n


.group প .group প
প pV প pV
প (B p প (B p
প (_ p


.group ফ .group ফ
ফ fV // or [p#] ? ফ fV // or [p#] ?
ফ (B f ফ (B f
ফ (_ f


.group ব .group ব
ব bV ব bV
ব (B b ব (B b
ব (_ b


.group ভ .group ভ
ভ b#V ভ b#V
ভ (B b# ভ (B b#
ভ (_ b#


.group ম .group ম
ম mV ম mV
ম (B m ম (B m
ম (_ m


.group য় .group য়
য় jV য় jV
য় (B j য় (B j
য় (_ j


.group য .group য
য dZV য dZV
য (B dZ য (B dZ
য (_ dZ
য় jV // nukta য় jV // nukta
য় (B j য় (B j
@) য় (_ j


.group র .group র
র rV র rV
র (B r র (B r
র (_ r
্) র (_ rV


.group ল .group ল
ল lV ল lV
ল (B l ল (B l
ল (_ l






.group শ .group শ
শ SV // or [s] ? শ SV // or [s] ?
শ (B S শ (B S
শ (_ S
শ (্ল s শ (্ল s
.group ষ .group ষ
ষ SV ষ SV
ষ (B S ষ (B S
ষ (_ S


.group স .group স
.group হ .group হ
হ hV হ hV
হ (B h হ (B h
হ (_ h


.group হ্ব .group হ্ব
হ্ব vV হ্ব vV
হ্ব (B v হ্ব (B v
হ্ব (_ v


.group ৎ .group ৎ
ৎ t ৎ t




.group ড়
ড় r.V
ড় (B r.
.group ড় // can be ড plus nukta
ড় r.V
ড় (B r.

.group ঢ়
ঢ় r.V
ঢ় (B r.
.group ঢ় // can be ঢ plus nukta
ঢ় hr.V
ঢ় (B hr.










.group
// obsolete letters
ঋ r-
ৠ r-
ঌ l-
ৡ l-
ৃ r-
ৄ r-
ৢ l-
ৣ l-



+ 26
- 152
dictsource/dict_phonemes View File

t# tS w x t# tS w x




Dictionary az_dict 2010-07-27

& @ a e E i o u
W y

* b c C d dZ f g
h j J k l m n p
Q R s S t tS v w
x z Z


Dictionary bg_dict 2013-03-16 Dictionary bg_dict 2013-03-16


@ a e i o u @ a e i o u
Z z; Z z;




Dictionary bn_dict 2013-03-22
Dictionary bn_dict 2013-03-25


& a a~ e e~ i i~ l- & a a~ e e~ i i~ l-
o O o: O~ o~ u u~ V
o O o: O~ o~ r- u u~
V


: b b# d d# d. d.# dZ : b b# d d# d. d.# dZ
f g g# h H j J J# f g g# h H j J J#
k k# l m n N n. p k k# l m n N n. p
p# r r. s S t t# t.
t.# tS tS# v w ~


Dictionary bo_dict 2013-03-09

a a: e e: i i: l- o
o: r- u u:

: ? b b# c c# d d#
d. d.# dz dz# g g# H j
J k k# l m n N n.
n^ p p# r s S s. t
t# t. t.# ts ts# w z Z
r r. s S t t# t. t.#
tS tS# v w ~




Dictionary ca_dict 2010-07-27 Dictionary ca_dict 2010-07-27
Z Z




Dictionary dv_dict 2013-03-09

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

: ? b c c# d D d.
dZ f g h j k k# l
l. m n N n. n^ p Q
q r R s S s. t T
t# t. t.# tS v w x z
Z


Dictionary el_dict 2011-05-19 Dictionary el_dict 2011-05-19


a aI e i o oI u a aI e i o oI u
ts v x z ts v x z




Dictionary en_dict 2013-03-22
Dictionary en_dict 2013-03-25


0 0# 3 3: @ @- @2 @5 0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3 @L a a# A: A@ aa aI aI3
t# t. t.# v w x z t# t. t.# v w x z




Dictionary ht_dict 2010-06-29

a A~ e E E~ i o O
O~ u w y

; b d f g j k l
m n N p r s S t
tS v z Z


Dictionary hu_dict 2013-03-22 Dictionary hu_dict 2013-03-22


a A a: e E e: i i: a A a: e E e: i i:
Z Z




Dictionary kk_dict 2011-12-07

& 8 a A e E i I
o u U u# Y

; b d f g G h j
k l m n N p q r
s S t tS v w X z
Z


Dictionary kl_dict 2013-03-18 Dictionary kl_dict 2013-03-18


& 3 @ @- a aI e E & 3 @ @- a aI e E
t# t. t.# tS v w z t# t. t.# tS v w z




Dictionary mt_dict 2011-07-29

@ a ai au e ei eu i
I ie iu l- o u U ui
y yi yY

* : b c C d dZ f
g h j k l m n p
q r s S t tS v w
x z Z


Dictionary nci_dict 2010-01-20 Dictionary nci_dict 2010-01-20


a e i o O a e i o O
s S s; t v w x z s S s; t v w x z




Dictionary nso_dict 2010-08-27

@ a e E i m- n- N-
o u U

- : ; b B d D dZ
f h j J k K l l#
m n N n^ p Q R3 s
S t tS v w x X x2
z


Dictionary pap_dict 2010-07-27 Dictionary pap_dict 2010-07-27


a a/ aI e E eI i o a a/ aI e E eI i o
ts; v w x z Z Z; ts; v w x z Z Z;




Dictionary prs_dict 2009-12-01

@ A E eI i o u

: b d dZ f g h j
k l m n p r R s
S t tS v w X z Z


Dictionary pt_dict 2013-03-17
Dictionary pt_dict 2013-03-25


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




Dictionary si_dict 2013-01-18
Dictionary si_dict 2013-03-23


& &: @ a a: aI aU e & &: @ a a: aI aU e
e: i i: o o: u u: e: i i: o o: u u:


b d d. dZ f g h j
k l l. m m# n N n#
N# n. n.# n^ n^# p r s
S s. t t. tS v w
#@ b b# d d# d. d.# dZ
f g g# h j k k# l
l. m m# n N n# N# n.
n.# n^ n^# p p# r s S
s. t t# t. t.# tS v w




Dictionary sk_dict 2011-08-08 Dictionary sk_dict 2011-08-08
S s. S; sx t v w z S s. S; sx t v w z




Dictionary sw_dict 2008-11-27
Dictionary sw_dict 2013-03-23


@- a a/ e i m- n- N- @- a a/ e i m- n- N-
o u o u
t# t. tS v w z z. t# t. tS v w z z.




Dictionary te_dict 2013-03-16

a a: aI aU e E e: i
i: l- o o: r- u u: V

#X1 #X2 : ; b b# c c#
d d# d. d.# dZ f g g#
h j J J# k k# l l.
m n N n. n^ p p# r
s s. S; t t# t. t.# tS
v w z


Dictionary tn_dict 2011-02-17

@- a e i m- n- N- o
u

* - : b B d D dZ
f g h j J k K l
l# m n N n^ p Q r
R R3 s S t T tS ts
v w x X z


Dictionary tr_dict 2011-09-16 Dictionary tr_dict 2011-09-16


@ a e E i I o O @ a e E i I o O
v w z Z v w z Z




Dictionary tt_dict 2012-09-14

& a A e e2 e: i I
o u u2 V W y

: ? b d f g h j
k l m n N p q r
R s S S; t w x z
Z Z;


Dictionary ur_dict 2013-03-13 Dictionary ur_dict 2013-03-13


@ a a: aI aU e E e: @ a a: aI aU e E e:
v w x z Z z. v w x z Z z.




Dictionary wo_dict 2010-11-30

@ @: a a: e E e: E:
i i: m- n- N- o O O:
o: u u:

: b c d f g h j
J k l m n N n^ p
q R R2 s s2 t v w
x z


Dictionary zh_dict 2013-01-25 Dictionary zh_dict 2013-01-25


@ @r a A ai Au E ei @ @r a A ai Au E ei
tS;h tsh v w x X z. tS;h tsh v w x X z.




Dictionary zhy_dict 2009-01-19
Dictionary zhy_dict 2013-03-25


a aa aai aang aau ai au e a aa aai aang aau ai au e
ei eo eoi eu i iu o oe ei eo eoi eu i iu o oe
b c d f g h j k b c d f g h j k
l m n N p r s t l m n N p r s t
tS v w z tS v w z


Dictionary ms_dict 2010-10-14

@ a aI aU e E E2 eI
i o O u

* : ? b c d dZ f
g h j k l m n N
n^ p r R R2 s S t
tS v w x z

+ 20
- 8
dictsource/en_list View File

_ª fEmI2nIn'O@dI2n@L _ª fEmI2nIn'O@dI2n@L
_« lEft'gIl@mEt _« lEft'gIl@mEt
_­ makr0n _­ makr0n
² tu:
³ Tri:
_¹ su:p@skrIptw'0n
_² su:p@skrIptt'u: _² su:p@skrIptt'u:
_³ su:p@skrIptT'ri: _³ su:p@skrIptT'ri:
_´ a#kju:taksEnt _´ a#kju:taksEnt
_· mId@Ld0t _· mId@Ld0t
_¸ sEd'Il@ _¸ sEd'Il@
_¹ su:p@skrIptw'0n
//_º maskjUlIn'O@dI2n@L //_º maskjUlIn'O@dI2n@L
_º dI2gr'i:z _º dI2gr'i:z
_» raIt'gIl@mEt _» raIt'gIl@mEt
blase blA:z'eI blase blA:z'eI
blasé blA:z'eI blasé blA:z'eI
bleh blEh bleh blEh
blockade $2
blockade bl0k'eId
blouse blaUz blouse blaUz
bluest blu:@st bluest blu:@st
blurry bl3:rI blurry bl3:rI
dandelion dandI2laI@n dandelion dandI2laI@n
ddu DI $only // Welsh ddu DI $only // Welsh
de d@ $only de d@ $only
(de jure) deIdZ'U@ri
debacle deIb'A:k@L debacle deIb'A:k@L
debrief di:br'i:f debrief di:br'i:f
debris dEbri: debris dEbri:
emphasis Emf@sIs $only emphasis Emf@sIs $only
empire $1 empire $1
emu i:mju: emu i:mju:
(en masse) 0n||m'as
(en route) 0n||r'u:t
enroute 0nr'u:t enroute 0nr'u:t
ensemble 0ns'0mb@L ensemble 0ns'0mb@L
entendre 0nt'0ndr@- entendre 0nt'0ndr@-
henceforth hEnsfo@T henceforth hEnsfo@T
?3 herb 3:b ?3 herb 3:b
hercules h3:kjUli:z hercules h3:kjUli:z
?3 hereford h3:f3d
heretical hI2rEtI2k@L heretical hI2rEtI2k@L
hereto hi@3'tu: hereto hi@3'tu:
heretofore hi@3t2Ufo@ heretofore hi@3t2Ufo@
holster hoUlst3 holster hoUlst3
homeowner hoUmoUn3 homeowner hoUmoUn3
homepage hoUmpeIdZ homepage hoUmpeIdZ
homily h0m@li
hominem h0mInEm hominem h0mInEm
?3 hominem h0m@n@m ?3 hominem h0m@n@m
hooah h'u:'A: hooah h'u:'A:
intray IntreI intray IntreI
intro $1 intro $1
?3 investigative Inv,EstI2g'eItIv ?3 investigative Inv,EstI2g'eItIv
ipad aIpad
iphone aIfoUn
irate aIr'eIt irate aIr'eIt
iris aIrIs iris aIrIs
iron aI3n iron aI3n
torment $1 torment $1
torment $2 $verb torment $2 $verb
tornado tO@n'eIdoU tornado tO@n'eIdoU
torrential t@rEnS@L
tortilla tO@t'i:a# tortilla tO@t'i:a#
touche tu:SeI $only touche tu:SeI $only
toupee tu:peI toupee tu:peI
traverse $alt3 traverse $alt3
travesty trav@sti travesty trav@sti
treatise tri:tIz treatise tri:tIz
trebuchet trEbUSeI
tremendous $alt3 tremendous $alt3
triage tri:A:Z triage tri:A:Z
tribunal traIb'ju:n@L tribunal traIb'ju:n@L
Topeka toUp'i:k@ Topeka toUp'i:k@
Toronto t@r0ntoU Toronto t@r0ntoU
Toulouse tu:l'u:z Toulouse tu:l'u:z
Trafalgar $alt3
?3 Tunisia tu:n'i:Z@ ?3 Tunisia tu:n'i:Z@
Tripoli trIp@li Tripoli trIp@li
tuareg twA@rEg tuareg twA@rEg
Fainne fan;@ Fainne fan;@
Freda fri:d@ Freda fri:d@
Fírinne fi:rIn;@ Fírinne fi:rIn;@
Gareth gar@T
Gary gari Gary gari
Geraint gEraInt Geraint gEraInt
Gerhard ge@hA@t Gerhard ge@hA@t
Suzy su:zi Suzy su:zi
Tatiana tatI'A:n@ Tatiana tatI'A:n@
?3 Tatiana tA:tj'A:n@ ?3 Tatiana tA:tj'A:n@
Terese t@reIz
Theresa t@ri:z@ Theresa t@ri:z@
Therese t@ri:z Therese t@ri:z
Thomas t0m@s Thomas t0m@s






(de jure) deIdZ'U@ri
(en masse) ,0n||m'as
(en route) ,0n||r'u:t

(each of) i:tS||@v $pause (each of) i:tS||@v $pause
(far more) f'A@_m,o@ (far more) f'A@_m,o@
(few more) f'ju:m,o@ (few more) f'ju:m,o@
(most of) moUst||@v (most of) moUst||@v
(such as) sVtS||_a#z $pause (such as) sVtS||_a#z $pause


(too few) t'u:||f,ju:
(too many) t'u:||m,Eni
(too much) t'u:||m,VtS
(too few) t'u:||fju:
(too many) t'u:||mEni
(too much) t'u:||mVtS


//************************************************************************* //*************************************************************************
// COMMON WORDS // COMMON WORDS

+ 1
- 0
dictsource/en_rules View File

d) or (_ o@ d) or (_ o@
_f) or (@ O@ _f) or (@ O@
_f) ore (A O@ _f) ore (A O@
_f) ore (kn O@,
f) or (k O@ f) or (k O@
_f) or (s@ %O@ _f) or (s@ %O@
ch) or (d O@ ch) or (d O@

+ 112
- 0
dictsource/kl_list View File


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

b bE
c sE
d dE
f Ef
g ji
h ha
j jE
k ka
l El
m Em
n En
p pE
q qa
r Er
s Es
t tE
v vE
w wE
x iks
z zE

// y
// æ
// ø
// å

// Native numbers 0-10
_0n n'u:lu
_1n at'a:sEq
_2n m'arluk
_3n p'iNasut
_4n s'isamat
_5n t'al#imat
_6n arf'inil#it
_7n arfinEqm'arluk
_8n arfinEqp'iNasut
_9n quliNil'uat
_10n q'ulit

// Danish numbers
_0 'nOl
_1 'en
_2 t'o
_3 tR'e
_4 f'iV
_5 f'Em
_6 s'EQs
_7 s'yw
_8 'O:d@
_9 n'i
_10 t'i
_11 'Elv@
_12 t'Vl
_13 tR'&d@-n
_14 fj'ord@-n
_15 f'emt@-n
_16 s'ajsd@-n
_17 s'Wd@-n
_18 '&d@-n
_19 n'ed@-n
_2X t'y:w
_3X tR'&Dv@
_4X f'W:V
_5X h&l't*Es
_6X t*'Es
_7X h&lfj'&rs
_8X f'irs
_9X h&lf'Ems
_0C h'un*@:D
_1C ed||h'unr@:D
_0M1 t'u:s@-n
_1M1 ed||t'u:s@-n
_1M2 'e:n||milij'o:n
_0M2 milij'o:nV
_1M3 'e:n||milij'a:d
_0M3 milij'a:d3
_1M4 'e:n||bilij'o:n
_0M4 bilij'o:n3

_0and V
_dpt kom:a_

// ordinals are followed by a dot in Danish
_ord 3

// exceptions for ordinals
_1o fWrsd3
_2o &n@n
_3o trEdj3
_4o fjeV
_5o fEmt3
_6o sjEd3
_7o syvn3
_8o Vtn3
_9o ni@n3
_10o ti@n3
_11o Elfd3
_12o tVlfd3

_2Xo t'yv@n@ // 25.
_3Xo tr'&ft@ //36.
_4Xo fWV'tyv@n@ // 42.
_5Xo h&lt*'Esenstyv@n@ // 52.
_6Xo tr'Esenstyv@n@ // 62.
_7Xo h&lfj'&rsenstyv@n@ // 72.
_8Xo firsenstyv@n@ // 82.
_9Xo h&lf'Emsenstyv@n@ // 95.


+ 182
- 0
dictsource/kl_rules View File


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


// don't stress a vowel before these consonant clusters
.L01 ng nng


.group a
a a
a (CC 'a
a (L01 a

ak (_ &g
ap (_ &p
at (_ &t

aa a:
aar a:
aaq a:

ai (_ aI



.group b
b b


.group c
c k
c (e s
c (i s


.group d
d d


.group e
e E
e (CC 'E // a vowel before a consonant cluster is stressed
e (L01 E // ... except for these consonants

ee E:


.group f
f f
ff f:


.group g
g Q
gg x:
gg (i C:


.group h
h h
hh h:


.group i
i i
i (CC 'i
i (L01 i
ii i:


.group j
j j
jj j:


.group k
k k
kk k:


.group l
l l
ll l#


.group m
m m
mm m:


.group n
n n
na na
naa na:
nn n:
ng N
nng N:


.group o
o o
o (CC 'o
o (L01 o
oo o:


.group p
p p
pp p:


.group q
q q
qq qq


.group r
r r
rr X:
rl rl#

.group s
s s
ss s:


.group t
t t
t (i ts
i) t (_ tS;
tt t:
tl tl#
ts ts


.group u
u u
u (CC 'u
u (L01 u
uu u:


.group v
v v
vv v:


.group w
w w


.group x
x ks


.group y
y j
K) y (K i // not before or after a vowel
K) y (CC 'i
K) y (L01 i


.group z
z z


.group æ
æ &


.group ø
ø W


.group å
å O


.group
$ d'olar


+ 784
- 0
dictsource/ms_list View File

// Last updated: 14 October 2010, Jason Ong ([email protected])
// This file is UTF8 encoded
// Spelling-to-phoneme words for Malay

a e:
b bi:
c si:
d di:
e i:
f Ef
g dZi:
h etS
i aI
j dZe
k ke
l El
m Em
n En
o o:
p pi:
q kju:
r ar
s Es
t ti:
u ju:
v vi:
w d'ab@liu:
x Eks
y waI
z zEd


// numeric
_0 k'osoN
_1 s'atu
_2 d'u@
_3 t'ig@
_4 '@mpat
_5 l'im@
_6 '@nam
_7 t'udZ%oh
_8 l'apan
_9 s@mb'ilan
_10 s@p'uluh
_11 s'@b@las
_12 d'u@b@las
_13 t'ig@b@las
_14 '@mpatb@las
_15 l'im@b@las
_16 '@namb@las
_17 t'udZ%ohb@las
_18 l'apanb@las
_19 s@mb'ilanb@las
_2X d'u@puloh
_3X t'ig@puloh
_4X 'Empatpuloh
_5X l'im@puloh
_6X 'Enampuloh
_7X t'udZ%ohpuloh
_8X l'apanpuloh
_9X s@mb'ilanpuloh
_0C R'atus_|
_1C s@*'atus_|
_0M1 R'ibu_
_1M1 s@r'ibu_
_0M2 dZ'ut@_
_1M2 s@dZ'ut@_
_0M3 b'ili@n
_1M3 s@b'ili@n
_dpt _p'@rpul'uhan_


_cap b'EsaR // after the letter
_?? k,odeh'uR2uf

// accented letters
_lig d'aIgRaf
_acu akj'ut
_ac2 dub@lakj'ut
_brv bR2'i:v
_ced s@d'ila
_cir t'opi
_dia 'umlaUt
_dot d'Ot
_grv gR2'av
_hac h'atSEk
_mcn m'akR2On
_ogo 'OgonEk
_rng R2'iNg
_stk stR'ok
_tld t'ild@

// punctuation
_! t,anda||s'ER2u
_" t,andak'utip
£ ponst'E*RliN
% p@*Ratus
^ t,andat'opi
& d'an
_* b'intaN
_( k,uR2uN||b'uk@
_) k,uR2uN||t'utup
__ g,aR2is||b'awah
_- t,andah'ubuN
+ c'ampor
= s,am@||d'@Nan
_{ k,uR2uN||kuR2'awal
_} k,uR2uN||kuR2,awal||t'utup
_[ k,uR2uN||s'iku
_] k,uR2uN||s,iku||t'utup
_: t,iti?||d'u@
_; t,iti?||k'om@
@ a||k'EOng
_' k,utip||t'uNgal
~ t'ilde
# p'agaR
_< k,uR2aN||d'aR2i
_> l,Ebih||d'aR2i
_, k'om@
_. t'iti?
_? t,and@||t'an^@
/ stR2'ok
_\ 'bEkslES





// exceptions
// (use phoneme [E2] for an unstressed 'e' which does not reduce to [@] )

bebek bEbE2?
becek bEtSE2?
//bekas $2
perang $2


// ABBREVIATIONS
//**************
abd 'abdul $dot
agenda ag'enda
bhd b'@Rhad $dot
cimb $abbrev
cm s@ntim'et@r
com d'Ot||kOm
(co ltd) k'amp@ni||lim'it@d
dr d'okt@R $dot
drp daR2ip'ad@
dun d'un
dymm d'uli||jang||mah'a||m'uli@
exco 'Eksko
en 'intSek $dot
felda f'elda
hb h,arib'ulan
hj h'adZi $dot
ir $abbrev $dot
klci $abbrev
km kilom'et@r
kol kol'on@l $dot
ltd lim'it@d $dot
m'sia malaysia $text
md moh'amad $dot
mm milim'et@r
mohd moh'amad $dot
mr m'ist@r $dot
mw m'egawat
pas p'a:s
pibg $abbrev
prof prof'es@r $dot
pte p'raiv@t
rm R'iNget
sdn s@ndiR2'ian $dot
sdr saUd'aR@ $dot
umno 'amno:
upm $abbrev
utk unto?
yab jang||amat||b@rh'ormat
yb jang||b@rh'ormat
ym jang|m'uli@
yg jang


// MAIN WORD DICTIONARY
//*********************

// e(pepet)-a
banteras bant'@Ras
membanteras m@mbant'@Ras
bedah b'@dah
bekas b'@kas
belah b'@lah
perbelanjaan p@Rb,@landZ'a|an
sebelah s@b'@lah
benar b'@nar
sebenar s@b'@nar
benda b'@nd@
kecelaruan k@tS,@laR'uan
berhad b'@Rhad
besar b'@sar
membesar m@mb'@sar
pembesar p@mb'@sar
sebesar s@b'@sar
terbesar t@Rb'@sar
cegah tS'@gah
mencegah m@ntS'@gah
pencegah p@ntS'@gah
cepat tS'@pat
dipercepat dip@RtS'@pat
secepat s@tS'@pat
dekat d'@kat
terdekat t@Rd'@kat
demam d'@mam
denda d'@nd@
didenda did'@nd@
dengan d'@Nan
dengar d'@Nar
didengar did'@Nar
mendengar m@nd'@Nar
depan d'@pan
berdepan b@Rd'@pan
dera d'@R@
pendera p@nd'@R@
deras d'@Ras
desak d'@sak
mendesak m@nd'@sak
terdesak t@Rd'@sak
empat '@mpat
engkau '@NkaU
gelar g'@lar
bergelar b@Rg'@lar
gemar g'@mar
penggemar p@Ng'@mar
gesa g'@s@
menggesa m@Ng'@s@
tergesa t@Rg'@s@
hendak h'@nda?
dikehendaki dik,@h@nd'aki
kehendak k@h'@nda?
kelas k'@las
sekelas s@k'@las
kemas k'@mas
keras k'@Ras
berkeras b@Rk'@Ras
kertas k'@Rtas
kesan k'@san
dikesan dik'@san
lembah l'@mbah
letak l'@tak
diletak dil'@tak
emak '@mak
emas '@mas
enam '@nam
keenam k@'@nam
enggan '@Ngan
gerak g'@ra?
bergerak b@Rg'@ra?
penggerak p@Ng'@ra?
jebak dZ'@bak
terjebak t@RdZ'@bak
jejas dZ'@dZas
terjejas t@RdZ'@dZas
jelas dZ'@las
kejar k'@dZar
dikejar dik'@dZar
kekal k'@kal
kelam k'@lam
mengembalikan m@N,@mbal'ikan
kembang k'@mbaN
mengembang m@N'@mbaN
perkembangannya p@Rk,@mbaN'ann^@
kelak k'@lak
kena k'@n@
kenal k'@nal
dikenal dik'@nal
terkenal t@Rk'@nal
kerap k@Rap
kerja k'@RdZ@
bekerja b@k'@RdZ@
bekerjasama b@k,@RdZ@s'am@
kerjasama k@RdZ@s'am@
pekerja p@k'@RdZ@
sekerja s@k'@RdZ@
kesal k'@sal
menyesal m@n^'@sal
kesan k'@san
berkesan b@Rk'@san
keberkesanan k@b,@Rk@s'anan
kesat k'@sat
mengesat m@N'@sat
lekas l'@kas
lelakinya l@lak'in^@
lekat l'@kat
melekat m@l'@kat
lemah l'@mah
lembaga l@mb'aga
berperlembagaan b@Rp@Rl,@mbag'a|an
lengan l'@Nan
lepas l'@pas
berlepas b@Rl'@pas
terlepas t@Rl'@pas
letak l'@ta?
peletakan p@l@t'akan
terletak t@Rl'@tak
menang m'@naN
pemenang p@m'@naN
mentah m'@ntah
mesra m'@sR@
pecah p'@tSah
berpecah b@Rp'@tSah
peka p'@k@
pegang p'@gaN
dipegang dip'@gaN
memegang m@m'@gaN
pentas p'@ntas
pernah p'@rnah
pesat p'@sat
petang p'@taN
rendah R'@ndah
terendah t@R'@ndah
rentak R'@ntak
berentak b@R'@ntak
retak r'@tak
keretakan k@R@t'akan
rentak r'@ntak
serentak s@r'@ntak
sebak s'@ba?
kesebakan k@s@b'akan
sebentar s@b'@ntar
sedang s'@daN
sedar s'@dar
tersedar t@Rs'@dar
segera s@g'@R@
disegerakan dis@g@R'@kan
menyegerakan m@n^,@g@R'@kan
sejahtera s@dZaht'@R@
kesejahteraan k@s@dZ,aht@R'@an
sejak s'@dZak
sekat s'@kat
menyekat m@n^'@kat
selam s'@lam
penyelam p@n^'@lam
keselamatan k@s,@lam'atan
selaras s@l'aRas
keselarasan k@s@laR'asan
selepas s@l'@pas
kesesuaian k@s@su'aIan
sembah s'@mbah
persembahannya p@Rs,@mbah'ann^@
sempat s'@mpat
berkesempatan b@Rk,@s@mp'atan
sempena s@mp'@n@
beserta b@s'@Rt@
peserta p@s'@Rt@
sertai s@Rt'a|i
serang s'@RaN
diserang dis'@RaN
menyerang m@n^'@raN
penyerang p@n^'@raN
serba s'@Rb@
tegang t'@gaN
bertegang b'@Rt@gaN
tegas t'@gas
tekak t'@kak
menekak m@n'@kak
tekan t'@kan
menekan m@n'@kan
telah t'@lah
teman t'@man
tempa t'@mp@
ditempa dit'@mp@
menempa m@n'@mp@
tempah t'@mpah
menempah m@n'@mpah
tempat t'@mpat
bertempat b@rt'@mpat
tenang t'@naN
bertenang b@Rt'@naN
tengah t'@Nah
menengah m@n'@Nah
sesetengah s@s@t'@Nah
tengkar t'@Nkar
bertengkar b@Rt'@Nkar
tentang t'@ntaN
ditentang dit'@ntaN
menentang m@n'@ntaN
penentang p@n'@ntaN
tepat t'@pat
juruterbang dZuRut'@RbaN
teram t'@Ram
ketenteraman k@t@nt@R'aman
terkam t'@Rkam
diterkam dit'@Rkam
menerkam m@n'@Rkam
tetap t'@tap
bertetap b@Rt'@tap
menetap m@n'@tap

// exceptions
kehebatan k@heb'atan
dibelenggu dib@l'@Ngu
perbendaharaan p@Rb@nd,@haR'a|an
kejayaan k,@dZaj'a|an
galakan gal'akan
setong s@t'oN
aneh 'anE2h
menyelamatkan m@n^,@lam'atkan
//berbaur b@Rb'aUr
gementar g@m'@ntar
hebatnya hEb'atn^@
diedarkan diEd'aRkan
//berkeliaran b@Rk@li'aRan
//bersebelahan b@Rs@b@l'ahan
//sebaik s@b'aIk
cedera tS@d'@R@
kecederaan k@tS,@d@r'a|an
tercedera t@RtS@d'@R@
//ekoran Ek'oRan
kekecewaan k@k,@tSew'a|an
//bermain b@Rm'aIn
//kedai k'@daI
//pekedai p@k'@daI
disertai dis@Rt'ai
persediaan p@Rs,@di'a|an
//bergaul b@Rg'aul
elakkan El'akkan
kebanyakan k@ban^'akan
anda 'anda
//berkepentingan b@Rk,@p@nt'iNan
//berleluasa b@Rl@lu'as@
iaitu ja|'itu
masalah mas'alah
masakan mas'akan
mengelakkan m@NE2l'akkan
menyelesaikan m@n^,@l@s'aIkan
pergolakan p@Rgol'akan
perempuan p@R@mp'uan
perempuannya p@R,@mpu'ann^@
pesta p'esta
berpesta b@Rp'esta
menyalah m@n^'alah
setengah s@t'@Nah
berpengalaman b@Rp@Nal'aman
kesemuanya k@s,@mu'@nn^@
selesema s@l@s'@m@
tindakan tind'akan
pesalah p@s'alah
wanita wan'ita
bersalah b@Rs'alah
//persetujuan p@Rs,@tudZ'uan
//persetujuannya p@Rs@tudZu'ann^@
//keseluruhan k@s,@luR'ohan
memberitahu m@mb,@Rit'ahu
//persekutuan p@Rs,@kut'uan
tema t'Ema
kepercayaan k@p,@RtSaj'a|an
dendangan dEnd'aNan
peperiksaan p@p,@Reks'a|an
kebebasan k@bEb'asan
//cerai tS'@RaI
//berbaik b@Rb'aIk
menyembunyikan m@n^,@mbun^'ikan
bermesyuarat b@Rm,@Su'aRat
//pengetahuan p@N,@tah'uan
mengenai m@N@n'ai
penyelesaian p@n^,@l@s'aIan
diselesaikan dis,@l@s'aIkan
ditanya dit'an^@
prestasi pREst'asi
pembelajaran p@mb,@ladZ'aRan
kepong k'@poN
demikian d@mik'ian
piket p'ikEt
kempennya kEmp'enn^@
jentera dZ@nt'@R@
perlembagaan p@Rl,@mbag'a|an
bersesuaian b@Rs,@su'aIan
bumiputera bumip'ut?Ra
kecemerlangan k@tS,@Rm@l'aNan
merdeka m@Rd'eka
kemerdekaan k@m,@Rdek'a|an
kelewatan k@lew'atan
menyelesaikannya m@n^@l@saIk'ann^@


// english derived words
akta 'akta
album 'Elb@m
aspek 'aspE2k
balada bal'ada
digit di'dZit
digital didZ'it@l
doktor d'okt@r
dolar d'Ol@r
domestik dOm'Estik
entiti Ent'iti
flora fl'ora
frekuensi fRiku'@nsi
imej 'imedZ
indeks 'indEks
insentif ins'E2ntif
jean dZ'in
jeneral dZEn'@R@l
kabinet kEb'in@t
kamera kEm'@R@
kes k'es
komponen komp'on@n
komprehensif kompRih'ensif
koroner koR'on@r
laser l'es@r
majoriti mEdZor'iti
meter m'it@r
muzik m'iuzek
muzium m'iuzi@m
nasional nESh'@n@l
negatif nEg'@tif
nostalgia nost'aldZja
november nov'Emb@r
oktober okt'ob@r
polis p'olis
personaliti p@Rs,@nal'iti
presiden pRE2s'id@n
profesor pRof'E2s@r
produk pR'odak
prospek pR'ospE2k
republik Rip'abli?
saintis s'aIntis
sesi s'esi
subjek s'abdZE2k
surcaj s'@RtSadZ
radio R'edio
realiti Rial'iti
sentimen sEnt'im@n
september sEpt'@mb@r
teater ti'et@r
teknik t'Eknik
teknikal tEkn'ikal
telefon tel'ifon
tenis t'Enis
tiara ti'aRa
unit j'unit
universiti jun,iv@Rs'iti
virus v'aIR@s
zoo zu:

// place names
Australia _^_EN
Arsenal _^_EN
Asia as'ia
Barcelona b'aRs@l'ona
Borneo _^_EN
Britain _^_EN
Brunei b'R2unaI
Cheras tS'@ras
Coast _^_EN
Commonwealth _^_EN
Denmark _^_EN
England _^_EN
Eropah Er'opah
France _^_EN
George _^_EN
Georgetown _^_EN
Indonesia indon'eIsi@
Ireland _^_EN
Jamaica _^_EN
Kingdom _^_EN
Korea _^_EN
Liverpool _^_EN
London _^_EN
New _^_EN
Nigeria _^_EN
Macau _^_EN
Malaysia m@l'esi@
Melbourne _^_EN
Guinea _^_EN
Penang pin'EN
Perak p'erak
Phuket ph'ukEt
Putrajaya putR2@dZ'aj@
Republic _^_EN
Scotland _^_EN
Seputeh s@p'uteh
Seremban s@R'@mban
Setar s?tar
Sydney _^_EN
Temerloh t@m'@Rloh
Tonga t'onga
Town _^_EN
United _^_EN
Valencia vel'@nsia
Zambia z'ambia
Zealand _^_EN

// person names
Azura az'uR2a
Barack _^_EN
David _^_EN
Davidson _^_EN
Douglas _^_EN
Edward _^_EN
Karen _^_EN
Jason _^_EN
Lee _^_EN
Leela l'ila
Linda l'inda
Mahathir mah'ater
Michael _^_EN
Merican m'erikan
Ng '@N
Nora n'oRa
Nurhaliza n,uRhal'iza
Obama ob'ama
Ong ON
Ramlee R'amli
Saleh s'aleh
Seha s'eha
Shafie Saf'i?i
Sidek s'idek
Syed s'aId
Teresa t@R2'isa
Tony _^_EN
Yaacob j'a?kob
Yew jiu
Zakaria zak'aRja
Zaleha zal'eha


// English words
(& co) En||k'amp@ni
american _^_EN
bank b'Enk
banking b'EnkiN
commerce _^_EN
corp _^_EN $dot
city _^_EN
company _^_EN
consortium _^_EN
daily _^_EN
distribution _^_EN
east _^_EN
education _^_EN
engineering _^_EN
euro _^_EN
girl _^_EN
grand gR2End
genre _^_EN
government _^_EN
group _^_EN
hero h'iR2o
idea 'aIdi@
island _^_EN
jazz dZ'E:s
international _^_EN
internet _^_EN
left _^_EN
land lEnd
malayan _^_EN
malaysian m@l'esi@n
media _^_EN
methodist _^_EN
multi _^_EN
north _^_EN
pound _^_EN
right _^_EN
school _^_EN
speaker _^_EN
south _^_EN
the _^_EN
enterprise _^_EN
omnibus 'omnibas
online _^_EN
power _^_EN
punk _^_EN
serius _^_EN
service _^_EN
street _^_EN
technologies _^_EN
tender _^_EN
trading _^_EN
trend _^_EN
unity _^_EN
union _^_EN
wall _^_EN
west _^_EN


// brands
afp $abbrev
(air asia) 'E:_'e:si@_
(air france) _^_EN
airbus _^_EN
boeing _^_EN
eon 'ion
firefly _^_EN
iphone aI||fon
ipod aI||pod
malaysiakini m@l'esi@||k'ini
maybank m'eib'Enk
reuters _^_EN
(sime darby) _^_EN
toyota toj'ota
wikipedia wik,ip'idja



// unstressed words
//suatu $u
dari $u
pada $u
daripada $u
ke k@ $u
di $u
si $u
sang $u
hang $u
yang $u
//dan $u
//atau $u
//untuk $u
ialah $u
adalah $u
sebagai $u
bahwa $u
per p@r $u


// conjunctions
agar $pause
apabila ap@bil@ $pause
apatah ap@t'ah $pause
atau $pause
ataupun $pause
bagi $pause
bahkan $pause
(bukan sahaja) $pause
dan $pause $u
(di mana) $pause
hanya $pause
jika $pause
kalau $pause
kerana $pause
ketika $pause
mahupun $pause
maka $pause
malah $pause
malahan $pause
manakala $pause
meskipun $pause
misalnya $pause
namun $pause
(sama ada) $pause
sambil $pause
sebab s'@bab $pause
sedangkan $pause
sehingga $pause
selain s@l'ain $pause
semasa $pause
serta s'@rt@ $pause
setelah s@t'@lah $pause
seperti $pause
sepertimana s@p,@Rtim'an@ $pause
supaya $pause
tapi $pause
tetapi $pause
walau $pause
walaupun $pause
untuk $pause
//yang $pause $u
(yang mana) $pause


// nuances
anugerah an'ug*Rah
dilaksanakan dil,aksan'@kan
kementerian k@m,@ntR2'ian
sebahagian s@b'ah?gian
mewarnai m@warn'a|i
mulai mul'a|i
meraikan m@Ra|'ikan
sibuk s'ebok
terengganu tR2@Ng'anu
dirasai diRas'a|i
direka diR'ek@
negeri n'@gR2i

+ 233
- 0
dictsource/ms_rules View File

// Last updated: 14 October 2010, Jason Ong ([email protected])
// This file is UTF8 encoded
// Spelling-to-phoneme rules for Malay

.group a
a a
a) a _|a
A_) a _|a
au) a _|a
ai aI
au aU
_) au o // (automatik)

@) a (_ @ // (pula)
@) a (kah_ '@ // (apakah)
@) a (kan_ '@ // (bukakan)
@) a (lah_ '@ // (mintalah)
@) a (nya_ '@ // (puncanya)
@) a (pun_ '@ // (bagaimanapun)


.group b
b b

_) be (@@ b@

_) ber (@@ b@R // (berdasarkan)
_) ber (CaiX b@R // (bermain)
_) ber (CauX b@R // (bergaul, berbaur)
_) berke (@@ b@Rk@ // (berkeliaran, berkesempatan)
_) berle (@@ b@Rl@ // (berleluasa)
_) berper (@@ b@Rp@R //
_) berse (@@ b@Rs@ // (bersebelahan)
_) bh b // added (kota bharu)

.group c
c tS
//*************
ch tS // (kuching)
//**************

.group d
d d
dj dZ // Dutch

.group e
e E //jason: E changed to E2
e) e _|E
A_) e _|E // *** to check on this ***
e (_ e


// *********************
_) e (Co@ E2 // e-o (ekoran)
e (CaiX '@ // e-ai (kedai, petai, belai, cerai)
e (CiX '@ // e-i (betik, ketil, lebih, kerisik, kesedihan, sering, seri, segi, seni)
e (CCiX '@ // e-i (penting, jentik)
e (CCuX '@ // e-u (dibendung, bentuk)
e (CuX '@ // e-u (belut, telur, perut, ketulan, bertemu)
e (CCuX '@ // e-u (perlu, merdu)
e (CCCuX '@ // e-u (tengku, tengkuk)

e (nyuX '@ // e-u (senyum)
eCC) e (X e // e-e (pendek, benteng)
eC) e (X e // e-e (belek, gelek, leceh, geleng)
e (Ce e // e-e (kelecehan)
oC) e (X e // o-e (oleh, boleh, celoteh, topeng)
oCC) e (X e // o-e (ponteng)
C) e (CCCoCkan_ e // (bengkokkan)
m) e (_ @ // (autisme)

// ******************
.group f
f f
ff f

.group g
g g

.group h
h h

.group i
i i
i) i _|i
A_) i _|i

@) i (CX e // (tekik, masing, masin)
@) i (Cnya_ 'e // (masinnya)
@) i (CCaan_ e // (pemeriksaan)

.group j
j dZ

.group k
k k
k (_ ?
kh x

_) ke (@@ k@
@@) k (annya_ k'
_) kese (@@ k@s@ // keseluruhannya

.group l
l l
ll l

.group m
m m

_) me (@@ m@
_) mempe (@ m@mp@
//*****************
_) mem (@@ m@m
_) mene (@@ m@n@ // (menerajui)
_) menge (@@ m@N@ // (mengenepikan)
_) mempenge (@@ m@mp@N@ // (mempengerusikan)
//****************

.group n
n n
ng N
ny n^
// nj n^

.group o
o o
o) o _|o
A_) o _|o
o (r O
oe u // Dutch spelling

.group p
p p
pp p

_) pe (@@ p@

_) pe (CaiX p@ // (pemain, pesaing)
_) peme (@@ p@m@ // (pemeriksaan)
_) pene (@@ p@n@ // (penerokaan)
_) penge (@@ p@N@ // (pengetahuan)
_) penje (@@ p@ndZ@ // (penjenamaan)
_) perse (@@ p@Rs@ // (persetujuan)


.group q
q k
qu kw

.group r
r R //(jason change: R2 to r)
r (K r //(jason change: R to r)
e) r (K *r //(jason change: *R to r)

r (_ r // jason: added (silent r at the end)

.group s
s s
ss s
sy S // perhaps [S;] ??
sj S

_) se (@@ s@
//*************
_) se (CaiX s@ // (sebaik)
sh S
//***************


.group t
t t
tj tS // Dutch

_) ter (@@ t@*R

//***************
_) ter (@ t'@*R // ter- (terbaik, teruk)
//******************

.group u
u u
u) u _|u
A_) u _|u
@) u (CX o // (puluh, tudung)
@) u (Cnya_ 'o // (bentuknya)
@) u (CCnya_ 'o // (tudungnya)

.group v
v v

.group w
w w

.group x
x ks
_) x z

.group y
y j

.group z
z z

.group
$ dOl@R


__) - (_D n'eg@tif

* b'intaN
*) * (*
**
**) * (_ _::

+ 246
- 0
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 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 _d@s@ml'o:
// 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
_?? 'Vk#:@R
। d.'Vnd.i
+ J'Vuma
= b@R'ab@R
% pR'VtIS@t
* t'aRa
// 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

+ 469
- 0
dictsource/pa_rules View File


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

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



.replace
੦ 0
੧ 1
੨ 2
੩ 3
੪ 4
੫ 5
੬ 6
੭ 7
੮ 8
੯ 9

૦ 0
૧ 1
૨ 2
૩ 3
૪ 4
૫ 5
૬ 6
૭ 7
૮ 8
૯ 9


// combine dot consonants into a single character
ਸ਼ ਸ਼
ਲ਼ ਲ਼ // l.
ਖ਼ ਖ਼ // x
ਗ਼ ਗ਼ // Q
ਜ਼ ਜ਼ // z
ਫ਼ ਫ਼ // f

// combine base vowel+vowel sign into single vowel characters
ਅੈ ਐ // aI
ਅਾ ਆ // aa
ਅੌ ਔ // aU
ੲੀ ਈ // ii
ੲਿ ਇ // i
ੲੇ ਏ // e
ੳੁ ਉ // u
ੳੂ ਊ // uu



// Vowels

.group ੳ
ੳ u

.group ੲ
ੲ i


.group ਅ
ਅ ,V
ਅਂ V~
ਅੰ V~

.group ਆ
ਆ a
ਆਂ a~
ਆੰ a~

.group ਇ
ਇ I
ਇਂ I~
ਇੰ I~

.group ਈ
ਈ i
ਈਂ i~
ਈੰ i~

.group ਉ
ਉ U
ਉਂ U~
ਉੰ U~

.group ਊ
ਊ u
ਊਂ u~
ਊੰ u~

.group ਏ
ਏ e
ਏਂ e~
ਏੰ e~

.group ਐ
ਐ E
ਐਂ E~
ਐੰ E~

.group ਓ
ਓ o
ਓਂ o~
ਓੰ o~

.group ਔ
ਔ O
ਔਂ O~
ਔੰ O~

.group ૠ
ૠ r-


// Vowel Signs

.group ਾ
ਾ a
ਾਂ a~
ਾੰ a~

.group ਿ
ਿ I
ਿਂ I~
ਿੰ I~

.group ੀ
ੀ i
ੀਂ i~
ੀੰ i~

.group ੁ
ੁ U
ੁਂ U~
ੁੰ U~

.group ੂ
ੂ u
ੂਂ u~
ੂੰ u~

.group ੇ
ੇ e
ੇਂ e~
ੇੰ e~

.group ੈ
ੈ E // aI
ੈਂ E~
ੈੰ E~

.group ੋ
ੋ o
ੋਂ o~
ੋੰ o~

.group ੌ
ੌ O // aU
ੌਂ O~
ੌੰ O~


// Consonants ਕે

.group ਕ
ਕ kV // inherent vowel
ਕ (B k // no inherent vowel if vowel or virama follows
@) ਕ (_ k // omit inherent vowel at end of word
ੱ) ਕ k:V
ੱ) ਕ (B k:
ੱ) ਕ (_ k:

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

.group ਗ
ਗ gV
ਗ (B g
@) ਗ (_ g
ੱ) ਗ g:V
ੱ) ਗ (B g:
ੱ) ਗ (_ g:

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

.group ਙ
ਙ NV
ਙ (B N
@) ਙ (_ N
ੱ) ਙ N:V
ੱ) ਙ (B N:
ੱ) ਙ (_ N:

.group ਚ
ਚ cV
ਚ (B c
@) ਚ (_ c
ੱ) ਚ c:V
ੱ) ਚ (B c:
ੱ) ਚ (_ c:

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

.group ਜ
ਜ JV
ਜ (B J
@) ਜ (_ J
ੱ) ਜ J:V
ੱ) ਜ (B J:
ੱ) ਜ (_ J:

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

.group ਞ
ਞ n^V
ਞ (B n^
@) ਞ (_ n^
ੱ) ਞ n^:V
ੱ) ਞ (B n^:
ੱ) ਞ (_ n^:

.group ਟ
ਟ t.V
ਟ (B t.
@) ਟ (_ t.
ੱ) ਟ t.:V
ੱ) ਟ (B t.:
ੱ) ਟ (_ t.:

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

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

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

.group ਣ
ਣ n.V
ਣ (B n.
@) ਣ (_ n.
ੱ) ਣ n.:V
ੱ) ਣ (B n.:
ੱ) ਣ (_ n.:

.group ਤ
ਤ tV
ਤ (B t
@) ਤ (_ t
ੱ) ਤ t:V
ੱ) ਤ (B t:
ੱ) ਤ (_ t:

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

.group ਦ
ਦ dV
ਦ (B d
@) ਦ (_ d
ੱ) ਦ d:V
ੱ) ਦ (B d:
ੱ) ਦ (_ d:

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

.group ਨ
ਨ nV
ਨ (B n
@) ਨ (_ n
ੱ) ਨ n:V
ੱ) ਨ (B n:
ੱ) ਨ (_ n:

.group ਪ
ਪ pV
ਪ (B p
@) ਪ (_ p
ੱ) ਪ p:V
ੱ) ਪ (B p:
ੱ) ਪ (_ p:

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

.group ਬ
ਬ bV
ਬ (B b
@) ਬ (_ b
ੱ) ਬ b:V
ੱ) ਬ (B b:
ੱ) ਬ (_ b:

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

.group ਮ
ਮ mV
ਮ (B m
@) ਮ (_ m
ੱ) ਮ m:V
ੱ) ਮ (B m:
ੱ) ਮ (_ m:

.group ਯ
ਯ jV
ਯ (B j
@) ਯ (_ j
ੱ) ਯ j:V
ੱ) ਯ (B j:
ੱ) ਯ (_ j:

.group ਰ
ਰ RV
ਰ (B R
@) ਰ (_ R
ੱ) ਰ R:V
ੱ) ਰ (B R:
ੱ) ਰ (_ R:

.group ਲ
ਲ lV
ਲ (B l
@) ਲ (_ l
ੱ) ਲ l:V
ੱ) ਲ (B l:
ੱ) ਲ (_ l:

.group ਲ਼
ਲ਼ l.V
ਲ਼ (B l.
@) ਲ਼ (_ l.

.group ਵ
ਵ vV
ਵ (B v
@) ਵ (_ v
ੱ) ਵ v:V
ੱ) ਵ (B v:
ੱ) ਵ (_ v:

.group ਸ਼
ਸ਼ SV
ਸ਼ (B S
@) ਸ਼ (_ S
ੱ) ਸ਼ S:V
ੱ) ਸ਼ (B S:
ੱ) ਸ਼ (_ S:

.group ਸ
ਸ sV
ਸ (B s
@) ਸ (_ s
ੱ) ਸ s:V
ੱ) ਸ (B s:
ੱ) ਸ (_ s:

.group ਹ
ਹ HV
ਹ (B H
@) ਹ (_ H

.group ਖ਼
ਖ਼ xV
ਖ਼ (B x
@) ਖ਼ (_ x

.group ਗ਼
ਗ਼ QV
ਗ਼ (B Q
@) ਗ਼ (_ Q

.group ਜ਼
ਜ਼ zV
ਜ਼ (B z
@) ਜ਼ (_ z

.group ੜ
ੜ r.V
ੜ (B r.
@) ੜ (_ r.

.group ਫ਼
ਫ਼ fV
ਫ਼ (B f
@) ਫ਼ (_ f


.group ੍
੍ // virama

.group ਼
਼ // nukta

.group ੱ
ੱ // addak

.group ਂ
ਂ N // bindi

.group ੰ
ੰ n // tippi

.group ਃ
ਃ h

.group
$ dOlVR // TEST
% pVsEnt // TEST

+ 29
- 16
dictsource/pt_list View File

lo $u lo $u
las $u las $u
los $u los $u
//se $u
se $u


?2 este $u+ $nounf 'estSi // this ?2 este $u+ $nounf 'estSi // this
?2 estes $u+ $nounf 'estSis // these ?2 estes $u+ $nounf 'estSis // these
acordo $alt $verb acordo $alt $verb
acervo $alt2 acervo $alt2
adepto $alt adepto $alt
adereço $alt2
adore $alt adore $alt
adorno $alt $verb adorno $alt $verb
albatrozes $alt albatrozes $alt
apelo $alt $verb apelo $alt $verb
aposto $alt $verb aposto $alt $verb
aperto $alt2 $noun aperto $alt2 $noun
apoio $alt2 $noun
aprovo $alt
apneia $alt
apoio $alt $verb
arredores $alt arredores $alt
arremesso $alt2 $noun arremesso $alt2 $noun
arroz $alt2 arroz $alt2
autora $alt2 autora $alt2
avesso $alt2 avesso $alt2
axé aSE axé aSE
azeda $alt $verb
azedo $alt $verb
baqueta $alt2 baqueta $alt2
beco $alt2 beco $alt2
belo $alt belo $alt
bilhete $alt2 bilhete $alt2
boca $alt2 boca $alt2
bochecha $alt2 bochecha $alt2
boio $alt
bojo $alt2 bojo $alt2
boleia $alt boleia $alt
bolero $alt bolero $alt
bolo $alt $verb bolo $alt $verb
borboleta $alt2 borboleta $alt2
bordo $alt bordo $alt
bosque $alt
boto $alt2 $noun boto $alt2 $noun
bromelha $alt bromelha $alt
cabeça $alt2
cabresto $alt2 cabresto $alt2
cacete $alt2 cacete $alt2
cachorra $alt2 cachorra $alt2
caderneta $alt2 caderneta $alt2
cadete $alt2
camiseta $alt2 camiseta $alt2
cantora $alt2 cantora $alt2
capacete $alt2 capacete $alt2
catorze $alt2 catorze $alt2
cebola $alt2 cebola $alt2
cefaleia $alt cefaleia $alt
centopeia $alt
cerca $alt cerca $alt
cerca $alt2 $noun cerca $alt2 $noun
cerco $alt $verb cerco $alt $verb
colheres $alt $noun colheres $alt $noun
colmeia $alt colmeia $alt
colore $alt colore $alt
começo $alt2 $noun
começo $alt $verb
comodo $alt2 comodo $alt2
concerto $alt2 $noun concerto $alt2 $noun
concertos $alt2 concertos $alt2
desemprego $alt $verb desemprego $alt $verb
desespero $alt2 $noun desespero $alt2 $noun
desfecho $alt2 desfecho $alt2
desmantelo $alt $verb
desprezo $alt2 $noun desprezo $alt2 $noun
desse $alt2 desse $alt2
desse $alt $verb desse $alt $verb
deste $alt2 deste $alt2
deste $alt $verb deste $alt $verb
desterro $alt2 desterro $alt2
destroem $alt
deveras $alt deveras $alt
dez $alt dez $alt
diarreia $alt diarreia $alt
emprego $alt2 $noun emprego $alt2 $noun
empregos $alt2 empregos $alt2
encosto $alt $verb encosto $alt $verb
endereço $alt2
endereço $alt $verb endereço $alt $verb
enforco $alt enforco $alt
engordo $alt engordo $alt
enredo $alt $verb enredo $alt $verb
enrosco $alt $verb
enterro $alt2 $noun enterro $alt2 $noun
enumerem $alt enumerem $alt
envelope $alt envelope $alt
espoleta $alt2 espoleta $alt2
esposa $alt2 esposa $alt2
esqueleto $alt2 esqueleto $alt2
estilete $alt2
estrela $alt2 estrela $alt2
estrofe $alt estrofe $alt
estorno $alt $verb estorno $alt $verb
estorvo $alt $verb estorvo $alt $verb
etiqueta $alt2 etiqueta $alt2
europa $alt europa $alt
europeia $alt
exagero $alt $verb exagero $alt $verb
explore $alt explore $alt
faceta $alt2 faceta $alt2
fantoche $alt
farelo $alt farelo $alt
farofa $alt farofa $alt
febre $alt febre $alt
feitora $alt2
fera $alt fera $alt
feitora $alt2
ferozes $alt ferozes $alt
fezes $alt fezes $alt
?1 fixe fiSy ?1 fixe fiSy
interesse $alt2 $noun interesse $alt2 $noun
jogo $alt2 $noun jogo $alt2 $noun
joguete $alt2 joguete $alt2
lagosta $alt2
lambreta $alt2 lambreta $alt2
lebre $alt lebre $alt
lembrete $alt2 lembrete $alt2
leste $alt2 $verb leste $alt2 $verb
lopes $alt lopes $alt
macete $alt2
maior $alt maior $alt
maleta $alt2 maleta $alt2
marcelo $alt marcelo $alt
miolo $alt2 miolo $alt2
miolos $alt miolos $alt
moeda $alt moeda $alt
mofo $alt $verb
molho $alt2 $noun molho $alt2 $noun
monera $alt monera $alt
morcego $alt2 morcego $alt2
moreia $alt moreia $alt
mortos $alt mortos $alt
motora $alt2 motora $alt2
mulher $alt
mui mwi mui mwi
muito mw'iNtU // -s is included as a suffix muito mw'iNtU // -s is included as a suffix
muita mw'iNt& muita mw'iNt&
mulher $alt
mulheres $alt mulheres $alt
mureta $alt2 mureta $alt2
mutreta $alt2 mutreta $alt2
odisseia $alt odisseia $alt
onu $1 onu $1
olho $alt2 $noun olho $alt2 $noun
onomatopeia $alt
opereta $alt2 opereta $alt2
ordens $alt ordens $alt
osso $alt2 osso $alt2
ossos $alt ossos $alt
ostra $alt2 ostra $alt2
ovelha $alt2
ovos $alt ovos $alt
pachorra $alt2 pachorra $alt2
paexa paeSa paexa paeSa
pedra $alt pedra $alt
pela $alt $verb pela $alt $verb
pelego $alt2 pelego $alt2
pela $alt $verb
pelo $alt $verb pelo $alt $verb
peso $alt $verb peso $alt $verb
piloto $alt2 $noun piloto $alt2 $noun
plebeia $alt plebeia $alt
polca $alt polca $alt
porcos $alt porcos $alt
porrete $alt2
porra $alt2 porra $alt2
porrete $alt2
porto $alt2 porto $alt2
portos $alt portos $alt
pose $alt2 pose $alt2
povos $alt povos $alt
poxa p'oS& poxa p'oS&
primavera $alt primavera $alt
provo $alt
prosopopeia $alt
quarteto $alt2 quarteto $alt2
queda $alt queda $alt
quede $alt2 quede $alt2
quinteto $alt2 quinteto $alt2
recomeço $alt2 $noun
raposa $alt2
recomeço $alt $verb
recordo $alt recordo $alt
recorto $alt recorto $alt
rede $alt2 rede $alt2
redor $alt redor $alt
reembolso $alt $verb reembolso $alt $verb
reforços $alt
reforço $alt $verb reforço $alt $verb
reforços $alt
refresco $alt $verb refresco $alt $verb
reitora $alt2 reitora $alt2
relevo $alt2 $noun relevo $alt2 $noun
remorso $alt remorso $alt
reprovo $alt
retorno $alt $verb retorno $alt $verb
rixa x'iS& rixa x'iS&
rocha $alt rocha $alt
rota $alt $noun rota $alt $noun
rumores $alt2 rumores $alt2
saleta $alt2 saleta $alt2
sarjeta $alt
sarjeta $alt2
seborreia $alt seborreia $alt
seca $alt2 $noun seca $alt2 $noun
secas $alt2 secas $alt2

+ 40
- 46
dictsource/pt_rules View File

// translation rules Brazilian
// translation rules Brazilian // translation rules Brazilian
// translation rules Brazilian // translation rules Brazilian
// This file is UTF-8 encoded // This file is UTF-8 encoded
e (co_ E e (co_ E
e (ctA_ E e (ctA_ E
e (ctAm_ E e (ctAm_ E
e (çA_ E
e (çAm_ E


e (de_ E e (de_ E
e (dem_ E e (dem_ E
respond) e (L07_ e // cor- respond) e (L07_ e // cor-
qu) e (brL04_ E qu) e (brL04_ E
_cel) e (brL04_ E _cel) e (brL04_ E
_enr) e (dL01_ E
_arr) e (dL03_ E
_depr) e (dL03_ E
_hosp) e (dL03_ E _hosp) e (dL03_ E
_gr) e (gL03_ e _gr) e (gL03_ e
_gal) e (gL03_ e _gal) e (gL03_ e
_n) e (grL03_ e _n) e (grL03_ e
_estr) ei (L03_ EI
estr) ei (L04_ EI
_inv) e (jL04_ E _inv) e (jL04_ E
tr) e (pL04_ E // es- tr) e (pL04_ E // es-
_dec) e (pL04_ E _dec) e (pL04_ E
_in) e (ptL03_ E _in) e (ptL03_ E
_p) e (quL02_ E _p) e (quL02_ E
_s) e (quL02_ E _s) e (quL02_ E
ad) e (quL04_ E
l) e (que_ E l) e (que_ E
_imp) e (rL03_ E _imp) e (rL03_ E
_sev) e (rL03_ E _sev) e (rL03_ E
_tol) e (rL04_ E _tol) e (rL04_ E
_ven) e (rL04_ E _ven) e (rL04_ E
acel) e (rL04_ E // des- acel) e (rL04_ E // des-
_apod) e (rL04_ E
_coop) e (rL04_ E _coop) e (rL04_ E
_temp) e (rL04_ E _temp) e (rL04_ E
_recup) e (rL04_ E _recup) e (rL04_ E
_bez) e (rrL03_ e _bez) e (rrL03_ e
_inv) e (rtL03_ e _inv) e (rtL03_ e
_f) e (rvL03_ e _f) e (rvL03_ e
_p) e (sL01_ E
_refr) e (scL01_ E
_d) e (scL02_ E _d) e (scL02_ E
_cr) e (scL02_ E _cr) e (scL02_ E
_p) e (scL03_ E _p) e (scL03_ E
_m) e (sclL04 E _m) e (sclL04 E
_d) e (spL02_ E _d) e (spL02_ E
_p) e (squL02_ E _p) e (squL02_ E
_refr) e (squL02_ E
_l) e (ssL02_ e _l) e (ssL02_ e
_esp) e (ssL03_ e _esp) e (ssL03_ e
_c) e (stL03_ e _c) e (stL03_ e
_despr) e (zL04_ E _despr) e (zL04_ E
_embel) e (zL04_ E _embel) e (zL04_ E
_menospr) e (zL04_ E _menospr) e (zL04_ E
_emagr) e (çL03
pr) e (çL03_ e // a-
aqu) e (çL03_ e // re-
mer) e (çL03_ e // des-
pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
_car) e (çL03_ e
_per) e (çL03_ e_
conh) e (çL03_ e // re-
obed) e (çL03_ e // des-
_esqu) e (çL03_ e
_forn) e (çL03_ e
_ofer) e (çL03_ e
abast) e (çL03_ e // re-
_aborr) e (çL03_ e
_acont) e (çL03_ e
_agrad) e (çL03_ e
_amanh) e (çL03_ e
_amort) e (çL03_ e
_anoit) e (çL03_ e
_arref) e (çL03_ e
_desguarn) e (çL03_ e
_desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e
_enlouqu) e (çL03_ e
_enraiv) e (çL03_ e
_enriqu) e (çL03_ e
_entrist) e (çL03_ e
_envaid) e (çL03_ e
_envelh) e (çL03_ e
_esclar) e (çL03_ e
_espair) e (çL03_ e
_estrem) e (çL03_ e
_fortal) e (çL03_ e
_rejuven) e (çL03_ e
estabel) e (çL03_ e // re-
com) e (çL01_ E
p) e (çL03_ E
_m) e (çL03_ E
_entorp) e (çL03_ e
//endsort //endsort




?3 g (_C g_ ?3 g (_C g_
g (Y Z // ge gi g (Y Z // ge gi
gu (Y g gu (Y g
?1 guen (C gw'eIN // aguenta, etc.
a) gu (ent gw
enxa) gu (e gw
lin) gu (e gw
lin) gu (i gw
san) gu (ín gw
san) gu (in gw
?1 n) gu (A gw // eg: língua, etc. ?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira ?1 man) gu (ei g // mangueira
?1 gu (ém_ g // eg: alguém, ninguém, etc... ?1 gu (ém_ g // eg: alguém, ninguém, etc...
_engl) o (bL01_ O _engl) o (bL01_ O
_s) o (bL02_ O _s) o (bL02_ O
_esn) o (bL04_ O _esn) o (bL04_ O
br) o (chL04_ O
_deb) o (chL04_ O _deb) o (chL04_ O
_desabr) o (chL04_ O
_m) o (fL01_ O
_m) o (fL02_ O
_s) o (frL02_ O _s) o (frL02_ O
r) o (gL04_ O // inter- r) o (gL04_ O // inter-
_j) o (gL04_ O _j) o (gL04_ O
_af) o (gL04_ O _af) o (gL04_ O
_adv) o (gL04_ O _adv) o (gL04_ O
_ref) o (gL04_ O _ref) o (gL04_ O
_ap) oi (L04_ OI
_ap) oi (L01_ OI
_ap) oi (L02_ OI
_b) oi (L04_ OI
_t) o (lL03_ o _t) o (lL03_ o
c) o (lhL02_ O // es- en- re- c) o (lhL02_ O // es- en- re-
_t) o (lhL02_ O _t) o (lhL02_ O
_ens) o (pL04_ O _ens) o (pL04_ O
_s) o (prL04_ O _s) o (prL04_ O
_) o (ptL04_ O _) o (ptL04_ O
_defl) o (rL02_ O
_impl) o (rL02_ O
_inod) o (rL03_ O _inod) o (rL03_ O
_inson) o (rL03_ O _inson) o (rL03_ O
_comem) o (rL04 O _comem) o (rL04 O
_remem) o (rL04_ O _remem) o (rL04_ O
f) o (rmL03_ O
_enf) o (rquL02_ O _enf) o (rquL02_ O
_ext) o (rquL02_ O _ext) o (rquL02_ O
c) o (rrL01_ o // escorra, incorra, corra, recorra c) o (rrL01_ o // escorra, incorra, corra, recorra
t) o (rçL01_ O // con- t) o (rçL01_ O // con-
_r) o (snL04_ O _r) o (snL04_ O
_c) o (spL02_ O _c) o (spL02_ O
_enr) o (squL02_ O
p) ostos (_ Ost=Us# // dispostos etc. p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o _gar) o (tL03_ o
pr) o (vL03_ O
_g) o (zL04_ O _g) o (zL04_ O
_esb) o (çL01_ O _esb) o (çL01_ O
_r) o (çL03_ O _r) o (çL03_ O
?1 _) qua kwa // quatro, etc. ?1 _) qua kwa // quatro, etc.
?1 _) que ke // quente, etc. ?1 _) que ke // quente, etc.
?1 _) quei (C k'eI // queira, queima, etc ?1 _) quei (C k'eI // queira, queima, etc
?1 C) quen (C kw'eIN // cinquenta, etc.
?1 A) quen (C kw'eIN // frequência, etc.
A) quên (C kw'eIN // frequência, etc.
ade) qu (e kw
e) qu (estr kw
_e) qu (in kw
fre) qu (ent kw
li) qu (id kw
lí) qu (id kw
n) qu (en kw
se) qu (en kw
tran) qu (il kw
?1 quec kes // esquece, etc. ?1 quec kes // esquece, etc.
?1 queç kes // esqueça. ?1 queç kes // esqueça.
?1 A) que (nA_ ke // pequeno, etc. ?1 A) que (nA_ ke // pequeno, etc.

+ 1
- 1
dictsource/sw_rules View File

_) n (k N- _) n (k N-
_) n (k@@ N- _) n (k@@ N-
n (g N n (g N
_) n (g N-
K) n (g N-
_) n (g@@ N- _) n (g@@ N-


.group o .group o

+ 1
- 1
dictsource/zhy_rules View File

// condition ?1 Speak English letters as English words // condition ?1 Speak English letters as English words
// condition ?2 Speak English letter as jyutping romanisation // condition ?2 Speak English letter as jyutping romanisation


//voice=zh-yue // to find the voice for this dictionary


.group a .group a
?1 a _^_EN ?1 a _^_EN

+ 28
- 6
docs/phontab.html View File

<p> <p>
Multiple conditions may be joined with <code>AND</code> or <code>OR</code>, but not a mixture of <code>AND</code>s and <code>OR</code>s. Multiple conditions may be joined with <code>AND</code> or <code>OR</code>, but not a mixture of <code>AND</code>s and <code>OR</code>s.
<p> <p>
A condition may be preceded by <code>NOT</code>. For example:
<pre>
IF &lt;condition&gt; AND NOT &lt;condition&gt; THEN
&lt;statements&gt;
ENDIF
</pre>
<p>
<strong>Condition</strong> <strong>Condition</strong>
Can be: Can be:
<ul> <ul>
<dl> <dl>
<dt>thisPh(&lt;attribute&gt;)
<dd>Test this current phoneme
<p>
<dt>prevPh(&lt;attribute&gt;) <dt>prevPh(&lt;attribute&gt;)
<dd>Test the previous phoneme <dd>Test the previous phoneme
<p> <p>
<dt>prevPhW(&lt;attribute&gt;) <dt>prevPhW(&lt;attribute&gt;)
<dd>Test the previous phoneme, but only within the same word. Returns false if there is no previous phoneme in the word. <dd>Test the previous phoneme, but only within the same word. Returns false if there is no previous phoneme in the word.
<p> <p>
<dt>thisPh(&lt;attribute&gt;)
<dd>Test this current phoneme
<dt>prev2PhW(&lt;attribute&gt;)
<dd>Test the phoneme before the previous phoneme, but only within the same word. Returns false if it is not in this word.
<p> <p>
<dt>nextPh(&lt;attribute&gt;) <dt>nextPh(&lt;attribute&gt;)
<dd>Test the following phoneme <dd>Test the following phoneme
<p> <p>
<dt>nextPhW(&lt;attribute&gt;)
<dd>Test the following phoneme, but only within the same word. Returns false if there is no following phoneme in the word.
<p>
<dt>next2Ph(&lt;attribute&gt;) <dt>next2Ph(&lt;attribute&gt;)
<dd>Test the phoneme after the next phoneme. <dd>Test the phoneme after the next phoneme.
<p> <p>
<dt>nextPhW(&lt;attribute&gt;)
<dd>Test the next phoneme, but only within the same word. Returns false if there is no following phoneme in the word.
<p>
<dt>next2PhW(&lt;attribute&gt;)
<dd>Test the phoneme after the next phoneme, but only within the same word. Returns false if not found before the word end.
<p>
<dt>next3PhW(&lt;attribute&gt;)
<dd>Test the third phoneme after the current phoneme, but only within the same word. Returns false if not found before the word end.
<p>
<dt>nextVowel(&lt;attribute&gt;) <dt>nextVowel(&lt;attribute&gt;)
<dd>Test the next vowel after the current phoneme, but only within the same word. Returns false if there is none. <dd>Test the next vowel after the current phoneme, but only within the same word. Returns false if there is none.
<p> <p>
<dt>prevVowel(&lt;attribute&gt;)
<dd>Test the previous vowel before the current phoneme, but only within the same word. Returns false if there is none.
<p>
<dt>PreVoicing() <dt>PreVoicing()
<dd>This is used as part of the instructions for voiced stop consonants (eg. [d] [g]). If true then produce a voiced murmur before the stop. <dd>This is used as part of the instructions for voiced stop consonants (eg. [d] [g]). If true then produce a voiced murmur before the stop.
<p> <p>
<strong>Attributes</strong> <strong>Attributes</strong>
<ul> <ul>
Note: Additional attributes could be added to eSpeak if needed. Note: Additional attributes could be added to eSpeak if needed.
<p>
<dl> <dl>
<dt>&lt;phoneme name&gt; <dt>&lt;phoneme name&gt;
<dd>True if the phoneme has this phoneme name. <dd>True if the phoneme has this phoneme name.
<dt>isWordEnd <dt>isWordEnd
<dd>True if this is the final phoneme in a word. <dd>True if this is the final phoneme in a word.
<p> <p>
<dt>isFirstVowel
<dt>isSecondVowel
<dt>isFinalVowel <dt>isFinalVowel
<dd>True if this is the last vowel in a word.
<dd>True if this is the First, Second, or Last vowel in a word.
<p> <p>
<dt>isAfterStress <dt>isAfterStress
<dd>True if this phoneme is after the stressed vowel in a word. <dd>True if this phoneme is after the stressed vowel in a word.

+ 16
- 251
phsource/compile_report
File diff suppressed because it is too large
View File


+ 40
- 2
phsource/mbrola/id1 View File



// CR1 doesn't like same phonemes twice
0 e E 5 e _
// ID1 and MS1 don't like same phonemes twice
0 s s 5 s _ 0 s s 5 s _
0 ? k 5 k _ 0 ? k 5 k _
0 t t 5 t _ 0 t t 5 t _
0 n n 5 n _ 0 n n 5 n _
0 p p 5 p _ 0 p p 5 p _
0 l/ l 5 l _ 0 l/ l 5 l _
0 h h 5 h _
0 k k 5 k _
0 z z 5 z _
0 D D 5 z _


0 l/2 NULL 0 l 0 l/2 NULL 0 l
0 l/ NULL 0 l 0 l/ NULL 0 l


0 a NULL 0 V 0 a NULL 0 V
0 E NULL 0 e 0 E NULL 0 e
0 E2 NULL 0 e
0 i NULL 0 I 0 i NULL 0 I
0 o NULL 0 Q 0 o NULL 0 Q
0 O NULL 0 Q 0 O NULL 0 Q
0 u NULL 0 U 0 u NULL 0 U
// 'id1' has phonemes OI aI aU



0 n^ NULL 0 nY 0 n^ NULL 0 nY
0 ? NULL 0 k 0 ? NULL 0 k
0 R NULL 0 r 0 R NULL 0 r
0 x NULL 0 h 0 x NULL 0 h


// some English phonemes
0 A: NULL 60 V r
0 A@ NULL 60 V r
0 eI NULL 0 e
0 oU NULL 60 Q U
0 u: NULL 0 U
0 i: NULL 0 I
0 I2 NULL 0 I
0 I# NULL 0 I
0 3 NULL 0 @
0 3: NULL 0 @
0 e@ NULL 0 e
0 i@ NULL 60 I @
0 i@3 NULL 60 I r
0 o@ NULL 60 Q @
0 O@ NULL 60 Q @
0 O: NULL 80 Q @
0 U@ NULL 60 U @
0 0 NULL 0 Q
0 a# NULL 0 @
0 aa NULL 0 V
0 @L NULL 50 @ l
0 aI @ 5 aI _
0 aI 3 5 aI _
0 aU @ 5 aU _
0 aI@ NULL 75 V @
0 aI3 NULL 75 V r
0 aU@ NULL 75 V @

0 Z NULL 60 z j
0 T NULL 0 t
0 D NULL 0 z

+ 4
- 0
phsource/ph_bengali View File

vowel flag1 starttype #o endtype #o vowel flag1 starttype #o endtype #o
length 200 length 200


IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isNotVowel) THEN
ChangePhoneme(NULL)
ENDIF

IF thisPh(isFirstVowel) THEN IF thisPh(isFirstVowel) THEN
IF nextVowel(i) OR nextVowel(u) THEN IF nextVowel(i) OR nextVowel(u) THEN
ChangePhoneme(o) ChangePhoneme(o)

+ 51
- 1
phsource/ph_indonesian View File

vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
unstressed unstressed
length 140 length 140
IF prevPh(@) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/@_low) FMT(vowel/@_low)
endphoneme endphoneme


phoneme a phoneme a
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 180 length 180
IF prevPh(a) THEN
InsertPhoneme(_|)
ENDIF
ChangeIfUnstressed(a/) ChangeIfUnstressed(a/)
FMT(vowel/a) FMT(vowel/a)
endphoneme endphoneme
phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 180 length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
ChangeIfUnstressed(@) ChangeIfUnstressed(@)
FMT(vowel/e_mid) FMT(vowel/e_mid)
endphoneme endphoneme
phoneme E2 // as [E] but don't reduce to [@] phoneme E2 // as [E] but don't reduce to [@]
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 180 length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/e_mid) FMT(vowel/e_mid)
endphoneme endphoneme


phoneme e phoneme e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 180 length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


phoneme i phoneme i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 180 length 180
IfNextVowelAppend(;)
IF prevPh(i) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/i_6) FMT(vowel/i_6)
endphoneme endphoneme


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 180 length 180
IF prevPh(#o) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/oo) FMT(vowel/oo)
endphoneme endphoneme


phoneme o phoneme o
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 180 length 180
IF prevPh(#o) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/o) FMT(vowel/o)
endphoneme endphoneme


phoneme u phoneme u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 180 length 180
IF prevPh(u) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/u) FMT(vowel/u)
endphoneme endphoneme


phoneme aI phoneme aI
vowel starttype #a endtype #i vowel starttype #a endtype #i
length 240 length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/ai) FMT(vdiph/ai)
endphoneme endphoneme


FMT(vdiph/eei_2) FMT(vdiph/eei_2)
endphoneme endphoneme


phoneme OI
vowel starttype #o endtype #i
length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/ooi)
endphoneme

phoneme aU phoneme aU
vowel starttype #a endtype #u vowel starttype #a endtype #u
length 240 length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/au_4) FMT(vdiph/au_4)
endphoneme endphoneme



+ 42
- 40
phsource/phonemes View File

phonemetable fa base phonemetable fa base
include ph_farsi include ph_farsi


// experimental

phonemetable ko base
include ph_korean

phonemetable kl base
include ph_greenlandic

phonemetable am base
include ph_amhari

phonemetable si hi
include ph_sinhala



//************************************************************************************** //**************************************************************************************
// 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 prs base
include ph_dari
//phonemetable prs base
//include ph_dari


phonemetable sl sk phonemetable sl sk
include ph_slovenian include ph_slovenian


phonemetable gd base
include ph_s_gaelic
//phonemetable gd base
//include ph_s_gaelic


phonemetable nso base
include ph_northern-sotho
//phonemetable nso base
//include ph_northern-sotho


phonemetable ht fr
include ph_haitian
//phonemetable ht fr
//include ph_haitian


phonemetable az tr
include ph_azerbaijani
//phonemetable az tr
//include ph_azerbaijani


phonemetable ak base
include ph_akan
//phonemetable ak base
//include ph_akan


phonemetable am base
include ph_amhari

phonemetable wo base
include ph_wolof

phonemetable dv hi
include ph_divehi

phonemetable te hi
include ph_telugu

phonemetable si hi
include ph_sinhala
//phonemetable wo base
//include ph_wolof


phonemetable tn base
include ph_setswana
//phonemetable dv hi
//include ph_divehi


//phonemetable te hi
//include ph_telugu


phonemetable mt base
include ph_maltese
//phonemetable tn base
//include ph_setswana


phonemetable bo hi
include ph_tibetan


phonemetable kk base
include ph_kazakh
//phonemetable mt base
//include ph_maltese


phonemetable tt base
include ph_tatar
//phonemetable bo hi
//include ph_tibetan


phonemetable ko base
include ph_korean
//phonemetable kk base
//include ph_kazakh


phonemetable kl base
include ph_greenlandic
//phonemetable tt base
//include ph_tatar



BIN
phsource/vwl_fr/trr View File


+ 15
- 5
src/compiledata.cpp View File

{"next2PhW", tWHICH_PHONEME, 6}, {"next2PhW", tWHICH_PHONEME, 6},
{"nextVowel",tWHICH_PHONEME, 7}, {"nextVowel",tWHICH_PHONEME, 7},
{"prevVowel",tWHICH_PHONEME, 8}, {"prevVowel",tWHICH_PHONEME, 8},
// {"next2PhW", tWHICH_PHONEME, 0x800},

// {"numVowels", tTEST, 0x000},
{"next3PhW", tWHICH_PHONEME, 9},
{"prev2PhW", tWHICH_PHONEME, 10},


{"PreVoicing", tTEST, 0xf01}, {"PreVoicing", tTEST, 0xf01},
{"KlattSynth", tTEST, 0xf02}, {"KlattSynth", tTEST, 0xf02},
fclose(f_in); fclose(f_in);
} }


LoadVoice(voicename,0);

if(LoadVoice(voicename,1) == NULL)
{
wxLogError(wxString::Format(_T("Can't find voice '%s' for dictionary '%s'"), wxString(voicename, wxConvLocal).c_str(), dictstr.c_str()));
report = report + dictstr + _T(" No Voice, ");
errors ++;
}
else
if((err = CompileDictionary(path_dsource, dictname,log,NULL,0)) > 0) if((err = CompileDictionary(path_dsource, dictname,log,NULL,0)) > 0)
{ {
report = report + dictstr + wxString::Format(_T(" %d, "),err); report = report + dictstr + wxString::Format(_T(" %d, "),err);
int count; int count;
int c; int c;
char *p; char *p;
int vowel_length_factor = 100; // for testing
char number_buf[12]; char number_buf[12];
char ipa_buf[N_ITEM_STRING+1]; char ipa_buf[N_ITEM_STRING+1];
PHONEME_TAB phoneme_out2; PHONEME_TAB phoneme_out2;


case i_SET_LENGTH: case i_SET_LENGTH:
value = NextItemMax(511); value = NextItemMax(511);
if(phoneme_out->type == phVOWEL)
{
value = (value * vowel_length_factor)/100;
}

if(after_if == 0) if(after_if == 0)
{ {
phoneme_out->std_length = value/2; phoneme_out->std_length = value/2;

+ 5
- 5
src/compiledict.cpp View File

} }


ix = 0; ix = 0;
if(isdigit(*p))
if(IsDigit09(*p))
{ {
ix += (*p-'0'); ix += (*p-'0');
p++; p++;
} }
if(isdigit(*p))
if(IsDigit09(*p))
{ {
ix = ix*10 + (*p-'0'); ix = ix*10 + (*p-'0');
p++; p++;
case 1: case 1:
if((c == '-') && multiple_words) if((c == '-') && multiple_words)
{ {
if(isdigit(word[0]))
if(IsDigit09(word[0]))
{ {
multiple_numeric_hyphen = 1; multiple_numeric_hyphen = 1;
} }
sxflags |= SUFX_M; sxflags |= SUFX_M;
break; break;
default: default:
if(isdigit(c))
if(IsDigit09(c))
value = (value*10) + (c - '0'); value = (value*10) + (c - '0');
break; break;
} }
char item_length[N_LETTERGP_ITEMS]; char item_length[N_LETTERGP_ITEMS];


p = input; p = input;
if(!isdigit(p[0]) || !isdigit(p[1]))
if(!IsDigit09(p[0]) || !IsDigit09(p[1]))
{ {
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++;

+ 2
- 2
src/dictionary.cpp View File

break; // # is subscript-h, but only for consonants break; // # is subscript-h, but only for consonants


// ignore digits after the first character // ignore digits after the first character
if(!first && isdigit(c))
if(!first && IsDigit09(c))
continue; continue;


if((c >= 0x20) && (c < 128)) if((c >= 0x20) && (c < 128))
if(((c = *word1++)==0) || (c == ' ')) if(((c = *word1++)==0) || (c == ' '))
break; break;


if((c=='.') && (length > 0) && (isdigit(word[length-1])))
if((c=='.') && (length > 0) && (IsDigit09(word[length-1])))
break; // needed for lang=hu, eg. "december 2.-ig" break; // needed for lang=hu, eg. "december 2.-ig"


word[length] = c; word[length] = c;

+ 18
- 18
src/numbers.cpp View File

char ph_buf[80]; char ph_buf[80];
char ph_buf2[80]; char ph_buf2[80];
char ph_alphabet[80]; char ph_alphabet[80];
char hexbuf[6];
char hexbuf[12];
static char pause_string[] = {phonPAUSE, 0}; static char pause_string[] = {phonPAUSE, 0};


ph_buf[0] = 0; ph_buf[0] = 0;
flags[0] = 0; flags[0] = 0;
flags[1] = 0; flags[1] = 0;


if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || isdigit(word[-2]))
if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2]))
return(0); // not '2xx' return(0); // not '2xx'


word_start = word; word_start = word;
n_digits++; n_digits++;
} }


if(isdigit(word[0]))
if(IsDigit09(word[0]))
return(0); // eg. 'xx2' return(0); // eg. 'xx2'


acc += prev; acc += prev;
// Is this a group of 3 digits which looks like a thousands group? // Is this a group of 3 digits which looks like a thousands group?
int ix; int ix;


if(isdigit(word[group_len]) || isdigit(-1))
if(IsDigit09(word[group_len]) || IsDigit09(-1))
return(false); return(false);


for(ix=0; ix < group_len; ix++) for(ix=0; ix < group_len; ix++)
{ {
if(!isdigit(word[ix]))
if(!IsDigit09(word[ix]))
return(false); return(false);
} }
return(true); return(true);
digit_lookup = buf_digit_lookup; digit_lookup = buf_digit_lookup;
number_control = control; number_control = control;


for(ix=0; isdigit(word[ix]); ix++) ;
for(ix=0; IsDigit09(word[ix]); ix++) ;
n_digits = ix; n_digits = ix;
value = this_value = atoi(word); value = this_value = atoi(word);


group_len = 4; group_len = 4;


// is there a previous thousands part (as a previous "word") ? // is there a previous thousands part (as a previous "word") ?
if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3]))
if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && IsDigit09(word[-3]))
{ {
prev_thousands = 1; prev_thousands = 1;
} }
else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE)) else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE))
{ {
// thousands groups can be separated by spaces // thousands groups can be separated by spaces
if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && isdigit(word[-2]))
if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && IsDigit09(word[-2]))
{ {
prev_thousands = 1; prev_thousands = 1;
} }
} }
} }


if((word[ix] == '.') && !isdigit(word[ix+1]) && !isdigit(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
if((word[ix] == '.') && !IsDigit09(word[ix+1]) && !IsDigit09(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
{ {
// remove dot unless followed by another number // remove dot unless followed by another number
word[ix] = 0; word[ix] = 0;
{ {
ordinal = 2; ordinal = 2;
} }
else if(!isdigit(suffix[0])) // not _#9 (tab)
else if(!IsDigit09(suffix[0])) // not _#9 (tab)
{ {
sprintf(string,"_#%s",suffix); sprintf(string,"_#%s",suffix);
if(Lookup(tr, string, ph_ordinal2)) if(Lookup(tr, string, ph_ordinal2))


if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep)) if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep))
{ {
if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7]))
if((n_digits == 2) && (word[3] == ':') && IsDigit09(word[5]) && isspace(word[7]))
{ {
// looks like a time 02:30, omit the leading zero // looks like a time 02:30, omit the leading zero
} }
} }
} }


if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
if((word[n_digits] == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
{ {
// this "word" ends with a decimal point // this "word" ends with a decimal point
Lookup(tr, "_dpt", ph_append); Lookup(tr, "_dpt", ph_append);
char *p2; char *p2;
// look for combinations of the number with the next word // look for combinations of the number with the next word
p = word; p = word;
while(isdigit(p[1])) p++; // just use the last digit
if(isdigit(p[-1]))
while(IsDigit09(p[1])) p++; // just use the last digit
if(IsDigit09(p[-1]))
{ {
p2 = p - 1; p2 = p - 1;
if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits
n_digits++; n_digits++;


decimal_count = 0; decimal_count = 0;
while(isdigit(word[n_digits+decimal_count]))
while(IsDigit09(word[n_digits+decimal_count]))
decimal_count++; decimal_count++;


// if(decimal_count > 1) // if(decimal_count > 1)
decimal_count--; decimal_count--;
n_digits++; n_digits++;
} }
if((decimal_count <= max_decimal_count) && isdigit(word[n_digits]))
if((decimal_count <= max_decimal_count) && IsDigit09(word[n_digits]))
{ {
LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0); LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
strcat(ph_out,buf1); strcat(ph_out,buf1);
} }
} }


while(isdigit(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
while(IsDigit09(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
{ {
// speak any remaining decimal fraction digits individually // speak any remaining decimal fraction digits individually
value = word[n_digits++] - '0'; value = word[n_digits++] - '0';
if(Lookup(tr, "_dpt2", buf1)) if(Lookup(tr, "_dpt2", buf1))
strcat(ph_out,buf1); strcat(ph_out,buf1);


if((c == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
if((c == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
{ {
Lookup(tr, "_dpt", buf1); Lookup(tr, "_dpt", buf1);
strcat(ph_out,buf1); strcat(ph_out,buf1);

+ 2
- 2
src/readclause.cpp View File

{//================================================================== {//==================================================================
int value = 0; int value = 0;


if((pw == NULL) || !isdigit(*pw))
if((pw == NULL) || !IsDigit09(*pw))
return(default_value); return(default_value);


while(isdigit(*pw))
while(IsDigit09(*pw))
{ {
value = value*10 + *pw++ - '0'; value = value*10 + *pw++ - '0';
} }

+ 17
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.47.03b 22.Mar.13";
const char *version_string = "1.47.03c 23.Mar.13";
const int version_phdata = 0x014701; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;
static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, USHORT *p_prog, WORD_PH_DATA *worddata) static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, USHORT *p_prog, WORD_PH_DATA *worddata)
{//======================================================================================================================== {//========================================================================================================================
int which; int which;
int ix;
unsigned int data; unsigned int data;
int instn; int instn;
int instn2; int instn2;
return(false); // no previous vowel return(false); // no previous vowel
plist = &(worddata->prev_vowel); plist = &(worddata->prev_vowel);
break; break;

case 9: // next3PhW
for(ix=1; ix<=3; ix++)
{
if(plist[ix].sourceix)
return(false);
}
plist = &plist[3];
break;

case 10: // prev2PhW
if((plist[0].sourceix) || (plist[-1].sourceix))
return(false);
plist-=2;
break;
} }


if((which == 0) || (which == 5)) if((which == 0) || (which == 5))

+ 4
- 1
src/tr_languages.cpp View File

break; break;


case L('i','d'): // Indonesian case L('i','d'): // Indonesian
case L('m','s'): // Malay
{ {
static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240}; static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240};
static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 }; static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 };
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_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.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words. Need to allow "bw'" prefix
tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED;
tr->langopts.numbers2 = 0x200; // say "thousands" before its number tr->langopts.numbers2 = 0x200; // say "thousands" before its number
} }
tr->langopts.vowel_pause = 1; tr->langopts.vowel_pause = 1;
tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.max_initial_consonants = 4; // for example: mwngi



tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED;
tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000

+ 6
- 5
src/translate.cpp View File

} }





int IsAlpha(unsigned int c) int IsAlpha(unsigned int c)
{//======================== {//========================
// Replacement for iswalph() which also checks for some in-word symbols // Replacement for iswalph() which also checks for some in-word symbols
return(0); return(0);
} }


static int IsDigit09(unsigned int c)
{//=========================
int IsDigit09(unsigned int c)
{//============================
if((c >= '0') && (c <= '9')) if((c >= '0') && (c <= '9'))
return(1); return(1);
return(0); return(0);
source_index++; source_index++;
} }


if(isdigit(source[source_index]))
if(IsDigit09(source[source_index]))
{ {
value = atoi(&source[source_index]); value = atoi(&source[source_index]);
while(isdigit(source[source_index]))
while(IsDigit09(source[source_index]))
source_index++; source_index++;
} }




while(pn < &number_buf[sizeof(number_buf)-20]) while(pn < &number_buf[sizeof(number_buf)-20])
{ {
if(!isdigit(c = *pw++) && (c != tr->langopts.decimal_sep))
if(!IsDigit09(c = *pw++) && (c != tr->langopts.decimal_sep))
break; break;


*pn++ = c; *pn++ = c;

+ 1
- 0
src/translate.h View File

void InitText(int flags); void InitText(int flags);
void InitText2(void); void InitText2(void);
int IsDigit(unsigned int c); int IsDigit(unsigned int c);
int IsDigit09(unsigned int c);
int IsAlpha(unsigned int c); int IsAlpha(unsigned int c);
int IsVowel(Translator *tr, int c); int IsVowel(Translator *tr, int c);
int isspace2(unsigned int c); int isspace2(unsigned int c);

+ 2
- 2
src/voices.cpp View File



// which directory to look for a named voice. List of voice names, must end in a space. // which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia = 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 ";
"fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe = static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";


// The voice name has a +variant suffix // The voice name has a +variant suffix
variant_num = 0; variant_num = 0;
*p++ = 0; // delete the suffix from the voice name *p++ = 0; // delete the suffix from the voice name
if(isdigit(*p))
if(IsDigit09(*p))
{ {
variant_num = atoi(p); // variant number variant_num = atoi(p); // variant number
} }

Loading…
Cancel
Save