Reinstate language "az" (Azerbaijani) as a test voice. Language changes: ga, hy, pt, sk. Generate character names for subscript and superscript letters and digits. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@347 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -0,0 +1,110 @@ | |||
// This file is UTF8 encoded | |||
// Spelling to phoneme rules for Azerbaijani | |||
// Numbers | |||
_0 s@f'@R | |||
_1 b'iR | |||
_2 ic'i | |||
_3 'ytS | |||
_4 d'WRd | |||
_5 b'eS | |||
_6 alt'@ | |||
_7 jedd'i | |||
_8 s&Cc'iz | |||
_9 dogg'uz | |||
_1X 'on | |||
_2X ijiRm'i | |||
_3X ot'uz | |||
_4X g'@Rx | |||
_5X &ll'i | |||
_6X altm'@S | |||
_7X jetm'iS | |||
_8X s&Cs'&n | |||
_9X doxs'an | |||
_0C j'yz | |||
_0M1 m'in | |||
_0M2 milj'on | |||
_0M3 milj'aRd | |||
_dpt _t,am_| // ?? | |||
// Function words | |||
// personal pronouns | |||
mən $u+ | |||
sən $u+ | |||
o $u+ | |||
biz $u+ | |||
siz $u+ | |||
onlar $u+ | |||
// possessive pronouns | |||
mənim $u+ | |||
sənin $u+ | |||
onun $u+ | |||
bizim $u+ | |||
sizin $u+ | |||
onların $u+ | |||
bu $u+ | |||
// conjunctions | |||
və $u+ | |||
isə $u+ | |||
də $u+ | |||
həm $u+ | |||
ya $u+ | |||
da $u+ | |||
// prepositions | |||
aid $u+ // about | |||
ilə $u+ // with, by, in | |||
dair $u+ // about | |||
// postpositions | |||
ci $u | |||
cı $u | |||
cü $u | |||
de $u | |||
dir $u | |||
li $u | |||
in $u | |||
nə $u | |||
ya $u | |||
yə $u | |||
// Character names | |||
b be | |||
c dZe | |||
ç tSe | |||
_ə & | |||
d de | |||
f fe | |||
g Je | |||
ğ Qe | |||
h he | |||
x xe | |||
j Ze | |||
k ka | |||
q ge | |||
l el | |||
m em | |||
n en | |||
_o o | |||
p pe | |||
r eR | |||
s se | |||
ş Se | |||
t te | |||
v ve | |||
w dubElv'E | |||
y je | |||
z ze | |||
* ulduz $text | |||
% faiz $text | |||
@@ -0,0 +1,137 @@ | |||
// This file is UTF8 encoded | |||
// Spelling to phoneme rules for Azerbaijani | |||
// Stress rule: Right-most vowel, but stop before the vowel which is | |||
// marked as unstressed [%]. | |||
.L02 ı a o u // back vowels | |||
.L03 i e ö ü | |||
.group a | |||
a a | |||
ai (K aI | |||
-) a (_ a | |||
.group b | |||
b b | |||
.group c | |||
c dZ | |||
.group ç | |||
ç tS | |||
.group d | |||
d d | |||
-) dan (_ d%an | |||
-) dən (_ d%&n | |||
-) dək (_ d%&k | |||
.group e | |||
e e | |||
.group ə | |||
ə & | |||
@) ə (_ %& | |||
-) ə (_ %& | |||
.group f | |||
f f | |||
.group g | |||
g J | |||
.group ğ | |||
ğ Q | |||
A) ğ : | |||
a) ğa : | |||
o) ğo : | |||
u) ğu : | |||
ö) ğö : | |||
ü) ğü : | |||
i) ğ j | |||
e) ğ j | |||
.group h | |||
h h | |||
.group x | |||
x x | |||
.group ı | |||
ı @ | |||
.group i | |||
i i | |||
@) iya (_ =i;a | |||
.group j | |||
j Z | |||
.group k | |||
k c | |||
k (K C | |||
.group q | |||
q g | |||
q (_ x | |||
.group l | |||
l l | |||
l (L02 L | |||
L02) l (K L | |||
.group m | |||
m m | |||
.group n | |||
n n | |||
.group o | |||
o o | |||
.group ö | |||
ö W | |||
.group p | |||
p p | |||
.group r | |||
r R | |||
A) r (A * | |||
ğ) r (A * | |||
C) r (_ @-r | |||
.group s | |||
s s | |||
.group ş | |||
ş S | |||
.group t | |||
t t | |||
L03) t (L03 ts | |||
.group u | |||
u u | |||
.group ü | |||
ü y | |||
.group v | |||
v v | |||
.group w | |||
w w | |||
.group y | |||
y j | |||
.group z | |||
z z | |||
.group | |||
ä & |
@@ -9,15 +9,15 @@ _0 S'unjO | |||
_1 '&k | |||
_2 d'uj | |||
_3 t'in | |||
_4 tS'ar | |||
_4 tSh'ar | |||
_5 p'a~tS | |||
_6 tSh'Oj | |||
_6 tS#'Oj | |||
_7 S'at | |||
_8 'at.# | |||
_9 n'Oj | |||
_2a d'u // with hundreds etc. | |||
_6a tSh'O | |||
_6a tS#'O | |||
_9a n'O | |||
@@ -25,7 +25,7 @@ _10 d'OS | |||
_11 '&garo | |||
_12 b'arO | |||
_13 t'erO | |||
_14 tS'oddO | |||
_14 tSh'oddO | |||
_15 p'OnerO | |||
_16 S'olO | |||
_17 S'OterO |
@@ -176,8 +176,8 @@ | |||
.group ছ | |||
ছ tS#V | |||
ছ (B tS# | |||
ছ tShV | |||
ছ (B tSh | |||
.group জ |
@@ -63,6 +63,8 @@ _#32 l'e:rts'aIC@n | |||
_?? zymb'o:l | |||
_?A b'u:xstA:b@ | |||
_cap gr'o:s | |||
_sub 'Unt@R|3_!,IndEks|| | |||
_sup 'o:b@R|3_!,IndEks|| | |||
// accent names |
@@ -36,6 +36,17 @@ Q r R R2 s S t T | |||
t# tS w x | |||
Dictionary az_dict 2013-04-25 | |||
& @ @- a aI e E i | |||
o u W y | |||
* : ; b c C d dZ | |||
f g h j J k l L | |||
m n p Q r R s S | |||
t tS ts v w x z Z | |||
Dictionary bg_dict 2013-03-16 | |||
@ a e i o u | |||
@@ -47,7 +58,7 @@ s; t t; tS ts v x z | |||
Z z; | |||
Dictionary bn_dict 2013-04-18 | |||
Dictionary bn_dict 2013-04-25 | |||
& a a~ e e~ i i: i~ | |||
l- o O o: O~ o~ r- u | |||
@@ -113,7 +124,7 @@ r R R3 s S t T tS | |||
v w x z Z | |||
Dictionary de_dict 2013-03-10 | |||
Dictionary de_dict 2013-04-25 | |||
3 @ @- a A A: aI aU | |||
A~ E E2 E: e: EI i I | |||
@@ -137,7 +148,7 @@ p Q r R s s; t T | |||
ts v x z | |||
Dictionary en_dict 2013-04-23 | |||
Dictionary en_dict 2013-04-25 | |||
0 0# 3 3: @ @- @2 @5 | |||
@L a a# A: A@ aa aI aI3 | |||
@@ -225,7 +236,7 @@ p2 r r2 s S t t2 t3 | |||
tS v z Z z2 z3 | |||
Dictionary ga_dict 2013-03-20 | |||
Dictionary ga_dict 2013-04-25 | |||
0 0# @ a a# A: aI aI# | |||
aU aU# e E E# e: eI i | |||
@@ -288,15 +299,16 @@ S s2 t t2 tS ts v w | |||
z Z | |||
Dictionary hy_dict 2008-12-22 | |||
Dictionary hy_dict 2013-04-25 | |||
@ a aI e eI i i@ o | |||
u W y | |||
** b c d dZ dz f g | |||
h j k k# l m n p | |||
p# r R r" s S t t# | |||
tS ts ts# v X z Z | |||
* ** b c d dZ dz f | |||
g h j k k# l m n | |||
p p# r R r" R2 s S | |||
t t# tS ts ts# v X z | |||
Z | |||
Dictionary id_dict 2011-02-21 | |||
@@ -500,7 +512,7 @@ r r. s S s. t t# t. | |||
t.# v w x z | |||
Dictionary nl_dict 2013-04-23 | |||
Dictionary nl_dict 2013-04-25 | |||
8 @ @- a A a: A~ e | |||
E e# E2 e: EI eU i I | |||
@@ -536,7 +548,7 @@ R s S t tS v w x | |||
z Z | |||
Dictionary pa_dict 2013-03-17 | |||
Dictionary pa_dict 2013-04-24 | |||
@ a a~ e E e~ E~ i | |||
I i~ I~ o O o: O~ o~ | |||
@@ -545,9 +557,9 @@ r- u U U~ u~ V V~ | |||
: ; 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 r. | |||
R2 s S t t# t. t.# v | |||
x z | |||
N n. n^ p p# Q r R | |||
r. R2 s S t t# t. t.# | |||
v x z | |||
Dictionary pl_dict 2013-04-06 | |||
@@ -562,7 +574,7 @@ S s; S; t t; tS ts tS; | |||
ts; v w x z Z Z; | |||
Dictionary pt_dict 2013-04-23 | |||
Dictionary pt_dict 2013-04-25 | |||
& &/ &U~ &~ @ @- a A | |||
aI aU e E eI EI eU EU | |||
@@ -616,17 +628,17 @@ n.# n^ n^# p p# r s S | |||
s. t t# t. t.# tS v w | |||
Dictionary sk_dict 2011-08-08 | |||
Dictionary sk_dict 2013-04-25 | |||
& @- a a: e e: i i: | |||
l- l: o o: oU r- r: u | |||
u: | |||
* ; b d d; dZ dz f | |||
g h j k l l^ m n | |||
N n^ p r R R^ R^/ s | |||
S t t; tS ts v w x | |||
z Z | |||
* ; b c d d; dZ dz | |||
f g h j k l l^ m | |||
n N n^ p r R R^ R^/ | |||
s S t t; tS ts v w | |||
x z Z | |||
Dictionary sl_dict 2013-01-30 | |||
@@ -701,7 +713,7 @@ s s. S; t t# t. t.# tS | |||
v v# w z | |||
Dictionary tr_dict 2013-04-20 | |||
Dictionary tr_dict 2013-04-25 | |||
@ a e E i I o O | |||
u U W y Y |
@@ -106,6 +106,8 @@ _hok h'Uk | |||
// character names | |||
_cap k,ap@-t@L | |||
_sub s,VbskrIpt|| | |||
_sup s,u:p3skrIpt|| | |||
_?A l,Et3 | |||
_?? sImb@L | |||
_braille br'eIl | |||
@@ -2857,6 +2859,7 @@ temperature tEmprI2tS3 | |||
?!3 temporary tEmpr@rI | |||
?3 template tEmpl@t | |||
therefore $1 | |||
thereof De@r'0v | |||
thermos T3:m@s | |||
thermostable $alt1 | |||
thesis Ti:sIs | |||
@@ -3454,6 +3457,7 @@ Ada eId@ $onlys | |||
Andrea $2 | |||
Adrian eIdri@n | |||
Agatha aga#T@ | |||
Angela andZ@l@ | |||
Angelika $2 | |||
Aggie agi | |||
Agnes agn@s | |||
@@ -3605,6 +3609,7 @@ Guinevere gwInI#vi@3 | |||
Hadrian heIdri:@n | |||
Hamish heImIS | |||
Harriet hari@t | |||
Harvey hA@vi | |||
Heidi haIdi | |||
Hecate hEk@teI | |||
Hekate hEk@teI | |||
@@ -3662,6 +3667,7 @@ Louise lu:w'i:z | |||
Luigi lu:'i:dZi | |||
Luis lu:Is | |||
Lupe lu:peI | |||
Luther lu:T3 | |||
Madeleine mad@lI2n | |||
Madeline mad@lI2n | |||
Maeve meIv | |||
@@ -3781,6 +3787,7 @@ Vanessa $alt3 | |||
Wallace w0lI#s | |||
Wally w0li | |||
?3 William wIlj@m | |||
Yerevan jEr@v'an | |||
Yves i:v | |||
Yvonne $2 | |||
Zoe zoUi |
@@ -1,7 +1,9 @@ | |||
// Irish Gaeilge dictionary | |||
// written by Ronan McGuirk | |||
// January 2013 | |||
// version 2.5 | |||
// 2013 | |||
// version 2.6.1 | |||
// Please send comments and suggestions to [email protected] | |||
// This file is UTF8 encoded | |||
// letters | |||
@@ -47,7 +49,7 @@ _cap m'o:r | |||
// accent names | |||
// names of symbols | |||
ª_. pO#nk | |||
_. pO#nk | |||
_, k0m@ | |||
_; semI | |||
_: ko:l0n | |||
@@ -152,22 +154,26 @@ amárach @m'A:r@x | |||
amuigh @mu1'I | |||
amháin @w'A:in | |||
am aUm | |||
an @n | |||
anaithnid '0nah@nIdZ | |||
anois @nIS | |||
anonn @naUn | |||
ann aUn | |||
anseo @nS'O | |||
anuas a#n'u@s | |||
aodh e: | |||
aodha e: | |||
aon e:@n | |||
(ar ais) Er'aS | |||
arís @r'i:S | |||
as 0s | |||
aschurtha '0sxUrh@ | |||
atá @t['A: $u | |||
baill bu1'i:l | |||
bhaill vu1'i:l | |||
beidh bEg | |||
bhfuil w'Il | |||
bheas v'e:@s | |||
bhuel w'El | |||
ceithre kEr@ | |||
cathair k'0h@r | |||
@@ -176,6 +182,7 @@ clainne kl'InE | |||
chlainne xl'InE | |||
chun xUn $u | |||
crainn kri:n | |||
chrainn xri:n | |||
de dE $u+ | |||
des dEs $u | |||
@@ -184,6 +191,7 @@ di dI $u+ | |||
do dO# $u | |||
domhnach d[aUn@x | |||
domhnaigh d[aUnig | |||
dúghorm d['u:Q"Or@m | |||
eile 'El@ | |||
euro ju:ro: | |||
faic f@ak | |||
@@ -214,6 +222,7 @@ le lE $u | |||
(muigheo) mu1'i:||'o: | |||
mhuigh vu1'i: | |||
(mhaigh eo) vu1'i:||'o: | |||
mhama w'0m@ | |||
maith m'0 | |||
mhaith w'0 | |||
mbeadh m;O#X | |||
@@ -230,8 +239,10 @@ orthu O#rhu | |||
os o:s | |||
rabh raU | |||
raibh rEv | |||
raidió r'adi:o: | |||
réamhrá r'e:@vr,a: | |||
réidh re: | |||
's s | |||
samhain saUIn | |||
san s@n | |||
seo S@_ |
@@ -1,8 +1,10 @@ | |||
// translation rules for Irish Gaeilge | |||
// This file is UTF-8 encoded | |||
// written by Ronan McGuirk January 2013 | |||
// Version 2.5B | |||
// written by Ronan McGuirk 2013 | |||
// Version 2.6.1 | |||
// Please send comments and suggestions to [email protected] | |||
// Conditional rules | |||
// ?1 allow eclipsis as 2 separate words | |||
@@ -12,7 +14,7 @@ | |||
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||
.L04 b bh mb // for words like beag | |||
.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||
.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
.L06 aidh idh aí á eá eadh adh ad adsa imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||
.L07 b c g ch bh gh mb | |||
.L08 lc ll nt bhse // for words like cailc | |||
.L09 cl cr chr f | |||
@@ -21,14 +23,14 @@ | |||
.L12 á é ó eo ua // when followed by i | |||
.L13 oc omb | |||
.L14 río dún gnío // followed with mh | |||
.L15 c ch f m d dh g gc gh mh // aoi following | |||
.L15 c ch f bhf m d dh g gc gh mh // aoi following | |||
.L16 b c bh ch gr ghr // for inn word ending | |||
.L17 l le li niste nn | |||
.L18 n nt nte neann neadh ntear nim nfear nfinn | |||
.L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar | |||
.L19 na nea ra rea la llea arga // word endings with silent dh | |||
.L20 eo eoir eá eabh io iu iú // slender m | |||
.L21 ll nn ndán nntán | |||
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||
.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann | |||
.L23 ea eo i | |||
.L24 b mb bh g gh p ph bp m mh | |||
@@ -40,14 +42,16 @@ | |||
abht aU#t[ | |||
amhr aUr // words like amhras | |||
K) amhl aUl | |||
abhra aUr@ // words like slabhra | |||
abh (C aU // words like slabhra | |||
aghaidh aIg | |||
t) abhair u:@r | |||
th) abhair u:@r | |||
t) abhar u:@r | |||
th) abhar u:@r | |||
_) an (sL01 @n | |||
_) an (- 0n // an prefix | |||
_) a (nA @ | |||
_) an (_ @n | |||
_) an (- '0n // an prefix | |||
é) a @ // words like féach | |||
X) a (nn_ aU# | |||
X) a (ll_ aU# | |||
@@ -77,8 +81,9 @@ | |||
_) ao e: | |||
ae e: | |||
amhna (_ aUn@ | |||
arraing arIng | |||
_) ath (@@P3 ,0_ | |||
.group á | |||
á A: | |||
@) á ,A: | |||
@@ -89,7 +94,7 @@ | |||
áinig A:nIg | |||
ái 'A:i | |||
.group ai | |||
ai a# | |||
L04) ai (L17 0# | |||
@@ -99,6 +104,7 @@ | |||
m) ai (n 0# | |||
c) ai (th 0# | |||
ch) ai (th 0# | |||
ai (tín 0# | |||
ai (d 0# | |||
p) ai (l 0# | |||
@) ai (L11_ I | |||
@@ -112,8 +118,9 @@ | |||
X) aigh 'aI | |||
aigh aI# L04) aill (_ wi:l | |||
aing (_ Ing | |||
ai (llimh '0 // words like Gaillimh | |||
.group b | |||
b b // broad | |||
L01) b b; // slender | |||
@@ -122,7 +129,7 @@ | |||
bh (_ vv | |||
bh (L22 vj // slender | |||
L01) bh v | |||
?1 _m_) b (@ | |||
?1 _m_) b (@ | |||
_) bhf v // urú broad | |||
_) bhf (L22 v; // urú slender | |||
_) bp b // urú broad | |||
@@ -134,8 +141,10 @@ | |||
a) bh (a U // for example cabhair | |||
ear) bha u: // words like Cearbhall | |||
bhfaigh v'aI | |||
_) beann (@ ba#n | |||
_) bheann (@ va#n | |||
_) bun (C@P3 b,Un | |||
.group c | |||
c k | |||
c (L01 k; // slender | |||
@@ -143,19 +152,20 @@ | |||
ch (L01 C; | |||
ch (é+ C; | |||
ch (ei+ x; | |||
?1 _g_) c (@ | |||
?1 _g_) c (L01 | |||
?1 _g_) c (@ | |||
?1 _g_) c (L01 | |||
_) cabhr k'aUr | |||
_) chabhr x'aUr | |||
_) ceann (C@P5 k;,aUn | |||
_) cheann (C@P6 C;,aUn | |||
.group d | |||
d d[ // broad | |||
L01) d dZ // slender | |||
d (L22 dZ // slender | |||
d (L01 d; // slender | |||
i) d (i dZ | |||
?1 _n_) d (@ | |||
?1 _n_) d (@ | |||
dh Q // broad | |||
dh (ui Q // broad | |||
dh (ao Q // broad | |||
@@ -165,6 +175,11 @@ | |||
?1 _) d (_t d[ | |||
?1 _) d (_tL01 dZ | |||
_) d' (@P2 d | |||
_) d' d | |||
_) d (_'fh d | |||
d'fh (L01 d | |||
i) dh (_ g | |||
a) dh (_ X | |||
o) dh (_ X | |||
@@ -174,8 +189,9 @@ | |||
dheartháir gr@h'A:r | |||
deirfiúr d;r@f'u:r | |||
dheirfiúr g;r@f'u:r | |||
_) do (Ch@@P2 d[,U_ | |||
_) dí (@@P2 d,i: | |||
.group e | |||
e E# | |||
eá A: | |||
@@ -184,29 +200,39 @@ | |||
r) ei (m aI | |||
eighea aI | |||
eighea aI | |||
s) ei (nn aI | |||
sh) ei (nn aI | |||
eigh aI | |||
eo o: | |||
eogh o: | |||
eoi o: | |||
eogha o: | |||
eoghai o: | |||
d) eo (ch O# | |||
dh) eo (ch O# | |||
_) eo (ch O# | |||
s) eo (_ @ | |||
.group é | |||
é 'e: | |||
éi 'e: | |||
éa 'e: | |||
_) éi (rig aI // words like éirigh | |||
_h) éi (rí aI | |||
_) éi (rí aI // words like éirí | |||
_) éireoidh aIro:Ig | |||
éacs e:@ks | |||
.group ea | |||
ea a# | |||
eai a# | |||
X) ea (L21_ aU | |||
ea (ltaine aU | |||
g) ea (ll aU | |||
l) eamh (n aU | |||
dr) ea (m aU | |||
X) ea (ch 0 | |||
_L04) ea (g @ | |||
_L04) ea (dh_ @ | |||
@@ -217,7 +243,7 @@ | |||
eanbhean 'an@v,an | |||
eadhb aIb | |||
.group f | |||
f f // broad | |||
f (L22 f; // slender | |||
@@ -225,14 +251,16 @@ | |||
fh (éin_ h | |||
fh (L22 ; // slender | |||
@) f (L06_ h | |||
?1 _bh_) f (@ | |||
?1 _bh_) f (L22 ; | |||
_) fo (C@@P2 f,U | |||
_) fogh f'aU | |||
?1 _bh_) f (@ | |||
?1 _bh_) f (L22 ; | |||
.group g | |||
g g // broad | |||
g (L01 g; // slender | |||
?1 _n_) g (@ | |||
?1 _n_) g (@ | |||
_) gh Q" | |||
_) gh (L01 Q"j | |||
_) gc g // urú broad | |||
@@ -245,19 +273,24 @@ | |||
gh (n X@ | |||
gheobh j'o: | |||
gabh gaU | |||
_) gearr (C@P5 g;,aR | |||
_) ghearr (C@P6 Q"j,aR | |||
.group h | |||
h h // silent | |||
.group i | |||
i I | |||
_) i I | |||
ia i@ | |||
ia (tha i: | |||
io O# | |||
io (dá I | |||
_) io (nadh u:// words like ionadh | |||
s) io (mb I | |||
sh) io (mb I | |||
_pr) io (n u: | |||
L16) inn (_ i:n | |||
iai i:i | |||
@@ -266,12 +299,18 @@ | |||
L12) i i // non syllabic short i after long vowel | |||
iú u: | |||
m) i (d_ i: // verb ending | |||
_) in (@@P2 ,In_ | |||
_) ionad (C@@P5 ,Ona#d[ | |||
.group í | |||
í 'i: | |||
íomh 'i:v | |||
íochn 'i:xn | |||
í (_ i: | |||
ín (_ i:n | |||
ío i:@ | |||
.group l | |||
l l // broad | |||
L01) l l; // slender | |||
@@ -280,8 +319,9 @@ | |||
ll (L23 l; | |||
l (g l@ | |||
l (b l@ | |||
_) lorg (@@P4 l,Or@g | |||
_) lán (C@@P3 l,A:n | |||
.group m | |||
m m // broad | |||
m (L20 m; //slender | |||
@@ -296,8 +336,8 @@ | |||
_) mh (n v@ | |||
léir) mheas vas | |||
r) m @m // words like gorm | |||
_) mear (@@P4 m,ar | |||
.group n | |||
n n // broad | |||
n (L01 n; // slender | |||
@@ -318,8 +358,8 @@ | |||
n (ch n@ | |||
c) n @n | |||
ch) n @n | |||
_) nasc (C@@ n,0sk | |||
.group o | |||
o O# | |||
_) o 'O | |||
@@ -342,12 +382,13 @@ | |||
odl (a O#l | |||
oí i: | |||
.group ó | |||
ó 'o: | |||
ómhai o:@ | |||
ói (p@ 'o: | |||
.group oi | |||
oi O | |||
_L15) oi (+ @'I | |||
@@ -369,15 +410,16 @@ | |||
_) oi (leá 'I | |||
oidh aI | |||
oir (_ 'ERR | |||
_sc) oi (r O | |||
oigh (ea aI | |||
.group p | |||
p p // broad | |||
ph f // broad | |||
p (L22 p; // slender | |||
ph (L20 f; // slender | |||
?1 _b_) p (@ | |||
?1 _b_) p (@ | |||
.group r | |||
@@ -388,13 +430,13 @@ | |||
L12i) r (t_ Z | |||
rr R | |||
rg r@g | |||
rgh rQ" | |||
L01) rg R@g // slender | |||
r (bh r@ | |||
ríomh ri:@v | |||
s) r (A R | |||
_) ramh raU | |||
.group s | |||
s s // broad | |||
L01) s S // slender | |||
@@ -402,13 +444,14 @@ | |||
s (cL01 S | |||
s (CCL01 S // slender | |||
s (pCé s // broad | |||
?1 _t_) s (@ | |||
?1 _t_) s (@ | |||
sh h | |||
sh (CL01 h | |||
sh (L01 h; | |||
s (lL01 S | |||
_') s (_ s // 's in poems etc | |||
_) sain (@P4 s,an | |||
.group t | |||
t t[ // broad | |||
L01) t c // slender | |||
@@ -418,7 +461,7 @@ | |||
?1 _) t (_L01 c | |||
L01C) t tS // slender after consonant | |||
t (CL01 tS // slender with following consonant before vowels | |||
?1 _d_) t (@ | |||
?1 _d_) t (@ | |||
th h | |||
th (L01 h; | |||
L01C) th h | |||
@@ -432,7 +475,7 @@ | |||
thne (_ h@nE | |||
A) th (_ // silent th at word end | |||
.group u | |||
u U# | |||
ua u@ | |||
@@ -441,11 +484,14 @@ | |||
uai (d ui | |||
uá u:'A: | |||
ui I | |||
ui (s U | |||
ui (sce_ I | |||
uinn (_ 'i:n | |||
uinti U#'i:ntI | |||
_b) uí wi: | |||
_bh) uí wi: | |||
g) uí wi: | |||
gh) uí wi: | |||
umh u: | |||
L03) ui @I | |||
_d) u (l_ O# | |||
@@ -453,8 +499,9 @@ | |||
gh) ui (gh_ @i: | |||
uí i: | |||
uachai 'ux@ | |||
_) uimhir (C@P6 ,IvIR | |||
.group ú | |||
ú u: | |||
únmh u:nv |
@@ -2,6 +2,8 @@ | |||
// This file is UTF8 encoded | |||
// Spelling-to-phoneme words for Armenian | |||
// ?1 West Armenian | |||
// names of letters | |||
_ա aIb | |||
բ ben | |||
@@ -20,7 +22,7 @@ _ը '@t# | |||
կ ken | |||
հ ho | |||
ձ dza | |||
ղ r"ad | |||
ղ r"at | |||
ճ ce | |||
մ men | |||
յ hi | |||
@@ -30,15 +32,16 @@ _ը '@t# | |||
չ tSa | |||
պ pe | |||
ջ dZe | |||
ռ **a | |||
ռ R2a | |||
ս se | |||
վ vev | |||
տ tyn | |||
ր re | |||
ց tso | |||
ց ts#o | |||
ւ hyn | |||
փ p#yr | |||
ք k#e | |||
և jev | |||
_օ o | |||
ֆ fe | |||
@@ -52,6 +55,21 @@ d di | |||
e e | |||
f ef | |||
// symbols | |||
$ dolar | |||
% տոկոս $text | |||
* աստղանիշ $text | |||
+ գումարած $text | |||
= հավասար $text | |||
_՝ b'ut# | |||
_՞ harts#ak'an | |||
_՛ S'eSt | |||
_։ verdZak'et // U+0589 | |||
_: verdZak'et | |||
_, storak'et | |||
_. midZak'et | |||
// numbers | |||
@@ -82,5 +100,41 @@ _dpt _sto**ak'el_ | |||
// function words | |||
ես $u+ // pronouns | |||
դու $u+ | |||
եք $u+ | |||
Դուք $u+ | |||
նա $u+ | |||
այն $u+ | |||
մենք $u+ | |||
նրանք $u+ | |||
դուք $u+ | |||
ենք $u+ | |||
են $u+ | |||
այդ $u+ | |||
այս $u+ | |||
դա $u+ | |||
որ $u+ | |||
էր $u+ | |||
մի $u+ | |||
է $u+ | |||
հետ $u+ // prepositions | |||
եվ $u+ // and | |||
իսկ $u+ $brk // and, but | |||
կամ $u+ // or | |||
որը $u+ // which | |||
կարող $u+ // can | |||
// exceptions | |||
ով ov | |||
ովքեր ovk#er |
@@ -2,8 +2,10 @@ | |||
// (consonants are changed for Armenian-West in the voice file "hy-west") | |||
// This file is UTF-8 encoded | |||
// ?1 West Armenian | |||
.L01 բ գ թ կ պ տ ք | |||
.L02 ու այ իւ իյ ոյ // other vowel sounds | |||
.L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||
// ligature | |||
.replace | |||
@@ -12,7 +14,7 @@ | |||
.group ա | |||
ա a | |||
այ aI | |||
այ (K aI | |||
այ (_ a | |||
.group բ | |||
@@ -41,7 +43,7 @@ | |||
.group է | |||
է e | |||
էօ W | |||
էյ eI | |||
էյ (K eI | |||
.group ը | |||
ը @ | |||
@@ -57,7 +59,7 @@ | |||
ի i | |||
իւ y | |||
իւ (_ iv | |||
իյ i@ | |||
իյ (K i@ | |||
.group լ | |||
լ l | |||
@@ -97,8 +99,9 @@ | |||
L02) մ (_ m | |||
.group յ | |||
յ h // ?? [j] | |||
_) յ h // ?? [j] | |||
_) յ (C h@ | |||
յ j | |||
.group ն | |||
ն n | |||
@@ -133,8 +136,8 @@ | |||
_) ջ (C dZ@ | |||
.group ռ | |||
ռ ** | |||
_) ռ (C **@ | |||
ռ R2 | |||
_) ռ (C R2@ | |||
.group ս | |||
ս s | |||
@@ -151,6 +154,7 @@ | |||
.group ր | |||
ր r | |||
L02) ր (L02 * | |||
_) ր (C r@ | |||
C) ր (_ @r | |||
L02) ր (_ r | |||
@@ -178,7 +182,5 @@ | |||
ֆ f | |||
_) ֆ (C f@ | |||
.group | |||
$ dol@ | |||
@@ -36,6 +36,8 @@ _s Es | |||
_t te: | |||
_cap h'o:fdlEt@r | |||
_sub s'8pskrIpt|| | |||
_sup s'yp@rskrIpt|| | |||
_?A l'Et@r | |||
_?? s'imbo:l | |||
@@ -371,12 +371,12 @@ | |||
ੱ) ਯ (_ j: | |||
.group ਰ | |||
ਰ RV | |||
ਰ (B R | |||
@) ਰ (_ R | |||
ੱ) ਰ R:V | |||
ੱ) ਰ (B R: | |||
ੱ) ਰ (_ R: | |||
ਰ rV | |||
ਰ (B r | |||
@) ਰ (_ r | |||
ੱ) ਰ r:V | |||
ੱ) ਰ (B r: | |||
ੱ) ਰ (_ r: | |||
.group ਲ | |||
ਲ lV |
@@ -69,6 +69,8 @@ v ve // not Roman numbers | |||
x Sis# | |||
_cap maI'uskulU | |||
_sub ||subskR'itU | |||
_sup ||sob*eskR'itU | |||
_?A l'etR&_ | |||
_?? s'imbolU_ | |||
_#32 esp'asU | |||
@@ -297,10 +299,10 @@ unts $abbrev | |||
usb $abbrev | |||
dr $dot | |||
dra $dot | |||
mr $dot | |||
mrs $dot | |||
dr dowtor $dot | |||
dra dowt'o*& $dot | |||
mr m'ister $dot | |||
mrs m'irsys $dot | |||
prof pR'Of $dot | |||
profº pR,ofes'or | |||
profª pR,ofes'o*& | |||
@@ -642,6 +644,7 @@ jamais $u+ $verbf | |||
abacaxi abakaSy | |||
abordo $alt | |||
aborto $alt $verb | |||
absorta $alt2 | |||
acerto $alt2 $noun | |||
acertos $alt2 | |||
acocho $alt2 $noun | |||
@@ -847,7 +850,6 @@ enterro $alt2 $noun | |||
entorto $alt | |||
entroso $alt | |||
envelope $alt | |||
envolto $alt2 | |||
enxaqueca $alt2 | |||
enxerto $alt2 $noun | |||
epopeia $alt | |||
@@ -941,7 +943,6 @@ hoje $alt2 | |||
horrores $alt2 | |||
humores $alt2 | |||
ideia $alt | |||
imberbe $alt | |||
interesse $alt2 | |||
interesse $alt $verb | |||
iodo $alt2 | |||
@@ -960,6 +961,7 @@ lepra $alt | |||
leste $alt2 $verb | |||
?2 lhe l^y | |||
lingueta $alt2 | |||
lisboeta $alt2 | |||
lodo $alt2 | |||
logro $alt | |||
lopes $alt | |||
@@ -985,7 +987,6 @@ modelo $alt $verb | |||
moeda $alt | |||
moem $alt | |||
mofo $alt $verb | |||
moleta $alt2 | |||
molho $alt2 $noun | |||
monera $alt | |||
morcego $alt2 | |||
@@ -994,6 +995,7 @@ moreia $alt | |||
mortos $alt | |||
motora $alt2 | |||
mui mwi | |||
muleta $alt2 | |||
mureta $alt2 | |||
mutreta $alt2 | |||
namoro $alt2 $noun | |||
@@ -1091,6 +1093,8 @@ risoto $alt2 | |||
rock $alt | |||
roem $alt | |||
rola $alt2 $noun | |||
roleta $alt2 | |||
rolete $alt2 | |||
rolo $alt2 $noun | |||
rota $alt2 | |||
rota $alt $noun | |||
@@ -1148,6 +1152,7 @@ transtorno $alt $verb | |||
traqueia $alt | |||
travesso $alt2 | |||
tremores $alt2 | |||
treta $alt2 | |||
trevo $alt2 | |||
troco $alt2 $noun | |||
tropa $alt | |||
@@ -1243,6 +1248,7 @@ python p'aIT&~N | |||
?1 readme r'i:dmi: | |||
?1 sapi s,ap'i | |||
?1 scanner sk'En&r | |||
sky sk'ay | |||
shake S'eIk | |||
?1 shift S'ift | |||
?1 scroll sk:r'ol | |||
@@ -1254,13 +1260,16 @@ símbolo s'imbolU | |||
?4 símbolo s'iNbolU | |||
?2 software s'Oftwe@- | |||
?1 space sp'eIsy | |||
?2 space sp'eIs | |||
?1 sporting sp'Ort,ing | |||
tab t'aby | |||
tablet t'ablet | |||
?1 telemóvel t,El,Em'OvEl | |||
?1 telemóveis t,El,Em'OveIs# | |||
?1 up &p | |||
?1 upload &pl'oud | |||
update &pd'eIt | |||
upgrade &pgR'eId | |||
upload &pl'oud | |||
?2 web w'Eb | |||
?1 yahoo 'i,ah'u | |||
?2 yahoo iah'u | |||
@@ -1275,7 +1284,7 @@ louis _^_FR | |||
// foreign product names | |||
?1 access 'aks,Es | |||
?1 adobe &d'Oby | |||
android &ndR'Oid | |||
android &NdR'Oid | |||
apple 'Epow | |||
chrome kR'owmi | |||
debian d'Ebj&~N |
@@ -214,7 +214,7 @@ | |||
i) e (r_ E | |||
@s) e (r_ E | |||
u) e (r_ E | |||
qu) e (r_ E | |||
ib) e (rL04_ E | |||
d) e (rL04_ E | |||
@@ -226,11 +226,10 @@ | |||
@s) e (rL04_ E | |||
sp) e (rL04_ E | |||
f) e (rL02_ E | |||
e (quL02_ E | |||
e (rbL04_ E | |||
e (rgL04_ E | |||
e (rsL04_ E | |||
@@ -240,6 +239,7 @@ | |||
e (ssL04_ E | |||
e (ss_ E // stress and english words | |||
?2 ection (_ 'EkS&~N | |||
?2 ee (n_ i | |||
e (stL04_ E | |||
e (strL04_ E | |||
@@ -372,6 +372,7 @@ | |||
tiv) e (L05_ E // es- | |||
viv) e (L05_ e | |||
_com) e (L05_ e | |||
s_colh) e (res_ E | |||
_cos) e (L05_ e | |||
_pud) e (L05_ E | |||
_coub) e (L05_ E | |||
@@ -424,11 +425,13 @@ _corro) e (L07_ e | |||
_interromp) e (L07_ e | |||
_troux) e (L07_ E | |||
_ens) e (bL03_ E | |||
_enver) e (dL03_ E | |||
_amanc) e (bL03_ E | |||
qu) e (brL04_ E | |||
_cel) e (brL04_ E | |||
_boch) e (chL04_ e | |||
_ex) e (crL04_ E | |||
_on) e (rL04_ E | |||
_ex) e (crL04_ E | |||
_enr) e (dL01_ E | |||
_v) e (dL03_ E | |||
_arr) e (dL03_ E | |||
@@ -472,14 +475,14 @@ _adult) e (rL04_ E | |||
_persev) e (rL04_ E | |||
_recup) e (rL04_ E | |||
_refrig) e (rL04_ E | |||
_v) e (rbL03_ E | |||
_ex) e (rcL02_ E | |||
_ex) e (rcL02_ E | |||
_alic) e (rcL02_ E | |||
_p) e (rdL02_ E | |||
_l) e (rdL03_ E | |||
_h) e (rdL04_ E | |||
_des) e (rdL04_ E | |||
_) e (rgL03_ e | |||
_so) e (rgL03_ e | |||
_re) e (rgL03_ e | |||
_bez) e (rrL03_ e | |||
v) e (rtL03_ e // con- re- in- | |||
@@ -837,7 +840,7 @@ _entorp) e (çL03_ e | |||
?1 f) o (rmulá u // eg: formulário, formulários. | |||
?1 v) o (lt O | |||
o (luem_ o | |||
o (CCuem_ o | |||
o (ssuem_ o | |||
êC) o (CA_ o | |||
êCC) o (CA_ o | |||
ôC) o (CA_ o | |||
@@ -852,7 +855,8 @@ _entorp) e (çL03_ e | |||
óCC) o (CA_ o | |||
úC) o (CA_ o | |||
úCC) o (CA_ o | |||
?2 otion (_ 'owS&~N | |||
//sort | |||
_f) o (L05_ o | |||
_pormen) o (L05_ O | |||
@@ -862,6 +866,7 @@ _pormen) o (L05_ O | |||
_esn) o (bL04_ O | |||
_engl) o (bL04_ O | |||
_sal) o (brL03_ o | |||
_env) o (ltL03_ o | |||
_) o (cL03_ o | |||
_m) o (fL01_ O | |||
_m) o (fL02_ O | |||
@@ -1072,6 +1077,8 @@ _remem) o (rL04_ O | |||
u (a u | |||
g) u (a+ w | |||
q) u (a+ w | |||
u (eC u | |||
u (ei u | |||
r) u (_A u | |||
u (L04_ 'u | |||
@@ -1079,6 +1086,8 @@ _remem) o (rL04_ O | |||
ui (_ 'uI | |||
u (iu w | |||
u (iCK u | |||
u (éC u | |||
u (íC u | |||
uy uI | |||
ul (K uw | |||
u (lh+ u | |||
@@ -1091,6 +1100,7 @@ _remem) o (rL04_ O | |||
g) u (Y | |||
_m) ui (tA_ 'wiN | |||
?2 ution (_ 'uS&~N | |||
.group ú |
@@ -69,6 +69,8 @@ _tld s_v'l-novkoU | |||
// character names | |||
_cap vel^ke: | |||
_sub d,olni:||indeks|| | |||
_sup h,oRni:||indeks|| | |||
_?? simbol | |||
_#9 t'ab | |||
_#32 'medzeRa | |||
@@ -76,7 +78,7 @@ _?A znak | |||
* hviezda $max3 | |||
+ plus $max3 | |||
= Rovna:sa $max3 | |||
= Rovna:||sa $max3 | |||
@ zavina:tS | |||
& ampeRsand | |||
# kRi:Zik $max3 | |||
@@ -88,64 +90,88 @@ _' apostRof | |||
_( za:tvoRka | |||
_) zatvoRit; | |||
_, tSiaRka | |||
_- poml-tSka | |||
__ podtSiaRknutie | |||
_- spojovn^i:k | |||
__ podtSiaRkovn^i:k | |||
_. bodka | |||
_/ lomeno | |||
_/ lomka | |||
_: dvojbodka | |||
_; bodkotSiaRka | |||
_< menSi: | |||
_> vetSSi: | |||
_> v&tSSi: | |||
_? ota:zn^ik | |||
_[ hRanata:||za:tvoRka | |||
_\ opatSne:||lomeno | |||
_\ opatSna:||lomka | |||
_] hRanata:||zatvoRit; | |||
_^ stRieZka | |||
_^ voka:n^ | |||
_` aktsent | |||
_{ zloZena:||za:tvoRka | |||
_| zvisla:||tSiaRa | |||
_} zloZena:||zatvoRit; | |||
_~ vl-novka | |||
_ tvr-da:m'edzeRa // U+00A0 no-break-space | |||
_¡ obra:t;eni:v'i:kRitSn^i:k | |||
_¦ pReRuSena:'tSiaRa | |||
_ª hoRni:indeks'a: | |||
_« dvojita:lomena:||za:tvoRka | |||
_ mekka:poml-tSka | |||
_² nadRuhu: | |||
_³ natRetju | |||
_´ dl:Zen^ | |||
_· bodka'vpRostRjedku | |||
_¸ tsedila | |||
_¹ napRvu: | |||
_» dvojita:lomena:||zatvoRit; | |||
_¿ obRa:t;eni:'ota:zn^ik | |||
_– dl-ha:'poml-tSka | |||
_‘ l^ava:'u:vodzovka | |||
_’ prava:'u:vodzovka | |||
_“ horne:'u:vodzovki | |||
_” dolne:'u:vodzovki | |||
_‡ dvojiti:kRi:Z | |||
_• odRa:Zka | |||
_‣ tRojuholni:kova:'odRa:Zka | |||
_ tvr-da:||m'edzeRa // U+00A0 no-break-space | |||
_¡ obra:t;eni:||v'i:kRitSn^i:k | |||
_¦ pReRuSena:||tSiaRa | |||
_¨ pRehla:ska | |||
_« dvojita:||lomena:||za:tvoRka | |||
_ Rozd;el^ovn^i:k | |||
_´ dl:Zen^ | |||
_· bodka||v||pRostRjedku | |||
_¸ tsedila | |||
_» dvojita:||lomena:||zatvoRit; | |||
_¿ obRa:t;eni:||ota:zn^ik | |||
_– poml-tSka | |||
_‘ hoRne:||jednoduche:||u:vodzovki | |||
_’ odsuvn^i:k | |||
_“ hoRne:||u:vodzovki | |||
_” dvojita:||hoRna:||opatSna:||u:vodzovka | |||
_„ dolne:||u:vodzovki | |||
_‚ dolne:||jednoduche:||u:vodzovki | |||
_‡ dvojkRi:Z | |||
_• odRa:Zka | |||
_‣ odRa:Zka||tRojuholni:k | |||
_⁃ odRa:Zka||v||tvaRe||poml-tSki | |||
‰ pRomile | |||
€ euRo | |||
§ paRagRaf | |||
÷ d;eleno | |||
× kRa:t | |||
° stupn^ou | |||
¢ tsentou | |||
£ libjeR | |||
¤ znatSkameni | |||
¢ tsent | |||
£ libRa | |||
¤ mena | |||
© kopiRajt | |||
® Registrovane: | |||
¥ jen | |||
− mi:nus | |||
± plus'mi:nus | |||
µ mu: | |||
¼ Stvr-tina | |||
± plus||mi:nus | |||
µ mi: | |||
¼ Stvr-t;ina | |||
½ polovitsa | |||
¾ tri_Stvr-tini | |||
¬ logitske:not | |||
æ a'e: | |||
þ poml-tSkanad | |||
¾ tRi_||Stvr-t;ini | |||
¬ logitski:||za:poR | |||
æ otvoRene:||e: | |||
þ soRn | |||
¯ pRuh||nad | |||
ð ed | |||
ƒ floRe:n | |||
_† kRi:Z | |||
_≈ pRibliZn^e||sa||Rovna: | |||
_≠ n^eRovna:||sa | |||
_≤ menSi:||alebo||sa||Rovna: | |||
_≥ v&tSSi:||alebo||sa||Rovna: | |||
_√ dRuha:||odmotsn^ina | |||
_∛ tRet;ia||odmotsn^ina | |||
_∞ n^ekon^etSno | |||
_■ tSieRni||StvoRets | |||
_□ bieli||StvoRets | |||
_◆ tSieRni||diamant | |||
_○ bieli||kRuh | |||
_● tSieRni||kRuh | |||
_◦ odRa:Zka||v||tvaRe||bielej||bodki | |||
_✓ zaSkr-tnutie | |||
_✔ tutSne:||zaSkr-tnutie | |||
_➔ Si:pka||vpravo | |||
_➢ odRa:Zka||v||tvaRe||Si:pki | |||
// Numbers |
@@ -12,7 +12,6 @@ | |||
.L01 ç f h k p q s ş t // unvoiced consonants | |||
.L02 ı a o u // back vowels | |||
.L03 i e ö ü î â ô û // not-back vowels | |||
.replace | |||
@@ -218,6 +217,7 @@ | |||
.group r | |||
r R | |||
A) r (A * | |||
ğ) r (A * | |||
ra (_S2 %Ra | |||
re (_S2 %Re |
@@ -857,7 +857,7 @@ ufric/tl# [tl#] is | |||
[tl#] kl | |||
ufric/tlh [K] nso | |||
[K] tn | |||
ufric/x [x] base | |||
ufric/x_ [x] base | |||
ufric/x2 [x2] af | |||
[x] ku | |||
[Q2] ka | |||
@@ -1013,7 +1013,6 @@ ustop/t_dnt [t] base | |||
[t] hr | |||
ustop/t_dnt2 [t] base2 | |||
[d] kn | |||
[t] es | |||
ustop/t_hi [t[] base | |||
[t] et | |||
[t^] et | |||
@@ -1595,6 +1594,7 @@ vowel/@_3 [@#] en | |||
[@3] ur | |||
[@] da | |||
[@] am | |||
vowel/&_3 [&] az | |||
vowel/3_2 [3:] en-n | |||
[@] zh | |||
vowel/3_3 [3:] en-rp | |||
@@ -1651,6 +1651,7 @@ vowel/a# [a] base2 | |||
[&] sr | |||
[a#] rw | |||
[a/] rw | |||
[a] az | |||
[a] wo | |||
[a] dv | |||
[a:] dv | |||
@@ -1751,7 +1752,6 @@ vowel/aa [a:] et | |||
[A:] no | |||
[aa] zhy | |||
[a] hy | |||
[a] az | |||
vowel/aa# [O] en-us | |||
[0] en-wi | |||
[a2] fi | |||
@@ -1785,6 +1785,7 @@ vowel/aa_9 [a] fi | |||
[a:] hi | |||
[a] ne | |||
[a] pa | |||
[a] az | |||
[a] ak | |||
[a] mt | |||
[A] kk | |||
@@ -2227,12 +2228,12 @@ vowel/o_mid [U@] en-rp | |||
[o] bg | |||
[o] tr | |||
[o] fa | |||
[o] az | |||
[o] dv | |||
[o:] dv | |||
[o] tt | |||
vowel/o_mid2 [O] fr | |||
[O] ht | |||
[o] az | |||
vowel/oo [o] base | |||
[O:] en-sc | |||
[O] en-wi | |||
@@ -2350,6 +2351,7 @@ vowel/u_2 [u1] fi | |||
[u] is | |||
[u] tr | |||
[u] sl | |||
[u] az | |||
[u] am | |||
[u] wo | |||
vowel/u#_2 [u-] sv | |||
@@ -2364,7 +2366,6 @@ vowel/u_5 [U1] et | |||
[u] vi | |||
[u] sw | |||
[u] nso | |||
[u] az | |||
[u] tn | |||
vowel/u#_5 [y] vi | |||
vowel/u_6 [u] ta |
@@ -0,0 +1,62 @@ | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 180 | |||
FMT(vowel/ii_5) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 200 | |||
FMT(vowel/e_mid2) | |||
endphoneme | |||
phoneme & | |||
vowel starttype #e endtype #e | |||
length 200 | |||
IF thisPh(isWordEnd) THEN | |||
FMT(vowel/&_3) | |||
ENDIF | |||
FMT(vowel/&) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #u endtype #u | |||
length 200 | |||
FMT(vowel/y) | |||
endphoneme | |||
phoneme W | |||
vowel starttype #@ endtype #@ | |||
length 200 | |||
FMT(vowel/y#_2) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 180 | |||
FMT(vowel/u_2) | |||
endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 200 | |||
FMT(vowel/o_mid2) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 200 | |||
IF thisPh(isWordEnd) THEN | |||
FMT(vowel/a#) | |||
ENDIF | |||
FMT(vowel/aa_9) | |||
endphoneme | |||
phoneme @ | |||
vowel starttype #@ endtype #@ | |||
ipa ɯ | |||
length 180 | |||
FMT(vowel/u#_7) | |||
endphoneme | |||
@@ -7,7 +7,7 @@ | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 180 | |||
length 190 | |||
IF thisPh(isDiminished) THEN | |||
ChangePhoneme(a/) | |||
FMT(vowel/a#) | |||
@@ -18,28 +18,28 @@ endphoneme | |||
phoneme a/ | |||
vowel starttype #@ endtype #@ | |||
length 180 | |||
length 190 | |||
FMT(vowel/a#) | |||
endphoneme | |||
phoneme e | |||
vowel starttype #e endtype #e | |||
length 170 | |||
length 180 | |||
FMT(vowel/e) | |||
endphoneme | |||
phoneme E | |||
vowel starttype #e endtype #e | |||
length 170 | |||
length 180 | |||
FMT(vowel/ee_1) | |||
endphoneme | |||
phoneme i | |||
vowel starttype #i endtype #i | |||
length 150 | |||
length 170 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i) | |||
endphoneme | |||
@@ -47,42 +47,42 @@ endphoneme | |||
phoneme o | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
FMT(vowel/o) | |||
endphoneme | |||
phoneme O | |||
vowel starttype #o endtype #o | |||
length 170 | |||
length 180 | |||
FMT(vowel/oo_4) | |||
endphoneme | |||
phoneme u | |||
vowel starttype #u endtype #u | |||
length 160 | |||
length 180 | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 160 | |||
length 180 | |||
FMT(vowel/uu_2) | |||
endphoneme | |||
phoneme y | |||
vowel starttype #i endtype #i | |||
length 160 | |||
length 180 | |||
FMT(vowel/y) | |||
endphoneme | |||
phoneme Y | |||
vowel starttype #@ endtype #@ | |||
length 160 | |||
length 180 | |||
FMT(vowel/y#) | |||
endphoneme | |||
@@ -111,22 +111,12 @@ phoneme D | |||
ENDIF | |||
endphoneme | |||
phoneme t // dental variant of /t/ | |||
vls dnt stop | |||
voicingswitch d[ | |||
lengthmod 2 | |||
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 | |||
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
IF nextPh(isPause2) THEN | |||
WAV(ustop/t_dnt2, 35) | |||
ENDIF | |||
WAV(ustop/t_dnt2, 70) | |||
phoneme t // dental variant of /t/ | |||
import_phoneme base/t[ | |||
endphoneme | |||
phoneme s | |||
vls alv frc sibilant | |||
lengthmod 3 |
@@ -634,7 +634,7 @@ endphoneme | |||
phoneme j | |||
liquid palatal | |||
liquid palatal starttype #i | |||
lengthmod 7 | |||
IF nextPhW(isVowel) THEN | |||
@@ -1610,7 +1610,7 @@ phoneme x | |||
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||
IF nextPh(isPause) THEN | |||
WAV(ufric/x, 110) | |||
WAV(ufric/x_, 60) | |||
ENDIF | |||
WAV(ufric/x_hr, 20) | |||
endphoneme |
@@ -700,9 +700,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
ix = utf8_in(&c2,p); | |||
if(c2 == 0) | |||
break; | |||
if(iswupper(c2)) | |||
if(iswupper2(c2)) | |||
{ | |||
utf8_out(towlower(c2),p); | |||
utf8_out(towlower2(c2),p); | |||
} | |||
else | |||
{ |
@@ -520,7 +520,7 @@ void DecodePhonemes(const char *inptr, char *outptr) | |||
unsigned short ipa1[96] = { | |||
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | |||
0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | |||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, | |||
0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254, | |||
0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | |||
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | |||
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | |||
@@ -629,10 +629,13 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
{//========================================================================= | |||
/* Can be called after a clause has been translated into phonemes, in order | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode) | |||
{//=============================================================================== | |||
/* Called after a clause has been translated into phonemes, in order | |||
to display the clause in phoneme mnemonic form. | |||
phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
bit 4: 0=eSpeak phoneme names, 1=IPA | |||
*/ | |||
int ix; | |||
@@ -645,6 +648,8 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
char *buf; | |||
int count; | |||
int flags; | |||
int use_ipa; | |||
int use_tie; | |||
int separate_phonemes = 0; | |||
char phon_buf[30]; | |||
char phon_buf2[30]; | |||
@@ -653,15 +658,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
static const char *stress_chars = "==,,''"; | |||
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | |||
if(use_ipa >= 4) | |||
use_ipa = phoneme_mode & 0x10; | |||
use_tie = phoneme_mode & 0x0f; | |||
if(use_tie >= 3) | |||
{ | |||
// separate individual phonemes with underscores | |||
separate_phonemes = '_'; | |||
if(use_ipa == 5) | |||
use_ipa = 0; | |||
else | |||
use_ipa = 1; | |||
use_tie = 0; | |||
} | |||
if(phon_out != NULL) | |||
{ | |||
for(ix=1; ix<(n_phoneme_list-2); ix++) | |||
@@ -669,13 +675,19 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
buf = phon_buf; | |||
plist = &phoneme_list[ix]; | |||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
if(plist->newword) | |||
*buf++ = ' '; | |||
else | |||
{ | |||
if((separate_phonemes != 0) && (ix > 1)) | |||
{ | |||
*buf++ = separate_phonemes; | |||
utf8_in(&c, phon_buf2); | |||
if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||
{ | |||
*buf++ = separate_phonemes; | |||
} | |||
} | |||
} | |||
@@ -707,17 +719,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
} | |||
flags = 0; | |||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
count = 0; | |||
for(p=phon_buf2; *p != 0;) | |||
{ | |||
p += utf8_in(&c, p); | |||
if(use_ipa > 1) | |||
if(use_tie > 0) | |||
{ | |||
// look for non-inital alphabetic character, but not diacritic, superscript etc. | |||
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) | |||
if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||
{ | |||
buf += utf8_out(char_tie[use_ipa-2], buf); | |||
buf += utf8_out(char_tie[use_tie-1], buf); | |||
} | |||
} | |||
buf += utf8_out(c, buf); | |||
@@ -923,7 +934,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
break; | |||
} | |||
if((c != '\'') && !iswalpha(c)) | |||
if((c != '\'') && !iswalpha2(c)) | |||
return(0); | |||
} | |||
@@ -2102,7 +2113,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
break; | |||
case RULE_NONALPHA: | |||
if(!iswalpha(letter_w)) | |||
if(!iswalpha2(letter_w)) | |||
{ | |||
add_points = (21-distance_right); | |||
post_ptr += letter_xbytes; | |||
@@ -2346,7 +2357,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
break; | |||
case RULE_NONALPHA: | |||
if(!iswalpha(letter_w)) | |||
if(!iswalpha2(letter_w)) | |||
{ | |||
add_points = (21-distance_right); | |||
pre_ptr -= letter_xbytes; | |||
@@ -2663,7 +2674,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
if(tr->letter_bits_offset > 0) | |||
{ | |||
// not a Latin alphabet, switch to the default Latin alphabet language | |||
if((letter <= 0x241) && iswalpha(letter)) | |||
if((letter <= 0x241) && iswalpha2(letter)) | |||
{ | |||
sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | |||
return(0); |
@@ -632,7 +632,7 @@ void OnOptions2(int event_id) | |||
case MENU_PATH0: | |||
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | |||
_T(""),_T(""),_T("*"),wxOPEN); | |||
_T("phonemes"),_T(""),_T("*"),wxOPEN); | |||
if(!string.IsEmpty()) | |||
{ | |||
path_phfile = string; |
@@ -1564,8 +1564,8 @@ void CountWordFreq(wxString path, wcount **hashtab) | |||
for(k=0; k<ix; ) | |||
{ | |||
k += utf8_in(&wc,&buf[k]); | |||
wc = towlower(wc); // convert to lower case | |||
if(iswalpha(wc)) | |||
wc = towlower2(wc); // convert to lower case | |||
if(iswalpha2(wc)) | |||
{ | |||
j += utf8_out(wc,&wbuf[j]); | |||
n_chars++; | |||
@@ -2324,13 +2324,28 @@ void Make_walpha_tab() | |||
} | |||
fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); | |||
exceptions[ex] = 0; | |||
exceptions[ex+1] = 0; | |||
for(ix=0; ix<=ex; ix+=2) | |||
for(ix=0; ix<ex; ix+=2) | |||
{ | |||
fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]); | |||
} | |||
fprintf(f, "};\n"); | |||
fprintf(f, "\t0,0 };\n"); | |||
fprintf(f, "\nstatic const short wchar_toupper[] = {\n"); | |||
for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
{ | |||
if(iswlower(ix)) | |||
{ | |||
c = towupper(ix); | |||
value = ix - c; | |||
if((value != 32) && (value != 1)) | |||
{ | |||
fprintf(f,"\t0x%.3x, 0x%.3x,\n", ix, c); | |||
} | |||
} | |||
} | |||
fprintf(f, "\t0,0 };\n"); | |||
fclose(f); | |||
} | |||
@@ -2351,6 +2366,7 @@ void TestTest(int control) | |||
//CharsetToUnicode("ISO-8859-4"); | |||
//CharsetToUnicode("ISCII"); | |||
if(control==2) | |||
{ | |||
return; |
@@ -602,6 +602,77 @@ int NonAsciiNumber(int letter) | |||
return(-1); | |||
} | |||
#define L_SUB 0x4000 // subscript | |||
#define L_SUP 0x8000 // superscript | |||
static const char *modifiers[] = {NULL, "_sub", "_sup", NULL}; | |||
// this list must be in ascending order | |||
static unsigned short derived_letters[] = { | |||
0x00aa, 'a'+L_SUP, | |||
0x00b2, '2'+L_SUP, | |||
0x00b3, '3'+L_SUP, | |||
0x00b9, '1'+L_SUP, | |||
0x00ba, 'o'+L_SUP, | |||
0x02b0, 'h'+L_SUP, | |||
0x02b1, 0x266+L_SUP, | |||
0x02b2, 'j'+L_SUP, | |||
0x02b3, 'r'+L_SUP, | |||
0x02b4, 0x279+L_SUP, | |||
0x02b5, 0x27b+L_SUP, | |||
0x02b6, 0x281+L_SUP, | |||
0x02b7, 'w'+L_SUP, | |||
0x02b8, 'y'+L_SUP, | |||
0x02c0, 0x294+L_SUP, | |||
0x02c1, 0x295+L_SUP, | |||
0x02e0, 0x263+L_SUP, | |||
0x02e1, 'l'+L_SUP, | |||
0x02e2, 's'+L_SUP, | |||
0x02e3, 'x'+L_SUP, | |||
0x2070, '0'+L_SUP, | |||
0x2071, 'i'+L_SUP, | |||
0x2074, '4'+L_SUP, | |||
0x2075, '5'+L_SUP, | |||
0x2076, '6'+L_SUP, | |||
0x2077, '7'+L_SUP, | |||
0x2078, '8'+L_SUP, | |||
0x2079, '9'+L_SUP, | |||
0x207a, '+'+L_SUP, | |||
0x207b, '-'+L_SUP, | |||
0x207c, '='+L_SUP, | |||
0x207d, '('+L_SUP, | |||
0x207e, ')'+L_SUP, | |||
0x207f, 'n'+L_SUP, | |||
0x2080, '0'+L_SUB, | |||
0x2081, '1'+L_SUB, | |||
0x2082, '2'+L_SUB, | |||
0x2083, '3'+L_SUB, | |||
0x2084, '4'+L_SUB, | |||
0x2085, '5'+L_SUB, | |||
0x2086, '6'+L_SUB, | |||
0x2087, '7'+L_SUB, | |||
0x2088, '8'+L_SUB, | |||
0x2089, '9'+L_SUB, | |||
0x208a, '+'+L_SUB, | |||
0x208b, '-'+L_SUB, | |||
0x208c, '='+L_SUB, | |||
0x208d, '('+L_SUB, | |||
0x208e, ')'+L_SUB, | |||
0x2090, 'a'+L_SUB, | |||
0x2091, 'e'+L_SUB, | |||
0x2092, 'o'+L_SUB, | |||
0x2093, 'x'+L_SUB, | |||
0x2094, 0x259+L_SUB, | |||
0x2095, 'h'+L_SUB, | |||
0x2096, 'k'+L_SUB, | |||
0x2097, 'l'+L_SUB, | |||
0x2098, 'm'+L_SUB, | |||
0x2099, 'n'+L_SUB, | |||
0x209a, 'p'+L_SUB, | |||
0x209b, 's'+L_SUB, | |||
0x209c, 't'+L_SUB, | |||
0,0}; | |||
static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages | |||
@@ -617,8 +688,10 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
int letter; | |||
int len; | |||
int ix; | |||
int c; | |||
char *p2; | |||
char *pbuf; | |||
const char *modifier; | |||
ALPHABET *alphabet; | |||
int al_offset; | |||
int al_flags; | |||
@@ -626,7 +699,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
int number; | |||
int phontab_1; | |||
int speak_letter_number; | |||
char capital[20]; | |||
char capital[30]; | |||
char ph_buf[80]; | |||
char ph_buf2[80]; | |||
char ph_alphabet[80]; | |||
@@ -648,13 +721,42 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
if(control & 2) | |||
{ | |||
// include CAPITAL information | |||
if(iswupper(letter)) | |||
if(iswupper2(letter)) | |||
{ | |||
Lookup(tr, "_cap", capital); | |||
} | |||
} | |||
letter = towlower2(letter); | |||
// is this a subscript or superscript letter ? | |||
for(ix=0; (c = derived_letters[ix]) != 0; ix+=2) | |||
{ | |||
if(c > letter) | |||
break; | |||
if(c == letter) | |||
{ | |||
c = derived_letters[ix+1]; | |||
letter = c & 0x3fff; | |||
if((modifier = modifiers[c >> 14]) != NULL) | |||
{ | |||
Lookup(tr, modifier, capital); | |||
if(capital[0] == 0) | |||
{ | |||
capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
Lookup(translator2, modifier, &capital[3]); | |||
if(capital[3] != 0) | |||
{ | |||
capital[0] = phonPAUSE; | |||
capital[1] = phonSWITCH; | |||
len = strlen(&capital[3]); | |||
capital[len+3] = phonSWITCH; | |||
capital[len+4] = phontab_1; | |||
capital[len+5] = 0; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
if(ph_buf[0] == phonSWITCH) | |||
@@ -663,6 +765,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
return(0); | |||
} | |||
if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | |||
{ | |||
// convert a non-ascii number to 0-9 | |||
@@ -794,7 +897,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
speak_letter_number = 1; | |||
if(!(al_flags & AL_NO_SYMBOL)) | |||
{ | |||
if(iswalpha(letter)) | |||
if(iswalpha2(letter)) | |||
Lookup(translator, "_?A", ph_buf); | |||
if((ph_buf[0]==0) && !iswspace(letter)) | |||
@@ -2244,8 +2347,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | |||
utf8_in(&next_char,p); | |||
if(!iswalpha(next_char) && (thousands_exact==0)) | |||
// if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
if(!iswalpha2(next_char) && (thousands_exact==0)) | |||
// if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | |||
} | |||
@@ -260,8 +260,25 @@ static const short wchar_tolower[] = { | |||
0x23d, 0x19a, | |||
0x23e, 0x2c66, | |||
0x243, 0x180, | |||
0x000, 0x000, | |||
}; | |||
0,0 }; | |||
static const short wchar_toupper[] = { | |||
0x0b5, 0x39c, | |||
0x0df, 0x0df, | |||
0x0ff, 0x178, | |||
0x131, 0x049, | |||
0x17f, 0x053, | |||
0x180, 0x243, | |||
0x195, 0x1f6, | |||
0x19a, 0x23d, | |||
0x19e, 0x220, | |||
0x1bf, 0x1f7, | |||
0x1c6, 0x1c4, | |||
0x1c9, 0x1c7, | |||
0x1cc, 0x1ca, | |||
0x1dd, 0x18e, | |||
0x1f3, 0x1f1, | |||
0,0 }; | |||
#ifdef NEED_WCHAR_FUNCTIONS | |||
@@ -317,13 +334,17 @@ int towlower(int c) | |||
int towupper(int c) | |||
{ | |||
int ix; | |||
// check whether a previous character code is the upper-case equivalent of this character | |||
if(towlower(c-32) == c) | |||
return(c-32); // yes, use it | |||
if(towlower(c-1) == c) | |||
return(c-1); | |||
if(towlower(c-2) == c) | |||
return(c-2); | |||
for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_toupper[ix] == c) | |||
return(wchar_toupper[ix+1]); | |||
} | |||
return(c); // no | |||
} | |||
@@ -417,6 +438,28 @@ int iswalpha2(int c) | |||
return(walpha_tab[c-0x80]); | |||
} | |||
int iswlower2(int c) | |||
{ | |||
if(c < 0x80) | |||
return(islower(c)); | |||
if(c > MAX_WALPHA) | |||
return(iswlower(c)); | |||
if(walpha_tab[c-0x80] == 0xff) | |||
return(1); | |||
return(0); | |||
} | |||
int iswupper2(int c) | |||
{ | |||
int x; | |||
if(c < 0x80) | |||
return(isupper(c)); | |||
if(c > MAX_WALPHA) | |||
return(iswupper(c)); | |||
if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe)) | |||
return(1); | |||
return(0); | |||
} | |||
int towlower2(unsigned int c) | |||
{ | |||
@@ -426,7 +469,7 @@ int towlower2(unsigned int c) | |||
// check for non-standard upper to lower case conversions | |||
if(c == 'I') | |||
{ | |||
if(translator->translator_name == L('t','r')) | |||
if(translator->langopts.dotless_i) | |||
{ | |||
c = 0x131; // I -> ı | |||
} | |||
@@ -453,6 +496,24 @@ int towlower2(unsigned int c) | |||
return(c + x); // convert to lower case | |||
} | |||
int towupper2(unsigned int c) | |||
{ | |||
int ix; | |||
if(c > MAX_WALPHA) | |||
return(towupper(c)); | |||
// check whether a previous character code is the upper-case equivalent of this character | |||
if(towlower2(c-32) == c) | |||
return(c-32); // yes, use it | |||
if(towlower2(c-1) == c) | |||
return(c-1); | |||
for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
{ | |||
if(wchar_toupper[ix] == c) | |||
return(wchar_toupper[ix+1]); | |||
} | |||
return(c); // no | |||
} | |||
static int IsRomanU(unsigned int c) | |||
{//================================ | |||
@@ -2330,7 +2391,7 @@ f_input = f_in; // for GetC etc | |||
c2 = ' '; | |||
} | |||
else | |||
if((c2 == '/') || iswalpha(c2)) | |||
if((c2 == '/') || iswalpha2(c2)) | |||
{ | |||
// check for space in the output buffer for embedded commands produced by the SSML tag | |||
if(ix > (n_buf - 20)) | |||
@@ -2513,10 +2574,10 @@ f_input = f_in; // for GetC etc | |||
} | |||
} | |||
if(iswupper(c1)) | |||
if(iswupper2(c1)) | |||
{ | |||
tr->clause_upper_count++; | |||
if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev)) | |||
if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev)) | |||
{ | |||
char text_buf[40]; | |||
char text_buf2[30]; | |||
@@ -2533,7 +2594,7 @@ f_input = f_in; // for GetC etc | |||
} | |||
} | |||
else | |||
if(iswalpha(c1)) | |||
if(iswalpha2(c1)) | |||
tr->clause_lower_count++; | |||
if(option_phoneme_input) | |||
@@ -2602,8 +2663,8 @@ if(option_ssml) parag=1; | |||
if(!iswspace(c1)) | |||
{ | |||
if(!IsAlpha(c1) || !iswlower(c1)) | |||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
if(!IsAlpha(c1) || !iswlower2(c1)) | |||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1))) | |||
{ | |||
UngetC(c2); | |||
ungot_char2 = c1; | |||
@@ -2702,7 +2763,7 @@ if(option_ssml) parag=1; | |||
if(nl_count==0) | |||
{ | |||
if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next)))) | |||
if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next)))) | |||
{ | |||
// lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | |||
c1 = CHAR_COMMA_BREAK; | |||
@@ -2721,7 +2782,7 @@ if(option_ssml) parag=1; | |||
} | |||
else | |||
{ | |||
if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
if (iswlower2(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | |||
} | |||
} | |||
@@ -2730,7 +2791,7 @@ if(option_ssml) parag=1; | |||
{ | |||
is_end_clause = 0; // eg. u.s.a.'s | |||
} | |||
if(iswlower(c_next)) | |||
if(iswlower2(c_next)) | |||
{ | |||
// next word has no capital letter, this dot is probably from an abbreviation | |||
// c1 = ' '; |
@@ -1164,6 +1164,17 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) | |||
} // end of espeak_SetPhonemes | |||
ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode) | |||
{//============================================================================================================== | |||
/* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
bit 4: 0=eSpeak phoneme names, 1=IPA | |||
*/ | |||
option_multibyte = textmode & 7; | |||
TranslateClause(translator, NULL, text, NULL, NULL); | |||
GetTranslatedPhonemeString(buffer, size, phonememode); | |||
} | |||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | |||
{//============================================================================= | |||
ENTER("espeak_CompileDictionary"); |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.47.07a 23.Apr.13"; | |||
const char *version_string = "1.47.07b 25.Apr.13"; | |||
const int version_phdata = 0x014701; | |||
int option_device_number = -1; |
@@ -1953,20 +1953,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
if((option_phonemes > 0) || (phoneme_callback != NULL)) | |||
{ | |||
int use_ipa = 0; | |||
int phoneme_mode = 0; | |||
if(option_phonemes >= 3) | |||
use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ, 4=ipa with separators | |||
phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | |||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode); | |||
if(option_phonemes > 0) | |||
{ | |||
fprintf(f_trans,"%s\n",translator->phon_out); | |||
if(!iswalpha(0x010d)) | |||
{ | |||
// check that c-caron is recognized as an alphabetic character | |||
fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n"); | |||
} | |||
} | |||
if(phoneme_callback != NULL) | |||
{ |
@@ -972,7 +972,7 @@ SetLengthMods(tr,3); // all equal | |||
SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | |||
SetLetterBits(tr,LETTERGP_C,hy_consonants); | |||
tr->langopts.max_initial_consonants = 6; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED; | |||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
} | |||
break; | |||
@@ -1290,6 +1290,7 @@ SetLengthMods(tr,3); // all equal | |||
ResetLetterBits(tr,0x2); | |||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | |||
tr->langopts.accents = 2; // 'capital' after letter name | |||
} | |||
break; | |||
@@ -1521,6 +1522,7 @@ SetLengthMods(tr,3); // all equal | |||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
tr->langopts.dotless_i = 1; | |||
tr->langopts.param[LOPT_SUFFIX] = 1; | |||
if(name2 == L('a','z')) |
@@ -624,7 +624,7 @@ int IsAllUpper(const char *word) | |||
while((*word != 0) && !isspace2(*word)) | |||
{ | |||
word += utf8_in(&c, word); | |||
if(!iswupper(c)) | |||
if(!iswupper2(c)) | |||
return(0); | |||
} | |||
return(1); | |||
@@ -1053,7 +1053,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
} | |||
} | |||
if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char)) | |||
if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char)) | |||
{ | |||
if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | |||
{ | |||
@@ -1632,7 +1632,7 @@ if(end_type & SUFX_UNPRON) | |||
tr->expect_past--; | |||
} | |||
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i')) | |||
if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i')) | |||
{ | |||
// English Specific !!!! | |||
// any single letter before a dot is an abbreviation, except 'I' | |||
@@ -1908,7 +1908,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
while(*p2 != ' ') p2++; | |||
utf8_in(&c_word2, p2+1); // first character of the next word; | |||
if(!iswalpha(c_word2)) | |||
if(!iswalpha2(c_word2)) | |||
{ | |||
ok =0; | |||
} | |||
@@ -2376,9 +2376,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
// there is a list of character codes to be substituted with alternative codes | |||
if(iswupper(c_lower = c)) | |||
if(iswupper2(c_lower = c)) | |||
{ | |||
c_lower = towlower(c); | |||
c_lower = towlower2(c); | |||
upper_case = 1; | |||
} | |||
@@ -2392,7 +2392,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
new_c = replace_chars[ix+1]; | |||
break; | |||
} | |||
if((word >> 16) == (unsigned int)towlower(next_in)) | |||
if((word >> 16) == (unsigned int)towlower2(next_in)) | |||
{ | |||
new_c = replace_chars[ix+1]; | |||
ignore_next = 1; | |||
@@ -2409,14 +2409,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
// there is a second character to be inserted | |||
// don't convert the case of the second character unless the next letter is also upper case | |||
c2 = new_c >> 16; | |||
if(upper_case && iswupper(next_in)) | |||
c2 = towupper(c2); | |||
if(upper_case && iswupper2(next_in)) | |||
c2 = towupper2(c2); | |||
*insert = c2; | |||
new_c &= 0xffff; | |||
} | |||
if(upper_case) | |||
new_c = towupper(new_c); | |||
new_c = towupper2(new_c); | |||
*wordflags |= FLAG_CHAR_REPLACED; | |||
return(new_c); | |||
@@ -2480,7 +2480,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
// look for 'n and replace by a special character (unicode: schwa) | |||
if(!iswalpha(prev_in)) | |||
if(!iswalpha2(prev_in)) | |||
{ | |||
utf8_in(&next2, &ptr[1]); | |||
@@ -2910,7 +2910,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
else | |||
{ | |||
if(iswupper(c)) | |||
if(iswupper2(c)) | |||
word_flags |= FLAG_FIRST_UPPER; | |||
if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | |||
@@ -2939,7 +2939,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
if(iswupper(c)) | |||
if(iswupper2(c)) | |||
{ | |||
c = towlower2(c); | |||
@@ -2954,7 +2954,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
else | |||
{ | |||
if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case | |||
if(iswlower2(prev_in)) | |||
{ | |||
// lower case followed by upper case in a word | |||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
@@ -2970,7 +2970,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
} | |||
} | |||
else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | |||
else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in)) | |||
{ | |||
int next2_in; | |||
utf8_in(&next2_in,&source[source_index + next_in_nbytes]); |
@@ -542,6 +542,7 @@ typedef struct { | |||
char tone_numbers; | |||
char ideographs; // treat as separate words | |||
char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | |||
char dotless_i; // uses letter U+0131 | |||
int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
int listx; // compile *_listx after *list | |||
const unsigned int *replace_chars; // characters to be substitutes | |||
@@ -715,8 +716,11 @@ int IsAlpha(unsigned int c); | |||
int IsVowel(Translator *tr, int c); | |||
int iswalpha2(int c); | |||
int isspace2(unsigned int c); | |||
int iswlower2(int c); | |||
int iswupper2(int c); | |||
int towlower2(unsigned int c); | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||
int towupper2(unsigned int c); | |||
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode); | |||
const char *WordToString2(unsigned int word); | |||
ALPHABET *AlphabetFromChar(int c); | |||
ALPHABET *AlphabetFromName(const char *name); |
@@ -460,7 +460,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) | |||
t_phonetic->SetDefaultStyle(style_phonetic_large); | |||
translate_text = 3; | |||
use_ipa = 1; | |||
use_ipa = 0x10; | |||
break; | |||
case T_PROCESS: |
@@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
// which directory to look for a named voice. List of voice names, must end in a space. | |||
static const char *voices_asia = | |||
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; | |||
"az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; | |||
static const char *voices_europe = | |||
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||