Added languages: fa (Farsi), an (Aragon). Changes to languages: pt, si, ne. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@297 d46cf337-b52f-0410-862d-fd96e6ae7743master
// Aragon translation rules | |||||
// This file is UTF-8 encoded | |||||
// letter names | |||||
b be | |||||
c Te | |||||
d de | |||||
f Efe | |||||
g xe | |||||
h atSe | |||||
j xOta | |||||
k ka | |||||
l Ele | |||||
m Eme | |||||
n Ene | |||||
ñ En^e | |||||
p pe | |||||
q ku | |||||
r E*e | |||||
s Ese | |||||
t te | |||||
u u | |||||
v uBe | |||||
w uBe||dOBle | |||||
x Ekis | |||||
y je | |||||
z Teta | |||||
// numbers | |||||
_0 T'ero | |||||
_1 'un | |||||
_2 d'os | |||||
_3 tr'es | |||||
_4 kw'atro | |||||
_5 T'inko | |||||
_6 s'eIs | |||||
_7 s'eIt# | |||||
_8 gw'eIto | |||||
_9 nw'eU | |||||
_1X d,eT | |||||
_10 dj'eT | |||||
_11 'onTe | |||||
_12 d'oTe | |||||
_13 tr'eTe | |||||
_14 kat'orTe | |||||
_15 k'inTe | |||||
_20 B'inte | |||||
_2X B,int | |||||
_3X tr'enta | |||||
_4X kwar'anta | |||||
_5X Tinkw'anta | |||||
_6X siks'anta | |||||
_7X set'anta | |||||
_8X gwit'anta | |||||
_9X noB'anta | |||||
_0C Tj'Entos | |||||
_1C Tj'En | |||||
_2C doTj'Entos | |||||
_3C tresTj'Entos | |||||
_6C seITj'Entos | |||||
_7C sjEteTj'Entos | |||||
_8C gwitoTj'Entos | |||||
_9C nowTj'Entos | |||||
_0M1 m'il | |||||
_0M2 mil^'ones | |||||
_0and i | |||||
_dpt kon | |||||
// Aragon translation rules | |||||
// This file is UTF-8 encoded | |||||
.L01 l r y | |||||
.L03 f h j s y z r // allow [B] [D] [Q] before these consonants | |||||
.L04 b v f p // labials, nasals are [m] | |||||
.L05 g k // velars, nasals are [N] | |||||
.group a | |||||
a a | |||||
ai aI | |||||
ai (X 'aI | |||||
ay (K aI | |||||
ay (X 'aI | |||||
au aU | |||||
au (X 'aU | |||||
.group b | |||||
b b | |||||
_) b b // phoneme definition may change it to [B] | |||||
_) b (A b | |||||
b (A B | |||||
b (cY B | |||||
b (L03 B | |||||
m) b b | |||||
n) b b | |||||
b (iA b | |||||
b (uA b | |||||
.group c | |||||
c k | |||||
c (Y T // ce ci | |||||
cc kT | |||||
ch tS | |||||
.group d | |||||
d d | |||||
_) d d // phoneme definition may change it to [D] | |||||
_) d (A d | |||||
d (A D | |||||
d (cY D | |||||
d (L03 D | |||||
m) d d | |||||
n) d d | |||||
l) d d | |||||
r) d d | |||||
n) d (_ = // silent, but stress on last vowel | |||||
.group e | |||||
e e | |||||
ei eI | |||||
ei (X 'eI | |||||
ey (K eI | |||||
ey (X 'eI | |||||
eu eU | |||||
eu (X 'eU | |||||
i) e E | |||||
u) e E | |||||
y) e E | |||||
.group f | |||||
f f | |||||
.group g | |||||
g g | |||||
_) g g // phoneme definition may change it to [Q] | |||||
_) gh (A g // allow _gh in foreign words | |||||
_) gn (A n | |||||
_) g (A g | |||||
g (A Q | |||||
g (cY Q | |||||
g (L03 Q | |||||
m) g g | |||||
n) g g | |||||
g (Y+ x // ge gi | |||||
gu (A gw | |||||
gü gw | |||||
gu (e g | |||||
gu (i g | |||||
.group h | |||||
h // silent | |||||
.group i | |||||
i i | |||||
i (A j | |||||
A) ix S | |||||
.group j | |||||
j x | |||||
.group k | |||||
k k | |||||
.group l | |||||
l l | |||||
ll l^ | |||||
.group m | |||||
m m | |||||
.group n | |||||
n n | |||||
n (L04 m | |||||
n (_L04 m | |||||
ny n^ | |||||
.group ñ | |||||
ñ n^ | |||||
.group o | |||||
o o | |||||
oi oI | |||||
oi (X 'oI | |||||
oy (K oI | |||||
oy (X 'oI | |||||
ou ow | |||||
ou (X 'ow | |||||
i) o O | |||||
u) o O | |||||
y) o O | |||||
.group p | |||||
p p | |||||
.group q | |||||
qu (A kw | |||||
qü kw | |||||
qu (e k | |||||
qu (i k | |||||
.group r | |||||
r r | |||||
_) r R | |||||
rr RR2 | |||||
@) r (- = // followed by hyphen. Silent, but stress on last vowel | |||||
.group s | |||||
s s | |||||
.group t | |||||
t t | |||||
a) t (_ t# // becomes silent in a stressed syllable | |||||
u) t (_ t# | |||||
ei) t (_ t# | |||||
n) t (_ = // silent, but stress on last vowel | |||||
tz T | |||||
.group u | |||||
u u | |||||
u (A w | |||||
_) u (A gw | |||||
.group v | |||||
v B | |||||
.group w | |||||
w w | |||||
.group x | |||||
x ks | |||||
_) x S | |||||
.group y | |||||
y j | |||||
.group z | |||||
z T | |||||
.group | |||||
á ''a | |||||
é ''e | |||||
í ''i | |||||
ó ''o | |||||
ú ''u | |||||
ts v x z | ts v x z | ||||
Dictionary en_dict 2013-01-15 | |||||
Dictionary en_dict 2013-01-18 | |||||
0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
a a# A: A@ aa aI aI3 aI@ | a a# A: A@ aa aI aI3 aI@ | ||||
t. th th. v w x z | t. th th. v w x z | ||||
Dictionary ta_dict 2013-01-15 | |||||
Dictionary ta_dict 2013-01-18 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: u U u2 u: | I i: o o: u U u2 u: | ||||
ts; v w x z Z Z; | ts; v w x z Z Z; | ||||
Dictionary pt_dict 2012-11-24 | |||||
Dictionary pt_dict 2013-01-17 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
v w x z | v w x z | ||||
Dictionary sl_dict 2013-01-15 | |||||
Dictionary sl_dict 2013-01-16 | |||||
@ @- a a: e E e: i | @ @- a a: e E e: i | ||||
i: o O o: u u: y | i: o O o: u u: y | ||||
: b d dZ dz f g h | : b d dZ dz f g h | ||||
j k l l^ m n N n^ | j k l l^ m n N n^ | ||||
p R R^ s S t tS ts | p R R^ s S t tS ts | ||||
v w x z Z | |||||
v v# w x z Z | |||||
Dictionary tr_dict 2011-09-16 | Dictionary tr_dict 2011-09-16 | ||||
v w x z Z z. | v w x z Z z. | ||||
Dictionary zh_dict 2010-09-13 | |||||
Dictionary zh_dict 2013-01-04 | |||||
@ @r a A ai Au E ei | @ @r a A ai Au E ei | ||||
i i. i[ iA iE io iou N- | i i. i[ iA iE io iou N- | ||||
t. th th. tS v w z | t. th th. tS v w z | ||||
Dictionary ne_dict 2012-09-19 | |||||
Dictionary ne_dict 2013-01-10 | |||||
@ @/ @2 @3 a a: aI aU | @ @/ @2 @3 a a: aI aU | ||||
a~ e E e: E: eI e~ E~ | a~ e E e: E: eI e~ E~ | ||||
Z | Z | ||||
Dictionary si_dict 2012-11-05 | |||||
Dictionary si_dict 2013-01-18 | |||||
& &: @ a a: aI aU e | & &: @ a a: aI aU e | ||||
e: i i: o o: u u: | e: i i: o o: u u: | ||||
j k k- kh l m n N | j k k- kh l m n N | ||||
p p- ph q r R s t | p p- ph q r R s t | ||||
t- tS tS; w | t- tS tS; w | ||||
Dictionary fa_dict 2013-01-19 | |||||
a A e i o u | |||||
: ? b d dZ f g h | |||||
j k l m n p q r | |||||
R s S t tS v w x | |||||
z Z | |||||
Dictionary an_dict 2013-01-18 | |||||
a aI aU e E eI eU i | |||||
o O oI u | |||||
* b B d D f g j | |||||
k l l^ m n n^ p Q | |||||
r R R2 s S t T t# | |||||
tS w x |
altogether ,O:lt@gED3 | altogether ,O:lt@gED3 | ||||
always O:lweIz | always O:lweIz | ||||
aluminium aljUm'Ini@m | aluminium aljUm'Ini@m | ||||
alzheimer altsaIm3 | |||||
amaryllis am@r'IlIs | amaryllis am@r'IlIs | ||||
amass a#mas | amass a#mas | ||||
ambassador a#mbas@d3 | ambassador a#mbas@d3 | ||||
apneoa apni@ | apneoa apni@ | ||||
apostle a#p0s@L | apostle a#p0s@L | ||||
apron eIpr@n | apron eIpr@n | ||||
apropos apr@p'oU | |||||
appal a#pO:l | appal a#pO:l | ||||
apparatus ap@r'eIt@s | apparatus ap@r'eIt@s | ||||
?3 apparatus ap@r'at@s | ?3 apparatus ap@r'at@s | ||||
hercules h3:kjUli:z | hercules h3:kjUli:z | ||||
heretical hI2rEtI2k@L | heretical hI2rEtI2k@L | ||||
hereto hi@3'tu: | hereto hi@3'tu: | ||||
heretofore hi@3t@fo@ | |||||
hermaphrodite $2 | hermaphrodite $2 | ||||
hermes h3:mi:z | hermes h3:mi:z | ||||
herod hEr@d | herod hEr@d |
app (eti ap | app (eti ap | ||||
app (le ap | app (le ap | ||||
app (lic ap | app (lic ap | ||||
app (licab a#p | |||||
applicab a#plIk@b | |||||
app (reh ap | app (reh ap | ||||
apres apreI | apres apreI | ||||
_) apprec (L02 a#pri:S | _) apprec (L02 a#pri:S | ||||
_c) re (mat rI2 | _c) re (mat rI2 | ||||
rement rIm@nt | rement rIm@nt | ||||
_) re (nC rE | _) re (nC rE | ||||
re (nova rE | |||||
_) reper (t rEp3 | _) reper (t rEp3 | ||||
repe (tit rEp@ | repe (tit rEp@ | ||||
repe (titiv rI2pE | repe (titiv rI2pE |
९_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | ९_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | ||||
// .group ( // Deliminator, not possible | |||||
// .group ) // Deliminator, not possible | // .group ) // Deliminator, not possible | ||||
// .group . // Deliminator, not possible | |||||
// Special Symbols with special meanings | // Special Symbols with special meanings | ||||
.group | .group | ||||
। pur',n.@,w'ir'a:m // Fullstop of Devanagari | । pur',n.@,w'ir'a:m // Fullstop of Devanagari | ||||
॥ d'ob'b@2r@2,wir'a::mV // Double Fullstop - means Read sentence twice. | |||||
ॱ b'i:n=d'u: // Decimal of devanagari (dot [.] is mostly used!). | |||||
॰ V,nsh@ // symbol for degree in Devanagari. | |||||
॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice. | |||||
ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). | |||||
॰ saNks.e:p@s'u:c@k@ | |||||
$ dOlV | $ dOlV | ||||
% prVtish'vt | % prVtish'vt | ||||
// Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! | // Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! | ||||
़ n'u'k't'a: // Name of symbol. | ़ n'u'k't'a: // Name of symbol. | ||||
॑ | |||||
॓ | |||||
॔ | |||||
ॽ | |||||
॒ Vd'o:,r'ekh'a: // Name of symbol. | |||||
॑ Ud'Vtt,@ | |||||
॓ Ud:dh@r,@n.@a:r'Vmbh@ | |||||
॔ ,Ud:dh@r,@n.@'Vnt@ | |||||
ॽ k,@n.th.@w'Ira:m | |||||
॒ a'n'ud'Vtt,@ | |||||
// The Latin letter a-z are automatically translated into English. | // The Latin letter a-z are automatically translated into English. |
aperto $alt2 $noun | aperto $alt2 $noun | ||||
apoio $alt $verb | apoio $alt $verb | ||||
aprendeste $alt2 | aprendeste $alt2 | ||||
aprovo $alt | |||||
arremesso $alt2 $noun | arremesso $alt2 $noun | ||||
arroz $alt2 | |||||
assembleia $alt | assembleia $alt | ||||
atmosfera $alt | atmosfera $alt | ||||
atrozes $alt | atrozes $alt | ||||
careta $alt2 | careta $alt2 | ||||
carreta $alt2 | carreta $alt2 | ||||
casebre $alt | casebre $alt | ||||
castelo $alt | |||||
cateto $alt2 | cateto $alt2 | ||||
catorze $alt2 | catorze $alt2 | ||||
cefaleia $alt | cefaleia $alt | ||||
chefe $alt | chefe $alt | ||||
chinelo $alt | chinelo $alt | ||||
choro $alt2 $noun | choro $alt2 $noun | ||||
chupeta $alt2 | |||||
coco $alt2 | coco $alt2 | ||||
cofre $alt | cofre $alt | ||||
colmeia $alt | colmeia $alt | ||||
corpos $alt | corpos $alt | ||||
correste $alt2 | correste $alt2 | ||||
corto $alt | corto $alt | ||||
corveta $alt2 | |||||
corvos $alt | corvos $alt | ||||
coto $alt2 | coto $alt2 | ||||
couber $alt | couber $alt | ||||
crescem $alt | crescem $alt | ||||
der $alt | der $alt | ||||
desapego $alt2 $noun | desapego $alt2 $noun | ||||
descabelo $alt | |||||
desce $alt | desce $alt | ||||
descem $alt | descem $alt | ||||
descordo $alt | descordo $alt | ||||
enumerem $alt | enumerem $alt | ||||
enredo $alt $verb | enredo $alt $verb | ||||
enterro $alt2 $noun | enterro $alt2 $noun | ||||
envelope $alt | |||||
envolto $alt2 | envolto $alt2 | ||||
enxerto $alt2 $noun | enxerto $alt2 $noun | ||||
epopeia $alt | epopeia $alt | ||||
esperma $alt | esperma $alt | ||||
espeto $alt2 $noun | espeto $alt2 $noun | ||||
espiroqueta $alt2 | espiroqueta $alt2 | ||||
espoleta $alt2 | |||||
esposa $alt2 | |||||
esqueleto $alt2 | esqueleto $alt2 | ||||
estiverdes $alt | estiverdes $alt | ||||
estiveres $alt | estiveres $alt | ||||
estrela $alt2 | |||||
estrofe $alt | estrofe $alt | ||||
etiqueta $alt2 | etiqueta $alt2 | ||||
europa $alt | europa $alt | ||||
folga $alt | folga $alt | ||||
fogos $alt | fogos $alt | ||||
forca $alt2 | forca $alt2 | ||||
forças $alt2 | |||||
fores $alt2 | fores $alt2 | ||||
forro $alt $verb | forro $alt $verb | ||||
fosse $alt2 | fosse $alt2 | ||||
martelo $alt | martelo $alt | ||||
merda $alt | merda $alt | ||||
megera $alt | megera $alt | ||||
melo $alt | |||||
mentora $alt2 | mentora $alt2 | ||||
metro $alt | metro $alt | ||||
mexa m'eS& | mexa m'eS& | ||||
pesquem $alt | pesquem $alt | ||||
peso $alt | peso $alt | ||||
peso $alt2 $noun | peso $alt2 $noun | ||||
piloto $alt2 | |||||
pirueta $alt2 | pirueta $alt2 | ||||
plateia $alt | plateia $alt | ||||
plebeia $alt | plebeia $alt | ||||
rede $alt2 | rede $alt2 | ||||
reforços $alt | reforços $alt | ||||
refresco $alt $verb | refresco $alt $verb | ||||
reitora $alt2 | |||||
remorso $alt | remorso $alt | ||||
resolve $alt | resolve $alt | ||||
resolvem $alt | resolvem $alt | ||||
rogas $alt | rogas $alt | ||||
saleta $alt2 | saleta $alt2 | ||||
sarjeta $alt | sarjeta $alt | ||||
severa $alt | |||||
severo $alt | |||||
seborreia $alt | seborreia $alt | ||||
seco $alt2 $noun | seco $alt2 $noun | ||||
selo $alt $verb | selo $alt $verb | ||||
teta $alt2 | teta $alt2 | ||||
tiver $alt | tiver $alt | ||||
tiveres $alt | tiveres $alt | ||||
tocha $alt | |||||
toga $alt | toga $alt | ||||
torres $alt2 | torres $alt2 | ||||
tortos $alt | tortos $alt |
_sup) e (rL04_ E | _sup) e (rL04_ E | ||||
_imp) e (rL03_ E | _imp) e (rL03_ E | ||||
_temp) e (rL04_ E | _temp) e (rL04_ E | ||||
_esp) e (ssL03_ e | |||||
_l) e (ssL02_ e | |||||
_perd) e (L05_ e | |||||
_rend) e (L06_ e | |||||
_atend) e (L06_ e | |||||
_pen) e (trL04_ E | |||||
//endsort | //endsort | ||||
_exag) e (L05_ E | _exag) e (L05_ E | ||||
_m) o (rrL01_ o | _m) o (rrL01_ o | ||||
p) ostos (_ Ost=Us# // dispostos etc. | p) ostos (_ Ost=Us# // dispostos etc. | ||||
_esn) o (bL04_ O | _esn) o (bL04_ O | ||||
_esc) o (lhL02_ O | |||||
_rev) o (lvL02_ O | |||||
_desenv) o (lvL02_ O | |||||
_ ent) o (pL02_ O | |||||
//endsort | //endsort | ||||
.group ô | .group ô | ||||
_xi) x (A S | _xi) x (A S | ||||
?1 i) x (a_ S | ?1 i) x (a_ S | ||||
?1 i) x (as_ S | ?1 i) x (as_ S | ||||
_trou) x (ér s | |||||
_pro) x (imi s | |||||
.group y | .group y |
// numbers | // numbers | ||||
_0 n'itS | _0 n'itS | ||||
_1 'ena | |||||
_1 'Ena | |||||
_2 dv#'a | _2 dv#'a | ||||
_3 tR'i | _3 tR'i | ||||
_4 St'iRi | _4 St'iRi | ||||
_0M1 t'isotS | _0M1 t'isotS | ||||
_1M1 t'isotS | _1M1 t'isotS | ||||
_1M2 'enmilij'on | |||||
_1M2 'Enmilij'on | |||||
_2M2 dv#'amilij'ona | _2M2 dv#'amilij'ona | ||||
_3M2 tR'ijemilij'oni | _3M2 tR'ijemilij'oni | ||||
_4M2 St'iRijemilij'oni | _4M2 St'iRijemilij'oni | ||||
_0M2 milij'onow | _0M2 milij'onow | ||||
_1M3 'enamilij'aRda | |||||
_1M3 'Enamilij'aRda | |||||
_2M3 dv#'emilij'aRdi | _2M3 dv#'emilij'aRdi | ||||
_3M3 tR'imilij'aRde | _3M3 tR'imilij'aRde | ||||
_4M3 St'iRimilij'aRde | _4M3 St'iRimilij'aRde | ||||
_0M3 milij'aRd | _0M3 milij'aRd | ||||
_1M4 'enbilij'on | |||||
_1M4 'Enbilij'on | |||||
_2M4 dv#'abilij'ona | _2M4 dv#'abilij'ona | ||||
_3M4 tR'ijebilij'oni | _3M4 tR'ijebilij'oni | ||||
_4M4 St'iRijebilij'oni | _4M4 St'iRijebilij'oni |
.group e | .group e | ||||
e e | e e | ||||
e (_ E // ?? | e (_ E // ?? | ||||
_) e E | |||||
.group f | .group f | ||||
.group i | .group i | ||||
i i | i i | ||||
i (A j | i (A j | ||||
i (r j | |||||
.group j | .group j | ||||
.group u | .group u | ||||
u u | u u | ||||
u (A w | u (A w | ||||
u (r u | |||||
A) u (K w | A) u (K w | ||||
.L26 சிலிண்டர ஸ்டவ் கனெக் அடுப்ப | .L26 சிலிண்டர ஸ்டவ் கனெக் அடுப்ப | ||||
// words after சிரத்தை | // words after சிரத்தை | ||||
.L27 _உண்ட _ஏற்பட _இல்ல யிரு யாக யி | |||||
.L27 _உண்ட _ஏற்பட _இல்ல யிரு யாக யி யுடன யை | |||||
// [aU] at start of word | // [aU] at start of word | ||||
.L28 ஔ ஒள // அவு | .L28 ஔ ஒள // அவு | ||||
_மலே) ச (ிய s. | _மலே) ச (ிய s. | ||||
இந்தோனே) ச (ிய s. | இந்தோனே) ச (ிய s. | ||||
_பக்தி_) சிரத் (தை srVd | _பக்தி_) சிரத் (தை srVd | ||||
_) சி (ரத்தைL27 s | |||||
_) சிரத்த (ையுடன srVdd | |||||
_) சிரத்த (ையை srVdd | |||||
_) சிரத்த (ைL27 srVdd | |||||
சி (ரம s | சி (ரம s | ||||
_) சி (ரார்த்த s | _) சி (ரார்த்த s | ||||
_) சிரிலங்க (ா srilVNk | _) சிரிலங்க (ா srilVNk | ||||
_) ப (தில bV | _) ப (தில bV | ||||
_) பத்த (ிரகாளி bVdd | _) பத்த (ிரகாளி bVdd | ||||
_) பத்திரப் (_ bVttirVp | _) பத்திரப் (_ bVttirVp | ||||
_) ப (த்திரப்_பதி bV | |||||
_) பத்திரப் (_பதி pVttirVp | |||||
_) ப (த்திரப்பட bV | _) ப (த்திரப்பட bV | ||||
_) ப (த்திரமா bV | _) ப (த்திரமா bV | ||||
_) பத்த (ிரி_ bVdd | _) பத்த (ிரி_ bVdd |
84 phoneme tables | |||||
85 phoneme tables | |||||
new total | new total | ||||
base 109 109 | base 109 109 | ||||
consonants 10 118 | consonants 10 118 | ||||
es 15 125 | es 15 125 | ||||
es-la 1 125 | es-la 1 125 | ||||
ca 11 127 | ca 11 127 | ||||
an 4 125 | |||||
pt 29 140 | pt 29 140 | ||||
pt-pt 20 140 | pt-pt 20 140 | ||||
ro 36 148 | ro 36 148 | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [hæt] base | |||||
l/l@ [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [hæt] base | |||||
l/la [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[K] tn | [K] tn | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [hæt] base | |||||
l/le [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [hæt] base | |||||
l/li [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
ll/_ll [L] base | ll/_ll [L] base | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [hæt] base | |||||
l/lo [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l/2] fr | [l/2] fr | ||||
[K] nso | [K] nso | ||||
[l;] lt | [l;] lt | ||||
[l] ru | [l] ru | ||||
[l^] ru | [l^] ru | ||||
l/lu [hæt] base | |||||
l/lu [hÖv] base | |||||
[l#] base | [l#] base | ||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[e] lt | [e] lt | ||||
[E] pl | [E] pl | ||||
[E] la | [E] la | ||||
[E] an | |||||
[E] grc | [E] grc | ||||
[E:] sv | [E:] sv | ||||
[E:] no | [E:] no | ||||
[O1] et | [O1] et | ||||
[O:] hi | [O:] hi | ||||
[O] it | [O] it | ||||
[O] an | |||||
[O] pa | [O] pa | ||||
[O] ga | [O] ga | ||||
vowel/oo_5 [O] pl | vowel/oo_5 [O] pl |
// based on Spanish | |||||
phoneme t# | |||||
vls dnt stop | |||||
IF NOT prevVowel(isStressed) THEN | |||||
ChangePhoneme(t) | |||||
ENDIF | |||||
endphoneme | |||||
phoneme E | |||||
vowel starttype #e endtype #e | |||||
length 170 | |||||
FMT(vowel/ee_1) | |||||
endphoneme | |||||
phoneme O | |||||
vowel starttype #o endtype #o | |||||
length 170 | |||||
FMT(vowel/oo_4) | |||||
endphoneme | |||||
// Long Vowels | |||||
phoneme A | |||||
vowel starttype #i endtype #i | |||||
length 200 | |||||
FMT(vowel/0_3) | |||||
endphoneme | |||||
phoneme i | |||||
vowel starttype #i endtype #i | |||||
length 200 | |||||
FMT(vowel/i) | |||||
endphoneme | |||||
phoneme u | |||||
vowel starttype #i endtype #i | |||||
length 200 | |||||
FMT(vowel/u_bck2) | |||||
endphoneme | |||||
// Short Vowels | |||||
phoneme a | |||||
vowel starttype #i endtype #i | |||||
length 160 | |||||
FMT(vowel/&) | |||||
endphoneme | |||||
phoneme e | |||||
vowel starttype #i endtype #i | |||||
length 160 | |||||
FMT(vowel/e_mid2) | |||||
endphoneme | |||||
phoneme o | |||||
vowel starttype #i endtype #i | |||||
length 160 | |||||
FMT(vowel/o_mid) | |||||
endphoneme | |||||
// Diphthongs | |||||
phoneme eI | |||||
vowel starttype #i endtype #i | |||||
length 220 | |||||
FMT(vdiph/eei_2) | |||||
endphoneme | |||||
phoneme oU | |||||
vowel starttype #i endtype #i | |||||
length 220 | |||||
FMT(vdiph/ou_2) | |||||
endphoneme | |||||
phoneme @ // Schwa, can be stressed | |||||
vowel starttype #@ endtype #@ | |||||
length 140 | |||||
FMT(vowel/@) | |||||
endphoneme | |||||
phoneme i | |||||
vowel starttype #i endtype #i | |||||
length 140 | |||||
IfNextVowelAppend(;) | |||||
FMT(vowel/ii_3) | |||||
endphoneme | |||||
phoneme u | |||||
vowel starttype #u endtype #u | |||||
length 140 | |||||
FMT(vowel/u_2) | |||||
endphoneme | |||||
phoneme a | |||||
vowel starttype #a endtype #a | |||||
length 170 | |||||
FMT(vowel/a) | |||||
endphoneme | |||||
phoneme e | |||||
vowel starttype #e endtype #e | |||||
length 160 | |||||
FMT(vowel/e_2) | |||||
endphoneme | |||||
phoneme E | |||||
vowel starttype #e endtype #e | |||||
length 160 | |||||
FMT(vowel/e_mid) | |||||
endphoneme | |||||
phoneme o | |||||
vowel starttype #o endtype #o | |||||
length 160 | |||||
FMT(vowel/o_8) | |||||
endphoneme | |||||
phoneme O | |||||
vowel starttype #o endtype #o | |||||
length 170 | |||||
FMT(vowel/0_2) | |||||
endphoneme | |||||
phoneme v | |||||
import_phoneme base/v# | |||||
endphoneme |
phonemetable ca es | phonemetable ca es | ||||
include ph_catalan | include ph_catalan | ||||
phonemetable an es | |||||
include ph_aragon | |||||
phonemetable pt base2 | phonemetable pt base2 | ||||
include ph_pt_brazil | include ph_pt_brazil | ||||
[Setup] | [Setup] | ||||
AppName=eSpeak | AppName=eSpeak | ||||
AppVerName=eSpeak version 1.46.28 | |||||
AppVerName=eSpeak version 1.46.31 | |||||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | ||||
WindowVisible=yes | WindowVisible=yes | ||||
case lang1 of | case lang1 of | ||||
'af': value := $436; | 'af': value := $436; | ||||
'am': value := $45e; | 'am': value := $45e; | ||||
'an': value := $40a; // Aragon, use code for Spanish | |||||
'az': value := $42c; | 'az': value := $42c; | ||||
'bg': value := $402; | 'bg': value := $402; | ||||
'bs': value := $41a; // should be $141a but Jaws crashes on startup | 'bs': value := $41a; // should be $141a but Jaws crashes on startup | ||||
'es': value := $40a; | 'es': value := $40a; | ||||
'et': value := $425; | 'et': value := $425; | ||||
'eu': value := $42d; | 'eu': value := $42d; | ||||
'fa': value := $429; | |||||
'fi': value := $40b; | 'fi': value := $40b; | ||||
'fil': value := $464; | 'fil': value := $464; | ||||
'fr': value := $40c; | 'fr': value := $40c; | ||||
'ml': value := $44c; | 'ml': value := $44c; | ||||
'mn': value := $450; | 'mn': value := $450; | ||||
'mt': value := $43a; | 'mt': value := $43a; | ||||
'my': value := $455; | |||||
'ne': value := $461; | 'ne': value := $461; | ||||
'nl': value := $413; | 'nl': value := $413; | ||||
'no': value := $414; | 'no': value := $414; |
int offset; | int offset; | ||||
int min; | int min; | ||||
int max; | int max; | ||||
const char *map; | |||||
char *p = text; | char *p = text; | ||||
char *p2 = text; | char *p2 = text; | ||||
int all_alpha=1; | int all_alpha=1; | ||||
offset = tr->transpose_min - 1; | offset = tr->transpose_min - 1; | ||||
min = tr->transpose_min; | min = tr->transpose_min; | ||||
max = tr->transpose_max; | max = tr->transpose_max; | ||||
map = tr->transpose_map; | |||||
pairs_start = max - min + 2; | pairs_start = max - min + 2; | ||||
do { | do { | ||||
p += utf8_in(&c,p); | p += utf8_in(&c,p); | ||||
if((c >= min) && (c <= max)) | |||||
{ | |||||
*p2++ = c - offset; | |||||
} | |||||
else | |||||
if(c != 0) | if(c != 0) | ||||
{ | { | ||||
p2 += utf8_out(c,p2); | |||||
all_alpha=0; | |||||
if((c >= min) && (c <= max)) | |||||
{ | |||||
if(map == NULL) | |||||
{ | |||||
*p2++ = c - offset; | |||||
} | |||||
else | |||||
{ | |||||
// get the code from the transpose map | |||||
if(map[c - min] > 0) | |||||
{ | |||||
*p2++ = map[c - min]; | |||||
} | |||||
else | |||||
{ | |||||
p2 += utf8_out(c,p2); | |||||
all_alpha=0; | |||||
} | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
p2 += utf8_out(c,p2); | |||||
all_alpha=0; | |||||
} | |||||
} | } | ||||
} while (c != 0); | } while (c != 0); | ||||
*p2 = 0; | *p2 = 0; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.46.30 15.Jan.13"; | |||||
const int version_phdata = 0x014624; | |||||
const char *version_string = "1.46.31 19.Jan.13"; | |||||
const int version_phdata = 0x014631; | |||||
int option_device_number = -1; | int option_device_number = -1; | ||||
FILE *f_logespeak = NULL; | FILE *f_logespeak = NULL; |
static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words | static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words | ||||
static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0}; | static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0}; | ||||
// Translates character codes in the range transpose_min to transpose_max to | |||||
// a number in the range 1 to 63. 0 indicates there is no translation. | |||||
// Used up to 57 (max of 63) | |||||
static const char transpose_map_latin[] = { | |||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0x60 | |||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, // 0x70 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x80 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x90 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xa0 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xb0 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xc0 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xd0 | |||||
27, 28, 29, 0, 0, 30, 31, 32, 33, 34, 35, 36, 0, 37, 38, 0, // 0xe0 | |||||
0, 0, 0, 39, 0, 0, 40, 0, 41, 0, 42, 0, 43, 0, 0, 0, // 0xf0 | |||||
0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, // 0x100 | |||||
0, 48, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, // 0x110 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x120 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x130 | |||||
0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x140 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, // 0x150 | |||||
0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x160 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 56, 0, 57, 0, // 0x170 | |||||
}; | |||||
tr = (Translator *)Alloc(sizeof(Translator)); | tr = (Translator *)Alloc(sizeof(Translator)); | ||||
if(tr == NULL) | if(tr == NULL) | ||||
tr->data_dictrules = NULL; // language_1 translation rules file | tr->data_dictrules = NULL; // language_1 translation rules file | ||||
tr->data_dictlist = NULL; // language_2 dictionary lookup file | tr->data_dictlist = NULL; // language_2 dictionary lookup file | ||||
tr->transpose_min = 'a'; | |||||
tr->transpose_max = 'z'; | |||||
tr->transpose_min = 0x60; | |||||
tr->transpose_max = 0x17f; | |||||
tr->transpose_map = transpose_map_latin; | |||||
tr->frequent_pairs = NULL; | tr->frequent_pairs = NULL; | ||||
// only need lower case | // only need lower case | ||||
tr->charset_a0 = charsets[18]; // KOI8-R | tr->charset_a0 = charsets[18]; // KOI8-R | ||||
tr->transpose_min = 0x430; // convert cyrillic from unicode into range 0x01 to 0x22 | tr->transpose_min = 0x430; // convert cyrillic from unicode into range 0x01 to 0x22 | ||||
tr->transpose_max = 0x451; | tr->transpose_max = 0x451; | ||||
tr->transpose_map = NULL; | |||||
tr->frequent_pairs = pairs_ru; | tr->frequent_pairs = pairs_ru; | ||||
tr->letter_bits_offset = OFFSET_CYRILLIC; | tr->letter_bits_offset = OFFSET_CYRILLIC; | ||||
break; | break; | ||||
case L('e','s'): // Spanish | case L('e','s'): // Spanish | ||||
case L('a','n'): // Aragonese | |||||
case L('c','a'): // Catalan | case L('c','a'): // Catalan | ||||
case L_pap: // Papiamento | case L_pap: // Papiamento | ||||
{ | { | ||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | ||||
} | } | ||||
else | else | ||||
if(name2 == L('a','n')) | |||||
{ | |||||
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | |||||
} | |||||
else | |||||
if(name2 == L_pap) | if(name2 == L_pap) | ||||
{ | { | ||||
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | ||||
case L('f','a'): // Farsi | case L('f','a'): // Farsi | ||||
{ | { | ||||
// Convert characters in the range 0x620 to 0x6cc to the range 1 to 63. | |||||
// 0 indicates no translation for this character | |||||
static const char transpose_map_fa[] = { | |||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0x620 | |||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, // 0x630 | |||||
0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, // 0x640 | |||||
42, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x650 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x660 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, // 0x670 | |||||
0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x680 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, // 0x690 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 49, // 0x6a0 | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x6b0 | |||||
50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51 }; // 0x6c0 | |||||
tr->transpose_min = 0x620; | |||||
tr->transpose_max = 0x6cc; | |||||
tr->transpose_map = transpose_map_fa; | |||||
tr->letter_bits_offset = OFFSET_ARABIC; | tr->letter_bits_offset = OFFSET_ARABIC; | ||||
tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND; | tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
tr->langopts.stress_flags = 0x20; | tr->langopts.stress_flags = 0x20; | ||||
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | ||||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | ||||
tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | |||||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | ||||
tr->langopts.numbers2 = 0x100; // plural forms of millions etc | tr->langopts.numbers2 = 0x100; // plural forms of millions etc | ||||
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator | tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator | ||||
// SetLetterVowel(tr,'r'); | |||||
break; | break; | ||||
case L('s','q'): // Albanian | case L('s','q'): // Albanian |
int translator_name; | int translator_name; | ||||
int transpose_max; | int transpose_max; | ||||
int transpose_min; | int transpose_min; | ||||
const char *transpose_map; | |||||
char dictionary_name[40]; | char dictionary_name[40]; | ||||
char phon_out[400]; | char phon_out[400]; |
#define DEFAULT_LANGUAGE_PRIORITY 5 | #define DEFAULT_LANGUAGE_PRIORITY 5 | ||||
#define N_VOICES_LIST 150 | |||||
#define N_VOICES_LIST 200 | |||||
static int n_voices_list = 0; | static int n_voices_list = 0; | ||||
static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
static int len_path_voices; | static int len_path_voices; | ||||
int ix; | int ix; | ||||
int j; | int j; | ||||
espeak_VOICE *v; | espeak_VOICE *v; | ||||
static espeak_VOICE *voices[N_VOICES_LIST]; | |||||
static espeak_VOICE **voices = NULL; | |||||
char path_voices[sizeof(path_home)+12]; | char path_voices[sizeof(path_home)+12]; | ||||
// free previous voice list data | // free previous voice list data | ||||
GetVoices(path_voices); | GetVoices(path_voices); | ||||
voices_list[n_voices_list] = NULL; // voices list terminator | voices_list[n_voices_list] = NULL; // voices list terminator | ||||
voices = (espeak_VOICE **)realloc(voices, sizeof(espeak_VOICE *)*(n_voices_list+1)); | |||||
// sort the voices list | // sort the voices list | ||||
qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), | qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), |