From 0d3e23ef39741ae48b721bebf3141235ceb38c87 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 18 Jan 2009 11:37:10 +0000 Subject: [PATCH] [1.40.07] *_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-fd96e6ae7743 --- dictsource/af_list | 97 ++++++- dictsource/af_rules | 152 ++++++----- dictsource/de_list | 11 +- dictsource/dict_phonemes | 83 +++++- dictsource/en_list | 31 ++- dictsource/en_rules | 19 +- dictsource/fr_list | 10 +- dictsource/fr_rules | 7 +- dictsource/hu_list | 35 ++- dictsource/hu_rules | 7 +- dictsource/lv_list | 67 ++++- dictsource/lv_rules | 561 ++++++++++++++++++++++++++++++--------- dictsource/zh_rules | 8 + phsource/compile_report | 230 +++++++++++++++- phsource/n/n_ | Bin 952 -> 952 bytes phsource/ph_hungarian | 3 +- phsource/ph_zh | 12 +- phsource/phonemes | 20 ++ phsource/voc/vj | Bin 5806 -> 5805 bytes phsource/vowel/ii_final | Bin 7280 -> 7280 bytes phsource/vwl_en_us/3_us2 | Bin 1671 -> 1671 bytes src/compiledata.cpp | 8 +- src/compiledict.cpp | 23 +- src/dictionary.cpp | 10 +- src/espeak.cpp | 2 +- src/extras.cpp | 2 - src/intonation.cpp | 22 +- src/numbers.cpp | 205 +++++++++----- src/phonemelist.cpp | 2 +- src/prosodydisplay.cpp | 4 +- src/readclause.cpp | 10 +- src/setlengths.cpp | 4 +- src/speak.cpp | 1 + src/synthdata.cpp | 4 +- src/synthesize.cpp | 2 +- src/synthesize.h | 2 +- src/tr_languages.cpp | 5 +- src/translate.cpp | 24 +- src/translate.h | 5 +- 39 files changed, 1331 insertions(+), 357 deletions(-) diff --git a/dictsource/af_list b/dictsource/af_list index 72286fca..9ba45a08 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -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 diff --git a/dictsource/af_rules b/dictsource/af_rules index dec639a0..0fe6ebfd 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // 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 diff --git a/dictsource/de_list b/dictsource/de_list index 87f86c4b..b7ffde3a 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -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: diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 40e0bb35..62fcbc0a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -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 diff --git a/dictsource/en_list b/dictsource/en_list index f4e2d2d4..e78a92e2 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -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 diff --git a/dictsource/en_rules b/dictsource/en_rules index 3a9129c5..7483dff3 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -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 diff --git a/dictsource/fr_list b/dictsource/fr_list index 76f9a35b..7fa66534 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2008-12-09 Michel Such +// Updated 2009-01-14 Michel Such // // * 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 diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 83162485..18bf8371 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2008-12-09 Michel Such +// Updated: 2009-01-14 Michel Such // // 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 î diff --git a/dictsource/hu_list b/dictsource/hu_list index 1427a714..e08bbd6f 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -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 diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 064ff381..633d6fb0 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -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: diff --git a/dictsource/lv_list b/dictsource/lv_list index 6ae55ac6..ebbad2f7 100755 --- a/dictsource/lv_list +++ b/dictsource/lv_list @@ -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 diff --git a/dictsource/lv_rules b/dictsource/lv_rules index f2f0c1ac..71384637 100755 --- a/dictsource/lv_rules +++ b/dictsource/lv_rules @@ -8,12 +8,14 @@ .L03 iem am os s a u ā i // suffixes for masculine words finishing with s .L04 ām ās as ai u ā a // suffixes for feminine words finishing with a .L05 iem is im os i ī // suffixes for masculine words finishing with is (wthout consonant alteration) -.L06 a ā e ē // wovel inflections for international words +.L06 a ā .L07 ēm ēs es ei e i ē u // suffixes for feminine words finishing with e -.L08 amies amas amās ama ami ams // +.L08 amies amas amās ama ami ams .L09 s š -.L10 t d +.L10 t d j // .L11 iem os i u // suffixes for plural masculine words finishing with i +.L12 iem am os s ā // suffixes for masculine words finishing with s (except a, i, u) +.L13 e ē // quiet vowels not only a but aeiou @@ -76,8 +78,8 @@ .group j j j - _) jā ja: //prefix - _) jāno ja:nuo //prefix + _) jā ja: // prefix + _) jāno ja:nuo // prefix .group k k k @@ -96,6 +98,7 @@ .group m m m mm mm: + _) maz maz .group n n n @@ -107,9 +110,11 @@ ņ n^ .group o - o uo - o (T+++ o // word has $alt in lv_list - o (_ o: // o at the end of word +// default policy rules + o uo // words with Latvian roots are more common + o (T++++ o // if word has $alt in lv_list, speak with o + k) o (_ uo // kuo at the end of word + o (_ o: // o: at the end of word o (L01 o // usually o before international consonants o (L02 uo // usually uo before soft (Latvian) consonants @@ -119,12 +124,24 @@ ņ) o uo ž) o uo + f) o o // usually o after international consonants + h) o o + w) o o + x) o o + + + // standard prefixes + _n) o (+ uo + + _kil) o o // international prefixes _mikr) o (+ o // otherwise conflicts with ..kroko(t/d).. _micr) o o _nan) o o _pik) o o + _hekt) o o _m) ono ono + _stere) o o: // suffixes āt) o (_ uo @@ -136,21 +153,29 @@ ēl) o (_ uo ēt) o (_ uo g) o (_ uo + ģ) o (_ uo j) o (_ uo l) o (_ uo m) o (_ uo n) o (_ uo uš) o (_ uo - oš) o (_ uo + o (s_ uo + oš) o (_ uo + o) (šs_ uo o (ties_+ uo o (t_++ uo - oto (_ uotuo + oto (_ uotuo + p) o (_ uo r) o (_ uo + s) o (_ uo š) o (_ uo + v) o (_ uo t) o (_ uo + z) o (_ uo - // exception list by root parts of the words -// a + +// exception list by root parts of the words +//a abs) o (l o ab) o (n o ab) o (r o @@ -164,20 +189,23 @@ afr) o o ag) o (n o: ag) o (nā o - agl) o (m o - agl) o (n uo + agl) o (nL04_ uo // ..aglona agn) o o agr) o o - aikid) o o ak) o (r o akr) o o al) o (g o: + aleg) o (r o: alk) o o _al) o (t o alv) o uo + am) o (n o + amin) o o am) o (r o - ann) o o + anekd) o o: + an) o (d o: an) o (l o + an) o (m o an) o (n o an) o (t o ant) o (l o @@ -188,60 +216,89 @@ arn) o o audi) o o: aug) o (n uo - _aut) omoto (_ omoto - aut) o o + _aut) o o + aut) o (m o + aut) o (ri o + aut) ostop o:stop antip) o o ant) o (nL03_ o: // Antons antr) opo opo + a) o (r o ap) o (l o apr) o (cL07_ uo // aproce - _ask) o (ldL03_ o // Askolds + _ask) o (ldL03_ o // Askolds + ap) o (k o + ap) o (strof o astr) o (n o astr) ono ono: at) o (m o: atm) o (s o + av) o uo avi) o o: āb) o (l uo + _ād) o (lfL03 o // Ādolfs //b + bar) o (kl uo + bar) o (kļ uo + _bar) o (k o + _bar) o (m o + _bar) o (nA o + _bar) o (nL03_ o: // barons beg) o (ni o: bet) o o bi) o o bir) o o + biz) o (L10+ uo + blāv) o uo bl) o (k o bl) o (ķ o + bl) o (n o + _blont) o (s_ uo // blontos b) o (b o - _b) o (jL04_ o // boja + b) o (jL04_ o // ..boja b) o (mb o - b) o (lA_ uo + _b) o (la_ uo + _b) o (lām_ uo b) o (līt uo b) o (līj uo - b) o (līdL03_ o // bolīds + _b) o (līdL03_ o // bolīds b) o (līdL08_ uo // bolīd.. + b) o (līs uo // bolīs.. b) o (līš uo // bolīš.. + b) o (loš uo // bološ.. + _b) o (lu uo b) o (l o: b) o (ļš o // from Russian + b) o (ks o + b) o (nē o + b) o (rs o: b) o (rak o b) o (rat o - _b) o (zL07_+ uo // boze + b) o (rt o + b) o (tān o + _b) o (tL07_ o // bote + _b) o (zL07_+ uo // boze + _b) o (za_ uo // boza brav) o o brīv) o uo - _br) o (kātL03_ o // brokāts + _br) o (kātL03_ o // brokāts br) o (m o br) o (š o - br) o (nz o - brun) o (_ o - brut) o o + br) o (n o //c cēl) o uo ci) o (n o + cikl) o o: ciet) o (k uo - čell) o o + cit) o o + c) o (ll o //d daig) o (n uo dail) o (n uo + dalt) o (n o: _dat) o (s_ uo dat) o o dil) o (n uo @@ -250,29 +307,32 @@ dem) o o den) o o dek) o o - dep) o o - ding) o o + dep) o o //depo.. (zīts/portē/nē/utt.) + desp) o o disl) o o disp) o o d) o (c o + d) o (dek o _d) o (gL03_ o // dogs d) o (gm o + _d) o (kL03_ o // doks d) o (ku o d) o (min o - domin) o o d) o (mnL04_ o // domna d) o (nk o d) o (nn o - d) ono ono: + d) ono ono: + d) o (p o + d) o (ri o d) o (tāc o d) o (tē o d) ostoj ostoj // from Russian - _d) o (zL04_++ o: // doza - _d) o (zL07_++ uo // doze + _d) o (nL04_++ uo // dona + _d) o (zL04_++ o: // doza + d) o (zL07_++ uo // ..doze d) o (z o - dr) o (m o: - dž) o (_ o - _dž) o o + dr) o (mL03 o: // ..droms + dž) o (ul o //e e) o o @@ -281,33 +341,40 @@ eir) o o: _ek) o o: ek) ono ono: + eks) o o + ekvin) o o ekspl) o o elektr) o o: - embarg) o o + em) o (ci o: energ) o o: ent) o o enz) o o epiz) o (d o: + ep) o (l o ep) o (sL03_ o // ..eposs epr) o o ept) o (@ o - esperant)o o + er) o (g o + etn) o o ev) o (l o + _ez) o (t o //f - fact) o o + fag) o o + _fant) o (mL03_ o: // fantoms + fav) o o fen) o o fj) o o - fiask) o o fil) o o fil) ozo ozo: fil) oso oso: fl) o o flu) o (r o: + _f) o (lijL04_ o: // folija folkl) o o: - f) o o - f) o (n o: // ?? ..ons alredy exists + f) o (ni o: + f) o (no o f) o (to o fot) o o: fot) o (gr o @@ -316,31 +383,54 @@ furg) o (n o: //g + _gal) o (pL03 o gen) o o get) o o gl) o (b o + gl) o (m o + _gl) o (rijL04_ o: // Glorija + gl) o (ri o gn) o o - g) o (be o + g) o (be o + g) o (g o: + g) o (ģ o: g) o (k o gond) o (l o: g) o (n o g) o (nij o: + _g) o (ra_ uo // gora + g) o (rij o: + g) o (ril o + g) o (ro uo + _g) o (ros_+ uo gon) o o + g) o (tf o + g) o (tik o: + g) o (tis o: + _gr) o (znij o // from Russian gr) o (z+ uo ģe) o o //h ha) o o - hall) o o - h) o o + harm) o (nē o + harm) o (nizē o + harm) o (n o: + hed) o (n o: + herc) o (g o: hidr) o o - hip) o o + hip) o o + hipn) o (zL07_ o: // ..hipnoze + hipn) o o hist) o o hl) o (ro o hl) o (r o: + hlor) o o hol) o o - h) o (m o + h) omo omo + hrest) o o hr) o (m o + hr) o (no o hr) o (n o: hum) o o @@ -350,100 +440,157 @@ _ig) o (rL03_ o: // Igors il) o (g o: ilg) o (nL05_ uo // Ilgonis + im) o (n o impr) o o _ind) o o - indig) o (_ o inkas) o o ikr) o (n o: interp) o o intr) o o i) o o + i) o (dL07_ o: // ..iode + i) o (nL07_ o: // ..ione i) o (g o is) o (n o itr) o o itr) o (n o: - iv) o o - iz) o (L09_ uo + iv) o o iz) o (l o _iz) o o //j _j) o (_ uo j) o (de o + j) odo odo j) o (g o - j) o (nL05_ uo // jonis + _j) o (gL03_ o: // jogs + j) o (nL05_ uo // jonis j) o (ni o + _j) o (tL04_ o // jota + _j) o (za_ uo // joza //k + kain) o o + kab) o (t o + kal) o (r o: kant) o uo karb) o o kart) o o + _kart) o (nL03_ o: // kartons _kastr) o (lL05_ uo // kastrolis - _kastr) o (_ o // Kastro - kazin) o (_ o: // kazino + kateg) o (r o: kin) o o: - _kl) on on + kinemat)o o + _kl) on on + kl) o (zet o k) ob ob + k) o (al o _k) o (dL07_ uo // kode k) o (dē o // ..kodē.. k) o (dek o + k) o (dif o + _k) o (jL04 o // koja + k) o (e o + k) odo (l uoduo + k) o (dL12_ o: // ..kods k) o (gn o + k) okako (l okako: k) o (kog uo k) o (ko o + kok) o (s o + k) o (ktēl uo k) o (ķ o + k) o (lab o + k) o (lā o k) o (le o + k) o (lē o k) o (lh o k) o (li o + k) o (lī o k) o (lo o kol) o o k) o (lp o - _k) o (mL04_ o: // koma + k) o (mL04_+ o: // koma k) ompo ompo k) omo omo k) om om + k) o (nL05_ uo + k) o (ņL05_ uo k) ono ono k) on on + _kont) o (s_ uo kons) o o kontr) o o: konv) o o + _k) o (pL04_ uo // kopa k) o (pulā o k) o (pulē o k) opo uopuo k) o (pen o // Kopenhāgena - _k) o (pējat_ o - k) o (pēt o // ..kopēt.. - k) o (pēš o // ..kopēš.. - k) o (pēt o - k) o (pij o + k) o (pējL03_ uo // ..kopējs + k) o (pējL04_ uo // ..kopēja + k) o (pj uo // ..kopj.. + k) o (pij o // ..kopij.. + k) o (pē_ o // ..kopē + k) o (pēC o // ..kopēt../..kopēš.. + k) orpo orpo k) o (ra o - _k) o (rānL03_ o // korāns + _k) o (rā o + _k) o (rL07_ uo // kore + k) o (rL05_+ uo // ..koris + _k) o (ra_ uo // kora + _k) o (rdir uo + k) oro oR2o + k) o (rp o + _k) o (rdz uo + k) o (rAf o + k) o (rej o + k) o (rek o k) o (rel o k) o (res o k) o (rum o k) o (run o k) o (rup o + k) o (rt o + kort) o (s_ uo k) o (rv o + k) o (sin o k) o (sm o - k) o (tē o // ..kotē.. + k) o (stīm o + k) o (tan o + k) o (te o + k) o (tē o k) o (tl o - kr) o (g - kr) o (ko uo + kript) o o + kr) o (g uo + kr) okod okod + kr) o (ko uo // ..kroko.. kr) o (pļo uo kr) o (nš o kr) o (s o + _kum) o (dL07_ uo // kumode + kur) o (rL07_ o: // ..kurore kūk) o uo // kūko - _k) o (v uo + _k) o (vārnL05_ uo // kovārnis k) o (v o kv) o o //l + _laim) o (nL05_ uo // Laimonis + lak) o (n o: + leik) o o + lin) o (tip o lit) o o līg) o uo // līgo lj) o o: l) o (ģ o: + l) o (ģiz+ o + l) o (jL06l o + _l) o (litL04_ o // Lolita l) o (kal o l) okomo okomo - l) olo uoluo + _l) olo (L09 uoluo + l) olo (L10 uoluo l) omonoso omon'oso // from Russian _l) o (n o l) o (n o: @@ -453,78 +600,115 @@ l) o (g+ o: l) o (ģ+ o: l) ogo ogo + _l) o (nL07_ uo // lone l) o (rn o - l) o (sj o + l) o (sj o + l) o (tL07_ o // ..lote + _l) o (tiņL04 o // lotiņa l) oto (_ oto - lumbag) o o: + l) o (zL07_ uo // ..loze + _l) o (žL04_ o: // loža ļaut) o uo //m - maestr) o o maj) o o mag) o (n uo maig) o (n uo makr) o o: + malk) o (L10 uo mand) o (l o marg) o (n uo + marat) o o: + mar) o o maž) o o + mel) o (dr o + mel) o (m o met) o (d o metr) o o + mec) o o + mez) o o m) o (b o m) o (car o: // Mocarts + m) o (dL04_ o: // ..moda + _m) o (dL07_ uo // mode + m) o (dal o + m) o (dāl o m) o (de o + m) o (dif o m) o (du o m) o (ld o m) o (le o m) o (li o m) o (lu o + m) o (ment o + m) o (narh o m) ongo oNgo: m) ongolo oNgolo m) o (nit o + _m) o (n o + _m) o (nikL04_ o: // Monika m) o (no o mon) o o monot) o (n o: m) o (nt o m) o (nst o + m) o (p o m) o (ra o m) o (rā o m) o (rf o m) o (rs o m) o (še o m) oto oto: - _m) oto (_ oto: // moto m) o (ti o m) o (tī o mot) o (dro o + _m) o (zu o: // Mozus //n + nagl) o uo nark) o o + nd) o (mL03_ o: + _nek) o (_ uo neir) o o nerv) o o net) o o niek) o uo nik) o o - _n) o (+ uo - n) o (kd o + _n) o (asL03_ o // Noass + n) o (dL07_ o: // ..node + n) o (kL10 o + n) o (lik uo n) o (mL04_ uo // ..noma - n) o (mina o - n) o (minā o + n) o (mL07_ o: // ..nome + n) o (mijL04_ o: // ..nomija + n) o (minL06 o + n) o (minL13 o + n) o (men o n) o (mL03_ o: // ..noms n) o (rb o + n) o (rd o n) o (rm o _n) o (vemb o // novembris n) ovgorod ovgorod // from Russian n) o (vo o n) o (vL04_ o // nova + n) o (vat o + n) o (vāci o n) o (velL07_ o // novele n) o (rv o - n) o (tari o + n) o (tar o + n) o (tār o + _n) o (tL04_ o // nota //o + o (L06 o o (bam o + _) o (blig o o (bje o _) o (bs o _) o (dek o + o (dere uo + o (derē uo o (dia o _) odo odo _) odo (s_ uoduo @@ -534,29 +718,41 @@ o (ke o okean) o o okok (L03_ okok // ..okoks + _) o (ksanL04_ o // Oksana o (ksi o o (kto o o (kup o o (kul o o (ksol o + o (kt o okt) o o: - oks) o (l o: - _) o (ksf o + _oks) o (lL03_ o: // oksols + _) o (ksf o // Oksforda okstr) o o - _) o (lL04_ uo // ola + _) o (lL04_+ uo // ola o (lig o _) o (lafL03_ o // Olafs + o (leo o + _) o (lgL04_ o // Olga + _) o (ļegL03_ o // Oļegs o (līv o o (limp o o (log o o (loģ o - o (lL03_+ o: // ..ols + _) o (ndatr o + ol) o (nij o: + ol) o (nist o: + o (lL03_+ o: // ..ols o (mār o + omb) o o o (mnib o - omot (o omot + omot (o omot + _) o (ms o: + _) o (mi o: o (ng o o (nko o - o (nL03_+ o: // ..ons + o (pL03_+ o: // ..ops + o (nL03_+ o: // ..ons o (no o on) o o o (nto o @@ -564,18 +760,23 @@ oo oo: _) o (perL04_ o: // opera _) o (per o + o (perat o op) o o + o (pc o o (po o o (ptik o o (ptiķ o o (ptim o o (ptis o - o (pto o + _) opto opto o (rāk o orat) o o: - o (ran o + o (ran+ o o (rat o + o (rāt o + _) o (rL05_ uo // ore o (rd o + o (rhid o o (rig o o (riģ o o (rg o @@ -584,54 +785,78 @@ o (rķ o o (rnit o o (rto o - o (rL03_++ o: //..ors + o (rL03_+ o: //..ors ort) o o ortod) o (k o + o (scil o o (smo o - opt) o o + _) o (skarL03_ o // Oskars osm) o o: osm) o (g o o (st_ uo - osto (L10 uostuo + osto (L10 uostuo + ot) o (pL03_ o: // ..otops + ost) o (pL03_ o // ..ostops + o (šņ uo + _) oto oto o (u o + _) o (vāc o o (zon o o (zL07_+ o: // ..oze ozo (lL03_ uozuo // ..ozols + o (zL03_ o: // ..ozs //p par) o (d o - pann) o o + paran) o o pant) o o + _pask) o (pL03_ uo // paskops + patri) o o: pērk) o (n uo pērk) o (ņ uo - pers) o (n o: - pianīn) o o + pers) o (n o: _pil) o (t_ uo // pilot - pil) o o + pil) o (t o pir) o o pl) o (m o pl) o (vL03_ o // plovs + plut) o (k o pneim) o o: + p) o (de o p) o (e o p) o (ē o p) o (la o + polar) o o p) o (lā o p) o (lem o p) o (li o + _p) o (lijL04_ uo // Polija + _p) o (lL05_ uo // polis + _p) o (lie uo + _p) o (lied o + _p) o (ļ uo p) o (lī o + p) o (lL07_ o: // ..pole p) o (lL03_ o: // ..pols p) olo (_ o:lo: // ..polo p) o (lo o p) o (lst o + p) o (mer o p) o (mp o + p) o (nc o + _p) o (nijL03_ o // ponijs + pont) o (n o: pomp) o o: prop) o o _p) o (pL07_ uo // Pope p) o (p o p) o (ra uo + p) o (rc o p) o (ro o + p) orno oR2no p) o (rt o por) o o + p) o (stam o p) o (stem o p) o (sten o p) o (ster o @@ -650,6 +875,10 @@ pr) o (gr o _pr) o (jām_ uo // projām pr) o (j o + pr) o (sp o + pr) o (viz o + pr) o (vīz o + pr) o (ž o pr) o (k o pr) o (le o _pr) o (m_ uo // prom @@ -660,6 +889,7 @@ pr) o (st o pr) o (te o pr) o (to o + prot) o o prot) oko oko: pr) o (vin o pr) ovo ovo @@ -674,17 +904,23 @@ ras) o (l o _ram) o (nL04_ o: // Ramona raz) o o + retr) o o + rd) o (mL03_ o: rib) oso oso: + rib) o (nuk o riev) o uo ring) o o r) o (bež uo - _r) obo (t_ uobuo // ..robot.. + _r) o (bert o + _r) obo (t_ uobuo // ..robot.. r) obo (t obo + r) odo (den odo + _r) o (derikL03_ o // Roderiks _r) o (kādL07_ o // rokāde - r) okoko (_ okoko - r) okop oko:p + r) oko (pe oko: + r) o (ktu uo r) o (l o - _r) o (mL04_ uo // Roma + _r) o (mL04_ uo // Roma r) o (ma o r) o (mā o r) o (mb o @@ -694,22 +930,36 @@ r) o (ter o r) o (tē o r) o (zL07_ uo // ..roze + _r) o (zīnL07_ o // rozīne + _r) o (zetL07_ o // rozete //s sab) o (t o - sark) o o - samb) o (_ o + sark) o o + scen) o o + seism) o o + sērf) o uo si) o o + sinhr) o o + sink) o o: sīp) ol (L03_ uol // sīpols - sk) o (l uo - sk) olo (L10 uoluo // ..skolot../..skolod.. - _sk) o (pL03_ uop // skops - sk) o (pL03_ o:p // ..skops + skler) o o: + sk) o (lL04_ uo // ..skola + sk) o (l uo + sk) olo uoluo // ..skolo.. + skol) o (L09 uo + skol) o (L10 uo + _sk) o (pL03_ uo // skops + sk) o (pL03_ o: // ..skops sk) o (pijL04_ o: // ..skopija + sk) o (pis o: + slav) o o sl) o (gL03_ uo // slogs sl) o (go uo // slogot slog) o uo sl) o (v o + _sm) o (gL03_ o: // smogs + sm) o (ļ o // from Russian sm) o (k uo s) o (ci o s) o (ko o @@ -718,20 +968,29 @@ s) o (lar o s) o (lār o s) o (līL10 uo // ..solīt../..solīd.. - s) o (līd o + s) o (līdL03_ o // solīds + s) o (līdā o + s) o (lid o s) o (lf o s) o (lo o: - sol) o o + s) o (loģ o s) o (lL03_ uo // sols s) o (lL05_ uo // solis - s) olo (šs_ uoluo - s) o (lot_ uo + sol) o o: + s) o (loš uo + sol) o (s_ uo + sol) o (š uo + s) o (lot uo + sol) o (t uo sol) o (t_ uo s) o (lst o s) o (lt o + s) o (lv o s) o (nā o s) o (no o son) o o + s) o (pr o + s) o (rL07_++ o: // ..sore s) o (rL03_+ o: // ..sors s) o (r o s) o (v o @@ -739,95 +998,139 @@ spid) o o sp) o (n o sp) o (rt o + sport) o uo spr) og uog spr) ost uost + sten) o (L09 uo + sten) o (L10 uo + _sten) o o sten) o (g o - _ster) o (s_ uo - ster) o o + _ster) o (s_ uo // steros + ster) o o + st) o (kh o st) o (mat o + st) o (po uo _str) o (pL03_ uo // strops _st) o (rL07_ uo // store + svītr) o uo š) o (sej o - šalk) o uo // šalko + šalk) o uo // ..šalko.. šan) o uo + šl) o (gL03_ uo // (iekš)log + _šķ) o (rL05_ uo // šķore + _šņ) o (rL05_ uo // šņore š) o (k o - š) orto oR2tuo // šorto.. + šok) o o _š) o (rtL11 o // šorti + _š) o (ziem_ uo // šoziem //t tet) o (v o + _tēl) o (tu_ uo // tēlotu tikk) o (_ uo // tikko - _t) o uo + tip) o o + _t) o (+ uo + t) o (dL07_+ o: // ..tode t) o (ks o t) o (lL04_+ o: // ..tola + t) o (ler o t) omo omo - t) o (nak uo + o (nakt_ uo // šonakt/tonakt + t) o (mas o _t) o (nusL03_ o: // tonuss t) o (n o + t) o (nn o + t) o (nikL04_ o: // ..tonika + t) o (nisk o: t) o (nL05_ uo // ..tonis (uo) t) o (rn+ uo t) o (rņ+ uo + _t) o (nijL04_ o // Tonija t) o (niz o + _t) o (pb o // topbura + _t) o (pāzL03_ o // topāzs + _t) o (pinam o // topinambūrs + _t) o (pm o // topmasts + _t) opo (g opo + _t) opo (l opo + _t) opo (n opo + t) opo (t uopuo t) opo (š uopuo t) o (ra o t) o (rā o + _t) o (reiz_ uo // toreiz + _t) o (rud uo // toruden t) o (r o + _t) o (re o // toreadors + t) o (rL07_++ o: //..tore + _t) o (rijL03_ o: // torijs t) o (ro o - t) o (rpA o @t) o (r o: - _t) o (r o: + _t) o (rpAd o + _t) o (rtL07_ o // torte + t) o (tēm o trak) o uo - trim) o o tri) o o _tr) o (j o // Troja tr) o (p o: + tr) o (fL04_ o: // ..trofa + tr) o (m o _tr) op (L03_ uop // trops tr) o (t o + _t) o (ziem_ uo // toziem + turb) o o //u - ul) o (z o - un) o (_ o - _ulbr) ok (L04_ ok // Ulbroka + _ulbr) o (kL04_ o // Ulbroka + ut) o (pi o: //v - vag) o (nL03_ uo // vagons + vab) o (lL07_ uo // ..vabole + vag) o (n uo // vagon.. vann) o uo vask) o uo + vel) o o versm) o uo // versmo vide) o o: - _vīt) o (lL03_ uo // vītols + _vit) o (ldL03_ o // Vitolds + vīt) o (lL03_ uo // ..vītols vizm) o uo v) o (b o - v) o (lej o + v) o (lej o + v) o (ld o v) o (lf o v) o (lv o v) o (lu o + v) o (lt o v) o (ka o -//w - w) o o - -//x - x) o o - //z zaig) o uo zaim) o uo + zig) o (tL03_ o // ..zigots zil) o (n uo zil) o (ņ uo z) o (n o: z) o (nd o z) o (nAto o + z) o (rL07_++ o: //..zore + z) o (jL03_+ o //..zojs + z) o (rL03_+ o: //..zors žir) o o ž) o (ng o - z) o (rL03_+ o: //..zors + ž) o (kej o + + // exception by whole words + _k) o (pā_ uo + _sast) o (pam_ uo .group ō ō o: .group p - p p - piano pia:no + p p + _) pus pus + .group q q kv diff --git a/dictsource/zh_rules b/dictsource/zh_rules index c3b98f9b..b788f499 100644 --- a/dictsource/zh_rules +++ b/dictsource/zh_rules @@ -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 diff --git a/phsource/compile_report b/phsource/compile_report index 5e61b191..2d9d30e3 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -51 phoneme tables +58 phoneme tables new total base 103 103 base2 24 122 @@ -44,41 +44,58 @@ is 33 129 vi 41 140 zhy 40 136 - zh 65 153 + zh 66 154 sw 14 112 tr 18 127 ku 18 127 id 15 124 sq 35 127 hy 24 119 + rw 15 129 + ml 13 151 + kn 15 151 + bn 59 155 + ne 18 157 + mr 1 149 + om 25 125 Data file Used by b/b [b] base [b] fr [b] hi [b;] ro + [b] bn b/b_ [b] base [b] fr [b] hi + [b] bn b/b@ [b] base [b] hi + [b] bn b/b@2 [b] base [b] hi + [b] bn b/ba [b] base [b] hi + [b] bn b/be [b] base [b] hi + [b] bn b/bi [b] base [b] hi [b;] ro + [b] bn b/bo [b] base [b] hi + [b] bn b/bu [b] base [b] hi + [b] bn b/xb [b] base [b] fr [b] hi [bh] hi + [b] bn d/d [d] base [d[] base [d] base2 @@ -97,6 +114,9 @@ d/d [d] base [d] sw [d] id [d] sq + [d] bn + [d.] bn + [d`] om d/d_ [d] base [d[] base [d] base2 @@ -115,6 +135,9 @@ d/d_ [d] base [d] sw [d] id [d] sq + [d] bn + [d.] bn + [d`] om d/d_dnt [d] sr d/dr [*] base [d] base @@ -135,6 +158,8 @@ d/dr [*] base [d] sw [d] id [d] sq + [d] bn + [d.] bn d/tap [*;] ro d/tap1 [*] base d/tap2 [t#] en_us @@ -162,6 +187,9 @@ d/xd [d] base [d] sq [dz] sq [dz] hy + [d] bn + [d.] bn +d/xd2 [d`] om d/xd3 [dh] hi d/xd_pzd [d;] pl [d;] ru @@ -178,6 +206,7 @@ dzh/dzh [dZ] base [dZ;] sr [dZ;] ru [dZ;] sq + [J] bn dzh/dzh_ [dZ] base [dZ;] base [dz;] base @@ -187,12 +216,15 @@ dzh/dzh_ [dZ] base [dZ;] mk [dZ;] ru [dZ;] sq + [J] bn dzh/dzh2 [dZ] hr [dZ;] hr dzh/dz_pzd [J] base [J] tr [J] ku + [J2] bn dzh/dz_pzd_ [J] base + [J2] bn dzh/xdzh [dZ] base [dZ;] base [dz;] base @@ -202,9 +234,12 @@ dzh/xdzh [dZ] base [dZ;] mk [dZ;] ru [dZ;] sq + [J] bn dzh/xdz_pzd [J] base [Jh] hi + [J2] bn envelope/i_risefall [11] zh +envelope/i_risefall2 [+2] rw envelope/p_214 [5] vi [214] zh envelope/p_512 [6] vi @@ -217,6 +252,7 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh + [+] rw envelope/p_fallrise [4] vi envelope/p_level [1] vi [3] zhy @@ -234,16 +270,19 @@ g2/g_ [g-] base g2/xg [g-] base [g] hi [gh] hi + [g] bn g/g [g] base [g] cy [g] fr [g] hi [g] es + [g] bn g/g_ [g] base [g] cy [g] fr [g] hi [g] es + [g] bn g/xg [g] base [g] cy [g] fr @@ -253,35 +292,50 @@ h/h_ [h] base [H] hi [h] hi [] la + [H] bn + [h] bn h/h@ [h] base [h] fi [H] hi [h] hi [h] sr [] la + [H] bn + [h] bn + [th] bn h/ha [h] base [h] fi [H] hi [h] hi [] la + [H] bn + [h] bn h/he [h] base [h] fi [H] hi [h] hi [] la + [H] bn + [h] bn h/hi [h] base [h] fi [H] hi [h] hi [] la + [H] bn + [h] bn h/ho [h] base [H] hi [h] hi [] la + [H] bn + [h] bn h/hu [h] base [H] hi [h] hi [] la + [H] bn + [h] bn h/hu_fi [h] fi j2/_j2 [;] base j2/j2@ [(@)] base @@ -417,6 +471,7 @@ l/l_o [(o)] base [O2] fr [o2] fr l^/l_rfx [l.] hi + [l.] bn l/lu [(u)] base [u] fr [y] fr @@ -538,6 +593,7 @@ r3/r_o [(o)] base [O2] fr r3/r_ru [R4] ru r3/r_ru2 [R4] ru +r3/r_sr [r.] bn r3/r_trill [R2] base [R3] base [r] af @@ -587,6 +643,7 @@ r/r [r] base [r] de r/_r [r] base [r] en_sc + [r.] bn r/r_ [r] base [r] en_sc [r] de @@ -595,6 +652,7 @@ r/r_ [r] base [r] ru [r] ro [r] sw + [r.] bn r/r@ [(@)] base r/ra [(a)] base r/re [(e)] base @@ -612,6 +670,7 @@ r/rr [r/] base r/ru [(u)] base r/tr [r] base [r] en_sc + [r.] bn r/trr [r/] base [r/] af [r] de @@ -678,6 +737,7 @@ ufric/s_ [s] base [z;] ro [s2] is [z] sq + [s2] om ufric/s! [s] base [s2] fi [s] fr @@ -686,10 +746,12 @@ ufric/s! [s] base [s] es [s#] pt [s2] is + [s2] om ufric/s_continue [s2] fi [s2] hu [s2] lv [s2] is + [s2] om ufric/sh [S] base [S] fr [s#] pt_pt @@ -732,11 +794,13 @@ ufric/x_sr [h] sr ufric/xx [X] base [Q"] base ustop/c [c] base +ustop/c_ejc [c`] om ustop/k [k] base [k] en [k] fr [k] zhy [k] sw + [kh] bn ustop/k_ [k] base [k] base2 [k] en @@ -746,11 +810,13 @@ ustop/k_ [k] base [k] lv [k] sk [k] el - [kh] zh [k] sw [k] sq + [kh] bn ustop/k_asp [gh] hi [kh] hi + [kh] zh +ustop/k_ejc [k`] om ustop/ki [k] base [k] base2 [k] en @@ -768,6 +834,7 @@ ustop/ki [k] base [c] tr [J] ku [c] ku +ustop/ki_ejc [k`] om ustop/kl [k] base [k] base2 [k] en @@ -780,6 +847,7 @@ ustop/kl [k] base [k] el [k] zhy [k] sw + [kh] bn ustop/kr [k] base [k] base2 [k] en @@ -792,6 +860,7 @@ ustop/kr [k] base [k] el [k] zhy [k] sw + [kh] bn ustop/k_unasp [k] base [k] base2 [k] fi @@ -803,21 +872,25 @@ ustop/k_unasp [k] base [k] zhy [k] sq [k] hy + [k] bn ustop/k_unasp_ [k] zh ustop/null [?] base ustop/p [p] base [p] fr [p2] fr [p] zhy + [ph] bn ustop/p_ [p] base [p] fr [p2] fr [ph] hi - [ph] zh [p#] hy + [ph] bn ustop/p_asp [bh] hi [ph] hi + [ph] zh [p#] hy +ustop/p_ejc [p`] om ustop/percus10 [(X1] base ustop/pl [p] base [p] base2 @@ -833,6 +906,8 @@ ustop/pl [p] base [p] sq [p] hy [p#] hy + [p] bn + [ph] bn ustop/pr [p] base [p] base2 [p] fi @@ -844,6 +919,8 @@ ustop/pr [p] base [p;] ro [p] hy [p#] hy + [p] bn + [ph] bn ustop/p_unasp [p] base [p] base2 [p] fi @@ -857,6 +934,7 @@ ustop/p_unasp [p] base [p] zh [p] sq [p] hy + [p] bn ustop/p_unasp_ [p] base2 [p] fi [p] hi @@ -867,6 +945,7 @@ ustop/p_unasp_ [p] base2 [p;] ro [p] sq [p] hy + [p] bn ustop/q [q] base ustop/q_u [q] base ustop/t [t] base @@ -874,6 +953,7 @@ ustop/t [t] base [d.h] hi [t.h] hi [t] zhy + [t.h] bn ustop/t_ [t] base [t2] en [t] fr @@ -884,6 +964,8 @@ ustop/t_ [t] base [t] sk [t] el [th] zh + [t.] bn + [t.h] bn ustop/t_dnt [t] base [t[] base [t] base2 @@ -900,17 +982,22 @@ ustop/t_dnt [t] base [t] sw [t] sq [t] hy + [t] bn ustop/t_dnt2 [t] base2 +ustop/t_ejc [t`] om ustop/t_hi [t[] base [t] hi [t] sq [t] hy + [t] bn + [th] bn ustop/t_pzd [c] base [t;] pl [t;] ru ustop/tr [t] base [t2] en [t] ru + [t.h] bn ustop/ts [ts] base2 [ts] de [ts] eo @@ -928,7 +1015,6 @@ ustop/ts [ts] base2 ustop/ts_ [ts] base2 [ts] de [ts] eo - [ts] hu [ts] lv [ts] pl [dz] pl @@ -953,6 +1039,7 @@ ustop/t_short [t] fr [t] lv [t] sk [t] el + [t.] bn ustop/tsh_pzd [tS;] zh ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_sr [tS] sr @@ -963,12 +1050,15 @@ ustop/ts_pzd [tS;] base [tS;] ru [c] sq [dZ;] sq + [ch] bn ustop/ts_pzd_ [c] hi [c] hu [c] hy + [c] bn ustop/ts_pzd2 [c] hi [c] hu [c] hy + [c] bn ustop/ts_pzd3 [tS;] hr [dZ;] hr ustop/t_sr [d] sr @@ -1048,6 +1138,7 @@ vdiph/aae [aI] en_us vdiph/aai [ai] lv [aai] zhy [aI] sq + [aI] ne vdiph/aai_2 [AI] af [AY] cy vdiph/aai_3 [ai] fi @@ -1059,6 +1150,9 @@ vdiph/aau_2 [aU] en_wi [aU] la [aau] zhy vdiph/aau_3 [aU] hi + [aU] kn + [aU] bn + [aU] ne vdiph/aau_4 [aU] vi vdiph/ae [E:] fr_ca [aI] la @@ -1073,6 +1167,7 @@ vdiph/ai [aI] base2 [a:I] vi [aI] id [aI] hy + [aI] kn vdiph/ai_2 [aI] en [aI] cy [aY] cy @@ -1099,12 +1194,14 @@ vdiph/au_4 [aU] base2 [aU] is [aU] id vdiph/ee-e [E:] hi + [E:] bn vdiph/eei [EI] base2 [eI] en [EI] de [EI] nl [EI] vi [eI] hy + [eI] ne vdiph/eei_2 [eI] eo [ei] fi [ei] lv @@ -1136,11 +1233,13 @@ vdiph/eu [eU] base2 [eU] sk [eU] pt [eU] vi + [eU] ne vdiph/eu_2 [eu] fi vdiph/@i [@I] vi [@:I] vi vdiph/&i [&i] fi [aI] hi + [aI] bn vdiph/@i_2 [eI] af [@I] cy [@Y] cy @@ -1157,6 +1256,7 @@ vdiph/oi [oI] base2 [oI] it [OI] la [oI] vi + [oI] ne vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en_n @@ -1176,6 +1276,7 @@ vdiph/oou [oU] cs [OU] grc vdiph/ou [ou] fi [ou] zhy + [oU] ne vdiph/ou_2 [oU] sk [oU] ro vdiph/ou_3 [oU] is @@ -1193,11 +1294,14 @@ vdiph/ui [uI] base2 [ui] lv [uI] vi [ui] zhy + [uI] ne vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy [uY] cy +vdiph/Vi [VI] ne vdiph/Vu [@U] af + [VU] ne vdiph/Vu_2 [oU] en_wm vdiph/Vu_3 [o:] nl vdiph/&y [&y] fi @@ -1214,6 +1318,7 @@ vdiph/y#y_2 [Yy] af [eoi] zhy vdiph/y#y_3 [Y:] nl vnasal/aa_n [a~] hi + [a~] bn vnasal/aa_n2 [A~] en [A~] fr vnasal/aa_n3 [A~] af @@ -1225,11 +1330,15 @@ vnasal/ee_n [E~] en vnasal/ee_n2 [a] en_us [E~] hi [&~] pt_pt + [E~] bn vnasal/ee_u_n [E~] pl vnasal/e_n [e~] af [e~] hi [e~] pt + [e~] bn vnasal/i_n [i~] pt + [i~] bn + [i:~] bn vnasal/i_n2 [i~] hi vnasal/m- [m-] sw vnasal/n- [n-] sw @@ -1237,15 +1346,19 @@ vnasal/nn- [N-] sw vnasal/oi_n [oI~] pt vnasal/o_n [o~] hi [o~] pt + [o~] bn vnasal/o_n2 [o~] af vnasal/o_n3 [O~] fr vnasal/oo_n [O~] en vnasal/oo_n2 [O~] hi [o] zh + [O~] bn vnasal/oo_n3 [O~] pl vnasal/u_n [u~] hi [u~] pt [u] zh + [u~] bn + [u:~] bn vnasal/V_n [V~] hi vnasal/W_n [E~] fr [W~] fr @@ -1254,6 +1367,8 @@ voc/dh [D] base [D] es voc/dh_ [D] base [D] es + [D] om +voc/dh_om [D] om voc/j [J^] base voc/Q [Q] base [Q^] base @@ -1272,6 +1387,7 @@ voc/v [v] base [v2] nl [v;] ro [v] is + [v] bn voc/v_ [B] base [v] base [v] fi @@ -1282,11 +1398,14 @@ voc/v_ [B] base [v#] es [v;] ro [v] is + [v] bn voc/v2 [v#] es voc/vj [v] base [v] fr vocw/dh [D] base [D] es + [D] om + [d`] om vocw/Q [Q] base [Q^] base vocw/Q_ [Q] base @@ -1342,6 +1461,9 @@ vowel/@ [@] base [V] cy [@4] hi [@] hy + [@] ml + [@] kn + [@4] bn vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1350,6 +1472,8 @@ vowel/& [a] en_rp [&] lv [&:] lv [&] sv + [&] bn + [&:] bn vowel/0 [0] en [O] hi [O] pt @@ -1373,6 +1497,8 @@ vowel/@_3 [@] en_sc [@] de [W2] fr [@3] hi + [@3] bn + [@3] ne vowel/3_2 [3:] en_n [@] zh vowel/3_3 [3:] en_rp @@ -1415,6 +1541,10 @@ vowel/a# [a/] base2 [&] sr [&] pt [&/] pt + [a#] rw + [a/] rw + [a] om + [a:] om vowel/a_2 [a] base2 [a] en_wi [A:] en_wi @@ -1424,11 +1554,13 @@ vowel/a_2 [a] base2 [A] pt [a] pt_pt [a] ro + [a] rw vowel/a#_2 [a#] pl [&] hr [a2] sv [&] is [a/] sw + [a] kn vowel/a_3 [a] en_sc [a/] en_sc [A:] en_sc @@ -1453,14 +1585,21 @@ vowel/a#_3 [a2] en [&/] pt_pt [a] zhy [a/] sq + [a] ml + [a] bn + [a#] om vowel/a_4 [a/] el [a] vi + [a:] om vowel/a_5 [a:] ta [a/] it [a] la [a] sv [a] sw [a] tr + [a:] ml + [a:] kn + [A] om vowel/a_6 [a] fr [a2] fr [a] ca @@ -1492,10 +1631,15 @@ vowel/aa_7 [A] nl vowel/aa_8 [0] en_us [A:] en_us vowel/aa_9 [a:] hi + [a:] bn + [a] ne vowel/a_en [A] fr vowel/@_bck [@] hi [@/] hi [@] zh + [@] bn + [V] ne + [@/] ne vowel/e [e] base2 [e:] en [eI] en_n @@ -1519,6 +1663,12 @@ vowel/e [e] base2 [e] vi [e] id [e] sq + [e] rw + [e#] rw + [e] ml + [e:] ml + [e:] kn + [e] ne vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1528,10 +1678,13 @@ vowel/e_2 [eI] en_sc [e] it [e:] sv [e:] no + [e] bn + [e:] bn vowel/e_3 [i] en_n [e:] hu [e] ku vowel/e_5 [i] en_sc +vowel/e_6 [e] om vowel/ee [E] en_n [E] sv vowel/e_e [E] en_sc @@ -1583,6 +1736,7 @@ vowel/e_mid [E] en_rp [E] id [E2] id [e] hy + [E] bn vowel/e_mid2 [E] af [E] de [E2] de @@ -1597,6 +1751,9 @@ vowel/e_mid2 [E] af [e] sw [e] tr [e#] sq + [e] kn + [E] om + [E#] om vowel/@_fnt [@] en_wi [@2] en_wi [@2] hr @@ -1623,6 +1780,12 @@ vowel/i [i] base2 [i] zh [i] sw [i] hy + [i] rw + [i#] rw + [i:] ml + [i:] kn + [i] ne + [i:] om vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -1650,6 +1813,8 @@ vowel/i_6 [i] hi [i] tr [i] ku [i] id + [i] ml + [i] kn vowel/i#_6 [i.] zh vowel/i_7 [i] pl [i] sq @@ -1658,6 +1823,8 @@ vowel/i_en [i:] en [i:] en_us vowel/i_fnt [i:] en_wi [i:] hi + [i] bn + [i:] bn vowel/ii [I] en_n [I2] en_n [I] en_rp @@ -1672,10 +1839,14 @@ vowel/ii [I] en_n [i] zhy [I] ku [I#] sq + [I] om + [I#] om vowel/ii# [Y] cy [Y] ru [I] ku [i] sq + [y] ml + [y] kn vowel/ii_2 [i] zh vowel/ii#_2 [y] pl vowel/ii_3 [I] cy @@ -1686,6 +1857,7 @@ vowel/ii_3 [I] cy [I] sv [I] no [I] tr + [I] bn vowel/ii#_3 [I2] en_us vowel/ii_4 [I] en [I2] en @@ -1716,6 +1888,11 @@ vowel/@_low [3] en_rp [@] ro [@2] no [@] id + [@] bn + [V] bn + [@2] bn + [V] ne + [@/] ne vowel/@_low2 [@/] en_us [@2] en_us vowel/o [o] base2 @@ -1735,6 +1912,13 @@ vowel/o [o] base2 [o:] sv [o] id [o] hy + [o] rw + [o#] rw + [o] ml + [o:] ml + [o] kn + [o:] kn + [o] bn vowel/o_2 [o:] cy [o2] fr [o:] hi @@ -1742,6 +1926,7 @@ vowel/o_2 [o:] cy [o:] la [o:] no [o] vi + [o:] bn vowel/o-_2 [V] en_n [V] en_wm vowel/o_3 [oU] en_sc @@ -1763,6 +1948,8 @@ vowel/o_mid [U@] en_rp [O2] fr [o] hu [o] tr + [o] ne + [o:] om vowel/oo [O:] en_sc [O] en_wi [O:] en_wi @@ -1801,6 +1988,9 @@ vowel/oo_4 [O] base2 [3:] en_wi [O:] hi [O] it + [O] bn + [O] om + [O#] om vowel/oo_5 [O] pl [O] is [O] sq @@ -1820,6 +2010,7 @@ vowelr/r-voc [r-] jbo [r-] sk [r:] sk [r-] hr + [r-] bn vowelr/V3_r [VR] en [3] en_sc [@r] zh @@ -1836,6 +2027,12 @@ vowel/u [u:] en_wi [u:] cs [U] la [u] id + [u] ml + [u:] ml + [u] kn + [u:] kn + [u] bn + [u:] om vowel/u# [u:] en_sc [Y] tr vowel/u_2 [u1] fi @@ -1879,6 +2076,10 @@ vowel/u_bck [u] base2 [u] zh [u] sq [u] hy + [u] rw + [u#] rw + [u:] bn + [u] ne vowel/u_bck2 [u:] la vowel/u_fnt [u:] en_rp vowel/uu [U] en @@ -1900,6 +2101,9 @@ vowel/uu_bck [U] en_wi [U] pt [U] no [u] zhy + [U] bn + [U] om + [U#] om vowel/V [3] en_sc vowel/V_2 [V] en [a] af @@ -1909,6 +2113,7 @@ vowel/V_2 [V] en vowel/V_3 [V] en_rp [V] hi [V] ta + [V] bn vowel/V_4 [V] en_sc vowel/V_6 [V] en_us [a#] lv @@ -2023,6 +2228,7 @@ vwl_hi/l-voc [l-] jbo [l-] hi [l-] sk [l:] sk + [l-] bn vwl_no/& [a] no [a:] no vwl_no/au- [aU] no @@ -2071,6 +2277,7 @@ vwl_zh/iou [iou] zh vwl_zh/ng [ng] zhy vwl_zh/oeng [oen] zhy vwl_zh/ong [ong] zhy + [ong] zh vwl_zh/uaa [uA] zh vwl_zh/uai [uai] zh vwl_zh/uei [uei] zh @@ -2117,6 +2324,7 @@ x/b [b] base [b] hi [b;] ro [b] is + [b] bn x/b_ [b] base [b] fr x/d [d] base @@ -2129,6 +2337,8 @@ x/d [d] base [d] is [d] id [d] sq + [d.] bn + [d`] om x/d_ [d] base [d[] base [d] base2 @@ -2146,6 +2356,9 @@ x/d_ [d] base [d] sw [d] id [d] sq + [d] bn + [d.] bn + [d`] om x/d_dnt [d[] base [d] base2 [d] fi @@ -2155,21 +2368,26 @@ x/d_dnt [d[] base [d] ru [d;] ro [d] sw + [d] bn x/d_pzd [d;] pl [d;] ru x/dzh [J] base [dZ] base + [J2] bn x/dzh_ [dZ] base [dZ;] base [dz;] base [J] hi [dZ;] mk [dZ;] ru + [J] bn x/dz_pzd [dZ;] base [dz;] base [J] hi [dZ;] mk [dZ;] ru + [J] bn +x/dz_pzd_ [J2] bn x/g_ [g] base [g] cy [g] fr @@ -2181,5 +2399,7 @@ x/g2 [g] base [g] hi [g] es [g] is + [g] bn x/g2_ [g-] base [g] hi + [g] bn diff --git a/phsource/n/n_ b/phsource/n/n_ index 5203c44b6cf126910091f81ee7f6bcea5a00df65..3c930c4d2f46a85cdb793a8421cbe96b3aa4a541 100644 GIT binary patch delta 31 mcmdnNzJq;28lB zF)d(ZVEw}Qh4CO~G}8-a21Yd|H70Z3g$y@1A?&q+FBv^}8JHq~5Uf{_fpHJh9w7Ta hL*V3v{Gx2e92Ig5Oq&Z>oSB)JPk=1ie1iQM9{?*NA;$m! delta 151 zcmZ3hyH1xcIKb68B-k~OiGhKk%xEL;1Lnzpg(R|4fLsQK6+qm^*v9CC$F?sT?VbJ7d;C}!VSK^Om)a7U3+`NhB h3A08L2SoJ*E@eiT>L}h-aMf=77EEB(`vf*|0{~478L0pO delta 97 zcmexh@xfw450Ba#!CQ~$q$&`ZtiBv NVPp*5{DZll2>{2T5r+T( delta 57 zcmZqYZRZsU4sdl233d%+Wnf@1jxQ}XVr7V)C=xySK9ktQ)?18BlM@(ift+`nyP0wr M8KXA;VD4uE0M*YD4FCWD diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 65b6b67a..aef8cb01 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -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); diff --git a/src/compiledict.cpp b/src/compiledict.cpp index fca312f7..86a5d14d 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -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; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index f19fd85c..4768ac8d 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -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)) { diff --git a/src/espeak.cpp b/src/espeak.cpp index 8031b07e..d47e754e 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -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); diff --git a/src/extras.cpp b/src/extras.cpp index 3795a2be..4330fe57 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -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) diff --git a/src/intonation.cpp b/src/intonation.cpp index 6cc4f912..61b2ff28 100755 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -734,12 +734,12 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone) p = &phoneme_list[0]; for(ix=0; ixtype == 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++; diff --git a/src/numbers.cpp b/src/numbers.cpp index 2b0cfd6b..e1b62950 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -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; } + else + { + units = (value % 10); - if((value % 10) == 0) - { - sprintf(string,"_%d0",value / 10); - found = Lookup(tr, string, ph_tens); - } - if(!found) - { - sprintf(string,"_%dX",value / 10); - Lookup(tr, string, ph_tens); - } + 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); + } - if((value % 10) == 0) - { - strcpy(ph_out,ph_tens); - return(0); - } - - 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; diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 7f1c65e8..72ac1ab9 100755 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -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; diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index 7f56902a..12759e31 100755 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -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)); } diff --git a/src/readclause.cpp b/src/readclause.cpp index 3eca8de5..a6e2a985 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -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)) diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 4937fdee..fee14b66 100755 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -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]; diff --git a/src/speak.cpp b/src/speak.cpp index a4726264..b10cd141 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -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); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 9f4013f7..aee972d6 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -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; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 42d4f0b5..4382d609 100755 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -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]; diff --git a/src/synthesize.h b/src/synthesize.h index 50710f88..79de3a91 100755 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -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; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 0d8776a4..06fae962 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -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; } diff --git a/src/translate.cpp b/src/translate.cpp index 69259fc9..b2d6fc84 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -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 diff --git a/src/translate.h b/src/translate.h index afa59ca3..9abb17eb 100755 --- a/src/translate.h +++ b/src/translate.h @@ -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;