Browse Source

[1.39.42]

Languages which use non-Latin alphabets will automatically speak a word of Latin characters as English (or another specified language) without the need for entries in its *_rules file.

synthesize.cpp, SynthOnTimer():  Ensure the sound channel is open if there items still to be spoken, to prevent sound output lock-up.

Reduce warning messages from compilers.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@211 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 16 years ago
parent
commit
7758b77459

+ 40
- 36
dictsource/dict_phonemes View File



- : ; ? b c d dZ - : ; ? b c d dZ
f g h j k l L m f g h j k l L m
n N p r s S t tS
v w x2 z Z
n N p r s S t T
tS v w x x2 z Z




Dictionary bn_dict Dictionary bn_dict
O~ o~ r- U u u: u:~ u~ O~ o~ r- U u u: u:~ u~


* b B bh c C ch d * b B bh c C ch d
d. dh g gh h j J k
kh l m n N n. n^ p
ph Q r r. s S s. t
t. t.h th tS x z
d. d.h dh g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. t.h th tS x z




Dictionary ca_dict Dictionary ca_dict
U u: u~ V U u: u~ V


- : b bh c ch d d. - : b bh c ch d d.
dh f g gh h H j J
k kh l l. m n N n.
n^ p ph Q q r r. s
S s. t T t. t.h th v
w x z
d.h dh f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q q r
r. s S s. t T t. t.h
th v w x z




Dictionary hu_dict Dictionary hu_dict
@ a aI e eI i i@ o @ a aI e eI i i@ o
u W y u W y


** b d dZ f g h j
k l m n p R R3 s
S t tS ts v x z Z
** b c d dZ dz f g
h j k k# l m n p
p# r R r" s S t t#
tS ts ts# v X z Z




Dictionary id_dict Dictionary id_dict
I i: o o: r- u u: V I i: o o: r- u u: V
y y


: b bh c ch d d. dh
dZ f g gh h j J k
kh l l. m n N n. n^
p ph R R2 s S s. S;
t t. t.h th tS v w z
: b bh c ch d d. d.h
dh dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s S
s. S; t t. t.h th tS v
w z




Dictionary ko_dict Dictionary ko_dict
I i: o o: r- u u: V I i: o o: r- u u: V
y y


: b bh c ch d d. dh
dZ f g gh h j J k
kh l l. m n N n. n^
p ph R R2 s s. S; t
t. t.h th tS v w z z.
: b bh c ch d d. d.h
dh dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s s.
S; t t. t.h th tS v w
z z.




Dictionary ne_dict Dictionary ne_dict
V~ V~


- : b bh c ch d d. - : b bh c ch d d.
dh f g gh h H j J
k kh l l. m n N n.
n^ p ph Q q r r. s
S s. t T t. t.h th v
w x z z.
d.h dh f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q q r
r. s S s. t T t. t.h
th v w x z z.




Dictionary nl_dict Dictionary nl_dict


Dictionary sq_dict Dictionary sq_dict


@ @- @/ a A aI E e
eI i I I# O OI u V
y yE
@ @/ a A aI E e eI
i I I# O OI u V y
yE


** b c d D dZ dZ; f
g h j k l L ll m
n n^ p r R R2 s S
t T tS ts v w z Z
** : ; b c d D dZ
dz dZ; f g h j k l
L ll m n n^ p r R
R2 s S t T tS ts v
w z Z




Dictionary sv_dict Dictionary sv_dict

+ 0
- 54
dictsource/el_rules View File







// If we find a Latin letter a-z, then translate as English
.group a
a _^_EN
.group b
b _^_EN
.group c
c _^_EN
.group d
d _^_EN
.group e
e _^_EN
.group f
f _^_EN
.group g
g _^_EN
.group h
h _^_EN
.group i
i _^_EN
.group j
j _^_EN
.group k
k _^_EN
.group l
l _^_EN
.group m
m _^_EN
.group n
n _^_EN
.group o
o _^_EN
.group p
p _^_EN
.group q
q _^_EN
.group r
r _^_EN
.group s
s _^_EN
.group t
t _^_EN
.group u
u _^_EN
.group v
v _^_EN
.group w
w _^_EN
.group x
x _^_EN
.group y
y _^_EN
.group z
z _^_EN

.group .group
ά 'a ά 'a
άη 'aI άη 'aI

+ 10
- 3
dictsource/en_list View File

LBS $abbrev LBS $abbrev
ltd lImI2tI2d ltd lImI2tI2d
mc m@k $alt2 // combine with the following word mc m@k $alt2 // combine with the following word
ny $abbrev
oem $abbrev oem $abbrev
ok $abbrev ok $abbrev
omg $abbrev omg $abbrev
usa $abbrev usa $abbrev
utc $abbrev utc $abbrev
u.s ju:'Es u.s ju:'Es
VI $abbrev
wwii dVb@Lju:dVb@Lju:t'u: wwii dVb@Lju:dVb@Lju:t'u:
xxx $abbrev // not roman 30 xxx $abbrev // not roman 30
xy $abbrev xy $abbrev
mr mIst3 $dot mr mIst3 $dot
mrs mIsI2z $dot mrs mIsI2z $dot
//ms mIz $dot //ms mIz $dot
dr $dot
dr d0kt3 $dot
lt $dot lt $dot
prof $dot prof $dot
rev $dot rev $dot
commend k@mEnd commend k@mEnd
comment k0mEnt comment k0mEnt
commentary k0m@ntrI commentary k0m@ntrI
commie k0mI
committee k@mItI committee k@mItI
communique k@mju:nI2keI communique k@mju:nI2keI
community k@mju:nI2tI community k@mju:nI2tI
neon ni:0n neon ni:0n
nepenthe nI2pEnTI nepenthe nI2pEnTI
nescience nEsI@ns nescience nEsI@ns
nicety naIs@tI
niche ni:S niche ni:S
noah noUV noah noUV
nobly noUblI $verbf nobly noUblI $verbf
sibelius sI2beIli@s sibelius sI2beIli@s
sierra sI'e@r@ sierra sI'e@r@
signage saInI2dZ signage saInI2dZ
signer saIn3
sikh si:k sikh si:k
silhouette sI2lUw'Et silhouette sI2lUw'Et
silo saIloU silo saIloU
standby standbaI standby standbaI
stagnate $2 stagnate $2
stampede $2 stampede $2
stiletto stI2lEtoU
strychnine str'Ikni:n strychnine str'Ikni:n
sterile stEraIl sterile stEraIl
stomata stoUm@t@ stomata stoUm@t@
(might have) maItha2v $pastf $u1+ (might have) maItha2v $pastf $u1+
(might have to) ,maIth'avt@5 $verbf $atend (might have to) ,maIth'avt@5 $verbf $atend


