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
// 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 | |||||
// 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 | |||||
ä & |
_1 '&k | _1 '&k | ||||
_2 d'uj | _2 d'uj | ||||
_3 t'in | _3 t'in | ||||
_4 tS'ar | |||||
_4 tSh'ar | |||||
_5 p'a~tS | _5 p'a~tS | ||||
_6 tSh'Oj | |||||
_6 tS#'Oj | |||||
_7 S'at | _7 S'at | ||||
_8 'at.# | _8 'at.# | ||||
_9 n'Oj | _9 n'Oj | ||||
_2a d'u // with hundreds etc. | _2a d'u // with hundreds etc. | ||||
_6a tSh'O | |||||
_6a tS#'O | |||||
_9a n'O | _9a n'O | ||||
_11 '&garo | _11 '&garo | ||||
_12 b'arO | _12 b'arO | ||||
_13 t'erO | _13 t'erO | ||||
_14 tS'oddO | |||||
_14 tSh'oddO | |||||
_15 p'OnerO | _15 p'OnerO | ||||
_16 S'olO | _16 S'olO | ||||
_17 S'OterO | _17 S'OterO |
.group ছ | .group ছ | ||||
ছ tS#V | |||||
ছ (B tS# | |||||
ছ tShV | |||||
ছ (B tSh | |||||
.group জ | .group জ |
_?? zymb'o:l | _?? zymb'o:l | ||||
_?A b'u:xstA:b@ | _?A b'u:xstA:b@ | ||||
_cap gr'o:s | _cap gr'o:s | ||||
_sub 'Unt@R|3_!,IndEks|| | |||||
_sup 'o:b@R|3_!,IndEks|| | |||||
// accent names | // accent names |
t# tS w x | 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 | Dictionary bg_dict 2013-03-16 | ||||
@ a e i o u | @ a e i o u | ||||
Z z; | Z z; | ||||
Dictionary bn_dict 2013-04-18 | |||||
Dictionary bn_dict 2013-04-25 | |||||
& a a~ e e~ i i: i~ | & a a~ e e~ i i: i~ | ||||
l- o O o: O~ o~ r- u | l- o O o: O~ o~ r- u | ||||
v w x z Z | v w x z Z | ||||
Dictionary de_dict 2013-03-10 | |||||
Dictionary de_dict 2013-04-25 | |||||
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-04-23 | |||||
Dictionary en_dict 2013-04-25 | |||||
0 0# 3 3: @ @- @2 @5 | 0 0# 3 3: @ @- @2 @5 | ||||
@L a a# A: A@ aa aI aI3 | @L a a# A: A@ aa aI aI3 | ||||
tS v z Z z2 z3 | 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# | 0 0# @ a a# A: aI aI# | ||||
aU aU# e E E# e: eI i | aU aU# e E E# e: eI i | ||||
z Z | z Z | ||||
Dictionary hy_dict 2008-12-22 | |||||
Dictionary hy_dict 2013-04-25 | |||||
@ a aI e eI i i@ o | @ a aI e eI i i@ o | ||||
u W y | 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 | Dictionary id_dict 2011-02-21 | ||||
t.# v w x z | t.# v w x z | ||||
Dictionary nl_dict 2013-04-23 | |||||
Dictionary nl_dict 2013-04-25 | |||||
8 @ @- a A a: A~ e | 8 @ @- a A a: A~ e | ||||
E e# E2 e: EI eU i I | E e# E2 e: EI eU i I | ||||
z Z | z Z | ||||
Dictionary pa_dict 2013-03-17 | |||||
Dictionary pa_dict 2013-04-24 | |||||
@ a a~ e E e~ E~ i | @ a a~ e E e~ E~ i | ||||
I i~ I~ o O o: O~ o~ | I i~ I~ o O o: O~ o~ | ||||
: ; b b# c c# d d# | : ; b b# c c# d d# | ||||
d. d.# f g g# h H j | d. d.# f g g# h H j | ||||
J J# k k# l l. m n | 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 | Dictionary pl_dict 2013-04-06 | ||||
ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
Dictionary pt_dict 2013-04-23 | |||||
Dictionary pt_dict 2013-04-25 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
s. t t# t. t.# tS v w | 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: | & @- a a: e e: i i: | ||||
l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
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 | Dictionary sl_dict 2013-01-30 | ||||
v v# w z | v v# w z | ||||
Dictionary tr_dict 2013-04-20 | |||||
Dictionary tr_dict 2013-04-25 | |||||
@ a e E i I o O | @ a e E i I o O | ||||
u U W y Y | u U W y Y |
// character names | // character names | ||||
_cap k,ap@-t@L | _cap k,ap@-t@L | ||||
_sub s,VbskrIpt|| | |||||
_sup s,u:p3skrIpt|| | |||||
_?A l,Et3 | _?A l,Et3 | ||||
_?? sImb@L | _?? sImb@L | ||||
_braille br'eIl | _braille br'eIl | ||||
?!3 temporary tEmpr@rI | ?!3 temporary tEmpr@rI | ||||
?3 template tEmpl@t | ?3 template tEmpl@t | ||||
therefore $1 | therefore $1 | ||||
thereof De@r'0v | |||||
thermos T3:m@s | thermos T3:m@s | ||||
thermostable $alt1 | thermostable $alt1 | ||||
thesis Ti:sIs | thesis Ti:sIs | ||||
Andrea $2 | Andrea $2 | ||||
Adrian eIdri@n | Adrian eIdri@n | ||||
Agatha aga#T@ | Agatha aga#T@ | ||||
Angela andZ@l@ | |||||
Angelika $2 | Angelika $2 | ||||
Aggie agi | Aggie agi | ||||
Agnes agn@s | Agnes agn@s | ||||
Hadrian heIdri:@n | Hadrian heIdri:@n | ||||
Hamish heImIS | Hamish heImIS | ||||
Harriet hari@t | Harriet hari@t | ||||
Harvey hA@vi | |||||
Heidi haIdi | Heidi haIdi | ||||
Hecate hEk@teI | Hecate hEk@teI | ||||
Hekate hEk@teI | Hekate hEk@teI | ||||
Luigi lu:'i:dZi | Luigi lu:'i:dZi | ||||
Luis lu:Is | Luis lu:Is | ||||
Lupe lu:peI | Lupe lu:peI | ||||
Luther lu:T3 | |||||
Madeleine mad@lI2n | Madeleine mad@lI2n | ||||
Madeline mad@lI2n | Madeline mad@lI2n | ||||
Maeve meIv | Maeve meIv | ||||
Wallace w0lI#s | Wallace w0lI#s | ||||
Wally w0li | Wally w0li | ||||
?3 William wIlj@m | ?3 William wIlj@m | ||||
Yerevan jEr@v'an | |||||
Yves i:v | Yves i:v | ||||
Yvonne $2 | Yvonne $2 | ||||
Zoe zoUi | Zoe zoUi |
// Irish Gaeilge dictionary | // Irish Gaeilge dictionary | ||||
// written by Ronan McGuirk | // 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 | // This file is UTF8 encoded | ||||
// letters | // letters | ||||
// accent names | // accent names | ||||
// names of symbols | // names of symbols | ||||
ª_. pO#nk | |||||
_. pO#nk | |||||
_, k0m@ | _, k0m@ | ||||
_; semI | _; semI | ||||
_: ko:l0n | _: ko:l0n | ||||
amuigh @mu1'I | amuigh @mu1'I | ||||
amháin @w'A:in | amháin @w'A:in | ||||
am aUm | am aUm | ||||
an @n | |||||
anaithnid '0nah@nIdZ | |||||
anois @nIS | anois @nIS | ||||
anonn @naUn | anonn @naUn | ||||
ann aUn | ann aUn | ||||
anseo @nS'O | anseo @nS'O | ||||
anuas a#n'u@s | |||||
aodh e: | aodh e: | ||||
aodha e: | aodha e: | ||||
aon e:@n | aon e:@n | ||||
(ar ais) Er'aS | (ar ais) Er'aS | ||||
arís @r'i:S | arís @r'i:S | ||||
as 0s | as 0s | ||||
aschurtha '0sxUrh@ | |||||
atá @t['A: $u | atá @t['A: $u | ||||
baill bu1'i:l | baill bu1'i:l | ||||
bhaill vu1'i:l | bhaill vu1'i:l | ||||
beidh bEg | beidh bEg | ||||
bhfuil w'Il | bhfuil w'Il | ||||
bheas v'e:@s | |||||
bhuel w'El | bhuel w'El | ||||
ceithre kEr@ | ceithre kEr@ | ||||
cathair k'0h@r | cathair k'0h@r | ||||
chlainne xl'InE | chlainne xl'InE | ||||
chun xUn $u | chun xUn $u | ||||
crainn kri:n | crainn kri:n | ||||
chrainn xri:n | |||||
de dE $u+ | de dE $u+ | ||||
des dEs $u | des dEs $u | ||||
do dO# $u | do dO# $u | ||||
domhnach d[aUn@x | domhnach d[aUn@x | ||||
domhnaigh d[aUnig | domhnaigh d[aUnig | ||||
dúghorm d['u:Q"Or@m | |||||
eile 'El@ | eile 'El@ | ||||
euro ju:ro: | euro ju:ro: | ||||
faic f@ak | faic f@ak | ||||
(muigheo) mu1'i:||'o: | (muigheo) mu1'i:||'o: | ||||
mhuigh vu1'i: | mhuigh vu1'i: | ||||
(mhaigh eo) vu1'i:||'o: | (mhaigh eo) vu1'i:||'o: | ||||
mhama w'0m@ | |||||
maith m'0 | maith m'0 | ||||
mhaith w'0 | mhaith w'0 | ||||
mbeadh m;O#X | mbeadh m;O#X | ||||
os o:s | os o:s | ||||
rabh raU | rabh raU | ||||
raibh rEv | raibh rEv | ||||
raidió r'adi:o: | |||||
réamhrá r'e:@vr,a: | réamhrá r'e:@vr,a: | ||||
réidh re: | réidh re: | ||||
's s | |||||
samhain saUIn | samhain saUIn | ||||
san s@n | san s@n | ||||
seo S@_ | seo S@_ |
// translation rules for Irish Gaeilge | // translation rules for Irish Gaeilge | ||||
// This file is UTF-8 encoded | // 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 | // Conditional rules | ||||
// ?1 allow eclipsis as 2 separate words | // ?1 allow eclipsis as 2 separate words | ||||
.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | .L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | ||||
.L04 b bh mb // for words like beag | .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 | .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 | .L07 b c g ch bh gh mb | ||||
.L08 lc ll nt bhse // for words like cailc | .L08 lc ll nt bhse // for words like cailc | ||||
.L09 cl cr chr f | .L09 cl cr chr f | ||||
.L12 á é ó eo ua // when followed by i | .L12 á é ó eo ua // when followed by i | ||||
.L13 oc omb | .L13 oc omb | ||||
.L14 río dún gnío // followed with mh | .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 | .L16 b c bh ch gr ghr // for inn word ending | ||||
.L17 l le li niste nn | .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 | .L19 na nea ra rea la llea arga // word endings with silent dh | ||||
.L20 eo eoir eá eabh io iu iú // slender m | .L20 eo eoir eá eabh io iu iú // slender m | ||||
.L21 ll nn ndán nntán | .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 | .L23 ea eo i | ||||
.L24 b mb bh g gh p ph bp m mh | .L24 b mb bh g gh p ph bp m mh | ||||
abht aU#t[ | abht aU#t[ | ||||
amhr aUr // words like amhras | amhr aUr // words like amhras | ||||
K) amhl aUl | K) amhl aUl | ||||
abhra aUr@ // words like slabhra | |||||
abh (C aU // words like slabhra | |||||
aghaidh aIg | aghaidh aIg | ||||
t) abhair u:@r | t) abhair u:@r | ||||
th) abhair u:@r | th) abhair u:@r | ||||
t) abhar u:@r | t) abhar u:@r | ||||
th) abhar u:@r | th) abhar u:@r | ||||
_) an (sL01 @n | _) an (sL01 @n | ||||
_) an (- 0n // an prefix | |||||
_) a (nA @ | |||||
_) an (_ @n | |||||
_) an (- '0n // an prefix | |||||
é) a @ // words like féach | é) a @ // words like féach | ||||
X) a (nn_ aU# | X) a (nn_ aU# | ||||
X) a (ll_ aU# | X) a (ll_ aU# | ||||
_) ao e: | _) ao e: | ||||
ae e: | ae e: | ||||
amhna (_ aUn@ | amhna (_ aUn@ | ||||
arraing arIng | |||||
_) ath (@@P3 ,0_ | |||||
.group á | .group á | ||||
á A: | á A: | ||||
@) á ,A: | @) á ,A: | ||||
áinig A:nIg | áinig A:nIg | ||||
ái 'A:i | ái 'A:i | ||||
.group ai | .group ai | ||||
ai a# | ai a# | ||||
L04) ai (L17 0# | L04) ai (L17 0# | ||||
m) ai (n 0# | m) ai (n 0# | ||||
c) ai (th 0# | c) ai (th 0# | ||||
ch) ai (th 0# | ch) ai (th 0# | ||||
ai (tín 0# | |||||
ai (d 0# | ai (d 0# | ||||
p) ai (l 0# | p) ai (l 0# | ||||
@) ai (L11_ I | @) ai (L11_ I | ||||
X) aigh 'aI | X) aigh 'aI | ||||
aigh aI# L04) aill (_ wi:l | aigh aI# L04) aill (_ wi:l | ||||
aing (_ Ing | aing (_ Ing | ||||
ai (llimh '0 // words like Gaillimh | |||||
.group b | .group b | ||||
b b // broad | b b // broad | ||||
L01) b b; // slender | L01) b b; // slender | ||||
bh (_ vv | bh (_ vv | ||||
bh (L22 vj // slender | bh (L22 vj // slender | ||||
L01) bh v | L01) bh v | ||||
?1 _m_) b (@ | |||||
?1 _m_) b (@ | |||||
_) bhf v // urú broad | _) bhf v // urú broad | ||||
_) bhf (L22 v; // urú slender | _) bhf (L22 v; // urú slender | ||||
_) bp b // urú broad | _) bp b // urú broad | ||||
a) bh (a U // for example cabhair | a) bh (a U // for example cabhair | ||||
ear) bha u: // words like Cearbhall | ear) bha u: // words like Cearbhall | ||||
bhfaigh v'aI | bhfaigh v'aI | ||||
_) beann (@ ba#n | |||||
_) bheann (@ va#n | |||||
_) bun (C@P3 b,Un | |||||
.group c | .group c | ||||
c k | c k | ||||
c (L01 k; // slender | c (L01 k; // slender | ||||
ch (L01 C; | ch (L01 C; | ||||
ch (é+ C; | ch (é+ C; | ||||
ch (ei+ x; | ch (ei+ x; | ||||
?1 _g_) c (@ | |||||
?1 _g_) c (L01 | |||||
?1 _g_) c (@ | |||||
?1 _g_) c (L01 | |||||
_) cabhr k'aUr | _) cabhr k'aUr | ||||
_) chabhr x'aUr | _) chabhr x'aUr | ||||
_) ceann (C@P5 k;,aUn | |||||
_) cheann (C@P6 C;,aUn | |||||
.group d | .group d | ||||
d d[ // broad | d d[ // broad | ||||
L01) d dZ // slender | L01) d dZ // slender | ||||
d (L22 dZ // slender | d (L22 dZ // slender | ||||
d (L01 d; // slender | d (L01 d; // slender | ||||
i) d (i dZ | i) d (i dZ | ||||
?1 _n_) d (@ | |||||
?1 _n_) d (@ | |||||
dh Q // broad | dh Q // broad | ||||
dh (ui Q // broad | dh (ui Q // broad | ||||
dh (ao Q // broad | dh (ao Q // broad | ||||
?1 _) d (_t d[ | ?1 _) d (_t d[ | ||||
?1 _) d (_tL01 dZ | ?1 _) d (_tL01 dZ | ||||
_) d' (@P2 d | _) d' (@P2 d | ||||
_) d' d | |||||
_) d (_'fh d | |||||
d'fh (L01 d | |||||
i) dh (_ g | i) dh (_ g | ||||
a) dh (_ X | a) dh (_ X | ||||
o) dh (_ X | o) dh (_ X | ||||
dheartháir gr@h'A:r | dheartháir gr@h'A:r | ||||
deirfiúr d;r@f'u:r | deirfiúr d;r@f'u:r | ||||
dheirfiúr g;r@f'u:r | dheirfiúr g;r@f'u:r | ||||
_) do (Ch@@P2 d[,U_ | |||||
_) dí (@@P2 d,i: | |||||
.group e | .group e | ||||
e E# | e E# | ||||
eá A: | eá A: | ||||
r) ei (m aI | r) ei (m aI | ||||
eighea aI | eighea aI | ||||
eighea aI | eighea aI | ||||
s) ei (nn aI | |||||
sh) ei (nn aI | |||||
eigh aI | eigh aI | ||||
eo o: | eo o: | ||||
eogh o: | |||||
eoi o: | |||||
eogha o: | |||||
eoghai o: | |||||
d) eo (ch O# | d) eo (ch O# | ||||
dh) eo (ch O# | |||||
_) eo (ch O# | _) eo (ch O# | ||||
s) eo (_ @ | s) eo (_ @ | ||||
.group é | .group é | ||||
é 'e: | é 'e: | ||||
éi 'e: | éi 'e: | ||||
éa 'e: | |||||
_) éi (rig aI // words like éirigh | _) éi (rig aI // words like éirigh | ||||
_h) éi (rí aI | |||||
_) éi (rí aI // words like éirí | _) éi (rí aI // words like éirí | ||||
_) éireoidh aIro:Ig | _) éireoidh aIro:Ig | ||||
éacs e:@ks | éacs e:@ks | ||||
.group ea | .group ea | ||||
ea a# | ea a# | ||||
eai a# | |||||
X) ea (L21_ aU | X) ea (L21_ aU | ||||
ea (ltaine aU | ea (ltaine aU | ||||
g) ea (ll aU | g) ea (ll aU | ||||
l) eamh (n aU | |||||
dr) ea (m aU | |||||
X) ea (ch 0 | X) ea (ch 0 | ||||
_L04) ea (g @ | _L04) ea (g @ | ||||
_L04) ea (dh_ @ | _L04) ea (dh_ @ | ||||
eanbhean 'an@v,an | eanbhean 'an@v,an | ||||
eadhb aIb | eadhb aIb | ||||
.group f | .group f | ||||
f f // broad | f f // broad | ||||
f (L22 f; // slender | f (L22 f; // slender | ||||
fh (éin_ h | fh (éin_ h | ||||
fh (L22 ; // slender | fh (L22 ; // slender | ||||
@) f (L06_ h | @) 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 | .group g | ||||
g g // broad | g g // broad | ||||
g (L01 g; // slender | g (L01 g; // slender | ||||
?1 _n_) g (@ | |||||
?1 _n_) g (@ | |||||
_) gh Q" | _) gh Q" | ||||
_) gh (L01 Q"j | _) gh (L01 Q"j | ||||
_) gc g // urú broad | _) gc g // urú broad | ||||
gh (n X@ | gh (n X@ | ||||
gheobh j'o: | gheobh j'o: | ||||
gabh gaU | gabh gaU | ||||
_) gearr (C@P5 g;,aR | |||||
_) ghearr (C@P6 Q"j,aR | |||||
.group h | .group h | ||||
h h // silent | h h // silent | ||||
.group i | .group i | ||||
i I | i I | ||||
_) i I | _) i I | ||||
ia i@ | ia i@ | ||||
ia (tha i: | ia (tha i: | ||||
io O# | io O# | ||||
io (dá I | |||||
_) io (nadh u:// words like ionadh | _) io (nadh u:// words like ionadh | ||||
s) io (mb I | |||||
sh) io (mb I | |||||
_pr) io (n u: | _pr) io (n u: | ||||
L16) inn (_ i:n | L16) inn (_ i:n | ||||
iai i:i | iai i:i | ||||
L12) i i // non syllabic short i after long vowel | L12) i i // non syllabic short i after long vowel | ||||
iú u: | iú u: | ||||
m) i (d_ i: // verb ending | m) i (d_ i: // verb ending | ||||
_) in (@@P2 ,In_ | |||||
_) ionad (C@@P5 ,Ona#d[ | |||||
.group í | .group í | ||||
í 'i: | í 'i: | ||||
íomh 'i:v | |||||
íochn 'i:xn | |||||
í (_ i: | |||||
ín (_ i:n | |||||
ío i:@ | |||||
.group l | .group l | ||||
l l // broad | l l // broad | ||||
L01) l l; // slender | L01) l l; // slender | ||||
ll (L23 l; | ll (L23 l; | ||||
l (g l@ | l (g l@ | ||||
l (b l@ | l (b l@ | ||||
_) lorg (@@P4 l,Or@g | |||||
_) lán (C@@P3 l,A:n | |||||
.group m | .group m | ||||
m m // broad | m m // broad | ||||
m (L20 m; //slender | m (L20 m; //slender | ||||
_) mh (n v@ | _) mh (n v@ | ||||
léir) mheas vas | léir) mheas vas | ||||
r) m @m // words like gorm | r) m @m // words like gorm | ||||
_) mear (@@P4 m,ar | |||||
.group n | .group n | ||||
n n // broad | n n // broad | ||||
n (L01 n; // slender | n (L01 n; // slender | ||||
n (ch n@ | n (ch n@ | ||||
c) n @n | c) n @n | ||||
ch) n @n | ch) n @n | ||||
_) nasc (C@@ n,0sk | |||||
.group o | .group o | ||||
o O# | o O# | ||||
_) o 'O | _) o 'O | ||||
odl (a O#l | odl (a O#l | ||||
oí i: | oí i: | ||||
.group ó | .group ó | ||||
ó 'o: | ó 'o: | ||||
ómhai o:@ | ómhai o:@ | ||||
ói (p@ 'o: | |||||
.group oi | .group oi | ||||
oi O | oi O | ||||
_L15) oi (+ @'I | _L15) oi (+ @'I | ||||
_) oi (leá 'I | _) oi (leá 'I | ||||
oidh aI | oidh aI | ||||
oir (_ 'ERR | oir (_ 'ERR | ||||
_sc) oi (r O | |||||
oigh (ea aI | oigh (ea aI | ||||
.group p | .group p | ||||
p p // broad | p p // broad | ||||
ph f // broad | ph f // broad | ||||
p (L22 p; // slender | p (L22 p; // slender | ||||
ph (L20 f; // slender | ph (L20 f; // slender | ||||
?1 _b_) p (@ | |||||
?1 _b_) p (@ | |||||
.group r | .group r | ||||
L12i) r (t_ Z | L12i) r (t_ Z | ||||
rr R | rr R | ||||
rg r@g | rg r@g | ||||
rgh rQ" | |||||
L01) rg R@g // slender | L01) rg R@g // slender | ||||
r (bh r@ | r (bh r@ | ||||
ríomh ri:@v | |||||
s) r (A R | s) r (A R | ||||
_) ramh raU | _) ramh raU | ||||
.group s | .group s | ||||
s s // broad | s s // broad | ||||
L01) s S // slender | L01) s S // slender | ||||
s (cL01 S | s (cL01 S | ||||
s (CCL01 S // slender | s (CCL01 S // slender | ||||
s (pCé s // broad | s (pCé s // broad | ||||
?1 _t_) s (@ | |||||
?1 _t_) s (@ | |||||
sh h | sh h | ||||
sh (CL01 h | sh (CL01 h | ||||
sh (L01 h; | sh (L01 h; | ||||
s (lL01 S | s (lL01 S | ||||
_') s (_ s // 's in poems etc | |||||
_) sain (@P4 s,an | |||||
.group t | .group t | ||||
t t[ // broad | t t[ // broad | ||||
L01) t c // slender | L01) t c // slender | ||||
?1 _) t (_L01 c | ?1 _) t (_L01 c | ||||
L01C) t tS // slender after consonant | L01C) t tS // slender after consonant | ||||
t (CL01 tS // slender with following consonant before vowels | t (CL01 tS // slender with following consonant before vowels | ||||
?1 _d_) t (@ | |||||
?1 _d_) t (@ | |||||
th h | th h | ||||
th (L01 h; | th (L01 h; | ||||
L01C) th h | L01C) th h | ||||
thne (_ h@nE | thne (_ h@nE | ||||
A) th (_ // silent th at word end | A) th (_ // silent th at word end | ||||
.group u | .group u | ||||
u U# | u U# | ||||
ua u@ | ua u@ | ||||
uai (d ui | uai (d ui | ||||
uá u:'A: | uá u:'A: | ||||
ui I | ui I | ||||
ui (s U | |||||
ui (sce_ I | |||||
uinn (_ 'i:n | uinn (_ 'i:n | ||||
uinti U#'i:ntI | uinti U#'i:ntI | ||||
_b) uí wi: | _b) uí wi: | ||||
_bh) uí wi: | _bh) uí wi: | ||||
g) uí wi: | g) uí wi: | ||||
gh) uí wi: | |||||
umh u: | umh u: | ||||
L03) ui @I | L03) ui @I | ||||
_d) u (l_ O# | _d) u (l_ O# | ||||
gh) ui (gh_ @i: | gh) ui (gh_ @i: | ||||
uí i: | uí i: | ||||
uachai 'ux@ | uachai 'ux@ | ||||
_) uimhir (C@P6 ,IvIR | |||||
.group ú | .group ú | ||||
ú u: | ú u: | ||||
únmh u:nv | únmh u:nv |
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// Spelling-to-phoneme words for Armenian | // Spelling-to-phoneme words for Armenian | ||||
// ?1 West Armenian | |||||
// names of letters | // names of letters | ||||
_ա aIb | _ա aIb | ||||
բ ben | բ ben | ||||
կ ken | կ ken | ||||
հ ho | հ ho | ||||
ձ dza | ձ dza | ||||
ղ r"ad | |||||
ղ r"at | |||||
ճ ce | ճ ce | ||||
մ men | մ men | ||||
յ hi | յ hi | ||||
չ tSa | չ tSa | ||||
պ pe | պ pe | ||||
ջ dZe | ջ dZe | ||||
ռ **a | |||||
ռ R2a | |||||
ս se | ս se | ||||
վ vev | վ vev | ||||
տ tyn | տ tyn | ||||
ր re | ր re | ||||
ց tso | |||||
ց ts#o | |||||
ւ hyn | ւ hyn | ||||
փ p#yr | փ p#yr | ||||
ք k#e | ք k#e | ||||
և jev | |||||
_օ o | _օ o | ||||
ֆ fe | ֆ fe | ||||
e e | e e | ||||
f ef | 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 | // numbers | ||||
// function words | // 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 |
// (consonants are changed for Armenian-West in the voice file "hy-west") | // (consonants are changed for Armenian-West in the voice file "hy-west") | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// ?1 West Armenian | |||||
.L01 բ գ թ կ պ տ ք | .L01 բ գ թ կ պ տ ք | ||||
.L02 ու այ իւ իյ ոյ // other vowel sounds | |||||
.L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||||
// ligature | // ligature | ||||
.replace | .replace | ||||
.group ա | .group ա | ||||
ա a | ա a | ||||
այ aI | |||||
այ (K aI | |||||
այ (_ a | այ (_ a | ||||
.group բ | .group բ | ||||
.group է | .group է | ||||
է e | է e | ||||
էօ W | էօ W | ||||
էյ eI | |||||
էյ (K eI | |||||
.group ը | .group ը | ||||
ը @ | ը @ | ||||
ի i | ի i | ||||
իւ y | իւ y | ||||
իւ (_ iv | իւ (_ iv | ||||
իյ i@ | |||||
իյ (K i@ | |||||
.group լ | .group լ | ||||
լ l | լ l | ||||
L02) մ (_ m | L02) մ (_ m | ||||
.group յ | .group յ | ||||
յ h // ?? [j] | |||||
_) յ h // ?? [j] | |||||
_) յ (C h@ | _) յ (C h@ | ||||
յ j | |||||
.group ն | .group ն | ||||
ն n | ն n | ||||
_) ջ (C dZ@ | _) ջ (C dZ@ | ||||
.group ռ | .group ռ | ||||
ռ ** | |||||
_) ռ (C **@ | |||||
ռ R2 | |||||
_) ռ (C R2@ | |||||
.group ս | .group ս | ||||
ս s | ս s | ||||
.group ր | .group ր | ||||
ր r | ր r | ||||
L02) ր (L02 * | |||||
_) ր (C r@ | _) ր (C r@ | ||||
C) ր (_ @r | C) ր (_ @r | ||||
L02) ր (_ r | L02) ր (_ r | ||||
ֆ f | ֆ f | ||||
_) ֆ (C f@ | _) ֆ (C f@ | ||||
.group | |||||
$ dol@ | |||||
_t te: | _t te: | ||||
_cap h'o:fdlEt@r | _cap h'o:fdlEt@r | ||||
_sub s'8pskrIpt|| | |||||
_sup s'yp@rskrIpt|| | |||||
_?A l'Et@r | _?A l'Et@r | ||||
_?? s'imbo:l | _?? s'imbo:l | ||||
ੱ) ਯ (_ j: | ੱ) ਯ (_ j: | ||||
.group ਰ | .group ਰ | ||||
ਰ RV | |||||
ਰ (B R | |||||
@) ਰ (_ R | |||||
ੱ) ਰ R:V | |||||
ੱ) ਰ (B R: | |||||
ੱ) ਰ (_ R: | |||||
ਰ rV | |||||
ਰ (B r | |||||
@) ਰ (_ r | |||||
ੱ) ਰ r:V | |||||
ੱ) ਰ (B r: | |||||
ੱ) ਰ (_ r: | |||||
.group ਲ | .group ਲ | ||||
ਲ lV | ਲ lV |
x Sis# | x Sis# | ||||
_cap maI'uskulU | _cap maI'uskulU | ||||
_sub ||subskR'itU | |||||
_sup ||sob*eskR'itU | |||||
_?A l'etR&_ | _?A l'etR&_ | ||||
_?? s'imbolU_ | _?? s'imbolU_ | ||||
_#32 esp'asU | _#32 esp'asU | ||||
usb $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'Of $dot | ||||
profº pR,ofes'or | profº pR,ofes'or | ||||
profª pR,ofes'o*& | profª pR,ofes'o*& | ||||
abacaxi abakaSy | abacaxi abakaSy | ||||
abordo $alt | abordo $alt | ||||
aborto $alt $verb | aborto $alt $verb | ||||
absorta $alt2 | |||||
acerto $alt2 $noun | acerto $alt2 $noun | ||||
acertos $alt2 | acertos $alt2 | ||||
acocho $alt2 $noun | acocho $alt2 $noun | ||||
entorto $alt | entorto $alt | ||||
entroso $alt | entroso $alt | ||||
envelope $alt | envelope $alt | ||||
envolto $alt2 | |||||
enxaqueca $alt2 | enxaqueca $alt2 | ||||
enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
epopeia $alt | epopeia $alt | ||||
horrores $alt2 | horrores $alt2 | ||||
humores $alt2 | humores $alt2 | ||||
ideia $alt | ideia $alt | ||||
imberbe $alt | |||||
interesse $alt2 | interesse $alt2 | ||||
interesse $alt $verb | interesse $alt $verb | ||||
iodo $alt2 | iodo $alt2 | ||||
leste $alt2 $verb | leste $alt2 $verb | ||||
?2 lhe l^y | ?2 lhe l^y | ||||
lingueta $alt2 | lingueta $alt2 | ||||
lisboeta $alt2 | |||||
lodo $alt2 | lodo $alt2 | ||||
logro $alt | logro $alt | ||||
lopes $alt | lopes $alt | ||||
moeda $alt | moeda $alt | ||||
moem $alt | moem $alt | ||||
mofo $alt $verb | mofo $alt $verb | ||||
moleta $alt2 | |||||
molho $alt2 $noun | molho $alt2 $noun | ||||
monera $alt | monera $alt | ||||
morcego $alt2 | morcego $alt2 | ||||
mortos $alt | mortos $alt | ||||
motora $alt2 | motora $alt2 | ||||
mui mwi | mui mwi | ||||
muleta $alt2 | |||||
mureta $alt2 | mureta $alt2 | ||||
mutreta $alt2 | mutreta $alt2 | ||||
namoro $alt2 $noun | namoro $alt2 $noun | ||||
rock $alt | rock $alt | ||||
roem $alt | roem $alt | ||||
rola $alt2 $noun | rola $alt2 $noun | ||||
roleta $alt2 | |||||
rolete $alt2 | |||||
rolo $alt2 $noun | rolo $alt2 $noun | ||||
rota $alt2 | rota $alt2 | ||||
rota $alt $noun | rota $alt $noun | ||||
traqueia $alt | traqueia $alt | ||||
travesso $alt2 | travesso $alt2 | ||||
tremores $alt2 | tremores $alt2 | ||||
treta $alt2 | |||||
trevo $alt2 | trevo $alt2 | ||||
troco $alt2 $noun | troco $alt2 $noun | ||||
tropa $alt | tropa $alt | ||||
?1 readme r'i:dmi: | ?1 readme r'i:dmi: | ||||
?1 sapi s,ap'i | ?1 sapi s,ap'i | ||||
?1 scanner sk'En&r | ?1 scanner sk'En&r | ||||
sky sk'ay | |||||
shake S'eIk | shake S'eIk | ||||
?1 shift S'ift | ?1 shift S'ift | ||||
?1 scroll sk:r'ol | ?1 scroll sk:r'ol | ||||
?4 símbolo s'iNbolU | ?4 símbolo s'iNbolU | ||||
?2 software s'Oftwe@- | ?2 software s'Oftwe@- | ||||
?1 space sp'eIsy | ?1 space sp'eIsy | ||||
?2 space sp'eIs | |||||
?1 sporting sp'Ort,ing | ?1 sporting sp'Ort,ing | ||||
tab t'aby | tab t'aby | ||||
tablet t'ablet | tablet t'ablet | ||||
?1 telemóvel t,El,Em'OvEl | ?1 telemóvel t,El,Em'OvEl | ||||
?1 telemóveis t,El,Em'OveIs# | ?1 telemóveis t,El,Em'OveIs# | ||||
?1 up &p | ?1 up &p | ||||
?1 upload &pl'oud | |||||
update &pd'eIt | |||||
upgrade &pgR'eId | |||||
upload &pl'oud | |||||
?2 web w'Eb | ?2 web w'Eb | ||||
?1 yahoo 'i,ah'u | ?1 yahoo 'i,ah'u | ||||
?2 yahoo iah'u | ?2 yahoo iah'u | ||||
// foreign product names | // foreign product names | ||||
?1 access 'aks,Es | ?1 access 'aks,Es | ||||
?1 adobe &d'Oby | ?1 adobe &d'Oby | ||||
android &ndR'Oid | |||||
android &NdR'Oid | |||||
apple 'Epow | apple 'Epow | ||||
chrome kR'owmi | chrome kR'owmi | ||||
debian d'Ebj&~N | debian d'Ebj&~N |
i) e (r_ E | i) e (r_ E | ||||
@s) e (r_ E | @s) e (r_ E | ||||
u) e (r_ E | |||||
qu) e (r_ E | |||||
ib) e (rL04_ E | ib) e (rL04_ E | ||||
d) e (rL04_ E | d) e (rL04_ E | ||||
@s) e (rL04_ E | @s) e (rL04_ E | ||||
sp) e (rL04_ E | sp) e (rL04_ E | ||||
f) e (rL02_ E | f) e (rL02_ E | ||||
e (quL02_ E | e (quL02_ E | ||||
e (rbL04_ E | |||||
e (rgL04_ E | e (rgL04_ E | ||||
e (rsL04_ E | e (rsL04_ E | ||||
e (ssL04_ E | e (ssL04_ E | ||||
e (ss_ E // stress and english words | e (ss_ E // stress and english words | ||||
?2 ection (_ 'EkS&~N | ?2 ection (_ 'EkS&~N | ||||
?2 ee (n_ i | |||||
e (stL04_ E | e (stL04_ E | ||||
e (strL04_ E | e (strL04_ E | ||||
tiv) e (L05_ E // es- | tiv) e (L05_ E // es- | ||||
viv) e (L05_ e | viv) e (L05_ e | ||||
_com) e (L05_ e | _com) e (L05_ e | ||||
s_colh) e (res_ E | |||||
_cos) e (L05_ e | _cos) e (L05_ e | ||||
_pud) e (L05_ E | _pud) e (L05_ E | ||||
_coub) e (L05_ E | _coub) e (L05_ E | ||||
_interromp) e (L07_ e | _interromp) e (L07_ e | ||||
_troux) e (L07_ E | _troux) e (L07_ E | ||||
_ens) e (bL03_ E | _ens) e (bL03_ E | ||||
_enver) e (dL03_ E | |||||
_amanc) e (bL03_ E | _amanc) e (bL03_ E | ||||
qu) e (brL04_ E | qu) e (brL04_ E | ||||
_cel) e (brL04_ E | _cel) e (brL04_ E | ||||
_boch) e (chL04_ e | _boch) e (chL04_ e | ||||
_ex) e (crL04_ E | |||||
_on) e (rL04_ E | |||||
_ex) e (crL04_ E | |||||
_enr) e (dL01_ E | _enr) e (dL01_ E | ||||
_v) e (dL03_ E | _v) e (dL03_ E | ||||
_arr) e (dL03_ E | _arr) e (dL03_ E | ||||
_persev) e (rL04_ E | _persev) e (rL04_ E | ||||
_recup) e (rL04_ E | _recup) e (rL04_ E | ||||
_refrig) e (rL04_ E | _refrig) e (rL04_ E | ||||
_v) e (rbL03_ E | |||||
_ex) e (rcL02_ E | |||||
_ex) e (rcL02_ E | |||||
_alic) e (rcL02_ E | _alic) e (rcL02_ E | ||||
_p) e (rdL02_ E | _p) e (rdL02_ E | ||||
_l) e (rdL03_ E | _l) e (rdL03_ E | ||||
_h) e (rdL04_ E | _h) e (rdL04_ E | ||||
_des) e (rdL04_ E | _des) e (rdL04_ E | ||||
_) e (rgL03_ e | _) e (rgL03_ e | ||||
_so) e (rgL03_ e | |||||
_re) e (rgL03_ e | _re) e (rgL03_ e | ||||
_bez) e (rrL03_ e | _bez) e (rrL03_ e | ||||
v) e (rtL03_ e // con- re- in- | v) e (rtL03_ e // con- re- in- | ||||
?1 f) o (rmulá u // eg: formulário, formulários. | ?1 f) o (rmulá u // eg: formulário, formulários. | ||||
?1 v) o (lt O | ?1 v) o (lt O | ||||
o (luem_ o | o (luem_ o | ||||
o (CCuem_ o | |||||
o (ssuem_ o | |||||
êC) o (CA_ o | êC) o (CA_ o | ||||
êCC) o (CA_ o | êCC) o (CA_ o | ||||
ôC) o (CA_ o | ôC) o (CA_ o | ||||
óCC) o (CA_ o | óCC) o (CA_ o | ||||
úC) o (CA_ o | úC) o (CA_ o | ||||
úCC) o (CA_ o | úCC) o (CA_ o | ||||
?2 otion (_ 'owS&~N | |||||
//sort | //sort | ||||
_f) o (L05_ o | _f) o (L05_ o | ||||
_pormen) o (L05_ O | _pormen) o (L05_ O | ||||
_esn) o (bL04_ O | _esn) o (bL04_ O | ||||
_engl) o (bL04_ O | _engl) o (bL04_ O | ||||
_sal) o (brL03_ o | _sal) o (brL03_ o | ||||
_env) o (ltL03_ o | |||||
_) o (cL03_ o | _) o (cL03_ o | ||||
_m) o (fL01_ O | _m) o (fL01_ O | ||||
_m) o (fL02_ O | _m) o (fL02_ O | ||||
u (a u | u (a u | ||||
g) u (a+ w | g) u (a+ w | ||||
q) u (a+ w | q) u (a+ w | ||||
u (eC u | |||||
u (ei u | |||||
r) u (_A u | r) u (_A u | ||||
u (L04_ 'u | u (L04_ 'u | ||||
ui (_ 'uI | ui (_ 'uI | ||||
u (iu w | u (iu w | ||||
u (iCK u | u (iCK u | ||||
u (éC u | |||||
u (íC u | |||||
uy uI | uy uI | ||||
ul (K uw | ul (K uw | ||||
u (lh+ u | u (lh+ u | ||||
g) u (Y | g) u (Y | ||||
_m) ui (tA_ 'wiN | _m) ui (tA_ 'wiN | ||||
?2 ution (_ 'uS&~N | |||||
.group ú | .group ú |
// character names | // character names | ||||
_cap vel^ke: | _cap vel^ke: | ||||
_sub d,olni:||indeks|| | |||||
_sup h,oRni:||indeks|| | |||||
_?? simbol | _?? simbol | ||||
_#9 t'ab | _#9 t'ab | ||||
_#32 'medzeRa | _#32 'medzeRa | ||||
* hviezda $max3 | * hviezda $max3 | ||||
+ plus $max3 | + plus $max3 | ||||
= Rovna:sa $max3 | |||||
= Rovna:||sa $max3 | |||||
@ zavina:tS | @ zavina:tS | ||||
& ampeRsand | & ampeRsand | ||||
# kRi:Zik $max3 | # kRi:Zik $max3 | ||||
_( za:tvoRka | _( za:tvoRka | ||||
_) zatvoRit; | _) zatvoRit; | ||||
_, tSiaRka | _, tSiaRka | ||||
_- poml-tSka | |||||
__ podtSiaRknutie | |||||
_- spojovn^i:k | |||||
__ podtSiaRkovn^i:k | |||||
_. bodka | _. bodka | ||||
_/ lomeno | |||||
_/ lomka | |||||
_: dvojbodka | _: dvojbodka | ||||
_; bodkotSiaRka | _; bodkotSiaRka | ||||
_< menSi: | _< menSi: | ||||
_> vetSSi: | |||||
_> v&tSSi: | |||||
_? ota:zn^ik | _? ota:zn^ik | ||||
_[ hRanata:||za:tvoRka | _[ hRanata:||za:tvoRka | ||||
_\ opatSne:||lomeno | |||||
_\ opatSna:||lomka | |||||
_] hRanata:||zatvoRit; | _] hRanata:||zatvoRit; | ||||
_^ stRieZka | |||||
_^ voka:n^ | |||||
_` aktsent | _` aktsent | ||||
_{ zloZena:||za:tvoRka | _{ zloZena:||za:tvoRka | ||||
_| zvisla:||tSiaRa | _| zvisla:||tSiaRa | ||||
_} zloZena:||zatvoRit; | _} zloZena:||zatvoRit; | ||||
_~ vl-novka | _~ 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 | ‰ pRomile | ||||
€ euRo | € euRo | ||||
§ paRagRaf | § paRagRaf | ||||
÷ d;eleno | ÷ d;eleno | ||||
× kRa:t | × kRa:t | ||||
° stupn^ou | ° stupn^ou | ||||
¢ tsentou | |||||
£ libjeR | |||||
¤ znatSkameni | |||||
¢ tsent | |||||
£ libRa | |||||
¤ mena | |||||
© kopiRajt | |||||
® Registrovane: | |||||
¥ jen | |||||
− mi:nus | − mi:nus | ||||
± plus'mi:nus | |||||
µ mu: | |||||
¼ Stvr-tina | |||||
± plus||mi:nus | |||||
µ mi: | |||||
¼ Stvr-t;ina | |||||
½ polovitsa | ½ 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 | // Numbers |
.L01 ç f h k p q s ş t // unvoiced consonants | .L01 ç f h k p q s ş t // unvoiced consonants | ||||
.L02 ı a o u // back vowels | .L02 ı a o u // back vowels | ||||
.L03 i e ö ü î â ô û // not-back vowels | .L03 i e ö ü î â ô û // not-back vowels | ||||
.replace | .replace | ||||
.group r | .group r | ||||
r R | r R | ||||
A) r (A * | A) r (A * | ||||
ğ) r (A * | |||||
ra (_S2 %Ra | ra (_S2 %Ra | ||||
re (_S2 %Re | re (_S2 %Re |
[tl#] kl | [tl#] kl | ||||
ufric/tlh [K] nso | ufric/tlh [K] nso | ||||
[K] tn | [K] tn | ||||
ufric/x [x] base | |||||
ufric/x_ [x] base | |||||
ufric/x2 [x2] af | ufric/x2 [x2] af | ||||
[x] ku | [x] ku | ||||
[Q2] ka | [Q2] ka | ||||
[t] hr | [t] hr | ||||
ustop/t_dnt2 [t] base2 | ustop/t_dnt2 [t] base2 | ||||
[d] kn | [d] kn | ||||
[t] es | |||||
ustop/t_hi [t[] base | ustop/t_hi [t[] base | ||||
[t] et | [t] et | ||||
[t^] et | [t^] et | ||||
[@3] ur | [@3] ur | ||||
[@] da | [@] da | ||||
[@] am | [@] am | ||||
vowel/&_3 [&] az | |||||
vowel/3_2 [3:] en-n | vowel/3_2 [3:] en-n | ||||
[@] zh | [@] zh | ||||
vowel/3_3 [3:] en-rp | vowel/3_3 [3:] en-rp | ||||
[&] sr | [&] sr | ||||
[a#] rw | [a#] rw | ||||
[a/] rw | [a/] rw | ||||
[a] az | |||||
[a] wo | [a] wo | ||||
[a] dv | [a] dv | ||||
[a:] dv | [a:] dv | ||||
[A:] no | [A:] no | ||||
[aa] zhy | [aa] zhy | ||||
[a] hy | [a] hy | ||||
[a] az | |||||
vowel/aa# [O] en-us | vowel/aa# [O] en-us | ||||
[0] en-wi | [0] en-wi | ||||
[a2] fi | [a2] fi | ||||
[a:] hi | [a:] hi | ||||
[a] ne | [a] ne | ||||
[a] pa | [a] pa | ||||
[a] az | |||||
[a] ak | [a] ak | ||||
[a] mt | [a] mt | ||||
[A] kk | [A] kk | ||||
[o] bg | [o] bg | ||||
[o] tr | [o] tr | ||||
[o] fa | [o] fa | ||||
[o] az | |||||
[o] dv | [o] dv | ||||
[o:] dv | [o:] dv | ||||
[o] tt | [o] tt | ||||
vowel/o_mid2 [O] fr | vowel/o_mid2 [O] fr | ||||
[O] ht | [O] ht | ||||
[o] az | |||||
vowel/oo [o] base | vowel/oo [o] base | ||||
[O:] en-sc | [O:] en-sc | ||||
[O] en-wi | [O] en-wi | ||||
[u] is | [u] is | ||||
[u] tr | [u] tr | ||||
[u] sl | [u] sl | ||||
[u] az | |||||
[u] am | [u] am | ||||
[u] wo | [u] wo | ||||
vowel/u#_2 [u-] sv | vowel/u#_2 [u-] sv | ||||
[u] vi | [u] vi | ||||
[u] sw | [u] sw | ||||
[u] nso | [u] nso | ||||
[u] az | |||||
[u] tn | [u] tn | ||||
vowel/u#_5 [y] vi | vowel/u#_5 [y] vi | ||||
vowel/u_6 [u] ta | vowel/u_6 [u] ta |
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 | |||||
phoneme a | phoneme a | ||||
vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
length 180 | |||||
length 190 | |||||
IF thisPh(isDiminished) THEN | IF thisPh(isDiminished) THEN | ||||
ChangePhoneme(a/) | ChangePhoneme(a/) | ||||
FMT(vowel/a#) | FMT(vowel/a#) | ||||
phoneme a/ | phoneme a/ | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 180 | |||||
length 190 | |||||
FMT(vowel/a#) | FMT(vowel/a#) | ||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/e) | FMT(vowel/e) | ||||
endphoneme | endphoneme | ||||
phoneme E | phoneme E | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/ee_1) | FMT(vowel/ee_1) | ||||
endphoneme | endphoneme | ||||
phoneme i | phoneme i | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 150 | |||||
length 170 | |||||
IfNextVowelAppend(;) | IfNextVowelAppend(;) | ||||
FMT(vowel/i) | FMT(vowel/i) | ||||
endphoneme | endphoneme | ||||
phoneme o | phoneme o | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/o) | FMT(vowel/o) | ||||
endphoneme | endphoneme | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
length 170 | |||||
length 180 | |||||
FMT(vowel/oo_4) | FMT(vowel/oo_4) | ||||
endphoneme | endphoneme | ||||
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/u_bck) | FMT(vowel/u_bck) | ||||
endphoneme | endphoneme | ||||
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/uu_2) | FMT(vowel/uu_2) | ||||
endphoneme | endphoneme | ||||
phoneme y | phoneme y | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/y) | FMT(vowel/y) | ||||
endphoneme | endphoneme | ||||
phoneme Y | phoneme Y | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 160 | |||||
length 180 | |||||
FMT(vowel/y#) | FMT(vowel/y#) | ||||
endphoneme | endphoneme | ||||
ENDIF | ENDIF | ||||
endphoneme | 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 | endphoneme | ||||
phoneme s | phoneme s | ||||
vls alv frc sibilant | vls alv frc sibilant | ||||
lengthmod 3 | lengthmod 3 |
phoneme j | phoneme j | ||||
liquid palatal | |||||
liquid palatal starttype #i | |||||
lengthmod 7 | lengthmod 7 | ||||
IF nextPhW(isVowel) THEN | IF nextPhW(isVowel) THEN | ||||
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | ||||
IF nextPh(isPause) THEN | IF nextPh(isPause) THEN | ||||
WAV(ufric/x, 110) | |||||
WAV(ufric/x_, 60) | |||||
ENDIF | ENDIF | ||||
WAV(ufric/x_hr, 20) | WAV(ufric/x_hr, 20) | ||||
endphoneme | endphoneme |
ix = utf8_in(&c2,p); | ix = utf8_in(&c2,p); | ||||
if(c2 == 0) | if(c2 == 0) | ||||
break; | break; | ||||
if(iswupper(c2)) | |||||
if(iswupper2(c2)) | |||||
{ | { | ||||
utf8_out(towlower(c2),p); | |||||
utf8_out(towlower2(c2),p); | |||||
} | } | ||||
else | else | ||||
{ | { |
unsigned short ipa1[96] = { | unsigned short ipa1[96] = { | ||||
0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | 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, | 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, | 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, | 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 | 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | ||||
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. | 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; | int ix; | ||||
char *buf; | char *buf; | ||||
int count; | int count; | ||||
int flags; | int flags; | ||||
int use_ipa; | |||||
int use_tie; | |||||
int separate_phonemes = 0; | int separate_phonemes = 0; | ||||
char phon_buf[30]; | char phon_buf[30]; | ||||
char phon_buf2[30]; | char phon_buf2[30]; | ||||
static const char *stress_chars = "==,,''"; | static const char *stress_chars = "==,,''"; | ||||
static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | 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 individual phonemes with underscores | ||||
separate_phonemes = '_'; | separate_phonemes = '_'; | ||||
if(use_ipa == 5) | |||||
use_ipa = 0; | |||||
else | |||||
use_ipa = 1; | |||||
use_tie = 0; | |||||
} | } | ||||
if(phon_out != NULL) | if(phon_out != NULL) | ||||
{ | { | ||||
for(ix=1; ix<(n_phoneme_list-2); ix++) | for(ix=1; ix<(n_phoneme_list-2); ix++) | ||||
buf = phon_buf; | buf = phon_buf; | ||||
plist = &phoneme_list[ix]; | plist = &phoneme_list[ix]; | ||||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
if(plist->newword) | if(plist->newword) | ||||
*buf++ = ' '; | *buf++ = ' '; | ||||
else | else | ||||
{ | { | ||||
if((separate_phonemes != 0) && (ix > 1)) | 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; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
flags = 0; | flags = 0; | ||||
WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||||
count = 0; | count = 0; | ||||
for(p=phon_buf2; *p != 0;) | for(p=phon_buf2; *p != 0;) | ||||
{ | { | ||||
p += utf8_in(&c, p); | p += utf8_in(&c, p); | ||||
if(use_ipa > 1) | |||||
if(use_tie > 0) | |||||
{ | { | ||||
// look for non-inital alphabetic character, but not diacritic, superscript etc. | // 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); | buf += utf8_out(c, buf); | ||||
break; | break; | ||||
} | } | ||||
if((c != '\'') && !iswalpha(c)) | |||||
if((c != '\'') && !iswalpha2(c)) | |||||
return(0); | return(0); | ||||
} | } | ||||
break; | break; | ||||
case RULE_NONALPHA: | case RULE_NONALPHA: | ||||
if(!iswalpha(letter_w)) | |||||
if(!iswalpha2(letter_w)) | |||||
{ | { | ||||
add_points = (21-distance_right); | add_points = (21-distance_right); | ||||
post_ptr += letter_xbytes; | post_ptr += letter_xbytes; | ||||
break; | break; | ||||
case RULE_NONALPHA: | case RULE_NONALPHA: | ||||
if(!iswalpha(letter_w)) | |||||
if(!iswalpha2(letter_w)) | |||||
{ | { | ||||
add_points = (21-distance_right); | add_points = (21-distance_right); | ||||
pre_ptr -= letter_xbytes; | pre_ptr -= letter_xbytes; | ||||
if(tr->letter_bits_offset > 0) | if(tr->letter_bits_offset > 0) | ||||
{ | { | ||||
// not a Latin alphabet, switch to the default Latin alphabet language | // 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); | sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | ||||
return(0); | return(0); |
case MENU_PATH0: | case MENU_PATH0: | ||||
string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | ||||
_T(""),_T(""),_T("*"),wxOPEN); | |||||
_T("phonemes"),_T(""),_T("*"),wxOPEN); | |||||
if(!string.IsEmpty()) | if(!string.IsEmpty()) | ||||
{ | { | ||||
path_phfile = string; | path_phfile = string; |
for(k=0; k<ix; ) | for(k=0; k<ix; ) | ||||
{ | { | ||||
k += utf8_in(&wc,&buf[k]); | 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]); | j += utf8_out(wc,&wbuf[j]); | ||||
n_chars++; | n_chars++; | ||||
} | } | ||||
fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); | 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,"\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); | fclose(f); | ||||
} | } | ||||
//CharsetToUnicode("ISO-8859-4"); | //CharsetToUnicode("ISO-8859-4"); | ||||
//CharsetToUnicode("ISCII"); | //CharsetToUnicode("ISCII"); | ||||
if(control==2) | if(control==2) | ||||
{ | { | ||||
return; | return; |
return(-1); | 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 | static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages | ||||
int letter; | int letter; | ||||
int len; | int len; | ||||
int ix; | int ix; | ||||
int c; | |||||
char *p2; | char *p2; | ||||
char *pbuf; | char *pbuf; | ||||
const char *modifier; | |||||
ALPHABET *alphabet; | ALPHABET *alphabet; | ||||
int al_offset; | int al_offset; | ||||
int al_flags; | int al_flags; | ||||
int number; | int number; | ||||
int phontab_1; | int phontab_1; | ||||
int speak_letter_number; | int speak_letter_number; | ||||
char capital[20]; | |||||
char capital[30]; | |||||
char ph_buf[80]; | char ph_buf[80]; | ||||
char ph_buf2[80]; | char ph_buf2[80]; | ||||
char ph_alphabet[80]; | char ph_alphabet[80]; | ||||
if(control & 2) | if(control & 2) | ||||
{ | { | ||||
// include CAPITAL information | // include CAPITAL information | ||||
if(iswupper(letter)) | |||||
if(iswupper2(letter)) | |||||
{ | { | ||||
Lookup(tr, "_cap", capital); | Lookup(tr, "_cap", capital); | ||||
} | } | ||||
} | } | ||||
letter = towlower2(letter); | 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); | LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | ||||
if(ph_buf[0] == phonSWITCH) | if(ph_buf[0] == phonSWITCH) | ||||
return(0); | return(0); | ||||
} | } | ||||
if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | ||||
{ | { | ||||
// convert a non-ascii number to 0-9 | // convert a non-ascii number to 0-9 | ||||
speak_letter_number = 1; | speak_letter_number = 1; | ||||
if(!(al_flags & AL_NO_SYMBOL)) | if(!(al_flags & AL_NO_SYMBOL)) | ||||
{ | { | ||||
if(iswalpha(letter)) | |||||
if(iswalpha2(letter)) | |||||
Lookup(translator, "_?A", ph_buf); | Lookup(translator, "_?A", ph_buf); | ||||
if((ph_buf[0]==0) && !iswspace(letter)) | if((ph_buf[0]==0) && !iswspace(letter)) | ||||
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | ||||
utf8_in(&next_char,p); | 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. | strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | ||||
} | } | ||||
0x23d, 0x19a, | 0x23d, 0x19a, | ||||
0x23e, 0x2c66, | 0x23e, 0x2c66, | ||||
0x243, 0x180, | 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 | #ifdef NEED_WCHAR_FUNCTIONS | ||||
int towupper(int c) | int towupper(int c) | ||||
{ | { | ||||
int ix; | |||||
// check whether a previous character code is the upper-case equivalent of this character | // check whether a previous character code is the upper-case equivalent of this character | ||||
if(towlower(c-32) == c) | if(towlower(c-32) == c) | ||||
return(c-32); // yes, use it | return(c-32); // yes, use it | ||||
if(towlower(c-1) == c) | if(towlower(c-1) == c) | ||||
return(c-1); | 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 | return(c); // no | ||||
} | } | ||||
return(walpha_tab[c-0x80]); | 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) | int towlower2(unsigned int c) | ||||
{ | { | ||||
// check for non-standard upper to lower case conversions | // check for non-standard upper to lower case conversions | ||||
if(c == 'I') | if(c == 'I') | ||||
{ | { | ||||
if(translator->translator_name == L('t','r')) | |||||
if(translator->langopts.dotless_i) | |||||
{ | { | ||||
c = 0x131; // I -> ı | c = 0x131; // I -> ı | ||||
} | } | ||||
return(c + x); // convert to lower case | 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) | static int IsRomanU(unsigned int c) | ||||
{//================================ | {//================================ | ||||
c2 = ' '; | c2 = ' '; | ||||
} | } | ||||
else | else | ||||
if((c2 == '/') || iswalpha(c2)) | |||||
if((c2 == '/') || iswalpha2(c2)) | |||||
{ | { | ||||
// check for space in the output buffer for embedded commands produced by the SSML tag | // check for space in the output buffer for embedded commands produced by the SSML tag | ||||
if(ix > (n_buf - 20)) | if(ix > (n_buf - 20)) | ||||
} | } | ||||
} | } | ||||
if(iswupper(c1)) | |||||
if(iswupper2(c1)) | |||||
{ | { | ||||
tr->clause_upper_count++; | 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_buf[40]; | ||||
char text_buf2[30]; | char text_buf2[30]; | ||||
} | } | ||||
} | } | ||||
else | else | ||||
if(iswalpha(c1)) | |||||
if(iswalpha2(c1)) | |||||
tr->clause_lower_count++; | tr->clause_lower_count++; | ||||
if(option_phoneme_input) | if(option_phoneme_input) | ||||
if(!iswspace(c1)) | 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); | UngetC(c2); | ||||
ungot_char2 = c1; | ungot_char2 = c1; | ||||
if(nl_count==0) | 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 | // lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | ||||
c1 = CHAR_COMMA_BREAK; | c1 = CHAR_COMMA_BREAK; | ||||
} | } | ||||
else | 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) | is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | ||||
} | } | ||||
} | } | ||||
{ | { | ||||
is_end_clause = 0; // eg. u.s.a.'s | 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 | // next word has no capital letter, this dot is probably from an abbreviation | ||||
// c1 = ' '; | // c1 = ' '; |
} // end of espeak_SetPhonemes | } // 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) | ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | ||||
{//============================================================================= | {//============================================================================= | ||||
ENTER("espeak_CompileDictionary"); | ENTER("espeak_CompileDictionary"); |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x014701; | ||||
int option_device_number = -1; | int option_device_number = -1; |
if((option_phonemes > 0) || (phoneme_callback != NULL)) | if((option_phonemes > 0) || (phoneme_callback != NULL)) | ||||
{ | { | ||||
int use_ipa = 0; | |||||
int phoneme_mode = 0; | |||||
if(option_phonemes >= 3) | 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) | if(option_phonemes > 0) | ||||
{ | { | ||||
fprintf(f_trans,"%s\n",translator->phon_out); | 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) | if(phoneme_callback != NULL) | ||||
{ | { |
SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | ||||
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_ALLOW_SPACE | 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; | ||||
ResetLetterBits(tr,0x2); | ResetLetterBits(tr,0x2); | ||||
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | 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.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | ||||
tr->langopts.accents = 2; // 'capital' after letter name | |||||
} | } | ||||
break; | break; | ||||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | 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.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | ||||
tr->langopts.dotless_i = 1; | |||||
tr->langopts.param[LOPT_SUFFIX] = 1; | tr->langopts.param[LOPT_SUFFIX] = 1; | ||||
if(name2 == L('a','z')) | if(name2 == L('a','z')) |
while((*word != 0) && !isspace2(*word)) | while((*word != 0) && !isspace2(*word)) | ||||
{ | { | ||||
word += utf8_in(&c, word); | word += utf8_in(&c, word); | ||||
if(!iswupper(c)) | |||||
if(!iswupper2(c)) | |||||
return(0); | return(0); | ||||
} | } | ||||
return(1); | return(1); | ||||
} | } | ||||
} | } | ||||
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)) | if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | ||||
{ | { | ||||
tr->expect_past--; | 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 !!!! | // English Specific !!!! | ||||
// any single letter before a dot is an abbreviation, except 'I' | // any single letter before a dot is an abbreviation, except 'I' | ||||
while(*p2 != ' ') p2++; | while(*p2 != ' ') p2++; | ||||
utf8_in(&c_word2, p2+1); // first character of the next word; | utf8_in(&c_word2, p2+1); // first character of the next word; | ||||
if(!iswalpha(c_word2)) | |||||
if(!iswalpha2(c_word2)) | |||||
{ | { | ||||
ok =0; | ok =0; | ||||
} | } | ||||
// there is a list of character codes to be substituted with alternative codes | // 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; | upper_case = 1; | ||||
} | } | ||||
new_c = replace_chars[ix+1]; | new_c = replace_chars[ix+1]; | ||||
break; | break; | ||||
} | } | ||||
if((word >> 16) == (unsigned int)towlower(next_in)) | |||||
if((word >> 16) == (unsigned int)towlower2(next_in)) | |||||
{ | { | ||||
new_c = replace_chars[ix+1]; | new_c = replace_chars[ix+1]; | ||||
ignore_next = 1; | ignore_next = 1; | ||||
// there is a second character to be inserted | // 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 | // don't convert the case of the second character unless the next letter is also upper case | ||||
c2 = new_c >> 16; | c2 = new_c >> 16; | ||||
if(upper_case && iswupper(next_in)) | |||||
c2 = towupper(c2); | |||||
if(upper_case && iswupper2(next_in)) | |||||
c2 = towupper2(c2); | |||||
*insert = c2; | *insert = c2; | ||||
new_c &= 0xffff; | new_c &= 0xffff; | ||||
} | } | ||||
if(upper_case) | if(upper_case) | ||||
new_c = towupper(new_c); | |||||
new_c = towupper2(new_c); | |||||
*wordflags |= FLAG_CHAR_REPLACED; | *wordflags |= FLAG_CHAR_REPLACED; | ||||
return(new_c); | return(new_c); | ||||
// look for 'n and replace by a special character (unicode: schwa) | // look for 'n and replace by a special character (unicode: schwa) | ||||
if(!iswalpha(prev_in)) | |||||
if(!iswalpha2(prev_in)) | |||||
{ | { | ||||
utf8_in(&next2, &ptr[1]); | utf8_in(&next2, &ptr[1]); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(iswupper(c)) | |||||
if(iswupper2(c)) | |||||
word_flags |= FLAG_FIRST_UPPER; | word_flags |= FLAG_FIRST_UPPER; | ||||
if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | ||||
} | } | ||||
} | } | ||||
if(iswupper(c)) | |||||
if(iswupper2(c)) | |||||
{ | { | ||||
c = towlower2(c); | c = towlower2(c); | ||||
} | } | ||||
else | 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 | // lower case followed by upper case in a word | ||||
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | ||||
// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | // 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; | int next2_in; | ||||
utf8_in(&next2_in,&source[source_index + next_in_nbytes]); | utf8_in(&next2_in,&source[source_index + next_in_nbytes]); |
char tone_numbers; | char tone_numbers; | ||||
char ideographs; // treat as separate words | char ideographs; // treat as separate words | ||||
char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | 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 testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | ||||
int listx; // compile *_listx after *list | int listx; // compile *_listx after *list | ||||
const unsigned int *replace_chars; // characters to be substitutes | const unsigned int *replace_chars; // characters to be substitutes | ||||
int IsVowel(Translator *tr, int c); | int IsVowel(Translator *tr, int c); | ||||
int iswalpha2(int c); | int iswalpha2(int c); | ||||
int isspace2(unsigned int c); | int isspace2(unsigned int c); | ||||
int iswlower2(int c); | |||||
int iswupper2(int c); | |||||
int towlower2(unsigned 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); | const char *WordToString2(unsigned int word); | ||||
ALPHABET *AlphabetFromChar(int c); | ALPHABET *AlphabetFromChar(int c); | ||||
ALPHABET *AlphabetFromName(const char *name); | ALPHABET *AlphabetFromName(const char *name); |
t_phonetic->SetDefaultStyle(style_phonetic_large); | t_phonetic->SetDefaultStyle(style_phonetic_large); | ||||
translate_text = 3; | translate_text = 3; | ||||
use_ipa = 1; | |||||
use_ipa = 0x10; | |||||
break; | break; | ||||
case T_PROCESS: | case T_PROCESS: |
// which directory to look for a named voice. List of voice names, must end in a space. | // which directory to look for a named voice. List of voice names, must end in a space. | ||||
static const char *voices_asia = | static const char *voices_asia = | ||||
"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 = | static const char *voices_europe = | ||||
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | ||||