*_list files. Ad feature for ordinal numbers (for some languages). *_list files. Allow hyphenated word groups to start with a number. *_list files. Allow "words" of symbols to contain brackets (move check for bracket characters to after the *_list lookup). --punct option. Fix some unnecessary pauses when speaking punctuation names. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@215 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -105,6 +105,55 @@ _stk str'e@p | |||
_tld t'Ild@ | |||
// symbols | |||
_' tik | |||
_" hA:l_|A:n | |||
_- kOp@lte@k@n | |||
__ leIn | |||
_? frA:x2te@k@n | |||
_: dWb@lpWnt | |||
_; kOmapWnt | |||
_, kOma | |||
_| afstre@p | |||
_( lINshaki | |||
_) r&x2shaki | |||
_[ lINs||blOkhaki | |||
_] r&x2s||blOkhaki | |||
_{ lINs||krWlhaki | |||
_} r&x2s||krWlhaki | |||
_< kleIn@r_|as | |||
_> x2ro@t@r_|as | |||
= _x2@l'eIk_ $max3 | |||
* st&r $max3 | |||
+ pl'Ws $max3 | |||
. pWnt $max3 | |||
~ tIld@ $max3 | |||
% p@rs'Ent $max3 | |||
# nOm@r $max3 | |||
& _|amp&rsant | |||
£ pO:nt | |||
€ Y@ru | |||
/ stre@p $max3 | |||
@ beI_: | |||
\ trystre@p | |||
¥ jEn | |||
§ afde@l@N | |||
¶ parax2rA:f | |||
¶¶ parax2rA:v@ | |||
¤ mWnte@k@n | |||
© kup'ir&x2 | |||
° x2rA:d@ | |||
− minWs | |||
± plWs_OfminWs | |||
µ mikru | |||
× mA:l | |||
÷ x2@de@ldY@r | |||
♯ krYys | |||
♭ mOl | |||
¼ @kwart | |||
½ @halv@ | |||
¾ drikwart | |||
⅓ d&:rd@ | |||
⅔ tw,e@d'&:rd@s | |||
@@ -146,7 +195,16 @@ _0and _!En | |||
_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@ | |||
_0Co h'On@rtst@ | |||
@@ -158,7 +216,6 @@ algerië alx2'e@re@:@- | |||
antwerpen antv&rp@n | |||
babilon babilOn | |||
bangladesj baNglad'ES | |||
bastille bast'il | |||
bellevue b&lvju: | |||
bermuda $2 | |||
bethlehem bEt_liEm | |||
@@ -166,6 +223,7 @@ boedapest budapEst | |||
boekarest bukarEst | |||
bolivië bul'Ivi:@ | |||
bonnievale _^_EN | |||
bordeaux bOrd'@U | |||
brittanje $2 | |||
brooklyn _^_EN | |||
burundi bur'undi | |||
@@ -174,6 +232,7 @@ carolina karul'ina | |||
ceres se@r@s | |||
cesaréa s@s@ri:ja | |||
ceylon s@lOn | |||
chicago _^_EN | |||
china S'ina | |||
clanwilliam kl&:nw'ili@m | |||
colenso kul'E:ns@U | |||
@@ -215,6 +274,7 @@ kuruman kuruman | |||
kwa kwa $u $only // KwaZulu, etc. | |||
lesotho l@sutu | |||
limpopo l@mpo@po@ | |||
(los angeles) lOs_'andZ@li:z | |||
macedonië mas@d'o@ni@ | |||
madagaskar madax2'askar | |||
majuba maj'uba | |||
@@ -240,6 +300,8 @@ robertson _^_EN | |||
sahara sah'A:ra | |||
secunda s@kunda | |||
senekal se@n@kal | |||
seychelle seIS'&l@ | |||
seychelles seIS'&lz | |||
singapoer siNgapur | |||
soshanguve sOSaNg'u:vE | |||
soweto suw'E:tu | |||
@@ -276,10 +338,12 @@ André 'andreI | |||
annette an'Et | |||
antoinette antun'Et | |||
barbara bA:b@ra | |||
bea bi:ja | |||
benjamin bEndZ@m@n | |||
bennett bEn@t | |||
bester b'Est@r | |||
beyers beI@rs | |||
blignault blIx2n@Ut | |||
blomerus blum'e@rWs | |||
botha bo@ta | |||
bouwer b@U@r | |||
@@ -289,7 +353,9 @@ breytenbach breIt@nbax2 | |||
brouwer bruw'&:r | |||
caesar siz@r | |||
carl kA:r@L | |||
casanova kasan'o@va | |||
cecil sEs@l | |||
cecile s@si:l | |||
cecilia s@si:lia | |||
charl SA:l | |||
charles _^_EN | |||
@@ -300,6 +366,7 @@ conradie $2 | |||
chris krIs | |||
christo krIstu | |||
christoffel kr@stOf@l | |||
christiaan krIstiA:n | |||
christian krIstian | |||
christelle kr@st&l | |||
christina kr@stina | |||
@@ -313,7 +380,7 @@ david _^_EN | |||
(da vinci) da||v'intSi | |||
debora d@bo@ra | |||
debussy d@bus'i: | |||
de d@ | |||
de d@ $only | |||
(de la) d@||la $u // de la Rey/de la Bat, etc. | |||
der d@r | |||
derick dErik | |||
@@ -388,7 +455,7 @@ labuschagne labWsk'ax2ni | |||
langenhoven laN@nho@f@n | |||
lasarus lA:s@r%Ws | |||
lategan lA:t@x2an | |||
le l@ | |||
le l@ $only | |||
leandra li'andra | |||
leonardo liu:n'ardu | |||
levi le@fi | |||
@@ -400,6 +467,7 @@ mbeki mbE:ki | |||
magdalena $3 | |||
malan mal'an | |||
malherbe mal'&rb@ | |||
marelie mar@li | |||
margaret _^_EN | |||
margaretha marx2ar'e@ta | |||
marguerite mA:g@r'i:t | |||
@@ -416,6 +484,7 @@ mefistofeles mEfist'o@f@l@s | |||
melanie m@lA:ni | |||
meraai m@rAI | |||
messias m@sijas | |||
metusalem m@t'ysalEm | |||
michael _^_EN | |||
michelle miS'&l | |||
michiel $2 | |||
@@ -439,6 +508,7 @@ pierre p'e@r | |||
petronella pe@trun'&la | |||
petrus pe@trWs | |||
phoebe fi:bi | |||
picasso pik'asu | |||
quixote kix2'OtE | |||
rachmaninoff rax2m'aninOf | |||
rademeyer rA:d@meI@r | |||
@@ -466,6 +536,7 @@ schutte skWt@ | |||
sebastian s@bastian | |||
servaas s@rfA:s | |||
shakespeare _^_EN | |||
sigmund sigmunt | |||
sophia suf'i:ja | |||
sophie _^_EN | |||
stephan ste@fan | |||
@@ -503,7 +574,8 @@ schalkwyk skalkveIk | |||
schreiner SraIn@r | |||
tony t@Uni | |||
trichardt trix2A:rt | |||
vivaldi viv'aldi | |||
viviers v@v@je@ | |||
khumalo kum'A:lu | |||
zuma zu:ma | |||
@@ -513,10 +585,13 @@ boeing _^_EN | |||
centaurus $2 | |||
checkers tSEk@rs | |||
chrysler kraIsl@r | |||
citroên s@trun | |||
ferrari f@rA:ri | |||
martini mart'i:ni | |||
naspers nasp&rs | |||
toyota $2 | |||
venda vEnda | |||
volvo vOlvu | |||
wimpy wImpi | |||
// article | |||
@@ -634,7 +709,7 @@ my $u $verbf | |||
jou $u $only $verbf | |||
hom $u $verbf | |||
haar $u $only $verbf | |||
se Es@ $capital | |||
se Es@ $capital $only | |||
dis $u | |||
@@ -702,13 +777,14 @@ camembert kam@mb'&:r | |||
camouflage kamufl'A:Z | |||
capita kapita | |||
casino kas'i:n@U | |||
cedille s@dIl@ | |||
charisma kar'Isma | |||
chemikalieë $3 | |||
crescendo kr@SEndu | |||
dadelik dA:d@lIk | |||
darem dar@m | |||
dekade dEk'A:d@ | |||
dekreling dEkre@l@N | |||
deurentyd dy@r@nteIt | |||
deurgaans $1 | |||
deurkruis $2 | |||
@@ -724,6 +800,7 @@ dusver dWsf&r | |||
eenkeer $1 | |||
efesiër if'e@si@r | |||
effense Ef@ns@ | |||
eks Eks | |||
ekself %&ks'&lf | |||
elders &ld@rs | |||
elite il'i:t | |||
@@ -802,10 +879,12 @@ jawoord jA:vo@rt | |||
jupiter jupit@r | |||
kafee kaf'e@ | |||
kameraderie kam@rA:d@r'i | |||
katswink katsv@nk | |||
kaviaar kavi'A:r | |||
klaasvakie $2 | |||
knapsekêrel knaps@k&:r@l | |||
kolossense kOl@s'e~ns@ | |||
komaan kOmA:n | |||
konkawe kOnk'A:v@ | |||
konte $1 | |||
@@ -861,7 +940,6 @@ negering n@x2e@r@N | |||
netjies nE:icis | |||
netjiese nEicis@ | |||
netsowel nEtso@v&l | |||
neurone nY@r'o@n@ | |||
nikswerd nIksv&:rt | |||
nimmermeer $1 | |||
nirvana n@rvA:na | |||
@@ -976,6 +1054,7 @@ stilswye $1 | |||
suburbia sWb'Wrbija | |||
tanga taNga | |||
tango taNx2u | |||
tenminste $2 | |||
terdeë $2 | |||
terug t@-rWx2 | |||
@@ -1023,7 +1102,7 @@ volte $1 | |||
voluit fOl_Yyt | |||
voorgee fo@rx2e@ | |||
voorkeer $1 | |||
voorkom $2 | |||
voorkom $2 $only | |||
voormalige fo@rm'A:l@x2@ | |||
//voorsien $2 | |||
voorwaar $2 |
@@ -1,4 +1,4 @@ | |||
//maintainer: Willem van der Walt | |||
//maintainer: Willem van der Walt | |||
// email: [email protected] | |||
// tel: +27 12 8413996 | |||
// Meraka Institute, CSIR | |||
@@ -24,6 +24,7 @@ | |||
&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 | |||
&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. | |||
_) a (lA %a //short unstressed a for words starting with Al | |||
i) a (tieC %a //words containing iatief/w short unstressed a | |||
@@ -61,6 +62,7 @@ | |||
ara (bi %arA: // fix 1st a sound and stress: Arabië/Arabies/-e | |||
ara (bier %ar%a // Stress and a sounds: Arabier/-e | |||
C) are (CA A:r@ // e sound: amptenaredom/blaredak/garebiltong/haredos/jarelange | |||
K) ar (puis %ar // fix stress: (h)arpuis and compounds | |||
Cel) ary ar'eI // move default stress: bedelary/bottelary/dobbelary/huigelary/smokkelary... | |||
@@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc. | |||
amarula %am%arul%a // fix stress and a sounds: amarula and compounds | |||
@@ -70,6 +72,7 @@ | |||
arm (last %ar@-m // move default stress: armlastig/-e | |||
C) asie 'A:si | |||
@@@@) asie A:s%i | |||
C%C) asie A:si // restore default stress: bok-/dikmelkkasie and similar | |||
oub) asie A:si // restore default stress: oubasie/-s | |||
@form) asie A:si // restore default stress to compounds ending in -formasie: graniet-/grond-/rotsformasie, etc. | |||
pl) asie A:s%i // restore default stress: gemeenplasies/gemeenskapsplasies and similar | |||
@@ -86,7 +89,7 @@ | |||
a (Cie A: // apies/middagslapie | |||
a (Cy %a | |||
a (CA A: | |||
_) aka %ak@ //akademie etc. | |||
aka (de@ %ak@ // (sport-/leierskaps)akademie/akademies/akadeem/akademe | |||
akkedi %ak@dI //akkedis and compounds | |||
akkommo (d %ak%Om@ // fix stress and vowel sounds: akkommodasie/akkommodeer/-derend | |||
a (kkoord %a // move default stress: akkoord/-e and compounds | |||
@@ -358,6 +361,7 @@ | |||
angleer aNle@r // hangleer/slangleer and compounds | |||
angola A~Nx2'o@la //Angola, Angolabos etc. | |||
angol (e %A~Nx2%ul //Angolese etc. | |||
angora %aNgO:r%a // angora(trui-/wol, etc.) | |||
_) ann (a@ %an // move default stress: annaal/annale | |||
g) an (_ _^_EN //if it ends in gan it is English | |||
C) anette (_ %anEt // Janette/Sanette | |||
@@ -407,13 +411,14 @@ | |||
@) ba (ren b'A: // onrusbarend/opsienbarend and derivatives | |||
ba (retK b%a // move default stress and shorten a sound: baret/-te | |||
ba (riton ba // shorten a sound: bariton and compounds | |||
ba (rok b%a // fix stress and a sound: barok and compounds | |||
barok bar''Ok_ // fix stress and a sound: barok/-instrumente/-agtig | |||
baro (meter bar%u // fix a and o sounds: barometer and compounds | |||
ba (ron b%a // fix stress and a sound: baron/-ne and compounds | |||
_) ba (sa b%a fix stress and 1st a sound: basalt and compounds | |||
ba (sili b%a // fix stress and 1st a sound: basilie/-kruit, etc. | |||
ba (sieli b%a // fix stress and 1st a sound: basielie/-kruit, etc. | |||
basotho b%asut%u // fix stress and vowel sounds: Basotho/-0ponie and similar | |||
basi (s bA:s@ // basis and compounds | |||
bastille b%asti:l // Bastille and compounds like Bastilledag | |||
batal (jon b%at%al // shorten 1st a sound, moved stress: bataljon and compounds | |||
ba (tik b%a // fix stress and a sound: batik/-doek/-kuns/-werk | |||
bbe (rr b@ // fix e sound: rubberrand/-ranke/-ring/-roller, etc. | |||
@@ -444,6 +449,7 @@ | |||
baba bA:ba | |||
baba (tjie bA:baI // fix 2nd a sound: babatjie/-s | |||
_) bad (A bat_ // shorten a sound, pause: bad-/afloop/artikel/olie/oord/uitloop | |||
baklei b@kl'eI // baklei/er | |||
_) bak (o bak_ // fix a sound and stress: bakoor/bakore | |||
balaklava b%al%aklA:v%a // fix stress, a and v sounds: balaklava and compounds | |||
@@ -465,6 +471,7 @@ | |||
bara (k bar'a | |||
bar (bA b%ar // barbaar/barbare and derivatives/barbier 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... | |||
bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie... | |||
@@ -516,6 +523,8 @@ | |||
bul (ga b%ul // fix stress and u sound: Bulgaarse/Bulgare | |||
bulle (tin b%ul@ // fix stress and u sound: bulletin and compounds | |||
bur (lesk b%Wr // move default stress: burlesk/-e | |||
buro b%yro@ // fix stress and o sound: burohoof and similar | |||
bur (okra b%yr // fix stress for burokraat/-krate/-krasie/-kraties | |||
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. | |||
@@ -555,6 +564,7 @@ | |||
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 | |||
bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd | |||
@@ -601,6 +611,7 @@ | |||
bering b'e@r@N // ontbering/inhibering/inkubering | |||
o) bering b@r@N // versobering | |||
C) bering b@r@N // verorbering/versombering | |||
ont) bering be@r@N // fix e sound in compounds like slaapontbering | |||
skrob) bering b'e@r@N // skrobbering | |||
beu (C bY@ // beur/beuke/beul | |||
@@ -614,6 +625,7 @@ | |||
besem be@s@m | |||
besering =b@se@r@N // besering/s/kniebesering... | |||
bete (_ be@t@ // fix stress and e sound: (af)gebete/diabete | |||
dia) betes (@ be@t@s // fix stress and e sound: diabetisleier/-middel, etc. | |||
beter b'e@t@r | |||
beties be@tis // fix e sounds: diabeties/-e | |||
betlehe (m bEtl%i%E // fix stress and vowel sounds: Betlehem/-mer | |||
@@ -635,6 +647,7 @@ | |||
cha (risma k%a // fix stress and ch and 1st a sounds: charismaties/-e | |||
chau (C S%@U // chauffeer/chauffeur/-s/chauvinis/-me/-ties | |||
cheddar tSEd@r // fix ch and a sounds: cheddar(kaas) | |||
chemika (li x2%e@m%ikA: // for compounds of chemikalieë | |||
cholera ko@l@ra_ // fix e sound: cholera/-epidemie and similarcompounds | |||
cholesterol k%OlEst@-r%Ol // cholesterol and many compounds | |||
ch (l k // chloor and compounds | |||
@@ -663,6 +676,7 @@ | |||
daaren (te d%A:r@n // fix stress and e sound: daarenteen/daarenteë | |||
daarop (v d%A:r%Op // move default stress: daaropvolgend/-e | |||
aan) dag (tig d'ax2 // accent on dag | |||
A) d (agtig t_ // fix d sound in words like oerwoudagtig and similar | |||
daniël dA:ni@l // fix stress: Daniël(skuil) | |||
dani (gh d'A:n@ // -hoedanigheid/hoedanighede/onderdanigheid | |||
@) dant d'ant // dant takes stress: kommandant/pruimedant | |||
@@ -675,6 +689,9 @@ | |||
_) de (klass de@ // deklassifikasie/gedeklassifiseer | |||
de (klinA d%E // fix 1st e sound: deklinasie/deklineer/-nering and compounds | |||
de (krimina d%e@ // fix e sound: (ge)dekriminaliseer/dekriminalisering, etc. | |||
kun) dele (K d@lE // fix e sounds: Aardryks-/wiskundeles/-se, etc. | |||
onder) dele (@ de@l@_ // fix e sound: onderdelebedryf/-pakhuis, etc. | |||
voor) dele (@ de@l@_ // fix e sound: voordelefonds and similar | |||
_) dele (gA d@l@ // fix stress and e sounds: delegeer/delegasie | |||
@) de (ment d@ // fix e sound: amendement/bombardement/rendement | |||
de (moCr d%E // demokraat/demokrasie/-ë/demokraties/demografie | |||
@@ -844,6 +861,7 @@ | |||
@) d (t // drop d: breedte/handtekening/rondte/rondtrek... | |||
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 | |||
@) 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 | |||
@@ -863,6 +881,7 @@ | |||
narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc. | |||
ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar | |||
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 | |||
C) e (marie @ //anemarie, lisemarie etc. | |||
n) eke (_ @k@ //anneke Heineke etc. | |||
@@ -903,6 +922,7 @@ | |||
Cien) e (rC@ @ // fix e sound: opsienersamp/tienerstatus and many similar compounds | |||
@) erts (_ _&rts // fix e sound of many compounds ending in erts | |||
@p) e (rtjie @ // fix e sound: helpertjies/wegkruipertjie | |||
C) e (maat @ // fix e sound: onderdele-/platemaatskappy and similar | |||
@C) e (male_ @ // fix e sound: enemale/telkemale | |||
C) e (man @ // e sound: briewemandjie/derdemannetjie/dowemansdeur/semantiek/semanties/Weideman | |||
C) e (mm++ E // geelkoperemmer/wateremmer | |||
@@ -975,6 +995,7 @@ | |||
@C) eps (+ Eps // fix e sound: biseps/triseps and similar | |||
Celm) e (tK @ // fix e sound: helmet/pelmet and compounds | |||
@C) e (taal @ // fix e sound: ape-/burokrate-/diewe-/engele-/gode-/leke-/siele-/skoliere-/tweetaal... | |||
Cd) e (tr @ // fix e sound: teveldetrekking/vreugdetraan/voogdetrust/waardetrust | |||
@k) e (tt@+ E // menseketting/etikette | |||
sp) e (lonk @ // spelonk/rowerspelonk/spelonkagtig etc. | |||
_k) e (ndh =E // but bekendheid/onbekendheid | |||
@@ -1013,6 +1034,7 @@ | |||
e (klipK %e@ // fix stress and e sound: eklips/eklipties | |||
e (kono@ %E // 1st e: ekonome/ekonomie/ekonomies/ekonoom | |||
&) ekon (o@ _%Ek%un // fix stress and vowel sounds in compounds like: groepekonoom/handelsekonome | |||
eksamin (A %Eks%am%in // fix stress and vowel sounds: eksaminator/eksaminering(sproses) | |||
eksege (CA %Eks@x2e@ // fix stress and e sounds: eksegese/eksegeties/-e | |||
ekse (llenC %Eks@ // fix 2nd e sound: eksellensie/-s/eksellent/-e | |||
ekspli (siet %Ekspl@ // fix stress and i sound: eksplisiet/-e | |||
@@ -1225,6 +1247,7 @@ | |||
werp) e (rsA @ // fix e sound: ontwerpersolie/-sonbril/-uitrusting | |||
lew) e (ns @ | |||
&d) e (r@+ @ // not initial or final syllable | |||
skuld) erke _&rkE // fix e sound: skulderkentennis/-erkenning | |||
@C) e (reë @ // fix e sound: geelperskereën/tropereën, etc. | |||
@d) e (rnst+ & // but fix e sound in doodernstig/-e | |||
&t) e (r@ @ | |||
@@ -1393,6 +1416,7 @@ | |||
fakul (teit f%ak%Wl // fix stress and a sound: fakulteit/-e and many compounds | |||
fa (lanks fa // shorten 1st a: falanks/-e | |||
fami (liA f%ami // fix stress and a sound: familie and compounds/familiêr/-e | |||
fa (nati f%a // fix stress and a sound: fanaties/-e | |||
fan (fare f%an // move default stress: fanfare/-s | |||
fanta (sA f%ant%a // fantaseer/fantasie | |||
fari (seër f%ar%i // fix stress and a sound: Fariseër/-s | |||
@@ -1444,7 +1468,9 @@ | |||
fos (fa f%Os // move default stress: fosfaat/fosfate | |||
fo (ssiel f%O // move default stress: fossiel/-e and compounds | |||
foto fo@tu | |||
fotoge (nie f%o@t%ux2e@ // fix stress and e sound: fotogenies/-e | |||
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 | |||
fre (kwen fr%i // fix stress and 1st e sound: frekwensie/-s and compounds | |||
freud frOId // Freud/Freudiaans/-e | |||
@@ -1573,6 +1599,7 @@ | |||
ge (kk x2& | |||
ge (kh x2& | |||
ge (kt x2& // fix e sound: gektalery | |||
gekw (ord x2&kv // fix stress, e and w sounds: gekwordens/gekwording | |||
genade x2@nA:d@ // correct 2nd e in compounds: genadedood, etc. | |||
genad (etjie x2@nA:d // correct 2nd e in genadetjie | |||
_) ge (rC x2& // gerf/gerwe/gert/gerber | |||
@@ -1641,6 +1668,7 @@ | |||
@C) hal (sA h'al // reikhalsend/waaghalsig | |||
hal (sstar h%al // move default stress: | |||
hal (ve@ h%al // move default stress: halveer/halvering/gehalveerde, etc. | |||
hamer hA:m@r // fix e sound: hameragtig/hamerend/-e | |||
hand (o hant? // fix d sound: handopsteek/handoplegging | |||
_) hane (C hA:n@ // hanekam/hanekraai/hanepoot/hanetree | |||
haper hA:p@r // fix e sound: haperend/hapering/-e | |||
@@ -1710,6 +1738,7 @@ | |||
he (g h& | |||
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. | |||
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@ | |||
@@ -1805,6 +1834,7 @@ | |||
indwing Indw@N // fix d sound: indwing/-ing | |||
in (een @n // ineengedoke/ineengekrimp/ineenstorting and many similar | |||
_) in (ent ''In_ // fix stress, i sound, pause: inent/-ing | |||
infan (ti @nf%an // fix stress: infantiel/-e | |||
in (fek @n // move default stress: infeksie/-s and compounds | |||
infor (ma @nf%Or // move default stress: informant/-e/informasie | |||
in (formeP2 'In // fix e sound: informele | |||
@@ -2041,6 +2071,7 @@ | |||
kieser (@ kis@r // fix e sound: kiesertal/-weerstand/kieserskorps/-lys/-opkoms... | |||
kikoe (joe k%iku: // fix stress, lengthen oe: kikoejoe and compounds | |||
kilimandjaro k%il@m%andZA:ru // fix stress and vowel and "dj" sounds: kilimandjaro and compounds | |||
_) 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 | |||
klande (sti kl%and@ // move default stress: klandestien/-e | |||
@@ -2084,6 +2115,7 @@ | |||
kre (diet kr@ // move default stress: krediet/-kaart/-balans, etc. | |||
kre (dit kr%E // fix e sound: krediteer/akkreditasie | |||
kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds | |||
_) kre (o kr%i // fix stress and e sound: Kreool/Kreole/Kreoolse | |||
_) kre (pe@ kr@ // fix stress and 1ste sound: krepeer/-krepering | |||
krimi (nA kr@m@' // krimineel/kriminele/diskrimineer | |||
kri (oel kr%i // move default stress: krioel and derivatives | |||
@@ -2110,9 +2142,11 @@ | |||
_) kwar (tA kw%ar // move default stress: kwartaal/kwartier | |||
kwart (eeu kwart_ // stress and short break: kwarteeu(-fees/-viering...) | |||
kwartel kwart@l_ // restore default stress: kwartel/-eier/-s and similar | |||
kwarte (t kw%artE // fix stress and e sound: (stryk)kwartet/-te | |||
kwa (tryn kw%a // move default stress: kwatryn/-e/kwatrynvorm | |||
kwela kwE:la // fix vowel sounds: kwela/-dans, etc. | |||
_) kwik (A kwIk_ // fix i sound: kwikinhoud/-oksied | |||
kwinte (t kw@ntE // fix stress and e sound: (stryk)kwintet/-te | |||
kwi (tans kw@ // move default stress: kwitansie and compounds | |||
@@ -2123,11 +2157,12 @@ | |||
kabel kA:b@l //stress and e sound | |||
kabeljou kab@lj'@U //kabeljou and compounds | |||
kabinet k%ab%inEt // kabinet/drankkabinet/kabinetsvergadering | |||
kabine (t k%ab%inE // kabinet/drankkabinet/-te/kabinetsvergadering | |||
_) ka (d@ k%a // stress and 1st a: kadawer-/kadet-/kado/kadot(jie)/kadriel,etc. | |||
ka (der kA: // restore stress on long a: kader/-s and compounds | |||
kad (mium kad // fix stress and d sound: kadmium and compounds | |||
kafe (te k%af@ // fix stress and vowel sounds: kafeteria and compounds | |||
kafe (ï k%af%i // fix stress and vowel sounds: kafeïene and compounds | |||
ka (jak k%a // fix stress and 1st a sound: kajak/-ke/-vaarder | |||
kake (C kA:k@ // kakebeen/skakelaar/skakelbord/skakelfunksie | |||
kalahari kalah'A:ri // stress: Kalahari/-sand/-woestyn | |||
@@ -2142,6 +2177,7 @@ | |||
ka (mas k%a // fix stress and 1st a sound: kamas/-te and compounds | |||
kamer kA:m@r // compounds: kamerindeling/kamerorkes, etc. | |||
kamera kam@ra | |||
kamer (atjie kam@r // fix a sound: kameratjie and compounds | |||
kamerade k%am@rA:d@ // stress: kamerade/skeepskamerade | |||
kameraa kam@r'A: | |||
kamer (C kA:m@r // kamerdeur/eetkamermat/sitkamervenster | |||
@@ -2164,7 +2200,7 @@ | |||
kape (la@ k%ap@ // fix e sound: kapelaan/kapelane and compounds | |||
kaper (jol k%ap@r // fix stress and a sound: kaperjolle and compounds | |||
kapi (ta k%ap%i // fix stress and 1st a sound: kapitaal and compounds/kapitalis/-me/-ties | |||
_) ka (poC k%a // move default stress and shorten a: kapok and compounds/kapot | |||
_) kapo (C k%apO // move default stress and shorten a: kapok and compounds/kapot | |||
kap (tein k%ap // kaptein/kapteinskap/skeepskaptein | |||
kapsule k%apsyl@ // stress and e sound: kapsule/-fabriek/-vorm, etc. | |||
kara (byn k%ar%a // fix stress and a sounds: karabyn/-e and compounds | |||
@@ -2175,6 +2211,7 @@ | |||
kar (does k%ar // move default stress: kardoes and compounds | |||
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 | |||
kar (nuffel k%ar // move default stress: (ge)karnuffel/-de | |||
kara (koel k%ar%a // fix stress and a sounds: karakoel and compounds | |||
kara (va k%ar@ // move default stress: karavaan/karavane | |||
@@ -2273,7 +2310,7 @@ | |||
konnek k%unEk // fix stress and vowel sounds: konneksie/-s and compounds | |||
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%OnsEn // fix stress and e sound: konsentries/-e | |||
konsen (trie k%Ons''En // fix stress and e sound: konsentries/-e | |||
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 | |||
@@ -2300,7 +2337,9 @@ | |||
kosme (tiek k%Osm@ // move default stress: kosmetiek and compounds | |||
kos (met k%Os // move default stress: kosmeties/-e | |||
koste kOst@ // fix e sound in compounds: kostemodel/-ontleding/laekostelugdiens | |||
kos (term kOs // fix e sound: kosterm/-e | |||
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. | |||
@@ -2419,6 +2458,7 @@ | |||
m m | |||
m (m | |||
@) marie (_ m%ar'i //names ending in marie fix a and stress. | |||
mari (tiem m%ar@ // fix stress and vowel sounds: maritiem/-e | |||
macedo (nA m%as@do@ // fix stress and vowel sounds: Macedonië/Macedóniër/-s | |||
machiave m%ak%i%avE // fix stress, vowel and v sounds: Machiavelliaans/-e | |||
made (lie m%A:d@ // fix stress and e sound: madeliefie/-s/watermadeliefies | |||
@@ -2431,6 +2471,7 @@ | |||
ma (griet m%a // move default stress: Magriet/-e/-jie | |||
ma (hA m%a // mahoniehout/-lessenaar and similar/mahala | |||
majesteitli m%A:j@steItl@ // move default stress: majesteitlik/-e/-heid | |||
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 | |||
@) makie (sie mak'i // fix a sound and stress: bol(le)makiesie/-slanery | |||
@@ -2460,9 +2501,9 @@ | |||
manu (sk ,many | |||
_) ma (rA m%a // short, unstressed a: Marietjie/Marina/Marinda/Marita/Maree/marog | |||
marat (on mar%at // fix stress and a sounds: maraton and compounds | |||
marath (on mar%at // fix stress, a sound, drop h: marathon and compounds | |||
marathon mar%at%On_ // fix stress, a sound, drop h: marathon and compounds: marathonatleet, etc. | |||
marga (ri m%arx2%a // fix stress and a sound: margarien and compounds | |||
marine m%arin@ // marine and compounds | |||
marine (K m%arin@ // marine and compounds | |||
mario (net m%ar%i%u // fix stress and vowel sounds: marionet/-te and compounds | |||
ma (ritz m%a' // fix stress: Maritz/Pietermaritsburg | |||
marmelade m%arm@lA:d@ // fix stress and e sounds: marmelade and compounds | |||
@@ -2588,6 +2629,7 @@ | |||
mede (plig m%e@d@ // move stress: medepligtige | |||
media mi:dia // 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 | |||
me (dium mi: // fix e sound | |||
_) me (duC m@ // fix stress and e sound: medulla/medusa | |||
@@ -2623,6 +2665,7 @@ | |||
_) melodi (eu m%El%ud%i //melodieus | |||
_) melodie mElud'i | |||
_) melo (dr m'Elu //melodrama etc. | |||
memora (bili m%Em%Or%a // fix vowel sounds and stress: (sport)memorabilia and similar | |||
_) metel me@t@l // vermetel/-e/-es/-heid... | |||
ment m'Ent | |||
mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds | |||
@@ -2633,6 +2676,7 @@ | |||
me (rrie mE // fix e sound: merrie/-s/perdemerrie and similar compounds | |||
AAs) mes (_ mEs // fix last e sound in compounds like kombuismes | |||
Cs) mes (_ mEs // fix last e sound in compounds like slagtersmes | |||
tafel) mes (_ mEs // fix final e sound: tafelmes | |||
_) mes (aan mEs_ // fix e sound, pause: mesaanval/-ler | |||
metaa (C m@tA: // fix stress and e sound: metaal/metaan and compounds | |||
metale m@t'A:l@ | |||
@@ -2674,6 +2718,7 @@ | |||
@) nges (_ N@s // banges/langes/dinges | |||
@) ng (itis_ Nx2 // brongitis/faringitis/laringitis | |||
_) 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 (ï n%a_ // naïef/naïewe/naïwiteit | |||
@) na (lis n%a // shorten a sound: joernalis/-te/-tiek | |||
@@ -2722,10 +2767,12 @@ | |||
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 | |||
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 | |||
_) netto nEt%u // fix o sound: nettobalans/-skuldboek and many such compounds | |||
net (werk nEt // fix e sound in compounds: kern-/rugsteun-/selfoon-/teen-/telefoon-/vastelynnetwerk | |||
neuro (CA n%Y@ro@ // move default stress: neurone/neurose/-s | |||
neute nY@t@ // fix connecting e sound: neutedop/neutekraker | |||
neu (tr n%Y@ // move default stress: neutraal/neutrale | |||
_) nguni Ngu:ni // Nguni/-beeste/-tale | |||
@@ -2985,6 +3032,8 @@ | |||
@) oties 'o@tis // antibioties/eksoties/eroties/neuroties | |||
@) otomie (_N %o@t%um'i // fix o sounds and stress of medical terms: laparotomie, etc. | |||
@) otomie (ë %o@t%um'i: // fix o sounds and stress of plurals of medical terms: leukotomieë/nefrotomieë, etc. | |||
_) outo (@P4 @Utu // fix stress and o sound: outomaat/-mate/-maties/outomobiel, etc. | |||
out (okra %@Ut // to handle outokraat and derivatives | |||
oux 'u //in surnames like tredoux, leroux etc. | |||
_) o (va@ %o@ // move default stress: ovaal/ovale/ovaalvormig | |||
ovari (otomi %o@v%A:r%i // fix stress, v and vowel sounds: ovariotomie | |||
@@ -3130,7 +3179,7 @@ | |||
_) oor (denk %o@r // move default stress: oordenk/-ing/-s | |||
oordrewe o@rdr'e@v@ // stress: oordrewe/oordrewenheid | |||
oor (dink %o@r // move default stress | |||
oor (doen %o@r // move default stress | |||
_) oor (doen %o@r // move default stress | |||
oor (donder %o@r // move default stress: oordonder/-ing | |||
oor (draag %o@r // move default stress: oordraagbaar/-lik, etc. | |||
_) oor (dryC %o@r // move default stress: oordryf/oordrywing | |||
@@ -3161,6 +3210,7 @@ | |||
oor (rompel %o@r // move default stress | |||
oorsaaklik %o@rsA:kl@k // fix stress: oorsaaklik/-e/-heid | |||
oor (sigt %o@r // move default stress: oorsigtelik/oorsigtig/-e | |||
oor (sigtyd o@r // restore default stress: oorsigtydperk/-e | |||
_) oor (skadu %o@r // move default stress: oorskadu/-wing | |||
_) oor (skat %o@r // move default stress: oorskat/-te/-ting | |||
oor (skry %o@r // stress: oorskry/-ding and compounds | |||
@@ -3221,15 +3271,15 @@ | |||
paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds | |||
parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds | |||
pase (lla p%as& // fix stress and a sound: pasella(tjie) and compounds | |||
pa (sifi p%a // shorten a sound: pasifis/-me/-ties/-e | |||
pa (stel p%a // move default stress: pastel(kleur) and similar compounds | |||
pa (tat p@ // patat/warmpatat/wurgpatat | |||
patie (KN p%at'i //words ending in patie has stress at end + a sound/simpatiek | |||
@) paties p'A:tis // fix stress and a sound: simpaties/-e | |||
para (C ,para //paralel, paragraaf etc. | |||
parade (K p@rA:d@ // parade and compounds | |||
_) par (C@ p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig | |||
_) par (CA p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig | |||
parke (raad park@ // fix stress and e sound: Parkeraad(slid, etc.) | |||
pars (C pars // restore default stress: parsbalie/-kuip/-tyd, etc. | |||
_) pas (AA pas // pasaangeër/pasoortreding | |||
pas (op p%as // pasop/pasoppens | |||
passa (sier p%as%a // stress: passasier and compounds | |||
@@ -3412,7 +3462,7 @@ | |||
prominen prOmin'En // prominent/e/prominensie | |||
propag ,prOpax2 | |||
prosedure prOs@d'yr@ | |||
prose (dure pr%Os@ // (regs)prosedure/prosedureel/-rele | |||
prosti (tu pr%Ost@ // fix stress and i sound: prostituut/prostitute/prostitusie and compounds | |||
protes prut'Es | |||
protes (te_N pr%utEs // proteste, but prevent breaking protestering | |||
@@ -3549,6 +3599,7 @@ | |||
re (pliek r@ // fix stress and e sound: repliek and compounds | |||
re (produ r%e@ // fix stress and e sound: reproduksie/reproduseer | |||
rep (tiel r%Ep // move default stress: reptiel/-e and compounds | |||
reses (_ r@sEs // fix stress and e sound: (hof-/vakansie)reses | |||
reso (nA r%Es%u // fix stress and e sound: resonant/-e/resonansie/resoneer | |||
re (spon r@ // fix stress and e sound: respons/-e/-ie/respondent, etc. | |||
_) re (spyt r@ // fix stress and e sound: respyt/-dae/-tydperk | |||
@@ -3604,6 +3655,7 @@ | |||
sangere (K s%aN@rE //sangeres and compounds: opera-/popsangeres | |||
o) s (_ s // exceptions to rule: @@@) s (_S1 s | |||
u) s (_ s // exceptions to rule: @@@) s (_S1 s | |||
s (chemi s // split s/ch: watersuiweringschemikalieë and similar compounds | |||
sch S | |||
s (chaos s // split s/ch: regs-/verkeerschaos | |||
sh (_ _^_EN | |||
@@ -3630,6 +3682,7 @@ | |||
sili (nd s@lI // silinder(s)/silinderkoppe | |||
si (llabA s@ | |||
si (napK s@ // fix stress and i sound: sinaps/-esinapties | |||
_) sin (dro s@n // move default stress: sindroom/sindrome | |||
sin (ja s@n // move default stress: sinjaal/sinjale | |||
_) si (noC s@ // fix stress and i sound: sinode and compounds/sinops/sinop;ties | |||
sino (niem s,in%u // fix stress and vowel sounds: sinoniem/-e | |||
@@ -3778,6 +3831,7 @@ | |||
sma (rag sm%a // fix stress and a sound: smarag/-te | |||
snaper (ing snA:p@r // fix stress and vowel sounds: versnapering/-e/-s and compounds | |||
snel (_ sn&l // fix e: aansnel/agternasnel/blitssnel/heengesnel/koppesnel/nasnel/verbysnel | |||
_) snel (A sn''&l_ // fix e sound, pause: snelaanval/-instrument/-ontwikkelende/-oorgang, etc. | |||
sodom (iet s,o@dOm // fix stress | |||
_) soeda (n s%uda // fix stress: Soedan/Soedanese | |||
soet (sappi s%ut // move default stress: soetsappig/-e/-heid | |||
@@ -3872,12 +3926,14 @@ | |||
dwerg) ste (r st& // fix e sound: dwergster/-re | |||
nd) ste (r st& // fix e sound: aandster/oggendster | |||
pool) ste (r st& // fix e sound: poolster | |||
prent) ste (r st& // fix e sound: rolprentster/-re | |||
see) ste (r st& // fix e sound: seester/-re/seesterpunte and similar compounds | |||
sepie) ste (r st& // fix e sound: sepiester/-re | |||
sewe) ste (r st& // fix e sound: sewester and compounds | |||
visie) ste (r st& // fix e sound: televisiester/-re | |||
_) ste (ri st%E // fix stress and e sound: steriel/-e/steriliteit | |||
ster (-hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfster-hotel | |||
ster (hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfsterhotel | |||
stimu (lA st@m%y // move default stress and fix i sound: stimuleer/stimulering/stimulasie | |||
_) sub (a sWb_ // subagent/subartikel/subatomies, etc. | |||
sub (li s%Wb // move default stress: subliem/-e | |||
@@ -3901,7 +3957,7 @@ | |||
_) sw sw // fix w sound: words beginning with sw-: swerweling/swetend | |||
swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid | |||
swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid | |||
swag sv'ax2 | |||
swag (K sv'ax2 | |||
swa (hili sw%a // fix stress and a sound: swahili/-'s | |||
_) swam (A@ swam_ // shorten a sound: swamagtig/-etend/-infeksie | |||
swart (gal sw%art // move default stress: swartgallig | |||
@@ -3917,7 +3973,7 @@ | |||
.group st | |||
D_) ste st@ //ste after numbers 22ste etc. | |||
_) staats st''A:ts // force stress: staatsadministrasie/-advokaat/-akkreditasie, etc. | |||
_) staat (s st''A:t // force stress: staatsadministrasie/-advokaat/-akkreditasie, etc. | |||
_) sta (bi@ st%a // fix stress and a sound: (on)stabiel/-e/stabiliseer/(on)stabiliteit | |||
sta (dion stA: // fix a sound: stadion and many compounds | |||
stalag (Ciet st%al%ax2 // fix stress and 1st a sound: stalagmiet/stalagtiet/-e | |||
@@ -3966,6 +4022,7 @@ | |||
sterretjie st'&rici | |||
sterwens (@ st&rv@ns_ // fix 2nd e sound and insert paus: sterwensuur/-kreet/-nood and similar | |||
ste (m stE // eliminate one m in derivatives like stemming | |||
ste (maat st@ // fix e sound: -dienstemaatskappy/-e and similar | |||
ste (mark st@ // fix e sound: (hoër/laer/middel)inkomstemark/-te, etc. | |||
stempel stEmp@l // fix 2nd e sound: stempelband/-datum/-gereedskap/-hamer/-jaar/-letter... | |||
@) stemperame s_tEmp@-r%amE // fix vowel sounds and stress: dobbelaars-/kunstenaarstemperament, etc. | |||
@@ -4009,7 +4066,8 @@ | |||
tafe (re t%af@ // fix vowel sounds: tafereel/taferele and compounds | |||
taiwa (n t%aIwa // fix stress and w and a sounds: Taiwan/Taiwanese | |||
taksider (m t%aks%id%&r // fix stress and e sound: taksidermie/taksidermis/-te | |||
ta (lent t%a // fix stress and a sound: talent/-e/-jie | |||
talent t%alEnt // fix stress and a sound: talent/-e/musiek-/kunstalent | |||
talen (tjie t%alEiN // fix -entjie: (kuns-/musiek)talentjie | |||
@) talig t'A:l@x2 // Anderstalig/tweetalig | |||
@) ta (lis t%a // shorten a sound: hospitalisasie/kapitalisme/katalisator and similar | |||
_) ta (ma t%a // tamatie and compounds | |||
@@ -4252,7 +4310,7 @@ | |||
teltjie t@lki | |||
@) tel (o t@l // hartelose/besluiteloos/gedagtelose | |||
tendens t%Ende~ns // fix stress and e sounds: tendens/-e and compounds | |||
&) tert (A t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken | |||
&) tert (A@ t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken | |||
&) tert (r t@rt // fix e sound: pleistertroffel/venstertralie/ystertralies/ystertrap | |||
&s) tert (aan t&:rt // fix e sound: swa(w)elstertaandpak/-ke | |||
&s) tert (e_ t&:rt // fix e sound: swa(w)elsterte/vissterte | |||
@@ -4314,6 +4372,7 @@ | |||
uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@ | |||
uit (huisig %Yyt // move stress: uithuisig/-e/-heid | |||
uiting Yyt@N // remove break and fix ng: uiting/-e/-svermoë and similar compounds | |||
ui (tjie Yy // "uit" not prefix here: uitjie/-s | |||
uitme (kaar %Yytm@ // move default stress: uitmekaar breek/gaan/loop/, etc. | |||
uit (munten %Yyt // move stress: uitmuntend/-e | |||
uit (sluiten %Yyt // move default stress: uitsluitend/-e | |||
@@ -4352,8 +4411,9 @@ | |||
.group v | |||
v f | |||
v (v | |||
@) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig | |||
@) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig | |||
uit) vaardig fA:rd@x2 // but uitvaardig | |||
ver) vaardig fA:rd@x2 // default stress: onderdelevervaardiger and similar | |||
va (doek fa // stress on 1st slb.: vadoek/-e | |||
vagina vax2ina // fix v sound and shorten a sound: vagina/-s | |||
vagin (A@ v%ax2%in // move default stress: vaginale and similar | |||
@@ -4372,6 +4432,8 @@ | |||
vari (A v%ar%i // fix v sound and stress: variasie/-s/varieer | |||
vaseline v%as@lin // fix stress, v and vowel sounds: vaseline/-bottel, etc. | |||
vasste (l fast& // fix e sound: vasstel(ling/-lende) | |||
_) vat (A@ fat_ // fix a sound: vatafstand/-orgaan | |||
vate (C fA:t@ // fix e sound: vatefabriek/-maker | |||
vati (kaan f%at%i // fix stress and shorten a sound: vatikaan and derivatives and compounds | |||
@) ve (_ _^_EN //words ending in ve is English | |||
veel (duid f%e@l // move default stress: veelduidig/-e/veelduidend/-e | |||
@@ -4396,6 +4458,7 @@ | |||
vere (sto fe@r@ // avoid ver prefix: verestoffer/-s and compounds | |||
verversing f@rf'&rs@N //verversing and compounds | |||
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 (ra f%Et@ // fix stress and e sounds: veteraan/-ane and compounds | |||
veter (K fe@t@r // (skoen)veter/-s, etc. | |||
@@ -4535,6 +4598,7 @@ | |||
_) voor (delig f%o@r // move default stress: voordelig/-e | |||
_) voorge (@P6 f'o@rx2@ | |||
_) voor (komA f%o@r // move default stress: voorkomende/voorkomer/voorkoming and compounds | |||
voor (komba f%o@r // move default stress: voorkombaar/-heid/-bare | |||
voor (sie f%o@r // move default stress: voorsien/-ing | |||
voorskrifteli (k f%o@rskrIft@l@ // move default stress: voorskriftelik/-e/-heid | |||
voorspe (lK fo@rsp'& // voorspel/voorspelling/voorspelbaar/onvoorspelbaar | |||
@@ -4580,6 +4644,7 @@ | |||
nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal | |||
Cod) w v // fix w sound: godwelgevallig/godweet/godwees | |||
k) w w | |||
volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc. | |||
k) w (And v // fix w sound: buikwand/rukwinde | |||
s) w w | |||
@s) w (aan v // fix w sound: groot-/kleinheids-/hoogmoeds-/liefdes-/vervolgingswaan | |||
@@ -4668,8 +4733,9 @@ | |||
@s) w (An_ v // plurals of the above in -de: de treate | |||
_) wan (AP3 v''an_ // wanorde/wanopvatting/wanaanpassing/winindruk/wanadministrasie/wanaangewend | |||
@t) w (and v // fix w sound: bloedvatwand/grotwand/hartwand | |||
C) wag vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter | |||
C) wag (K vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter | |||
k) wagga wax2a // fix w sound: kwagga/bergkwagga, etc. | |||
wal (kure v%al // move default stress: Walkure/-s | |||
wange (drag vanx2@ // (jeug)wangedrag and similar | |||
wankel (moed v%aNk@l // move default stress: wankelmoedig/-e/-heid | |||
wanordeli (k v%an_Ord@l@ // move default stress: wanordelik/-e/-heid | |||
@@ -4732,6 +4798,7 @@ | |||
wn _^_EN // names containing town/Brackendowns/Brown | |||
_) wol (A vOl_ // fix o sound, insert short break: wol(onderbaadjie/-broek/-hemp/-klere)/-olie | |||
wol (vin v%Ol // move default stress: wolvin/-ne | |||
worth _^_EN | |||
wood (+ _^_EN // English: Woodstock/Goodwood/Lynnwood | |||
woongewes vo@nx2@vEs // fix stress and e sounds: woongewes/-te | |||
@@ -4852,60 +4919,13 @@ | |||
û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 | |||
% p@rs'Ent | |||
& _|amp&rsant | |||
£ pO:nt | |||
€ Y@ru | |||
/ stre@p | |||
@ beI_: | |||
\\ trystre@p | |||
// punctuation, but don't speak multiple occurrances | |||
= _:x2@l'eIk_: | |||
= (== | |||
=) = (= | |||
==) = (_ _:: | |||
* st&r | |||
*) * (* | |||
** | |||
**) * (_ _:: | |||
+ pl'Ws | |||
_) ++ (_ plWspl'Ws | |||
\+\+\+) + // ignore + after the first 3 | |||
__) - (_D minWs | |||
A_) - (_D _ | |||
C_) - (_D _ | |||
--) - | |||
. pWnt | |||
. (. _: | |||
\.) . | |||
~ tIld@ | |||
// extra symbols | |||
¥ jEn | |||
§ afde@l@N | |||
¶ parax2rA:f | |||
¶¶ parax2rA:v@ | |||
¤ mWnte@k@n | |||
© kup'ir&x2 | |||
° x2rA:d@ | |||
− minWs | |||
± plWs_OfminWs | |||
µ mikru | |||
¼ @kwart | |||
½ @halv@ | |||
¾ drikwart | |||
× mA:l | |||
÷ x2@de@ldY@r | |||
♯ krYys | |||
♭ mOl | |||
@@ -124,9 +124,18 @@ _1M2 _'aIn@||mIlI'o:n | |||
_0M3 ||mIlI'a*d@n | |||
_1M3 _'aIn@||mIlI'a*d@ | |||
_0M4 bIlI'o:n | |||
_0and ||Unt | |||
_0and ||_|Unt | |||
_dpt _kOma | |||
// ordinal numbers | |||
_ord t@ // default ending | |||
_ord20 st@ // 20,30,etc | |||
_1o _'e:*st@ | |||
_3o dr'It@ | |||
_7o z'i:bt@ | |||
_8o _'axt@ | |||
_0Co 'hUnd3tst@ | |||
// Abbreviations | |||
//============== | |||
a.a.o A:A:o: |
@@ -15,6 +15,20 @@ n N p r s S t T | |||
tS v w x x2 z Z | |||
Dictionary bn_dict | |||
& a a: a~ e E e~ i | |||
I i: i:~ i~ l- o O o: | |||
O~ o~ r- U u u: u:~ u~ | |||
V | |||
* b B bh c C ch d | |||
d. d.h dh g gh h j J | |||
Jh k kh l m n N n. | |||
n^ p ph Q r r. s S | |||
s. t t. t.h th tS x z | |||
Dictionary ca_dict | |||
@ a a# aI e E E2 i | |||
@@ -53,6 +67,20 @@ p r s S t T v w | |||
x z | |||
Dictionary kn_dict | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
: b bh c ch d d. d.h | |||
dh dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s S | |||
s. S; t t. t.h th tS v | |||
w z | |||
Dictionary de_dict | |||
3 @ @- a A A: aI aU | |||
@@ -246,6 +274,47 @@ s S t tS v w x z | |||
Z | |||
Dictionary ml_dict | |||
a a: aI aU e E e: i | |||
I i: o o: r- u u: V | |||
y | |||
: b bh c ch d d. d.h | |||
dh dZ f g gh h j J | |||
Jh k kh l l. m n N | |||
n. n^ p ph R R2 s s. | |||
S; t t. t.h th tS v w | |||
z z. | |||
Dictionary ne_dict | |||
@ @/ @2 @3 a aI aU a~ | |||
e E eI eU e~ E~ i I | |||
i~ l- o O o: oI oU O~ | |||
o~ r- u uI u~ V VI VU | |||
V~ | |||
- : b bh c ch d d. | |||
d.h dh f g gh h H j | |||
J Jh k kh l l. m n | |||
N n. n^ p ph Q q r | |||
r. s S s. t T t. t.h | |||
th v w x z z. | |||
Dictionary om_dict | |||
a A a# a: E e E# I | |||
I# i: O O# o: U U# u: | |||
** : b B c` d D d` | |||
dZ f g h j k k` l | |||
m n n^ p p` R s S | |||
s2 t t` tS v w z | |||
Dictionary ku_dict | |||
8 a e E E# eI eU i | |||
@@ -292,6 +361,16 @@ N n^ p r R s S t | |||
tS ts tS; v x z Z | |||
Dictionary rw_dict | |||
a e i o u | |||
* : b B c d dZ f | |||
g h j J k l m n | |||
N n^ p q R s S S; | |||
t tS v w x z | |||
Dictionary nl_dict | |||
8 @ @- A a: E e: EI | |||
@@ -458,8 +537,8 @@ Dictionary zh_dict | |||
@ @r a A ai Au E ei | |||
i i. i[ iA iE io iou N- | |||
o o- ou u u@ ua uai uei | |||
uo y y& y@ yE yi yu | |||
o o- ong ou u u@ ua uai | |||
uei uo y y& y@ yE yi yu | |||
; C f h j k kh l | |||
L m n N p ph r R |
@@ -102,7 +102,6 @@ _#32 speIs | |||
_ hA@dspeIs // U+00A0 no-break-space | |||
_! Ekskl@m'eIS@n | |||
_" kwoUts | |||
_# haS | |||
_$ d0l3 | |||
_% p3s'Ent | |||
?5 _% pVRs'Ent | |||
@@ -178,6 +177,7 @@ _‴ trIp@LpraIm | |||
_‼ Ekskla2m'eIS@nz | |||
_₠ jU@roU | |||
# haS $max3 | |||
@ _at_ | |||
& _and | |||
\ bakstroUk $max3 | |||
@@ -186,8 +186,8 @@ _₠ jU@roU | |||
?3 / slaS $max3 | |||
* ast@rIsk $max3 | |||
% p3sEnt $max3 | |||
= _:i:kw@Lz_: $max3 | |||
?5 % pVRs'Ent $max3 | |||
= _:i:kw@Lz_: $max3 | |||
¢ sEnts | |||
£ paUnd | |||
¥ jEn | |||
@@ -303,10 +303,13 @@ _0M3 b'Ili@n | |||
_dpt pOInt | |||
_roman roUm@n_ | |||
(1 st) f3:st | |||
(2 nd) sEk@nd | |||
(3 rd) T3:d | |||
(5 th) fIT | |||
_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 | |||
_0Co h'Vndr@dT | |||
// ABBREVIATIONS | |||
@@ -338,6 +341,7 @@ ibm $abbrev | |||
ie aIi:_! $pause $only | |||
i.e aIi:_! $pause | |||
irc $abbrev | |||
(km ²) skw,e@kIl'0mIt3z | |||
lbs paUndz | |||
LBS $abbrev | |||
ltd lImI2tI2d | |||
@@ -815,7 +819,7 @@ concise k0ns'aIs | |||
cone koUn | |||
conflict $1 $onlys | |||
conflict $verb | |||
conger k0ng3 | |||
conger k0Ng3 | |||
conscience k0nS@ns | |||
construct $1 $onlys | |||
construct $verb | |||
@@ -1382,6 +1386,7 @@ mammoth mam@T | |||
mandate $2 $verb | |||
manganese $1 | |||
manger meIndZ3 | |||
mangetout m0nZt'u: | |||
manhour manaU@ | |||
mankind $2 | |||
maneuver m@nu:v3 | |||
@@ -1665,6 +1670,7 @@ prestige prEst'i:Z | |||
?3 pretense pri:tEns | |||
pretext pri:tEkst | |||
pretty prItI | |||
privation praIv'eIS@n | |||
privilege prIvI2lI2dZ | |||
privy prIvI | |||
prix pri: | |||
@@ -1847,6 +1853,7 @@ satan seIt@n | |||
satanist seIt@nIst | |||
saucepan sO:sp@n | |||
saudi saUdI | |||
saute sO:teI | |||
says sEz | |||
schema ski:m@ | |||
shallow SaloU | |||
@@ -1884,8 +1891,10 @@ sentient sEnti@nt | |||
sequester $2 | |||
sequine si:kwI2n | |||
series si:ri:z | |||
serenade sErI2n'eId | |||
serene s@ri:n | |||
sergeant sA@dZ@nt | |||
sesame sEsa2mI | |||
settee $2 | |||
severe sI2v'i@3 $only | |||
severely sI2v'i@3lI2 $verbf | |||
@@ -2550,8 +2559,10 @@ Michael maIk@L | |||
Michele mI2SEl | |||
Michelle mI2SEl | |||
Miguel mi:Q'El | |||
Mohammad moUh'amId | |||
Muhammad moUh'amId | |||
Minerva mI2n3:v@ | |||
Mohamed moUh'amI2d | |||
Mohammad moUh'amI2d | |||
Muhammad moUh'amI2d | |||
Moira mOIr@ | |||
Natalie nata2li | |||
Nathan neIT@n | |||
@@ -2604,6 +2615,7 @@ Disney dIznI | |||
Patel pa2tEl | |||
Primavera pri:m@v'e@r@ | |||
Prentice prEntIs | |||
Reid ri:d | |||
Reuter rOIt3 | |||
Ubuntu u:b'u:ntu: | |||
Yaesu jeIsu: | |||
@@ -2746,6 +2758,7 @@ aren't ,A@nt $pastf $strend2 | |||
weren't ,w3:nt $pastf $strend2 | |||
will $u+ $only $verbf $strend2 | |||
will $noun | |||
(will to) wIlt@5 | |||
would $u+ $verbf $only $strend2 | |||
(would have) w%Udh%a2v $pastf |
@@ -30,6 +30,7 @@ | |||
// ?8 Use full vowel, not schwa in some word endings | |||
.L01 l r | |||
.L02 i y | |||
.replace | |||
ff ff // ligature | |||
@@ -856,10 +857,10 @@ | |||
area e@ri@ | |||
arest (_ e@r@st | |||
ar (en ar | |||
p) are (nth @rE | |||
p) are (nthe @rE | |||
c) ar (eer ar | |||
c) are (C@ e@ | |||
p) are (nt e@r@ | |||
p) ar (ent e@r | |||
pp) ar (enC ar | |||
sp) ar (enC ar | |||
ar' (nt A@ | |||
@@ -1700,6 +1701,7 @@ | |||
e (meou i: | |||
_C) e (mur i: | |||
&) e (n @ | |||
&r) e (n E | |||
Ah) e (n E | |||
ll) e (nge I | |||
e (o I2 | |||
@@ -1900,6 +1902,7 @@ | |||
.group ei | |||
l) eice (st E | |||
eich aIx | |||
eigh eI | |||
l) eigh i: | |||
sl) eigh eI | |||
@@ -3557,12 +3560,16 @@ | |||
@) o (ist oU | |||
oix (_ wa | |||
o (ky_ oU | |||
?3 g) o (ng O | |||
?3 r) o (ng O | |||
?3 s) o (ng O | |||
t) o (ngu V | |||
&) oped (_ @pd | |||
c) oped (_ oUpd | |||
_) o (per 0 | |||
_) ope (n oUp@ | |||
un) ope (n oUp@ | |||
@) opol (i '0p@L | |||
@) opol (L02 '0p@l | |||
opolitan @p'0lIt@n | |||
oppor (tu %0p3 | |||
opp (res @p | |||
@@ -3753,9 +3760,6 @@ | |||
_) one (r oUn@ | |||
m) on (ey Vn | |||
und) one (_ Vn | |||
?3 g) ong ON | |||
?3 r) ong ON | |||
?3 s) ong ON | |||
?!3 m) ong (er VNg | |||
on (i_ 'oUn | |||
&) onism (_ =@nIz@m | |||
@@ -4395,6 +4399,7 @@ | |||
rehen rIh'En | |||
_) re (i@P2 r,i: | |||
_) rei (l raI | |||
_) rei (c raI | |||
_) rele (g rElI2 | |||
rele (nt rI2lE | |||
rele (v rElI | |||
@@ -4804,7 +4809,7 @@ | |||
u (lul V | |||
h) u (man ju: | |||
u (me ju: | |||
r) ument @m@nt | |||
r) um (ent @m | |||
fl) uor u:3 | |||
u (o ju: | |||
@) uous =ju:@s |
@@ -24,7 +24,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated 2008-12-09 Michel Such <[email protected]> | |||
// Updated 2009-01-14 Michel Such <[email protected]> | |||
// | |||
// * Numbers, a few abbreviations and exceptions. | |||
// | |||
@@ -111,6 +111,7 @@ _# djEz | |||
_' a2postr'Of | |||
_( 'uvR@-parA~t'Ez | |||
_) f'Erm parA~t'Ez | |||
_* asterisk: | |||
_, virgyl | |||
_- tirE | |||
_. _|pw%E~ | |||
@@ -143,9 +144,9 @@ _§ sEksj'O~ | |||
@ arobaz | |||
% pursA~ $max3 | |||
* asterisk: $max3 | |||
& _e | |||
& e $u $brk | |||
_& _e_komErsj'al | |||
+ plys $max3 | |||
+ plys $max3 | |||
~ tilde | |||
€ @ro | |||
¢ sEnt | |||
@@ -596,6 +597,7 @@ montréal mO~real | |||
(qu'est ce que) kEsk@ $u | |||
absent absA~ | |||
admin admin | |||
adsltv $abbrev | |||
airbus E2rbys | |||
auvent ovA~ | |||
bien bjE~n2 $u+ | |||
@@ -622,6 +624,7 @@ hélas elas $u+ | |||
iris iris | |||
laser lazEr | |||
malus malys | |||
mapper _^_en | |||
mars mars | |||
mieux mj'Y $u+ | |||
ours urs | |||
@@ -629,6 +632,7 @@ parangon parA~gO~ | |||
phallus falys | |||
polder pOldEr | |||
premier pr@mjer2 | |||
(program files) pr,o2gram||f'ajlz | |||
scanner skaner2 | |||
scanner skanWr $noun | |||
souris suri |
@@ -23,7 +23,7 @@ | |||
// 2006-11-18 Gilles Casse <[email protected]> | |||
// | |||
// Updated: 2008-12-09 Michel Such <[email protected]> | |||
// Updated: 2009-01-14 Michel Such <[email protected]> | |||
// | |||
// Letter classes: | |||
@@ -119,6 +119,7 @@ | |||
cch k // bacchanale | |||
cc (Y ks // accéder | |||
cc k // occuper | |||
_) c (d se | |||
_) ch (arism k // charisme, charismatique | |||
_) ch (irop k // chiroptère | |||
a) ch (_ k // almanach | |||
@@ -244,6 +245,7 @@ _) ç' (P2v s | |||
A) e (rA // remerciera | |||
gu) e (rA @ | |||
qu) e (rA @ | |||
v) e (lop @- | |||
@) em (me a // patiemment | |||
em (b A~ // décembre | |||
em (mACC A~ // emmancher | |||
@@ -679,7 +681,6 @@ _) half _^_en | |||
Cr) i (é i: | |||
Cr) i (er_ i: | |||
rr) i (er_ j | |||
dr) iver a2jvWr | |||
C) ien (t_ i | |||
dév) ien (t_ i | |||
t) ien (K_ jE~ // tient | |||
@@ -735,8 +736,8 @@ _) half _^_en | |||
ind (_ _^_en // find, mind | |||
_C) ind (er_ _^_en // finder, reminder | |||
_AC) ind (er_ _^_en // finder, reminder | |||
// ink _^_en // link | |||
ize (X _^_en // realize | |||
dr) i (ve _^_en | |||
.group î |
@@ -4,12 +4,11 @@ | |||
// Conditional rules: | |||
// ?1 speak "i" as Roman number | |||
// Numbers | |||
_0 nullA | |||
_1 EJ | |||
_2 kEttY: | |||
_2 kEt:Y: | |||
_3 ha:R2om | |||
_4 ne:J | |||
_5 Yt | |||
@@ -43,7 +42,30 @@ _1M3 ke:tmillia:R2d | |||
_0M4 billio: | |||
_1M4 billio: | |||
_2M4 ke:tbillio: | |||
_dpt ||_vEss2Y:_ | |||
_dpt ||_v,Ess2Y:_ | |||
_0Z1 tizAd // tenths | |||
_0Z2 sa:zAd // hundredths | |||
_0Z3 EzR2Ed | |||
_0Z4 ti:zEzR2Ed | |||
// ordinal numbers | |||
_ord Edik | |||
_1o ElSY: | |||
_2o ma:Sodik | |||
_3o hAR2_mAdik | |||
_4o nEJEdik | |||
_5o YtYdik | |||
_6o hAtodik | |||
_7o hEtEdik | |||
_8o n^oltsAdik | |||
_9o kilEntsEdik | |||
_10o tizEdik | |||
_12o tizENkEt:Edik | |||
_20o husAdik | |||
_0Co sa:zAdik | |||
// accent names | |||
_lig ligAtu:R2A | |||
@@ -355,6 +377,7 @@ ny En^ | |||
% sa:zAle:k $max3 | |||
+ plus $max3 | |||
= EJEnlY:Se:g $max3 | |||
# sa:mjEl $max3 | |||
@ kukAts | |||
& e:SjEl | |||
€ EuR2o | |||
@@ -364,6 +387,7 @@ ny En^ | |||
^ hia:n^ | |||
° fokjEl | |||
Ft foR2int | |||
\ viss2ApER2 $max3 | |||
_, vEss2Y: | |||
_; pontoSvEss2Y: | |||
@@ -382,15 +406,14 @@ _[ s'YglEtES||z'a:R2o: | |||
_] s'YglEtES||z'a:R2o: | |||
_{ k'AptSoS||z'a:R2o: | |||
_} k'AptSoS||z'a:R2o: | |||
_# sa:mjEl | |||
_… ha:R2_mASpont | |||
_• di:spont | |||
_\ viss2ApER2 | |||
// Main Exceptions List | |||
//===================== | |||
nato na:to: | |||
$textmode | |||
(1-én) elsején | |||
@@ -232,17 +232,18 @@ _nyílá) s S | |||
_o) sló slo: | |||
tojá) s S | |||
sz (öld Sz | |||
va) s (zabl S|| | |||
_) semmelweiss sEmmElvEjs | |||
_) semmelweis sEmmElvEjs | |||
_) semmelweiß sEmmElvEjs | |||
engel) s s | |||
mu) ss (olini ss2 | |||
_) saar sa:R2 | |||
_wa) sh (ing S | |||
sz (öld Sz | |||
va) s (zabl S|| | |||
egé) szs (ég S | |||
.group t | |||
_) t (_ te: |
@@ -85,7 +85,20 @@ _0M1 t'u:kstuo:Si | |||
_1M1 t'u:kstuo:tis | |||
_0M2 m'iljo:ni | |||
_1M2 m'iljo:ns | |||
_dpt k'uomats_ | |||
_dpt k'omats_ | |||
// ordinal numbers | |||
_ord ais // default ending | |||
_1o p'iR2mais | |||
_2o 'otR2ais | |||
_3o tR'eSais | |||
_4o tS'etuRtais | |||
_5o p'iektais | |||
_6o s'estais | |||
_7o s'epti:tais | |||
_8o 'astotais | |||
_9o d'evi:tais | |||
_0Co s'imtais | |||
// accent names (Mostly English names, please fix) | |||
@@ -95,7 +108,7 @@ _ac2 d'ubultsakju:t | |||
_brv 'i:suma | |||
_ced s'edi:la | |||
_cir d'iakR2itiska: | |||
_dia 'umlaut | |||
_dia 'umlauts | |||
_dot p'unkts | |||
_grv gR2'a:v | |||
_hac h'atSek | |||
@@ -292,7 +305,6 @@ janv janva:R2is | |||
jūl ju:lijs | |||
jūn ju:nijs | |||
lp lapa | |||
lpp lappuse | |||
lat lati:n^u | |||
latv latvieSu | |||
Ls lati $capital | |||
@@ -322,12 +334,59 @@ sv sve:tais | |||
st sant | |||
šķ SciR2a | |||
// words with [o] | |||
// words with [o] | |||
adadžo $alt | |||
aikido $alt | |||
anno $alt | |||
automoto $alt | |||
bandžo $alt | |||
bendžo $alt | |||
bingo $alt | |||
bolero $alt | |||
bravo $alt | |||
bruno $alt | |||
bruto $alt | |||
depo $alt | |||
dingo $alt | |||
domino $alt | |||
džudo $alt | |||
čello $alt | |||
embargo $alt | |||
esperanto $alt | |||
facto $alt | |||
fiasko $alt | |||
foto $alt | |||
hallo $alt | |||
hugo $alt | |||
indigo $alt | |||
inkognito $alt | |||
intermeco $alt | |||
kakao $alt | |||
kastro $alt | |||
kazino $alt | |||
microsoft $alt | |||
moto $alt | |||
lego $alt | |||
lumbago $alt | |||
maestro $alt | |||
metro $alt | |||
moto $alt | |||
odo $alt | |||
oto $alt | |||
panno $alt | |||
pianīno $alt | |||
rančo $alt | |||
retro $alt | |||
rokoko $alt | |||
roks $alt | |||
sambo $alt | |||
solfedžo $alt | |||
sonera $alt | |||
triko $alt | |||
trimo $alt | |||
uno $alt | |||
veto $alt | |||
žabo $alt | |||
@@ -172,11 +172,19 @@ language). | |||
.group o | |||
o o | |||
ou ou | |||
o1u ou55 | |||
o2u ou35 | |||
o3u ou214 | |||
o4u ou51 | |||
ong (K ong | |||
o1ng (K ong55 | |||
o2ng (K ong35 | |||
o3ng (K ong214 | |||
o4ng (K ong51 | |||
y) o io | |||
y) ou iou | |||
y) o1u iou55 |
@@ -101,8 +101,7 @@ phoneme ts | |||
vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
lengthmod 2 | |||
wave ustop/ts | |||
before _ ustop/ts_ | |||
wave ustop/ts // don't use ustop/ts_ (before non-vowel) | |||
endphoneme | |||
@@ -70,7 +70,7 @@ phoneme ph | |||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | |||
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 | |||
lengthmod 2 | |||
wave ustop/p_ | |||
wave ustop/p_asp | |||
endphoneme | |||
phoneme m //not clear before some vowel | |||
@@ -134,7 +134,7 @@ phoneme kh | |||
vowelin f1=1 f2=1700 0 200 f3=-300 80 f4 | |||
vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30 | |||
lengthmod 2 | |||
wave ustop/k_ | |||
wave ustop/k_asp%80 | |||
endphoneme | |||
phoneme tS; | |||
@@ -274,7 +274,7 @@ endphoneme | |||
phoneme @r //tmp use V3_r | |||
vowel starttype (@) endtype (@) | |||
length 250 | |||
length 350 | |||
formants vowelr/V3_r | |||
endphoneme | |||
@@ -360,6 +360,12 @@ phoneme ou | |||
formants vdiph/8u | |||
endphoneme | |||
phoneme ong | |||
vowel starttype (o) endtype (o) | |||
length 500 | |||
formants vwl_zh/ong | |||
endphoneme | |||
phoneme u //try more before N | |||
vowel starttype (u) endtype (u) | |||
length 250 |
@@ -1341,3 +1341,23 @@ phonemetable hy base | |||
include ph_armenian | |||
phonemetable rw base2 | |||
include ph_kinyarwanda | |||
phonemetable ml hi | |||
include ph_malayalam | |||
phonemetable kn hi | |||
include ph_kannada | |||
phonemetable bn hi | |||
include ph_bengali | |||
phonemetable ne hi | |||
include ph_nepali | |||
phonemetable mr hi | |||
include ph_mathari | |||
phonemetable om base | |||
include ph_oromo |
@@ -876,12 +876,8 @@ int Compile::LoadWavefile(FILE *f, const char *fname) | |||
max = -sample; | |||
} | |||
if(max > 1) | |||
{ | |||
scale_factor = (max / 127) + 1; | |||
} | |||
else | |||
scale_factor = 0; | |||
scale_factor = (max / 127) + 1; | |||
//fprintf(f_errors," sample len=%d max=%4x shift=%d\n",length,max,scale_factor); | |||
@@ -203,6 +203,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
int flag_offset; | |||
int length; | |||
int multiple_words = 0; | |||
int multiple_numeric_hyphen = 0; | |||
char *multiple_string = NULL; | |||
char *multiple_string_end = NULL; | |||
@@ -343,7 +344,14 @@ step=1; // TEST | |||
case 1: | |||
if((c == '-') && (word[0] != '_')) | |||
{ | |||
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED; | |||
if(isdigit(word[0])) | |||
{ | |||
multiple_numeric_hyphen = 1; | |||
} | |||
else | |||
{ | |||
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED; | |||
} | |||
c = ' '; | |||
} | |||
if(isspace2(c)) | |||
@@ -530,8 +538,14 @@ step=1; // TEST | |||
} | |||
else | |||
{ | |||
dict_line[length++] = 80 + multiple_words; | |||
dict_line[length++] = 80 + multiple_words + multiple_numeric_hyphen; // if numeric, count a hyphen as an extra word | |||
ix = multiple_string_end - multiple_string; | |||
if(multiple_numeric_hyphen) | |||
{ | |||
// the first part is numeric, so keep the hyphen to match on | |||
dict_line[length++] = '-'; | |||
dict_line[length++] = ' '; | |||
} | |||
memcpy(&dict_line[length],multiple_string,ix); | |||
length += ix; | |||
} | |||
@@ -1303,6 +1317,11 @@ static int compile_lettergroup(char *input, FILE *f_out) | |||
fputc(RULE_GROUP_START,f_out); | |||
fputc(RULE_LETTERGP2,f_out); | |||
fputc(group + 'A', f_out); | |||
if(letterGroupsDefined[group] != 0) | |||
{ | |||
fprintf(f_log,"%5d: lettergroup L%.2d is already defined\n",linenum,group); | |||
error_count++; | |||
} | |||
letterGroupsDefined[group] = 1; | |||
n_items = 0; |
@@ -542,7 +542,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out) | |||
if(plist->synthflags & SFLAG_SYLLABLE) | |||
{ | |||
if((stress = plist->tone) > 1) | |||
if((stress = plist->stresslevel) > 1) | |||
{ | |||
if(stress > 5) stress = 5; | |||
phon_out[phon_out_ix++] = stress_chars[stress]; | |||
@@ -2550,6 +2550,14 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
return(0); | |||
} | |||
#endif | |||
// is it a bracket ? | |||
if(IsBracket(letter)) | |||
{ | |||
if(pre_pause < 4) | |||
pre_pause = 4; | |||
} | |||
// no match, try removing the accent and re-translating the word | |||
if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0)) | |||
{ |
@@ -466,7 +466,7 @@ int main (int argc, char **argv) | |||
break; | |||
case 0x104: // --voices | |||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL,0); | |||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0); | |||
DisplayVoices(stdout,optarg); | |||
exit(0); | |||
@@ -1163,7 +1163,6 @@ void Test2() | |||
const char* text1 = "Hello world. Testing."; | |||
extern void TestCompile2(void); | |||
void TestTest(int control) | |||
{//======================= | |||
@@ -1178,7 +1177,6 @@ void TestTest(int control) | |||
//CharsetToUnicode("ISO-8859-4"); | |||
//CharsetToUnicode("ISCII"); | |||
//TestCompile2(); | |||
return; | |||
if(control==2) |
@@ -734,12 +734,12 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
p = &phoneme_list[0]; | |||
for(ix=0; ix<n_phoneme_list; ix++, p++) | |||
{ | |||
if((p->type == phVOWEL) && (p->tone >= 4)) | |||
if((p->type == phVOWEL) && (p->stresslevel >= 4)) | |||
{ | |||
if(count_stressed == 0) | |||
final_stressed = ix; | |||
if(p->tone >= 4) | |||
if(p->stresslevel >= 4) | |||
{ | |||
final_stressed = ix; | |||
count_stressed++; | |||
@@ -747,7 +747,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
} | |||
} | |||
phoneme_list[final_stressed].tone = 7; | |||
phoneme_list[final_stressed].stresslevel = 7; | |||
// language specific, changes to tones | |||
if(tr->translator_name == L('v','i')) | |||
@@ -813,7 +813,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
if((tph->mnemonic == 0x3535 ) || (tph->mnemonic == 0x3135)) | |||
{ | |||
// change sentence final tone 1 or 4 to stress 6, not 7 | |||
phoneme_list[final_stressed].tone = 6; | |||
phoneme_list[final_stressed].stresslevel = 6; | |||
} | |||
} | |||
@@ -840,7 +840,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
p->tone_ph = PhonemeCode2('4','4'); | |||
// tone 5 is unstressed (shorter) | |||
p->tone = 1; // diminished stress | |||
p->stresslevel = 1; // diminished stress | |||
} | |||
} | |||
@@ -859,7 +859,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) | |||
{ | |||
tone_ph = p->tone_ph; | |||
if(p->tone != 1) // TEST, consider all syllables as stressed | |||
if(p->stresslevel != 1) // TEST, consider all syllables as stressed | |||
{ | |||
if(ix == final_stressed) | |||
{ | |||
@@ -924,9 +924,9 @@ void CalcPitches(Translator *tr, int clause_type) | |||
syllable_tab[n_st].flags = 0; | |||
syllable_tab[n_st].env = PITCHfall; | |||
syllable_tab[n_st].nextph_type = phoneme_list[ix+1].type; | |||
syllable_tab[n_st++].stress = p->tone; // stress level | |||
syllable_tab[n_st++].stress = p->stresslevel; | |||
if(p->tone >= 4) | |||
if(p->stresslevel >= 4) | |||
n_primary++; | |||
} | |||
else | |||
@@ -1051,7 +1051,7 @@ void CalcPitches(Translator *tr, int clause_type) | |||
for(ix=ph_start; ix < ph_end; ix++) | |||
{ | |||
p = &phoneme_list[ix]; | |||
p->tone = syllable_tab[st_ix].stress; | |||
p->stresslevel = syllable_tab[st_ix].stress; | |||
if(p->synthflags & SFLAG_SYLLABLE) | |||
{ | |||
@@ -1071,7 +1071,7 @@ void CalcPitches(Translator *tr, int clause_type) | |||
p->env = PITCHrise; | |||
} | |||
else | |||
if(p->tone > 5) | |||
if(p->stresslevel > 5) | |||
p->env = syl->env; | |||
if(p->pitch1 > p->pitch2) | |||
@@ -1092,7 +1092,7 @@ if(p->tone_ph) | |||
if(syl->flags & SYL_EMPHASIS) | |||
{ | |||
p->tone |= 8; // emphasized | |||
p->stresslevel |= 8; // emphasized | |||
} | |||
st_ix++; |
@@ -893,39 +893,54 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, char *ph | |||
static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
{//======================================================================== | |||
// Lookup a 2 digit number | |||
// control bit 0: use special form of '1' | |||
// control bit 0: tens and units (use special form of '1') | |||
// control bit 1: ordinal number | |||
// control bit 2: use feminine form of '2' | |||
// control bit 3: speak zero tens | |||
int found; | |||
int ix; | |||
int units; | |||
int used_and=0; | |||
int found_ordinal = 0; | |||
int next_phtype; | |||
char string[12]; // for looking up entries in de_list | |||
char string[12]; // for looking up entries in *_list | |||
char ph_tens[50]; | |||
char ph_digits[50]; | |||
char ph_and[12]; | |||
char ph_ordinal[12]; | |||
if((value == 1) && (control & 1)) | |||
{ | |||
if(Lookup(tr, "_1a", ph_out) != 0) | |||
return(0); | |||
} | |||
// is there a special pronunciation for this 2-digit number | |||
found = 0; | |||
if(control & 4) | |||
{ | |||
sprintf(string,"_%df",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(control & 2) | |||
{ | |||
sprintf(string,"_%do",value); | |||
if((found = Lookup(tr, string, ph_digits)) != 0) | |||
{ | |||
found_ordinal = 1; | |||
} | |||
} | |||
if(found == 0) | |||
{ | |||
if((value == 1) && (control & 1)) | |||
{ | |||
if(Lookup(tr, "_1a", ph_out) != 0) | |||
return(0); | |||
} | |||
sprintf(string,"_%d",value); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
// no, speak as tens+units | |||
if((control & 2) && (value < 10)) | |||
if((control & 8) && (value < 10)) | |||
{ | |||
// speak leading zero | |||
Lookup(tr, "_0", ph_tens); | |||
@@ -934,49 +949,70 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
{ | |||
if(found) | |||
{ | |||
strcpy(ph_out,ph_digits); | |||
return(0); | |||
ph_tens[0] = 0; | |||
} | |||
if((value % 10) == 0) | |||
{ | |||
sprintf(string,"_%d0",value / 10); | |||
found = Lookup(tr, string, ph_tens); | |||
} | |||
if(!found) | |||
else | |||
{ | |||
sprintf(string,"_%dX",value / 10); | |||
Lookup(tr, string, ph_tens); | |||
} | |||
units = (value % 10); | |||
if((value % 10) == 0) | |||
{ | |||
strcpy(ph_out,ph_tens); | |||
return(0); | |||
} | |||
if((control & 2) && ((units == 0) || (tr->langopts.numbers & 0x10))) | |||
{ | |||
sprintf(string,"_%dXo",value / 10); | |||
if(Lookup(tr, string, ph_tens) != 0) | |||
{ | |||
found_ordinal = 1; | |||
} | |||
} | |||
if(found_ordinal == 0) | |||
{ | |||
sprintf(string,"_%dX",value / 10); | |||
Lookup(tr, string, ph_tens); | |||
} | |||
found = 0; | |||
units = (value % 10); | |||
if(control & 4) | |||
{ | |||
// is there a variant form of this number? | |||
sprintf(string,"_%df",units); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%d",units); | |||
Lookup(tr, string, ph_digits); | |||
ph_digits[0] = 0; | |||
if(units > 0) | |||
{ | |||
found = 0; | |||
if(control & 4) | |||
{ | |||
// is there a variant form of this number? | |||
sprintf(string,"_%df",units); | |||
found = Lookup(tr, string, ph_digits); | |||
} | |||
if((control & 2) && ((tr->langopts.numbers & 0x10) == 0)) | |||
{ | |||
// ordinal | |||
sprintf(string,"_%do",units); | |||
if((found = Lookup(tr, string, ph_digits)) != 0) | |||
{ | |||
found_ordinal = 1; | |||
} | |||
} | |||
if(found == 0) | |||
{ | |||
sprintf(string,"_%d",units); | |||
Lookup(tr, string, ph_digits); | |||
} | |||
} | |||
} | |||
} | |||
if(tr->langopts.numbers & 0x30) | |||
ph_ordinal[0] = 0; | |||
if((control & 2) && (found_ordinal == 0)) | |||
{ | |||
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & 0x10))) | |||
Lookup(tr, "_ord20", ph_ordinal); | |||
if(ph_ordinal[0] == 0) | |||
Lookup(tr, "_ord", ph_ordinal); | |||
} | |||
if((tr->langopts.numbers & 0x30) && (ph_tens[0] != 0) && (ph_digits[0] != 0)) | |||
{ | |||
Lookup(tr, "_0and", ph_and); | |||
if(tr->langopts.numbers & 0x10) | |||
sprintf(ph_out,"%s%s%s",ph_digits,ph_and,ph_tens); | |||
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal); | |||
else | |||
sprintf(ph_out,"%s%s%s",ph_tens,ph_and,ph_digits); | |||
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal); | |||
used_and = 1; | |||
} | |||
else | |||
@@ -993,7 +1029,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
ph_tens[ix] = 0; | |||
} | |||
} | |||
sprintf(ph_out,"%s%s",ph_tens,ph_digits); | |||
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal); | |||
} | |||
if(tr->langopts.numbers & 0x100) | |||
@@ -1015,9 +1051,11 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out) | |||
} // end of LookupNum2 | |||
static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands) | |||
{//==================================================================================================================== | |||
static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null, int thousandplex, int control) | |||
{//============================================================================================================= | |||
// Translate a 3 digit number | |||
// control bit 0, previous thousands | |||
// bit 1, ordinal number | |||
int found; | |||
int hundreds; | |||
int x; | |||
@@ -1039,7 +1077,16 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
ph_thousands[0] = 0; | |||
ph_thousand_and[0] = 0; | |||
Lookup(tr, "_0C", ph_100); | |||
found = 0; | |||
if((control & 2) && ((value % 100) == 0)) | |||
{ | |||
// ordinal number, with no tens or units | |||
found = Lookup(tr, "_0Co", ph_100); | |||
} | |||
if(found == 0) | |||
{ | |||
Lookup(tr, "_0C", ph_100); | |||
} | |||
if(((tr->langopts.numbers & 0x0800) != 0) && (hundreds == 19)) | |||
{ | |||
@@ -1073,7 +1120,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
ph_digits[0] = 0; | |||
if(hundreds > 0) | |||
{ | |||
if((tr->langopts.numbers & 0x100000) && (prev_thousands || (ph_thousands[0] != 0))) | |||
if((tr->langopts.numbers & 0x100000) && ((control & 1) || (ph_thousands[0] != 0))) | |||
{ | |||
Lookup(tr, "_0and", ph_thousand_and); | |||
} | |||
@@ -1111,7 +1158,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
ph_hundred_and[0] = 0; | |||
if((tr->langopts.numbers & 0x40) && ((value % 100) != 0)) | |||
{ | |||
if((value > 100) || (prev_thousands && (thousandplex==0))) | |||
if((value > 100) || ((control & 1) && (thousandplex==0))) | |||
{ | |||
Lookup(tr, "_0and", ph_hundred_and); | |||
} | |||
@@ -1121,16 +1168,15 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
buf2[0] = 0; | |||
value = value % 100; | |||
if(value == 0) | |||
{ | |||
if(suppress_null == 0) | |||
Lookup(tr, "_0", buf2); | |||
} | |||
else | |||
if((value != 0) || (suppress_null == 0)) | |||
{ | |||
x = 0; | |||
if(thousandplex==0) | |||
{ | |||
x = 1; // allow "eins" for 1 rather than "ein" | |||
if(control & 2) | |||
x = 3; // ordinal number | |||
} | |||
else | |||
{ | |||
if(tr->langopts.numbers2 & (1 << thousandplex)) | |||
@@ -1150,6 +1196,9 @@ 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) | |||
{//==================================================================================================== | |||
@@ -1166,10 +1215,15 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
int thousandplex = 0; | |||
int thousands_inc = 0; | |||
int prev_thousands = 0; | |||
int ordinal = 0; | |||
int this_value; | |||
static int prev_value; | |||
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 | |||
char buf1[100]; | |||
char ph_append[50]; | |||
@@ -1182,6 +1236,30 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
n_digits = ix; | |||
value = this_value = atoi(word); | |||
if((tr->langopts.numbers & 0x10000) && (word[ix] == '.')) | |||
{ | |||
// ordinal number | |||
ordinal = 2; | |||
word[ix] = ' '; | |||
} | |||
else | |||
if(tr->langopts.ordinals) | |||
{ | |||
// ordinal numbers are recognized by letters after the number | |||
ix++; | |||
pp = ordinal_strings[tr->langopts.ordinals]; | |||
while((p = *pp++) != NULL) | |||
{ | |||
len = strlen(p); | |||
if((word[ix+len] == ' ') && (memcmp(&word[ix], p, len) == 0)) | |||
{ | |||
ordinal = 2; | |||
memset(&word[ix], ' ', len); | |||
break; | |||
} | |||
} | |||
} | |||
ph_append[0] = 0; | |||
ph_buf2[0] = 0; | |||
@@ -1200,7 +1278,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
} | |||
} | |||
if((word[0] == '0') && (prev_thousands == 0) && (word[1] != tr->langopts.decimal_sep)) | |||
if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep)) | |||
{ | |||
if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7])) | |||
{ | |||
@@ -1278,7 +1356,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
Lookup(tr, "_.", ph_append); | |||
} | |||
LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands); | |||
LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal); | |||
if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200)) | |||
sprintf(ph_out,"%s%s%s",ph_append,ph_buf2,ph_buf); // say "thousands" before its number | |||
else | |||
@@ -1296,7 +1374,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
if(decimal_count > 1) | |||
{ | |||
max_decimal_count = 2; | |||
switch(tr->langopts.numbers & 0xe000) | |||
switch(decimal_mode = (tr->langopts.numbers & 0xe000)) | |||
{ | |||
case 0x8000: | |||
max_decimal_count = 5; | |||
@@ -1318,18 +1396,21 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
break; | |||
case 0x2000: | |||
case 0xa000: | |||
// Italian decimal fractions | |||
if((decimal_count < 4) || ((decimal_count==4) && (word[n_digits] != '0'))) | |||
if(decimal_count <= 4) | |||
{ | |||
LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0); | |||
strcat(ph_out,buf1); | |||
if(word[n_digits]=='0') | |||
LookupNum3(tr, atoi(&word[n_digits]), ph_buf, 0,0,0); | |||
if((word[n_digits]=='0') || (decimal_mode == 0xa000)) | |||
{ | |||
// decimal part has leading zeros, so add a "hundredths" or "thousandths" suffix | |||
sprintf(string,"_0Z%d",decimal_count); | |||
Lookup(tr, string, buf1); | |||
strcat(ph_out,buf1); | |||
if(Lookup(tr, string, buf1) == 0) | |||
break; // revert to speaking single digits | |||
strcat(ph_buf,buf1); | |||
} | |||
strcat(ph_out,ph_buf); | |||
n_digits += decimal_count; | |||
} | |||
break; |
@@ -628,7 +628,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
phlist[ix].type = ph->type; | |||
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module | |||
phlist[ix].synthflags = plist2->synthflags | switched_language; | |||
phlist[ix].tone = plist2->stress & 0xf; | |||
phlist[ix].stresslevel = plist2->stress & 0xf; | |||
phlist[ix].tone_ph = plist2->tone_number; | |||
phlist[ix].sourceix = 0; | |||
@@ -136,11 +136,11 @@ void ProsodyDisplay::SelectPh(int index) | |||
if((p == NULL) || (p->ph == NULL)) return; | |||
emphasized = ""; | |||
if(p->tone & 8) | |||
if(p->stresslevel & 8) | |||
emphasized = "*"; | |||
sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d [env=%d] Flags %.2x ", | |||
emphasized,p->tone&0x7,p->amp,p->length,p->pitch1,p->pitch2,p->env,p->ph->phflags); | |||
emphasized,p->stresslevel&0x7,p->amp,p->length,p->pitch1,p->pitch2,p->env,p->ph->phflags); | |||
wxLogStatus(wxString(buf,wxConvLocal)); | |||
} | |||
@@ -862,8 +862,10 @@ static int AnnouncePunctuation(Translator *tr, int c1, int c2, char *buf, int bu | |||
if(c1 == '-') | |||
return(CLAUSE_NONE); // no pause | |||
if(bufix > 0) | |||
return(CLAUSE_SHORTCOMMA); | |||
if((strchr_w(punct_close,c1) != NULL) && !iswalnum(c2)) | |||
return(CLAUSE_COLON); | |||
return(CLAUSE_SHORTFALL+4); | |||
if(iswspace(c2) && strchr_w(punct_stop,c1)!=NULL) | |||
return(punct_attributes[lookupwchar(punct_chars,c1)]); | |||
@@ -2029,7 +2031,7 @@ f_input = f_in; // for GetC etc | |||
} | |||
} | |||
else | |||
if((c1 == '<') && (ssml_ignore_l_angle != '<')) | |||
if((c1 == '<') && (ssml_ignore_l_angle != '<') && ((c2 == '/') || iswalpha(c2))) | |||
{ | |||
// SSML Tag | |||
n_xml_buf = 0; | |||
@@ -2300,10 +2302,10 @@ if(option_ssml) parag=1; | |||
if((nl_count==0) && (c1 == '.')) | |||
{ | |||
if(iswdigit(cprev) && (tr->langopts.numbers & 0x10000)) | |||
if(iswdigit(cprev) && (tr->langopts.numbers & 0x10000) && islower(c2)) | |||
{ | |||
// dot after a number indicates an ordinal number | |||
c2 = ' '; | |||
c2 = '.'; | |||
continue; | |||
} | |||
if(iswlower(c2)) |
@@ -298,8 +298,8 @@ void CalcLengths(Translator *tr) | |||
{ | |||
prev = &phoneme_list[ix-1]; | |||
p = &phoneme_list[ix]; | |||
stress = p->tone & 0x7; | |||
emphasized = p->tone & 0x8; | |||
stress = p->stresslevel & 0x7; | |||
emphasized = p->stresslevel & 0x8; | |||
next = &phoneme_list[ix+1]; | |||
@@ -676,6 +676,7 @@ int main (int argc, char **argv) | |||
break; | |||
case 0x104: // --voices | |||
init_path(argv[0],data_path); | |||
DisplayVoices(stdout,optarg2); | |||
exit(0); | |||
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.40 22.Dec.08"; | |||
const char *version_string = "1.40.07 13.Jan.09"; | |||
const int version_phdata = 0x014000; | |||
int option_device_number = -1; | |||
@@ -46,7 +46,7 @@ int current_phoneme_table; | |||
PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | |||
unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited | |||
unsigned int *phoneme_index=NULL; | |||
static unsigned int *phoneme_index=NULL; | |||
char *spects_data=NULL; | |||
unsigned char *wavefile_data=NULL; | |||
static unsigned char *phoneme_tab_data = NULL; |
@@ -1394,7 +1394,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
case phVOWEL: | |||
ph = p->ph; | |||
stress = p->tone & 0xf; | |||
stress = p->stresslevel & 0xf; | |||
// vowel transition from the preceding phoneme | |||
vowel_transition0 = vowel_transition[0]; |
@@ -183,7 +183,7 @@ typedef struct { | |||
typedef struct { | |||
PHONEME_TAB *ph; | |||
unsigned char env; // pitch envelope number | |||
unsigned char tone; | |||
unsigned char stresslevel; | |||
unsigned char type; | |||
unsigned char prepause; | |||
unsigned char amp; |
@@ -263,6 +263,7 @@ 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; | |||
@@ -344,6 +345,7 @@ 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; | |||
@@ -554,7 +556,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | |||
tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word | |||
tr->langopts.numbers = 0x1009 + NUM_ROMAN; | |||
tr->langopts.numbers = 0x1009 + 0xa000 + NUM_ROMAN + 0x10000; | |||
SetLetterVowel(tr,'y'); | |||
tr->langopts.spelling_stress = 1; | |||
SetLengthMods(tr,3); // all equal | |||
@@ -1038,6 +1040,7 @@ SetLengthMods(tr,3); // all equal | |||
break; | |||
default: | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
break; | |||
} | |||
@@ -74,6 +74,7 @@ static int word_emphasis = 0; // set if emphasis level 3 or 4 | |||
static int prev_clause_pause=0; | |||
static int max_clause_pause = 0; | |||
int pre_pause; | |||
// these were previously in translator class | |||
@@ -641,6 +642,7 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) | |||
found = LookupDictList(tr, &word1, phonemes, dictionary_flags, FLAG_ALLOW_TEXTMODE, wtab); // the original word | |||
if(dictionary_flags[0] & FLAG_TEXTMODE) | |||
{ | |||
first_char = word1[0]; | |||
stress_bits = dictionary_flags[0] & 0x7f; | |||
found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement | |||
if(dictionary_flags2[0]!=0) | |||
@@ -1172,7 +1174,7 @@ strcpy(phonemes2,phonemes); | |||
if(dictionary_flags[1] & FLAG_NOUNF) | |||
{ | |||
/* not expecting a verb next */ | |||
tr->expect_noun = 3; | |||
tr->expect_noun = 2; | |||
tr->expect_verb = 0; | |||
tr->expect_verb_s = 0; | |||
tr->expect_past = 0; | |||
@@ -1942,7 +1944,6 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t | |||
int next_in; | |||
int char_inserted=0; | |||
int clause_pause; | |||
int pre_pause=0; | |||
int pre_pause_add=0; | |||
int word_mark = 0; | |||
int all_upper_case=FLAG_ALL_UPPER; | |||
@@ -1972,13 +1973,13 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t | |||
int tone; | |||
int tone2; | |||
p_textinput = (char *)vp_input; | |||
p_wchar_input = (wchar_t *)vp_input; | |||
embedded_ix = 0; | |||
embedded_read = 0; | |||
option_phoneme_input &= ~2; // clear bit 1 (temporary indication) | |||
pre_pause = 0; | |||
if((clause_start_char = count_characters) < 0) | |||
clause_start_char = 0; | |||
@@ -2409,12 +2410,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
else | |||
#ifdef deleted | |||
// Brackets are now recognised in TranslateRules() | |||
if(IsBracket(c)) | |||
{ | |||
pre_pause_add = 4; | |||
c = ' '; | |||
} | |||
else | |||
#endif | |||
if(lookupwchar(breaks,c) != 0) | |||
{ | |||
c = ' '; // various characters to treat as space | |||
@@ -2636,10 +2640,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
} | |||
} | |||
pn[0] = ' '; | |||
pn[1] = 0; | |||
word = pw; | |||
// include the next few characters, in case there are an ordinal indicator | |||
pn[0] = ' '; | |||
memcpy(pn+1, pw, 5); | |||
pn[5] = 0; | |||
for(pw = &number_buf[1]; pw < pn;) | |||
{ | |||
TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 ); | |||
@@ -2650,8 +2657,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
} | |||
else | |||
{ | |||
pre_pause = 0; | |||
dict_flags = TranslateWord2(tr, word, &words[ix], words[ix].pre_pause, words[ix+1].pre_pause); | |||
if(pre_pause > words[ix+1].pre_pause) | |||
{ | |||
words[ix+1].pre_pause = pre_pause; | |||
pre_pause = 0; | |||
} | |||
if(dict_flags & FLAG_SPELLWORD) | |||
{ | |||
// redo the word, speaking single letters |
@@ -175,7 +175,8 @@ | |||
#define CLAUSE_VOICE 0 + 0x24000 | |||
#define CLAUSE_PERIOD 35 + 0x80000 | |||
#define CLAUSE_COMMA 20 + 0x41000 | |||
#define CLAUSE_SHORTCOMMA 5 + 0x41000 | |||
#define CLAUSE_SHORTCOMMA 4 + 0x41000 | |||
#define CLAUSE_SHORTFALL 4 + 0x40000 | |||
#define CLAUSE_QUESTION 35 + 0x82000 | |||
#define CLAUSE_EXCLAMATION 40 + 0x83000 | |||
#define CLAUSE_COLON 30 + 0x40000 | |||
@@ -363,6 +364,7 @@ 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; | |||
@@ -496,6 +498,7 @@ extern int end_character_position; | |||
extern int clause_start_char; | |||
extern int clause_start_word; | |||
extern char *namedata; | |||
extern int pre_pause; | |||