Browse Source

[1.47.07a]

Use internal data for iswalpha(), towlower() for characters up to U+024F.
Language changes: es, nl, pt, tr, vi.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@346 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
93cc76768c

+ 15
- 15
dictsource/dict_phonemes View File

@@ -137,7 +137,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-04-18
Dictionary en_dict 2013-04-23

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
@@ -166,7 +166,7 @@ s S t T tS ts v w
x z Z


Dictionary es_dict 2013-03-29
Dictionary es_dict 2013-04-22

@ a aI aU e E eI eU
i o O oI u
@@ -500,7 +500,7 @@ r r. s S s. t t# t.
t.# v w x z


Dictionary nl_dict 2013-04-12
Dictionary nl_dict 2013-04-23

8 @ @- a A a: A~ e
E e# E2 e: EI eU i I
@@ -562,7 +562,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary pt_dict 2013-04-18
Dictionary pt_dict 2013-04-23

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -701,15 +701,15 @@ s s. S; t t# t. t.# tS
v v# w z


Dictionary tr_dict 2011-09-16
Dictionary tr_dict 2013-04-20

@ a e E i I o O
u U W y Y

* : b c d dZ f g
G h j J k l m n
p Q r R s S t tS
v w z Z
G h j J k l L m
n p Q r R s S t
tS v w z Z


Dictionary ur_dict 2013-03-28
@@ -726,18 +726,18 @@ s S s. t T t# t. t.#
v w x z Z z.


Dictionary vi_dict 2013-03-16
Dictionary vi_dict 2013-04-21

@ @: @:I @:U @I @U a a:
a:I a:U aI aU e E eU EU
i i@ iE iU o O o# O#
o& o@ OI oI u u@ uI y
y@ yI
@ @- @: @:I @:U @I @U a
a: a:I a:U aI aU e E eU
EU i i@ iE iU o O o#
O# o& O- o@ OI oI Oi u
u- u@ uI y y@ yI

