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-fd96e6ae7743master
@@ -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 |
@@ -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 |
@@ -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~) |
@@ -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 |
@@ -154,6 +154,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
य j@ | |||
र r@ | |||
ऱ r@ | |||
ळ l.@ | |||
व v@ | |||
श S@ | |||
ष s.@ // should be retroflex [S] |
@@ -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 |
@@ -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_| | |||
@@ -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 | |||
@@ -263,3 +263,5 @@ language). | |||
4 51 | |||
5 11 | |||
| _| | |||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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); |
@@ -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) | |||
{ |
@@ -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); |
@@ -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(); |
@@ -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; |
@@ -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"); | |||
} | |||
} | |||
@@ -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; |
@@ -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 |
@@ -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); |