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-fd96e6ae7743master
@@ -97,6 +97,7 @@ x Iks | |||
_ar aR'AbIS | |||
_cyr ky:R'IlIS | |||
_he hEbr'E:IS | |||
_zh Ci:n'e:zIS | |||
// Numbers |
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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: |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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 ല |
@@ -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 |
@@ -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,@ | |||
@@ -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 |
@@ -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 |
@@ -117,6 +117,7 @@ U+bf9 ru:ba:j | |||
_ar arVbU | |||
_cyr sirillik | |||
_he ;ebire:jVm | |||
_zh tS'i:nV | |||
// abbreviations |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -97,6 +97,7 @@ phoneme I# | |||
vowel starttype #i endtype #i | |||
unstressed | |||
length 160 | |||
ipa ᵻ | |||
// FMT(vowel/@_fnt) | |||
FMT(vowel/ii#) | |||
endphoneme |
@@ -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 | |||
@@ -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 | |||
@@ -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 | |||
@@ -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); |
@@ -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 |
@@ -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); |
@@ -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; |
@@ -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 |
@@ -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; |
@@ -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) |