b c cr d D f g h
j J J^ k kh l m n
N n^ p Q s s. t t[
v w x z Z z.
tS tS; v w x z Z z.


Dictionary zh_dict 2013-01-25

+ 40
- 29
dictsource/en_list View File

@@ -17,7 +17,7 @@
// ?8 Use full vowel, not schwa in some word endings

// $alt1 use strong ending (-an, -table, -inal, -ier)
// $alt2 use weak ending (ate, ery, ess, ile, men)
// $alt2 use weak ending (ard, ate, ery, ess, ile, men)
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#]
// $alt4 separate 'h', not 'th'
// $alt6 'to'
@@ -285,42 +285,42 @@ _ja dZ'ap@ni:z
_zh tS'aIni:z

// Cyrillic letters
а a
б bE
в vE
г gE
д dE
е jE
ё jo
ж ZE
з zE
и I
а a:
б bE:
в vE:
г gE:
д dE:
е jE:
ё jo:
ж ZE:
з zE:
и I:
й ,Ik@-*'atkOji
к ka
к ka:
л El/1
м Em
н En
о o
п pE
о o:
п pE:
р Er
с Es
т tE
у u
т tE:
у u|:
ф Ef
х xa
ц tsE
ч tSE
ш Sa
щ StSa
х xa:
ц tsE:
ч tSE:
ш Sa:
щ StSa:
ъ jEr
ы j'Eru
ь j'eri
э E
ю ju
я ja
ћ tS;E
ђ djE
ќ kjE
э E:
ю ju|:
я ja:
ћ tS;E:
ђ djE:
ќ kjE:


// Arabic letters
@@ -508,7 +508,7 @@ _3o T'3:
_5o f'If
_20o tw'Enti@
_30o T'3:ti@
?3 _30o T'IRti@
?5 _30o T'IRti@
_40o f'o@ti@
_50o f'Ifti@
_60o s'Iksti@
@@ -697,6 +697,7 @@ adieu a#dju:
adieus a#dju:z
adieux a#dju:z
adios aDj'o:s
adjective $1
admirable adm@r@b@L
admirably adm@r@bli
admonition adm@n'IS@n
@@ -807,7 +808,7 @@ antibody $1
antichrist $1
anticline $1
antidote $1
antifreze $1
antifreeze $1
antigen $1
antihero $1
antilog $1
@@ -1274,6 +1275,7 @@ corral k@r'al
cosmos k0zm0s
?3 cosmos k0zmoUs
cougar ku:g3
counteract $3
countered kaUnt3d
(coup de grâce) ku:d@||gr'A:
coupon ku:p0n
@@ -1546,6 +1548,7 @@ eyrie i@ri
facade f@sA:d
façade f@sA:d
facetious $alt3
faculty fak@Lt2i
faeces fi:si:z
fahrenheit far@nhaIt
fairest fe@r@st
@@ -1718,6 +1721,7 @@ hello h@loU
henceforth hEnsfo@T
?3 herb 3:b
hercules h3:kjUli:z
heredity h3rEdI2ti
?3 hereford h3:f3d
heretical hI2rEtI2k@L
hereto hi@3'tu:
@@ -3182,6 +3186,7 @@ Belgrade $2
Belize bEl'i:z
Bengal b,Eng'O:l
Benin bEnIn
Berkeley b3:kli
Bhutan bu:t'an
Bideford bIdIf@d
Bogota b0g@t'A:
@@ -3218,6 +3223,7 @@ Cruz kru:z
Cyprus saIpr@s
Dahomey $alt3
Dallas dal@s
Dagestan dA:gIst'A:n
Damascus $alt3
Dakota $alt3
Danish deInIS
@@ -3247,6 +3253,7 @@ Gomera goUm'e@r@
Gurmukhi gU@mUki
Harare ha#rA:ri
Hanoi han'OI
Harvard $alt2
Havana ha#van@
Hawaii h@w'aIi:
Hawai'i h@w'aIi:
@@ -3283,6 +3290,8 @@ Korean kOr'i:@n
?3 Korean k3r'i:@n
Kosovo k0s@voU
Kuala kwA:la#
Kyrgyz k3:rgIz
Kyrgyzstan k3:rgIst'A:n
Lagos leIg0s
Lahore $alt3
Lebanon lEb@n0n
@@ -3590,6 +3599,7 @@ Giordino dZO@d'i:noU
Giovanni dZ@v'A:ni
Graeme greI@m
Graham greI@m
Gruffydd grIfIT
Guido gwi:doU
Guinevere gwInI#vi@3
Hadrian heIdri:@n
@@ -3911,6 +3921,7 @@ at at $nounf $only $u
(at once) a#t_w0ns
?6 (at once) a#t_wVns
(at will) a#t_w'Il
(at & t) 'eIt2i:@nt'i:

with wID $u
(with the) w%IDD@2 $nounf

+ 9
- 5
dictsource/en_rules View File

@@ -789,6 +789,7 @@
_) ani anI
_) ani (on anaI
&) ani (_ 'A:nI
@st) ani (_S1 =i
an (ia 'eIn
ania (c_ 'eInIa
ania (c a#naI@
@@ -918,6 +919,7 @@
_t) ar (_ A@
&) ar (dis 3
&) ar (diz 3
&) ar (d_$w_alt2 3
&d) ar (d_ 3
gg) ar (d_ 3
&h) ar (d_ 3
@@ -1629,7 +1631,7 @@
co (rro k@
co (rrup k@
_) costar koUstA@
_) counter (@P7 k'aUnt@ // prefix
_) counter (@P7 k'aUnt3 // prefix

.group d
d d
@@ -3523,8 +3525,8 @@
iss (a_ 'Is
issimo (_ 'IsImoU
chr) is (t_ aIs
@) istan (_ =Istan
@) istani (_ Ist'A:nI
@) istan (_ =IstA:n
@) istan (_N =Istan
@) iste (_ 'i:st
@) is (tic_ 'Is
r) is (y_ =@s
@@ -4012,7 +4014,7 @@
oea (_ 'i@
_) oe (d i:
p) oe (m oUI
oer oU@
oer oU3
_) oe (s i:
&) oe (s_S2 z
oesopha I2s0f@
@@ -5360,6 +5362,7 @@
th (ern_ D
_) thio T,aIoU
th (ith D
th (old th
th (ole th
_) th (om@ t
ph) th T
@@ -5884,6 +5887,7 @@
C) yes (_ aIz
_) yes jEs
yeah jEh
yew ju:
@C) y (gen I
?!3 d) y (nas I
s) ynch Ink
@@ -5991,7 +5995,7 @@
E (ntu 'E
E (ntous 'E
E (o_ I2
Eous (_ =j@s
Eous (_ =i@s
l) E (ps E
l) E (pt E
Eri (A 'i@rI2

+ 3
- 0
dictsource/es_rules View File

@@ -50,8 +50,10 @@ A) ck k
_) d (rA d
_) d (A d
d (A D
d (_ D
d (cY D
d (L03 D
d (v D
m) d d
n) d d
l) d d
@@ -85,6 +87,7 @@ A) ck k
_) gn (A n
_) g (A g
g (A Q
g (_ Q
g (cY Q
g (L03 Q
m) g g

+ 11
- 1
dictsource/nl_list View File

@@ -112,7 +112,7 @@ _6X z'Est@x
_7X z'e:v@nt@x
_8X t'Axt@x
_9X n'e:g@nt@x
_0C h'OndErt
_0C h'Ond@rt
_0M1 d'WyzEnt
_0M2 m'iljun
_0M3 m'iljArt
@@ -377,6 +377,7 @@ keten $alt
loochen $alt
oefen $alt
open $alt
reden $alt
regen $alt
reken $alt
schepen $alt
@@ -1098,6 +1099,7 @@ gijzel $alt
gispel $alt
gniffel $alt
goochel $alt
googel $alt
gorgel $alt
grabbel $alt
grendel $alt
@@ -1404,6 +1406,7 @@ vondel $alt
accessoire aksEsw'ar@
accessoires aksEsw'ar@s
actiepunt Aksip8nt
actieve Akt'iv@
adhesie Ath'e:zi
agenda $2
aldus Ald'8s
@@ -1453,6 +1456,7 @@ december $2
desillusie dEsIlyzi
dieet $2
diesel diz@l
diner din'e:
//discussie $2
divers div'Ers
diftongering dIft,ON'e:rIN
@@ -1462,6 +1466,7 @@ eensgelijks e:nsQ@l'EIks
elfstedentocht ,Elf'ste:d@ntoQt
embouchuur A~buS'yr // embouchure
enorm $2
enquête A~k'Et@ $alt2
erosie e:r'o:zi
eucharistie $4
explosie $2
@@ -1486,6 +1491,8 @@ invasie $2
januari $3
kadaster $2
leesregel le:sre:Q@l
lunch l8nS
lunches l8nS@s
mangat $alt3
materie ma:t'e:ri
maatregel ma:tre:Q@l $alt2
@@ -1531,6 +1538,7 @@ ongerieflijk $3
partijvoorzitters $2
periferie pI:rifI:r'i
pistache pist'AS
privilege privil'e:Z@ $alt2
proces $2
projectielen $3
renaissance rEne:s'A~s@
@@ -1548,6 +1556,7 @@ serie sI:ri
sms'jes EsEm'Es_j@s
spektakel $2
tegennatuur $4
tralie $1
travestie $3
verderop $3
vergezicht vErQ@zIxt
@@ -1556,6 +1565,7 @@ verrekijker vEr@kEIk@r
verste vErst@
verte vErt@
volledig $2
voordeel $1
vrouwengek $alt3
waarschijnlijk $2
wanen v#a:n@n

+ 41
- 11
dictsource/nl_rules View File

@@ -20,14 +20,15 @@

@@C) a (_ =a:
_) aan (@P3 'a:n
@) aar (_S3 a:r
@) aard (_S4 a:rt
&) aar (_S3 a:r
&) aard (_S4 a:rt
aa (rd_ 'a:
aa (C_ 'a:
z) aa (m_ a:
t) a (bleau a:
@) abel (_ 'a:b@l
@) abele (_ 'a:b@l@
@) ace (_ e:s // ?? interface
m) ach (in %a:S
_) actie (@P5 'Aksi
_) af (C@P2 'Af
@@ -106,6 +107,7 @@
_) be (zem be:
_) be (zig be:
_) beu bY:
_) bezoekers (@P9 b@z'uk@rs


.group c
@@ -120,10 +122,12 @@
@) ci (ë S
ci (o S
ck k
ces (_ s'Es
coach ko:tS

_) computer (@P8 kOmpj'ut@r
_) congres kOnQr'Es
_) concentratie (@P12 kOnsEntr'a:tsi
co (ncert k%O


@@ -246,7 +250,7 @@
&) end (_ @nd
&) ende (_S1 @
&) enden (_S2 @n
eden e:d@n
eden (_ e:d@n // ??
@) ent (_ 'Ent
@) ent (e_ 'Ent
@) ent (en_ 'Ent
@@ -260,6 +264,7 @@
@z) es (_S1 s
@) es (_S2qd 'Es // double the previous vowel
@) es (_$w_alt2S1 s // just remove 's'
@) e (s_$p_alt2+S1 s
KAC) es (_S2e @s
mb) es (_S1 s
nd) es (_S1 s
@@ -280,6 +285,7 @@
@) eur (_ 'Y:r

&) e (nB@ E2
&) e (ntig @
_p) e (nibel e:
id) e (nt E
pres) e (nt E
@@ -322,11 +328,14 @@
er (ij_ @r
tol) er (abel @r
mis) er (abel @r
hond) er (d_ @r
_) erger ErQ@r // ergeren
&) era (_ @ra:
@) er (aar_ @r
&) er (C@ E2r

.group ê
ê E

.group f
f f
@@ -341,11 +350,13 @@
@) gi (eus Z
@) gi (euz Z
reli) gi (eu Qij
_) goog (el gu:g

.group ge
_) ge (@P2 Q@
ge (bied Q@
_) gebruikers (@P10 Q@br'Wyk@rs
_) gee Qe:
_) gei QEI
gener (aal Q,e:n@r
@@ -435,10 +446,11 @@
&) ika (_ =ika:
&) iko (_ =iko:
_) in (C@P2 'In
// _) in (gP2 'In
_) in (do In
ine (_ 'in@
ines (_ 'in@s
_) inn (@P2 'I // ?? inneren
_) inter Int@r
io (nage iO
io (de_ i'o:
iodes (_ i'o:d@s
@@ -449,10 +461,12 @@
@) isme (_ 'Ism@
@) ist (_ 'Ist
@) isten (_ 'Ist@n
_) inn (@P2 'I // ?? inneren

.group j
j j
_) jaar (@P4 j'a:r
jaar (lijk ja:r
jou (rna Zu


@@ -478,6 +492,8 @@ _) inn (@P2 'I // ?? inneren
&) lijker (_S6 l@k@r
&) lijkere (_S7 l@k@r@
&) lijkheid (_S8 l@khEIt
&) lijkheden (_S9 l@khe:d@n
// &) lijks@ (_ l@ks@
&) lijkst (_S6 l@kst
&) lijkste (_S7 l@kst@

@@ -497,6 +513,7 @@ _) inn (@P2 'I // ?? inneren

management ma:nIdZm@nt
_) mee (@P3 m'e:
_) mee (rC mI:
menu (_ m@ny
_) mi (cro mi
_) mi (s@ m%I
@@ -513,6 +530,7 @@ _) inn (@P2 'I // ?? inneren
_) mis (loP3 m'Is
_) mis (tA m'Is
_) misver (@ m'Isf@r
_) muziek (@P6 myz'ik

.group n
n n
@@ -527,6 +545,7 @@ _) inn (@P2 'I // ?? inneren
_) na (C@N n'a:
_) na (C% nA
_) na (cht nA
_) najaars (@P7 n'a:ja:rs
_) narci (s n%ArsI
_) na (rc n%A
_) na (der na:
@@ -539,10 +558,11 @@ _) inn (@P2 'I // ?? inneren
na (vig n%a:
_) na (vr na:
_) na (volg@ n%a:
_) noord (@P5 no:rd
_) nieuws (@P6 n'iws
@@) nis (_S3 nIs
@@) nisen (_S5 nIs@n
_) noord (@P5 no:rd
_) notitie (@P7 no:t'itsi


.group o
@@ -586,6 +606,7 @@ _) inn (@P2 'I // ?? inneren
tr) ou (vail u
ouve (rtu uvE
_) over (@P4 ,o:v@r
_) overigen o:v@r@Q@n
_) overheid 'o:v@rhEIt
t) ou (r u:

@@ -644,21 +665,25 @@ _) inn (@P2 'I // ?? inneren
C) r (A r
rr *r

recherch r@SErS
revanch r@vA~nS
route rut@ // route(s)

.group re
_) re (geren r@
_) re (geer r@
_) regel re:Q@l
_) re (cent r@
_) re (cept r@
_) re (ceptief re:
_) re (ces r@
_) re (clam r@
_) register r@Q'Ist@r
reme (die r@m'e:
_) re (serve_ r@
_) re (cord re'
_) regering r@Q'I:rIN
_) regering r@Q'I:rIN
repre (saill re:pre:
recherch r@SErS
revanch r@vA~nS


.group s
@@ -695,6 +720,7 @@ _) inn (@P2 'I // ?? inneren
CAr) sie (_ =zi

_) stads (@P5 st'Ats
_) stage (@P5 st'a:Z@
_) standaard (@P9 st'Anda:rt
_) start (@P5 st'Art
@) straat (_S6 stra:t
@@ -789,7 +815,9 @@ _) inn (@P2 'I // ?? inneren
_) verkeers (@P8 v@rk'I:rs
// _) verge (@P5 vErg@
// _) verge (le v@rQ'e:
_) voorjaars (@P9 v'O:rja:rs
_) voort (@P5 v'O:rt
_) vrijwilligers (@P13 vrEIv#'Il@Q@rs


.group w
@@ -813,8 +841,10 @@ _) inn (@P2 'I // ?? inneren
_) weg (@P3 v#'EQ
_) weg (en v#e:Q
_) weg (e_ v#e:Q // bewegelijk
_) werk (@P4 v#'Erk
_) west (@P4 v#Est
_) wr vr
_) woon (@P4 v#'o:n
_) wr (@ vr


.group x

+ 71
- 39
dictsource/pt_list View File

@@ -81,9 +81,10 @@ _#9 tab
+ maIs# $max3
% pors'eINtU $max3
& _'e_
@ &x'ob&
@ ax'ob&
¤ 'eU*U
€ 'eU*U
£ l'ibR&
§ p&*'agRafU


@@ -128,10 +129,10 @@ _¡ ,eskl&mas,&U~,iNvertS'id&
_¿ ,iNtex,ogas,&U~,iNvertS'id&

_" 'abRi;'asp&||d'upl&s#
?1 _º O*@-din'almaskul'i~nU
?2 _º o*@-dZin'almaskul'i~nU
?1 _ª O*@-din'alfemin'i~nU
?2 _ª o*@-dZin'alfemin'i~nU
?1 º O*@-din'almaskul'i~nU
?2 º o*@-dZin'aUmaskul'i~nU
?1 ª O*@-din'alfemin'i~nU
?2 ª o*@-dZin'aUfemin'i~nU
° gR'aU


@@ -185,7 +186,7 @@ _8X oIt'eINt&
?2 _9X nov'eINt&
_1C0 s'eIN
?1_0C s'eINtus#
?2_0C s'eINtUs#
?2_0C s'eINtUz
_1C s'eINtu
?1_2C duz'eINtus#
?2_2C duz'eINtUz
@@ -313,7 +314,7 @@ sr $dot
// articles
o $u+ $nounf
a $u+ $nounf
os Us $u+ $nounf
os $u+ $nounf
as $u+ $nounf
?1 a & $u+ $nounf

@@ -409,7 +410,7 @@ aos $u $nounf
para $u // for,to
pro pRU $u $nounf
pra $u $nounf
pros pRUs $u $nounf
pros $u $nounf
pras $u $nounf
prò $u $nounf
prà $u $nounf
@@ -431,7 +432,7 @@ com $u // with
// conjunctions
?1 e i $u // and
?2 e i $u // and
se $u+ $verbf // if
se $u+ // if


?2 mas $u // but
@@ -597,10 +598,10 @@ pôde $u+
pudemos $u+
puderam $u+

poderei $u3+
poderá $u3+
poderemos $u+
poderão $u+
poderei p%ode*eI $u+
poderá p%ode*a $u+
poderemos p%ode*'emUs $u+
podeão p%ode*&U~ $u+


// ir - to go (used to make future tense)
@@ -653,11 +654,14 @@ aeroporto $alt2
aeroportos $alt
alcateia $alt
alcova $alt2
alegro $alt2 $noun
alferes $alt
almoço $alt $verb
ameba $alt
amores $alt2
amorno $alt
amuleto $alt2
ampere $alt
ampola $alt2
ampulheta $alt2
andorra $alt2
@@ -674,6 +678,7 @@ arrocho $alt2 $noun
arroto $alt2 $noun
arroz $alt2
assembleia $alt
assopro $alt2 $noun
ateia $alt
aterro $alt2
aterro $alt $verb
@@ -684,12 +689,16 @@ azeda $alt $verb
azedo $alt $verb
bairro b'aIxU
baqueta $alt2
banqueta $alt2
banquete $alt2
bastonete $alt2
beco $alt2
besta $alt2
bilhete $alt2
bissulfeto $alt2
boca $alt2
boceta $alt2
bochecha $alt2
bofe $alt
bojo $alt2
boleia $alt
bolero $alt
@@ -716,6 +725,7 @@ caixeta $alt2
camelha $alt
camelo $alt2
camiseta $alt2
canaleta $alt2
canhoto $alt2
cantora $alt2
capacete $alt2
@@ -747,6 +757,7 @@ chovesse $alt2
chupeta $alt2
clamores $alt2
clero $alt
cloreto $alt2
coche $alt2
coco $alt2
cofre $alt
@@ -765,6 +776,7 @@ concordo $alt
conforto $alt $verb
console $alt2 $noun
consolo $alt2 $noun
constroem $alt
controle $alt2 $noun
controles $alt2
controles $alt $verb
@@ -779,6 +791,7 @@ corpos $alt
corto $alt
corveta $alt2
corvos $alt
costeleta $alt2
coto $alt2
cotovelo $alt2
cratera $alt
@@ -786,7 +799,7 @@ crede $alt2
credo $alt
crepe $alt
decore $alt
decoro $alt2 $noun
decoro $alt2 $noun
degelo $alt2
desapego $alt2 $noun
descordo $alt
@@ -796,6 +809,8 @@ desespero $alt2
desespero $alt $verb
desfecho $alt2
desmantelo $alt2 $noun
despojo $alt2 $noun
despojos $alt
desporto $alt2
desportos $alt
desprezo $alt2 $noun
@@ -810,6 +825,7 @@ dez $alt
diarreia $alt
diego $alt2
discordo $alt
dissabores $alt2
dispneia dZIspyn'EI&
dobro $alt2
dobro $alt $verb
@@ -828,8 +844,8 @@ engordo $alt
enredo $alt $verb
enrosco $alt $verb
enterro $alt2 $noun
entorto $alt
entroso $alt
entorto $alt
entroso $alt
envelope $alt
envolto $alt2
enxaqueca $alt2
@@ -860,14 +876,14 @@ estorvo $alt $verb
estrela $alt2
estrofe $alt
estrogonofe $alt
eta $alt2
eta $alt2
etiqueta $alt2
europa $alt
europeia $alt
exagero $alt $verb
explore $alt
faceta $alt2
falangeta $alt2
falangeta $alt2
farofa $alt
farolete $alt2
febre $alt
@@ -876,8 +892,9 @@ feitora $alt2
fezes $alt
filete $alt2
?1 fixe fiSy
flerte $alt2 $noun
foda $alt2 $verb
fodo $alt2
fodo $alt2
fogos $alt
foguete $alt2
foice $alt2
@@ -885,8 +902,8 @@ folheto $alt2
fora $alt
fora $alt2 $verb
forca $alt2
força $alt2 $noun
forças $alt2
força $alt2
força $alt $verb
forço $alt
formos $alt2
forro $alt $verb
@@ -902,15 +919,15 @@ gelo $alt2
gelo $alt $verb
genebra $alt
gesso $alt2
gloso $alt
gloso $alt
gonorreia $alt
gol gow
gol gow
golpe $alt
gorda $alt2
gorjeta $alt2
gosto $alt $verb
gota $alt2
governo $alt2
governo $alt2
governo $alt $verb
gozo $alt2 $noun
graveto $alt2
@@ -929,6 +946,7 @@ interesse $alt2
interesse $alt $verb
iodo $alt2
ioga $alt
jereba $alt
jogo $alt2
jogo $alt $verb
jogos $alt
@@ -943,13 +961,13 @@ leste $alt2 $verb
?2 lhe l^y
lingueta $alt2
lodo $alt2
logro $alt
logro $alt
lopes $alt
macete $alt2
maior $alt
maleta $alt2
maniçoba $alt
marieta $alt2
marieta $alt2
marreta $alt2
megera $alt
melhor $alt
@@ -1001,21 +1019,27 @@ pachorra $alt2
paexa paeSa
paella pa'el^&
palacete $alt2
paleta $alt2
palheta $alt2
panfleto $alt2
pangeia $alt
pantera $alt
papoco $alt2 $noun
parede $alt2
pastora $alt2
peba $alt
pedra $alt
pela $alt $verb
pelo $alt2
pelo $alt $verb
pereba $alt
peroba $alt
peseta $alt2
peso $alt $verb
piloto $alt2 $noun
pintora $alt2
pior $alt
pipoco $alt2 $noun
pirueta $alt2
plaqueta $alt2
plateia $alt
@@ -1023,8 +1047,9 @@ plebeia $alt
polca $alt
pompeia $alt
porcos $alt
porque $alt2
porque $alt2
porra $alt2
porreta $alt2
porrete $alt2
porto $alt2
portos $alt
@@ -1033,15 +1058,18 @@ povos $alt
poxa p'oS&
primavera $alt
primores $alt2
proso $alt
proso $alt
prosopopeia $alt
proveta $alt2
quarteto $alt2
queda $alt
quede $alt2
quitinete $alt
quinteto $alt2
ramalhete $alt2
ramalhete $alt2
raposa $alt2
recomeço $alt $verb
reconstroem $alt
recordo $alt
recorto $alt
rede $alt2
@@ -1053,22 +1081,23 @@ refresco $alt $verb
rego $alt2 $noun
reitora $alt2
relevo $alt2 $noun
remoem $alt
remoem $alt
remorso $alt
renovo $alt $verb
retorno $alt $verb
reuva x'EUv&
rigores $alt2
risoto $alt2
rock $alt
roem $alt
rola $alt2 $noun
rolo $alt2 $noun
rota $alt2
rota $alt $noun
rubores $alt2
rubores $alt2
rumores $alt2
sabonete $alt2
sabores $alt2
sabores $alt2
saibro s'aIbRU
saleta $alt2
sarjeta $alt2
@@ -1094,10 +1123,12 @@ sossego $alt2 $noun
suborno $alt $verb
sufoco $alt2 $noun
sufocos $alt2
sulfeto $alt2
sulfureto $alt2
super s'Uper
suporto $alt
suor swOr
sutiã sutSi'&~N
sutiã sutSi'&~N
tapete $alt2
temores $alt2
tempero $alt2 $noun
@@ -1105,15 +1136,15 @@ tenores $alt2
terrores $alt2
teta $alt2
toga $alt
topo $alt $verb
topo $alt2 $noun
torno $alt $verb
tornozelo $alt2
torre $alt2 $noun
torres $alt2
torro $alt
tortos $alt
toso $alt
transtorno $alt $verb
toso $alt
transtorno $alt $verb
traqueia $alt
travesso $alt2
tremores $alt2
@@ -1125,6 +1156,7 @@ trombeta $alt2
tumores $alt2
valeta $alt2
vanessa $alt2
vareta $alt2
vera $alt
verbete $alt2
violeta $alt2
@@ -1191,6 +1223,7 @@ drivers dR'aIveRs
laptop lEptOp
?1 line l'ain
layout l'eI,aUt
?2 login logiN
?2 logo l'OgU
?1 lock l'Ok
mail m'eIl
@@ -1235,7 +1268,7 @@ símbolo s'imbolU


// common person names
alan 'al@n
alan 'al@N
louis _^_FR


@@ -1347,7 +1380,6 @@ antonio &~nt'onIU
?1 cleverson kl'Evyrs&N
?2 cleverson kl'EversoN
?1 elton 'Elt&N
?2 elton 'EUton
emerson 'emE*@-soN
?1 halison &l'is&N
klein kl'aIn // Very common on southern Brazil.

+ 28
- 11
dictsource/pt_rules View File

@@ -90,6 +90,8 @@
óCC) a (CA_ &
óC) a (CCA_ &
úC) a (CA_ &
?2 ation (_ 'eIS&~N
?2 action (_ 'EkS&~N


.group â
@@ -165,6 +167,7 @@
?2 d (i dZ
?2 d (í dZ
?2 d (e_ dZ
?2 A) de (o_ dZj


.group e
@@ -235,7 +238,8 @@
e (sL02_ E

e (ssL04_ E

e (ss_ E // stress and english words
?2 ection (_ 'EkS&~N
e (stL04_ E

e (strL04_ E
@@ -340,6 +344,7 @@
?1 l) e (ta 'E // eg: bicicleta, atleta.

sf) e (ra_ E // esfera, biosfera
ef) e (tuL02_ e
t) e (tra E

âC) e (CA_ e
@@ -354,6 +359,7 @@
óC) e (Ca_ e
óCC) e (CA_ e
úC) e (CA_ e
úC) el (_ eU

//sort
_d) e (L05_ E
@@ -417,11 +423,13 @@ _atrev) e (L07_ e
_corro) e (L07_ e
_interromp) e (L07_ e
_troux) e (L07_ E
_ens) e (bL03_ E
_amanc) e (bL03_ E
qu) e (brL04_ E
_cel) e (brL04_ E
_boch) e (chL04_ e
_ex) e (crL04_ E
_enr) e (dL01_ E
_n) eu (trL03_ 'eU
_v) e (dL03_ E
_arr) e (dL03_ E
_depr) e (dL03_ E
@@ -430,15 +438,14 @@ _troux) e (L07_ E
_gal) e (gL03_ e
_pel) e (gL03_ e
_n) e (grL03_ e
_ch) e (guL02_ e
estr) ei (L04_ EI
_r) e (jL03_ E
_inv) e (jL04_ E
?2 el (ton_ 'EU
tr) e (pL04_ E // es-
_dec) e (pL04_ E
_in) e (ptL03_ E
ad) e (quL04_ E
_imp) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
_sinc) e (rL03_ E
@@ -449,6 +456,7 @@ _troux) e (L07_ E
gen) e (rL04_ E // de- re-
_alt) e (rL04_ E
_enc) e (rL04_ E
_imp) e (rL04_ E
_min) e (rL04_ E
_sug) e (rL04_ E
_sup) e (rL04_ E
@@ -470,6 +478,7 @@ _refrig) e (rL04_ E
_p) e (rdL02_ E
_l) e (rdL03_ E
_h) e (rdL04_ E
_des) e (rdL04_ E
_) e (rgL03_ e
_re) e (rgL03_ e
_bez) e (rrL03_ e
@@ -496,6 +505,7 @@ _refrig) e (rL04_ E
_obsol) e (tL03_ e
_sol) e (trL03_ E
_pen) e (trL04_ E
_n) eu (trL03_ 'eU
_d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e
@@ -639,7 +649,8 @@ _entorp) e (çL03_ e
?1 _) i (ntern 'i //inter
?1 @) ing (_ _^_EN
?1 @) ings (_ _^_EN
ilton 'iUtoN
?2 il (ton_ 'iU
?2 i (rton_ 'i


.group í
@@ -718,7 +729,9 @@ _entorp) e (çL03_ e
o (s_ =U
_) o (_C U
_) o (_A u

?2 _) os (_ Us
?2 _) os (_A Uz
?2 _) os (_G Uz
ou ow
oi oI
oi ($w_alt OI
@@ -738,7 +751,6 @@ _entorp) e (çL03_ e
o (quL02_ O

A_l) o (_ U
p) o (dL04_ O

o (g_ O
o (gs_ O
@@ -824,8 +836,7 @@ _entorp) e (çL03_ e
?1 interr) o (g u // eg: interrogação
?1 f) o (rmulá u // eg: formulário, formulários.
?1 v) o (lt O

o (Cuem_ o
o (luem_ o
o (CCuem_ o
êC) o (CA_ o
êCC) o (CA_ o
@@ -870,9 +881,12 @@ _pormen) o (L05_ O
m) o (lhL04_ O
ent) o (pL02_ O
_c) o (pL03_ O
_t) o (pL04_ O
_ens) o (pL04_ O
_gal) o (pL04_ O
_s) o (prL04_ O
_al) o (prL04_ O
_ass) o (prL04_ O
_) o (ptL04_ O
p) o (rL02_ o
_dev) o (rL02_ O
@@ -881,19 +895,20 @@ _pormen) o (L05_ O
_inod) o (rL03_ O
_inson) o (rL03_ O
_comem) o (rL04 O
_enam) o (rL04_ O
_aprim) o (rL04_ O
_remem) o (rL04_ O
f) o (rmL03_ O
c) o (rrL01_ o // incorra, corra, etc.
_m) o (rrL01_ o
p) o (rtL03_ O // im- trans- de- re- com- a- ex-
t) o (rçL01_ O // con-
t) o (rçL03_ o // con-
_r) o (snL04_ O
_c) o (spL02_ O
_enr) o (squL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o
_mar) o (tL03_ O
_mar) o (tL03_ o
_escr) o (tL03_ o
_ch) o (vL01_ o
pr) o (vL03_ O
@@ -902,6 +917,7 @@ _remem) o (rL04_ O
_r) o (çL03_ O
tr) o (çL03_ O // des-
_ad) o (çL03_ O
_emp) o (çL03_ O
_end) o (çL03_ O
//endsort

@@ -1044,6 +1060,7 @@ _remem) o (rL04_ O
?2 t (e_ tS
?1 th _^_EN
?1 tion (_ _^_EN
?2 A) te (o_ tSj


.group u

+ 16
- 16
dictsource/tr_list View File

@@ -43,16 +43,16 @@ _?A haRf
//_lig
_acu vURg'UimI
_ac2 tS'IftvURg'UimI
_brv k@s'altmaimI
_brv k@s'aLtmaimI
_ced h'aRf
_cir Sapk'a
_dia Umla'Ut
_dia UmLa'Ut
_dot YstnOkt'a
_grv 'aksanimI
_hac t'ERsSapk'a
_mcn uz'atmaimI
_ogo ogon'Ek
_rng halk'a
_rng haLk'a
//_stk
_tld tIld'E

@@ -60,7 +60,7 @@ _tld tIld'E
// symbols
_. nOkt'a
_, vIRJ'Yl
_; nOktal'@vIRJ'Yl
_; nOktaL'@vIRJ'Yl
_: ik'InOkt'a
_… 'YtSnOkt'a
_? soR'UiSa*et,I
@@ -73,7 +73,7 @@ _' apOstR'Of
_^ IndZ'EltmEiSa*et'I
& _!v'E
_& v'EiSa*et'I
_@ kUjRUkl'U'a
_@ kUjRUkL'U'a
_\ t'ERs||ej,IktSIzg'I
_( atSpa*ant'Ez
_) kapapa*ant'Ez
@@ -84,9 +84,9 @@ _‘ tEkt@Rn'ak
§ tSEnJ'El
° de*edZ'E
_# dij'Ez
_~ jaklaS'@k
__ ,alttSIzg'I
* j'@ld@z $max3
_~ jakLaS'@k
__ ,aLttSIzg'I
* j'@Ld@z $max3
= ESIt $max3
% jYzdE $max3
+ aRt@ $max3
@@ -99,7 +99,7 @@ _2 ic'i
_3 'ytS
_4 d'WRt
_5 b'ES
_6 alt'@
_6 aLt'@
_7 jed'i
_8 sec'Iz
_9 d'okuz
@@ -111,7 +111,7 @@ _2X jiRm'i
_3X ot'uz
_4X k'@Rk
_5X ell'i
_6X altm'@S
_6X aLtm'@S
_7X jetm'iS
_8X seks'En
_9X doks'an
@@ -260,13 +260,13 @@ Düzce $1
Edirne $2
Hakkari $1
Hatay $1
Iğdır $1
İngiltere $3
İskenderun $2
ığdır $1
ingiltere $3
iskenderun $2
Isparta $2
İstanbul $2
İsveç $1
İzmir $1
istanbul $2
isveç $1
izmir $1
Kastamonu $1
Kayseri $1
Kilis $1

+ 37
- 23
dictsource/tr_rules View File

@@ -9,8 +9,11 @@
// ?1 mbrola voices


// unvoiced consonants
.L01 ç f h k p q s ş t
.L01 ç f h k p q s ş t // unvoiced consonants

.L02 ı a o u // back vowels

.L03 i e ö ü î â ô û // not-back vowels

.replace
` '
@@ -23,7 +26,7 @@
@) acak (_S4 adZak
@) acakmış (_S7 adZakm%@S
@) ayım (_S4 aj@m
@) alım (_S4 al@m
@) alım (_S4 aL@m
@) asın (_S4 as@n

@) avru (pa avr'u
@@ -33,9 +36,11 @@

.group c
c dZ
ce (_S2 dZ%E

.group ç
ç tS
çe (_S2 tS%E

.group d
d d
@@ -57,13 +62,13 @@
dın (_S3 d@n
dınız (_S5 d@n@z
dı (_S2 d@
dılar (_S5 d@laR
dılar (_S5 d@LaR
dum (_S3 dum
duk (_S3 duk
dun (_S3 dun
dunuz (_S5 dunuz
du (_S2 du
dular (_S5 dular
dular (_S5 duLar
düm (_S3 dym
dük (_S3 dyk
dün (_S3 dyn
@@ -96,18 +101,24 @@

.group g
g g
g (i J
g (e J
g (ü J
g (ö J
g (L03 J
L03) g (K J


.group ğ
ğ Q
A) ğ :||
?1 A) ğ G // mbrola
A) ğ :
?1 A) ğ (+ G // mbrola

a) ğa :
o) ğo :
u) ğu :
ö) ğö :
ü) ğü :
i) ğ j
e) ğ j

.group h
h h

@@ -135,37 +146,40 @@
@) ıyor (_S4 @j%oR
@) ın (_S2 @n

.group î
î @

.group j
j Z

.group k
k k
k (i c
k (e c
k (ü c
k (ö c
k (L03 c
L03) k (K c

ken (_S3 %cen


.group l
l l
l (L02 L
L02) l (K L

la (_S2 %la
la (_S2 %La
le (_S2 %le

lar (_S3 laR
lar (_S3 LaR
ler (_S3 leR

li (_S2 li
lı (_S2 l@
lu (_S2 lu
lı (_S2 L@
lu (_S2 Lu
lü (_S2 ly

lik (_S3 lik
lık (_S3 l@k
luk (_S3 luk
lık (_S3 L@k
luk (_S3 Luk
lük (_S3 lyk


@@ -308,7 +322,7 @@
yunuz (_S5 %junuz
yünüz (_S5 %jynyz

yla (_S3 %jla
yla (_S3 %jLa
yle (_S3 %jle

yacak (_S5 jadZak
@@ -317,7 +331,7 @@
yecekmiş (_S8 jedZekm%iS

yayım (_S5 jaj@m
yalım (_S5 jal@m
yalım (_S5 jaL@m
yasın (_S5 jas@n
yeyim (_S5 jejim
yelim (_S5 jelim

+ 404
- 273
dictsource/vi_rules
File diff suppressed because it is too large
View File


+ 6
- 0
espeak-data/voices/asia/ko View File

@@ -0,0 +1,6 @@
name Korean
language ko
gender male
pitch 80 118
intonation 2


+ 17
- 0
espeak-data/voices/asia/ms View File

@@ -0,0 +1,17 @@
// Last updated: 14 October 2010, Jason Ong ([email protected])
name malay
language ms
gender male
phonemes id

translator id

stressLength 160 200 180 180 0 0 220 240
stressAmp 16 18 18 18 0 0 22 21
intonation 3 // Less intonation, and comma does not raise the pitch.

// Nuance - Peninsula Malaysia
// replace 3 a @ // change 'saya' to 'saye'
// (only the last phoneme of a word, only in unstressed syllables)
consonants 80 80

+ 12
- 0
espeak-data/voices/asia/vi-sgn View File

@@ -0,0 +1,12 @@
name vietnam_sgn
language vi-sgn
phonemes vi-sgn
dictrules 2
gender male

words 1
pitch 82 118 //80 118
//breath 75 75 60 40 15 10
//breathw 150 150 200 200 400 400
voicing 90 //18
flutter 20

+ 37
- 16
phsource/compile_report View File

@@ -1,5 +1,5 @@

90 phoneme tables
91 phoneme tables
new total
base 109 109
consonants 11 119
@@ -44,7 +44,7 @@ consonants 11 119
bg 14 124
it 19 129
la 21 126
es 15 125
es 16 125
es-la 1 125
ca 11 127
an 4 125
@@ -56,12 +56,13 @@ consonants 11 119
sv 22 129
no 28 134
is 42 141
vi 53 147
vi-hue 8 147
vi 57 150
vi-hue 15 150
vi-sgn 17 150
zhy 41 138
zh 64 155
sw 9 110
tr 19 128
tr 20 129
ku 18 129
id 16 128
sq 33 127
@@ -243,15 +244,18 @@ dzh/xdz_pzd [J] base
envelope/i_risefall [11] zh
envelope/i_risefall2 [+2] rw
envelope/p_214 [5] vi
[5] vi-hue
[214] zh
envelope/p_512 [+] pa
[6] vi
[4] vi-hue
[5] vi-hue
[6] vi-hue
[6] vi-sgn
envelope/p_fall [2] vi
[7] vi
[2] vi-hue
[2] vi-sgn
[7] vi-sgn
[4] zhy
[7] zhy
[21] zh
@@ -261,23 +265,27 @@ envelope/p_fall [2] vi
[53] zh
[+] rw
envelope/p_fallrise [4] vi
[3] vi-hue
envelope/p_level [1] vi
[1] vi-hue
[7] vi-hue
[1] vi-sgn
[1] zhy
[3] zhy
[6] zhy
[55] zh
envelope/p_rise [3] vi
[3] vi-hue
[3] vi-sgn
[4] vi-sgn
[5] vi-sgn
[2] zhy
[5] zhy
[44] zh
[35] zh
envelope/vi_5amp [5] vi
[5] vi-hue
envelope/vi_6amp [6] vi
[2] vi-hue
[5] vi-hue
[6] vi-hue
g2/xg [g#] hi
g/g [g] base
@@ -592,7 +600,6 @@ n/n@ [n] base
[n#] is
[n] zh
n/n#_ [n#] is
[n] vi
n^/n^a [n^] base
[n;] lt
[n#] ru
@@ -655,6 +662,7 @@ n/no [n] base
[n] zh
n/_nr [n.] base
n/nr_ [n.] base
[n] vi
n/nr@ [n.] base
n/nra [n.] base
n/nre [n.] base
@@ -1005,6 +1013,7 @@ ustop/t_dnt [t] base
[t] hr
ustop/t_dnt2 [t] base2
[d] kn
[t] es
ustop/t_hi [t[] base
[t] et
[t^] et
@@ -1080,7 +1089,6 @@ ustop/t_unasp2 [t] el
[t] zh
vdiph/0i [OI] pt
[OI] grc
[OI] vi
vdiph/0i_2 [OI] en-sc
[OI] en-wi
[AI] no
@@ -1301,10 +1309,12 @@ vdiph/@i_2 [eI] af
[@I] cy
[@Y] cy
[@] am
vdiph/&i_2 [aI] vi
vdiph/i@_2 [e@] af
[e@] tn
vdiph/@i_3 [eI] en-wm
[@I] ro
[@-] vi
[ai] zhy
vdiph/ii [iI] ro
vdiph/i#i [yI] ro
@@ -1330,9 +1340,13 @@ vdiph/ooi [OI] en
[oi] mt
vdiph/ooi_2 [OI] af
[oI] eo
[Oi] vi-hue
[Oi] vi-sgn
vdiph/ooi_3 [OI] en-us
[OI] en-rp
[aI] en-wm
[OI] vi
[Oi] vi
vdiph/ooi_4 [OI] sq
vdiph/oou [oU] cs
[OU] grc
@@ -1374,7 +1388,6 @@ vdiph/Vu [@U] af
vdiph/Vu_2 [oU] en-wm
vdiph/&y [&y] fi
[Wy] nl
[aI] vi
vdiph/yi [yi] fi
[yi] et
[yI] grc
@@ -1390,7 +1403,7 @@ vdiph/y#y [Yy] fi
vdiph/y#y_2 [Yy] af
[eoi] zhy
vdiph/y#y_3 [Y:] nl
vietnam/a [a:] vi
vietnam/a [a:] vi-sgn
vietnam/_c [kh] vi
vietnam/ch [c] vi
vietnam/dd [d] vi
@@ -1422,6 +1435,7 @@ vnasal/i_n [i~] pt
vnasal/i_n2 [i~] hi
vnasal/&_n [a~] hi
vnasal/oi_n [oI~] pt
[O-] vi
vnasal/o_n [o~] hi
[o~] pt
[O~] ht
@@ -1436,7 +1450,6 @@ vnasal/&u_n [O#] vi
vnasal/u_n [U~] hi
[u~] hi
[u~] pt
[u] vi
[u] zh
vnasal/V_n [V~] hi
vnasal/W_n [E~] fr
@@ -1553,8 +1566,11 @@ vowel/0 [0] en
[O] hi
[O] pt
[O] grc
[O] vi-hue
[O] vi-sgn
vowel/0_2 [0] en-n
[O] pt-pt
[O] vi
[o] sw
[O] sl
[o] nso
@@ -1726,6 +1742,7 @@ vowel/a_7 [a] fr
[a] ht
vowel/a_8 [a] en
[a] sk
[a:] vi
[A] da
[?A] da
vowel/aa [a:] et
@@ -1749,7 +1766,6 @@ vowel/aa_3 [A:] af
[A] sq
[A] prs
vowel/aa_4 [A:] sv
[O] vi
vowel/aa_5 [A:] en-n
[A@] en-n
[A:] en-wm
@@ -1883,6 +1899,7 @@ vowel/ee_5 [E] en
[E] ko
vowel/ee_6 [&] sk
[E3] sv
[&] tr
[E] ku
[&] si
[&:] si
@@ -2158,6 +2175,7 @@ vowel/o [o] base2
[o] pt-pt
[o] grc
[o:] sv
[o] vi
[o] id
[o] hy
[o] rw
@@ -2174,7 +2192,6 @@ vowel/o_2 [o:] cy
[o:] hu
[o:] la
[o:] no
[o] vi
[o] da
[?o] da
vowel/o-_2 [V] en-n
@@ -2184,7 +2201,8 @@ vowel/o_3 [oU] en-sc
vowel/o-_3 [U] en-rp
vowel/o-_4 [o] ro
[o] am
vowel/o_5 [O] da
vowel/o_5 [o] vi-sgn
[O] da
[?O] da
vowel/o_6 [O] nl
[O:] nl
@@ -2335,12 +2353,15 @@ vowel/u_2 [u1] fi
[u] am
[u] wo
vowel/u#_2 [u-] sv
vowel/u_3 [u-] vi
vowel/u#_3 [U] ta
[U:] ta
vowel/u#_4 [U] en-sc
[u:] en-sc
[y] ml
[y] vi-sgn
vowel/u_5 [U1] et
[u] vi
[u] sw
[u] nso
[u] az

+ 23
- 8
phsource/ph_spanish View File

@@ -6,44 +6,44 @@

phoneme a
vowel starttype #a endtype #a
length 180
length 200
FMT(vowel/a_4)
endphoneme

phoneme e
vowel starttype #e endtype #e
length 190
length 200
FMT(vowel/e_mid2)
endphoneme

phoneme E
vowel starttype #e endtype #e
length 190
length 200
FMT(vowel/e_mid2)
endphoneme

phoneme i
vowel starttype #i endtype #i
length 170
length 190
IfNextVowelAppend(;)
FMT(vowel/i)
endphoneme

phoneme o
vowel starttype #o endtype #o
length 190
length 200
FMT(vowel/oo)
endphoneme

phoneme O
vowel starttype #o endtype #o
length 190
length 200
FMT(vowel/oo)
endphoneme

phoneme u
vowel starttype #u endtype #u
length 180
length 200
FMT(vowel/u_bck2)
endphoneme

@@ -107,11 +107,26 @@ phoneme D
voicingswitch T
CALL base/D
IF nextPh(isPause2) THEN
FMT(voc/dh_) addWav(vocw/dh, 40) // weaker
FMT(voc/dh_) addWav(vocw/dh, 35) // weaker
ENDIF
endphoneme

phoneme t // dental variant of /t/
vls dnt stop
voicingswitch d[
lengthmod 2
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20

IF nextPh(isPause2) THEN
WAV(ustop/t_dnt2, 35)
ENDIF
WAV(ustop/t_dnt2, 70)

endphoneme



phoneme s
vls alv frc sibilant
lengthmod 3

+ 37
- 17
phsource/ph_turkish View File

@@ -2,7 +2,7 @@

phoneme i
vowel starttype #i endtype #i
length 150
length 180
IF thisPh(isTranslationGiven) THEN
// don't reduce the vowel if phonemes are explicitly given
ELSE
@@ -18,14 +18,14 @@ endphoneme

phoneme I
vowel starttype #i endtype #i
length 150
length 180
FMT(vowel/ii_5)
endphoneme


phoneme y
vowel starttype #u endtype #u
length 155
length 180
IF thisPh(isTranslationGiven) THEN
// don't reduce the vowel if phonemes are explicitly given
ELSE
@@ -41,7 +41,7 @@ endphoneme

phoneme Y
vowel starttype #u endtype #u
length 155
length 180
FMT(vowel/u#)
endphoneme

@@ -49,10 +49,16 @@ endphoneme

phoneme e
vowel starttype #e endtype #e
length 180
length 200
IF thisPh(isTranslationGiven) THEN
// don't reduce the vowel if phonemes are explicitly given
ELSE
IF nextPh(isWordEnd) OR next2PhW(isNotVowel) THEN
IF nextPh(isRhotic) OR nextPh(isNasal) OR nextPh(l) OR nextPh(L) THEN
ChangePhoneme(&)
ENDIF
ENDIF

IF thisPh(isFinalVowel) THEN
ChangePhoneme(E)
ENDIF
@@ -65,21 +71,27 @@ endphoneme

phoneme E
vowel starttype #e endtype #e
length 180
length 200
FMT(vowel/e_mid)
endphoneme

phoneme &
vowel starttype #a endtype #a
length 200
FMT(vowel/ee_6)
endphoneme


phoneme W
vowel starttype #@ endtype #@
length 180
length 200
FMT(vowel/y#)
endphoneme


phoneme a
vowel starttype #a endtype #a
length 190
length 200
FMT(vowel/a#_4)
endphoneme

@@ -87,7 +99,7 @@ endphoneme

phoneme u
vowel starttype #u endtype #u
length 150
length 180
IF thisPh(isTranslationGiven) THEN
// don't reduce the vowel if phonemes are explicitly given
ELSE
@@ -103,7 +115,7 @@ endphoneme

phoneme U
vowel starttype #u endtype #u
length 150
length 180
FMT(vowel/uu_2)
endphoneme

@@ -111,7 +123,7 @@ endphoneme
phoneme @
vowel starttype #@ endtype #@
ipa ɯ
length 150
length 180
FMT(vowel/u#_7)
endphoneme

@@ -119,7 +131,7 @@ endphoneme

phoneme o
vowel starttype #o endtype #o
length 190
length 200
IF thisPh(isTranslationGiven) THEN
// don't reduce the vowel if phonemes are explicitly given
ELSE
@@ -135,7 +147,7 @@ endphoneme

phoneme O
vowel starttype #o endtype #o
length 190
length 200
FMT(vowel/oo)
endphoneme

@@ -179,12 +191,20 @@ phoneme J
endphoneme


phoneme l
import_phoneme en/l
endphoneme

phoneme G
import_phoneme en/r/
lengthmod 7
endphoneme


phoneme R
vcd alv flp rhotic
IF prevPhW(isVowel) AND nextPhW(isVowel) THEN
CALL base/*
// ELIF prevPhW(isNotVowel) THEN
// CALL base/R
ELSE
CALL base/r
ENDIF
ipa ɾ
endphoneme

+ 80
- 50
phsource/ph_vietnam View File

@@ -18,13 +18,13 @@ endphoneme

phoneme 3 // sắc Tone(rising
stress
Tone(25, 50, envelope/p_rise, NULL) // 25
Tone(30, 60, envelope/p_rise, NULL) // 25 50
endphoneme


phoneme 4 // hỏi Tone(curve (dipping rising)
stress
Tone(30, 5, envelope/p_fallrise, NULL)
Tone(40, 5, envelope/p_fallrise, NULL) //30
endphoneme


@@ -54,33 +54,33 @@ endphoneme

phoneme a
vowel starttype #@ endtype #@
length 120
length 140
FMT(vowel/a_6) //a_4)
endphoneme

phoneme a:
vowel starttype #a endtype #a
length 200 //280
FMT(vietnam/a) //FMT(vowel/a_6)
length 240 //280
FMT(vowel/a_8)
endphoneme


phoneme E
vowel starttype #e endtype #e
length 200
length 240
FMT(vowel/ee_3)
endphoneme

phoneme e
vowel starttype #e endtype #e
length 200
length 140
FMT(vowel/e)
endphoneme


phoneme i
vowel starttype #i endtype #i
length 190
length 240
IfNextVowelAppend(;)
IF prevPhW(w) THEN
VowelStart(w/wi)
@@ -100,7 +100,7 @@ phoneme O
ELSE
length 200
ENDIF
FMT(vowel/aa_4)
FMT(vowel/0_2) //aa_4)
endphoneme

phoneme o
@@ -110,7 +110,7 @@ phoneme o
ELSE
length 200
ENDIF
FMT(vowel/o_2)
FMT(vowel/o) // o_2)
endphoneme


@@ -119,9 +119,9 @@ phoneme u
IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound
length 120
ELSE
length 200
length 240
ENDIF
FMT(vnasal/u_n) //vowel/u_7)
FMT(vowel/u_5)
endphoneme

phoneme y
@@ -129,7 +129,7 @@ phoneme y
IF nextPh(kh) OR nextPh(N) THEN
length 120
ELSE
length 200
length 180
ENDIF
FMT(vowel/u#_5)
endphoneme
@@ -138,10 +138,10 @@ endphoneme

phoneme @
vowel starttype #@ endtype #a
IF nextPh(kh) OR nextPh(N) THEN
IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN
length 120
ELSE
length 170
length 200
ENDIF
FMT(vowel/V) //vowel/@_2)
endphoneme
@@ -149,7 +149,7 @@ endphoneme

phoneme @:
vowel starttype #@ endtype #@
length 280
length 200
FMT(vowel/@_2)
endphoneme

@@ -160,8 +160,8 @@ endphoneme

phoneme aI
vowel starttype #a endtype #i
length 200 //250
FMT(vdiph/&y)
length 140 //250
FMT(vdiph/&i_2)
endphoneme


@@ -188,14 +188,14 @@ endphoneme

phoneme eI
vowel starttype #e endtype #i
length 200
length 140
FMT(vdiph/ei)
endphoneme


phoneme EI
vowel starttype #e endtype #i
length 200
length 140
FMT(vdiph/eei)
endphoneme

@@ -203,7 +203,7 @@ endphoneme
phoneme OI
vowel starttype #o endtype #i
length 200
FMT(vdiph/0i)
FMT(vdiph/ooi_3)
endphoneme


@@ -231,14 +231,14 @@ endphoneme

phoneme aU
vowel starttype #a endtype #u
length 210
length 200
FMT(vdiph/aau_4)
endphoneme


phoneme a:U
vowel starttype #a endtype #u
length 230 //270
length 200 //270
FMT(vdiph/au)
endphoneme

@@ -258,19 +258,19 @@ endphoneme

phoneme iU
vowel starttype #i endtype #u
length 200
length 140
FMT(vdiph2/iu)
endphoneme

phoneme @U
vowel starttype #@ endtype #u
length 200
length 140
FMT(vdiph/@u_3)
endphoneme

phoneme @:U
vowel starttype #@ endtype #u
length 270
length 140
FMT(vdiph/@u)
endphoneme

@@ -278,19 +278,19 @@ endphoneme

phoneme i@
vowel starttype #i endtype #@
length 240
length 140
FMT(vdiph2/ii@_3)
endphoneme

phoneme y@
vowel starttype #i endtype #@
length 200
length 140
FMT(vdiph2/y-y#)
endphoneme

phoneme u@
vowel starttype #u endtype #@
length 150 //200
length 100 //200
FMT(vdiph2/uu@)
endphoneme

@@ -298,39 +298,67 @@ endphoneme

phoneme o# // ông
vowel starttype #o endtype #o
length 200
length 140
FMT(vnasal/a#u_n)
endphoneme

phoneme O# // ong
vowel starttype #o endtype #o
length 200
length 140
FMT(vnasal/&u_n)
endphoneme


phoneme o@
vowel starttype #o endtype #o
length 160
length 140
FMT(vdiph2/oa)
endphoneme

phoneme o&
vowel starttype #o endtype #o
length 160
length 140
FMT(vietnam/oe)
endphoneme

phoneme iE // iê : viết, giệc
vowel starttype #i endtype #e
length 190
length 140
FMT(vietnam/ie_2)
endphoneme

phoneme Oi // oai sound
vowel starttype #o endtype #i
length 140
FMT(vdiph/ooi_3)
endphoneme

// Vowel and Dipthong for south dialect

phoneme O- // ôi southern sound
vowel starttype #o endtype #i
length 150
FMT(vnasal/oi_n)
endphoneme

phoneme @- // ơi southern sound
vowel starttype #o endtype #i
length 150
FMT(vdiph/@i_3)
endphoneme

phoneme u- // u southern sound
vowel starttype #u endtype #u
length 150
FMT(vowel/u_3,70)
endphoneme



phoneme kh
vls vel frc
lengthmod 3
Vowelin f1=0 f2=2300 200 400 f3=200 80
Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30
Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20
WAV(vietnam/_c,5) //ufric/x, 50)
endphoneme
@@ -338,11 +366,11 @@ endphoneme

phoneme l
liquid
lengthmod 7
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30
//lengthmod 7
//IF nextPh(isNotVowel) THEN
// ChangePhoneme(l/2)
//ENDIF

//CALL vowelstart_l

FMT(l/l_vi)
@@ -352,7 +380,7 @@ phoneme t
vls alv stop
//voicingswitch d
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20

WAV(vietnam/th, 50)
@@ -362,7 +390,7 @@ phoneme cr
vls pla afr sibilant
//voicingswitch dZ
lengthmod 2
Vowelin f1=0 f2=2300 200 400 f3=-100 80
Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=30

WAV(vietnam/tr,10)
@@ -370,10 +398,10 @@ endphoneme

phoneme d
vcd alv stop
lengthmod 5
// lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=30
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30
WAV(vietnam/dd)
endphoneme
@@ -381,9 +409,9 @@ WAV(vietnam/dd)
vls pal stop palatal
//voicingswitch J
lengthmod 2
length 75
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1
length 2
Vowelin f1=0 f2=2700 400 600 f3=300 80 len=30 brk
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=30 colr=1

WAV(vietnam/ch,5)
@@ -402,18 +430,20 @@ endphoneme

phoneme n
vcd alv nasal
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 brk len=30
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk len=30
lengthmod 4
FMT(n/n#_)
length 75
FMT(n/nr_)
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
length 5
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=30
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=30

IF nextPh(isPause2) THEN
WAV(ustop/t_unasp2, 5)

+ 42
- 5
phsource/ph_vietnam_hue View File

@@ -6,31 +6,31 @@

phoneme 1 // ngang tone: level
stress
Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone
Tone(40, 5, envelope/p_level, NULL) // similar Hue dialect tone
endphoneme


phoneme 2 // huyền tone: low falling
stress
Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 8
Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 25
endphoneme


phoneme 3 // sắc Tone(rising
stress
Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75
Tone(2, 10, envelope/p_fallrise, NULL) // 2 10
endphoneme


phoneme 4 // hỏi Tone(curve (dipping rising)
stress
Tone(20, 5, envelope/p_512,NULL) //Tone(55, 5, envelope/p_fallrise, NULL) //30 5 m 55 5
Tone(5, 10, envelope/p_512,NULL) //20 5
endphoneme


phoneme 5 // ngã tone: broken (creaking rising)
stress
Tone(50,2, envelope/p_214, envelope/vi_5amp) // 28,58 m20 85
Tone(10, 15, envelope/p_512, envelope/vi_6amp) // 40 20
endphoneme


@@ -46,4 +46,41 @@ phoneme 7 // Tone(1 (ngang) at end of clause
Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20
endphoneme

// Redefine the length of vowels

phoneme i
CALL vi/i
length 150
endphoneme

phoneme E
CALL vi/E
length 150
endphoneme

phoneme a:
CALL vi/a:
length 150
endphoneme

phoneme @
CALL vi/@
length 150
endphoneme

phoneme @:
CALL vi/@:
length 150
endphoneme

phoneme O
CALL vi/O
length 150
FMT(vowel/0)
endphoneme

phoneme Oi
CALL vi/Oi
length 100
FMT(vdiph/ooi_2)
endphoneme

+ 3
- 0
phsource/phonemes View File

@@ -1830,6 +1830,9 @@ include ph_vietnam
phonemetable vi-hue vi
include ph_vietnam_hue

phonemetable vi-sgn vi
include ph_vietnam_sgn

phonemetable zhy base
include ph_zh_yue


BIN
phsource/ustop/t_hi.wav View File


BIN
phsource/vdiph/ooi View File


BIN
phsource/vdiph/ooi_2 View File


BIN
phsource/vdiph/ooi_3 View File


BIN
phsource/vdiph/ooi_4 View File


BIN
phsource/vowel/a_4 View File


BIN
phsource/vowel/u#_5 View File


BIN
phsource/vowel/u#_7 View File


+ 7
- 1
src/dictionary.cpp View File

@@ -909,7 +909,13 @@ int Unpronouncable(Translator *tr, char *word, int posn)

if(count==0)
c1 = c;
count++;

if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3))
{
// don't count apostrophe
}
else
count++;

if(IsVowel(tr, c))
{

+ 70
- 2
src/extras.cpp View File

@@ -2272,6 +2272,67 @@ void Test2()

#endif

#define MAX_WALPHA 0x24f
void Make_walpha_tab()
{//===================
int ix;
int value;
int c;
short exceptions[40];
int ex = 0;
FILE *f;

f = fopen("/home/jsd1/walpha_tab.txt","w");
for(ix=0x80; ix<=MAX_WALPHA; ix++)
{
value = 0;
if(iswalpha(ix))
{
value = 0xfe; // no case
if(iswlower(ix))
{
value = 0xff;
}
else if(iswupper(ix))
{
c = towlower(ix);
if(c > 0)
value = c - ix;

if((value < 0) || (value > 0xfc))
{
exceptions[ex] = ix;
exceptions[ex+1] = c;
ex+=2;
value = 0xfd;
}
}

}

if(value > 0xfc)
fprintf(f," 0x%.2x,", value);
else
fprintf(f," %4d,", value);


if((ix % 16) == 15)
{
fprintf(f," // %.3x\n", ix & 0xfff0);
}

}

fprintf(f, "\nstatic const short wchar_tolower[] = {\n");
exceptions[ex] = 0;
exceptions[ex+1] = 0;
for(ix=0; ix<=ex; ix+=2)
{
fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]);
}
fprintf(f, "};\n");
fclose(f);
}


const char* text1 = "Hello world. Testing.";
@@ -2319,9 +2380,16 @@ if(control==2)
espeak_SetSynthCallback(TestSynthCallback);
espeak_SetUriCallback(TestUriCallback);

espeak_SetVoiceByName("en");
voice.languages = "fr";
espeak_SetVoiceByProperties(&voice);
// espeak_SetVoiceByName("fr");
espeak_Synth("1", 5, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data);

// voice.languages = "en";
// espeak_SetVoiceByProperties(&voice);
espeak_SetVoiceByName("de");
espeak_Synth(textbuf, strlen(textbuf)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data);
// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1));
// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1));

espeak_SetParameter(espeakPUNCTUATION, 1, 0);
espeak_Synchronize();

+ 1
- 1
src/menus.cpp View File

@@ -119,7 +119,7 @@ wxMenuBar *MakeMenu(int type, const char *dict_name)
option_menu = new wxMenu;
option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu);
option_menu->Append(MENU_OPT_SPEED, _("Speed..."));
option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation"));
option_menu->Append(MENU_OPT_PUNCT, _("Speak punctuation"));
option_menu->Append(MENU_OPT_SPELL, _("Speak character names"));

// TOOLS

+ 119
- 49
src/readclause.cpp View File

@@ -213,50 +213,74 @@ const int param_defaults[N_SPEECH_PARAM] = {
0, // voice type
};

#ifdef NEED_WCHAR_FUNCTIONS

// additional Latin characters beyond the Latin1 character set
#define MAX_WALPHA 0x233
// indexed by character - 0x100
// 0=not alphabetic, 0xff=lower case, 0xfe=special case
// additional Latin characters beyond the ascii character set
#define MAX_WALPHA 0x24f
// indexed by character - 0x80
// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower
// other=value to add to upper case to convert to lower case
static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120
0xfe,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220
1,0xff, 1,0xff }; // 230
static unsigned char walpha_tab[MAX_WALPHA-0x7f] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 080
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 090
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0a0
0, 0, 0, 0, 0, 0xff, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0b0
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 0c0
32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0xff, // 0d0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 100
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 110
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 120
0xfd, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, // 130
0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, // 140
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 150
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 160
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, // 170
0xff, 210, 1, 0xff, 1, 0xff, 206, 1, 0xff, 205, 205, 1, 0xff, 0xfe, 79, 202, // 180
203, 1, 0xff, 205, 207, 0xff, 211, 209, 1, 0xff, 0xff, 0xfe, 211, 213, 0xff, 214, // 190
1, 0xff, 1, 0xff, 1, 0xff, 218, 1, 0xff, 218, 0xfe, 0xfe, 1, 0xff, 218, 1, // 1a0
0xff, 217, 217, 1, 0xff, 1, 0xff, 219, 1, 0xff, 0xfe, 0xfe, 1, 0xff, 0xfe, 0xff, // 1b0
0xfe, 0xfe, 0xfe, 0xfe, 2, 0xff, 0xff, 2, 0xff, 0xff, 2, 0xff, 0xff, 1, 0xff, 1, // 1c0
0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, 1, 0xff, // 1d0
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1e0
0xfe, 2, 0xff, 0xff, 1, 0xff, 0xfd, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1f0
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 200
1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 210
0xfd, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 220
1, 0xff, 1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 1, 0xff, 0xfd, 0xfd, 0xfe, // 230
0xfe, 1, 0xff, 0xfd, 69, 71, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff}; // 240

static const short wchar_tolower[] = {
0x130, 0x069,
0x178, 0x0ff,
0x1f6, 0x195,
0x1f7, 0x1bf,
0x220, 0x19e,
0x23a, 0x2c65,
0x23d, 0x19a,
0x23e, 0x2c66,
0x243, 0x180,
0x000, 0x000,
};


#ifdef NEED_WCHAR_FUNCTIONS

// use ctype.h functions for Latin1 (character < 0x100)
int iswalpha(int c)
{
if(c < 0x100)
if(c < 0x80)
return(isalpha(c));
if((c > 0x3040) && (c <= 0xa700))
return(1); // japanese, chinese characters
if(c > MAX_WALPHA)
return(0);
return(walpha_tab[c-0x100]);
return(walpha_tab[c-0x80]);
}

int iswdigit(int c)
{
if(c < 0x100)
if(c < 0x80)
return(isdigit(c));
return(0);
}
@@ -271,50 +295,63 @@ int iswalnum(int c)
int towlower(int c)
{
int x;
if(c < 0x100)
int ix;

if(c < 0x80)
return(tolower(c));
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
return(c); // already lower case
if(x == 0xfe)

if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe))
return(c);

if(x == 0xfd)
{
// special cases
if(c == 0x130) // uppercase i-dot
return('i');
// special cases, lookup translation table
for(ix=0; wchar_tolower[ix] != 0; ix+=2)
{
if(wchar_tolower[ix] == c)
return(wchar_tolower[ix+1]);
}
}
return(c + x); // convert to lower case
}

int towupper(int c)
{
// check whether the previous character code is the upper-case equivalent of this character
if(tolower(c-1) == c)
return(c-1); // yes, use it
// check whether a previous character code is the upper-case equivalent of this character
if(towlower(c-32) == c)
return(c-32); // yes, use it
if(towlower(c-1) == c)
return(c-1);
if(towlower(c-2) == c)
return(c-2);
return(c); // no
}

int iswupper(int c)
{
int x;
if(c < 0x100)
if(c < 0x80)
return(isupper(c));
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff))
return(0);
return(1);
}

int iswlower(int c)
{
if(c < 0x100)
if(c < 0x80)
return(islower(c));
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff))
return(0);
return(1);
}

int iswspace(int c)
{
if(c < 0x100)
if(c < 0x80)
return(isspace(c));
if(c == 0xa0)
return(1);
return(0);
}

@@ -366,8 +403,26 @@ float wcstod(const wchar_t *str, wchar_t **tailptr)
}
#endif


// use internal data for iswalpha up to U+024F
// iswalpha() on Windows is unreliable (U+AA, U+BA).
int iswalpha2(int c)
{
if(c < 0x80)
return(isalpha(c));
if((c > 0x3040) && (c <= 0xa700))
return(1); // japanese, chinese characters
if(c > MAX_WALPHA)
return(iswalpha(c));
return(walpha_tab[c-0x80]);
}


int towlower2(unsigned int c)
{
int x;
int ix;

// check for non-standard upper to lower case conversions
if(c == 'I')
{
@@ -376,11 +431,26 @@ int towlower2(unsigned int c)
c = 0x131; // I -> ı
}
}
#ifdef __WIN32__
if(c == 0x130) // uppercase i-dot
return('i');
#endif
return(towlower(c));

if(c < 0x80)
return(tolower(c));

if(c > MAX_WALPHA)
return(towlower(c));

if((x = walpha_tab[c-0x80]) >= 0xfe)
return(c); // this is not an upper case letter

if(x == 0xfd)
{
// special cases, lookup translation table
for(ix=0; wchar_tolower[ix] != 0; ix+=2)
{
if(wchar_tolower[ix] == (int)c)
return(wchar_tolower[ix+1]);
}
}
return(c + x); // convert to lower case
}



+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.47.06 15.Apr.13";
const char *version_string = "1.47.07a 23.Apr.13";
const int version_phdata = 0x014701;

int option_device_number = -1;

+ 1
- 0
src/tr_languages.cpp View File

@@ -844,6 +844,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
tr->langopts.accents = 2; // 'capital' after letter name
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe
}
break;


+ 5
- 2
src/translate.cpp View File

@@ -384,9 +384,12 @@ int IsAlpha(unsigned int c)
0
};

if(iswalpha(c))
if(iswalpha2(c))
return(1);

if(c < 0x300)
return(0);

if((c >= 0x901) && (c <= 0xdf7))
{
// Indic scripts: Devanagari, Tamil, etc
@@ -2957,7 +2960,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
{
// convert to lower case and continue
c = towlower(c);
c = towlower2(c);
}
else
{

+ 1
- 0
src/translate.h View File

@@ -713,6 +713,7 @@ int IsDigit(unsigned int c);
int IsDigit09(unsigned int c);
int IsAlpha(unsigned int c);
int IsVowel(Translator *tr, int c);
int iswalpha2(int c);
int isspace2(unsigned int c);
int towlower2(unsigned int c);
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);

+ 1
- 1
src/voices.cpp View File

@@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control)

// which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia =
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";


Loading…
Cancel
Save