mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.46.42]
Command line option -X now lists *_list flags by name. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@308 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
@@ -103,7 +103,7 @@ p Q r R s s; t T
|
||||
ts v x z
|
||||
|
||||
|
||||
Dictionary en_dict 2013-03-02
|
||||
Dictionary en_dict 2013-03-06
|
||||
|
||||
0 0# 3 3: @ @- @2 @5
|
||||
@L a a# A: A@ aa aI aI3
|
||||
@@ -205,7 +205,7 @@ q r r. s S s. t T
|
||||
t. th th. v w x z
|
||||
|
||||
|
||||
Dictionary ta_dict 2013-03-03
|
||||
Dictionary ta_dict 2013-03-05
|
||||
|
||||
a a: aI aU e E e: i
|
||||
I i: o o: u U u2 u:
|
||||
@@ -330,7 +330,7 @@ k l m n p R s S
|
||||
t tS v w x
|
||||
|
||||
|
||||
Dictionary nl_dict 2013-03-03
|
||||
Dictionary nl_dict 2013-03-05
|
||||
|
||||
8 @ @- a A a: A~ e
|
||||
E e# E2 e: EI eU i I
|
||||
@@ -338,9 +338,9 @@ o O O: o: O~ u VU Wy
|
||||
y Y: yU
|
||||
|
||||
* : ; b d D dZ f
|
||||
g h j k l m n N
|
||||
n^ p Q r s S t tS
|
||||
v v# w x z Z
|
||||
g h j k l L m n
|
||||
N n^ p Q r s S t
|
||||
tS v v# w x z Z
|
||||
|
||||
|
||||
Dictionary no_dict 2011-03-07
|
||||
@@ -378,7 +378,7 @@ S s; S; t t; tS ts tS;
|
||||
ts; v w x z Z Z;
|
||||
|
||||
|
||||
Dictionary pt_dict 2013-03-02
|
||||
Dictionary pt_dict 2013-03-06
|
||||
|
||||
& &/ &U~ &~ @ @- a A
|
||||
aI aU e E eI EI eU EU
|
||||
@@ -392,7 +392,7 @@ S s# s; t T tS ts v
|
||||
w x z Z
|
||||
|
||||
|
||||
Dictionary ro_dict 2011-07-21
|
||||
Dictionary ro_dict 2013-03-04
|
||||
|
||||
@ @- @I @U a aI aU e
|
||||
ea eI eo eU i i/ I^ iI
|
||||
|
||||
+8
-3
@@ -19,6 +19,7 @@
|
||||
// $alt1 use strong ending (-table, -inal)
|
||||
// $alt2 use weak ending
|
||||
// $alt3 use weak first vowel, a->[a#], e->[@], o->[0#]
|
||||
// $alt6 'to'
|
||||
|
||||
|
||||
// letter names, as they are spoken as a single character in text
|
||||
@@ -261,11 +262,12 @@ _hi h'Indi
|
||||
_bn bEng'A:li
|
||||
_gur g'U@mUki
|
||||
_gu gu:dZ3r'A:ti
|
||||
_or 0r'i@
|
||||
_or O:r'ia:
|
||||
_ta t'amI2l
|
||||
_te t'Elugu
|
||||
_kn k'A:na#d@
|
||||
_ml maleI'A:l@m
|
||||
_si sI2nh'A:l@
|
||||
_si s'INh@l@
|
||||
_th t'aI
|
||||
_lo l'aU
|
||||
_ti tI2b'Et@n
|
||||
@@ -3773,7 +3775,7 @@ for fO@ $u
|
||||
(for a while) f@@||w'aIl
|
||||
(for one) fO@w0n $2 $atend
|
||||
|
||||
to t@5 $verbf // @ change to U before vowel
|
||||
to t@5 $verbf $alt6 // @ change to U before vowel
|
||||
(to be) t@b%i $pastf
|
||||
(to be) t@||'bi: $atend
|
||||
(to to) %tU_t@5 $verbf
|
||||
@@ -4036,6 +4038,9 @@ thou DaU
|
||||
thy ,DaI
|
||||
thine ,DaIn
|
||||
|
||||
(i had) aI||h'ad $atend
|
||||
(he had) hi:||h'ad $atend
|
||||
|
||||
me ,mi: $only
|
||||
me mi: $atstart $atend
|
||||
him ,hIm $only
|
||||
|
||||
@@ -2768,6 +2768,7 @@
|
||||
h (_
|
||||
_B) h
|
||||
@) hammed h'amId
|
||||
d) h (am_
|
||||
A) han (_ han // places
|
||||
e) han (_ h@n
|
||||
ha (st heI
|
||||
|
||||
+31
-8
@@ -5,6 +5,9 @@
|
||||
// A means vowel letters (not vowel signs)
|
||||
// B means a combining vowel sign or a virama
|
||||
|
||||
// change (k t. t p) to (g d. d b) if followed by a vowel, unless at start of a word or preceeded by an unvoiced stop consonant ??
|
||||
.L01 _ ക് ച് ട് ത് പ്
|
||||
|
||||
|
||||
.replace
|
||||
൦ 0 // Convert Malayalam numbers
|
||||
@@ -24,8 +27,13 @@
|
||||
|
||||
|
||||
.group ക
|
||||
ക ka
|
||||
ക (B k
|
||||
ക് k
|
||||
L01) ക ka
|
||||
L01) ക (B k
|
||||
ക ga
|
||||
ക (B g
|
||||
ക്ക k:a
|
||||
ക്ക (B k:
|
||||
|
||||
.group ഖ
|
||||
ഖ kha
|
||||
@@ -64,8 +72,13 @@
|
||||
ഞ (B n^
|
||||
|
||||
.group ട
|
||||
ട t.a
|
||||
ട (B t.
|
||||
ട് t.
|
||||
L01) ട t.a
|
||||
L01) ട (B t.
|
||||
ട d.a
|
||||
ട (B d.
|
||||
ട്ട t.:a
|
||||
ട്ട (B t.:
|
||||
|
||||
.group ഠ
|
||||
ഠ th.a
|
||||
@@ -84,8 +97,13 @@
|
||||
ണ (B n.
|
||||
|
||||
.group ത
|
||||
ത ta
|
||||
ത (B t
|
||||
ത് t
|
||||
L01) ത ta
|
||||
L01) ത (B t
|
||||
ത da
|
||||
ത (B d
|
||||
ത്ത t:a
|
||||
ത്ത (B t:
|
||||
|
||||
.group ഥ
|
||||
ഥ tha
|
||||
@@ -104,8 +122,13 @@
|
||||
ന (B n
|
||||
|
||||
.group പ
|
||||
പ pa
|
||||
പ (B p
|
||||
പ് p
|
||||
L01) പ pa
|
||||
L01) പ (B p
|
||||
പ ba
|
||||
പ (B b
|
||||
പ്പ p:a
|
||||
പ്പ (B p:
|
||||
|
||||
.group ഫ
|
||||
ഫ pha
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
// This file in UTF8 encoded
|
||||
|
||||
// $alt2, remove s from plural, remove en from plural
|
||||
// Use $alt3 where 'ng' and 'nk' is 'n+g' not [N]
|
||||
|
||||
// Letters
|
||||
@@ -1408,6 +1409,7 @@ armand _^_FR
|
||||
augustus VUQ'8st8s
|
||||
bacterie bAkt'I:ri
|
||||
banengids $alt3
|
||||
bascule $2
|
||||
beha be:_h'a:
|
||||
beige bEZ@
|
||||
benard b@nArt
|
||||
@@ -1444,6 +1446,8 @@ damascering damA;s'e:rIN
|
||||
december $2
|
||||
dieet $2
|
||||
diesel diz@l
|
||||
discipline $3
|
||||
//discussie $2
|
||||
divers div'Ers
|
||||
diftongering dIft,ON'e:rIN
|
||||
doordat $2
|
||||
@@ -1474,6 +1478,7 @@ januari $3
|
||||
kadaster $2
|
||||
mangat $alt3
|
||||
materie ma:t'e:ri
|
||||
maatregel ma:tre:Q@l $alt2
|
||||
maxima $1
|
||||
meteen mEt'e:n
|
||||
metro me:tro:
|
||||
|
||||
+16
-4
@@ -4,6 +4,7 @@
|
||||
// Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant
|
||||
|
||||
.L01 g k
|
||||
.L02 _ t_ d_ de_ den_ // verb endings
|
||||
|
||||
|
||||
.group a
|
||||
@@ -65,6 +66,7 @@
|
||||
&) bare (_S4 =ba:r@
|
||||
_) bij (C@P3 b'EI
|
||||
bij (zond b%i
|
||||
_) bijeen bEI'e:n
|
||||
_) binnen (P6 b'In@n
|
||||
_) boven (P5 b'o:v@n
|
||||
_) brand br'And
|
||||
@@ -188,7 +190,8 @@
|
||||
ig) e (_+S1qd @
|
||||
|
||||
ea (_ 'e:a:
|
||||
eau o: //words with French origin
|
||||
eau 'o: //words with French origin
|
||||
// eau (_ 'o:
|
||||
@) ee (_ 'e:
|
||||
@) ee (X_ 'e:
|
||||
@) ee (r_ 'I
|
||||
@@ -214,6 +217,7 @@
|
||||
&) el (ingen_$p_alt =@l
|
||||
|
||||
@) elen (_ 'e:l@n
|
||||
@) el (en_$p_alt2 @L
|
||||
&) elijks @l@ks
|
||||
&) em (_ @m
|
||||
&) e (ment @
|
||||
@@ -256,7 +260,6 @@
|
||||
@) etten (_S3 @n
|
||||
@) es (_$p_alt @s // for wors which end on [@] with multiple on 's'.
|
||||
|
||||
eau (_ 'o:
|
||||
euille @'y
|
||||
eum (_$w_alt 'e:8m
|
||||
@mus) eum (_ ,e:8m // compounds
|
||||
@@ -360,11 +363,13 @@
|
||||
ie i
|
||||
ieuw iw
|
||||
iee ie:
|
||||
ii i
|
||||
|
||||
d) ie (_ 'i
|
||||
g) ie (_ 'i
|
||||
m) ie (_ 'i
|
||||
p) ie (_ 'i
|
||||
ss) ie (_ =i
|
||||
ieus (_ ij'Y:s
|
||||
ieuze (_ ij'Y:z@
|
||||
ieuzer (_ ij'Y:z@r
|
||||
@@ -407,6 +412,7 @@
|
||||
io (nage iO
|
||||
io (de_ i'o:
|
||||
iodes (_ i'o:d@s
|
||||
_) in (scrip In
|
||||
is (_ Is
|
||||
@) isch (_ =is
|
||||
@) ische (_ =is@
|
||||
@@ -521,6 +527,7 @@ _) inn (@P2 'I // ?? inneren
|
||||
@@C) o (_ =o:
|
||||
obsc (u opsk
|
||||
oe (X_ 'u
|
||||
office Of@s
|
||||
oir (_ 'v#a:r
|
||||
pl) oi (t v#A
|
||||
c) oi (ffu v#A
|
||||
@@ -532,6 +539,7 @@ _) inn (@P2 'I // ?? inneren
|
||||
_) oost (@P4 o:st
|
||||
_) op (@@P2 'Op
|
||||
_) open (@P4 'o:p@n
|
||||
_) op (enen 'o:p
|
||||
_) openings (P8 'o:p@nINs
|
||||
_) op (era 'o:p
|
||||
_) op (tion Op
|
||||
@@ -620,7 +628,8 @@ _) inn (@P2 'I // ?? inneren
|
||||
A) s (A z
|
||||
s (b z
|
||||
s (d z
|
||||
sc s
|
||||
sc (e s
|
||||
sc (i s
|
||||
sch sx
|
||||
sch (_ s
|
||||
sch (e_ s
|
||||
@@ -633,11 +642,14 @@ _) inn (@P2 'I // ?? inneren
|
||||
a) s (_ s
|
||||
@) s (_$w_alt =s
|
||||
|
||||
_) samen(@P5 s'a:m@n
|
||||
_) samen(@P5 s'a:m@n
|
||||
_) scan (L02 skEn
|
||||
science saI@ns
|
||||
sc (oop sk
|
||||
sc (opi sk
|
||||
&) sel (_ =s@l
|
||||
&) selen (_ =s@l@n
|
||||
service s8v@s
|
||||
@) si (o S
|
||||
A) si (o Z
|
||||
@) ssi (o S
|
||||
|
||||
+3
-44
@@ -631,8 +631,8 @@ abacaxi abakaSy
|
||||
abordo $alt
|
||||
aborto $alt $verb
|
||||
acerto $alt2 $noun
|
||||
acordo $alt $verb
|
||||
acertos $alt2
|
||||
acordo $alt $verb
|
||||
acervo $alt2
|
||||
adepto $alt
|
||||
adereço $alt2
|
||||
@@ -663,8 +663,6 @@ ateia $alt
|
||||
aterro $alt2 $noun
|
||||
atmosfera $alt
|
||||
atrozes $alt
|
||||
austera $alt
|
||||
austero $alt
|
||||
autora $alt2
|
||||
avesso $alt2
|
||||
axé aSE
|
||||
@@ -706,8 +704,6 @@ cefaleia $alt
|
||||
cerca $alt
|
||||
cerca $alt2 $noun
|
||||
cerco $alt $verb
|
||||
cesta $alt2
|
||||
cesto $alt2
|
||||
chamego $alt2
|
||||
chefe $alt
|
||||
checam $alt
|
||||
@@ -737,8 +733,6 @@ consolo $alt2 $noun
|
||||
contivermos $alt
|
||||
controle $alt2 $noun
|
||||
controlo $alt2 $noun
|
||||
copa $alt
|
||||
copo $alt
|
||||
coreia $alt
|
||||
corneta $alt2
|
||||
cornos $alt
|
||||
@@ -751,8 +745,6 @@ couberdes $alt
|
||||
coubermos $alt
|
||||
cratera $alt
|
||||
crede $alt2
|
||||
cresce $alt
|
||||
crescem $alt
|
||||
der $alt
|
||||
derdes $alt
|
||||
desapego $alt2 $noun
|
||||
@@ -779,14 +771,7 @@ encosto $alt $verb
|
||||
endereço $alt2
|
||||
endereço $alt $verb
|
||||
enforco $alt
|
||||
enforque $alt
|
||||
enforquem $alt
|
||||
engordo $alt
|
||||
ensopa $alt
|
||||
ensopam $alt
|
||||
ensope $alt
|
||||
ensopem $alt
|
||||
ensopo $alt
|
||||
enredo $alt $verb
|
||||
enterro $alt2 $noun
|
||||
enumerem $alt
|
||||
@@ -877,16 +862,10 @@ houvermos $alt
|
||||
ideia $alt
|
||||
insonoro $alt
|
||||
interesse $alt2 $noun
|
||||
joga $alt
|
||||
jogam$alt
|
||||
jogo $alt $verb
|
||||
jogos $alt
|
||||
jogue $alt
|
||||
joguem $alt
|
||||
jogo $alt2 $noun
|
||||
joguete $alt2
|
||||
lambreta $alt2
|
||||
lebre $alt
|
||||
líderes $alt2
|
||||
lopes $alt
|
||||
maior $alt
|
||||
maleta $alt2
|
||||
@@ -913,7 +892,6 @@ minueto $alt2
|
||||
miolo $alt2
|
||||
miolos $alt
|
||||
moeda $alt
|
||||
modo $alt
|
||||
modos $alt
|
||||
molho $alt2 $noun
|
||||
monera $alt
|
||||
@@ -1001,20 +979,12 @@ reitora $alt2
|
||||
relevo $alt2 $noun
|
||||
remorso $alt
|
||||
reprovo $alt
|
||||
resolve $alt
|
||||
resolvem $alt
|
||||
retorno $alt $verb
|
||||
rixa x'iS&
|
||||
rocha $alt
|
||||
rock $alt
|
||||
rogas $alt
|
||||
rola $alt2 $noun
|
||||
rolo $alt2 $noun
|
||||
rosna $alt
|
||||
rosnam $alt
|
||||
rosne $alt
|
||||
rosnem $alt
|
||||
rosno $alt
|
||||
rumores $alt2
|
||||
saleta $alt2
|
||||
sarjeta $alt
|
||||
@@ -1029,17 +999,10 @@ sexteto $alt2
|
||||
?1 senhora $alt2
|
||||
senhores $alt2
|
||||
sinopse $alt
|
||||
sobe $alt
|
||||
sobem $alt
|
||||
soco $alt2
|
||||
soco $alt $verb
|
||||
sofrem $alt
|
||||
sofre $alt
|
||||
sofreste $alt2
|
||||
sogra $alt
|
||||
sopre $alt
|
||||
soprem $alt
|
||||
sopro $alt $verb
|
||||
sopro $alt2 $noun
|
||||
soro $alt2
|
||||
sorvete $alt2
|
||||
sossego $alt2 $noun
|
||||
@@ -1058,10 +1021,6 @@ tiverdes $alt
|
||||
tivermos $alt
|
||||
tocha $alt
|
||||
toga $alt
|
||||
tola $alt2
|
||||
tolo $alt2
|
||||
tolhe $alt
|
||||
tolhem $alt
|
||||
topo $alt $verb
|
||||
torno $alt $verb
|
||||
torre $alt2 $noun
|
||||
|
||||
+20
-10
@@ -413,8 +413,8 @@ respond) e (L07_ e // cor-
|
||||
_estr) ei (L03_ EI
|
||||
_inv) e (jL04_ E
|
||||
_dec) e (pL04_ E
|
||||
_s) e (quL02_ E
|
||||
_p) e (quL02_ E
|
||||
_s) e (quL02_ E
|
||||
l) e (que_ E
|
||||
_sug) e (rL02_ E
|
||||
_imp) e (rL03_ E
|
||||
@@ -442,24 +442,26 @@ respond) e (L07_ e // cor-
|
||||
_f) e (rvL03_ e
|
||||
_p) e (sL01_ E
|
||||
_d) e (scL02_ E
|
||||
_cr) e (scL02_ E
|
||||
_p) e (scL03_ E
|
||||
_m) e (sclL04 E
|
||||
_l) e (ssL02_ e
|
||||
_esp) e (ssL03_ e
|
||||
_c) e (stL03_ e
|
||||
_m) e (tL03_ e
|
||||
_pr) e (tL03_ e
|
||||
_com) e (tL03_ e
|
||||
_rem) e (tL03_ e
|
||||
prom) e (tL03_ e // com-
|
||||
_derr) e (tL03_ e
|
||||
_obsol) e (tL03_ e
|
||||
_pr) e (tL03_ e
|
||||
_sol) e (trL03_ E
|
||||
_pen) e (trL04_ E
|
||||
scr) e (vL03_ e // e- in- pre- ree- de-
|
||||
_d) e (vL03_ e
|
||||
scr) e (vL03_ e // e- in- pre- ree- de-
|
||||
_atr) e (vL03_ e
|
||||
_embel) e (zL04_ E
|
||||
pr) e (zL04_ E / des- menos-
|
||||
_embel) e (zL04_ E
|
||||
_acont) e (çL01_ e
|
||||
_arref) e (çL01_ e
|
||||
par) e (çL03_ e // a- re- com- rea- desa-
|
||||
@@ -469,7 +471,6 @@ _arref) e (çL01_ e
|
||||
_mer) e (çL03_ e
|
||||
_pad) e (çL03_ e // com-
|
||||
_per) e (çL03_ e
|
||||
_rejuven) e (çL03_ e
|
||||
conh) e (çL03_ e // re-
|
||||
_esqu) e (çL03_ e
|
||||
_forn) e (çL03_ e
|
||||
@@ -488,6 +489,7 @@ _envelh) e (çL03_ e
|
||||
_esclar) e (çL03_ e
|
||||
_estrem) e (çL03_ e
|
||||
_fortal) e (çL03_ e
|
||||
_rejuven) e (çL03_ e
|
||||
//endsort
|
||||
|
||||
|
||||
@@ -779,26 +781,34 @@ _fortal) e (çL03_ e
|
||||
|
||||
//sort
|
||||
_engl) o (bL01_ O
|
||||
_s) o (bL02_ O
|
||||
_esn) o (bL04_ O
|
||||
_deb) o (chL04_ O
|
||||
_desabr) o (chL04_ O
|
||||
_s) o (frL02_ O
|
||||
_j) o (gL04_ O
|
||||
_r) o (gL04_ O
|
||||
_adv) o (gL04_ O
|
||||
_ref) o (gL04_ O
|
||||
_ap) oi (L01_ OI
|
||||
_esc) o (lhL02_ O
|
||||
_t) o (lL03_ o
|
||||
c) o (lhL02_ O / es- en- re-
|
||||
_t) o (lhL02_ O
|
||||
_m) o (lhL04_ O
|
||||
env) o (lvL02_ O / des-
|
||||
_abs) o (lvL02_ O
|
||||
_env) o (lvL02_ O
|
||||
_res) o (lvL02_ O
|
||||
_rev) o (lvL02_ O
|
||||
_desenv) o (lvL02_ O
|
||||
_ent) o (pL02_ O
|
||||
_c) o (pL03_ O
|
||||
_ens) o (pL04_ O
|
||||
_s) o (prL04_ O
|
||||
_enf) o (rquL02_ O
|
||||
c) o (rrL01_ o // escorra, incorra, corra, recorra
|
||||
_m) o (rrL01_ o
|
||||
_r) o (snL04_ O
|
||||
_c) o (spL02_ O
|
||||
p) ostos (_ Ost=Us# // dispostos etc.
|
||||
_s) o (bL02_ O
|
||||
_s) o (prL02_ O
|
||||
//endsort
|
||||
|
||||
.group ô
|
||||
|
||||
+1
-1
@@ -2291,7 +2291,7 @@ vindeţi $1
|
||||
vinovăţi $alt
|
||||
vinovăţii $4
|
||||
virgulă $1
|
||||
vis-a-vis vizav'i
|
||||
(vis-a vis) vizav'i
|
||||
viscol $1
|
||||
vitreg $1
|
||||
vitrege $1
|
||||
|
||||
@@ -198,6 +198,8 @@
|
||||
ţi-) i (_ _ // combined with previous word as [iI]
|
||||
Cr) i (_+++ i
|
||||
V&) i (N_ 'i // verb
|
||||
|
||||
@) i (A$p_alt1 i // i is not [j]
|
||||
ăC) ia (_ 'ia
|
||||
âC) ia (_ 'ia
|
||||
ăC) ie (_ 'ie
|
||||
|
||||
@@ -113,6 +113,12 @@ U+bf9 ru:ba:j
|
||||
½ araI
|
||||
¾ mukka:l
|
||||
|
||||
// alphabet names
|
||||
_ar arVbU
|
||||
_cyr sirillik
|
||||
_he ;ebire:jVm
|
||||
|
||||
|
||||
// abbreviations
|
||||
ரூ ru:ba:j $dot $only
|
||||
(பி . ஏ) bije: $dot
|
||||
|
||||
+12
-12
@@ -433,8 +433,8 @@ l/l_ [l] base
|
||||
[l/] fr
|
||||
l/l_@ [l/3] base
|
||||
[l/] fr
|
||||
l/l@ [l#] base
|
||||
[X)]] base
|
||||
l/l@ [¨\-] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
@@ -467,16 +467,16 @@ l/L2_oL [l/2] base
|
||||
l/L2_uL [l/2] base
|
||||
l/l_3 [l/] de
|
||||
l/l_4 [ll] sq
|
||||
l/la [l#] base
|
||||
[X)]] base
|
||||
l/la [¨\-] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
[K] tn
|
||||
l/l_a [l/3] base
|
||||
[l/] fr
|
||||
l/le [l#] base
|
||||
[X)]] base
|
||||
l/le [¨\-] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
@@ -487,8 +487,8 @@ l/L_eL_af [&] af
|
||||
[&:] af
|
||||
l/l_front [L] sq
|
||||
l/l_front_ [l/4] sq
|
||||
l/li [l#] base
|
||||
[X)]] base
|
||||
l/li [¨\-] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[l] zh
|
||||
@@ -501,8 +501,8 @@ ll/ll [L] base
|
||||
ll/_ll [L] base
|
||||
l/l_long [l] base
|
||||
[l] fr
|
||||
l/lo [l#] base
|
||||
[X)]] base
|
||||
l/lo [¨\-] base
|
||||
[l#] base
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
[K] tn
|
||||
@@ -512,8 +512,8 @@ l^/l_rfx [l.] base
|
||||
[l;] lt
|
||||
[l] ru
|
||||
[l^] ru
|
||||
l/lu [l#] base
|
||||
[X)]] base
|
||||
l/lu [¨\-] base
|
||||
[l#] base
|
||||
[l] fr
|
||||
[l/2] fr
|
||||
[K] nso
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#define mkdir(p1,p2) mkdir(p1)
|
||||
|
||||
#define PATHSEP '\\'
|
||||
#define USE_PORTAUDIO
|
||||
//#define USE_PORTAUDIO
|
||||
//#define USE_NANOSLEEP
|
||||
#define NO_VARIADIC_MACROS
|
||||
#define __cdecl
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#define mkdir(p1,p2) mkdir(p1)
|
||||
|
||||
#define PATHSEP '\\'
|
||||
#define USE_PORTAUDIO
|
||||
//#define USE_PORTAUDIO
|
||||
//#define USE_NANOSLEEP
|
||||
#define NO_VARIADIC_MACROS
|
||||
#define __cdecl
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=eSpeak
|
||||
AppVerName=eSpeak version 1.46.31
|
||||
AppVerName=eSpeak version 1.46.42
|
||||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
|
||||
WindowVisible=yes
|
||||
|
||||
@@ -18,6 +18,11 @@ Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}"
|
||||
|
||||
[InstallDelete]
|
||||
Type: files; Name: "{app}\espeak.dll"
|
||||
Type: files; Name: "{app}\espeak-data\voices\*"
|
||||
Type: filesandordirs; Name: "{app}\espeak-data\voices\en"
|
||||
Type: filesandordirs; Name: "{app}\espeak-data\voices\asia"
|
||||
Type: filesandordirs; Name: "{app}\espeak-data\voices\europe"
|
||||
Type: filesandordirs; Name: "{app}\espeak-data\voices\other"
|
||||
Type: filesandordirs; Name: "{app}\espeak-data\voices\test"
|
||||
Type: filesandordirs; Name: "{app}\docs"
|
||||
|
||||
@@ -161,6 +166,7 @@ begin
|
||||
$41: Result := 'sw';
|
||||
//$44: Result := 'tt';
|
||||
$49: Result := 'ta';
|
||||
$46: Result := 'pa';
|
||||
$4b: Result := 'kn';
|
||||
//$50: Result := 'mn';
|
||||
$52: Result := 'cy';
|
||||
@@ -208,6 +214,7 @@ begin
|
||||
'an': value := $40a; // Aragon, use code for Spanish
|
||||
'az': value := $42c;
|
||||
'bg': value := $402;
|
||||
'bn': value := $445;
|
||||
'bs': value := $41a; // should be $141a but Jaws crashes on startup
|
||||
'ca': value := $403;
|
||||
'cs': value := $405;
|
||||
@@ -247,6 +254,7 @@ begin
|
||||
'ne': value := $461;
|
||||
'nl': value := $413;
|
||||
'no': value := $414;
|
||||
'pa': value := $446;
|
||||
'pl': value := $415;
|
||||
'pt': value := $416;
|
||||
'ro': value := $418;
|
||||
|
||||
+28
-5
@@ -192,12 +192,35 @@ const char *LookupMnemName(MNEM_TAB *table, const int value)
|
||||
} /* end of LookupMnemValue */
|
||||
|
||||
|
||||
char *print_dictionary_flags(unsigned int *flags)
|
||||
{//==============================================
|
||||
static char buf[20];
|
||||
void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)
|
||||
{//========================================================================
|
||||
int stress;
|
||||
int ix;
|
||||
const char *name;
|
||||
int len;
|
||||
int total = 0;
|
||||
|
||||
sprintf(buf,"%s 0x%x/%x",LookupMnemName(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]);
|
||||
return(buf);
|
||||
buf[0] = 0;
|
||||
if((stress = flags[0] & 0xf) != 0)
|
||||
{
|
||||
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
|
||||
total = strlen(buf);
|
||||
buf += total;
|
||||
}
|
||||
|
||||
for(ix=8; ix<64; ix++)
|
||||
{
|
||||
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
|
||||
{
|
||||
name = LookupMnemName(mnem_flags, ix);
|
||||
len = strlen(name) + 1;
|
||||
total += len;
|
||||
if(total >= buf_len)
|
||||
continue;
|
||||
sprintf(buf, " %s", name);
|
||||
buf += len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+16
-50
@@ -37,7 +37,7 @@
|
||||
int dictionary_skipwords;
|
||||
char dictionary_name[40];
|
||||
|
||||
extern char *print_dictionary_flags(unsigned int *flags);
|
||||
extern void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len);
|
||||
extern char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
|
||||
|
||||
// accented characters which indicate (in some languages) the start of a separate syllable
|
||||
@@ -770,7 +770,7 @@ static int IsLetterGroup(Translator *tr, char *word, int group, int pre)
|
||||
{
|
||||
w = word;
|
||||
}
|
||||
while(*p == *w)
|
||||
while((*p == *w) && (*w != 0))
|
||||
{
|
||||
w++;
|
||||
p++;
|
||||
@@ -2715,7 +2715,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
p += (wc_bytes-1);
|
||||
}
|
||||
|
||||
if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->language != 0) && (alphabet->offset != tr->letter_bits_offset))
|
||||
if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset))
|
||||
{
|
||||
// switch to the nominated language for this alphabet
|
||||
sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language));
|
||||
@@ -2808,8 +2808,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
|
||||
}
|
||||
}
|
||||
|
||||
// any language specific changes ?
|
||||
ApplySpecialAttribute(tr,phonemes,dict_flags0);
|
||||
memcpy(p_start,word_copy,strlen(word_copy));
|
||||
|
||||
return(0);
|
||||
@@ -2853,46 +2851,6 @@ void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags)
|
||||
} // end of ApplySpecialAttribute2
|
||||
|
||||
|
||||
void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags)
|
||||
{//=======================================================================
|
||||
// Amend the translated phonemes according to an attribute which is specific for the language.
|
||||
int len;
|
||||
char *p_end;
|
||||
|
||||
if((dict_flags & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) == 0)
|
||||
return;
|
||||
|
||||
len = strlen(phonemes);
|
||||
p_end = &phonemes[len-1];
|
||||
|
||||
switch(tr->translator_name)
|
||||
{
|
||||
#ifdef deleted
|
||||
// this is now done in de_rules
|
||||
case L('d','e'):
|
||||
if(p_end[0] == PhonemeCode2('i',':'))
|
||||
{
|
||||
// words ends in ['i:], change to [=I@]
|
||||
p_end[-1] = phonSTRESS_PREV;
|
||||
p_end[0] = PhonemeCode('I');
|
||||
p_end[1] = phonSCHWA;
|
||||
p_end[2] = 0;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case L('r','o'):
|
||||
if(p_end[0] == PhonemeCode('j'))
|
||||
{
|
||||
// word end in [j], change to ['i]
|
||||
p_end[0] = phonSTRESS_P;
|
||||
p_end[1] = PhonemeCode('i');
|
||||
p_end[2] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} // end of ApplySpecialAttribute
|
||||
|
||||
|
||||
|
||||
//=============================================================================================
|
||||
@@ -3045,6 +3003,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
const char *word1;
|
||||
int wflags = 0;
|
||||
char word_buf[N_WORD_BYTES+1];
|
||||
char dict_flags_buf[80];
|
||||
|
||||
if(wtab != NULL)
|
||||
{
|
||||
@@ -3265,6 +3224,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
if(tr->expect_verb || (tr->expect_verb_s && (end_flags & FLAG_SUFX_S)))
|
||||
{
|
||||
// OK, we are expecting a verb
|
||||
if((tr->translator_name == L('e','n')) && (tr->prev_dict_flags[0] & FLAG_ALT6_TRANS) && (end_flags & FLAG_SUFX_S))
|
||||
{
|
||||
// lang=en, don't use verb form after 'to' if the word has 's' suffix
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3294,7 +3258,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
if(dictionary_flags & FLAG_ALT2_TRANS)
|
||||
{
|
||||
// language specific
|
||||
if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags & FLAG_ALT_TRANS))
|
||||
if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags[0] & FLAG_ALT_TRANS))
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3308,7 +3272,8 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
{
|
||||
if(option_phonemes == 2)
|
||||
{
|
||||
fprintf(f_trans,"Flags: %s %s\n",word1,print_dictionary_flags(flags));
|
||||
print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf));
|
||||
fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf);
|
||||
}
|
||||
return(0); // no phoneme translation found here, only flags. So use rules
|
||||
}
|
||||
@@ -3331,19 +3296,20 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
|
||||
if(textmode == translator->langopts.textmode)
|
||||
{
|
||||
// only show this line if the word translates to phonemes, not replacement text
|
||||
if((dictionary_skipwords) && (wtab != NULL))
|
||||
if((dictionary_flags & FLAG_SKIPWORDS) && (wtab != NULL))
|
||||
{
|
||||
// matched more than one word
|
||||
// (check for wtab prevents showing RULE_SPELLING byte when speaking individual letters)
|
||||
memcpy(word_buf,word2,word_end-word2);
|
||||
word_buf[word_end-word2-1] = 0;
|
||||
fprintf(f_trans,"Found: '%s %s",word1,word_buf);
|
||||
fprintf(f_trans,"Found: '%s %s\n",word1,word_buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(f_trans,"Found: '%s",word1);
|
||||
}
|
||||
fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags));
|
||||
print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf));
|
||||
fprintf(f_trans,"' [%s] %s\n", ph_decoded,dict_flags_buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+23
-23
@@ -46,14 +46,14 @@ t_espeak_command* create_espeak_text(const void *text, size_t size, unsigned int
|
||||
{
|
||||
goto text_error;
|
||||
}
|
||||
|
||||
a_text = malloc( size );
|
||||
|
||||
a_text = malloc( size+1 );
|
||||
if (!a_text)
|
||||
{
|
||||
goto text_error;
|
||||
}
|
||||
memcpy(a_text, text, size);
|
||||
|
||||
|
||||
a_command->type = ET_TEXT;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
data = &(a_command->u.my_text);
|
||||
@@ -102,7 +102,7 @@ t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, v
|
||||
{
|
||||
goto msg_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_TERMINATED_MSG;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
data = &(a_command->u.my_terminated_msg);
|
||||
@@ -234,7 +234,7 @@ t_espeak_command* create_espeak_char(wchar_t character, void* user_data)
|
||||
{
|
||||
goto char_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_CHAR;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
a_command->u.my_char.user_data = user_data;
|
||||
@@ -270,11 +270,11 @@ t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value,
|
||||
{
|
||||
goto param_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_PARAMETER;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
data = &(a_command->u.my_param);
|
||||
data->parameter = parameter;
|
||||
data->parameter = parameter;
|
||||
data->value = value;
|
||||
data->relative = relative;
|
||||
a_error=0;
|
||||
@@ -308,7 +308,7 @@ t_espeak_command* create_espeak_punctuation_list(const wchar_t *punctlist)
|
||||
{
|
||||
goto list_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_PUNCTUATION_LIST;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
|
||||
@@ -350,7 +350,7 @@ t_espeak_command* create_espeak_voice_name(const char *name)
|
||||
{
|
||||
goto name_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_VOICE_NAME;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
a_command->u.my_voice_name = strdup( name);
|
||||
@@ -381,7 +381,7 @@ t_espeak_command* create_espeak_voice_spec(espeak_VOICE *voice)
|
||||
{
|
||||
goto spec_error;
|
||||
}
|
||||
|
||||
|
||||
a_command->type = ET_VOICE_SPEC;
|
||||
a_command->state = CS_UNDEFINED;
|
||||
{
|
||||
@@ -451,11 +451,11 @@ int delete_espeak_command( t_espeak_command* the_command)
|
||||
break;
|
||||
|
||||
case ET_TERMINATED_MSG:
|
||||
{
|
||||
{
|
||||
// if the terminated msg is pending,
|
||||
// it must be processed here for informing the calling program
|
||||
// it must be processed here for informing the calling program
|
||||
// that its message is finished.
|
||||
// This can be important for cleaning the related user data.
|
||||
// This can be important for cleaning the related user data.
|
||||
t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
|
||||
if (the_command->state == CS_PENDING)
|
||||
{
|
||||
@@ -491,7 +491,7 @@ int delete_espeak_command( t_espeak_command* the_command)
|
||||
free((void*)(the_command->u.my_voice_name));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ET_VOICE_SPEC:
|
||||
{
|
||||
espeak_VOICE* data = &(the_command->u.my_voice_spec);
|
||||
@@ -542,23 +542,23 @@ void process_espeak_command( t_espeak_command* the_command)
|
||||
case ET_TEXT:
|
||||
{
|
||||
t_espeak_text* data = &(the_command->u.my_text);
|
||||
sync_espeak_Synth( data->unique_identifier, data->text, data->size,
|
||||
data->position, data->position_type,
|
||||
data->end_position, data->flags, data->user_data);
|
||||
sync_espeak_Synth( data->unique_identifier, data->text, data->size,
|
||||
data->position, data->position_type,
|
||||
data->end_position, data->flags, data->user_data);
|
||||
}
|
||||
break;
|
||||
|
||||
case ET_MARK:
|
||||
{
|
||||
t_espeak_mark* data = &(the_command->u.my_mark);
|
||||
sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size,
|
||||
data->index_mark, data->end_position, data->flags,
|
||||
sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size,
|
||||
data->index_mark, data->end_position, data->flags,
|
||||
data->user_data);
|
||||
}
|
||||
break;
|
||||
|
||||
case ET_TERMINATED_MSG:
|
||||
{
|
||||
{
|
||||
t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
|
||||
sync_espeak_terminated_msg( data->unique_identifier, data->user_data);
|
||||
}
|
||||
@@ -654,8 +654,8 @@ void display_espeak_command( t_espeak_command* the_command)
|
||||
{
|
||||
t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
|
||||
|
||||
SHOW("display_espeak_command > (0x%x) TERMINATED_MSG uid=%d, user_data=0x%x, state=%d\n",
|
||||
the_command, data->unique_identifier, data->user_data,
|
||||
SHOW("display_espeak_command > (0x%x) TERMINATED_MSG uid=%d, user_data=0x%x, state=%d\n",
|
||||
the_command, data->unique_identifier, data->user_data,
|
||||
the_command->state);
|
||||
}
|
||||
break;
|
||||
@@ -670,7 +670,7 @@ void display_espeak_command( t_espeak_command* the_command)
|
||||
case ET_PARAMETER:
|
||||
{
|
||||
t_espeak_parameter* data = &(the_command->u.my_param);
|
||||
SHOW("display_espeak_command > (0x%x) PARAMETER=%d, value=%d, relative=%d\n",
|
||||
SHOW("display_espeak_command > (0x%x) PARAMETER=%d, value=%d, relative=%d\n",
|
||||
the_command, data->parameter, data->value, data->relative);
|
||||
}
|
||||
break;
|
||||
|
||||
+4
-22
@@ -631,25 +631,6 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
|
||||
return(0);
|
||||
}
|
||||
|
||||
#ifdef deleted
|
||||
if((ph_buf[0] == 0) && (tr->translator_name != L('e','n')))
|
||||
{
|
||||
// speak as English, check whether there is a translation for this character
|
||||
SetTranslator2("en");
|
||||
save_option_phonemes = option_phonemes;
|
||||
option_phonemes = 0;
|
||||
LookupLetter(translator2, letter, word[n_bytes], ph_buf, control & 1);
|
||||
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
|
||||
option_phonemes = save_option_phonemes;
|
||||
|
||||
if(ph_buf[0] != 0)
|
||||
{
|
||||
sprintf(phonemes,"%cen",phonSWITCH);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
alphabet = AlphabetFromChar(letter);
|
||||
if(alphabet != current_alphabet)
|
||||
{
|
||||
@@ -892,7 +873,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB
|
||||
nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL);
|
||||
}
|
||||
|
||||
if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))
|
||||
if((tr->prev_dict_flags[0] & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))
|
||||
ordinal = 0; // TEST 09.02.10
|
||||
|
||||
if(nextflags & FLAG_ALT_TRANS)
|
||||
@@ -903,7 +884,7 @@ if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG
|
||||
if(word[-2] == '-')
|
||||
ordinal = 0; // eg. december 2-5. között
|
||||
|
||||
if(tr->prev_dict_flags & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS))
|
||||
if(tr->prev_dict_flags[0] & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS))
|
||||
ordinal = 0x22;
|
||||
}
|
||||
}
|
||||
@@ -1052,7 +1033,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
|
||||
}
|
||||
}
|
||||
|
||||
tr->prev_dict_flags = 0;
|
||||
tr->prev_dict_flags[0] = 0;
|
||||
tr->prev_dict_flags[1] = 0;
|
||||
TranslateNumber(tr, &number_chars[2], p, flags, wtab, num_control);
|
||||
|
||||
if(tr->langopts.numbers & NUM_ROMAN_AFTER)
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef _ESPEAKEDIT
|
||||
#define USE_PORTAUDIO
|
||||
//#define USE_PORTAUDIO
|
||||
#define USE_ASYNC
|
||||
#define LOG_FRAMES // write keyframe info to log-espeakedit
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.46.41 03.Mar.13";
|
||||
const char *version_string = "1.46.42 06.Mar.13";
|
||||
const int version_phdata = 0x014640;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
@@ -73,25 +73,25 @@
|
||||
ALPHABET alphabets [] = {
|
||||
{"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS},
|
||||
{"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0},
|
||||
{"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), 0},
|
||||
{"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), AL_WORDS},
|
||||
{"_he", OFFSET_HEBREW, 0x590, 0x5ff, 0, 0},
|
||||
{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
|
||||
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
|
||||
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), 0},
|
||||
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
|
||||
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
|
||||
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0},
|
||||
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
|
||||
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
|
||||
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), 0},
|
||||
{"_te", OFFSET_TELUGU, 0xc00, 0xc7f, 0, 0},
|
||||
{"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), 0},
|
||||
{"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), 0},
|
||||
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS},
|
||||
{"_te", OFFSET_TELUGU, 0xc00, 0xc7f, L('t','e'), 0},
|
||||
{"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), AL_WORDS},
|
||||
{"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), AL_WORDS},
|
||||
{"_si", OFFSET_SINHALA, 0xd80, 0xdff, 0, 0},
|
||||
{"_th", OFFSET_THAI, 0xe00, 0xe7f, 0, 0},
|
||||
{"_lo", OFFSET_LAO, 0xe80, 0xeff, 0, 0},
|
||||
{"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0},
|
||||
{"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0},
|
||||
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), 0},
|
||||
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
|
||||
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0},
|
||||
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
|
||||
{NULL, 0, 0, 0, 0, 0}
|
||||
|
||||
+6
-7
@@ -1374,9 +1374,6 @@ if(end_type & SUFX_UNPRON)
|
||||
{
|
||||
// don't retranslate, use the original lookup result
|
||||
strcpy(phonemes,phonemes2);
|
||||
|
||||
// language specific changes
|
||||
ApplySpecialAttribute(tr,phonemes,dictionary_flags[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2059,7 +2056,8 @@ return(FLAG_SPELLWORD);
|
||||
pre_pause--;
|
||||
}
|
||||
tr->end_stressed_vowel = 0; // forget about the previous word
|
||||
tr->prev_dict_flags = 0;
|
||||
tr->prev_dict_flags[0] = 0;
|
||||
tr->prev_dict_flags[1] = 0;
|
||||
}
|
||||
|
||||
if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER))
|
||||
@@ -2208,7 +2206,7 @@ return(FLAG_SPELLWORD);
|
||||
{
|
||||
if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING])
|
||||
{
|
||||
if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) ||
|
||||
if(((tr->prev_dict_flags[0] & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) ||
|
||||
(tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2)))
|
||||
{
|
||||
// italian, double the initial consonant if the previous word ends with a
|
||||
@@ -2264,7 +2262,7 @@ return(FLAG_SPELLWORD);
|
||||
ph_list2[max_stress_ix].synthflags |= SFLAG_PROMOTE_STRESS;
|
||||
}
|
||||
|
||||
tr->prev_dict_flags = flags;
|
||||
tr->prev_dict_flags[0] = flags;
|
||||
return(flags);
|
||||
} // end of TranslateWord2
|
||||
|
||||
@@ -2623,7 +2621,8 @@ p = source;
|
||||
tr->expect_verb_s=0;
|
||||
tr->phonemes_repeat_count = 0;
|
||||
tr->end_stressed_vowel=0;
|
||||
tr->prev_dict_flags = 0;
|
||||
tr->prev_dict_flags[0] = 0;
|
||||
tr->prev_dict_flags[1] = 0;
|
||||
|
||||
word_count = 0;
|
||||
single_quoted = 0;
|
||||
|
||||
+7
-6
@@ -48,8 +48,11 @@
|
||||
#define FLAG_ALT_TRANS 0x8000 // language specific
|
||||
#define FLAG_ALT2_TRANS 0x10000 // language specific
|
||||
#define FLAG_ALT3_TRANS 0x20000 // language specific
|
||||
#define FLAG_COMBINE 0x40000 // combine with the next word
|
||||
#define FLAG_ALT4_TRANS 0x40000 // language specific
|
||||
#define FLAG_ALT5_TRANS 0x80000 // language specific
|
||||
#define FLAG_ALT6_TRANS 0x100000 // language specific
|
||||
|
||||
#define FLAG_COMBINE 0x800000 // combine with the next word
|
||||
#define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation)
|
||||
#define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot
|
||||
#define FLAG_WAS_UNPRONOUNCABLE 0x04000000 // the unpronounceable routine was used
|
||||
@@ -79,7 +82,7 @@
|
||||
#define FLAG_ONLY_S 0x8000
|
||||
#define FLAG_STEM 0x10000 // must have a suffix
|
||||
#define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */
|
||||
#define FLAG_ATSTART 0x30000 // use this pronunciation if at start of clause
|
||||
#define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause
|
||||
|
||||
#define BITNUM_FLAG_ALLCAPS 0x2a
|
||||
#define BITNUM_FLAG_HYPHENATED 0x2c
|
||||
@@ -272,7 +275,7 @@ extern ALPHABET *current_alphabet;
|
||||
// alphabet flags
|
||||
#define AL_DONT_NAME 0x01 // don't speak the alphabet name
|
||||
#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters
|
||||
#define AL_NOT_WORDS 0x04 // don't use the language to speak words
|
||||
#define AL_WORDS 0x04 // use the language to speak words
|
||||
|
||||
|
||||
#define N_LOPTS 21
|
||||
@@ -585,7 +588,6 @@ typedef struct
|
||||
unsigned char groups2_start[256]; // index into groups2
|
||||
const short *frequent_pairs; // list of frequent pairs of letters, for use in compressed *_list
|
||||
|
||||
|
||||
int expect_verb;
|
||||
int expect_past; // expect past tense
|
||||
int expect_verb_s;
|
||||
@@ -601,7 +603,7 @@ typedef struct
|
||||
|
||||
int prepause_timeout;
|
||||
int end_stressed_vowel; // word ends with stressed vowel
|
||||
int prev_dict_flags; // dictionary flags from previous word
|
||||
int prev_dict_flags[2]; // dictionary flags from previous word
|
||||
int clause_terminator;
|
||||
} Translator;
|
||||
|
||||
@@ -703,7 +705,6 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
|
||||
|
||||
void MakePhonemeList(Translator *tr, int post_pause, int new_sentence);
|
||||
int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch);
|
||||
void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags);
|
||||
void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags);
|
||||
void AppendPhonemes(Translator *tr, char *string, int size, const char *ph);
|
||||
|
||||
|
||||
+31
-17
@@ -554,12 +554,13 @@ voice_t *LoadVoice(const char *vname, int control)
|
||||
const char *language_type;
|
||||
char buf[200];
|
||||
char path_voices[sizeof(path_home)+12];
|
||||
char langname[4];
|
||||
|
||||
int stress_amps[8];
|
||||
int stress_lengths[8];
|
||||
int stress_add[8];
|
||||
char names[8][40];
|
||||
char name2[80];
|
||||
const char *voice_dir;
|
||||
|
||||
int pitch1;
|
||||
int pitch2;
|
||||
@@ -568,6 +569,12 @@ voice_t *LoadVoice(const char *vname, int control)
|
||||
static char voice_name[40]; // voice name for current_voice_selected
|
||||
static char voice_languages[100]; // list of languages and priorities for current_voice_selected
|
||||
|
||||
// which directory to look for a named voice
|
||||
static const char *voices_asia =
|
||||
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
|
||||
static const char *voices_europe =
|
||||
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";
|
||||
|
||||
strcpy(voicename,vname);
|
||||
if(voicename[0]==0)
|
||||
strcpy(voicename,"default");
|
||||
@@ -581,27 +588,34 @@ voice_t *LoadVoice(const char *vname, int control)
|
||||
else
|
||||
{
|
||||
sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
|
||||
sprintf(buf,"%s%s",path_voices,voicename);
|
||||
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory
|
||||
|
||||
if(GetFileLength(buf) <= 0)
|
||||
{
|
||||
// look for the voice in a sub-directory of the language name
|
||||
langname[0] = voicename[0];
|
||||
langname[1] = voicename[1];
|
||||
langname[2] = 0;
|
||||
sprintf(buf,"%s%s%c%s",path_voices,langname,PATHSEP,voicename);
|
||||
// then look in the appropriate subdirectory
|
||||
if((voicename[0]=='m') && (voicename[1]=='b'))
|
||||
{
|
||||
voice_dir = "mb"; // mbrola voices
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(name2, "%s ", voicename);
|
||||
if(strstr(voices_europe, voicename) != NULL)
|
||||
voice_dir = "europe";
|
||||
else
|
||||
if(strstr(voices_asia, voicename) != NULL)
|
||||
voice_dir = "asia";
|
||||
else
|
||||
voice_dir = "other";
|
||||
|
||||
if(GetFileLength(buf) <= 0)
|
||||
{
|
||||
// look in "extra" sub-directory
|
||||
sprintf(buf,"%sextra%c%s",path_voices,PATHSEP,voicename);
|
||||
sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);
|
||||
|
||||
if(GetFileLength(buf) <= 0)
|
||||
{
|
||||
// look in "test" sub-directory
|
||||
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
|
||||
}
|
||||
}
|
||||
if(GetFileLength(buf) <= 0)
|
||||
{
|
||||
// if not found, look in "test" sub-directory
|
||||
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1195,7 +1195,7 @@ void *wave_test_get_write_buffer()
|
||||
// notdef USE_PORTAUDIO
|
||||
|
||||
|
||||
int wave_init(int srate) {}
|
||||
int wave_init(int srate) {return 1;}
|
||||
void* wave_open(const char* the_api) {return (void *)1;}
|
||||
size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
|
||||
int wave_close(void* theHandler) {return 0;}
|
||||
|
||||
+1
-1
@@ -870,7 +870,7 @@ void *wave_test_get_write_buffer()
|
||||
// notdef USE_PULSEAUDIO
|
||||
|
||||
|
||||
int wave_init() {}
|
||||
int wave_init(return 1;) {}
|
||||
void* wave_open(const char* the_api) {return (void *)1;}
|
||||
size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
|
||||
int wave_close(void* theHandler) {return 0;}
|
||||
|
||||
+1
-1
@@ -535,7 +535,7 @@ int wave_get_remaining_time(uint32_t sample, uint32_t* time)
|
||||
#else
|
||||
// notdef USE_SADA
|
||||
|
||||
init wave_init() {}
|
||||
init wave_init() {return 1;}
|
||||
void* wave_open(const char* the_api) {return (void *)1;}
|
||||
size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
|
||||
int wave_close(void* theHandler) {return 0;}
|
||||
|
||||
Reference in New Issue
Block a user