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-fd96e6ae7743master
@@ -11,8 +11,8 @@ Yy | |||
- : ; ? b c d dZ | |||
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 | |||
@@ -22,10 +22,10 @@ I i: i:~ i~ l- o O o: | |||
O~ o~ r- U u u: u:~ u~ | |||
* 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 | |||
@@ -194,11 +194,11 @@ l- o O o: O: O~ o~ r- | |||
U u: u~ V | |||
- : 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 | |||
@@ -217,9 +217,10 @@ Dictionary hy_dict | |||
@ a aI e eI i i@ o | |||
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 | |||
@@ -274,11 +275,12 @@ a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
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 | |||
@@ -344,11 +346,12 @@ a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
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 | |||
@@ -360,11 +363,11 @@ o~ r- u uI u~ V VI VU | |||
V~ | |||
- : 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 | |||
@@ -481,14 +484,15 @@ t t; tS ts v x z Z | |||
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 |
@@ -226,60 +226,6 @@ | |||
// 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 | |||
ά 'a | |||
άη 'aI |
@@ -339,6 +339,7 @@ lbs paUndz | |||
LBS $abbrev | |||
ltd lImI2tI2d | |||
mc m@k $alt2 // combine with the following word | |||
ny $abbrev | |||
oem $abbrev | |||
ok $abbrev | |||
omg $abbrev | |||
@@ -357,6 +358,7 @@ url $abbrev | |||
usa $abbrev | |||
utc $abbrev | |||
u.s ju:'Es | |||
VI $abbrev | |||
wwii dVb@Lju:dVb@Lju:t'u: | |||
xxx $abbrev // not roman 30 | |||
xy $abbrev | |||
@@ -370,7 +372,7 @@ st $only | |||
mr mIst3 $dot | |||
mrs mIsI2z $dot | |||
//ms mIz $dot | |||
dr $dot | |||
dr d0kt3 $dot | |||
lt $dot | |||
prof $dot | |||
rev $dot | |||
@@ -789,6 +791,7 @@ commence k@mEns | |||
commend k@mEnd | |||
comment k0mEnt | |||
commentary k0m@ntrI | |||
commie k0mI | |||
committee k@mItI | |||
communique k@mju:nI2keI | |||
community k@mju:nI2tI | |||
@@ -1478,6 +1481,7 @@ neglect nI2glEkt | |||
neon ni:0n | |||
nepenthe nI2pEnTI | |||
nescience nEsI@ns | |||
nicety naIs@tI | |||
niche ni:S | |||
noah noUV | |||
nobly noUblI $verbf | |||
@@ -1894,6 +1898,7 @@ shrilly SrIllI $verbf | |||
sibelius sI2beIli@s | |||
sierra sI'e@r@ | |||
signage saInI2dZ | |||
signer saIn3 | |||
sikh si:k | |||
silhouette sI2lUw'Et | |||
silo saIloU | |||
@@ -1938,6 +1943,7 @@ squirrel skwIr@L | |||
standby standbaI | |||
stagnate $2 | |||
stampede $2 | |||
stiletto stI2lEtoU | |||
strychnine str'Ikni:n | |||
sterile stEraIl | |||
stomata stoUm@t@ | |||
@@ -2788,10 +2794,9 @@ might ,maIt $verbf $strend2 $only | |||
(might have) maItha2v $pastf $u1+ | |||
(might have to) ,maIth'avt@5 $verbf $atend | |||
have %hav $pastf $only | |||
have %hav $pastf $only $strend2 | |||
haves havz | |||
(have been) %hav%bIn $pastf | |||
(have to) havtU $atend | |||
has %ha2z $pastf $only | |||
has haz $only $atend | |||
(has been) %haz%bIn $pastf | |||
@@ -2968,6 +2973,7 @@ that %Dat $nounf $strend2 $verbsf | |||
these %Di:z $nounf $strend2 $only | |||
those %DoUz $nounf $strend2 $only | |||
there %De@ $strend2 $only | |||
(there be) De@b'i: | |||
than %Dan $only | |||
(than a) ,Dan@ $nounf | |||
@@ -3036,6 +3042,7 @@ like laIk $strend2 | |||
?3 commentary k0m@ntErI | |||
?3 current k'3@nt | |||
?3 depot di:poU | |||
?3 detail $2 | |||
?3 dialog daI@lO:g | |||
?3 envelope A:nv@loUp | |||
?3 err e@ |
@@ -836,7 +836,7 @@ | |||
h) ar (ass @r | |||
&m) aran @ran | |||
sep) ar (at 3r | |||
w) ar (e e@ | |||
w) are e@ | |||
k) ar (y ar | |||
c) arbo (h ,A@boU | |||
_) arch (@P4 ,A@tS // prefix | |||
@@ -925,6 +925,7 @@ | |||
_) ash aS | |||
_) ash (a a2S | |||
_) ash (o a2S | |||
_) as (in as | |||
_) asia eIS@ | |||
?3 _) asia eIZ@ | |||
as (k aas | |||
@@ -1101,7 +1102,7 @@ | |||
al) av (er 'A:v | |||
sc) av (en av | |||
aver (s av'3: | |||
_) avi (a eIvI | |||
_) avi (A eIvI | |||
l) av (i av | |||
sl) av (i A:v | |||
r) av (el av | |||
@@ -2828,6 +2829,7 @@ | |||
d) ig (nA Ig | |||
_) ig (ni %Ig | |||
ig (no %Ig | |||
s) ign (o %Inj | |||
ig (nom Ig | |||
ig (noran Ig | |||
ig (na Ig | |||
@@ -3554,7 +3556,7 @@ | |||
_) o (per 0 | |||
_) ope (n oUp@ | |||
un) ope (n oUp@ | |||
@) opol '0p@L | |||
@) opol (i '0p@L | |||
opolitan @p'0lIt@n | |||
oppor (tu %0p3 | |||
opp (res @p |
@@ -486,61 +486,11 @@ | |||
// 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 | |||
o _^_EN | |||
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 | |||
@@ -56,7 +56,6 @@ _cir tSi;@-*konfl'esso | |||
_dia djeR'e:zI | |||
_dot p'unto||s,ov@-*ask@-*'it:o | |||
_grv g@-*'a:ve | |||
//_grv atS:'entog@-*'a:ve | |||
_hac h'atSek | |||
_mcn m'ak@-*on | |||
_ogo og'o:nek | |||
@@ -65,38 +64,41 @@ _stk b'aR*a | |||
_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 | |||
@@ -412,26 +414,66 @@ o O: $atend | |||
// foreign words | |||
chat tSat | |||
chat _^_EN | |||
cliché kli:Se | |||
internet 'internet | |||
internet _^_EN | |||
jeans dZi:nz | |||
web wEb | |||
accelerator _^_EN | |||
ace _^_EN | |||
aces _^_EN | |||
// 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 | |||
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 | |||
@@ -3,6 +3,8 @@ | |||
// letter groups | |||
// A any vowel | |||
// C any consonant | |||
// K not a vowel (i.e. consonant or end-of-word) | |||
// Y front vowels: e i (& accents) | |||
.L01 a à o ò ó u ù | |||
@@ -51,8 +53,14 @@ | |||
.group e | |||
e e: | |||
e (CK e | |||
e (T E: // The word has $alt in it_list | |||
e (CKT E // $alt | |||
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 (ce_ =e | |||
@) e (ci_ =e | |||
@@ -167,8 +175,14 @@ | |||
.group o | |||
o o: | |||
o (CK o | |||
o (T O: // $alt | |||
o (CKT O // $alt | |||
oi oI (K | |||
o (r O: // ?? [O] before 'r' | |||
o (rK O | |||
o (re_ o | |||
&) o (_S1q o // lookup it_list without suffix | |||
@) o (ista_ o | |||
@@ -223,7 +237,8 @@ | |||
sch (Y sk | |||
sh (K S // foreign words | |||
K) sh S // foreign words | |||
@) sia s'ia | |||
@) sia s'ia | |||
@) s (_S1 s | |||
.group t | |||
t t | |||
@@ -275,32 +290,14 @@ | |||
ù 'u: | |||
ù (CK 'u | |||
% pertS'ento | |||
$ dolla:ro | |||
₤ lira | |||
£ sterl'ina | |||
& _!e | |||
@ ki'otS:ola | |||
© k'opiraIt | |||
+ pju | |||
. punto | |||
, (D v'irgola | |||
: d,uep'unti | |||
; p'untoev'irgola | |||
! _p'untoesklamat'ivo_ | |||
!) ! | |||
? _p'untointeRogat'ivo_ | |||
?) ? | |||
\\ kont@-*ob'aR*a | |||
/ b'aR*a | |||
__) - (_D meno | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
--) - | |||
− meno | |||
* asterisko | |||
*) * (* | |||
** | |||
**) * (_ _:: |
@@ -642,58 +642,7 @@ | |||
ё 8 | |||
// 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 | |||
$ dolar |
@@ -183,29 +183,3 @@ | |||
.group | |||
் // virama | |||
$ 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 |
@@ -17,8 +17,8 @@ | |||
fi 40 134 | |||
fr 54 140 | |||
fr_ca 11 140 | |||
hi 59 148 | |||
ta 17 151 | |||
hi 60 149 | |||
ta 17 152 | |||
hu 23 119 | |||
lv 29 126 | |||
nl 28 126 | |||
@@ -50,18 +50,18 @@ | |||
ku 18 127 | |||
id 15 124 | |||
rw 15 129 | |||
ko 18 158 | |||
ko 18 159 | |||
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 | |||
en_klatt 77 149 | |||
ga 18 117 | |||
mr 1 148 | |||
mr 1 149 | |||
Data file Used by | |||
b/b [b] base | |||
@@ -181,6 +181,7 @@ d/xd [d] base | |||
[d] hi | |||
[d.] hi | |||
[dh] hi | |||
[d.h] hi | |||
[d] hu | |||
[d] pl | |||
[d] hr | |||
@@ -190,8 +191,10 @@ d/xd [d] base | |||
[d] sw | |||
[d] id | |||
[d] sq | |||
[dz] sq | |||
[d] bn | |||
[d.] bn | |||
[dz] hy | |||
[d[] ga | |||
d/xd2 [d`] om | |||
d/xd3 [dh] hi | |||
@@ -206,6 +209,7 @@ dzh/dzh [dZ] base | |||
[dZ] sr | |||
[dZ;] sr | |||
[dZ;] ru | |||
[dZ;] sq | |||
[J] bn | |||
dzh/dzh_ [dZ] base | |||
[dZ;] base | |||
@@ -215,16 +219,15 @@ dzh/dzh_ [dZ] base | |||
[dZ;] hr | |||
[dZ;] mk | |||
[dZ;] ru | |||
[dZ;] sq | |||
[J] bn | |||
dzh/dzh2 [dZ] hr | |||
[dZ;] hr | |||
dzh/dz_pzd [J] base | |||
[J2] hi | |||
[J] tr | |||
[J] ku | |||
[J2] bn | |||
dzh/dz_pzd_ [J] base | |||
[J2] hi | |||
[J2] bn | |||
dzh/xdzh [dZ] base | |||
[dZ;] base | |||
@@ -234,9 +237,10 @@ dzh/xdzh [dZ] base | |||
[dZ;] hr | |||
[dZ;] mk | |||
[dZ;] ru | |||
[dZ;] sq | |||
[J] bn | |||
dzh/xdz_pzd [J] base | |||
[J2] hi | |||
[Jh] hi | |||
[J2] bn | |||
envelope/i_risefall [11] zh | |||
envelope/i_risefall2 [+2] rw | |||
@@ -652,7 +656,6 @@ l/l_long [l] base | |||
[l] fr | |||
[l] la | |||
[l;] ro | |||
[L] sq | |||
l/lo [(o)] base | |||
[O] fr | |||
[o] fr | |||
@@ -691,7 +694,6 @@ l/tl [l] base | |||
[l] ca | |||
[l] pt | |||
[l;] ro | |||
[L] sq | |||
l/xl [(@)] base | |||
[(a)] base | |||
[(e)] base | |||
@@ -944,6 +946,7 @@ ufric/s [s] base | |||
[s] es | |||
[s#] pt | |||
[s`] ko | |||
[z] sq | |||
[s] en_klatt | |||
ufric/s_ [s] base | |||
[z] base | |||
@@ -958,6 +961,7 @@ ufric/s_ [s] base | |||
[s#] pt | |||
[z;] ro | |||
[s2] is | |||
[z] sq | |||
[s2] om | |||
[s] en_klatt | |||
[z] en_klatt | |||
@@ -1102,6 +1106,7 @@ ustop/k_unasp [k] base | |||
[k`] ko | |||
[k] sq | |||
[k] bn | |||
[k] hy | |||
ustop/k_unasp_ [k] zh | |||
ustop/null [?] base | |||
ustop/p [p] base | |||
@@ -1115,10 +1120,10 @@ ustop/p_ [p] base | |||
[ph] hi | |||
[ph] zh | |||
[ph] bn | |||
[ph] hy | |||
[p#] hy | |||
ustop/p_asp [bh] hi | |||
[ph] hi | |||
[ph] hy | |||
[p#] hy | |||
ustop/p_ejc [p`] om | |||
ustop/percus10 [(X1] base | |||
ustop/pl [p] base | |||
@@ -1135,7 +1140,8 @@ ustop/pl [p] base | |||
[p] sq | |||
[p] bn | |||
[ph] bn | |||
[ph] hy | |||
[p] hy | |||
[p#] hy | |||
ustop/pr [p] base | |||
[p] base2 | |||
[p] fi | |||
@@ -1147,7 +1153,8 @@ ustop/pr [p] base | |||
[p;] ro | |||
[p] bn | |||
[ph] bn | |||
[ph] hy | |||
[p] hy | |||
[p#] hy | |||
ustop/p_unasp [p] base | |||
[p] base2 | |||
[p] fi | |||
@@ -1162,6 +1169,7 @@ ustop/p_unasp [p] base | |||
[p`] ko | |||
[p] sq | |||
[p] bn | |||
[p] hy | |||
ustop/p_unasp_ [p] base2 | |||
[p] fi | |||
[p] hi | |||
@@ -1172,10 +1180,12 @@ ustop/p_unasp_ [p] base2 | |||
[p;] ro | |||
[p] sq | |||
[p] bn | |||
[p] hy | |||
ustop/q [q] base | |||
ustop/q_u [q] base | |||
ustop/t [t] base | |||
[t2] en | |||
[d.h] hi | |||
[t.h] hi | |||
[t] zhy | |||
[t.h] bn | |||
@@ -1185,12 +1195,10 @@ ustop/t_ [t] base | |||
[t2] fr | |||
[t3] fr | |||
[t.] hi | |||
[t.h] hi | |||
[t] lv | |||
[t] sk | |||
[t] el | |||
[th] zh | |||
[t3] sq | |||
[t.] bn | |||
[t.h] bn | |||
ustop/t_dnt [t] base | |||
@@ -1209,23 +1217,22 @@ ustop/t_dnt [t] base | |||
[t[] vi | |||
[t] sw | |||
[t`] ko | |||
[t5] sq | |||
[t] sq | |||
[t] bn | |||
[t] hy | |||
[t[] ga | |||
ustop/t_dnt2 [t[] vi | |||
ustop/t_ejc [t`] om | |||
ustop/t_hard [t2] sq | |||
ustop/t_hard_ [t2] sq | |||
ustop/t_hi [t] hi | |||
[t5] sq | |||
[t] sq | |||
[t] bn | |||
[th] bn | |||
[t] hy | |||
ustop/t_pzd [t;] pl | |||
[t;] ru | |||
ustop/tr [t] base | |||
[t[] base | |||
[t2] en | |||
[t.h] hi | |||
[t] ru | |||
[t.h] bn | |||
ustop/ts [ts] base2 | |||
@@ -1238,7 +1245,9 @@ ustop/ts [ts] base2 | |||
[z] zhy | |||
[tsh] zh | |||
[ts] sq | |||
[ts] hy | |||
[dz] sq | |||
[dz] hy | |||
[ts#] hy | |||
ustop/ts_ [ts] base2 | |||
[ts] de | |||
[ts] eo | |||
@@ -1248,8 +1257,11 @@ ustop/ts_ [ts] base2 | |||
[ts] ru | |||
[ts;] ro | |||
[ts] sq | |||
[ts] hy | |||
[dz] sq | |||
[dz] hy | |||
[ts#] hy | |||
ustop/ts2 [ts] lv | |||
[ts] hy | |||
ustop/tsh [tS] base | |||
[c] zhy | |||
ustop/tsh_ [tS] base | |||
@@ -1263,29 +1275,31 @@ ustop/t_short [t] fr | |||
[t] lv | |||
[t] sk | |||
[t] el | |||
[t3] sq | |||
[t.] bn | |||
ustop/tsh_pzd [tS;] zh | |||
ustop/tsh_pzd_unasp [tS;] zh | |||
ustop/tsh_sr [tS] sr | |||
ustop/ts_pzd [tS;] base | |||
[ts;] base | |||
[Jh] hi | |||
[ch] hi | |||
[tS;] ru | |||
[c] sq | |||
[dZ;] sq | |||
[ch] bn | |||
ustop/ts_pzd_ [c] hi | |||
[c] hu | |||
[c] bn | |||
[c] hy | |||
ustop/ts_pzd2 [c] hi | |||
[c] hu | |||
[c`] ko | |||
[c] bn | |||
[c] hy | |||
ustop/ts_pzd3 [tS;] hr | |||
[dZ;] hr | |||
ustop/t_sr [d] sr | |||
[t] sr | |||
[t4] sq | |||
ustop/ts_rfx [ts.] zh | |||
ustop/ts_rfx_unasp [ts.] zh | |||
ustop/ts_sr [tS;] sr | |||
@@ -1659,11 +1673,13 @@ voc/z [z] base | |||
[z2] fr | |||
[z3] fr | |||
[z;] ro | |||
[z] sq | |||
voc/z_ [z] base | |||
[z] fr | |||
[z2] fr | |||
[z3] fr | |||
[z;] ro | |||
[z] sq | |||
voc/zh [Z] base | |||
[z.] base | |||
[R^] sk | |||
@@ -1744,6 +1760,7 @@ vowel/8_2 [U] en_us | |||
[8] sv | |||
vowel/8_3 [eo] zhy | |||
vowel/8_5 [8] ku | |||
vowel/8_6 [V] sq | |||
vowel/8_7 [@] lv | |||
vowel/a [a] en | |||
[aa] en | |||
@@ -1797,6 +1814,8 @@ vowel/a_3 [a] en_sc | |||
[a/] en_sc | |||
[A:] en_sc | |||
[aa] en_sc | |||
[a] lv | |||
[a:] lv | |||
[a:] cs | |||
[a:] la | |||
[a] is | |||
@@ -1837,8 +1856,6 @@ vowel/a_6 [a] fr | |||
[a:] vi | |||
vowel/aa [a] fi | |||
[A] fr_ca | |||
[a] lv | |||
[a:] lv | |||
[A] no | |||
[A:] no | |||
[aa] zhy | |||
@@ -1958,6 +1975,8 @@ vowel/e_mid [E] en_rp | |||
[E] fr_ca | |||
[E] hi | |||
[E] hu | |||
[e] lv | |||
[e:] lv | |||
[E] pl | |||
[e:] sk | |||
[e] cs | |||
@@ -1981,8 +2000,6 @@ vowel/e_mid2 [E] af | |||
[E:] de | |||
[e] jbo | |||
[e] fi | |||
[e] lv | |||
[e:] lv | |||
[E] nl | |||
[e] sk | |||
[e] es | |||
@@ -2273,6 +2290,8 @@ vowel/u [u:] en_wi | |||
[U] fr | |||
[u] ta | |||
[u:] ta | |||
[u] lv | |||
[u:] lv | |||
[u:] cs | |||
[U] la | |||
[u] id | |||
@@ -2297,9 +2316,7 @@ vowel/u#_3 [U] ta | |||
[U:] ta | |||
vowel/u#_4 [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_6 [U] pt_pt | |||
[u] pt_pt | |||
@@ -2334,8 +2351,7 @@ vowel/u_bck [u] base2 | |||
[u:] ga | |||
vowel/u_bck2 [u:] la | |||
[u] sq | |||
vowel/u_fnt [u:] en | |||
[u:] en_rp | |||
vowel/u_fnt [u:] en_rp | |||
vowel/uu [U] en | |||
[U] en_n | |||
[U] en_wm | |||
@@ -2446,6 +2462,7 @@ vwl_en_rp/aa [A:] en_rp | |||
[aa] en_rp | |||
vwl_en_rp/aU@ [aU@] 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_us2 [3:] en_us | |||
vwl_en_us/a [a] en_us | |||
@@ -2590,6 +2607,7 @@ x/d [d] base | |||
[t#] en_us | |||
[d] fr | |||
[d.] hi | |||
[d.h] hi | |||
[d] hr | |||
[d] el | |||
[d] is | |||
@@ -2635,7 +2653,6 @@ x/d_pzd [d;] pl | |||
[d;] ru | |||
x/dzh [J] base | |||
[dZ] base | |||
[J2] hi | |||
[J2] bn | |||
[dZ] en_klatt | |||
x/dzh_ [dZ] base | |||
@@ -2652,8 +2669,7 @@ x/dz_pzd [dZ;] base | |||
[dZ;] mk | |||
[dZ;] ru | |||
[J] bn | |||
x/dz_pzd_ [J2] hi | |||
[J2] bn | |||
x/dz_pzd_ [J2] bn | |||
x/g_ [g] base | |||
[g] cy | |||
[g] fr |
@@ -253,7 +253,8 @@ phoneme u: | |||
vowel starttype (u) endtype (u) | |||
length 210 | |||
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 | |||
@@ -107,6 +107,7 @@ phoneme o | |||
formants vowel/o_3 | |||
after l l/lo-10 | |||
before (r) DFT+r/xr | |||
reduceto o2 1 | |||
endphoneme | |||
@@ -359,6 +360,7 @@ endphoneme | |||
phoneme l | |||
liquid | |||
vowelout f1=1 f2=1600 -300 300 f3=100 80 brk | |||
length 100 | |||
lengthmod 7 | |||
beforenotvowel l/ | |||
@@ -570,3 +572,4 @@ endphoneme | |||
@@ -405,7 +405,6 @@ phoneme dh | |||
vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
lengthmod 5 | |||
formants d/xd3+ustop/t_dnt%40 | |||
before _ ustop/t_dnt%35 | |||
after @ d/xd | |||
switchvoicing th | |||
endphoneme | |||
@@ -423,7 +422,7 @@ phoneme t. | |||
lengthmod 2 | |||
wave ustop/t_short | |||
before _ ustop/t_ | |||
switchvoicing d | |||
switchvoicing d. | |||
endphoneme | |||
phoneme t.h | |||
@@ -432,9 +431,8 @@ phoneme t.h | |||
vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 | |||
lengthmod 2 | |||
wave ustop/t | |||
before _ ustop/t_ | |||
before r ustop/tr | |||
switchvoicing d | |||
// wave ustop/th_rfx | |||
switchvoicing d.h | |||
endphoneme | |||
phoneme d. | |||
@@ -447,21 +445,20 @@ phoneme d. | |||
after _ NULL | |||
after @ d/xd | |||
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 | |||
//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 | |||
@@ -503,30 +500,19 @@ phoneme J // this is [dz;] | |||
switchvoicing c | |||
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 | |||
switchvoicing c | |||
formants dzh/xdz_pzd+ustop/ts_pzd | |||
after @ dzh/xdz_pzd | |||
switchvoicing ch | |||
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 |
@@ -43,7 +43,7 @@ phoneme E | |||
vowel starttype (e) endtype (e) | |||
length 170 | |||
formants vowel/e_mid | |||
// reduceto e/ 3 // [E] only in stressed syllables ? | |||
reduceto e/ 3 // [E] only in stressed syllables ? | |||
endphoneme | |||
@@ -82,7 +82,7 @@ phoneme O | |||
vowel starttype (o) endtype (o) | |||
length 170 | |||
formants vowel/oo_4 | |||
// reduceto o/ 3 // [O] only in stressed syllables ? | |||
reduceto o/ 3 // [O] only in stressed syllables ? | |||
endphoneme | |||
@@ -23,13 +23,13 @@ endphoneme | |||
phoneme e | |||
vowel starttype (e) endtype (e) | |||
length 120 | |||
formants vowel/e_mid2 | |||
formants vowel/e_mid | |||
endphoneme | |||
phoneme e: | |||
vowel starttype (e) endtype (e) | |||
length 330 | |||
formants vowel/e_mid2 | |||
formants vowel/e_mid | |||
endphoneme | |||
@@ -49,14 +49,14 @@ endphoneme | |||
phoneme a | |||
vowel starttype (a) endtype (a) | |||
length 120 | |||
formants vowel/aa | |||
formants vowel/a_3 | |||
reduceto a# 0 | |||
endphoneme | |||
phoneme a: | |||
vowel starttype (a) endtype (a) | |||
length 350 | |||
formants vowel/aa | |||
formants vowel/a_3 | |||
endphoneme | |||
phoneme a# | |||
@@ -81,13 +81,13 @@ endphoneme | |||
phoneme u | |||
vowel starttype (u) endtype (u) | |||
length 110 | |||
formants vowel/u_5 | |||
formants vowel/u | |||
endphoneme | |||
phoneme u: | |||
vowel starttype (u) endtype (u) | |||
length 330 | |||
formants vowel/u_5 | |||
formants vowel/u | |||
endphoneme | |||
@@ -1351,7 +1351,7 @@ phonemetable ne hi | |||
include ph_nepali | |||
phonemetable hy base | |||
include ph_armenian_west | |||
include ph_armenian | |||
phonemetable om base | |||
include ph_oromo |
@@ -85,13 +85,10 @@ | |||
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 FindPhonemesUsed(void); | |||
extern void DrawEnvelopes(); | |||
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]; | |||
@@ -109,7 +106,7 @@ typedef struct { | |||
int n_envelopes = 0; | |||
char envelope_paths[N_ENVELOPES][80]; | |||
unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; | |||
FILE *f_phdata; | |||
static FILE *f_phdata; | |||
@@ -343,8 +340,8 @@ static FILE *fopen_log(FILE *f_log, const char *fname,const char *access) | |||
} | |||
int Hash8(const char *string) | |||
//=========================== | |||
static int Hash8(const char *string) | |||
//================================== | |||
/* Generate a hash code from the specified string */ | |||
{ | |||
int c; | |||
@@ -807,8 +804,6 @@ int Compile::LoadWavefile(FILE *f, const char *fname) | |||
int resample_wav = 0; | |||
char fname_temp[100]; | |||
int scale_factor=0; | |||
int fd_temp; | |||
char command[sizeof(path_source)+200]; | |||
fseek(f,24,SEEK_SET); | |||
sr1 = Read4Bytes(f); | |||
@@ -828,26 +823,30 @@ int Compile::LoadWavefile(FILE *f, const char *fname) | |||
Error("Not mono: ",fname); | |||
} | |||
#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); | |||
} | |||
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 | |||
} | |||
@@ -779,6 +779,13 @@ int Unpronouncable(Translator *tr, char *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) | |||
return(0); | |||
@@ -2523,8 +2530,19 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
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; | |||
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)) | |||
{ | |||
// within range of the remove_accent table |
@@ -619,9 +619,9 @@ const long style): | |||
MyChild::~MyChild(void) | |||
{ | |||
wxWindow *w; | |||
canvas = NULL; | |||
#ifndef PLATFORM_WINDOWS | |||
wxWindow *w; | |||
// bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow | |||
w = myframe->GetClientWindow(); | |||
w->RemoveChild(this); |
@@ -496,7 +496,7 @@ void Lexicon_Ru() | |||
char fname[sizeof(path_dsource)+20]; | |||
// 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 { | |||
const char *suffix; | |||
@@ -617,7 +617,7 @@ p_unicode = unicode; | |||
ru_stress = vcount; | |||
break; | |||
} | |||
if(strchr(vowels,c) != NULL) | |||
if(strchr((char *)vowels,c) != NULL) | |||
{ | |||
vcount++; | |||
} | |||
@@ -1163,6 +1163,7 @@ void Test2() | |||
const char* text1 = "Hello world. Testing."; | |||
extern void TestCompile2(void); | |||
void TestTest(int control) | |||
{//======================= | |||
@@ -1177,7 +1178,7 @@ void TestTest(int control) | |||
//CharsetToUnicode("ISO-8859-4"); | |||
//CharsetToUnicode("ISCII"); | |||
TestCompile2(); | |||
return; | |||
if(control==2) |
@@ -654,7 +654,6 @@ static int LoadSoundFile(const char *fname, int index) | |||
int length; | |||
char fname_temp[100]; | |||
char fname2[sizeof(path_home)+13+40]; | |||
char command[sizeof(fname2)+sizeof(fname2)+40]; | |||
if(fname == NULL) | |||
{ | |||
@@ -680,6 +679,7 @@ static int LoadSoundFile(const char *fname, int index) | |||
int fd_temp; | |||
const char *resample; | |||
int header[3]; | |||
char command[sizeof(fname2)+sizeof(fname2)+40]; | |||
fseek(f,20,SEEK_SET); | |||
for(ix=0; ix<3; ix++) | |||
@@ -1243,9 +1243,10 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) | |||
} // 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 | |||
// (Used by the Windows SAPI wrapper) | |||
int ix; | |||
int len; | |||
void *vp; |
@@ -74,11 +74,12 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) | |||
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", | |||
(event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, | |||
(event) ? event->sample : 0, | |||
a_wave_can_be_played); | |||
#endif | |||
switch(my_mode) | |||
{ | |||
@@ -156,11 +157,14 @@ static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_ | |||
else | |||
{ | |||
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); | |||
#endif | |||
event->sample += the_write_pos; | |||
} | |||
#ifdef DEBUG_ENABLED | |||
SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length); | |||
#endif | |||
finished = dispatch_audio((short *)outbuf, length, event); | |||
length = 0; // the wave data are played once. | |||
i++; | |||
@@ -365,7 +369,6 @@ static int initialise(void) | |||
static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags) | |||
{//======================================================================================== | |||
// Fill the buffer with output sound | |||
ENTER("Synthesize"); | |||
int length; | |||
int finished = 0; | |||
int count_buffers = 0; | |||
@@ -374,6 +377,7 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
#endif | |||
#ifdef DEBUG_ENABLED | |||
ENTER("Synthesize"); | |||
if (text) | |||
{ | |||
SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text); | |||
@@ -429,7 +433,9 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
for(;;) | |||
{ | |||
#ifdef DEBUG_ENABLED | |||
SHOW("Synthesize > %s\n","for (next)"); | |||
#endif | |||
out_ptr = outbuf; | |||
out_end = &outbuf[outbuf_size]; | |||
event_list_ix = 0; | |||
@@ -524,11 +530,13 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
ep->audio_position = int(time); | |||
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 > 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, | |||
ep->audio_position, ep->sample); | |||
#endif | |||
if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) | |||
ep->id.name = &namedata[value]; | |||
else | |||
@@ -542,11 +550,13 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, | |||
unsigned int position, espeak_POSITION_TYPE position_type, | |||
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); | |||
espeak_ERROR aStatus; | |||
#endif | |||
espeak_ERROR aStatus; | |||
InitText(flags); | |||
my_unique_identifier = unique_identifier; | |||
@@ -748,8 +758,10 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size, | |||
unsigned int end_position, unsigned int flags, | |||
unsigned int* unique_identifier, void* user_data) | |||
{//===================================================================================== | |||
#ifdef DEBUG_ENABLED | |||
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); | |||
#endif | |||
espeak_ERROR a_error=EE_INTERNAL_ERROR; | |||
static unsigned int temp_identifier; | |||
@@ -805,8 +817,10 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size, | |||
unsigned int* unique_identifier, | |||
void* user_data) | |||
{//========================================================================= | |||
#ifdef DEBUG_ENABLED | |||
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); | |||
#endif | |||
espeak_ERROR a_error=EE_OK; | |||
static unsigned int temp_identifier; |
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; | |||
@@ -69,8 +69,8 @@ int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsig | |||
static int ReadPhFile(char **ptr, const char *fname) | |||
{//================================================= | |||
static char *ReadPhFile(void *ptr, const char *fname) | |||
{//================================================== | |||
FILE *f_in; | |||
char *p; | |||
unsigned int length; | |||
@@ -82,25 +82,25 @@ static int ReadPhFile(char **ptr, const char *fname) | |||
if((f_in = fopen(buf,"rb")) == NULL) | |||
{ | |||
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) | |||
{ | |||
fclose(f_in); | |||
return(-1); | |||
return(NULL); | |||
} | |||
if(fread(p,1,length,f_in) != length) | |||
{ | |||
fclose(f_in); | |||
return(-1); | |||
return(NULL); | |||
} | |||
*ptr = p; | |||
fclose(f_in); | |||
return(0); | |||
return(p); | |||
} // end of ReadPhFile | |||
@@ -112,11 +112,11 @@ int LoadPhData() | |||
int result = 1; | |||
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); | |||
if(ReadPhFile((char **)(&phoneme_index),"phonindex") != 0) | |||
if((phoneme_index = (unsigned int *)ReadPhFile((void *)(phoneme_index),"phonindex")) == NULL) | |||
return(-1); | |||
if(ReadPhFile((char **)(&spects_data),"phondata") != 0) | |||
if((spects_data = ReadPhFile((void *)(spects_data),"phondata")) == NULL) | |||
return(-1); | |||
wavefile_data = (unsigned char *)spects_data; | |||
@@ -1479,6 +1479,9 @@ int SynthOnTimer() | |||
} | |||
do { | |||
if(WcmdqUsed() > 0) | |||
WavegenOpenSound(); | |||
if(Generate(phoneme_list,&n_phoneme_list,1)==0) | |||
{ | |||
SpeakNextClause(NULL,NULL,1); | |||
@@ -1511,7 +1514,6 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
int clause_tone; | |||
char *voice_change; | |||
FILE *f_mbrola; | |||
static FILE *f_text=NULL; | |||
static const void *p_text=NULL; | |||
@@ -1629,9 +1631,12 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
#ifdef USE_MBROLA_LIB | |||
MbrolaTranslate(phoneme_list,n_phoneme_list,NULL); | |||
#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 | |||
} | |||
@@ -297,6 +297,10 @@ void SetEmbedded(int control, int value); | |||
void SelectPhonemeTable(int number); | |||
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 int formant_rate[]; // max rate of change of each formant |
@@ -153,6 +153,7 @@ static Translator* NewTranslator(void) | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word | |||
tr->langopts.max_initial_consonants = 3; | |||
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); | |||
// tr->langopts.length_mods = length_mods_en; | |||
@@ -576,6 +577,7 @@ SetLengthMods(tr,3); // all equal | |||
SetLetterBits(tr,LETTERGP_C,hy_consonants); | |||
tr->langopts.max_initial_consonants = 6; | |||
tr->langopts.numbers = 0x409; | |||
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
} | |||
break; | |||
@@ -652,13 +654,13 @@ SetLengthMods(tr,3); // all equal | |||
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_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; | |||
memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); | |||
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.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words |
@@ -378,6 +378,7 @@ typedef struct { | |||
int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
int listx; // compile *_listx after *list | |||
const unsigned int *replace_chars; // characters to be substitutes | |||
const char *ascii_language; // switch to this language for Latin characters | |||
} LANGUAGE_OPTIONS; | |||
@@ -517,7 +518,6 @@ extern int (* uri_callback)(int, const char *, const char *); | |||
extern int (* phoneme_callback)(const char *); | |||
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); | |||
int TransposeAlphabet(char *text, int offset, int min, int max); | |||
int utf8_in(int *c, const char *buf); |