Browse Source

[1.47.07b]

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-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
271448af9c

+ 110
- 0
dictsource/az_list View File

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




+ 137
- 0
dictsource/az_rules View File

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

+ 4
- 4
dictsource/bn_list View File

_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

+ 2
- 2
dictsource/bn_rules View File





.group ছ .group ছ
ছ tS#V
ছ (B tS#
ছ tShV
ছ (B tSh


.group জ .group জ

+ 2
- 0
dictsource/de_list View File

_?? 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

+ 34
- 22
dictsource/dict_phonemes View File

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

+ 7
- 0
dictsource/en_list View File



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

+ 15
- 4
dictsource/ga_list View File

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

+ 91
- 44
dictsource/ga_rules View File



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

+ 57
- 3
dictsource/hy_list View File

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

+ 11
- 9
dictsource/hy_rules View File

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





+ 2
- 0
dictsource/nl_list View File

_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



+ 6
- 6
dictsource/pa_rules View File

ੱ) ਯ (_ 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

+ 18
- 9
dictsource/pt_list View File

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

+ 18
- 8
dictsource/pt_rules View File



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 ú

+ 65
- 39
dictsource/sk_list View File



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

+ 1
- 1
dictsource/tr_rules View File

.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

+ 6
- 5
phsource/compile_report View File

[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

+ 62
- 0
phsource/ph_azerbaijani View File


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


+ 11
- 11
phsource/ph_base2 View File



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



+ 2
- 12
phsource/ph_spanish View File

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

+ 2
- 2
phsource/phonemes View File





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

BIN
phsource/ufric/x_.wav View File


+ 2
- 2
src/compiledict.cpp View File

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

+ 29
- 18
src/dictionary.cpp View File

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

+ 1
- 1
src/espeakedit.cpp View File



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;

+ 22
- 6
src/extras.cpp View File

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;

+ 108
- 5
src/numbers.cpp View File

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.
} }



+ 75
- 14
src/readclause.cpp View File

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 = ' ';

+ 11
- 0
src/speak_lib.cpp View File

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

+ 1
- 1
src/synthdata.cpp View File

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

+ 3
- 9
src/synthesize.cpp View File



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

+ 3
- 1
src/tr_languages.cpp View File

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

+ 15
- 15
src/translate.cpp View File

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

+ 5
- 1
src/translate.h View File

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

+ 1
- 1
src/transldlg.cpp View File

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:

+ 1
- 1
src/voices.cpp View File



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



Loading…
Cancel
Save