have %hav $pastf $only
have %hav $pastf $only $strend2
haves havz haves havz
(have been) %hav%bIn $pastf (have been) %hav%bIn $pastf
(have to) havtU $atend
has %ha2z $pastf $only has %ha2z $pastf $only
has haz $only $atend has haz $only $atend
(has been) %haz%bIn $pastf (has been) %haz%bIn $pastf
these %Di:z $nounf $strend2 $only these %Di:z $nounf $strend2 $only
those %DoUz $nounf $strend2 $only those %DoUz $nounf $strend2 $only
there %De@ $strend2 $only there %De@ $strend2 $only
(there be) De@b'i:


than %Dan $only than %Dan $only
(than a) ,Dan@ $nounf (than a) ,Dan@ $nounf
?3 commentary k0m@ntErI ?3 commentary k0m@ntErI
?3 current k'3@nt ?3 current k'3@nt
?3 depot di:poU ?3 depot di:poU
?3 detail $2
?3 dialog daI@lO:g ?3 dialog daI@lO:g
?3 envelope A:nv@loUp ?3 envelope A:nv@loUp
?3 err e@ ?3 err e@

+ 5
- 3
dictsource/en_rules View File

h) ar (ass @r h) ar (ass @r
&m) aran @ran &m) aran @ran
sep) ar (at 3r sep) ar (at 3r
w) ar (e e@
w) are e@
k) ar (y ar k) ar (y ar
c) arbo (h ,A@boU c) arbo (h ,A@boU
_) arch (@P4 ,A@tS // prefix _) arch (@P4 ,A@tS // prefix
_) ash aS _) ash aS
_) ash (a a2S _) ash (a a2S
_) ash (o a2S _) ash (o a2S
_) as (in as
_) asia eIS@ _) asia eIS@
?3 _) asia eIZ@ ?3 _) asia eIZ@
as (k aas as (k aas
al) av (er 'A:v al) av (er 'A:v
sc) av (en av sc) av (en av
aver (s av'3: aver (s av'3:
_) avi (a eIvI
_) avi (A eIvI
l) av (i av l) av (i av
sl) av (i A:v sl) av (i A:v
r) av (el av r) av (el av
d) ig (nA Ig d) ig (nA Ig
_) ig (ni %Ig _) ig (ni %Ig
ig (no %Ig ig (no %Ig
s) ign (o %Inj
ig (nom Ig ig (nom Ig
ig (noran Ig ig (noran Ig
ig (na Ig ig (na Ig
_) o (per 0 _) o (per 0
_) ope (n oUp@ _) ope (n oUp@
un) ope (n oUp@ un) ope (n oUp@
@) opol '0p@L
@) opol (i '0p@L
opolitan @p'0lIt@n opolitan @p'0lIt@n
oppor (tu %0p3 oppor (tu %0p3
opp (res @p opp (res @p

+ 1
- 51
dictsource/hi_rules View File





// If we find a Latin letter a-z, then translate as English // If we find a Latin letter a-z, then translate as English
// (This is now done automatically by the eSpeak program)


.group a
a _^_EN
.group b
b _^_EN
.group c
c _^_EN
.group d
d _^_EN
.group e
e _^_EN
.group f
f _^_EN
.group g
g _^_EN
.group h
h _^_EN
.group i
i _^_EN
.group j
j _^_EN
.group k
k _^_EN
.group l
l _^_EN
.group m
m _^_EN
.group n
n _^_EN
.group o .group o
o _^_EN
D__) of (__D    me D__) of (__D    me


.group p
p _^_EN
.group q
q _^_EN
.group r
r _^_EN
.group s
s _^_EN
.group t
t _^_EN
.group u
u _^_EN
.group v
v _^_EN
.group w
w _^_EN
.group x
x _^_EN
.group y
y _^_EN
.group z
z _^_EN







+ 91
- 49
dictsource/it_list View File

_dia djeR'e:zI _dia djeR'e:zI
_dot p'unto||s,ov@-*ask@-*'it:o _dot p'unto||s,ov@-*ask@-*'it:o
_grv g@-*'a:ve _grv g@-*'a:ve
//_grv atS:'entog@-*'a:ve
_hac h'atSek _hac h'atSek
_mcn m'ak@-*on _mcn m'ak@-*on
_ogo og'o:nek _ogo og'o:nek
_tld t'ilde _tld t'ilde




_! p'untoesklamat'ivo
_" viRgolet:e
_# kantSellet:o
_$ dolla:Ro
_% peRtS'ento
_& _!e:
_' ap'OstRofo
_( ap'eRtapaR'entezi
_) kj,uzapaR'entezi
_* asteRisko
_+ pju
_, v'iRgola
_- t@-*at:ino
_. punto
_/ slaS
_: d,uep'unte
_; p'untoev'iRgola
_< ap'eRta'angolo
_= ugwale
_> kj,uza'angolo
_? p'untointeRogat'ivo
_@ ki'otS:ola
_[ ap'eRtakw2'ad@-*a
_\ bakslaS
_] kj,uzakw2'ad@-*a
_^ kap:utS:o
__ 'undeRskoRe
_` bakp@-*aIm
_{ ap'eRtag@-*'af:a
_| b'aRa
_} kj,uzag@-*'af:a
_~ tilde
* asteRisko $max3
% pe@-*tS'ento $max3
. punto $max3
= ugwale $max3
+ pju $max3
/ slaS $max3
\ bakslaS $max3
₤ lira
£ sterl'ina
& _e
@ ki'otS:ola
© k'opiraIt
# kantSellet:o
@ ki'otS:ola
~ tilde
: d,uep'unti

_! p,untoesklamat'ivo
_" viRgolet:e
_' ap'OstRofo
_( ap,eRtapaR'entezi
_) kj,uzapaR'entezi
_, v'iRgola
_- t@-*at:ino
_; p,untoev'iRgola
_< ap,eRta'angolo
_> kj,uza'angolo
_? p,untointeRogat'ivo
_[ ap'eRtakw2'ad@-*a
_] kj,uzakw2'ad@-*a
_^ kap:utS:o
__ 'undeRskoRe
_` bakp@-*aIm
_{ ap,eRtag@-*'af:a
_} kj,uzag@-*'af:a










// foreign words // foreign words
chat tSat
chat _^_EN
cliché kli:Se cliché kli:Se
internet 'internet
internet _^_EN
jeans dZi:nz jeans dZi:nz
web wEb web wEb
accelerator _^_EN
ace _^_EN
aces _^_EN




// exceptions // exceptions
aereo $2
difficile $2
pneumatici $3
nott nOt: $stem
tavol $1 $stem
vent vEnt $stem
celsius tsElsj'us
conoscerla $2
no nO
posta pOsta
aereo $2
difficile $2
pneumatici $3
nott nOt: $stem
tavol $1 $stem
vent vEnt $stem
celsius tsElsj'us
conoscerla $2
no nO
posta pOsta
principi $1 principi $1
tesser tess'ER
uomini $1
tesser tess'ER
uomini $1


// $alt = use ò or è in the stressed syllable
// If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o'
$textmode

abbandonatel $4
abbazie abbazìe
abbinano $2
abbinini $2
abbisognino $3
abituarcisi $2
accalcano $2
accalchino $2
accantonal $3
accatastano $3
accatastino $3
accavallio $4
accenditi $2
accertano $2 $alt
accertino $2 $alt
acclamano $2
acclamino $2
accolit $2 $alt
accomunano $3
accomunino $3
accorpano $2 $alt
accorpino $2 $alt
accostarcisi $3
accovacciano $3
accovaccino $3
acefala $2
acer accer // acer/i/o
acid accid // acida/e
acidul $1



+ 16
- 19
dictsource/it_rules View File



// letter groups // letter groups
// A any vowel // A any vowel
// C any consonant
// K not a vowel (i.e. consonant or end-of-word)
// Y front vowels: e i (& accents) // Y front vowels: e i (& accents)
.L01 a à o ò ó u ù .L01 a à o ò ó u ù


.group e .group e
e e: e e:
e (CK e e (CK e
e (T E: // The word has $alt in it_list
e (CKT E // $alt
ei ej (K ei ej (K


e (r E: // ?? [E] before 'r'
e (rK E
e (rsi_N e

&) e (_S1q e // lookup it_list without suffix &) e (_S1q e // lookup it_list without suffix
// @) e (ce_ =e // @) e (ce_ =e
@) e (ci_ =e @) e (ci_ =e
.group o .group o
o o: o o:
o (CK o o (CK o
o (T O: // $alt
o (CKT O // $alt
oi oI (K oi oI (K


o (r O: // ?? [O] before 'r'
o (rK O
o (re_ o

&) o (_S1q o // lookup it_list without suffix &) o (_S1q o // lookup it_list without suffix


@) o (ista_ o @) o (ista_ o
sch (Y sk sch (Y sk
sh (K S // foreign words sh (K S // foreign words
K) sh S // foreign words K) sh S // foreign words
@) sia s'ia
@) sia s'ia
@) s (_S1 s
.group t .group t
t t t t
ù 'u: ù 'u:
ù (CK 'u ù (CK 'u


% pertS'ento
$ dolla:ro $ dolla:ro
₤ lira
£ sterl'ina
& _!e
@ ki'otS:ola
© k'opiraIt
+ pju
. punto
, (D v'irgola , (D v'irgola
: d,uep'unti
; p'untoev'irgola
! _p'untoesklamat'ivo_ ! _p'untoesklamat'ivo_
!) ! !) !
? _p'untointeRogat'ivo_ ? _p'untointeRogat'ivo_
?) ? ?) ?
\\ kont@-*ob'aR*a
/ b'aR*a


__) - (_D meno __) - (_D meno
A_) - (_D _ A_) - (_D _
C_) - (_D _ C_) - (_D _
--) -
− meno


* asterisko
*) * (*
**
**) * (_ _::

+ 1
- 52
dictsource/ru_rules View File

ё 8 ё 8


// If we find a Latin letter a-z, then translate as English // If we find a Latin letter a-z, then translate as English
.group a
a _^_EN
.group b
b _^_EN
.group c
c _^_EN
.group d
d _^_EN
.group e
e _^_EN
.group f
f _^_EN
.group g
g _^_EN
.group h
h _^_EN
.group i
i _^_EN
.group j
j _^_EN
.group k
k _^_EN
.group l
l _^_EN
.group m
m _^_EN
.group n
n _^_EN
.group o
o _^_EN
.group p
p _^_EN
.group q
q _^_EN
.group r
r _^_EN
.group s
s _^_EN
.group t
t _^_EN
.group u
u _^_EN
.group v
v _^_EN
.group w
w _^_EN
.group x
x _^_EN
.group y
y _^_EN
.group z
z _^_EN
// (This is now done automatically by the eSpeak program)


.group .group
$ dolar $ dolar

+ 0
- 26
dictsource/ta_rules View File

.group .group
் // virama ் // virama
$ dolV $ dolV
a _^_EN
b _^_EN
c _^_EN
d _^_EN
e _^_EN
f _^_EN
g _^_EN
h _^_EN
i _^_EN
j _^_EN
k _^_EN
l _^_EN
m _^_EN
n _^_EN
o _^_EN
p _^_EN
q _^_EN
r _^_EN
s _^_EN
t _^_EN
u _^_EN
v _^_EN
w _^_EN
x _^_EN
y _^_EN
z _^_EN

+ 58
- 42
phsource/compile_report View File

fi 40 134 fi 40 134
fr 54 140 fr 54 140
fr_ca 11 140 fr_ca 11 140
hi 59 148
ta 17 151
hi 60 149
ta 17 152
hu 23 119 hu 23 119
lv 29 126 lv 29 126
nl 28 126 nl 28 126
ku 18 127 ku 18 127
id 15 124 id 15 124
rw 15 129 rw 15 129
ko 18 158
ko 18 159
da 15 133 da 15 133
sq 35 130
ml 13 150
kn 15 150
bn 59 153
ne 18 156
hy 16 116
sq 35 127
ml 13 151
kn 15 151
bn 59 155
ne 18 157
hy 24 119
om 25 125 om 25 125
en_klatt 77 149 en_klatt 77 149
ga 18 117 ga 18 117
mr 1 148
mr 1 149


Data file Used by Data file Used by
b/b [b] base b/b [b] base
[d] hi [d] hi
[d.] hi [d.] hi
[dh] hi [dh] hi
[d.h] hi
[d] hu [d] hu
[d] pl [d] pl
[d] hr [d] hr
[d] sw [d] sw
[d] id [d] id
[d] sq [d] sq
[dz] sq
[d] bn [d] bn
[d.] bn [d.] bn
[dz] hy
[d[] ga [d[] ga
d/xd2 [d`] om d/xd2 [d`] om
d/xd3 [dh] hi d/xd3 [dh] hi
[dZ] sr [dZ] sr
[dZ;] sr [dZ;] sr
[dZ;] ru [dZ;] ru
[dZ;] sq
[J] bn [J] bn
dzh/dzh_ [dZ] base dzh/dzh_ [dZ] base
[dZ;] base [dZ;] base
[dZ;] hr [dZ;] hr
[dZ;] mk [dZ;] mk
[dZ;] ru [dZ;] ru
[dZ;] sq
[J] bn [J] bn
dzh/dzh2 [dZ] hr dzh/dzh2 [dZ] hr
[dZ;] hr [dZ;] hr
dzh/dz_pzd [J] base dzh/dz_pzd [J] base
[J2] hi
[J] tr [J] tr
[J] ku [J] ku
[J2] bn [J2] bn
dzh/dz_pzd_ [J] base dzh/dz_pzd_ [J] base
[J2] hi
[J2] bn [J2] bn
dzh/xdzh [dZ] base dzh/xdzh [dZ] base
[dZ;] base [dZ;] base
[dZ;] hr [dZ;] hr
[dZ;] mk [dZ;] mk
[dZ;] ru [dZ;] ru
[dZ;] sq
[J] bn [J] bn
dzh/xdz_pzd [J] base dzh/xdz_pzd [J] base
[J2] hi
[Jh] hi
[J2] bn [J2] bn
envelope/i_risefall [11] zh envelope/i_risefall [11] zh
envelope/i_risefall2 [+2] rw envelope/i_risefall2 [+2] rw
[l] fr [l] fr
[l] la [l] la
[l;] ro [l;] ro
[L] sq
l/lo [(o)] base l/lo [(o)] base
[O] fr [O] fr
[o] fr [o] fr
[l] ca [l] ca
[l] pt [l] pt
[l;] ro [l;] ro
[L] sq
l/xl [(@)] base l/xl [(@)] base
[(a)] base [(a)] base
[(e)] base [(e)] base
[s] es [s] es
[s#] pt [s#] pt
[s`] ko [s`] ko
[z] sq
[s] en_klatt [s] en_klatt
ufric/s_ [s] base ufric/s_ [s] base
[z] base [z] base
[s#] pt [s#] pt
[z;] ro [z;] ro
[s2] is [s2] is
[z] sq
[s2] om [s2] om
[s] en_klatt [s] en_klatt
[z] en_klatt [z] en_klatt
[k`] ko [k`] ko
[k] sq [k] sq
[k] bn [k] bn
[k] hy
ustop/k_unasp_ [k] zh ustop/k_unasp_ [k] zh
ustop/null [?] base ustop/null [?] base
ustop/p [p] base ustop/p [p] base
[ph] hi [ph] hi
[ph] zh [ph] zh
[ph] bn [ph] bn
[ph] hy
[p#] hy
ustop/p_asp [bh] hi ustop/p_asp [bh] hi
[ph] hi [ph] hi
[ph] hy
[p#] hy
ustop/p_ejc [p`] om ustop/p_ejc [p`] om
ustop/percus10 [(X1] base ustop/percus10 [(X1] base
ustop/pl [p] base ustop/pl [p] base
[p] sq [p] sq
[p] bn [p] bn
[ph] bn [ph] bn
[ph] hy
[p] hy
[p#] hy
ustop/pr [p] base ustop/pr [p] base
[p] base2 [p] base2
[p] fi [p] fi
[p;] ro [p;] ro
[p] bn [p] bn
[ph] bn [ph] bn
[ph] hy
[p] hy
[p#] hy
ustop/p_unasp [p] base ustop/p_unasp [p] base
[p] base2 [p] base2
[p] fi [p] fi
[p`] ko [p`] ko
[p] sq [p] sq
[p] bn [p] bn
[p] hy
ustop/p_unasp_ [p] base2 ustop/p_unasp_ [p] base2
[p] fi [p] fi
[p] hi [p] hi
[p;] ro [p;] ro
[p] sq [p] sq
[p] bn [p] bn
[p] hy
ustop/q [q] base ustop/q [q] base
ustop/q_u [q] base ustop/q_u [q] base
ustop/t [t] base ustop/t [t] base
[t2] en [t2] en
[d.h] hi
[t.h] hi [t.h] hi
[t] zhy [t] zhy
[t.h] bn [t.h] bn
[t2] fr [t2] fr
[t3] fr [t3] fr
[t.] hi [t.] hi
[t.h] hi
[t] lv [t] lv
[t] sk [t] sk
[t] el [t] el
[th] zh [th] zh
[t3] sq
[t.] bn [t.] bn
[t.h] bn [t.h] bn
ustop/t_dnt [t] base ustop/t_dnt [t] base
[t[] vi [t[] vi
[t] sw [t] sw
[t`] ko [t`] ko
[t5] sq
[t] sq
[t] bn [t] bn
[t] hy
[t[] ga [t[] ga
ustop/t_dnt2 [t[] vi ustop/t_dnt2 [t[] vi
ustop/t_ejc [t`] om ustop/t_ejc [t`] om
ustop/t_hard [t2] sq
ustop/t_hard_ [t2] sq
ustop/t_hi [t] hi ustop/t_hi [t] hi
[t5] sq
[t] sq
[t] bn [t] bn
[th] bn [th] bn
[t] hy
ustop/t_pzd [t;] pl ustop/t_pzd [t;] pl
[t;] ru [t;] ru
ustop/tr [t] base ustop/tr [t] base
[t[] base [t[] base
[t2] en [t2] en
[t.h] hi
[t] ru [t] ru
[t.h] bn [t.h] bn
ustop/ts [ts] base2 ustop/ts [ts] base2
[z] zhy [z] zhy
[tsh] zh [tsh] zh
[ts] sq [ts] sq
[ts] hy
[dz] sq
[dz] hy
[ts#] hy
ustop/ts_ [ts] base2 ustop/ts_ [ts] base2
[ts] de [ts] de
[ts] eo [ts] eo
[ts] ru [ts] ru
[ts;] ro [ts;] ro
[ts] sq [ts] sq
[ts] hy
[dz] sq
[dz] hy
[ts#] hy
ustop/ts2 [ts] lv ustop/ts2 [ts] lv
[ts] hy
ustop/tsh [tS] base ustop/tsh [tS] base
[c] zhy [c] zhy
ustop/tsh_ [tS] base ustop/tsh_ [tS] base
[t] lv [t] lv
[t] sk [t] sk
[t] el [t] el
[t3] sq
[t.] bn [t.] bn
ustop/tsh_pzd [tS;] zh ustop/tsh_pzd [tS;] zh
ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_pzd_unasp [tS;] zh
ustop/tsh_sr [tS] sr ustop/tsh_sr [tS] sr
ustop/ts_pzd [tS;] base ustop/ts_pzd [tS;] base
[ts;] base [ts;] base
[Jh] hi
[ch] hi [ch] hi
[tS;] ru [tS;] ru
[c] sq [c] sq
[dZ;] sq
[ch] bn [ch] bn
ustop/ts_pzd_ [c] hi ustop/ts_pzd_ [c] hi
[c] hu [c] hu
[c] bn [c] bn
[c] hy
ustop/ts_pzd2 [c] hi ustop/ts_pzd2 [c] hi
[c] hu [c] hu
[c`] ko [c`] ko
[c] bn [c] bn
[c] hy
ustop/ts_pzd3 [tS;] hr ustop/ts_pzd3 [tS;] hr
[dZ;] hr [dZ;] hr
ustop/t_sr [d] sr ustop/t_sr [d] sr
[t] sr [t] sr
[t4] sq
ustop/ts_rfx [ts.] zh ustop/ts_rfx [ts.] zh
ustop/ts_rfx_unasp [ts.] zh ustop/ts_rfx_unasp [ts.] zh
ustop/ts_sr [tS;] sr ustop/ts_sr [tS;] sr
[z2] fr [z2] fr
[z3] fr [z3] fr
[z;] ro [z;] ro
[z] sq
voc/z_ [z] base voc/z_ [z] base
[z] fr [z] fr
[z2] fr [z2] fr
[z3] fr [z3] fr
[z;] ro [z;] ro
[z] sq
voc/zh [Z] base voc/zh [Z] base
[z.] base [z.] base
[R^] sk [R^] sk
[8] sv [8] sv
vowel/8_3 [eo] zhy vowel/8_3 [eo] zhy
vowel/8_5 [8] ku vowel/8_5 [8] ku
vowel/8_6 [V] sq
vowel/8_7 [@] lv vowel/8_7 [@] lv
vowel/a [a] en vowel/a [a] en
[aa] en [aa] en
[a/] en_sc [a/] en_sc
[A:] en_sc [A:] en_sc
[aa] en_sc [aa] en_sc
[a] lv
[a:] lv
[a:] cs [a:] cs
[a:] la [a:] la
[a] is [a] is
[a:] vi [a:] vi
vowel/aa [a] fi vowel/aa [a] fi
[A] fr_ca [A] fr_ca
[a] lv
[a:] lv
[A] no [A] no
[A:] no [A:] no
[aa] zhy [aa] zhy
[E] fr_ca [E] fr_ca
[E] hi [E] hi
[E] hu [E] hu
[e] lv
[e:] lv
[E] pl [E] pl
[e:] sk [e:] sk
[e] cs [e] cs
[E:] de [E:] de
[e] jbo [e] jbo
[e] fi [e] fi
[e] lv
[e:] lv
[E] nl [E] nl
[e] sk [e] sk
[e] es [e] es
[U] fr [U] fr
[u] ta [u] ta
[u:] ta [u:] ta
[u] lv
[u:] lv
[u:] cs [u:] cs
[U] la [U] la
[u] id [u] id
[U:] ta [U:] ta
vowel/u#_4 [U] en_sc vowel/u#_4 [U] en_sc
[u:] en_sc [u:] en_sc
vowel/u_5 [u] lv
[u:] lv
[u] sw
vowel/u_5 [u] sw
vowel/u#_5 [y] vi vowel/u#_5 [y] vi
vowel/u_6 [U] pt_pt vowel/u_6 [U] pt_pt
[u] pt_pt [u] pt_pt
[u:] ga [u:] ga
vowel/u_bck2 [u:] la vowel/u_bck2 [u:] la
[u] sq [u] sq
vowel/u_fnt [u:] en
[u:] en_rp
vowel/u_fnt [u:] en_rp
vowel/uu [U] en vowel/uu [U] en
[U] en_n [U] en_n
[U] en_wm [U] en_wm
[aa] en_rp [aa] en_rp
vwl_en_rp/aU@ [aU@] en_rp vwl_en_rp/aU@ [aU@] en_rp
vwl_en_rp/i@ [i@] en_rp vwl_en_rp/i@ [i@] en_rp
vwl_en/u_L [u:] en
vwl_en_us/3_us [3] en_us vwl_en_us/3_us [3] en_us
vwl_en_us/3_us2 [3:] en_us vwl_en_us/3_us2 [3:] en_us
vwl_en_us/a [a] en_us vwl_en_us/a [a] en_us
[t#] en_us [t#] en_us
[d] fr [d] fr
[d.] hi [d.] hi
[d.h] hi
[d] hr [d] hr
[d] el [d] el
[d] is [d] is
[d;] ru [d;] ru
x/dzh [J] base x/dzh [J] base
[dZ] base [dZ] base
[J2] hi
[J2] bn [J2] bn
[dZ] en_klatt [dZ] en_klatt
x/dzh_ [dZ] base x/dzh_ [dZ] base
[dZ;] mk [dZ;] mk
[dZ;] ru [dZ;] ru
[J] bn [J] bn
x/dz_pzd_ [J2] hi
[J2] bn
x/dz_pzd_ [J2] bn
x/g_ [g] base x/g_ [g] base
[g] cy [g] cy
[g] fr [g] fr

BIN
phsource/d/xd View File


BIN
phsource/l^/j2u View File


+ 2
- 1
phsource/ph_english View File

vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 210 length 210
formants vdiph2/uw_2 formants vdiph2/uw_2
before l/2 vowel/u_fnt-40+l/L2_uL
// before l/2 vowel/u_fnt-40+l/L2_uL
before l/2 vwl_en/u_L-40+l/L2_uL
endphoneme endphoneme





+ 3
- 0
phsource/ph_french View File

formants vowel/o_3 formants vowel/o_3
after l l/lo-10 after l l/lo-10
before (r) DFT+r/xr before (r) DFT+r/xr
reduceto o2 1
endphoneme endphoneme






phoneme l phoneme l
liquid liquid
vowelout f1=1 f2=1600 -300 300 f3=100 80 brk
length 100 length 100
lengthmod 7 lengthmod 7
beforenotvowel l/ beforenotvowel l/








+ 23
- 37
phsource/ph_hindi View File

vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20
lengthmod 5 lengthmod 5
formants d/xd3+ustop/t_dnt%40 formants d/xd3+ustop/t_dnt%40
before _ ustop/t_dnt%35
after @ d/xd after @ d/xd
switchvoicing th switchvoicing th
endphoneme endphoneme
lengthmod 2 lengthmod 2
wave ustop/t_short wave ustop/t_short
before _ ustop/t_ before _ ustop/t_
switchvoicing d
switchvoicing d.
endphoneme endphoneme


phoneme t.h phoneme t.h
vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
lengthmod 2 lengthmod 2
wave ustop/t wave ustop/t
before _ ustop/t_
before r ustop/tr
switchvoicing d
// wave ustop/th_rfx
switchvoicing d.h
endphoneme endphoneme


phoneme d. phoneme d.
after _ NULL after _ NULL
after @ d/xd after @ d/xd
lengthmod 5 lengthmod 5
switchvoicing t
switchvoicing t.
endphoneme

phoneme d.h
vcd rfx stop
vowelin f1=1 f2=1800 -300 300 f3=-400 80
vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2
formants d/xd+x/d+ustop/t
// formants d/xd+x/d+ustop/th_rfx
after @ d/xd
lengthmod 5
switchvoicing t.h
endphoneme endphoneme


//phoneme d.h // use [d.]+[h]
// vcd rfx stop
// vowelin f1=1 f2=1800 -300 300 f3=-400 80
// vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2
// formants d/d+x/d
// before _ d/d_+x/d_
// before r d/dr+x/d
// after _ NULL
// after @ d/xd
// lengthmod 5
// switchvoicing t
//endphoneme






switchvoicing c switchvoicing c
endphoneme endphoneme


phoneme J2 // TEST
vcd pla afr sibilant
vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1
formants dzh/dz_pzd+x/dzh%40
before _ dzh/dz_pzd_+x/dz_pzd_%70
after _ NULL
after @ dzh/xdz_pzd

phoneme Jh
vcd pal afr sibilant
vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1
lengthmod 5 lengthmod 5
switchvoicing c
formants dzh/xdz_pzd+ustop/ts_pzd
after @ dzh/xdz_pzd
switchvoicing ch
endphoneme endphoneme






//phoneme xJh // use [J]+[h]
// vcd pla afr sibilant
// vowelin f1=1 f2=2700 400 600 f3=300 80 rate len=70
// formants dzh/dzh+x/dz_pzd
// before _ dzh/dzh_+x/dzh_
// after _ NULL @ dzh/xdzh
// lengthmod 5
// switchvoicing ts;
//endphoneme





// velar plosives // velar plosives

+ 2
- 2
phsource/ph_italian View File

vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 170 length 170
formants vowel/e_mid formants vowel/e_mid
// reduceto e/ 3 // [E] only in stressed syllables ?
reduceto e/ 3 // [E] only in stressed syllables ?
endphoneme endphoneme




vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 170 length 170
formants vowel/oo_4 formants vowel/oo_4
// reduceto o/ 3 // [O] only in stressed syllables ?
reduceto o/ 3 // [O] only in stressed syllables ?
endphoneme endphoneme





+ 6
- 6
phsource/ph_latvian View File

phoneme e phoneme e
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 120 length 120
formants vowel/e_mid2
formants vowel/e_mid
endphoneme endphoneme


phoneme e: phoneme e:
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 330 length 330
formants vowel/e_mid2
formants vowel/e_mid
endphoneme endphoneme




phoneme a phoneme a
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
length 120 length 120
formants vowel/aa
formants vowel/a_3
reduceto a# 0 reduceto a# 0
endphoneme endphoneme


phoneme a: phoneme a:
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
length 350 length 350
formants vowel/aa
formants vowel/a_3
endphoneme endphoneme


phoneme a# phoneme a#
phoneme u phoneme u
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 110 length 110
formants vowel/u_5
formants vowel/u
endphoneme endphoneme


phoneme u: phoneme u:
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 330 length 330
formants vowel/u_5
formants vowel/u
endphoneme endphoneme





+ 1
- 1
phsource/phonemes View File

include ph_nepali include ph_nepali


phonemetable hy base phonemetable hy base
include ph_armenian_west
include ph_armenian


phonemetable om base phonemetable om base
include ph_oromo include ph_oromo

BIN
phsource/vdiph2/uaa View File


BIN
phsource/voc/z View File


BIN
phsource/vowel/i_7 View File


BIN
phsource/vowel/oo_en View File


BIN
phsource/vowel/u_bck2 View File


BIN
phsource/vwl_en/u_L View File


+ 22
- 23
src/compiledata.cpp View File



static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING}; static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING};


extern void Write4Bytes(FILE *f, int value);
extern int Read4Bytes(FILE *f);
extern void MakeVowelLists(void); extern void MakeVowelLists(void);
extern void FindPhonemesUsed(void); extern void FindPhonemesUsed(void);
extern void DrawEnvelopes(); extern void DrawEnvelopes();
extern int LoadEnvelope2(FILE *f, const char *fname); extern int LoadEnvelope2(FILE *f, const char *fname);
extern int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname, int flags);


static int markers_used[8]; static int markers_used[8];


int n_envelopes = 0; int n_envelopes = 0;
char envelope_paths[N_ENVELOPES][80]; char envelope_paths[N_ENVELOPES][80];
unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; unsigned char envelope_dat[N_ENVELOPES][ENV_LEN];
FILE *f_phdata;
static FILE *f_phdata;






} }




int Hash8(const char *string)
//===========================
static int Hash8(const char *string)
//==================================
/* Generate a hash code from the specified string */ /* Generate a hash code from the specified string */
{ {
int c; int c;
int resample_wav = 0; int resample_wav = 0;
char fname_temp[100]; char fname_temp[100];
int scale_factor=0; int scale_factor=0;
int fd_temp;
char command[sizeof(path_source)+200];


fseek(f,24,SEEK_SET); fseek(f,24,SEEK_SET);
sr1 = Read4Bytes(f); sr1 = Read4Bytes(f);
Error("Not mono: ",fname); Error("Not mono: ",fname);
} }
#else #else
strcpy(fname_temp,"/tmp/espeakXXXXXX");
if((fd_temp = mkstemp(fname_temp)) >= 0)
{ {
close(fd_temp);
sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp);
if(system(command) < 0)
int fd_temp;
char command[sizeof(path_source)+200];
strcpy(fname_temp,"/tmp/espeakXXXXXX");
if((fd_temp = mkstemp(fname_temp)) >= 0)
{ {
Error("Failed to resample: ",command);
close(fd_temp);
sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp);
if(system(command) < 0)
{
Error("Failed to resample: ",command);
return(0);
}
}
f = fopen(fname_temp,"rb");
if(f == NULL)
{
Error("Can't read temp file: ",fname_temp);
return(0); return(0);
} }
resample_wav = 1;
fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length"
} }

f = fopen(fname_temp,"rb");
if(f == NULL)
{
Error("Can't read temp file: ",fname_temp);
return(0);
}
resample_wav = 1;
fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length"
#endif #endif
} }



+ 19
- 1
src/dictionary.cpp View File

return(Unpronouncable_en(tr,word)); return(Unpronouncable_en(tr,word));
} }


utf8_in(&c,word);
if((tr->letter_bits_offset > 0) && (c < 0x241))
{
// Latin characters for a language with a non-latin alphabet
return(0); // so we can re-translate the word as English
}

if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1)
return(0); return(0);




if((match1.points == 0) && ((option_sayas & 0x10) == 0)) if((match1.points == 0) && ((option_sayas & 0x10) == 0))
{ {
// no match, try removing the accent and re-translating the word
n = utf8_in(&letter,p-1)-1; n = utf8_in(&letter,p-1)-1;

if(tr->letter_bits_offset > 0)
{
// not a Latin alphabet, switch to the default Latin alphabet language
if((letter <= 0x241) && iswalpha(letter))
{
sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language);
return(0);
}
}

// no match, try removing the accent and re-translating the word
if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0)) if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0))
{ {
// within range of the remove_accent table // within range of the remove_accent table

+ 1
- 1
src/espeakedit.cpp View File



MyChild::~MyChild(void) MyChild::~MyChild(void)
{ {
wxWindow *w;
canvas = NULL; canvas = NULL;
#ifndef PLATFORM_WINDOWS #ifndef PLATFORM_WINDOWS
wxWindow *w;
// bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow // bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow
w = myframe->GetClientWindow(); w = myframe->GetClientWindow();
w->RemoveChild(this); w->RemoveChild(this);

+ 4
- 3
src/extras.cpp View File

char fname[sizeof(path_dsource)+20]; char fname[sizeof(path_dsource)+20];


// KOI8-R codes for Russian vowels // KOI8-R codes for Russian vowels
static char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0};
static unsigned char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0};


typedef struct { typedef struct {
const char *suffix; const char *suffix;
ru_stress = vcount; ru_stress = vcount;
break; break;
} }
if(strchr(vowels,c) != NULL)
if(strchr((char *)vowels,c) != NULL)
{ {
vcount++; vcount++;
} }




const char* text1 = "Hello world. Testing."; const char* text1 = "Hello world. Testing.";
extern void TestCompile2(void);


void TestTest(int control) void TestTest(int control)
{//======================= {//=======================
//CharsetToUnicode("ISO-8859-4"); //CharsetToUnicode("ISO-8859-4");
//CharsetToUnicode("ISCII"); //CharsetToUnicode("ISCII");


TestCompile2();
return; return;


if(control==2) if(control==2)

+ 4
- 3
src/readclause.cpp View File

int length; int length;
char fname_temp[100]; char fname_temp[100];
char fname2[sizeof(path_home)+13+40]; char fname2[sizeof(path_home)+13+40];
char command[sizeof(fname2)+sizeof(fname2)+40];


if(fname == NULL) if(fname == NULL)
{ {
int fd_temp; int fd_temp;
const char *resample; const char *resample;
int header[3]; int header[3];
char command[sizeof(fname2)+sizeof(fname2)+40];


fseek(f,20,SEEK_SET); fseek(f,20,SEEK_SET);
for(ix=0; ix<3; ix++) for(ix=0; ix<3; ix++)
} // end of attr_prosody_value } // end of attr_prosody_value




static int AddNameData(const char *name, int wide)
{//===============================================
int AddNameData(const char *name, int wide)
{//========================================
// Add the name to the namedata and return its position // Add the name to the namedata and return its position
// (Used by the Windows SAPI wrapper)
int ix; int ix;
int len; int len;
void *vp; void *vp;

+ 21
- 7
src/speak_lib.cpp View File

int a_wave_can_be_played = fifo_is_command_enabled(); int a_wave_can_be_played = fifo_is_command_enabled();
#ifdef DEBUG_ENABLED
SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n",
(event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length,
(event) ? event->sample : 0, (event) ? event->sample : 0,
a_wave_can_be_played); a_wave_can_be_played);
#endif


switch(my_mode) switch(my_mode)
{ {
else else
{ {
event = event_list + i; event = event_list + i;
#ifdef DEBUG_ENABLED
SHOW("Synthesize: event->sample(%d) + %d = %d\n", event->sample, the_write_pos, event->sample + the_write_pos); SHOW("Synthesize: event->sample(%d) + %d = %d\n", event->sample, the_write_pos, event->sample + the_write_pos);
#endif
event->sample += the_write_pos; event->sample += the_write_pos;
} }
#ifdef DEBUG_ENABLED
SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length); SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length);
#endif
finished = dispatch_audio((short *)outbuf, length, event); finished = dispatch_audio((short *)outbuf, length, event);
length = 0; // the wave data are played once. length = 0; // the wave data are played once.
i++; i++;
static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags) static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags)
{//======================================================================================== {//========================================================================================
// Fill the buffer with output sound // Fill the buffer with output sound
ENTER("Synthesize");
int length; int length;
int finished = 0; int finished = 0;
int count_buffers = 0; int count_buffers = 0;
#endif #endif


#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
ENTER("Synthesize");
if (text) if (text)
{ {
SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text); SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text);


for(;;) for(;;)
{ {
#ifdef DEBUG_ENABLED
SHOW("Synthesize > %s\n","for (next)"); SHOW("Synthesize > %s\n","for (next)");
#endif
out_ptr = outbuf; out_ptr = outbuf;
out_end = &outbuf[outbuf_size]; out_end = &outbuf[outbuf_size];
event_list_ix = 0; event_list_ix = 0;
ep->audio_position = int(time); ep->audio_position = int(time);
ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2);
#ifdef DEBUG_ENABLED
SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start);
SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n",
label[ep->type], ep->unique_identifier, ep->text_position, ep->length, label[ep->type], ep->unique_identifier, ep->text_position, ep->length,
ep->audio_position, ep->sample); ep->audio_position, ep->sample);
#endif

if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY))
ep->id.name = &namedata[value]; ep->id.name = &namedata[value];
else else
unsigned int position, espeak_POSITION_TYPE position_type, unsigned int position, espeak_POSITION_TYPE position_type,
unsigned int end_position, unsigned int flags, void* user_data) unsigned int end_position, unsigned int flags, void* user_data)
{//=========================================================================== {//===========================================================================
ENTER("sync_espeak_Synth");
#ifdef DEBUG_ENABLED
ENTER("sync_espeak_Synth");
SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text);
espeak_ERROR aStatus;
#endif

espeak_ERROR aStatus;
InitText(flags); InitText(flags);
my_unique_identifier = unique_identifier; my_unique_identifier = unique_identifier;
unsigned int end_position, unsigned int flags, unsigned int end_position, unsigned int flags,
unsigned int* unique_identifier, void* user_data) unsigned int* unique_identifier, void* user_data)
{//===================================================================================== {//=====================================================================================
#ifdef DEBUG_ENABLED
ENTER("espeak_Synth"); ENTER("espeak_Synth");
SHOW("espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); SHOW("espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text);
#endif


espeak_ERROR a_error=EE_INTERNAL_ERROR; espeak_ERROR a_error=EE_INTERNAL_ERROR;
static unsigned int temp_identifier; static unsigned int temp_identifier;
unsigned int* unique_identifier, unsigned int* unique_identifier,
void* user_data) void* user_data)
{//========================================================================= {//=========================================================================
#ifdef DEBUG_ENABLED
ENTER("espeak_Synth_Mark"); ENTER("espeak_Synth_Mark");
SHOW("espeak_Synth_Mark > index_mark=%s, end_position=%d, flags=%d, text=%s\n", index_mark, end_position, flags, text); SHOW("espeak_Synth_Mark > index_mark=%s, end_position=%d, flags=%d, text=%s\n", index_mark, end_position, flags, text);
#endif


espeak_ERROR a_error=EE_OK; espeak_ERROR a_error=EE_OK;
static unsigned int temp_identifier; static unsigned int temp_identifier;

+ 13
- 13
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.39.39 11.Dec.08";
const char *version_string = "1.39.42 17.Dec.08";
const int version_phdata = 0x013900; const int version_phdata = 0x013900;


int option_device_number = -1; int option_device_number = -1;






static int ReadPhFile(char **ptr, const char *fname)
{//=================================================
static char *ReadPhFile(void *ptr, const char *fname)
{//==================================================
FILE *f_in; FILE *f_in;
char *p; char *p;
unsigned int length; unsigned int length;
if((f_in = fopen(buf,"rb")) == NULL) if((f_in = fopen(buf,"rb")) == NULL)
{ {
fprintf(stderr,"Can't read data file: '%s'\n",buf); fprintf(stderr,"Can't read data file: '%s'\n",buf);
return(1);
return(NULL);
} }


if(*ptr != NULL)
Free(*ptr);
if(ptr != NULL)
Free(ptr);
if((p = Alloc(length)) == NULL) if((p = Alloc(length)) == NULL)
{ {
fclose(f_in); fclose(f_in);
return(-1);
return(NULL);
} }
if(fread(p,1,length,f_in) != length) if(fread(p,1,length,f_in) != length)
{ {
fclose(f_in); fclose(f_in);
return(-1);
return(NULL);
} }
*ptr = p;
fclose(f_in); fclose(f_in);
return(0);
return(p);
} // end of ReadPhFile } // end of ReadPhFile




int result = 1; int result = 1;
unsigned char *p; unsigned char *p;


if(ReadPhFile((char **)(&phoneme_tab_data),"phontab") != 0)
if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab")) == NULL)
return(-1); return(-1);
if(ReadPhFile((char **)(&phoneme_index),"phonindex") != 0)
if((phoneme_index = (unsigned int *)ReadPhFile((void *)(phoneme_index),"phonindex")) == NULL)
return(-1); return(-1);
if(ReadPhFile((char **)(&spects_data),"phondata") != 0)
if((spects_data = ReadPhFile((void *)(spects_data),"phondata")) == NULL)
return(-1); return(-1);
wavefile_data = (unsigned char *)spects_data; wavefile_data = (unsigned char *)spects_data;



+ 9
- 4
src/synthesize.cpp View File

} }


do { do {
if(WcmdqUsed() > 0)
WavegenOpenSound();

if(Generate(phoneme_list,&n_phoneme_list,1)==0) if(Generate(phoneme_list,&n_phoneme_list,1)==0)
{ {
SpeakNextClause(NULL,NULL,1); SpeakNextClause(NULL,NULL,1);


int clause_tone; int clause_tone;
char *voice_change; char *voice_change;
FILE *f_mbrola;
static FILE *f_text=NULL; static FILE *f_text=NULL;
static const void *p_text=NULL; static const void *p_text=NULL;


#ifdef USE_MBROLA_LIB #ifdef USE_MBROLA_LIB
MbrolaTranslate(phoneme_list,n_phoneme_list,NULL); MbrolaTranslate(phoneme_list,n_phoneme_list,NULL);
#else #else
if((f_mbrola = f_trans) == stderr)
f_mbrola = stdout;
MbrolaTranslate(phoneme_list,n_phoneme_list,f_mbrola);
{
FILE *f_mbrola;
if((f_mbrola = f_trans) == stderr)
f_mbrola = stdout;
MbrolaTranslate(phoneme_list,n_phoneme_list,f_mbrola);
}
#endif #endif
} }



+ 4
- 0
src/synthesize.h View File

void SelectPhonemeTable(int number); void SelectPhonemeTable(int number);
int SelectPhonemeTableName(const char *name); int SelectPhonemeTableName(const char *name);


void Write4Bytes(FILE *f, int value);
int Read4Bytes(FILE *f);
int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags);



extern unsigned char *envelope_data[18]; extern unsigned char *envelope_data[18];
extern int formant_rate[]; // max rate of change of each formant extern int formant_rate[]; // max rate of change of each formant

+ 4
- 2
src/tr_languages.cpp View File

tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word
tr->langopts.max_initial_consonants = 3; tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL; tr->langopts.replace_chars = NULL;
tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English


SetLengthMods(tr,201); SetLengthMods(tr,201);
// tr->langopts.length_mods = length_mods_en; // tr->langopts.length_mods = length_mods_en;
SetLetterBits(tr,LETTERGP_C,hy_consonants); SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 6; tr->langopts.max_initial_consonants = 6;
tr->langopts.numbers = 0x409; tr->langopts.numbers = 0x409;
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
} }
break; break;


case L('k','o'): // Korean, TEST case L('k','o'): // Korean, TEST
{ {
static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels
static const char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N
static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N


tr->letter_bits_offset = OFFSET_KOREAN; tr->letter_bits_offset = OFFSET_KOREAN;
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
SetLetterBits(tr,LETTERGP_Y,ko_ivowels); SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
SetLetterBits(tr,LETTERGP_G,ko_voiced);
SetLetterBits(tr,LETTERGP_G,(const char *)ko_voiced);


tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words

+ 1
- 1
src/translate.h View File

int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2"
int listx; // compile *_listx after *list int listx; // compile *_listx after *list
const unsigned int *replace_chars; // characters to be substitutes const unsigned int *replace_chars; // characters to be substitutes
const char *ascii_language; // switch to this language for Latin characters
} LANGUAGE_OPTIONS; } LANGUAGE_OPTIONS;




extern int (* phoneme_callback)(const char *); extern int (* phoneme_callback)(const char *);
extern void SetLengthMods(Translator *tr, int value); extern void SetLengthMods(Translator *tr, int value);


int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags);
void LoadConfig(void); void LoadConfig(void);
int TransposeAlphabet(char *text, int offset, int min, int max); int TransposeAlphabet(char *text, int offset, int min, int max);
int utf8_in(int *c, const char *buf); int utf8_in(int *c, const char *buf);

Loading…
Cancel
Save