Browse Source

[1.46.45]

Indian languages, rename aspirated phonemes with # instead of h (eg. [t#] not [th]).


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

+ 1
- 0
dictsource/de_list View File

@@ -97,6 +97,7 @@ x Iks
_ar aR'AbIS
_cyr ky:R'IlIS
_he hEbr'E:IS
_zh Ci:n'e:zIS


// Numbers

+ 69
- 70
dictsource/dict_phonemes View File

@@ -68,7 +68,7 @@ r R R3 s S t T tS
v w x z Z


Dictionary hu_dict 2013-03-08
Dictionary hu_dict 2013-03-10

a A a: e E e: i i:
o o: u u: Y y y: Y:
@@ -80,7 +80,7 @@ S s2 t t2 tS ts v w
z Z


Dictionary de_dict 2013-02-25
Dictionary de_dict 2013-03-10

3 @ @- a A A: aI aU
A~ E E2 E: e: EI i I
@@ -104,7 +104,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-03-08
Dictionary en_dict 2013-03-10

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
@@ -191,22 +191,22 @@ N n^ p r R R2 s S
t tS ts tS; v x z Z


Dictionary hi_dict 2013-03-01
Dictionary hi_dict 2013-03-09

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

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


Dictionary ta_dict 2013-03-08
Dictionary ta_dict 2013-03-10

a a: aI aU e E e: i
I i: o o: u U u2 u:
@@ -216,7 +216,7 @@ U: V V#
d. dZ f g h H j k
l l. m n N n. n^ p
Q r R s S s. t T
t. th tS v w z z.
t. tS v w z z.


Dictionary hy_dict 2008-12-22
@@ -379,7 +379,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2013-03-08
Dictionary pt_dict 2013-03-10

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -540,21 +540,21 @@ n^ p p` r s S t t`
tS tS` v w x z Z


Dictionary ml_dict 2013-03-06
Dictionary ml_dict 2013-03-10

@ a a# a: aI aU e E
e: i I i: o o: r- u
u: V y

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


Dictionary ne_dict 2013-01-10
Dictionary ne_dict 2013-03-09

@ @/ @2 @3 a a: aI aU
a~ e E e: E: eI e~ E~
@@ -562,25 +562,25 @@ i I i: i~ o O o: O:
O~ o~ u U u: u~ V VI
VU V~

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


Dictionary pa_dict 2013-03-01
Dictionary pa_dict 2013-03-09

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

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


@@ -603,16 +603,16 @@ N n^ p q R s S S;
t tS v w x z


Dictionary ur_dict 2013-03-08
Dictionary ur_dict 2013-03-09

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

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


@@ -682,30 +682,30 @@ q R R2 s s2 t v w
x z


Dictionary dv_dict 2011-01-08
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 ch d D d.
dZ f g h j k kh l
: ? 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. th th. tS v w x z
t# t. t.# tS v w x z
Z


Dictionary kn_dict 2011-12-05
Dictionary kn_dict 2013-03-09

a a: aI aU e E e: i
I i: o o: r- u u:

#X1 #X2 : b bh c ch d
d. dh dh. dZ f g gh h
j J Jh k kh l l. m
n N n. n^ p ph r s
S s. S; t t. th th. tS
#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. S; t t# t. t.# tS
v w z


@@ -721,16 +721,16 @@ R R3 s S t T tS ts
v w x X z


Dictionary te_dict 2011-12-05
Dictionary te_dict 2013-03-09

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

#X1 #X2 : ; b bh c ch
d d. dh dh. dZ f g gh
h j J Jh k kh l l.
m n N n. n^ p ph r
s s. S; t t. th th. tS
#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


@@ -750,11 +750,10 @@ Dictionary si_dict 2013-01-18
& &: @ a a: aI aU e
e: i i: o o: u u:

b bh d d. dh dZ f g
gh h j k kh l l. m
m# n N n# N# n. n.# n^
n^# p ph r s S s. t
t. th tS v w
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


Dictionary et_dict 2012-06-12
@@ -782,16 +781,16 @@ q r s S t tS v w
x z Z


Dictionary bo_dict 2011-12-05
Dictionary bo_dict 2013-03-09

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

: ? b bh c ch d d.
dh dh. dz dzh g gh H j
J k kh l m n N n.
n^ p ph r s S s. t
t. th th. ts tsh w z Z
: ? 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


Dictionary kk_dict 2011-12-07
@@ -872,18 +871,18 @@ R R2 s S t T t# tS
w x


Dictionary bn_dict 2013-02-28
Dictionary bn_dict 2013-03-09

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

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


Dictionary ga_dict 2013-03-08

+ 30
- 14
dictsource/en_list View File

@@ -127,7 +127,7 @@ _, k0m@
_- h,aIf@n
?3 _- daS
_. d0t
?3_. pi@rI@d
?3_.p pi@rI@d
_: koUl@n
_; sEmIk'oUl@n
_< lEsDan
@@ -276,7 +276,8 @@ _my mj'A:nmA@
_ka dZ'O@dZ@n
_ko k3r'i@n
_eth i:TI'0pIk

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

// Cyrillic letters
а a
@@ -385,6 +386,18 @@ _eth i:TI'0pIk
ר ReS_
ש Sin_
ת tav_
ְ SvA:
ֱ E
ֲ a
ֳ o
ִ i:
ֵ E
ֶ E
ַ a
ָ a
ֹ o
ֻ u
ּ d'agES


// phonetic modifiers
@@ -4184,19 +4197,22 @@ like laIk $strend2


// 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 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



+ 4
- 2
dictsource/en_rules View File

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

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

+ 49
- 42
dictsource/hi_list View File

@@ -8,9 +8,9 @@ _2 d'o:
_3 t'i:n
_4 c:'a:r:
_5 'pa~c
_6 ch'@2
_6 c#'@2
_7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'O:
?3 _9 n'aU

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

_20 b'i:s
@@ -31,9 +31,9 @@ _22 b'a:Is
_23 t'ue:Is
_24 c'O:bIs
_25 p@c:'Is
_26 ch@bb'i:rs
_26 c#@bb'i:rs
_27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 ,Unt'Is
_30 t'i:s

@@ -42,7 +42,7 @@ _32 b'at:'I'S
_33 tE~t'Is // E~ ?
_34 cO~t'Is
_35 pE~t'Is
_36 chaT'tIs
_36 c#aT'tIs
_37 sE~t'Is
_38 art'Is
_39 Unta:l'Is
@@ -53,7 +53,7 @@ _42 baIa:l'Is
_43 tE~ta:l'Is
_44 cO:wa:l'Is
_45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 sE~ta:l'Is
_48 arta:l'Is
_49 'Un^ca:s
@@ -63,32 +63,32 @@ _51 Ikj'a:wVn
_52 b'a:wVn
_53 t'IrpVn
_54 c'Ou:wVn
_55 p'achpVn
_56 chh@p:'Vn
_55 p'ac#pVn
_56 c#h@p:'Vn
_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:

_70 sat:'Vr:
_71 Ikhat:'Vr:
_71 Ik#at:'Vr:
_72 b@hat:'Vr:
_73 tIhat:'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:
_78 athhat:'Vr:
_78 at#hat:'Vr:
_79 ,Un^Ia:s'i:

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

_90 nVb:'e:
@@ -108,50 +108,50 @@ _92 b'a:n@we:
_93 tIr'a:n@we:
_94 cO:r'a:m@we:
_95 p@c'a:n@we:
_96 chIj'a:n@we:
_96 c#Ij'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:

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

// Single consonants
क k@
क़ q@
ख kh@
ख k#@
ख़ x@
ग g@
ग़ Q@
घ gh@
घ g#@
ङ N@
च c@
छ ch@
छ c#@
ज J@
ज़ z@
झ Jh@
झ J#@
ञ n^@
ट t.@
ठ th.@
ठ t.#@
ड d.@
ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@
त t@
थ th@
थ t#@
द d@
ध dh@
ध d#@
न n@
प p@
फ ph@
फ p#@
फ़ f@
ब b@
भ bh@
भ b#@
म m@
य j@
र r@
@@ -194,6 +194,13 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
ॣ #X2l-:
ॐ #X1o~m

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

// Punctuation
। dVn.d.V

+ 20
- 20
dictsource/hi_rules View File

@@ -172,8 +172,8 @@
क़ (B q

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

@@ -184,8 +184,8 @@
ग़ (B Q

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

.group ङ
ङ NV
@@ -198,8 +198,8 @@
च (्य c:

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

.group ज
ज JV
@@ -208,8 +208,8 @@
ज़ (B z

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

.group ञ
ञ n^V
@@ -222,8 +222,8 @@
ट (्य t.:

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

.group ड
ड d.V
@@ -233,8 +233,8 @@
ड़ (B r.

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

@@ -249,16 +249,16 @@
त (्य t:

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

.group द
द dV
द (B d

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

.group न
न nV
@@ -276,8 +276,8 @@
प (्य p:

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

@@ -286,8 +286,8 @@
ब (B b

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

.group म
म mV

+ 4
- 3
dictsource/hu_list View File

@@ -409,7 +409,7 @@ _tld tildE

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

@@ -5382,7 +5382,7 @@ _¤ pe:nznEmjEl
® bEjEJzEt:
™ ve:djEJ
_` tompA
_  so:kYz
_  s'o:kYz
_« bElSY:|bAl|ide:zY:jEl
_» bElSY:|jobb|ide:zY:jEl
_­ la:JkYtY:jEl
@@ -5423,8 +5423,9 @@ _¡ AlSo:indEks

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


