Browse Source

[1.31.13]

Error message if accented letters are not recognized as alphabetic.
"speak" program.  Don't finish when an empty sentence is found.
Compile dictionary: compile *_listx after *_list, not before.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@146 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 17 years ago
parent
commit
897d6ba81e

+ 4
- 4
dictsource/dict_phonemes View File

@@ -129,10 +129,10 @@ e: E: E~ I i: O o: O:
O~ r- U u: V

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


Dictionary hu_dict

+ 1
- 1
dictsource/en_rules View File

@@ -2278,7 +2278,7 @@
phab) et (_ Et
ber) et (_ eI
gr) et (+ Et
f) et (a i:
f) et (a i:t
_m) et (e i:t
_p) et (e i:t
et (itor 'Et

+ 31
- 18
dictsource/fr_list View File

@@ -5,7 +5,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-02-14 Michel Such <[email protected]>
// Updated 2008-02-20 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -32,7 +32,7 @@ e @
f Ef
g Ze
h aS
i i
// i i
ï i:tRema
j Zi
k ka
@@ -197,6 +197,8 @@ mbrola Em'bRola
mlle mad@mwazEl
mme madam
mr m@sjY
nsi $abbrev
nsis $abbrev
nti $abbrev
nvda $abbrev
ong $abbrev
@@ -366,6 +368,7 @@ tout t'ut2 $u
// Letters which can be words
//===========================
à a:aksA~gRav $atend
i i $atend
y i:gR'Ek $atend


@@ -375,6 +378,7 @@ y i:gR'Ek $atend
consent kO~s'A~t2
scient si
bénéficient benefisi $verb
coing kwE~
concurrent kO~kyR'A~
content kO~t@-t2 $verb
couvent k'uvt2 $verb
@@ -386,9 +390,11 @@ divers divErz2
évident evidt2 $verb
ferment fErm'A~
ferment f'Ermt2 $verb
firent f'irt2
parent paR'A~
parent p'art2 $verb
pastis pastis
poing pwE~
président pRezid'A~
président pRezidt2 $verb
résident Rezid'A~
@@ -400,6 +406,7 @@ sergent sErZ'A~
serment sErm'A~
serpent sErp'A~
torrent tOR'A~
tunis tynis


// MAIN WORD DICTIONARY
@@ -436,6 +443,7 @@ fils fis
imprudent E~pRydA~
iris iris
juin ZyE~
laser lazEr
malus malys
mars maRs
minus minys
@@ -533,49 +541,44 @@ flirt fl@Rt
// words from other languages
about _^_en
acer asEr
again _^_en
against _^_en
alone _^_en
also _^_en
and _^_en
amazon amaz'On
any Eni
apple _^_en
april _^_en
at _^_en
(audible manager) odibl||manadZ@r
be _^_en
being _^_en
bit _^_en
bluetooth blut'us
both _^_en
browser _^_en
can _^_en
computer _^_en
(cyber link) sibEr||link
(cyber link) _^_en
debian dEbjAn
does _^_en
doesn't _^_en
don't _^_en
driver _^_en
edit edit
emacs Emaks
emacspeak Emakspi:k
end _^_en
enter 'Ent@r
epson EpsOn
espeak @spi:k
ethernet etERnEt
ever _^_en
exit egzit
eye _^_en
eyes _^_en
false _^_en
(file zilla) fajl||zija
fire _^_en
firefox faj@RfOks
for _^_en
get _^_en
google gu:g@l
gnome gnom
gnu gnu
hamburger _!A~b@rg@r
help _^_en
hot _^_en
in _^_en
into _^_en
inside _^_en
@@ -585,20 +588,29 @@ internet E~tERnEt
is _^_en
it _^_en
its _^_en
june _^_en
july _^_en
klaxon klaksOn
later _^_en
latest _^_en
layer _^_en
let _^_en
liszt list
lite _^_en
login _^_en
logon _^_en
(mac os x) makoEsiks
made _^_en
mail _^_en
march _^_en
media medja
messenger _^_en
my _^_en
name _^_en
never _^_en
not _^_en
null _^_en
october _^_en
of _^_en
often _^_en
ok oke
@@ -606,13 +618,16 @@ open Op'@n
outlook autluk
outside _^_en
outsider _^_en
paint _^_en
player _^_en
redhat REdat
same _^_en
sametime _^_en
she _^_en
schubert SubER
since _^_en
sun _^_en
sure _^_en
(text aloud) tEkst||@lawd
their _^_en
there _^_en
@@ -620,16 +635,14 @@ these _^_en
those _^_en
they _^_en
thus _^_en
thunderbird D'@ndYR||b@Rd
time _^_en
timer _^_en
true _^_en
ubuntu ubuntu
up _^_en
viking vikiN
was _^_en
won't _^_en
yacht jot
yes jEs $brk
yes _^_en


// tions (tjO~ instead of sjO~)

+ 126
- 28
dictsource/fr_rules View File

@@ -4,7 +4,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2008-02-14 Michel Such <[email protected]>
// Updated: 2008-02-20 Michel Such <[email protected]>
//
// * The rules are based on Cicero TTS.
// Y
@@ -15,6 +15,9 @@
// Y front vowels: e i y é ê è î
// K not a vowel (i.e. consonant, space, )

.L01 a b c d e f g h i l p q r t v
.L02 a e i o u y


.group a
ae (_ e // reggae vitae
@@ -51,11 +54,18 @@

// group a: English section
_C) ad (_ _^_en // bad, had, sad
_) again (X _^_en // again, against
alk _^_en // talk, walk
all (_ _^_en // football handball
f) all (en_ _^_en // fallen
sm) all _^_en // small, smaller
ally (_ _^_en // really, naturally
ank _^_en // tank, blank
ark _^_en // dark, park
ainl _^_en
ainm _^_en
_C) ast (_ _^_en
_C) ast (eX _^_en
ather (_ _^_en // rather
aunc _^_en
a (wC _^_en


@@ -65,13 +75,16 @@
b b // aube

// group b: English section
back _^_en
bbl _^_en
bird _^_en // bird
_) blue (X _^_en // probably
bly (_ _^_en // probably
board _^_en // board, keyboard
box (_ _^_en // box, inbox, outbox
bug (_ _^_en // bug, debug
bug (g _^_en // debugger
buil _^_en // build, built
buil _^_en
_) buy _^_en
_) by _^_en // by, bye, bypass

@@ -119,7 +132,8 @@

// group c: English section
cast (_ _^_en // broadcast
calt (_ _^_en // difficult
chme _^_en
cult (_ _^_en // difficult
cut (_ _^_en // cut, shortcut
cy (_ _^_en // currency, frequency

@@ -149,8 +163,14 @@

// group d: English section
') d (_ _^_en
lor) d (_ _^_en
day (_ _^_en
_) dec _^_en
dece _^_en
_) def _^_en
dele _^_en
deter _^_en
_) devic _^_en
diffe _^_en
dle (X _^_en // bundle, handle
dly (_ _^_en
dy (_ _^_en
@@ -259,8 +279,11 @@
_Ch) er (_ ER // cher
_env) er (_ ER
_hi) er (_ ER // hier
_hyp) er (_ ER // hyper
_hiv) er (_ ER // hiver
_sup) er (_ ER // super
_trav) er (_ ER
_univ) er (_ ER
_ti) er (_ ER


@@ -378,8 +401,10 @@
e @ // menue

// group e: English section
eac _^_en
C) ead _^_en // read, head
eaf _^_en // leaf
eag _^_en // eagle
eak _^_en // break, speak
Cr) eam _^_en // stream
Cl) ean _^_en // clean
@@ -388,21 +413,33 @@
ear _^_en // ear, search
eas _^_en // please
eat _^_en // eat, seat
eave _^_en // leave
ed (_ _^_en
_) edit _^_en
ee _^_en // meeting
eave _^_en // leave
eft (_ _^_en // left
ehen _^_en // comprehensive
eing _^_en // being, goeing
eive _^_en // receive
eith _^_en // either neither
ej _^_en
_) el (AC _^_en // element, eliminate
eld (_ _^_en // field
elf (_ _^_en // shelf
elves (_ _^_en // shelves
ember (_ _^_en
enter (_ _^_en // enter, center
ely (_ _^_en // lately
_) enhan _^_en
ooC) er (_ _^_en // scooter
_ov) er _^_en // over
ern (_ _^_en // western
_C) etter (_ _^_en // letter, better
ack) et (_ _^_en // racket, packet
ock) et (_ _^_en // rocket, pocket
ery (_ _^_en // query
qu) est (_ _^_en // request
qu) este (X_ _^_en // requested, requester
_) ev _^_en // even, ever, event
oC) ever _^_en // forever, however


.group ë
@@ -420,11 +457,12 @@
fail (_ _^_en // fail
fail (A _^_en // failure
faith _^_en // failure
_) fire _^_en
fly _^_en
ford (_ _^_en
_) frame _^_en
_) freq _^_en
friend _^_en // friend, friendly
full (_ _^_en
fully (_ _^_en
fy (_ _^_en


@@ -470,6 +508,8 @@
g Z // congé george

// group g: English section
_) game (X _^_en
@@) gate (X _^_en
gh _^_en // high, higher
girl _^_en // girl
gly (_ _^_en
@@ -591,15 +631,29 @@ _) h (As_ _^_en // has, his
ique (_ ik

// group i: English section
A_) i (_ _^_en
C_) i (_ _^_en
_) i (_A _^_en
_) i (_C _^_en
L02C) ic (_ _^_en
L02CC) ic (_ _^_en
@C) id (_ _^_en
idd _^_en
iev _^_en
ife (_ _^_en
igg _^_en
ike (X _^_en // bike, like
ill (_ _^_en // ill, will, fill
C) illy (_ _^_en // silly
ild _^_en
ilt _^_en
ing (_ _^_en // parking
ind (_ _^_en // find, mind
ind (er_ _^_en // finder, reminder
_C) ind (er_ _^_en // finder, reminder
_AC) ind (er_ _^_en // finder, reminder
ink _^_en // link, pink
ip (_ _^_en // chip, ship
ious (_ _^_en // various
iously (_ _^_en // previously
ist (_ _^_en // tourist
ism (_ _^_en // tourism
ize _^_en // realize

@@ -628,6 +682,7 @@ _) h (As_ _^_en // has, his

// group k: English section
ke (X _^_en // basket, make, take
key _^_en
ky (_ _^_en

.group l
@@ -642,7 +697,12 @@ _) h (As_ _^_en // has, his
') ld (_ _^_en
') ll (_ _^_en
less (_ _^_en // noiseless
_) live _^_en
ll (_ _^_en
lly (_ _^_en
lk (_ _^_en
lessly (_ _^_en // endlessly
lord (_ _^_en


.group m
@@ -650,6 +710,7 @@ _) h (As_ _^_en // has, his
mm m // pomme

// group m: English section
') m (_ _^_en
mail (A _^_en // mailer
may _^_en
mov (A _^_en // move, movy
@@ -667,6 +728,7 @@ _) h (As_ _^_en // has, his

// group n: English section
n't (_ _^_en
nunc _^_en
ny (_ _^_en


@@ -684,10 +746,6 @@ _) h (As_ _^_en // has, his
_) oi (gnon O // oignons
oin (C wE~
oin (_ wE~ // coin
C) oing (_ o'iN // going
c) oing (_ wE~ // coing
p) oing (_ wE~ // poing
oing (_ wE~ // poing, coing
oi wa // poil
oid (_ wa // froid
oê (l wa // poêle
@@ -719,7 +777,6 @@ p) oing (_ wE~ // poing
z) oo o // zoo
z) oo (C oo // zoologue
z) oo (m u // zoom
oo (X u // pool
_gal) op (_ o // galop

_sir) op (_ o // sirop
@@ -748,16 +805,26 @@ p) oing (_ wE~ // poing
o O // sobre notions émotions

// group o: English section
C) oad (_ _^_en // load, road
C) oad (eX _^_en // loaded
C) oat _^_en // boat
oa (X _^_en // approach, load
oa (CeX _^_en
oach _^_en
oes (_ _^_en
old (er_ _^_en // folder, older
C) oing (_ _^_en // going
_aC) ong (_ _^_en // along, among
oo (Ce _^_en // boomer
oo (X _^_en // pool
C) oot _^_en // bootable football
_) one _^_en
_) onl _^_en
orm (_ _^_en
_sC) ot _^_en
othe _^_en // other, mother
C) ou (ld_ _^_en // could, should
oun (C _^_en // bounce, found
_C) ouse _^_en // mouse, house
C) outh _^_en // mouth, south
_) over _^_en // over
ow _^_en // cow, town, down
oy (X _^_en // boy, toy

@@ -790,8 +857,12 @@ p) oing (_ wE~ // poing
se) pt (iè t // septième

// group p: English section
pad (_ _^_en
plug _^_en // plug
pmen _^_en
ply (_ _^_en // simply
_) pre (L01 _^_en
press (_ _^_en
print (_ _^_en // print
printer (_ _^_en // printer
_) prove (X _^_en // prove
@@ -826,6 +897,10 @@ mou) rr RR // mourrai
r r // rien

// group r: English section
AC) ram (_ _^_en
_) real _^_en
rese _^_en
rst (_ _^_en
_) rule (X _^_en // rule
ry (_ _^_en // theory

@@ -903,15 +978,18 @@ e) s (_h z2
s (v z

// group s: English section
') s (_ _^_en // possessive
') s (_ _^_en
sh (_ _^_en
she (C_ _^_en
ship _^_en // friendship
shop _^_en // shop
sh (At _^_en // shut, shot
shout _^_en
sky _^_en
sk _^_en
_) smil _^_en // smile, smiley
spy _^_en
A) ss (_ _^_en // boss, cross
_) state _^_en // state, statement
C) s (ton _^_en // winston
stone (_ _^_en
sy (_ _^_en
@@ -979,11 +1057,19 @@ C) te (_ t@- // patte
_ce) t (_ t

// group t: English section
tch (_ _^_en
_) th (AX _^_en // that, this, then, than
C) th (_ _^_en // month
_) time _^_en
tle (_ _^_en
too _^_en
ttl _^_en
try (_ _^_en // try, country
sCar) t (_ _^_en // smart, start
sCar) t (er_ _^_en // starter
tme _^_en
tne _^_en
_) tun (AX _^_en
ty (_ _^_en // party, buty


@@ -1020,8 +1106,14 @@ C) te (_ t@- // patte
// group u: English section
C) u (ch_ _^_en // much such
C) ui (ce _^_en // produice, juice
up (C _^_en // upper, update
umber (_ _^_en
ump (_ _^_en
unch _^_en
_C) unct _^_en // function, punctuation
under _^_en // under, understand, thunder
_) up (C _^_en // upper, update
upt (_ _^_en
up (_ _^_en // setup
C) ur (ch _^_en // church
urn (X _^_en // burn, turn
ust (_ _^_en // just, trust
@@ -1033,7 +1125,8 @@ C) te (_ t@- // patte

// goup v: English section
') ve (_ _^_en
voice (_ _^_en
vail (A _^_en
voice (X _^_en
void (_ _^_en
vy (_ _^_en

@@ -1045,11 +1138,13 @@ C) te (_ t@- // patte
// group w: English section
A) w _^_en
wa (Ce_ _^_en // hardware software wave
_) wan _^_en
wr _^_en // write
w (ACh _^_en // wash, wish, with
w (ACC _^_en // wash, wish, with
way _^_en // way, away
wh _^_en // what, which, who
_) wi _^_en // winner, window, wire
_) wi _^_en // wire
win _^_en // winner, window
wise _^_en
_) wom _^_en // woman
wor _^_en // word, world
@@ -1082,6 +1177,9 @@ C) te (_ t@- // patte
si) x (iè z // sixième
deu) x (iè z // deuxième

// group x: English section
xamp _^_en


.group y
y i // cryogénique myope

+ 1
- 0
dictsource/hi_list View File

@@ -154,6 +154,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
य j@
र r@
ऱ r@
ळ l.@
व v@
श S@
ष s.@ // should be retroflex [S]

+ 8
- 8
dictsource/hi_rules View File

@@ -343,16 +343,16 @@
्) ल (_ lV

.group ळ
ळ lV // (temporary) same as [l]
ळ (B l
?1 ल (_ l
्) ल (_ lV
ळ l.V
ळ (B l.
?1 ल (_ l.
्) ल (_ l.V

.group ऴ
ऴ lV // (temporary) same as [l]
ऴ (B l
?1 ल (_ l
्) ल (_ lV
ऴ l.V // (temporary) same as [l.]
ऴ (B l.
?1 ल (_ l.
्) ल (_ l.V

.group व
व vV

+ 7
- 1
dictsource/tr_list View File

@@ -48,6 +48,8 @@ _7 jedi
_8 sekiz
_9 dokuz
_10 on
_11 'onbir
_12 'oniki
_1X on
_2X jirmi
_3X otuz
@@ -58,10 +60,14 @@ _7X jetmiS
_8X seksEn
_9X doksan
_0C jyz
_2C 'ikijyz
_0M1 bIn
_1M1 bIn
_0M2 miljon
_1M2 miljon
_0M3 miljar
_dpt _virg,Yl
_1M3 miljar
_dpt _virg,Yl_|




+ 4
- 0
dictsource/tr_rules View File

@@ -6,6 +6,8 @@
.group a
a a

avru (pa avr'u

.group b
b b

@@ -18,6 +20,8 @@
.group d
d d

_) d (eğil 'd

.group e
e e


+ 2
- 0
dictsource/zh_rules View File

@@ -263,3 +263,5 @@ language).
4 51
5 11

| _|


espeak-data/voices/es_la → espeak-data/voices/es-la View File


+ 5
- 4
phsource/compile_report View File

@@ -17,8 +17,8 @@
fi 40 130
fr 44 125
fr_ca 11 125
hi 50 135
ta 16 138
hi 51 136
ta 15 138
hu 23 115
nl 28 122
pl 15 110
@@ -47,7 +47,7 @@
th 50 142
id 14 120
tr 14 123
ku 12 120
ku 13 120
ja 7 104

Data file Used by
@@ -361,7 +361,7 @@ l/l_long [l] base
[l;] ro
l/lo [(o)] base
[l] fr
l^/l_rfx [l.] ta
l^/l_rfx [l.] hi
l/lu [(u)] base
[l] fr
l/tl [l] base
@@ -952,6 +952,7 @@ vdiph/eeu_2 [EU] la
[EU] pt_pt
vdiph/eeu_3 [aU] en_n
[aU] en_wm
[eU] ku
vdiph/eey [ey] fi
vdiph/ei [eI] base2
[e:] nl

+ 7
- 0
phsource/ph_hindi View File

@@ -216,6 +216,13 @@ endphoneme
// CONSONANTS
//===========

phoneme l.
liquid rfx
lengthmod 7
formants l^/l_rfx
endphoneme



phoneme v // no fricative noise
vcd lbd frc

+ 0
- 7
phsource/ph_tamil View File

@@ -96,13 +96,6 @@ phoneme u-
endphoneme


phoneme l.
liquid rfx
lengthmod 7
formants l^/l_rfx
endphoneme


// ?? This is standard [v]. Should be it [v] without the fricative noise?
phoneme v
vcd lbd frc

+ 1
- 1
src/compiledict.cpp View File

@@ -1510,8 +1510,8 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha

fprintf(f_log,"Using phonemetable: '%s'\n",PhonemeTabName());
compile_dictlist_file(path,"roots");
compile_dictlist_file(path,"listx");
compile_dictlist_file(path,"list");
compile_dictlist_file(path,"listx");
compile_dictlist_file(path,"extra");
compile_dictlist_end(f_out);

+ 8
- 5
src/intonation.cpp View File

@@ -233,7 +233,7 @@ typedef struct {

int *body_drops;
unsigned char body_max_steps;
unsigned char body_lower_u;
char body_lower_u;

char n_overflow;
short *overflow;
@@ -270,8 +270,8 @@ static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = {
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence
{20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 9 comma
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question
{20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 11 test
{19, 26, 36, 20, drops_0, 2, 4, 5, oflow_test2}, // 12 test
{15, 18, 18, 14, drops_0, 3, 3, 5, oflow_less}, // 11 test
{20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 12 test
};

static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
@@ -1069,6 +1069,10 @@ void Translator::CalcPitches(int clause_type)
{
p->env = PITCHrise;
}
else
if(p->tone > 5)
p->env = syl->env;

if(p->pitch1 > p->pitch2)
{
// swap so that pitch2 is the higher
@@ -1076,8 +1080,7 @@ void Translator::CalcPitches(int clause_type)
p->pitch1 = p->pitch2;
p->pitch2 = x;
}
if(p->tone > 5)
p->env = syl->env;


if(syl->flags & SYL_EMPHASIS)
{

+ 8
- 4
src/numbers.cpp View File

@@ -37,8 +37,8 @@



void Translator::LookupLetter(int letter, int next_byte, char *ph_buf1)
{//==================================================================
void Translator::LookupLetter(unsigned int letter, int next_byte, char *ph_buf1)
{//=============================================================================
int len;
unsigned char *p;
static char single_letter[10] = {0,0};
@@ -643,6 +643,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags,
int this_value;
static int prev_value;
int decimal_count;
int max_decimal_count;
char string[12]; // for looking up entries in de_list
char buf1[100];
char ph_append[50];
@@ -783,8 +784,11 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags,

if(decimal_count > 1)
{
switch(langopts.numbers & 0x6000)
max_decimal_count = 2;
switch(langopts.numbers & 0xe000)
{
case 0x8000:
max_decimal_count = 5;
case 0x4000:
// French/Polish decimal fraction
while(word[n_digits] == '0')
@@ -794,7 +798,7 @@ int Translator::TranslateNumber_1(char *word, char *ph_out, unsigned int *flags,
decimal_count--;
n_digits++;
}
if(decimal_count < 6)
if(decimal_count <= max_decimal_count)
{
LookupNum3(atoi(&word[n_digits]),buf1,0,0,0);
strcat(ph_out,buf1);

+ 10
- 3
src/speak.cpp View File

@@ -59,7 +59,7 @@ int (* uri_callback)(int, const char *, const char *) = NULL;
int (* phoneme_callback)(const char *) = NULL;

FILE *f_wave = NULL;
int quiet = 0;
int quiet = 0;
unsigned int samples_total = 0;
unsigned int samples_split = 0;
unsigned int wavefile_count = 0;
@@ -304,6 +304,9 @@ static int WavegenFile(void)

finished = WavegenFill(0);

if(quiet)
return(finished);

if(f_wave == NULL)
{
sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype);
@@ -794,15 +797,19 @@ int main (int argc, char **argv)
InitText(0);
SpeakNextClause(f_text,p_text,0);

ix = 1;
for(;;)
{
if(WavegenFile() != 0)
{
break; // finished, wavegen command queue is empty
if(ix == 0)
break; // finished, wavegen command queue is empty
}

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

CloseWaveFile();

+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.31.12 16.Feb.08";
const char *version_string = "1.31.13 21.Feb.08";
const int version_phdata = 0x013105;

int option_device_number = -1;

+ 6
- 0
src/synthesize.cpp View File

@@ -100,6 +100,12 @@ void SynthesizeInit()
// next_pause.ph = phoneme_tab[phonPAUSE]; // this must be done after voice selection
next_pause.type = phPAUSE;
next_pause.newword = 0;

if(!iswalpha(0x010d))
{
// check that c-caron is recognized as an alphabetic character
fprintf(stderr,"iswalpha() Accented letters are not recognized\n");
}
}



+ 4
- 4
src/tr_languages.cpp View File

@@ -277,7 +277,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables

tr->langopts.numbers = 0x1509 + 0x4000 + NUM_NOPAUSE | NUM_ROMAN;
tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN;
SetLetterVowel(tr,'y');
}
break;
@@ -642,7 +642,7 @@ SetLengthMods(tr,3); // all equal
}
break;

case L('t','a'):
case L('t','a'): // Tamil
{
static const short stress_lengths_ta[8] = {190, 190, 200, 200, 0, 0, 220, 220};
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };
@@ -693,7 +693,7 @@ SetLengthMods(tr,3); // all equal

tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable

tr->langopts.numbers = 0x1d09;
tr->langopts.numbers = 0x1d09 + 0x4000;
tr->langopts.max_initial_consonants = 2;
}
break;
@@ -734,7 +734,7 @@ SetLengthMods(tr,3); // all equal
case L('z','h'):
case L_zhy:
{
static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 240,290};
static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 240,250}; // 1=tone5. end-of-sentence, 6=tone 1&4, 7=tone 2&3
static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 };

tr = new Translator;

+ 2
- 2
src/translate.cpp View File

@@ -363,7 +363,7 @@ int IsAlpha(unsigned int c)
return(1); // Devanagari vowel signs and other signs

if((c >= 0xb81) && (c <= 0xbe5))
return(1); // Devanagari vowel signs and other signs
return(1); // Tamil vowel signs and other signs

if((c >= 0x300) && (c <= 0x36f))
return(1); // combining accents
@@ -2049,7 +2049,7 @@ if((c == '/') && (langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(prev_ou
else
if(IsAlpha(c))
{
if(!IsAlpha(prev_out) || (langopts.ideographs && ((c >= 0x3000) || (prev_out >= 0x3000))))
if(!IsAlpha(prev_out) || (langopts.ideographs && ((c > 0x3040) || (prev_out > 0x3040))))
{
if(wcschr(punct_within_word,prev_out) == 0)
letter_count = 0; // don't reset count for an apostrophy within a word

+ 1
- 1
src/translate.h View File

@@ -428,7 +428,7 @@ private:
const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab);
const char *LookupSpecial(const char *string);
const char *LookupCharName(int c);
void LookupLetter(int letter, int next_byte, char *ph_buf);
void LookupLetter(unsigned int letter, int next_byte, char *ph_buf);
int LookupNum2(int value, int control, char *ph_out);
int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands);
int LookupThousands(int value, int thousandplex, char *ph_out);

Loading…
Cancel
Save