Browse Source

[1.40.09]

Changed -b option to include an option for 16 bit character input.

numbers.cpp: Added option for vigesimal number systems for tens+units.

Fixed problems with word-length indications in callback events.

-m option now ignores XML comments.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@216 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 16 years ago
parent
commit
396c1af678

+ 78
- 16
dictsource/af_list View File

@@ -196,26 +196,29 @@ _dpt 'pWnt
_roman rum'eIns@

// ordinal numbers
_ord d@ // default suffix
_ord20 st@ // for 20,30,etc
_1o _'e@rst@
_2o tw'e@d@
_3o d'&:rd@
_7o s'e@v@nd@
_8o _'ax2st@
_9o ne@x2@nd@
_0de d@
_0ste st@
_1o _'e@r
_2o tw'e@
_3o d'&:r
_7o s'e@v@n
_8o _'ax2
_9o ne@x2@n
_0Co h'On@rtst@



// Place names

acapulco akap'ulk@U
afganistan afg'anistan
alaska al'aska
albanië alb'A:ne@:@-
algerië alx2'e@re@:@-
amanzimtoti $4
antwerpen antv&rp@n
babilon babilOn
bangladesj baNglad'ES
barkly _^_EN
bellevue b&lvju:
bermuda $2
bethlehem bEt_liEm
@@ -235,6 +238,7 @@ ceylon s@lOn
chicago _^_EN
china S'ina
clanwilliam kl&:nw'ili@m
clifton _^_EN
colenso kul'E:ns@U
colesberg ko@lsb&rx2
constantia $2
@@ -247,12 +251,13 @@ ermelo &rm@lo@
franschhoek frA~nsh'uk
gadara x2@dA:ra
galilea x2al@l'i:a
gariep x2ar'ip
germiston _^_EN
getsémané x2Ets'e@mani
gonubie g@nu:bi
goudini $2
gordonsbaai gO:rd@nsb'AI
(graaff reinet) x2rA:f||r@n'Et
grahamstad x2rA:mstat
griekeland x2rik@lant
groblersdal x2rObl@rsd'al
havana hav'ana
@@ -260,6 +265,7 @@ hermon $1
hirosjima hiruS'ima
israel IsraI:l
italië it'A:li;@
jeffreysbaai dZEfrisb'AI
kalafong kalaf'ON
kanada kanad%a
kanaän kA:nA:an
@@ -272,6 +278,9 @@ kongo kONgu
knysna neIsna
kuruman kuruman
kwa kwa $u $only // KwaZulu, etc.
lady _^_EN // Lady Grey/Lady Smith
ladybrand leIdibr'ant
laingsburg leInsbWrx2
lesotho l@sutu
limpopo l@mpo@po@
(los angeles) lOs_'andZ@li:z
@@ -283,10 +292,10 @@ maputo map'u:tu
mauritius mOr'iSjWs
milaan $2
mesopotamië mEsuput'A:mi@
mpumalanga mpu:mal'aNga
montagu mOnt@ky
moreletapark mOr@l,Etap'ark
moorreesburg mur'e@sbWrx2
mosambiek mo@samb'ik
(thaba nchu) tab'A:||ntSu
europa Y@r'o@pa
nigel _^_EN
@@ -314,6 +323,7 @@ tunisië $2
turkye $2
ulundi ul'undi
upington apiNt@n
vanrhynsdorp fanr'eInsdOrp
vesuvius v@su:viWs
viëtnam vj'Etnam
wallonië val'o@ni@
@@ -333,14 +343,20 @@ adam adam
adriaan A:drijan
adrie A:dri
albertus alb'&rtWs
alfred _^_EN
allah %alA:
amelia am'i:lija
annalet anal'Et
André 'andreI
annette an'Et
antoinette antun'Et
barbara bA:b@ra
basson $2
bea bi:ja
benade b@nA:di
benjamin bEndZ@m@n
bennett bEn@t
bertha b&rta
bester b'Est@r
beyers beI@rs
blignault blIx2n@Ut
@@ -350,7 +366,7 @@ bouwer b@U@r
brian _^_EN
bredenkamp bre@d@nkamp
breytenbach breIt@nbax2
brouwer bruw'&:r
bruwer bruw'&:r
caesar siz@r
carl kA:r@L
casanova kasan'o@va
@@ -375,6 +391,7 @@ cindy sIndi
coetzee kuts'e@
cronjé krOnj'e@
cynthia _^_EN
dalene dal'e@n
darwin _^_EN
david _^_EN
(da vinci) da||v'intSi
@@ -390,16 +407,20 @@ donaldson _^_EN
du $u
(du pisanie) du||pis'A:ni
(du plessis) du||pl@s'i
(du plooy) d@||ploI
(du preez) d@||pr'e@
(du toit) d@||toI
duvenage dyv@nA:x2@
eksteen $1
eldorado &ldOr'A:d@U
elisabeth il'isabEt
elize il'i:z
elmien $2
elsabe &ls@bi
elsabé &ls@bi
emmarentia Emar'e~nSja
erasmus $2
ernest _^_EN
eségiël is'e@x2i_@l
estelle %ist&l
etienne Eti@n
@@ -418,15 +439,18 @@ george _^_EN
georgina dZO:dZ'ina
gerhard x2&rart
gerhardus $2
gertruida $2
gloria glO:ria
grange x2rA:nsi
gustav gustaf
guy _^_EN
hamlet _^_EN
harry _^_EN
havenga hA:f@Nx2a
haydn hAId@n
helen _^_EN
helena hil'e@na
helene hi:l'i:n
helloïse hEluw'i:z
henry _^_EN
herklaas $1
@@ -436,10 +460,12 @@ ilse 'ilz@
ingrid iNgr@d
isabel is@b&l
iskariot isk'ariOt
jaco jaku
jacques ZA:k
james _^_EN
jane _^_EN
Jean ZA~n $capital
jesebel je@s@b&l
jimmy _^_EN
joan _^_EN
joey dZ@Ui
@@ -452,14 +478,17 @@ kelvin _^_EN
kim _^_EN $capital
krige krix2@
labuschagne labWsk'ax2ni
lafras $2
langenhoven laN@nho@f@n
lasarus lA:s@r%Ws
lategan lA:t@x2an
le l@ $only
leandra li'andra
leipoldt lAIpOlt
leonardo liu:n'ardu
leonie li'o@ni
levi le@fi
liesbet lisbEt
louis luI
louise luw'i:z
mackintosh _^_EN
@@ -467,6 +496,8 @@ mbeki mbE:ki
magdalena $3
malan mal'an
malherbe mal'&rb@
mantovani mantOv'A:ni
mara mA:ra
marelie mar@li
margaret _^_EN
margaretha marx2ar'e@ta
@@ -478,8 +509,11 @@ marlise marl'i:s
martha marta
martin m'A:rt@n
mary _^_EN
mathilda mat'Ilda
matteus mat'i:Ws
matthee mat'e@
matthéüs mat'i:Ws
maureen _^_EN
mefistofeles mEfist'o@f@l@s
melanie m@lA:ni
meraai m@rAI
@@ -491,6 +525,7 @@ michiel $2
mike _^_EN
miriam mIri@m
mohammed muh'am@t
morkel mOrk@l
morné mOrn'eI
mostert m'Ost@rt
mouton mut'On
@@ -516,10 +551,12 @@ rebekka r@bEka
reinette r@nEt
renette r@nEt
renée r@neI
retha re@ta
retief r@tif
rhodes _^_EN
robert _^_EN
ronel run'&l
rossouw r@s@U
rousseau r@s@U
ruda ruda
rupert rup@rt
@@ -554,6 +591,7 @@ toerien $2
totius to@SiWs
trudie trudi
versfeld f&rsf&lt
veronica _^_EN
victoria _^_EN
viljoen $2
villiers vIli@rs
@@ -574,8 +612,11 @@ schalkwyk skalkveIk
schreiner SraIn@r
tony t@Uni
trichardt trix2A:rt
vera ve@ra
verwey f@rveI
vivaldi viv'aldi
viviers v@v@je@
wilhelm v@lh&l@-m
khumalo kum'A:lu
zuma zu:ma

@@ -589,6 +630,11 @@ citroên s@trun
ferrari f@rA:ri
martini mart'i:ni
naspers nasp&rs
peugeot pW:Z@U
(pick n pay) p,ik||@n||p'eI
port pOrt $1
rover _^_EN
sotho su:tu
toyota $2
venda vEnda
volvo vOlvu
@@ -665,7 +711,7 @@ hoekom $pause
hoeveel $pause
wat $pause
watter $pause
ás as '!as

// prepositions
aan $u $strend2
@@ -717,9 +763,10 @@ dis $u

// phrase with words spoken together

(nie waar nie) n,i||v,A:r||n'i
(à la carte) a||la||k'art

(carpe diem) karpE||di:Em
(nie waar nie) n,i||v,A:r||n'i
(sy aan sy) s,eI||an||s'eI


// main word list
@@ -735,6 +782,7 @@ agamemnon ax2am'EmnOn
aggressie $2
agterstevoor $4
agterweë $3
aha A:h'!A:
algaande $2
alge alx2@
algehele alx2@h,e@l@
@@ -743,8 +791,10 @@ almiskie $3
alom al_'Om
alreeds $2
alternatiewe $4
amelee am@le@
amen A:mEn
anale an'A:l@
as't as@t $u
asof asOf
asook %as_o@k
aspris $2
@@ -762,6 +812,7 @@ beswil bEsv@l
besnedene b@sne@d@n@
bestes bEst@s
beta be@ta $only
betlehemster bEtli:Emst&r
bewe be@v@
bewend be@v@nt
bewering b@ve@rIN
@@ -779,6 +830,9 @@ capita kapita
casino kas'i:n@U
cedille s@dIl@
charisma kar'Isma
cliché kliS'eI:

clichés kliS'eI:s
crescendo kr@SEndu

dadelik dA:d@lIk
@@ -832,6 +886,7 @@ geldelike x2&ld@l@k@
genade $2
genesis x2e@n@s@s
//gesamentlik x2@sA:m@ntl@k
gladiator x2ladi'A:tOr
globale x2lo@b'A:l@
gooi x2OI
gomorra x2@mOra
@@ -840,6 +895,7 @@ gratis x2r'A:t@s
grondys x2rO:nt_eIs

hallo h'Il,@U
handtertjie hant&:rci
hanou hA:n@U
hardop hart?Op
heeltemal he@lt@mal
@@ -896,7 +952,9 @@ kulture $2
kunsmatige kWnsm'A:t@x2@
kwansuis $2

lasagne las'anj@
libido l@bidu
lokaas lOk_A:s
londense lOnd@ns@
lord _^_EN

@@ -910,7 +968,9 @@ meegee me@x2e@
memorabilia mEmOrab'ilija
memoriam mEm'o@riam
mercedes $2
meregebied me@r@x2@bit
merlot m&rl'o@
miaau mi'aU:
midwinter mIdv@nt@r
militêre mIl@t'&:r@
minister m@nIst@r
@@ -997,6 +1057,7 @@ pandemonium pand@m'o@niWm
parate par'A:t@
parke park@
parkie $1
parte $1
patos pA:tOs
patriotisme patri|ut'Ism@
penorent pEno@rEnt
@@ -1056,6 +1117,7 @@ suburbia sWb'Wrbija
tanga taNga
tango taNx2u
tenminste $2
tequila t@ki:la
terdeë $2
terug t@-rWx2
tesaam t@sA:m

+ 93
- 24
dictsource/af_rules View File

