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
O~ r- U u: V | O~ r- U u: V | ||||
: b c ch d d. f g | : 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 | Dictionary hu_dict |
phab) et (_ Et | phab) et (_ Et | ||||
ber) et (_ eI | ber) et (_ eI | ||||
gr) et (+ Et | gr) et (+ Et | ||||
f) et (a i: | |||||
f) et (a i:t | |||||
_m) et (e i:t | _m) et (e i:t | ||||
_p) et (e i:t | _p) et (e i:t | ||||
et (itor 'Et | et (itor 'Et |
// 2006-11-18 Gilles Casse <[email protected]> | // 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. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
f Ef | f Ef | ||||
g Ze | g Ze | ||||
h aS | h aS | ||||
i i | |||||
// i i | |||||
ï i:tRema | ï i:tRema | ||||
j Zi | j Zi | ||||
k ka | k ka | ||||
mlle mad@mwazEl | mlle mad@mwazEl | ||||
mme madam | mme madam | ||||
mr m@sjY | mr m@sjY | ||||
nsi $abbrev | |||||
nsis $abbrev | |||||
nti $abbrev | nti $abbrev | ||||
nvda $abbrev | nvda $abbrev | ||||
ong $abbrev | ong $abbrev | ||||
// Letters which can be words | // Letters which can be words | ||||
//=========================== | //=========================== | ||||
à a:aksA~gRav $atend | à a:aksA~gRav $atend | ||||
i i $atend | |||||
y i:gR'Ek $atend | y i:gR'Ek $atend | ||||
consent kO~s'A~t2 | consent kO~s'A~t2 | ||||
scient si | scient si | ||||
bénéficient benefisi $verb | bénéficient benefisi $verb | ||||
coing kwE~ | |||||
concurrent kO~kyR'A~ | concurrent kO~kyR'A~ | ||||
content kO~t@-t2 $verb | content kO~t@-t2 $verb | ||||
couvent k'uvt2 $verb | couvent k'uvt2 $verb | ||||
évident evidt2 $verb | évident evidt2 $verb | ||||
ferment fErm'A~ | ferment fErm'A~ | ||||
ferment f'Ermt2 $verb | ferment f'Ermt2 $verb | ||||
firent f'irt2 | |||||
parent paR'A~ | parent paR'A~ | ||||
parent p'art2 $verb | parent p'art2 $verb | ||||
pastis pastis | pastis pastis | ||||
poing pwE~ | |||||
président pRezid'A~ | président pRezid'A~ | ||||
président pRezidt2 $verb | président pRezidt2 $verb | ||||
résident Rezid'A~ | résident Rezid'A~ | ||||
serment sErm'A~ | serment sErm'A~ | ||||
serpent sErp'A~ | serpent sErp'A~ | ||||
torrent tOR'A~ | torrent tOR'A~ | ||||
tunis tynis | |||||
// MAIN WORD DICTIONARY | // MAIN WORD DICTIONARY | ||||
imprudent E~pRydA~ | imprudent E~pRydA~ | ||||
iris iris | iris iris | ||||
juin ZyE~ | juin ZyE~ | ||||
laser lazEr | |||||
malus malys | malus malys | ||||
mars maRs | mars maRs | ||||
minus minys | minus minys | ||||
// words from other languages | // words from other languages | ||||
about _^_en | about _^_en | ||||
acer asEr | acer asEr | ||||
again _^_en | |||||
against _^_en | |||||
alone _^_en | alone _^_en | ||||
also _^_en | also _^_en | ||||
and _^_en | and _^_en | ||||
amazon amaz'On | amazon amaz'On | ||||
any Eni | |||||
apple _^_en | apple _^_en | ||||
april _^_en | |||||
at _^_en | at _^_en | ||||
(audible manager) odibl||manadZ@r | (audible manager) odibl||manadZ@r | ||||
be _^_en | be _^_en | ||||
being _^_en | |||||
bit _^_en | |||||
bluetooth blut'us | bluetooth blut'us | ||||
both _^_en | both _^_en | ||||
browser _^_en | |||||
can _^_en | can _^_en | ||||
computer _^_en | computer _^_en | ||||
(cyber link) sibEr||link | |||||
(cyber link) _^_en | |||||
debian dEbjAn | debian dEbjAn | ||||
does _^_en | |||||
doesn't _^_en | |||||
don't _^_en | don't _^_en | ||||
driver _^_en | driver _^_en | ||||
edit edit | |||||
emacs Emaks | emacs Emaks | ||||
emacspeak Emakspi:k | emacspeak Emakspi:k | ||||
end _^_en | end _^_en | ||||
enter 'Ent@r | |||||
epson EpsOn | epson EpsOn | ||||
espeak @spi:k | espeak @spi:k | ||||
ethernet etERnEt | ethernet etERnEt | ||||
ever _^_en | |||||
exit egzit | exit egzit | ||||
eye _^_en | eye _^_en | ||||
eyes _^_en | eyes _^_en | ||||
false _^_en | |||||
(file zilla) fajl||zija | (file zilla) fajl||zija | ||||
fire _^_en | |||||
firefox faj@RfOks | |||||
for _^_en | |||||
get _^_en | get _^_en | ||||
google gu:g@l | google gu:g@l | ||||
gnome gnom | gnome gnom | ||||
gnu gnu | gnu gnu | ||||
hamburger _!A~b@rg@r | hamburger _!A~b@rg@r | ||||
help _^_en | help _^_en | ||||
hot _^_en | |||||
in _^_en | in _^_en | ||||
into _^_en | into _^_en | ||||
inside _^_en | inside _^_en | ||||
is _^_en | is _^_en | ||||
it _^_en | it _^_en | ||||
its _^_en | its _^_en | ||||
june _^_en | |||||
july _^_en | |||||
klaxon klaksOn | klaxon klaksOn | ||||
later _^_en | |||||
latest _^_en | |||||
layer _^_en | layer _^_en | ||||
let _^_en | let _^_en | ||||
liszt list | liszt list | ||||
lite _^_en | lite _^_en | ||||
login _^_en | |||||
logon _^_en | logon _^_en | ||||
(mac os x) makoEsiks | (mac os x) makoEsiks | ||||
made _^_en | made _^_en | ||||
mail _^_en | mail _^_en | ||||
march _^_en | |||||
media medja | media medja | ||||
messenger _^_en | messenger _^_en | ||||
my _^_en | my _^_en | ||||
name _^_en | name _^_en | ||||
never _^_en | |||||
not _^_en | not _^_en | ||||
null _^_en | |||||
october _^_en | |||||
of _^_en | of _^_en | ||||
often _^_en | often _^_en | ||||
ok oke | ok oke | ||||
outlook autluk | outlook autluk | ||||
outside _^_en | outside _^_en | ||||
outsider _^_en | outsider _^_en | ||||
paint _^_en | |||||
player _^_en | player _^_en | ||||
redhat REdat | redhat REdat | ||||
same _^_en | same _^_en | ||||
sametime _^_en | sametime _^_en | ||||
she _^_en | |||||
schubert SubER | schubert SubER | ||||
since _^_en | since _^_en | ||||
sun _^_en | sun _^_en | ||||
sure _^_en | |||||
(text aloud) tEkst||@lawd | (text aloud) tEkst||@lawd | ||||
their _^_en | their _^_en | ||||
there _^_en | there _^_en | ||||
those _^_en | those _^_en | ||||
they _^_en | they _^_en | ||||
thus _^_en | thus _^_en | ||||
thunderbird D'@ndYR||b@Rd | |||||
time _^_en | |||||
timer _^_en | |||||
true _^_en | |||||
ubuntu ubuntu | ubuntu ubuntu | ||||
up _^_en | up _^_en | ||||
viking vikiN | viking vikiN | ||||
was _^_en | was _^_en | ||||
won't _^_en | won't _^_en | ||||
yacht jot | yacht jot | ||||
yes jEs $brk | |||||
yes _^_en | |||||
// tions (tjO~ instead of sjO~) | // tions (tjO~ instead of sjO~) |
// 2006-11-18 Gilles Casse <[email protected]> | // 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. | // * The rules are based on Cicero TTS. | ||||
// Y | // Y | ||||
// Y front vowels: e i y é ê è î | // Y front vowels: e i y é ê è î | ||||
// K not a vowel (i.e. consonant, space, ) | // 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 | .group a | ||||
ae (_ e // reggae vitae | ae (_ e // reggae vitae | ||||
// group a: English section | // group a: English section | ||||
_C) ad (_ _^_en // bad, had, sad | _C) ad (_ _^_en // bad, had, sad | ||||
_) again (X _^_en // again, against | |||||
alk _^_en // talk, walk | alk _^_en // talk, walk | ||||
all (_ _^_en // football handball | |||||
f) all (en_ _^_en // fallen | f) all (en_ _^_en // fallen | ||||
sm) all _^_en // small, smaller | 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 | a (wC _^_en | ||||
b b // aube | b b // aube | ||||
// group b: English section | // group b: English section | ||||
back _^_en | |||||
bbl _^_en | |||||
bird _^_en // bird | bird _^_en // bird | ||||
_) blue (X _^_en // probably | |||||
bly (_ _^_en // probably | bly (_ _^_en // probably | ||||
board _^_en // board, keyboard | board _^_en // board, keyboard | ||||
box (_ _^_en // box, inbox, outbox | box (_ _^_en // box, inbox, outbox | ||||
bug (_ _^_en // bug, debug | bug (_ _^_en // bug, debug | ||||
bug (g _^_en // debugger | bug (g _^_en // debugger | ||||
buil _^_en // build, built | |||||
buil _^_en | |||||
_) buy _^_en | _) buy _^_en | ||||
_) by _^_en // by, bye, bypass | _) by _^_en // by, bye, bypass | ||||
// group c: English section | // group c: English section | ||||
cast (_ _^_en // broadcast | cast (_ _^_en // broadcast | ||||
calt (_ _^_en // difficult | |||||
chme _^_en | |||||
cult (_ _^_en // difficult | |||||
cut (_ _^_en // cut, shortcut | cut (_ _^_en // cut, shortcut | ||||
cy (_ _^_en // currency, frequency | cy (_ _^_en // currency, frequency | ||||
// group d: English section | // group d: English section | ||||
') d (_ _^_en | ') d (_ _^_en | ||||
lor) d (_ _^_en | |||||
day (_ _^_en | day (_ _^_en | ||||
_) dec _^_en | |||||
dece _^_en | |||||
_) def _^_en | |||||
dele _^_en | |||||
deter _^_en | |||||
_) devic _^_en | |||||
diffe _^_en | |||||
dle (X _^_en // bundle, handle | dle (X _^_en // bundle, handle | ||||
dly (_ _^_en | dly (_ _^_en | ||||
dy (_ _^_en | dy (_ _^_en | ||||
_Ch) er (_ ER // cher | _Ch) er (_ ER // cher | ||||
_env) er (_ ER | _env) er (_ ER | ||||
_hi) er (_ ER // hier | _hi) er (_ ER // hier | ||||
_hyp) er (_ ER // hyper | |||||
_hiv) er (_ ER // hiver | _hiv) er (_ ER // hiver | ||||
_sup) er (_ ER // super | |||||
_trav) er (_ ER | _trav) er (_ ER | ||||
_univ) er (_ ER | |||||
_ti) er (_ ER | _ti) er (_ ER | ||||
e @ // menue | e @ // menue | ||||
// group e: English section | // group e: English section | ||||
eac _^_en | |||||
C) ead _^_en // read, head | C) ead _^_en // read, head | ||||
eaf _^_en // leaf | eaf _^_en // leaf | ||||
eag _^_en // eagle | |||||
eak _^_en // break, speak | eak _^_en // break, speak | ||||
Cr) eam _^_en // stream | Cr) eam _^_en // stream | ||||
Cl) ean _^_en // clean | Cl) ean _^_en // clean | ||||
ear _^_en // ear, search | ear _^_en // ear, search | ||||
eas _^_en // please | eas _^_en // please | ||||
eat _^_en // eat, seat | eat _^_en // eat, seat | ||||
eave _^_en // leave | |||||
ed (_ _^_en | ed (_ _^_en | ||||
_) edit _^_en | |||||
ee _^_en // meeting | ee _^_en // meeting | ||||
eave _^_en // leave | |||||
eft (_ _^_en // left | eft (_ _^_en // left | ||||
ehen _^_en // comprehensive | |||||
eing _^_en // being, goeing | |||||
eive _^_en // receive | eive _^_en // receive | ||||
eith _^_en // either neither | 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 | ely (_ _^_en // lately | ||||
_) enhan _^_en | |||||
ooC) er (_ _^_en // scooter | ooC) er (_ _^_en // scooter | ||||
_ov) er _^_en // over | |||||
ern (_ _^_en // western | |||||
_C) etter (_ _^_en // letter, better | _C) etter (_ _^_en // letter, better | ||||
ack) et (_ _^_en // racket, packet | ack) et (_ _^_en // racket, packet | ||||
ock) et (_ _^_en // rocket, pocket | ock) et (_ _^_en // rocket, pocket | ||||
ery (_ _^_en // query | |||||
qu) est (_ _^_en // request | qu) est (_ _^_en // request | ||||
qu) este (X_ _^_en // requested, requester | qu) este (X_ _^_en // requested, requester | ||||
_) ev _^_en // even, ever, event | |||||
oC) ever _^_en // forever, however | |||||
.group ë | .group ë | ||||
fail (_ _^_en // fail | fail (_ _^_en // fail | ||||
fail (A _^_en // failure | fail (A _^_en // failure | ||||
faith _^_en // failure | faith _^_en // failure | ||||
_) fire _^_en | |||||
fly _^_en | fly _^_en | ||||
ford (_ _^_en | ford (_ _^_en | ||||
_) frame _^_en | |||||
_) freq _^_en | |||||
friend _^_en // friend, friendly | friend _^_en // friend, friendly | ||||
full (_ _^_en | |||||
fully (_ _^_en | |||||
fy (_ _^_en | fy (_ _^_en | ||||
g Z // congé george | g Z // congé george | ||||
// group g: English section | // group g: English section | ||||
_) game (X _^_en | |||||
@@) gate (X _^_en | |||||
gh _^_en // high, higher | gh _^_en // high, higher | ||||
girl _^_en // girl | girl _^_en // girl | ||||
gly (_ _^_en | gly (_ _^_en | ||||
ique (_ ik | ique (_ ik | ||||
// group i: English section | // 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 | ike (X _^_en // bike, like | ||||
ill (_ _^_en // ill, will, fill | |||||
C) illy (_ _^_en // silly | |||||
ild _^_en | |||||
ilt _^_en | |||||
ing (_ _^_en // parking | ing (_ _^_en // parking | ||||
ind (_ _^_en // find, mind | 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 | ink _^_en // link, pink | ||||
ip (_ _^_en // chip, ship | |||||
ious (_ _^_en // various | ious (_ _^_en // various | ||||
iously (_ _^_en // previously | iously (_ _^_en // previously | ||||
ist (_ _^_en // tourist | |||||
ism (_ _^_en // tourism | ism (_ _^_en // tourism | ||||
ize _^_en // realize | ize _^_en // realize | ||||
// group k: English section | // group k: English section | ||||
ke (X _^_en // basket, make, take | ke (X _^_en // basket, make, take | ||||
key _^_en | |||||
ky (_ _^_en | ky (_ _^_en | ||||
.group l | .group l | ||||
') ld (_ _^_en | ') ld (_ _^_en | ||||
') ll (_ _^_en | ') ll (_ _^_en | ||||
less (_ _^_en // noiseless | less (_ _^_en // noiseless | ||||
_) live _^_en | |||||
ll (_ _^_en | |||||
lly (_ _^_en | |||||
lk (_ _^_en | |||||
lessly (_ _^_en // endlessly | lessly (_ _^_en // endlessly | ||||
lord (_ _^_en | |||||
.group m | .group m | ||||
mm m // pomme | mm m // pomme | ||||
// group m: English section | // group m: English section | ||||
') m (_ _^_en | |||||
mail (A _^_en // mailer | mail (A _^_en // mailer | ||||
may _^_en | may _^_en | ||||
mov (A _^_en // move, movy | mov (A _^_en // move, movy | ||||
// group n: English section | // group n: English section | ||||
n't (_ _^_en | n't (_ _^_en | ||||
nunc _^_en | |||||
ny (_ _^_en | ny (_ _^_en | ||||
_) oi (gnon O // oignons | _) oi (gnon O // oignons | ||||
oin (C wE~ | oin (C wE~ | ||||
oin (_ wE~ // coin | oin (_ wE~ // coin | ||||
C) oing (_ o'iN // going | |||||
c) oing (_ wE~ // coing | |||||
p) oing (_ wE~ // poing | |||||
oing (_ wE~ // poing, coing | |||||
oi wa // poil | oi wa // poil | ||||
oid (_ wa // froid | oid (_ wa // froid | ||||
oê (l wa // poêle | oê (l wa // poêle | ||||
z) oo o // zoo | z) oo o // zoo | ||||
z) oo (C oo // zoologue | z) oo (C oo // zoologue | ||||
z) oo (m u // zoom | z) oo (m u // zoom | ||||
oo (X u // pool | |||||
_gal) op (_ o // galop | _gal) op (_ o // galop | ||||
_sir) op (_ o // sirop | _sir) op (_ o // sirop | ||||
o O // sobre notions émotions | o O // sobre notions émotions | ||||
// group o: English section | // 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 | old (er_ _^_en // folder, older | ||||
C) oing (_ _^_en // going | |||||
_aC) ong (_ _^_en // along, among | |||||
oo (Ce _^_en // boomer | oo (Ce _^_en // boomer | ||||
oo (X _^_en // pool | |||||
C) oot _^_en // bootable football | C) oot _^_en // bootable football | ||||
_) one _^_en | |||||
_) onl _^_en | |||||
orm (_ _^_en | |||||
_sC) ot _^_en | |||||
othe _^_en // other, mother | |||||
C) ou (ld_ _^_en // could, should | C) ou (ld_ _^_en // could, should | ||||
oun (C _^_en // bounce, found | oun (C _^_en // bounce, found | ||||
_C) ouse _^_en // mouse, house | _C) ouse _^_en // mouse, house | ||||
C) outh _^_en // mouth, south | C) outh _^_en // mouth, south | ||||
_) over _^_en // over | |||||
ow _^_en // cow, town, down | ow _^_en // cow, town, down | ||||
oy (X _^_en // boy, toy | oy (X _^_en // boy, toy | ||||
se) pt (iè t // septième | se) pt (iè t // septième | ||||
// group p: English section | // group p: English section | ||||
pad (_ _^_en | |||||
plug _^_en // plug | plug _^_en // plug | ||||
pmen _^_en | |||||
ply (_ _^_en // simply | ply (_ _^_en // simply | ||||
_) pre (L01 _^_en | |||||
press (_ _^_en | |||||
print (_ _^_en // print | print (_ _^_en // print | ||||
printer (_ _^_en // printer | printer (_ _^_en // printer | ||||
_) prove (X _^_en // prove | _) prove (X _^_en // prove | ||||
r r // rien | r r // rien | ||||
// group r: English section | // group r: English section | ||||
AC) ram (_ _^_en | |||||
_) real _^_en | |||||
rese _^_en | |||||
rst (_ _^_en | |||||
_) rule (X _^_en // rule | _) rule (X _^_en // rule | ||||
ry (_ _^_en // theory | ry (_ _^_en // theory | ||||
s (v z | s (v z | ||||
// group s: English section | // group s: English section | ||||
') s (_ _^_en // possessive | |||||
') s (_ _^_en | |||||
sh (_ _^_en | |||||
she (C_ _^_en | |||||
ship _^_en // friendship | ship _^_en // friendship | ||||
shop _^_en // shop | shop _^_en // shop | ||||
sh (At _^_en // shut, shot | sh (At _^_en // shut, shot | ||||
shout _^_en | shout _^_en | ||||
sky _^_en | |||||
sk _^_en | |||||
_) smil _^_en // smile, smiley | _) smil _^_en // smile, smiley | ||||
spy _^_en | spy _^_en | ||||
A) ss (_ _^_en // boss, cross | A) ss (_ _^_en // boss, cross | ||||
_) state _^_en // state, statement | |||||
C) s (ton _^_en // winston | C) s (ton _^_en // winston | ||||
stone (_ _^_en | stone (_ _^_en | ||||
sy (_ _^_en | sy (_ _^_en | ||||
_ce) t (_ t | _ce) t (_ t | ||||
// group t: English section | // group t: English section | ||||
tch (_ _^_en | |||||
_) th (AX _^_en // that, this, then, than | _) th (AX _^_en // that, this, then, than | ||||
C) th (_ _^_en // month | C) th (_ _^_en // month | ||||
_) time _^_en | |||||
tle (_ _^_en | |||||
too _^_en | |||||
ttl _^_en | |||||
try (_ _^_en // try, country | try (_ _^_en // try, country | ||||
sCar) t (_ _^_en // smart, start | sCar) t (_ _^_en // smart, start | ||||
sCar) t (er_ _^_en // starter | sCar) t (er_ _^_en // starter | ||||
tme _^_en | |||||
tne _^_en | |||||
_) tun (AX _^_en | |||||
ty (_ _^_en // party, buty | ty (_ _^_en // party, buty | ||||
// group u: English section | // group u: English section | ||||
C) u (ch_ _^_en // much such | C) u (ch_ _^_en // much such | ||||
C) ui (ce _^_en // produice, juice | 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 | under _^_en // under, understand, thunder | ||||
_) up (C _^_en // upper, update | |||||
upt (_ _^_en | |||||
up (_ _^_en // setup | |||||
C) ur (ch _^_en // church | C) ur (ch _^_en // church | ||||
urn (X _^_en // burn, turn | urn (X _^_en // burn, turn | ||||
ust (_ _^_en // just, trust | ust (_ _^_en // just, trust | ||||
// goup v: English section | // goup v: English section | ||||
') ve (_ _^_en | ') ve (_ _^_en | ||||
voice (_ _^_en | |||||
vail (A _^_en | |||||
voice (X _^_en | |||||
void (_ _^_en | void (_ _^_en | ||||
vy (_ _^_en | vy (_ _^_en | ||||
// group w: English section | // group w: English section | ||||
A) w _^_en | A) w _^_en | ||||
wa (Ce_ _^_en // hardware software wave | wa (Ce_ _^_en // hardware software wave | ||||
_) wan _^_en | |||||
wr _^_en // write | wr _^_en // write | ||||
w (ACh _^_en // wash, wish, with | |||||
w (ACC _^_en // wash, wish, with | |||||
way _^_en // way, away | way _^_en // way, away | ||||
wh _^_en // what, which, who | wh _^_en // what, which, who | ||||
_) wi _^_en // winner, window, wire | |||||
_) wi _^_en // wire | |||||
win _^_en // winner, window | |||||
wise _^_en | wise _^_en | ||||
_) wom _^_en // woman | _) wom _^_en // woman | ||||
wor _^_en // word, world | wor _^_en // word, world | ||||
si) x (iè z // sixième | si) x (iè z // sixième | ||||
deu) x (iè z // deuxième | deu) x (iè z // deuxième | ||||
// group x: English section | |||||
xamp _^_en | |||||
.group y | .group y | ||||
y i // cryogénique myope | y i // cryogénique myope |
य j@ | य j@ | ||||
र r@ | र r@ | ||||
ऱ r@ | ऱ r@ | ||||
ळ l.@ | |||||
व v@ | व v@ | ||||
श S@ | श S@ | ||||
ष s.@ // should be retroflex [S] | ष s.@ // should be retroflex [S] |
्) ल (_ lV | ्) ल (_ lV | ||||
.group ळ | .group ळ | ||||
ळ lV // (temporary) same as [l] | |||||
ळ (B l | |||||
?1 ल (_ l | |||||
्) ल (_ lV | |||||
ळ l.V | |||||
ळ (B l. | |||||
?1 ल (_ l. | |||||
्) ल (_ l.V | |||||
.group ऴ | .group ऴ | ||||
ऴ lV // (temporary) same as [l] | |||||
ऴ (B l | |||||
?1 ल (_ l | |||||
्) ल (_ lV | |||||
ऴ l.V // (temporary) same as [l.] | |||||
ऴ (B l. | |||||
?1 ल (_ l. | |||||
्) ल (_ l.V | |||||
.group व | .group व | ||||
व vV | व vV |
_8 sekiz | _8 sekiz | ||||
_9 dokuz | _9 dokuz | ||||
_10 on | _10 on | ||||
_11 'onbir | |||||
_12 'oniki | |||||
_1X on | _1X on | ||||
_2X jirmi | _2X jirmi | ||||
_3X otuz | _3X otuz | ||||
_8X seksEn | _8X seksEn | ||||
_9X doksan | _9X doksan | ||||
_0C jyz | _0C jyz | ||||
_2C 'ikijyz | |||||
_0M1 bIn | _0M1 bIn | ||||
_1M1 bIn | |||||
_0M2 miljon | _0M2 miljon | ||||
_1M2 miljon | |||||
_0M3 miljar | _0M3 miljar | ||||
_dpt _virg,Yl | |||||
_1M3 miljar | |||||
_dpt _virg,Yl_| | |||||
.group a | .group a | ||||
a a | a a | ||||
avru (pa avr'u | |||||
.group b | .group b | ||||
b b | b b | ||||
.group d | .group d | ||||
d d | d d | ||||
_) d (eğil 'd | |||||
.group e | .group e | ||||
e e | e e | ||||
4 51 | 4 51 | ||||
5 11 | 5 11 | ||||
| _| | |||||
fi 40 130 | fi 40 130 | ||||
fr 44 125 | fr 44 125 | ||||
fr_ca 11 125 | fr_ca 11 125 | ||||
hi 50 135 | |||||
ta 16 138 | |||||
hi 51 136 | |||||
ta 15 138 | |||||
hu 23 115 | hu 23 115 | ||||
nl 28 122 | nl 28 122 | ||||
pl 15 110 | pl 15 110 | ||||
th 50 142 | th 50 142 | ||||
id 14 120 | id 14 120 | ||||
tr 14 123 | tr 14 123 | ||||
ku 12 120 | |||||
ku 13 120 | |||||
ja 7 104 | ja 7 104 | ||||
Data file Used by | Data file Used by | ||||
[l;] ro | [l;] ro | ||||
l/lo [(o)] base | l/lo [(o)] base | ||||
[l] fr | [l] fr | ||||
l^/l_rfx [l.] ta | |||||
l^/l_rfx [l.] hi | |||||
l/lu [(u)] base | l/lu [(u)] base | ||||
[l] fr | [l] fr | ||||
l/tl [l] base | l/tl [l] base | ||||
[EU] pt_pt | [EU] pt_pt | ||||
vdiph/eeu_3 [aU] en_n | vdiph/eeu_3 [aU] en_n | ||||
[aU] en_wm | [aU] en_wm | ||||
[eU] ku | |||||
vdiph/eey [ey] fi | vdiph/eey [ey] fi | ||||
vdiph/ei [eI] base2 | vdiph/ei [eI] base2 | ||||
[e:] nl | [e:] nl |
// CONSONANTS | // CONSONANTS | ||||
//=========== | //=========== | ||||
phoneme l. | |||||
liquid rfx | |||||
lengthmod 7 | |||||
formants l^/l_rfx | |||||
endphoneme | |||||
phoneme v // no fricative noise | phoneme v // no fricative noise | ||||
vcd lbd frc | vcd lbd frc |
endphoneme | endphoneme | ||||
phoneme l. | |||||
liquid rfx | |||||
lengthmod 7 | |||||
formants l^/l_rfx | |||||
endphoneme | |||||
// ?? This is standard [v]. Should be it [v] without the fricative noise? | // ?? This is standard [v]. Should be it [v] without the fricative noise? | ||||
phoneme v | phoneme v | ||||
vcd lbd frc | vcd lbd frc |
fprintf(f_log,"Using phonemetable: '%s'\n",PhonemeTabName()); | fprintf(f_log,"Using phonemetable: '%s'\n",PhonemeTabName()); | ||||
compile_dictlist_file(path,"roots"); | compile_dictlist_file(path,"roots"); | ||||
compile_dictlist_file(path,"listx"); | |||||
compile_dictlist_file(path,"list"); | compile_dictlist_file(path,"list"); | ||||
compile_dictlist_file(path,"listx"); | |||||
compile_dictlist_file(path,"extra"); | compile_dictlist_file(path,"extra"); | ||||
compile_dictlist_end(f_out); | compile_dictlist_end(f_out); |
int *body_drops; | int *body_drops; | ||||
unsigned char body_max_steps; | unsigned char body_max_steps; | ||||
unsigned char body_lower_u; | |||||
char body_lower_u; | |||||
char n_overflow; | char n_overflow; | ||||
short *overflow; | short *overflow; | ||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence | {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, 20, drops_0, 3, 3, 5, oflow}, // 9 comma | ||||
{20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question | {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] = { | static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { | ||||
{ | { | ||||
p->env = PITCHrise; | p->env = PITCHrise; | ||||
} | } | ||||
else | |||||
if(p->tone > 5) | |||||
p->env = syl->env; | |||||
if(p->pitch1 > p->pitch2) | if(p->pitch1 > p->pitch2) | ||||
{ | { | ||||
// swap so that pitch2 is the higher | // swap so that pitch2 is the higher | ||||
p->pitch1 = p->pitch2; | p->pitch1 = p->pitch2; | ||||
p->pitch2 = x; | p->pitch2 = x; | ||||
} | } | ||||
if(p->tone > 5) | |||||
p->env = syl->env; | |||||
if(syl->flags & SYL_EMPHASIS) | if(syl->flags & SYL_EMPHASIS) | ||||
{ | { |
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; | int len; | ||||
unsigned char *p; | unsigned char *p; | ||||
static char single_letter[10] = {0,0}; | static char single_letter[10] = {0,0}; | ||||
int this_value; | int this_value; | ||||
static int prev_value; | static int prev_value; | ||||
int decimal_count; | int decimal_count; | ||||
int max_decimal_count; | |||||
char string[12]; // for looking up entries in de_list | char string[12]; // for looking up entries in de_list | ||||
char buf1[100]; | char buf1[100]; | ||||
char ph_append[50]; | char ph_append[50]; | ||||
if(decimal_count > 1) | if(decimal_count > 1) | ||||
{ | { | ||||
switch(langopts.numbers & 0x6000) | |||||
max_decimal_count = 2; | |||||
switch(langopts.numbers & 0xe000) | |||||
{ | { | ||||
case 0x8000: | |||||
max_decimal_count = 5; | |||||
case 0x4000: | case 0x4000: | ||||
// French/Polish decimal fraction | // French/Polish decimal fraction | ||||
while(word[n_digits] == '0') | while(word[n_digits] == '0') | ||||
decimal_count--; | decimal_count--; | ||||
n_digits++; | n_digits++; | ||||
} | } | ||||
if(decimal_count < 6) | |||||
if(decimal_count <= max_decimal_count) | |||||
{ | { | ||||
LookupNum3(atoi(&word[n_digits]),buf1,0,0,0); | LookupNum3(atoi(&word[n_digits]),buf1,0,0,0); | ||||
strcat(ph_out,buf1); | strcat(ph_out,buf1); |
int (* phoneme_callback)(const char *) = NULL; | int (* phoneme_callback)(const char *) = NULL; | ||||
FILE *f_wave = NULL; | FILE *f_wave = NULL; | ||||
int quiet = 0; | |||||
int quiet = 0; | |||||
unsigned int samples_total = 0; | unsigned int samples_total = 0; | ||||
unsigned int samples_split = 0; | unsigned int samples_split = 0; | ||||
unsigned int wavefile_count = 0; | unsigned int wavefile_count = 0; | ||||
finished = WavegenFill(0); | finished = WavegenFill(0); | ||||
if(quiet) | |||||
return(finished); | |||||
if(f_wave == NULL) | if(f_wave == NULL) | ||||
{ | { | ||||
sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype); | sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype); | ||||
InitText(0); | InitText(0); | ||||
SpeakNextClause(f_text,p_text,0); | SpeakNextClause(f_text,p_text,0); | ||||
ix = 1; | |||||
for(;;) | for(;;) | ||||
{ | { | ||||
if(WavegenFile() != 0) | 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) | if(Generate(phoneme_list,&n_phoneme_list,1)==0) | ||||
SpeakNextClause(NULL,NULL,1); | |||||
{ | |||||
ix = SpeakNextClause(NULL,NULL,1); | |||||
} | |||||
} | } | ||||
CloseWaveFile(); | CloseWaveFile(); |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.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; | const int version_phdata = 0x013105; | ||||
int option_device_number = -1; | int option_device_number = -1; |
// next_pause.ph = phoneme_tab[phonPAUSE]; // this must be done after voice selection | // next_pause.ph = phoneme_tab[phonPAUSE]; // this must be done after voice selection | ||||
next_pause.type = phPAUSE; | next_pause.type = phPAUSE; | ||||
next_pause.newword = 0; | 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"); | |||||
} | |||||
} | } | ||||
tr->langopts.stress_flags = 0x0024; // don't use secondary stress | 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.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'); | SetLetterVowel(tr,'y'); | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
break; | 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 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 }; | static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; | ||||
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | 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; | tr->langopts.max_initial_consonants = 2; | ||||
} | } | ||||
break; | break; | ||||
case L('z','h'): | case L('z','h'): | ||||
case L_zhy: | 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 }; | static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 }; | ||||
tr = new Translator; | tr = new Translator; |
return(1); // Devanagari vowel signs and other signs | return(1); // Devanagari vowel signs and other signs | ||||
if((c >= 0xb81) && (c <= 0xbe5)) | 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)) | if((c >= 0x300) && (c <= 0x36f)) | ||||
return(1); // combining accents | return(1); // combining accents | ||||
else | else | ||||
if(IsAlpha(c)) | 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) | if(wcschr(punct_within_word,prev_out) == 0) | ||||
letter_count = 0; // don't reset count for an apostrophy within a word | letter_count = 0; // don't reset count for an apostrophy within a word |
const char *LookupDict2(const char *word, const char *word2, char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab); | 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 *LookupSpecial(const char *string); | ||||
const char *LookupCharName(int c); | 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 LookupNum2(int value, int control, char *ph_out); | ||||
int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands); | int LookupNum3(int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands); | ||||
int LookupThousands(int value, int thousandplex, char *ph_out); | int LookupThousands(int value, int thousandplex, char *ph_out); |