*_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; | |||