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
_ar aR'AbIS | _ar aR'AbIS | ||||
_cyr ky:R'IlIS | _cyr ky:R'IlIS | ||||
_he hEbr'E:IS | _he hEbr'E:IS | ||||
_zh Ci:n'e:zIS | |||||
// Numbers | // Numbers |
v w x z Z | 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: | a A a: e E e: i i: | ||||
o o: u u: Y y y: Y: | o o: u u: Y y y: Y: | ||||
z Z | z Z | ||||
Dictionary de_dict 2013-02-25 | |||||
Dictionary de_dict 2013-03-10 | |||||
3 @ @- a A A: aI aU | 3 @ @- a A A: aI aU | ||||
A~ E E2 E: e: EI i I | A~ E E2 E: e: EI i I | ||||
ts v x z | ts v x z | ||||
Dictionary en_dict 2013-03-08 | |||||
Dictionary en_dict 2013-03-10 | |||||
0 0# 3 3: @ @- @2 @5 | 0 0# 3 3: @ @- @2 @5 | ||||
@L a a# A: A@ aa aI aI3 | @L a a# A: A@ aa aI aI3 | ||||
t tS ts tS; v x z Z | 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~ | @ @- @2 a a: aI aU a~ | ||||
e E e: E: E~ i I i: | e E e: E: E~ i I i: | ||||
l- o O o: O: O~ o~ r- | l- o O o: O: O~ o~ r- | ||||
u U u: u~ V | 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 | 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 | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
d. dZ f g h H j k | d. dZ f g h H j k | ||||
l l. m n N n. n^ p | l l. m n N n. n^ p | ||||
Q r R s S s. t T | 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 | Dictionary hy_dict 2008-12-22 | ||||
ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
Dictionary pt_dict 2013-03-08 | |||||
Dictionary pt_dict 2013-03-10 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
tS tS` v w x z Z | 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 | @ a a# a: aI aU e E | ||||
e: i I i: o o: r- u | e: i I i: o o: r- u | ||||
u: V y | 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 | 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 | @ @/ @2 @3 a a: aI aU | ||||
a~ e E e: E: eI e~ E~ | a~ e E e: E: eI e~ E~ | ||||
O~ o~ u U u: u~ V VI | O~ o~ u U u: u~ V VI | ||||
VU V~ | 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 | @ a a~ e E e~ E~ i | ||||
I i~ I~ o O O~ o~ r- | I i~ I~ o O O~ o~ r- | ||||
u U U~ u~ V V~ | 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 | z | ||||
t tS v w x z | 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: | @ a a: aI aU e E e: | ||||
i I i: O o: U u: V | 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. | v w x z Z z. | ||||
x z | x z | ||||
Dictionary dv_dict 2011-01-08 | |||||
Dictionary dv_dict 2013-03-09 | |||||
@ @2 a a: aI e e: E: | @ @2 a a: aI e e: E: | ||||
E~ i I i: o O o: O: | E~ i I i: o O o: O: | ||||
O~ u U u: V | 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 | l. m n N n. n^ p Q | ||||
q r R s S s. t T | 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 | Z | ||||
Dictionary kn_dict 2011-12-05 | |||||
Dictionary kn_dict 2013-03-09 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: r- u u: | 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 | v w z | ||||
v w x X z | 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 | a a: aI aU e E e: i | ||||
i: l- o o: r- u u: V | 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 | v w z | ||||
& &: @ a a: aI aU e | & &: @ a a: aI aU e | ||||
e: i i: o o: u u: | e: i i: o o: u u: | ||||
b 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 | Dictionary et_dict 2012-06-12 | ||||
x z Z | x z Z | ||||
Dictionary bo_dict 2011-12-05 | |||||
Dictionary bo_dict 2013-03-09 | |||||
a a: e e: i i: l- o | a a: e e: i i: l- o | ||||
o: r- u u: | 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 | Dictionary kk_dict 2011-12-07 | ||||
w x | w x | ||||
Dictionary bn_dict 2013-02-28 | |||||
Dictionary bn_dict 2013-03-09 | |||||
@ a a: aI a~ e E e: | @ a a: aI a~ e E e: | ||||
E: E~ i I i: i~ o O | E: E~ i I i: i~ o O | ||||
o: O: O~ o~ r- u U u: | o: O: O~ o~ r- u U u: | ||||
u~ V | 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 | Dictionary ga_dict 2013-03-08 |
_- h,aIf@n | _- h,aIf@n | ||||
?3 _- daS | ?3 _- daS | ||||
_. d0t | _. d0t | ||||
?3_. pi@rI@d | |||||
?3_.p pi@rI@d | |||||
_: koUl@n | _: koUl@n | ||||
_; sEmIk'oUl@n | _; sEmIk'oUl@n | ||||
_< lEsDan | _< lEsDan | ||||
_ka dZ'O@dZ@n | _ka dZ'O@dZ@n | ||||
_ko k3r'i@n | _ko k3r'i@n | ||||
_eth i:TI'0pIk | _eth i:TI'0pIk | ||||
_ja dZ'ap@ni:z | |||||
_zh tS'aIni:z | |||||
// Cyrillic letters | // Cyrillic letters | ||||
а a | а a | ||||
ר ReS_ | ר ReS_ | ||||
ש Sin_ | ש Sin_ | ||||
ת tav_ | ת tav_ | ||||
ְ SvA: | |||||
ֱ E | |||||
ֲ a | |||||
ֳ o | |||||
ִ i: | |||||
ֵ E | |||||
ֶ E | |||||
ַ a | |||||
ָ a | |||||
ֹ o | |||||
ֻ u | |||||
ּ d'agES | |||||
// phonetic modifiers | // phonetic modifiers | ||||
// General American | // General American | ||||
?3 agile adZ@L | |||||
?3 docile doUs@L | |||||
?3 facile fas@L | |||||
?3 fertile f3:t@L | |||||
?3 fragile fradZ@L | |||||
?3 futile fju:t@L | |||||
?3 hostile h0st@L | |||||
?3 mobile moUb@L | |||||
agile $alt2 | |||||
docile $alt2 | |||||
ductile $alt2 | |||||
facile $alt2 | |||||
fertile $alt2 | |||||
fragile $alt2 | |||||
futile $alt2 | |||||
hostile $alt2 | |||||
mobile $alt2 | |||||
?3 missile mIs@L | ?3 missile mIs@L | ||||
?3 projectile pr@dZEkt@L | |||||
?3 puerile pjU@r@L | |||||
?3 sterile stEr@L | |||||
?3 virile vIr@L | |||||
projectile $alt2 | |||||
puerile $alt2 | |||||
senile $alt2 | |||||
sterile $alt2 | |||||
tensile $alt2 | |||||
virile $alt2 | |||||
?3 volatile v0la#t@L | ?3 volatile v0la#t@L | ||||
_) be (gg bE | _) be (gg bE | ||||
_) belarus bEl@r'u:s | _) belarus bEl@r'u:s | ||||
_) be (lC bE | _) be (lC bE | ||||
_) be (lli bI2 | |||||
_) be (llig bI2 | |||||
_) be (sC bI2 | _) be (sC bI2 | ||||
_) be (stia bE | _) be (stia bE | ||||
_) be (tB bE | _) be (tB bE | ||||
for (see f%O@ | for (see f%O@ | ||||
for (ward f'o@ // straightforward | for (ward f'o@ // straightforward | ||||
ft (en f | ft (en f | ||||
&) ful (_S3 f@L | |||||
&) ful (_S3i f@L | |||||
&) fully (_S5 f@li | &) fully (_S5 f@li | ||||
&) fulness (_S7 f@Ln@s | &) fulness (_S7 f@Ln@s | ||||
nt) il (_ @L | nt) il (_ @L | ||||
@v) il (_ @L | @v) il (_ @L | ||||
@) ila (_ 'Il@ | @) ila (_ 'Il@ | ||||
?3 &) ile (_$w_alt2 @L | |||||
_C) i (lage aI | _C) i (lage aI | ||||
_d) i (lat %aI | _d) i (lat %aI | ||||
l) il (ah_ aIl | l) il (ah_ aIl | ||||
os (al_ 'oUz | os (al_ 'oUz | ||||
_l) os (e u:z | _l) os (e u:z | ||||
ose (_ oUz | ose (_ oUz | ||||
c) ose (_ oUs | |||||
purp) ose @s | purp) ose @s | ||||
_r) os (e# oUz | _r) os (e# oUz | ||||
c) os (ec oUs | c) os (ec oUs |
_3 t'i:n | _3 t'i:n | ||||
_4 c:'a:r: | _4 c:'a:r: | ||||
_5 'pa~c | _5 'pa~c | ||||
_6 ch'@2 | |||||
_6 c#'@2 | |||||
_7 s'a:t | _7 s'a:t | ||||
_8 'a:th. | |||||
_8 'a:t.# | |||||
_9 n'O: | _9 n'O: | ||||
?3 _9 n'aU | ?3 _9 n'aU | ||||
_11 gj'a:r-ah | _11 gj'a:r-ah | ||||
_12 b'a:rah | _12 b'a:rah | ||||
_13 t'e:r@2h | _13 t'e:r@2h | ||||
_14 ch'O:d@2h | |||||
_14 c#'O:d@2h | |||||
_15 p'Vndr@2h | _15 p'Vndr@2h | ||||
_16 s'o:l@2h | _16 s'o:l@2h | ||||
_17 sVtr@2h | _17 sVtr@2h | ||||
_18 a:th:arah | |||||
_18 a:t#:arah | |||||
_19 Unn'Is | _19 Unn'Is | ||||
_20 b'i:s | _20 b'i:s | ||||
_23 t'ue:Is | _23 t'ue:Is | ||||
_24 c'O:bIs | _24 c'O:bIs | ||||
_25 p@c:'Is | _25 p@c:'Is | ||||
_26 ch@bb'i:rs | |||||
_26 c#@bb'i:rs | |||||
_27 s@t:'a:Is | _27 s@t:'a:Is | ||||
_28 ath:'a:Is | |||||
_28 at#:'a:Is | |||||
_29 ,Unt'Is | _29 ,Unt'Is | ||||
_30 t'i:s | _30 t'i:s | ||||
_33 tE~t'Is // E~ ? | _33 tE~t'Is // E~ ? | ||||
_34 cO~t'Is | _34 cO~t'Is | ||||
_35 pE~t'Is | _35 pE~t'Is | ||||
_36 chaT'tIs | |||||
_36 c#aT'tIs | |||||
_37 sE~t'Is | _37 sE~t'Is | ||||
_38 art'Is | _38 art'Is | ||||
_39 Unta:l'Is | _39 Unta:l'Is | ||||
_43 tE~ta:l'Is | _43 tE~ta:l'Is | ||||
_44 cO:wa:l'Is | _44 cO:wa:l'Is | ||||
_45 paI'nta:l'Is | _45 paI'nta:l'Is | ||||
_46 chhIja:l'Is | |||||
_46 c#hIja:l'Is | |||||
_47 sE~ta:l'Is | _47 sE~ta:l'Is | ||||
_48 arta:l'Is | _48 arta:l'Is | ||||
_49 'Un^ca:s | _49 'Un^ca:s | ||||
_52 b'a:wVn | _52 b'a:wVn | ||||
_53 t'IrpVn | _53 t'IrpVn | ||||
_54 c'Ou:wVn | _54 c'Ou:wVn | ||||
_55 p'achpVn | |||||
_56 chh@p:'Vn | |||||
_55 p'ac#pVn | |||||
_56 c#h@p:'Vn | |||||
_57 santa:'w@n | _57 santa:'w@n | ||||
_58 ath:a:'w@n | |||||
_59 Uns'Vth | |||||
_60 s'a:th. | |||||
_61 'Iks@th. | |||||
_62 b'a:s@th. | |||||
_63 t'Irs@th. | |||||
_64 cO:'s@th. | |||||
_65 paI's@th. | |||||
_66 ch'Ija:s@th. | |||||
_67 s'Vrs@th. | |||||
_68 ars@th. | |||||
_58 at#:a:'w@n | |||||
_59 Uns'Vt# | |||||
_60 s'a:t.# | |||||
_61 'Iks@t.# | |||||
_62 b'a:s@t.# | |||||
_63 t'Irs@t.# | |||||
_64 cO:'s@t.# | |||||
_65 paI's@t.# | |||||
_66 c#'Ija:s@t.# | |||||
_67 s'Vrs@t.# | |||||
_68 ars@t.# | |||||
_69 Un@h,at:'Vr: | _69 Un@h,at:'Vr: | ||||
_70 sat:'Vr: | _70 sat:'Vr: | ||||
_71 Ikhat:'Vr: | |||||
_71 Ik#at:'Vr: | |||||
_72 b@hat:'Vr: | _72 b@hat:'Vr: | ||||
_73 tIhat:'Vr: | _73 tIhat:'Vr: | ||||
_74 cO:hat:'Vr: | _74 cO:hat:'Vr: | ||||
_75 pach,at:'Vr: | |||||
_76 chIhat:'Vr: | |||||
_75 pac#,at:'Vr: | |||||
_76 c#Ihat:'Vr: | |||||
_77 s@t@hat:'Vr: | _77 s@t@hat:'Vr: | ||||
_78 athhat:'Vr: | |||||
_78 at#hat:'Vr: | |||||
_79 ,Un^Ia:s'i: | _79 ,Un^Ia:s'i: | ||||
_80 ,Vss'i: | _80 ,Vss'i: | ||||
_83 tIra:s'i | _83 tIra:s'i | ||||
_84 cO:ra:s'i | _84 cO:ra:s'i | ||||
_85 pI'ca:s'i | _85 pI'ca:s'i | ||||
_86 chIja:s'i | |||||
_86 c#Ija:s'i | |||||
_87 sVt:a:s'i | _87 sVt:a:s'i | ||||
_88 ath:a:s'i | |||||
_88 at#:a:s'i | |||||
_89 nVwa:s'i | _89 nVwa:s'i | ||||
_90 nVb:'e: | _90 nVb:'e: | ||||
_93 tIr'a:n@we: | _93 tIr'a:n@we: | ||||
_94 cO:r'a:m@we: | _94 cO:r'a:m@we: | ||||
_95 p@c'a:n@we: | _95 p@c'a:n@we: | ||||
_96 chIj'a:n@we: | |||||
_96 c#Ij'a:n@we: | |||||
_97 s@t:'a:n@we: | _97 s@t:'a:n@we: | ||||
_98 ath:'a:n@we: | |||||
_98 at#:'a:n@we: | |||||
_99 nIn^j'a:n@we: | _99 nIn^j'a:n@we: | ||||
_0C s'O: | _0C s'O: | ||||
_0M1 h@J,a:r | _0M1 h@J,a:r | ||||
_0M2 l'a:kh | |||||
_0M2 l'a:k# | |||||
_0M3 k@ro:r.V | _0M3 k@ro:r.V | ||||
_0M4 'Vr@b | _0M4 'Vr@b | ||||
_0M5 kh'Vr@b | |||||
_0M5 k#'Vr@b | |||||
_dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | ||||
// Single consonants | // Single consonants | ||||
क k@ | क k@ | ||||
क़ q@ | क़ q@ | ||||
ख kh@ | |||||
ख k#@ | |||||
ख़ x@ | ख़ x@ | ||||
ग g@ | ग g@ | ||||
ग़ Q@ | ग़ Q@ | ||||
घ gh@ | |||||
घ g#@ | |||||
ङ N@ | ङ N@ | ||||
च c@ | च c@ | ||||
छ ch@ | |||||
छ c#@ | |||||
ज J@ | ज J@ | ||||
ज़ z@ | ज़ z@ | ||||
झ Jh@ | |||||
झ J#@ | |||||
ञ n^@ | ञ n^@ | ||||
ट t.@ | ट t.@ | ||||
ठ th.@ | |||||
ठ t.#@ | |||||
ड d.@ | ड d.@ | ||||
ड़ r.@ | ड़ r.@ | ||||
ढ dh.@ | |||||
ढ d.#@ | |||||
ण n.@ // retroflex n.@ | ण n.@ // retroflex n.@ | ||||
त t@ | त t@ | ||||
थ th@ | |||||
थ t#@ | |||||
द d@ | द d@ | ||||
ध dh@ | |||||
ध d#@ | |||||
न n@ | न n@ | ||||
प p@ | प p@ | ||||
फ ph@ | |||||
फ p#@ | |||||
फ़ f@ | फ़ f@ | ||||
ब b@ | ब b@ | ||||
भ bh@ | |||||
भ b#@ | |||||
म m@ | म m@ | ||||
य j@ | य j@ | ||||
र r@ | र r@ | ||||
ॣ #X2l-: | ॣ #X2l-: | ||||
ॐ #X1o~m | ॐ #X1o~m | ||||
_?? Vks.@r | |||||
_a ej | |||||
_b bi: | |||||
_c si: | |||||
_d di: | |||||
_e i: | |||||
_f Ef | |||||
// Punctuation | // Punctuation | ||||
। dVn.d.V | । dVn.d.V |
क़ (B q | क़ (B q | ||||
.group ख | .group ख | ||||
ख khV | |||||
ख (B kh | |||||
ख k#V | |||||
ख (B k# | |||||
ख़ xV | ख़ xV | ||||
ख़ (B x | ख़ (B x | ||||
ग़ (B Q | ग़ (B Q | ||||
.group घ | .group घ | ||||
घ ghV | |||||
घ (B gh | |||||
घ g#V | |||||
घ (B g# | |||||
.group ङ | .group ङ | ||||
ङ NV | ङ NV | ||||
च (्य c: | च (्य c: | ||||
.group छ | .group छ | ||||
छ chV | |||||
छ (B ch | |||||
छ c#V | |||||
छ (B c# | |||||
.group ज | .group ज | ||||
ज JV | ज JV | ||||
ज़ (B z | ज़ (B z | ||||
.group झ | .group झ | ||||
झ JhV | |||||
झ (B Jh | |||||
झ J#V | |||||
झ (B J# | |||||
.group ञ | .group ञ | ||||
ञ n^V | ञ n^V | ||||
ट (्य t.: | ट (्य t.: | ||||
.group ठ | .group ठ | ||||
ठ th.V | |||||
ठ (B th. | |||||
ठ t.#V | |||||
ठ (B t.# | |||||
.group ड | .group ड | ||||
ड d.V | ड d.V | ||||
ड़ (B r. | ड़ (B r. | ||||
.group ढ | .group ढ | ||||
ढ dh.V | |||||
ढ (B dh. | |||||
ढ d.#V | |||||
ढ (B d.# | |||||
ढ़ r.hV // nukta (should retroflex flap) | ढ़ r.hV // nukta (should retroflex flap) | ||||
ढ़ (B r.h // nukta | ढ़ (B r.h // nukta | ||||
त (्य t: | त (्य t: | ||||
.group थ | .group थ | ||||
थ thV | |||||
थ (B th | |||||
थ t#V | |||||
थ (B t# | |||||
.group द | .group द | ||||
द dV | द dV | ||||
द (B d | द (B d | ||||
.group ध | .group ध | ||||
ध dhV | |||||
ध (B dh | |||||
ध d#V | |||||
ध (B d# | |||||
.group न | .group न | ||||
न nV | न nV | ||||
प (्य p: | प (्य p: | ||||
.group फ | .group फ | ||||
फ phV | |||||
फ (B ph | |||||
फ p#V | |||||
फ (B p# | |||||
फ़ fV | फ़ fV | ||||
फ़ (B f | फ़ (B f | ||||
ब (B b | ब (B b | ||||
.group भ | .group भ | ||||
भ bhV | |||||
भ (B bh | |||||
भ b#V | |||||
भ (B b# | |||||
.group म | .group म | ||||
म mV | म mV |
// characters | // characters | ||||
_#9 tAb | _#9 tAb | ||||
_#32 so:kYz | |||||
_#32 s'o:kYz | |||||
_cap n'AJ_| | _cap n'AJ_| | ||||
_?? kAR2AktEr||ko:d // unknown characters (change this) | _?? kAR2AktEr||ko:d // unknown characters (change this) | ||||
® bEjEJzEt: | ® bEjEJzEt: | ||||
™ ve:djEJ | ™ ve:djEJ | ||||
_` tompA | _` tompA | ||||
_ so:kYz | |||||
_ s'o:kYz | |||||
_« bElSY:|bAl|ide:zY:jEl | _« bElSY:|bAl|ide:zY:jEl | ||||
_» bElSY:|jobb|ide:zY:jEl | _» bElSY:|jobb|ide:zY:jEl | ||||
_ la:JkYtY:jEl | _ la:JkYtY:jEl | ||||
// Alphabets | // Alphabets | ||||
_ar 'AR2Ab | _ar 'AR2Ab | ||||
_cry ts'iR2ill | |||||
_cyr ts'iR2ill | |||||
_he h'e:bER2 | _he h'e:bER2 | ||||
_zh k'i:nAi | |||||
// Main Exceptions List | // Main Exceptions List |
szaba) d (szem d | szaba) d (szem d | ||||
_tren) dsz (e d|s | _tren) dsz (e d|s | ||||
vakon) d (sz d | vakon) d (sz d | ||||
vé) d (jeggy d | |||||
.group dz | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
_elle) n (jav n | _elle) n (jav n | ||||
vagyo) n (jog n | vagyo) n (jog n | ||||
nny (elv n|n^ | nny (elv n|n^ | ||||
haszo) n (jár n | |||||
boszorká) ny (jelet n^ | |||||
.group o | .group o | ||||
o o | o o | ||||
ki) s (szőlő S | ki) s (szőlő S | ||||
körö) s (szeg S | körö) s (szeg S | ||||
kolbászo) s S | kolbászo) s S | ||||
feldolgozá) s S | |||||
.group ss | .group ss | ||||
ssz ss2 | ssz ss2 | ||||
pénze) sz (k s | pénze) sz (k s | ||||
ellenállá) sz (ón Sz | ellenállá) sz (ón Sz | ||||
ré) sz (árás Sz | ré) sz (árás Sz | ||||
_te) szts (or st|S | |||||
.group t | .group t | ||||
t t | t t | ||||
zené) tj (átsz tj | zené) tj (átsz tj | ||||
szen) tj (akab tj | szen) tj (akab tj | ||||
közérze) tj (aví tj | közérze) tj (aví tj | ||||
ké) tj (átszm tj | |||||
.group ts | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
leme) tsz (vén ts | leme) tsz (vén ts | ||||
_cha) tsz (ob t|s | _cha) tsz (ob t|s | ||||
robo) ts (of t|S | robo) ts (of t|S | ||||
merényle) ts (or t|S | |||||
.group tt | .group tt | ||||
tt t: | tt t: |
// letter names | // letter names | ||||
ಕ್ ik | ಕ್ ik | ||||
ಖ್ ikh | |||||
ಖ್ ik# | |||||
ಗ್ ig | ಗ್ ig | ||||
ಘ್ igh | |||||
ಘ್ ig# | |||||
ಙ್ iN | ಙ್ iN | ||||
ಚ್ ic | ಚ್ ic | ||||
ಛ್ ich | |||||
ಛ್ ic# | |||||
ಜ್ iJ | ಜ್ iJ | ||||
ಝ್ iJh | |||||
ಝ್ iJ# | |||||
ಞ್ in^ | ಞ್ in^ | ||||
ಟ್ it. | ಟ್ it. | ||||
ಠ್ ith. | |||||
ಠ್ it.# | |||||
ಡ್ id. | ಡ್ id. | ||||
ಢ್ idh. | |||||
ಢ್ id.# | |||||
ಣ್ in. | ಣ್ in. | ||||
ತ್ it | ತ್ it | ||||
ಥ್ ith | |||||
ಥ್ it# | |||||
ದ್ id | ದ್ id | ||||
ಧ್ id. | |||||
ಧ್ id# | |||||
ನ್ in | ನ್ in | ||||
ಪ್ ip | ಪ್ ip | ||||
ಫ್ iph | |||||
ಫ್ ip# | |||||
ಬ್ ib | ಬ್ ib | ||||
ಭ್ ibh | |||||
ಭ್ ib# | |||||
ಮ್ im | ಮ್ im | ||||
ಯ್ ij | ಯ್ ij | ||||
ರ್ ir | ರ್ ir | ||||
// symbols | // symbols | ||||
% pratis.ata | % pratis.ata | ||||
! a:scharjachinhe | |||||
! a:sc#arjac#inhe | |||||
_? aks.ara | _? aks.ara | ||||
. pu:rn.avira:ma | . pu:rn.avira:ma | ||||
, alpavira:ma | , alpavira:ma | ||||
¼ ka:lu | ¼ ka:lu | ||||
½ ardha | |||||
½ ard#a | |||||
¾ mukka:lu | ¾ mukka:lu | ||||
(1 / 2) ardha | |||||
(1 / 2) ard#a | |||||
(1 / 4) ka:lu | (1 / 4) ka:lu | ||||
(3 / 4) mukka:lu | (3 / 4) mukka:lu | ||||
÷ bha:ga:ka:ra | |||||
÷ b#a:ga:ka:ra | |||||
& mattu | & mattu | ||||
_6 'a:ru | _6 'a:ru | ||||
_7 'e:l.u | _7 'e:l.u | ||||
_8 'ent.u | _8 'ent.u | ||||
_9 'ombath:u | |||||
_1X h'ath:u | |||||
_9 'ombat#:u | |||||
_1X h'at#:u | |||||
_11 hann'ondu | _11 hann'ondu | ||||
_12 han:erad.u | _12 han:erad.u | ||||
_13 hadim'u:ru | _13 hadim'u:ru | ||||
_16 hadina:ru | _16 hadina:ru | ||||
_17 hadin'e:l.u | _17 hadin'e:l.u | ||||
_18 hadin'ent.u | _18 hadin'ent.u | ||||
_19 ha'th:'ombath:u | |||||
_19 ha't#:'ombat#:u | |||||
_2X Ip:ath:u | |||||
_21 'Ip:a'th:ondu | |||||
_22 Ip:a'th:erad.u | |||||
_23 Ip:a'th:m'u:ru | |||||
_24 Ip:a'th:n'a:lku | |||||
_25 Ip:a'th:'aIdu | |||||
_26 Ip:a'th:a:ru | |||||
_27 Ip:a'th:e:l.u | |||||
_28 Ip:a'th:ent.u | |||||
_29 Ip:a'th:ombath:u | |||||
_2X Ip:at#:u | |||||
_21 'Ip:a't#:ondu | |||||
_22 Ip:a't#:erad.u | |||||
_23 Ip:a't#:m'u:ru | |||||
_24 Ip:a't#:n'a:lku | |||||
_25 Ip:a't#:'aIdu | |||||
_26 Ip:a't#:a:ru | |||||
_27 Ip:a't#:e:l.u | |||||
_28 Ip:a't#:ent.u | |||||
_29 Ip:a't#:ombat#:u | |||||
_3X m'ovath:u | |||||
_31 m'ovath:ondu | |||||
_32 m'ovatherad.u | |||||
_33 m'ovathm'u:ru | |||||
_34 m'ovathn'a:lku | |||||
_35 m'ovath'aIdu | |||||
_36 m'ovatha:ru | |||||
_37 m'ovathe:l.u | |||||
_38 m'ovathent.u | |||||
_39 m'ovathombath:u | |||||
_3X m'ovat#:u | |||||
_31 m'ovat#:ondu | |||||
_32 m'ovat#erad.u | |||||
_33 m'ovat#m'u:ru | |||||
_34 m'ovat#n'a:lku | |||||
_35 m'ovat#'aIdu | |||||
_36 m'ovat#a:ru | |||||
_37 m'ovat#e:l.u | |||||
_38 m'ovat#ent.u | |||||
_39 m'ovat#ombat#:u | |||||
_4X n'alavath:u | |||||
_41 n'alavath:ondu | |||||
_42 n'alavatherad.u | |||||
_43 n'alavathm'u:ru | |||||
_44 n'alavathn'a:lku | |||||
_45 n'alavathaIdu | |||||
_46 n'alavatha:ru | |||||
_47 n'alavathe:l.u | |||||
_48 n'alavathent.u | |||||
_49 n'alavathombath:u | |||||
_4X n'alavat#:u | |||||
_41 n'alavat#:ondu | |||||
_42 n'alavat#erad.u | |||||
_43 n'alavat#m'u:ru | |||||
_44 n'alavat#n'a:lku | |||||
_45 n'alavat#aIdu | |||||
_46 n'alavat#a:ru | |||||
_47 n'alavat#e:l.u | |||||
_48 n'alavat#ent.u | |||||
_49 n'alavat#ombat#:u | |||||
_5X 'aIvath:u | |||||
_51 aIvath:ondu | |||||
_52 aIvatherad.u | |||||
_53 aIvathm'u:ru | |||||
_54 aIvathn'a:lku | |||||
_55 aIvath'aIdu | |||||
_56 aIvatha:ru | |||||
_57 aIvathe:l.u | |||||
_58 aIvathent.u | |||||
_59 aIvathombath:u | |||||
_6X 'aravath:u | |||||
_61 aravath:ondu | |||||
_62 aravatherad.u | |||||
_63 aravathm'u:ru | |||||
_64 aravathn'a:lku | |||||
_65 aravathaIdu | |||||
_66 aravatha:ru | |||||
_67 aravathe:l.u | |||||
_68 aravathent.u | |||||
_69 aravathombath:u | |||||
_5X 'aIvat#:u | |||||
_51 aIvat#:ondu | |||||
_52 aIvat#erad.u | |||||
_53 aIvat#m'u:ru | |||||
_54 aIvat#n'a:lku | |||||
_55 aIvat#'aIdu | |||||
_56 aIvat#a:ru | |||||
_57 aIvat#e:l.u | |||||
_58 aIvat#ent.u | |||||
_59 aIvat#ombat#:u | |||||
_6X 'aravat#:u | |||||
_61 aravat#:ondu | |||||
_62 aravat#erad.u | |||||
_63 aravat#m'u:ru | |||||
_64 aravat#n'a:lku | |||||
_65 aravat#aIdu | |||||
_66 aravat#a:ru | |||||
_67 aravat#e:l.u | |||||
_68 aravat#ent.u | |||||
_69 aravat#ombat#:u | |||||
_7X 'Ep:ath:u | |||||
_71 Ep:ath:ondu | |||||
_72 Ep:atherad.u | |||||
_73 Ep:athm'u:ru | |||||
_74 Ep:athn'a:lku | |||||
_75 Ep:athaIdu | |||||
_76 Ep:atha:ru | |||||
_77 Ep:athe:l.u | |||||
_78 Ep:athent.u | |||||
_79 Ep:athombath:u | |||||
_8X 'Embath:u | |||||
_81 Embath:ondu | |||||
_82 Embatherad.u | |||||
_83 Embathm'u:ru | |||||
_84 Embathn'a:lku | |||||
_85 EmbathaIdu | |||||
_86 Embatha:ru | |||||
_87 Embathe:l.u | |||||
_88 Embathent.u | |||||
_89 Embathombath:u | |||||
_7X 'Ep:at#:u | |||||
_71 Ep:at#:ondu | |||||
_72 Ep:at#erad.u | |||||
_73 Ep:at#m'u:ru | |||||
_74 Ep:at#n'a:lku | |||||
_75 Ep:at#aIdu | |||||
_76 Ep:at#a:ru | |||||
_77 Ep:at#e:l.u | |||||
_78 Ep:at#ent.u | |||||
_79 Ep:at#ombat#:u | |||||
_8X 'Embat#:u | |||||
_81 Embat#:ondu | |||||
_82 Embat#erad.u | |||||
_83 Embat#m'u:ru | |||||
_84 Embat#n'a:lku | |||||
_85 Embat#aIdu | |||||
_86 Embat#a:ru | |||||
_87 Embat#e:l.u | |||||
_88 Embat#ent.u | |||||
_89 Embat#ombat#:u | |||||
_9X th'ombath:u | |||||
_91 th'ombath:ondu | |||||
_92 th'ombath:erad.u | |||||
_93 th'ombathm'u:ru | |||||
_94 th'ombathn'a:lku | |||||
_95 th'ombathaIdu | |||||
_96 th'ombatha:ru | |||||
_97 th'ombathe:l.u | |||||
_98 th'ombathent.u | |||||
_99 th'ombathombath:u | |||||
_9X t#'ombat#:u | |||||
_91 t#'ombat#:ondu | |||||
_92 t#'ombat#:erad.u | |||||
_93 t#'ombat#m'u:ru | |||||
_94 t#'ombat#n'a:lku | |||||
_95 t#'ombat#aIdu | |||||
_96 t#'ombat#a:ru | |||||
_97 t#'ombat#e:l.u | |||||
_98 t#'ombat#ent.u | |||||
_99 t#'ombat#ombat#:u | |||||
_0C0 n'u:ru | _0C0 n'u:ru | ||||
_1C0 nu:ru | _1C0 nu:ru |
ಕ (B k | ಕ (B k | ||||
.group ಖ | .group ಖ | ||||
ಖ kha | |||||
ಖ (B kh | |||||
ಖ k#a | |||||
ಖ (B k# | |||||
.group ಗ | .group ಗ | ||||
ಗ ga | ಗ ga | ||||
ಗ (B g | ಗ (B g | ||||
.group ಘ | .group ಘ | ||||
ಘ gha | |||||
ಘ (B gh | |||||
ಘ g#a | |||||
ಘ (B g# | |||||
.group ಙ | .group ಙ | ||||
ಙ Na | ಙ Na | ||||
ಚ (B c | ಚ (B c | ||||
.group ಛ | .group ಛ | ||||
ಛ cha | |||||
ಛ (B ch | |||||
ಛ c#a | |||||
ಛ (B c# | |||||
.group ಜ | .group ಜ | ||||
ಜ Ja | ಜ Ja | ||||
ಜ಼ (B z | ಜ಼ (B z | ||||
.group ಝ | .group ಝ | ||||
ಝ Jha | |||||
ಝ (B Jh | |||||
ಝ J#a | |||||
ಝ (B J# | |||||
.group ಞ | .group ಞ | ||||
ಞ n^a | ಞ n^a | ||||
ಟ (B t. | ಟ (B t. | ||||
.group ಠ | .group ಠ | ||||
ಠ th.a | |||||
ಠ (B th. | |||||
ಠ t.#a | |||||
ಠ (B t.# | |||||
.group ಡ | .group ಡ | ||||
ಡ d.a | ಡ d.a | ||||
ಡ (B d. | ಡ (B d. | ||||
.group ಢ | .group ಢ | ||||
ಢ dh.a | |||||
ಢ (B dh. | |||||
ಢ d.#a | |||||
ಢ (B d.# | |||||
.group ಣ | .group ಣ | ||||
ಣ n.a | ಣ n.a | ||||
ತ (B t | ತ (B t | ||||
.group ಥ | .group ಥ | ||||
ಥ tha | |||||
ಥ (B th | |||||
ಥ t#a | |||||
ಥ (B t# | |||||
.group ದ | .group ದ | ||||
ದ da | ದ da | ||||
ದ (B d | ದ (B d | ||||
.group ಧ | .group ಧ | ||||
ಧ dha | |||||
ಧ (B dh | |||||
ಧ d#a | |||||
ಧ (B d# | |||||
.group ನ | .group ನ | ||||
ನ na | ನ na | ||||
ಪ (B p | ಪ (B p | ||||
.group ಫ | .group ಫ | ||||
ಫ pha | |||||
ಫ (B ph | |||||
ಫ p#a | |||||
ಫ (B p# | |||||
ಫ಼ fa // nukta | ಫ಼ fa // nukta | ||||
ಫ಼ (B f | ಫ಼ (B f | ||||
ಬ (B b | ಬ (B b | ||||
.group ಭ | .group ಭ | ||||
ಭ bha | |||||
ಭ (B bh | |||||
ಭ b#a | |||||
ಭ (B b# | |||||
.group ಮ | .group ಮ | ||||
ಮ ma | ಮ ma |
U+d02 'a#m | U+d02 'a#m | ||||
U+d03 visarg@m | U+d03 visarg@m | ||||
U+d3d avagraha | U+d3d avagraha | ||||
U+d4d chandraka:r@m | |||||
U+d4e chil.acharam // ?? | |||||
U+d4d c#andraka:r@m | |||||
U+d4e c#il.ac#aram // ?? | |||||
ൺ _'yn. // chillu consonants | ൺ _'yn. // chillu consonants | ||||
ൻ _in | ൻ _in | ||||
& samuccaj@m | & samuccaj@m | ||||
_. bindu | _. bindu | ||||
_, aNkuS;@m | _, aNkuS;@m | ||||
_; ro:dhini | |||||
_; ro:d#ini | |||||
_? co:dj@cihn@m | _? co:dj@cihn@m | ||||
_! a:S;c@rjacihn@m | _! a:S;c@rjacihn@m | ||||
ക്ക (B k: | ക്ക (B k: | ||||
.group ഖ | .group ഖ | ||||
ഖ kha | |||||
ഖ (B kh | |||||
ഖ k#a | |||||
ഖ (B k# | |||||
.group ഗ | .group ഗ | ||||
ഗ ga | ഗ ga | ||||
ഗ (B g | ഗ (B g | ||||
.group ഘ | .group ഘ | ||||
ഘ gha | |||||
ഘ (B gh | |||||
ഘ g#a | |||||
ഘ (B g# | |||||
.group ങ | .group ങ | ||||
ങ Na | ങ Na | ||||
ച (B c | ച (B c | ||||
.group ഛ | .group ഛ | ||||
ഛ cha | |||||
ഛ (B ch | |||||
ഛ c#a | |||||
ഛ (B c# | |||||
.group ജ | .group ജ | ||||
ജ Ja | ജ Ja | ||||
ജ (B J | ജ (B J | ||||
.group ഝ | .group ഝ | ||||
ഝ Jha | |||||
ഝ (B Jh | |||||
ഝ J#a | |||||
ഝ (B J# | |||||
.group ഞ | .group ഞ | ||||
ഞ n^a | ഞ n^a | ||||
ട്ട (B t.: | ട്ട (B t.: | ||||
.group ഠ | .group ഠ | ||||
ഠ th.a | |||||
ഠ (B th. | |||||
ഠ t.#a | |||||
ഠ (B t.# | |||||
.group ഡ | .group ഡ | ||||
ഡ d.a | ഡ d.a | ||||
ഡ (B d. | ഡ (B d. | ||||
.group ഢ | .group ഢ | ||||
ഢ dh.a | |||||
ഢ (B dh. | |||||
ഢ d.#a | |||||
ഢ (B d.# | |||||
.group ണ | .group ണ | ||||
ണ n.a | ണ n.a | ||||
ത്ത (B t: | ത്ത (B t: | ||||
.group ഥ | .group ഥ | ||||
ഥ tha | |||||
ഥ (B th | |||||
ഥ t#a | |||||
ഥ (B t# | |||||
.group ദ | .group ദ | ||||
ദ da | ദ da | ||||
ദ (B d | ദ (B d | ||||
.group ധ | .group ധ | ||||
ധ dha | |||||
ധ (B dh | |||||
ധ d#a | |||||
ധ (B d# | |||||
.group ന | .group ന | ||||
ന na | ന na | ||||
പ്പ (B p: | പ്പ (B p: | ||||
.group ഫ | .group ഫ | ||||
ഫ pha | |||||
ഫ (B p | |||||
ഫ p#a | |||||
ഫ (B p# | |||||
_പ്രൊ) ഫ (സര് fa | _പ്രൊ) ഫ (സര് fa | ||||
ബ (B b | ബ (B b | ||||
.group ഭ | .group ഭ | ||||
ഭ bha | |||||
ഭ (B bh | |||||
ഭ b#a | |||||
ഭ (B b# | |||||
.group മ | .group മ | ||||
മ ma | മ ma | ||||
.group റ | .group റ | ||||
റ R2a | റ R2a | ||||
റ (B R2 | റ (B R2 | ||||
ന്) റ d# | |||||
ന്) റ d2 | |||||
റ്റ t.t. // ?? R2R2 = t.t. | റ്റ t.t. // ?? R2R2 = t.t. | ||||
.group ല | .group ല |
_3 t'i:n | _3 t'i:n | ||||
_4 c'a:r: | _4 c'a:r: | ||||
_5 p'a:nc | _5 p'a:nc | ||||
_6 ch'@2 | |||||
_6 c#'@2 | |||||
_7 s'a:t | _7 s'a:t | ||||
_8 'a:th. | |||||
_8 'a:t.# | |||||
_9 n'V'u: | _9 n'V'u: | ||||
_10 d'Vs | _10 d'Vs | ||||
_11 e:'gh'a:r'V | |||||
_11 e:'g#'a:r'V | |||||
_12 b'a:r@2 | _12 b'a:r@2 | ||||
_13 t'e:hr@ | _13 t'e:hr@ | ||||
_14 ch'O:d@2 | |||||
_14 c#'O:d@2 | |||||
_15 p'Vndr@2 | _15 p'Vndr@2 | ||||
_16 s'o:r@2 | _16 s'o:r@2 | ||||
_17 s'Vtr@2 | _17 s'Vtr@2 | ||||
_18 a'th.'a:r@2 | |||||
_18 a't.#'a:r@2 | |||||
_19 U:nn'a:i's | _19 U:nn'a:i's | ||||
_20 b'i:s | _20 b'i:s | ||||
_23 t'e:Is | _23 t'e:Is | ||||
_24 c'O:b'Is | _24 c'O:b'Is | ||||
_25 p@c:'Is | _25 p@c:'Is | ||||
_26 ch@b'b'i:s | |||||
_26 c#@b'b'i:s | |||||
_27 s@t:'a:Is | _27 s@t:'a:Is | ||||
_28 ath:'a:Is | |||||
_28 at#:'a:Is | |||||
_29 U:n'Vnt'Is | _29 U:n'Vnt'Is | ||||
_30 t'i:s | _30 t'i:s | ||||
_33 t'e:t't'i:s | _33 t'e:t't'i:s | ||||
_34 cO~,t'I:s | _34 cO~,t'I:s | ||||
_35 pE~t'Is | _35 pE~t'Is | ||||
_36 ch@:t't'I:s | |||||
_36 c#@:t't'I:s | |||||
_37 sE~t'Is | _37 sE~t'Is | ||||
_38 art'Is | _38 art'Is | ||||
_39 U:n'an'c'a:l'i:s | _39 U:n'an'c'a:l'i:s | ||||
_43 t'ri:c'a:l'i:s | _43 t'ri:c'a:l'i:s | ||||
_44 cO:wa:l'Is | _44 cO:wa:l'Is | ||||
_45 paI'nta:l'Is | _45 paI'nta:l'Is | ||||
_46 chhIja:l'Is | |||||
_46 c#hIja:l'Is | |||||
_47 s@'d.cta:l'Is | _47 s@'d.cta:l'Is | ||||
_48 a'th.'c'a:l'Is | |||||
_48 a't.#'c'a:l'Is | |||||
_49 U'n'an'c'a:s | _49 U'n'an'c'a:s | ||||
: | : | ||||
_50 p@c'a:s | _50 p@c'a:s | ||||
_53 t'rI:p'an'nV | _53 t'rI:p'an'nV | ||||
_54 c'Ou:wVn'nV | _54 c'Ou:wVn'nV | ||||
_55 p'ac'pVn'nV | _55 p'ac'pVn'nV | ||||
_56 chh@p:'Vn'nV | |||||
_56 c#h@p:'Vn'nV | |||||
_57 s'Vn't:'a:w@n'n':V | _57 s'Vn't:'a:w@n'n':V | ||||
_58 a'nth:'a:w@n'n':V | |||||
_59 U'n'Vn's'a:th.i: | |||||
_60 s'a:th.i: | |||||
_61 e:k'as@th.'th.i: | |||||
_62 b'E:s@th.':th.'i: | |||||
_63 t'r'i:,s@th.'th.'i: | |||||
_64 c'O:s@th.'th.'i: | |||||
_65 p'E~'s@th.'th.'i: | |||||
_66 ch'E's@th.'th.'i: | |||||
_67 s'Vt's@th.'th.'i: | |||||
_68 a'th.,s@th.'th.'i: | |||||
_58 a'nt#:'a:w@n'n':V | |||||
_59 U'n'Vn's'a:t.#i: | |||||
_60 s'a:t.#i: | |||||
_61 e:k'as@t.#'t.#i: | |||||
_62 b'E:s@t.#':t.#'i: | |||||
_63 t'r'i:,s@t.#'t.#'i: | |||||
_64 c'O:s@t.#'t.#'i: | |||||
_65 p'E~'s@t.#'t.#'i: | |||||
_66 c#'E's@t.#'t.#'i: | |||||
_67 s'Vt's@t.#'t.#'i: | |||||
_68 a't.#,s@t.#'t.#'i: | |||||
_69 U:n'an's'Vtt'ar'i: | _69 U:n'an's'Vtt'ar'i: | ||||
_70 s'at't@r'i:: | _70 s'at't@r'i:: | ||||
_72 b@h'att'Vr: | _72 b@h'att'Vr: | ||||
_73 tIjatt:'Vr: | _73 tIjatt:'Vr: | ||||
_74 cO:hat:'Vr: | _74 cO:hat:'Vr: | ||||
_75 pach,at:'Vr: | |||||
_76 ch@'j'ah'at't'Vr: | |||||
_75 pac#,at:'Vr: | |||||
_76 c#@'j'ah'at't'Vr: | |||||
_77 s@t@hatt:'Vr: | _77 s@t@hatt:'Vr: | ||||
_78 athhatt:'Vr: | |||||
_78 at#hatt:'Vr: | |||||
_79 U'n'a:s'i: | _79 U'n'a:s'i: | ||||
_80 a's's'i: | _80 a's's'i: | ||||
_83 trIj'a:s'i: | _83 trIj'a:s'i: | ||||
_84 cO:ra:s'i: | _84 cO:ra:s'i: | ||||
_85 p'ac'a:s'i: | _85 p'ac'a:s'i: | ||||
_86 ch@j'a:s'i: | |||||
_86 c#@j'a:s'i: | |||||
_87 s'V:t'a:s'i: | _87 s'V:t'a:s'i: | ||||
_88 a'th.:a:s'i: | |||||
_88 a't.#:a:s'i: | |||||
_89 u:n'a:n'ab'b'e: | _89 u:n'a:n'ab'b'e: | ||||
_90 n@b'b'e: | _90 n@b'b'e: | ||||
_93 trIj'a:n@b'b'e: | _93 trIj'a:n@b'b'e: | ||||
_94 cO:r'a:n@b'b'e: | _94 cO:r'a:n@b'b'e: | ||||
_95 p@n'c'a:n@b'b'e: | _95 p@n'c'a:n@b'b'e: | ||||
_96 ch@j'a:n@b'b'e: | |||||
_96 c#@j'a:n@b'b'e: | |||||
_97 s@n't:'a:n@b'b'e: | _97 s@n't:'a:n@b'b'e: | ||||
_98 a'n'th.'a:n@b'b'e: | |||||
_98 a'n't.#'a:n@b'b'e: | |||||
_99 U:n'n'a:nsh@je: | _99 U:n'n'a:nsh@je: | ||||
_0C s'aj@ | _0C s'aj@ | ||||
_0M1 h@z'a:r@ | _0M1 h@z'a:r@ | ||||
_0M2 l'a:kh@ | |||||
_0M2 l'a:k#@ | |||||
_0M3 k'a'ro:d.@ | _0M3 k'a'ro:d.@ | ||||
_0M4 'Vr@b | _0M4 'Vr@b | ||||
_0M5 kh'Vr@b'V | |||||
_0M5 k#'Vr@b'V | |||||
_0M6 n'i:l' | _0M6 n'i:l' | ||||
_0M7 p'Vd'm@ | _0M7 p'Vd'm@ | ||||
_0M8 sh'an,kh@ | |||||
_0M9 m'ah'a:,sh'ankh@ | |||||
_0M10 p@r'a:rrd:dh@ | |||||
_0M8 sh'an,k#@ | |||||
_0M9 m'ah'a:,sh'ank#@ | |||||
_0M10 p@r'a:rrd:d#@ | |||||
_dpt _th'o:plo_ | |||||
_dpt _t#'o:plo_ | |||||
// Symbols in Nepali | // Symbols in Nepali | ||||
// Single consonants | // Single consonants | ||||
क k@ | क k@ | ||||
क़ q@ | क़ q@ | ||||
ख kh@ | |||||
ख k#@ | |||||
ख़ x@ | ख़ x@ | ||||
ग g@ | ग g@ | ||||
ग़ Q@ | ग़ Q@ | ||||
घ gh@ | |||||
घ g#@ | |||||
ङ N@ | ङ N@ | ||||
च c@ | च c@ | ||||
छ ch@ | |||||
छ c#@ | |||||
ज J@ | ज J@ | ||||
ज़ z@ | ज़ z@ | ||||
झ Jh@ | |||||
झ J#@ | |||||
ञ n^@ | ञ n^@ | ||||
ट t.@ | ट t.@ | ||||
ठ th.@ | |||||
ठ t.#@ | |||||
ड d.@ | ड d.@ | ||||
ड़ r.@ | ड़ r.@ | ||||
ढ dh.@ | |||||
ढ d.#@ | |||||
ण n.@ // retroflex n.@ | ण n.@ // retroflex n.@ | ||||
त t@ | त t@ | ||||
थ th@ | |||||
थ t#@ | |||||
द d@ | द d@ | ||||
ध dh@ | |||||
ध d#@ | |||||
न n@ | न n@ | ||||
प p@ | प p@ | ||||
फ ph@ | |||||
फ p#@ | |||||
फ़ f@ | फ़ f@ | ||||
ब b@ | ब b@ | ||||
भ bh@ | |||||
भ b#@ | |||||
म m@ | म m@ | ||||
य j@ | य j@ | ||||
र r@ | र r@ | ||||
पो $u $pause | पो $u $pause | ||||
हो $u $brk | हो $u $brk | ||||
के k'e,: $brk | के k'e,: $brk | ||||
दुःख d'u,,kh@ | |||||
सुख s'u=kh@ | |||||
दुःख d'u,,k#@ | |||||
सुख s'u=k#@ | |||||
जव J'Vv@ | जव J'Vv@ | ||||
राष्ट्रिय r'a:S,t.rI:j@2 $2 | राष्ट्रिय r'a:S,t.rI:j@2 $2 | ||||
सित s'it@ | सित s'it@ | ||||
होइन h'oi:n@2 | होइन h'oi:n@2 | ||||
भएन bh'Vj'en@2 | |||||
भएन b#'Vj'en@2 | |||||
गएन g'Vj'en@2 | गएन g'Vj'en@2 | ||||
खाएन khaj'en@2 | |||||
खाएन k#aj'en@2 | |||||
दिएन d'ij'en@2 | दिएन d'ij'en@2 | ||||
छुन ch'un'@ | |||||
छुन c#'un'@ | |||||
बाट b'a:t.@ | बाट b'a:t.@ | ||||
अथवा $pause | अथवा $pause | ||||
वा $pause | वा $pause |
.group ख | .group ख | ||||
ख khV | |||||
ख (B kh | |||||
?1 ख (_ kh | |||||
्) ख (_ kh@/ | |||||
ख (्ख kh, | |||||
खँ khV~' | |||||
खॅ khV~' | |||||
ख k#V | |||||
ख (B k# | |||||
?1 ख (_ k# | |||||
्) ख (_ k#@/ | |||||
ख (्ख k#, | |||||
खँ k#V~' | |||||
खॅ k#V~' | |||||
.group ग | .group ग | ||||
ग gV | ग gV | ||||
गॅ gV~' | गॅ gV~' | ||||
.group घ | .group घ | ||||
घ ghV | |||||
घ (B gh | |||||
?1 घ (_ gh | |||||
घ (्घ gh, | |||||
्) घ (_ gh@/ | |||||
घँ ghV~' | |||||
घॅ ghV~' | |||||
घ g#V | |||||
घ (B g# | |||||
?1 घ (_ g# | |||||
घ (्घ g#, | |||||
्) घ (_ g#@/ | |||||
घँ g#V~' | |||||
घॅ g#V~' | |||||
.group ङ // Phoneme adjustment suggested | .group ङ // Phoneme adjustment suggested | ||||
चॅ cV~' | चॅ cV~' | ||||
.group छ | .group छ | ||||
छ chV | |||||
छ (B ch | |||||
्) छ (C ch@ | |||||
छ (_ ch@ | |||||
छँ chV~' | |||||
छॅ chV~' | |||||
छ c#V | |||||
छ (B c# | |||||
्) छ (C c#@ | |||||
छ (_ c#@ | |||||
छँ c#V~' | |||||
छॅ c#V~' | |||||
.group ज | .group ज | ||||
ज JV | ज JV | ||||
्) ज (_ J@/ | ्) ज (_ J@/ | ||||
.group झ // Phoneme adjustment suggested. | .group झ // Phoneme adjustment suggested. | ||||
झ JhV | |||||
झ (B Jh | |||||
झँ JhV~' | |||||
झॅ JhV~' | |||||
झ J#V | |||||
झ (B J# | |||||
झँ J#V~' | |||||
झॅ J#V~' | |||||
झ (्झ J, | झ (्झ J, | ||||
झ (_ Jh | |||||
झ (_ J# | |||||
.group ञ // Phoneme adjustment suggested | .group ञ // Phoneme adjustment suggested | ||||
ञ n^V | ञ n^V | ||||
ट (्य t.: | ट (्य t.: | ||||
.group ठ | .group ठ | ||||
ठ th.V | |||||
ठ (B th. | |||||
ठँ t.hV~' | |||||
ठॅ t.hV~' | |||||
ठ (्ठ th., | |||||
्) ठ (_ th.@/ | |||||
?1 ठ (_ t.h | |||||
ठ t.#V | |||||
ठ (B t.# | |||||
ठँ t.#V~' | |||||
ठॅ t.#V~' | |||||
ठ (्ठ t.#, | |||||
्) ठ (_ t.#@/ | |||||
?1 ठ (_ t.# | |||||
.group ड | .group ड | ||||
ड d.V | ड d.V | ||||
ड़ॅ d.:V~' | ड़ॅ d.:V~' | ||||
.group ढ | .group ढ | ||||
ढ dh.V | |||||
ढ (B dh. | |||||
ढँ d.hV~' | |||||
ढॅ d.hV~' | |||||
्) ढ (_ dh.@/ | |||||
?1 ढ (_ d.h | |||||
ढ़ d.hV: // nukta | |||||
ढ़ (B d.h // nukta | |||||
ढ d.#V | |||||
ढ (B d.# | |||||
ढँ d.#V~' | |||||
ढॅ d.#V~' | |||||
्) ढ (_ d.#@/ | |||||
?1 ढ (_ d.# | |||||
ढ़ d.#V: // nukta | |||||
ढ़ (B d.# // nukta | |||||
.group ण | .group ण | ||||
ण n.V // Phoneme adjustment suggested | ण n.V // Phoneme adjustment suggested | ||||
?1 त (_ t, | ?1 त (_ t, | ||||
.group थ | .group थ | ||||
थ thV | |||||
थँ thV~' | |||||
थॅ thV~' | |||||
थ (B th | |||||
्) थ (_ th@/ | |||||
थ (्य th, | |||||
?1 थ (_ th | |||||
थ t#V | |||||
थँ t#V~' | |||||
थॅ t#V~' | |||||
थ (B t# | |||||
्) थ (_ t#@/ | |||||
थ (्य t#, | |||||
?1 थ (_ t# | |||||
.group द | .group द | ||||
द dV | द dV | ||||
्) द (_ d@/ | ्) द (_ d@/ | ||||
.group ध | .group ध | ||||
ध dhV | |||||
धँ dhV~' | |||||
धॅ dhV~' | |||||
ध (B dh | |||||
?1 ध (_ dh | |||||
्) ध (_ dh@/ | |||||
ध d#V | |||||
धँ d#V~' | |||||
धॅ d#V~' | |||||
ध (B d# | |||||
?1 ध (_ d# | |||||
्) ध (_ d#@/ | |||||
.group न | .group न | ||||
न nV | न nV | ||||
्) प (_ p@/ | ्) प (_ p@/ | ||||
.group फ | .group फ | ||||
फ phV | |||||
फँ phV~' | |||||
फॅ phV~' | |||||
फ (B ph | |||||
फ (्न ph: | |||||
?1 फ (_ ph | |||||
्) फ (_ ph@/ | |||||
फ p#V | |||||
फँ p#V~' | |||||
फॅ p#V~' | |||||
फ (B p# | |||||
फ (्न p#: | |||||
?1 फ (_ p# | |||||
्) फ (_ p#@/ | |||||
.group ब | .group ब | ||||
ब bV | ब bV | ||||
्) ब (_ b@/ | ्) ब (_ b@/ | ||||
.group भ | .group भ | ||||
भ bhV | |||||
भँ bhV~' | |||||
भॅ bhV~' | |||||
भ (B bh | |||||
?1 भ (_ bh | |||||
भ (्य bh, | |||||
भ b#V | |||||
भँ b#V~' | |||||
भॅ b#V~' | |||||
भ (B b# | |||||
?1 भ (_ b# | |||||
भ (्य b#, | |||||
्) भ (_ bh@/ | ्) भ (_ bh@/ | ||||
.group म | .group म | ||||
.group [ | .group [ | ||||
[ l'eftbr'ak'et | [ l'eftbr'ak'et | ||||
[ (_A th'ul'ok'osht.@2suru | |||||
[ (_C th'ul'ok'osht.@2suru | |||||
[ (_० th'ul'ok'osht.@2suru | |||||
[ (_१ th'ul'ok'osht.@2suru | |||||
[ (_२ th'ul'ok'osht.@2suru | |||||
[ (_३ th'ul'ok'osht.@2suru | |||||
[ (_४ th'ul'ok'osht.@2suru | |||||
[ (_५ th'ul'ok'osht.@2suru | |||||
[ (_६ th'ul'ok'osht.@2suru | |||||
[ (_७ th'ul'ok'osht.@2suru | |||||
[ (_८ th'ul'ok'osht.@2suru | |||||
[ (_९ th'ul'ok'osht.@2suru | |||||
[ (_A t#'ul'ok'osht.@2suru | |||||
[ (_C t#'ul'ok'osht.@2suru | |||||
[ (_० t#'ul'ok'osht.@2suru | |||||
[ (_१ t#'ul'ok'osht.@2suru | |||||
[ (_२ t#'ul'ok'osht.@2suru | |||||
[ (_३ t#'ul'ok'osht.@2suru | |||||
[ (_४ t#'ul'ok'osht.@2suru | |||||
[ (_५ t#'ul'ok'osht.@2suru | |||||
[ (_६ t#'ul'ok'osht.@2suru | |||||
[ (_७ t#'ul'ok'osht.@2suru | |||||
[ (_८ t#'ul'ok'osht.@2suru | |||||
[ (_९ t#'ul'ok'osht.@2suru | |||||
.group ] | .group ] | ||||
] r'aitbr'ak'et | ] r'aitbr'ak'et | ||||
A_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
C_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
०_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
१_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
२_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
३_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
४_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
५_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
६_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
७_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
८_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
९_) ] th'ul'ok'osht.@2b'Vnd@2 | |||||
A_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
C_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
०_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
१_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
२_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
३_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
४_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
५_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
६_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
७_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
८_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
९_) ] t#'ul'ok'osht.@2b'Vnd@2 | |||||
.group { | .group { | ||||
{ l'eftbr'eIs | { l'eftbr'eIs | ||||
{ (_A b'a:Ng'ek'oshth.@2suru | |||||
{ (_C b'a:Ng'ek'oshth.@2suru | |||||
{ (_० b'a:Ng'ek'oshth.@2suru | |||||
{ (_१ b'a:Ng'ek'oshth.@2suru | |||||
{ (_२ b'a:Ng'ek'oshth.@2suru | |||||
{ (_३ b'a:Ng'ek'oshth.@2suru | |||||
{ (_४ b'a:Ng'ek'oshth.@2suru | |||||
{ (_५ b'a:Ng'ek'oshth.@2suru | |||||
{ (_६ b'a:Ng'ek'oshth.@2suru | |||||
{ (_७ b'a:Ng'ek'oshth.@2suru | |||||
{ (_८ b'a:Ng'ek'oshth.@2suru | |||||
{ (_९ b'a:Ng'ek'oshth.@2suru | |||||
{ (_A b'a:Ng'ek'osht.#@2suru | |||||
{ (_C b'a:Ng'ek'osht.#@2suru | |||||
{ (_० b'a:Ng'ek'osht.#@2suru | |||||
{ (_१ b'a:Ng'ek'osht.#@2suru | |||||
{ (_२ b'a:Ng'ek'osht.#@2suru | |||||
{ (_३ b'a:Ng'ek'osht.#@2suru | |||||
{ (_४ b'a:Ng'ek'osht.#@2suru | |||||
{ (_५ b'a:Ng'ek'osht.#@2suru | |||||
{ (_६ b'a:Ng'ek'osht.#@2suru | |||||
{ (_७ b'a:Ng'ek'osht.#@2suru | |||||
{ (_८ b'a:Ng'ek'osht.#@2suru | |||||
{ (_९ b'a:Ng'ek'osht.#@2suru | |||||
.group } | .group } | ||||
} r'aItbr'eIs | } r'aItbr'eIs | ||||
A_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
C_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
०_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
१_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
२_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
३_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
४_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
५_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
६_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
७_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
८_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
९_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||||
A_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
C_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
०_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
१_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
२_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
३_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
४_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
५_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
६_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
७_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
८_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
९_) } b'a:Ng'ek'osht.#@2b'Vnd@2 | |||||
// Special Symbols with special meanings | // Special Symbols with special meanings | ||||
.group | .group | ||||
। pur',n.@,w'ir'a:m // Fullstop of Devanagari | । pur',n.@,w'ir'a:m // Fullstop of Devanagari | ||||
॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice. | |||||
॥ d'i:rg#@,w'ir'a:m // Double Fullstop - means Read sentence twice. | |||||
ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). | ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). | ||||
॰ saNks.e:p@s'u:c@k@ | ॰ saNks.e:p@s'u:c@k@ | ||||
$ dOlV | |||||
$ dOlV | |||||
% prVtish'vt | % prVtish'vt | ||||
// Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! | // Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! | ||||
़ n'u'k't'a: // Name of symbol. | ़ n'u'k't'a: // Name of symbol. | ||||
॑ Ud'Vtt,@ | ॑ Ud'Vtt,@ | ||||
॓ Ud:dh@r,@n.@a:r'Vmbh@ | |||||
॔ ,Ud:dh@r,@n.@'Vnt@ | |||||
ॽ k,@n.th.@w'Ira:m | |||||
॓ Ud:d#@r,@n.@a:r'Vmb#@ | |||||
॔ ,Ud:d#@r,@n.@'Vnt@ | |||||
ॽ k,@n.t.#@w'Ira:m | |||||
॒ a'n'ud'Vtt,@ | ॒ a'n'ud'Vtt,@ | ||||
_ar 'a*aby | _ar 'a*aby | ||||
_cyr si*'ilikU | _cyr si*'ilikU | ||||
_he eb*'aIkU | _he eb*'aIkU | ||||
_zh Sin'es | |||||
// character names | // character names | ||||
gameta $alt2 | gameta $alt2 | ||||
geleia $alt | geleia $alt | ||||
gelo $alt $verb | gelo $alt $verb | ||||
genebra $alt | |||||
germe $alt | germe $alt | ||||
gesso $alt2 | gesso $alt2 | ||||
golpe $alt | golpe $alt |
_soub) e (L05_ E | _soub) e (L05_ E | ||||
_rend) e (L06_ e | _rend) e (L06_ e | ||||
_vend) e (L06_ e | _vend) e (L06_ e | ||||
_atend) e (L06_ e | |||||
tend) e (L06_ e / a- con- en- es- | |||||
_compreend) e (L06_ e | _compreend) e (L06_ e | ||||
_entend) e (L06_ e | |||||
_estend) e (L06_ e | |||||
respond) e (L06_ e // cor- | respond) e (L06_ e // cor- | ||||
_enraivec) e (L07_ e | _enraivec) e (L07_ e | ||||
_espairec) e (L07_ e | _espairec) e (L07_ e | ||||
vert) e (L07_ e // in- re- con- | vert) e (L07_ e // in- re- con- | ||||
_eleg) e (L07_ e | _eleg) e (L07_ e | ||||
_ergu) e (L07_ e | _ergu) e (L07_ e | ||||
_escond) e (L06_ e | |||||
_mord) e (L06_ e | |||||
_mord) e (L07_ e | _mord) e (L07_ e | ||||
_morr) e (L07_ e | _morr) e (L07_ e | ||||
_perd) e (L07_ e | _perd) e (L07_ e | ||||
_agradec) e (L07_ e | _agradec) e (L07_ e | ||||
_amanhec) e (L07_ e | _amanhec) e (L07_ e | ||||
_anoitec) e (L07_ e | _anoitec) e (L07_ e | ||||
_arrepend) e (L06_ e | |||||
_arrepend) e (L07_ e | _arrepend) e (L07_ e | ||||
_cresc) e (L07_ e | _cresc) e (L07_ e | ||||
_defend) e (L06_ e | |||||
_defend) e (L07_ e | _defend) e (L07_ e | ||||
_depend) e (L06_ e | |||||
_depend) e (L07_ e | _depend) e (L07_ e | ||||
_emagrec) e (L07_ e | _emagrec) e (L07_ e | ||||
_enlouquec) e (L07_ e | _enlouquec) e (L07_ e | ||||
_escurec) e (L07_ e | _escurec) e (L07_ e | ||||
_esquec) e (L07_ e | _esquec) e (L07_ e | ||||
_interromp) e (L07_ e | _interromp) e (L07_ e | ||||
_obedec) e (L07_ e | |||||
obedec) e (L07_ e / des- | |||||
_suspend) e (L07_ e | |||||
_perec) e (L07_ e | _perec) e (L07_ e | ||||
_rejuvenec) e (L07_ e | _rejuvenec) e (L07_ e | ||||
aprend) e (L07_ e // re- | aprend) e (L07_ e // re- | ||||
conhec) e (L07_ e // & re- des- | conhec) e (L07_ e // & re- des- | ||||
entend) e (L07_ e | |||||
tend) e (L07_ e / en- con- a- es- | |||||
preend) e (L07_ e // sur- com- | preend) e (L07_ e // sur- com- | ||||
respond) e (L07_ e // cor- | respond) e (L07_ e // cor- | ||||
qu) e (brL04_ E | qu) e (brL04_ E | ||||
acel) e (rL04_ E / des- | acel) e (rL04_ E / des- | ||||
_hosp) e (dL03_ E | _hosp) e (dL03_ E | ||||
_amort) e (çL03_ e | |||||
_in) e (ptL03_ E | _in) e (ptL03_ E | ||||
_gr) e (gL03_ e | _gr) e (gL03_ e | ||||
_n) e (grL03_ e | _n) e (grL03_ e | ||||
_aqu) e (çL03_ e | _aqu) e (çL03_ e | ||||
_car) e (çL03_ e | _car) e (çL03_ e | ||||
_mer) e (çL03_ e | _mer) e (çL03_ e | ||||
_pad) e (çL03_ e // com- | |||||
pad) e (çL03_ e // com- | |||||
_per) e (çL03_ e | _per) e (çL03_ e | ||||
conh) e (çL03_ e // re- | conh) e (çL03_ e // re- | ||||
_esqu) e (çL03_ e | _esqu) e (çL03_ e |
_ar arVbU | _ar arVbU | ||||
_cyr sirillik | _cyr sirillik | ||||
_he ;ebire:jVm | _he ;ebire:jVm | ||||
_zh tS'i:nV | |||||
// abbreviations | // abbreviations |
_11 padakond.u | _11 padakond.u | ||||
_12 pannemd.u | _12 pannemd.u | ||||
_13 padamu:d.u: | _13 padamu:d.u: | ||||
_14 padhna:lugu | |||||
_14 pad#na:lugu | |||||
_15 padihe:nu | _15 padihe:nu | ||||
_16 padaha:ru | _16 padaha:ru | ||||
_17 padihe:d.u | _17 padihe:d.u | ||||
_18 paddhenimidi | |||||
_18 padd#enimidi | |||||
_19 pamdommadi | _19 pamdommadi | ||||
_2X iravaI | _2X iravaI | ||||
_3X muppaI | _3X muppaI | ||||
_4X nalubhaI | |||||
_5X ja:bhaI | |||||
_4X nalub#aI | |||||
_5X ja:b#aI | |||||
_6X aravaI | _6X aravaI | ||||
_7X d.ebhbaI | |||||
_8X jenabhaI | |||||
_9X tombhaI | |||||
_7X d.eb#baI | |||||
_8X jenab#aI | |||||
_9X tomb#aI | |||||
_0C vandala | _0C vandala | ||||
_0C0 vandalu | _0C0 vandalu | ||||
_1C okavanda | _1C okavanda | ||||
_, ka:ma: | _, ka:ma: | ||||
_; semi:ko:lan | _; semi:ko:lan | ||||
_: ko:lan | _: ko:lan | ||||
_! a:S;carja:rthaka | |||||
_? praS;na:rthaka | |||||
_! a:S;carja:rt#aka | |||||
_? praS;na:rt#aka | |||||
_- haIfan | _- haIfan | ||||
__ amd.ar||sko:r | __ amd.ar||sko:r | ||||
// consonants with virama | // consonants with virama | ||||
క్ ik | క్ ik | ||||
ఖ్ ikh | |||||
ఖ్ ik# | |||||
గ్ ig | గ్ ig | ||||
ఘ్ igh | |||||
ఘ్ ig# | |||||
ఙ్ iN | ఙ్ iN | ||||
చ్ ic | చ్ ic | ||||
ఛ్ ich | |||||
ఛ్ ic# | |||||
జ్ iJ | జ్ iJ | ||||
ఝ్ iJh | |||||
ఝ్ iJ# | |||||
ఞ్ in^ | ఞ్ in^ | ||||
ట్ it. | ట్ it. | ||||
ఠ్ ith. | |||||
ఠ్ it.# | |||||
డ్ id. | డ్ id. | ||||
ఢ్ idh. | |||||
ఢ్ id.# | |||||
ణ్ in. | ణ్ in. | ||||
త్ it | త్ it | ||||
థ్ ith | |||||
థ్ it# | |||||
ద్ id | ద్ id | ||||
ధ్ idh | |||||
ధ్ id# | |||||
న్ in | న్ in | ||||
ప్ ip | ప్ ip | ||||
ఫ్ iph | |||||
ఫ్ ip# | |||||
బ్ ib | బ్ ib | ||||
భ్ ibh | |||||
భ్ ib# | |||||
మ్ im | మ్ im | ||||
య్ ij | య్ ij | ||||
ర్ ir | ర్ ir |
క (B k | క (B k | ||||
.group ఖ | .group ఖ | ||||
ఖ kha | |||||
ఖ (B kh | |||||
ఖ k#a | |||||
ఖ (B k# | |||||
.group గ | .group గ | ||||
గ ga | గ ga | ||||
గ (B g | గ (B g | ||||
.group ఘ | .group ఘ | ||||
ఘ gha | |||||
ఘ (B gh | |||||
ఘ g#a | |||||
ఘ (B g# | |||||
.group ఙ | .group ఙ | ||||
ఙ Na | ఙ Na | ||||
చ (B c | చ (B c | ||||
.group ఛ | .group ఛ | ||||
ఛ cha | |||||
ఛ (B ch | |||||
ఛ c#a | |||||
ఛ (B c# | |||||
.group జ | .group జ | ||||
జ Ja | జ Ja | ||||
జ (B J | జ (B J | ||||
.group ఝ | .group ఝ | ||||
ఝ Jha | |||||
ఝ (B Jh | |||||
ఝ J#a | |||||
ఝ (B J# | |||||
.group ఞ | .group ఞ | ||||
ఞ n^a | ఞ n^a | ||||
ట (B t. | ట (B t. | ||||
.group ఠ | .group ఠ | ||||
ఠ th.a | |||||
ఠ (B th. | |||||
ఠ t.#a | |||||
ఠ (B t.# | |||||
.group డ | .group డ | ||||
డ d.a | డ d.a | ||||
డ (B d. | డ (B d. | ||||
.group ఢ | .group ఢ | ||||
ఢ dh.a | |||||
ఢ (B dh. | |||||
ఢ d.#a | |||||
ఢ (B d.# | |||||
.group ణ | .group ణ | ||||
ణ n.a | ణ n.a | ||||
త (B t | త (B t | ||||
.group థ | .group థ | ||||
థ tha | |||||
థ (B th | |||||
థ t#a | |||||
థ (B t# | |||||
.group ద | .group ద | ||||
ద da | ద da | ||||
ద (B d | ద (B d | ||||
.group ధ | .group ధ | ||||
ధ dha | |||||
ధ (B dh | |||||
ధ d#a | |||||
ధ (B d# | |||||
.group న | .group న | ||||
న na | న na | ||||
ప (B p | ప (B p | ||||
.group ఫ | .group ఫ | ||||
ఫ pha | |||||
ఫ (B ph | |||||
ఫ p#a | |||||
ఫ (B p# | |||||
.group బ | .group బ | ||||
బ ba | బ ba | ||||
బ (B b | బ (B b | ||||
.group భ | .group భ | ||||
భ bha | |||||
భ (B bh | |||||
భ b#a | |||||
భ (B b# | |||||
.group మ | .group మ | ||||
మ ma | మ ma |
en-wi 30 156 | en-wi 30 156 | ||||
af 39 138 | af 39 138 | ||||
cy 29 134 | cy 29 134 | ||||
ga 29 133 | |||||
de 41 141 | de 41 141 | ||||
eo 13 116 | eo 13 116 | ||||
jbo 2 116 | jbo 2 116 | ||||
et 40 135 | et 40 135 | ||||
fr 64 146 | fr 64 146 | ||||
fr-ca 11 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 | hu 25 124 | ||||
lt 44 139 | lt 44 139 | ||||
lv 29 127 | lv 29 127 | ||||
nl 35 130 | |||||
pl 22 122 | pl 22 122 | ||||
sk 28 137 | sk 28 137 | ||||
cs 7 137 | cs 7 137 | ||||
hy 23 119 | hy 23 119 | ||||
da 46 139 | da 46 139 | ||||
ka 20 115 | ka 20 115 | ||||
fa 9 112 | |||||
rw 15 132 | rw 15 132 | ||||
pa 15 152 | |||||
prs 8 113 | prs 8 113 | ||||
sl 10 137 | sl 10 137 | ||||
gd 6 109 | gd 6 109 | ||||
ak 8 111 | ak 8 111 | ||||
am 15 114 | am 15 114 | ||||
wo 18 120 | wo 18 120 | ||||
dv 14 150 | |||||
te 16 150 | |||||
si 24 156 | |||||
dv 14 149 | |||||
te 16 149 | |||||
si 24 155 | |||||
tn 27 121 | tn 27 121 | ||||
mt 32 129 | mt 32 129 | ||||
bo 10 154 | |||||
bo 10 153 | |||||
kk 20 118 | kk 20 118 | ||||
fa 9 112 | |||||
ga 29 133 | |||||
tt 23 120 | tt 23 120 | ||||
ko 15 116 | ko 15 116 | ||||
kl 18 119 | kl 18 119 | ||||
[b] fr | [b] fr | ||||
b/b@ [b] base | b/b@ [b] base | ||||
b/b@2 [b] base | b/b@2 [b] base | ||||
[bh] hi | |||||
[b#] hi | |||||
b/ba [b] base | b/ba [b] base | ||||
b/be [b] base | b/be [b] base | ||||
b/bi [b] base | b/bi [b] base | ||||
b/bu [b] base | b/bu [b] base | ||||
b/xb [b] base | b/xb [b] base | ||||
[b] fr | [b] fr | ||||
[bh] hi | |||||
[b#] hi | |||||
b/xbr [b] fr | b/xbr [b] fr | ||||
d/d [d] base | d/d [d] base | ||||
[d[] base | [d[] base | ||||
[d^] et | [d^] et | ||||
[d] fr | [d] fr | ||||
[d.] hi | [d.] hi | ||||
[dh.] hi | |||||
[d.#] hi | |||||
[d] kn | [d] kn | ||||
[d] hu | [d] hu | ||||
[d] lt | [d] lt | ||||
[d] et | [d] et | ||||
[d] fr | [d] fr | ||||
[z] fr | [z] fr | ||||
[dh] hi | |||||
[d#] hi | |||||
[d] kn | [d] kn | ||||
[d] hu | [d] hu | ||||
[d] lt | [d] lt | ||||
[d] sq | [d] sq | ||||
[d] mt | [d] mt | ||||
[dz] bo | [dz] bo | ||||
[dzh] bo | |||||
d/xd3 [dh] hi | |||||
[dz#] bo | |||||
d/xd3 [d#] hi | |||||
d/xd_pzd [d^] et | d/xd_pzd [d^] et | ||||
[d;] lt | [d;] lt | ||||
[d;] pl | [d;] pl | ||||
d/xdr [d] fr | d/xdr [d] fr | ||||
[d.] hi | [d.] hi | ||||
[dh.] hi | |||||
[d.#] hi | |||||
d/xdz [dz] consonants | d/xdz [dz] consonants | ||||
[dz] bo | [dz] bo | ||||
[dzh] bo | |||||
[dz#] bo | |||||
d/x_tap [t#] en | d/x_tap [t#] en | ||||
[*] pt | [*] pt | ||||
dzh/dzh [dZ] base | dzh/dzh [dZ] base | ||||
[dZ;] ru | [dZ;] ru | ||||
[dZ;] sq | [dZ;] sq | ||||
dzh/xdz_pzd [J] base | dzh/xdz_pzd [J] base | ||||
[Jh] hi | |||||
[J#] hi | |||||
[J] tr | [J] tr | ||||
[J] ku | [J] ku | ||||
envelope/i_risefall [11] zh | envelope/i_risefall [11] zh | ||||
envelope/p_214 [5] vi | envelope/p_214 [5] vi | ||||
[5] vi-hue | [5] vi-hue | ||||
[214] zh | [214] zh | ||||
envelope/p_512 [6] vi | |||||
envelope/p_512 [+] pa | |||||
[6] vi | |||||
[4] vi-hue | [4] vi-hue | ||||
[6] vi-hue | [6] vi-hue | ||||
[+] pa | |||||
envelope/p_fall [2] vi | envelope/p_fall [2] vi | ||||
[7] vi | [7] vi | ||||
[2] vi-hue | [2] vi-hue | ||||
envelope/vi_6amp [6] vi | envelope/vi_6amp [6] vi | ||||
[2] vi-hue | [2] vi-hue | ||||
[6] vi-hue | [6] vi-hue | ||||
g2/xg [gh] hi | |||||
g2/xg [g#] hi | |||||
g/g [g] base | g/g [g] base | ||||
[g-] en | [g-] en | ||||
[g] cy | [g] cy | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [¨\7] base | |||||
l/l@ [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [¨\7] base | |||||
l/la [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] tn | [K] tn | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [¨\7] base | |||||
l/le [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [¨\7] base | |||||
l/li [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ll/_ll [L] base | ll/_ll [L] base | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [¨\7] base | |||||
l/lo [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[l;] lt | [l;] lt | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [¨\7] base | |||||
l/lu [¨\0] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[k] el | [k] el | ||||
[k] sq | [k] sq | ||||
ustop/k_asp [kh] consonants | ustop/k_asp [kh] consonants | ||||
[gh] hi | |||||
[g#] hi | |||||
[kh] zh | [kh] zh | ||||
[k#] ka | [k#] ka | ||||
[kh] tn | [kh] tn | ||||
ustop/k_asp2 [kh2] ml | |||||
ustop/k_asp_a [k#] ka | ustop/k_asp_a [k#] ka | ||||
ustop/k_asp_e [k#] ka | ustop/k_asp_e [k#] ka | ||||
ustop/k_asp_u [k#] ka | ustop/k_asp_u [k#] ka | ||||
[k] base2 | [k] base2 | ||||
[k] et | [k] et | ||||
[k] fr | [k] fr | ||||
[kh2] ml | |||||
[k] lv | [k] lv | ||||
[k] el | [k] el | ||||
[k] zhy | [k] zhy | ||||
[p] fr | [p] fr | ||||
[ph] tn | [ph] tn | ||||
ustop/p_asp [ph] consonants | ustop/p_asp [ph] consonants | ||||
[bh] hi | |||||
[b#] hi | |||||
[ph] zh | [ph] zh | ||||
[ph] tn | [ph] tn | ||||
ustop/percus02 [#X2] hi | ustop/percus02 [#X2] hi | ||||
ustop/q_u [q] base | ustop/q_u [q] base | ||||
ustop/t [t] base | ustop/t [t] base | ||||
[t] en-us | [t] en-us | ||||
[dh.] hi | |||||
[th.] hi | |||||
[d.#] hi | |||||
[t.#] hi | |||||
[t] zhy | [t] zhy | ||||
[t] da | [t] da | ||||
ustop/t_ [t] base | ustop/t_ [t] base | ||||
[t] base2 | [t] base2 | ||||
[t] en-us | [t] en-us | ||||
[t] et | [t] et | ||||
[dh] hi | |||||
[th] hi | |||||
[d#] hi | |||||
[t#] hi | |||||
[t] hu | [t] hu | ||||
[t] lt | [t] lt | ||||
[t] pl | [t] pl | ||||
[z] zhy | [z] zhy | ||||
[tsh] zh | [tsh] zh | ||||
[ts] tn | [ts] tn | ||||
[tsh] bo | |||||
[dzh] bo | |||||
[ts#] bo | |||||
[dz#] bo | |||||
ustop/ts_ [ts] consonants | ustop/ts_ [ts] consonants | ||||
[dz] consonants | [dz] consonants | ||||
[ts] lv | [ts] lv | ||||
[ts] tn | [ts] tn | ||||
[tsh] bo | |||||
[dzh] bo | |||||
[ts#] bo | |||||
[dz#] bo | |||||
ustop/ts2 [ts] lv | ustop/ts2 [ts] lv | ||||
[ts] hy | [ts] hy | ||||
[ts] ka | [ts] ka | ||||
ustop/tsh_sr [tS] sr | ustop/tsh_sr [tS] sr | ||||
ustop/tsh_unasp [tS`] am | ustop/tsh_unasp [tS`] am | ||||
ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
[Jh] hi | |||||
[J#] hi | |||||
[tS;] lt | [tS;] lt | ||||
[tS;] ru | [tS;] ru | ||||
[dZ;] sq | [dZ;] sq | ||||
vdiph2/eo [eo] ro | vdiph2/eo [eo] ro | ||||
vdiph2/e_u [e[u] ro | vdiph2/e_u [e[u] ro | ||||
vdiph2/i@ [i@] en-n | vdiph2/i@ [i@] en-n | ||||
[i@] hy | |||||
[i@] ga | [i@] ga | ||||
[i@] hy | |||||
vdiph2/i@_2 [i@] en-wm | vdiph2/i@_2 [i@] en-wm | ||||
vdiph2/ie [i@] en-wi | vdiph2/ie [i@] en-wi | ||||
[ie] fi | [ie] fi | ||||
vdiph/ae_2 [aI] en-n | vdiph/ae_2 [aI] en-n | ||||
vdiph/ai [aI] base2 | vdiph/ai [aI] base2 | ||||
[aI] en-wi | [aI] en-wi | ||||
[aI] ga | |||||
[aI] eo | [aI] eo | ||||
[aI] kn | [aI] kn | ||||
[aI] ml | [aI] ml | ||||
[aI] hy | [aI] hy | ||||
[aI] da | [aI] da | ||||
[aI] te | [aI] te | ||||
[aI] ga | |||||
[aI] kl | [aI] kl | ||||
vdiph/ai_2 [aI] en | vdiph/ai_2 [aI] en | ||||
[aI] cy | [aI] cy | ||||
vdiph/au_3 [aU] en-rp | vdiph/au_3 [aU] en-rp | ||||
vdiph/au_4 [aU] base2 | vdiph/au_4 [aU] base2 | ||||
[aU] cy | [aU] cy | ||||
[aU] ga | |||||
[aU#] ga | |||||
[aU] eo | [aU] eo | ||||
[aU] lt | [aU] lt | ||||
[aU] sk | [aU] sk | ||||
[aU] id | [aU] id | ||||
[aU] ga | |||||
[aU#] ga | |||||
vdiph/ee-e [E:] hi | vdiph/ee-e [E:] hi | ||||
vdiph/eei [EI] base2 | vdiph/eei [EI] base2 | ||||
[eI] en | [eI] en | ||||
[EI] de | [EI] de | ||||
[eI] ne | |||||
[EI] nl | [EI] nl | ||||
[eI] ne | |||||
[EI] vi | [EI] vi | ||||
[eI] hy | [eI] hy | ||||
[eI] prs | [eI] prs | ||||
[ei] lt | [ei] lt | ||||
[ei] lv | [ei] lv | ||||
[eI] id | [eI] id | ||||
[ei] mt | |||||
[eI] fa | [eI] fa | ||||
[ei] mt | |||||
vdiph/eei_3 [eI] lt | vdiph/eei_3 [eI] lt | ||||
[eI] sk | [eI] sk | ||||
[eI] ku | [eI] ku | ||||
vdiph/eu [eU] base2 | vdiph/eu [eU] base2 | ||||
[eU] cy | [eU] cy | ||||
[eU] eo | [eU] eo | ||||
[eU] nl | |||||
[eU] ne | [eU] ne | ||||
[eU] lt | [eU] lt | ||||
[eU] nl | |||||
[eU] sk | [eU] sk | ||||
[eU] pt | [eU] pt | ||||
[eU] vi | [eU] vi | ||||
vdiph/@u [u:] en-wm | vdiph/@u [u:] en-wm | ||||
[@:U] vi | [@:U] vi | ||||
vdiph/@u_2 [oU] en-rp | vdiph/@u_2 [oU] en-rp | ||||
vdiph/@u_3 [@U] ro | |||||
vdiph/@u_3 [@U] ga | |||||
[@U] ro | |||||
[@U] vi | [@U] vi | ||||
[@U] ga | |||||
vdiph/@u_en [oU] en | vdiph/@u_en [oU] en | ||||
[@U] id | [@U] id | ||||
vdiph/ui [uI] base2 | vdiph/ui [uI] base2 | ||||
vnasal/o_n2 [o~] af | vnasal/o_n2 [o~] af | ||||
vnasal/o_n4 [O~] fr | vnasal/o_n4 [O~] fr | ||||
vnasal/oo_n2 [O~] en | vnasal/oo_n2 [O~] en | ||||
[O~] hi | |||||
[O~] nl | [O~] nl | ||||
[O~] hi | |||||
[o] zh | [o] zh | ||||
vnasal/oo_n3 [O~] pl | vnasal/oo_n3 [O~] pl | ||||
vnasal/&u_n [O#] vi | vnasal/&u_n [O#] vi | ||||
[z;] ro | [z;] ro | ||||
[z] sq | [z] sq | ||||
[dz] bo | [dz] bo | ||||
[dzh] bo | |||||
[dz#] bo | |||||
voc/zh [Z] base | voc/zh [Z] base | ||||
[z.] base | [z.] base | ||||
[R^] sk | [R^] sk | ||||
[@5] en | [@5] en | ||||
[@] en-rp | [@] en-rp | ||||
[V] cy | [V] cy | ||||
[@/] ga | |||||
[@] kn | [@] kn | ||||
[@] hy | [@] hy | ||||
[@] ka | [@] ka | ||||
[@] wo | [@] wo | ||||
[@:] wo | [@:] wo | ||||
[@] te | [@] te | ||||
[@/] ga | |||||
vowel/@- [@-] base | vowel/@- [@-] base | ||||
[r*] hr | [r*] hr | ||||
[@-] da | [@-] da | ||||
[&] sv | [&] sv | ||||
[&#] da | [&#] da | ||||
[?&#] da | [?&#] da | ||||
[&] az | |||||
[a] fa | [a] fa | ||||
[&] az | |||||
vowel/0 [0] en | vowel/0 [0] en | ||||
[O] hi | [O] hi | ||||
[O] pt | [O] pt | ||||
[aa] en-wm | [aa] en-wm | ||||
[a] cy | [a] cy | ||||
[a] de | [a] de | ||||
[a:] nl | |||||
[a] ta | [a] ta | ||||
[a:] hu | [a:] hu | ||||
[a:] nl | |||||
[a] pl | [a] pl | ||||
[a] sk | [a] sk | ||||
[a:] sk | [a:] sk | ||||
[a] da | [a] da | ||||
[?a] da | [?a] da | ||||
[a] rw | [a] rw | ||||
vowel/a#_2 [a] kn | |||||
[a] ml | |||||
[A] nl | |||||
vowel/a#_2 [A] nl | |||||
[a:] nl | [a:] nl | ||||
[a] kn | |||||
[a] ml | |||||
[a#] pl | [a#] pl | ||||
[&] hr | [&] hr | ||||
[a] sv | [a] sv | ||||
[a#] en-n | [a#] en-n | ||||
[a#] en-us | [a#] en-us | ||||
[a#] en-wm | [a#] en-wm | ||||
[a#] ga | |||||
[3] de | [3] de | ||||
[a] hi | [a] hi | ||||
[a] ml | [a] ml | ||||
[a] sq | [a] sq | ||||
[a/] sq | [a/] sq | ||||
[3] da | [3] da | ||||
[a#] ga | |||||
vowel/a_4 [a] es | |||||
vowel/a_4 [a] ga | |||||
[a] es | |||||
[a] el | [a] el | ||||
[a] ga | |||||
vowel/a#_4 [a:] nl | vowel/a#_4 [a:] nl | ||||
[a] bg | [a] bg | ||||
[a/] it | [a/] it | ||||
vowel/aa_2 [A:] en | vowel/aa_2 [A:] en | ||||
[A@] en | [A@] en | ||||
[A:] cy | [A:] cy | ||||
[A:] ga | |||||
[A] zh | [A] zh | ||||
[A@] tn | [A@] tn | ||||
[A:] ga | |||||
vowel/aa_3 [A:] af | vowel/aa_3 [A:] af | ||||
[A] sq | [A] sq | ||||
[A] prs | [A] prs | ||||
[A:] de | [A:] de | ||||
vowel/aa_8 [0] en-us | vowel/aa_8 [0] en-us | ||||
[A:] en-us | [A:] en-us | ||||
[0] ga | |||||
[A1] et | [A1] et | ||||
[A] nl | [A] nl | ||||
[a:] is | [a:] is | ||||
[0] ga | |||||
[A] tt | [A] tt | ||||
[a] ko | [a] ko | ||||
vowel/aa_9 [a] fi | vowel/aa_9 [a] fi | ||||
[V] ne | [V] ne | ||||
[@/] ne | [@/] ne | ||||
[@] ur | [@] ur | ||||
[@] pa | |||||
[@] bg | [@] bg | ||||
[@] zh | [@] zh | ||||
[@] pa | |||||
vowel/e [e] base | vowel/e [e] base | ||||
[e] base2 | [e] base2 | ||||
[e:] en | [e:] en | ||||
[eI] en-wi | [eI] en-wi | ||||
[e:] af | [e:] af | ||||
[e:] cy | [e:] cy | ||||
[e:] ga | |||||
[e] ne | [e] ne | ||||
[e] ta | [e] ta | ||||
[e:] ta | [e:] ta | ||||
[e] dv | [e] dv | ||||
[e:] dv | [e:] dv | ||||
[e:] te | [e:] te | ||||
[e:] ga | |||||
[E] kl | [E] kl | ||||
vowel/e# [I] en-sc | vowel/e# [I] en-sc | ||||
[e] et | [e] et | ||||
[E] kl | [E] kl | ||||
vowel/e_2 [eI] en-sc | |||||
vowel/e_2 [i] en-n | |||||
[eI] en-sc | |||||
[e:] de | [e:] de | ||||
[e] hi | [e] hi | ||||
[e:] hi | [e:] hi | ||||
[e] pa | |||||
[e] it | [e] it | ||||
[e:] sv | [e:] sv | ||||
[e:] no | [e:] no | ||||
[e] pa | |||||
[e] sl | [e] sl | ||||
vowel/e_3 [i] en-n | |||||
[e:] hu | |||||
vowel/e_3 [e:] hu | |||||
[e] ku | [e] ku | ||||
vowel/e_5 [i] en-sc | vowel/e_5 [i] en-sc | ||||
vowel/e_6 [e] ht | vowel/e_6 [e] ht | ||||
[e] zhy | [e] zhy | ||||
vowel/ee_2 [E] cy | vowel/ee_2 [E] cy | ||||
[E2] nl | [E2] nl | ||||
[E] pa | |||||
[E] zh | [E] zh | ||||
[E#] ku | [E#] ku | ||||
[&] da | [&] da | ||||
[?&] da | [?&] da | ||||
[E] pa | |||||
[&] kk | [&] kk | ||||
vowel/ee#_2 [E1] et | vowel/ee#_2 [E1] et | ||||
[E-] sv | [E-] sv | ||||
[&] si | [&] si | ||||
[&:] si | [&:] si | ||||
vowel/e_mid [E] en-rp | vowel/e_mid [E] en-rp | ||||
[E] ga | |||||
[E] fr | [E] fr | ||||
[E-] fr | [E-] fr | ||||
[E~] fr | [E~] fr | ||||
[E] sl | [E] sl | ||||
[E] ht | [E] ht | ||||
[e] si | [e] si | ||||
[E] ga | |||||
vowel/e_mid2 [E] af | vowel/e_mid2 [E] af | ||||
[E] de | [E] de | ||||
[E2] de | [E2] de | ||||
[e] sq | [e] sq | ||||
[E] da | [E] da | ||||
[?E] da | [?E] da | ||||
[e] fa | |||||
[e] nso | [e] nso | ||||
[e] az | [e] az | ||||
[e] am | [e] am | ||||
[e:] si | [e:] si | ||||
[e] mt | [e] mt | ||||
[e] bo | [e] bo | ||||
[e] fa | |||||
vowel/@_fnt [@] en-wi | vowel/@_fnt [@] en-wi | ||||
[@2] en-wi | [@2] en-wi | ||||
[@2] hr | [@2] hr | ||||
[i] en-wm | [i] en-wm | ||||
[i] en-wi | [i] en-wi | ||||
[i:] cy | [i:] cy | ||||
[i:] ga | |||||
[i] eo | [i] eo | ||||
[i] ne | [i] ne | ||||
[i:] ta | [i:] ta | ||||
[i] sw | [i] sw | ||||
[i] hy | [i] hy | ||||
[i] ka | [i] ka | ||||
[i] fa | |||||
[i] rw | [i] rw | ||||
[i#] rw | [i#] rw | ||||
[i] prs | [i] prs | ||||
[i:] te | [i:] te | ||||
[i:] si | [i:] si | ||||
[i] bo | [i] bo | ||||
[i] fa | |||||
[i:] ga | |||||
[i] tt | [i] tt | ||||
[i] kl | [i] kl | ||||
vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
[I] de | [I] de | ||||
[I:] de | [I:] de | ||||
[I] fr-ca | [I] fr-ca | ||||
[I] ml | |||||
[I] nl | [I] nl | ||||
[I] ml | |||||
[I] is | [I] is | ||||
[I:] is | [I:] is | ||||
[i] zhy | [i] zhy | ||||
[I] kk | [I] kk | ||||
[e] tt | [e] tt | ||||
vowel/ii_2 [I] en | vowel/ii_2 [I] en | ||||
[I] ga | |||||
[i] zh | [i] zh | ||||
[I] da | [I] da | ||||
[I] mt | [I] mt | ||||
[I] ga | |||||
vowel/ii#_2 [y] pl | vowel/ii#_2 [y] pl | ||||
[y] am | [y] am | ||||
vowel/ii_3 [I] cy | vowel/ii_3 [I] cy | ||||
[I] fi | [I] fi | ||||
[I1] et | [I1] et | ||||
[I] hi | [I] hi | ||||
[I] pa | |||||
[i] sk | [i] sk | ||||
[I] hr | [I] hr | ||||
[I] sv | [I] sv | ||||
[I] no | [I] no | ||||
[I] pa | |||||
[i] sl | [i] sl | ||||
vowel/ii#_3 [I2] en-us | vowel/ii#_3 [I2] en-us | ||||
vowel/ii_4 [I2] en | vowel/ii_4 [I2] en | ||||
[I] sq | [I] sq | ||||
[i] wo | [i] wo | ||||
vowel/ii_7 [i] en | vowel/ii_7 [i] en | ||||
[i] sq | |||||
[i] ga | [i] ga | ||||
[i] sq | |||||
vowel/ii_8 [i] kk | vowel/ii_8 [i] kk | ||||
vowel/ii_final [i] en-us | vowel/ii_final [i] en-us | ||||
[i] en-rp | [i] en-rp | ||||
[@/] ne | [@/] ne | ||||
[@] ur | [@] ur | ||||
[@2] ur | [@2] ur | ||||
[@] pa | |||||
[V] pa | |||||
[@] ml | [@] ml | ||||
[@] ro | [@] ro | ||||
[a#] no | [a#] no | ||||
[@] id | [@] id | ||||
[@] pa | |||||
[V] pa | |||||
[@] si | [@] si | ||||
vowel/@_low2 [@2] en-us | vowel/@_low2 [@2] en-us | ||||
vowel/o [o] base2 | vowel/o [o] base2 | ||||
[o:] en | [o:] en | ||||
[oU] en-n | [oU] en-n | ||||
[oU] en-wi | [oU] en-wi | ||||
[o:] ga | |||||
[o:] de | [o:] de | ||||
[o] eo | [o] eo | ||||
[o:] et | [o:] et | ||||
[o] fr | [o] fr | ||||
[o] hi | [o] hi | ||||
[o:] pa | |||||
[o] ta | [o] ta | ||||
[o:] ta | [o:] ta | ||||
[o] kn | [o] kn | ||||
[o] hy | [o] hy | ||||
[o] rw | [o] rw | ||||
[o#] rw | [o#] rw | ||||
[o:] pa | |||||
[o] ak | [o] ak | ||||
[o] wo | [o] wo | ||||
[o:] wo | [o:] wo | ||||
[o] te | [o] te | ||||
[o:] te | [o:] te | ||||
[o] bo | [o] bo | ||||
[o:] ga | |||||
[o] kl | [o] kl | ||||
vowel/o_2 [o:] cy | vowel/o_2 [o:] cy | ||||
[o:] hi | [o:] hi | ||||
[o] hu | [o] hu | ||||
[o] bg | [o] bg | ||||
[o] tr | [o] tr | ||||
[o] fa | |||||
[o] az | [o] az | ||||
[o] dv | [o] dv | ||||
[o:] dv | [o:] dv | ||||
[o] fa | |||||
[o] tt | [o] tt | ||||
vowel/o_mid2 [O] fr | vowel/o_mid2 [O] fr | ||||
[O] ht | [O] ht | ||||
[3:] en-wi | [3:] en-wi | ||||
[O1] et | [O1] et | ||||
[O:] hi | [O:] hi | ||||
[O] pa | |||||
[O] it | [O] it | ||||
[O] an | [O] an | ||||
[O] pa | |||||
vowel/oo_5 [O] pl | vowel/oo_5 [O] pl | ||||
[O] is | [O] is | ||||
[O] sq | [O] sq | ||||
vowel/u [u] base | vowel/u [u] base | ||||
[u:] en-wi | [u:] en-wi | ||||
[u:] cy | [u:] cy | ||||
[u1] ga | |||||
[u:] de | [u:] de | ||||
[u] eo | [u] eo | ||||
[u] ml | [u] ml | ||||
[u] ak | [u] ak | ||||
[u:] wo | [u:] wo | ||||
[u] bo | [u] bo | ||||
[u1] ga | |||||
[u] tt | [u] tt | ||||
vowel/u# [u:] en-sc | vowel/u# [u:] en-sc | ||||
[Y] tr | [Y] tr | ||||
[@] az | [@] az | ||||
vowel/u_bck [u] base2 | vowel/u_bck [u] base2 | ||||
[U] cy | [U] cy | ||||
[u:] ga | |||||
[u] fi | [u] fi | ||||
[u] fr-ca | [u] fr-ca | ||||
[u] nl | |||||
[u:] hi | [u:] hi | ||||
[u] ne | [u] ne | ||||
[u] pa | |||||
[u:] hu | [u:] hu | ||||
[u:] lt | [u:] lt | ||||
[u] nl | |||||
[u] pl | [u] pl | ||||
[u:] sk | [u:] sk | ||||
[u] hr | [u] hr | ||||
[u] ka | [u] ka | ||||
[u] rw | [u] rw | ||||
[u#] rw | [u#] rw | ||||
[u] pa | |||||
[u] mt | [u] mt | ||||
[u:] ga | |||||
[u] ko | [u] ko | ||||
vowel/u_bck2 [u] et | vowel/u_bck2 [u] et | ||||
[u] fr | [u] fr | ||||
[u:] fr | [u:] fr | ||||
[u:] la | [u:] la | ||||
[u] es | [u] es | ||||
[u] ht | |||||
[u] fa | [u] fa | ||||
[u] ht | |||||
[u] kl | [u] kl | ||||
vowel/u_bck3 [u:] et | vowel/u_bck3 [u:] et | ||||
[u] kk | [u] kk | ||||
vowel/uu [U] en | vowel/uu [U] en | ||||
[U] en-n | [U] en-n | ||||
[U] en-wm | [U] en-wm | ||||
[U] tn | |||||
[U] ga | [U] ga | ||||
[U] tn | |||||
vowel/uu# [U] ku | vowel/uu# [U] ku | ||||
vowel/uu_2 [U] base2 | vowel/uu_2 [U] base2 | ||||
[U] de | [U] de | ||||
vowel/uu_bck [U] en-wi | vowel/uu_bck [U] en-wi | ||||
[U] fr-ca | [U] fr-ca | ||||
[U] hi | [U] hi | ||||
[U] pa | |||||
[u] kn | [u] kn | ||||
[u:] kn | [u:] kn | ||||
[u] hu | [u] hu | ||||
[U] pt | [U] pt | ||||
[U] no | [U] no | ||||
[u] zhy | [u] zhy | ||||
[U] pa | |||||
vowel/V [3] en-sc | vowel/V [3] en-sc | ||||
[@] bg | [@] bg | ||||
[@] vi | [@] vi | ||||
[V] ku | [V] ku | ||||
vowel/V_3 [V] en-rp | vowel/V_3 [V] en-rp | ||||
[V] hi | [V] hi | ||||
[V] pa | |||||
[V] ta | [V] ta | ||||
[a] bg | [a] bg | ||||
[V] pa | |||||
vowel/V_4 [V] en-sc | vowel/V_4 [V] en-sc | ||||
[O] ga | |||||
[V] da | [V] da | ||||
[?V] da | [?V] da | ||||
[O] ga | |||||
vowel/V_6 [V] en-us | vowel/V_6 [V] en-us | ||||
[a#] lv | [a#] lv | ||||
vowel/y [y] base2 | vowel/y [y] base2 | ||||
[y:] et | [y:] et | ||||
[y] fr | [y] fr | ||||
[y-] fr | [y-] fr | ||||
[y:] hu | |||||
[y] nl | [y] nl | ||||
[y:] hu | |||||
[y] la | [y] la | ||||
[yu] zhy | [yu] zhy | ||||
[y] sq | [y] sq | ||||
[Y] et | [Y] et | ||||
[Y:] et | [Y:] et | ||||
[Y] fr | [Y] fr | ||||
[Y:] hu | |||||
[8] nl | [8] nl | ||||
[Y:] hu | |||||
[Y] ro | [Y] ro | ||||
[oe] zhy | [oe] zhy | ||||
[W] tr | [W] tr |
phoneme i // optional variant of [I] for end of words | phoneme i // optional variant of [I] for end of words | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 150 | length 150 | ||||
IfNextVowelAppend(;) | |||||
FMT(vowel/e_3) | |||||
FMT(vowel/e_2) | |||||
endphoneme | endphoneme | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
unstressed | unstressed | ||||
length 160 | length 160 | ||||
ipa ᵻ | |||||
// FMT(vowel/@_fnt) | // FMT(vowel/@_fnt) | ||||
FMT(vowel/ii#) | FMT(vowel/ii#) | ||||
endphoneme | endphoneme |
endphoneme | endphoneme | ||||
phoneme ph | |||||
phoneme p# | |||||
import_phoneme consonants/ph | import_phoneme consonants/ph | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme bh | |||||
phoneme b# | |||||
vcd blb stop | vcd blb stop | ||||
lengthmod 5 | lengthmod 5 | ||||
voicingswitch ph | |||||
voicingswitch p# | |||||
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 | ||||
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 | ||||
endphoneme | endphoneme | ||||
phoneme th // dental variant of /t/ | |||||
phoneme t# // dental variant of /t/ | |||||
vls dnt stop | vls dnt stop | ||||
lengthmod 2 | lengthmod 2 | ||||
voicingswitch d | voicingswitch d | ||||
endphoneme | endphoneme | ||||
phoneme dh | |||||
phoneme d# | |||||
vcd dnt stop | vcd dnt stop | ||||
lengthmod 5 | lengthmod 5 | ||||
voicingswitch th | |||||
voicingswitch t# | |||||
Vowelin f1=0 f2=1500 -300 300 f3=-100 80 | Vowelin f1=0 f2=1500 -300 300 f3=-100 80 | ||||
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | ||||
WAV(ustop/t_short) | WAV(ustop/t_short) | ||||
endphoneme | endphoneme | ||||
phoneme th. | |||||
phoneme t.# | |||||
vls rfx stop | vls rfx stop | ||||
lengthmod 2 | lengthmod 2 | ||||
ipa ʈh | |||||
voicingswitch dh. | |||||
ipa ʈU+02B0 | |||||
voicingswitch d.# | |||||
Vowelin f1=0 f2=1800 -300 300 f3=-400 80 | Vowelin f1=0 f2=1800 -300 300 f3=-400 80 | ||||
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 | Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 | ||||
// WAV(ustop/th_rfx) | // WAV(ustop/th_rfx) | ||||
endphoneme | endphoneme | ||||
phoneme dh. | |||||
phoneme d.# | |||||
vcd rfx stop | vcd rfx stop | ||||
lengthmod 5 | lengthmod 5 | ||||
ipa ɖh | |||||
voicingswitch th. | |||||
ipa ɖU+02B0 | |||||
voicingswitch t.# | |||||
Vowelin f1=1 f2=1800 -300 300 f3=-400 80 | Vowelin f1=1 f2=1800 -300 300 f3=-400 80 | ||||
Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 | Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 | ||||
endphoneme | endphoneme | ||||
phoneme ch | |||||
phoneme c# | |||||
CALL base/tS; | CALL base/tS; | ||||
ipa ch | ipa ch | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme Jh | |||||
phoneme J# | |||||
vcd pal afr sibilant | vcd pal afr sibilant | ||||
lengthmod 5 | lengthmod 5 | ||||
voicingswitch ch | |||||
voicingswitch c# | |||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | ||||
Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 | Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 | ||||
voicingswitch g | voicingswitch g | ||||
endphoneme | endphoneme | ||||
phoneme kh | |||||
phoneme k# | |||||
import_phoneme consonants/kh | import_phoneme consonants/kh | ||||
voicingswitch gh | |||||
voicingswitch g# | |||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme gh | |||||
phoneme g# | |||||
vcd dnt stop | vcd dnt stop | ||||
lengthmod 5 | lengthmod 5 | ||||
voicingswitch kh | |||||
voicingswitch k# | |||||
Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 | Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 | ||||
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | ||||
import_phoneme base/R2 | import_phoneme base/R2 | ||||
endphoneme | endphoneme | ||||
phoneme d# // 'rr' sounds like English 'd' | |||||
phoneme d2 // 'rr' sounds like English 'd' | |||||
import_phoneme base/d | import_phoneme base/d | ||||
endphoneme | endphoneme | ||||
phonemetable cy base | phonemetable cy base | ||||
include ph_welsh | include ph_welsh | ||||
phonemetable ga base | |||||
include ph_irish | |||||
phonemetable de base | phonemetable de base | ||||
include ph_german | include ph_german | ||||
phonemetable fr-ca fr | phonemetable fr-ca fr | ||||
include ph_french_ca | include ph_french_ca | ||||
phonemetable nl base | |||||
include ph_dutch | |||||
phonemetable hi base | phonemetable hi base | ||||
include ph_hindi | include ph_hindi | ||||
phonemetable ur hi | phonemetable ur hi | ||||
include ph_urdu | include ph_urdu | ||||
phonemetable pa hi | |||||
include ph_punjabi | |||||
phonemetable ta hi | phonemetable ta hi | ||||
include ph_tamil | include ph_tamil | ||||
include ph_malayalam | include ph_malayalam | ||||
phonemetable hu base | phonemetable hu base | ||||
include ph_hungarian | include ph_hungarian | ||||
phonemetable lv base | phonemetable lv base | ||||
include ph_latvian | include ph_latvian | ||||
phonemetable nl base | |||||
include ph_dutch | |||||
phonemetable pl base | phonemetable pl base | ||||
include ph_polish | include ph_polish | ||||
phonemetable ka base | phonemetable ka base | ||||
include ph_georgian | include ph_georgian | ||||
phonemetable fa base | |||||
include ph_farsi | |||||
//************************************************************************************** | //************************************************************************************** | ||||
// The following lines are experimental, for future additions. | // The following lines are experimental, for future additions. | ||||
//phonemetable mn base | //phonemetable mn base | ||||
//include ph_mongolian | //include ph_mongolian | ||||
phonemetable pa hi | |||||
include ph_punjabi | |||||
phonemetable prs base | phonemetable prs base | ||||
include ph_dari | include ph_dari | ||||
phonemetable kk base | phonemetable kk base | ||||
include ph_kazakh | include ph_kazakh | ||||
phonemetable fa base | |||||
include ph_farsi | |||||
phonemetable ga base | |||||
include ph_irish | |||||
phonemetable tt base | phonemetable tt base | ||||
include ph_tatar | include ph_tatar | ||||
phonemetable kl base | phonemetable kl base | ||||
include ph_greenlandic | include ph_greenlandic | ||||
{"p_alt5", 0x25}, | {"p_alt5", 0x25}, | ||||
{"p_alt6", 0x26}, | {"p_alt6", 0x26}, | ||||
{"p_alt", 0x21}, | {"p_alt", 0x21}, | ||||
{NULL, -1} }; | |||||
{NULL, -1} | |||||
}; | |||||
MNEM_TAB mnem_flags[] = { | MNEM_TAB mnem_flags[] = { | ||||
// these in the first group put a value in bits0-3 of dictionary_flags | // these in the first group put a value in bits0-3 of dictionary_flags | ||||
//========================================================== | //========================================================== | ||||
/* Lookup a mnemonic string in a table, return its name */ | /* Lookup a mnemonic string in a table, return its name */ | ||||
{ | { | ||||
while(table->mnem != NULL) | |||||
{ | |||||
if(table->value==value) | |||||
return(table->mnem); | |||||
table++; | |||||
} | |||||
return(""); /* not found */ | |||||
while(table->mnem != NULL) | |||||
{ | |||||
if(table->value==value) | |||||
return(table->mnem); | |||||
table++; | |||||
} | |||||
return(""); /* not found */ | |||||
} /* end of LookupMnemValue */ | } /* end of LookupMnemValue */ | ||||
int len; | int len; | ||||
int total = 0; | int total = 0; | ||||
buf[0] = 0; | |||||
buf[0] = 0; | |||||
if((stress = flags[0] & 0xf) != 0) | if((stress = flags[0] & 0xf) != 0) | ||||
{ | { | ||||
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40)); | |||||
total = strlen(buf); | |||||
buf += total; | |||||
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40)); | |||||
total = strlen(buf); | |||||
buf += total; | |||||
} | } | ||||
for(ix=8; ix<64; ix++) | |||||
{ | |||||
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20))))) | |||||
{ | |||||
name = LookupMnemName(mnem_flags, ix); | |||||
len = strlen(name) + 1; | |||||
total += len; | |||||
if(total >= buf_len) | |||||
continue; | |||||
sprintf(buf, " %s", name); | |||||
buf += len; | |||||
} | |||||
} | |||||
for(ix=8; ix<64; ix++) | |||||
{ | |||||
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20))))) | |||||
{ | |||||
name = LookupMnemName(mnem_flags, ix); | |||||
len = strlen(name) + 1; | |||||
total += len; | |||||
if(total >= buf_len) | |||||
continue; | |||||
sprintf(buf, " %s", name); | |||||
buf += len; | |||||
} | |||||
} | |||||
} | } | ||||
char *DecodeRule(const char *group_chars, int group_length, char *rule, int control) | char *DecodeRule(const char *group_chars, int group_length, char *rule, int control) | ||||
{//================================================================================= | {//================================================================================= | ||||
/* Convert compiled match template to ascii */ | |||||
/* Convert compiled match template to ascii */ | |||||
unsigned char rb; | |||||
unsigned char rb; | |||||
unsigned char c; | unsigned char c; | ||||
char *p; | char *p; | ||||
int ix; | |||||
int ix; | |||||
int match_type; | int match_type; | ||||
int finished=0; | int finished=0; | ||||
int value; | int value; | ||||
int condition_num=0; | int condition_num=0; | ||||
int at_start = 0; | int at_start = 0; | ||||
const char *name; | const char *name; | ||||
char buf[60]; | |||||
char buf_pre[60]; | |||||
char buf[60]; | |||||
char buf_pre[60]; | |||||
char suffix[20]; | char suffix[20]; | ||||
static char output[60]; | static char output[60]; | ||||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', | |||||
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'}; | |||||
static char symbols[] = | |||||
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', | |||||
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W' | |||||
}; | |||||
static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; | static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; | ||||
match_type = 0; | match_type = 0; | ||||
buf_pre[0] = 0; | |||||
buf_pre[0] = 0; | |||||
for(ix=0; ix<group_length; ix++) | for(ix=0; ix<group_length; ix++) | ||||
{ | { | ||||
buf[ix] = 0; | buf[ix] = 0; | ||||
p = &buf[strlen(buf)]; | p = &buf[strlen(buf)]; | ||||
while(!finished) | |||||
{ | |||||
while(!finished) | |||||
{ | |||||
rb = *rule++; | rb = *rule++; | ||||
if(rb <= RULE_LINENUM) | if(rb <= RULE_LINENUM) | ||||
} | } | ||||
c = ' '; | c = ' '; | ||||
} | } | ||||
else | |||||
if(rb == RULE_ENDING) | |||||
else if(rb == RULE_ENDING) | |||||
{ | { | ||||
static const char *flag_chars = "eipvdfq tba "; | static const char *flag_chars = "eipvdfq tba "; | ||||
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f); | flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f); | ||||
suffix_char = 'P'; | suffix_char = 'P'; | ||||
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f); | sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f); | ||||
rule += 3; | rule += 3; | ||||
for(ix=0;ix<9;ix++) | |||||
for(ix=0; ix<9; ix++) | |||||
{ | { | ||||
if(flags & 1) | if(flags & 1) | ||||
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]); | sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]); | ||||
p += strlen(suffix); | p += strlen(suffix); | ||||
c = ' '; | c = ' '; | ||||
} | } | ||||
else | |||||
if(rb == RULE_LETTERGP) | |||||
else if(rb == RULE_LETTERGP) | |||||
{ | { | ||||
c = symbols_lg[*rule++ - 'A']; | c = symbols_lg[*rule++ - 'A']; | ||||
} | } | ||||
else | |||||
if(rb == RULE_LETTERGP2) | |||||
else if(rb == RULE_LETTERGP2) | |||||
{ | { | ||||
value = *rule++ - 'A'; | value = *rule++ - 'A'; | ||||
p[0] = 'L'; | p[0] = 'L'; | ||||
} | } | ||||
p+=2; | p+=2; | ||||
} | } | ||||
else | |||||
if(rb <= RULE_LAST_RULE) | |||||
else if(rb <= RULE_LAST_RULE) | |||||
c = symbols[rb]; | c = symbols[rb]; | ||||
else | |||||
if(rb == RULE_SPACE) | |||||
else if(rb == RULE_SPACE) | |||||
c = '_'; | c = '_'; | ||||
else | else | ||||
c = rb; | c = rb; | ||||
while(ix < 8) | while(ix < 8) | ||||
output[ix++]=' '; | output[ix++]=' '; | ||||
output[ix]=0; | output[ix]=0; | ||||
return(output); | |||||
return(output); | |||||
} /* end of DecodeRule */ | } /* end of DecodeRule */ | ||||
unsigned char flag_codes[100]; | unsigned char flag_codes[100]; | ||||
char encoded_ph[200]; | char encoded_ph[200]; | ||||
unsigned char bad_phoneme[4]; | unsigned char bad_phoneme[4]; | ||||
static char nullstring[] = {0}; | |||||
static char nullstring[] = {0}; | |||||
text_not_phonemes = 0; | text_not_phonemes = 0; | ||||
phonetic = word = nullstring; | phonetic = word = nullstring; | ||||
{ | { | ||||
text_mode = 1; | text_mode = 1; | ||||
} | } | ||||
else | |||||
if(flagnum == 201) | |||||
else if(flagnum == 201) | |||||
{ | { | ||||
text_mode = 0; | text_mode = 0; | ||||
} | } | ||||
else | |||||
if(flagnum == BITNUM_FLAG_TEXTMODE) | |||||
else if(flagnum == BITNUM_FLAG_TEXTMODE) | |||||
{ | { | ||||
text_not_phonemes = 1; | text_not_phonemes = 1; | ||||
} | } | ||||
word = p+1; | word = p+1; | ||||
step = 1; | step = 1; | ||||
} | } | ||||
else | |||||
if(!isspace2(c)) | |||||
else if(!isspace2(c)) | |||||
{ | { | ||||
word = p; | word = p; | ||||
step = 1; | step = 1; | ||||
step = 3; | step = 3; | ||||
} | } | ||||
} | } | ||||
else | |||||
if(c == ')') | |||||
else if(c == ')') | |||||
{ | { | ||||
if(multiple_words) | if(multiple_words) | ||||
{ | { | ||||
multiple_words = 0; | multiple_words = 0; | ||||
step = 3; | step = 3; | ||||
} | } | ||||
else | |||||
if(word[0] != '_') | |||||
else if(word[0] != '_') | |||||
{ | { | ||||
fprintf(f_log, "%5d: Missing '('\n", linenum); | fprintf(f_log, "%5d: Missing '('\n", linenum); | ||||
error_count++; | error_count++; | ||||
{ | { | ||||
multiple_words++; | multiple_words++; | ||||
} | } | ||||
else | |||||
if(c == ')') | |||||
else if(c == ')') | |||||
{ | { | ||||
p[0] = ' '; // terminate extra string | p[0] = ' '; // terminate extra string | ||||
multiple_string_end = p+1; | multiple_string_end = p+1; | ||||
// This is a special word, used by eSpeak. Translate this into phonemes now | // This is a special word, used by eSpeak. Translate this into phonemes now | ||||
strcat(phonetic, " "); // need a space to indicate word-boundary | strcat(phonetic, " "); // need a space to indicate word-boundary | ||||
// PROBLEM vowel reductions are not applied to the translated phonemes | |||||
// condition rules are not applied | |||||
// PROBLEM vowel reductions are not applied to the translated phonemes | |||||
// condition rules are not applied | |||||
TranslateWord(translator,phonetic,0,NULL,NULL); | TranslateWord(translator,phonetic,0,NULL,NULL); | ||||
text_not_phonemes = 0; | text_not_phonemes = 0; | ||||
strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4); | strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4); | ||||
error_need_dictionary++; | error_need_dictionary++; | ||||
fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum); | fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum); | ||||
} | } | ||||
{ | |||||
{ | |||||
//char decoded_phonemes[128]; | //char decoded_phonemes[128]; | ||||
//DecodePhonemes(word_phonemes,decoded_phonemes); | //DecodePhonemes(word_phonemes,decoded_phonemes); | ||||
//printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes); | //printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes); | ||||
} | |||||
} | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
ix = utf8_out(wc, word); | ix = utf8_out(wc, word); | ||||
word[ix] = 0; | word[ix] = 0; | ||||
} | } | ||||
else | |||||
if(word[0] != '_') | |||||
else if(word[0] != '_') | |||||
{ | { | ||||
// convert to lower case, and note if the word is all-capitals | // convert to lower case, and note if the word is all-capitals | ||||
int c2; | int c2; | ||||
fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum); | fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum); | ||||
error_count++; | error_count++; | ||||
} | } | ||||
else | |||||
if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0)) | |||||
else if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0)) | |||||
{ | { | ||||
fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c); | fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c); | ||||
error_count++; | error_count++; | ||||
case 'a': | case 'a': | ||||
sxflags |= SUFX_A; | sxflags |= SUFX_A; | ||||
break; | break; | ||||
case 'm': | |||||
sxflags |= SUFX_M; | |||||
break; | |||||
case 'm': | |||||
sxflags |= SUFX_M; | |||||
break; | |||||
default: | default: | ||||
if(isdigit(c)) | if(isdigit(c)) | ||||
value = (value*10) + (c - '0'); | value = (value*10) + (c - '0'); | ||||
char *pa, *pb; | char *pa, *pb; | ||||
int ix; | int ix; | ||||
if((ix = strcmp(pa = *a,pb = *b)) != 0) | |||||
return(ix); | |||||
if((ix = strcmp(pa = *a,pb = *b)) != 0) | |||||
return(ix); | |||||
pa += (strlen(pa)+1); | pa += (strlen(pa)+1); | ||||
pb += (strlen(pb)+1); | pb += (strlen(pb)+1); | ||||
return(strcmp(pa,pb)); | |||||
return(strcmp(pa,pb)); | |||||
} /* end of string_sorter */ | } /* end of string_sorter */ | ||||
if(rule_pre[0] != 0) | if(rule_pre[0] != 0) | ||||
{ | { | ||||
p = buf; | p = buf; | ||||
for(ix=strlen(rule_pre)-1;ix>=0;ix--) | |||||
for(ix=strlen(rule_pre)-1; ix>=0; ix--) | |||||
*p++ = rule_pre[ix]; | *p++ = rule_pre[ix]; | ||||
sprintf(p,") "); | sprintf(p,") "); | ||||
spaces -= strlen(buf); | spaces -= strlen(buf); | ||||
for(ix=0; ix<spaces; ix++) | for(ix=0; ix<spaces; ix++) | ||||
fputc(' ',f_out); | |||||
fputc(' ',f_out); | |||||
fprintf(f_out,"%s",buf); | fprintf(f_out,"%s",buf); | ||||
spaces = 0; | spaces = 0; | ||||
} | } | ||||
int length; | int length; | ||||
int max_length = 0; | int max_length = 0; | ||||
#define N_LETTERGP_ITEMS 200 | |||||
#define N_LETTERGP_ITEMS 200 | |||||
char *items[N_LETTERGP_ITEMS]; | char *items[N_LETTERGP_ITEMS]; | ||||
char item_length[N_LETTERGP_ITEMS]; | char item_length[N_LETTERGP_ITEMS]; | ||||
break; | break; | ||||
case 2: // .replace | case 2: // .replace | ||||
{ | |||||
int replace1; | |||||
int replace2; | |||||
char *p; | |||||
p = buf; | |||||
replace1 = 0; | |||||
replace2 = 0; | |||||
while(isspace2(*p)) p++; | |||||
ix = 0; | |||||
while((unsigned char)(*p) > 0x20) // not space or zero-byte | |||||
{ | { | ||||
int replace1; | |||||
int replace2; | |||||
char *p; | |||||
p = buf; | |||||
replace1 = 0; | |||||
replace2 = 0; | |||||
while(isspace2(*p)) p++; | |||||
ix = 0; | |||||
while((unsigned char)(*p) > 0x20) // not space or zero-byte | |||||
{ | |||||
p += utf8_in(&c,p); | |||||
replace1 += (c << ix); | |||||
ix += 16; | |||||
} | |||||
while(isspace2(*p)) p++; | |||||
ix = 0; | |||||
while((unsigned char)(*p) > 0x20) | |||||
{ | |||||
p += utf8_in(&c,p); | |||||
replace2 += (c << ix); | |||||
ix += 16; | |||||
} | |||||
if(replace1 != 0) | |||||
{ | |||||
Write4Bytes(f_out,replace1); // write as little-endian | |||||
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() | |||||
} | |||||
p += utf8_in(&c,p); | |||||
replace1 += (c << ix); | |||||
ix += 16; | |||||
} | } | ||||
break; | |||||
while(isspace2(*p)) p++; | |||||
ix = 0; | |||||
while((unsigned char)(*p) > 0x20) | |||||
{ | |||||
p += utf8_in(&c,p); | |||||
replace2 += (c << ix); | |||||
ix += 16; | |||||
} | |||||
if(replace1 != 0) | |||||
{ | |||||
Write4Bytes(f_out,replace1); // write as little-endian | |||||
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() | |||||
} | |||||
} | |||||
break; | |||||
} | } | ||||
} | } | ||||
fclose(f_temp); | fclose(f_temp); |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
* Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
* email: [email protected] * | * email: [email protected] * | ||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
PHONEME_LIST2 *plist2; | PHONEME_LIST2 *plist2; | ||||
WORD_PH_DATA worddata; | WORD_PH_DATA worddata; | ||||
memset(&worddata, 0, sizeof(worddata)); | |||||
memset(&worddata, 0, sizeof(worddata)); | |||||
plist2 = ph_list2; | plist2 = ph_list2; | ||||
phlist = phoneme_list; | phlist = phoneme_list; | ||||
end_sourceix = plist2[n_ph_list2-1].sourceix; | end_sourceix = plist2[n_ph_list2-1].sourceix; | ||||
max_stress = 0; | max_stress = 0; | ||||
for(j = n_ph_list2-3; j>=0; j--) | for(j = n_ph_list2-3; j>=0; j--) | ||||
{ | { | ||||
// start with the last phoneme (before the terminating pauses) and move forwards | |||||
// start with the last phoneme (before the terminating pauses) and move backwards | |||||
if((plist2[j].stresslevel & 0x7f) > max_stress) | if((plist2[j].stresslevel & 0x7f) > max_stress) | ||||
max_stress = plist2[j].stresslevel & 0x7f; | max_stress = plist2[j].stresslevel & 0x7f; | ||||
if(plist2[j].sourceix != 0) | if(plist2[j].sourceix != 0) | ||||
{ | { | ||||
voicing = 1; | voicing = 1; | ||||
} | } | ||||
else | |||||
if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants | |||||
else if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants | |||||
{ | { | ||||
plist2[j].phcode = ph->end_type; // change to voiced equivalent | plist2[j].phcode = ph->end_type; // change to voiced equivalent | ||||
} | } | ||||
} | } | ||||
else | |||||
if((type==phVSTOP) || type==(phVFRICATIVE)) | |||||
else if((type==phVSTOP) || type==(phVFRICATIVE)) | |||||
{ | { | ||||
if((voicing==0) && (regression & 0xf)) | if((voicing==0) && (regression & 0xf)) | ||||
{ | { | ||||
voicing = 2; | voicing = 2; | ||||
} | } | ||||
else | |||||
if((voicing==1) && (ph->end_type != 0)) | |||||
else if((voicing==1) && (ph->end_type != 0)) | |||||
{ | { | ||||
plist2[j].phcode = ph->end_type; // change to unvoiced equivalent | plist2[j].phcode = ph->end_type; // change to unvoiced equivalent | ||||
} | } | ||||
if(plist3->phcode == phonSWITCH) | if(plist3->phcode == phonSWITCH) | ||||
{ | { | ||||
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) | |||||
continue; // next phoneme is also a phonSWITCH, so ignore | |||||
// change phoneme table | // change phoneme table | ||||
SelectPhonemeTable(plist3->tone_ph); | SelectPhonemeTable(plist3->tone_ph); | ||||
switched_language ^= SFLAG_SWITCHED_LANG; | switched_language ^= SFLAG_SWITCHED_LANG; | ||||
phlist[ix].newword = 2; // end of clause | phlist[ix].newword = 2; // end of clause | ||||
phlist[ix].phcode = phonPAUSE; | phlist[ix].phcode = phonPAUSE; | ||||
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes | |||||
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes | |||||
phlist[ix].length = post_pause; // length of the pause, depends on the punctuation | phlist[ix].length = post_pause; // length of the pause, depends on the punctuation | ||||
phlist[ix].sourceix = end_sourceix; | phlist[ix].sourceix = end_sourceix; | ||||
phlist[ix].synthflags = 0; | phlist[ix].synthflags = 0; | ||||
phlist[ix++].ph = phoneme_tab[phonPAUSE]; | |||||
phlist[ix++].ph = phoneme_tab[phonPAUSE]; | |||||
phlist[ix].phcode = phonPAUSE; | phlist[ix].phcode = phonPAUSE; | ||||
phlist[ix].type = phPAUSE; | |||||
phlist[ix].type = phPAUSE; | |||||
phlist[ix].length = 0; | phlist[ix].length = 0; | ||||
phlist[ix].sourceix=0; | phlist[ix].sourceix=0; | ||||
phlist[ix].synthflags = 0; | phlist[ix].synthflags = 0; | ||||
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT]; | |||||
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT]; | |||||
n_phoneme_list = ix; | n_phoneme_list = ix; | ||||
} // end of MakePhonemeList | } // end of MakePhonemeList |
static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause) | static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause) | ||||
{//========================================================================================================== | |||||
{//============================================================================================================= | |||||
// announce punctuation names | // announce punctuation names | ||||
// c1: the punctuation character | // c1: the punctuation character | ||||
// c2: the following character | // c2: the following character | ||||
int punct_count; | int punct_count; | ||||
const char *punctname; | |||||
int found = 0; | |||||
const char *punctname = NULL; | |||||
int soundicon; | int soundicon; | ||||
int attributes; | int attributes; | ||||
int short_pause; | int short_pause; | ||||
int bufix1; | int bufix1; | ||||
char buf[200]; | char buf[200]; | ||||
char buf2[80]; | char buf2[80]; | ||||
char ph_buf[30]; | |||||
c2 = *c2_ptr; | c2 = *c2_ptr; | ||||
buf[0] = 0; | buf[0] = 0; | ||||
// add an embedded command to play the soundicon | // add an embedded command to play the soundicon | ||||
sprintf(buf,"\001%dI ",soundicon); | sprintf(buf,"\001%dI ",soundicon); | ||||
UngetC(c2); | UngetC(c2); | ||||
found = 1; | |||||
} | } | ||||
else | else | ||||
if((punctname = LookupCharName(tr, c1, 0)) != NULL) | |||||
{ | { | ||||
found = 1; | |||||
if((c1 == '.') && (end_clause) && (c2 != '.')) | |||||
{ | |||||
if(LookupSpecial(tr, "_.p", ph_buf)) | |||||
{ | |||||
punctname = ph_buf; // use word for 'period' instead of 'dot' | |||||
} | |||||
} | |||||
if(punctname == NULL) | |||||
{ | |||||
punctname = LookupCharName(tr, c1, 0); | |||||
} | |||||
if(punctname == NULL) | |||||
return(-1); | |||||
if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) | if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) | ||||
{ | { | ||||
punct_count=1; | punct_count=1; | ||||
} | } | ||||
} | } | ||||
if(found == 0) | |||||
return(-1); | |||||
bufix1 = *bufix; | bufix1 = *bufix; | ||||
len = strlen(buf); | len = strlen(buf); | ||||
strcpy(&output[*bufix],buf); | strcpy(&output[*bufix],buf); |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.46.44 08.Mar.13"; | |||||
const char *version_string = "1.46.45 10.Mar.13"; | |||||
const int version_phdata = 0x014640; | const int version_phdata = 0x014640; | ||||
int option_device_number = -1; | int option_device_number = -1; |
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, | {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, | ||||
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, | {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, | ||||
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, | {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, | ||||
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0}, | |||||
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS}, | |||||
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, | {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, | ||||
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, | {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, | ||||
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS}, | {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS}, | ||||
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, | {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, | ||||
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, | {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, | ||||
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, | {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, | ||||
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, | |||||
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, | |||||
{NULL, 0, 0, 0, 0, 0} | {NULL, 0, 0, 0, 0, 0} | ||||
}; | }; | ||||
ALPHABET *AlphabetFromChar(int c) | ALPHABET *AlphabetFromChar(int c) | ||||
{//=============================== | {//=============================== | ||||
// Find the alphabet from a character. | |||||
ALPHABET *alphabet = alphabets; | |||||
while(alphabet->name != NULL) | |||||
{ | |||||
if((c >= alphabet->range_min) && (c <= alphabet->range_max)) | |||||
{ | |||||
return(alphabet); | |||||
} | |||||
alphabet++; | |||||
} | |||||
return(NULL); | |||||
// Find the alphabet from a character. | |||||
ALPHABET *alphabet = alphabets; | |||||
while(alphabet->name != NULL) | |||||
{ | |||||
if((c >= alphabet->range_min) && (c <= alphabet->range_max)) | |||||
{ | |||||
return(alphabet); | |||||
} | |||||
alphabet++; | |||||
} | |||||
return(NULL); | |||||
} | } | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | |||||
tr->letter_bits_offset = OFFSET_BENGALI; | tr->letter_bits_offset = OFFSET_BENGALI; | ||||
SetIndicLetters(tr); // call this after setting OFFSET_BENGALI | SetIndicLetters(tr); // call this after setting OFFSET_BENGALI | ||||
SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->letter_bits_offset = OFFSET_THAANA; | tr->letter_bits_offset = OFFSET_THAANA; | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | |||||
SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama | SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama | ||||
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | ||||
tr->langopts.numbers = 1; | tr->langopts.numbers = 1; | ||||
// stress last syllable if it doesn't end in vowel or "s" or "n" | // stress last syllable if it doesn't end in vowel or "s" or "n" | ||||
// 'diminished' is an unstressed final syllable | // 'diminished' is an unstressed final syllable | ||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
if(name2 == L('c','a')) | if(name2 == L('c','a')) | ||||
{ | { | ||||
// stress last syllable unless word ends with a vowel | |||||
tr->punct_within_word = ca_punct_within_word; | tr->punct_within_word = ca_punct_within_word; | ||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||||
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; | |||||
} | } | ||||
else | else | ||||
if(name2 == L('a','n')) | if(name2 == L('a','n')) | ||||
{ | { | ||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
} | } | ||||
else | else | ||||
if(name2 == L_pap) | if(name2 == L_pap) | ||||
{ | { | ||||
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||||
// stress last syllable unless word ends with a vowel | |||||
tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
SetupTranslator(tr,stress_lengths_fi,stress_amps_fi); | SetupTranslator(tr,stress_lengths_fi,stress_amps_fi); | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY; // move secondary stress from light to a following heavy syllable | |||||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | tr->langopts.param[LOPT_IT_DOUBLING] = 1; | ||||
tr->langopts.long_stop = 130; | tr->langopts.long_stop = 130; | ||||
{ | { | ||||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||||
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress | |||||
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.accents = 2; // Say "Capital" after the letter. | tr->langopts.accents = 2; // Say "Capital" after the letter. | ||||
} | } | ||||
break; | break; | ||||
case L('g','a'): // irish | |||||
{ | |||||
tr->langopts.stress_rule = STRESSPOSN_1L; | |||||
tr->langopts.numbers = 1; | |||||
} | |||||
break; | |||||
case L('g','a'): // irish | |||||
{ | |||||
tr->langopts.stress_rule = STRESSPOSN_1L; | |||||
tr->langopts.numbers = 1; | |||||
} | |||||
break; | |||||
case L('h','i'): // Hindi | case L('h','i'): // Hindi | ||||
case L('n','e'): // Nepali | case L('n','e'): // Nepali | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | ||||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | |||||
tr->langopts.numbers = NUM_SWAP_TENS; | tr->langopts.numbers = NUM_SWAP_TENS; | ||||
tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | ||||
tr->letter_bits_offset = OFFSET_DEVANAGARI; | tr->letter_bits_offset = OFFSET_DEVANAGARI; | ||||
tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_NO_2; | |||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | ||||
tr->langopts.max_initial_consonants = 5; | tr->langopts.max_initial_consonants = 5; | ||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
case L('h','t'): // Haitian Creole | case L('h','t'): // Haitian Creole | ||||
// memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); | // memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||||
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress | |||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4; | ||||
break; | break; | ||||
tr->langopts.vowel_pause = 0x20; | tr->langopts.vowel_pause = 0x20; | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x8036 | S_HYPEN_UNSTRESS; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS; | |||||
tr->langopts.unstressed_wd1 = 2; | tr->langopts.unstressed_wd1 = 2; | ||||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | tr->langopts.param[LOPT_IT_DOUBLING] = 1; | ||||
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? ! | tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? ! | ||||
SetLetterBits(tr,LETTERGP_C,hy_consonants); | SetLetterBits(tr,LETTERGP_C,hy_consonants); | ||||
tr->langopts.max_initial_consonants = 6; | tr->langopts.max_initial_consonants = 6; | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | ||||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||||
} | } | ||||
break; | break; | ||||
SetupTranslator(tr,stress_lengths_id,stress_amps_id); | SetupTranslator(tr,stress_lengths_id,stress_amps_id); | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; | ||||
tr->langopts.stress_flags = 0x6 | 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
tr->langopts.accents = 2; // "capital" after letter name | tr->langopts.accents = 2; // "capital" after letter name | ||||
} | } | ||||
break; | break; | ||||
SetupTranslator(tr,stress_lengths_is,NULL); | SetupTranslator(tr,stress_lengths_is,NULL); | ||||
tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
tr->langopts.stress_flags = 0x10; | |||||
tr->langopts.stress_flags = S_FINAL_NO_2; | |||||
tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels | tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels | ||||
tr->langopts.param[LOPT_REDUCE] = 2; | tr->langopts.param[LOPT_REDUCE] = 2; | ||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; | |||||
tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS; | |||||
tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
tr->langopts.unstressed_wd1 = 2; | tr->langopts.unstressed_wd1 = 2; | ||||
tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
{ | { | ||||
// character codes offset by 0x1080 | // character codes offset by 0x1080 | ||||
static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; | static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; | ||||
static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, | |||||
0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; | |||||
static const char ka_consonants[] = | |||||
{0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x41,0x42,0x44, | |||||
0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; | |||||
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | ||||
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | ||||
SetLetterBits(tr,LETTERGP_A,ka_vowels); | SetLetterBits(tr,LETTERGP_A,ka_vowels); | ||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
tr->charset_a0 = charsets[4]; // ISO-8859-4 | tr->charset_a0 = charsets[4]; // ISO-8859-4 | ||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT; | ||||
tr->langopts.stress_flags = 0x16 + 0x40000; | |||||
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1; | |||||
} | } | ||||
break; | break; | ||||
break; | break; | ||||
case L('t','t'): // Tatar | case L('t','t'): // Tatar | ||||
{ | |||||
{ | |||||
SetCyrillicLetters(tr); | SetCyrillicLetters(tr); | ||||
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | ||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | ||||
} | |||||
break; | |||||
} | |||||
break; | |||||
case L('u','k'): // Ukrainian | case L('u','k'): // Ukrainian | ||||
{ | { | ||||
break; | break; | ||||
case L('u','r'): // Urdu | case L('u','r'): // Urdu | ||||
{ | |||||
tr->letter_bits_offset = OFFSET_ARABIC; | tr->letter_bits_offset = OFFSET_ARABIC; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.numbers = NUM_SWAP_TENS; | tr->langopts.numbers = NUM_SWAP_TENS; | ||||
tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | ||||
} | |||||
break; | break; | ||||
case L('v','i'): // Vietnamese | case L('v','i'): // Vietnamese |
// alphabet flags | // alphabet flags | ||||
#define AL_DONT_NAME 0x01 // don't speak the alphabet name | #define AL_DONT_NAME 0x01 // don't speak the alphabet name | ||||
#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters | #define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters | ||||
#define AL_WORDS 0x04 // use the language to speak words | |||||
#define AL_WORDS 0x04 // use the language to speak words | |||||
#define AL_NOT_CODE 0x08 // don't speak the character code | |||||
#define N_LOPTS 21 | #define N_LOPTS 21 | ||||
#define S_INITIAL_2 0x2000 | #define S_INITIAL_2 0x2000 | ||||
// bit13= If there is only one syllable before the primary stress, give it a secondary stress | // bit13= If there is only one syllable before the primary stress, give it a secondary stress | ||||
#define S_MID_DIM 0x10000 | |||||
// bit 16= Set (not first or last) syllables to diminished stress | |||||
#define S_PRIORITY_STRESS 0x20000 | #define S_PRIORITY_STRESS 0x20000 | ||||
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | ||||
#define S_EO_CLAUSE1 0x40000 | #define S_EO_CLAUSE1 0x40000 | ||||
// bit18= don't lengthen short vowels more than long vowels at end-of-clause | // bit18= don't lengthen short vowels more than long vowels at end-of-clause | ||||
#define S_FINAL_LONG 0x80000 | |||||
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
#define S_HYPEN_UNSTRESS 0x100000 | #define S_HYPEN_UNSTRESS 0x100000 | ||||
// bit20= hyphenated words, 2nd part is unstressed | // bit20= hyphenated words, 2nd part is unstressed | ||||
// bit21= don't lengthen vowels at end-of-clause | // bit21= don't lengthen vowels at end-of-clause | ||||
// bit15= Give stress to the first unstressed syllable | // bit15= Give stress to the first unstressed syllable | ||||
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
int stress_flags; | int stress_flags; | ||||
const char *transpose_map; | const char *transpose_map; | ||||
char dictionary_name[40]; | char dictionary_name[40]; | ||||
char phon_out[400]; | |||||
char phon_out[500]; | |||||
char phonemes_repeat[20]; | char phonemes_repeat[20]; | ||||
int phonemes_repeat_count; | int phonemes_repeat_count; | ||||
int phoneme_tab_ix; | int phoneme_tab_ix; |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||||
* Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
* email: [email protected] * | * email: [email protected] * | ||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
{"unknown", 0}, | {"unknown", 0}, | ||||
{"male", 1}, | {"male", 1}, | ||||
{"female", 2}, | {"female", 2}, | ||||
{NULL, 0 }}; | |||||
{NULL, 0 } | |||||
}; | |||||
int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; | int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; | ||||
//int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0}; | //int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0}; | ||||
V_STRESSADD, | V_STRESSADD, | ||||
V_DICTRULES, | V_DICTRULES, | ||||
V_STRESSRULE, | V_STRESSRULE, | ||||
V_STRESSOPT, | |||||
V_CHARSET, | V_CHARSET, | ||||
V_NUMBERS, | V_NUMBERS, | ||||
V_OPTION, | V_OPTION, | ||||
static MNEM_TAB options_tab[] = { | static MNEM_TAB options_tab[] = { | ||||
{"reduce_t", LOPT_REDUCE_T}, | {"reduce_t", LOPT_REDUCE_T}, | ||||
{"bracket", LOPT_BRACKET_PAUSE}, | {"bracket", LOPT_BRACKET_PAUSE}, | ||||
{NULL, -1} }; | |||||
{NULL, -1} | |||||
}; | |||||
static MNEM_TAB keyword_tab[] = { | static MNEM_TAB keyword_tab[] = { | ||||
{"name", V_NAME}, | {"name", V_NAME}, | ||||
{"formant", V_FORMANT}, | {"formant", V_FORMANT}, | ||||
{"pitch", V_PITCH}, | {"pitch", V_PITCH}, | ||||
{"phonemes", V_PHONEMES}, | {"phonemes", V_PHONEMES}, | ||||
{"translator", V_TRANSLATOR}, | |||||
{"translator", V_TRANSLATOR}, | |||||
{"dictionary", V_DICTIONARY}, | {"dictionary", V_DICTIONARY}, | ||||
{"stressLength", V_STRESSLENGTH}, | {"stressLength", V_STRESSLENGTH}, | ||||
{"stressAmp", V_STRESSAMP}, | {"stressAmp", V_STRESSAMP}, | ||||
{"tunes", V_TUNES}, | {"tunes", V_TUNES}, | ||||
{"dictrules", V_DICTRULES}, | {"dictrules", V_DICTRULES}, | ||||
{"stressrule", V_STRESSRULE}, | {"stressrule", V_STRESSRULE}, | ||||
{"stressopt", V_STRESSOPT}, | |||||
{"charset", V_CHARSET}, | {"charset", V_CHARSET}, | ||||
{"replace", V_REPLACE}, | {"replace", V_REPLACE}, | ||||
{"words", V_WORDGAP}, | {"words", V_WORDGAP}, | ||||
{"l_sonorant_min", 0x100+LOPT_SONORANT_MIN}, | {"l_sonorant_min", 0x100+LOPT_SONORANT_MIN}, | ||||
{"l_length_mods", 0x100+LOPT_LENGTH_MODS}, | {"l_length_mods", 0x100+LOPT_LENGTH_MODS}, | ||||
{"apostrophe", 0x100+LOPT_APOSTROPHE}, | {"apostrophe", 0x100+LOPT_APOSTROPHE}, | ||||
{NULL, 0} }; | |||||
{NULL, 0} | |||||
}; | |||||
#define N_VOICE_VARIANTS 12 | #define N_VOICE_VARIANTS 12 | ||||
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; | const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; | ||||
tone_pts[ix] = -1; | tone_pts[ix] = -1; | ||||
sscanf(string,"%d %d %d %d %d %d %d %d %d %d", | sscanf(string,"%d %d %d %d %d %d %d %d %d %d", | ||||
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3], | |||||
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7], | |||||
&tone_pts[8],&tone_pts[9]); | |||||
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3], | |||||
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7], | |||||
&tone_pts[8],&tone_pts[9]); | |||||
} | } | ||||
while(isspace(*p)) p++; | while(isspace(*p)) p++; | ||||
strncpy0(vname,p,sizeof(vname)); | strncpy0(vname,p,sizeof(vname)); | ||||
} | } | ||||
else | |||||
if(memcmp(linebuf,"language",8)==0) | |||||
else if(memcmp(linebuf,"language",8)==0) | |||||
{ | { | ||||
priority = DEFAULT_LANGUAGE_PRIORITY; | priority = DEFAULT_LANGUAGE_PRIORITY; | ||||
vlanguage[0] = 0; | vlanguage[0] = 0; | ||||
n_languages++; | n_languages++; | ||||
} | } | ||||
} | } | ||||
else | |||||
if(memcmp(linebuf,"gender",6)==0) | |||||
else if(memcmp(linebuf,"gender",6)==0) | |||||
{ | { | ||||
sscanf(&linebuf[6],"%s %d",vgender,&age); | sscanf(&linebuf[6],"%s %d",vgender,&age); | ||||
} | } | ||||
else | |||||
if(memcmp(linebuf,"variants",8)==0) | |||||
else if(memcmp(linebuf,"variants",8)==0) | |||||
{ | { | ||||
sscanf(&linebuf[8],"%d",&n_variants); | sscanf(&linebuf[8],"%d",&n_variants); | ||||
} | } | ||||
// Adjustment of harmonic amplitudes, steps of 8Hz | // Adjustment of harmonic amplitudes, steps of 8Hz | ||||
// value of 128 means no change | // value of 128 means no change | ||||
// memset(voice->tone_adjust,128,sizeof(voice->tone_adjust)); | // memset(voice->tone_adjust,128,sizeof(voice->tone_adjust)); | ||||
SetToneAdjust(voice,tone_points); | |||||
SetToneAdjust(voice,tone_points); | |||||
// default values of speed factors | // default values of speed factors | ||||
voice->speedf1 = 256; | voice->speedf1 = 256; | ||||
// Read 8 integer numbers | // Read 8 integer numbers | ||||
memset(data, 0, 8+sizeof(int)); | memset(data, 0, 8+sizeof(int)); | ||||
return(sscanf(data_in,"%d %d %d %d %d %d %d %d", | return(sscanf(data_in,"%d %d %d %d %d %d %d %d", | ||||
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7])); | |||||
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7])); | |||||
} | } | ||||
char buf[sizeof(path_home)+30]; | char buf[sizeof(path_home)+30]; | ||||
char path_voices[sizeof(path_home)+12]; | char path_voices[sizeof(path_home)+12]; | ||||
int dict_min = 0; | |||||
int dict_min = 0; | |||||
int stress_amps[8]; | int stress_amps[8]; | ||||
int stress_lengths[8]; | int stress_lengths[8]; | ||||
int stress_add[8]; | int stress_add[8]; | ||||
static char voice_name[40]; // voice name for current_voice_selected | static char voice_name[40]; // voice name for current_voice_selected | ||||
static char voice_languages[100]; // list of languages and priorities for current_voice_selected | static char voice_languages[100]; // list of languages and priorities for current_voice_selected | ||||
// which directory to look for a named voice | |||||
static const char *voices_asia = | |||||
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | |||||
static const char *voices_europe = | |||||
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||||
// which directory to look for a named voice | |||||
static const char *voices_asia = | |||||
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | |||||
static const char *voices_europe = | |||||
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||||
strncpy0(voicename, vname, sizeof(voicename)); | strncpy0(voicename, vname, sizeof(voicename)); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(voicename[0]==0) | |||||
strcpy(voicename,"default"); | |||||
if(voicename[0]==0) | |||||
strcpy(voicename,"default"); | |||||
sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | ||||
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | ||||
if(GetFileLength(buf) <= 0) | if(GetFileLength(buf) <= 0) | ||||
{ | { | ||||
// then look in the appropriate subdirectory | |||||
if((voicename[0]=='m') && (voicename[1]=='b')) | |||||
{ | |||||
voice_dir = "mb"; // mbrola voices | |||||
} | |||||
else | |||||
{ | |||||
sprintf(name2, "%s ", voicename); | |||||
if(strstr(voices_europe, voicename) != NULL) | |||||
voice_dir = "europe"; | |||||
else | |||||
if(strstr(voices_asia, voicename) != NULL) | |||||
voice_dir = "asia"; | |||||
else | |||||
voice_dir = "other"; | |||||
sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename); | |||||
if(GetFileLength(buf) <= 0) | |||||
{ | |||||
// if not found, look in "test" sub-directory | |||||
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); | |||||
} | |||||
} | |||||
// then look in the appropriate subdirectory | |||||
if((voicename[0]=='m') && (voicename[1]=='b')) | |||||
{ | |||||
voice_dir = "mb"; // mbrola voices | |||||
} | |||||
else | |||||
{ | |||||
sprintf(name2, "%s ", voicename); | |||||
if(strstr(voices_europe, voicename) != NULL) | |||||
voice_dir = "europe"; | |||||
else if(strstr(voices_asia, voicename) != NULL) | |||||
voice_dir = "asia"; | |||||
else | |||||
voice_dir = "other"; | |||||
sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename); | |||||
if(GetFileLength(buf) <= 0) | |||||
{ | |||||
// if not found, look in "test" sub-directory | |||||
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
switch(key) | switch(key) | ||||
{ | { | ||||
case V_LANGUAGE: | case V_LANGUAGE: | ||||
{ | |||||
unsigned int len; | |||||
int priority; | |||||
{ | |||||
unsigned int len; | |||||
int priority; | |||||
if(tone_only) | |||||
break; | |||||
if(tone_only) | |||||
break; | |||||
priority = DEFAULT_LANGUAGE_PRIORITY; | |||||
language_name[0] = 0; | |||||
priority = DEFAULT_LANGUAGE_PRIORITY; | |||||
language_name[0] = 0; | |||||
sscanf(p,"%s %d",language_name,&priority); | |||||
if(strcmp(language_name,"variant") == 0) | |||||
break; | |||||
sscanf(p,"%s %d",language_name,&priority); | |||||
if(strcmp(language_name,"variant") == 0) | |||||
break; | |||||
len = strlen(language_name) + 2; | |||||
// check for space in languages[] | |||||
if(len < (sizeof(voice_languages)-langix-1)) | |||||
{ | |||||
voice_languages[langix] = priority; | |||||
len = strlen(language_name) + 2; | |||||
// check for space in languages[] | |||||
if(len < (sizeof(voice_languages)-langix-1)) | |||||
{ | |||||
voice_languages[langix] = priority; | |||||
strcpy(&voice_languages[langix+1],language_name); | |||||
langix += len; | |||||
} | |||||
strcpy(&voice_languages[langix+1],language_name); | |||||
langix += len; | |||||
} | |||||
// only act on the first language line | |||||
if(language_set == 0) | |||||
{ | |||||
language_type = strtok(language_name,"-"); | |||||
language_set = 1; | |||||
strcpy(translator_name,language_type); | |||||
strcpy(new_dictionary,language_type); | |||||
strcpy(phonemes_name,language_type); | |||||
SelectPhonemeTableName(phonemes_name); | |||||
// only act on the first language line | |||||
if(language_set == 0) | |||||
{ | |||||
language_type = strtok(language_name,"-"); | |||||
language_set = 1; | |||||
strcpy(translator_name,language_type); | |||||
strcpy(new_dictionary,language_type); | |||||
strcpy(phonemes_name,language_type); | |||||
SelectPhonemeTableName(phonemes_name); | |||||
if(new_translator != NULL) | |||||
DeleteTranslator(new_translator); | |||||
new_translator = SelectTranslator(translator_name); | |||||
langopts = &new_translator->langopts; | |||||
} | |||||
if(new_translator != NULL) | |||||
DeleteTranslator(new_translator); | |||||
new_translator = SelectTranslator(translator_name); | |||||
langopts = &new_translator->langopts; | |||||
} | } | ||||
break; | |||||
} | |||||
break; | |||||
case V_NAME: | case V_NAME: | ||||
if(tone_only == 0) | if(tone_only == 0) | ||||
break; | break; | ||||
case V_GENDER: | case V_GENDER: | ||||
{ | |||||
int age = 0; | |||||
char vgender[80]; | |||||
sscanf(p,"%s %d",vgender,&age); | |||||
current_voice_selected.gender = LookupMnem(genders,vgender); | |||||
current_voice_selected.age = age; | |||||
} | |||||
break; | |||||
{ | |||||
int age = 0; | |||||
char vgender[80]; | |||||
sscanf(p,"%s %d",vgender,&age); | |||||
current_voice_selected.gender = LookupMnem(genders,vgender); | |||||
current_voice_selected.age = age; | |||||
} | |||||
break; | |||||
case V_TRANSLATOR: | case V_TRANSLATOR: | ||||
if(tone_only) break; | if(tone_only) break; | ||||
sscanf(p,"%s",translator_name); | sscanf(p,"%s",translator_name); | ||||
if(new_translator != NULL) | if(new_translator != NULL) | ||||
DeleteTranslator(new_translator); | |||||
DeleteTranslator(new_translator); | |||||
new_translator = SelectTranslator(translator_name); | new_translator = SelectTranslator(translator_name); | ||||
langopts = &new_translator->langopts; | langopts = &new_translator->langopts; | ||||
break; | break; | ||||
case V_PITCH: | case V_PITCH: | ||||
{ | |||||
double factor; | |||||
// default is pitch 82 118 | |||||
n = sscanf(p,"%d %d",&pitch1,&pitch2); | |||||
voice->pitch_base = (pitch1 - 9) << 12; | |||||
voice->pitch_range = (pitch2 - pitch1) * 108; | |||||
factor = double(pitch1 - 82)/82; | |||||
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch | |||||
} | |||||
break; | |||||
{ | |||||
double factor; | |||||
// default is pitch 82 118 | |||||
n = sscanf(p,"%d %d",&pitch1,&pitch2); | |||||
voice->pitch_base = (pitch1 - 9) << 12; | |||||
voice->pitch_range = (pitch2 - pitch1) * 108; | |||||
factor = double(pitch1 - 82)/82; | |||||
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch | |||||
} | |||||
break; | |||||
case V_STRESSLENGTH: // stressLength | case V_STRESSLENGTH: // stressLength | ||||
stress_lengths_set = Read8Numbers(p,stress_lengths); | stress_lengths_set = Read8Numbers(p,stress_lengths); | ||||
case V_DICTRULES: // conditional dictionary rules and list entries | case V_DICTRULES: // conditional dictionary rules and list entries | ||||
case V_NUMBERS: | case V_NUMBERS: | ||||
// expect a list of numbers | |||||
case V_STRESSOPT: | |||||
// expect a list of numbers | |||||
while(*p != 0) | while(*p != 0) | ||||
{ | { | ||||
while(isspace(*p)) p++; | while(isspace(*p)) p++; | ||||
if((n = atoi(p)) > 0) | if((n = atoi(p)) > 0) | ||||
{ | { | ||||
p++; | p++; | ||||
if((key==V_DICTRULES) && (n < 32)) | |||||
conditional_rules |= (1 << n); | |||||
if(n < 32) | |||||
{ | |||||
if(key==V_DICTRULES) | |||||
conditional_rules |= (1 << n); | |||||
else if(key==V_NUMBERS) | |||||
langopts->numbers |= (1 << n); | |||||
else if(key==V_STRESSOPT) | |||||
langopts->stress_flags |= (1 << n); | |||||
} | |||||
else | else | ||||
if((key==V_NUMBERS) && (n < 32)) | |||||
langopts->numbers |= (1 << n); | |||||
else | |||||
if((key==V_NUMBERS) && (n < 64)) | |||||
langopts->numbers |= (1 << (n-32)); | |||||
else | |||||
fprintf(stderr,"Bad option number %d\n", n); | |||||
{ | |||||
if((key==V_NUMBERS) && (n < 64)) | |||||
langopts->numbers |= (1 << (n-32)); | |||||
else | |||||
fprintf(stderr,"Bad option number %d\n", n); | |||||
} | |||||
} | } | ||||
while(isalnum(*p)) p++; | while(isalnum(*p)) p++; | ||||
} | } | ||||
case V_STRESSRULE: | case V_STRESSRULE: | ||||
sscanf(p,"%d %d %d %d",&langopts->stress_rule, | sscanf(p,"%d %d %d %d",&langopts->stress_rule, | ||||
&langopts->stress_flags, | |||||
&langopts->unstressed_wd1, | |||||
&langopts->unstressed_wd2); | |||||
&langopts->stress_flags, | |||||
&langopts->unstressed_wd1, | |||||
&langopts->unstressed_wd2); | |||||
break; | break; | ||||
case V_CHARSET: | case V_CHARSET: | ||||
break; | break; | ||||
case V_TONE: | case V_TONE: | ||||
{ | |||||
int tone_data[12]; | |||||
ReadTonePoints(p,tone_data); | |||||
SetToneAdjust(voice,tone_data); | |||||
} | |||||
break; | |||||
{ | |||||
int tone_data[12]; | |||||
ReadTonePoints(p,tone_data); | |||||
SetToneAdjust(voice,tone_data); | |||||
} | |||||
break; | |||||
case V_VOICING: | case V_VOICING: | ||||
if(sscanf(p,"%d",&value)==1) | if(sscanf(p,"%d",&value)==1) | ||||
break; | break; | ||||
case V_BREATH: | case V_BREATH: | ||||
voice->breath[0] = Read8Numbers(p,&voice->breath[1]); | |||||
for(ix=1; ix<8; ix++) | |||||
{ | |||||
if(ix % 2) | |||||
voice->breath[ix] = -voice->breath[ix]; | |||||
} | |||||
voice->breath[0] = Read8Numbers(p,&voice->breath[1]); | |||||
for(ix=1; ix<8; ix++) | |||||
{ | |||||
if(ix % 2) | |||||
voice->breath[ix] = -voice->breath[ix]; | |||||
} | |||||
break; | break; | ||||
case V_BREATHW: | case V_BREATHW: | ||||
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); | |||||
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); | |||||
break; | break; | ||||
case V_CONSONANTS: | case V_CONSONANTS: | ||||
break; | break; | ||||
case V_MBROLA: | case V_MBROLA: | ||||
{ | |||||
int srate = 16000; | |||||
char name[40]; | |||||
char phtrans[40]; | |||||
{ | |||||
int srate = 16000; | |||||
char name[40]; | |||||
char phtrans[40]; | |||||
phtrans[0] = 0; | |||||
sscanf(p,"%s %s %d",name,phtrans,&srate); | |||||
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK) | |||||
{ | |||||
fprintf(stderr,"mbrola voice not found\n"); | |||||
} | |||||
voice->samplerate = srate; | |||||
phtrans[0] = 0; | |||||
sscanf(p,"%s %s %d",name,phtrans,&srate); | |||||
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK) | |||||
{ | |||||
fprintf(stderr,"mbrola voice not found\n"); | |||||
} | } | ||||
break; | |||||
voice->samplerate = srate; | |||||
} | |||||
break; | |||||
case V_KLATT: | case V_KLATT: | ||||
voice->klattv[0] = 1; // default source: IMPULSIVE | voice->klattv[0] = 1; // default source: IMPULSIVE | ||||
SetSpeed(3); | SetSpeed(3); | ||||
break; | break; | ||||
case V_DICTMIN: | |||||
case V_DICTMIN: | |||||
sscanf(p,"%d",&dict_min); | sscanf(p,"%d",&dict_min); | ||||
break; | |||||
break; | |||||
default: | default: | ||||
if((key & 0xff00) == 0x100) | if((key & 0xff00) == 0x100) | ||||
} | } | ||||
voice->phoneme_tab_ix = ix; | voice->phoneme_tab_ix = ix; | ||||
new_translator->phoneme_tab_ix = ix; | new_translator->phoneme_tab_ix = ix; | ||||
new_translator->dict_min_size = dict_min; | |||||
new_translator->dict_min_size = dict_min; | |||||
LoadDictionary(new_translator, new_dictionary, control & 4); | LoadDictionary(new_translator, new_dictionary, control & 4); | ||||
if(dictionary_name[0]==0) | if(dictionary_name[0]==0) | ||||
return(NULL); // no dictionary loaded | return(NULL); // no dictionary loaded | ||||
// match on voice name | // match on voice name | ||||
score += 500; | score += 500; | ||||
} | } | ||||
else | |||||
if(strcmp(voice_spec->name,voice->identifier)==0) | |||||
else if(strcmp(voice_spec->name,voice->identifier)==0) | |||||
{ | { | ||||
score += 400; | score += 400; | ||||
} | } | ||||
} | } | ||||
if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) && | if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) && | ||||
((voice->gender == 1) || (voice->gender == 2))) | |||||
((voice->gender == 1) || (voice->gender == 2))) | |||||
{ | { | ||||
if(voice_spec->gender == voice->gender) | if(voice_spec->gender == voice->gender) | ||||
score += 50; | score += 50; | ||||
{ | { | ||||
match_fname = ix; // matching identifier, use this if no matching name | match_fname = ix; // matching identifier, use this if no matching name | ||||
} | } | ||||
else | |||||
if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||||
else if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) | |||||
{ | { | ||||
match_fname2 = ix; | match_fname2 = ix; | ||||
} | } | ||||
gender = 0; | gender = 0; | ||||
if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13))) | if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13))) | ||||
gender = 2; | gender = 2; | ||||
else | |||||
if(voice_select2.gender == 1) | |||||
else if(voice_select2.gender == 1) | |||||
gender = 1; | gender = 1; | ||||
#define AGE_OLD 60 | #define AGE_OLD 60 | ||||
} | } | ||||
#else | #else | ||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
WIN32_FIND_DATAA FindFileData; | |||||
HANDLE hFind = INVALID_HANDLE_VALUE; | |||||
WIN32_FIND_DATAA FindFileData; | |||||
HANDLE hFind = INVALID_HANDLE_VALUE; | |||||
#undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string | #undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string | ||||
sprintf(fname,"%s\\*",path); | sprintf(fname,"%s\\*",path); | ||||
if(FindFileData.cFileName[0] != '.') | if(FindFileData.cFileName[0] != '.') | ||||
{ | { | ||||
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
ftype = GetFileLength(fname); | |||||
if(ftype == -2) | |||||
{ | |||||
// a sub-sirectory | |||||
GetVoices(fname); | |||||
} | |||||
else | |||||
if(ftype > 0) | |||||
{ | |||||
// a regular line, add it to the voices list | |||||
if((f_voice = fopen(fname,"r")) == NULL) | |||||
continue; | |||||
// pass voice file name within the voices directory | |||||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
fclose(f_voice); | |||||
if(voice_data != NULL) | |||||
{ | |||||
voices_list[n_voices_list++] = voice_data; | |||||
} | |||||
} | |||||
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
ftype = GetFileLength(fname); | |||||
if(ftype == -2) | |||||
{ | |||||
// a sub-sirectory | |||||
GetVoices(fname); | |||||
} | |||||
else if(ftype > 0) | |||||
{ | |||||
// a regular line, add it to the voices list | |||||
if((f_voice = fopen(fname,"r")) == NULL) | |||||
continue; | |||||
// pass voice file name within the voices directory | |||||
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
fclose(f_voice); | |||||
if(voice_data != NULL) | |||||
{ | |||||
voices_list[n_voices_list++] = voice_data; | |||||
} | |||||
} | |||||
} | } | ||||
} while(FindNextFileA(hFind, &FindFileData) != 0); | } while(FindNextFileA(hFind, &FindFileData) != 0); | ||||
FindClose(hFind); | FindClose(hFind); | ||||
if(n_voices_list >= (N_VOICES_LIST-2)) | if(n_voices_list >= (N_VOICES_LIST-2)) | ||||
break; // voices list is full | break; // voices list is full | ||||
if(ent->d_name[0] == '.') | |||||
continue; | |||||
if(ent->d_name[0] == '.') | |||||
continue; | |||||
sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | ||||
// a sub-sirectory | // a sub-sirectory | ||||
GetVoices(fname); | GetVoices(fname); | ||||
} | } | ||||
else | |||||
if(ftype > 0) | |||||
else if(ftype > 0) | |||||
{ | { | ||||
// a regular line, add it to the voices list | // a regular line, add it to the voices list | ||||
if((f_voice = fopen(fname,"r")) == NULL) | if((f_voice = fopen(fname,"r")) == NULL) | ||||
variant_name = ExtractVoiceVariantName(buf, 0, 1); | variant_name = ExtractVoiceVariantName(buf, 0, 1); | ||||
for(ix=0; ;ix++) | |||||
for(ix=0; ; ix++) | |||||
{ | { | ||||
// convert voice name to lower case (ascii) | // convert voice name to lower case (ascii) | ||||
if((buf[ix] = tolower(buf[ix])) == 0) | if((buf[ix] = tolower(buf[ix])) == 0) | ||||
// sort the voices list | // sort the voices list | ||||
qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), | qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), | ||||
(int (__cdecl *)(const void *,const void *))VoiceNameSorter); | |||||
(int (__cdecl *)(const void *,const void *))VoiceNameSorter); | |||||
if(voice_spec) | if(voice_spec) |