// Main Exceptions List

+ 8
- 0
dictsource/hu_rules View File

@@ -459,6 +459,7 @@ shetlan) d (szige d
szaba) d (szem d
_tren) dsz (e d|s
vakon) d (sz d
vé) d (jeggy d

.group dz
fogó) dz (kod ts
@@ -1021,6 +1022,8 @@ szivárvá) ny (játsz n^
_elle) n (jav n
vagyo) n (jog n
nny (elv n|n^
haszo) n (jár n
boszorká) ny (jelet n^

.group o
o o
@@ -1162,6 +1165,7 @@ _tetszé) s S
ki) s (szőlő S
körö) s (szeg S
kolbászo) s S
feldolgozá) s S

.group ss
ssz ss2
@@ -1757,6 +1761,7 @@ fáklyá) sz (ene Sz
pénze) sz (k s
ellenállá) sz (ón Sz
ré) sz (árás Sz
_te) szts (or st|S

.group t
t t
@@ -1988,6 +1993,7 @@ _tisztele) tj (el tj
zené) tj (átsz tj
szen) tj (akab tj
közérze) tj (aví tj
ké) tj (átszm tj

.group ts
ts (_S2 tS //general rule with word end of ts letters
@@ -2204,6 +2210,8 @@ felira) ts (áv t|S
leme) tsz (vén ts
_cha) tsz (ob t|s
robo) ts (of t|S
merényle) ts (or t|S


.group tt
tt t:

+ 97
- 97
dictsource/kn_list View File

@@ -39,29 +39,29 @@ _?? aks.ara // 'unknown character'
// letter names
ಕ್ ik
ಖ್ ikh
ಖ್ ik#
ಗ್ ig
ಘ್ igh
ಘ್ ig#
ಙ್ iN
ಚ್ ic
ಛ್ ich
ಛ್ ic#
ಜ್ iJ
ಝ್ iJh
ಝ್ iJ#
ಞ್ in^
ಟ್ it.
ಠ್ ith.
ಠ್ it.#
ಡ್ id.
ಢ್ idh.
ಢ್ id.#
ಣ್ in.
ತ್ it
ಥ್ ith
ಥ್ it#
ದ್ id
ಧ್ id.
ಧ್ id#
ನ್ in
ಪ್ ip
ಫ್ iph
ಫ್ ip#
ಬ್ ib
ಭ್ ibh
ಭ್ ib#
ಮ್ im
ಯ್ ij
ರ್ ir
@@ -101,17 +101,17 @@ U+ccd vattu
// symbols
% pratis.ata
! a:scharjachinhe
! a:sc#arjac#inhe
_? aks.ara
. pu:rn.avira:ma
, alpavira:ma
¼ ka:lu
½ ardha
½ ard#a
¾ mukka:lu
(1 / 2) ardha
(1 / 2) ard#a
(1 / 4) ka:lu
(3 / 4) mukka:lu
÷ bha:ga:ka:ra
÷ b#a:ga:ka:ra
& mattu
@@ -125,8 +125,8 @@ _5 'aIdu
_6 'a:ru
_7 'e:l.u
_8 'ent.u
_9 'ombath:u
_1X h'ath:u
_9 'ombat#:u
_1X h'at#:u
_11 hann'ondu
_12 han:erad.u
_13 hadim'u:ru
@@ -135,93 +135,93 @@ _15 hadinaIdu
_16 hadina:ru
_17 hadin'e:l.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
_1C0 nu:ru

+ 20
- 20
dictsource/kn_rules View File

@@ -24,16 +24,16 @@
ಕ (B k

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

.group ಗ
ಗ ga
ಗ (B g

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

.group ಙ
ಙ Na
@@ -44,8 +44,8 @@
ಚ (B c

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

.group ಜ
ಜ Ja
@@ -54,8 +54,8 @@
ಜ಼ (B z

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

.group ಞ
ಞ n^a
@@ -66,16 +66,16 @@
ಟ (B t.

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

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

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

.group ಣ
ಣ n.a
@@ -86,16 +86,16 @@
ತ (B t

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

.group ದ
ದ da
ದ (B d

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

.group ನ
ನ na
@@ -106,8 +106,8 @@
ಪ (B p

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

@@ -116,8 +116,8 @@
ಬ (B b

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

.group ಮ
ಮ ma

+ 3
- 3
dictsource/ml_list View File

@@ -8,8 +8,8 @@
U+d02 'a#m
U+d03 visarg@m
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
ൻ _in
@@ -79,7 +79,7 @@ z zEd
& samuccaj@m
_. bindu
_, aNkuS;@m
_; ro:dhini
_; ro:d#ini
_? co:dj@cihn@m
_! a:S;c@rjacihn@m


+ 21
- 21
dictsource/ml_rules View File

@@ -36,16 +36,16 @@
ക്ക (B k:

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

.group ഗ
ഗ ga
ഗ (B g

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

.group ങ
ങ Na
@@ -56,16 +56,16 @@
ച (B c

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

.group ജ
ജ Ja
ജ (B J

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

.group ഞ
ഞ n^a
@@ -81,16 +81,16 @@
ട്ട (B t.:

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

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

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

.group ണ
ണ n.a
@@ -106,16 +106,16 @@
ത്ത (B t:

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

.group ദ
ദ da
ദ (B d

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

.group ന
ന na
@@ -131,8 +131,8 @@
പ്പ (B p:

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

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

@@ -142,8 +142,8 @@
ബ (B b

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

.group മ
മ ma
@@ -160,7 +160,7 @@
.group റ
റ R2a
റ (B R2
ന്) റ d#
ന്) റ d2
റ്റ t.t. // ?? R2R2 = t.t.

.group ല

+ 51
- 51
dictsource/ne_list View File

@@ -30,20 +30,20 @@ _2 d'u:,i:
_3 t'i:n
_4 c'a:r:
_5 p'a:nc
_6 ch'@2
_6 c#'@2
_7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'V'u:
_10 d'Vs
_11 e:'gh'a:r'V
_11 e:'g#'a:r'V
_12 b'a:r@2
_13 t'e:hr@
_14 ch'O:d@2
_14 c#'O:d@2
_15 p'Vndr@2
_16 s'o:r@2
_17 s'Vtr@2
_18 a'th.'a:r@2
_18 a't.#'a:r@2
_19 U:nn'a:i's
_20 b'i:s
@@ -52,9 +52,9 @@ _22 b'a:Is
_23 t'e:Is
_24 c'O:b'Is
_25 p@c:'Is
_26 ch@b'b'i:s
_26 c#@b'b'i:s
_27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 U:n'Vnt'Is
_30 t'i:s
@@ -63,7 +63,7 @@ _32 b'at:'Is
_33 t'e:t't'i:s
_34 cO~,t'I:s
_35 pE~t'Is
_36 ch@:t't'I:s
_36 c#@:t't'I:s
_37 sE~t'Is
_38 art'Is
_39 U:n'an'c'a:l'i:s
@@ -74,9 +74,9 @@ _42 baIa:l'Is
_43 t'ri:c'a:l'i:s
_44 cO:wa:l'Is
_45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja: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
:
_50 p@c'a:s
@@ -85,20 +85,20 @@ _52 b'a:wVn'n:'V
_53 t'rI:p'an'nV
_54 c'Ou:wVn'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
_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:
_70 s'at't@r'i::
@@ -106,10 +106,10 @@ _71 e:k'ah'at:'Vr:
_72 b@h'att'Vr:
_73 tIjatt:'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:
_78 athhatt:'Vr:
_78 at#hatt:'Vr:
_79 U'n'a:s'i:
_80 a's's'i:
@@ -118,9 +118,9 @@ _82 baIa:s'i:
_83 trIj'a:s'i:
_84 cO:ra: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:
_88 a'th.:a:s'i:
_88 a't.#:a:s'i:
_89 u:n'a:n'ab'b'e:
_90 n@b'b'e:
@@ -129,24 +129,24 @@ _92 b'aj'a:n@b'b'e:
_93 trIj'a:n@b'b'e:
_94 cO:r'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:
_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:
_0C s'aj@
_0M1 h@z'a:r@
_0M2 l'a:kh@
_0M2 l'a:k#@
_0M3 k'a'ro:d.@
_0M4 'Vr@b
_0M5 kh'Vr@b'V
_0M5 k#'Vr@b'V
_0M6 n'i:l'
_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
@@ -157,34 +157,34 @@ _dpt _th'o:plo_
// Single consonants
क k@
क़ q@
ख kh@
ख k#@
ख़ x@
ग g@
ग़ Q@
घ gh@
घ g#@
ङ N@
च c@
छ ch@
छ c#@
ज J@
ज़ z@
झ Jh@
झ J#@
ञ n^@
ट t.@
ठ th.@
ठ t.#@
ड d.@
ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@
त t@
थ th@
थ t#@
द d@
ध dh@
ध d#@
न n@
प p@
फ ph@
फ p#@
फ़ f@
ब b@
भ bh@
भ b#@
म m@
य j@
र r@
@@ -222,17 +222,17 @@ _dpt _th'o:plo_
पो $u $pause
हो $u $brk
के k'e,: $brk
दुःख d'u,,kh@
सुख s'u=kh@
दुःख d'u,,k#@
सुख s'u=k#@
जव J'Vv@
राष्ट्रिय r'a:S,t.rI:j@2 $2
सित s'it@
होइन h'oi:n@2
भएन bh'Vj'en@2
भएन b#'Vj'en@2
गएन g'Vj'en@2
खाएन khaj'en@2
खाएन k#aj'en@2
दिएन d'ij'en@2
छुन ch'un'@
छुन c#'un'@
बाट b'a:t.@
अथवा $pause
वा $pause

+ 119
- 119
dictsource/ne_rules View File

@@ -572,13 +572,13 @@
.group ख
ख khV
ख (B kh
?1 ख (_ kh
्) ख (_ kh@/
ख (्ख kh,
खँ khV~'
खॅ khV~'
ख k#V
ख (B k#
?1 ख (_ k#
्) ख (_ k#@/
ख (्ख k#,
खँ k#V~'
खॅ k#V~'
.group ग
ग gV
@@ -590,13 +590,13 @@
गॅ gV~'
.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
@@ -616,12 +616,12 @@
चॅ cV~'
.group छ
छ chV
छ (B ch
्) छ (C ch@
छ (_ ch@
छँ chV~'
छॅ chV~'
छ c#V
छ (B c#
्) छ (C c#@
छ (_ c#@
छँ c#V~'
छॅ c#V~'
.group ज
ज JV
@@ -633,12 +633,12 @@
्) ज (_ J@/
.group झ // Phoneme adjustment suggested.
झ JhV
झ (B Jh
झँ JhV~'
झॅ JhV~'
झ J#V
झ (B J#
झँ J#V~'
झॅ J#V~'
झ (्झ J,
झ (_ Jh
झ (_ J#
.group ञ // Phoneme adjustment suggested
ञ n^V
@@ -659,13 +659,13 @@
ट (्य t.:
.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 ड
ड d.V
@@ -682,14 +682,14 @@
ड़ॅ d.:V~'
.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 ण
ण n.V // Phoneme adjustment suggested
@@ -709,13 +709,13 @@
?1 त (_ t,
.group थ
थ thV
थँ thV~'
थॅ thV~'
थ (B th
्) थ (_ th@/
थ (्य th,
?1 थ (_ th
थ t#V
थँ t#V~'
थॅ t#V~'
थ (B t#
्) थ (_ t#@/
थ (्य t#,
?1 थ (_ t#
.group द
द dV
@@ -729,12 +729,12 @@
्) द (_ d@/
.group ध
ध dhV
धँ dhV~'
धॅ dhV~'
ध (B dh
?1 ध (_ dh
्) ध (_ dh@/
ध d#V
धँ d#V~'
धॅ d#V~'
ध (B d#
?1 ध (_ d#
्) ध (_ d#@/
.group न
न nV
@@ -763,13 +763,13 @@
्) प (_ p@/
.group फ
फ phV
फँ phV~'
फॅ phV~'
फ (B ph
फ (्न ph:
?1 फ (_ ph
्) फ (_ ph@/
फ p#V
फँ p#V~'
फॅ p#V~'
फ (B p#
फ (्न p#:
?1 फ (_ p#
्) फ (_ p#@/
.group ब
ब bV
@@ -781,12 +781,12 @@
्) ब (_ b@/
.group भ
भ bhV
भँ bhV~'
भॅ bhV~'
भ (B bh
?1 भ (_ bh
भ (्य bh,
भ b#V
भँ b#V~'
भॅ b#V~'
भ (B b#
?1 भ (_ b#
भ (्य b#,
्) भ (_ bh@/
.group म
@@ -1064,65 +1064,65 @@
.group [
[ 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 ]
] 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 {
{ 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 }
} 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
@@ -1132,19 +1132,19 @@
// Special Symbols with special meanings
.group
। 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!).
॰ saNks.e:p@s'u:c@k@
$ dOlV
$ dOlV
% prVtish'vt
// Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels!
़ n'u'k't'a: // Name of symbol.
॑ 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,@

+ 2
- 0
dictsource/pt_list View File

@@ -45,6 +45,7 @@ _tld tS'iU
_ar 'a*aby
_cyr si*'ilikU
_he eb*'aIkU
_zh Sin'es


// character names
@@ -828,6 +829,7 @@ galileia $alt
gameta $alt2
geleia $alt
gelo $alt $verb
genebra $alt
germe $alt
gesso $alt2
golpe $alt

+ 11
- 6
dictsource/pt_rules View File

@@ -361,10 +361,8 @@
_soub) e (L05_ E
_rend) e (L06_ e
_vend) e (L06_ e
_atend) e (L06_ e
tend) e (L06_ e / a- con- en- es-
_compreend) e (L06_ e
_entend) e (L06_ e
_estend) e (L06_ e
respond) e (L06_ e // cor-
_enraivec) e (L07_ e
_espairec) e (L07_ e
@@ -383,6 +381,8 @@ _espairec) e (L07_ e
vert) e (L07_ e // in- re- con-
_eleg) e (L07_ e
_ergu) e (L07_ e
_escond) e (L06_ e
_mord) e (L06_ e
_mord) e (L07_ e
_morr) e (L07_ e
_perd) e (L07_ e
@@ -396,9 +396,12 @@ _adormec) e (L07_ e
_agradec) e (L07_ e
_amanhec) e (L07_ e
_anoitec) e (L07_ e
_arrepend) e (L06_ e
_arrepend) e (L07_ e
_cresc) e (L07_ e
_defend) e (L06_ e
_defend) e (L07_ e
_depend) e (L06_ e
_depend) e (L07_ e
_emagrec) e (L07_ e
_enlouquec) e (L07_ e
@@ -410,17 +413,19 @@ _escond) e (L07_ e
_escurec) e (L07_ e
_esquec) e (L07_ e
_interromp) e (L07_ e
_obedec) e (L07_ e
obedec) e (L07_ e / des-
_suspend) e (L07_ e
_perec) e (L07_ e
_rejuvenec) e (L07_ e
aprend) e (L07_ e // re-
conhec) e (L07_ e // & re- des-
entend) e (L07_ e
tend) e (L07_ e / en- con- a- es-
preend) e (L07_ e // sur- com-
respond) e (L07_ e // cor-
qu) e (brL04_ E
acel) e (rL04_ E / des-
_hosp) e (dL03_ E
_amort) e (çL03_ e
_in) e (ptL03_ E
_gr) e (gL03_ e
_n) e (grL03_ e
@@ -486,7 +491,7 @@ _emagr) e (çL03
_aqu) e (çL03_ e
_car) e (çL03_ e
_mer) e (çL03_ e
_pad) e (çL03_ e // com-
pad) e (çL03_ e // com-
_per) e (çL03_ e
conh) e (çL03_ e // re-
_esqu) e (çL03_ e

+ 1
- 0
dictsource/ta_list View File

@@ -117,6 +117,7 @@ U+bf9 ru:ba:j
_ar arVbU
_cyr sirillik
_he ;ebire:jVm
_zh tS'i:nV


// abbreviations

+ 19
- 19
dictsource/te_list View File

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

@@ -114,29 +114,29 @@ U+c4d vottu

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

+ 20
- 20
dictsource/te_rules View File

@@ -24,16 +24,16 @@
క (B k

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

.group గ
గ ga
గ (B g

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

.group ఙ
ఙ Na
@@ -44,16 +44,16 @@
చ (B c

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

.group జ
జ Ja
జ (B J

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

.group ఞ
ఞ n^a
@@ -64,16 +64,16 @@
ట (B t.

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

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

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

.group ణ
ణ n.a
@@ -84,16 +84,16 @@
త (B t

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

.group ద
ద da
ద (B d

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

.group న
న na
@@ -104,16 +104,16 @@
ప (B p

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

.group బ
బ ba
బ (B b

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

.group మ
మ ma

+ 98
- 100
phsource/compile_report View File

@@ -13,6 +13,7 @@ consonants 10 118
en-wi 30 156
af 39 138
cy 29 134
ga 29 133
de 41 141
eo 13 116
jbo 2 116
@@ -21,17 +22,18 @@ consonants 10 118
et 40 135
fr 64 146
fr-ca 11 146
hi 57 150
bn 5 150
ne 18 158
ur 6 150
ta 23 154
kn 17 150
ml 22 154
nl 35 130
hi 57 149
bn 5 149
ne 18 157
ur 6 149
pa 15 151
ta 23 153
kn 17 149
ml 21 152
hu 25 124
lt 44 139
lv 29 127
nl 35 130
pl 22 122
sk 28 137
cs 7 137
@@ -66,8 +68,8 @@ consonants 10 118
hy 23 119
da 46 139
ka 20 115
fa 9 112
rw 15 132
pa 15 152
prs 8 113
sl 10 137
gd 6 109
@@ -77,15 +79,13 @@ consonants 10 118
ak 8 111
am 15 114
wo 18 120
dv 14 150
te 16 150
si 24 156
dv 14 149
te 16 149
si 24 155
tn 27 121
mt 32 129
bo 10 154
bo 10 153
kk 20 118
fa 9 112
ga 29 133
tt 23 120
ko 15 116
kl 18 119
@@ -98,7 +98,7 @@ b/b_ [b] base
[b] fr
b/b@ [b] base
b/b@2 [b] base
[bh] hi
[b#] hi
b/ba [b] base
b/be [b] base
b/bi [b] base
@@ -108,7 +108,7 @@ b/br [b] fr
b/bu [b] base
b/xb [b] base
[b] fr
[bh] hi
[b#] hi
b/xbr [b] fr
d/d [d] base
[d[] base
@@ -152,7 +152,7 @@ d/dr [*] base
[d^] et
[d] fr
[d.] hi
[dh.] hi
[d.#] hi
[d] kn
[d] hu
[d] lt
@@ -176,7 +176,7 @@ d/xd [d] base
[d] et
[d] fr
[z] fr
[dh] hi
[d#] hi
[d] kn
[d] hu
[d] lt
@@ -186,17 +186,17 @@ d/xd [d] base
[d] sq
[d] mt
[dz] bo
[dzh] bo
d/xd3 [dh] hi
[dz#] bo
d/xd3 [d#] hi
d/xd_pzd [d^] et
[d;] lt
[d;] pl
d/xdr [d] fr
[d.] hi
[dh.] hi
[d.#] hi
d/xdz [dz] consonants
[dz] bo
[dzh] bo
[dz#] bo
d/x_tap [t#] en
[*] pt
dzh/dzh [dZ] base
@@ -231,7 +231,7 @@ dzh/xdzh [dZ] base
[dZ;] ru
[dZ;] sq
dzh/xdz_pzd [J] base
[Jh] hi
[J#] hi
[J] tr
[J] ku
envelope/i_risefall [11] zh
@@ -239,10 +239,10 @@ envelope/i_risefall2 [+2] rw
envelope/p_214 [5] vi
[5] vi-hue
[214] zh
envelope/p_512 [6] vi
envelope/p_512 [+] pa
[6] vi
[4] vi-hue
[6] vi-hue
[+] pa
envelope/p_fall [2] vi
[7] vi
[2] vi-hue
@@ -273,7 +273,7 @@ envelope/vi_5amp [5] vi
envelope/vi_6amp [6] vi
[2] vi-hue
[6] vi-hue
g2/xg [gh] hi
g2/xg [g#] hi
g/g [g] base
[g-] en
[g] cy
@@ -450,7 +450,7 @@ l/l_ [l] base
[l/] fr
l/l_@ [l/3] base
[l/] fr
l/l@ [¨\7] base
l/l@ [¨\0] base
[l#] base
[l] fr
[l/2] fr
@@ -484,7 +484,7 @@ l/L2_oL [l/2] base
l/L2_uL [l/2] base
l/l_3 [l/] de
l/l_4 [ll] sq
l/la [¨\7] base
l/la [¨\0] base
[l#] base
[l] fr
[l/2] fr
@@ -492,7 +492,7 @@ l/la [
[K] tn
l/l_a [l/3] base
[l/] fr
l/le [¨\7] base
l/le [¨\0] base
[l#] base
[l] fr
[l/2] fr
@@ -504,7 +504,7 @@ l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [¨\7] base
l/li [¨\0] base
[l#] base
[l] fr
[l/2] fr
@@ -518,7 +518,7 @@ ll/ll [L] base
ll/_ll [L] base
l/l_long [l] base
[l] fr
l/lo [¨\7] base
l/lo [¨\0] base
[l#] base
[l/2] fr
[K] nso
@@ -529,7 +529,7 @@ l^/l_rfx [l.] base
[l;] lt
[l] ru
[l^] ru
l/lu [¨\7] base
l/lu [¨\0] base
[l#] base
[l] fr
[l/2] fr
@@ -870,11 +870,10 @@ ustop/k_ [k] base
[k] el
[k] sq
ustop/k_asp [kh] consonants
[gh] hi
[g#] hi
[kh] zh
[k#] ka
[kh] tn
ustop/k_asp2 [kh2] ml
ustop/k_asp_a [k#] ka
ustop/k_asp_e [k#] ka
ustop/k_asp_u [k#] ka
@@ -896,7 +895,6 @@ ustop/kl [k] base
[k] base2
[k] et
[k] fr
[kh2] ml
[k] lv
[k] el
[k] zhy
@@ -928,7 +926,7 @@ ustop/p_ [p] base
[p] fr
[ph] tn
ustop/p_asp [ph] consonants
[bh] hi
[b#] hi
[ph] zh
[ph] tn
ustop/percus02 [#X2] hi
@@ -968,8 +966,8 @@ ustop/q [q] base
ustop/q_u [q] base
ustop/t [t] base
[t] en-us
[dh.] hi
[th.] hi
[d.#] hi
[t.#] hi
[t] zhy
[t] da
ustop/t_ [t] base
@@ -985,8 +983,8 @@ ustop/t_dnt [t] base
[t] base2
[t] en-us
[t] et
[dh] hi
[th] hi
[d#] hi
[t#] hi
[t] hu
[t] lt
[t] pl
@@ -1011,14 +1009,14 @@ ustop/ts [ts] consonants
[z] zhy
[tsh] zh
[ts] tn
[tsh] bo
[dzh] bo
[ts#] bo
[dz#] bo
ustop/ts_ [ts] consonants
[dz] consonants
[ts] lv
[ts] tn
[tsh] bo
[dzh] bo
[ts#] bo
[dz#] bo
ustop/ts2 [ts] lv
[ts] hy
[ts] ka
@@ -1044,7 +1042,7 @@ ustop/tsh_pzd_unasp [tS;] zh
ustop/tsh_sr [tS] sr
ustop/tsh_unasp [tS`] am
ustop/ts_pzd [tS;] base
[Jh] hi
[J#] hi
[tS;] lt
[tS;] ru
[dZ;] sq
@@ -1085,8 +1083,8 @@ vdiph2/ei_4 [ei] zh
vdiph2/eo [eo] ro
vdiph2/e_u [e[u] ro
vdiph2/i@ [i@] en-n
[i@] hy
[i@] ga
[i@] hy
vdiph2/i@_2 [i@] en-wm
vdiph2/ie [i@] en-wi
[ie] fi
@@ -1176,6 +1174,7 @@ vdiph/ae [E:] fr-ca
vdiph/ae_2 [aI] en-n
vdiph/ai [aI] base2
[aI] en-wi
[aI] ga
[aI] eo
[aI] kn
[aI] ml
@@ -1189,7 +1188,6 @@ vdiph/ai [aI] base2
[aI] hy
[aI] da
[aI] te
[aI] ga
[aI] kl
vdiph/ai_2 [aI] en
[aI] cy
@@ -1220,18 +1218,18 @@ vdiph/au_2 [au] zhy
vdiph/au_3 [aU] en-rp
vdiph/au_4 [aU] base2
[aU] cy
[aU] ga
[aU#] ga
[aU] eo
[aU] lt
[aU] sk
[aU] id
[aU] ga
[aU#] ga
vdiph/ee-e [E:] hi
vdiph/eei [EI] base2
[eI] en
[EI] de
[eI] ne
[EI] nl
[eI] ne
[EI] vi
[eI] hy
[eI] prs
@@ -1240,8 +1238,8 @@ vdiph/eei_2 [eI] eo
[ei] lt
[ei] lv
[eI] id
[ei] mt
[eI] fa
[ei] mt
vdiph/eei_3 [eI] lt
[eI] sk
[eI] ku
@@ -1268,9 +1266,9 @@ vdiph/ei [eI] base2
vdiph/eu [eU] base2
[eU] cy
[eU] eo
[eU] nl
[eU] ne
[eU] lt
[eU] nl
[eU] sk
[eU] pt
[eU] vi
@@ -1335,9 +1333,9 @@ vdiph/ou_4 [o:] nl
vdiph/@u [u:] en-wm
[@:U] vi
vdiph/@u_2 [oU] en-rp
vdiph/@u_3 [@U] ro
vdiph/@u_3 [@U] ga
[@U] ro
[@U] vi
[@U] ga
vdiph/@u_en [oU] en
[@U] id
vdiph/ui [uI] base2
@@ -1413,8 +1411,8 @@ vnasal/o_n [o~] hi
vnasal/o_n2 [o~] af
vnasal/o_n4 [O~] fr
vnasal/oo_n2 [O~] en
[O~] hi
[O~] nl
[O~] hi
[o] zh
vnasal/oo_n3 [O~] pl
vnasal/&u_n [O#] vi
@@ -1485,7 +1483,7 @@ voc/z_ [z] base
[z;] ro
[z] sq
[dz] bo
[dzh] bo
[dz#] bo
voc/zh [Z] base
[z.] base
[R^] sk
@@ -1507,6 +1505,7 @@ vowel/@ [@] base
[@5] en
[@] en-rp
[V] cy
[@/] ga
[@] kn
[@] hy
[@] ka
@@ -1514,7 +1513,6 @@ vowel/@ [@] base
[@] wo
[@:] wo
[@] te
[@/] ga
vowel/@- [@-] base
[r*] hr
[@-] da
@@ -1529,8 +1527,8 @@ vowel/& [a] en-rp
[&] sv
[&#] da
[?&#] da
[&] az
[a] fa
[&] az
vowel/0 [0] en
[O] hi
[O] pt
@@ -1596,9 +1594,9 @@ vowel/a [a] base
[aa] en-wm
[a] cy
[a] de
[a:] nl
[a] ta
[a:] hu
[a:] nl
[a] pl
[a] sk
[a:] sk
@@ -1635,10 +1633,10 @@ vowel/a_2 [a] base2
[a] da
[?a] da
[a] rw
vowel/a#_2 [a] kn
[a] ml
[A] nl
vowel/a#_2 [A] nl
[a:] nl
[a] kn
[a] ml
[a#] pl
[&] hr
[a] sv
@@ -1670,6 +1668,7 @@ vowel/a#_3 [a#] en
[a#] en-n
[a#] en-us
[a#] en-wm
[a#] ga
[3] de
[a] hi
[a] ml
@@ -1685,10 +1684,9 @@ vowel/a#_3 [a#] en
[a] sq
[a/] sq
[3] da
[a#] ga
vowel/a_4 [a] es
vowel/a_4 [a] ga
[a] es
[a] el
[a] ga
vowel/a#_4 [a:] nl
[a] bg
[a/] it
@@ -1725,9 +1723,9 @@ vowel/aa# [O] en-us
vowel/aa_2 [A:] en
[A@] en
[A:] cy
[A:] ga
[A] zh
[A@] tn
[A:] ga
vowel/aa_3 [A:] af
[A] sq
[A] prs
@@ -1741,10 +1739,10 @@ vowel/aa_6 [A] de
[A:] de
vowel/aa_8 [0] en-us
[A:] en-us
[0] ga
[A1] et
[A] nl
[a:] is
[0] ga
[A] tt
[a] ko
vowel/aa_9 [a] fi
@@ -1761,9 +1759,9 @@ vowel/@_bck [@] hi
[V] ne
[@/] ne
[@] ur
[@] pa
[@] bg
[@] zh
[@] pa
vowel/e [e] base
[e] base2
[e:] en
@@ -1773,6 +1771,7 @@ vowel/e [e] base
[eI] en-wi
[e:] af
[e:] cy
[e:] ga
[e] ne
[e] ta
[e:] ta
@@ -1799,22 +1798,21 @@ vowel/e [e] base
[e] dv
[e:] dv
[e:] te
[e:] ga
[E] kl
vowel/e# [I] en-sc
[e] et
[E] kl
vowel/e_2 [eI] en-sc
vowel/e_2 [i] en-n
[eI] en-sc
[e:] de
[e] hi
[e:] hi
[e] pa
[e] it
[e:] sv
[e:] no
[e] pa
[e] sl
vowel/e_3 [i] en-n
[e:] hu
vowel/e_3 [e:] hu
[e] ku
vowel/e_5 [i] en-sc
vowel/e_6 [e] ht
@@ -1844,11 +1842,11 @@ vowel/ee_1 [E] base2
[e] zhy
vowel/ee_2 [E] cy
[E2] nl
[E] pa
[E] zh
[E#] ku
[&] da
[?&] da
[E] pa
[&] kk
vowel/ee#_2 [E1] et
[E-] sv
@@ -1871,6 +1869,7 @@ vowel/ee_6 [&] sk
[&] si
[&:] si
vowel/e_mid [E] en-rp
[E] ga
[E] fr
[E-] fr
[E~] fr
@@ -1902,7 +1901,6 @@ vowel/e_mid [E] en-rp
[E] sl
[E] ht
[e] si
[E] ga
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1923,6 +1921,7 @@ vowel/e_mid2 [E] af
[e] sq
[E] da
[?E] da
[e] fa
[e] nso
[e] az
[e] am
@@ -1930,7 +1929,6 @@ vowel/e_mid2 [E] af
[e:] si
[e] mt
[e] bo
[e] fa
vowel/@_fnt [@] en-wi
[@2] en-wi
[@2] hr
@@ -1946,6 +1944,7 @@ vowel/i [i] base
[i] en-wm
[i] en-wi
[i:] cy
[i:] ga
[i] eo
[i] ne
[i:] ta
@@ -1963,6 +1962,7 @@ vowel/i [i] base
[i] sw
[i] hy
[i] ka
[i] fa
[i] rw
[i#] rw
[i] prs
@@ -1973,8 +1973,6 @@ vowel/i [i] base
[i:] te
[i:] si
[i] bo
[i] fa
[i:] ga
[i] tt
[i] kl
vowel/i# [y:] cy
@@ -2037,8 +2035,8 @@ vowel/ii [I] en-n
[I] de
[I:] de
[I] fr-ca
[I] ml
[I] nl
[I] ml
[I] is
[I:] is
[i] zhy
@@ -2054,21 +2052,21 @@ vowel/ii# [I#] en-us
[I] kk
[e] tt
vowel/ii_2 [I] en
[I] ga
[i] zh
[I] da
[I] mt
[I] ga
vowel/ii#_2 [y] pl
[y] am
vowel/ii_3 [I] cy
[I] fi
[I1] et
[I] hi
[I] pa
[i] sk
[I] hr
[I] sv
[I] no
[I] pa
[i] sl
vowel/ii#_3 [I2] en-us
vowel/ii_4 [I2] en
@@ -2092,8 +2090,8 @@ vowel/ii_6 [I] en-wm
[I] sq
[i] wo
vowel/ii_7 [i] en
[i] sq
[i] ga
[i] sq
vowel/ii_8 [i] kk
vowel/ii_final [i] en-us
[i] en-rp
@@ -2109,23 +2107,25 @@ vowel/@_low [@] en-rp
[@/] ne
[@] ur
[@2] ur
[@] pa
[V] pa
[@] ml
[@] ro
[a#] no
[@] id
[@] pa
[V] pa
[@] si
vowel/@_low2 [@2] en-us
vowel/o [o] base2
[o:] en
[oU] en-n
[oU] en-wi
[o:] ga
[o:] de
[o] eo
[o:] et
[o] fr
[o] hi
[o:] pa
[o] ta
[o:] ta
[o] kn
@@ -2143,14 +2143,12 @@ vowel/o [o] base2
[o] hy
[o] rw
[o#] rw
[o:] pa
[o] ak
[o] wo
[o:] wo
[o] te
[o:] te
[o] bo
[o:] ga
[o] kl
vowel/o_2 [o:] cy
[o:] hi
@@ -2192,10 +2190,10 @@ vowel/o_mid [U@] en-rp
[o] hu
[o] bg
[o] tr
[o] fa
[o] az
[o] dv
[o:] dv
[o] fa
[o] tt
vowel/o_mid2 [O] fr
[O] ht
@@ -2256,9 +2254,9 @@ vowel/oo_4 [O] base2
[3:] en-wi
[O1] et
[O:] hi
[O] pa
[O] it
[O] an
[O] pa
vowel/oo_5 [O] pl
[O] is
[O] sq
@@ -2285,6 +2283,7 @@ vowelr/V_r [IR] en
vowel/u [u] base
[u:] en-wi
[u:] cy
[u1] ga
[u:] de
[u] eo
[u] ml
@@ -2302,7 +2301,6 @@ vowel/u [u] base
[u] ak
[u:] wo
[u] bo
[u1] ga
[u] tt
vowel/u# [u:] en-sc
[Y] tr
@@ -2344,13 +2342,15 @@ vowel/u#_7 [@] tr
[@] az
vowel/u_bck [u] base2
[U] cy
[u:] ga
[u] fi
[u] fr-ca
[u] nl
[u:] hi
[u] ne
[u] pa
[u:] hu
[u:] lt
[u] nl
[u] pl
[u:] sk
[u] hr
@@ -2372,25 +2372,23 @@ vowel/u_bck [u] base2
[u] ka
[u] rw
[u#] rw
[u] pa
[u] mt
[u:] ga
[u] ko
vowel/u_bck2 [u] et
[u] fr
[u:] fr
[u:] la
[u] es
[u] ht
[u] fa
[u] ht
[u] kl
vowel/u_bck3 [u:] et
[u] kk
vowel/uu [U] en
[U] en-n
[U] en-wm
[U] tn
[U] ga
[U] tn
vowel/uu# [U] ku
vowel/uu_2 [U] base2
[U] de
@@ -2406,13 +2404,13 @@ vowel/uu_4 [U] fi
vowel/uu_bck [U] en-wi
[U] fr-ca
[U] hi
[U] pa
[u] kn
[u:] kn
[u] hu
[U] pt
[U] no
[u] zhy
[U] pa
vowel/V [3] en-sc
[@] bg
[@] vi
@@ -2427,13 +2425,13 @@ vowel/V_2 [V] en
[V] ku
vowel/V_3 [V] en-rp
[V] hi
[V] pa
[V] ta
[a] bg
[V] pa
vowel/V_4 [V] en-sc
[O] ga
[V] da
[?V] da
[O] ga
vowel/V_6 [V] en-us
[a#] lv
vowel/y [y] base2
@@ -2443,8 +2441,8 @@ vowel/y [y] base2
[y:] et
[y] fr
[y-] fr
[y:] hu
[y] nl
[y:] hu
[y] la
[yu] zhy
[y] sq
@@ -2460,8 +2458,8 @@ vowel/y# [Y] base2
[Y] et
[Y:] et
[Y] fr
[Y:] hu
[8] nl
[Y:] hu
[Y] ro
[oe] zhy
[W] tr

+ 1
- 2
phsource/ph_english_n View File

@@ -58,8 +58,7 @@ endphoneme
phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i
length 150
IfNextVowelAppend(;)
FMT(vowel/e_3)
FMT(vowel/e_2)
endphoneme



+ 1
- 0
phsource/ph_english_us View File

@@ -97,6 +97,7 @@ phoneme I#
vowel starttype #i endtype #i
unstressed
length 160
ipa ᵻ
// FMT(vowel/@_fnt)
FMT(vowel/ii#)
endphoneme

+ 19
- 19
phsource/ph_hindi View File

@@ -294,7 +294,7 @@ phoneme p
endphoneme


phoneme ph
phoneme p#
import_phoneme consonants/ph
endphoneme

@@ -304,10 +304,10 @@ phoneme b // this is [b]
endphoneme


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

@@ -330,7 +330,7 @@ phoneme t // dental variant of /t/
endphoneme


phoneme th // dental variant of /t/
phoneme t# // dental variant of /t/
vls dnt stop
lengthmod 2
voicingswitch d
@@ -349,10 +349,10 @@ phoneme d // dental variant of /d/
endphoneme


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

@@ -379,11 +379,11 @@ phoneme t.
WAV(ustop/t_short)
endphoneme

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


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

@@ -439,7 +439,7 @@ phoneme c
endphoneme


phoneme ch
phoneme c#
CALL base/tS;
ipa ch
endphoneme
@@ -450,10 +450,10 @@ phoneme J
endphoneme


phoneme Jh
phoneme J#
vcd pal afr sibilant
lengthmod 5
voicingswitch ch
voicingswitch c#
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

@@ -477,9 +477,9 @@ phoneme k
voicingswitch g
endphoneme

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


@@ -489,10 +489,10 @@ phoneme g
endphoneme


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


+ 1
- 1
phsource/ph_malayalam View File

@@ -139,7 +139,7 @@ phoneme R
import_phoneme base/R2
endphoneme

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


+ 14
- 12
phsource/phonemes View File

@@ -1690,6 +1690,9 @@ include ph_afrikaans
phonemetable cy base
include ph_welsh

phonemetable ga base
include ph_irish

phonemetable de base
include ph_german

@@ -1714,6 +1717,9 @@ include ph_french
phonemetable fr-ca fr
include ph_french_ca

phonemetable nl base
include ph_dutch


phonemetable hi base
include ph_hindi
@@ -1727,6 +1733,9 @@ include ph_nepali
phonemetable ur hi
include ph_urdu

phonemetable pa hi
include ph_punjabi

phonemetable ta hi
include ph_tamil

@@ -1737,6 +1746,7 @@ phonemetable ml hi
include ph_malayalam



phonemetable hu base
include ph_hungarian

@@ -1747,9 +1757,6 @@ include ph_lithuanian
phonemetable lv base
include ph_latvian

phonemetable nl base
include ph_dutch

phonemetable pl base
include ph_polish

@@ -1854,6 +1861,9 @@ include ph_danish
phonemetable ka base
include ph_georgian

phonemetable fa base
include ph_farsi


//**************************************************************************************
// The following lines are experimental, for future additions.
@@ -1872,9 +1882,6 @@ include ph_kinyarwanda
//phonemetable mn base
//include ph_mongolian

phonemetable pa hi
include ph_punjabi

phonemetable prs base
include ph_dari

@@ -1924,12 +1931,6 @@ include ph_tibetan
phonemetable kk base
include ph_kazakh

phonemetable fa base
include ph_farsi

phonemetable ga base
include ph_irish

phonemetable tt base
include ph_tatar

@@ -1939,3 +1940,4 @@ include ph_korean
phonemetable kl base
include ph_greenlandic



+ 96
- 106
src/compiledict.cpp View File

@@ -67,7 +67,8 @@ MNEM_TAB mnem_rules[] = {
{"p_alt5", 0x25},
{"p_alt6", 0x26},
{"p_alt", 0x21},
{NULL, -1} };
{NULL, -1}
};

MNEM_TAB mnem_flags[] = {
// these in the first group put a value in bits0-3 of dictionary_flags
@@ -182,13 +183,13 @@ const char *LookupMnemName(MNEM_TAB *table, const int value)
//==========================================================
/* 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 */


@@ -200,27 +201,27 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)
int len;
int total = 0;

buf[0] = 0;
buf[0] = 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;
}
}
}


@@ -228,12 +229,12 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)

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;
char *p;
int ix;
int ix;
int match_type;
int finished=0;
int value;
@@ -243,18 +244,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
int condition_num=0;
int at_start = 0;
const char *name;
char buf[60];
char buf_pre[60];
char buf[60];
char buf_pre[60];
char suffix[20];
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'};

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

for(ix=0; ix<group_length; ix++)
{
@@ -263,8 +266,8 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
buf[ix] = 0;

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

if(rb <= RULE_LINENUM)
@@ -315,8 +318,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
}
c = ' ';
}
else
if(rb == RULE_ENDING)
else if(rb == RULE_ENDING)
{
static const char *flag_chars = "eipvdfq tba ";
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
@@ -325,7 +327,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
suffix_char = 'P';
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
rule += 3;
for(ix=0;ix<9;ix++)
for(ix=0; ix<9; ix++)
{
if(flags & 1)
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
@@ -335,13 +337,11 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
p += strlen(suffix);
c = ' ';
}
else
if(rb == RULE_LETTERGP)
else if(rb == RULE_LETTERGP)
{
c = symbols_lg[*rule++ - 'A'];
}
else
if(rb == RULE_LETTERGP2)
else if(rb == RULE_LETTERGP2)
{
value = *rule++ - 'A';
p[0] = 'L';
@@ -355,11 +355,9 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
}
p+=2;
}
else
if(rb <= RULE_LAST_RULE)
else if(rb <= RULE_LAST_RULE)
c = symbols[rb];
else
if(rb == RULE_SPACE)
else if(rb == RULE_SPACE)
c = '_';
else
c = rb;
@@ -393,7 +391,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
while(ix < 8)
output[ix++]=' ';
output[ix]=0;
return(output);
return(output);
} /* end of DecodeRule */


@@ -427,7 +425,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
unsigned char flag_codes[100];
char encoded_ph[200];
unsigned char bad_phoneme[4];
static char nullstring[] = {0};
static char nullstring[] = {0};

text_not_phonemes = 0;
phonetic = word = nullstring;
@@ -500,13 +498,11 @@ static char nullstring[] = {0};
{
text_mode = 1;
}
else
if(flagnum == 201)
else if(flagnum == 201)
{
text_mode = 0;
}
else
if(flagnum == BITNUM_FLAG_TEXTMODE)
else if(flagnum == BITNUM_FLAG_TEXTMODE)
{
text_not_phonemes = 1;
}
@@ -536,8 +532,7 @@ static char nullstring[] = {0};
word = p+1;
step = 1;
}
else
if(!isspace2(c))
else if(!isspace2(c))
{
word = p;
step = 1;
@@ -571,8 +566,7 @@ static char nullstring[] = {0};
step = 3;
}
}
else
if(c == ')')
else if(c == ')')
{
if(multiple_words)
{
@@ -580,8 +574,7 @@ static char nullstring[] = {0};
multiple_words = 0;
step = 3;
}
else
if(word[0] != '_')
else if(word[0] != '_')
{
fprintf(f_log, "%5d: Missing '('\n", linenum);
error_count++;
@@ -595,8 +588,7 @@ static char nullstring[] = {0};
{
multiple_words++;
}
else
if(c == ')')
else if(c == ')')
{
p[0] = ' '; // terminate extra string
multiple_string_end = p+1;
@@ -641,8 +633,8 @@ static char nullstring[] = {0};
// This is a special word, used by eSpeak. Translate this into phonemes now
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);
text_not_phonemes = 0;
strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4);
@@ -653,11 +645,11 @@ static char nullstring[] = {0};
error_need_dictionary++;
fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum);
}
{
{
//char decoded_phonemes[128];
//DecodePhonemes(word_phonemes,decoded_phonemes);
//printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes);
}
}
}
else
{
@@ -694,8 +686,7 @@ static char nullstring[] = {0};
ix = utf8_out(wc, word);
word[ix] = 0;
}
else
if(word[0] != '_')
else if(word[0] != '_')
{
// convert to lower case, and note if the word is all-capitals
int c2;
@@ -1082,8 +1073,7 @@ static void copy_rule_string(char *string, int &state)
fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum);
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);
error_count++;
@@ -1162,9 +1152,9 @@ static void copy_rule_string(char *string, int &state)
case 'a':
sxflags |= SUFX_A;
break;
case 'm':
sxflags |= SUFX_M;
break;
case 'm':
sxflags |= SUFX_M;
break;
default:
if(isdigit(c))
value = (value*10) + (c - '0');
@@ -1376,11 +1366,11 @@ int __cdecl string_sorter(char **a, char **b)
char *pa, *pb;
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);
pb += (strlen(pb)+1);
return(strcmp(pa,pb));
return(strcmp(pa,pb));
} /* end of string_sorter */


@@ -1471,12 +1461,12 @@ static void print_rule_group(FILE *f_out, int n_rules, char **rules, char *name)
if(rule_pre[0] != 0)
{
p = buf;
for(ix=strlen(rule_pre)-1;ix>=0;ix--)
for(ix=strlen(rule_pre)-1; ix>=0; ix--)
*p++ = rule_pre[ix];
sprintf(p,") ");
spaces -= strlen(buf);
for(ix=0; ix<spaces; ix++)
fputc(' ',f_out);
fputc(' ',f_out);
fprintf(f_out,"%s",buf);
spaces = 0;
}
@@ -1580,7 +1570,7 @@ static int compile_lettergroup(char *input, FILE *f_out)
int length;
int max_length = 0;

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

@@ -1797,37 +1787,37 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
break;

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);

+ 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

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2011 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -133,7 +133,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
PHONEME_LIST2 *plist2;
WORD_PH_DATA worddata;

memset(&worddata, 0, sizeof(worddata));
memset(&worddata, 0, sizeof(worddata));
plist2 = ph_list2;
phlist = phoneme_list;
end_sourceix = plist2[n_ph_list2-1].sourceix;
@@ -142,7 +142,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
max_stress = 0;
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)
max_stress = plist2[j].stresslevel & 0x7f;
if(plist2[j].sourceix != 0)
@@ -204,21 +204,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
{
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
}
}
else
if((type==phVSTOP) || type==(phVFRICATIVE))
else if((type==phVSTOP) || type==(phVFRICATIVE))
{
if((voicing==0) && (regression & 0xf))
{
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
}
@@ -331,6 +328,9 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)

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
SelectPhonemeTable(plist3->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG;
@@ -580,18 +580,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].newword = 2; // end of clause

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].sourceix = end_sourceix;
phlist[ix].synthflags = 0;
phlist[ix++].ph = phoneme_tab[phonPAUSE];
phlist[ix++].ph = phoneme_tab[phonPAUSE];

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

n_phoneme_list = ix;
} // end of MakePhonemeList

+ 18
- 9
src/readclause.cpp View File

@@ -842,14 +842,13 @@ static int LoadSoundFile2(const char *fname)


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

int punct_count;
const char *punctname;
int found = 0;
const char *punctname = NULL;
int soundicon;
int attributes;
int short_pause;
@@ -858,6 +857,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
int bufix1;
char buf[200];
char buf2[80];
char ph_buf[30];

c2 = *c2_ptr;
buf[0] = 0;
@@ -867,12 +867,24 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
// add an embedded command to play the soundicon
sprintf(buf,"\001%dI ",soundicon);
UngetC(c2);
found = 1;
}
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))
{
punct_count=1;
@@ -932,9 +944,6 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
}
}

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

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

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.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;

int option_device_number = -1;

+ 48
- 41
src/tr_languages.cpp View File

@@ -79,7 +79,7 @@ ALPHABET alphabets [] = {
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_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},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS},
@@ -94,24 +94,26 @@ ALPHABET alphabets [] = {
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 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}
};


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);
}


@@ -514,7 +516,7 @@ Translator *SelectTranslator(const char *name)
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_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;
SetIndicLetters(tr); // call this after setting OFFSET_BENGALI
SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama
@@ -601,7 +603,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->letter_bits_offset = OFFSET_THAANA;
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
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000
tr->langopts.numbers = 1;
@@ -705,7 +707,7 @@ Translator *SelectTranslator(const char *name)

// stress last syllable if it doesn't end in vowel or "s" or "n"
// '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_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels
@@ -715,18 +717,20 @@ Translator *SelectTranslator(const char *name)

if(name2 == L('c','a'))
{
// stress last syllable unless word ends with a vowel
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
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
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
{
@@ -786,7 +790,7 @@ Translator *SelectTranslator(const char *name)
SetupTranslator(tr,stress_lengths_fi,stress_amps_fi);

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.long_stop = 130;

@@ -802,7 +806,7 @@ Translator *SelectTranslator(const char *name)
{
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
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.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.accents = 2; // Say "Capital" after the letter.
@@ -812,12 +816,12 @@ Translator *SelectTranslator(const char *name)
}
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('n','e'): // Nepali
@@ -831,7 +835,7 @@ Translator *SelectTranslator(const char *name)
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_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.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -875,7 +879,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->charset_a0 = charsets[2]; // ISO-8859-2

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.max_initial_consonants = 5;
tr->langopts.spelling_stress = 1;
@@ -894,7 +898,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
case L('h','t'): // Haitian Creole
// memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths));
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;
break;

@@ -909,7 +913,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);

tr->langopts.vowel_pause = 0x20;
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.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
@@ -942,7 +946,7 @@ SetLengthMods(tr,3); // all equal
SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 6;
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;

@@ -954,7 +958,7 @@ SetLengthMods(tr,3); // all equal
SetupTranslator(tr,stress_lengths_id,stress_amps_id);
tr->langopts.stress_rule = STRESSPOSN_2R;
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
}
break;
@@ -966,7 +970,7 @@ SetLengthMods(tr,3); // all equal

SetupTranslator(tr,stress_lengths_is,NULL);
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_REDUCE] = 2;

@@ -989,7 +993,7 @@ SetLengthMods(tr,3); // all equal

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_flags = 0x10 | S_PRIORITY_STRESS;
tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS;
tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2;
@@ -1024,8 +1028,9 @@ SetLengthMods(tr,3); // all equal
{
// character codes offset by 0x1080
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);
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBits(tr,LETTERGP_A,ka_vowels);
@@ -1149,7 +1154,7 @@ SetLengthMods(tr,3); // all equal
tr->langopts.spelling_stress = 1;
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.stress_flags = 0x16 + 0x40000;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1;
}
break;

@@ -1496,14 +1501,14 @@ SetLengthMods(tr,3); // all equal
break;

case L('t','t'): // Tatar
{
{
SetCyrillicLetters(tr);
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
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;
}
break;
}
break;

case L('u','k'): // Ukrainian
{
@@ -1513,10 +1518,12 @@ SetLengthMods(tr,3); // all equal
break;

case L('u','r'): // Urdu
{
tr->letter_bits_offset = OFFSET_ARABIC;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
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
}
break;

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

@@ -275,7 +275,8 @@ extern ALPHABET *current_alphabet;
// alphabet flags
#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_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
@@ -402,12 +403,18 @@ typedef struct {
#define S_INITIAL_2 0x2000
// 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
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"

#define S_EO_CLAUSE1 0x40000
// 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
// bit20= hyphenated words, 2nd part is unstressed
@@ -416,7 +423,6 @@ typedef struct {
// bit21= don't lengthen vowels at end-of-clause

// 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;
@@ -566,7 +572,7 @@ typedef struct
const char *transpose_map;
char dictionary_name[40];

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

+ 185
- 182
src/voices.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -47,7 +47,8 @@ MNEM_TAB genders [] = {
{"unknown", 0},
{"male", 1},
{"female", 2},
{NULL, 0 }};
{NULL, 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};
@@ -98,6 +99,7 @@ enum {
V_STRESSADD,
V_DICTRULES,
V_STRESSRULE,
V_STRESSOPT,
V_CHARSET,
V_NUMBERS,
V_OPTION,
@@ -118,7 +120,8 @@ enum {
static MNEM_TAB options_tab[] = {
{"reduce_t", LOPT_REDUCE_T},
{"bracket", LOPT_BRACKET_PAUSE},
{NULL, -1} };
{NULL, -1}
};

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

#define N_VOICE_VARIANTS 12
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
@@ -260,9 +265,9 @@ void ReadTonePoints(char *string, int *tone_pts)
tone_pts[ix] = -1;

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]);
}


@@ -316,8 +321,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
while(isspace(*p)) p++;
strncpy0(vname,p,sizeof(vname));
}
else
if(memcmp(linebuf,"language",8)==0)
else if(memcmp(linebuf,"language",8)==0)
{
priority = DEFAULT_LANGUAGE_PRIORITY;
vlanguage[0] = 0;
@@ -334,13 +338,11 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
n_languages++;
}
}
else
if(memcmp(linebuf,"gender",6)==0)
else if(memcmp(linebuf,"gender",6)==0)
{
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);
}
@@ -443,7 +445,7 @@ void VoiceReset(int tone_only)
// Adjustment of harmonic amplitudes, steps of 8Hz
// value of 128 means no change
// memset(voice->tone_adjust,128,sizeof(voice->tone_adjust));
SetToneAdjust(voice,tone_points);
SetToneAdjust(voice,tone_points);

// default values of speed factors
voice->speedf1 = 256;
@@ -517,7 +519,7 @@ static int Read8Numbers(char *data_in,int *data)
// Read 8 integer numbers
memset(data, 0, 8+sizeof(int));
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]));
}


@@ -557,7 +559,7 @@ voice_t *LoadVoice(const char *vname, int control)
char buf[sizeof(path_home)+30];
char path_voices[sizeof(path_home)+12];

int dict_min = 0;
int dict_min = 0;
int stress_amps[8];
int stress_lengths[8];
int stress_add[8];
@@ -572,11 +574,11 @@ voice_t *LoadVoice(const char *vname, int control)
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

// 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));
@@ -588,38 +590,37 @@ voice_t *LoadVoice(const char *vname, int control)
}
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(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory

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);
}
}
}
}

@@ -685,48 +686,48 @@ voice_t *LoadVoice(const char *vname, int control)
switch(key)
{
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:
if(tone_only == 0)
@@ -737,14 +738,14 @@ voice_t *LoadVoice(const char *vname, int control)
break;

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:
if(tone_only) break;
@@ -752,7 +753,7 @@ voice_t *LoadVoice(const char *vname, int control)
sscanf(p,"%s",translator_name);

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

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
@@ -771,16 +772,16 @@ voice_t *LoadVoice(const char *vname, int control)
break;

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
stress_lengths_set = Read8Numbers(p,stress_lengths);
@@ -817,7 +818,8 @@ voice_t *LoadVoice(const char *vname, int control)

case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS:
// expect a list of numbers
case V_STRESSOPT:
// expect a list of numbers
while(*p != 0)
{
while(isspace(*p)) p++;
@@ -825,16 +827,22 @@ voice_t *LoadVoice(const char *vname, int control)
if((n = atoi(p)) > 0)
{
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
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++;
}
@@ -856,9 +864,9 @@ voice_t *LoadVoice(const char *vname, int control)

case V_STRESSRULE:
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;

case V_CHARSET:
@@ -909,12 +917,12 @@ voice_t *LoadVoice(const char *vname, int control)
break;

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:
if(sscanf(p,"%d",&value)==1)
@@ -922,16 +930,16 @@ voice_t *LoadVoice(const char *vname, int control)
break;

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;

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

case V_CONSONANTS:
@@ -943,20 +951,20 @@ voice_t *LoadVoice(const char *vname, int control)
break;

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:
voice->klattv[0] = 1; // default source: IMPULSIVE
@@ -969,9 +977,9 @@ voice_t *LoadVoice(const char *vname, int control)
SetSpeed(3);
break;

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

default:
if((key & 0xff00) == 0x100)
@@ -1015,7 +1023,7 @@ voice_t *LoadVoice(const char *vname, int control)
}
voice->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);
if(dictionary_name[0]==0)
return(NULL); // no dictionary loaded
@@ -1255,15 +1263,14 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
// match on voice name
score += 500;
}
else
if(strcmp(voice_spec->name,voice->identifier)==0)
else if(strcmp(voice_spec->name,voice->identifier)==0)
{
score += 400;
}
}

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)
score += 50;
@@ -1395,8 +1402,7 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2)
{
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;
}
@@ -1493,8 +1499,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
gender = 0;
if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
gender = 2;
else
if(voice_select2.gender == 1)
else if(voice_select2.gender == 1)
gender = 1;

#define AGE_OLD 60
@@ -1625,8 +1630,8 @@ static void GetVoices(const char *path)
}
#else
#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
sprintf(fname,"%s\\*",path);
@@ -1640,30 +1645,29 @@ static void GetVoices(const char *path)

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);
FindClose(hFind);
@@ -1680,8 +1684,8 @@ static void GetVoices(const char *path)
if(n_voices_list >= (N_VOICES_LIST-2))
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);

@@ -1692,8 +1696,7 @@ static void GetVoices(const char *path)
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
else if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
@@ -1728,7 +1731,7 @@ espeak_ERROR SetVoiceByName(const char *name)

variant_name = ExtractVoiceVariantName(buf, 0, 1);

for(ix=0; ;ix++)
for(ix=0; ; ix++)
{
// convert voice name to lower case (ascii)
if((buf[ix] = tolower(buf[ix])) == 0)
@@ -1833,7 +1836,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)

// sort the voices list
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)

Loading…
Cancel
Save