@@ -23,6 +23,7 @@
&b) a (_ %a // short final a: mamba and compounds/marimba/hamba
&d) a (_ %a // short, unstressed a after d at end of word: soda/padda... and compounds
i) a (_ %a // a short and unstressed in words ending in ia: laboratoria/millennia
&rm) a (_ %a // shorten a sound: Irma/karma/firma and compounds
&r) a (_ %a // short final a in words ending in -ra: infra/mantra/sentra, etc.
Cbr) a (_ A: // long a: blommetjies-/kantbra
&dr) a (_ A: // exceptwrds ending in -dra: ingedra/oorgedra, etc.
@@ -36,7 +37,7 @@
C) a (Csier %a // (ge)finansier/kassier
j) a (pan %a //japan first a sound and stress
C) abie 'A:bi
abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie
_) abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie
_) a (bC %a // abdy/ablatief/ablusie/abstrak, etc.
_) a (bba a // restore default stress: (ge)abba/abbamandjie, etc.
abse (s %apsE // fix stress and e sound: abses/-se
@@ -257,6 +258,7 @@
arre (stA %ar@ // arrestasie/arresteer
arro (g %ar%u // arrogant/-e/arrogansie
ar (seen %ar
arte (fak %art@ // move default stress: artefak/-te
ar (tikel %ar // stress: artikel and compounds
artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc.
@@ -290,6 +292,7 @@
C) a (xA+ a // shorten a before x: taxi and compounds/praxi/saxofoon
ay (_ _^_EN // words ending in ay are English
ays (_ _^_EN // words ending in ays are English
aë (robi %aI // move default stress: aërobies/-e


.group aa
@@ -365,6 +368,8 @@
_) ann (a@ %an // move default stress: annaal/annale
g) an (_ _^_EN //if it ends in gan it is English
C) anette (_ %anEt // Janette/Sanette
ano (rak an%u // fix stress and vowel sounds: anorak/-ke
ano (reksi %an%u // fix stress and o sound: anoreksie(leier...)
ansjovi anS''o@f@ // fix stress and o sound: ansjovis/-se/-smeer
an (tjie aIN
_) ana (C ,ana // words starting with ana starts destressed
@@ -470,6 +475,7 @@
balsem bals@m // correct e sound in derivatives like balseming
bara (k bar'a
bar (bA b%ar // barbaar/barbare and derivatives/barbier and compounds
basi (lisk b%as@ // fix vowel sounds: basilisk/-e and compounds
bastion bastiOn // -tion not English: bastion/-s and compounds
_) bate b''A:t@ // fix stress and e sound: batefinansiering/-portefeulje and many others
batte (ry b%at@ // move default stress: battery/-e and compounds: batterysuur...
@@ -528,7 +534,7 @@
bybel beIb@l // to correct pronunc. of e in compounds
byder (C@ b%eId@r // byderhand/-s/byderwets
by (een b%eI_ // move default stress: byeen/byeenkoms/-te, etc.
byge (low b%eIx2@ // move default stress: bygelowig/-e/-heid
byge (lowi b%eIx2@ // move default stress: bygelowig/-e/-heid
_) by (telP2 b'eI // fix e sound: bytel/-ling/-lery
by (voorb b%eI// move default stress
bywoordeli b%eIvo@rd@l@ // move default stressa: bywoordelik/-e
@@ -553,21 +559,19 @@
C) be (rsie b'&: //kombersie etc.
bene (r be@n@ //benerig/e
be (C%+ bE // beffie/bessie/bennie/bettie/blombeddings
bek (d b&k // fix e sound: eendbekdier/kortbekdolfyn/rooibekduifie/skinderbekdorp
re) be (lK+ b& // fix e sounds: rebel/-le/-lie
_) be (Cy b@ // bely/beny/betyds
bes (ie_ be@s //sonbesie duinebesie etc.
bes (ies_ be@s //sonbesies duinebesies etc.
son) be (sie be@ // fix e sound in compounds with sonbesie: sonbesiebos, etc.
beste (k b@st& // fix e sound: bestekopname and many compounds of bestek
bed (h bEt // fix stress, e sound and d sound: bedhoek/bedhok, etc.
bed (C bEt
bedjie bE:ici // (ge)bedjie/-s/bababedjie
bed (k bEt // bedkassie/bedkaartjie/bedkatel/bedkussing
bed (l bEt // bedlamp/bedliggie/dubbelbedlaken
bed (m bEt // bedmaats/bedmatjie, etc.
bed (p bEt // fix e sound: bedpan/-ne/-poot, etc.
bed (rand bEt // fix e and first d sounds
bed (s bEt // bedsitkamer/bedsprei/gebedsdag
be (dr@ b@ // bedremmeld/bedrewe/bedrywig, etc.
bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd
bedw (@ b@dw // bedwing and similar
@) bed (_ bEt // bruidsbed/dubbelbed; many compounds ending in bed
be (de_ be@ // bede/gebede
bedes (_ be@d@s // bedes/seënbedes, etc.
@@ -733,6 +737,7 @@
deto (nA d%Et%u // fix e and o sounds and stress: detonasie/detoneer/detonering
deur (aar d%y@r_ // move default stress: deuraar/-de
deur (bo d%Y@r // move default stress: deurboor/deurborende
deur (dag d%Y@r // move default stress: (on)deurdag/-te/-theid
deur (drenk d%y@r // move default stress: deurdrenk/-te
deur (dring@ d%y@r // move default stress: deurdringend/-e
deur (grond d%y@r // move default stress: (on)deurgrond/-elik/-e/-heid
@@ -862,6 +867,7 @@
du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc.
@n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar
dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm
dw (erg dw // fix d sound: tuindwerg/-e/-ie
@) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e
@) dwese tve@s@ // leedwese/vakbondwese
@) dwillig tv'Il@x2 // d sound and stress: kwaadwillig/bereidwillig
@@ -875,11 +881,13 @@
e (C E
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
blind) e (C@ @ // fix e sound in compounds like: blindekol/-mol/-wese
juwel) e (C @ // fix e sound: juwelekissie and similar compounds
fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc.
kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar
narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc.
ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar
skew) e (C @ // fix e sound: skewekop/-mond
trol) e (C@ @ // fix e sound in compounds: kontrolebank/-doeleindes/-kamer/-lys/-maatreël/-rekening...
voorrad) e (C @ // fix e sound: voorradedepot/-konvooi and similar
@C) e (aCC @_ // fix e sound: doodseise-/manne-/ongevalle-/troepeafdeling/slakkeafval/handearbeid
@@ -890,6 +898,7 @@
CAC) e (rr @ // fix e sound: koperring/-rooi/nederryn/somerreën/-rok/superrealis/syferrekenaar...
@C) e (reekK @ // fix e sound: duine-/rotsereeks
aai) e (C @ // fix e sound: baaierd/waaierstert/paaiement/compounds starting with baaiers-
lat) eres @r@s //lateres
fp) ers (_ &rs // fix e sound: dof-/gif-/olyf-/tydskrifpers, etc.
bloup) ers &:rs // fix e sound: bloupers
treil) e (rC @ // fix e sound: (vis)treilerkaptein/-wrak and similar compounds
@@ -931,6 +940,7 @@
ies) e (b @ // fix e sound: dinamiesebinding/ekonomiesebemagtiging
&At) e (bA@ @ // fix e sound: batebestuur/sekuriteitebeurs/soldatebbaadjie/geslotebaan, etc.
Aw) e (bA @ // fix e sound: briewebesteller/diewebende/newebedoeling/skewebek/stywebeen
@d) e (bl @ // fix e sound: huldeblyk/-e/lindeblom/maagdebloeisel
@C) e (bo @ // compounds with boek/boer/boog/boom/bol/bord/borsel/bos/ grondbonebotter/kamdebo...
@C) e (bu @ // briewebus/ereburger/novellebundel/urinebuis/woedebui
@C) e (by @ // fix e sound: statebybel/-s
@@ -1422,6 +1432,7 @@
fari (seër f%ar%i // fix stress and a sound: Fariseër/-s
farma (seut f%arm%a // move default stress: farmaseut/-e/-ies/-ika
fasade f%asA:d@ // fix stress and 1st a sound: fasade/-s and compounds
fase (tK f%asE //
fasili f%as@l%i // fasiliteit/e/aftrekorderfasiliteit
fa (ta@ f%a //fix stress and 1st a sound: fatale/fatalis/-me/-te/-ties
fat (soen f%at // move default stress: (on)fatsoen(lik)
@@ -1443,6 +1454,7 @@
fi (siek f@ // correct 1st i sound and move default stress:
fili (ppA f@l@ // fix stress and i sounds: Filippyne/-pynse/filippien
filistyn f@l@st'eIn // filistyn/e
fille (t f@lE // fix stress and e sound: (bees)fillet/-te and similar
_) fi (na@ f%i // finaal/finale/finansies
mor) fine (@ fin@_ // fix e sound in compounds: morfineafhanklikheid/-beswyming/-dosis/-tablet
fi (skA f@ // move default stress: fiskaal/fiskale/konfiskeer
@@ -1456,8 +1468,10 @@
flu (we fl%y // move default stress: fluweel/fluwele and compounds
_) fok (o fOk_ // fix o sound, insert short break: fokop/fokof
folio fo@li_u // fix o sounds: folio and compounds
fondue f%Ondy // fix stress and ue sound: fondue and compounds
@) fonie fun'i // kakofonie/simfonieorkes/telefonie
@) fonies f'o@nis // fix stress: simfoniese/polifonies/telefonies
@) fonie (s@@ fun'i // fix stress: simfonieseisoen and similar
fon (tein f%On // move default stress: fontein/fonteinwater, etc.
_) for (C f%Or // formeel/formele/forseer/fortuin
fore (l f%ur& // fix stress and e sound: forel/-e and compounds
@@ -1472,6 +1486,7 @@
fo (togra fo@ // move default stress: fotograaf and similar
fra (giel fr%a // fix stress and a sound: fragiel/-e
_) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca
frangi (pani fr%aN%i // fix stress: frangipani and compounds
fre (kwen fr%i // fix stress and 1st e sound: frekwensie/-s and compounds
freud frOId // Freud/Freudiaans/-e
front (A@ fr%Ont // fix stress and e sound: konfronterend/-e/konfrontering
@@ -1494,10 +1509,14 @@
gal (joen x2%al // move default stress: galjoen/-e and compounds
gamie (_ x2am'i // bi-/mono-/poligamie, etc.
gamies x2'A:mis // bi-/mono-/poligamies/-e
ga (riep x2%a // fix stress and a sound: Gariep(dam)
gar (n x2%ar // move default stress: garnaal/garnale/garneer/garnering and compounds
garni (soen x2%arn%i // fix stress: garnisoen and compounds
@C) garye x2%ar'eI@ // Fix stress: Bulgarye/Hongarye
gas (aan x2as_ // fix stress: gasaanleg/-aansteker and similar comp9ounds
_) gas (A x2''as_ // fix stress: gasaanleg/-aansteker/-installasie/-ontploffing
gas (erig x2A:s // long a and no pause: gaserig/-e/-heid
gas (ie x2A:s // long a and no pause: gasie/-s and compounds
gas (ig x2A:s // long a and no pause: gasig/-e/-heid
gauteng x2%aUtEN //Gauteng and compounds
_) gh g
gh (_ k
@@ -1739,6 +1758,7 @@
heid (_S4 heIt
herinner h&r'In@r // herinner/-ing/-e|s
hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc.
hex (C hEks // prevent English translation: Hex(rivier)vallei
hia (sint h%ij%a // fix stress: hiasint/-e and compounds
_) hi (bis h%i // move default stress: hibiskus/-se and compounds
higië (nA h%ix2%ie@
@@ -1757,6 +1777,7 @@
hiër (argie h%i@r // stress on 1st a: hiërargies/-e
hiëro (glie h%i@r%u // fix stress and vowel sounds: hiëroglief/-gliewe
A) hle (_ =LE // Nguni words and names ending in -hle: Enhlalakahle/Hlalanikahle/malahle/Phahle
_) hobo ho@bu // fix o sound in compounds: hobokonsert/-musiek/-solo/-sonata/-speler
hoeve (r h%uf& // fix stress and e sounds: hoever(re)
hoeveelh (e h%ufe@lh // move default stress: hoeveelheid/-hede
hof (A hOf_ // fix o, pause: hofaansoek/-amptenaar/-etiket/-interdik/-ordonnans/-uitspraak/-ure...
@@ -1785,6 +1806,7 @@
ie i
tr) ie (_ 'i //stress on trie at word end
ieë (K i:@ // knieë/vlieë/spieël/-tjie
ie (uu i // split ie/uu, eu not diphthong: drieuur and similar
ss) ief (_ 'if // move default stress: aggressief/massief/obsessief/progressief, etc.
ss) iewe (_ 'iv@ // move default stress: aggressiewe/massiewe/obsessiewe/progressiewe
ns) iewe (K 'iv@ // fix stress and e sound: intensiewesorg(eenheid) and similar
@@ -1827,6 +1849,7 @@
_) immi (grA @m@ // fix stress and i sounds: immigrant/-e and compounds
_) i (mmu %i // fix stress and i sound: immuun/immune/immuniteit
_) inder (C @nd@r // inderdaad/inderhaas/indertyd
_) indel (C Ind&l // fix e sound: indelf/indelwe/indelwing
indi (a@ @nd%i // fix stress: Indiaan/Indiane
in (dien @n //indienstreding/indiensopleiding/indiensplasing
indis (kr @nd@s // stress: indiskreet/-e/indiskresie/-s
@@ -1939,6 +1962,8 @@
irriter (@ ir@t'e@r // irriterend/e/irritering

iles (_ _^_EN // words and names ending in -iles are English
ipe (kon %ip@ // Fix stress and e sound: ipekonders and compounds
_) ira (C %ira // fix stress: Irak/Iran/Iranees/-nese/Iraki
ity (_N _^_EN
@) igering ix2'e@r@N
instruks @nstr'Wks // instruksie/s (stress)
@@ -1978,6 +2003,7 @@
@) iseur is'Y@r // adviseur/narkotiseur
@) i (sering i
C) isie 'isi // ambisie/ammunisie/komposisie/ammunisiekis
@@@C) isie isi // restore default stress in compounds like kragkompetisie...
C) isieus isi'Y@s // ambisieus/suspisieuse
C) isk (_ 'Isk // asterisk/tamarisk
C) isk (e_ 'Isk // asteriske/tamariske
@@ -2074,6 +2100,7 @@
_) kilo kil%u // fix o sound in compounds: kilogram/-liter/-meter
kker (A k@r // swakkerig/blikkerig/flikkerend/flikkering
klaarblyklik klA:rbl'eIkl@k // klaarblyklik/e
kla (kous klA: // fix stress and long a sound: klakous/-e
klande (sti kl%and@ // move default stress: klandestien/-e
_) kla (sA@@ kla // klasaantekeninge/klasonderwyser and other compounds
kla (ssiek kl%a // move default stress: klassiek/-e
@@ -2103,7 +2130,7 @@
kleure klY@r@ // fix e sound: kleurebeeld/-gloed/-kaart/-kontras/-mengeling/-prag/-sin...
kli (maat kl@ // move default stress: klimaat and compounds
kli (mop klI // fix i sound: klimop(plant)
klim (u klIm_ // fix i sound in compounds like bergklimuitstappie
berg) klim (A klIm_ // fix i sound in compounds like bergklimuitstappie/-ekspedisie
kli (niek kl@ // fix stress and i sound: kliniek and compounds
klip (A klIp_ // fix i sound: klipalbaster/-altaar/--uil/leiklipolie
klou (sule kl%@U // move default stress: klousule/-s
@@ -2209,6 +2236,8 @@
_) kar (b k%ar // move default stress: karba/karbol/karbonkel and their compounds
kar (be kar // restore default stress: karbestuurder/-s/-besitter, etc.
kar (does k%ar // move default stress: kardoes and compounds
_) ka (rien k%a // fix stress and a sound: Karien/Karientjie/Kariena
karika (tu k%ar%ik%a // fix stress and a sounds: karikatuur/karikature
karme (naadj k%arm@ // fix stress and e sound: karmenaadjie and compounds
karmosyn k%arm%useIn // fix stress and o sound: karmosyn and compounds
karna (val k%arn%a // fix stress and 2nd a sound: karnaval and compounds
@@ -2224,13 +2253,14 @@
kar (wei k%ar // move default stress: karwei and derivatives
ka (sarm k%a // move default stress: kasarm and compounds
kaserne k%as&rn@ // move default stress, fix 1st e sound: kaserne and compounds
kaske (nade k%ask@ // fix stress and e sound: kaskenade/-s and compounds
_) ka (sta k%a // move default stress: kastaiing and compounds
_) ka (ste@ k%a // move default stress: kasteel/kastele and compounds
ka (sty k%a // move default stress: kasty/-der/-ding
kasse (t k%asE // fix stress and e sound: kasset/-te and compounds
ka (strol k%a // move default stress: kastrol/-le and compounds
_) kata ,kata
katalo (gus k%atalu // fix stress and vowel sounds: katalogus and compounds
katalo (gA k%atal%u // fix stress and vowel sounds: katalogus and compounds/katalogi/katalogisering
kate (dr k%at@ // katedraal/katedrale and compounds
kate (gA k%at@ // fix stress and vowel sounds: kategis/-te/kategismus and compounds/kategese/kategeet
kategorie k,at@x2ur'i // to also handle plural
@@ -2238,6 +2268,7 @@
kategories k,at@x2'o@ris // to move stress
K) katel kA:t@l // fix e sound of compounds: katelknop/-styl, etc.
katjie (pie k%aIc%i // move default stress: katjiepiering and compounds
katki (sA k%atk@ // fix i sound: katkiseer/katkisasie, etc.
_) ka (to k%a // fix stress and a sound: katode and compounds/katoliek/katots
_) ka (tr k%a // move default stress: Katrina/katrol and compounds

@@ -2311,10 +2342,12 @@
konkel kONk@l // restore default stress and fix [N] sound: konkelaar/konkelwerk, etc.
konsen (tr k%Ons@n // fix stress and e sound: konsentreer/konsentrerend/konsentrasie
konsen (trie k%Ons''En // fix stress and e sound: konsentries/-e
konsep (A k%OnsEp_ // fix e sound, pause: konsepooreenkoms and similar compounds
konsertina k%Ons@rtin%a // fix stress and vowel sounds: konsertina/-musiek and similar
konside (rA k%Ons@d@ // fix vowel sounds: konsiderasie/konsidereer
konsist k%Ons@st // konsistorie and compounds/konsistensie
konstabel k%OnstA:b@l // (hof/hoof/verkeers)konstabel/-s, etc.
konsti (tusi k%Onst@ // fix stress and i sound: konstitusie and compounds
konsul (A k%Ons%Wl // konsulaat/konsulate/konsulêr
kon (sul kOn // restore default stress: konsul and compounds
konsul (tant k%Ons%Wl // fix stress: konsultant/-e and compounds
@@ -2322,6 +2355,7 @@
_) kontra (KP6 k'Ontra // kontra is prefix
kontra (diks k%Ontr%a // move default stress: kontradiksie/-s
_) kontrak k%Ontrak // move default stress: kontraksie/kontrak and compounds
kontrap (sie k%Ontrap // fix stress: kontrapsie/-s
_) kontras k%Ontras // move default stress: kontras/-te/kontrasteer
kontrasep k%Ontr%asEp // fix stress and e sound: kontrasepsie and derivatives
kontrover (s k%Ontr%uv&r // o and v sounds: kontroversie/kontroversieel
@@ -2341,7 +2375,7 @@
kos (tu k%Os // move default stress: kostuum and compounds
kouka (sië k%ukA: // fix stress and vowel sounds: Koukasiër/-s
kou (sa@ k%@U // move default stress: kousaal/-ale
koö k%o@O // koördinasie/koöpsie, etc.
ko (ö k%u // koördinasie/koöpsie/koöperasie/-atief, etc.



@@ -2354,9 +2388,11 @@
lagune l%ax2yn@ // move default stress: lagune and compounds
_) la (kon l%a // lakoniek/lakonies/lakonisme
lamfer lA~mf@r // fix e sound: lamferdoek/-vlae, etc. (variant)
lampe (t l%ampE // move default stress: lampet/-te/lampetbeker/-s
lanfer lA~mf@r // fix e sound: lanferdoek/-vlae, etc.
lam (len l%am // move default stress: lamlendeling/lamlendig/-e/-heid
lande (ry l%and@ // move default stress: landerye/compounds of landery-
_) land (_rover _^_EN
_) lang (d@@ l%aN // langdradig/langdurig and their derivitivs
 _) lange (CA laN@ // e sound: langelaas/Langeberge
lang (werp l%aN // move default stress: langwerpig/-e/-heid
@@ -2379,6 +2415,7 @@
legende l@x2End@ // move default stress; fix e sounds
legen (da l@x2@n // move default stress and fix e sounds
legi (oen l%Ex2%i // fix stress and e sound: legioen/-e and compounds
le (kker l& // fix e sound: luilekker/-dae/-lewe, etc
leli (k le@l@ // fix e sound and stress: lelik and derivatives
_) lende lEnd@ // lendelam/lendene/compounds of lende
lening le@n@N // banklening/sorgverlening/hulpverlening...
@@ -2474,6 +2511,7 @@
majestu m%A:j@st%y // fix stress: majestueus/-e
makaber m%akA:b@r // fix stress and vowel sounds: makaber/-e/-heid
maka (paan m%ak%a // fix stress and a sounds: Makapaan/-s/-grot and compounds
ma (kassar m%a // fix stress and 1st a sound: (anti)makassar/-s
@) makie (sie mak'i // fix a sound and stress: bol(le)makiesie/-slanery
ma (kietie m%a // fix stress and a sound: makietie and compounds: verjaardagmakietie/-s
@) makranka makr'anka // fix stress and vowel sounds: koek(e)makranka/-s
@@ -2605,6 +2643,7 @@
morf (otomie m%Orf // move default stress: morfotomie
_) morr (i mOr // restore default stress: morrig/morrie/-doring
_) mors (@ mOrs // restore default stress: morsaf/morsdood/morsig
mosam (biek m%o@s%am // move default stress: Mosambiek/-er/-se
mosa (ïek m%o@s%a // move default stress: mosaïek and compounds
mo (skee m%O // move default stress: moskee/-s and compounds
motor mo@t@r // motorfiets/motorkar/vragmotor
@@ -2627,7 +2666,7 @@
mede (doë m%e@d@ // move default stress: mededoë/-nd
_) mede (ly m%e@d@// move stress
mede (plig m%e@d@ // move stress: medepligtige
media mi:dia // compounds of media
media mi:di:ja, // compounds of media
medisi (na@ m%Ed@s%i // fix stress and vowel sounds: medisinaal/-nale
medi (tA m%Ed%i // fix e sound: mediteer/meditering/meditasie
medite (rre m%Ed%it@ // fix stress and vowel sounds: mediterreens/-e
@@ -2657,7 +2696,7 @@

mentee (C mEnt'e@ // argumenteer/dokumenteer/fragmenteer stress related
mentele (K mEnt'e@l@ // stress always on penultimate slb of words ending in ntele/-r
men (tasie m%En // fix stress: argumentasie/dokumentasie and similar
mentering mEnt'e@r@N
mekaar m@k'A:r
mekaarge m@k'A:rx2@
@@ -2706,10 +2745,12 @@
eu) n (g n // dreungeluid/kreungeluid/steungeluid/steungewend
oo) n (g n // hoongelag/loongeld/telefoongesprek/woongeriewe and similar
Cui) n (g n // basuingeskal/bruingebrand/bruingeel/tuingereedskap/tuingewas/tuingrond
we) n (g@++ n // split n/g: opwengrammofoon/wengereg/-gedagtes
y) n (g n // fyngoud/hooflyngesprek/langtermyngroei/kaplyngrens
ë) n (g n // split -ng-: reëngeluid/-geur/-gogga/-gordel/seëngebed
aa) n (gas n // split n/g: metaangas and compounds and similar
&) n (gat n // split "ng": mangat/-e/woongat/-e/opwengat/-e
spi) n (ge n // split n/g: spingehalte/-geluid, etc.
ng (eeR Nx2 // diftongeer/gedistingeerde/rangeer and compounds
ngees nx2e@s // split n/g: leuen-/span-/sportman-/wengees
n (_g N
@@ -2720,6 +2761,8 @@
_) na (C_ n'a //three-letter words starting with na
na (boots nA: // long a in compounds: klank-/vlugnabootser, etc.
na (burig n%A: // move default stress: naburig/-e/-heid
na (byge n%A: // move default stress: nabygeleë and derivatives
nabyh (e n%A:beIh // move default stress: nabyheid/-hede
na (ï n%a_ // naïef/naïewe/naïwiteit
@) na (lis n%a // shorten a sound: joernalis/-te/-tiek
nami (bi n%amI // Namibië/Namibiese
@@ -2767,6 +2810,7 @@
neo (li n%i%u // fix stress and vowel sounds: neolities/-e/neolitikum
ner (veu n%&r // move default stress: nerveus/-e
@C) nes (_ nEs // fix final e sound: doringnes/aasvoëlnes/kalkoennes/hamerkopnes/reiernes/kiewietnes
bye) nes nEs // fix e sound: byenes and compounds
by) nes nEs // fix e sound: (perde)bynes/te
net (agtig nEt_ // fix e sound: (vis)netagtig/-e
_) net (o nEt_ // fix o sound: netonderrok/-klere
@@ -2812,7 +2856,7 @@
no (stalgie n%O // stress on 2nd slb.: nostalgies
note (b no@t@ // fix e sound: notebalk/-e/-bank/-beurs
notule (K n%utyl@ // fix stress and vowel sounds: notule and compounds
no (velle n%u // move default stress and fix o sound
novelle n%uf&l@ // move default stress and fix o sound: novelle/-s and compounds
november n%o@fEmb@r // fix 1st e sound and stress: November and compounds
ntere (ss ntr@' // interessant/interesseer/geïnteresseerd
n (tjie N // breintjie/fonteintjie/kleintjie
@@ -2857,7 +2901,7 @@
_) ok (tA %Ok // move default stress: Oktober and compounds: Oktobermaand, etc./oktaaf/oktawe
ole (ander %o@l%i // fix stress and e sound: oleander and compounds
C) o (lia o@ // fix o sound: Goliat/magnolia
oliek (_ ul'ik // koliek/mankoliek/simboliek
K) oliek ul'ik // koliek/mankoliek/simboliek/koliekbaba
oliek (e_ ul'ik // mankolieke/katolieke
oliekig ul'ik@x2 // mankoliekig/-e/-heid
o (lien %u // fix stress and o sound: olien/-hout, etc.
@@ -2929,6 +2973,7 @@
oloog ul'o@x2 // bioloog/kardioloog and similar
oloë ul'u@ // bioloë/kardioloë and similar
omega %o@me@x2a // omega/-s
omele (t %Om@lE // fix stress and vowel sounds: omelet/-te and compounds
ometrie ume@tr'i // geometrie/psigometrie
ometries um'e@tris // geometries/psigometriese
w) o (rs O: //lengthen o sound in wors compounds
@@ -2991,6 +3036,7 @@
opper Op@r // oppergesag/wese/vlak/man
opper (vlakki %Op@r // move default stress: oppervlakkig/-e/-heid/-ste
opsetlik %OpsEtl@k // move default stress: opsetlik/-e/-heid
op (sione@ %Op // fix stress vowel and s sounds: opsioneel/-nele
optel Opt&l
_) op (@P2 'Op // opeet/opeis/optredes/opoffering
open (+ o@p@n // open/opening/e/s
@@ -3328,6 +3374,7 @@
peripa (t pEripa'' // fix stress and vowel sounds: peripateties/-e/peripatetikus/-se/peripatetici
peri (sCA p%Er@ // fix stress and vowel sounds: peristalties/-e/peristaltiek/periskoop/-skopies
@) perke (_ p&rk@ // fix e sound in some words ending in -perke: menseperke
@) perker (K p&rk@r // fix e sound: words like spoedbeperker/-s
@) perking p&rk@N // fix e sound in some words containing -perking
per (kussie p@r // fix stress and e sound: perkussie and compounds
perle (moe p%&rl@ // move default stress: perlemoen/perlemoer and compounds/reperkussie/-s
@@ -3343,6 +3390,8 @@
pers (om p&rs_ // fix e sound, pause: persombudsman/-ne and compounds
perso (neel p%&rs%u // personeel and compounds
pervers p@rf&rs // pervers/perversie
pervert p@rf&rt // fix stress and e sounds: pervert/-e and compounds
runder) pes pEs // fix e sound: runderpes and compounds
pe (tieter p@ // fix stress and 1st e sound: petieterig/-e/-heid
pe (tisi p@ // fix stress and e sound: petisie/petisionaris and compounds
_) pe (trA_ pe@ // lengthen e sound: Petro/Petra
@@ -3352,10 +3401,12 @@
ph (_ f // fix ph sound: Rudolph/Joseph
phi (lip fI
phi (lippA_ f@ // fix stress and 1st i sound: Philippa/Philippi
_) pieter (sA@ p%it@r // move default stress: pieters(i)elie and compounds
pig (meA p@x2 // move default stress: pigmee/pigmeë
pi (kant p%i // move default stress: pikant/-e, etc.
pikke (wyn p@k@ // move default stress: pikkewyn and compounds
_) pi (la p%i // move default stress: pilaar/pilare/pilatus
pio (n p%ijO // fix stress: pion/-ne and compounds of pion
pio (nier p%i%u // fix stress and vowel sounds: pionier and compounds
pira (mi p%ir%a // move default stress: piramide/-s/piramiedvormig
pi (sto p@ // pistool/pistole and compounds
@@ -3452,8 +3503,9 @@
promisku pr%Om@sky // fix stress and o sound: promisku/-e/-íteit
promulg (e pr%Om%Wlx2 // fix stress and vowel sounds: promulgeer/-gering
proposi pr%Op@zi // stress, o and s sounds: (besigheids)proposisie/-si, etc.
prosa pr'o@sa //prosa and compounds
prosa pro@s%a //prosa and compounds
prosa (ïe pr%o@sA: // fix stress and vowel sounds: prosaïes/-e
@) prose (_ pro@s@ // fix o sound: klap-/klip-/knop-/popr ose
proses pr%usEs // proses/versoeningsproses/strafproseswet

projek pr%ujEk
@@ -3519,6 +3571,7 @@
rasse ras@ // e sound of compounds starting with rasse
ribbe (tj r'Ibi
riete rit@ // fix e sound: merietelys/rietedak, etc.
rinkh (als rINk // drop h: rinkhals and compounds
rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der
_) ri (o r%i // move default stress: riool and compounds/riolering
ris (kant r@s // move default stress: riskant/-e
@@ -3551,6 +3604,7 @@
rugby rWgbi
ru (dolC ru // fix u sound: rudolf
_) rug (A@ r''Wx2_ // fix u sound, pause: rugoefeninge/-operasie and similar
ruma (tiek r%Wm@ // fix stress and vowel sounds: rumatiek(vingers and similar)
ru (moer r%W // fix stress and u sound: rumoer/-ig/-heid
rusper (C rWsp@r // fix e sound: rusperband/-tjie/-trekker and similar
ru (ïn r%y_ // move default stress: ruïne/-s
@@ -3631,9 +3685,11 @@
o) rene r@n@ // eersgeborene/uitverkorenes
re (geer r@ // regeer/geregeer; stress to end
reger (A r@x2e@r // regering/regerende
repertoire r%Ep@rtwA:r // repertoire and compounds
re (sensA r@ // resensie/-s/resenseer/resensent
reser (v r@s@r // fix stress and e sounds: (ge)reserveer/reservering
re (sessie r@ // fix stress and e sound: resessie/-s and compounds
resi (tA r@s@ // fix vowel sounds: resitasie and compounds/resiteer
respek r@spEk
respek (teer r@sp%Ek // stress to end
&) rele (_ r'e@l@
@@ -3693,6 +3749,7 @@
_) sebra se@bra // fix vowel sounds: sebra/-strepe; variant of zebra
se (ggA s& // fix e sound: niksseggend/-e
@) seko (no@ s_%Ek%u // fix e sound; default stress; insert short pause: bedryfs-landsekonomie/-s/-ekonoom
@) seks (_ sEks // fix final e sound: kinder-/kuber-/oumens-/selfoon-/tienerseks
seks (tant s%Eks // move default stress: sekstant and compounds
sekste (t s%EkstE // fix stress and 2nd e sound: sekstet/-te
selek (CA s@lEk //seleksie selekteer etc.
@@ -3700,6 +3757,7 @@
sen (sorie s%En // move default stress: sensories/-e
senter sEnt@r // fix e sound: binne-/buite-/Springboksenter
@C) se (re_ se@ // fix penultimate e sound: bed-/brand-/keel-/kop-/kruip-/maag-/mond-/pitsere
se (roet s@ // fix stress and e sound: seroet and compounds
seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.)
sitrus s'itr%Ws_ //i sound and stress in compounds

@@ -3733,6 +3791,7 @@
sa (tanie s%A:
sa (tir s%a // move default stress: satire/satiries/-e
sa (turnu s%a // fix stress and a sound: saturnus and compounds
sauna sO:na // fix au sound: sauna(bad and similar compounds)
sav (annA s%av // fix stress and v sound: savanna/-s/savanne
_) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher
_) sedan s@dan // fix stress and e sound: sedan/-s/sedanmotor, etc.
@@ -3814,6 +3873,7 @@
skerpi (oen sk%&rp%i // move default stress: skerpioen/-e and compounds
skilder (y sk@ld@r // move stress to y: skildery and compounds like skilderymuseum
skisofr (e sk%is%ufr // fix stress and o sound: skisofreen/skisofrene
_) skok (AP4 sk''Ok_ // fix o sound and stress: skokaankondiging/-effek/-insluiting/-onthulling...
skole sko@l@ // fix e sound in compounds: skolebeheerliggaam/-koor/-rugby/-wedstryd/-wet
sko (lier sk%o@ // move default stress: skolier/-e
skoppel (maa sk%Op@l // move default stress: skoppelmaai/-e/-er/-s
@@ -3821,7 +3881,7 @@
skrif (A skrIf_ // i sound: (hand)skrifontleder/skrifuitleg/tydskrifadvertensie/-afdeling/-artikel
skuld (erken skWlt_ // fix d sound: skulderkenning/-s/-erkentenis
skyn (hei sk%eIn // move default stress: skynheilig/-e/-heid
_) slag sl'ax2
_) slag sl''ax2_ // slagoffer/-instrument/-e
slag (off slax2_ // short a sound, insert pause: misdaadslagoffer and similar compounds
sla (vin sl%a // move default stress and shorten a sound: slavin/-ne and compounds
sla (we slA: // fix stress and a sound: slawearbeid/-er, etc.
@@ -3982,6 +4042,7 @@
standerd (@ st%and@rt // compounds starting with standerd
stand (houde st%ant // move default stress: standhoudend/-e/-heid
stand (vasti st%ant // move default stress: (on)standvastig/-e/-heid
_) stap (A stap_ // fix a sound, pause: stapafstand/-ekspedisie/-oord
stapel stA:p@l // fix e sound: (op)stapeling/stapelaar
staties st'A:tis
sta (tutA st%a // fix stress and a sound: statute/statutêr
@@ -4162,7 +4223,8 @@
_) trak (ta tr%ak // move default stress: traktaat/traktate
_) trans (@P5 tr%ans // transatlanties/transformasie/transoranje/Transvaal, etc.
_) trans (aksie tr%ans // remove small break: transaksie/-s and compounds
transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal
transendent (A tr%ans%End%Ent // fix stress and vowel sounds and remove short break: transendenteel/-tele/-taal
transistor tr%ansIst@r // trans- not prefix, fix o sound: transistor(radio, etc.)
transito tr%ansit%u // trans not prefix: transitorooftog and similar
transport tr%anspOrt // fix stress: transport and compounds
trap (orr trap_ // shorten a sound: traporrel/-tjie/-s and compounds
@@ -4269,6 +4331,7 @@
_) ter (l t@r // move default stress: terloops/-e
@) term (_ t&r@m // correct pronunciation of e
@) terme (_ t&rm@ // correct pronunciation of 1st e
&) termes t@rmEs // fix e sounds: bottermes and similar
ter (miet t%&r // move default stress: termiet/-e and compounds
_) ter (w t@r // stress and e sound: terwyl/terwille
sin) te (ti te@ //sintetiseer, compounds and derivatives
@@ -4299,6 +4362,7 @@


&) tel (_ t@l
ge) tel (_ t&l // fix e sound: bymekaargetel/oorgetel, etc.
teleur t@lY@r // teleur/teleurstelling/teleurgesteld
&) tels (_ t@ls
sleu) tel t@l //sleutel in compounds
@@ -4386,7 +4450,7 @@
uit (voerig %Yyt // move stress: uitvoerig/-e/-heid
uit (wisba %Yyt // move default stress: (on)uitwisbaar/-bare/-baarheid
_) uitge (@P5 'Yytx2@ // words beginning with uitge have stress on 1st slb
uitgewer 'Yytx2,e@v@r
uitgewer Yytx2%e@v@r
uitgewerk Yytx2@v&rk // uitgewerk and derivatives; see rule: uitgewer
uitgewerp Yytx2@v&rp // fix vowel sounds, see rule: uitgewer
uitke (n YytkE // mix e sound: uitken
@@ -4460,6 +4524,7 @@
vere (_ fe@r@ // fix e sound: vere and compounds ending in vere
ve (st fE // fix e sound: huweliksbevestiger/-bevestiging
_) vet (A fEt_ // fix e sound, pause: vetafskeiding/-olie/-oplossing, etc.
vete (X fe@t@ // fix stress and e sounds, remove pause: vete/-s and compounds
vete (ra f%Et@ // fix stress and e sounds: veteraan/-ane and compounds
veter (K fe@t@r // (skoen)veter/-s, etc.
_) veto (reg fe@t%u // fix o sound: vetoreg/-te
@@ -4569,6 +4634,7 @@
vol (kome f%Ol
vo (llA_ fO // volle/vollê/Volla - exception to: vo (lC f%O
volle (dig f%Ole@ // fix stress and e sound: (on)volledig/-e/-heid...
voll (engte fOlE
vo (ller fO // exception to: vo (lC f%O
volles (_ fOl@s // fix stress and e sound: volles/passievolles, etc.
vol (hou_ fOl // exception to: vo (lC f%O
@@ -4576,7 +4642,7 @@
vol (mane fOl // exception to: vo (lC f%O
vol (prop fOl // exception to: vo (lC f%O
vol (r fOl // volrond/-rooi/-ryp: exception to: vo (lC f%O
vol (sirk fOl // volsirkel: exception to: vo (lC f%O
vol (siC fOl // volsirkel/volsin/-ne: exception to: vo (lC f%O
_) vol (sk fOl // restore default stress: volskaalse/-skaduwee/-skerm/-skiet, etc.
vol (ste_ fOl // exception to: vo (lC f%O
vol (sto fOl // volstof/volstoom/volstop/volstort; exception to: vo (lC f%O
@@ -4644,6 +4710,7 @@
nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal
Cod) w v // fix w sound: godwelgevallig/godweet/godwees
k) w w
k) w (erC v // fix w sound: wrakwerf/-werwe
volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc.
k) w (And v // fix w sound: buikwand/rukwinde
s) w w
@@ -4886,12 +4953,14 @@
@) 'tjie %ici // foto'tjie/ma'tjie, etc.
K) á (CK '!a // extra stress: kán/wás and similar
áá '!A: // extra stress: dáár/dáár and similar
álle (K '!al@ // ekstra stress: álle/-s
K) ék (_ '&k // fix e sound and stress: ék/gék
K) é (CK '!E // extra stress: hét/nét and similar
éé '!e@ // extra stress: één, etdc.
ék (_ '!&k // ekstra stress: ék/plék
ə @ // char.replacement for 'n
_C) è (_ E // dè/nè
éú '!Y@ // stressed syllable

ê e:
l) êer &:@r // fix ê sound: lêer and compounds
@@ -4908,6 +4977,7 @@
ï (nsp @ // geïnspireer/-de
ï (nt @ // geïnteresseerd
ï (nC 'I // beïndruk/beïnvloed
ïnkarn (A @Nk%arn // fix stress and nk sound: reïnkarnasie and compounds/reïnkarneer
ïsol %is%ul // geïsoleer/-d
K) ó (CK '!O // extra stress: óf/kón and similar
óé '!u // extra stress: móét/sóék and similar
@@ -4919,13 +4989,12 @@
ûe W:@ // brûe/rû
ý '!eI // extra stress: jý/mý/sý and similar
ñ _^_ES // words containing ñ are Spanish: senñor/-a/-ita

// punctuation
! _:eItrup_:
!) !
$ dOl@r

__) - (_D minWs
A_) - (_D _
C_) - (_D _




+ 4
- 5
dictsource/ca_list View File

@@ -42,7 +42,6 @@ _< m@n'o||_:_:k@
_> ma#Z;'o||_:_:k@
_' a#p'Ost**'Uf
_" kUm'Et@s
_$ dola#r
- m'En^s
__ b'aRR2a#||B'ajS;a#
_/ ba*Ra
@@ -50,8 +49,8 @@ _\ b'a*RaimbERt'iDa
_` a#ks'Ent,UB'E**t
_( 'ob**@||pa#**'Ent@zis
_) t'anka#||pa#**'Ent@zis
_[ 'ob**@||kla#wD'at,or
_] t'anka#||kla#wD'at,or
_[ 'ob**@||kla#wD'at,o*
_] t'anka#||kla#wD'at,o*
_{ 'ob**@||kl'aws
_} t'anka#||kl'aws
_« 'ob**@||kUm'Et@s
@@ -69,7 +68,7 @@ _» t'anka#||kUm'Et@s
@ a*R'oBa
/ ba*Ra
© kopi*R'aIt
£ lliur**@s
£ lliu**@s
¶ pa#**'aQ**a#f
§ a#pa#**t'at // o secció?

@@ -216,7 +215,7 @@ o o $atend

b be
c se
ç se,tr@nkaDa#
ç se,t**@nkaDa#
d de
f Efa#
g Je

+ 9
- 8
dictsource/ca_rules View File

@@ -12,7 +12,7 @@
.L02 h l r s v w y z // continuants, not f
.L03 f h r s v w y z // continuants, not l
.L04 i í e é è // front vowels
.L08 p t k f s // sords
.L05 p t k f s // sords
.L09 b d g m v l n d z r q // sonors
.L10 a e o // vocals fortes
.L11 i u // vocals febles
@@ -116,7 +116,7 @@
m m
_) m' (P2 m
mp (K m
ment (_ m'Ent
// ment (_ m'En // ??


.group n
@@ -126,6 +126,7 @@
e) n (_ n // except after e, i
i) n (_ n
nt (K n
nt (_ =n
ny n^
b) n (@ m
v) n (@ m
@@ -137,7 +138,7 @@

.group o
o o
or (_ 'or
or (_ 'o*
ou Ow


@@ -155,7 +156,7 @@

.group r
r R
_) r RR2
_) r *R
r (_ = // final r is silent, but stress the vowel
r (t **
A) r (A **
@@ -164,7 +165,7 @@
m) r (A R
n) r (A R
s) r (A R
rr RR2
rr *R


.group s
@@ -205,8 +206,8 @@

.group x
x ks
_e) x dz
_è) x dz
_A) x gz
_A) x (L05 ks
K) x S;
Ai) x S;
Au) x S;
@@ -236,4 +237,4 @@
g) ü w
ñ n^

$ dola#r
$ dola#*

+ 1
- 1
dictsource/de_list View File

@@ -109,7 +109,7 @@ _17 'zi:btse:n
_18 '_axttse:n
_19 'nOYntse:n
_2X 'tsvantsIC
_3X 'd@-*aItsIC
_3X 'd@-*aIsIC
_4X 'fi:*tsIC
_5X 'fynftsIC
_6X 'zEktsIC

+ 17
- 5
dictsource/dict_phonemes View File

@@ -36,9 +36,9 @@ o O u U

* ** : ; b B d D
dZ; f g j J J^ k l
l^ m n N n^ p Q r
R R2 s S; t T ts tS;
v v# w z Z Z;
l^ m n N n^ p Q R
R2 s S; t T ts tS; v
v# w z Z Z;


Dictionary cs_dict
@@ -139,8 +139,8 @@ o O oI u

* ** : b B d D f
g j J J^ k l m n
N n^ p Q r R R2 s
t T tS v v# w x z
N n^ p Q R R2 s t
T tS v v# w x z


Dictionary fi_dict
@@ -371,6 +371,18 @@ N n^ p q R s S S;
t tS v w x z


Dictionary eu_dict

a aI aU e eI eU i o
oI u Y

* ** : ; b B c d
D f g h j J k l
l^ m n n^ p Q r R
s S t tS ts tz v w
x z


Dictionary nl_dict

8 @ @- A a: E e: EI

+ 26
- 9
dictsource/en_list View File

@@ -178,8 +178,8 @@ _‼ Ekskla2m'eIS@nz
_₠ jU@roU

# haS $max3
@ _at_
& _and
@ _at_ $u+
& _and $u+
\ bakstroUk $max3
/ stroUk $max3
?3 \ bakslaS $max3
@@ -303,12 +303,15 @@ _0M3 b'Ili@n
_dpt pOInt
_roman roUm@n_

_0st st
_0nd @nd
_0rd d
_0th T
_ord T // default ending
_ord20 @T // for 20,30,etc
_1o f'3:st
_2o s'Ek@nd
_3o T'3:d
_5o f'IT
_1o f'3:
_2o s'Ek
_3o T'3:
_5o f'I
_0Co h'Vndr@dT


@@ -429,6 +432,7 @@ accursed a2k3:sI2d
?5 accursed a2kVRsI2d
achille a2kIli:
aching eIkI2N
achy eIkI
adam ad@m
adamant ad@m@nt
add ad
@@ -607,6 +611,7 @@ authority a2T0rI2tI
authoritative O:T'0rI2t@tIv
autograph O:t@graf
auto O:toU
autocracy O:t'0kr@sI
automobile O:t@m@bi@l
autonomous O:t'0n@m@s
autopsy O:t0psI
@@ -720,6 +725,7 @@ cannabis kana2bIs
canoe k@nu:
canoes k@nu:z
canton kant0n
canvas kanv@s
capitol kapIt@L
caprice ka2pr'i:s
caramel kar@mEl
@@ -753,6 +759,8 @@ chapel tSap@L
charade Sa2rA:d
charismatic karIsm'atIk
charit tSarIt // charitable
chic Si:k
chisel tSIz@L
chocolate tS0kl@t
cholera k0l@r@
cholesterol k@lEst@r0l
@@ -847,6 +855,7 @@ coordinate koU'O:dI2neIt $verb
copier k0pi@3
coral k0r@L
coronet k0r@nEt
corollary $2
corporal kO@pr@L
corporate kO@p@r@t
corps kO@ $only
@@ -1203,6 +1212,7 @@ hospitable h0sp'It@b@L
hostage h0stI2dZ
hostess hoUstEs
hotel hoUt'El
hotkey h0tki:
house haUz $verb
however $2
howto haUtu:
@@ -1582,6 +1592,7 @@ pageant padZ@nt
paltry pO:ltrI
panacea pana2s'i:@
panache $2
pancreas pankri@s
parabola p@rab@l@
paralysis p@ral@sIs
parameter p@ramI2t3
@@ -1912,6 +1923,7 @@ shrilly SrIllI $verbf
sibelius sI2beIli@s
sierra sI'e@r@
signage saInI2dZ
signal sIgn@l // signaled
signer saIn3
sikh si:k
silhouette sI2lUw'Et
@@ -2142,6 +2154,7 @@ vegan vi:g@n
vengeance vEndZ@ns
venus vi:n@s
versus v3:sI2z
vertices v3:tIsi:z
vestige vEstI2dZ
vex vEks // for vexed
vicar vIk3
@@ -2391,7 +2404,7 @@ Oman oUm'an
Oregon 0rI2g@n
Pacific pa2sIfIk
Palestine pal@staIn
Palestinian pal@st'Ini:@n
Palestinia pal@st'Ini:@
Panama pan@mA:
Paris parIs
Peking pi:k'IN
@@ -2420,7 +2433,7 @@ Seychelle seIS'El
Sicily sIsI2lI
Slovak sloUvak
Seoul soUl
(sri lanka) sr,i:||l'anka2
Sri sr,i: // Sri Lanka(n)
Sudan su:d'an
Suez su:I2z
Sulawesi su:la2w'eIsI
@@ -2448,6 +2461,7 @@ Wyoming waI'oUmI2N
Xhosa kO:s@
zaire zaI'i@3
zimbabwe zI2mbA:bwI
zimbabwean zI2mbA:bwI@n

Aaron e@r@n
Abe eIb
@@ -2505,6 +2519,7 @@ Gary garI
Geraint gEraInt
Gibbs gIbz
Giles gaIlz
Gladys gladIs
Glynn glIn
Graeme greI@m
Graham greI@m
@@ -2565,6 +2580,7 @@ Mohammad moUh'amI2d
Muhammad moUh'amI2d
Moira mOIr@
Natalie nata2li
Natasha $2
Nathan neIT@n
Neville nEvIl
Nicholas nIk@l@s
@@ -2887,6 +2903,7 @@ we'd %wi:d $pastf

I aI $u+ $verbf $only
(I am) %aIa2m
(I am) %aIam $atend
he %hi: $verbsf
she %Si: $only $verbsf
it %It $verbsf

+ 9
- 3
dictsource/en_rules View File

@@ -1442,7 +1442,7 @@
conva (l k0nv@
_) co (nvoy k0
_) copy k0pI
coro (lla k@r0
coro (ll k0r0
co (rrect k@
correspo k,0rIsp'0
co (rro k@
@@ -1869,6 +1869,7 @@
@f) ed (_S2vdei t
@g) ed (_S1vi d
@k) ed (_S2vdei t
el) ed (_S2dv d
&en) ed (_S2v d
cl) ed (_S1v d
@p) ed (_S2vdei t
@@ -2751,6 +2752,7 @@
ie I
ie (_ I
ied (_S2i d // suffix
ieds (_S3i dz
ie (c aI
ie (ce i:
ie (_ aI
@@ -2875,6 +2877,7 @@
@) ingment (_S7dve I2Ng-m@nt
logu) ing (_S4v I2N
x) ing (_+S3v I2N
el) ing (_+S3dv I2N
@@om) ing (_S3dv I2N
en) ing (_S3v I2N
en) ings (_S4v I2Nz
@@ -3831,6 +3834,7 @@
_f) or (@ O@
_f) ore (A O@
f) or (k O@
_f) or (s@ %O@
ch) or (d O@
l) or (d O@
_m) or O@
@@ -4083,7 +4087,7 @@
c) over Vv3
c) ov (et Vv
d) ove Vv
g) ov (ern Vv
g) overn Vv3n
sh) ov (+ Vv
h) ov (el 0v
h) ov (er 0v
@@ -4106,7 +4110,7 @@

.group ow
ow oU
ow (itz =oUv
ow (itz_ =oUv
ow (ay_ @w
kn) owle (d 0lI
_) ow (l aU
@@ -4183,6 +4187,7 @@
ras) p (b
_) pur (su p3
put (_ pUt
s) put (_ pVt
pyon pj0n
_) pyro (@@P4 p,aIroU
pyrom (e paIr'0m
@@ -4794,6 +4799,7 @@
@) u (late =jU
@) u (lar =jU
@) u (lum =jU
@) uli (_ =jUlaI
&) u (lous_ =jU
ll) u (l ju:
j) u (li u:

+ 10
- 0
dictsource/eo_list View File

@@ -29,6 +29,16 @@ _0M3 mili'ardo
_0M4 duili'ono
_dpt _komo_

// ordinal numbers
_0a a
_0aj aI
_0an an
_0ajn aIn
_0-a a
_0-aj aI
_0-an an
_0-ajn aIn

// accent names
_lig ligat'uRa
_acu dekst@-*ak'oRna

+ 0
- 4
dictsource/eo_rules View File

@@ -17,10 +17,6 @@
a a
aj aI
aŭ aU
D_-_) a (_ %a //'a' after a number
D_-_) an (_ %an //'an' after a number
D_) a (_ %a //'a' after a number
D_) an (_ %an //'an' after a number


.group b

+ 1
- 1
dictsource/es_list View File

@@ -63,7 +63,7 @@ _» kom'iJ^as||dE**'EtSas

^ TiRkumfl'exo
€ eU**o
% pOrTj'Ento $max3
% pO**Tj'Ento $max3
& ampERs'ant
@ a*R'oBa
/ ba*Ra

+ 1
- 1
dictsource/es_rules View File

@@ -212,7 +212,7 @@
ü u
ñ n^

$ d'Olar
$ d'Ola*

_) - (_D m'EnOs
A_) - (_D _

+ 18
- 50
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2009-01-14 Michel Such <[email protected]>
// Updated 2009-02-01 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -111,7 +111,6 @@ _# djEz
_' a2postr'Of
_( 'uvR@-parA~t'Ez
_) f'Erm parA~t'Ez
_* asterisk:
_, virgyl
_- tirE
_. _|pw%E~
@@ -141,11 +140,11 @@ _µ mikR'o
_§ sEksj'O~

// symbols that are normally spoken when reading text
@ arobaz
% pursA~ $max3
* asterisk: $max3
@ _!arobaz
% pursA~ $max3
& e $u $brk
_& _e_komErsj'al
* asterisk: $max3
+ plys $max3
~ tilde
€ @ro
@@ -200,30 +199,11 @@ _4X karA~t
_41 karA~te:W~
_5X sE~kA~t
_51 sE~kA~te:W~
_6X swAsA~t
_6X swAsA~t:
_61 swAsA~te:W~
_7X swAsA~t:diz3
_71 swAsA~te:O~z
_72 swAsA~t:duz
_73 swAsA~t:tREz
_74 swAsA~t:katOrz
_75 swAsA~t:kE~z
_76 swAsA~t:sEz
_77 swAsA~t:dis:Et
_78 swAsA~t:diz'w^it3
_79 swAsA~t:diznWf
_8X katR@vE~
_8X katR@vE~:
_80 katR@vE~z2
_9X katR@vE~diz3
_91 katR@vE~:O~z
_92 katR@vE~:duz
_93 katR@vE~:tREz
_94 katR@vE~:katOrz
_95 katR@vE~:kE~z
_96 katR@vE~:sEz
_97 katR@vE~:dis:Et
_98 katR@vE~:dizw^it3
_99 katR@vE~:diznWf
_0C sA~
_1C0 sA~t2
_0M1 mil
@@ -236,24 +216,8 @@ _dpt virgyl
//some numbers have special pronunciation in Belgium and Switzerland
?2 _7X sEptA~t
?2 _71 sEptA~te:W~
?2 _72 sEptA~t:dYz2
?2 _73 sEptA~t:tRwAz2
?2 _74 sEptA~t:katr
?2 _75 sEptA~t:sE~k
?2 _76 sEptA~t:siz3
?2 _77 sEptA~t:sEt
?2 _78 sEptA~t:w^it3
?2 _79 sEptA~t:nWf
?2 _9X no2nA~t
?2 _91 no2nA~te:W~
?2 _92 no2nA~t:dYz2
?2 _93 no2nA~t:tRwAz2
?2 _94 no2nA~t:katr
?2 _95 no2nA~t:sE~k
?2 _96 no2nA~t:siz3
?2 _97 no2nA~t:sEt
?2 _98 no2nA~t:w^it3
?2 _99 no2nA~t:nWf

(21 ème) vE~te:yniEm
(31 ème) tRA~te:yniEm
@@ -288,7 +252,7 @@ hz _!E2rts
ibm $abbrev
ide $abbrev
ip $abbrev
jaws dZ'O2wz
jaws dZ'awz
kde $abbrev
kg kilogram
khz kiloE2rts
@@ -324,8 +288,9 @@ xfce iksEfse@
xy $abbrev


dr dOkt Wr $dot $capital
dr dOktWr $dot $capital
prof $dot
pr professeur $text *dot $capital



@@ -472,7 +437,6 @@ trop $u+
assez $u+
beaucoup $u+
peu $u+
peu $noun
très $u

// negative
@@ -480,7 +444,6 @@ ne $u $verbf
pas $u+
pas $noun
plus $u+
plus $noun
guère $u+
jamais $u+
non nO~ $u+
@@ -504,7 +467,8 @@ sommes $u+ $verb
sont $u+ $verb

fus $u+ $verb
fut $u+ $verb
fut fyt2 $u+ $verb
fût fyt2 $u+ $verb
fûmes $u+ $verb
fûtes $u+ $verb
furent $u+
@@ -526,6 +490,7 @@ eues yz2 $u+
eus yz2 $u+

eut yt2 $u+ $verb
eût yt2 $u+ $verb
eûmes $u+ $verb
eûtes $u+ $verb
eurent yrt2 $u+
@@ -627,14 +592,17 @@ malus malys
mapper _^_en
mars mars
mieux mj'Y $u+
mrs _^_en
ours urs
parangon parA~gO~
phallus falys
polder pOldEr
premier pr@mjer2
(program files) pr,o2gram||f'ajlz
program _^_en
quit _^_en
scanner skaner2
scanner skanWr $noun
sir _^_EN
souris suri
sus sys
sus sy $verb
@@ -733,7 +701,7 @@ from frO2m $u+
get _^_en
google gu:gWl
gnome gnOm
gnu gnu
gnu $abbrev
hamburger hA~b@rgWr
help _^_en
hot _^_en
@@ -819,5 +787,5 @@ wallis wAlis
futuna futuna
zimbabwe zimbabwe

pest $1


+ 6
- 2
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2009-01-14 Michel Such <[email protected]>
// Updated: 2009-02-19 Michel Such <[email protected]>
//

// Letter classes:
@@ -738,6 +738,7 @@ _) half _^_en
_AC) ind (er_ _^_en // finder, reminder
ize (X _^_en // realize
dr) i (ve _^_en
ram_f) i (le _^_en


.group î
@@ -902,7 +903,7 @@ _) half _^_en

// group o: English section
oa (X _^_en // approach, load
oa (CeX _^_en
oa (CerX _^_en
oach _^_en
old (er_ _^_en // folder, older
C) oing (_ _^_en // going
@@ -1102,6 +1103,7 @@ _) t (_ te
-) t (- t2
_) t' (P2v t
Vn) t (_ t2
A) t (- t2
t (_
peti) t (_ t2
_) th t // thon
@@ -1292,6 +1294,8 @@ Vn) t (_ t2

.group x
x ks
_) x (A gz // xylophone
xml (_S3 _!iksEmEl
e) x (A gz // exagérer exemple
L03e) x (A ks // annexe, vexer
_ine) x (A gz

+ 1
- 3
dictsource/zhy_rules View File

@@ -136,6 +136,4 @@
4 4
5 5
6 6
7 1
8 3
9 6
7 7

+ 14
- 3
phsource/compile_report View File

@@ -1,4 +1,4 @@
58 phoneme tables
59 phoneme tables
new total
base 103 103
base2 24 122
@@ -43,7 +43,7 @@
no 28 129
is 33 129
vi 41 140
zhy 40 136
zhy 41 137
zh 66 154
sw 14 112
tr 18 127
@@ -58,6 +58,7 @@
ne 18 157
mr 1 149
om 25 125
eu 6 124

Data file Used by
b/b [b] base
@@ -245,8 +246,8 @@ envelope/p_214 [5] vi
envelope/p_512 [6] vi
envelope/p_fall [2] vi
[7] vi
[1] zhy
[4] zhy
[7] zhy
[21] zh
[51] zh
[22] zh
@@ -255,6 +256,7 @@ envelope/p_fall [2] vi
[+] rw
envelope/p_fallrise [4] vi
envelope/p_level [1] vi
[1] zhy
[3] zhy
[6] zhy
[55] zh
@@ -723,6 +725,8 @@ ufric/s [s] base
[s] es
[s#] pt
[z] sq
[s] eu
[z] eu
ufric/s_ [s] base
[z] base
[s2] fi
@@ -738,6 +742,8 @@ ufric/s_ [s] base
[s2] is
[z] sq
[s2] om
[s] eu
[z] eu
ufric/s! [s] base
[s2] fi
[s] fr
@@ -1012,6 +1018,8 @@ ustop/ts [ts] base2
[dz] sq
[dz] hy
[ts#] hy
[ts] eu
[tz] eu
ustop/ts_ [ts] base2
[ts] de
[ts] eo
@@ -1024,6 +1032,8 @@ ustop/ts_ [ts] base2
[dz] sq
[dz] hy
[ts#] hy
[ts] eu
[tz] eu
ustop/ts2 [ts] lv
[ts] hy
ustop/tsh [tS] base
@@ -2134,6 +2144,7 @@ vowel/y# [Y:] en
[8] nl
[Y] ro
[oe] zhy
[Y] eu
vowel/y## [y#] is
vowel/y_2 [y] fr
[y"] fr

+ 7
- 1
phsource/ph_zh_yue View File

@@ -6,7 +6,7 @@

phoneme 1 // tone: high level
stress
tone 50 30 envelope/p_fall NULL
tone 50 50 envelope/p_level NULL
endphoneme


@@ -40,6 +40,12 @@ phoneme 6 // tone: low level
endphoneme


phoneme 7 // tone: high fall
stress
tone 50 30 envelope/p_fall NULL
endphoneme


//====================================================
// Consonants
//====================================================

+ 3
- 0
phsource/phonemes View File

@@ -1361,3 +1361,6 @@ include ph_mathari

phonemetable om base
include ph_oromo

phonemetable eu base2
include ph_basque

+ 9
- 4
src/dictionary.cpp View File

@@ -1030,8 +1030,8 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress)



void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, int tonic, int prev_stress)
{//========================================================================================================
void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress)
{//=========================================================================================================
/* Guess stress pattern of word. This is language specific

'dictionary_flags' has bits 0-3 position of stressed vowel (if > 0)
@@ -1109,6 +1109,13 @@ void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags,

max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1);

if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2))
{
// option: don't stress monosyllables except at end-of-clause
vowel_stress[1] = 1;
dictionary_flags |= FLAG_STRESS_END;
}

// heavy or light syllables
ix = 1;
for(p = phonetic; *p != 0; p++)
@@ -1219,8 +1226,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags,
else
{
stressed_syllable = 1;
if(stressflags & 0x1)
max_stress = 3; // don't give full stress to monosyllables
}

// only set the stress if it's not already marked explicitly

+ 8
- 3
src/espeak.cpp View File

@@ -52,7 +52,7 @@ static const char *help_text =
"\t Use voice file of this name from espeak-data/voices\n"
"-w <wave file name>\n"
"\t Write output to this WAV file, rather than speaking it directly\n"
"-b\t Input text is 8-bit encoding\n"
"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n"
"-m\t Interpret SSML markup, and ignore other < > tags\n"
"-q\t Quiet, don't produce any speech (may be useful with -x)\n"
"-x\t Write phoneme mnemonics to stdout\n"
@@ -330,6 +330,7 @@ int main (int argc, char **argv)
int option_index = 0;
int c;
int ix;
int value;
int flag_stdin = 0;
int flag_compile = 0;
int filesize = 0;
@@ -362,7 +363,7 @@ int main (int argc, char **argv)

while(true)
{
c = getopt_long (argc, argv, "a:bf:g:hk:l:mp:qs:v:w:xXz",
c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz",
long_options, &option_index);

/* Detect the end of the options. */
@@ -372,7 +373,11 @@ int main (int argc, char **argv)
switch (c)
{
case 'b':
synth_flags |= espeakCHARS_8BIT;
// input character encoding, 8bit, 16bit, UTF8
if((sscanf(optarg,"%d",&value) == 1) && (value <= 4))
synth_flags |= value;
else
synth_flags |= espeakCHARS_8BIT;
break;

case 'h':

+ 12
- 8
src/espeak_command.cpp View File

@@ -192,7 +192,7 @@ t_espeak_command* create_espeak_mark(const void *text, size_t size, const char *
//>
//< create_espeak_key, create_espeak_char

t_espeak_command* create_espeak_key(const char *key_name)
t_espeak_command* create_espeak_key(const char *key_name, void *user_data)
{
ENTER("create_espeak_key");
int a_error=1;
@@ -205,7 +205,9 @@ t_espeak_command* create_espeak_key(const char *key_name)

a_command->type = ET_KEY;
a_command->state = CS_UNDEFINED;
a_command->u.my_key = strdup( key_name);
a_command->u.my_key.user_data = user_data;
a_command->u.my_key.unique_identifier = ++my_current_text_id;
a_command->u.my_key.key_name = strdup( key_name);
a_error=0;

key_error:
@@ -223,7 +225,7 @@ t_espeak_command* create_espeak_key(const char *key_name)
return a_command;
}

t_espeak_command* create_espeak_char(wchar_t character)
t_espeak_command* create_espeak_char(wchar_t character, void* user_data)
{
ENTER("create_espeak_char");
int a_error=1;
@@ -235,7 +237,9 @@ t_espeak_command* create_espeak_char(wchar_t character)
a_command->type = ET_CHAR;
a_command->state = CS_UNDEFINED;
a_command->u.my_char = character;
a_command->u.my_char.user_data = user_data;
a_command->u.my_char.unique_identifier = ++my_current_text_id;
a_command->u.my_char.character = character;
a_error=0;

char_error:
@@ -463,9 +467,9 @@ int delete_espeak_command( t_espeak_command* the_command)
break;

case ET_KEY:
if (the_command->u.my_key)
if (the_command->u.my_key.key_name)
{
free((void*)(the_command->u.my_key));
free((void*)(the_command->u.my_key.key_name));
}
break;

@@ -562,14 +566,14 @@ void process_espeak_command( t_espeak_command* the_command)

case ET_KEY:
{
const char* data = the_command->u.my_key;
const char* data = the_command->u.my_key.key_name;
sync_espeak_Key(data);
}
break;

case ET_CHAR:
{
const wchar_t data = the_command->u.my_char;
const wchar_t data = the_command->u.my_char.character;
sync_espeak_Char( data);
}
break;

+ 20
- 4
src/espeak_command.h View File

@@ -42,12 +42,28 @@ typedef struct
void* user_data;
} t_espeak_mark;

typedef struct
{
unsigned int unique_identifier;
void* user_data;
wchar_t character;
} t_espeak_character;

typedef struct
{
unsigned int unique_identifier;
void* user_data;
const char* key_name;
} t_espeak_key;


typedef struct
{
unsigned int unique_identifier;
void* user_data;
} t_espeak_terminated_msg;


typedef struct
{
espeak_PARAMETER parameter;
@@ -71,8 +87,8 @@ typedef struct
{
t_espeak_text my_text;
t_espeak_mark my_mark;
const char* my_key;
wchar_t my_char;
t_espeak_key my_key;
t_espeak_character my_char;
t_espeak_parameter my_param;
const wchar_t* my_punctuation_list;
const char *my_voice_name;
@@ -88,9 +104,9 @@ t_espeak_command* create_espeak_mark(const void *text, size_t size, const char *

t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, void* user_data);

t_espeak_command* create_espeak_key(const char *key_name);
t_espeak_command* create_espeak_key(const char *key_name, void *user_data);

t_espeak_command* create_espeak_char(wchar_t character);
t_espeak_command* create_espeak_char(wchar_t character, void *user_data);

t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value, int relative);


+ 47
- 22
src/numbers.cpp View File

@@ -747,6 +747,9 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)



// Numbers

static char ph_ordinal2[12];

int TranslateRoman(Translator *tr, char *word, char *ph_out)
{//=====================================================
@@ -905,13 +908,14 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
int found_ordinal = 0;
int next_phtype;
char string[12]; // for looking up entries in *_list
char ph_ordinal[20];
char ph_tens[50];
char ph_digits[50];
char ph_and[12];
char ph_ordinal[12];

// is there a special pronunciation for this 2-digit number
found = 0;
ph_ordinal[0] = 0;

if(control & 4)
{
@@ -920,6 +924,8 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
}
if(control & 2)
{
strcpy(ph_ordinal, ph_ordinal2);

sprintf(string,"_%do",value);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
@@ -969,6 +975,14 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
Lookup(tr, string, ph_tens);
}

if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
{
// tens not found, (for example) 73 is 60+13
units = (value % 20);
sprintf(string,"_%dX",(value / 10) & 0xfe);
Lookup(tr, string, ph_tens);
}

ph_digits[0] = 0;
if(units > 0)
{
@@ -997,8 +1011,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
}
}

ph_ordinal[0] = 0;
if((control & 2) && (found_ordinal == 0))
if((control & 2) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & 0x10)))
Lookup(tr, "_ord20", ph_ordinal);
@@ -1196,10 +1209,6 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
} // end of LookupNum3


static const char *ordinalstr_en[] = {"th","st","nd","rd",NULL,};
static const char *ordinalstr_af[] = {"de","ste",NULL,};
static const char **ordinal_strings[] = {NULL, ordinalstr_en, ordinalstr_af};

static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, int wflags)
{//====================================================================================================
// Number translation with various options
@@ -1208,7 +1217,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned

int n_digits;
int value;
int ix;
unsigned int ix;
unsigned char c;
int suppress_null = 0;
int decimal_point = 0;
@@ -1221,41 +1230,57 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
int decimal_count;
int max_decimal_count;
int decimal_mode;
int len;
const char *p;
const char **pp;
char string[12]; // for looking up entries in de_list
int hyphen;
char *p;
char string[20]; // for looking up entries in **_list
char buf1[100];
char ph_append[50];
char ph_buf[200];
char ph_buf2[50];
char suffix[20];

static const char str_pause[2] = {phonPAUSE_NOLINK,0};

*flags = 0;

for(ix=0; isdigit(word[ix]); ix++) ;
n_digits = ix;
value = this_value = atoi(word);

ph_ordinal2[0] = 0;
if((tr->langopts.numbers & 0x10000) && (word[ix] == '.'))
{
// ordinal number
// ordinal number is indicated by dot after the number
ordinal = 2;
word[ix] = ' ';
}
else
if(tr->langopts.ordinals)
{
// ordinal numbers are recognized by letters after the number
// look for an ordinal number suffix after the number
ix++;
pp = ordinal_strings[tr->langopts.ordinals];
while((p = *pp++) != NULL)
hyphen = 0;
p = suffix;
if(word[ix] == '-')
{
*p++ = '-';
hyphen = 1;
ix += 2;
}
while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1)))
{
len = strlen(p);
if((word[ix+len] == ' ') && (memcmp(&word[ix], p, len) == 0))
*p++ = word[ix++];
}
*p = 0;

if(suffix[0] != 0)
{
sprintf(string,"_0%s",suffix);
if(Lookup(tr, string, ph_ordinal2))
{
// this is an ordinal suffix
ordinal = 2;
memset(&word[ix], ' ', len);
break;
flags[0] |= FLAG_SKIPWORDS;
dictionary_skipwords = 1 + hyphen;
}
}
}
@@ -1462,7 +1487,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
}

*flags = FLAG_FOUND;
*flags |= FLAG_FOUND;
prev_value = this_value;
return(1);
} // end of TranslateNumber_1

+ 71
- 40
src/readclause.cpp View File

@@ -51,7 +51,7 @@ char *namedata = NULL;

static FILE *f_input = NULL;
static int ungot_char2 = 0;
char *p_textinput;
unsigned char *p_textinput;
wchar_t *p_wchar_input;
static int ungot_char;
static const char *ungot_word = NULL;
@@ -373,13 +373,21 @@ int Eof(void)

static int GetC_get(void)
{//======================
int c;
unsigned int c;
unsigned int c2;

if(f_input != NULL)
{
c = fgetc(f_input);
if(feof(f_input)) c = ' ';
return(c & 0xff);

if(option_multibyte == espeakCHARS_16BIT)
{
c2 = fgetc(f_input);
if(feof(f_input)) c2 = 0;
c = c + (c2 << 8);
}
return(c);
}

if(option_multibyte == espeakCHARS_WCHAR)
@@ -402,7 +410,15 @@ static int GetC_get(void)
}
if(!end_of_input)
{
if(option_multibyte == espeakCHARS_16BIT)
{
c = p_textinput[0] + (p_textinput[1] << 8);
p_textinput += 2;
return(c);
}
return(*p_textinput++ & 0xff);
}
}
return(0);
}
@@ -440,7 +456,7 @@ static int GetC(void)
c1 = GetC_get();
}

if(option_multibyte == espeakCHARS_WCHAR)
if((option_multibyte == espeakCHARS_WCHAR) || (option_multibyte == espeakCHARS_16BIT))
{
count_characters++;
return(c1); // wchar_t text
@@ -1862,8 +1878,8 @@ static MNEM_TAB xml_char_mnemonics[] = {
{NULL,-1}};


int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type)
{//============================================================================================
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type)
{//=============================================================================================================
/* Find the end of the current clause.
Write the clause into buf

@@ -2031,49 +2047,62 @@ f_input = f_in; // for GetC etc
}
}
else
if((c1 == '<') && (ssml_ignore_l_angle != '<') && ((c2 == '/') || iswalpha(c2)))
if((c1 == '<') && (ssml_ignore_l_angle != '<'))
{
// SSML Tag
n_xml_buf = 0;
c1 = c2;
while(!Eof() && (c1 != '>') && (n_xml_buf < N_XML_BUF))
if(c2 == '!')
{
xml_buf[n_xml_buf++] = c1;
c1 = GetC();
}
xml_buf[n_xml_buf] = 0;
c2 = ' ';
buf[ix++] = ' ';
self_closing = 0;
if(xml_buf[n_xml_buf-1] == '/')
{
// a self-closing tag
xml_buf[n_xml_buf-1] = ' ';
self_closing = 1;
// a comment, ignore until closing '<'
while(!Eof() && (c1 != '>'))
{
c1 = GetC();
}
c2 = ' ';
}
terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing);
if(terminator != 0)
else
if((c2 == '/') || iswalpha(c2))
{
buf[ix] = ' ';
buf[ix++] = 0;
if(terminator & CLAUSE_BIT_VOICE)
// SSML Tag
n_xml_buf = 0;
c1 = c2;
while(!Eof() && (c1 != '>') && (n_xml_buf < N_XML_BUF))
{
// a change in voice, write the new voice name to the end of the buf
p = current_voice_id;
while((*p != 0) && (ix < (n_buf-1)))
xml_buf[n_xml_buf++] = c1;
c1 = GetC();
}
xml_buf[n_xml_buf] = 0;
c2 = ' ';
buf[ix++] = ' ';
self_closing = 0;
if(xml_buf[n_xml_buf-1] == '/')
{
// a self-closing tag
xml_buf[n_xml_buf-1] = ' ';
self_closing = 1;
}
terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing);
if(terminator != 0)
{
buf[ix] = ' ';
buf[ix++] = 0;
if(terminator & CLAUSE_BIT_VOICE)
{
buf[ix++] = *p++;
// a change in voice, write the new voice name to the end of the buf
p = current_voice_id;
while((*p != 0) && (ix < (n_buf-1)))
{
buf[ix++] = *p++;
}
buf[ix++] = 0;
}
buf[ix++] = 0;
return(terminator);
}
return(terminator);
continue;
}
continue;
}
}
ssml_ignore_l_angle=0;
@@ -2087,6 +2116,7 @@ f_input = f_in; // for GetC etc
if((punct = lookupwchar(punct_chars,c1)) == 0)
{
charix[ix] = count_characters - clause_start_char;
*charix_top = ix;
ix += utf8_out(c1,&buf[ix]);
terminator = CLAUSE_PERIOD; // line doesn't end in punctuation, assume period
}
@@ -2342,6 +2372,7 @@ if(option_ssml) parag=1;
while(j < ix)
charix[j++] = -1; // subsequent bytes of a multibyte character
}
*charix_top = ix;

if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2)))
{

+ 5
- 2
src/speak.cpp View File

@@ -86,7 +86,7 @@ static const char *help_text =
"\t Use voice file of this name from espeak-data/voices\n"
"-w <wave file name>\n"
"\t Write output to this WAV file, rather than speaking it directly\n"
"-b\t Input text is 8-bit encoding\n"
"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n"
"-m\t Interpret SSML markup, and ignore other < > tags\n"
"-q\t Quiet, don't produce any speech (may be useful with -x)\n"
"-x\t Write phoneme mnemonics to stdout\n"
@@ -568,7 +568,7 @@ int main (int argc, char **argv)
#else
while(true)
{
c = getopt_long (argc, argv, "a:bf:g:hk:l:p:qs:v:w:xXmz",
c = getopt_long (argc, argv, "a:b:f:g:hk:l:p:qs:v:w:xXmz",
long_options, &option_index);

/* Detect the end of the options. */
@@ -580,7 +580,10 @@ int main (int argc, char **argv)
switch (c)
{
case 'b':
// input character encoding, 8bit, 16bit, UTF8
option_multibyte = espeakCHARS_8BIT;
if((sscanf(optarg2,"%d",&value) == 1) && (value <= 4))
option_multibyte= value;
break;

case 'h':

+ 2
- 2
src/speak_lib.cpp View File

@@ -884,7 +884,7 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key)
}

#ifdef USE_ASYNC
t_espeak_command* c = create_espeak_key( key);
t_espeak_command* c = create_espeak_key( key, NULL);
a_error = fifo_add_command(c);
if (a_error != EE_OK)
{
@@ -910,7 +910,7 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character)
return(EE_OK);
}

t_espeak_command* c = create_espeak_char( character);
t_espeak_command* c = create_espeak_char( character, NULL);
a_error = fifo_add_command(c);
if (a_error != EE_OK)
{

+ 4
- 1
src/speak_lib.h View File

@@ -27,7 +27,7 @@

#include <stdio.h>

#define ESPEAK_API_REVISION 3
#define ESPEAK_API_REVISION 5
/*
Revision 2
Added parameter "options" to eSpeakInitialize()
@@ -38,6 +38,8 @@ Revision 3
Revision 4
Added flags parameter to espeak_CompileDictionary()

Revision 5
Added espeakCHARS_16BIT
*/
/********************/
/* Initialization */
@@ -227,6 +229,7 @@ int UriCallback(int type, const char *uri, const char *base);
#define espeakCHARS_UTF8 1
#define espeakCHARS_8BIT 2
#define espeakCHARS_WCHAR 3
#define espeakCHARS_16BIT 4

#define espeakSSML 0x10
#define espeakPHONEMES 0x100

+ 1
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.40.07 13.Jan.09";
const char *version_string = "1.40.09 11.Mar.09";
const int version_phdata = 0x014000;

int option_device_number = -1;

+ 16
- 6
src/tr_languages.cpp View File

@@ -263,7 +263,6 @@ Translator *SelectTranslator(const char *name)
SetLetterVowel(tr,'y'); // add 'y' to vowels
tr->langopts.numbers = 0x8d1 + NUM_ROMAN;
tr->langopts.ordinals = 2;
tr->langopts.accents = 1;
}
break;
@@ -345,7 +344,6 @@ Translator *SelectTranslator(const char *name)

tr->langopts.stress_rule = 0;
tr->langopts.numbers = 0x841 + NUM_ROMAN;
tr->langopts.ordinals = 1;
tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word
}
break;
@@ -446,6 +444,17 @@ Translator *SelectTranslator(const char *name)
break;


case L('e','u'): // basque
{
static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress
static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 };
SetupTranslator(tr,stress_lengths_eu,stress_amps_eu);
tr->langopts.stress_rule = 1; // ?? second syllable ??
tr->langopts.numbers = 0x569 + NUM_VIGESIMAL;
}
break;


case L('f','i'): // Finnish
{
static const unsigned char stress_amps_fi[8] = {18,16, 22,22, 20,22, 22,22 };
@@ -466,6 +475,7 @@ Translator *SelectTranslator(const char *name)
}
break;


case L('f','r'): // french
{
static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 240};
@@ -473,10 +483,10 @@ Translator *SelectTranslator(const char *name)

SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = 3; // stress on final syllable
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = 0x0024 + 0x1; // don't use secondary stress, monosyllables are unstressed
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables

tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN;
tr->langopts.numbers = 0x1509 + 0x8000 + NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL;
SetLetterVowel(tr,'y');
}
break;
@@ -958,7 +968,7 @@ SetLengthMods(tr,3); // all equal
SetupTranslator(tr,stress_lengths_th,stress_amps_th);

tr->langopts.stress_rule = 0; // stress on final syllable of a "word"
tr->langopts.stress_flags = 1; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
// tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
@@ -1024,7 +1034,7 @@ SetLengthMods(tr,3); // all equal
SetupTranslator(tr,stress_lengths_zh,stress_amps_zh);

tr->langopts.stress_rule = 3; // stress on final syllable of a "word"
tr->langopts.stress_flags = 1; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
tr->langopts.vowel_pause = 0;
tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

+ 28
- 20
src/translate.cpp View File

@@ -86,7 +86,7 @@ PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes

wchar_t option_punctlist[N_PUNCTLIST]={0};
char ctrl_embedded = '\001'; // to allow an alternative CTRL for embedded commands
int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar
int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar, 4=16bit

// these are overridden by defaults set in the "speak" file
int option_linelength = 0;
@@ -1950,7 +1950,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
int finished;
int single_quoted;
int phoneme_mode = 0;
int dict_flags; // returned from dictionary lookup
int dict_flags = 0; // returned from dictionary lookup
int word_flags; // set here
int next_word_flags;
int embedded_count = 0;
@@ -1962,8 +1962,9 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
char *p;
int j, k;
int n_digits;
int charix_top;

short charix[N_TR_SOURCE+1];
short charix[N_TR_SOURCE+4];
WORD_TAB words[N_CLAUSE_WORDS];
int word_count=0; // index into words

@@ -1973,7 +1974,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
int tone;
int tone2;

p_textinput = (char *)vp_input;
p_textinput = (unsigned char *)vp_input;
p_wchar_input = (wchar_t *)vp_input;

embedded_ix = 0;
@@ -1987,9 +1988,11 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t

for(ix=0; ix<N_TR_SOURCE; ix++)
charix[ix] = 0;
terminator = ReadClause(tr, f_text, source, charix, N_TR_SOURCE, &tone2);
terminator = ReadClause(tr, f_text, source, charix, &charix_top, N_TR_SOURCE, &tone2);

charix[N_TR_SOURCE] = count_characters;
charix[charix_top+1] = 0;
charix[charix_top+2] = 0x7fff;
charix[charix_top+3] = 0;

clause_pause = (terminator & 0xfff) * 10; // mS
tone = (terminator >> 12) & 0xf;
@@ -2454,16 +2457,14 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre

if(IsSpace(c))
{
if(space_inserted)
if(prev_out == ' ')
{
source_index = prev_source_index; // rewind to the previous character
char_inserted = 0;
space_inserted = 0;
continue; // multiple spaces
}

if(prev_out == ' ')
if(space_inserted)
{
continue; // multiple spaces
words[word_count].length = source_index - words[word_count].sourceix;
}

// end of 'word'
@@ -2516,6 +2517,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
all_upper_case = FLAG_ALL_UPPER;
syllable_marked = 0;
}

if(space_inserted)
{
source_index = prev_source_index; // rewind to the previous character
char_inserted = 0;
space_inserted = 0;
}
}
else
{
@@ -2644,12 +2652,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre

// include the next few characters, in case there are an ordinal indicator
pn[0] = ' ';
memcpy(pn+1, pw, 5);
pn[5] = 0;
memcpy(pn+1, pw, 8);
pn[8] = 0;

for(pw = &number_buf[1]; pw < pn;)
{
TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
while(*pw++ != ' ');
words[ix].pre_pause = 0;
words[ix].flags = 0;
@@ -2679,11 +2687,6 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
}

if(dict_flags & FLAG_SKIPWORDS)
{
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
}

if((dict_flags & FLAG_DOT) && (ix == word_count-1) && (terminator == CLAUSE_PERIOD))
{
// probably an abbreviation such as Mr. or B. rather than end of sentence
@@ -2691,6 +2694,11 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
tone = 4;
}
}

if(dict_flags & FLAG_SKIPWORDS)
{
ix += dictionary_skipwords; // dictionary indicates skip next word(s)
}
}

for(ix=0; ix<2; ix++)

+ 6
- 5
src/translate.h View File

@@ -301,7 +301,7 @@ typedef struct {
int vowel_pause;
int stress_rule; // 1=first syllable, 2=penultimate, 3=last

// bit0=don't stress monosyllables,
// bit0=don't stress monosyllables, except at end of clause
// bit1=don't set diminished stress,
// bit2=mark unstressed final syllables as diminished
// bit4=don't allow secondary stress on last syllable
@@ -328,6 +328,7 @@ typedef struct {
#define NUM_ROMAN_UC 0x40000
#define NUM_NOPAUSE 0x80000
#define NUM_ROMAN_AFTER 0x200000
#define NUM_VIGESIMAL 0x400000

// bits0-1=which numbers routine to use.
// bit2= thousands separator must be space
@@ -348,6 +349,7 @@ typedef struct {
// bit19=don't add pause after a number
// bit20='and' before hundreds
// bit21= say "roman" after the number, not before
// bit22= vigesimal number, if tens are not found
int numbers;

#define NUM2_100000 0x800 // numbers for 100,000 and 10,000,000
@@ -364,7 +366,6 @@ typedef struct {
int max_roman;
int thousands_sep;
int decimal_sep;
int ordinals;

// bit 0, accent name before the letter name, bit 1 "capital" after letter name
int accents;
@@ -514,7 +515,7 @@ extern Translator *translator2;
extern const unsigned short *charsets[N_CHARSETS];
extern char dictionary_name[40];
extern char ctrl_embedded; // to allow an alternative CTRL for embedded commands
extern char *p_textinput;
extern unsigned char *p_textinput;
extern wchar_t *p_wchar_input;
extern int dictionary_skipwords;

@@ -568,11 +569,11 @@ void CalcPitches(Translator *tr, int clause_tone);

int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
int Unpronouncable(Translator *tr, char *word);
void SetWordStress(Translator *tr, char *output, unsigned int dictionary_flags, int tonic, int prev_stress);
void SetWordStress(Translator *tr, char *output, unsigned int &dictionary_flags, int tonic, int prev_stress);
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int n_buf, int *tone_type);
int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type);

void SetVoiceStack(espeak_VOICE *v);


Loading…
Cancel
Save