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

@@ -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

+ 0
- 54
dictsource/el_rules View File

@@ -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

+ 10
- 3
dictsource/en_list View File

@@ -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@

+ 5
- 3
dictsource/en_rules View File

@@ -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

+ 1
- 51
dictsource/hi_rules View File

@@ -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




+ 91
- 49
dictsource/it_list View File

@@ -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



+ 16
- 19
dictsource/it_rules View File

@@ -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
*) * (*
**
**) * (_ _::

+ 1
- 52
dictsource/ru_rules View File

@@ -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

+ 0
- 26
dictsource/ta_rules View File

@@ -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

+ 58
- 42
phsource/compile_report View File

@@ -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

BIN
phsource/d/xd View File


BIN
phsource/l^/j2u View File


+ 2
- 1
phsource/ph_english View File

@@ -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



+ 3
- 0
phsource/ph_french View File

@@ -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





+ 23
- 37
phsource/ph_hindi View File

@@ -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

+ 2
- 2
phsource/ph_italian View File

@@ -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



+ 6
- 6
phsource/ph_latvian View File

@@ -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



+ 1
- 1
phsource/phonemes View File

@@ -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

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

@@ -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
}


+ 19
- 1
src/dictionary.cpp View File

@@ -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

+ 1
- 1
src/espeakedit.cpp View File

@@ -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);

+ 4
- 3
src/extras.cpp View File

@@ -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)

+ 4
- 3
src/readclause.cpp View File

@@ -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;

+ 21
- 7
src/speak_lib.cpp View File

@@ -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;

+ 13
- 13
src/synthdata.cpp View File

@@ -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;


+ 9
- 4
src/synthesize.cpp View File

@@ -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
}


+ 4
- 0
src/synthesize.h View File

@@ -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

+ 4
- 2
src/tr_languages.cpp View File

@@ -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

+ 1
- 1
src/translate.h View File

@@ -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);

Loading…
Cancel
Save