diff --git a/dictsource/ca_rules b/dictsource/ca_rules index d2f29b56..4988378b 100755 --- a/dictsource/ca_rules +++ b/dictsource/ca_rules @@ -92,6 +92,7 @@ gü) i (K i qü) i (K i i (A j + i (a_ i i (u i A) ig (_ tS; A) ix S; @@ -185,7 +186,7 @@ tj (_ tS; tx tS; tz dz - tm mm Geminació + tm mm // Geminació .group u diff --git a/dictsource/da_list b/dictsource/da_list index ccc3d0af..de3b0dc1 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -1,6 +1,6 @@ // PB = Peter Bjarkov - pbj1234@hotmail.com -// This file is UTF8 encoded +// This file is UTF8 encoded // Spelling-to-phoneme words for Danish // sounds are specified for these accented characters @@ -71,7 +71,7 @@ __ b'Onsdrai £ pun? € euro © kopyrajt -÷ divid'eReD||meD +÷ divid'eReD||meD = l'imeD # n'OmV § paragr'af @@ -85,13 +85,14 @@ __ b'Onsdrai µ my ' apostr'of ½ en'hal - + + plus + // numbers _0 'nOl _1 'e:n _2 t'o: _3 tR'&: -_4 f'i:3 +_4 f'i:V _5 f'Em _6 s'Egs _7 s'yw @@ -100,22 +101,22 @@ _9 n'i: _10 t'i: _11 'Elv@ _12 t'Vl -_13 tR'Ad@-n +_13 tR'&#d@-n // PB & changed to &# _14 fj'ord@-n _15 f'Emd@-n _16 s'ajsd@-n -_17 s'Yd@-n +_17 s'Wd@-n // PP Y changed to W _18 'ad@-n _19 n'ed@-n _2X t'y:w -_3X tR'aDv@ //PB [tR'ADv@] changed to [tR'aDv@] -_4X f'W:*3 +_3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] +_4X f'WRV //PB [f'W:*3] changed to [ f'WRV] _5X hal't*es _6X t*'es _7X halfj'&rs _8X f'irs _9X half'Ems -_0C h'un*3D@ +_0C h'un*@:D _0M1 t'u:s@-n _1M1 ed||t'u:s@-n // PB added 'et' to tusind _1M2 'e:n||milij'o:n @@ -128,6 +129,32 @@ _0M4 bilij'o:n3 _0and 3 _dpt _k,Vm&: +// PB a number followed by dot +// ordinals are followed by a dot in Danish +_ord 3 // 13. (trettende) + +// exceptions for ordinals +_1o fWrsd3 // 1. første +_2o &n@n // 2. anden +_3o trEdj3 // 3. tredje +_4o fjeV // 4. fjerde +_5o fEmt3 // 5. femte +_6o sj&d3 // 6. sjette +_7o syvn3 // 7. syvende +_8o Vtn3 // 8. ottende +_9o ni@n3 // 9. niende +_10o ti@n3 // 10. tiende +_11o Elfd3 // 11. elvte/ellevete +_12o tVlfd3 // 12. tolvte + +_2Xo t'yv@n@ // 25. +_3Xo tr'&#ft@ //36. +_4Xo fWV'tyv@n@ // 42. +_5Xo halt*'Esenstyv@n@ // 52. +_6Xo tr'Esenstyv@n@ // 62. +_7Xo halfj'&rsenstyv@n@ // 72. +_8Xo firsenstyv@n@ // 82. +_9Xo half'Emsenstyv@n@ // 95. // function words @@ -149,7 +176,7 @@ hvor v'Vr // where hvorfor vVf'Vr // why // prepositions -på pO: +på pO til $u+ // toward fra $u+ // from ved $u+ // at @@ -157,13 +184,13 @@ om $u+ $brk // about, within med $u+ // with af & // PB changed from [a?] to [&] - sound too short in a sentence // Also removed $u from 'af' and other words. They disappeared. -ad &: // PB added 'ad' +ad &: // PB added 'ad' at &: $u // PB changed from [at] to [&:] hos // at - PB: removed [$u+] som sVm // which / that - PB: removed [$u+] // pronouns -jeg jai $u+ // I +jeg jai $u+ // I du du $u+ de di $u han $u @@ -172,13 +199,13 @@ det de $u vi $u i _i: $u+ mig maj $u // me -dig daj $u +dig daj //$u dem $u ham $u hende $u -sig saj +//sig saj os Vs $u -jer +jer denne $u+ // this dette $u+ disse $u+ // these @@ -187,7 +214,7 @@ hvis ves $u+ // PB - whose // possessive pronouns min min $u mit mit $u -mine m'in@ +mine m'in@ din d'in dit d'it $u dine d'ine @@ -207,7 +234,7 @@ jeres $u // auxillary verbs -er $u // is +er //$u // is var vAr $u+ // was har hAr $u+ // has havde h&:D@ $u+ // had @@ -236,7 +263,7 @@ p pe: q ku: r Er s es -t te: +_t te: u u? v ve: w d'Vbeltve: @@ -248,113 +275,101 @@ z sEt // PB English words bacon _^_EN bondage _^_EN -baseball _^_EN $alt -volleyball _^_EN $alt +baseball _^_EN +volleyball _^_EN dj _^_EN -deadline _^_EN $alt -night _^_EN $alt +deadline _^_EN +night _^_EN the _^_EN skinhead _^_EN skinheads _^_EN -street _^_EN $alt -boy _^_EN $alt +street _^_EN +boy _^_EN square _^_EN -appeal _^_EN $alt -apple _^_EN $alt -beachbuggy _^_EN $alt -beachvolley _^_EN $alt -browser _^_EN $alt -byte _^_EN $alt -camcorder _^_EN $alt +appeal _^_EN +apple _^_EN +beachbuggy _^_EN +beachvolley _^_EN +browser _^_EN +byte _^_EN chart _^_EN -chat _^_EN $alt coach _^_EN -coke _^_EN $alt -computer _^_EN $alt +coke _^_EN cool _^_EN couch _^_EN -cursor _^_EN $alt -cowboy _^_EN $alt -debugger _^_EN $alt -email _^_EN $alt -ensemble _^_FR $alt -event _^_EN $alt -firewall _^_EN $alt -freak _^_EN $alt -friendly _^_EN $alt -gin _^_EN $alt -groupie _^_EN $alt +cursor _^_EN +cowboy _^_EN +debugger _^_EN +ensemble _^_FR +event _^_EN +firewall _^_EN +freak _^_EN +friendly _^_EN +groupie _^_EN homepage _^_EN -hooligan _^_EN $alt +hooligan _^_EN interface _^_EN image _^_EN -jet _^_EN $alt -joint _^_EN $alt -joke _^_EN $alt -joystick _^_EN $alt -junkie _^_EN $alt -laptop _^_EN $alt -level _^_EN $alt -login _^_EN $alt -look _^_EN $alt -lord _^_EN $alt +jet _^_EN +joint _^_EN +joke _^_EN +joystick _^_EN +junkie _^_EN +laptop _^_EN +level _^_EN +login _^_EN +look _^_EN +lord _^_EN macho _^_EN -mail _^_EN $alt -management _^_EN $alt +management _^_EN message _^_EN (new age) _^_EN -nigger _^_EN $alt offline _^_EN okay _^_EN online _^_EN out _^_EN pair _^_EN -password _^_EN $alt +password _^_EN penthouse _^_EN -pickup _^_EN $alt +pickup _^_EN pidgin _^_EN -plot _^_EN $alt -producer _^_EN $alt -ranger _^_EN $alt +producer _^_EN +ranger _^_EN receiver _^_EN research _^_EN remake _^_EN -roadie _^_EN $alt -roastbeef _^_EN $alt -quiz _^_EN +roadie _^_EN +roastbeef _^_EN run _^_EN -scanner _^_EN $alt +scanner _^_EN science _^_EN -server _^_EN $alt -settlement _^_EN $alt -statement _^_EN $alt -understatement _^_EN $alt +server _^_EN +settlement _^_EN +statement _^_EN +understatement _^_EN sexy _^_EN -shirt _^_EN $alt -show _^_EN $alt -single _^_EN $alt -skateboard _^_EN $alt +single _^_EN +skateboard _^_EN small _^_EN -snob _^_EN $alt +snob _^_EN song _^_EN source _^_EN -spam _^_EN $alt +spam _^_EN spirit _^_EN squaw _^_EN sweatshirt _^_EN talk _^_EN teaser _^_EN tech _^_EN -terminal _^_EN $alt trip _^_EN -tuner _^_EN $alt +tuner _^_EN unix _^_EN venture _^_EN -western _^_EN $alt +western _^_EN whipcord _^_EN -window _^_EN $alt -word _^_EN $alt -warrior _^_EN $alt +window _^_EN +word _^_EN +warrior _^_EN // PB English names austin _^_EN $alt @@ -363,6 +378,7 @@ barry _^_EN $alt bbc _^_EN $alt boston _^_EN $alt bronx _^_EN $alt +boyle _^_EN $alt clarence _^_EN $alt cyrus _^_EN cia _^_EN $alt @@ -396,13 +412,3687 @@ monsieur _^_FR madame _^_FR mademoiselle _^_FR +// PB (French) nouns with final -age - stressed a, "age" pronounced ['&S@] +affutage $alt +apanage $alt +arbitrage $alt +bagage $alt +bandage $alt +blamage $alt +bondage b'VndidS $alt +brækage $alt +camouflage $alt +collage $alt +corsage $alt +courage $alt +dekolletage $alt +ekvipage $alt +emballage $alt +ensilage $alt +eremitage $alt +etage $alt +fernissage $alt +fourage $alt +fromage $alt +fuselage $alt +fustage $alt +gage $alt +garage $alt +image $alt +kamuflage $alt +karambolage $alt +kartonnage $alt +kollage $alt +kolportage $alt +korsage $alt +kurage $alt +kurtage $alt +lækage $alt +massage $alt +menage $alt +montage $alt +page $alt +passage $alt +persiflage $alt +personage $alt +plamage $alt +plantage $alt +platmenage $alt +ravage $alt +reportage $alt +sabotage $alt +schalburgtage $alt +slitage $alt +spionage $alt +sprydstage $alt +staffage $alt +takkelage $alt +tonnage $alt +trikotage $alt + +// PB adjectives and nouns with final -ant - stressed a +acceptant $alt +adjudant $alt +adoptant $alt +aktant $alt +alimentant $alt +amarant $alt +ambulant $alt +appellant $alt +arrestant $alt +arrogant $alt +ascendant $alt +aspirant $alt +asylant $alt +attestant $alt +auskultant $alt +bakkant $alt +bastant $alt +bonvivant bVNviv'AN $alt +brillant $alt +brisant $alt +celebrant $alt +changeant $alt +charmant $alt +chateaubriant $alt +clairvoyant $alt +dansant dans'An $alt +debutant $alt +demonstrant $alt +deodorant $alt +determinant $alt +diamant $alt +dilettant $alt +diskant $alt +distant $alt +dominant $alt +drabant $alt +dublant $alt +dubleant $alt +duellant $alt +eklatant $alt +eksorbitant $alt +ekstravagant $alt +elefant $alt +elegant $alt +emigrant $alt +entreprenant $alt +fabrikant $alt +fabulant $alt +figurant $alt +flagellant $alt +flagrant $alt +flamboyant $alt +florissant $alt +foliant $alt +fondant fVNd'AN $alt +frappant $alt +galant $alt +garant $alt +gigant $alt +gratulant $alt +hospitant $alt +hydrant $alt +ignorant $alt +immigrant $alt +imposant $alt +infant $alt +informant $alt +injuriant $alt +insinuant $alt +intendant $alt +interessant $alt +interpellant $alt +intolerant $alt +intrigant $alt +irrelevant $alt +kapitulant $alt +kombattant $alt +komediant $alt +kommandant $alt +kommunikant $alt +koncertant $alt +konsonant $alt +konstant $alt +kontant $alt +kontrollant $alt +kooperant $alt +kulant $alt +kurant $alt +kvadrant $alt +kværulant $alt +laborant $alt +mangekant $alt +markant $alt +migrant $alt +militant $alt +ministrant $alt +musikant $alt +mutant $alt +nonchalant nVnS@l'AN $alt +observant $alt +obskurant $alt +officiant $alt +okkupant $alt +oktant $alt +optant $alt +ordinant $alt +parkant $alt +participant $alt +passant $alt +pedant $alt +pendant pANd'AN $alt +pikant $alt +praktikant $alt +protestant $alt +proviant $alt +prædikant $alt +prægnant $alt +redundant $alt +reflektant $alt +registrant $alt +relevant $alt +repræsentant $alt +restant $alt +restaurant $alt +resultant $alt +sekant $alt +sekstant $alt +sekundant $alt +signifikant $alt +simulant $alt +spekulant $alt +spirant $alt +subdominant $alt +suffisant $alt +suppleant $alt +supplikant $alt +sykofant $alt +tolerant $alt +trafikant $alt +tremulant $alt +vagant $alt +vakant $alt +variant $alt +vindikant $alt +volant $alt +ækvidistant $alt + +// PB nouns with final -ade - stressed a +ambassade $alt +arkade $alt +ballade $alt +balustrade $alt +barrikade $alt +bastonade $alt +blokade $alt +bravade $alt +brigade $alt +brokade $alt +chokolade $alt +cikade $alt +dekade $alt +dryade $alt +eskapade $alt +esplanade $alt +estrade $alt +facade $alt +farvelade $alt +forlade $alt +galopade $alt +galoppade $alt +harlekinade $alt +hystade $alt +jeremiade $alt +kanonade $alt +karade $alt +karbonade $alt +kaskade $alt +kavalkade $alt +kolonnade $alt +kontaktflade $alt +krokade $alt +krustade krysd'&:D@ $alt +lemonade $alt +limonade $alt +(lit de parade) lid3p&r'Ad $alt +marinade $alt +marmelade $alt +maskerade $alt +messiade $alt +myriade $alt +mænade $alt +najade $alt +nomade $alt +olympiade $alt +orangeade $alt +palisade $alt +panade $alt +parade $alt +plejade $alt +pomade $alt +remoulade $alt +remulade $alt +retirade $alt +robinsonade $alt +rokade $alt +roulade $alt +serenade $alt +tamponade $alt +tirade $alt +triade $alt + +// PB nouns and adjectives with final -al - stressed a +admiral $alt +adverbial $alt +aksial $alt +alluvial $alt +anal $alt +annal $alt +areal $alt +arsenal $alt +asocial $alt +astral $alt +bakkanal $alt +banal $alt +basal $alt +bestjal $alt +biennal $alt +bronkial $alt +brutal $alt +central $alt +centrifugal $alt +centripetal $alt +cerebral $alt +cetantal $alt +coital $alt +decimal $alt +dental $alt +departemental $alt +diagonal $alt +diakonal $alt +dialektal $alt +diametral $alt +digital $alt +diluvial $alt +dimensional $alt +direktoral $alt +egal $alt +ekskremental $alt +eksperimental $alt +ekstemporal $alt +embryonal $alt +endimensional $alt +episkopal $alt +faryngal $alt +fatal $alt +federal $alt +festival $alt +feudal $alt +filial $alt +final $alt +fiskal $alt +fluvial $alt +foderal $alt +formal $alt +fraktal $alt +frontal $alt +frugal $alt +fundamental $alt +futteral $alt +fækal $alt +fænomenal $alt +føderal $alt +gemal $alt +general $alt +genial $alt +genital $alt +glacial $alt +global $alt +guttural $alt +gymnasial $alt +heksagonal $alt +horisontal $alt +hormonal $alt +hospital $alt +ideal $alt +illegal $alt +illoyal $alt +imperial $alt +initial $alt +instrumental $alt +integral $alt +interval $alt +irrational $alt +irreal $alt +journal $alt +jovial $alt +kanal $alt +kannibal $alt +kantonal $alt +kapital $alt +kardial $alt +kardinal $alt +kardinaltal $alt +katastrofal $alt +katedral $alt +kategorial $alt +kausal $alt +klerikal $alt +koaksial $alt +kollegial $alt +kolonial $alt +kolossal $alt +kommunal $alt +konditional $alt +kongenial $alt +konjektural $alt +konjunktional $alt +konsensual $alt +konsistorial $alt +kontinental $alt +kontubernal $alt +konval $alt +koral $alt +kordial $alt +korporal $alt +kraal krV:l $alt +kromosomal $alt +krystal $alt +kvartal $alt +labial $alt +labiodental $alt +laryngal $alt +lateral $alt +legal $alt +leksikal $alt +letal $alt +liberal $alt +lineal $alt +litoral $alt +lokal $alt +loyal $alt +lumbal $alt +madrigal $alt +magistral $alt +maksimal $alt +manual $alt +marginal $alt +marskal $alt +medicinal $alt +mediæval $alt +memorial $alt +mental $alt +metal $alt +mineral $alt +minimal $alt +mistral $alt +modal $alt +mondial $alt +monumental $alt +moral $alt +museal $alt +musical mju:sik3l $alt +nasal $alt +national $alt +neural $alt +neutral $alt +nominal $alt +normal $alt +occidental $alt +official $alt +opal $alt +optimal $alt +oral $alt +original $alt +orkestral $alt +ornamental $alt +ortogonal $alt +oval $alt +palatal $alt +paradoksal $alt +pascal $alt +pastoral $alt +pedal $alt +pentagonal $alt +perial $alt +piedestal $alt +plural $alt +pokal $alt +polygonal $alt +portal $alt +postal $alt +potential $alt +pprincipal $alt +professional $alt +professoral $alt +pronominal $alt +proportional $alt +pyramidal $alt +radial $alt +radikal $alt +rational $alt +real $alt +regal $alt +regional $alt +rektoral $alt +reversal $alt +revival $alt +ritual $alt +rival $alt +royal $alt +rural $alt +sakral $alt +sakramental $alt +sandal $alt +sentimental $alt +signal $alt +sjakal $alt +social $alt +spinal $alt +spiral $alt +subliminal $alt +surreal $alt +synagogal $alt +synodal $alt +tantal $alt +temporal $alt +terminal $alt +territorial $alt +tonal $alt +total $alt +trafikal $alt +transcendental $alt +transversal $alt +tribunal $alt +trivial $alt +ucentral $alt +uncial $alt +universal $alt +urinal $alt +vaginal $alt +vandal $alt +vasal $alt +verbal $alt +versal $alt +vertikal $alt +virginal $alt +vital $alt +vokal $alt +ækvatorial $alt +ødipal $alt + +// PB words with final -ar - stressed a +dokumentar $alt + aktuar $alt +proletar $alt + katar $alt + agrar $alt +aveolar $alt +antikvar $alt +arkivar $alt + atomar $alt + barbar $alt + basar $alt +bibliotekar $alt +bifilar $alt + okular $alt + polar $alt + bizar $alt + vikar $alt + bojar $alt +breviar $alt + bukkar $alt + cigar $alt + citar $alt + denar $alt +dignitar $alt + dinar $alt +dromedar $alt +formular $alt +eksemplar $alt +fødselar $alt + galar $alt + husar $alt + hektar $alt +honorar $alt + glosar $alt +glossar $alt +hvabehar $alt + linear $alt +stellar $alt +inventar $alt + isobar $alt + jaguar $alt +janitshar $alt +jubilar $alt + korsar $alt +laminar $alt +legatar $alt + linear $alt + lugar $alt + magyar $alt +mandatar $alt +millibar $alt +myanmar $alt + notar $alt +nuklear $alt + pessar $alt + pulsar $alt + qatar $alt +samovar $alt +seminar $alt + skolar $alt + tatar $alt + initar $alt + valuar $alt + vegar $alt +vegetar $alt + velar $alt +vokabular $alt + +// PB words with final -an - stressed a +aeroplan $alt +agraman $alt +altan $alt +angloman $alt +Aserbajdsjan $alt +astrakan $alt +banan $alt +bavian $alt +Bhutan $alt +biblioman $alt +bladan $alt +bojan $alt +brahman $alt +butan $alt +cardigan $alt +cellofan $alt +dekan $alt +dragoman $alt +dulcian $alt +elan elAN $alt +ensian $alt +erotoman $alt +eufoman $alt +filigran $alt +galan $alt +hortulan $alt +human $alt +hvordan vVd'&n $alt +inhuman $alt +kapellan $alt +karljohan $alt +Kasakhstan $alt +katamaran $alt +kleptoman $alt +klodrian $alt +koran $alt +kumpan $alt +leguan $alt +lian $alt +ludoman $alt +mangan $alt +marcipan $alt +median $alt +mediterran $alt +membran $alt +merian $alt +meridian $alt +mesan $alt +metan $alt +momentan $alt +monoman $alt +morian $alt +mytoman $alt +narkoman $alt +norman $alt +nymfoman $alt +obsidian $alt +ocean $alt +oktan $alt +Oman $alt +organ $alt +orkan $alt +osman $alt +ottoman $alt +partisan $alt +pelikan $alt +pemmikan $alt +platan $alt +polyuretan $alt +profan $alt +propan $alt +pyroman $alt +ramadan $alt +rejnfan $alt +roman $alt +safian $alt +safran $alt +sakristan $alt +samaritan $alt +sedan $alt +shaman $alt +simultan $alt +sopran $alt +spontan $alt +subkutan $alt +Sudan $alt +Tadsjikistan $alt +Taiwan $alt +talisman $alt +tarlatan $alt +tartan $alt +timian $alt +titan $alt +tukan $alt +tulipan $alt +Turkmenistan $alt +tyran $alt +urban $alt +uretan $alt +Usbekistan $alt +uvan $alt +valerian $alt +varan $alt +velan $alt +veteran $alt +vulkan $alt +ætan $alt + +// PB words with final -at - stressed a +acetat $alt +adressat $alt +advokat $alt +adækvat $alt +agat $alt +agglomerat $alt +aggregat $alt +agnat $alt +akrobat $alt +aktorat $alt +alumnat $alt +antikvariat $alt +apparat $alt +aristokrat $alt +asiat $alt +attentat $alt +autokrat $alt +automat $alt +barbiturat $alt +bariumsulfat $alt +batat $alt +besat $alt +bikarbonat $alt +biopat $alt +bisulfat $alt +brakteat $alt +bureaukrat $alt +calciumnitrat $alt +censorat $alt +certifikat $alt +championat $alt +citat $alt +citrat $alt +cyklamat $alt +cølibat $alt +datamat $alt +debat $alt +defensorat $alt +dekanat $alt +delegat $alt +delikat $alt +demokrat $alt +derivat $alt +desperat $alt +destillat $alt +diakonat $alt +diktat $alt +diplomat $alt +direktorat $alt +disparat $alt +dispensat $alt +dramaturgiat $alt +dravat $alt +dukat $alt +duplikat $alt +emirat $alt +entrechat $alt +episkopat $alt +estimat $alt +etat $alt +fabrikat $alt +falsifikat $alt +ffermat $alt +filtrat $alt +flagellat $alt +flipproletariat $alt +fluat $alt +format $alt +fosfat $alt +fotostat $alt +fregat $alt +ftalat $alt +gagat $alt +granat $alt +granulat $alt +grassat $alt +habitat $alt +hiat $alt +homøopat $alt +hydrat $alt +implantat $alt +inadækvat $alt +inserat $alt +inspektorat $alt +instruktorat $alt +internat $alt +intrikat $alt +kalciumnitrat $alt +kalifat $alt +kammerat $alt +kandidat $alt +kanonikat $alt +karat $alt +karbonat $alt +kasemat $alt +klorat $alt +kognat $alt +kombinat $alt +kommissariat $alt +koncentrat $alt +kondensat $alt +konglomerat $alt +konkordat $alt +konkubinat $alt +konsulat $alt +koordinat $alt +korrelat $alt +krabat $alt +kravat $alt +kroat $alt +kvadrat $alt +laktat $alt +laminat $alt +legat $alt +lektorat $alt +licentiat $alt +litterat $alt +magistrat $alt +magnat $alt +mandat $alt +marskallat $alt +matriarkat $alt +moderat $alt +mulat $alt +muskat $alt +mæcenat $alt +mærkat $alt +natriumbenzoat $alt +natriumbikarbonat $alt +natriumkarbonat $alt +nitrat $alt +notat $alt +noviciat $alt +oblat $alt +obligat $alt +opiat $alt +ordinat $alt +ornat $alt +ostinat $alt +parat $alt +parkomat $alt +passat $alt +pastorat $alt +patriarkat $alt +patronat $alt +pensionat $alt +perserkat $alt +pirat $alt +plagiat $alt +plakat $alt +plutokrat $alt +pontifikat $alt +postetat $alt +postulat $alt +potentat $alt +primat $alt +priorat $alt +privat $alt +probat $alt +professorat $alt +proletariat $alt +protektorat $alt +protokollat $alt +prædikat $alt +præjudikat $alt +prælat $alt +præparat $alt +psykopat $alt +rabat $alt +rabbinat $alt +rabiat $alt +referat $alt +rektorat $alt +renegat $alt +reostat $alt +reservat $alt +resultat $alt +retsstat $alt +revisorat $alt +salat $alt +sekretariat $alt +senat $alt +seniorat $alt +separat $alt +silikat $alt +sirat $alt +skivgat $alt +sneglat $alt +soldat $alt +sonarapparat $alt +spagat $alt +spinat $alt +sponsorat $alt +spygat $alt +stipendiat $alt +sublimat $alt +substrat $alt +sukat $alt +sulfapræparat $alt +sulfat $alt +sultanat $alt +surrogat $alt +syndikat $alt +tagfat $alt +teknokrat $alt +teokrat $alt +termostat $alt +tomat $alt +traktat $alt +transplantat $alt +transportat $alt +trassat $alt +tribunat $alt +triumvirat $alt +undulat Vndul'&t $alt +vikariat $alt +vivat $alt + +// PB final -ce - stress on previous syllable +absence $alt +adhærence $alt +aktrice $alt +alliance $alt +ambulance $alt +annonce $alt +arrogance $alt +assistance $alt +assurance $alt +avance $alt +balance $alt +benefice $alt +clairvoyance $alt +defektrice $alt +dekadence $alt +difference $alt +diligence $alt +direktrice $alt +ekspeditrice $alt +ekstravagance $alt +elegance $alt +eminence $alt +excellence $alt +fajance $alt +hospice $alt +ignorance $alt +inspektrice $alt +intolerance $alt +kadence $alt +kaprice $alt +kollektrice $alt +kompetence $alt +kondolence $alt +konference $alt +konkurrence $alt +kontenance $alt +korpulence $alt +korrespondance $alt +kulance $alt +kværulance $alt +leverance $alt +malice $alt +matrice $alt +mesalliance $alt +montrice $alt +negligence $alt +niece $alt +nonchalance $alt +novice $alt +nuance $alt +patrice $alt +police $alt +præference $alt +præjudice $alt +reference $alt +remonce $alt +renonce $alt +rentrice $alt +renæssance $alt +ressource $alt +restance $alt +romance $alt +seance $alt +service $alt +servitrice $alt +suffisance $alt +tolerance $alt +usance $alt +vakance $alt + +// PB words with final -ens - stressed e +abstinens $alt +adhærens $alt +agens $alt +ambivalens $alt +ascendens $alt +audiens $alt +demens $alt +dependens $alt +differens $alt +dissens $alt +divergens $alt +eksistens $alt +elokvens $alt +essens $alt +evidens $alt +excellens $alt +filipens $alt +fluorescens $alt +fosforescens $alt +frekvens $alt +imens $alt +immanens $alt +indifferens $alt +indolens $alt +influens $alt +ingrediens $alt +inhærens $alt +intelligens $alt +intens $alt +interferens $alt +kohærens $alt +koincidens $alt +kompetens $alt +kondens $alt +konferens $alt +konfluens $alt +kongruens $alt +konsekvens $alt +konsens $alt +konsistens $alt +kontingens $alt +konveniens $alt +konvergens $alt +korrespondens $alt +kvintessens $alt +licens $alt +luminescens $alt +patiens $alt +permanens $alt +pestilens $alt +potens $alt +proveniens $alt +reagens $alt +rekonvalescens $alt +remanens $alt +reminiscens $alt +residens $alt +resistens $alt +reverens $alt +sekvens $alt +sentens $alt +solvens $alt +stringens $alt +subsistens $alt +sufficiens $alt +tangens $alt +tendens $alt +transcendens $alt +transparens $alt +turbulens $alt +valens $alt +virulens $alt +ækvivalens $alt + +// PB words with final -ent - stressed e +abonnement $alt +abonnent $alt +abstinent $alt +accent $alt +agent $alt +ambient $alt +ascendent $alt +assistent $alt +betjent $alt +cement $alt +decent $alt +dekadent $alt +delinkvent $alt +dement $alt +deponent $alt +descendent $alt +detergent $alt +dirigent $alt +disponent $alt +dissident $alt +divergent $alt +docent $alt +dokument $alt +ekskrement $alt +ekspedient $alt +eksperiment $alt +eksponent $alt +element $alt +elokvent $alt +eminent $alt +emittent $alt +endossent $alt +event $alt +evident $alt +excellent $alt +fallent $alt +ferment $alt +filament $alt +firmament $alt +fragment $alt +frekvent $alt +fundament $alt +gradient $alt +guvernement $alt +immanent $alt +impertinent $alt +impotent $alt +incident $alt +incitament $alt +indecent $alt +indifferent $alt +indolent $alt +instrument $alt +insufficient $alt +intelligent $alt +interessent $alt +intervenient $alt +klient $alt +koefficient $alt +kohærent $alt +kommittent $alt +kompetent $alt +komponent $alt +kongruent $alt +konkurrent $alt +konsekvent $alt +konsistent $alt +konstituent $alt +konsulent $alt +konsument $alt +kontinent $alt +kontingent $alt +kontrahent $alt +konvent $alt +konvergent $alt +korpulent $alt +korrespondent $alt +kvotient $alt +latent $alt +medikament $alt +moment $alt +monument $alt +mordent $alt +obducent $alt +occident $alt +omtrent $alt +opponent $alt +opulent $alt +orient $alt +patent $alt +piment $alt +permanent $alt +potent $alt +present $alt +procent $alt +producent $alt +prominent $alt +proponent $alt +præsent $alt +præsident $alt +prætendent $alt +pønitent $alt +reagent $alt +recensent $alt +recent $alt +recipient $alt +referent $alt +regent $alt +rekonvalescent $alt +rekvirent $alt +repellent $alt +resident $alt +resistent $alt +respondent $alt +rudiment $alt +sergent $alt +skribent $alt +solvent $alt +stringent $alt +student $alt +subskribent $alt +sufficient $alt +sukkulent $alt +talent $alt +tangent $alt +tetravalent $alt +transcendent $alt +transient $alt +transparent $alt +trassent $alt +trivalent $alt +turbulent $alt +valent $alt +virulent $alt +visent $alt +ækvivalent $alt + +// PB final -graf - stressed a +agraf $alt +autograf $alt +barograf $alt +bibliograf $alt +biograf $alt +demograf $alt +epigraf $alt +etnograf $alt +flonellograf $alt +fonograf $alt +fotograf $alt +geograf $alt +hektograf $alt +historiograf $alt +homograf $alt +kalligraf $alt +kardiograf $alt +kartograf $alt +kemigraf $alt +kinematograf $alt +koreograf $alt +kryptograf $alt +leksikograf $alt +litograf $alt +oceanograf $alt +oscillograf $alt +palæograf $alt +pantograf $alt +paragraf $alt +pornograf $alt +radiograf $alt +reprograf $alt +røntgenograf $alt +scenograf $alt +seismograf $alt +serigraf $alt +spektrograf $alt +stenograf $alt +telegraf $alt +termograf $alt +topograf $alt +typograf $alt +xylograf $alt + +// PB words with final -ner - stessed previous syllable +// "er" has been removed in order to keep the stress +// when "er" is replaced by "sk" e.g. itali'ener, itali'ensk +// an Italian - en italiener, Italian food - italiensk mad +abessin $alt +aborigi +afghan $alt +afrikaan $alt +afrikan $alt +afrikaan $alt +aleksandrin $alt +amerikan $alt +andorran $alt +anglikan $alt +angolan $alt +argentin $alt +aserbajdsjan $alt +athen $alt +augustin $alt +bahaman $alt +bahrain $alt +barthian $alt +benediktin $alt +benin $alt +berlin $alt +bhutan $alt +birgittin $alt +bolivian $alt +botswan $alt +brandesian $alt +brasilian $alt +bretagn $alt +breton $alt +burkin $alt +burman $alt +cambodjan $alt +cameroun $alt +castilian $alt +chilen $alt +christianshavn $alt +colombian $alt +costarican $alt +cuban $alt +dalmatin $alt +damascen $alt +dominican $alt +dominikan $alt +ecuadorian $alt +falkoner f&lkon'er $alt +fijian $alt +filippin $alt +florentin $alt +fortinn $alt +foruren $alt +franciskan $alt +frederician $alt +frederikshavn $alt +freudian $alt +german $alt +grundtvigian $alt +gråsten $alt +guatemalan $alt +guinean $alt +guyan $alt +haitian $alt +hawaiian $alt +hellen $alt +helsingoran $alt +hercegovin $alt +herlovian $alt +hillerødan $alt +hillerødian $alt +honduran $alt +horsensian $alt +indian $alt +iran $alt +italien $alt +ivorian $alt +jakobin $alt +jamaican $alt +japan $alt +javan $alt +jordan $alt +jungian $alt +kantian $alt +kapucin $alt +kenyan $alt +kollegian $alt +korean $alt +korsikan $alt +korsoran $alt +korsørian $alt +kretin $alt +københavn $alt +lansener l&ns@n'er $alt +latin $alt +levantin $alt +liberian $alt +libertin $alt +liechtenstein $alt +lipizzan $alt +lutheran $alt +løgstørian $alt +makedon $alt +mallorcan $alt +mallorcin $alt +marin $alt +marokkan $alt +medicin $alt +mexican $alt +mohikan $alt +montenegrin $alt +muhamedan $alt +muskedonn $alt +napolitan $alt +neapolitan $alt +neuruppin $alt +nicaraguan $alt +nigerian $alt +normann $alt +odensean $alt +oman $alt +pakistan $alt +panaman $alt +papuan $alt +paraguayan $alt +permission $alt +persian $alt +peruan $alt +pion $alt +platin $alt +pommeran $alt +presbyterian $alt +provinsian $alt +puertorican $alt +puritan $alt +rabbin $alt +randrusian $alt +regensian $alt +republikan $alt +retsmedicin $alt +roman $alt +rotarian $alt +rumæn $alt +salvadoran $alt +samaritan $alt +samoan $alt +saracen $alt +sicilian $alt +sierraleon $alt +sigøjn $alt +singaporean $alt +skælskørian $alt +slagelsean $alt +sloven $alt +soran $alt +spartan $alt +srilankan $alt +sudan $alt +taiwan $alt +tibetan $alt +tongan $alt +trojan $alt +turkmen $alt +tuvaluan $alt +ukrain $alt +uruguayan $alt +vegan $alt +vegetarian $alt +venetian $alt +venezian $alt +venezuelan $alt +victorian $alt +århusian $alt + +// PB country names with final -ien - stress on previous syllable +abessinien $alt +abkhasien $alt +albanien $alt +anatolien $alt +andalusien $alt +arabien $alt +aragonien $alt +armenien $alt +assyrien $alt +australien $alt +brasilien $alt +bulgarien $alt +californien $alt +caribien $alt +castilien $alt +catalonien $alt +centralasien $alt +eksjugoslavien $alt +etiopien $alt +etrurien $alt +eurasien $alt +fønikien $alt +georgien $alt +indonesien $alt +jugoslavien $alt +kroatien $alt +makedonien $alt +mauretanien $alt +melanesien $alt +mesopotamien $alt +mikronesien $alt +oceanien $alt +ostindien $alt +polynesien $alt +rumænien $alt +sardinien $alt +sibirien $alt +sicilien $alt +skandinavien $alt +slovenien $alt +transsilvanien $alt +transsylvanien $alt +tunesien $alt + +// PB words with final -ik - stressed i +akrobatik $alt +akustik $alt +aleatorik $alt +angelik $alt +anglistik $alt +antik $alt +aritmetik $alt +arsenik $alt +aseptik $alt +atletik $alt +automatik $alt +ballistik $alt +batik $alt +begik $alt +bestik $alt +bionik $alt +bolsjevik $alt +botanik $alt +butik $alt +cytogenetik $alt +datamatik $alt +diagnostik $alt +dialektik $alt +diatonik $alt +didaktik $alt +dikkedik $alt +diplomatik $alt +diætetik $alt +dogmatik $alt +domestik $alt +dramatik $alt +duplik $alt +dynamik $alt +elastik $alt +emblematik $alt +energetik $alt +epik $alt +erotik $alt +etik $alt +eugenik $alt +excentrik $alt +fabrik $alt +falkeblik $alt +folkloristik $alt +fonetik $alt +fysik $alt +fysiognomik $alt +genetik $alt +germanistik $alt +gestik $alt +glyptik $alt +gotik $alt +grafik $alt +grammatik $alt +gymnastik $alt +harmonik $alt +heraldik $alt +hermeneutik $alt +hermetik $alt +heuristik $alt +homiletik $alt +hydraulik $alt +informatik $alt +kamik $alt +karakteristik $alt +kasuistik $alt +katolik $alt +keramik $alt +kinetik $alt +kiropraktik $alt +klinik $alt +kolik $alt +kombinatorik $alt +komik $alt +kosmetik $alt +kriminalistik $alt +kritik $alt +kromatik $alt +kronik $alt +kubik $alt +kybernetik $alt +lingvistik $alt +liturgik $alt +logik $alt +logistik $alt +lyrik $alt +magnifik m&Nif'ik $alt +mastik $alt +matematik $alt +mekanik $alt +melodik $alt +mensjevik $alt +metaforik $alt +metodik $alt +metrik $alt +mimik $alt +mnemoteknik $alt +mosaik $alt +motorik $alt +mukkebik $alt +musik $alt +mystik $alt +nautik $alt +novellistik $alt +numismatik $alt +oblik $alt +obstetrik $alt +optik $alt +ornamentik $alt +panegyrik $alt +panik $alt +peristaltik $alt +pneumatik $alt +poetik $alt +polemik $alt +politik $alt +polyteknik $alt +pragmatik $alt +praktik $alt +problematik $alt +propædeutik $alt +prosodik $alt +protetik $alt +pædagogik $alt +replik $alt +republik $alt +retorik $alt +romanistik $alt +romantik $alt +rubrik $alt +rustik $alt +rytmik $alt +semantik $alt +semiotik $alt +skematik $alt +skolastik $alt +slavistik $alt +specifik $alt +statik $alt +statistik $alt +stilistik $alt +symbolik $alt +symfonik $alt +synonymik $alt +systematik $alt +taktik $alt +teknik $alt +tektonik $alt +telematik $alt +tematik $alt +terapeutik $alt +termik $alt +trafik $alt +tragik $alt +unik $alt +æstetik $alt +økumenik $alt + +// PB words with final -il - stressed i +agil $alt +anglofil $alt +april $alt +automobil $alt +bibliofil $alt +civil $alt +debil $alt +diskofil $alt +domicil $alt +duktil $alt +eksil $alt +facil $alt +febril $alt +fertil $alt +fissil $alt +fossil $alt +fragil $alt +fraktil $alt +frankofil $alt +futil $alt +gentil $alt +gracil $alt +gåsepotentil $alt +habil $alt +heterofil $alt +homofil $alt +hydrofil $alt +hydrofoil hydrof'Vil $alt +imbecil $alt +infantil $alt +juvenil $alt +klusil $alt +kodicil $alt +koncil $alt +kvartil $alt +labil $alt +lokomobil $alt +mandril $alt +merkantil $alt +missil $alt +mobil $alt +morlil $alt +nautil $alt +nekrofil $alt +nospil $alt +papil $alt +paskvil $alt +pastil $alt +pencil $alt +pistil $alt +postil $alt +potentil $alt +profil $alt +projektil $alt +præsenil $alt +pueril $alt +pupil $alt +pædofil $alt +reptil $alt +senil $alt +serail ser'aj $alt +servil $alt +slavofil $alt +stabil $alt +steril $alt +subtil $alt +taktil $alt +tamil $alt +tekstil $alt +tonsil $alt +tormentil $alt +vegetabil $alt +ventil $alt +viril $alt + +// PB final -inde - stressed i +admiralinde $alt +bakkantinde $alt +bestyrerinde $alt +beundrerinde $alt +danserinde $alt +derinde $alt +digterinde $alt +elskerinde $alt +forfatterinde $alt +forstanderinde $alt +fyrstinde $alt +gelinde gel'end@ $alt +gemalinde $alt +grevinde $alt +gudinde $alt +helgeninde $alt +heltinde $alt +herskerinde $alt +hertuginde $alt +husbestyrerinde $alt +hyrdinde $alt +infantinde $alt +islænderinde $alt +juelsminde $alt +jødinde $alt +kammerherreinde $alt +karrebæksminde $alt +kejserinde $alt +kerteminde $alt +konfirmandinde $alt +konsulinde $alt +konventualinde $alt +kreolerinde $alt +kunstnerinde $alt +ledsagerinde $alt +lærerinde $alt +løvinde $alt +malerinde $alt +pastorinde $alt +pianistinde $alt +priorinde $alt +provstinde $alt +præstinde $alt +rivalinde $alt +sangerinde $alt +skuespillerinde $alt +slavinde $alt +svigerinde $alt +synderinde $alt +tamarinde $alt +tjenerinde $alt +ulvinde $alt +veninde $alt +vestalinde $alt +violinistinde $alt +værtinde $alt + +// PB words with final -ni - stressed i +agoni $alt +androgyni $alt +antifoni $alt +asteni $alt +atoni $alt +baroni $alt +bibliomani $alt +bikini $alt +cannelloni k&n@l'o:ni $alt +ceremoni $alt +deponi $alt +diakoni $alt +diakroni $alt +dodekafoni $alt +erotomani $alt +eudaimoni $alt +eufomani $alt +eutoni $alt +fonasteni $alt +geni $alt +gigantomani $alt +guarani $alt +harmoni $alt +hegemoni $alt +homofoni $alt +ironi $alt +kakofoni $alt +kapellani $alt +kleptomani $alt +koloni $alt +kompagni $alt +kosmogoni $alt +kvadrofoni $alt +litani $alt +ludomani $alt +mahogni m&h'oni $alt +makaroni m&k@r'Vni $alt +mani $alt +misogyni $alt +monomani $alt +monotoni $alt +mytomani $alt +narkomani $alt +neurasteni $alt +nymfomani $alt +onani $alt +peperoni pep@r'oni $alt +pneumoni $alt +polyfoni $alt +pyromani $alt +radiofoni $alt +romani rom'&ni $alt +simoni $alt +skizofreni $alt +stereofoni $alt +symfoni $alt +synkroni $alt +telefoni $alt +termini $alt +tortellini tVt@l'ini $alt +tyranni $alt +zucchini suk'ini $alt +økumeni $alt + +// PB nouns with final -mi - stressed i +agronomi $alt +akademi $alt +alkymi $alt +anatomi $alt +antinomi $alt +antonymi $alt +anæmi $alt +astronomi $alt +autonomi $alt +bigami $alt +blasfemi $alt +bulimi $alt +diatermi $alt +dikotomi $alt +epidemi $alt +ergonomi $alt +eurytmi $alt +fysiognomi $alt +gastronomi $alt +gurami $alt +heteronomi $alt +homonymi $alt +infami $alt +kemi $alt +klitoridektomi $alt +kolostomi $alt +kryptogami $alt +leukæmi $alt +metonymi $alt +monogami $alt +origami oreg'ami $alt +pandemi $alt +pastrami p&stR'Ami $alt +polygami $alt +salami sal'&mi $alt +socionomi $alt +sodomi $alt +synonymi $alt +taksonomi $alt +trakeotomi $alt +uræmi $alt +vasektomi $alt +økonomi $alt + +// words with final "in" - stressed i +aborigin $alt +adrenalin $alt +akvamarin $alt +albumin $alt +alpin $alt +amfetamin $alt +amorin $alt +anilin $alt +antifebrin $alt +antihistamin $alt +antipyrin $alt +antitoksin $alt +appelsin $alt +atrazin $alt +atropin $alt +auksin $alt +baldakin $alt +balsamin $alt +bassin $alt +beduin $alt +bekkasin $alt +venin $alt +benzin $alt +berlin $alt +bramin $alt +bulletin byl@t'EN $alt +chagrin Sagr'EN $alt +(check-in) tjEk'in $alt +citrin $alt +damassin $alt +dekstrin $alt +delfin $alt +dentin $alt +dessin des'EN $alt +dioxin $alt +disciplin $alt +doktrin $alt +(drive-in) drajv'in $alt +dusin $alt +endokrin $alt +endorfin $alt +farin $alt +feminin $alt +fenacetin $alt +florin $alt +fytin $alt +gamin g&m'EN $alt +gardin $alt +gasolin $alt +genuin $alt +glycerin $alt +gobelin gob@l'EN $alt +gratin grAt'EN $alt +grosgrain $alt +harlekin $alt +hermelin $alt +heroin $alt +histamin $alt +hydrazin $alt +hæmoglobin $alt +insulin $alt +jasmin $alt +kamin $alt +kanin $alt +kaolin $alt +karabin $alt +karmin $alt +karmoisin $alt +karotin $alt +kasein $alt +keratin $alt +kinin $alt +kitin $alt +klementin $alt +kloramin $alt +klorin $alt +koffein $alt +kokain $alt +kromatin $alt +lanolin $alt +lapin $alt +latin $alt +latrin $alt +lecitin $alt +lignin $alt +lin $alt +(log-in) lVk'en $alt +lupin $alt +magasin $alt +mandarin $alt +mandolin $alt +mannequin m&n@k'EN $alt +margin $alt +marin $alt +marocain mAro'kEN $alt +maroquin mAro'kEN $alt +maskulin $alt +mazarin $alt +medicin $alt +melamin $alt +melanin $alt +meskalin $alt +mezzanin $alt +mokkasin $alt +morfin $alt +muezzin $alt +muffin mVf'en $alt +musselin $alt +naftalin $alt +nankin $alt +nektarin $alt +nikotin $alt +officin $alt +oilskin VjlskEn $alt +palmin $alt +paraffin $alt +pektin $alt +penicillin $alt +pepsin $alt +petidin $alt +pingvin $alt +platin $alt +pluviusin $alt +poplin pVpl'EN $alt +postelin $alt +protein $alt +ptyalin $alt +(public domain) pVblek||dom'&jn $alt +ravelin $alt +rosin $alt +rosmarin $alt +rubin $alt +ruin $alt +sakkarin $alt +sardin $alt +satin s&t'EN $alt +serpentin $alt +sordin $alt +(stand-in) st&nd'in $alt +stearin $alt +streptomycin $alt +stryknin $alt +submarin $alt +tamburin $alt +tannin $alt +tartrazin $alt +termin $alt +terpentin $alt +terrin $alt +toksin $alt +trampolin $alt +travertin $alt +trikin $alt +tuberkulin $alt +turmalin $alt +ultramarin $alt +urin $alt +vanadin $alt +vanillin $alt +vaselin $alt +vaseline $alt +velin $alt +violin $alt +vitamin $alt +zechin $alt + +// PB nouns with final -ti - stressed i +amnesti $alt +anakoluti $alt +apati $alt +aristokrati $alt +autenti $alt +autokrati $alt +bureaukrati $alt +chianti $alt +dementi $alt +demokrati $alt +despoti $alt +diplomati $alt +dynasti $alt +empati $alt +epizooti $alt +eukaristi $alt +faresti $alt +fedesti $alt +garanti $alt +graffiti grAf'iti $alt +haiti h&'i:ti $alt +homøopati $alt +idioti $alt +inerti $alt +kiromanti $alt +krestomati $alt +kreti $alt +meritokrati $alt +monokrati $alt +nekromanti $alt +ortodonti $alt +parti $alt +pleti $alt +plutokrati $alt +politi $alt +profeti $alt +provsti $alt +psykopati $alt +pæderasti $alt +sakristi $alt +supremati $alt +sympati $alt +teknokrati $alt +telepati $alt +teokrati $alt +timokrati $alt +topti $alt +travesti $alt +årti $alt + +// words with final -it - stressed i +accessit $alt +aerolit $alt +akvavit $alt +antracit $alt +antrit $alt +appendicit $alt +appetit $alt +audit $alt +bakelit $alt +bandit $alt +bauxit $alt +biskuit biskv'it $alt +bronkit $alt +christianit $alt +cockpit $alt +deficit $alt +definit $alt +dendrit $alt +dolerit $alt +dolomit $alt +duppedit $alt +dynamit $alt +ebonit $alt +ekskvisit $alt +ekspedit $alt +eksplicit $alt +eolit $alt +eremit $alt +esprit $alt +eternit $alt +facit $alt +fallit $alt +favorit $alt +ferrit $alt +finit $alt +fosforit $alt +gambit $alt +grafit $alt +granit $alt +graptolit $alt +habit $alt +hamit $alt +hermafrodit $alt +hittit $alt +inkvit $alt +inquit $alt +inuit $alt +islamit $alt +israelit $alt +jesuit $alt +kilobit $alt +kokkolit $alt +kolorit $alt +komposit $alt +konvertit $alt +kosmopolit $alt +kredit $alt +kryolit $alt +krysolit $alt +kvartsit $alt +kvirrevit $alt +kvivit $alt +levit $alt +limit $alt +magnesit $alt +malakit $alt +margerit $alt +marguerit $alt +maribonit $alt +marmit $alt +masonit $alt +megabit $alt +megalit $alt +merit $alt +meteorit $alt +metropolit $alt +mikrolit $alt +monolit $alt +moskovit $alt +musvit $alt +nakskovit $alt +nibenit $alt +nibonit $alt +nitrit $alt +nonnetit $alt +nørresundbynit $alt +ortoceratit $alt +parakit $alt +parasit $alt +petit $alt +plebiscit $alt +pomfrit $alt +profit $alt +prosit $alt +rekvisit $alt +respit $alt +rødbynit $alt +samarit $alt +satellit $alt +semit $alt +shiit $alt +skibonit $alt +sodomit $alt +soffit $alt +stakit $alt +stalagmit $alt +stalaktit $alt +sulfit $alt +sundbynit $alt +sunnit $alt +sybarit $alt +sæbynit $alt +teodolit $alt +termit $alt +transit $alt +transvestit $alt +unit $alt +visit $alt +yemenit $alt +zeolit $alt + +// PB nouns with final -ium - stress on previous syllable +adverbium $alt +akvarium $alt +aluminium $alt +ambulatorium $alt +amfibium $alt +ammonium $alt +antependium $alt +auditorium $alt +auspicium $alt +beneficium $alt +beryllium $alt +bromkalium $alt +cyankalium $alt +decennium $alt +delfinarium $alt +delirium $alt +deuterium $alt +diplomatarium $alt +dokumentarium $alt +eksaminatorium $alt +eksperimentarium $alt +elysium $alt +epitafium $alt +evangelium $alt +geranium $alt +germanium $alt +gerundium $alt +glosarium $alt +glossarium $alt +gymnasium $alt +harmonium $alt +herbarium $alt +imperium $alt +indicium $alt +ingenium $alt +instrumentarium $alt +interludium $alt +intermedium $alt +iridium $alt +judicium $alt +kalendarium $alt +kaprifolium $alt +kenotafium $alt +klimakterium $alt +kollegium $alt +kollodium $alt +kollokvium $alt +kolofonium $alt +kolumbarium $alt +kommissorium $alt +kompendium $alt +koncilium $alt +konservatorium $alt +konsilium $alt +konsistorium $alt +konsortium $alt +krematorium $alt +kriterium $alt +kuratorium $alt +laboratorium $alt +magnesium $alt +martyrium $alt +millennium $alt +ministerium $alt +moratorium $alt +mycelium $alt +mysterium $alt +neptunium $alt +niobium $alt +nobelium $alt +observatorium $alt +offertorium $alt +oratorium $alt +ovarium $alt +palladium $alt +participium $alt +planetarium $alt +plutonium $alt +polonium $alt +polynomium $alt +postludium $alt +privilegium $alt +proprium $alt +proscenium $alt +provisorium $alt +præludium $alt +præsidium $alt +refektorium $alt +refugium $alt +remedium $alt +responsorium $alt +sammensurium $alt +sanatorium $alt +scenarium $alt +seminarium $alt +silentium $alt +silicium $alt +skuffedarium $alt +solarium $alt +stipendium $alt +suppositorium $alt +suspensorium $alt +symposium $alt +sælarium $alt +terrarium $alt +territorium $alt +testimonium $alt +titanium $alt +vanadium $alt +vivarium $alt +vokabularium $alt + +// PB words with final -ie - stress on the previous syllable +akacie $alt +aralie $alt +arterie $alt +bakterie $alt +begonie $alt +betonie $alt +bravurarie $alt +bcikorie $alt +endivie $alt +familie $alt +geranie $alt +gymnasie $alt +historie $alt +hortensie $alt +infusorie $alt +injurie $alt +kalorie $alt +kaprifolie $alt +kemikalie $alt +klenodie $alt +koloraturarie $alt +komedie $alt +konkylie $alt +lobelie $alt +magnolie $alt +mahonie $alt +materie $alt +nasturtie $alt +nektarie $alt +ovarie $alt +pelargonie $alt +pistacie $alt +relikvie $alt +repressalie $alt +robinie $alt +samarie $alt +scenarie $alt +valkyrie $alt + +// PB nouns with final -esse - stressed last syllable +adresse $alt +akkuratesse $alt +baronesse $alt +dekanesse $alt +delikatesse $alt +duchesse $alt +finesse $alt +interesse $alt +komtesse $alt +largesse $alt +maitresse $alt +noblesse $alt +patronesse $alt +petitesse $alt +prinsesse $alt +rimesse $alt +stewardesse $alt +tristesse $alt + +//PB words with final -isk - stress on the previous syllable +abkhasisk $alt +absolutistisk $alt +absurdistisk $alt +accessorisk $alt +advokatorisk $alt +aeronautisk $alt +afatisk $alt +aforistisk $alt +agitatorisk $alt +agnatisk $alt +agnostisk $alt +agrarisk $alt +agronomisk $alt +akademisk $alt +akkusativisk $alt +akrobatisk $alt +akromatisk $alt +aksiomatisk $alt +aksonometrisk $alt +aktivisk $alt +aktivistisk $alt +akustisk $alt +alamodisk $alt +aleatorisk $alt +alemannisk $alt +alfabetisk $alt +algebraisk $alt +algerisk $alt +algoritmisk $alt +alkalisk $alt +alkoholisk $alt +alkymistisk $alt +allegorisk $alt +allergisk $alt +allergologisk $alt +allusorisk $alt +alsacisk $alt +altruistisk $alt +amatøristisk $alt +ambrosisk $alt +ambulatorisk $alt +amfibisk $alt +anaforisk $alt +anakolutisk $alt +anakronistisk $alt +analogisk $alt +analytisk $alt +anapæstisk $alt +anarkisk $alt +anarkistisk $alt +anatomisk $alt +andalusisk $alt +anekdotisk $alt +angelsaksisk $alt +animistisk $alt +annalistisk $alt +anorektisk $alt +antagonistisk $alt +antarktisk $alt +antikvarisk $alt +antiseptisk $alt +antitetisk $alt +antropologisk $alt +anæmisk $alt +anæstesiologisk $alt +anæstetisk $alt +apatisk $alt +aperiodisk $alt +apokalyptisk $alt +apokryfisk $alt +apologetisk $alt +apoplektisk $alt +apostolisk $alt +appellativisk $alt +apriorisk $alt +arabisk $alt +aramaisk $alt +aramæisk $alt +argumentatorisk $alt +aristokratisk $alt +aristotelisk $alt +aritmetisk $alt +arkadisk $alt +arkaisk $alt +arkaistisk $alt +arkimedisk $alt +arkitektonisk $alt +arkæologisk $alt +aromatisk $alt +artesisk $alt +artikulatorisk $alt +artistisk $alt +asiatisk $alt +asketisk $alt +assyrisk $alt +astenisk $alt +asterisk $alt +astigmatisk $alt +astmatisk $alt +atavistisk $alt +ateistisk $alt +atheniensisk $alt +athenæisk $alt +atlantisk $alt +atletisk $alt +atmosfærisk $alt +atomisk $alt +atomistisk $alt +atrofisk $alt +audiologisk $alt +autarkisk $alt +autentisk $alt +autistisk $alt +autografisk $alt +autokratisk $alt +automatisk $alt +avantgardistisk $alt +aztekisk $alt +babylonisk $alt +bakkantisk $alt +bakteriologisk $alt +balearisk $alt +ballistisk $alt +balsamisk $alt +balstyrisk $alt +bangladeshisk $alt +baptistisk $alt +barbadisk $alt +barbarisk $alt +barometrisk $alt +basilisk $alt +bedragerisk $alt +behavioristisk $alt +belizisk $alt +belletristisk $alt +berberisk $alt +bergensisk $alt +bibliografisk $alt +bibliotekarisk $alt +biofysisk $alt +biografisk $alt +biologisk $alt +biometrisk $alt +biorytmisk $alt +biotisk $alt +biscayisk $alt +blasfemisk $alt +bolsjevikisk $alt +bolsjevistisk $alt +bombastisk $alt +bonapartistisk $alt +botanisk $alt +bromatologisk $alt +bruneisk $alt +brutalistisk $alt +bryologisk $alt +buddhistisk $alt +bukolisk $alt +bulimisk $alt +bureaukratisk $alt +burgundisk $alt +burmesisk $alt +burundisk $alt +californisk $alt +calvinistisk $alt +canadisk $alt +caribisk $alt +centralistisk $alt +ceylonesisk $alt +chauvinistisk $alt +civilisatorisk $alt +comorisk $alt +congolesisk $alt +cylindrisk $alt +cypriotisk $alt +cytogenetisk $alt +cytoplasmisk $alt +cæsarisk $alt +dadaistisk $alt +daktylisk $alt +darwinistisk $alt +datalogisk $alt +datamatisk $alt +decentralistisk $alt +defaitistisk $alt +definitorisk $alt +deflatorisk $alt +deiktisk $alt +deistisk $alt +dekadisk $alt +deklamatorisk $alt +deklaratorisk $alt +delirisk $alt +deliristisk $alt +demagogisk $alt +demografisk $alt +demokratisk $alt +dendrokronologisk $alt +dendrologisk $alt +densitometrisk $alt +dermatologisk $alt +despotisk $alt +detektivisk $alt +deterministisk $alt +diabetisk $alt +diagnostisk $alt +diagrammatisk $alt +diakritisk $alt +diakronisk $alt +dialektisk $alt +dialektologisk $alt +dialogisk $alt +diastolisk $alt +diatonisk $alt +didaktisk $alt +diftongisk $alt +dikotomisk $alt +diktatorisk $alt +dilettantisk $alt +dionysisk $alt +diplomatarisk $alt +diplomatisk $alt +dirigistisk $alt +diskografisk $alt +diskriminatorisk $alt +dityrambisk $alt +diuretisk $alt +divinatorisk $alt +diætetisk $alt +djiboutisk $alt +dogmatisk $alt +dokumentarisk $alt +domestisk $alt +drakonisk $alt +dramatisk $alt +dramaturgisk $alt +dravidisk $alt +druidisk $alt +drusisk $alt +dualistisk $alt +durativisk $alt +dynamisk $alt +dynastisk $alt +dysfatisk $alt +dyslektisk $alt +dyspeptisk $alt +dæmonisk $alt +efemerisk $alt +egocentrisk $alt +egoistisk $alt +egyptisk $alt +egyptologisk $alt +eklektisk $alt +ekliptisk $alt +eksaminatorisk $alt +eksegetisk $alt +eksemplarisk $alt +ekshibitionistisk $alt +eksistentialistisk $alt +eksoterisk $alt +eksotisk $alt +ekspansionistisk $alt +ekspressionistisk $alt +ekstatisk $alt +ekstraparlamentarisk $alt +ekstremistisk $alt +ekvilibristisk $alt +elastisk $alt +elegisk $alt +elektrisk $alt +elektrolytisk $alt +elektronisk $alt +elektrostatisk $alt +elitistisk $alt +elliptisk $alt +elsassisk $alt +elysisk $alt +elysæisk $alt +emancipatorisk $alt +emblematisk $alt +embryonisk $alt +emfatisk $alt +empatisk $alt +empirisk $alt +empiristisk $alt +encyklisk $alt +encyklopædisk $alt +energetisk $alt +energisk $alt +enigmatisk $alt +enklitisk $alt +entomologisk $alt +entusiastisk $alt +enzymatisk $alt +epidemiologisk $alt +epidemisk $alt +epigrafisk $alt +epigrammatisk $alt +epikuræisk $alt +epileptisk $alt +episodisk $alt +eremitisk $alt +ergonomisk $alt +eritreisk $alt +erotisk $alt +erratisk $alt +eskapistisk $alt +eskatologisk $alt +eskimoisk $alt +eskimologisk $alt +esoterisk $alt +essayistisk $alt +etiopisk $alt +etnocentrisk $alt +etnografisk $alt +etnologisk $alt +etruskisk $alt +etymologisk $alt +eufemistisk $alt +euforisk $alt +eugenisk $alt +euklidisk $alt +eurasisk $alt +europæisk $alt +eustakisk $alt +evangelisk $alt +evasorisk $alt +evolutionistisk $alt +excentrisk $alt +falangistisk $alt +fanatisk $alt +fantastisk $alt +faraonisk $alt +farisæisk $alt +farmaceutisk $alt +farmakognostisk $alt +farmakologisk $alt +fascistisk $alt +fatalistisk $alt +fauvistisk $alt +federalistisk $alt +feministisk $alt +feminologisk $alt +fennoskandisk $alt +fetichistisk $alt +feudalistisk $alt +fiberoptisk $alt +fideikommissarisk $alt +filantropisk $alt +filatelistisk $alt +filharmonisk $alt +filmologisk $alt +filologisk $alt +filosofisk $alt +flagellantisk $alt +flegmatisk $alt +floristisk $alt +folkloristisk $alt +fonematisk $alt +fonetisk $alt +fonografisk $alt +fonologisk $alt +forbryderisk $alt +forensisk $alt +forførerisk $alt +forførisk $alt +formalistisk $alt +forræderisk $alt +fortifikatorisk $alt +fotografisk $alt +fotogrammetrisk $alt +fragmentarisk $alt +fraseologisk $alt +frenetisk $alt +frenologisk $alt +fundamentalistisk $alt +funktionalistisk $alt +futurisk $alt +futuristisk $alt +futurologisk $alt +fylogenetisk $alt +fysiognomisk $alt +fysiologisk $alt +fysiurgisk $alt +fænomenologisk $alt +føderalistisk $alt +fønikisk $alt +gabonesisk $alt +galaktisk $alt +galilæisk $alt +galvanisk $alt +gastronomisk $alt +gastroskopisk $alt +gaullistisk $alt +gemmologisk $alt +genealogisk $alt +generisk $alt +genetisk $alt +genitivisk $alt +geocentrisk $alt +geodætisk $alt +geoelektrisk $alt +geofysisk $alt +geografisk $alt +geokemisk $alt +geologisk $alt +geometrisk $alt +georgisk $alt +georgistisk $alt +geriatrisk $alt +germanistisk $alt +gerontologisk $alt +gerundivisk $alt +ghanesisk $alt +gigantisk $alt +glaciologisk $alt +grafologisk $alt +grafonomisk $alt +grammatisk $alt +gravitetisk $alt +grenadisk $alt +gymnastisk $alt +gynækologisk $alt +gyratorisk $alt +haitisk $alt +hallucinatorisk $alt +hamitisk $alt +hanseatisk $alt +harmonisk $alt +hebraisk $alt +hebræisk $alt +hedonistisk $alt +hegemonisk $alt +hegemonistisk $alt +heksametrisk $alt +heliocentrisk $alt +hellenistisk $alt +helvetisk $alt +hemicyklisk $alt +hemisfærisk $alt +heraldisk $alt +herkulisk $alt +hermafroditisk $alt +hermeneutisk $alt +hermetisk $alt +heroisk $alt +herostratisk $alt +herpetologisk $alt +herrnhutisk $alt +heuristisk $alt +hierarkisk $alt +hieroglyfisk $alt +hinduisk $alt +hinduistisk $alt +hippologisk $alt +histologisk $alt +historicistisk $alt +historiografisk $alt +historisk $alt +historistisk $alt +hittitisk $alt +holistisk $alt +holografisk $alt +homerisk $alt +homiletisk $alt +homøopatisk $alt +hottentottisk $alt +huguenottisk $alt +humanbiologisk $alt +humanistisk $alt +humoristisk $alt +hydraulisk $alt +hydrodynamisk $alt +hydroelektrisk $alt +hydrografisk $alt +hydrologisk $alt +hydrolytisk $alt +hydromekanisk $alt +hydrostatisk $alt +hydroteknisk $alt +hygiejnisk $alt +hygroskopisk $alt +hypnotisk $alt +hypokondrisk $alt +hypotaktisk $alt +hypotetisk $alt +hysterisk $alt +hæretisk $alt +iberisk $alt +idealistisk $alt +identisk $alt +ideografisk $alt +ideologisk $alt +idiomatisk $alt +idiosynkratisk $alt +idiotisk $alt +idyllisk $alt +ikarisk $alt +ikonisk $alt +ikonografisk $alt +illusionistisk $alt +illusorisk $alt +immunologisk $alt +imperativisk $alt +imperatorisk $alt +imperialistisk $alt +impressionistisk $alt +improvisatorisk $alt +indikativisk $alt +individualistisk $alt +indoeuropæisk $alt +indokinesisk $alt +indologisk $alt +indonesisk $alt +infinitivisk $alt +inflammatorisk $alt +inflatorisk $alt +informatorisk $alt +inhibitorisk $alt +inkvisitorisk $alt +inspiratorisk $alt +intellektualistisk $alt +interimistisk $alt +internationalistisk $alt +inuitisk $alt +irakisk $alt +irokesisk $alt +ironisk $alt +iskiadisk $alt +islamisk $alt +islamistisk $alt +islamitisk $alt +isolationistisk $alt +isometrisk $alt +isotermisk $alt +israelitisk $alt +italisk $alt +javanesisk $alt +jesuitisk $alt +journalistisk $alt +judaistisk $alt +jugoslavisk $alt +junonisk $alt +juridisk $alt +kabbalistisk $alt +kakofonisk $alt +kalejdoskopisk $alt +kalendarisk $alt +kalkulatorisk $alt +kalligrafisk $alt +kalmukisk $alt +kalmykisk $alt +kalorimetrisk $alt +kamæleontisk $alt +kanaanæisk $alt +kanarisk $alt +kannibalistisk $alt +kanonisk $alt +kanaanæisk $alt +kaotisk $alt +kapitalistisk $alt +kapverdisk $alt +karakteristisk $alt +karakterologisk $alt +kardiografisk $alt +kardiologisk $alt +karismatisk $alt +karolingisk $alt +kartaginiensisk $alt +kartagisk $alt +kartografisk $alt +kasakhisk $alt +kasuistisk $alt +kataleptisk $alt +katalytisk $alt +katapultisk $alt +kategorisk $alt +kateketisk $alt +katodisk $alt +kaukasisk $alt +kemigrafisk $alt +keramisk $alt +kerubisk $alt +khmerisk $alt +kiastisk $alt +kimærisk $alt +kinematografisk $alt +kinesiologisk $alt +kinesisk $alt +kinetisk $alt +kinæstetisk $alt +kirgisisk $alt +kiribatisk $alt +kiromantisk $alt +kiropraktisk $alt +kirurgisk $alt +klassicistisk $alt +klassifikatorisk $alt +klaustrofobisk $alt +klimatisk $alt +klimatologisk $alt +kognatisk $alt +kolerisk $alt +kollektivistisk $alt +kolonialistisk $alt +kolorimetrisk $alt +koloristisk $alt +kombinatorisk $alt +kommissarisk $alt +kommunalpolitisk $alt +kommunistisk $alt +kommunitaristisk $alt +kompensatorisk $alt +kompilatorisk $alt +kompositorisk $alt +koncentrisk $alt +konfiskatorisk $alt +konformistisk $alt +konkretistisk $alt +konsonantisk $alt +konspiratorisk $alt +konstruktivistisk $alt +kontradiktorisk $alt +kontrafaktisk $alt +kontrapunktisk $alt +konvulsivisk $alt +kopulatorisk $alt +koreografisk $alt +korintisk $alt +kosakisk $alt +kosmetisk $alt +kosmogonisk $alt +kosmologisk $alt +kosmonautisk $alt +kosmopolitisk $alt +kreationistisk $alt +kremlologisk $alt +kretensisk $alt +krigerisk $alt +kriminalistisk $alt +kriminologisk $alt +kristologisk $alt +kroatisk $alt +kromatisk $alt +kromatografisk $alt +kronologisk $alt +kronometrisk $alt +kryoteknisk $alt +kryptografisk $alt +krystallisk $alt +krystallografisk $alt +kubistisk $alt +kuffertfisk $alt +kulinarisk $alt +kursorisk $alt +kuwaitisk $alt +kvadratisk $alt +kvadrofonisk $alt +kvaksalverisk $alt +kværulantisk $alt +kybernetisk $alt +kyrillisk $alt +køgensisk $alt +labyrintisk $alt +lakonisk $alt +lamaistisk $alt +langobardisk $alt +laotisk $alt +lapidarisk $alt +lappisk $alt +laryngologisk $alt +legendarisk $alt +legitimistisk $alt +leksikografisk $alt +leninistisk $alt +lesothisk $alt +letargisk $alt +levantisk $alt +levitisk $alt +libanesisk $alt +liberalistisk $alt +liberisk $alt +lilleasiatisk $alt +lingvistisk $alt +litografisk $alt +litotisk $alt +liturgisk $alt +logaritmisk $alt +logistisk $alt +logopædisk $alt +lombardisk $alt +longobardisk $alt +loyalistisk $alt +lukullisk $alt +lunatisk $alt +lundensisk $alt +lymfatisk $alt +madagaskisk $alt +magnetisk $alt +magyarisk $alt +majestætisk $alt +makaronisk $alt +makedonisk $alt +makroskopisk $alt +malabarisk $alt +malajisk $alt +malawisk $alt +malaysisk $alt +maldivisk $alt +maltesisk $alt +manchurisk $alt +manipulatorisk $alt +manisk $alt +maoistisk $alt +martyrisk $alt +marxistisk $alt +masochistisk $alt +mastodontisk $alt +matematisk $alt +materialistisk $alt +mauritisk $alt +mediumistisk $alt +mefistofelisk $alt +mekanisk $alt +mekanistisk $alt +melanesisk $alt +melodisk $alt +melodramatisk $alt +menisk men'isk $alt +mensjevikisk $alt +merkantilistisk $alt +merovingisk $alt +mesopotamisk $alt +mesozoisk $alt +metabolisk $alt +metaforisk $alt +metafysisk $alt +metallisk $alt +metallografisk $alt +metallurgisk $alt +metamorfisk $alt +metastatisk $alt +meteorisk $alt +meteorologisk $alt +metodisk $alt +metodistisk $alt +metodologisk $alt +metonymisk $alt +metrologisk $alt +mikrofonisk $alt +mikronesisk $alt +mikroskopisk $alt +milanesisk $alt +militaristisk $alt +militærisk $alt +mineralogisk $alt +minimalistisk $alt +minoisk $alt +misantropisk $alt +mistroisk $alt +mnemoteknisk $alt +mocambiquisk $alt +modernistisk $alt +moldovisk $alt +molinologisk $alt +monarkisk $alt +monarkistisk $alt +monegaskisk $alt +monetaristisk $alt +monistisk $alt +monofonisk $alt +monografisk $alt +monokromatisk $alt +monolitisk $alt +monologisk $alt +monopolistisk $alt +monoteistisk $alt +moralistisk $alt +morfematisk $alt +morfologisk $alt +morganatisk $alt +mosaisk $alt +moskovitisk $alt +motivisk $alt +motorisk $alt +mozambiquisk $alt +multietnisk $alt +musikantisk $alt +mykologisk $alt +mystifistisk $alt +mytologisk $alt +naivistisk $alt +namibisk $alt +narcissistisk $alt +narkotisk $alt +nationalistisk $alt +naturalistisk $alt +navigatorisk $alt +nazistisk $alt +nedersaksisk $alt +negativistisk $alt +nekrotisk $alt +neolitisk $alt +nepalesisk $alt +nepotistisk $alt +neuralgisk $alt +neurastenisk $alt +neurologisk $alt +neurotisk $alt +neutralistisk $alt +nihilistisk $alt +nomadisk $alt +nomenklatorisk $alt +nomografisk $alt +nonkonformistisk $alt +normannisk $alt +nostalgisk $alt +notorisk $alt +novellistisk $alt +nudistisk $alt +numerisk $alt +numismatisk $alt +obligatorisk $alt +obskurantisk $alt +obstetrisk $alt +oceanisk $alt +oceanografisk $alt +oceanologisk $alt +odalisk odal'isk $alt +odontologisk $alt +oftalmologisk $alt +oligarkisk $alt +olympisk $alt +onkologisk $alt +onomatopoietisk $alt +ontogenetisk $alt +ontologisk $alt +opportunistisk $alt +optativisk $alt +optimistisk $alt +oratorisk $alt +organisatorisk $alt +organisk $alt +orgastisk $alt +orgiastisk $alt +orknøisk $alt +ornitologisk $alt +ortodontisk $alt +ortografisk $alt +ortopædisk $alt +osmannisk $alt +osmotisk $alt +ostindisk $alt +pacifistisk $alt +palæografisk $alt +palæolitisk $alt +palæontologisk $alt +palæstinensisk $alt +pandemisk $alt +panegyrisk $alt +pankromatisk $alt +panoramisk $alt +panteistisk $alt +pantomimisk $alt +papistisk $alt +parabolisk $alt +paradigmatisk $alt +paradisisk $alt +parallaktisk $alt +paralytisk $alt +parasitisk $alt +paratagmatisk $alt +parataktisk $alt +parentetisk $alt +parisisk $alt +paritetisk $alt +parlamentarisk $alt +parodisk $alt +partikularistisk $alt +partisk $alt +passivisk $alt +paternalistisk $alt +patetisk $alt +patologisk $alt +patricisk $alt +patriotisk $alt +pedantisk $alt +pelagisk $alt +peloponnesisk $alt +pengegrisk $alt +perfektionistisk $alt +periferisk $alt +periodisk $alt +peripatetisk $alt +peristaltisk $alt +perspektivisk $alt +pessimistisk $alt +pianistisk $alt +pietistisk $alt +planetarisk $alt +plastisk $alt +platonisk $alt +plebejisk $alt +pleonastisk $alt +pluralistisk $alt +plutokratisk $alt +plutonisk $alt +pneumatisk $alt +poetisk $alt +pointillistisk $alt +polemisk $alt +polisk pol'isk $alt +politisk $alt +politologisk $alt +polyandrisk $alt +polycentrisk $alt +polynesisk $alt +polyrytmisk $alt +polyteistisk $alt +polyteknisk $alt +populistisk $alt +pornografisk $alt +portugisisk $alt +positivistisk $alt +pragmatisk $alt +prismatisk $alt +privatistisk $alt +problematisk $alt +procentisk $alt +profetisk $alt +profylaktisk $alt +prognostisk $alt +programmatisk $alt +proklitisk $alt +proletarisk $alt +propagandistisk $alt +propædeutisk $alt +prosaisk $alt +prosodisk $alt +protestantisk $alt +prototypisk $alt +provisorisk $alt +provokatorisk $alt +præsentisk $alt +prøjsisk $alt +psykedelisk $alt +psykiatrisk $alt +psykisk $alt +psykoanalytisk $alt +psykodelisk $alt +psykofysisk $alt +psykokemisk $alt +psykolingvistisk $alt +psykologisk $alt +psykopatisk $alt +psykopatologisk $alt +psykotisk $alt +ptolemæisk $alt +publicistisk $alt +puristisk $alt +pygmæisk $alt +pyrenæisk $alt +pyroteknisk $alt +pythagoræisk $alt +pædagogisk $alt +pæderastisk $alt +pædiatrisk $alt +rabulistisk $alt +racistisk $alt +radiofonisk $alt +radiologisk $alt +rafaelisk $alt +rakitisk $alt +rapsodisk $alt +rationalistisk $alt +realistisk $alt +recitativisk $alt +reflektorisk $alt +reformatorisk $alt +reformistisk $alt +regionalistisk $alt +reglementarisk $alt +relativistisk $alt +reprografisk $alt +respiratorisk $alt +rethaverisk $alt +retorisk $alt +reumatisk $alt +reumatologisk $alt +revanchistisk $alt +revisionistisk $alt +rigoristisk $alt +ripensisk $alt +ritualistisk $alt +romantisk $alt +rombisk $alt +roskildensisk $alt +royalistisk $alt +runologisk $alt +saddukæisk $alt +sadistisk $alt +sadomasochistisk $alt +saksisk $alt +salomonisk $alt +samojedisk $alt +sanmarinesisk $alt +sansemotorisk $alt +sapfisk $alt +saracenisk $alt +sardonisk $alt +sarkastisk $alt +satanisk $alt +satanistisk $alt +satirisk $alt +satyrisk $alt +saudiarabisk $alt +saudisk $alt +scenarisk $alt +scenisk $alt +scenografisk $alt +seismografisk $alt +seismologisk $alt +sekterisk $alt +selvbiografisk $alt +selvironisk $alt +semantisk $alt +seminaristisk $alt +semiologisk $alt +semiotisk $alt +semitisk $alt +senegalesisk $alt +sensationalistisk $alt +sensomotorisk $alt +sensorisk $alt +sensualistisk $alt +separatistisk $alt +serafisk $alt +serbisk $alt +serbokroatisk $alt +serologisk $alt +sexistisk $alt +sexologisk $alt +seychellisk $alt +sfærisk $alt +shiitisk $alt +siamesisk $alt +sibirisk $alt +siderisk $alt +singalesisk $alt +sinologisk $alt +skandinavisk $alt +skandinavistisk $alt +skematisk $alt +skismatisk $alt +skolastisk $alt +slovakisk $alt +snobbistisk $alt +socialistisk $alt +sociologisk $alt +sodomitisk $alt +sofistisk $alt +sokratisk $alt +solidarisk $alt +solistisk $alt +somalisk $alt +somatisk $alt +sorbisk $alt +sovjetisk $alt +spasmodisk $alt +spirantisk $alt +spiritistisk $alt +spiritualistisk $alt +spondæisk $alt +spontanistisk $alt +sporadisk $alt +stalinistisk $alt +statarisk $alt +statistisk $alt +statuarisk $alt +stenografisk $alt +stereofonisk $alt +stereometrisk $alt +stereoskopisk $alt +stetoskopisk $alt +stilistisk $alt +stokastisk $alt +strategisk $alt +stratosfærisk $alt +stroboskopisk $alt +strofisk $alt +strukturalistisk $alt +støkiometrisk $alt +subarktisk $alt +subjektivisk $alt +subjektivistisk $alt +subsonisk $alt +substantivisk $alt +subtropisk $alt +sudanesisk $alt +sumerisk $alt +summarisk $alt +sunnitisk $alt +superelliptisk $alt +superlativisk $alt +supersonisk $alt +supranaturalistisk $alt +surrealistisk $alt +sybaritisk $alt +syfilitisk $alt +syllabisk $alt +syllogistisk $alt +symbiotisk $alt +symbolistisk $alt +symfonisk $alt +symmetrisk $alt +sympatetisk $alt +sympatisk $alt +symptomatisk $alt +syndikalistisk $alt +synergetisk $alt +synkretistisk $alt +synkronisk $alt +synodisk $alt +synoptisk $alt +syntagmatisk $alt +syntaktisk $alt +syntetisk $alt +synæstetisk $alt +systematisk $alt +systemisk $alt +systolisk $alt +tabellarisk $alt +tachistisk $alt +tadsjikisk $alt +taksonomisk $alt +talmudisk $alt +tamarisk $alt +tantalisk $alt +tanzanisk $alt +taoistisk $alt +tatarisk $alt +tautologisk $alt +teistisk $alt +teknokratisk $alt +teknologisk $alt +tektonisk $alt +telefonisk $alt +telegrafisk $alt +telekinetisk $alt +telematisk $alt +telemetrisk $alt +teleologisk $alt +telepatisk $alt +teleskopisk $alt +teleteknisk $alt +tellurisk $alt +tematisk $alt +teokratisk $alt +teologisk $alt +teoretisk $alt +teosofisk $alt +terapeutisk $alt +terminologisk $alt +termodynamisk $alt +termografisk $alt +termometrisk $alt +termoplastisk $alt +termostatisk $alt +terrestrisk $alt +terroristisk $alt +testamentarisk $alt +teutonisk $alt +thomistisk $alt +timokratisk $alt +titanisk $alt +tjekkoslovakisk $alt +togolesisk $alt +toksikologisk $alt +tomografisk $alt +topografisk $alt +topologisk $alt +tornirisk $alt +totalitaristisk $alt +totemistisk $alt +transatlantisk $alt +transvestitisk $alt +traumatisk $alt +trigonometrisk $alt +trinidadisk $alt +trokæisk $alt +trotskistisk $alt +tsaristisk $alt +tuaregisk $alt +tumultarisk $alt +tumultuarisk $alt +tunesisk $alt +turistisk $alt +typografisk $alt +typologisk $alt +tyrannisk $alt +ugandisk $alt +uniformistisk $alt +unionistisk $alt +unitarisk $alt +universalistisk $alt +urologisk $alt +uræmisk $alt +usbekisk $alt +usurpatorisk $alt +utilitaristisk $alt +utopisk $alt +valutarisk $alt +vanuatisk $alt +vardensisk $alt +vasomotorisk $alt +vegetarisk $alt +vejlensisk $alt +venerisk $alt +venerologisk $alt +veristisk $alt +versifikatorisk $alt +vietnamesisk $alt +virologisk $alt +vitalistisk $alt +vokalisk $alt +vokativisk $alt +voyeuristisk $alt +walisisk $alt +xenofobisk $alt +xerografisk $alt +xylografisk $alt +yemenitisk $alt +zairisk $alt +zaristisk $alt +zelotisk $alt +zimbabwisk $alt +zionistisk $alt +zoologisk $alt +ægyptisk $alt +ægyptologisk $alt +ægæisk $alt +ækvilibristisk $alt +æolisk $alt +æstetisk $alt +æterisk $alt +ætiologisk $alt +økologisk $alt +økonometrisk $alt +økonomisk $alt +økumenisk $alt + +// PB final -ol - stressed o +aerosol $alt +alkohol $alt +anabol $alt +atol $alt +benzol $alt +chatol $alt +duopol $alt +fenol $alt +fiol $alt +frivol $alt +glycerol $alt +glykol $alt +gondol $alt +idol $alt +kapriol $alt +karambol $alt +karbol $alt +karneol $alt +karriol $alt +kolesterol $alt +konsol $alt +kontrol $alt +kreol $alt +kresol $alt +mentol $alt +metanol $alt +metropol $alt +mongol $alt +monopol $alt +obol $alt +parabol $alt +parasol $alt +petrol $alt +pinol $alt +pirol $alt +pistol $alt +protokol $alt +reol $alt +sorbitol $alt +spaniol $alt +stanniol $alt +sulfatiazol $alt +symbol $alt +triol $alt +tyrol $alt +viol $alt +vitriol $alt +ætanol $alt + // PB Words ending on -ig have stress on the previous syllable. // They keep the stress when a syllable is added after the word // e.g. agtv'ærdig - agtv'ærdighed // A 'u' can be placed before most of the words, and they'll still keep the stress // e.g. uagtv'ærdig - like English friendly, unfriendly. // However, if you add any other word in front of them, -// they'll revert to normal stress e.g 'overagtværdig. +// they'll revert to normal stress e.g 'overagtværdig. // Quite a few words have been omittet because they are covered by other rules. // A large number of words beginning with u- have been removed. // A few words might not belong here - some of them I didn't know. @@ -797,7 +4487,7 @@ ynkværdig $alt ærbødig $alt ærefrygtig $alt ærgerrig $alt -ærværdig $alt +ærværdig $alt ømfindtlig $alt ømtålelig $alt ømtålig $alt @@ -1112,1740 +4802,3077 @@ våseri $alt økonometri $alt // PB verbs ending with -ere with stress on the next to last syllable -abandonnere $alt -abbreviere $alt -abdicere $alt -abonnere $alt +// In order to make this work when the "e" has been removed from -ere +// the words are listed without the final "e". +// In other words "abandonner" is actually the verb "abandonnere" +// but we can make a rule that will keep the stress and the phoneme +// when the order "abandonner!" is given. +// By the way, this is not Danish. We would not say "abandonner skibet", +// "abandon ship!" - it's just a way to explain things. +// NB quite a few words have the full -ere ending since they collide with +// the plural ending of the nouns: spioner - plural: [spi'onV] +abandonner $alt +abbrevier $alt +abdicer $alt +abonner $alt abortere $alt -absentere $alt -absolvere $alt -absorbere $alt -abstinere $alt -abstrahere $alt -accelerere $alt -accentuere $alt -acceptere $alt +absenter $alt +absolver $alt +absorber $alt +abstiner $alt +abstraher $alt +accelerer $alt +accentuer $alt +accepter $alt adaptere $alt -addere $alt -adhærere $alt -adjungere $alt -administrere $alt -admittere $alt -adoptere $alt -adoucere $alt +adder $alt +adhærer $alt +adjunger $alt +administrer $alt +admitter $alt +adopter $alt +adoucer $alt adressere $alt -adsorbere $alt -adstringere $alt -advisere $alt -advokere $alt -afficere $alt -afmarchere $alt -afrikanisere $alt +adsorber $alt +adstringer $alt +adviser $alt +advoker $alt +afficer $alt +afmarcher $alt +afrikaniser $alt agere $alt -aggravere $alt -aggregere $alt -agitere $alt -akademisere $alt -akklimatisere $alt -akkolere $alt -akkommodere $alt -akkompagnere $alt +aggraver $alt +aggreger $alt +agiter $alt +akademiser $alt +akklimatiser $alt +akkoler $alt +akkommoder $alt +akkompagner $alt akkordere $alt -akkreditere $alt -akkumulere $alt -akkviescere $alt -akkvirere $alt +akkrediter $alt +akkumuler $alt +akkviescer $alt +akkvirer $alt aktere $alt aktionere $alt aktivere $alt -aktivisere $alt -aktualisere $alt +aktiviser $alt +aktualiser $alt alarmere $alt -alfabetisere $alt -alkalisere $alt -allegorisere $alt -alliere $alt -allitterere $alt -allokere $alt -alludere $alt -alterere $alt -alternere $alt -amalgamere $alt +alfabetiser $alt +alkaliser $alt +allegoriser $alt +allier $alt +allitterer $alt +alloker $alt +alluder $alt +alterer $alt +alterner $alt +amalgamer $alt ambitionere $alt -ambulere $alt -amerikanisere $alt -amnestere $alt -amortisere $alt -ampere $alt -amputere $alt -analogisere $alt +ambuler $alt +amerikaniser $alt +amnester $alt +amortiser $alt +amper $alt +amputer $alt +analogiser $alt analysere $alt -anglisere $alt -animere $alt -annektere $alt -annoncere $alt -annotere $alt -annullere $alt -anodisere $alt -anonymisere $alt -antedatere $alt -antichambrere $alt -anticipere $alt -antikisere $alt -apostrofere $alt +angliser $alt +animer $alt +annekter $alt +annoncer $alt +annoter $alt +annuller $alt +anodiser $alt +anonymiser $alt +antichambrer $alt +anticiper $alt +antikiser $alt +apostrofer $alt appellere $alt -applaudere $alt -applicere $alt -applikere $alt +applauder $alt +applicer $alt +appliker $alt apportere $alt -appretere $alt -approbere $alt -aptere $alt -arbitrere $alt -argumentere $alt -arkaisere $alt +appreter $alt +approber $alt +apter $alt +arbitrer $alt +argumenter $alt +arkaiser $alt arkivere $alt -armere $alt -aromatisere $alt -arrangere $alt -arrestere $alt -arrivere $alt -artikulere $alt -asfaltere $alt -aspirere $alt -assimilere $alt -assistere $alt -associere $alt -assurere $alt -astringere $alt -atomisere $alt -atrofiere $alt -attachere $alt -attakere $alt -attestere $alt -attrahere $alt -attrapere $alt -attribuere $alt -auditere $alt +armer $alt +aromatiser $alt +arranger $alt +arrester $alt +arriver $alt +artikuler $alt +asfalter $alt +aspirer $alt +assimiler $alt +assister $alt +associer $alt +assurer $alt +astringer $alt +atomiser $alt +atrofier $alt +attacher $alt +attaker $alt +attester $alt +attraher $alt +attraper $alt +attribuer $alt +auditer $alt augmentere $alt auktionere $alt -auskultere $alt -autentificere $alt -autografere $alt -autoklavere $alt -automatisere $alt -autonomisere $alt -autorisere $alt +auskulter $alt +autentificer $alt +autografer $alt +autoklaver $alt +automatiser $alt +autonomiser $alt +autoriser $alt avancere $alt -avertere $alt -bagatellisere $alt -bajadere $alt +averter $alt +bagatelliser $alt +bajader $alt balancere $alt -balkanisere $alt -ballotere $alt -balsamere $alt -banalisere $alt +balkaniser $alt +balloter $alt +balsamer $alt +banaliser $alt bandagere $alt banderolere $alt -barbarisere $alt -barbere $alt -bardere $alt -barriere $alt -barrikadere $alt +barbariser $alt +barber $alt +barder $alt +barrier $alt +barrikader $alt basere $alt -bastardere $alt -bastardisere $alt -bastonere $alt -basunere $alt -benedicere $alt -bestialisere $alt -bibliografere $alt +bastarder $alt +bastardiser $alt +bastoner $alt +basuner $alt +benedicer $alt +bestialiser $alt +bibliografer $alt billettere $alt -biografere $alt -bioptere $alt -bivuakere $alt -blamere $alt -blanchere $alt -blokere $alt -bogstavere $alt -bombardere $alt -bonbonniere $alt -bonitere $alt -botanisere $alt -braisere $alt -brikettere $alt +biografer $alt +biopter $alt +bivuaker $alt +blamer $alt +blancher $alt +bloker $alt +bogstaver $alt +bombarder $alt +bonbonniere bVNbVNj'E:r $alt +boniter $alt +botaniser $alt +braiser $alt +briketter $alt brillere $alt brochere $alt brodere $alt -bronkoskopere $alt +bronkoskoper $alt bronzere $alt brunere $alt -brutalisere $alt -bruyere $alt -budgettere $alt -bugsere $alt -bureaukratisere $alt -cadmiere $alt -camouflere $alt -campere $alt -causere $alt -celebrere $alt -cementere $alt -censurere $alt -centralisere $alt -centrere $alt -centrifugere $alt -certificere $alt -chambriere $alt -changere $alt -chaptalisere $alt -chargere $alt -charmere $alt -chassere $alt -chiffonniere $alt -chifrere $alt -chikanere $alt +brutaliser $alt +bruyere bryj'E:r $alt +budgetter $alt +bugser $alt +bureaukratiser $alt +cadmier $alt +camoufler $alt +camper $alt +causer $alt +celebrer $alt +cementer $alt +censurer $alt +centraliser $alt +centrer $alt +centrifuger $alt +certificer $alt +chambrier $alt +changer $alt +chaptaliser $alt +charger $alt +charmer $alt +chasser $alt +chiffonnier $alt +chifrer $alt +chikaner $alt chokere $alt -cirere $alt -cirkulere $alt -ciselere $alt -citere $alt -civilisere $alt -computerisere $alt -containerisere $alt -damascere $alt -dandere $alt -danisere $alt -datamatisere $alt -datere $alt +cirer $alt +cirkuler $alt +ciseler $alt +citer $alt +civiliser $alt +computeriser $alt +containeriser $alt +damascer $alt +dander $alt +daniser $alt +datamatiser $alt +dater $alt debattere $alt -debitere $alt -debutere $alt -decelerere $alt -dechifrere $alt -decidere $alt -decimere $alt -dedicere $alt -dedikere $alt -deducere $alt -defilere $alt -definere $alt -deflorere $alt -deformere $alt -degradere $alt -dehydrere $alt -dekantere $alt -dekatere $alt -deklamere $alt -deklarere $alt -deklassere $alt -deklinere $alt -dekomponere $alt -dekorere $alt +debiter $alt +debuter $alt +decelerer $alt +dechifrer $alt +decider $alt +decimer $alt +dedicer $alt +dediker $alt +deducer $alt +defiler $alt +definer $alt +deflorer $alt +deformer $alt +degrader $alt +dehydrer $alt +dekanter $alt +dekater $alt +deklamer $alt +deklarer $alt +deklasser $alt +dekliner $alt +dekorer $alt dekretere $alt -dekupere $alt -delegere $alt -delikatere $alt -delirere $alt -demarkere $alt -dementere $alt -demissionere $alt -demokratisere $alt -demolere $alt -demonstrere $alt -denaturere $alt -denotere $alt -denuntiere $alt -deodorisere $alt -depilere $alt -deplacere $alt -deployere $alt -deponere $alt -deportere $alt -depravere $alt -depreciere $alt -deprimere $alt -deputere $alt -deregulere $alt -derivere $alt -desarmere $alt -desertere $alt +dekuper $alt +deleger $alt +delikater $alt +delirer $alt +demarker $alt +dementer $alt +demissioner $alt +demokratiser $alt +demoler $alt +demonstrer $alt +denaturer $alt +denoter $alt +denuntier $alt +deodoriser $alt +depiler $alt +deplacer $alt +deployer $alt +deponer $alt +deporter $alt +depraver $alt +deprecier $alt +deprimer $alt +deputer $alt +dereguler $alt +deriver $alt +desarmer $alt +deserter $alt designere $alt -desinficere $alt -desinformere $alt -destillere $alt -destinere $alt -destruere $alt -detachere $alt +desinficer $alt +destiller $alt +destiner $alt +destruer $alt +detacher $alt detaljere $alt -detektere $alt -determinere $alt -detonere $alt -detronisere $alt -devaluere $alt -deviere $alt -devovere $alt -diagnosticere $alt -dialogisere $alt -dialysere $alt -differentiere $alt -differere $alt -diffundere $alt +detekter $alt +determiner $alt +detoner $alt +detroniser $alt +devaluer $alt +devier $alt +devover $alt +diagnosticer $alt +dialogiser $alt +dialyser $alt +differentier $alt +differer $alt +diffunder $alt diftongere $alt -digitalisere $alt -diktere $alt -dimensionere $alt -dimittere $alt -dinere $alt -dirigere $alt -disciplinere $alt -disengagere $alt -disharmonere $alt -disintegrere $alt -diskontere $alt -diskreditere $alt -diskriminere $alt -diskutere $alt -diskvalificere $alt -dispensere $alt -dispergere $alt -disponere $alt -disproportionere $alt -disputere $alt -dissekere $alt -dissentiere $alt -dissidere $alt -dissimilere $alt -dissociere $alt -dissonere $alt -distancere $alt -distingvere $alt -distrahere $alt -distribuere $alt -divergere $alt -diversificere $alt -divertere $alt -dividere $alt -divisionalisere $alt +digitaliser $alt +dikter $alt +dimensioner $alt +dimitter $alt +diner $alt +diriger $alt +discipliner $alt +diskriminer $alt +diskuter $alt +dispenser $alt +disperger $alt +disponer $alt +disputer $alt +disseker $alt +dissentier $alt +dissider $alt +dissimiler $alt +dissocier $alt +dissoner $alt +distancer $alt +distingver $alt +distraher $alt +distribuer $alt +diverger $alt +diverter $alt +divider $alt +divisionaliser $alt divisionere $alt -docere $alt -dogmatisere $alt +docer $alt +dogmatiser $alt doktorere $alt -dokumentere $alt +dokumenter $alt dollere $alt -domesticere $alt -dominere $alt -donere $alt +domesticer $alt +dominer $alt +doner $alt dosere $alt -dossere $alt -dotere $alt +dosser $alt +doter $alt dragere $alt -dramatisere $alt -drapere $alt -dressere $alt -dublere $alt -duellere $alt -duettere $alt -dupere $alt -duplicere $alt -duplikere $alt -dæmonisere $alt -editere $alt -effektivisere $alt -effektuere $alt -efterdatere $alt -efterisolere $alt -egalisere $alt -ejakulere $alt -eksaminere $alt -eksekvere $alt -eksemplificere $alt -eksercere $alt +dramatiser $alt +draper $alt +dresser $alt +dubler $alt +dueller $alt +duetter $alt +duper $alt +duplicer $alt +dupliker $alt +dæmoniser $alt +editer $alt +effektiviser $alt +effektuer $alt +efterdater $alt +egaliser $alt +ejakuler $alt +eksaminer $alt +eksekver $alt +eksemplificer $alt +eksercer $alt eksilere $alt -eksistere $alt -ekskludere $alt -ekskommunicere $alt -ekskommunikere $alt -ekspandere $alt -ekspatriere $alt -ekspedere $alt -eksperimentere $alt -eksplicere $alt -eksplicitere $alt -eksplodere $alt -eksploitere $alt -eksplorere $alt -eksponere $alt -eksportere $alt -ekspropriere $alt -ekstemporere $alt -ekstendere $alt -ekstensivere $alt -ekstrahere $alt -ekstrapolere $alt -ekstravagere $alt -ekstrudere $alt -ekvipere $alt -elektrificere $alt -elektrisere $alt +eksister $alt +ekskluder $alt +ekskommunicer $alt +ekskommuniker $alt +ekspander $alt +ekspatrier $alt +ekspeder $alt +eksperimenter $alt +eksplicer $alt +ekspliciter $alt +eksploder $alt +eksploiter $alt +eksplorer $alt +eksponer $alt +eksporter $alt +eksproprier $alt +ekstemporer $alt +ekstender $alt +ekstensiver $alt +ekstraher $alt +ekstrapoler $alt +ekstravager $alt +ekstruder $alt +ekviper $alt +elektrificer $alt +elektriser $alt elevere $alt -elidere $alt -eliminere $alt -emaljere $alt -emanere $alt -emballere $alt -emendere $alt -emigrere $alt -emittere $alt -emulere $alt -emulgere $alt -endossere $alt -engagere $alt -ensilere $alt -entrere $alt -epilere $alt -erigere $alt -erodere $alt -erotisere $alt -eskalere $alt -eskamotere $alt -eskapere $alt -eskortere $alt -espaliere $alt -estimere $alt -etablere $alt +elider $alt +eliminer $alt +emaljer $alt +emaner $alt +emballer $alt +emender $alt +emigrer $alt +emitter $alt +emuler $alt +emulger $alt +endosser $alt +engager $alt +ensiler $alt +entrer $alt +epiler $alt +eriger $alt +eroder $alt +erotiser $alt +eskaler $alt +eskamoter $alt +eskaper $alt +eskorter $alt +espalier $alt +estimer $alt +etabler $alt etagere $alt etikettere $alt -etymologisere $alt -euforisere $alt -europæisere $alt -evakuere $alt -evaluere $alt -evaporere $alt -evolere $alt -excellere $alt -excerpere $alt -excitere $alt -fabrikere $alt -fabulere $alt -facettere $alt -faksimilere $alt -fakturere $alt -falsificere $alt -familiarisere $alt -fanatisere $alt -fantasere $alt -farsere $alt -fascinere $alt -favorisere $alt -fejldisponere $alt -fejlplacere $alt -fejlvurdere $alt -feminisere $alt -feriere $alt -fermentere $alt -fernisere $alt -fertilisere $alt -fetere $alt +etymologiser $alt +euforiser $alt +europæiser $alt +evakuer $alt +evaluer $alt +evaporer $alt +evoler $alt +exceller $alt +excerper $alt +exciter $alt +fabriker $alt +fabuler $alt +facetter $alt +faksimiler $alt +fakturer $alt +falsificer $alt +familiariser $alt +fanatiser $alt +fantaser $alt +farser $alt +fasciner $alt +favoriser $alt +feminiser $alt +ferier $alt +fermenter $alt +ferniser $alt +fertiliser $alt +feter $alt figurere $alt -fiksere $alt -fiktionalisere $alt +fikser $alt +fiktionaliser $alt filere $alt filetere $alt -filmatisere $alt -filosofere $alt -filtrere $alt -finansiere $alt +filmatiser $alt +filosofer $alt +filtrer $alt +finansier $alt finere $alt fingere $alt -fingerere $alt -finjustere $alt -finsortere $alt -flambere $alt -flanere $alt +fingerer $alt +finjuster $alt +finsorter $alt +flamber $alt +flaner $alt flankere $alt -flere $alt -floragrafere $alt -florere $alt -fluidisere $alt -fluktuere $alt -fluorescere $alt -fluoridere $alt -fokusere $alt -foliere $alt -forcere $alt -formalisere $alt +floragrafer $alt +florer $alt +fluidiser $alt +fluktuer $alt +fluorescer $alt +fluorider $alt +fokuser $alt +folier $alt +forcer $alt +formaliser $alt formatere $alt formere $alt -formulere $alt -forpremiere $alt -forprogrammere $alt -forskudsregistrere $alt -fortificere $alt -foruddiskontere $alt +formuler $alt +fortificer $alt fosfatere $alt -fosforescere $alt -fotografere $alt -fotokopiere $alt -fouragere $alt -fragmentere $alt -fraktionere $alt -frankere $alt -frappere $alt +fosforescer $alt +fotografer $alt +fotokopier $alt +fourager $alt +fragmenter $alt +fraktioner $alt +franker $alt +frapper $alt frasere $alt -frasortere $alt -fraternisere $alt -frekventere $alt -fremdatere $alt -fremprovokere $alt +ffraterniser $alt +frekventer $alt frisere $alt -fritere $alt -frottere $alt -frustrere $alt -fuldautomatisere $alt -fundamentere $alt -fundere $alt -fungere $alt -funktionalisere $alt -funktionere $alt -fupmodernisere $alt -furnere $alt -fusionere $alt -førtidspensionere $alt +friter $alt +frotter $alt +frustrer $alt +fundamenter $alt +funder $alt +funger $alt +funktionaliser $alt +funktioner $alt +furner $alt +fusioner $alt gagere $alt -galonere $alt -galopere $alt -galoppere $alt -galvanisere $alt +galoner $alt +galoper $alt +galopper $alt +galvaniser $alt garagere $alt -garantere $alt +garanter $alt gardere $alt garnere $alt -garnisonere $alt +garnisoner $alt garrottere $alt -gelatinere $alt -gelere $alt -geminere $alt -generalisere $alt +gelatiner $alt +geler $alt +geminer $alt +generaliser $alt genere $alt -generere $alt -genetablere $alt -genmanipulere $alt -genmodificere $alt -gennemkomponere $alt -genvurdere $alt -gere $alt -gerere $alt -germanisere $alt -gestikulere $alt -ghettoisere $alt -girere $alt -glamourisere $alt -glasere $alt -globalisere $alt -glorificere $alt +generer $alt +gerer $alt +germaniser $alt +gestikuler $alt +ghettoiser $alt +girer $alt +glamouriser $alt +glaser $alt +globaliser $alt +glorificer $alt glosere $alt -glossere $alt -gondoliere $alt -goutere $alt +glosser $alt +gondolier $alt +gouter $alt gradere $alt -graduere $alt -granulere $alt -grassere $alt -gratinere $alt -gratulere $alt +graduer $alt +granuler $alt +grasser $alt +gratiner $alt +gratuler $alt gravere $alt -gravitere $alt -grillere $alt -grimassere $alt -grovsortere $alt -grublisere $alt +graviter $alt +griller $alt +grimasser $alt +ggrubliser $alt grundere $alt gruppere $alt -gruyere $alt -græcisere $alt -grønlandisere $alt -guillotinere $alt +gruyere gryj'E:r $alt +græciser $alt +grønlandiser $alt +guillotiner $alt gummiere $alt -gymnasticere $alt -gældssanere $alt -gæsterere $alt -habilitere $alt -hallucinere $alt -halvere $alt -harcelere $alt -harmonere $alt -harmonisere $alt -harpunere $alt -havarere $alt -hektografere $alt -helgardere $alt -herbarisere $alt -heroisere $alt -hierarkisere $alt -historisere $alt -homogenisere $alt -homologisere $alt -honorere $alt -hospitalisere $alt -hospitere $alt -hovere $alt -hovmesterere $alt -humanisere $alt +gymnasticer $alt +gæsterer $alt +habiliter $alt +halluciner $alt +halver $alt +harceler $alt +harmoner $alt +harmoniser $alt +harpuner $alt +havarer $alt +hektografer $alt +herbariser $alt +heroiser $alt +hierarkiser $alt +historiser $alt +homogeniser $alt +homologiser $alt +honorer $alt +hospitaliser $alt +hospiter $alt +hover $alt +hovmesterer $alt +humaniser $alt husere $alt -hydrere $alt -hydrolysere $alt -hyperventilere $alt -hypnotisere $alt -hypostasere $alt -højisolere $alt -højpasteurisere $alt -hånddekorere $alt -håndkolorere $alt -håndtere $alt -idealisere $alt -identificere $alt -ideologisere $alt -idolisere $alt -idyllisere $alt -ignorere $alt -illudere $alt -illuminere $alt -illustrere $alt -imitere $alt -immatrikulere $alt -immigrere $alt -immobilisere $alt -immunisere $alt -implantere $alt -implementere $alt -implicere $alt -imponere $alt -importere $alt -improvisere $alt -imprægnere $alt -inaktivere $alt -inaugurere $alt -incitere $alt -inddatere $alt -inddiskontere $alt -indeksercere $alt -indeksere $alt -indeksregulere $alt -indgravere $alt -indicere $alt -indikere $alt -individualisere $alt -indkalkulere $alt -indkassere $alt -indklarere $alt -indkopiere $alt -indkvartere $alt -indlevere $alt -indlogere $alt -indmarchere $alt -indoktrinere $alt -indoperere $alt -indplacere $alt -indrangere $alt -indregistrere $alt -indregulere $alt -indrullere $alt -indstudere $alt -indtelefonere $alt -inducere $alt -industrialisere $alt -inficere $alt -infiltrere $alt -inflammere $alt -influere $alt -informere $alt -inhalere $alt -inhibere $alt -initialisere $alt -initiere $alt -injicere $alt -injuriere $alt -inkaminere $alt -inkarnere $alt -inkassere $alt -inklinere $alt -inkludere $alt -inkommodere $alt -inkorporere $alt -inkriminere $alt -inkvirere $alt -innovere $alt -inokulere $alt -inseminere $alt -inserere $alt -insinuere $alt -insistere $alt -inspicere $alt -inspirere $alt -installere $alt -instituere $alt -institutionalisere $alt -instruere $alt -instrumentalisere $alt +hydrer $alt +hydrolyser $alt +hypnotiser $alt +hypostaser $alt +håndter $alt +idealiser $alt +identificer $alt +ideologiser $alt +idoliser $alt +idylliser $alt +ignorer $alt +illuder $alt +illuminer $alt +illustrer $alt +imiter $alt +immatrikuler $alt +immigrer $alt +immobiliser $alt +immuniser $alt +implanter $alt +implementer $alt +implicer $alt +imponer $alt +importer $alt +improviser $alt +imprægner $alt +inaugurer $alt +inciter $alt +inddater $alt +indeksercer $alt +indekser $alt +indicer $alt +indiker $alt +individualiser $alt +indkalkuler $alt +indkasser $alt +indklarer $alt +indkopier $alt +indkvarter $alt +indlever $alt +indloger $alt +indmarcher $alt +indoktriner $alt +inducer $alt +industrialiser $alt +inficer $alt +infiltrer $alt +inflammer $alt +influer $alt +informer $alt +inhaler $alt +inhiber $alt +initialiser $alt +initier $alt +injicer $alt +injurier $alt +inkaminer $alt +inkarner $alt +inkasser $alt +inkliner $alt +inkluder $alt +inkommoder $alt +inkriminer $alt +inkvirer $alt +innover $alt +inokuler $alt +inseminer $alt +inserer $alt +insinuer $alt +insister $alt +inspicer $alt +inspirer $alt +installer $alt +instituer $alt +institutionaliser $alt +instruer $alt +instrumentaliser $alt instrumentere $alt -insultere $alt -integrere $alt -intellektualisere $alt -intendere $alt -intensivere $alt -interagere $alt -interessere $alt -interferere $alt -interfoliere $alt -intermittere $alt -internalisere $alt -internationalisere $alt -internere $alt -interpellere $alt -interpolere $alt -interpretere $alt -interpungere $alt -interpunktere $alt -intervenere $alt -intimidere $alt -intonere $alt -intrigere $alt -introducere $alt -invadere $alt -invalidere $alt -inventere $alt -invertere $alt -investere $alt -invitere $alt -involvere $alt -ionisere $alt -irisere $alt -ironisere $alt -irritere $alt -islamisere $alt -isolere $alt -jardiniere $alt -jonglere $alt -jonisere $alt -journalisere $alt -jubilere $alt -jugere $alt -justere $alt -kachere $alt -kadmiere $alt -kalibrere $alt -kalkere $alt -kalkulere $alt -kalligrafere $alt -kalorifere $alt -kamuflere $alt -kanalisere $alt -kandidere $alt -kandisere $alt -kannelere $alt -kannibalisere $alt +insulter $alt +integrer $alt +intellektualiser $alt +intender $alt +intensiver $alt +interager $alt +interesser $alt +interferer $alt +interfolier $alt +intermitter $alt +internaliser $alt +internationaliser $alt +interner $alt +interpeller $alt +interpoler $alt +interpreter $alt +interpunger $alt +interpunkter $alt +intervener $alt +intimider $alt +intoner $alt +intriger $alt +introducer $alt +intuber $alt +invader $alt +invalider $alt +inventer $alt +inverter $alt +invester $alt +inviter $alt +involver $alt +ioniser $alt +iriser $alt +ironiser $alt +irriter $alt +islamiser $alt +isoler $alt +jongler $alt +joniser $alt +journaliser $alt +jubiler $alt +juger $alt +juster $alt +kacher $alt +kadmier $alt +kalibrer $alt +kalker $alt +kalkuler $alt +kalligrafer $alt +kalorifer $alt +kamufler $alt +kanaliser $alt +kandider $alt +kandiser $alt +kanneler $alt +kannibaliser $alt kanonere $alt -kanonisere $alt -kantonisere $alt -kantonnere $alt -kapere $alt -kapitalisere $alt -kapitulere $alt -kapriolere $alt -kapunere $alt -karabiniere $alt -karakterisere $alt -karambolere $alt -karamellisere $alt -karbonisere $alt -karburere $alt -karessere $alt -karikere $alt -karriere $alt -kartere $alt -kartonnere $alt -kasernere $alt -kassere $alt -kastrere $alt -katalogisere $alt -katalysere $alt -katapultere $alt -kategorisere $alt -katekisere $alt -katolicere $alt -kautionere $alt -kavere $alt -kilometrere $alt +kanoniser $alt +kantoniser $alt +kantonner $alt +kaper $alt +kapitaliser $alt +kapituler $alt +kaprioler $alt +kapuner $alt +karabinier $alt +karakteriser $alt +karamboler $alt +karamelliser $alt +karboniser $alt +karburer $alt +karesser $alt +kariker $alt +karrier $alt +karter $alt +kartonner $alt +kaserner $alt +kasser $alt +kastrer $alt +katalogiser $alt +katalyser $alt +katapulter $alt +kategoriser $alt +katekiser $alt +katolicer $alt +kautioner $alt +kaver $alt +kilometrer $alt klarere $alt -klarificere $alt -klassificere $alt +klarificer $alt +klassificer $alt klausulere $alt -klichere $alt -klimatisere $alt -kloakere $alt -klorere $alt -kloroformere $alt -koagulere $alt -kodificere $alt -koeksistere $alt -kohærere $alt -koincidere $alt -kokettere $alt -kokkerere $alt -kollabere $alt -kollaborere $alt -kollationere $alt -kollektivisere $alt -kollidere $alt -kolonisere $alt -kolorere $alt -kolportere $alt -kombinere $alt -kommandere $alt -kommatere $alt -kommentere $alt -kommercialisere $alt -kommissionere $alt -kommittere $alt -kommunalisere $alt -kommunicere $alt -kommunikere $alt -kommutere $alt -komparere $alt -kompensere $alt -kompilere $alt -komplementere $alt -komplettere $alt -komplicere $alt -komplimentere $alt -komponere $alt -kompostere $alt -komprimere $alt -kompromittere $alt -koncentrere $alt +klicher $alt +klimatiser $alt +kloaker $alt +klorer $alt +kloroformer $alt +koaguler $alt +kodificer $alt +koeksister $alt +kohærer $alt +koincider $alt +koketter $alt +kokkerer $alt +kollaber $alt +kollaborer $alt +kollationer $alt +kollektiviser $alt +kollider $alt +koloniser $alt +kolorer $alt +kolporter $alt +kombiner $alt +kommander $alt +kommater $alt +kommenter $alt +kommercialiser $alt +kommissioner $alt +kommitter $alt +kommunaliser $alt +kommunicer $alt +kommuniker $alt +kommuter $alt +komparer $alt +kompenser $alt +kompiler $alt +komplementer $alt +kompletter $alt +komplicer $alt +komplimenter $alt +komponer $alt +komposter $alt +komprimer $alt +kompromitter $alt +koncentrer $alt koncertere $alt -koncessionere $alt -koncipere $alt -kondemnere $alt -kondensere $alt -konditionere $alt -kondolere $alt -kondottiere $alt -konfektionere $alt -konferere $alt -konfigurere $alt -konfirmere $alt -konfiskere $alt -konformere $alt -konfrontere $alt -konfundere $alt -kongruere $alt -konjugere $alt -konkludere $alt -konkretisere $alt -konkurrere $alt -konnektere $alt -konnotere $alt -konsekrere $alt -konservere $alt -konsignere $alt -konsolidere $alt -konspirere $alt -konstatere $alt -konstituere $alt -konstringere $alt -konstruere $alt -konsulere $alt -konsultere $alt -konsumere $alt -kontaminere $alt -kontere $alt -kontingentere $alt -kontinuere $alt -kontrahere $alt -kontrasignere $alt -kontrastere $alt -kontribuere $alt -kontrollere $alt +koncessioner $alt +konciper $alt +kondemner $alt +kondenser $alt +konditioner $alt +kondoler $alt +kondottier $alt +konfektioner $alt +konferer $alt +konfigurer $alt +konfirmer $alt +konfisker $alt +konformer $alt +konfronter $alt +konfunder $alt +kongruer $alt +konjuger $alt +konkluder $alt +konkretiser $alt +konkurrer $alt +konnekter $alt +konnoter $alt +konsekrer $alt +konserver $alt +konsigner $alt +konsolider $alt +konspirer $alt +konstater $alt +konstituer $alt +konstringer $alt +konstruer $alt +konsuler $alt +konsulter $alt +konsumer $alt +kontaminer $alt +konter $alt +kontingenter $alt +kontinuer $alt +kontraher $alt +kontrasigner $alt +kontraster $alt +kontribuer $alt +kontroller $alt konturere $alt -konvenere $alt -konvergere $alt -konversere $alt -konvertere $alt +konvener $alt +konverger $alt +konverser $alt +konverter $alt konvojere $alt -konvolutere $alt -kooperere $alt -koordinere $alt -kopiere $alt -koppevaccinere $alt -koproducere $alt -kopulere $alt -koreografere $alt -korrelere $alt -korrespondere $alt -korrigere $alt -korrodere $alt -korrugere $alt -korrumpere $alt -kostumere $alt -kostumiere $alt -krakelere $alt -kreditere $alt -kreere $alt -kremere $alt -krepere $alt -kridere $alt -kriminalisere $alt -kritisere $alt -krokere $alt -kronologisere $alt -kropsvisitere $alt -krydsrevidere $alt -kryptere $alt -kryptografere $alt -krystallisere $alt +konvoluter $alt +kooperer $alt +koordiner $alt +kopier $alt +kopuler $alt +koreografer $alt +korreler $alt +korresponder $alt +korriger $alt +korroder $alt +korruger $alt +korrumper $alt +kostumer $alt +kostumier $alt +krakeler $alt +krediter $alt +kreer $alt +kremer $alt +kreper $alt +krider $alt +kriminaliser $alt +kritiser $alt +kroker $alt +kronologiser $alt +kropsvisiter $alt +krydsrevider $alt +krypter $alt +kryptografer $alt +krystalliser $alt kubere $alt -kujonere $alt -kulminere $alt -kultivere $alt -kumulere $alt -kupere $alt -kurere $alt +kujoner $alt +kulminer $alt +kultiver $alt +kumuler $alt +kuper $alt +kurer $alt kursere $alt -kursivere $alt -kurtisere $alt -kuvertere $alt -kvadrere $alt -kvaksalverere $alt -kvalificere $alt -kvantificere $alt -kvinkelere $alt -kvittere $alt -kvotere $alt -kværulere $alt -kæresterere $alt -kønsdiskriminere $alt -kønskvotere $alt -labialisere $alt -laborere $alt -lakere $alt -laksere $alt -lamentere $alt -laminere $alt -lancere $alt +kursiver $alt +kurtiser $alt +kuverter $alt +kvadrer $alt +kvaksalverer $alt +kvalificer $alt +kvantificer $alt +kvinkeler $alt +kvitter $alt +kvoter $alt +kværuler $alt +kæresterer $alt +kønsdiskriminer $alt +kønskvoter $alt +labialiser $alt +laborer $alt +laker $alt +lakser $alt +lamenter $alt +laminer $alt +lancer $alt lasere $alt -latinisere $alt -lavere $alt -lavpasteurisere $alt -legalisere $alt -legere $alt -legitimere $alt -leksikalisere $alt +latiniser $alt +//lavere $alt +lavpasteuriser $alt +legaliser $alt +leger $alt +legitimer $alt +leksikaliser $alt levere $alt -liberalisere $alt -licensere $alt -licitere $alt -liere $alt -likvidere $alt -limitere $alt +liberaliser $alt +licenser $alt +liciter $alt +lier $alt +likvider $alt +limiter $alt linjere $alt -litografere $alt -litrere $alt -logere $alt -lokalisere $alt -lombardere $alt -longere $alt -lorgnettere $alt -lukrere $alt -lydisolere $alt -lysregulere $alt +litografer $alt +litrer $alt +loger $alt +lokaliser $alt +lombarder $alt +longer $alt +lorgnetter $alt +lukrer $alt lædere $alt -længere $alt -lånefinansiere $alt -magasinere $alt -magnetisere $alt -majorisere $alt -makadamisere $alt -maksimere $alt -makulere $alt -maltraktere $alt -manicurere $alt -manifestere $alt -manipulere $alt +magasiner $alt +magnetiser $alt +majoriser $alt +makadamiser $alt +maksimer $alt +makuler $alt +maltrakter $alt +manicurer $alt +manifester $alt +manipuler $alt mankere $alt -manuducere $alt -manøvrere $alt -marchere $alt -marginalisere $alt -marginere $alt -marinere $alt +manuducer $alt +manøvrer $alt +marcher $alt +marginaliser $alt +marginer $alt +mariner $alt markere $alt -marmorere $alt -marodere $alt -martyrisere $alt -maskere $alt -maskinisere $alt -maskulinisere $alt -massakrere $alt +marmorer $alt +maroder $alt +martyriser $alt +masker $alt +maskiniser $alt +maskuliniser $alt +massakrer $alt massere $alt -masturbere $alt -materialisere $alt -matrikulere $alt -mattere $alt +masturber $alt +materialiser $alt +matrikuler $alt +matter $alt medicinere $alt -mediere $alt -meditere $alt -mekanisere $alt -melere $alt -memorere $alt -menagere $alt -menstruere $alt -mercerisere $alt -meritere $alt -merkantilisere $alt -metallisere $alt -metamorfosere $alt -metastasere $alt -migrere $alt -mikrofotografere $alt -mikroskopere $alt -militarisere $alt +medier $alt +mediter $alt +mekaniser $alt +meler $alt +memorer $alt +menager $alt +menstruer $alt +merceriser $alt +meriter $alt +merkantiliser $alt +metalliser $alt +metamorfoser $alt +metastaser $alt +migrer $alt +mikroskoper $alt +militariser $alt minere $alt -mingelere $alt -minimere $alt -ministrere $alt -misere $alt -miserere $alt -misinformere $alt -miskreditere $alt -misrekommandere $alt -missionere $alt -mobilisere $alt -modellere $alt -moderere $alt -modernisere $alt -modificere $alt +mingeler $alt +minimer $alt +ministrer $alt +miser $alt +miserer $alt +missioner $alt +mobiliser $alt +modeller $alt +moderer $alt +moderniser $alt +modificer $alt modulere $alt -molestere $alt -monitere $alt -monitorere $alt -monoftongere $alt -monopolisere $alt -montere $alt -moralisere $alt -mortificere $alt -motionere $alt +molester $alt +moniter $alt +monitorer $alt +monoftonger $alt +monopoliser $alt +monter $alt +moraliser $alt +mortificer $alt +motioner $alt motivere $alt -motorisere $alt -mouillere $alt -moussere $alt -movere $alt -mulktere $alt -multiplicere $alt -mumificere $alt -musicere $alt -musikalisere $alt -mutere $alt -mystificere $alt -mytologisere $alt -mæandrere $alt +motoriser $alt +mouiller $alt +mousser $alt +mover $alt +mulkter $alt +multiplicer $alt +mumificer $alt +musicer $alt +musikaliser $alt +muter $alt +mystificer $alt +mytologiser $alt +mæandrer $alt møblere $alt -narkotisere $alt +narkotiser $alt nasalere $alt -nationalisere $alt -naturalisere $alt -navigere $alt -nazificere $alt -nedfotografere $alt -nedgradere $alt -nedjustere $alt -nednormere $alt -nedprioritere $alt -nedvurdere $alt +nationaliser $alt +naturaliser $alt +naviger $alt +nazificer $alt negere $alt -negligere $alt -neurotisere $alt -neutralisere $alt -nitrere $alt -nivellere $alt -nomadisere $alt -nominalisere $alt -nominere $alt -normalisere $alt -normere $alt +negliger $alt +neurotiser $alt +neutraliser $alt +nitrer $alt +niveller $alt +nomadiser $alt +nominaliser $alt +nominer $alt +normaliser $alt +normer $alt notere $alt -notificere $alt +notificer $alt nuancere $alt -nummerere $alt -nydefinere $alt -nyvurdere $alt -nærmere $alt -obducere $alt -objektivere $alt -objektivisere $alt -observere $alt -obstipere $alt -obstruere $alt -offerere $alt -okkupere $alt -oktrojere $alt -okulere $alt -oliere $alt -omadressere $alt -omdefinere $alt -omdirigere $alt -omdisputere $alt -omformulere $alt -omkartere $alt -ommøblere $alt -omnormere $alt -omorganisere $alt -omplacere $alt -ompostere $alt -omprioritere $alt -omstrukturere $alt -omvurdere $alt -onanere $alt -ondulere $alt -opalisere $alt -opdatere $alt -operationalisere $alt -operere $alt -opfanatisere $alt -opformere $alt -opgradere $alt -opgraduere $alt -opjustere $alt -opklassificere $alt -opkvalificere $alt -opmagasinere $alt -opmarchere $alt -opnormere $alt -oppolere $alt -opponere $alt -opprioritere $alt -opregulere $alt -opreklamere $alt -opsortere $alt -opsummere $alt -optere $alt -optimere $alt -opvurdere $alt -ordinere $alt -organisere $alt -orientere $alt -origamere $alt +nummerer $alt +obducer $alt +objektiver $alt +objektiviser $alt +observer $alt +obstiper $alt +obstruer $alt +offerer $alt +okkuper $alt +oktrojer $alt +okuler $alt +olier $alt +onaner $alt +onduler $alt +opaliser $alt +opdater $alt +operationaliser $alt +operer $alt +opponer $alt +opter $alt +optimer $alt +ordiner $alt +organiser $alt +orienter $alt +origamer $alt orkere $alt -orkestrere $alt -ornamentere $alt -ornere $alt -oscillere $alt -overbrodere $alt -overdimensionere $alt -overdosere $alt -overdramatisere $alt -overeksponere $alt -overfrankere $alt -overlevere $alt -overreagere $alt -overstimulere $alt -overvurdere $alt -ovnlakere $alt -oxidere $alt -oxydere $alt -pacificere $alt -paginere $alt -palatalisere $alt +orkestrer $alt +ornamenter $alt +orner $alt +osciller $alt +oxider $alt +oxyder $alt +pacificer $alt +paginer $alt +palataliser $alt palletere $alt -palpere $alt -panelere $alt -panere $alt -panorere $alt -paradere $alt -parafere $alt -paraffinere $alt -parafrasere $alt -paragrafere $alt -parallelimportere $alt -parallelisere $alt -paralysere $alt -parcellere $alt -pardonnere $alt -parere $alt -parfumere $alt -parkere $alt -parlamentere $alt -parlere $alt +palper $alt +paneler $alt +paner $alt +panorer $alt +parader $alt +parafer $alt +paraffiner $alt +parafraser $alt +paragrafer $alt +paralleliser $alt +paralyser $alt +parceller $alt +pardonner $alt +parer $alt +parfumer $alt +parker $alt +parlamenter $alt +parler $alt parodiere $alt partere $alt -participere $alt -paspolere $alt +participer $alt +paspoler $alt passere $alt -passivere $alt -passivisere $alt -pasteurisere $alt -pastichere $alt -patentere $alt -patinere $alt -patronisere $alt -patruljere $alt +passiver $alt +passiviser $alt +pasteuriser $alt +pasticher $alt +patenter $alt +patiner $alt +patroniser $alt +patruljer $alt pausere $alt -pelletere $alt -pendulere $alt -pensionere $alt -percipere $alt -perfektionere $alt -perforere $alt -periodisere $alt -permittere $alt -permutere $alt -perseverere $alt -persiflere $alt -persistere $alt -personalisere $alt -personificere $alt -perspektivere $alt -perturbere $alt -pervertere $alt -petitionere $alt -pigmentere $alt -pikere $alt -pilotere $alt -pionere $alt -pipettere $alt -piratere $alt -piruettere $alt -pivotere $alt -pizzikere $alt -placere $alt -plagiere $alt -plakatere $alt +pelleter $alt +penduler $alt +pensioner $alt +perciper $alt +perfektioner $alt +perforer $alt +periodiser $alt +permitter $alt +permuter $alt +perseverer $alt +persifler $alt +persister $alt +personaliser $alt +personificer $alt +perspektiver $alt +perturber $alt +perverter $alt +petitioner $alt +pigmenter $alt +piker $alt +piloter $alt +pioner $alt +pipetter $alt +pirater $alt +piruetter $alt +pivoter $alt +pizziker $alt +placer $alt +plagier $alt +plakater $alt planere $alt -plastificere $alt -platinere $alt -plettere $alt -plissere $alt -plombere $alt -plædere $alt -pochere $alt -poetisere $alt -pointere $alt -pokulere $alt -polarisere $alt -polemisere $alt +plastificer $alt +platiner $alt +pletter $alt +plisser $alt +plomber $alt +plæder $alt +pocher $alt +poetiser $alt +pointer $alt +pokuler $alt +polariser $alt +polemiser $alt polere $alt -politisere $alt -polymerisere $alt -pomadisere $alt -popularisere $alt -portiere $alt +politiser $alt +polymeriser $alt +pomadiser $alt +populariser $alt +portier $alt portrættere $alt posere $alt -positionere $alt -postdatere $alt +positioner $alt +postdater $alt postere $alt -postulere $alt -potensere $alt -poussere $alt -praktisere $alt -premiere $alt -primitivisere $alt -prioritere $alt -privatfinansiere $alt -privatisere $alt -privilegere $alt -probere $alt -problematisere $alt -procedere $alt -producere $alt -profanere $alt -professionalisere $alt -profetere $alt +postuler $alt +potenser $alt +pousser $alt +praktiser $alt +premier $alt +primitiviser $alt +prioriter $alt +privatfinansier $alt +privatiser $alt +privileger $alt +prober $alt +problematiser $alt +proceder $alt +producer $alt +profaner $alt +professionaliser $alt +profeter $alt profilere $alt -profitere $alt -prognosticere $alt +profiter $alt +prognosticer $alt programmere $alt -progredere $alt -progrediere $alt +progreder $alt +progredier $alt projektere $alt -projicere $alt -proklamere $alt -proletarisere $alt -prolongere $alt -promenere $alt -promovere $alt -propagandere $alt -propagere $alt -proponere $alt -proportionere $alt -proskribere $alt -prospektere $alt -prostituere $alt -protegere $alt -protestere $alt -protokollere $alt -proviantere $alt -provokere $alt -præcisere $alt -prædestinere $alt -prædisponere $alt -præfabrikere $alt -præferere $alt -præjudicere $alt -prækvalificere $alt -præludere $alt -præmiere $alt -prænumerere $alt -præparere $alt -præsentere $alt -præservere $alt -præsidere $alt +projicer $alt +proklamer $alt +proletariser $alt +prolonger $alt +promener $alt +promover $alt +propagander $alt +propager $alt +proponer $alt +proportioner $alt +proskriber $alt +prospekter $alt +prostituer $alt +proteger $alt +protester $alt +protokoller $alt +provianter $alt +provoker $alt +præciser $alt +prædestiner $alt +prædisponer $alt +præfabriker $alt +præferer $alt +præjudicer $alt +prækvalificer $alt +præluder $alt +præmier $alt +prænumerer $alt +præparer $alt +præsenter $alt +præserver $alt +præsider $alt præstere $alt -præsupponere $alt -prætendere $alt -psykoanalysere $alt -psykologisere $alt -publicere $alt -pulsere $alt -pulverisere $alt +prætender $alt +psykologiser $alt +publicer $alt +pulser $alt +pulveriser $alt punktere $alt -purere $alt -pædagogisere $alt -pønitere $alt -påmontere $alt -påoktrojere $alt -rabattere $alt -radere $alt -radiere $alt -radikalisere $alt -radiodirigere $alt -raffinere $alt -raillere $alt -ramponere $alt -rangere $alt -rappellere $alt +purer $alt +pædagogiser $alt +pøniter $alt +påoktrojer $alt +rabatter $alt +rader $alt +radier $alt +radikaliser $alt +radiodiriger $alt +raffiner $alt +railler $alt +ramponer $alt +ranger $alt +rappeller $alt rapportere $alt -rasere $alt -ratificere $alt -ratihabere $alt -rationalisere $alt +raser $alt +ratificer $alt +ratihaber $alt +rationaliser $alt rationere $alt -reagere $alt -reaktivere $alt -realisere $alt -reassumere $alt -reassurere $alt -rebellere $alt -recensere $alt -recidivere $alt -recirkulere $alt -recitere $alt -redefinere $alt -redigere $alt -redressere $alt -reducere $alt -reduplicere $alt -reeksaminere $alt -reeksportere $alt -reetablere $alt -reevaluere $alt -referere $alt -refinansiere $alt -reflektere $alt -reformere $alt -refundere $alt -refusere $alt -regalere $alt -regenerere $alt -regere $alt -regionalisere $alt -registrere $alt -regredere $alt -regrediere $alt -regulere $alt -rehabilitere $alt -reificere $alt -reimportere $alt -reinvestere $alt -rejicere $alt -rekapitulere $alt -reklamere $alt -rekognoscere $alt -rekommandere $alt -rekompensere $alt -rekonstruere $alt -rekonvalescere $alt -rekreere $alt -rekruttere $alt -rektificere $alt -rektoskopere $alt -rekurrere $alt -rekvirere $alt -rekylere $alt -relaksere $alt -relancere $alt -relatere $alt -relativere $alt -relativisere $alt -relegere $alt -remboursere $alt -rembursere $alt -remittere $alt -remonstrere $alt -remontere $alt -remplacere $alt -renegere $alt -renoncere $alt -renovere $alt -reorganisere $alt -reparere $alt -repatriere $alt -repetere $alt -replicere $alt +reager $alt +reaktiver $alt +realiser $alt +reassumer $alt +reassurer $alt +rebeller $alt +recenser $alt +recidiver $alt +recirkuler $alt +reciter $alt +redefiner $alt +rediger $alt +redresser $alt +reducer $alt +referer $alt +reflekter $alt +reformer $alt +refunder $alt +refuser $alt +regaler $alt +regenerer $alt +reger $alt +regionaliser $alt +registrer $alt +regreder $alt +regredier $alt +reguler $alt +rehabiliter $alt +reificer $alt +reimporter $alt +reinvester $alt +rejicer $alt +rekapituler $alt +reklamer $alt +rekognoscer $alt +rekommander $alt +rekompenser $alt +rekonvalescer $alt +rekreer $alt +rekrutter $alt +rektificer $alt +rektoskoper $alt +rekurrer $alt +rekvirer $alt +rekyler $alt +relakser $alt +relancer $alt +relater $alt +relativer $alt +relativiser $alt +releger $alt +rembourser $alt +remburser $alt +remitter $alt +remonstrer $alt +remonter $alt +remplacer $alt +reneger $alt +renoncer $alt +renover $alt +reorganiser $alt +reparer $alt +repatrier $alt +repeter $alt +replicer $alt reportere $alt -repremiere $alt -reproducere $alt -repræsentere $alt +repremier $alt +reproducer $alt +repræsenter $alt reservere $alt -residere $alt -resignere $alt -resocialisere $alt -resolvere $alt -resonere $alt -resorbere $alt -respektere $alt -respirere $alt -respondere $alt -restaurere $alt +resider $alt +resigner $alt +resolver $alt +resoner $alt +resorber $alt +respekter $alt +respirer $alt +responder $alt +restaurer $alt restere $alt -restituere $alt -restringere $alt -restrukturere $alt -resultere $alt -resumere $alt -retablere $alt -retardere $alt -retirere $alt -retouchere $alt -retransmittere $alt -returnere $alt -reussere $alt -revaccinere $alt -revalidere $alt -revaluere $alt -revanchere $alt -reversere $alt -revidere $alt -revitalisere $alt -revoltere $alt -revolutionere $alt -revurdere $alt -rikochettere $alt -ripostere $alt -risikere $alt -ritualisere $alt -rivalisere $alt -rokere $alt -romanisere $alt -romantisere $alt -rotere $alt -roulere $alt -roulettere $alt -rubricere $alt +restituer $alt +restringer $alt +restrukturer $alt +resulter $alt +resumer $alt +retabler $alt +retarder $alt +retirer $alt +retoucher $alt +retransmitter $alt +returner $alt +reusser $alt +revacciner $alt +revalider $alt +revaluer $alt +revancher $alt +reverser $alt +revider $alt +revitaliser $alt +revolter $alt +revolutioner $alt +revurder $alt +rikochetter $alt +riposter $alt +risiker $alt +ritualiser $alt +rivaliser $alt +roker $alt +romaniser $alt +romantiser $alt +roter $alt +rouler $alt +rouletter $alt +rubricer $alt ruinere $alt -rumstere $alt -rundere $alt -russificere $alt -rytmisere $alt -ræsonnere $alt -røntgenfotografere $alt -sabotere $alt -saldere $alt -salutere $alt -sameksistere $alt -sanere $alt -sanktionere $alt -satinere $alt -satirisere $alt -sautere $alt -scenografere $alt -schattere $alt -secernere $alt -sedimentere $alt -segmentere $alt -segregere $alt -seksualisere $alt -sektionere $alt -sektorisere $alt -sekularisere $alt +rumster $alt +runder $alt +russificer $alt +rytmiser $alt +ræsonner $alt +saboter $alt +salder $alt +saluter $alt +sameksister $alt +saner $alt +sanktioner $alt +satiner $alt +satiriser $alt +sauter $alt +scenografer $alt +schatter $alt +secerner $alt +sedimenter $alt +segmenter $alt +segreger $alt +seksualiser $alt +sektioner $alt +sektoriser $alt +sekulariser $alt sekundere $alt -sekvensere $alt -selektere $alt -selvfinansiere $alt -sensibilisere $alt -sentimentalisere $alt -separere $alt -seponere $alt -serieproducere $alt -servere $alt -servicere $alt -shamponere $alt +sekvenser $alt +selekter $alt +selvfinansier $alt +sensibiliser $alt +sentimentaliser $alt +separer $alt +seponer $alt +serieproducer $alt +server $alt +servicer $alt +shamponer $alt signalere $alt -signalisere $alt -signere $alt -simplificere $alt -simulere $alt -skalere $alt -skalpere $alt -skamfere $alt -skandalisere $alt +signaliser $alt +signer $alt +simplificer $alt +simuler $alt +skaler $alt +skalper $alt +skamfer $alt +skandaliser $alt skandere $alt -skandinavisere $alt -skelettere $alt -skematisere $alt -skitsere $alt -skolemesterere $alt -skravere $alt -skrædderere $alt -skulptere $alt -skulpturere $alt -skvadronere $alt -smukkesere $alt -snarere $alt -snedkerere $alt -socialisere $alt -soignere $alt -solidarisere $alt -sondere $alt -sortere $alt +skandinaviser $alt +skeletter $alt +skematiser $alt +skitser $alt +skolemesterer $alt +skraver $alt +skrædderer $alt +skulpter $alt +skulpturer $alt +skvadroner $alt +smukkeser $alt +snedkerer $alt +socialiser $alt +soigner $alt +solidariser $alt +sonder $alt +sorter $alt soupere $alt -spadsere $alt -spaliere $alt -spankulere $alt -spatiere $alt -specialisere $alt -specificere $alt -spekulere $alt -spendere $alt +spadser $alt +spalier $alt +spankuler $alt +spatier $alt +specialiser $alt +specificer $alt +spekuler $alt +spender $alt spionere $alt -spolere $alt -sponsere $alt -sponsorere $alt -sprogbarriere $alt -sprøjtelakere $alt -stabilisere $alt -staffere $alt -stagnere $alt -standardisere $alt -stationere $alt +spoler $alt +sponser $alt +sponsorer $alt +stabiliser $alt +staffer $alt +stagner $alt +standardiser $alt +stationer $alt statuere $alt -stencilere $alt -stenografere $alt -stereotypere $alt -sterilisere $alt -stetoskopere $alt -stigmatisere $alt -stilisere $alt -stimulere $alt -stipulere $alt -stoltsere $alt +stenciler $alt +stenografer $alt +stereotyper $alt +steriliser $alt +stetoskoper $alt +stigmatiser $alt +stiliser $alt +stimuler $alt +stipuler $alt +stoltser $alt strabadsere $alt -strangulere $alt -stratificere $alt -strukturere $alt -studere $alt -subjektivere $alt -sublimere $alt -subordinere $alt -subsidiere $alt -subskribere $alt -substantivere $alt -substituere $alt -subsumere $alt -subtrahere $alt -subventionere $alt -succedere $alt -suffigere $alt -sufflere $alt -suggerere $alt -sulfonere $alt +stranguler $alt +stratificer $alt +strukturer $alt +studer $alt +subjektiver $alt +sublimer $alt +subordiner $alt +subsidier $alt +subskriber $alt +substantiver $alt +substituer $alt +subsumer $alt +subtraher $alt +subventioner $alt +succeder $alt +suffiger $alt +suffler $alt +suggerer $alt +sulfoner $alt summere $alt -supervisere $alt -supplere $alt -supponere $alt +superviser $alt +suppler $alt +supponer $alt supportere $alt -supprimere $alt -suspendere $alt -symbolisere $alt -sympatisere $alt -syndikere $alt -synkopere $alt -synkretisere $alt -synkronisere $alt -syntetisere $alt -systematisere $alt -tabellere $alt +supprimer $alt +suspender $alt +symboliser $alt +sympatiser $alt +syndiker $alt +synkoper $alt +synkretiser $alt +synkroniser $alt +syntetiser $alt +systematiser $alt +tabeller $alt tabuere $alt -tabuisere $alt -tabulere $alt -taksere $alt +tabuiser $alt +tabuler $alt +takser $alt taktere $alt -taktregulere $alt +taktreguler $alt taljere $alt -tamburere $alt -tamponere $alt +tamburer $alt +tamponer $alt tangere $alt -tapetsere $alt -tarere $alt -tarifere $alt -tatovere $alt -teatralisere $alt -teknificere $alt -teknokratisere $alt -teknologisere $alt +tapetser $alt +tarer $alt +tarifer $alt +tatover $alt +teatraliser $alt +teknificer $alt +teknokratiser $alt +teknologiser $alt telefonere $alt telegrafere $alt -televisere $alt -tematisere $alt -temperere $alt -tendere $alt -teoretisere $alt -termografere $alt -terrassere $alt -terrorisere $alt -testamentere $alt +televiser $alt +tematiser $alt +temperer $alt +tender $alt +teoretiser $alt +termografer $alt +terrasser $alt +terroriser $alt +testamenter $alt testere $alt tiere $alt -tilbagedatere $alt -titrere $alt -titulere $alt -tivolisere $alt -tolerere $alt -torpedere $alt -tortere $alt -torturere $alt -totalsanere $alt -touchere $alt -toupere $alt -tracere $alt -trafikere $alt -trakassere $alt -traktere $alt -tranchere $alt -transcendere $alt -transferere $alt -transfigurere $alt -transformere $alt -transfundere $alt -transistorisere $alt -transitere $alt -translitterere $alt -transmittere $alt -transpirere $alt -transplantere $alt -transponere $alt -transportere $alt -transskribere $alt -trassere $alt -traumatisere $alt -traversere $alt -travestere $alt -tremulere $alt -trepanere $alt -triangulere $alt +titrer $alt +tituler $alt +tivoliser $alt +tolerer $alt +torpeder $alt +torter $alt +torturer $alt +toucher $alt +touper $alt +tracer $alt +trafiker $alt +trakasser $alt +trakter $alt +trancher $alt +transcender $alt +transferer $alt +transfigurer $alt +transformer $alt +transfunder $alt +transistoriser $alt +transiter $alt +translitterer $alt +transmitter $alt +transpirer $alt +transplanter $alt +transponer $alt +transporter $alt +transskriber $alt +trasser $alt +traumatiser $alt +traverser $alt +travester $alt +tremuler $alt +trepaner $alt +trianguler $alt triumfere $alt -trivialisere $alt -trompetere $alt -trunkere $alt -trykimprægnere $alt +trivialiser $alt +trompeter $alt +trunker $alt trænere $alt -tunnelere $alt -turnere $alt -tuschere $alt -typificere $alt -typisere $alt -typografere $alt -tyrannisere $alt -udbasunere $alt -uddebattere $alt -uddelegere $alt -uddifferentiere $alt -uddistancere $alt -udkommandere $alt -udkonkurrere $alt -udkrystallisere $alt -udlevere $alt -udlicitere $alt -udmanøvrere $alt -udmatrikulere $alt -udparcellere $alt -udplacere $alt -udradere $alt -udrangere $alt -udsanere $alt -udsortere $alt -udspecialisere $alt -udspecificere $alt -udspionere $alt -udstaffere $alt -udstationere $alt -underbudgettere $alt -underdimensionere $alt -undereksponere $alt -underfakturere $alt -underfrankere $alt -underminere $alt -underprioritere $alt -undervurdere $alt -uniformere $alt -urbanisere $alt -urgere $alt -urinere $alt -urpremiere $alt -usurpere $alt -vaccinere $alt -vagabondere $alt -validere $alt -valorisere $alt -valutere $alt -vandalisere $alt -varedeklarere $alt -variere $alt -varmeisolere $alt -vattere $alt -vegetere $alt -ventilere $alt -verbalisere $alt -verificere $alt -versere $alt -versificere $alt -versionere $alt -vibrere $alt -vidimere $alt -vikariere $alt -vindicere $alt -virilisere $alt +tunneler $alt +turner $alt +tuscher $alt +typificer $alt +typiser $alt +typografer $alt +tyranniser $alt +uniformer $alt +urbaniser $alt +urger $alt +uriner $alt +urpremier $alt +usurper $alt +vacciner $alt +vagabonder $alt +valider $alt +valoriser $alt +valuter $alt +vandaliser $alt +varedeklarer $alt +varier $alt +vatter $alt +vegeter $alt +ventiler $alt +verbaliser $alt +verificer $alt +verser $alt +versificer $alt +versioner $alt +vibrer $alt +vidimer $alt +vikarier $alt +vindicer $alt +viriliser $alt visere $alt -visitere $alt -visualisere $alt -vitalisere $alt -vitaminisere $alt -vivisekere $alt -vokalisere $alt -voltampere $alt -voltere $alt -voltigere $alt -vomere $alt -votere $alt -vulgarisere $alt -vulkanisere $alt -vurdere $alt -xerografere $alt -xylografere $alt -ækvivalere $alt -æstetisere $alt -økonomisere $alt +visiter $alt +visualiser $alt +vitaliser $alt +vitaminiser $alt +viviseker $alt +vokaliser $alt +volter $alt +voltiger $alt +vomer $alt +voter $alt +vulgariser $alt +vulkaniser $alt +vurder $alt +xerografer $alt +xylografer $alt +ækvivaler $alt +æstetiser $alt +økonomiser $alt + +// PB words with final -el - stressed e +akvarel AkvAR'&#l $alt +appel $alt +appositionel $alt +bordel $alt +emotionel $alt +decibel $alt +eternel $alt +flonel $alt +funktionel $alt +hormonel $alt +ihjel $alt +immortel $alt + karavel $alt +karrusel $alt + kartel $alt + kautel $alt +klientel $alt + kordel $alt + kornel $alt + lamel $alt +institutionel $alt +intentionel $alt +kanel k&n'el $alt +kastel $alt +kompositionel $alt +konditionel $alt +konfessionel $alt +konstitutionel $alt +konventionel $alt +kornel $alt +kriminel $alt +maskinel $alt +model $alt +nominel $alt +officinel $alt +okkasionel $alt +operationel $alt +oppositionel $alt +personel $alt +positionel $alt +professionel $alt +proportionel $alt +præpositionel $alt +redaktionel $alt +relationel $alt +ritornel $alt +sensationel $alt +situationel $alt +traditionel $alt +bagatel $alt +eksperimentel $alt +flotel $alt +hotel $alt +immortel $alt +instrumentel $alt +kartel $alt +kastel $alt +kautel $alt +klientel $alt +kuratel $alt +medikamentel $alt +motel $alt +pastel $alt +sportel $alt +tarantel $alt +karamel $alt + +// PB nouns ending with -ering - stressed e +abandonnering $alt +abdicering $alt +abonnering $alt +abortering $alt +absentering $alt +absolvering $alt +absorbering $alt +abstrahering $alt +accelerering $alt +accentuering $alt +acceptering $alt +accessionering $alt +addering $alt +administrering $alt +adoptering $alt +adressering $alt +adsorbering $alt +adstringering $alt +advisering $alt +afbalancering $alt +afrikanisering $alt +aggravering $alt +aggregering $alt +akademisering $alt +akklimatisering $alt +akkordering $alt +akkreditering $alt +akkumulering $alt +aktering $alt +aktionering $alt +aktivering $alt +aktivisering $alt +aktualisering $alt +alarmering $alt +alfabetisering $alt +alkoholisering $alt +allegorisering $alt +allokering $alt +alternering $alt +amalgamering $alt +amerikanisering $alt +amortisering $alt +amputering $alt +analogisering $alt +anglisering $alt +animering $alt +annektering $alt +annoncering $alt +annotering $alt +annullering $alt +anodisering $alt +anonymisering $alt +antedatering $alt +antikisering $alt +applicering $alt +apportering $alt +appretering $alt +approbering $alt +aptering $alt +argumentering $alt +arkaisering $alt +arkivering $alt +armering $alt +aromatisering $alt +arrangering $alt +asfaltering $alt +assimilering $alt +associering $alt +assortering $alt +assurering $alt +astringering $alt +atomisering $alt +atrofiering $alt +attachering $alt +attakering $alt +attestering $alt +attrapering $alt +auditering $alt +autentificering $alt +autoklavering $alt +automatisering $alt +autonomisering $alt +autorisering $alt +avancering $alt +avertering $alt +bagatellisering $alt +balancering $alt +balkanisering $alt +ballastering $alt +ballotering $alt +balsamering $alt +banalisering $alt +bandagering $alt +banderolering $alt +barbarisering $alt +barbering $alt +bardering $alt +barrikadering $alt +basering $alt +bastardering $alt +bastardisering $alt +bestialisering $alt +bibliografering $alt +billettering $alt +biografering $alt +bivuakering $alt +blanchering $alt +blokering $alt +bogstavering $alt +bombardering $alt +bonitering $alt +botanisering $alt +braisering $alt +brikettering $alt +brochering $alt +brodering $alt +bronkoskopering $alt +bronzering $alt +brunering $alt +brutalisering $alt +budgettering $alt +bugsering $alt +bureaukratisering $alt +cadmiering $alt +camouflering $alt +campering $alt +catering keiteriN $alt +celebrering $alt +cementering $alt +censurering $alt +centralisering $alt +centrering $alt +centrifugering $alt +certificering $alt +chaptalisering $alt +chifrering $alt +cirkulering $alt +ciselering $alt +citering $alt +civilisering $alt +computerisering $alt +containerisering $alt +cupturnering $alt +damascering $alt +danisering $alt +datamatisering $alt +datering $alt +debitering $alt +decentralisering $alt +decentrering $alt +dechifrering $alt +decimering $alt +defibrillering $alt +defilering $alt +definering $alt +deflorering $alt +deformering $alt +degenerering $alt +degradering $alt +dekantering $alt +dekatering $alt +deklamering $alt +deklarering $alt +deklassering $alt +deklinering $alt +dekorering $alt +dekupering $alt +delegering $alt +demarkering $alt +demaskering $alt +dementering $alt +demilitarisering $alt +demineralisering $alt +demokratisering $alt +demolering $alt +demonstrering $alt +demontering $alt +demoralisering $alt +denaturering $alt +deodorisering $alt +deplacering $alt +deployering $alt +deponering $alt +deportering $alt +depravering $alt +depreciering $alt +derivering $alt +desarmering $alt +desavouering $alt +desertering $alt +designering $alt +desinficering $alt +desinformering $alt +desorganisering $alt +destabilisering $alt +destillering $alt +destruering $alt +detachering $alt +detaljering $alt +detektering $alt +determinering $alt +detonering $alt +detronisering $alt +devaluering $alt +deviering $alt +devovering $alt +diagnosticering $alt +differentiering $alt +diftongering $alt +digitalisering $alt +diktering $alt +dimensionering $alt +dimittering $alt +dirigering $alt +disciplinering $alt +diskontering $alt +diskriminering $alt +diskvalificering $alt +dispensering $alt +dispergering $alt +disponering $alt +dissekering $alt +dissentiering $alt +distancering $alt +distrahering $alt +distribuering $alt +diversificering $alt +divisionalisering $alt +divisionering $alt +dogmatisering $alt +dokumentering $alt +dollering $alt +domesticering $alt +dominering $alt +dosering $alt +dossering $alt +dotering $alt +dragering $alt +dramatisering $alt +drapering $alt +dressering $alt +dublering $alt +duellering $alt +dupering $alt +duplicering $alt +duplikering $alt +dæmonisering $alt +editering $alt +effektivisering $alt +effektuering $alt +egalisering $alt +eksekvering $alt +eksemplificering $alt +eksilering $alt +ekskludering $alt +ekspatriering $alt +ekspedering $alt +eksplicitering $alt +eksploitering $alt +eksponering $alt +ekspropriering $alt +ekstemporering $alt +ekstrapolering $alt +ekvipering $alt +elektrificering $alt +eliminering $alt +eloxering $alt +emaljering $alt +emancipering $alt +emballering $alt +emigrering $alt +emulering $alt +emulgering $alt +endossering $alt +engagering $alt +enhedskommatering $alt +ensilering $alt +erodering $alt +erotisering $alt +eskalering $alt +eskamotering $alt +eskortering $alt +estimering $alt +etablering $alt +etikettering $alt +euforisering $alt +europæisering $alt +eutrofiering $alt +evakuering $alt +evaluering $alt +evaporering $alt +evolering $alt +excerpering $alt +fabrikering $alt +fabulering $alt +facettering $alt +faksimilering $alt +fakturering $alt +falsificering $alt +familiarisering $alt +fanatisering $alt +fantasering $alt +farsering $alt +fashionering $alt +favorisering $alt +federalisering $alt +feminisering $alt +fermentering $alt +fernisering $alt +fertilisering $alt +fetering $alt +figurering $alt +fiksering $alt +fiktionalisering $alt +filering $alt +filetering $alt +filmatisering $alt +filosofering $alt +filtrering $alt +finansiering $alt +finering $alt +finlandisering $alt +flambering $alt +flankering $alt +fluidisering $alt +fluktuering $alt +fluoridering $alt +fokusering $alt +foliering $alt +forcering $alt +formalisering $alt +formatering $alt +formering $alt +formulering $alt +fosfatering $alt +fosforescering $alt +fotografering $alt +fouragering $alt +fragmentering $alt +fraktionering $alt +frankering $alt +frasering $alt +fraternisering $alt +frekventering $alt +frisering $alt +fritering $alt +frottering $alt +frustrering $alt +fundamentering $alt +fundering $alt +funktionalisering $alt +furnering $alt +fusionering $alt +føderalisering $alt +gagering $alt +galopering $alt +galoppering $alt +galvanisering $alt +garagering $alt +gardering $alt +garnering $alt +garnisonering $alt +garrottering $alt +gelatinering $alt +gelering $alt +geminering $alt +generalisering $alt +generering $alt +germanisering $alt +ghettoisering $alt +girering $alt +glamourisering $alt +glasering $alt +globalisering $alt +glorificering $alt +glosering $alt +glossering $alt +gradering $alt +graduering $alt +granulering $alt +gratinering $alt +gravering $alt +gravitering $alt +grillering $alt +grimassering $alt +grublisering $alt +grundering $alt +gruppering $alt +græcisering $alt +grønlandisering $alt +guillotinering $alt +gummiering $alt +halvering $alt +harcelering $alt +harmonisering $alt +harpunering $alt +hektografering $alt +heroisering $alt +hierarkisering $alt +historisering $alt +homogenisering $alt +homologisering $alt +honorering $alt +hospitalisering $alt +hospitering $alt +humanisering $alt +hydrering $alt +hypnotisering $alt +hypostasering $alt +håndtering $alt +idealisering $alt +identificering $alt +ideologisering $alt +idolisering $alt +idyllisering $alt +ignorering $alt +illuminering $alt +illustrering $alt +immatrikulering $alt +immobilisering $alt +immunisering $alt +implementering $alt +improvisering $alt +imprægnering $alt +indeksercering $alt +indeksering $alt +indgravering $alt +indicering $alt +indikering $alt +individualisering $alt +indkalkulering $alt +indkassering $alt +indklarering $alt +indkopiering $alt +indkvartering $alt +indlevering $alt +indlogering $alt +indoktrinering $alt +indplacering $alt +indrangering $alt +indregistrering $alt +indregulering $alt +indrullering $alt +indstudering $alt +industrialisering $alt +inficering $alt +infiltrering $alt +informering $alt +inhalering $alt +initiering $alt +inkassering $alt +inkludering $alt +inkriminering $alt +inokulering $alt +inseminering $alt +inspicering $alt +installering $alt +instituering $alt +institutionalisering $alt +instruering $alt +instrumentalisering $alt +instrumentering $alt +integrering $alt +intellektualisering $alt +intensivering $alt +internalisering $alt +internationalisering $alt +internering $alt +interpellering $alt +interpolering $alt +intimidering $alt +intonering $alt +invalidering $alt +inventering $alt +invertering $alt +investering $alt +involvering $alt +ionisering $alt +irisering $alt +islamisering $alt +isolering $alt +jonglering $alt +jonisering $alt +journalisering $alt +judaisering $alt +jugering $alt +justering $alt +kachering $alt +kadmiering $alt +kalibrering $alt +kalkering $alt +kalkulering $alt +kalligrafering $alt +kamuflering $alt +kanalisering $alt +kandisering $alt +kannelering $alt +kannibalisering $alt +kanonering $alt +kanonisering $alt +kantonisering $alt +kantonnering $alt +kapitalisering $alt +kapunering $alt +karakterisering $alt +karbonisering $alt +karburering $alt +karikering $alt +kartering $alt +kartonnering $alt +kasernering $alt +kassering $alt +kastrering $alt +katalogisering $alt +kategorisering $alt +katekisering $alt +kautionering $alt +kilometrering $alt +klarering $alt +klarificering $alt +klassificering $alt +klausulering $alt +klichering $alt +klimatisering $alt +kloakering $alt +klorering $alt +kloroformering $alt +koagulering $alt +kodificering $alt +kokkerering $alt +kollationering $alt +kollektivisering $alt +kolonisering $alt +kolorering $alt +kolportering $alt +kombinering $alt +kommatering $alt +kommentering $alt +kommercialisering $alt +kommittering $alt +kommunalisering $alt +kommutering $alt +kompensering $alt +kompilering $alt +komplettering $alt +komponering $alt +kompostering $alt +komprimering $alt +kompromittering $alt +koncentrering $alt +kondemnering $alt +kondensering $alt +konditionering $alt +konfektionering $alt +konferering $alt +konfirmering $alt +konfiskering $alt +konformering $alt +konfrontering $alt +konfundering $alt +konkretisering $alt +konservering $alt +konsolidering $alt +konstatering $alt +konstituering $alt +konstruering $alt +konsumering $alt +kontaminering $alt +kontering $alt +kontingentering $alt +kontrahering $alt +kontrastering $alt +konturering $alt +konvertering $alt +konvojering $alt +konvolutering $alt +koordinering $alt +kopiering $alt +korrugering $alt +korrumpering $alt +korsettering $alt +kostumering $alt +krakelering $alt +kreditering $alt +kreering $alt +kremering $alt +krenelering $alt +kridering $alt +kriminalisering $alt +krokering $alt +kryptering $alt +kryptografering $alt +krystallisering $alt +kujonering $alt +kultivering $alt +kumulering $alt +kupering $alt +kursivering $alt +kurtisering $alt +kuvertering $alt +kvadrering $alt +kvalificering $alt +kvantificering $alt +kvittering $alt +kvotering $alt +labialisering $alt +lakering $alt +lamentering $alt +laminering $alt +lancering $alt +lasering $alt +latinisering $alt +lavering $alt +legalisering $alt +legering $alt +legitimering $alt +leksikalisering $alt +levering $alt +liberalisering $alt +licensering $alt +licitering $alt +liering $alt +likvidering $alt +linjering $alt +litografering $alt +litrering $alt +lokalisering $alt +longering $alt +lædering $alt +magasinering $alt +magnetisering $alt +majorisering $alt +makadamisering $alt +maksimering $alt +makulering $alt +maltraktering $alt +manifestering $alt +manipulering $alt +manøvrering $alt +marginalisering $alt +marginering $alt +marinering $alt +markering $alt +marmorering $alt +maskering $alt +maskinisering $alt +maskulinisering $alt +materialisering $alt +matrikulering $alt +mattering $alt +medicinering $alt +mekanisering $alt +mercerisering $alt +meritering $alt +merkantilisering $alt +metallisering $alt +mikroskopering $alt +minering $alt +minimering $alt +mobilisering $alt +modellering $alt +modernisering $alt +modificering $alt +modulering $alt +molestering $alt +monitering $alt +monitorering $alt +monoftongering $alt +monopolisering $alt +montering $alt +moralisering $alt +mortificering $alt +motionering $alt +motivering $alt +motorisering $alt +mouillering $alt +mulktering $alt +mumificering $alt +mundering $alt +musealisering $alt +musikalisering $alt +mytologisering $alt +møblering $alt +narkotisering $alt +nasalering $alt +nationalisering $alt +naturalisering $alt +navigering $alt +nazificering $alt +negering $alt +negligering $alt +neutralisering $alt +nitrering $alt +nominalisering $alt +nominering $alt +normalisering $alt +normering $alt +notering $alt +nuancering $alt +nummerering $alt +obducering $alt +objektivering $alt +objektivisering $alt +observering $alt +okkupering $alt +okulering $alt +oliering $alt +ondulering $alt +operationalisering $alt +optering $alt +optimering $alt +ordinering $alt +organisering $alt +orientering $alt +orkestrering $alt +ornamentering $alt +oxidering $alt +oxydering $alt +pacificering $alt +paginering $alt +palatalisering $alt +palletering $alt +palpering $alt +panelering $alt +panering $alt +panorering $alt +paradering $alt +parafering $alt +paraffinering $alt +parafrasering $alt +paragrafering $alt +parallelisering $alt +paralysering $alt +parering $alt +parfumering $alt +parkering $alt +parlamentering $alt +parodiering $alt +partering $alt +participering $alt +paspolering $alt +passering $alt +passivering $alt +passivisering $alt +pasteurisering $alt +patentering $alt +patinering $alt +patronisering $alt +patruljering $alt +pausering $alt +pelletering $alt +pendulering $alt +pensionering $alt +perfektionering $alt +perforering $alt +periodisering $alt +permittering $alt +personalisering $alt +personificering $alt +perspektivering $alt +pervertering $alt +pigmentering $alt +pilotering $alt +placering $alt +plagiering $alt +plakatering $alt +planering $alt +plastificering $alt +platinering $alt +plettering $alt +plissering $alt +plombering $alt +podsolering $alt +poetisering $alt +pointering $alt +pokulering $alt +polarisering $alt +polemisering $alt +polering $alt +politisering $alt +polymerisering $alt +pomadisering $alt +popularisering $alt +portrættering $alt +positionering $alt +postering $alt +potensering $alt +primitivisering $alt +prioritering $alt +privatisering $alt +problematisering $alt +profanering $alt +professionalisering $alt +profilering $alt +prognosticering $alt +programmering $alt +projektering $alt +projicering $alt +proletarisering $alt +prolongering $alt +promovering $alt +proportionering $alt +prospektering $alt +protegering $alt +protokollering $alt +proviantering $alt +præcisering $alt +præmiering $alt +præparering $alt +præservering $alt +psykologisering $alt +publicering $alt +pulsering $alt +pulverisering $alt +punktering $alt +purering $alt +radering $alt +radikalisering $alt +radiodirigering $alt +raffinering $alt +ramponering $alt +rangering $alt +rapportering $alt +rasering $alt +ratificering $alt +ratihabering $alt +rationalisering $alt +rationering $alt +reaktivering $alt +realisering $alt +recirkulering $alt +redigering $alt +redressering $alt +reducering $alt +reetablering $alt +reevaluering $alt +referering $alt +reflektering $alt +reformering $alt +refundering $alt +refusering $alt +regering $alt +regionalisering $alt +registrering $alt +regulering $alt +rehabilitering $alt +reificering $alt +rejicering $alt +reklamering $alt +rekognoscering $alt +rekonstruering $alt +rekruttering $alt +rektificering $alt +rekvirering $alt +relatering $alt +relativering $alt +relativisering $alt +relegering $alt +remittering $alt +remplacering $alt +renovering $alt +reservering $alt +restaurering $alt +restituering $alt +resumering $alt +retablering $alt +retardering $alt +retouchering $alt +returnering $alt +revalidering $alt +revaluering $alt +reversering $alt +revidering $alt +revitalisering $alt +rikochettering $alt +risikovurdering $alt +ritualisering $alt +rivalisering $alt +rokering $alt +romanisering $alt +romantisering $alt +rubricering $alt +ruinering $alt +rumstering $alt +rundering $alt +russificering $alt +saldering $alt +salutering $alt +sanering $alt +sanktionering $alt +satirisering $alt +sautering $alt +schattering $alt +secernering $alt +sedimentering $alt +segmentering $alt +segregering $alt +seksualisering $alt +sektionering $alt +sekularisering $alt +sekundering $alt +sekvensering $alt +selektering $alt +sensibilisering $alt +separering $alt +servering $alt +servicering $alt +shamponering $alt +signalering $alt +signalisering $alt +signering $alt +simplificering $alt +simulering $alt +skalpering $alt +skamfering $alt +skandalisering $alt +skandering $alt +skandinavisering $alt +skelettering $alt +skematisering $alt +skitsering $alt +skravering $alt +smukkesering $alt +socialisering $alt +soignering $alt +solidarisering $alt +sondering $alt +sortering $alt +spatiering $alt +specialisering $alt +specificering $alt +spolering $alt +sponsering $alt +sponsorering $alt +stabilisering $alt +staffering $alt +stagnering $alt +standardisering $alt +stationering $alt +statuering $alt +stencilering $alt +stenografering $alt +stereotypering $alt +sterilisering $alt +stigmatisering $alt +stilisering $alt +stimulering $alt +stipulering $alt +strabadsering $alt +strangulering $alt +stratificering $alt +strukturering $alt +studering $alt +subjektivering $alt +sublimering $alt +subsidiering $alt +substantivering $alt +substituering $alt +subsumering $alt +subtrahering $alt +subventionering $alt +sufflering $alt +sulfonering $alt +summering $alt +supervisering $alt +supplering $alt +suspendering $alt +symbolisering $alt +synkopering $alt +synkretisering $alt +synkronisering $alt +syntetisering $alt +systematisering $alt +systemering $alt +tabellering $alt +tabuering $alt +tabuisering $alt +tabulering $alt +taksering $alt +taktering $alt +taljering $alt +tamponering $alt +tangering $alt +tapetsering $alt +tarering $alt +tarifering $alt +tatovering $alt +teknificering $alt +teknokratisering $alt +teknologisering $alt +teksturering $alt +telefonering $alt +telegrafering $alt +televisering $alt +tematisering $alt +temperering $alt +teoretisering $alt +termografering $alt +terrassering $alt +terrorisering $alt +testamentering $alt +titrering $alt +titulering $alt +tivolisering $alt +torpedering $alt +touchering $alt +toupering $alt +trafikering $alt +traktering $alt +tranchering $alt +transferering $alt +transformering $alt +transistorisering $alt +transitering $alt +transmittering $alt +transpirering $alt +transplantering $alt +transponering $alt +transportering $alt +transskribering $alt +trassering $alt +traumatisering $alt +traversering $alt +travestering $alt +trepanering $alt +triangulering $alt +triumfering $alt +trivialisering $alt +trunkering $alt +trænering $alt +tunnelering $alt +turnering $alt +tuschering $alt +typificering $alt +typisering $alt +typografering $alt +tyrannisering $alt +udbasunering $alt +uddelegering $alt +uddifferentiering $alt +udkonkurrering $alt +udkrystallisering $alt +udlevering $alt +udlicitering $alt +udmanøvrering $alt +udmatrikulering $alt +udparcellering $alt +udplacering $alt +udradering $alt +udrangering $alt +udsanering $alt +udsortering $alt +uniformering $alt +urbanisering $alt +vaccinering $alt +vagabondering $alt +validering $alt +valorisering $alt +vandalisering $alt +vattering $alt +vegetering $alt +ventilering $alt +verbalisering $alt +verificering $alt +versificering $alt +versionering $alt +vibrering $alt +vidimering $alt +vikariering $alt +vindicering $alt +virilisering $alt +visering $alt +visitering $alt +visualisering $alt +vitaminisering $alt +vokalisering $alt +voltigering $alt +votering $alt +vulkanisering $alt +vurdering $alt +ækvivalering $alt +æstetisering $alt +økonomisering $alt + +// PB final -gram - stressed a +aerogram $alt +anagram $alt +attogram $alt +barogram $alt +diagram $alt +encefalogram $alt +epigram $alt +floragram $alt +fonogram $alt +fotogram $alt +heksagram $alt +hektogram $alt +histogram $alt +hologram $alt +ideogram $alt +kardiogram $alt +kilogram $alt +kryptogram $alt +monogram $alt +nanogram $alt +nomogram $alt +organigram $alt +organogram $alt +parallelogram $alt +pentagram $alt +piktogram $alt +program $alt +seismogram $alt +spektrogram $alt +stenogram $alt +stereogram $alt +telegram $alt +videogram $alt + +// PB nouns with final -itet - stressed e +abnormitet $alt +absurditet $alt +acceptabilitet $alt +admiralitet $alt +affinitet $alt +aggressivitet $alt +agilitet $alt +aktivitet $alt +aktualitet $alt +ambiguitet $alt +amoralitet $alt +anciennitet $alt +animositet $alt +annuitet $alt +anonymitet $alt +anormalitet $alt +antikvitet $alt +asocialitet $alt +assertivitet $alt +atonalitet $alt +attraktivitet $alt +autenticitet $alt +autoritet $alt +banalitet $alt +bestialitet $alt +bipolaritet $alt +bonitet $alt +brutalitet $alt +celebritet $alt +cirkularitet $alt +debilitet $alt +deformitet $alt +densitet $alt +depressivitet $alt +destruktivitet $alt +differentiabilitet $alt +distinktivitet $alt +diversitet $alt +dualitet $alt +duktilitet $alt +durabilitet $alt +effektivitet $alt +egalitet $alt +egocentricitet $alt +eksklusivitet $alt +eksterritorialitet $alt +ekstremitet $alt +elasticitet $alt +elektricitet $alt +emotionalitet $alt +entitet $alt +epitet $alt +etnicitet $alt +etnocentricitet $alt +eventualitet $alt +excentricitet $alt +facilitet $alt +fakticitet $alt +familiaritet $alt +fatalitet $alt +femininitet $alt +fertilitet $alt +festivitet $alt +fidelitet $alt +fleksibilitet $alt +formalitet $alt +fragilitet $alt +fraternitet $alt +frigiditet $alt +frivolitet $alt +frontalitet $alt +frugalitet $alt +funktionalitet $alt +futilitet $alt +generositet $alt +generøsitet $alt +genialitet $alt +grammatikalitet $alt +grandiositet $alt +graviditet $alt +gravitet $alt +græcitet $alt +habilitet $alt +heterogenitet $alt +historicitet $alt +homogenitet $alt +humanitet $alt +idealitet $alt +identitet $alt +illegalitet $alt +illegitimitet $alt +illikviditet $alt +illoyalitet $alt +imbecilitet $alt +immobilitet $alt +immoralitet $alt +immortalitet $alt +immunitet $alt +impulsivitet $alt +inaktivitet $alt +indemnitet $alt +individualitet $alt +ineffektivitet $alt +infantilitet $alt +inferioritet $alt +infleksibilitet $alt +integritet $alt +intellektualitet $alt +intensitet $alt +intensivitet $alt +intentionalitet $alt +intimitet $alt +invaliditet $alt +irrationalitet $alt +irregularitet $alt +irreligiøsitet $alt +irreversibilitet $alt +irritabilitet $alt +jovialitet $alt +kalamitet $alt +kapabilitet $alt +kapacitet $alt +kapillaritet $alt +kausalitet $alt +kavitet $alt +klassicitet $alt +kollegialitet $alt +kollektivitet $alt +kommensurabilitet $alt +kommunitet $alt +kompatibilitet $alt +kompleksitet $alt +komplementaritet $alt +konduktivitet $alt +konformitet $alt +kongenialitet $alt +konicitet $alt +konkavitet $alt +konneksitet $alt +konstruktivitet $alt +kontinuitet $alt +konveksitet $alt +konvertibilitet $alt +kordialitet $alt +kreativitet $alt +kriminalitet $alt +kuriositet $alt +kvalitet $alt +kvantitet $alt +labilitet $alt +lascivitet $alt +latinitet $alt +legalitet $alt +legitimitet $alt +liberalitet $alt +likviditet $alt +linearitet $alt +lokalitet $alt +loyalitet $alt +majoritet $alt +maskulinitet $alt +massivitet $alt +materialitet $alt +maternitet $alt +mentalitet $alt +minoritet $alt +mobilitet $alt +modalitet $alt +modernitet $alt +mondænitet $alt +monstrøsitet $alt +monumentalitet $alt +moralitet $alt +morbiditet $alt +mortalitet $alt +musikalitet $alt +mutabilitet $alt +naivitet $alt +nasalitet $alt +natalitet $alt +nationalitet $alt +nativitet $alt +negativitet $alt +nervøsitet $alt +neutralitet $alt +nobilitet $alt +normalitet $alt +notabilitet $alt +nullitet $alt +objektivitet $alt +obskønitet $alt +offensivitet $alt +officialitet $alt +opacitet $alt +opportunitet $alt +originalitet $alt +paradoksalitet $alt +parallelitet $alt +paritet $alt +passivitet $alt +paternitet $alt +patogenitet $alt +perfektibilitet $alt +perfiditet $alt +periodicitet $alt +permissivitet $alt +perpleksitet $alt +perversitet $alt +plasticitet $alt +plausibilitet $alt +pluralitet $alt +polaritet $alt +pompøsitet $alt +popularitet $alt +porøsitet $alt +positivitet $alt +potentialitet $alt +preciøsitet $alt +pretiøsitet $alt +primitivitet $alt +prioritet $alt +produktivitet $alt +professionalitet $alt +profitabilitet $alt +progressivitet $alt +promiskuitet $alt +proportionalitet $alt +provinsialitet $alt +præmaturitet $alt +pseudonymitet $alt +publicitet $alt +puerilitet $alt +radikalitet $alt +radioaktivitet $alt +rapiditet $alt +raritet $alt +rationalitet $alt +realitet $alt +receptivitet $alt +reciprocitet $alt +refleksivitet $alt +regularitet $alt +relativitet $alt +religiøsitet $alt +rentabilitet $alt +repræsentativitet $alt +respektabilitet $alt +restriktivitet $alt +reversibilitet $alt +rigiditet $alt +rivalitet $alt +sanitet $alt +seksualitet $alt +selektivitet $alt +senilitet $alt +sensibilitet $alt +sensitivitet $alt +sensualitet $alt +sentimentalitet $alt +seriøsitet $alt +servilitet $alt +simplicitet $alt +simultanitet $alt +socialitet $alt +solidaritet $alt +soliditet $alt +sonoritet $alt +spasticitet $alt +specialitet $alt +specificitet $alt +spiritualitet $alt +spontanitet $alt +stabilitet $alt +sterilitet $alt +stupiditet $alt +subjektivitet $alt +subsidiaritet $alt +subtilitet $alt +suggestibilitet $alt +suggestivitet $alt +suverænitet $alt +teknikalitet $alt +toksicitet $alt +tonalitet $alt +totalitet $alt +trivialitet $alt +umoralitet $alt +umusikalitet $alt +underekstremitet $alt +uniformitet $alt +universalitet $alt +universitet $alt +unormalitet $alt +urbanitet $alt +ustabilitet $alt +validitet $alt +variabilitet $alt +vejstabilitet $alt +virilitet $alt +virtuositet $alt +viskositet $alt +vitalitet $alt +vivacitet $alt +vulgaritet $alt // PB nouns ending with -ion with stress on the last syllable abbreviation $alt @@ -3522,7 +8549,7 @@ vision $alt visitation $alt vivisektion $alt vokalisation $alt - + // -fon list (on) dodekafon $alt frankofon $alt @@ -3542,19 +8569,71 @@ vibrafon $alt videofon $alt xylofon $alt +// -om list +aerodrom $alt +agronom $alt +aksiom $alt +anatom $alt +astronom $alt +atom $alt +autonom $alt +(cd-rom) sedeR'Vm $alt +datanom $alt +diplom $alt +ergonom $alt +fantom $alt +fibrom $alt +gastronom $alt +genom $alt +gliom $alt +grafonom $alt +heteronom $alt +hippodrom $alt +hortonom $alt +idiom $alt +karcinom $alt +kommunom $alt +kondom $alt +kondylom $alt +kromosom $alt +kørom kWR'Vm $alt +løjbom $alt +melanom $alt +merkonom $alt +metronom $alt +mikrotom $alt +palindrom $alt +pogrom $alt +polykrom $alt +sarkom $alt +socionom $alt +svingom sveN'Vm $alt +symptom $alt +syndrom $alt +teknonom $alt + // -on list ballon b&l'VN $alt beton bet'VN $alt +diakron $alt +interferon $alt epsilon 'ebsilVn $alt futon fut'VN $alt føljeton fWljet'Vn $alt facon f&s'Vn $alt +lazaron $alt +makron $alt +neuron $alt kupon kup'VN $alt postillon p,Vsdilj'VN $alt +perron pER'VN +progesteron $alt salon s&l'VN $alt sifon sif'VN $alt +synkron $alt talon t&l'VN $alt tampon tAmp'VN $alt +testosteron $alt // -tron list (on) betatron $alt @@ -3562,13 +8641,14 @@ bevatron $alt citron $alt cyklotron $alt elektron $alt +eskadron $alt natron n'&:tRVn $alt neutron $alt patron $alt plastron $alt synkrocyklotron $alt synkrotron $alt - + // -kon list (VN/Vn/on) akrostikon akrVsdik'Vn $alt balkon b&lk'Vn $alt @@ -3585,7 +8665,7 @@ patronymikon p&tron'ymikVn $alt perikon //Vn $alt psykofarmakon // Vn $alt zirkon $alt - + // -gon list (Vn/VN/on) $alt argon 'argVn $alt dragon $alt // military horseman @@ -3989,6 +9069,43 @@ xylofonist $alt zionist $alt ækvilibrist $alt +// PB words with final -let - stressed e +amulet $alt +atlet $alt +ballet $alt +billet $alt +cabriolet $alt +complet $alt +duatlet $alt +dublet $alt +epaulet $alt +filet $alt +flageolet $alt +ifolet $alt +kavalet $alt +komplet $alt +korselet $alt +kotelet $alt +obsolet $alt +omelet $alt +paillet $alt +palet $alt +pamflet $alt +pellet $alt +polet $alt +roulet $alt +shibbolet $alt +skelet $alt +soklet $alt +solet $alt +stilet $alt +støvlet $alt +tablet $alt +tartelet $alt +tavlet $alt +toilet $alt +violet $alt + // PB nouns ending with -ine - stressed last syllable abonnine $alt aubergine oberS'i:n@ $alt @@ -4039,160 +9156,898 @@ vitrine $alt vlieseline flis@l'i:n@ $alt zibeline $alt -// PB nouns ending with -ør (French -eur) - stress on the last syllable +// PB nouns with final -log - stressed last syllable +alkolog $alt +allergolog $alt +analog $alt +antropolog $alt +anæstesiolog $alt +arkæolog $alt +assyriolog $alt +astrolog $alt +bakteriolog $alt +beslog $alt +biolog $alt +bromatolog $alt +datalog $alt +dendrolog $alt +dermatolog $alt +dialektolog $alt +dialog $alt +egyptolog $alt +entomolog $alt +epilog $alt +eskimolog $alt +etnolog $alt +filmolog $alt +filolog $alt +frenolog $alt +futurolog $alt +fysiolog $alt +fænomenolog $alt +gemmolog $alt +genealog $alt +geobiolog $alt +geolog $alt +gerontolog $alt +gestaltpsykolog $alt +glaciolog $alt +grafolog $alt +gynækolog $alt +havbiolog $alt +herpetolog $alt +heterolog $alt +hippolog $alt +histolog $alt +homolog $alt +ideolog $alt +immunolog $alt +indolog $alt +katalog $alt +kinesiolog $alt +klimatolog $alt +kosmetolog $alt +kremlolog $alt +kriminolog $alt +laryngolog $alt +meteorolog $alt +metrolog $alt +mineralog $alt +monolog $alt +musikolog $alt +mykolog $alt +mytolog $alt +nekrolog $alt +neurolog $alt +neuropsykolog $alt +oceanolog $alt +odontolog $alt +oftalmolog $alt +onkolog $alt +ornitolog $alt +otolog $alt +palæontolog $alt +patolog $alt +politolog $alt +prolog $alt +psykolog $alt +radiolog $alt +runolog $alt +sexolog $alt +sinolog $alt +sociolog $alt +teknolog $alt +teolog $alt +terminolog $alt +toksikolog $alt +ufolog $alt +venerolog $alt +virolog $alt +vulkanolog $alt +zoolog $alt +ægyptolog $alt +økolog $alt + +// PB final -gi - stressed i (most of them -logi) +// a lot of them are in the -log list without i +// didn't bother to weed them out +allergi $alt +allergologi $alt +analogi $alt +antologi $alt +antropologi $alt +anæstesiologi $alt +apologi $alt +arkæologi $alt +assyriologi $alt +astrologi $alt +audiologi $alt +bakteriologi $alt +biologi $alt +bromatologi $alt +bryologi $alt +cytologi $alt +datalogi $alt +demagogi $alt +dendrokronologi $alt +dendrologi $alt +dermatologi $alt +dialektologi $alt +dramaturgi $alt +egyptologi $alt +elegi $alt +embryologi $alt +energi $alt +entomologi $alt +epidemiologi $alt +eskatologi $alt +eskimologi $alt +etnologi $alt +etologi $alt +etymologi $alt +farmakologi $alt +feminologi $alt +fennologi $alt +filmologi $alt +filologi $alt +fonologi $alt +fraseologi $alt +frenologi $alt +futurologi $alt +fysiologi $alt +fysiurgi $alt +fænomenologi $alt +gemmologi $alt +genealogi $alt +geologi $alt +gerontologi $alt +glaciologi $alt +grafologi $alt +gynækologi $alt +haplologi $alt +herpetologi $alt +hippologi $alt +histologi $alt +homologi $alt +hydrologi $alt +ideologi $alt +ikonologi $alt +iktyologi $alt +immunologi $alt +indologi $alt +karakterologi $alt +kardialgi $alt +kardiologi $alt +kinesiologi $alt +kirurgi $alt +klimatologi $alt +kosmetologi $alt +kosmologi $alt +kremlologi $alt +kriminologi $alt +kristologi $alt +kronologi $alt +laryngologi $alt +letargi $alt +limnologi $alt +liturgi $alt +logi $alt +magi $alt +metallurgi $alt +meteorologi $alt +metodologi $alt +metrologi $alt +mineralogi $alt +molinologi $alt +morfologi $alt +mykologi $alt +mytologi $alt +neuralgi $alt +neurologi $alt +nostalgi $alt +oceanologi $alt +odontologi $alt +oftalmologi $alt +onkologi $alt +ontologi $alt +ornitologi $alt +osteologi $alt +otologi $alt +palæontologi $alt +parasitologi $alt +parodontologi $alt +patologi $alt +petrologi $alt +politologi $alt +psykologi $alt +radiologi $alt +regi $alt +reologi $alt +reumatologi $alt +runologi $alt +røntgenologi $alt +seismologi $alt +selenologi $alt +semiologi $alt +serologi $alt +sexologi $alt +sinologi $alt +sociologi $alt +strategi $alt +symptomatologi $alt +synergi $alt +tautologi $alt +teknologi $alt +teleologi $alt +teologi $alt +terminologi $alt +tetralogi $alt +toksikologi $alt +topologi $alt +trilogi $alt +typologi $alt +ufologi $alt +urologi $alt +venerologi $alt +virologi $alt +vulkanologi $alt +zoologi $alt +ægyptologi $alt +ætiologi $alt +økologi $alt + +// final -ose - stressed o +antibiose $alt +apoteose $alt +asbestose $alt +avitaminose $alt +bilharziose $alt +cellulose $alt +cirrose $alt +compose $alt +diagnose $alt +ekspose egspos'e $alt +fibrose $alt +fruktose $alt +glukose $alt +hypnose $alt +jerikorose $alt +klorose $alt +krystallose $alt +laktose $alt +maltose $alt +metamorfose $alt +mimose $alt +mitose $alt +myose $alt +myxomatose $alt +narkose $alt +nekrose $alt +neurose $alt +osmose $alt +paradentose $alt +parodontose $alt +prognose $alt +psykose $alt +sakkarose $alt +silikose $alt +skabiose $alt +sklerose $alt +skrofulose $alt +symbiose $alt +traktose $alt +trombose $alt +tuberkulose $alt +viskose $alt +zoonose $alt + +// PB final -si - stressed i +afasi $alt +aleksi $alt +amnesi $alt +anoreksi $alt +anæstesi $alt +apopleksi $alt +autopsi $alt +biopsi $alt +bommesi $alt +bourgeoisi $alt +dysfasi $alt +dysleksi $alt +dyspepsi $alt +epilepsi $alt +eutanasi $alt +fantasi $alt +farmakognosi $alt +fototaksi $alt +frenesi $alt +geodæsi $alt +heterodoksi $alt +hæresi $alt +jalousi $alt +katalepsi $alt +kemotaksi $alt +kinæstesi $alt +kleresi $alt +kurtoisi $alt +ortodoksi $alt +poesi $alt +synæstesi $alt +taksi $alt + +// PB nouns ending with -ær - stressed last syllable +aktionær $alt +alveolær $alt +arbitrær $alt +autoritær $alt +begær $alt +besvær $alt +binokulær $alt +binær $alt +cellulær $alt +cirkulær $alt +disciplinær $alt +diskretionær $alt +doktrinær $alt +elementær $alt +elitær $alt +evolutionær $alt +familiær $alt +funktionær $alt +gevær $alt +granulær $alt +hereditær $alt +honorær $alt +humanitær $alt +imaginær $alt +inflationær $alt +insulær $alt +især $alt +kommissionær $alt +kommissær $alt +kommunitær $alt +komplementær $alt +konsulær $alt +kontrær $alt +kvaternær $alt +latrinær $alt +legionær $alt +litterær $alt +matrikulær $alt +militær $alt +milliardær $alt +millionær $alt +missionær $alt +modulær $alt +molekylær $alt +molær $alt +monetær $alt +muskulær $alt +ordinær $alt +parasitær $alt +parlamentær $alt +partikulær $alt +pekuniær $alt +pensionær $alt +perpendikulær $alt +polær $alt +populær $alt +prekær $alt +proprietær $alt +protokollær $alt +præliminær $alt +pubertær $alt +radiær $alt +reaktionær $alt +regulær $alt +revolutionær $alt +rudimentær $alt +salær $alt +sanitær $alt +sedimentær $alt +sekretær $alt +sekulær $alt +skalær $alt +solitær $alt +spektakulær $alt +stationær $alt +subsidiær $alt +temporær $alt +ternær $alt +tertiær $alt +titulær $alt +totalitær $alt +universitær $alt +uvulær $alt +velær $alt +veterinær $alt +visionær $alt +vulgær $alt + +// PB nouns with final -tor - stress on previous syllable +accelerator $alt +administrator $alt +agitator $alt +akkumulator $alt +alkvantor $alt +alligator $alt +analysator $alt +animator $alt +applikator $alt +auditor $alt +defibrillator $alt +deklamator $alt +demodulator $alt +demonstrator $alt +destillator $alt +detektor $alt +detonator $alt +diktator $alt +donator $alt +duplikator $alt +ejektor $alt +eksaminator $alt +eksekutor $alt +eksperimentator $alt +elevator $alt +emulgator $alt +eskalator $alt +evaluator $alt +evaporator $alt +fundator $alt +generator $alt +gladiator $alt +illustrator $alt +imitator $alt +imperator $alt +improvisator $alt +indikator $alt +induktor $alt +infiltrator $alt +informator $alt +inhalator $alt +inhibitor $alt +injektor $alt +inkassator $alt +inkvisitor $alt +innovator $alt +inseminator $alt +inspektor $alt +inspirator $alt +instruktor $alt +investor $alt +isolator $alt +kalkulator $alt +karburator $alt +katalysator $alt +kiropraktor $alt +kolonisator $alt +kommentator $alt +kommunikator $alt +kommutator $alt +kompensator $alt +kompilator $alt +komprimator $alt +koncentrator $alt +kondensator $alt +konditor $alt +konduktor $alt +konservator $alt +konspirator $alt +kontaktor $alt +konvektor $alt +koordinator $alt +kultivator $alt +kurator $alt +kvantor $alt +kvæstor $alt +laborator $alt +likvidator $alt +makulator $alt +manipulator $alt +multiplikator $alt +nomenklator $alt +observator $alt +operator $alt +orator $alt +ordinator $alt +organisator $alt +oscillator $alt +perforator $alt +plagiator $alt +polyhistor $alt +popularisator $alt +projektor $alt +prokurator $alt +promotor $alt +prosektor $alt +protektor $alt +radiator $alt +reaktor $alt +receptor $alt +recitator $alt +reflektor $alt +reformator $alt +refraktor $alt +regenerator $alt +registrator $alt +regulator $alt +respirator $alt +restaurator $alt +rollator $alt +senator $alt +separator $alt +simulator $alt +stabilisator $alt +stimulator $alt +tabulator $alt +taksator $alt +termistor $alt +testator $alt +totalisator $alt +transduktor $alt +transformator $alt +transistor $alt +triumfator $alt +usurpator $alt +ventilator $alt +versifikator $alt +vibrator $alt +visitator $alt +ækvator $alt + +// PB nouns ending with -ør - stressed last syllable akkompagnatør $alt -akkvisitør $alt -aktør $alt -akupunktør $alt -amatør $alt -ambassadør $alt -annoncør $alt -arbitragør $alt -arrangør $alt -assurandør $alt -auditør $alt -bankør $alt -causør $alt -charmør $alt -chauffør $alt -chefredaktør $alt -chikanør $alt -ciselør $alt -debattør $alt -dekatør $alt -dekoratør $alt -dekupør $alt -demonstratør $alt -desertør $alt -desinfektør $alt -destillatør $alt -detachør $alt -direktør $alt -dispachør $alt -distributør $alt -domptør $alt -dressør $alt -dusør $alt -ekspeditør $alt -eksportør $alt -eksteriør $alt -emaljør $alt -entreprenør $alt -farcør $alt -favør $alt -flanør $alt -forhør $alt -frisør $alt -galvanisør $alt -gehør $alt -gravør $alt -guvernør $alt -helsingør $alt -honnør $alt -humør $alt -hypnotisør $alt -importør $alt -inferiør $alt -informatør $alt -ingeniør $alt -innovatør $alt -inseminør $alt -inspektør $alt -installatør $alt -instruktør $alt -interiør $alt -isolatør $alt -jonglør $alt -klakør $alt -kollaboratør $alt -kollektør $alt -kolportør $alt -kommandør $alt -kommunikatør $alt -konduktør $alt -konstruktør $alt -kontrollør $alt -kooperatør $alt -korrektør $alt -korsør $alt -kreatør $alt -kronikør $alt -kulør $alt -lektør $alt -leverandør $alt -likør $alt -lydhør $alt -løgstør $alt -magnetisør $alt -malør $alt -manipulatør $alt -manuduktør $alt -markør $alt -marodør $alt -massør $alt -medaljør $alt -minør $alt -modellør $alt -montør $alt -narkotisør $alt -navigatør $alt -nivellør $alt -nummeratør $alt -observatør $alt -odør $alt -operatør $alt -parlør $alt -pastichør $alt -perforatør $alt -plantør $alt -portrættør $alt -portør $alt -posør $alt -procedør $alt -programmør $alt -projektør $alt -provokatør $alt -rapportør $alt -redaktør $alt -regissør $alt -rekommandør $alt -rekvisitør $alt -renovatør $alt -reparatør $alt -repetitør $alt -restauratør $alt -retouchør $alt -ræsonnør $alt -sabotør $alt -sanitør $alt -signalør $alt -skulptør $alt -skvadronør $alt -skælskør $alt -sminkør $alt -soignør $alt -soutenør $alt -speditør $alt -stereotypør $alt -stukkatør $alt -sufflør $alt -sympatisør $alt -tatovør $alt -traktør $alt -translatør $alt -transportør $alt -triør $alt -valør $alt -ventilatør $alt -vigør $alt -volontør $alt -voltigør $alt -vulkanisør $alt +akkvisitør $alt + aktør $alt +akupunktør $alt + amatør $alt +ambassadør $alt +annoncør $alt +arbitragør $alt +arrangør $alt +assurandør $alt +auditør $alt + bankør $alt + causør $alt +charmør $alt +chauffør $alt +chefredaktør $alt +chikanør $alt +ciselør $alt +debattør $alt +dekatør $alt +dekoratør $alt +dekupør $alt +demonstratør $alt +desertør $alt +desinfektør $alt +destillatør $alt +detachør $alt +direktør $alt +dispachør $alt +distributør $alt +domptør $alt +dressør $alt + dusør $alt +ekspeditør $alt +eksportør $alt +eksteriør $alt +emaljør $alt +entreprenør $alt + farcør $alt + favør $alt + flanør $alt + forhør $alt + frisør $alt +galvanisør $alt + gehør $alt + gravør $alt +guvernør $alt +helsingør $alt + honnør $alt + humør $alt +hypnotisør $alt +importør $alt +inferiør $alt +informatør $alt +ingeniør $alt +innovatør $alt +inseminør $alt +inspektør $alt +installatør $alt +instruktør $alt +interiør $alt +isolatør $alt +jonglør $alt + klakør $alt +kollaboratør $alt +kollektør $alt +kolportør $alt +kommandør $alt +kommunikatør $alt +konduktør $alt +konstruktør $alt +kontrollør $alt +kooperatør $alt +korrektør $alt + korsør $alt +kreatør $alt +kronikør $alt + kulør $alt + lektør $alt +leverandør $alt + likør $alt + lydhør $alt +løgstør $alt +magnetisør $alt + malør $alt +manipulatør $alt +manuduktør $alt + markør $alt +marodør $alt + massør $alt +medaljør $alt + minør $alt +modellør $alt + montør $alt +narkotisør $alt +navigatør $alt +nivellør $alt +nummeratør $alt +observatør $alt + odør $alt +operatør $alt + parlør $alt +pastichør $alt +perforatør $alt +plantør $alt +portrættør $alt + portør $alt + posør $alt +procedør $alt +programmør $alt +projektør $alt +provokatør $alt +rapportør $alt +redaktør $alt +regissør $alt +rekommandør $alt +rekvisitør $alt +renovatør $alt +reparatør $alt +repetitør $alt +restauratør $alt +retouchør $alt +ræsonnør $alt +sabotør $alt +sanitør $alt +signalør $alt +skulptør $alt +skvadronør $alt +skælskør $alt +sminkør $alt +soignør $alt +soutenør $alt +speditør $alt +stereotypør $alt +stukkatør $alt +sufflør $alt +sympatisør $alt +tatovør $alt +traktør $alt +translatør $alt +transportør $alt + triør $alt + valør $alt +ventilatør $alt + vigør $alt +volontør $alt +voltigør $alt +vulkanisør $alt + +// PB adjectives ending with -øs (French -eux) - stressed ø +albuminøs $alt +ambitiøs $alt +amourøs $alt +billøs $alt +bituminøs $alt +cariøs $alt +chikanøs $alt +delirøs $alt +dubiøs $alt +famøs $alt +fibrøs $alt +filistrøs $alt +furiøs $alt +gangrænøs $alt +generøs $alt +glamourøs $alt +glanduløs $alt +gloriøs $alt +glutinøs $alt +graciøs $alt +granuløs $alt +incestuøs $alt +infektiøs $alt +ingeniøs $alt +intravenøs $alt +kadaverøs $alt +kapriciøs $alt +kariøs $alt +kavernøs $alt +kompendiøs $alt +kontagiøs $alt +kopiøs $alt +kuriøs $alt +libidinøs $alt +luksuriøs $alt +luksuøs $alt +luminøs $alt +mafiøs $alt +maliciøs $alt +melodiøs $alt +minutiøs $alt +mirakuløs $alt +monstrøs $alt +muskuløs $alt +mysteriøs $alt +nervøs $alt +nitrøs $alt +normløs $alt +odiøs $alt +officiøs $alt +ominøs $alt +pastøs $alt +perniciøs $alt +pompøs $alt +porøs $alt +preciøs $alt +prestigiøs $alt +pretiøs $alt +promiskuøs $alt +prætentiøs $alt +religiøs $alt +sententiøs $alt +seriøs $alt +serøs $alt +skabrøs $alt +skarlatinøs $alt +skrofuløs $alt +spatiøs $alt +spirituøs $alt +tendentiøs $alt +trikinøs $alt +tuberkuløs $alt +urinøs $alt +venøs $alt +vinøs $alt +viskøs $alt +voluminøs $alt + +// PB final -tur - stressed +abbreviatur $alt +adjudantur $alt +adjunktur $alt +advokatur $alt +agentur $alt +agrikultur $alt +akupunktur $alt +apparatur $alt +appretur $alt +arkitektur $alt +armatur $alt +demokratur $alt +diktatur $alt +docentur $alt +floskulatur $alt +fraktur $alt +imprimatur $alt +intendantur $alt +investitur $alt +junktur $alt +kandidatur $alt +karikatur $alt +klaviatur $alt +koloratur $alt +kommandantur $alt +konjektur $alt +konjunktur $alt +kontaktur $alt +kontur $alt +korrektur $alt +kreatur $alt +kultur $alt +kurvatur $alt +kvadratur $alt +kvæstur $alt +ligatur $alt +litteratur $alt +makulatur $alt +manufaktur $alt +mikstur $alt +muskulatur $alt +natur $alt +nomenklatur $alt +partitur $alt +politur $alt +positur $alt +præfektur $alt +præmatur $alt +pulpitur $alt +punktur $alt +receptur $alt +registratur $alt +retur $alt +ruptur $alt +sekstur $alt +signatur $alt +skulptur $alt +statur $alt +striktur $alt +struktur $alt +stukkatur $alt +sutur $alt +tastatur $alt +tekstur $alt +temperatur $alt +tinktur $alt +titulatur $alt +tortur $alt + +// PB final -skop - stressed +biblioskop $alt +bronkoskop $alt +diaskop $alt +elektroskop $alt +endoskop $alt +epidiaskop $alt +episkop $alt +galvanoskop $alt +gastroskop $alt +gyroskop $alt +horoskop $alt +kalejdoskop $alt +katodoskop $alt +laryngoskop $alt +mikroskop $alt +oscilloskop $alt +otoskop $alt +periskop $alt +spektroskop $alt +stereoskop $alt +stetoskop $alt +stroboskop $alt +takistoskop $alt +teleskop $alt + +// PB final -ure - French inheritance - stressed [y:V] +bordure $alt +brochure $alt +embouchure $alt +miniature $alt +frisure $alt +friture $alt +garniture $alt +gravure $alt +couture $alt +kannelure $alt +konfekture $alt +konfiture $alt +lekture $alt +manicure $alt +miniature $alt +mixture megstjV $alt +ouverture $alt +pedicure $alt +procedure $alt +sinecure $alt +tournure $alt // exceptions alene al'en@ // alone egen a:j@n -eget a:j@D +mc mak' $capital // PB McDonald egne a:in@ enter entV ide id'e // idea @@ -4203,31 +10058,11 @@ også Vs@ // also idet id'e // in so far as bleg blaj blegrød blajrWD -blege blaj@ +//blege blaj@ blegemiddel bl&#j@mid@l //blegansigt bl&#jansegt slags sl'ags // sort, type tre tr'e // the number 3 -queen kw'i:n // PB English word 'queen' -protege prod@'sje? // PB protege -protegé prod@'sje? // PB protegé -protegeen prod@'sje@n // PB protegeen -protegeens prod@'sje@ns // PB protegeens -protegeer prod@'sjeV // PB protegeer -protegeerne prod@'sjeVnV // PB protegeerne -protegeernes prod@'sjeVnVs // PB -passager pasasj'er // PB passager -passagers pasasj'ers // PB passagers -passageren pasasj'eVn, // PB passageren -passagerens pasasj'eVns, // PB passagerens -passagerer pasasj'eV // PB passagerer -passagererne pasasj'eVn@ // PB passagernerne -passagerernes pasasj'eVn@s, // PB passagerenes -musketer musget'er // PB musketer -musketeren musget'eVn // PB musketeren -musketererne musget'eVn@ // PB musketerens -musketerer musget'eV // PB musketerer -musketerernes musget'eVn@s // PB musketerernes barber bab'er // PB barber barbere bab'eV // PB barbere barberer bab'eV // PB barberer @@ -4248,8 +10083,9 @@ geleernes sjel'eVn@s // PB geleernes geleagtig sjel'eagte //PB geleagtig geleagtige sjel'eagte@ //PB geleagtige nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' -ligesom lesVm // PB -bliver bler // PB +nogen n'o:@-n // PB +ligesom lisVm // PB +bliver blir // PB konfirmand kVnferm'&nd // PB konfirmander kVnferm'&nd3 // PB konfirmanderne kVnferm'&nd3-n@ // PB @@ -4257,7 +10093,6 @@ konfirmandernes kVnferm'&nd3-n@s // PB dollar dVlV // PB giv g'i // PB the v shouldn't be pronounced giver gir // PB the v shouldn't be pronounced -backup bak'Vb // PB jaloux sja'lu // PB jaloux aficionado afisjo'na:do // PB breakdance brEig'da:ns // PB breakdance @@ -4277,7 +10112,7 @@ jambore djamboR'E // PB English? word used in Danish - stressed e shampu Sjambo // PB Danish pronunciation - oo has been replaced by u (en face) aN||f'as // PB 'en face' - French used in Danish (en bloc) aN||'blVk // PB 'en bloc' - French used in Danish -(haute couture) %o:tku'ty:@ // PB - french word +(haute couture) %o:tku'ty:r // PB - french word (par excellence) pa:egs@'la:Ns // PB - french word (public service) pVblek||s@:vis // PB (public servicen) pVblek||s@:vis@-n // PB @@ -4285,28 +10120,35 @@ shampu Sjambo // PB Danish pronunciation - oo has been replaced b (al qaeda) al||k'ajda // PB (force majeure) fVrs||,ma'sjW:r // PB (quiche lorraine) kiS||lor'E:n: +(fait accompli) fEtakVmpl'i // PB wien v'i:n // PB Wien - the town of Vienna -calais kal'E // PB Calais - town in France +calais kal'E // PB Calais - town in France date dejt // PB date - stævnemøde -siger sir +siger sir // PB silent d +(tids nok) tis||n'Vk // PB silent d cologne ko'lVN3 // PB skateboardet sk'eitbo@d3D // PB billie bile // PB the name Billie (hole in one) h'oulinw,0n // PB English golf expression used in Danish +(en passant) AN||p&s'AN (coney island) 'kouni||'ajl3nd // PB (union station) junj3n||steisj@n // PB chevrolet sjEvrol'e saigon sajg3-n // PB Saigon managua m&n'&:gw& (deja-vu) deSja||'vy +(il duce) il||d'u:tSj@ // PB Italian faschist // Abbreviations pga pOgR'O?n'a? $hasdot // PB short for 'på grund af' hr h&r $hasdot // PB hr. - short for mister (Mr) in Danish +mr mestV $hasdot // PB mister +mrs meses $hasdot // PB Mrs. +ca sirk& $hasdot // PB short for "cirka" fx fVegsemp@l // PB "fx" is short for 'for eksempel' (f.eks) fVegsemp@l $hasdot // PB "f.eks" is short for 'for eksempel' -(dj'en) di:'dje:j3n // *PB dj'en - the dj -(dj'er) di:'dje:jV // *PB dj'er +(dj'en) di:'dje:j3n // *PB dj'en - the dj +(dj'er) di:'dje:jV // *PB dj'er (tv'et) te:ve:@d // *PB (tv'er) te:ve:V // *PB sos $abbrev // PB the SOS signal @@ -4326,16 +10168,59 @@ phil fil/3 $hasdot // PB fx cand. phil. (du have) du||h&: // PB (må have) m'O:||h&: // PB (ikke have) ege||h& // PB +// PB 'hav' = ocean - 'hav' = have (a nice day) +(et hav) ed||hAu +(stort hav) stord||hAu +hav hAu $atend (et for) ed||'for // PB for i jakke - lining +// PB problem with 'sig' [si] = "say" and 'sig' = "himself/herself" [saj] (sig mig) si||maj // PB sig mig engang -(sig hvad) si||v& // PB sig hvad du mener -(sig det) si||de // PB sig det du mener -(sig til) si||tel // PB sig til ham, at han skal ... -(gav sig til) g&||saj||tel // PB han gav sig til at ... -sig si $capital PB Sig = si with capital S - Sig det med blomster +(sig hvad) si||v& // PB sig hvad du mener +(sig det) si||de // PB sig det, du mener +sig $atend $sentence saj // end of a sentence - han vaskede sig. +(gør sig til) g,Wr||saj||t'el // PB +(gav sig til) g&||saj||tel // PB han gav sig til at ... +sig si $capital //PB Sig = si with capital S - Sig det med blomster // PB avoid [staj] as in "flæskesteg" (han steg) h&n||st'e (hun steg) hOn||st'e (vi steg) vi||st'e (de steg) di||st'e (alle steg) &l3||st'e +steget ste@d $atend $sentence +// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v] +(et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day +// PB problem with lyst = blond, light coloured and lyst = would like to, feel like +(lyst hår) lYst||hOr +(lys farve) lYs||fArw@ +(er lyst) &r||l'Ysd +(lyst til) lWsd||tel +// PB legende = legend/myth and = playing +(en legende) en||leg'End@ +legenden leg'End@n +legender leg'EndV +legenders leg'EndVs +legenderne leg'EndVn3 +legenderne leg'EndVn3s +// PB verb "forsyne" noun "forsyn" - stress problem +(et forsyn) ed||f'Vrsyn +(forsynet har) f'Vrsyn@d||hAr +// PB så = "as" [sV]/ så = "saw" [sO:] +(lige så) li@||sV +(en så) en||s'V +(mig så) maj||sV +(så meget) sV||m'a:j@D +(så mange) sV||m'aN3 +(så er) sV||'Er +(så gør) sV||g'Wr +(så langt) sV||l'ANt +(så vil) sV||v'el +(så højt) sV||h'Vjt + (så var) sV||v'Ar +(så længe) sV||l'EN3 +(så må) sV||m'O +(så har) sV||har +(virkede så) v'irkeD@||sV +(kom så) kVm||sV +(koste med) kosd@||mED + (en kanoner) en||k&non'er diff --git a/dictsource/da_rules b/dictsource/da_rules index 2ff79f6b..0793f66a 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -1,2223 +1,3150 @@ - -// This file is UTF8 encoded -// Spelling-to-phoneme rules for Danish - -// Rules and comments marked //PB -// have been made by Peter Bjarkov pbj1234@hotmail.com - -// Phonemes - vowels: i e E y Y & &# @ @# @- a 3 W V A 0 (zero) o O u - -.replace -ü y -oo u //PB English words like 'pool' - - -.L01 k g nk ng // velars -.L02 c h f k p r s t //PB 'ægte' konsonanter - 'real' consonants -.L03 b d g j l m n v w //PB halvvokaler - semivowels, approximates -.L04 u y i ø // PB fortungevokaler - front vowels - not finished, not used yet -.L05 a æ å // PB bagtungevokaler - not finished, not used yet - -.L06 p b // pande, bande - pege, bege - passe, basse -.L07 t k // time, kime - tone, kone - tage, bage - tanke, banke -.L08 sp st sk -.L09 m n // ens før vokal: naller, maller - ikke efter: nam, nan -.L10 c k -.L11 g k - -.group a - - a &: // PB changed from a? - - a (lt & // PB alt, overalt - r) a A // PB kamera - r) a (L08 a // PB rask - a (k A // PB aktuar, aktivitet - legu) a (n '& // PB stressed a in 'leguan' - r) a (t 'A // PB direktorat, inserat, kammerat - priv) a (t '&: // PB privat -agglomer) a (t 'A // PB stressed a in 'agglomerat' - @r) a (l 'A // PB stressed a in -ral - general, neutral - r) a (l@@ A // PB centralisation NEEDS MORE WORK - r) a (llel A // PB parallel - a (nt '& // PB stressed a in words with -ant - interessant - Ah) a (nd '& // PB stressed a in words with -hand - behandling - ok) a (l '& // PB stressed a in 'vokal, lokal, pokal, fokal' - @vok) a (l & // PB not stressed after a syllable - bagtungevokal - @pok) a (l & // PB not stressed after a syllable - vandrepokal - @fok) a (l & // PB not stressed after a syllable - bifokal - v) a (nlig '& // PB usædvanlig - stressed a -hospit) a (l '&: // PB stressed e - hospital -_psykop) a (t '& // PB psykopat - stressed a - a (r+ A: - bl) a a // PB blad - fr) a A // PB fra, fratage - gr) a A // PB gratis - a (L03K & // PB alle, anden - h) a (CK & // PB han -hvabeh) ar 'A // PB hvabehar -// a (L03 &: // PB foran halvvokal - a (v+ A // PB tavs - j) a & // PB ja - j) a (v & // PB javel - j) avert aurt // PB javert - l) a (v &:v // lave - g) a (v & // PB gav, opgave - L08) a (v & // PB stav - b) a (b+ A // PB babser - a (ndA a // PB anderledes - r) a (n a // PB garanteret - t) a (b a // PB tabte - tr) a (n A // PB tran - a (b+ a // PB lab - L08) a (b &: // PB skabe - r) a (bel 'A // PB vulnerabel, kurabel - mir) abel ab'El // PB mirabel(le) - a (bel+ '& // PB exception - ræssonabel, stabel - p) a (ce ei // PB motorpace, pacemaker -interf) a (ce ei // PB interface - L08) a (d &: // PB stadig - _) a (e_ &: // PB ae - a (fC a // PB af = au and exceptions in the f group - C) a (ft A // PB haft, saft -// C) a (g+ a // PB magt, sagt - s) a (g+ & // PB sag - s) a (gt+ a // PB sagt - C) agd (e+ &:_ // PB sagde - sl) a (L06 a // PB slap - d) a (g_ & // PB dag - d) a (ge+ & // PB dage, uodage - d) a (g@+ A // PB daglejer - j) a (g+ &: // PB jage -// L06) a (gA A // PB bagindgang - C) a (L11 a // PB makværk, bagværk - b) a (gh+ A // PB baghold - L06) a (g_ &: // PB bag - b) ag (ved &_: // PB bagved - b) ag (g &: // PB bage - b) a (gefter & // PB bagefter - b) ag (på &? // PB bagpå - b) ag (over &_: // PB bagover - b) ag (til & // PB bagtil - b) ag (ud &_: // PB bagud - r) a (ge+ A // PB andrage, rage - a (ge+ &: // PB tage - t) ager (_ Ar // PB tager - ai (K aj - aise 'E:s@ // PB mayonnaise - k) ai (n a'i // PB kokain - C) a (k a // PB tak - mir) a (k 'a // PB mirakel - stressed a - pacem) a (ker ei // PB pacemaker - t) a (l &: // PB tale - L09) a (l &: // PB male - L09) a (ld & // PB knald - _) a (ld a // PB aldrig, alder - b) a (lkan &: // PB Balkan - over) a (lt '& // PB stressed a in 'overalt' - s) a (m a // PB sammen - isl) a (m 'a: // PB islam, islamisk - j) a (m+ a // PB fjams - pl) a (m+ & // PB plamage CHECK THIS ONE - a (m++ a // PB ham, gamle - d) a (me+ &: // PB dame - j) a (men a // PB exception jamen = ja men - f) a (n & // PB fanden -_astrak) a (n '& // PB astrakan - _ork) a (n '& // PB orkan - _vulk) a (n '& // PB vulkan - _dek) a (n '& // PB dekan -_pemmik) a (n '& // PB pemmikan -_pelik) a (n '& // PB pelikan - _tuk) a (n '& // PB tukan - av) a (n 'V // PB avance - ch) a (n a // PB chance - L06) a (n & // PB tand, tante, band, bande, spand, spade - rom) a (n '&: // PB roman - hvord) a (n '& // PB stressed a in 'hvordan' - g) a (n+ a // PB gang - L09) a (n+ & // PB man, mand - L06) a (nC A // PB bank - Am) a (n_ '&: // PB stressed - narkoman - an (ce 'AN // PB ambulance - an (cienn aN - L06) a (nd & // PB pande - a (ndre A // PB andre - L06) a (ne a // PB bane, banke -amerik) a (ne '&: // PB amerikanere - _rom) a (nens '&: // PB romanens - _rom) a (ner_ '&: // PB romaner - _rom) a (nerne '&: // PB romanerne - _rom) a (nernes '&: // PB romanernes - _rom) a (ners '&: // PB romaners - @g) a (ng 'a // PB stressed a in words ending with -gang - engang, enegang - m) a (t '&: // PB stressed a in words with - mat - diplomat, format - a (ng++ a // PB mangle, sang - h) a (nk a // PB hank - _rom) a (ns '&: // PB romans, romansk -restaur) ant 'AN // PB added stress - a (pC+ a // PB slap - tilb) a (ge '&: // PB stressed a in 'tilbage' - a (r+ A: - d) a (t '&: // PB stressed 'dat' in mandat, soldat, kandidat - t) a (t '&: // PB stressed 'tat' in etat, østat, resultat - t) a (nk A // PB tankstation - _tot) a (l '& // PB total - stressed - _ment) a (l '& // PB mental - stressed - kapit) a (l '& // PB kapital - _port) a (l '& // PB portal - kvadr) a (t 'A // PB stressed a in 'kvadrat' - kr) a (ti 'A // PB bureaukratiske - veter) a (n 'A // PB veteran - sopr) a (n 'A // PB sopran - var) a (n 'A // PM varan - kor) a (n 'A // PM koran - membr) a (n 'A // PB membran -katamar) a (n 'A // PB katamaran -filigr) a (n 'a // PB filigran - tyr) a (n 'a // PB tyran - a (tion a - au aw // PB auto, autoritet - e) au 'o // PB bureau, niveau - nive) au o - _biss) au 'a:w // PB Guinea-Bissau - s) au (ce O: // PB sauce, bearnaisesauce - ch) au (f o - rest) au (r o - h) a (v &: // PB have - r) a (v A // PB ravage - @k) ar (l & // PB bøssekarl - action &kSj@n // PB actionfilm - aircondition E:rkVn,i:S@n - akkordeon ak'V:deVn - attention at'EnS@n - aw (K aw - ay (K aj - - -.group af - - k) af (fe 'af - l) af (fe 'af - t) af (fe af - -.group ar -// PB (most of them) words from latin with stressed 'ar' -_dokument) ar 'ar - _aktu) ar 'ar -_prolet) ar 'ar - _kat) ar 'ar - _agr) ar 'ar -_aveol) ar 'ar -_antikv) ar 'ar -_arkiv) ar 'ar - _atom) ar 'ar - _bas) ar 'ar -_bibliotek) ar 'ar -_bifil) ar 'ar - _okul) ar 'ar - _pol) ar 'ar - _biz) ar 'ar - _vik) ar 'ar - _boj) ar 'ar -_brevi) ar 'ar - _bukk) ar 'ar - _cig) ar 'ar - _cit) ar 'ar - _den) ar 'ar -_dignit) ar 'ar - _din) ar 'ar -_dromed) ar 'ar -_formul) ar 'ar -_eksempl) ar 'ar - _gal) ar 'ar - _hus) ar 'ar - _hekt) ar 'ar -_honor) ar 'ar - _glos) ar 'ar -_gloss) ar 'ar - _line) ar 'ar -_stell) ar 'ar -_invent) ar 'ar - _isob) ar 'ar - _jagu) ar 'ar -_janitsh) ar 'ar -_jubil) ar 'ar - _kors) ar 'ar -_lamin) ar 'ar -_legat) ar 'ar - _line) ar 'ar - _lug) ar 'ar - _magy) ar 'ar -_mandat) ar 'ar -_millib) ar 'ar -_myanm) ar 'ar - _not) ar 'ar -_nukle) ar 'ar - _pess) ar 'ar - _puls) ar 'ar - _qat) ar 'ar -_samov) ar 'ar -_semin) ar 'ar - _skol) ar 'ar - _tat) ar 'ar - _init) ar 'ar - _valu) ar 'ar - _veg) ar 'ar -_veget) ar 'ar - _vel) ar 'ar -_vokabul) ar 'ar - -.group b - - b b - bb b - b (il 'b - beagle bi:g@l //PB beagle - dog - beat b'i:t // PB beat - music - beaujolais boSjol'E // PB wine, district - bebop bi:bVp // PB music - babylon b&bylVn // PB - backgammon b&g'&m3n // PB - baryton baitVn // PB - brintion brendjo:n // PB -// PB words beginning with "be" with stress on the second syllable (850) - _) be (@ b%E -// PB exceptions to the "be" rule - _) be (nmel bE - _) be (narbejde bE - _) be (nbrud bE - _) be (nbræk bE - _) be (nbbuk bE - _) be (nchmark bE - _) be (nedder bE - _) be (nende bE - _) be (nfisk bE - _) be (nfedt bE - _) be (nfri bE - _) be (ngel bE - _) be (ngna bE - _) be (nh bE - _) be (njamin bE - _) be (nkl bE - _) be (nl bE - _) be (nmel bE - _) be (npibe bE - _) be (nplads bE - _) be (nrad bE - _) be (nskinne bE - _) be (ntøj bE - _) be (nspænd bE - _) be (nv bE - _) be (de bE - _) be (dre bE - _) be (dding bE - _) be (gblende bE - _) be (gmand bE - _) be (gning bE - _) be (jds bE - _) be (jle bE - _) be (lgi bE - _) be (rb bE - _) be (rgen_ bE - _) be (tastrål bE - _) be (eta_ bE - _) be (tatron bE - _) be (taversion bE - _) be (tel bE - _) be (tl bE - -.group c - - c k - c (y s // PB s followed by y - cykel - c (e s - c (i s - c (k - ch (A Sj // PB check, chokolade - // ch S - mi) ch (a k S - ch (r k - e) c (h k - c (ha S - s) c (ha // PB no extra S in 'schalburtage' - cigaret sig3r'&t - cc ks - fa) c (ad s - fa) c (on s - ceylon sajl/2Vn - cornichon kVrniS'VN - charlie _^_EN - -.group d - - d d - - l) d // omit d after l - hold, skjold - hel) d d // PB heldig - e) d D // PB med - en) d (e // PB sende - n) d (el d // PB ejendel - æ) d D - ø) d D // PB rød, grød -// in) d - mo) d D // PB mod - o) dds ds // PB odds - ve) d D - bol) d d - bol) d d - dar) d d - hva) d // PB no d pronounced in 'hvad' - or) d (e // PB no d in mordet, borddet, gjorden, ordet - or) d (er d // morder, mordere - rekor) d d // PB exception - pronounce d in 'rekord' - akor) d d // PB exception - pronounce d in 'akord' - hjor) d d // PB exception - pronounce d in 'hjord' -stikor) d // PB exception - no d in 'stikord' - d' d //PB d'Aviano - e.g. French and Italian names - -// A) d (A D - Co) d (A D - be) d (A d - ud) d (A d - A) d (C D - A) d (s // PB fødsel - deleted 30+ rules, this one does the work - A) dd (AC D // PB redder - u) d (C D -// Co) d (C D - in) d (C - mo) d (C D - ne) d (C D - ar) d (K d -// aar) d (K - ir) d (_ d - pæ) d (a d - re) d (a d - mo) d (al 'd - å) d (an d - kandi) d (at 'd - me) d (b D - me) d (d D - mi) dd (a d - he) dd (e D - si) dd (e D - kla) dd (e D - mi) dd (el D - mu) dd (er D - rø) dd (er D - kry) dd (er D - dd (et D - bu) dd (ing D - i) d (e d - an) d (e // PB manden, anden - skip the d - _fan) de (me // PB fandeme - skip de, only this word - li) d (e D - ri) d (e D - si) d (e D - ti) d (e D - vi) d (e D -// æl) d (e - Coe) de @-D // PB boede - gui) de d -// ral) d (e -// sag) d (e - snu) d (e D - A) de (_ D@ // PB change to D? - in) d (eks d - mo) d (el d - or) d (el d - sed) d (el D - or) d (en d - gui) de (n de - ver) d (en d - vi) d (er D -// yl) d (er - gui) de (r de - lu) d (ere d - A) d (es D - ær) d (es d - A) d (et D -// al) d (et - gui) de (t de - a) d (g D - bu) d (get - A) d (i d - in) d (i d - re) d (i d - æl) d (i d - A) d (ig D - A) d (isk D - a) d (k D - me) d (l D - or) d (ne d - ry) d (ni D - or) d (ning d - be) d (r D - bla) d (r D - An) d (rA d - ma) d (ras d - An) d (re d - or) d (re d - or) d (re d - æl) d (re d - æn) d (re d - æn) d (re d - a) d D // PB ad, udenad - dangerously broad - u) d D // PB udholde - u) d (elt d // PB udelt - i) d D // PB tid - _a) d (res d //PB a) => _a) - didn't work for 'smadres' - probably for 'adresse' - hon) d (ura d // PB Honduras -// Aor) d (ret d - æn) d (ri d - li) d (s D // tillidsmand - ti) d (s D - sli) d (so D - A) d (t = // PÅ forbudt, skudt, ladt, bedstefar - in) d (u d - pro) d (u d - in) d (uC d - mo) d (ul 'd - pen) d (ul 'd // PB pendul - dendron d'endrVn // // PB filodendron - doubleton dVb@ltVn // PB from bridge - -.group é // added by PB - é 'e - -.group e - e e // PB e: => e - _) er (C %er // PB er + consonant: stress on next syllable - er'hverv - _) er (go er // PB not stress on next in "ergo..." - kas) e (rne 'e // PB stressed e in 'kaserne' - ml) e 3 // PB gamle - tel) e 3 // PB tele - hov) e (d 3 // PB hoved - afl) e 3 // PB aflevere - ov) e (rK+ 3 // PB overbevisende - l) e (r 3 // PB forhandlere - r) eau o // PB bureaukratiske - ee 'e: // PB ideer, cafeer - b) ee (d ee // PB beedige - am) e (rika_ 'e // PB Amerika - et (_ 3D // PB forsket, formet - _sk) e (t e // PB sket - s) e (t e // PB set - L07Ag) e (_+ // no final e after g - kage, tage - nt) e @ // PB tante, hente - mont) e (r e // PB montere - v) e (rK+ E // PB vers, verden - av) er (+ V // PB laver, saver - lev) e (r V // levertran - _sk) e (r_ e // PB sker - @) e (r_+ V // PB efter, lever, Peter - _s) e (r_ e // PB ser - _h) e (r++ e // PB her - h) er (re+ ER // PB herre - hv) e (r+ e // PB hver - k) e (rK+ e // PB forkert - kk) er (+ V // PB rykker - br) e (L09 & // PB bremse - _) er (_++ er // PB er - _sk) er (_ er // PB sker - v) e (ri V // PB røveri - ri) e 3 // PB ferie - sn) e (K e? // PB sne, snebold - fr) e (L03 a // PB fremme, frende, frelse - fr) e (d e // PB fred fredag - _toil) e (t 'e // PB toilet, toilette - _l) er (_++ er // PB ler - _s) e (_ e? // PB se - L06) er (_ &r // PB per -L06L06) er V // PB klipper -L03L06) er (_ V // PB bomber - _) er (_ &r // PB er - _a) e (_ 3 // PB ae - pl) e (men 3 // PB supplement - nd) e (r V // PB under - r) e (j a - L09) er (ne_ V // PB kameraerne - Ct) er V // PB alter, helikop*ter*styrt - NOT words from da_list - th) e (r_ V // Luther - hj) e (r E // PB hjerne - stj) e (r+ E // PB stjerne - t) erræn &r'E:N // PB terræn - @g) e (rne V // PB sangerne - g) e (rne_+ E // PB gerne - @) er (ne+ V // PB kammeraterne, opgaverne - kuff) e (rt V // PB kuffert - Amm) e (r 3 // PB kammerater - e (mball A // PB emballere, emballage - L06) e (rC E // PB person CHECK THIS ONE - f) e (rni E // PB fernis - invad) e (re 'e // PB invadere - d) e (rn V // PB gaderne CHECK THIS ONE - ød) e 3 // PB øde -// d) e (_ @ - ed) e (- @ - g) e (js aj - proc) e (nt 'e // PB procent - _ni) e // PB changed from [ni)e] to[_ni)e] - niende, nier, niendedel - _ni) e (ce 'E: // PB exception from the rule above (_ni)e) -// c) e (_ @ // PB benefice - alsac) e // PB exception from the c)e rule above - Alsace (French region) - _fl) ee (ce+ i: // PB fleece, fleecejakka - material for clothing - fleec) e // PB fleece - skip the final e -freelanc) e // PB freelance - skip the final e -freelanc) e (r V // PB the word 'freelancer' -hospic) e // PB hospice - skip the final e - penc) e // PB pence - skip the e -interfac) e // PB interface - skip the final e - sauc) e // PB sauce, bearnaisesauce - juic) e // PB juice - skip the e -motorpac) e // PB motorpace - skip the e -motorpac) e (n @ // PB motorpacen - pac) e (maker // PB pacemaker - skip the e -provenc) e // PB Provence - skip the e - prov) e (nce 'A: // PB Provence - s) e (rviceeftersyn '@ // PB serviceeftersyn -servic) e (fag // PB servicefag -servic) e (med // PB servicemedarbejder -servic) e (sektor // PB servicesektor -servic) e (station // PB servicestation -servic) e (ydelse // PB serviceydelse -softic) e // PB softice - dr) e (n &# // PB dreng, drengestreg - r) e (ne+ 3 // PB brødrene - _adr) e (sse 'a // PB stressed e in adresse -_kongr) e (s '& // PB kongres - stressed but not after a syllable - _regr) e (s '& // PB regres - Asp) e (kt 'e // PB stressed e before -spekt - respekt, suspekt - it) e (t+ 'e // stressed e in words with -itet - vulgaritet, universitet - 330 words - _tal) e (nt 'e // PB stressed e in 'talent' - _rødb) e (de 'e // PB stressed e in 'rødbede' - _fall) e (ret 'e // PB falleret - _kass) e (rer 'e // PB kasserer - e (gn a // PB tegne, hegn - e (gsot &# // PB blegsot - e (gansigt &# // PB blegansigt -_aller) e (de_ E // PB allerede - otherwise the E is changed by another rule - bl) e (m 3 // PB møblement -_probl) e (m 'e // PB stressed e - C) e (ring 'e // PB stressed e in words with -ering (1.000) - likvidering - _el) e (ndig 'e // PB stressed e in elendig - _leb) e (ndig 'e // PB stressed e in lebendig - lini) e @ // PB changed from [e] to [@] -// str) e (_ r3 // PB venstre - r) e (s_ 3_: // PB gøres - ft) e @ // PB oftere - r) e (nd a // PB rend - n) e (r V // PM klovner - n) e (rv E // PB nerve, nervøs - n) e (rt E // PB genert - hvab) e (har_ 3 // PB hvabehar - _r) e (t+ &# //PB ret FIND A VETTER VOWEL - &) et (_ @D - r) e (tøj+ @ // PB køretøj - r) e (st E // PB resten, restaurant - _arr) e (st '& // PB arrrest - stressed e - @st) e (n e: // øjesten - h) e (n+ e // hen - _budg) e (t 'E - carst) e (n @ - karst) e (n @ - juvel) e (ren 'e // PB juveleren - juvel) e (rer 'e // PB juvelerer -absorb) e (r 'e // PB absorber, absorberer, absorbere, absorberet - -// Words ending with e - general rule (probably covered by others) - e (_ 3 - -// Words ending with -te - t) e (_ @ - -// Words ending with se or ce - s) e (_ @ - c) e (_ @ - -// Words ending with -ske (and ste, spe) - L08) e (_ @ // PB påske, forske - -// exceptions to the -ske rule - mosk) e 'e // moske, moskeen, moskeer - måsk) e (_ 'e // PB måske - _sk) e (_ e // PB ske - _sk) e (er e // PB skeer -dessertsk) e e // PB dessertske -fugesk) e e // PB fugeske -grydesk) e e // PB grydeske -grødsk) e e // PB grødske - hulsk) e e // PB hulske - kansk) e e // PB kanske - mursk) e e // PB murske -målesk) e e // PB måleske -strøsk) e e // PB strøske -støbesk) e e // PB teeske - tesk) e e // PB måleske - - for) e (t_ // PB no e - handled under group o - 'fore' - gourm) e 'e // PB gourmet - @) e (kt 'e: // PB stressed e in words with -ekt - konfekt - L06) eg (e aj // PB p) changed to L06 to include b - L08) e (g a // PB steg, spegepølse - best) eg (_ 'e // PB besteg - n) egl ajl // PB negl - r) egel e?l // PB regel - r) egl e?l // PB regler - res) e (rve 'e // PB reserve - stressed - m) eg (a eg - eg (et a:j - r) eg (er eg - r) eg (n aj - p) eg (n aj // PB pegning - t) eg (n aj // tegne - eg (e_ 'e: // PB added _ - ege - r) ej (s aj - en (gage aN // engagere - en (tre aN - c) en (t en - c) en (tA en - c) en (tC en - p) en (sion aN - r) en (ce aN - r) e (d e - r) e (dd E // PB redder - r) e (v e - tr) e e - tr) e (A e - ei A:j - ej (+ aj // PB changed from ai to aj - nej - v) ej (r 'e -_offic) e (_ // office (officepakke) - ffic) e (r e - &) ede (_ @D3 // PB changed from [@D@] to [@D3] - fl) e (de+ e // PB aflede - f) e (de_+ e // PB opfede - &) edet (_ @D3d // PB hovedet - &r) ede (N_ 3D@ - &r) en (_ 3n - &r) en (s_ 3n - &r) en (ing 'en - &) en (_ @-n - Ad) en (@ @-n // udenlandsk, udenad - Ad) en (t en // PB identificere - &) ene (_ @-n@ - &) ende (_ e-n@ // PB changed from [@-nn@] - genkende - AL09) e (re_ 3 // PB strømere - &) ere (_T+ 'e:3 // PB can't get 'vurdere' to work with -ere words in list file - ere (_ 3V // PB smukkere, hellere - fl) e (re_ e // PB flere - v) e (re_T e // PB levere - d) e (re V // PB mordere CHECK THIS ONE - &) eren (_ 3r3n - &) ere (T_ 'e:3 // PB stressed - manipulere, protestere - words in list file - &) erede (NS2_ =D3 // PB stressed - manipulerede, protesterede - words in list file - &) eres (NS1_ =s // PB stressed - manipuleres, protesteres - words in list file - &) erer (NS1_ =V // PB stressed - manipuleres, protesteres - words in list file - &) eret (NS1_ =3D // PB stressed - manipuleret, protestet 1.810 words in list file - _sen) ere 3V // PB senere - _all) erede (_ @reD@ - &) eren (s_ 3r3n - ucc) es 'e - nog) et (_ D // PB noget - ir) e (n 'e - styr) e (n 'e // styren - ork) e (ster 'e // PB stressed e in 'orkester' - forur) e (ne 'e // PB stressed - forurene - st) e (ret // PB orkesteret - b) ea (t i: // PB beat, beatorkester - ompet) en (ce aN - ress) en (timent aN // PB ressentiment -// bl) eg aj // PB bleg - m) edie 'edj3 // medie, kommedie - b) e (@ e // PB words starting with be- - bestemme - around 900 words - afst) e (dkom 'e // PB afstedkomme - -.group el - -// PB GENERAL RULE FOR WORDS ENDING WITH -EL - 1.182 words - @) el (_ @l // fødsel - @) el (s @l // fødselsdag, fødselstal - @) el (A @l // fødselar -// PB exceptions for the -el rule - most of them are stressed - _) el el // elkedel - d) el (+ el // PB dele, omdele - hot) el 'el // hotel - decib) el 'el // decibel - verbi) el 'el // adverbiel - mod) el 'el // model - u) el (+ 'el // aktuel, seksuel, visuel - ur) el (+ '&#l // konjunkturel - akvar) el 'el // akvarel - and) el el // andel - hand) el @l // handel - n) el (+ 'el // 63 words - nominel - i) el (+ 'el // arteriel, artificiel - dani) el el // Daniel - app) el 'el // appel - sk) el el // forskel - ed) el (+ el // femtedel - words where "del" means 'part of' - ked) el (+ @l // grukedel - doesn't mean 'part of' - benm) el el // benmel - uform) el 'el // uformel -hvedem) el el - bord) el 'el -brillest) el el - kast) el 'el -servantest) el el -spisest) el el -underst) el (+ el - _st) el (_ el - ond) el el // milliondel - jav) el 'el // stressed e in 'javel' - v) el el // velkommen - icha) el l // Michael - ika) el l // Mikael - brøkd) el el - byd) el el - for) el '&#l - citad) el 'el - du) el 'el - ejend) el 'el - nt) el 'el // eksperimentel - on) el (+ 'el // personel, rationel - 42 words - fid) el 'el - ded) el el // tiendedel, niendedel - farv) el 'el -grænsesk) el el -immort) el 'el - juv) el 'el - kam) el 'el - karav) el 'el -karrus) el 'el - kart) el 'el - kaut) el 'el -klient) el 'el - kord) el 'el - korn) el 'el - lam) el 'el -legemsd) el el - løsd) el el - makr) el '&#l -marksk) el el -medikament) el 'el -mortad) el 'el - mot) el 'el - nuv) el 'el - ovend) el el -parall) el 'el - c) el 'el // parcelhus - past) el 'el - ped) el 'el -procentd) el el -programm) el 'el - prop) el 'el - reb) el 'el - re) el 'el -reserved) el el - rism) el el - rond) el 'el - rugm) el el - rundd) el el - sagom) el el - sard) el 'el -sigtem) el el - skalp) el 'el - sport) el 'el -stikked) el el - såv) el 'el - tab) el 'el -tarant) el 'el -univers) el 'el -verdensd) el el - t) el (+ el - -.group f - f f - ff f - //for) (C %for - _) for (&@P3 f%V - _) for (e_ f%o // PB only the word 'fore' - _) fore (de_ f%'orV // PB only the word 'forede' - _) for (um f'or - - a) f (A w // PB afart, afprøve -// PB exceptions to the 'a)f(A' rule below - ca) f (e f // PB cafe - ca) f (é f // PB café - a) f (asi f // PB afasi - a) f (atisk f // PB afatisk - a) f (oris f // PB aforisme, aforistisk - - a) f (C w -// PB exceptions to the 'a)f (C' rule below - a) ff (ine f // PB raffineret, raffinement - a) ff (abel f // PB affabel - a) ff (ekt f // PB affekt , affekteret - a) ff (icere f // PB afficere - a) ff (irm f // PB affirmere, affirmation, affirmativ - a) ff (initet f // PB affinitet - a) ff (ære f // PB affære - a) ff (age f // PB staffage - - a) f (ro f // PB afroasiat, afroamerikaner, afrohår etc. - o) f (il 'f // PB profil, frankofil - stressed - @) fobi fob'i // PB xenofobi, hydrofobi - a) f (it f - a) f (on f - a) f (rik f - a) f (sted - a) f (ten f - a) f (tes_ f - Ca) f (t f - Ca) f (A f - ga) f (fel f - gra) f f - gra) f (A f - gra) f (C f - ra) f (ik f - ra) f (fe f - fire fi:V // PB fire - sa) f (ar f - sta) f (e f - fettuccine fetuTS'i:n@ - -.group g - g g - g) g - g) g (e - g (ent g - ru) g // PB rug, rugmel - g (ernA g // gerne gerning - ami) g (o g // PB amigo - &) g (r g - g (ård g - g (ment g - a) g (A w - a) ga (t 'ga: // PB agat - gem stone - a) g (ave 'g // PB agave - a) g (ar 'g // PB agar, agar-agar - ser) gent 'sjant // PB sergent - gjorde gjo:3 // PB gjorde - ki) g k // PB kig, udkig - a) g (e @ // kage -// Ca) g (en j // kagen -// a) g (en g - a) g (i g - ba) g (i // PB bagi - ba) g (in w // PB bagindisk - æble) grød grWD - a) g (o g - a) g (urk 'g - g) g - e) g (o g - i) g (t g - i) g (t_ - i) g (A - i) g (a g - i) gen g'en - i) g (ere g - i) g (i g - g (entl j // PB egentlig - l) g (_ j - l) g (s j - g (n j // PB tegn, regne - ble) g (sot j // PB blegsot - ble) g (ansigt j // PB blegansigt - L08e) g j // PB steg, spegepølse - æ) g (e j - æl) g (e j // PB sælge vælge - y) g (e j // syge, ryge, myge - l) g (_ j - ø) g j // PB deleted (_ - nø) g j - sal) g j - val) g j - n) g - n) g (ø g // PB rengøre - n) gr Ngr - n) gæ gE - Co) g w // PB sprog, tog, toge - to) g (a g // PB exception toga - to) g (o g // PB exception Togo - to) g (t g // PB exception togt - o) g (r g - o) g (n u // PB g => u - vogn, sogn - o) g (s u - r) g (_ w - or) g // PB morgen, sorg - u) g g - u) g (e - u) g (ene S // PB ugenert - u) g (enn g // PB ugennemskuelig - u) g (enL11 g // PB ugengældt, ugenkendelig - u) g (l ? - u) g (t g - y) g (A g - ø) ge @ // PB bøgetræ - ø) g (n - g (iv+ g // avoid letter "g" pronounced with phoneme S - dra) g (en w // PB dragen, uopdragen - ha) g (l u - in) ge (niør Se - ki) gg (e g - la) g (C u - la) g (t g - la) gde e - li) g (ere - ra) g (_ w - ra) g (e : // PB changed from w - sa) g (n u - ør) g (s - ur) g (A g - lA) g (a g - li) g (g g - mA) g (a g - nA) g (a g -// ta) g (A u - ta) g (C u - &e) g (å g // PB kirkegård - an) g (å g - da) g (e - ba) g (age g - ba) g (t_ g - ba) g (tal u // PB l added to post - bagtale - da) g (C w // PB changed from u - daglejer - da) g (s_ ? - fa) g (C u - fi) g (ur g - ga) g (e =S - mena) g (e =S // PB menage, platmenage -arbitra) g (e =S // PB arbitrage - banda) g (e =S // PB bandage - blama) g (e =S // PB blamage - plama) g (e =S // PB plamage - bræka) g (e =S // PB brækage -camoufla) g (e =S // PB camouflage - kamu) g (e =S // PB kamuflage - froma) g (e =S // PB fromage - coura) g (e =S // PB courage - kura) g (e =S // PB kurage - kolla) g (e =S // PB kollage - colla) g (e =S // PB collage - corsa) g (e =S // PB corsage - korsa) g (e =S // PB korsage - tonna) g (e =S // PB tonnage -ekvipa) g (e =S // PB ekvipage -emballa) g (e =S // PB emballage -ensila) g (e =S // PB ensilage -eremita) g (e =S // PB eremitage - eta) g (e =S // PB added = stress on previous syllable - etage - gara) g (e =S // PB added = stress on previous syllable - garage - passa) g (e =S // PB passage -fernissa) g (e =S // PB fernissage - onta) g (e =S // PB added = stress on previous syllable - montage - foura) g (e =S // PB fourage -fusela) g (e =S // PB fuselage - fusta) g (e =S // PB fustage - kurta) g (e =S // PB kurtage - læka) g (e =S // PB lækage - pa) g (e =S // PB page -persona) g (e =S // PB personage -planta) g (e =S // PB plantage - pluma) g (e =S // PB plumage - rava) g (e =S // PB ravage -sabota) g (e =S // PB sabotage -schalburta) g (e =S // PB schalburtage - slita) g (e =S // PB slitage -spiona) g (e =S // PB spionage -staffa) g (e =S // PB staffage -takkela) g (e =S // PB takkelage -trikota) g (e =S // PB trikotage - ami) g (os g // PB amigos - la) g (e - li) g (t - re) g (A g - _re) g (i S' - re) g (iA g - re) g (ist g - sa) g (a =g - sa) g (s : // PB ' => : - si) g (t g - va) g (n u - pli) g (t g - &ti) g - bor) g u - bud) g (et S - gti) g - gti) g (ere // PB vigtigere - hol) g (er g - jer) g (A w - jer) g (C w - rea) g (er g - aga) g (te g - arran) g (e S - redi) g (er g - reta) g (e -foreta) g (e - ru) g (_ - Ca) g (t k - bo) g (C u - æda) g (og g' - no) g (e - no) g (le - re) g (i g - bo) g (st k - ø) g (t g - lå) g (e u - navi) g (er g - vå) g (e u - vå) g (n u - vå) g (ne u - go) g = - lo) g = - lo) g (a g - lo) gg (e g - lo) g (i =g - _lo) g (i- S - lo) g (o =g - blo) g (s =g - _lo) g (_ g - _lo) g (g g - ør) g u // PB changed from w - spørge - a) g (K // PB ? changed to " " after a vowel - _) ge (nere Se - _) ge (nert Se - _) ge (nerel ge - ge (nera ge - ge (nerer ge - ni) gger gV // PB nigger -// ble) g // PB omit g because of e = aj - bleg - g (ene_ S // PB gene - ta) g (e - te) g (ori g - - -.group h - - h h - h (j - hv v - A) h (K - t) h (en h - w) h (isky // PB whisky - hotline hVtla:jn // PB - -.group i - i i // PB i: => i - made a lot of rules redundant - ig (_ i // dejlig - -// PB stress on previous syllable - around 400 words in da_list -// -ig words with the prefix be- are handled by group b - the be- rule. -// To keep the list short a large number of u- words were weeded out, -// therefore u- is removed in group u before the word is translated -// since the u+list words keeps the stress. -// Any other syllable before the word reverts to normal stress - @) ig (_+T =i // velærværdig, gudvelbehagelig - @) ige (_S3 =i@ // velærværdige - @) igt (_+S3 =it // ærværdigt - ans) igt (+ igt // PB ansigt -// PB keep stress on previous syllable when -hed is added to -ig - ighed (_S5 =iheD // velerv'ærdighed - igheden (_S7 =iheD@n // velerv'ærdigheden - ighedens (_S8 =iheD@ns // velerv'ærdighedens - igheder (_S7 =iheDV // velerv'ærdigheder - igheders (_S8 =iheDVs // velerv'ærdigheders - igheds (_S6 =iheDs // velerv'ærdigheds - - ige i:@ // PB deleted [(_] - pige, pigen, stige, sige - iger i:V // PB piger - p) igen i:3n // PB pigen - ige (n ig'E // PB igen - idel i:D@l // PB idel - israel isrA:l // PB Israel - vend) ige i:3 // PB nødvendige - iew j'u - i (nK i - f) i (ng e // PB finger - r) i (nK e // PB ring - am) i (go 'i // PB amigo - magas) i 'i // PB magasin - i (sk =i // PB stress on previous - canadisk TOO BROAD (paus'efisk) - L10am) i (lla 'i // PB Camilla, Kamilla - i (nn e - i (mK e - l) i (m i // PB lim - i (kK e // PB ikke, pik - v) i (k i // PB kvik - l) i (k i // PB likvid - i (kk+ e // PB skiderikker - t) i (me i: // PB time - s) i (dA+ i: // PB siden - s) i (d_ e // PB sid - s) i (dd+ e: // PB sidde - s) i (gt e // PB sigte, ansigt - l) i (p e // PB slippe - l) i (dt e // PB lidt - L08) i (l e // PB spille - problem with the verb (ud)spile/(ud)spil[sbil] - m) i (dd e // PB middag - p) i (nd e // PB pind - k) i (nd+ e // PB kind - L08) i (L06 i // PB skib - tv) i (v i // PB tvivl - L03) i (gt+ e // vigtig - v) i (l+ e // PB vil - t) i (l e // PB til - ju) i (ce // juice - skip the i - soft) i (ce aj // PB softice - fr) i (L08 e // PB friste - s) i (kC e // PB sikker, sikre - p) is (_ es // PB pis - p) iss es // PB pisse - _mag) i (_ 'i // PB magi - stressed i - _mag) i (en_ 'i // PB magien - stressed i -_polit) i 'i // PB politi, politik - stressed i - _mus) i (k 'i // PB stressed i - i (nde 'i // PB herskerinde - _civ) i (l 'i // PB stressed - civil - all) i (gevel 'i // PB stressed i - alligevel - _band) i (t 'i // PB bandit - k) i (C_ 'i - k) i (CC_ 'i - _vedl) i (ge 'i // PB vedligeholde - _medl) i (denhed 'i // PB medlidenhed - stressed - _omkr) i (ng 'e- // PB stressed e in 'omkring' - kn) i e? // PB knippel - @t) i (k 'i // PB stressed i in words with -tik - butik, politik - _min) i (ster 'i // PB minister - stressed i - _mag) i (ster 'i // PB magister- stressed - _re) i (ster 'i // PB register - stressed ii - r) i (st e // PB brist, rist - @r) i (um =i // PB put stress on syllable before 'rium' - territ'orium - @r) i (e =i // PB put stress on syllable before 'rie' - territ'orie - @s) i (um =i // PB put stress on syllable before 'sium' - gym'nasium - @s) i (e =i // PB put stress on syllable before 'sie' - gym'nasie - r) i (si e // PB risikere - r) i (sl e // risle - p) i (lle e // PB pille - lat) i (nis i // PB latinisme - k) i (et 'i // PB Tyrkiet -prosod) i 'i // PB prosodi, prosodien -_melod) i 'i // PB melodi -_parod) i 'i // PB parodi -_perfid) i 'i // PB perfidi -_rapsod) i 'i // PB rapsodi -_ortopæd) i 'i // PB ortopædi - v) i (L08 e // PB viskelæder - l) i (e j - r) i (gt e // PB rigtigt - l) i (gg+ e // PB ligge - s) i (e j - t) i (e j - t) i (on // i ommitted because of sj - t) i (øs - s) i (on j - s) i (a j // PB passiar - c) i (a j // PB specialitet - des) ign ain - ingen) i (ør - -.group in -// PB words ending with -ine in da_list with $alt - stressed i - &) ine (_T 'in@ // lavine - &) ine (n_S1 n // lavinen - &) in (er_S2 V // laviner - &) in (erne_S4 Vn@ // lavinerne - &) in (ernes_S5 Vn,@s // lavinernes -// stress -ine kept when another word is added after the -ine word - &) ine (@ 'in@ // lavinefare - - kan) in 'in // PB kanin - lat) in 'in // PB stressed i in 'latin' - s) in en // PB tusind - t) in en // PB tin, ting - _ur) in 'in // PB urin - -.group is -// PB words ending with -ist in da_list with $alt - stressed i - &) is (t_T 'is // bassist - &) is (ten_S2 @n // bassisten - &) is (ter_Se @V // bassister - &) is (tens_S3 @ns // bassistens - &) is (terne_S4 @Vn@ // bassisterne - &) is (ternes_S5 @Vn,@s // bassisternes -// stress is kept when another word is added after the -ist word - &) is (t@N 'is // bassistformand - -.group j - - j j - j (aw dZ - j (ack dZ - j (ob dZ - j (ohn dZ - derh) j (emme 'j // PB stressed j - en) j (ambe S // PB enjambement - o) j (e S - a) j (o S - ma) j (or j // PB major - j (uice dz //PB juice - _) jer (_ jer // PB jer - er swallowed by other rules - jamsession dj&:ms'eSj@n // PB - jardiniere SjArdinj'E:r // PB jardiniere - jeton Sjet'VN // PB - -.group k - - k k - kk k - k (oordinat oVdi'nat - kanterel kant@r'&#l // PB - s) k g - pun) k (t N - run) k (en N - san) k (t N - &) k k // after stressed vowel - &) kk g - - - - -.group l // PB l changed to l/3 in ph_danish - - l l - ll l - &) ld (er l // PB anmelder - se) lv l // PB selv, selvfølgelig, selvhjælp - se) lv (e lv // PB selve, selvet - bo) ld ld - so) ld (at ld - _) leg (_ laj // PB leg - lege laj3 // PB lege -// b) lege la:j@ // blege - leger lajV // PB leger - legem lE@m // PB legemsdel - lotion l3uSjn // PB håndlotion - -.group m - m m // PB m? -> m - mm m - m (A m - _) mere (_ mer // PB mere - matine m&tin'e // PB -// PB General rule for words with -ment - A) ment m'ent // PB element -// PB exceptions for the -ment rule -arrange) ment m'AN // PB arrangement -avance) ment m'AN // PB avancement -avertisse) ment m'AN // PB avertissement -change) ment m'AN // PB changement -departe) ment m'AN // PB departement -deplace) ment m'AN // PB deplacement -detache) ment m'AN // PB detachement -divertisse) ment m'AN // PB divertissement -engage) ment m'AN // PB engagement -enjambe) ment m'AN // PB enjambement -etablisse) ment m'AN // PB etablisseement -guverne) ment m'AN // PB guvernement - gour) met m'e - gour) mand m'AN // PB gourment -kompli) ment m'AN - regle) ment m'AN // PB reglement - regle) mente (ret ment'e // PB reglementeret -abonne) ment m'AN // PB reglement -instru) mentel ment'el // PB instrument -katonne) ment m'AN // PB katonnement -klasse) ment m'AN // PB klassement -kanosse) ment m'AN // PB kanossement - lave) ment m'AN // PB lavement - møble) ment m'AN // PB møblement -nivelle) ment m'AN // PB nivellement - posse) ment m'AN // PB possement - posta) ment m'AN // PB postament CHECK THIS ONE MAYBE NOT FRENCH -raffine) ment m'AN // PB raffinement -ressenti) ment m'AN // PB ressentiment -ræsonne) ment m'AN // PB ræsonnement -signale) ment m'AN // PB signalement - sorti) ment m'AN // PB sortiment -supple) ment m'AN // PB supplement -tempera) ment m'AN // PB temperament -trakte) ment m'AN // PB traktement -bombarde) ment m'AN // PB bombardement - -.group n - - n n -// nn n - ve) nn n // PB venner - ba) nd (er n? // PB takes away the d in 'bander' = 'gangs' - n => n? - ka) n_ // no n - kan - nd (K n - nd (ow nd - i) nd (eks nd - i) nd n // PB kind, kvinde, pind - y) nd n // PB tynd - ø) nd n // PB tønde - u) nd n - bå) nd (A n - pu) n (kt - ru) n (ke - sa) n (kt - eku) nd nd - pag) n (e nj - ballo) n N - ræso) n_ N // ræson - ræso) nn n // PB ræsonnement - @) nien =ni3-n // PB Albanien, Rumænien - stress on previous syllable - sæso) n N - talo) n N - gleme) n (t N - newton nj'u:t@n - nylon najlVn - _) nag n&:j // PB nag - -.group ng - ng (_ N - ng (e N - ng (s N - - _a) ng (A ng - cha) ng (ement Nsj // PB changement - a) ng (C N - ora) nge Nsj3 // PB orange - ng (a ng - ng (i ng - i) ng (s N - u) ng (e N - ba) ng (e N - fa) ng (e =N - fi) ng (er =N - fi) ng (re =N - fu) ng (er Ng - ga) ng (e N - la) ng (e N - li) ng (e N - læ) ng (e N - ru) ng (e N - se) ng (e N - ti) ng (e N - ti) ng (ent Ng - træ) ng (e N - arra) ng NS - -.group o - - o o: - - o (lv V // PB tolv - s) o (l o // PB sol, soldat - s) o (lgt V // PB solgt - exception - h) o o // PB horn - r) o (r o // PB bror - or (g+ o: // PB sorg, morgen - or (l O: // PB orlov - kont) o (r 'o // PB kontor - stressed - d) o (b V // PB dobbelt - o (dds V: // PB odds - o (ld V // PB holde - o (ldA V // PB solde - o (sse V // PB tosse, nosse - j) o (b V // PB job - j) o (l V // PB jolle, fjols, fjolle - mon) o (k 'V // PB monokel - stressed - o (vA+ Vu // PB over, oven - h) o (v+ V // hov, sove - o (v+ V // PB sjov, lov, skov - o (f V // PB ofte - C) o (kNT 'V // PB beginning with 1 consonant followed by o and k: sok, nok, kok - o (lk V // PB folk - d) o (llar V // PB dollar - only this word plus compounds like 'dollargrin' - o (m V // PB område - _m) o (rt V // PB mortadel - L06) o (ld V // PB bold - o (k V // PB okker, lok - f) o (k o // PB fokus, fokal - o (rk V // PB orke orkester - g) o (dt V // PB godt, godte - r) o (tt V // PB rotte - d) o (g V // PB dog - v) o (g V // PB vogn, vogte - s) o (g V // PB sogn - l) o (f V - l) o (ve+ Vu // PB love - od_ VD // PB - od, vod, skod - odd (A VD // PB - odder - only this word - k) ors V:s // PB kors, korsage - c) o (rs V // PB corsage - At) o (de 'o // PB stressed o - metode, katode - bistr) o 'o // PB stressed o in 'bistro' - pist) o (l 'o // PB stressed o - pistol - er) o (b 'o // PB erobre - stressed o - _er) o (t 'o // PB erot - stressed o - o (disk 'o: // PB stressed o - melodisk, periodisk - L09) o (va o // PB nova renovation - r) o (vA ov // PB provokere - h) o (ved o: // PB hoved - tr) o o // PB tro - _m) o (C o // PB m + o + 2 consonants: mor, mord, - L08) o (l o: // PB skole, spole - o (L03A o // PB - romantisk, hoved - _C) o (_ o // PB jo, ko, lo, so - f) o (d+ o // PB fodre - C) oe (de o: // PB boede, troede - m) o (f o // PB grammofon, homofil - r) o (f o // PB profil - pr) o o // PB procent - spr) o (g o // PB sprog - o (gK o - t) o (i wa // PB toilet - d) o (k o // PB dokument - l) o (kA o // PB lokal - k) o (kA o // PB kokasse, kokain - C) o (kT+ o // PB only for words in list file - s) o (p o // PB sopran -// f) o - oregonpine VregVn||pajn // PB - -// PB stressed o in -nom - astronom, agronom - n) o (m 'o -// PB without stressed o in -nom - uden) o (m V - inden) o (m V -norden) o (m V - neden) o (m V - oven) o (m V -rundten) o (m V -sønden) o (m V - østen) o (m V - - b) o (m o // PB bombe - g) o (m V // PB fom, gommen, brudgom - k) o (m V // PB kom, velkommen - p) o (m V // PB pomp - Xl) o (m V // PB lom, lomme, blomst - pl) o (m o // PB exception from the rule above (Xl) o (m) - plombe - o (m_ V // PB om, ensom BØR TJEKKES MERE - o (mm V // PB omme BØR TJEKKES MERE - b) o (mu V // PB bomuld - n) o (s V // PB nosse - k) o (nf V // PB konfirmand, konfekt - o (pK 'V // PB added K - RULE STILL TOO BROAD - _n) o (r o // PB nord, nordisk - v) o (rA V: // PB vores - rek) o (rd 'V: // PB exception - stressed o in 'rekord' - ak) o (rd 'V: // PB exception - stressed o in 'akord' - o (rden O // PB orden, torden - L02) o (rt o //PB sort, stort - L02) o (rtA V // PB sortiment, transportere - supp) o (rt 'o@ // PB support -transp) o (rtK 'V: // PB transport - o (s o // PB hos, hospital - r) o (sk V // PB Roskilde - o (sA o: // PB rose, skose, pose - h) o (spice V // PB hospice - o (st V // PB post - l) o (t V // PB flot - ou 'u // PB poussin, toupe - b) ourbon W:b@n // PB bourbon whisky - ough Vf // PB tough, rough - only 2 words - oun aVn // PB discount - kl) oge ow,@ - nark) o (tik 'o // PB narkotika, narkotisk - ul) o (v 'V // PB stressed o - ulovlig - h) o (ng V // PB Hongkong - godm) o (rgen 'O: // PB stressed o - godmorgen - k) o (mmu o // PB kommunisme - -.group on - -// PB stressed o in words ending with -ion/-on - around 750 $alt words in da_list -// Words from Latin, French and other languages - &) on (_T 'on //aktion - &) on (en_S2 @n // aktionen - &) on (ens_S3 @ns // aktionens - &) on (er_S2 V // aktioner - &) on (ers_S3 Vs // aktioners - &) on (erne_S4 Vn@ // aktionerne - &) on (ernes_S5 Vn@s // aktionernes - &) on (@ 'on // aktionsenhed -// PB exceptions to the -on rule (and other -on exception) - stadi) on Vn - k) on (g Vn - ond on - ond (e on - s) on (d Vn // sondere -leksik) on Vn - liban) on Vn // Libanon - h) on (du Vn // PN Honduras - arg) on Vn - dral) on Vn -triatl) on =Vn - duatl) on =Vn - embry) on Vn -dødvægtt) on Vn - redeb) on Vn - gall) on Vn - gibb) on Vn - kol) on Vn -kompagn) on VN -orl) on Vn -perl) on Vn -@sal) on VN -@tal) on VN - tefl) on Vn - t) on (_ Vn // ton, kiloton - -.group or - - v) or 'o // PB alvor - f) or V // PB derfor - k) or (t V // PB kort - m) orge V: // PB morgen - _) or V // PB orientere - -// PB when "ord" means 'word', the d isn't pronunced - ord (++ or // PB ord , forord -// PB Exceptions to the or rule - k) ord (el Vrd // PB kordel - hv) ord (an Vrd // PB hvordan - ord (en+ Vrd // PB orden, ordensmagt - ord (ne+ Vrd // PB ordne - ord (nin 'Vrd // PB ordning, forordning - ordre (+ Vrdr3 // PB ordre, ordrebog - _) ord (ret+ or // PB ordret - ord (retil+ Vrd // PB ordretilgang - ord (i+ Vrd // PB ordinær - ordonnans Vrdon'&ns // PB ordonnans - ordrup ordr0b // PB Ordrup - Danish town - ore o:V // PB more, store - orel or'&#l // PB morel - -// PB no stress on 'for' - 1.550 words. -//Some should have stress if 'for' means "front/fore" - _f) or (@ %Vr -// exceptions to initial 'for' below - _f) or (a_ 'V // PB fora (plur. of 'forum') - _f) or (an_ 'V // PB foran - _f) or (ankørende 'V // PB forankørende - _f) or (annævnt'V // PB forannævnt - _f) or (ansat 'V // PB foransat - _f) or (anstille 'V // PB foranstillet - _f) or (anstående 'V // PB foranstående - _f) or (ben_ 'V // PB forben - _f) or (bens 'V // PB forbens - _f) or (benene 'V // PB forbenene - _f) or (behand 'V // PB forbehandle - _f) or (beho 'V // PB forbehold - _f) or (berede 'V // PB forberede - _f) or (bil 'V // PB forbillede - _f) or (bjerg 'V // PB forbjerg - _f) or (bogstav 'V // PB forbogstav - _f) or (bud 'V // PB forbud - _f) or (bund_ 'V // PB forbund - _f) or (bunds 'V // PB forbundsformand - _f) or (bøn 'V // PB forbøn - _f) or (censur 'V // PB forcensur - _f) or (danser 'V // PB fordanser - _f) or (del_ 'V // PB fordel - _f) or (dom 'V // PB fordom - _f) or (dring 'V // PB fordring, fordringdfri - _f) or (dæk_ 'V // PB fordæk - _f) or (dæks 'V // PB fordæks - _f) or (dækkene 'V // PB fordækkene - _f) ore 'V:@ // PB foreberinge, foregribe - _f) or (el or // PB forel - _f) or (et_ 'o3 // PB foret - _f) or (elske++ V // PB forelske - _f) ore (ne+ V'e: // PB forene - _f) orend (e 'V,en // PB forende - _f) orenkl (e V'enkl // PB forenkle - _f) orenkl (ing V'enkl // PB forenkling - _f) orensis (k o'ransis // PB forensisk - _f) oretag (som %V3't&: // PB foretagsom - _f) orev (ige V'e:v // PB forevige - _f) or (fader 'o // PB forfader - _f) or (far 'o // PB forfar - _f) or (fædre 'o // PB forfædre - _f) or (fædres 'o // PB forfædres - _f) or (fædrene 'o // PB forfædrene - _f) or (fang 'o // PB forfang - _f) or (felt 'o // PB forfelt - _f) or (film 'o // PB forfilm - _f) or (fjor 'o // PB forfjor - _f) or (ford 'o // PB forfordele - _f) or (forfod 'o // PB forfod - _f) or (forstærk 'o // PB forforstærker - _f) or (forsøg 'o // PB forforsøg - _f) or (fra 'o // PB forfra - _f) or (foryserum 'o // PB forfryserum - _f) or (fødder 'o // PB forfødder - _f) or (gast 'o // PB forgast - _f) or (gang 'V // PB forgang, forgangen - _f) or (gemak 'o // PB forgemak - _f) or (grund 'V // PB forgrund - _f) or (gænger 'o // PB forgænger - _f) or (gære 'o // PB forgære - _f) or (gård 'o // PB forgård - _f) or (hal 'o // PB forhal - _f) or (ham 'o // PB forhammer - _f) or (have 'o // PB forhave - _f) or (hen 'o // PB forhenværende - _f) or (histo 'o // PB forhistorie, forhistorisk - _f) or (hjul 'o // PB forhjul, forhjulstrukken - _f) or (hold 'o // PB forhold, forholdsvis - _f) or (hud 'o // PB forhud - _f) or (hus 'o // PB forhus - _f) or (hæng 'o // PB forhæng - _f) or (hånd 'o // PB forhånd - _f) or (hånds 'o // PB forhåndsindtryk - _f) or (ring_ 'o: // PB foring - _f) or (ringen 'o: // PB foringen - _f) or (kammer 'V // PB forkammer - _f) or (kant 'o // PB forkant - _f) or (karl 'o // PB forkarl - _f) orka (rl+ a // PB forkarl - _f) or (klog 'o // PB forklog, forklogskab - _f) or (kontor 'o // PB forkontor - _f) or (krop 'o // PB forkrop - _f) or (kvinde 'o // PB forkvinde - _f) or (kæmper 'o // PB forkæmper - _f) or (kærlighed 'V // PB forkærlighed - _f) or (køb 'o // PB forkøbet, forkøbsret - _f) or (kørselsret 'o // PB forkørselsret - _f) or (lag 'V // PB forlag - _f) or (lags 'V // PB forlagsret - _f) or (land 'V // PB forland - _f) or (lem 'o // PB forlem - _f) or (lyd 'o // PB forlyd - _f) or (lygte 'Vr // PB forlygte - _f) or (lys 'o // PB forlys - _f) orlyst V'lYsd // PB forlyste - _f) or (lægger 'V // PB forlægger - _f) or (læns 'V // PB forlæns - _f) or (læse 'V // PB forlæse - _f) or (maldehyd 'V // PB formaldehyd - _f) or (mand 'V // PB formand, formandsskifte - _f) or (mbar 'V // PB formbar - _f) or (mbrød 'V // PB formbrød - _f) or (me 'V // PB forme - _f) or (melig 'V // PB formelig - _f) ormer (_ 'VrmV // PB former - problem with "formér" - _f) or (mfast 'Vr // PB formfast - _f) or (mfri 'Vr // PB formfri - _f) or (fuldendt 'Vr // PB formfuldendt - _f) or (mgiv 'Vr // PB formgive - _f) or (middag 'Vr // PB formiddag - _f) or (mkage 'Vr // PB formkage - _f) or (mlære 'Vr // PB formglære - _f) or (mløs 'Vr // PB formløs - _f) or (mning 'Vr // PB formning - _f) or (mor 'Vr // PB formor - like forefather - _f) or (mødre 'Vr // PB formødre - _f) or (mpresse 'Vr // PB formpresse - _f) or (ms 'Vr // PB formsikker, formskære, formsprog, formstof - _f) ormssag (K 'Vrm?s,sa // PB formssag - _f) or (mt 'Vr // PB formtørre - _f) or (mue 'Vr // PB formue, formueskat - _f) or (mynder 'Vr // PB formynder, formynderisk - _f) or (mål 'Vr // PB formål, formålstjenelig - _f) or (navn 'Vr // PB fornavn - _f) or (nem_ 'Vr // PB fornem - _f) or (omtale 'Vr // PB foromtale - _f) or (ord 'Vr // PB forord - _f) or (ordn or // PB forordning - _f) or (over 'Vr // PB forover - _f) or (panthaver 'Vr // PB forpanthaver - _f) or (parti 'Vr // PB forparti - _f) or (post 'Vr // PB forpost - _f) or (praktik 'Vr // PB forpraktik - _f) or (premiere 'Vr // PB forpremiere - _f) or (programmere 'Vr // PB forprogrammere - _f) or (prøve 'Vr // PB forprøve - _f) or (på 'Vr // PB forpå - _f) or (rang 'Vr // PB forrang - _f) or (rest 'Vr // PB forrest - _f) or (ret 'Vr // PB forret - _f) or (rider 'Vr // PB forrider - _f) or (rige 'Vr // PB forrige - _f) or (rude 'Vr // PB forrude - _f) or (råd_ 'Vr // PB forråd - _f) or (slag 'Vr // PB forslag - _f) or (sanger 'Vr // PB forsanger - _f) or (sats 'Vr // PB forsats, forsatsrude - _f) or (side 'Vr // PB forside - _f) or (ske_ 'Vr // PB forske - _f) or (sker 'Vr // PB forsker, forskerby - _f) or (skel_ 'Vr // PB forskel - _f) or (skelsbehandl 'Vr // PB forskelsbehandle, -behandling - _f) or (skelsløs 'Vr // PB forskelsløs - _f) or (skol 'Vr // PB forskole, forskoling - _f) or (skrift 'Vr // PB forskrift - _f) or (skud 'Vr // PB forskud - _f) or (skyl 'Vr // PB forskyl - _f) or (skære 'Vr // PB forskære, -bræt - _f) or (skærm 'Vr // PB forskærm - _f) or (slag_ 'Vr // PB forslag - _f) or (slags 'Vr // PB forslas, -stiller - _f) or (læbe 'Vr // PB forlæbe - _f) or (smag 'Vr // PB forsmag - _f) or (sommer 'Vr // PB forsommer - _f) or (sorg 'Vr // PB forsorg - _f) or (spand 'Vr // PB forspand - _f) or (spil_ 'Vr // PB forspil - _f) or (spillet 'Vr // PB forspillet - _f) or (spillene 'Vr // PB forspillene - _f) or (spir 'Vr // PB forspire - _f) or (spring 'Vr // PB forspring - _f) or (spændt 'Vr // PB forspændt - _f) or (stad 'Vr // PB forstad, forstadium - _f) or (stander 'Vr // PB forstander - _f) or (stavelse 'Vr // PB forstavelse - _f) or (stavn 'Vr // PB forstavn - _f) or (stbotanik 'Vr // PB forstbotanik - _f) or (stkandidat 'Vr // PB forstkandidat - _f) or (stlig 'Vr // PB forstlig - _f) or (stmand 'Vr // PB forstmand - _f) or (stmæssig 'Vr // PB forstmæssig - _f) or (studie 'Vr // PB forstudie - _f) or (studium 'Vr // PB forstudum - _f) or (stue 'Vr // PB forstue - _f) or (stvæsen 'Vr // PB forstvæsen - _f) or (stzoologi 'Vr // PB forstzoologi - _f) or (stævn 'Vr // PB forstævn - _f) or (svar_ 'Vr // PB forsvar - _f) or (svarer 'Vr // PB forsvarer - _f) or (svars 'Vr // PB forsvars chef - _f) or (syn_ 'Vr // PB forsyn - _f) or (synet 'Vr // PB forsynet - _f) or (sæde 'Vr // PB forsæde - _f) or (sæt 'Vr // PB forsæt - _f) or (så_ 'Vr // PB forså - _f) or (tand 'Vr // PB fortand - _f) or (tands 'Vr // PB fortands - _f) or (tænder 'Vr // PB fortænder - _f) or (tegn_ 'Vr // PB fortegn - _f) or (tegningsret 'Vr // PB fortegningsret - _f) or (tekst 'Vr // PB fortekst - _f) or (telt 'Vr // PB fortelt - _f) or (tfarende 'Vr // PB fortfarende - _f) or (tid 'Vr // PB fortid - _f) or (til 'Vr // PB fortil - _f) or (tløbende 'Vr // PB fortløbende - _f) or (tog 'Vr // PB fortog - _f) or (tov 'Vr // PB fortov - _f) or (trappe 'Vr // PB fortrappe - _f) or (trin_ 'Vr // PB fortrin - _f) or (trins 'Vr // PB fortrinsret - _f) or (trop 'Vr // PB fortrop - _f) or (tryk 'Vr // PB fortryk - _f) or (tsætte 'Vr // PB fortsætte - _f) or (tunge 'Vr // PB fortunge - _f) or (tæppe 'Vr // PB fortæppe - _f) or (ud 'or // PB ud, forud, forudsætte - _f) oruden (_ or'uD-n // PB foruden - _f) or (valg 'Vr // PB orvalg - _f) or (varm 'Vr // PB forvarme, forvarmning - _f) or (vars 'Vr // PB orvarsle, forvarsling - _f) or (vask_ 'Vr // PB forvask - _f) or (vejen 'Vr // PB forvejen - _f) or (værelse 'Vr // PB forværelse - _f) or (åd 'Vr // PB foråd - _f) or (år 'Vr // PB forår - - -.group p - - p p - pp p - &) p b - &) pp b - &) p (_ p: // PB hjælp - p (sy - pipeline pajplajn // PB - pitchpine peTSpa:jn // pb - praline pRAlin'e // PB - punchline pVnSlajn // PB - -.group ph - - ph f // PB spelling error - no dot in 'phil.' - - -.group q - - q k - - qu kv - te) qu (ila 'k // PB tequila - - - - -.group r - r R - ge) rT // PB sanger - suppo) r //PB support [s@p'@t] - rickshaw rekSV: // PB rickshaw - rickshawer rekSV:V // PB rickshawer - r (K r // not followed by a vowel - r (KT // PB for da_list words - frisører - e) r (_ r // PB end of word: no r - lager [l&:V] - hve) r r // PB hver - ove) r (+ r // PB over, overrasket - t) r (An r // PB trin, transport - r (e_ // PB end of word before e: no r - b) r r // bror - Cd) r (e_ dr // PB andre - Ad) r (e_ R // PB andre - _se) r (_ r // PB ser - he) r (_ r // PB her - e) r (es 3 // PB jeres, deres - bu) rd (eK rd - &) rd (eNKK r - sa) rd (el rd // PB sardel - ve) rd (eKK rd - &) rd (e_ r - y) rd (e_ rd // PB myrde, byrde - o) rd (el++ rd - o) rd (en++ rd // PB exception - pronounce d in 'orden, ordentlig' - o) rd (rin d - e) r (eN_ // PB hellere -// re (_ 3 // PB mere, gøre, køre, flere - t) re (_ r3 // PB venstre - æ) re :@ // PB ære, skæreolie - dia) re r'e // PB diare - diar) re r'e -transpo) r (t //PB transport - -// PB words ending with -ri in da_list have a stressed "i" -// The stress is kept in compounds where a word is added after the word. -// If a word is added before the word, it reverts to normal stress - &) ri (_T R'i // maleri - &) ri (et_S2 @D // maleriet - &) ri (er_S2 V // malerier - &) ri (erne_S4 Vn@ // malerierne - &) ri (ernes_S5 Vn@s // maleriernes - &) ri (ers_S3 Vs // maleriers - &) ri (@ R'i // malerifabrik ??? - -.group s - - s s - - &) s (S1 s // PB/JD words ending with -ere in da_list (all @s words) - græ) s s // PB keep s for æ rule - nervø) s s // PB keep the s for the ø rule - s (p s - s (C s - s (A s - s (ie s - s (ion S - s (j s - sch S // PB changed from [s(ch] - casch - al) s (ace 's // PB Alsace (French region) - _) sion si:Vn // PB Sion, Sions kirke - shine sjajn@ // PB - saloon sal'u:n // PB - skyline skajlajn // PB - slimline slemlajn // PB - s) s -kompromi) s - succe) s ' - -.group t - t t - tt t - p) t t // PB toptitel - s) t d // PB stor - A) t (er d // PB Peter, efter, alter - A) t (ere t // PB invitere - A) t (eri t // PB materiel - ve) t (er t // PB veteran - teress tr@s // PB interessant - L03) t t // PB garanteret - er) t d // PB kuffert - r) t (e t // PB abortering - r) t (i t // PP hertil - re) t (+ t // ret - re) tt (+ t // PB rette - emen) t - poin) t - cemen) t t - demen) t t // PB dement -elemen) t t -glemen) t - &) tN d // PB changed from [t] - A) t (_ t: - emen) t (al t -glemen) t (al t - poin) t (e t - lemen) t (er t - i) t (et t // PB words with 'itet' - vulgaritet, perversitet - th th -// &) th d // PB doesn't work with 'utæthed' -//simpel) th (en th - i) t (i t // PB politi - e) t (_ d // PB udvisket - le) t (+ t // PB let - lek) t (i S - ak) t (ie S // PB aktie - t (ie t - t (ion+ Sj -nødsitua) t (ion S // PB nødsituation - stress on first syllable - t (iøs+ sj' - tredivtedel tr&fd@del // PB - tredvtedel tr&fd@del // PB - -.group u - u u: // PB u => u: - u couldn't be heard in 'umuligt' - -// PB remove u in order to make the -ig rule (group i) work with u + -ig list words -// e.g. u+erværdig [uErv'Erdi] will keep its stress on the next to last syllable. - _) u (@@+P1 u - - // PB most of the words with ud-: [D]- udpege - _) ud (@@+P2 uD -// exceptions for ud-: [d] - _) ud (elt+P2 ud // udelt - _) ud (at+P2 ud // udateret - _) ud (rikkelig+P2 ud - _) ud (røj+P2 ud - _) ud (uelig+P2 ud - _) ud (y+P2 ud // udyd, udygtig, udyr - _) ud (øbt+P2 ud - _) ud (ød+P2 ud // udødelig - _) ud (åd+P2 ud - - u (CK u - u (nK u - u (ng O // PB ung - u (mK O - u (nd O // PB underligt, undtage - h) u (nd u // PB hund - ue (_ u: // PB due, vindue, statue - d) ue (s u: // PB vinduesstørrelse - k) u (nne o //PB kunne - d) u (k o // PB duk - l) u (n_ u // PB lun - l) u (ne u // PB lune - l) u (f O // PB luft - l) u (g O // OB lugt - s) u (pport @ // PB support - j) u (ice u: // PB juice - br) u (gt O // PB brugt - tr) u (L02 O // PB truffet - um) u (lig 'u: // PB stressed u in 'umulig' - sn) u (L06 O // PB snup - hond) u (ra 'u: // PB Honduras - patr) u (lj 'u // PB patrulje - h) u (l 0 // PB hul - noun - h) u (lt u // PB hult - adjective "et hult træ" - h) u (le u: // PB hule - adjective and noun - f) u (n+ 0 // PB funktion, karpunkel - f) u (p 0 // PB fup - p) u (k 0 // PB pukle - _r) u (b_ O // PB rub - _r) u (bbe O // PB rubbe, rubbet - k) u (ffert O - a) u (g u - b) u (dget y - b) u (reau y - g) ui (de ai - g) u (st O - g) ulv Ol // PB gulv - l) u (k 0 - l) u (kas u - L09) u (k 0 // PB O? changed to 0 - smukkere - L09) u (f O // PB fornuft - r) u u - r) u (m O - r) u (s u - s) u (cc y - comp) u (ter ju - fris) u (r y - frit) u (r y - men) u y -proced) u (re y -proven) u y - nat) u (rel y // PB naturel - s) u (rrel Y // PB surreel - s) u (rrea y // PB surrrealistisk - resso) u (rs 'u - res) u (rs 'u // PB resurse (ressource) - -.group v - v v - vv v - o) v (A // PB love - handled by group o - L09o) v (A v // OV nova renovation - pro) v (ence v // PB Provence in France - A) v (K w - i) v (l u // PB tvivl - a) v (l u - a) v (n w: // PB [u] changed to [w:] navn, navnebroder - le) v (et // PB blevet, levet - la) v (A // PB no v - laver - la) v (ement @ // PB lavement - ve (lse v3 // PB øvelse, stavelse, fornøjelse - &A) v v - &r) v v - al) v (A v - el) v (C - el) v (A - il) v (A v - ur) v v - hal) v - voliere vVli'E:r - -.group w - - w w - w (att v // PB watt - w (olfram v // PB wolfram - w (ienerschnitzel v // PB wienerschnitzel - w (eltschmerz v // PB weltschmerz - w (eltervægt v // PB weltervægt - w (hist v // PB whist - w (aders v // PP waders - w (adi v // PB wadi - w (alis v // PP walisisk - w (assermannprøve v // PB wassermannprøve - -.group x - - x gs - - _) x s - - n) x s - -.group y - - y y - - r) y Y: - r) y (s+ W: // PB ryste - r) y (gt '@ // PB rygte - r) y (gg '@ // PB ryggen - l) y (gt W? // PB lygte, flygte - l) y (k W // PB ulykke - sk) y (t 'W // PB beskytte - st) y (k W // PB stykke - s) y (n_ y // PB syn, fjernsyn - s) y (ne y // PB fjernsynet - r) y (CK Y - r) y (k+ W // PB ryk - n) y (t Y // PB nyt - n) y (k W: // PB nyk - kn) y (t W: // PB tilknytte - k) y (s W // PB kys, kysse - k) y (se y: // PB kyse - y (nK W // PB changed from Y to W - synge, ynde - l) y (n y // PB lyn - pl) y (n W // PB plyndre - fl) y (t W // PB flyt - whisk) y i // PB whisky - y (nd 'W // PB begynde - stressed - best) y (r 'y // PB bestyre - stressed - y (onn j // PB bayonne, mayonnaise - y (mK Y - k) y (mK W // PB bekymring - d) y (_ i - b) y (A y - n) y (A y - -.group z - - z s - - zz s - -.group æ - - æ E - - æ (CK E - æ (bK E // PB dræb, slæb - æ (bt &# // PB dræbt - kr) æ (f &# // PB kræfter - r) æ (L01 &# // PB changed from [Aj] - rænke - skr) æ (dd a // PB skrædder - br) æ (dd a // PB brædder - pr) æ (s & // PB præst - tr) æ (t & // PB træt - gr) æ (n & // PB grænse - gr) æ (s & // PB græs - f) æ (re 'E: // PB affære, atmosfære, sfære - gev) æ (r 'E // PB gevær - besv) æ (r 'E // PB besvær - afh) æ (ngig 'E: // PB stressed e - t) æge E:j@ // PB tæge - pr) æ (ge E: - ærg E:ru@ // PB sværge - ærg (err Erg // PB ærgerrig - -.group ø -// røveren [V] faldt på røven [W#] og skød [W] en møgkælling [v3] - ø W - ø (de W: //PB øde - ø (dd W // PB fødder, rødder - ff) ø (r 'W // PB stressed in 'chauffør' - g) ø (r @: - h) ø (j V - ø (je W# // PB øje - ø (jn W# // PB øjne - l) øg (n 'Vj - l) ø (s W - @) ø (s 'W // PB nervøs, tendentiøs - stressed - l) ø (j W# - L09) ø W: // PB m => L09 (m + n) - n) ø (d@ 'W: // PB nød- stressed - nødsituation - r) ø (+ @ // brød - r) ø (L09 W# // PB grøn, rømme, strømme - r) ø (mer W: // PB strømere - s) ø_ W: - sp) ør (g W:r // PB spørge - r) ø (v W# // PB røv - r) ø (g W# // PB røg - pr) ø (v W // PB prøve - ø (re_ W: // PB køre - r) ø (ver W# // PB røver - k) ø (d W // PB skød, kød - _) øg (_ Wj // PB 'øg' noun and verb - d) øg (n Vj - øj+ V:j // PB changet from [Oj] - velg) ø (renhed '@ // PB stressed ø - im) ø (dekom 'W: // PB imødekomme - -//PB (mostley French -eur) words ending with -ør - stressed ø - around 150 words - &) ø (r_T 'W:r // frisør, massør, Korsør - &) ø (ren_S2T 3n // frisøren - &) ø (rer_S2T V // frisører - &) ø (rerne_S4T Vn@ // frisørerne - &) ø (rernes_S5T Vn@s // frisørernes - &) ø (rers_S3T Vs // frisørers -// add another word to the -ør word and keep the -ør stress - &) ø (r@ 'W: // frisørsalon - -.group å - å O: // PB changed from O:? - å (CK o: - å (d+ O: // PB råd - s) å (d V // PB sådan - å (r+ O - hvorn) år 'O? // PB hvornår - stressed - h) å (r V // PB hår, hård - bl) å (@ V // PB blåbær, blågrø - h) å (nd V // PB hånd - L06) å (nd V // PB bånd - l) å (r V - s) å O // PB så - p) å (s V // PB påstand - p) å (ske O // PB påske - sl) å (s V // PB slås - L08r) å (t V // PB skråt - -.group - $ dVlV // PB changed from [dVlar] - - - - - - + +// This file is UTF8 encoded +// Spelling-to-phoneme rules for Danish + +// Rules and comments marked //PB +// have been made by Peter Bjarkov pbj1234@hotmail.com + +// Phonemes - vowels: i e E y Y & &# @ @- a 3 W W# V A 0 (zero) o O u + +.replace +ü y +oo u //PB English words like 'pool' +ö ø +ä æ + +.L01 k g nk ng // velars +.L02 c h f k p r s t //PB 'ægte' konsonanter - 'real' consonants +//.L03 b d g j l m n v w //PB halvvokaler - semivowels, approximates +.L04 u y i ø // PB fortungevokaler - front vowels - not finished, not used yet +.L05 a æ å // PB bagtungevokaler - not finished, not used yet + +.L06 p b // pande, bande - pege, bege - passe, basse +.L07 t k // time, kime - tone, kone - tage, bage - tanke, banke +.L08 sp st sk +.L09 m n // ens før vokal: naller, maller - ikke efter: nam, nan +.L10 c k +.L11 g k + +.group a + + a & // PB changed from [a?] + + a (lt & // PB alt, overalt +// PB general rule: [A] after r + r) a A // PB kamera, transport + efter) a (b & // PB efterabe + for) a (n & // foran +// PB general rule: [a] after r followed by sp/st/sk + r) a (L08 a // PB rask +// PB general rule: [&:] after m/n + L09) a &: // mave + L09) a (j a // PB maj +// PB general rule: [a] after n before vn + n) a (vn a // navn +// PB general rule: [a] after l before n + l) a (n & // land +// PB words in da_list with final -ance + &) ance ($p_alt 'ANs@ // balance, romance +// PB general rule: [a] before m + a (m a // PB ham, gamle, lam +// PB general rule: [&] after l before m + vowel + l) a (mA & // PB ham, gamle, lam +// PB general rule: [&] after before m/n + f) a (L09 & // PB familie, fane +// PB general rule: [&] after k + k) a (+ & // PB kage, kaste + // PB general rule: [a] after sk + sk) a (C+ a // PB skaffe +// PB general rule: [a] after k before m + k) a (m a // PB kam, kamp + c) a (mp & // PB camping +// PB kamm => [a] + k) a (mm a // PB kammerat +// PB kame => [&] + k) a (me & // PB kamel, kamera +// PB general rule: [&] after d + d) a (+ & // PB dame, dag +// PB general rule: [A] after a followed by k/g plus t + a (L11t A // PB ak, aktionær, aktuar +// PB general rule: [A] after k before g (au) + k) a (g A // PB kagle +// PB general rule: [Au] after m/n before g (au) + L09) ag Au // PB nagle + m) ag (i &g // PB magi +// PB general rule: [ak] after m/n before gt + L09) ag (t ak // PB løgnagtig +// PB general rule: [A] before vl (au) + a (vl A // PB avle +// PB general rule: [A] before k + a (k A // PB aktuar, aktivitet +// PB general rule: [A] before cc + a (cc A // accent +// PB general rule: [Au] after b before v + b) av Au // PB forbavset + b) a (vian & // PB exception +// PB general rule: [a] after sp/st/sk before m + L08) a (m a // skam +// PB general rule: [A] after sp/st/sk before v + L08) a (v & // stav + // PB general rule: af = [Au] before s + af (s Au // afstand + // PB general rule: [Au] before l + av (l Au // savle, tavle +// PB general rule: [Au] after l + l) av Au // lavenergi, lavteknologi, lavadel + l) a (vendel & // exception: lavendel + sl) a (v &: // exception: slaver + l) av (et &:v // exception: lave + _l) av (_ &v // PB lav + l) av (er &v // PB laver, lavere + l) av (ed &v // PB lavede +// PB general rule: [Au] after t before s + t) av (s Au // tavshed +// PB general rule: [A] before r + a (r+ A // skar +// PB general rule: [A] before nk + a (nk+ A // planke, slanke, anke, flanke + a (nklag+ & // PB anklage + a (nko+ & // PB ankomme + ang (re aN // PB angre + ang (er_ aN // PB anger + a (gt A // agt + l) a (gt+ A // PB lagt + l) ag (_ &j // lag + f) ag (s au // PB fagsnak +// PB general rule: [a] after kl before consonant + kl) a (L06 a // PB klap + okt) a (v '& // stressed + konk) a (v '& // stressed + pol) a (k 'a // PB stressed polak + L08) av (C Au // stavn + h) av (_ & // PB hav - problem with the noun "hav" [hAu] + @h) av (_ Au // PB flammehav + h) a (v A // PB havn + s) av (n Au // PB savn + s) av (ne Au // savne + C) a (k a // PB makværk + l) a (kA & // PB lakune + @l) a (L11 &j // PB nederlag + +// PB stressed a in final -al in $alt words in da_list + &) al ($p_alt+ ''&l // the double '' enforces primary stress - fatal, monumental + r) al ($p_alt+ 'Al // [A] after "r" - general, neutral +// exception - no stress because of stress on -ion + r) a (l@@+ A // PB centralisation NEEDS MORE WORK + +// PB stressed a in words with -ant in da_list + &) ant ($p_alt '&nt // interessant + &r) ant ($p_alt 'Ant // [A] after "r" - kurant + +// PB stressed a in final -at - words in da_list + &) at ($p_alt '&t // attentat + &r) at ($p_alt 'At // [A] after "r" - kammerat + &r) at (ur$p_alt At' // [A] after "r", stressed u - littteratur + +// PB (stressed a in final -ar - words in da_list + &) ar ($p_alt ''Ar // antikvar, dinar + +// PB nouns with final -ade in da_list - stressed a + &) ade ($p_alt '&:D@ // hystade + &) adent ($p_alt &d'ent // don't spoil the -ent rule - dekad'ent + +// PB nouns with final -an in da_list - stressed a + &) an ($p_alt+ ''&n // leguan + &r) an ($p_alt+ ''An // orkan + +// PB nouns with final -gram in da_list - stressed a + &gr) am ($p_alt+ 'am // program + +// PB final -na - stressed previous syllable + _aren) a =& +_bandan) a =& +_angin) a =& +_arkan) a =& +_argentin) a =& +_ballerin) a =& +_madonn) a =& +_Botswan) a =& +_coxpomon) a =& +_fatamorgan) a =& +_feminin) a =& +_guyan) a =& +_hercegovin) a =& +_hosiann) a =& +_ikeban) a =& +_koncertin) a =& +_koron) a =& +_maizen) a =& +_marihuan) a =& +_marin) a =& +_maskulin) a =& +_nirvan) a =& +_okarin) a =& +_palæstin) a =& +_primadonn) a =& +_retsin) a =& +_tsarin) a =& +_zarin) a =& + +// PB a few words with fibak -akt - stressed a +_abstr) a (kt 'a + _eks) a (kt 'a +_ekstr) a (kt 'a + _int) a (kt 'a +_katar) a (kt 'a + _komp) a (kt 'a + _kont) a (kt 'a +_kontr) a (kt 'a + + v) a (nlig '& // PB usædvanlig - stressed a + pal) a (ds '& // PB palads - stressed a + kart) a (go '&: // PB Kartago - stressed a + komm) a (nd '& // PB kommando - stressed + kast) a (nje '& // PB stressed +foranst) a (lt '& // PN stressed - foranstaltning + org) a (s '& // PB orgasme - stressed +_psyki) a (t '& // PB psykiater - stressed +_bratisl) a (v '& // PM Bratislava +_vatik) a (n '& // PB Vatikanet + lumb) a (go '& // PB stressed - lumbago + bl) a (d & // PB blad + h) a (n & // PB han + j) a & // PB ja + j) a (v & // PB javel + j) avert aurt // PB javert + sl) av (e &v // PB slave + l) ave (ment &@ // PB lavement + l) ave (_ &v@ // PB lave + l) aver (_ &vV // PB laver + g) a (v & // PB gav, opgave + g) a (vn A // PB gavn + b) a (b+ A // PB babser + b) aby (+ eibi // PB baby + _) a (ndA a // PB anderledes + t) a (bt a // PB tabte + l) a (b+ a // PB lab + L08) a (b &: // PB skabe + L08) a (bt A // PB skabt + r) a (bel 'A // PB stressed - vulnerabel, kurabel + a (bel+ '& // PB exception - ræssonabel, stabel, aimabel + a (bs A // PB absolut + a (bc A // PB abces + ai (mabel E // PB aimabel + mir) abel Ab'El // PB mirabel(le) + p) ace eis // PB motorpace, pacemaker + pacem) a (k ei // PB pacemaker +interf) a (ce ei // PB interface + L08) a (d &: // PB stadig + L08) a & // PB spand, spansk + _) a (e_ &: // PB ae + a (fC a // PB af = au and exceptions in the f group + C) a (ft A // PB haft, saft + sl) a (L06 a // PB slap + ai (K aj + aise 'E:s@ // PB mayonnaise + k) ai (n a'i // PB kokain + ld) a (k & // PB baldakin + mir) a (k 'A // PB mirakel - stressed a + t) a (lA &: // PB tale + L09) a (l &: // PB male + L09) a (ld & // PB knald + _) a (ld a // PB aldrig, alder + b) a (lkan &: // PB Balkan + over) a (lt '& // PB stressed a in 'overalt' + s) a (m a // PB sammen + _eks) a (m '& // PB stressed - eksamen, eksaminere + isl) a (m 'a: // PB islam, islamisk + j) a (m+ a // PB fjams + pl) a (m+ & // PB plamage CHECK THIS ONE + d) a (me+ &: // PB dame + j) a (men a // PB exception jamen = ja men + f) a (n+ & // PB fanden + av) a (n 'V // PB avance + ch) a (n a // PB chance + L06) a (n & // PB tand, tante, band, bande, spand, spade + ban) a (n '& // PB banan + hvord) a (n '& // PB stressed a in 'hvordan' + C) a (ng+ a // PB gang, mange + g) a (ngster & // PB + L09) a (n+ & // PB man, mand + hin) a (n '& // PB stressed - hinanden + L06) a (nk A // PB bank + an (cien aN + L06) a (nd & // PB pande + a (ndre A // PB andre + L06) a (nk a // PB banke +//amerik) a (ne '&: // PB amerikanere + @g) a (ng 'a // PB stressed a in words ending with -gang - engang, enegang +// a (ng++ a // PB mangle, sang + h) a (nk a // PB hank +restaur) ant 'AN // PB added stress + a (pC+ a // PB slap + t) a (nk A // PB tankstation + t) a (x a // PB taxa + kålr) a (bi 'A // PB kålrabi - stressed a +// legu) a (n '& // PB stressed a in 'leguan' + au (+ aw // PB auto, autoritet + e) au 'o // PB bureau, niveau + nive) au o + _biss) au 'a:w // PB Guinea-Bissau + s) au (ce O: // PB sauce, bearnaisesauce + ch) au (f o + rest) au (r o + s) au (terne o // PB wine + h) a (ve &: // PB have - noun/verb - garden, oceans, to have + @h) av_ Au // PB ildhav -[Au] = [&v] followed by syllable: ['ilh&:v@D] + @k) ar (l & // PB bøssekarl + afrik) aa (n A: // PB afrikaaner + action &kSj@n // PB actionfilm + aircondition E:rkVn,i:S@n + akkordeon ak'V:deVn + attention at'EnS@n + athen &t'en // PB Athen + str) abads Ab'&s // PB stressed a, silent d +amsterd) a (m 'a // PB + aw (K aw + ay (K aj + +.group af + + k) aff (e af // retskaffen + l) aff (e af // blaffe, plaffe + t) aff (e af // taffel +// PB final -graf in da_list - stressed a, stressed i when i is added + &gr) af ($p_alt 'Af // biograf + &gr) af (i$p_alt Af' // biografi + +.group ag + +// PB (French) nouns with final -age and with $alt flag in da_list +// stressed a, "age" pronounced [aS@] + &) age ($p_alt+ '&:S@ // ravage, bagage + &r) age ($p_alt+ 'A:S@ // [A] after "r" - garage + &) age (re$p_alt+ &S'e@ // not for the "age" words - gagere + + // "ag" words silent g + d) ag (_ &j // PB dag + d) ag (e+ &j // PB dage + d) ag (@+ Au // PB daglejer + d) ag (og+ ag // PB pædagog + j) ag (+ &: // PB jage + j) ag (t Ag // PB jagt + b) ag (h+ Au // PB baghold + b) ag (l Au // baglader, baglæns + b) ag (L11 Au // bagklog, baggård + b) ag (f Au // bagflikke + b) ag (b Au // bagbutik + b) ag (d Au // bagdør + b) ag (v Au // bagvendt, bagværk + b) ag (An Au // Bagindien, baginder + b) ag (k Au // bagklog, bagkrop + b) ag (m Au // bagmand + b) ag (p Au // PB bagparti + b) ag (s Au // PB bagside + b) ag (t@ Au // PB bagtøj + b) ag (te Ag // PB nybagte + _L06) ag (_ &j // PB bag - single word + b) ag (fr &? // bagfra + b) ag (ved &_: // PB bagved + b) ag (efter & // PB bagefter + b) ag (på &? // PB bagpå + b) ag (over &_: // PB bagover + b) ag (til & // PB bagtil + b) ag (ud &_: // PB bagud + p) age (++ &:S@ // PB page, pagehår + sC) ag &j // PB slag, slaget, Skagen, smag + sC) ag (t ag // PB universitetsvagt + m) ag (t ag // PB verdensmagt + sl) ag (t ag // PB slagte + sl) ag (smål Au // slagsmål + sp) ag (ett &g' // PB spagetti + sp) ag (hett &g' // PB spaghetti + dr) ag (e+ Au // PB drage + C) age (+ &:j@ // PB tage, bage, kage + C) ager (+ &:jV // PB tager, bager, kager + _C) ager (+ &:V // PB jager, tager + g) ager (e+ &S'e // PB gagere + r) age (+ Aw@ // PB rage, fremragende + r) ager (+ AwV // PB rager + tr) agedie Ag'eDj@ // PB + t) ager (_ Ar // PB tager [t'Ar] + t) ag (_ &j // PB tag + s) ag (t+ ag // PB sagt + s) ag (n Au // PB sagn + C) agd (e+ &: // PB sagde + tilb) ag (e '&: // PB stressed a in 'tilbage' + +.group b + + b b + bb b + b (il 'b + beagle bi:g@l //PB beagle - dog + beat b'i:t // PB beat - music + beaujolais boSjol'E // PB wine, district + bebop bi:bVp // PB music + babylon b&bylVn // PB + backgammon b&g'&m3n // PB + baryton baitVn // PB + brintion brendjo:n // PB + bonkammerat b'VNkam@rAt // PB + brown _^_EN // PB name + bellevue bEl@v'y // PB + _) backup b&k'Vb // PB + +// PB words beginning with "be" with stress on the second syllable (850) + _) be (@ b%E +// PB exceptions to the "be" rule + _) be (dste bE // bedstefar, bedstemor + _) be (nmel bE + _) be (narbejde bE + _) be (nbrud bE + _) be (nbræk bE + _) be (nbbuk bE + _) be (nchmark bE + _) be (nedder bE + _) be (nende bE + _) be (nfisk bE + _) be (nfedt bE + _) be (nfri bE + _) be (ngel bE + _) be (ngna bE + _) be (nh bE + _) be (njamin bE + _) be (nkl bE + _) be (nl bE + _) be (nmel bE + _) be (npibe bE + _) be (nplads bE + _) be (nrad bE + _) be (nskinne bE + _) be (ntøj bE + _) be (nspænd bE + _) be (nv bE + _) be (de bE + _) be (dre bE + _) be (dding bE + _) beg (blende baj + _) beg (mand baj + _) beg (ning baj + _) be (jds bE + _) be (jle bE + _) be (lgi bE + _) be (rb bE + _) be (rgen_ bE + _) be (tastrål bE + _) be (eta_ bE + _) be (tatron bE + _) be (taversion bE + _) be (tel bE + _) be (tl bE + +.group c + + c k + +// PB nouns in da_list with final -ce - stress on previous syllable + &) ce ($p_alt =s@ // ekspeditrice + + c (y s // PB s followed by y - cykel + c (e s // PB race, procent + _offi) ce (r s'e // PB officer + @offi) ce (r se // PB sprogofficer + ce (rt s'E // PB koncert + c (i s + c (k + ch (+ Sj // PB check, chokolade + mi) ch (a k S + ch (r k + c (ha S + r) ch S // PB march + s) c (ha // PB no extra S in 'schalburtage' + cigaret sig3r'&t + cigarett sig3r'&t + cc ks + fa) c (ad s + fa) c (on s + ceylon sajl/2Vn + cornichon kVrniS'VN + charlie _^_EN + ni) ch (ol k // PB Nicholas + computer kVmpj'u:tV // PB + cha (t tj& // PB chatte + chianti kj'&nti // PB + +.group d + + d d + + A) de (_ D3 // PB change to D? + A) d D // PB way too broad? + a) d D // PB ad, udenad - dangerously broad + Coe) de @-D // PB boede + Co) d (A D // do we need this one? + u) d (elt d // PB udelt + l) d // PB omit d after l - hold, skjold + l) d (ig d // PB skyldig + l) d (a d // PB keep d in "baldakin" + hel) d (i d // PB keep d in "heldig" + fær) d // silent d in færd, færdsel + fær) d (i d // PB keep d in "færdig" + &) d (yr d // PB keep d in "muldyr" + o) dds ds // PB odds + bol) d d + hva) d // PB silent d in 'hvad' + or) d (e // PB silent d in mordet, bordet, gjorden, ordet + or) d (er d // morder, mordere + rekor) d d // PB exception - pronounce d in 'rekord' + akor) d d // PB exception - pronounce d in 'akord' + hjor) d d // PB exception - pronounce d in 'hjord' +stikor) d // PB exception - silent d in 'stikord' + d' d //PB d'Aviano - e.g. French and Italian names + ud) d (A d + A) d (C D + A) dd D // PB hedder - "er" removed by &) er (_NS2 [V] + A) d (s@ // PB fødsel - deleted 30+ rules, this one does the work + A) ds (_ s // PB silent d - palads, trods + A) d (L08+ D // PB nødstop + be) d (st // PB bedstg + A) dd (A D // PB redder + si) d (s // PB silent d - sidst + sli) d (s // PB silent d - slids + spi) d (s // PB silent d - spids + ti) ds (nok s' // PB silent d - tidsnok + ri) d (s // PB silent d - omride, lakrids + stri) d (s D // PB but not silent d in e.g. 'stridsvogn' + u) d (C+ D // udsætte + plu) dsel sl/2 // PB silentg d - pludselig [pl'usli] + in) d (C + ne) d (C D + ar) d (K d + ir) d (_ d + pæ) d (a d + re) d (a d + mo) d (al 'd + å) d (an d + kandi) d (at 'd + me) d (b D + me) d (d D + mi) dd (a d + he) dd (e D + si) dd (e D + kla) dd (e D + mi) dd (el D + mu) dd (er D + rø) dd (er D + kry) dd (er D + dd (et D + bu) dd (ing D + i) d (e d + an) d (e // PB manden, anden - silent d + _fan) de (me // PB fandeme - skip de, only this word + li) d (e D + ri) d (e D + si) d (e D + si) d (ent d // PB præsident + ti) d (e D + vi) d (e D + gui) de d + snu) d (e D + in) d (eks d + mo) d (el d + or) d (el d + sed) d (el D + or) d (en d + gui) de (n de + ver) d (en d + vi) d (er D + gui) de (r de + lu) d (ere d + A) d (es D + ær) d (es d + A) d (et D + gui) de (t de + a) d (g D + bu) d (get + A) d (i d + in) d (i d + re) d (i d + æl) d (i d + A) d (ig D + A) d (isk D + a) d (k D + me) d (l D + or) d (ne d + ry) d (ni D + or) d (ning d + be) d (r D + bla) d (r D + An) d (rA d + ma) d (ras d + An) d (re d + or) d (re d + æl) d (re d + æn) d (re d + _a) d (r d // PB adresse, adrenalin + hon) d (ura d // PB Honduras + æn) d (ri d + ti) d (s D + sli) d (so D + A) d (t // PB silent d - forbudt, skudt, ladt + L09A) d (ta D // PB modtage, medtage, nedtage + in) d (u d + pro) d (u d + in) d (uC d + mo) d (ul 'd + pen) d (ul 'd // PB pendul + dendron d'endrVn // // PB filodendron + doubleton dVb@ltVn // PB from bridge + _) dav (_ dAw // PB dav + detente det'A:Nt // PB + +.group é // added by PB + é 'e: // idé, entré + +.group e + e e // PB e: => e + +// PB general rules + l) e e + _koll) e (ga 'e // PB stressed + r) e E // PB general rule: [E] after r + ur) e (ne @ // PB murene + r) e (s_ @ // PB forhindres + pr) e (+ &# // PB general rule: [&] after pr - presse + spr) e (dt E // PB spredt + r) er (_ V // PB final "er": V after r - murer + t) er (_ V // PB final "er": V after t - frygter + r) ere (_ 3V // PB general rule: plural ending - murere + r) e (L09s &# //PB general rule: [&#] after r before ns/ms - rensetøj + r) e (m &# //PB general rule: [&#] after r before m - rem, frem + r) e (ng aj //PB general rule: [&#] after r before ng - streng, dreng + r) e (ngø E // PB rengøre + r) e (t &# //PB general rule: [&#] after r before t - ret + fr) e (l &# // frelse + yr) e (+ @ // PB myretue, dyrehold + r) e (h @ // PB general rule: [@] after r before h - fårehyrde, varehus + @L09) e (d @ // PB general rule: [@] after @+m/n before d - måned + + an) e (r @ // PB anerkende + L09) e (de E // nede, nederlag + L09) e (t e // metal + L09) e (l E // mellem + ed) e (r @ // nederlag + tr) e (ma E' // trema + s) e (dd E // PB seddel + ell) e (r V // ellers + fr) edag Ed& // PB fredag - not [d&j) + nov) e (mber 'e // PB + dec) e (mber 'e // PB + sept) e (mber 'e // PB + eus Wws // PB for Greek names - Zeus, Achilleus + ml) e 3 // PB gamle + tel) e 3 // PB tele + afl) e 3 // PB aflevere + ri) e 3 // PB ferie + _a) e (_ 3 // PB ae + ød) e 3 // PB øde + pl) e (men 3 // PB supplement + øbl) e (m 3 // PB møblement + hvab) e (har_ 3 // PB hvabehar + Ar) e (s_ 3_: // PB gøres + r) eau o // PB bureaukratiske + ee 'e: // PB ideer, cafeer + b) ee (d ee // PB beedige +// nt) e @ // PB tante, hente + br) e (L09 & // PB bremse + sn) e (K e? // PB sne, snebold + _s) e (_ e? // PB se + e (mball A // PB emballere, emballage + dir) e (kt & // PB direkte, direktør + ed) e (- @ + g) e (js aj + _ni) e // PB changed from [ni)e] to[_ni)e] - niende, nier, niendedel + _ni) e (ce 'E: // PB exception from the rule above (_ni)e) + alsac) e // PB exception from the c)e rule above - Alsace (French region) + _fl) ee (ce+ i: // PB fleece, fleecejakka - material for clothing + fleec) e // PB fleece - skip the final e +freelanc) e // PB freelance - skip the final e +freelanc) e (r V // PB the word 'freelancer' +hospic) e // PB hospice - skip the final e + penc) e // PB pence - skip the e +interfac) e // PB interface - skip the final e + sauc) e // PB sauce, bearnaisesauce + juic) e // PB juice - skip the e +servic) e (fag // PB servicefag +servic) e (med // PB servicemedarbejder +servic) e (sektor // PB servicesektor +servic) e (station // PB servicestation +servic) e (ydelse // PB serviceydelse +softic) e // PB softice +motorpac) e // PB motorpace - skip the e + s) e (rviceeftersyn '@ // PB serviceeftersyn +motorpac) e (n @ // PB motorpacen + pac) e (maker // PB pacemaker - skip the e +provenc) e // PB Provence - skip the e + prov) e (nce 'A: // PB Provence + e (gsot &# // PB blegsot + e (gfi &# // PB blegfis + r) e (st &# // PB resten, restaurant + e (gansigt &# // PB blegansigt +_kongr) e (s '& // PB kongres - stressed but not after a syllable + _regr) e (s '& // PB regres + _rødb) e (de 'e // PB stressed e in 'rødbede' +_aller) e (de_ E // PB allerede - otherwise the E is changed by another rule + _im) e (ns+ 'e // PB stressed +// PB final -em - stressed e +_probl) e (m 'e + probl) e (m e // PB stofproblem + _bekv) e (m 'E + _diad) e (m 'e + _eks) e (m 'e +_ekstr) e (m 'e + _embl) e (m 'e + _fon) e (m 'e + _graf) e (m 'e + _morf) e (m 'e +_myxød) e (m 'e + _po) e (m 'e + _syst) e (m 'e + _teor) e (m 'e + _ød) e (m 'e + _el) e (ndig 'e // PB stressed e in elendig + _leb) e (ndig 'e // PB stressed e in lebendig + lini) e @ // PB changed from [e] to [@] + ft) e @ // PB oftere + r) e (nd a // PB rend + @st) e (n+ e: // øjesten, skorstene + h) e (n_+ e // hen + carst) e (n @ + karst) e (n @ + tr) edive aDv@ // PB tredive + entente ANt'ANt // PB + prof) essionel 'eSonel // PB + eisenhower ajs@nhAuV // PB + +// Words ending with e - general rule (probably covered by others) + e (_+ 3 + _) e (_speak i // PB eSpeak - capital s makes the e one word + _) e (_mail i // PB e-mail +// Words ending with -te + t) e (_ @ + +// Words ending with -se or -ce + s) e (_ @ + c) e (_ @ + +// Words ending with -ske (and ste, spe) + L08) e (_ @ // PB påske, forske + +// exceptions to the -ske rule + mosk) e 'e // moske, moskeen, moskeer + måsk) e (_ 'e // PB måske + _sk) e (_ e // PB ske + _sk) e (er e // PB skeer +dessertsk) e e // PB dessertske +fugesk) e e // PB fugeske +grydesk) e e // PB grydeske +grødsk) e e // PB grødske + hulsk) e e // PB hulske + kansk) e e // PB kanske + mursk) e e // PB murske +målesk) e e // PB måleske +strøsk) e e // PB strøske +støbesk) e e // PB støbeske + tesk) e e // PB teske + + gourm) e 'e // PB gourmet +// PB stressed e in words with -ekt - konfekt + _aff) e (kt 'E +_arkit) e (kt 'E + _asp) e (kt 'E + _def) e (kt 'E + _desp) e (kt 'E + _dial) e (kt 'E + _eff) e (kt_ 'E +_idiol) e (kt 'E + _ins) e (kt 'E +_intell) e (kt 'E + _koll) e (kt 'E + _konf) e (kt 'E + _korr) e (kt '& + _obj) e (kt 'E + _perf) e (kt 'E + _proj) e (kt 'E +_prosp) e (kt 'E + _præf) e (kt 'E + resp) e (kt 'E +_sociol) e (kt 'E + _subj) e (kt 'E + _susp) e (kt 'E + // PB stressed e in words with final -or + prof) e (ssor 'e + aggr) e (ssor 'a + ass) e (ssor 'E + proc) e (ssor 'e + kompr) e (ssor 'a + succ) e (ssor 'e +// PB stressed e in a few words inding with -est + _arr) e (st 'a + _asb) e (st 'e + _att) e (st 'e +_manif) e (st 'e + _mol) e (st 'e + _prot) e (st 'e + _reg) e (st 'e + + // PB stressed e in some words with final -ente/-ende +_testam) e (nte 'e +_divid) e (nte 'e +_regim) e (nte 'e +_sakram) e (nte 'e + +// PB words with final -ende + &) ende (_ @n@ // troende +// exceptions to the -ende rule + k) ende (_ e-n@ // genkende, kende, anerkende + sv) ende (_ e-n@ // PB not a -ende suffix - svende + + L08) e (g a // PB stegt + L08) e (gt e // PB steg, spegepølse + best) eg (_ 'e // PB besteg + n) egl ajl // PB negl + r) egel Ejl // PB regel + r) egl Ejl // PB regler + res) e (rve 'e // PB reserve - stressed + m) eg (a eg // mega, omega + _) eget (_ a:j@D // PB eget + r) eg (er Eg // PB e=> E + eg (n aj // PB regn, tegning, lege + str) eg aj // PB stregen + _) ege (_ e:j@ // PB added _ - ege(træer) + _) ege (træ e:j@ // PB added _ - egetræe + L06) eg (e aj // PB p) changed to L06 to include b + l) eg (e aj // PM julelege, blege + l) eg (enda eg // PB legendarisk + l) eg (er eg // PB delegere + overl) eg Ej // PB overlegen + r) ej (s aj + en (gage aN // engagere + en (tre aN + c) en (t en + c) en (tA en + c) en (tC en + p) en (sion aN + r) en (ce 'AN // PB aN => 'AN - reference + r) edd ED // PB redder + br) edd Ed // PB bredde + _tr) e (t a // tretten + _tr) e (d E // tredje +// ei A:j + ej (+ aj // PB changed from ai to aj - nej + v) ej (r 'e + v) ejr (e_ ajR // PB vejre + v) ejr (er_ ajR // PB vejrer +_offic) e (_ // office (officepakke) + fl) e (de+ e // PB aflede + &) edet (_ @D3d // PB hovedet + st) edet (_ ED3d // PB værkstedet + Ad) en (@ @-n // udenlandsk, udenad + Ad) en (t en // PB identificere + &) ene (_ @-n@ + ucc) es 'e + nog) et (_ D // PB noget + ir) e (n 'e + styr) e (n 'e // styren + ork) e (ster 'e // PB stressed e in 'orkester' + borgm) e (ster 'e // PB stressed + forur) e (ne 'e // PB stressed - forurene +// PB a few words with final -es - stressed e + abc) e (s 'e + cypr) e (s '& + rec) e (s 'e + exc) e (s 'e + proc) e (s 'e + b) ea (t i: // PB beat, beatorkester + ompet) en (ce aN + ress) en (timent aN // PB ressentiment + m) edie 'edj3 // medie, kommedie + inds) e e // PB indse + etagere et&S'E:R // PB + espeak ispi:k // PB + eindhoven ajnh'o:f@n // PB + einstein ajnstajn + eyeliner ajlajnV // PB + eiffel ajf3l // PB Eiffeltårnet + + _t) e (_ e // PB + +// PB plural suffix -ene + @) ene (_S3 @n@ // brødrene - the brothers + +// PB stressed e in nouns with final -esse in da_list + &) esse ($p_alt '&s3 // finesse + &r) esse ($p_alt '&#s3 // adresse + +.group el + +// PB GENERAL RULE FOR WORDS ENDING WITH -EL - 1.182 words + @) el (_ @l // fødsel + @) el (s @l // fødselsdag, fødselstal + @) el (A @l // fødselar + +// PB exceptions to the -el rule +// PB final -el i da_list - stressed e + &) el ($p_alt ''El - model + &) el (l$p_alt ''E - modellen - only one l + + _) el el // elkedel + d) el (A+ el // PB dele, omdele + edd) el l/2 // PB seddel + medd) el del // PB meddel + verbi) el 'el // adverbiel + u) el (+ 'el // aktuel, seksuel, visuel +gennemsku) el (ig =el + ur) el (+ '&#l // konjunkturel + and) el el // andel + and) el (se @l // PB forbandelse + hand) el @l // handel + i) el (+ 'el // arteriel, artificiel + dani) el el // Daniel + ford) el el // fordel + orsk) el el // forskel + rsk) el @l // tærskel + ed) el (+ el // femtedel - words where "del" means 'part of' + ked) el (+ @l // grukedel - doesn't mean 'part of' + benm) el el // benmel + uform) el el // uformel +hvedem) el el +brillest) el el +servantest) el el +spisest) el el +underst) el (+ el + _st) el (_ el + ond) el el // milliondel + jav) el 'el // stressed e in 'javel' + v) el el // velkommen + icha) el l // Michael + ika) el l // Mikael + brøkd) el el + byd) el el + _for) el '&#l // forel - fish + _for) el (ig @l // foreligge + _for) el (æg 3l // forelægge + for) el (s 'El // PB forelsket + citad) el 'el + ejend) el el + nt) el el // eksperimentel +// on) el (+ 'el // personel, rationel - 42 words + fid) el 'el + ded) el el // tiendedel, niendedel + farv) el 'El +grænsesk) el el + juv) el 'el + kam) el 'el + kap) el 'El +legemsd) el el + løsd) el el + makr) el '&#l +marksk) el el +materi) el 'el +medikament) el 'el +mortad) el 'el + mot) el 'el + nuv) el 'el + ovend) el el +parall) el 'el + c) el 'el // parcelhus + past) el 'el + ped) el 'el +procentd) el el +programm) el 'el + prop) el 'el + reb) el 'el + re) el 'el +reserved) el el + rism) el el + rond) el 'el + rugm) el el + rundd) el el + sagom) el el + sard) el 'el + s) el (e el // sikkerhedssele +sigtem) el el + skalp) el 'el + sport) el 'el +stikked) el el + såv) el 'el + tab) el 'el +tarant) el 'el +univers) el 'el +verdensd) el el +// t) el (+ el + @) el (øs el // PB mageløs + el (eg+ el // PB juleleg + +.group en +// PB noun suffix -en (perlen - the pearl), -ens (perlens - the pearl's) +// not a suffix any more - too many exceptions + &) en (_N @n + &) ens (_ @-ns +// exceptions - don't remove "en" + aft) en @n // PB avoid [Au] when aft(en) is translated + &g) en (+ @n // PB avoid [g] when læg(en) is translated + &g) en (st en // PB genstand + &g) enn (em en // ugennemskuelig + ord) en @n + anci) enn EN // anciennitet +retskaff) en @n + sid) en @n // PB not a suffix - siden +præsid) en (t en // vicepræsident +_præsid) en (t 'en // præsidentfrue + herh) en en // PB herhen + @v) en (_ en // PB barndomsven + v) en (s+ en // PB venskab + &b) en (+ en // PB koben, nøgleben + _åb) en (+ @n // PB åben + C) en (sC @n // PB TEST - verdensmagt + g) en (st en // PB genstand + t) en (A @n // PB TEST - femtenårig +eksist) en (s 'en // PB eksistens +_resid) en (s 'en // PB residens + resid) en (s en // PB residens + +// PB $alt words with final -ent in da_list - stressed e + &) ent ($p_alt+ 'end // student + &) ent (&$p_alt+ 'end // student + &r) ent ($p_alt+ '&#nd // omtrent + &) ent (ur$p_alt+ end' // agentur - stressed u + &) ent (alsk$p_alt+ end' // + "alsk" - stressed a - orientalsk +// exceptions + acc) ent (+ AN // PB + ev) ent (yr ent + + // PB $alt words with final -ent in da_list - stressed e + &) ens ($p_alt 'ens // frekvens + &r) ens ($p_alt '&#ns // frekvens + +.group er +// PB noun suffix -er (perler - pearls), -ers (perlers - pearls') -erne (perlerne - the pearls), -ernes (perlernes - the pearls') +// Also verb suffix (hun elsker - she loves) - not to mention Peter +// NB suffix takes away the stres from "italiener/italienere" and since +// it isn't possible to mark the rule "not for $alt words" -er and -ere a not suffixes any more. + &) er (_N V // elsker + &) ere (_ 3V // elskere + &) eren (_ @r3n // elskeren + &) ers (_S3 Vs // elskers + &) erne (_S4 Vn@ // elskerne + &) ernes (_S5 Vn@s // elskernes + &) erste (_ Vst@ //midterste +// exceptions to the "er" suffix rule + g) er (++ V // våger, læger [ l'Ejer] + @g) erne (++ Vn@ // lægerne + @d) erne (++ Vn@ // let the nd rule kick in - inderne + g) er (n++ Er // gerning + reag) ere (_ er3 // overreagere + _reag) ere (_ 'er3 // overreagere + ng) er (++ V // unger + j) er (n+ Er // jern, stjerne + bunk) er V // PB not a -er suffix +alexand) er =dV // PB Alexander +report) er V // PN not a suffix +@kvart) er er // PB nabokvarter +_karakt) er 'er // PB karakter +karakt) er er // PB topkarakter + n) er (_ V // PB italiener + up) er (C V // PB superfølsom + +// not a -erne suffix + _mod) erne (+ 'ern@ + _cist) erne (+ 'ern@ + _kas) erne (+ 'ern@ + _lant) erne (+ 'ern@ + _luc) erne (+ 'ern@ + _saut) erne (+ 'ern + _tav) erne (+ 'ern@ + +// Exceptions to the suffix rules +// Words ending with -ere - stressed e - around 1.600 words in list file + &) ere ($p_alt++ ''e:3 // PB stressed - manipulere, protestere + &) er ($p_alt++ ''er // PB stressed - repeter + +// PB stressed e in words with -ering (1.100) in da_ list - likvidering + &) ering ($p_alt ''ereN + +// PB stressed e in finial -ert +affekt) ert 'ert + blas) ert 'ert + born) ert 'ert + dess) ert 'Ert +diskontinu) ert 'ert + eksp) ert 'Ert + ethv) ert 'Ert + fork) ert 'ert + gen) ert 'ert + in) ert 'ert +introv) ert 'Ert + konc) ert 'Ert +kontinu) ert 'ert + kuv) ert 'Ert +reform) ert 'ert +reserv) ert 'ert + + alt) er (nativ 'ER // PB stressed LOOK FOR MORE + + C) er (CC V // PB probably way too broad - offeret + desp) er (at 3R // PB desperat + d) er (fra er // PB derfra + v) er (C+ Er // PB vers, verden + perv) er (s 'er // PB stressed e - pervers + Cav) er (+ V // PB laver, saver + lev) er (C+ V // levertran + led) er (@ V // lederkursus + @st) er (@ V // PB kryst*er*agtig + _sk) er (_ er // PB sker + _s) er (_ er // PB ser + _h) er (++ Er // PB her + h) erre (+ ER@ // PB herre + hv) er (+ er // PB hver + fork) er (t+ er // PB forkert + Cik) er (+ V // PB epileptiker, optiker + kk) er (+ V // PB rykker + kuff) er (t V // PB kuffert + Amm) er (a 3r // PB kammerater + f) er (ni Er // PB fernis + _fall) er (+ 'er // PB falleret + _kass) er 'er // PB kasserer + st) er (et r // PB orkesteret + t) er (C V // PB lattermild + t) er (r E // PB terror + _) er (C %er // PB er + consonant: stress on next syllable - er'hverv + _) er (go er // PB not stress on next in "ergo..." + ov) er (+ V // PB overbevisende, sover + am) er (ika_ 'er // PB Amerika + v) er (i Vr' // PB røveri - stressed i + ærg) err Erg // PB ærgerrig + offic) er 'er // PB officer - stressed e + cafet) er (i 'er // PB cafeteria + n) er (v Er // PB nerve, nervøs + n) er (t Er // PB genert + _L06) er (_ &r // PB per +L06L06) er V // PB klipper + nd) er V // PB under + _) er (_ &r // PB er + L09) er (ne_ V // PB kameraerne + juvel) er (en 'er // PB juveleren + juvel) er (er 'er // PB juvelerer + _l) er (_++ er // PB ler + v) er (r_ er // PB levere + th) er_ V // Luther + hj) er Er // PB hjerne + stj) er+ Er // PB stjerne + t) erræn &r'&#N // PB terræn + _g) er (ne_+ Er // PB gerne + j) er (g Er // PB bjerg + @m) er (sk V // PB romersk + _all) erede (_ @reD@ +// &) eren (s_ 3r3n + +.group ed +// PB verb suffix - ede (elskede - lovede) +// not treated as a suffix any more - too many exceptions + &) ede (_ @D@ // PB elskede + + hov) ed @D // PB hoved + afst) ed (kom 'eD // PB afstedkomme + f) ede (+ eD@ // PB opfede + r) ede (_+ ED@ // PB vildrede, rede + hindr) ede (_ 3D@ // PB forhindrede + år) ede (_+ 3D@ // PB sårede + odr) ede (_+ 3D@ // PB fodrede + obr) ede (_ 3D@ // PB erobrede + tr) ede (_+ 3D-@ // PB splintrede + hundr) ed (+ @:D // PB hundred + rn) ed (e eD // PB dernede + &k) ede (+ eD@ // PB dødkede + indl) ede eD@ // PB + +.group et +// PB verb suffix -et (har elsket - has loved) + &) et (_+S2N @D // PB elsket + +// PB exceptions: not a 'et suffix + _sk) et et // PB sket + s) et (_+ et // PB set + it) et (_+ 'et // aktivitet + _toil) et 'et // PB toilet, toilette + meg) et (+ et // PB not a suffix + om) et (++ 'et // PB kilometer, kometer + r) et (_++ &#t // ret + ur) et (_++ @D // PB + r) ett (++ &#t // henrette, rettroende - only one t + sr) et (++ &#t // PB rigsret + @r) et (_+ -@D // PB såret + av) et (+ @D // havet, lavet - avoid [Au] + tag) et @D + amul) et 'et // PB + alfab) et 'et // pb + _bill) et 'et // PB stressed + _bill) ett 'et // PB stressed - only one t + _kask) et 'et // PB stressed + +// stressed e in nouns with -itet - vulgaritet, universitet - 304 words in da_list + &it) et ($p_alt+ ''et + + r) et (øj+ @t // PB køretøj + _budg) et 'Et + for) et_ t // PB no e - handled under group o - 'fore' + _r) et+ &#t //PB ret + +.group f + f f + ff f + + _) for (&@P3 f%V + _) for (e_ f%o // PB only the word 'fore' + _) fore (de_ f%'orV // PB only the word 'forede' + _) for (um f'or + _) fe (_ fe // PB + +// PB General rule, most words with af- plus vowel: [f] => [w] + a) f (A w // PB afart, afprøve +// PB exceptions to the 'a)f(A' rule below + ca) fe f'e // PB cafe, bogcafe + ca) fé f'e // PB café + a) f (asi f // PB afasi + a) f (atisk f // PB afatisk + a) f (oris f // PB aforisme, aforistisk + +// PB General rule, most words with af- plus consonant: f => w + a) f (C w +// PB exceptions to the 'a)f (C' rule below + a) ff (ine f // PB raffineret, raffinement + a) ff (abel f // PB affabel + a) ff (ekt f // PB affekt , affekteret + a) ff (icere f // PB afficere + a) ff (irm f // PB affirmere, affirmation, affirmativ + a) ff (initet f // PB affinitet + a) ff (ære f // PB affære + a) ff (age f // PB staffage + + a) f (ro f // PB afroasiat, afroamerikaner, afrohår etc. + a) f (re f // PB blafre + @) fobi fob'i // PB xenofobi, hydrofobi + a) f (it f + a) f (on f + a) f (rik f + a) f (sted // afstedkomme + a) f (ten f + a) f (tes_ f + Ca) f (t f + Ca) f (A f + ga) f (fel f + gra) f f + gra) f (A f + gra) f (C f + ra) f (ik f + ra) f (fe f + fire fi:V // PB fire + sa) f (ar f + sta) f (e f + fettuccine fetuTS'i:n@ // PB pasta + firenze fiR'&ns@ // PB Italian city + +.group g + g g + gg (e g // lægge + ru) g // PB rug, rugmel + æ) g (ernA j // PB lægerne + o) g (ernA // PB nekrologerne + sti) gmata gm'&:t& // PB stressed + a) g (ave 'g // PB agave + a) g (ar 'g // PB agar, agar-agar + ser) gent 'sjant // PB sergent + gjorde gjo:3 // PB gjorde + ki) g k // PB kig, udkig + ka) g (e @ // kage + ba) g (e @ // bage + ba) g (i // PB bagi + ba) g (in w // PB bagindisk + æble) grød grWD + a) g (urk g' + al) geriet Sj3r'i@d // PB Algeriet + al) gerier Sj'iV // PB Algeriet + al) gerisk Sj'i:rsg + ødi) g (t_ // nødigt + i) g (i g + g (entl j // PB egentlig + l) g (s j + øl) g (e j // PB bølge, selvfølgelig + g (n j // PB tegn, regne + ble) g (sot j // PB blegsot + ble) g (ansigt j // PB blegansigt + ble) g (fi j + L08e) g j // PB steg, spegepølse + L08e) g (t g // PB stegt + æ) g (e j + æl) g (e j // PB sælge vælge + y) g (e j // syge, ryge, myge + l) g (_ j + ø) g j // PB deleted (_ + g (le j // PB mægler, besegle + g (lem g // PB glemt + val) g (t // PB silent g - valgt + n) gæ gE + Co) g w // PB sprog, tog, toge + to) g (a g // PB exception toga + to) g (o g // PB exception Togo + to) g (t g // PB exception togt + ro) g (an g // PB arrogance + ro) g (es g // PB progesteron + o) g (r g // autograf + o) g (n u // PB g => u - vogn, sogn + r) g (_ w + u) g (e : + u) g (ene S // PB ugenert + u) g (enn g // PB ugennemskuelig + u) g (enL11 g // PB ugengældt, ugenkendelig + u) g (l ? + ø) ge (+ :j@ // PB bøgetræ, øge + ø) g (n j + g (iv+ g // avoid letter "g" pronounced with phoneme S + dra) g (en w // PB dragen, uopdragen + ha) g (l u + in) ge (niør Se + la) g (C u + la) g (n j // PB lagnet + la) g (t g + ra) g (_ w // foredrag + ra) g (e : // PB changed from w + lA) g (a g + ba) g (tal u // PB l added to post - bagtale + da) g (C w // PB changed from u - daglejer + da) g (s_ ? + fa) g (C u + _re) g (i S' + _re) g (iment g // PB regiment + re) g (iA g + _re) g (ist g' // register + sa) g (s : // PB ' => : + va) g (n u + bor) g u + gti) g (ere // PB vigtigere + jer) g (A w + jer) g (C w +// bo) g (C u + bo) g (st k + ø) g (t g + vå) g (n u + å) g (e u // PB tåge, Åge, våge + go) g = // stress on previous syllable, no g - pædagog + lo) g = // stress on previous syllable, no g - psykolog + gerald dZEr3l/2 + _) gin dZen // PB + +// PB final -gi in da_list - stressed i + &) gi ($p_alt g'i // pædagogi + _lo) gi (_ S'i // logi + + lo) g (a g + lo) gg (e g + lo) g (i g' // stress on previous syllable - psykologi + lo) g (o =g + blo) g (s =g + _lo) g (_ g + _lo) g (g g + ør) g u // PB changed from w - spørge + ni) gger gV // PB nigger + ne) g (_ j // PB neg, juleneg + ne) ger (++ V // PB neger + te) g (ori g // kategori + gear gir // PB gear, bakgear + goddag god'& // PB + godnat gon'&t // PB + godaften go'aftn // PB + godmorgen gom'V:n // PB + grace _^_EN // PB Grace - name + gentleman djEnt@lm&n // PB + gentlemen djEnt@lmEn // PB + george _^_EN + geneve Sen'E:v // PB + genève Sen'E:v // PB + +.group ge + +// PB words with final -gere: [S] + arran) ge (re S'e + banda) ge (re S'e + chan) ge (re S'e + char) ge (re S'e + enga) ge (re S'e + foura) ge (re S'e + ga) ge (re S'e + gara) ge (re S'e + indlo) ge (re S'e +indran) ge (re S'e + ju) ge (re S'e + lo) ge (re S'e + mena) ge (re S'e + negli) ge (re S'e + prote) ge (re S'e + ran) ge (re S'e + udran) ge (re S'e + ur) ge (re S'e + + _) ge (ne_ Se // gene + _) ge (nere Se // genere + _) ge (nerøs Se // generøs + _) ge (nert Se // genert + _) ge (never Se // genever + _) generel gen@r'&#l // PB stress added + _a) ge (re g'e // PB agere + bud) ge (t S'E + +.group h + + h h + h (j + hv v + A) h (K + t) h (en h + w) h (isky // PB whisky - no h + hotline hVtla:jn // PB + heat hi:t // PB + highhat hA:jh&d // PB + housecoat hAuskowd // PB + hitech hajtek // PB + homer hom'er // PB Homer - Greek + +.group i + i i // PB i: => i - made a lot of rules redundant + ig (_ i // dejlig, rig + _t) ig (_ eg // PB tig + t) igg eg // PB tigge + t) ig (e i // PB fattige, stige + l) ig i // PB virkelig + l) ig (a ig // PB liga + l) ig (i ig // PB religiøs + pl) ig (t ek // PB pligt + ig (s i // PB silent g -rigsret +mussol) i (ni 'i // PB + _præc) i (s 'i // PB stressed + _grav) i (d 'i // PB stressed + test) i (kel 'i // PM stressed + n) ij (megen aj // PB Nijmegen + n) i (gg e // PB nigger + skr) i (pt 'e? // PB stressed - manuskript + r) i (ft e // PB skrift, rift, drift + f) i (sk e // PB + l) i (lla e // PB + +// PB stress on previous syllable - around 400 words in da_list +// -ig words with the prefix be- are handled by group b - the be- rule. +// To keep the list short a large number of u- words were weeded out, +// therefore u- is removed in group u before the word is translated +// since the u+list words keep the stress. +// Any other syllable before the word reverts to normal stress + &) ig ($p_alt+ =i // velærværdig, gudvelbehagelig + + ige i:@ // PB deleted [(_] - pige, pigen, stige, sige + iger i:V // PB piger + p) igen i:3n // PB pigen + kr) igen i:3n // PB krigen + kr) igs is + d) ige (r ig'e // PB redigere + rr) ige (r ig'e // PB korrigere + nav) ige (r ig'e // PB navigere + ige (n ig'E // PB igen + rol) ige iE // PB rolige, beroligende + idel i:D@l // PB idel + israel isrA:l // PB Israel + vend) ige i:3 // PB nødvendige + iew j'u + i (nK i + sv) i (ng e // PB sving + v) i (nk e // PB vinkel + v) i (ng e // PB vinge + s) i (nk e // PB sinke + s) i (d e // PB sidde + s) i (ds i // PB sidst + t) i (n e // PB stinke + f) i (ng e // PB finger + r) i (nK e // PB ring + dr) i (l e // PB drille + i (dt e // PB midt, lidt + sk) i (dt i // PB skidt + mask) i (n 'i // PB stressed - maskinskrive + h) i (d i // PB hidtil + b) i (lled e / PB billede + kr) i (dt i // PB skridt, kridt + v) i (dt i // PB vidt + forv) i (s i // PB forvise + l) i (st e // PB liste + i (nd e // PB ind + i (nt e // PB intakt + f) i (nt_ i // PB + am) i (go 'i // PB amigo + magas) i 'i // PB magasin + asp) i (c 'i // PB aspic - only this word + +// PB words with final -isk: stress on previous syllable (1.250 words) + &) isk ($p_alt =isg // canadisk + +// PB country names with final -ien - stress on previous syllable + &) ien ($p_alt =i@n // it'alien + &) ien (sk$p_alt i'En // itali'ensk + &) ien (er$p_alt i'En // itali'ener + +// PB words with final -ik in da_list - stressed i + &) ik ($p_alt 'ik // romantik + &r) ik ($p_alt 'ek // fabrik + &) ik (k$p_alt 'i // antikke - only one k + &r) ik (k$p_alt 'e // fabrikker - only one k + +// PB words with final -ti in da_list - stressed i + &t) i ($p_alt 'i // politi + +// PB words with final -inde in da_list - stressed i + &) inde ($p_alt 'en@ // malerinde + + L10am) i (lla 'i // PB Camilla, Kamilla + _alib) i 'i // PB alibi + _fob) i 'i // PB fobi + i (nn e + i (mK e + l) i (m i // PB lim + gl) i (m e // PB glimt, glimrende + i (kK e // PB ikke, pik + mus) i (k i // PB musik + _g) i (k_ i // PB + i (k@ i // PB antikvar + v) i (k i // PB kvik + k) i (kC+ i // PB kiks, kikkert + l) i (kv i // PB likvid + r) ikk (+ ek // PB skiderikker + t) i (me i: // PB time + s) i (dA+ i: // PB siden + p) i (ds e // PB spids + s) i (d_ e // PB sid + s) i (dd+ e: // PB sidde + s) i (lk e // PB silke + s) i (gt e // PB sigte, ansigt + sl) i (k e // PB slik + st) i (f e // PB stift + st) i (k e // PB stik + spl) i (t e // PB splitte + d) i (gt e // PB heltedigt + ld) ig i // PB heldig + l) i (p e // PB slippe + r) i (k e // PB drik, skiderik + l) i (dt e // PB lidt + L08) i (l_ e // PB spil, skil + spl) i (n e // PB splint + L08) i (ll e // PB spille - problem with the verb (ud)spile/(ud)spil[sbil] + L08) i (ld i // PB spilde + m) i (dda e // PB middag + m) i (ste e // PB miste + p) i (nd e // PB pind + k) i (nd+ e // PB kind + L08) i (L06 i // PB skib + tv) i (v i // PB tvivl + v) i (gt e // PB vigtig + ev) i (g i // PB evigt, evindelig + værd) ig i // PB silent g + v) i (l_+ e // PB vil + hv) i (l+ i // PB hvil + hv) i (lk+ e // PB hvilken + v) i (nd e // PB vinde + v) id (st e // PB vidst - e and silent d + t) i (l e // PB til + st) i (l i // PB stile + ju) i (ce // PB juice - skip the i + soft) i (ce aj // PB softice + fr) i (L08 e // PB friste + s) i (kC e // PB sikker, sikre + p) is (_ es // PB pis + p) iss es // PB pisse + L08) is (+ is // PB spis + _mag) i (_ 'i // PB magi - stressed i + _mag) i (en_ 'i // PB magien - stressed i +_polit) i 'i // PB politi, politik - stressed i + _mus) i (k 'i // PB stressed i + _fys) i (k 'i // PB stressed i + _civ) i (l 'i // PB stressed - civil + all) i (gevel 'i // PB stressed i - alligevel + _band) i (t 'i // PB bandit + _vedl) i (ge 'i // PB vedligeholde + _medl) i (denhed 'i // PB medlidenhed - stressed + _omkr) i (ng 'e- // PB stressed e in 'omkring' + kn) i (p e? // PB knippel + kn) i (v i // PB kniv + _min) i (ster 'i // PB minister - stressed i + _mag) i (ster 'i // PB magister- stressed + _re) i (ster 'i // PB register - stressed ii + r) i (st e // PB brist, rist + +// PB put stress on the syllable before final 'ium' - words in da_list + &) ium ($p_alt =iOm // territorium + &r) i (um$p_alt ==i + &r) i (et$p_alt ==i + +// PB put stress on the syllable before final 'ie' - words in da_list + &) ie ($p_alt =i3 // valkyrie + &s) ie ($p_alt =j3 // gymnasiereform + &) ie (l$p_alt i'E // materiel + +// PB stressed i in words with final -mi in da_list + &m) i ($p_alt ''i // økonomi + +// PB stressed i in words with final -il in da_list + &) il ($p_alt 'il // pædofil + + r) i (si e // PB risikere + r) i (siko i // PB risiko +// r) i (sl e // risle + p) i (ll e // PB pille + lat) i (nis i // PB latinisme + k) i (et 'i // PB Tyrkiet +prosod) i 'i // PB prosodi, prosodien +_melod) i 'i // PB melodi +_parod) i 'i // PB parodi +_perfid) i 'i // PB perfidi +_rapsod) i 'i // PB rapsodi + _værd) i 'i // PB +_abbed) i 'i // PB +_ortopæd) i 'i // PB ortopædi + swah) i (li 'i // PB stressed i +// stressed final i +akromegal) i 'i +anomal) i 'i +bibliofil) i 'i +filatel) i 'i +heterofil) i 'i +homofil) i 'i +kancell) i 'i +melankol) i 'i +nekrofil) i 'i +pædofil) i 'i +staffel) i 'i + suffl) i 'i +zoofil) i 'i + +// PB stressed final -iv +_abort) iv 'iw +_adapt) iv 'iw +_adhæs) iv 'iw + _ark) iv 'iw +_assert) iv 'iw // stressed s'er ? +_decis) iv 'iw +_detekt) iv 'iw +_digest) iv 'iw +_direkt) iv 'iw +_eksekut) iv 'iw +_erupt) iv 'iw +_gerund) iv 'iw +_initiat) iv 'iw +_kontrakt) iv 'iw +_kontrast) iv 'iw + _kurs) iv 'iw + _lasc) iv 'iw +_lokomot) iv 'iw + _mass) iv 'iw + _mot) iv 'iw + _na) iv 'iw +_perspekt) iv 'iw +_regulat) iv 'iw +_sport) iv 'iw + _stat) iv 'iw + + // PB stressed final -pi +autotyp) i 'i +bronkoskop) i 'i +daguerreotyp) i 'i +daktyloskop) i 'i +entrop) i 'i +filantrop) i 'i +galvanotyp) i 'i +gastroskop) i 'i +isotop) i 'i + kop) i 'i +litotyp) i 'i +maskep) i 'i +//mikroskop) i 'i +misantrop) i 'i +monotyp) i 'i +otoskop) i 'i +rektoskop) i 'i +stereotyp) i 'i +stetoskop) i 'i +teleskop) i 'i + terap) i 'i + utop) i 'i + +// PB stressed i in words with final -si in da_list + &s) i ($p_alt 'i // fantasi, afasi + + v) i (sk e // PB viskelæder + l) i (e j + r) i (gt e // PB rigtigt + l) ig (g+ e // PB ligge - only one g + s) i (e j +// t) i (e j +// t) i (on // i ommitted because of sj + t) i (øs + s) i (on j + s) i (a j // PB passiar + c) i (a j // PB specialitet + des) ign ain + ingen) i (ør + ant) igone 'igon@ // PB Antigone - Greek name + +.group in + +// PB words ending with "ine" in da_list with $alt - stressed i + &) ine ($p_alt 'in@ // lavine + +// PB words ending with "in" in da_list with $alt - stressed i + &) in ($p_alt 'in // baldakin, bekkasin + &ss) in ($p_alt 'EN // bassin + +.group is +// PB words ending with -ist in da_list with $alt - stressed i + &) ist ($p_alt 'ist // bassist + +.group it +// PB words with final -it - stressed i + &) it ($p_alt 'it //PB bakelit + &) it (t$p_alt 'i //PB avoid double t - bakelitten [ b,ak@l'it@-n] + +.group j + + j j + j (aw dZ + j (ack dZ + j (ob dZ + j (ohn dZ + j (azz dZ // PB + jeep dZi:b // PB Jeep (American car) + derh) j (emme 'j // PB stressed j + en) j (ambe S // PB enjambement + o) j (e S + a) j (o S + ma) j (or j' // PB major + j (uice dZ //PB juice + _) jer (_ jEr // PB jer - er swallowed by other rules + jamsession dj&:ms'eSj@n // PB + jardiniere SjArdinj'E:r // PB jardiniere + jeton Sjet'VN // PB + jugere SyS'eV // PB + _) jalousi S&lus'i // PB jalousi + @) jalousi S&lusi // PB magtjalousi + jamaica S&m'ajk& // PB + _) james _^_EN + +.group k + + k k + kk k + k (oordinat oVdi'nat + kanterel kant@r'&#l // PB + kumquat kVmkwVd // PB + &) kvarter kvarter // PB kommandokvarter + s) k g + &) k k // after stressed vowel + &) kk g + +.group l // PB l changed to l/3 in ph_danish + + l l + ll l + +// PB nouns in da_list with final -log - stressed o +// A lot of these can have a stressed i added (-gi rule in group g) + &) log ($p_alt l'o // nekrolog (silent g) +// not a silent g followed by i + &) log (i$p_alt log' // mytologi + +// PB nouns in da_list with final -let - stressed e + &) let ($p_alt l'et // amulet + + s) l l/2 // PB add a bit more to l after s + f) l l/2 // PB add a bit more to l after f + &) ld (er l // PB silent d - anmelder + se) lv l // PB selv, selvfølgelig, selvhjælp + se) lv (e lv // PB selve, selvet + bo) ld ld + so) ld (at ld + _) leg (_ laj // PB leg + leger lajV // PB leger + legem lE@m // PB legemsdel + lotion l3uSjn // PB håndlotion + levere lev'eV // PB + @) levere leveV // PB + +.group m + m m // PB m? -> m + mm m + m (A m + _) mere (_ mer // PB mere + matine m&tin'e // PB + _) meget (_ ma:j@D // PB meget + _) medea med'E:& // PB Medea + montgomery mVndg'Vmri // PB + mareridt mA:@rit // PB + _) mc (C@ m&k // PB McDonald + musketer musget'er // PB musketer + milkshake _^_EN // PB + _) miles (_ ma:jl/2_s // PB + _) mike (_ majk // PB Mike + mail mejl + +// PB General rule for words with -ment + &) ment m'end // PB element, segment +// PB exceptions for the -ment rule +arrange) ment mAN // PB arrangement +avance) ment mAN // PB avancement +avertisse) ment mAN // PB avertissement +change) ment mAN // PB changement +departe) ment mAN // PB departement +deplace) ment mAN // PB deplacement +detache) ment mAN // PB detachement +divertisse) ment mAN // PB divertissement +engage) ment mAN // PB engagement +enjambe) ment mAN // PB enjambement +etablisse) ment mAN // PB etablisseement +guverne) ment mAN // PB guvernement + gour) met me + gour) mand mAN // PB gourment +kompli) ment mAN + regle) ment mAN // PB reglement + regle) mente (ret mente // PB reglementeret +abonne) ment mAN // PB reglement +instru) mentel mentel // PB instrument +katonne) ment mAN // PB katonnement +klasse) ment mAN // PB klassement +kanosse) ment mAN // PB kanossement + lave) ment mAN // PB lavement + møble) ment mAN // PB møblement +nivelle) ment mAN // PB nivellement + posse) ment mAN // PB possement +raffine) ment mAN // PB raffinement +ressenti) ment mAN // PB ressentiment +ræsonne) ment mAN // PB ræsonnement +signale) ment mAN // PB signalement + sorti) ment mAN // PB sortiment +supple) ment mAN // PB supplement +tempera) ment mAN // PB temperament +trakte) ment mAN // PB traktement +bombarde) ment mAN // PB bombardement +_arrange) ment m'AN // PB arrangement +_avance) ment m'AN // PB avancement +_avertisse) ment m'AN // PB avertissement +_change) ment m'AN // PB changement +_departe) ment m'AN // PB departement +_deplace) ment m'AN // PB deplacement +_detache) ment m'AN // PB detachement +_divertisse) ment m'AN // PB divertissement +_engage) ment m'AN // PB engagement +_enjambe) ment m'AN // PB enjambement +_etablisse) ment m'AN // PB etablisseement +_guverne) ment m'AN // PB guvernement + _gour) met m'e + _gour) mand m'AN // PB gourment +_kompli) ment m'AN +_regle) ment m'AN // PB reglement +_regle) mente (ret ment'e // PB reglementeret +_abonne) ment m'AN // PB reglement +_instru) mentel ment'el // PB instrument +_katonne) ment m'AN // PB katonnement +_klasse) ment m'AN // PB klassement +_kanosse) ment m'AN // PB kanossement + _lave) ment m'AN // PB lavement +_møble) ment m'AN // PB møblement +_nivelle) ment m'AN // PB nivellement +_posse) ment m'AN // PB possement +_raffine) ment m'AN // PB raffinement +_ressenti) ment m'AN // PB ressentiment +_ræsonne) ment m'AN // PB ræsonnement +_signale) ment m'AN // PB signalement +_sorti) ment m'AN // PB sortiment +_supple) ment m'AN // PB supplement +_tempera) ment m'AN // PB temperament +_trakte) ment m'AN // PB traktement +_bombarde) ment m'AN // PB bombardement + +.group n + + n n + +// PB words with final -ni in da_list - stressed i + &) ni ($p_alt+ 'ni // ironi + &) ni (sk$p_alt+ =ni // ironisk - stress on pervious syllable before sk + +// PB nouns with final -ner ("er" has been removed) in da_list +// stressed previous syllable + &) n (er$p_alt+ =n // italiener, amerikaner + &) n (sk$p_alt =n // italiensk, amerikansk + +// PB general rule: nd = [n] after a vowel + A) nd n // ond, onde, sunde + A) ndn n // PB endnu -> [enu] - only one n +// exceptions + A) nd (el nd // PB andel, ejendel + ve) nde (l n // PB anvendelig + mi) nde (li n // PB almindelig + y) nd (el n // PB begyndelse + ba) nd (el n // PB forbandelse + gru) ndig ndi // PB grundig + nd (ent nd // PB prætendent + _i) nd (er+ nd // inder + _bagi) nd nd // PB Bagindien + adde) nd nd +dimitte) nd nd +divide) nd nd + juge) nd nd + minue) nd nd +revalide) nd nd +subtrahe) nd nd + +// PB general rule: nd = [nd] after a vowel before a + A) nd (a nd // mandat +// PB general rule: nk = [N] before t + nk (t N // adjunkt, sankt + +// PB takes away the d in 'bander' = 'gangs' - n => n? +// Neither 'bander' = swears nor 'bander' = gangs is correct +// but a sentence like 'bander bander' (gangs swear) is understandable + ba) nd (er n? + + ka) n_ // silent n - kan + nd (ow nd + sta) nd (ar nd // PB standard - keep the d + i) nd (eks nd + i) nd (i nd // PB Indien, individ, indianer + i) nd (imellem n // exception + i) nd (erl+ n // PB inderlig + eku) nd nd + pag) n (e nj + ræso) nn n // PB ræsonnement + A) nn n // PB venner, denne + @) nien =ni3-n // PB Albanien, Rumænien - stress on previous syllable + newton nj'u:t@n + nylon najlVn + neglige negliS'e + nightingale _^_EN + _) nag (_ n&:j // PB nag + nougat nug'& // PB + _) naiv n&'iv // PB naiv + @) naiv n&iv // PB bundnaiv + +.group ng + ng (_ N + ng (e N + ng (s N + + _a) ng (A ng + cha) ng (ement Nsj // PB changement + ora) nge Nsj3 // PB orange + ng (a ng + ng (i ng + i) ng (s N + u) ng (e N + ba) ng (e N + fa) ng (e =N + fi) ng (er =N + fi) ng (re =N + fu) ng (er Ng + ga) ng (e N + la) ng (e N + li) ng (e N + læ) ng (e N + ru) ng (e N + se) ng (e N + ti) ng (e N + ti) ng (ent Ng + træ) ng (e N + arra) ng NS + +.group o + + o o +// PB final -skop - stressed o + &sk) op ($p_alt 'op // gyroskop + &sk) op (i$p_alt op' // mikroskopi + +// PB final -om in da_list - stressed o + &) om ($p_alt 'om // atom + +// PB final - ose - stressed o + &) ose ($p_alt 'o:s@ // hypnose + + _biot) o (p 'o // PB stressed + _isot) o (p 'o // PB stressed + o (L06 V // PN op, opdrage, obstruere + helik) o (pt 'V // PB stressed - helikopter + p) o (pu o // PB populær + p) o (t V // PB potte + p) o (tA o // PB potage + o (per o // PB opera + sk) o o // PB skopudser + sk) o (t V // PB Skotland, skotte + skr) o (t V // PB skrot + sj) o (f o // PB sjofel + o (be o // PB oberst, koben + r) o (L06 o // PB problem + _eur) o (pa 'o // PB stressed + dr) o (p V // PB droppe + r) o (nt V // PB front + er) o (p V // PB herop + _) obo ob'o // PB + + r) o (ma o // PB romantik + or (g+ V: // PB sorg, morgen + kont) o (r 'o // PB kontor - stressed +korrid) o (r 'o // PB +labrad) o (r 'V // PB + mete) o (r 'o // PB + matad) o (r 'o // PN +katastr) o (fe 'o: // PB katastrofe + lit) o (te 'o: // PB stressed + en) o (rm 'V // PB stressed + abn) o (rm 'V // PB stressed + def) o (rm 'V // PB stressed +klorof) o (rm 'V // PB stressed + konf) o (rm 'V // PB stressed + ref) o (rm 'V // PB stressed + unif) o (rm 'V // PB stressed + d) o (b V // PB dobbelt + d) o (nn V // PB donna + h) o (ll V // PB Holland + n) o (n V // PB nonne, nonkombattant + o (dds V: // PB odds + o (sse V // PB tosse, nosse + j) o (b V // PB job + mon) o (k 'V // PB monokel - stressed + ov (A+ Vu // PB over, oven + h) ov (+ Vu // hov, sove + ov (_+ Vw // PB sjov, lov, skov + ov (s_+ Vw // PB sjovs, lovs, skovs + ov (t_+ Vw // PB sjovt + ov (n Vw // PB ovn + ov (l Vw // PB skovl + ov (p Vw // PB lovprise + v) ov (e Ov // PB vove + o (fC V // PB ofte + n) ov (+ ov // PB nova, november + _C) o (k 'V // PB beginning with 1 consonant followed by o and k: sok, nok, kok + d) o (ku o // PB dokument + ch) o (ko o // PN chokolade + o (mr V // PB område + o (mf V // PB omformulere + _m) o (rt V // PB mortadel + o (k V // PB okker, lok + fr) o o // PB frokost + sm) o (king o: // PB + f) o (kA o // PB fokus, fokal + o (ka o // PB lokal, polal + o (rk V // PB orke orkester + g) o (dt V // PB godt, godte + k) or (p V: // PB korps + g) od (tr oD // PB godtroende + g) od (tA oD // PB godtage, godtog + r) o (tt V // PB rotte + d) o (g V // PB dog + v) o (g V // PB vogn, vogte + s) o (g V // PB sogn + s) o (r V // PB professor + L08) o (f V // PB stof + l) o (ft V // loft + _l) o (g_ V // PB log + l) o (gg V // PB logge på + o (lf V // PB golf, Adolf + b) o (ll V // PB bolle + l) o (ve+ ou // PB love + l) ondon VndVn // PB London + od_ VD // PB - od, vod, skod + odd (A VD // PB - odder - only this word + k) ors V:s // PB kors, korsage + c) o (rs V // PB corsage + k) o (lL06 V // PB kolbe + At) o (de 'o // PB stressed o - metode, katode + bistr) o 'o // PB stressed o in 'bistro' + er) o (b 'o // PB erobre - stressed o + _er) o (t 'o // PB erot - stressed o + _pil) o (t 'o // PB stressed - pilot + _idi) o (t 'o // PB stressed + _matr) o (s 'o // PB stressed + L09) o (va o // PB nova, renovation + r) o (vA+ ov // PB provokere + h) o (ved o: // PB hoved + tr) o o // PB tro + kn) o (tt V // PB knotten + kn) o (tn V // PB knotne + tr) od (s V // PB silent d - trods + kl) od (s V // PB silent d - klods + g) od (s o // PB silent d - gods + tr) o (j V // PB trojka, Troja + tr) o (kl V // PB trokle + tr) o (p V // PB trop + t) or (_ V // PB faktor + t) or (en V // PB faktoren, doktoren + r) oy 'Vj // PB destroyer, royal + st) o (r+ o // PB stor + _m) o (C o // PB m + o + consonant: mor, mord, + m) or (f V: // PB morfar + _C) o (_ o // PB jo, ko, lo, so + f) o (d+ o // PB fodre + C) oe (de o: // PB boede, troede + m) o (f o // PB grammofon, homofil + r) o (f o // PB profil +// pr) o o // PB procent + spr) o (g o // PB sprog + o (gK o + t) oi o& // PB toilet + d) o (k o // PB dokument + l) o (kA o // PB lokal + k) o (ka o // PB kokasse, kokain +// C) o (kT+ o // PB only for words in da_list + s) o (p o // PB sopran + oregonpine VregVn||pajn // PB + b) o (m o // PB bombe + L11) o (m V // PB gommen, brudgom, kom, velkommen + p) o (m V // PB pomp + Xl) o (m V // PB lom, lomme, blomst + pl) o (m o // PB exception from the rule above (Xl) o (m) - plombe + o (m V // PB om, ensom VERY BROAD + r) o (mA o // PB romer + b) o (mu V // PB bomuld + n) o (ss V // PB nosse + l) o (s V // PB los + kol) o (s 'V // PB kolos - stressed + kol) o (st o // PB kolostomi + kol) o (ssa o // PB kolossal + k) o (nC V // PB konfirmand, konfekt, konkurrence + k) o (ne o // PB kone + k) o (pi o // PB kopimaskine + _huk) o (mme 'V // PB hukommelse - stressed + bisk) o (p V // PB biskop + _n) o (r o // PB nord, nordisk + v) or (A+ V: // PB vores + rek) o (rd 'V: // PB exception - stressed o in 'rekord' + ak) o (rd 'V: // PB exception - stressed o in 'akord' + o (rden O // PB orden, torden + L02) o (rt o //PB sort, stort + L02) o (rte o //PB sorte + rep) o (rter 'V // PB stressed o + L02) o (rtA V // PB sortiment, transportere +transp) o (rtK 'V: // PB transport + o (s o // PB hos, hospital + _r) o (sk V // PB Roskilde + r) o (ll V // PB rolle + o (sA o: // PB rose, skose, pose + h) o (spice V // PB hospice + C) o (st V // PB post, moster + st) o (m o // PB stomi + h) o (st o // PB host + Cl) o (t V // PB flot + ou 'u // PB poussin, toupe +_black) out 'awd // PB blackout + _lay) out 'awd // PB layout + _lock) out 'awd // PB blackout + _drop) out awd // PB dropout + _hand) out awd // PB handout +_knock) out 'awd // PB knockout + _time) out 'awd // PB timeout + _work) out awd // PB workout + ohio ouh'ajo + l) ou u // PB jalousi + b) ourbon W:b@n // PB bourbon whisky + ough Vf // PB tough, rough - only 2 words + oun aVn // PB discount + kl) oge ow,@ + nark) o (tik 'o // PB narkotika, narkotisk + ul) o (v 'V // PB stressed o - ulovlig + h) o (ng V // PB Hongkong + k) o (mmu o // PB kommunisme + k) o (mmi o // PB kommis, kommissær + _pr) ovi (ns ov'e // PB provins - stressed i + +// PB final -ol words in da_list - stressed o + &) ol ($p_alt+ 'ol // parabol + &s) ol ($p_alt+ 'Vl // konsol + &h) ol ($p_alt+ 'Vl // alkohol + &h) ol (i$p_alt+ 'ol // alkoholisk + &ok) ol ($p_alt+ 'Vl // protokol + &t) ol ($p_alt+ 'Vl // chatol + &tr) ol ($p_alt 'Vl // kontrol + &tr) ol (l$p_alt 'o // kontrollere + &st) ol (+$p_alt 'ol // pistol + + L08) o (l o: // PB skole, spole + L08) o (lt V // PB stolt + ravi) o (li 'o // PB stressed o + j) o (l V // PB jolle, fjols, fjolle + kj) o (l o // PB kjole + L06) o (ld V // PB bold + o (lk V // PB folk + d) o (llar V // PB dollar - only this word plus compounds like 'dollargrin' + o (lv V // PB tolv + rob) o (t 'V // PB + s) o (l o // PB sol + s) o (ldat o // PB soldat + h) o (l V // PB hold, Holger + h) o (li o // PB holistisk + h) o (lo o // PB hologram + h) o (le // PB hole + s) o (ld V // PB solde + s) o (lgt V // PB solgt - exception + tr) o (ld V // PB trold + or (l O: // PB orlov + +.group on + +// PB stressed o in words ending with -ion/-on - around 750 $alt words in da_list +// Words from Latin, French and other languages + &) on ($p_alt 'on //aktion + +// PB exceptions to the -on rule (and other -on exception) + stadi) on Vn + k) ong VN + s) on (d Vn // sondere +leksik) on Vn + liban) on Vn // Libanon + h) on (du Vn // PN Honduras + arg) on Vn + dral) on Vn + dr) onn (ing Vn +triatl) on =Vn + duatl) on =Vn + embry) on Vn +dødvægtt) on Vn + redeb) on Vn + gall) on Vn + gibb) on Vn + kol) on Vn + kol) onn 'Vn // kolonne - only one n, stressed +kompagn) on VN + orl) on Vn + maked) on 'on // PB makedoner + perl) on Vn + @sal) on VN + @tal) on VN + tefl) on Vn + t) on (_ Vn // ton, kiloton + t) on (s_ Vn // PB tons + +.group or + + v) or Or // PB alvor + f) or V // PB derfor + k) or (t V: // PB kort + m) orge V:3 // PB morgen + dek) or 'V:r // PB dekor + _) or V // PB orientere + orm orm // PB + st) or (m V: // PB + b) or (t Vr // PB bortforklare + or (al oR // PB oral + +// PB final -sor - stress on previous syllable +_aggress) or =V +_assess) or =V + _cens) or =V +_decis) or =V +_defens) or =V +_dimiss) or =V +_divis) or =V +_kompress) or =V +_kondens) or =V +_process) or =V +_profess) or =V +_provis) or =V +_revsi) or =V +_success) or =V + +// PB when "ord" means 'word', the d isn't pronunced + ord (++ or // PB ord , forord +// PB Exceptions to the or rule - "ord" doesn't mean "word" + k) ord (el Vrd // PB kordel + hv) ord (an Vrd // PB hvordan + m) ord (+ ord // PB mord, morder + f) ord (æ Vrd' // PB fordærve + ord (en+ Vrd // PB orden, ordensmagt + j) ord (en oV // PB fjorden jorden + ord (entlig+ 'Vrd // PB ove3rordentlig - stressed + ord (ne+ Vrd // PB ordne + ord (nin 'Vrd // PB ordning, forordning + ordre (+ Ordr3 // PB ordre, ordrebog + _) ord (ret+ or // PB ordret + ord (retil+ Vrd // PB ordretilgang + ord (ruk Vrd' // PB fordrukken + ord (i+ Vrd // PB ordinær + b) ord (el Vrd' // PB bordel + ordonnans Vrdon'&ns // PB ordonnans + ordrup ordr0b // PB Ordrup - Danish town + C) ore (_ o:V // PB more, store + orel or'&#l // PB morel + +// PB stress on previous syllable - '-tor_' nouns in da_list + &t) or ($p_alt ==V // karburator, rollator, multiplikator + &t) orium ($p_alt 'oiOm // don't spoil the -ium rule - laboratorium + +// PB no stress on initial 'for' - 1.550 words. + _f) or (@ %V +// exceptions to initial 'for' below - 'for' means "front/fore" + _f) or (a_ 'V // PB fora (plur. of 'forum') + _f) or (an_ 'V // PB foran + _f) or (ankørende 'V // PB forankørende + _f) or (annævnt'V // PB forannævnt + _f) or (ansat 'V // PB foransat + _f) or (anstille 'V // PB foranstillet + _f) or (anstående 'V // PB foranstående + _f) or (ben_ 'V // PB forben + _f) or (bens 'V // PB forbens + _f) or (benene 'V // PB forbenene + _f) or (behand 'V // PB forbehandle + _f) or (beho 'V // PB forbehold + _f) or (bered 'V // PB forberede + _f) or (bil 'V // PB forbillede + _f) or (bjerg 'V // PB forbjerg + _f) or (bogstav 'V // PB forbogstav + _f) or (bud 'V // PB forbud + _f) or (bund_ 'V // PB forbund + _f) or (bunds 'V // PB forbundsformand + _f) or (bøn 'V // PB forbøn + _f) or (censur 'V // PB forcensur + _f) or (danser 'V // PB fordanser + _f) or (del_ 'V // PB fordel + _f) or (dom 'V // PB fordom + _f) or (dring 'V // PB fordring, fordringdfri + _f) or (dæk_ 'V // PB fordæk + _f) or (dæks 'V // PB fordæks + _f) or (dækkene 'V // PB fordækkene + _f) ore '0:@ // PB foreberinge, foregribe + _f) ore (n V'e: // PB forene, forening + _f) or (el_ or // PB forel + _f) or (et_ 'o3 // PB foret + _f) or (elsk+ V' // PB forelske + _f) ore (ne+ V'e: // PB forene + _f) orend (e 'V,en // PB forende + _f) orenkl (e V'enkl // PB forenkle + _f) orenkl (ing V'enkl // PB forenkling + _f) orensis (k or'&#nsis // PB forensisk + _f) oretag (som %V3't&: // PB foretagsom + _f) orev (ige V'e:v // PB forevige + _f) or (fader 'V // PB forfader + _f) or (far 'V // PB forfar + _f) or (fædre 'V* // PB forfædre + _f) or (fang V // PB forfang + _f) or (felt V // PB forfelt + _f) or (film V // PB forfilm + _f) or (fjor V // PB forfjor + _f) or (ford V // PB forfordele + _f) or (forfod V // PB forfod + _f) or (forstærk V // PB forforstærker + _f) or (forsøg V // PB forforsøg + _f) or (fra V // PB forfra + _f) or (foryserum V // PB forfryserum + _f) or (fødder V // PB forfødder + _f) or (gast V // PB forgast + _f) or (gang 'V // PB forgang, forgangen + _f) or (gemak V // PB forgemak + _f) or (grund 'V // PB forgrund + _f) or (gænger V // PB forgænger + _f) or (gære V // PB forgære + _f) or (gård V // PB forgård + _f) or (hal V // PB forhal + _f) or (ham V // PB forhammer + _f) or (have V // PB forhave + _f) or (hen V // PB forhenværende + _f) or (histo V // PB forhistorie, forhistorisk + _f) or (hjul V // PB forhjul, forhjulstrukken + _f) or (hold V // PB forhold, forholdsvis + _f) or (hud V // PB forhud + _f) or (hus V // PB forhus + _f) or (hæng V // PB forhæng + _f) or (hånd V // PB forhånd + _f) or (hånds V // PB forhåndsindtryk + _f) or (ring_ V: // PB foring + _f) or (ringen V: // PB foringen + _f) or (kammer 'V // PB forkammer + _f) or (kant V // PB forkant + _f) or (karl V // PB forkarl + _f) orka (rl+ a // PB forkarl + _f) or (klog V // PB forklog, forklogskab + _f) or (kontor V // PB forkontor + _f) or (krop V // PB forkrop + _f) or (kvinde V // PB forkvinde + _f) or (kæmper V // PB forkæmper + _f) or (kærlighed 'V // PB forkærlighed + _f) or (køb V // PB forkøbet, forkøbsret + _f) or (kørselsret V // PB forkørselsret + _f) or (lag 'V // PB forlag + _f) or (lags 'V // PB forlagsret + _f) or (land 'V // PB forland + _f) or (lem V // PB forlem + _f) or (lyd V // PB forlyd + _f) or (lygte 'Vr // PB forlygte + _f) or (lys V // PB forlys + _f) orlyst Vl'Wsd // PB forlyste, forlystelse + _f) or (lægger 'V // PB forlægger + _f) or (læns 'V // PB forlæns + _f) or (læse 'V // PB forlæse + _f) or (maldehyd 'V // PB formaldehyd + _f) or (mand 'V // PB formand, formandsskifte + _f) or (mbar 'V // PB formbar + _f) or (mbrød 'V // PB formbrød + _f) or (me 'V // PB forme + _f) or (melig 'V // PB formelig + _f) ormer (_ 'VrmV // PB former - problem with "formér" + _f) or (mfast 'Vr // PB formfast + _f) or (mfri 'Vr // PB formfri + _f) or (fuldendt 'Vr // PB formfuldendt + _f) or (mgiv 'Vr // PB formgive + _f) or (middag 'Vr // PB formiddag + _f) or (mkage 'Vr // PB formkage + _f) or (mlære 'Vr // PB formglære + _f) or (mløs 'Vr // PB formløs + _f) or (mning 'Vr // PB formning + _f) or (mor 'Vr // PB formor - like forefather + _f) or (mødre 'Vr // PB formødre + _f) or (mpresse 'Vr // PB formpresse + _f) or (ms 'Vr // PB formsikker, formskære, formsprog, formstof + _f) ormssag (K 'Vrm?s,sa // PB formssag + _f) or (mt 'Vr // PB formtørre + _f) or (mue 'Vr // PB formue, formueskat + _f) or (mynder 'Vr // PB formynder, formynderisk + _f) or (mål 'Vr // PB formål, formålstjenelig + _f) or (navn 'Vr // PB fornavn + _f) or (nem_ 'Vr // PB fornem + _f) or (omtale 'Vr // PB foromtale + _f) or (ord 'Vr // PB forord + _f) or (ordn or // PB forordning + _f) or (over 'Vr // PB forover + _f) or (panthaver 'Vr // PB forpanthaver + _f) or (parti 'Vr // PB forparti + _f) or (post 'Vr // PB forpost + _f) or (praktik 'Vr // PB forpraktik + _f) or (premiere 'Vr // PB forpremiere + _f) or (programmere 'Vr // PB forprogrammere + _f) or (prøve 'Vr // PB forprøve + _f) or (på 'Vr // PB forpå + _f) or (rang 'Vr // PB forrang + _f) or (rest 'Vr // PB forrest + _f) or (ret 'Vr // PB forret + _f) or (rider 'Vr // PB forrider + _f) or (rige 'Vr // PB forrige + _f) or (rude 'Vr // PB forrude + _f) or (råd_ 'Vr // PB forråd + _f) or (slag 'Vr // PB forslag + _f) or (sanger 'Vr // PB forsanger + _f) or (sats 'Vr // PB forsats, forsatsrude + _f) or (side 'Vr // PB forside + _f) or (ske 'Vr // PB forske + _f) or (sker 'Vr // PB forsker, forskerby + _f) or (skel_ 'Vr // PB forskel + _f) or (skelsbehandl 'Vr // PB forskelsbehandle, -behandling + _f) or (skelsløs 'Vr // PB forskelsløs + _f) or (skol 'Vr // PB forskole, forskoling + _f) or (skrift 'Vr // PB forskrift + _f) or (skud 'Vr // PB forskud + _f) or (skyl 'Vr // PB forskyl + _f) or (skære 'Vr // PB forskære, -bræt + _f) or (skærm 'Vr // PB forskærm + _f) or (slag_ 'Vr // PB forslag + _f) or (slags 'Vr // PB forslas, -stiller + _f) or (læbe 'Vr // PB forlæbe + _f) or (smag 'Vr // PB forsmag + _f) or (sommer 'Vr // PB forsommer + _f) or (sorg 'Vr // PB forsorg + _f) or (spand 'Vr // PB forspand + _f) or (spil_ 'Vr // PB forspil + _f) or (spillet 'Vr // PB forspillet + _f) or (spillene 'Vr // PB forspillene + _f) or (spir 'Vr // PB forspire + _f) or (spring 'Vr // PB forspring + _f) or (spændt 'Vr // PB forspændt + _f) or (stad 'Vr // PB forstad, forstadium + _f) or (stander 'Vr // PB forstander + _f) or (stavelse 'Vr // PB forstavelse + _f) or (stavn 'Vr // PB forstavn + _f) or (stbotanik 'Vr // PB forstbotanik + _f) or (stkandidat 'Vr // PB forstkandidat + _f) or (stlig 'Vr // PB forstlig + _f) or (stmand 'Vr // PB forstmand + _f) or (stmæssig 'Vr // PB forstmæssig + _f) or (studie 'Vr // PB forstudie + _f) or (studium 'Vr // PB forstudum + _f) or (stue 'Vr // PB forstue + _f) or (stvæsen 'Vr // PB forstvæsen + _f) or (stzoologi 'Vr // PB forstzoologi + _f) or (stævn 'Vr // PB forstævn + _f) or (svar_ 'Vr // PB forsvar + _f) or (svarer 'Vr // PB forsvarer + _f) or (svars 'Vr // PB forsvars chef +// _f) or (syn_ 'Vr // PB forsyn +// _f) or (synet 'Vr // PB forsynet + _f) or (sæde 'Vr // PB forsæde + _f) or (sæt 'Vr // PB forsæt + _f) or (så_ 'Vr // PB forså + _f) or (tand 'Vr // PB fortand + _f) or (tands 'Vr // PB fortands + _f) or (tænder 'Vr // PB fortænder + _f) or (tegn_ 'Vr // PB fortegn + _f) or (tegningsret 'Vr // PB fortegningsret + _f) or (tekst 'Vr // PB fortekst + _f) or (telt 'Vr // PB fortelt + _f) or (tfarende 'Vr // PB fortfarende + _f) or (tid 'Vr // PB fortid + _f) or (til 'Vr // PB fortil + _f) or (tløbende 'Vr // PB fortløbende + _f) or (tog 'Vr // PB fortog + _f) or (tov 'Vr // PB fortov + _f) or (trappe 'Vr // PB fortrappe + _f) or (trin_ 'Vr // PB fortrin + _f) or (trins 'Vr // PB fortrinsret + _f) or (trop 'Vr // PB fortrop + _f) or (tryk 'Vr // PB fortryk + _f) or (tsætte 'Vr // PB fortsætte + _f) or (tunge 'Vr // PB fortunge + _f) or (tæppe 'Vr // PB fortæppe + _f) or (ud Vr // PB ud, forud, forudsætte + _f) oruden (_ or'uD-n // PB foruden + _f) or (valg 'Vr // PB forvalg + _f) or (varm 'Vr // PB forvarme, forvarmning + _f) or (vars 'Vr // PB forvarsle, forvarsling + _f) or (vask_ 'Vr // PB forvask + _f) or (vejen 'Vr // PB forvejen + _f) or (værelse 'Vr // PB forværelse + _f) or (åd 'Vr // PB foråd + _f) or (år 'Vr // PB forår + +.group p + + p p + pp p +// &) p b +// &) pp b + _) på (P2 p'V // PB prefix - påtage, påmontere + _) på (sk p'O // PB not a prefix - påske + &) p (_ p // PB hjælp + p (sy // psykolog [s,ykol'o] + pipeline pajplajn // PB + pitchpine peTSpa:jn // pb + praline pRAlin'e // PB + punchline pVnSlajn // PB + parfait pAf'E // PB + protege prod@S'e // PB protege + protegé prod@S'e // PB protegé + _) passager p&s&sj'er // PB passager + peanut pi:nVd // PB + +.group ph + + ph f // PB spelling error - no dot in 'phil.' + +.group q + + q k + + qu kv + te) qu (ila 'k // PB tequila + quiz kvis // PB + +.group r + r R + rickshaw rekSV: // PB rickshaw + rickshawer rekSV:V // PB rickshawer + recut rikVd // PB + rioja ri'Vk& + r (K r // not followed by a vowel + hve) r r // PB hver + b) r r // bror + Cd) r (e_ dr // PB andre + Ad) r (e_ R // PB andre + _se) r (_ r // PB ser + he) r (_ r // PB her + e) re (s 3 // PB jeres, deres + @) re (_ V // PB "re" ending a word - være, sejre + bu) rd (eK rd +// &) rd (eNKK r + sa) rd (el rd // PB sardel + ga) rd (e rd // PB garde + ve) rd (eKK rd + hå) rd // PB silent rd - hård + hå) rd (e : // PB hårde + y) rd (e_ rd // PB myrde, byrde + o) rd (el++ rd + o) rd (en++ rd // PB exception - pronounce d in 'orden, ordentlig' + o) rd (rin d + e) r (e_N // PB hellere + dia) re r'e // PB diare + diar) re r'e +transpo) r (t //PB transport + +// PB words ending with -ri in da_list have a stressed "i" +// The stress is kept in compounds where a word is added after the word. +// If a word is added before the word, it reverts to normal stress + &) ri (_$p_alt R'i // maleri + +.group s + + s s + ss s +// PB/JD s suffix - $alt words in da_list +// 2-3.000 words end with s, so this cannot be a general suffix. +// There would be too many exceptions. + &) s (_TS1 s + + græ) s s // PB keep the s for the æ rule + slå) s s // PB keep the s for the å rule - slås + nervø) s s // PB keep the s for the ø rule +generø) s s // PB keep the s for the ø rule + lø) s s // PB keep the s for the el rule - mageløs + en) s s // PB keep the s for the e rule - rense + ti) s s // PB keep the s for the i rule - laryngitis + ti) ss s // PB only one s - tisser + lo) s s // PB keep the s for the o rule - kolos + afte) s s // PB keep the s for the f rule - aftes + tav) s s // PB keep the s for the a rule - tavss + trod) s s // PB keep the s for the ds rule - trods + god) s s // PB keep the s for the o rule - goods + klod) s s // PB keep the s for the o rule - klods +provin) s s // PB keep the s for the o rule - provins - stressed i +strabad) s s // PB not a suffix + jere) s s // PB not a suffix + vore) s s // PB not a suffix + palad) s s // PB not a suffix + cypre) s s // PB not a suffix + abce) s s // PB not a suffix + rece) s s // PB not a suffix + proce) s s // PB not a suffix + exce) s s // PB not a suffix + kommi) s (_ = // PB not a suffix, silent s, stressed i + kommi) s (e // PB not a suffix, silens s - kommissen + ky) s s // PB not a suffix +anderlede) s s // PB not a suffix +interferen) s s // PB not a suffix + tilpa) s s + + s (p s + s (C s + s (A s + s (ie s + si (on S // PB changed from "s (ion S" - division + s (j s + sch S // PB changed from [s(ch] - gullasch + schweiz svajts + al) s (ace 's // PB Alsace (French region) + _) sion si:Vn // PB Sion, Sions kirke + shine sjajn@ // PB + saloon sal'u:n // PB + skyline skajlajn // PB + slimline slemlajn // PB + support sOp'Vrd // PB + sheik Sajk // PB + sicilien sis'ili@n // PB - Italian island + speak spi:k // PB eSpeak + siegfried _^_DE // PB + slovakiet slov&k'i@D // PB + show So:u // PB + er_) sig (_til saj // PB avoid [si] - glæder sig [saj] til + et_) sig (_til saj // PB avoid [si] - glædet sig [saj] til + e_) sig (_til saj // PB avoid [si] - glæde sig [saj] til + er_) sig (_ saj // PB avoid [si] - vænner sig - test! + et_) sig (_ saj // PB avoid [si] vænnet sig - test! + e_) sig (_ saj // PB avoid [si] vænne sig - test! + _af_) sig (_ saj // PB avoid [si] af sig selv + _han_) sig (_ saj // PB avoid [si] sluttede han sig til + dt_) sig (_ saj // PB holdt sig fra + sat_) sig (_ saj // PB sat sig op mod + _) sig (_selv saj // PB noget for sig selv + for_) sig (_ saj // PB se noget for sig + s) s + er_) så (_ sV // PB du virker så bekendt + _) så (_fik_ sV // PB så fik du en idé + r_) så (_bange sV // PB jeg er/var så bange + blev_) så (_ sV // PB det blev så slemt + _) så (_havde_ sV // PB + _) så (_kan_ sV // PB + _) så (_går_ sV // PB +kompromi) s ' // PB stress added + succe) s ' + shirt S3:t // PB T-shirt + +.group t + t t + tt t + _) t (_shirt ti: // PB T-shirt + p) t t // PB toptitel + s) t d // PB stor + A) t (er d // PB Peter, efter, alter + A) t (ere t // PB invitere + A) t (eri t // PB materiel + ve) t (er t // PB veteran + teress tr@s // PB interessant + er) t d // PB kuffert + r) t (e t // PB abortering + r) t (i t // PP hertil + re) t (+ t // ret + re) tt (+ t // PB rette + emen) t + poin) t + cemen) t t + demen) t t // PB dement +elemen) t t +glemen) t + &) tN d // PB changed from [t] +// A) t (_ t: + emen) t (al t +glemen) t (al t + poin) t (e t + lemen) t (er t + i) t (et t // PB words with 'itet' - vulgaritet, perversitet + th th + i) t (i t // PB politi + e) t (_ d // PB udvisket + le) t (+ t // PB let + le) tt t // PB slette + lek) t (i S + ak) t (ie S // PB aktie + t (ie t + ti (on+ S // bastion, station +nødsitua) t (ion S // PB nødsituation - stress on first syllable + t (iøs+ sj' + tredivtedel tr&fd@del // PB + tredvtedel tr&fd@del // PB + trenchcoat tr'EnSk,oud // PB +// PB final -tis - stress on previous syllable +appendici) t (is =t +bronki) t (is =t +celluli) t (is =t +difteri) t (is =t + eran) t (is =t +gastri) t (is =t +hepati) t (is =t +laryngi) t (is =t +meningi) t (is =t + pas) tis t'is + raki) t (is =t +// PB words with unstressed initial "til" + til (freds tel' + til (bage tel' + til (forn tel' + til (fældig tel' + til (fælles tel' + til (godehavende tel' + til (godese + til (godeseddel tel' + til (godeskrive tel' + til (grundliggende tel' + til (gængelig tel' + til (intetgøre tel' + til (intetgørelse tel' + til (kendegive tel' + til (kendegivelse tel' + til (ladelig tel' + til (lige tel' + til (ligemed tel' + til (lykke tel' + til (overs tel' + til (pas tel' + til (rettelægge tel' + til (rettevise tel' + til (rettevisning tel' + til (sammen tel' + til (skadekommen tel' + til (skadekommet tel' + til (skadekomst + til (stedekomst tel' + til (stedelig tel' + til (stedevær tel' + til (stedeværelse tel' + til (stedeværende tel' + til (strækkelig tel' + til (synekomst tel' + til (syneladende tel' + +.group u + u u + +// PB remove u in order to make the -ig rule (group i) work with u + -ig list words +// e.g. u+erværdig [uErv'Erdi] will keep its stress on the next to last syllable. + _) u (A@@+P1 'u + _) u (C@@+P1 u' +// PB exceptions - u isn't a prefix + _) u (nd+ O // underfuld, undtage + u (gle+ u // ugle + u (hyre+ u + u (enig+ u' + u (niform+ u + u (ng+ 0 + u (ge++ u // ugerne + u (r++ u // ur, urrem, uret + _) u (ds+ u // udsætte + +// PB stressed -ure - $alt words (French) in da_list pronounced [y:V] + &) ure (++$p_alt 'y:V // frisure + &out) ure ($p_alt 'y:r // couture - without [V] because fashion people talk like that + +// PB -ure without stress after a syllable + @) bord) ure y:V + @) broch) ure y:V + @) embouch) ure y:V + @) miniat) ure y:V + @) fris) ure y:V + @) frit) ure y:V + @) garnit) ure y:V + @) grav) ure y:V + @) cout) ure y:r + @) kannel) ure y:V + @) konfekt) ure y:V + @) konfit) ure y:V + @) lekt) ure y:V + @) manic) ure y:V + @) miniat) ure y:V + @) mixt) ure jV + @) ouvert) ure y:V + @) pedic) ure y:V + @) proced) ure y:V + @) sinec) ure y:V + @) tourn) ure y:V + +// PB final -tur in da_list - stressed u + &t) ur ($p_alt 'ur // struktur + + // PB most of the words with ud-: [uD] - udpege + _) ud (@@+P2 ''uD +// exceptions for ud-: [ud] + _) ud (elt+P2 ud // udelt + _) ud (at+P2 ud // udateret + _) ud (rikkelig+P2 ud + _) ud (røj+P2 ud + _) ud (uelig+P2 ud + _) ud (y+P2 ud // udyd, udygtig, udyr + _) ud (øbt+P2 ud + _) ud (ød+P2 ud // udødelig + _) ud (åd+P2 ud + + u (nK u + u (nL08 O // PB kunst + u (ng O // PB ung + u (mK O + _) usa (_ u:|es|'& // PB + _) usa's (_ u:|es|'&s // PB + s) ur (fe 3: // PB surfe, surfer + s) ur (fb 3: // PB surfbræt + u (nd O // PB underligt, undtage + l) u (f 0 // PB luft + l) u (n_ u // PB lun + l) u (ne u // PB lune + l) u (nte 0 // PB lunte + l) u (ka u // Lukas + h) u (nd u // PB hund + u (gt 0 // PB fugt + r) u (s u + r) u (st O // PB udrustning + ue (_ u: // PB due, vindue, statue + d) ue (s u: // PB vinduesstørrelse + um) u (lig 'u: // PB stressed u in 'umulig' + _kalk) u (n 'u // PB stressed u + l) ug (e u: + h) u (lt u // PB hult - adjective "et hult træ" + h) u (le u: // PB hule - adjective and noun + hond) u (ra 'u: // PB Honduras + patr) u (lj 'u // PB patrulje + _laC) u (ne 'u: // PB lagune, lakune - stressed + _komm) u (ne 'u: // PB kommune - stressed + j) u (ice u: // PB juice + k) u (nne o //PB kunne + _k) u (n_ 0 // PB kun + kl) u (ns 0 // PB + d) u (k o // PB duk + ll) u (p V // PB bryllup + br) u (gt O // PB brugt + tr) u (L02 O // PB truffet + t) u (nC 0 // PB tunnel + sn) u (L06 0 // PB snup + s) u (L06 0 // PB suppe + s) u (per u // PB + s) u (k 0 // PB suk, sukker + sk) u (f 0 // PB skuffe + sk) u (b 0 // PB skubbe + skr) u (b 0 // PB skrubbe + sl) u (pp 0 // PB sluppet + v) u (g 0 // PB vugge + f) u (L06 0 // PB fup + h) u (l 0 // PB hul - noun + h) u (L11L11 O // PB hugge + dr) u (k O // PM fordrukken + f) u (n+ 0 // PB funktion, karpunkel + p) u (k 0 // PB pukle + _r) u (b_ O // PB rub + n) u (l 0 // PB nul + _r) u (bbe O // PB rubbe, rubbet + k) u (ffert O + b) u (k O // PB buk + g) ui (de ai + g) u (st O + g) ulv Ol // PB gulv - silent v + l) u (k 0 + L09) u (k 0 // PB O? changed to 0 - smukkere + L09) u (f O // PB fornuft + L06) u (nkt 0 // PB punkt + val) u (ta 'u // PB stressed + r) u u + r) u (m O + s) u (cc y + b) u (dget y + b) u (reau y +// fris) u (r y +// frit) u (r y + men) u y +proced) u (re y +proven) u y + nat) u (rel y // PB naturel + s) u (rrel Y // PB surreel + s) u (rrea y // PB surrrealistisk + g) ui (tar i // PB guitar + resso) u (rs 'u + comp) u (ter ju + res) u (rs 'u // PB resurse (ressource) + g) ueri (lla ER'e // PB guerilla + b) u (nker 0 // PB bunker - minor problem: golf expression: [BVnkV] + br) u (x y // PB Bruxelles + united jun'ajted + +.group v + v v + vv v + o) v (A // PB love - handled by group o + L09o) v (A v // OV nova renovation + pro) v (ence v // PB Provence in France +// A) v (K w + i) v (l u // PB tvivl + _) von (_ fVn // PB von in German names +// a) v (l u + a) v (n w // PB [u] changed to [w:] navn, navnebroder + le) v (et // PB blevet, levet + la) v (A // PB no v - laver + sla) v (+ v // PB Jugoslavien + la) v (ement @ // PB lavement + ve (lse v3 // PB øvelse, stavelse, fornøjelse + &A) v v + &r) v v + al) v (e v // PB halve + el) v (C +// el) v (A + il) v (A v + ur) v v + hal) v + ble) v // PB silent v - blev + voliere vVli'E:r // PB + +.group w + + w w + w (att v // PB watt + w (olfram v // PB wolfram + w (ienerschnitzel v // PB wienerschnitzel + w (eltschmerz v // PB weltschmerz + w (eltervægt v // PB weltervægt + w (hist v // PB whist + w (aders v // PP waders + w (adi v // PB wadi + w (alis v // PP walisisk + w (assermannprøve v // PB wassermannprøve + weekend wi:gEnd // PB + +.group x + + x gs + + _) x s + + n) x s + +.group y + + y y + + r) y Y + r) yg (_ @k // PB ryg + r) yg (C '@k, // PB rygrad + r) y (s W // PB ryste + kr) y (st Y // PB kryster + r) y (gt '@ // PB rygte + r) yg (g '@ // PB ryggen - remove one "g" + br) y (ll @ // PB bryllup + dr) y (p @ // PB dryp + l) y (gt+ W? // PB lygte, flygte + l) y (k W // PB ulykke + lib) y i // // PB Libyen + l) y (st @ // PB problem with lyst = blond, light coloured + fl) y y (+ // PB flystøtte +// till) y (kke 'W // tillykke - stressed y + L08) y (t W // PB spyt, skyts + sk) y (ti y // PB Skytien, skytisk + sk) y (ter y // PB skyter + st) y (k W // PB stykke + s) y (n_ y // PB syn, fjernsyn + s) y (ne y // PB fjernsynet + sl) y (n W // PB slyngel +// r) y (CK Y + r) y (k+ W // PB ryk + f) y (rre W // PB fyrre + f) yrre (t Y:V // PB fyrretræ + n) y (t Y // PB nyt + n) y (tt W // PB nytte, benytte + n) y (k W: // PB nyk + kn) y (t W: // PB tilknytte + k) y (s W // PB kys + k) yss Ws // PB kysse + k) y (se y: // PB kyse + y (nK W // PB changed from Y to W - synge, ynde + s) y (nsk y // PB + s) y (nl y // PB synlig + s) y (nkr y // PB synkron + s) y (nkroc W // PB synkrocyklotron + y (ng+ W // PB syng, yngre + l) y (n y // PB lyn + pl) y (n W // PB plyndre + fl) y (t W // PB flyt + whisk) y i // PB whisky + y (onn j // PB bayonne, mayonnaise + y (mK Y + k) y (mK W // PB bekymring + d) y (L11 W // PB dygtig + yacht jagd // PB lystyacht + d) y (_ i + b) y (A y + n) y (A y + +.group z + + z s + zz s + pi) zz (a ts // PB + +.group æ + + æ E + +// PB nouns ending with -ær in da_list - stressed last syllable + &) ær ($p_alt 'Er // elementær + + æ (CK E + r) æ (d &# // PB forræder + æ (bK E // PB dræb, slæb + æ (bt &# // PB dræbt + sl) æ (L06 E // PB slæbt + kr) æ (f &# // PB kræfter + kr) æ (m &# // PB skræmme, kræmmer + r) æ (n &# // PB changed from [Aj] - rænke + r) æ (k &# // PB række + pr) æ (k E // PB præke + bl) ære EV // PB blærerøv + gr) æ (ken E // Grækenland + skr) æ (dd a // PB skrædder + br) æ (dd a // PB brædder + pr) æ (st & // PB præst + tr) æ (t & // PB træt + tr) æ (f &# // PB træffe + gr) æ (n & // PB grænse + gr) æ (s & // PB græs + f) æ (re 'E: // PB affære, atmosfære, sfære + gev) æ (r 'E // PB gevær + besv) æ (r 'E // PB besvær + afh) æ (ngig 'E: // PB stressed e + _pal) æ 'E // PB stressed + t) æge E:j@ // PB tæge + pr) æ (ge E: + ærg E:ru@ // PB sværge + ærger E:ruV // PB sværger + ævl Eul // PB +majest) æ (t 'E // PB stressed æ + +.group ø +// røveren [V] faldt på røven [W#] og skød [W] en møgkælling [Vj] + ø W + ø (de W: //PB øde + ø (dd W // PB fødder, rødder + ff) ø (r 'W // PB stressed in 'chauffør' + obsk) ø (n 'W: // PB stressed + g) ø (r '@: + h) ø (j V + ø (je W# // PB øje + øre W:V // PB VERY BROAD - snørebånd + øjer W#jV // PB bøjer + ø (jn W# // PB øjne + l) øg (n 'Vj + l) ø (s W + C) ø (j W# // PB søjle, bøjle + L09) ø (g V // PB m => L09 (m + n) - møg + _n) ø (d@ 'W: // PB nød- stressed - nødsituation + _n) ødt (_ Wd // PB nødt + r) ø (+ '@ // brød + r) ø (L09 W# // PB grøn, rømme, strømme + dr) ø (n @ // PB drøn + r) ø (mer W: // PB strømere + s) ø_ W: + L08) ø (g W // PB skøge + s) ø (g W // PB søgte + sp) ør (g W:r // PB spørge + r) ø (g W# // PB røg + for) øg (_ W:? // PB forøg + pr) ø (v W // PB prøve + ø (re_ W: // PB køre + r) ø (ver W# // PB røver + r) ø (v W# // PB røv + k) ø (d W // PB skød, kød + _) øg (_ Wj // PB 'øg' noun and verb + d) øg (n Vj + øj+ V:j // PB changet from [Oj] + velg) ø (renhed '@ // PB stressed ø + im) ø (dekom 'W: // PB imødekomme + +.group øs +//PB (mostley French -eux/-euse) adjectives ending with -øs in da_list - stressed ø + &) øs ($p_alt 'W:s // dubiøs + +.group ør +//PB (mostley French -eur) nouns ending with -ør - stressed ø - around 150 words + &) ør ($p_alt 'Wr // hønnør, frisør + +.group å + å O // PB changed from O:? +// å (CK o: + å (d+ O: // PB råd + r) å (dg V // PB rådgive + ård O:? // PB gårdmand, bondegård - silent d + p) å (ske O // PB påske + s) å O // PB så + s) å (_snart V // PB + s) å (_få V // PB + alts) å V // PN altså + hvorn) år 'O? // PB hvornår - stressed + h) år V:? // PB hår, hård + bl) å (@ V // PB blåbær, blågrå + å (nd V // PB hånd, ånd, bånd + l) å (r V + p) å (s V // PB påstand + sl) å (s V // PB slås + sm) å (C V // PB småkarge, småfolk + s) å (d V // PB sådan + s) å (t V // PB undersåt + stj) å V // PB stjålet + L08r) å (t V // PB skråt + m) å (t V // PB måtte + _p) å V // PB påmontere + _p) åse Vse // PB påse + r) å (t V // PB gråt + r) å (bt V // PB råbte + +.group + $ dVlV // PB changed from [dVlar] + ñ _^_ES // PB mañana + ï i: // PB Thaïs + 'er (_ %V // PB 60'er + 'erne (_ %Vn@ // PB 60'erne diff --git a/dictsource/de_list b/dictsource/de_list index 6619a90f..1f429c0b 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -140,7 +140,7 @@ _0Co 'hUnd3tst@ // Abbreviations //============== -a.a.o A:||A:||_o: +(a . a . o .) A:||A:||_o: allg 'alg@maIn abb 'abb,IldUN anm 'anm,E*kUN @@ -163,7 +163,7 @@ st 'Este: usf %Untzo:f'O*t usw %Untzo:v'aIt3 $pause vgl fE*gl'aIC@ -z.b tsUmb'aISpi:l +(z . b .) tsUmb'aISpi:l // definite article diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index b4bcc8d6..a752f060 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -62,7 +62,7 @@ W# y Y * - : ? b d D dZ f g h j k l L l/2 l/3 m n N p r R s -S t T tS v w z +S t T tS v w Dictionary hu_dict @@ -152,9 +152,9 @@ s2 t v w Z Dictionary fr_dict -@ @- @2 a A A~ e E -E2 E: E~ i i- i: o o2 -o3 O~ u u: w w^i W~ y +@ @- a A~ e E E2 E: +E~ i i: o O o2 o3 O~ +u u: w W w^a w^i W~ y Y : b d dZ f g h j @@ -204,8 +204,8 @@ th. v w x z Dictionary ta_dict a a: aI aU e E e: i -I i: o o: U u u: V -V# +I i: o o: U u u: U: +V V# : ; b C d d. dZ f g h H j k l l. m @@ -238,15 +238,16 @@ w x z Dictionary is_dict -& @- a aI aU e E eI -i I o O oU oU2 u W -y y# Yy +@- a a: aI aI: aU aU: E +E: eI eI: i I i: I: O +O: OI oU oU: u u: W W: +y y: yI Yy Yy: * ** : ; b c C d D f g h j J k l l# m m# n N n# N# n^ n^# p Q r R r# R2 s -s2 t T tl# v x z +S s2 t T tl# v x z Dictionary it_dict @@ -463,6 +464,17 @@ p Q R s S t T tS v w x z +Dictionary sl_dict + +& @ a E e i O o +u y + +: b d dZ dz f g h +j k l l^ m n N n^ +p R R^ s S t tS ts +v w x z Z + + Dictionary tr_dict a e E i I o O u @@ -483,8 +495,8 @@ u@ uI y y@ yI b c d D f g h j J k kh l m n N n^ -p Q r s s. s; t t[ -tS; v w x z Z z. +p Q r s s. t t[ tS; +v w x z Z z. Dictionary zh_dict @@ -593,3 +605,13 @@ J Jh k kh l m n N p ph Q q R r. s S s. t T t. th th. v x z Z z. + + +Dictionary bg_dict + +@ a e i o u + +; b C d d; dZ dz f +g j k l L l^ m n +n^ p r s S s; t t; +tS ts v x z Z z; diff --git a/dictsource/en_list b/dictsource/en_list index 497cea8c..3d8107d9 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -9,7 +9,6 @@ //stress symbols ' primary , secondary % unstressed // Conditional rules -// ?2 Use long 'a' in 'bath' // ?3 General American // ?!3 Not General American // ?5 split [3:] er [3:], ir [IR], ur [VR] @@ -385,6 +384,7 @@ VI $abbrev wwii dVb@Lju:dVb@Lju:t'u: xxx $abbrev // not roman 30 xy $abbrev +yd jA@d nd $only @@ -601,7 +601,7 @@ argue A@gju: aries e@ri:z arithmetic a2rITm@tIk arise a2raIz -arisen a2rIz@n +arisen @rIz@n armslength ,A@mzl'ENT arouse a2raUz asbestos asb'Est@s @@ -1020,6 +1020,7 @@ el ,El electricity I2lEktr'IsI2tI electrode I2lEktroUd electron I2lEktr0n +electrocute $2 elicit I2lIsI2t eligible ElI2dZ@b@L élite Il'i:t @@ -2666,6 +2667,7 @@ Leanne li:'an Lenore lEn'o@ Leroy li:rOI Liam li:@m +Llewellyn L@w'ElIn Lois loUIs Louis lu:I Louise lu:w'i:z @@ -2898,6 +2900,8 @@ are %A@ $pastf $only was %w0z $pastf $only ?3 was %wVz $pastf $only ?3 wasn't wVznt $pastf $only +(was a) w%0za2 +(was the) w%0zD@2 wast %w0st $only $pastf $only were %w3: $pastf $only isn't ,Iz@nt $pastf $strend2 @@ -3119,7 +3123,7 @@ soon $verbf still $verbf already O:lrEdI $u2 $verbf $strend2 -not ,n0t $verbextend $only $strend +not ,n0t $verbextend $onlys $strend (not have) n0ta2v $pastf $u1 (not have) n0thav $pastf $atend (not have to) ,n0thavt@5 $pastf $strend diff --git a/dictsource/en_rules b/dictsource/en_rules index 24c1ce6d..9616e6d8 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -21,7 +21,6 @@ // This file is UTF-8 encoded // Conditional rules -// ?2 Use long 'a' in 'bath' // ?3 General American // ?!3 Not General American // ?5 split [3:] er [3:], ir [IR], ur [VR] @@ -661,14 +660,14 @@ .group an @) ana (_ 'A:n@ -?2 C) an (c aan + C) an (c aan c) an (c an f) an (c an n) an (c an p) an (c an -?2 @m) an (d aan -?2 sl) an (d aan -?2 C) an (t aan + @m) an (d aan + sl) an (d aan + C) an (t aan an (ath a2n ann (eal a2n ann (ih a2n @@ -704,8 +703,8 @@ &) an (ce_ @n ?8 &) an (ce_ a2n fin) an (c 'an -?2 h) an (ce_ aan -?2 z) an (ce_ aan + h) an (ce_ aan + z) an (ce_ aan &) an (cy @n adv) an (c an _) an (cie eIn @@ -1416,7 +1415,7 @@ _) confi (den k0nfI _) co (nfis k0 _) co (nflu k0 - _) co (ngress k0 + _) co (ngre k0 congru k0ngru: _) co (ni k0 _) co (njug k0 @@ -1944,6 +1943,7 @@ .group el _) el (A %Il _) ele (ctro %Il,E + _) ele (ctrol %IlE _) ele (ctron ElE _) ele (g ElI _) elem ElIm @@ -2579,6 +2579,8 @@ ent) i (ce aI @) i (ce_ I2 @) i (ced_ I2 + off) ice I2s + serv) ice I2s @) i (cence I _) ich Ik &) i (ciCe_ =I @@ -3035,6 +3037,7 @@ ?7 io (_ =i:oU b) io aIoU b) io (logy aI0 + card) io I2oU v) io aI0 io (li_ I2'oU &) ion (_ =i@n @@ -3894,6 +3897,7 @@ w) orce (st U &f) or (d_ 3 ore o@ + or (esis O@ oresc @r'Es ora (cl 0r@ or (eB_ 0r @@ -4301,6 +4305,7 @@ _) pre (mi prE _) pre (miu pri: _) pre (mol pr%i: + _) pre (nK prE _) pre (p_ prE _) pre (posi prE _) pre (qu pri: @@ -4607,6 +4612,7 @@ pri) s (o z @) some (_S4 sVm o) some (_S4 soUm + cro) ss (h s ssion S@n ssion (_ =S@n ?8 ssion (_ =SVn @@ -5249,6 +5255,7 @@ E (BCe_ @ E (Cia 'i: Ea (_ =i@ + Ea (n_ 'i@ @@) Ed (_S2vei d &C) Ed (_S2vei d &c) Ed (_S2vei t diff --git a/dictsource/fr_list b/dictsource/fr_list index 43cd763e..d5500e04 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -1,6 +1,6 @@ / // *************************************************************************** -// * Copyright (C) 2005 to 2007 by Jonathan Duddington * +// * Copyright (C) 2005 to 2010 by Jonathan Duddington * // * email: jonsd@users.sourceforge.net * // * * // * This program is free software; you can redistribute it and/or modify * @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2010-04-01 Michel Such +// Updated 2010-05-18 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -119,9 +119,9 @@ _. _|pw%E~ _/ bar||oblik _: d'Y||pw'E~ _; pwE~||virg'yl -_< E~feri-Yr +_< E~feriWr _= egal -_> syperi-Yr +_> syperiWr _? pwE~||dE~tE2rogasj'O~ _! pwE~||dEksklamasj'O~ _[ uvr@-_kroSE2 @@ -145,11 +145,11 @@ _§ sEksj'O~ @ _::arobaz % pursA~ $max3 & e $u $brk -_& _e_komErsi-'al +_& _e_komErsi'al * asterisk: $max3 + plys $max3 ~ tilde -€ @ro +€ @r'o ¢ sEnt ¥ iEn £ livr @@ -158,17 +158,17 @@ _& _e_komErsi-'al ÷ diviz'e_p'ar ¼ W~_k'ar ½ W~_d@m'i -¾ trwa_k'ar +¾ trw^a_k'ar © _^_EN ® mark||depoz'e // numeric -_0 zero $u+ +_0 zero2 $u+ _1 W~ -_2 dYz2 -_3 trwaz2 +_2 d@z2 +_3 trw^az2 _4 katr _5 sE~k _6 siz3 @@ -182,13 +182,13 @@ _13 trEz _14 katorz _15 kE~z _16 sEz -_17 dis:Et +_17 disEt _18 dizw^it3 _19 diznYf -_20 vE~ +_20 vE~t2 _21 vE~te:W~ _22 vE~tdYz2 -_23 vE~t:trwaz2 +_23 vE~t:trw^az2 _24 vE~tkatr _25 vE~tsE~k _26 vE~tsiz3 @@ -201,9 +201,9 @@ _4X karA~t _41 karA~te:W~ _5X sE~kA~t _51 sE~kA~te:W~ -_6X swasA~t: -_61 swasA~te:W~ -_71 swasA~te:O~z +_6X sw^asA~t +_61 sw^asA~te:W~ +_71 sw^asA~te:O~z _8X katr@vE~: _80 katr@vE~z2 _0C sA~ @@ -221,12 +221,12 @@ _dpt virgyl ?2 _9X nonA~t ?2 _91 nonA~te:W~ -(21 ème) vE~te:yni-Em -(31 ème) trA~te:yni-Em -(41 ème) karA~te:yni-Em -(51 ème) sE~kA~te:yni-Em -(61 ème) swasA~te:yni-Em -(81 ème) katr@vE~:yni-Em +(21 ème) vE~te:yniEm +(31 ème) trA~te:yniEm +(41 ème) karA~te:yniEm +(51 ème) sE~kA~te:yniEm +(61 ème) sw^asA~te:yniEm +(81 ème) katr@vE~:yniEm // ABBREVIATIONS //************** @@ -240,6 +240,7 @@ alt _::alt amd aEmde aol aoEl api apei +ascii aski avg $abbrev avh aveaS bay _^_en @@ -256,6 +257,7 @@ dept depart@mA~ divx diviks ebay _^_en (e bay) ebay $text +ebcdic @besedik edf @deEf eml @EmEl etc E2tsetera @@ -287,7 +289,7 @@ mm millimètre $text mme madame $text mn minyt mns minytz2 -(mp 3) _|Empetrwa +(mp 3) _|Empetrw^a mr m@siY nsi $abbrev nsis $abbrev @@ -309,6 +311,7 @@ riaa $abbrev riscos riskoEs sap $abbrev scsi $abbrev +solaris solaris sos $abbrev s.t.p silt@:pl'E2 s.v.p silvu:pl'E2 @@ -341,7 +344,8 @@ pr professeur $text *dot $capital // articles le $nounf $u+ le $verb $verbextend $u -el $u +el $u+ +los los $u+ la $nounf $u+ la $verb $verbextend $u les lez2 $nounf $u+ @@ -355,7 +359,7 @@ mais $u+ ou u $u $brk eh $u $brk en $u -et e $u $brk +et _|e $u ni $u car $u car $noun @@ -369,7 +373,9 @@ ainsi $u+ alors alor $u+ aussi $u+ encore $u+ +enfin $u+ depuis $u+ +lors $u+ certes $u+ @@ -471,7 +477,7 @@ vers vEr $u+ vers $noun en $u+ en $u+ $verb $verbextend -(en suspens) A~||sysp'A~ +suspense syspEns (en tous) A~||tuz2 $u+ par $u+ parmi $u+ @@ -483,6 +489,7 @@ entre $u+ entre $verb contre $u+ chaque $u+ +chez $u+ plusieurs $u+ durant $u+ avec $u+ $brk @@ -504,6 +511,7 @@ point $noun plus $u+ guère $u+ jamais $u+ +toujours $u+ non nO~ $u+ oui _|wi $u+ @@ -574,8 +582,11 @@ quelques kElk=@z2 $u+ tel $u+ telle $u+ telles $u+ -tout t'ut2 -rien ri-'E~n2 +tout t'ut2 $u+ +tous $u+ +toute t'ut $u+ +toutes t'utz2 $u+ +rien ri'E~n2 $u+ // Letters which can be words //=========================== @@ -614,8 +625,6 @@ tunis tynis (1 èrement) pr@mjErmA~ -monsieur m@sjY -messieurs mesjYz2 (n'est ce pas) n'Es||p'az2 (qu'est ce que) kEsk@ $u absent absA~ @@ -634,7 +643,7 @@ any Eni $u armageddon armagedO~ auvent ovA~ beta beta -bien bi-E~n2 +bien biE~n2 bis bis bissus bisys blues _^_en @@ -657,24 +666,27 @@ dernier dErnjer2 doppler doplEr éloquent elokA~t2 enfer A~fEr +fahrenheit far@najt faut fot2 $u+ fier fjer $verb +for $u+ francis frA~sis fred frEd free fri: fuel fjul gangster gA~gstEr gars ga +genesis Zenezis georges ZorZ gilles Zil gin dZin -granit granitt $text gulf gYlf gus gys gym Zim hélas elas $u+ jacques Zak karaoke karaoke +kevin kevin laser lazEr listbox listboks louis lwi @@ -686,30 +698,34 @@ mars mars mas mas mat mat merguez mErgEz -mieux mi-Y $u+ +messieurs mesjYz2 +mieux miY $u+ +monsieur m@sjY mrs _^_en +oasis oazis ours urs pataquès patakEs -peter pi:tYr +patchwork patSwWrk +peter pi:tWr phallus falys polder poldEr premier pr@mjer2 program _^_en -(program files) program||fajlz +(program files) programfajlz query kueri queries kueri quid kwid $u+ -quit _^_en -recorder rikordYr +quit kwit +recorder rikOrdWr requiem rekw^ijEm -revolver revolvEr +revolver revOlvEr sas sas scan skan scanner skaner2 $verb -scanner skanYr $noun -scanners skanYr +scanner skanWr $noun +scanners skanWr shampoing SA~pwE~ -sir _^_EN +sir sWr souris suri stocker stoker2 sus sys @@ -719,7 +735,8 @@ tuttiquanti tutikw'anti vaut $u+ vaux $u+ vénus venys -vot vot +vot vOt +writer raitWr yves iv @@ -766,9 +783,9 @@ stewart sti:wart // urt (t is said) kurt kurt -yaourt _|i-aurt -yoghourt _|i-ogurt -yogourt _|i-ogurt +yaourt _|iaurt +yoghourt _|iogurt +yogourt _|iogurt // ort (t said) short Sort @@ -793,7 +810,7 @@ smart smart about _^_en acer asEr and _^_en -amazon amaz'on +amazon amaz'On apple _^_en at at $u+ (audible manager) od,ibl||manadZ'Yr @@ -807,24 +824,23 @@ edit _^_en emacs E2maks emacspeak E2makspi:k end _^_en -epson E2pson espeak @spi:k ethernet etErnEt exit egzit (file zilla) f,ajl||zij'a -from from $u +from frOm $u get _^_en -google gug=Yl -gnome gnom +google gug=Wl +gnome gnOm gnu $abbrev -hamburger _|A~b@rgYr +hamburger _|A~b@rgWr help _^_en hot _^_en in in $u+ inside _^_en internet E~tErn'Et -(internet explorer) E~tErn'Et||E2ksplor'Yr -klaxon klakson +(internet explorer) E~tErn'Et||E2ksplor'Wr +klaxon klaksOn let _^_en lite _^_en login _^_en @@ -832,14 +848,14 @@ logon _^_en (mac os x) makoEsiks made _^_en media medja -messenger mE2sEnZYr +messenger mE2sEnZWr my maj $u+ nat nat not _^_en null _^_en ok oke $u+ -open op'Yn -(open source) op,Yn||s'urs +open op'Wn +(open source) op,Wn||s'urs outlook autlu:k paint _^_en paper _^_en @@ -847,7 +863,6 @@ people _^_en redhat rEdat same _^_en sametime _^_en -schubert SubEr sun _^_en (text aloud) tEkst||@la=wd ubuntu ubuntu @@ -861,7 +876,7 @@ constations kO~statjO~z2 contentions kO~tA~tjO~z2 dations datjO~z2 désertions dezErtjO~z2 $verb -exploitions EksplwatjO~z2 +exploitions Eksplw^atjO~z2 heurtions hYrtjO~z2 partions partjO~z2 rations ratjO~z2 $verb @@ -898,6 +913,7 @@ kenya kenja laos laos lesotho lezoto liechtenstein liStYnStajn +angeles A~nZelEs malawi malawi mayotte majot montréal mO~real @@ -915,7 +931,7 @@ texas tE2ks'as tuvalu tuvalu vanuatu vanuatu venezuela venezyela -(viêt nam) vi-Etnam +(viêt nam) viEtnam wallis walis futuna futuna zimbabwe zimbabwe diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 21382cab..6b0bac24 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -1,7 +1,7 @@ // French translation rules for Espeak // *************************************************************************** -// * Copyright (C) 2005 to 2007 by Jonathan Duddington * +// * Copyright (C) 2005 to 2010 by Jonathan Duddington * // * email: jonsd@users.sourceforge.net * // * * // * This program is free software; you can redistribute it and/or modify * @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2010-04-01 Michel Such +// Updated: 2010-05-18 Michel Such // // Letter classes: @@ -48,8 +48,8 @@ .group a ae (_ e // reggae vitae aen A~ // caen (diff Cicero: aA~) - ae ae // maestro - aim (K W~ // faim + ae aE // maestro + aim (K E~ // faim ain (K E~ // pain Ct) ain (_ E~n2 // certain ami ch) ain (_ E~n2 // prochain arret @@ -61,9 +61,7 @@ ait (_ E2t2 // dirait ferait... aient (_ E2t2 // diraient feraient... f) ai (sA @ // faisons faisan - a (ill a - a (ils_ a - a (il_ a + a (ilK a aie (me E2 // paiement ai E // aile ai (L06 E // aile @@ -86,12 +84,13 @@ a (nnA a // manne an (K A~ // ancien, élan + an (h an @@m) an (_ an // tennisman zm) an (_ an // jazzman L02m) an (_ an lism) an (_ A~ // talisman ulm) an (_ A~ // musulman - ïm) an (_ A~ // caïman + _caïm) an (_ A~ // caïman _C) aon (_ A~ // faon, paon, taon s) aoul (_ u // saoul s) aou (le u // saoule @@ -104,12 +103,12 @@ au (re_ o // dinosaure _) audio (@P5 o2dio _) auto (@P4 o2to - _) autom (n o2to + _) autom (n otO bb) aye (X ei // abbaye ay (C E // aymé ay Ej // paye ay (_ E2 // display - Xl) ayer (X E2jYr // player, layer + Xl) ayer (X E2jWr // player, layer w) an (_ an a a // bateau @@ -144,6 +143,7 @@ a) ch (_ k // almanach ar) c (ti // arctique e) ch (_ k // varech + ni) ch (_ k _A) ch (o_ k // écho mani) ch (é k // manichéisme wi) ch tS // sandwich @@ -155,7 +155,6 @@ _) ch (orA k // chorale _) ch (oriz S _) ch (oro S - te) ch (_ k ch (r k // chrétien _) chrono (@P6 krono ch (l k @@ -166,7 +165,7 @@ ck k // nickel cqu k // grecque cq k // pecq - s) c (Y // + s) c (Y x) c (Y c (Y s // cède _) cyber (P5 sibEr @@ -181,8 +180,8 @@ c k // recoin donc cient (_ sit2 // ils appr�ient, remercient. - effi) cien (t sjA~ // coefficient - défi) cien (t sjA~ // déficient + effi) cient sjA~ // coefficient + défi) cient sjA~ // déficient cast (_S4 kast // podcast casts (_S5 kast // podcasts _) clown klun @@ -202,6 +201,7 @@ _) ç' (P2v s .group d dd d // addition _) d' (P2 d + _ban) d (_ d _lan) d (_ d // land _stan) d (_ d // stand an) d (_ @@ -210,6 +210,7 @@ _) ç' (P2v s _gran) d (_ t2 // grand ami, grand marchand Cen) d (_ t2 Con) d (_ + con) d (_ t2 quen) d (_ t2 r) d (_ _har) d (_ d @@ -237,7 +238,7 @@ _) ç' (P2v s // Define use of the final 'e' in french e (_ - _C) e (_ @2 // je te + _C) e (_ @ // je te -c) e (_ -j) e (_ C) e (- @@ -259,7 +260,7 @@ _) ç' (P2v s pl) ein (_ E~n2 // plein emploi e (il E // vieille ei E // neige - eoi wa // asseoir + eoi w^a // asseoir ell El // selle el (K El // celsius, caramel _f) em (me a // femme @@ -551,6 +552,7 @@ L06ch) e (CA @ @ch) e (CrA @L06ch) e (CrA @ @L06C) e (CrA @ +@L06C) e (rrA E @CL06) e (CrA @ %C) e (CrA++ e (rr+++ E @@ -559,9 +561,9 @@ L06ch) e (CA @ _) e (CA e _) e (xC++ E2 Cr) eam i:m - Cr) eamer i:mYr - Cl) eaner i:nYr - vert) e (rX Y + Cr) eamer i:mWr + Cl) eaner i:nWr + vert) e (rX W eïn (_ 'Ein _y) en (_ En iew) er (X er2 @@ -594,7 +596,7 @@ _m) e (ga e .group è - Z) ème i-Em + Z) ème iEm è E ès (_ E Ar) ès (_ Es @@ -629,9 +631,14 @@ p) ès (_ Es su) gg (Y gZ // suggérer suggestif gg g // agglomérer ai) gni n^ // craignions châtaignier - gn n^ // agneau + gn nj // agneau + gni n^i // signifier + gn (e_ n^ + gn (_ n^ + gn (eCA nj@- gn (ie n // compagnie dia) g (no g +_a) g (no g _quatrevin) gts (_ z2 vin) gt (_A t // liaison: vingt ans @@ -671,7 +678,6 @@ An) gt (A t // vingtaine doigté .group h _) h _| -Ca) h (_ h _) h (abi // habit, habilleur _) h (allo // hallogène _) h (ame // hameçon @@ -711,6 +717,8 @@ _) h (umb // humble _) h (umi // humide _) h (umo // humour _) hy (A j + haus (_ o2s //blockhaus + heim (_ ajm _) h (y // hypermarché _) hyper (@P5 ipEr _) hyper (_ ipEr @@ -725,30 +733,18 @@ _) half _^_en .group i i i // cri - C) i (A i- - C) i (onK j - r) i (onK i- C) i (erA i - l) i (A i - _) i (A i- -C) i (e_ i -C) i (es_ i - Cr) i (a i: - _Cr) i (A i: - Cr) i (é i: - Cr) i (er_ i: - rr) i (er_ i- C) ien (t_ i - dév) ien (t_ i- - t) ien (K_ i-E~ // tient - v) ien (K_ i-E~ // vient - at) ien (t_ i-A~ // patient - cip) ien (C i-A~ // récipient + dév) ien (t_ i + t) ien (K_ iE~ // tient + v) ien (K_ iE~ // vient + at) ien (t_ jA~ // patient + cip) ien (C jA~ // récipient cl) ien (C i:A~ // client - mol) ien (C i-A~ // émolient - vén) ien (C i-A~ // inconvénient - or) ien (t iA~ // orient, orienter - ot) ien (t_ i-A~ // quotient + mol) ien (C jA~ // émolient + vén) ien (C jA~ // inconvénient + or) ien (t jA~ // orient, orienter + ot) ien (t_ jA~ // quotient i (e_ i _) ill il // illégal @@ -779,8 +775,10 @@ C) i (es_ i in (kX iN // link in (n i // innombrable in (C E~ // vingt - in (_ W~ // vin + in (_ E~ // vin ing (_ iN + ing (s iN + ing (to iN _) infra (sP5 E~fra _) inter (@@P5 E~tEr _) interr (A E~tEr @@ -793,7 +791,7 @@ C) i (es_ i bor) is (_ is dor) is (_ is tor) is (_ is - fl) irt Yrt + fl) irt Wrt otl) i (neX aj onl) i (ne_ aj offl) i (ne_ aj @@ -814,19 +812,6 @@ C) i (es_ i ram_f) i (le _^_en -.group ï - ïn (C E~ // coïncider - ïn (_ E~ - ïs (K is // maïs, archaïsme - ï (q i // archaïque - ï (c i // laïc - a) ï (A j // aïeul - a) ï (C i // naïf - tha) ï (K j // thaï - _ha) ï (K i // haïr - ï i // ambiguïté - - .group j j Z // adjoint joujoux _) j' (P2v Z @@ -853,6 +838,7 @@ C) i (es_ i au) lt // hérault uCi) l (_ // outil, fusil nti) l (_ // gentil + nti) lh j // gentilhomme ui) ll j // juillet _) lorsqu' (P7 lorsk @@ -900,7 +886,7 @@ C) i (es_ i x_) os (_ o o (t_ o - oe (ll wa // moelleux + oe (ll w^a // moelleux oe (i Y // oeil _) oe (C Y // oesophage _ph) oe (C e // phoetus @@ -913,8 +899,8 @@ C) i (es_ i _) oi (gnon o // oignons oin (C wE~ oin (_ wE~ // coin - oi wa // poil - oê (l wa // poêle + oi w^a // poil + oê (l w^a // poêle om (C O~ // bombe om (m o // nommer om (ni om // omnibus @@ -931,6 +917,9 @@ C) i (es_ i _) on (z _|O~ // onze, onzi�me _c) on (_ O~ // no comment + gt) on (_ On // Washington + Cst) on (_ On + ps) on (_ On _C) on (_ O~n2 // mon appui, mon histoire, mon havre alc) oo (l o // alcool @@ -946,18 +935,15 @@ C) i (es_ i ou u // hibou brouillard - ou (A w -r) ou (A u - ou (iA u - ou (il u + oue (mA u // d‚vouement _) ou (at _|u // ouate où u // où oû u // coûter - oy (A waj // noyer voyelles -_b) oy (co oi- // boycott + oy (A w^aj // noyer voyelles +_b) oy (co oj // boycott _c) oy (o oi // coyote _y) o (y o - oy wa + oy w^a o (_ o // zorro allégro o (z_ o // berlioz o o @@ -966,12 +952,15 @@ _c) oy (o oi // coyote // group o: English section oa (X _^_en // approach, load + oa (_ oa + oa (s_ oa oa (CerX _^_en oach _^_en old (er_ _^_en // folder, older C) oing (_ _^_en // going oo (Ce _^_en // boomer oo (k _^_en // book, cook + oo (st _^_en // booster oo (X _^_en // pool C) oot _^_en // bootable football _) one _^_en @@ -1030,20 +1019,20 @@ C) oing (_ _^_en // going .group q q k // coq _) qu' (AP3 k - _) qua (d kwA // quadrature - _) qua (tA kwA // quaternaire + _) qua (d kwa // quadrature + _) qua (tA kwa // quaternaire _) quan (tA kwA~ // quantique _) qua (drill ka // quadriller - _a) qua kwA // aquarium + _a) qua kwa // aquarium _a) qu (if ku // aquifère _A) qui (dist kw^i // équidistant _A) qui (lat kw^i // équilatéral - _C) qua kwA // squale square - _A) qua kwA // équateur - dé) qua kwA // adequate - _) qua (rtz kwA // quartz + _C) qua kwa // squale square + _A) qua kwa // équateur + dé) qua kwa // adequate + _) qua (rtz kwa // quartz qu k // quatre - _) que (_ k@2 // que + _) que (_ k@ // que n) q (_ k // cinq cent // group q: English section @@ -1081,6 +1070,7 @@ cou) rr (o r // courroie sch (iz sk // schizophrène sch (ol sk sch (oo sk + schu Su sch S // schéma dé) sh (A z // déshabiller @@ -1104,7 +1094,7 @@ cou) rr (o r // courroie _) supra (@P5 sypra batro) s (_ s océro) s (_ s - scien (t si-A~ // conscient scientifique + scien (t siA~ // conscient scientifique sql (_S3 EskyEl _u) s (_ s @@ -1186,8 +1176,10 @@ VCi) t (_ t2 r) t (_ aul) t (_ // Renault + grani) t (_ t _) télé (@P4 tele + _) tele tele _) thermo (@P6 tErmo tt t // attitude @@ -1298,13 +1290,14 @@ VCi) t (_ t2 _) ultra (P5 yltra g) u (ay u g) ueill Yj // orgueilleux - g) ueil (_ Yj // orgueil + haïk) u (X u C) u (bX Y // hub, club C) u (gX Y // bug, mug _n) u (rse Y // nurse - r) u (nX Y // run, autorun - um (_ om // album + r) u (nX W // run, autorun + pr) unt (_ W~ // emprunt + um (_ Om // album f) um (_ W~ // parfum um (b W~ // humble um (p W~ @@ -1371,6 +1364,7 @@ _) w (A _|w _) wir _^_en // wire winn _^_en // winner wise _^_en + with _^_en wor _^_en @@ -1407,14 +1401,12 @@ _) w (A _|w .group y y i // cryogénique myope - _) y (A j // yak, yacht + _) y (A _|j // yak + _) y (eu j // yeux _) yacht _^_en // yacht, yachtman - _) y (eu i- // yeux - _) yahoo (P5 i-a'u - ym (b E~ // symbolique - ym (p E~ // tympan - ym (_ E~ // thym + _) yahoo (P5 ja'u + ym (K E~ // tympan y (nn i y (nA i X) ys (_ is @@ -1427,7 +1419,7 @@ _) w (A _|w z z t) z s // tzigane t) zer (_ zEr - C) zer (_ zYr + C) zer (_ zWr .group @@ -1437,10 +1429,11 @@ _) w (A _|w é e // été ê E // fête - ñ Ni // niño + ï i // naïf + ïn (K E~ // coïncidence + ïs (_ is // maïs + ö o // angström - œ Y - œu Y: // sœur û y: // fûtes ü y // bülcher diff --git a/dictsource/hu_list b/dictsource/hu_list index aa43a3cc..3278bf8e 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -145,7 +145,8 @@ _#-ének e:nEk _#-ának a:nAk _#-vel e:vEl $alt2 _#-val a:vAl $alt2 - +_#-ánál a:na:l $alt2 +_#-énél e:ne:l $alt2 (1-e) elseje $text $alt2 (1-én) elsején $text $alt2 (1-jén) elsején $text $alt2 @@ -169,6 +170,8 @@ _#-val a:vAl $alt2 (1-jéig) elsejéig $text $alt2 (1-ének) elsejének $text $alt2 (1-vel) elsejével $text $alt2 +(1-jénél) elsejénél $text $alt2 +(1-énél) elsejénél $text $alt2 (2-i) másodikai $text $alt2 (2-ig) másodikáig $text $alt2 (3-i) hAR2_mAdikAi $alt2 @@ -210,6 +213,9 @@ _#-val a:vAl $alt2 (0-an) nul:a:n (0-ában) nul:a:bAn (0-ába) nul:a:bA +(0-áson) nul:a:Son +(0-tól) nul:a:to:l +(00-tól) nul:Anul:a:to:l (1-gyet) EJ:Et (1-gyes) EJ:ES (2-őt) kEt:Y:t @@ -224,6 +230,7 @@ _#-val a:vAl $alt2 (3-adikat) hAR2mAdikAt //special exception (3-adikon) hAR2mAdikon //special exception (3-adikkal) hAR2mAdik:Al //special exception +(3-t) ha:R2mAt //4 number suffixes (4-el) ne:J:El //Nneed J: phoneme, not J phoneme contains one suffix) (4-gyel) ne:J:El //Need J: phoneme, not J phoneme @@ -246,9 +253,12 @@ _#-val a:vAl $alt2 (7-től) hEtEdike:tY:l $alt2 (7-tel) he:t:El (7-el) he:t:El +(7-sekre) hEtESEkR2E +(7-sel) hEtES:El (8-cal) n^olts:Al (8-al) n^olts:Al (9-el) kilEnts:El +(9-cel) kilEnts:El _10e tiz _20e hus (10-szer) ti:s:ER2 @@ -256,7 +266,6 @@ _20e hus - //special number exceptions (10-el) ti:zzEl (20-al) hu:s:Al @@ -376,7 +385,7 @@ LST ElESte: $allcaps BAR bAR2 $allcaps //SS EsEs $allcaps -a.m An^n^i||m'int $dot +(a . m .) An^n^i||m'int ún u:JnEvEzEt: $hasdot dr doktoR2 $dot mr mistER2 $hasdot //in hungarian we not use, but lot of books contains this word. @@ -397,7 +406,7 @@ stb SAtYb:i $hasdot u.n u:JnEvEzEt: $hasdot ú.n u:JnEvEzEt: $hasdot vö v'EZd||_'Yss2E - +(u . i .) u:i: @@ -824,7 +833,7 @@ látszik $unstressend látszott $unstressend látszanak $unstressend látszotok $unstressend -körül $unstressend +körül $unstressend $alt3 dőlt $unstressend vér $unstressend sót $unstressend @@ -962,7 +971,12 @@ lép $unstressend pénzt $unstressend pénz $unstressend nép $unstressend - +lennék $unstressend +lennél $unstressend +lennénk $unstressend +lennétek $unstressend +hitt $unstressend +fő $unstressend // word pairs @@ -1150,6 +1164,7 @@ _″ duplA|ApostR2o:f _ˇ lEfEle:n^i:l _¡ AlSo:indEks + // Main Exceptions List //===================== @@ -1174,6 +1189,8 @@ egyezség eggyesség (cd-n) cédén (cd-d) cédéd (CD-d) cédéd +CD-m) cédém +(cd-m) cédém (db-os) darabos (db-ot) darabot (LST-k) elesték @@ -1187,6 +1204,8 @@ egyezség eggyesség //after word and don't disturb Orca working. (PC-n) pécén (USB-n) úesbén +(usb-n) úesbén +(usb-t) úesbét (USA-ból) usából (USA-nak) usának (DVD-k) dévédék @@ -1195,10 +1214,11 @@ egyezség eggyesség (dvd-n) dévédén (dvd-d) dévédéd (DVD-d) dévédéd +(DVD-m) dévédét +(dvd-m) dévédém (USA-éval) usáéval (ubuntu-n) ubuntun (hu-n) hun (USA-ban) usában - - +(USA-ba) usába diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 288040c1..d22f610f 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -17,11 +17,14 @@ _) alattvaló AlAtvAlo: ahhoz Ahoz + .group á á a: @) ában (_S4q a:bAn @) ának (_S4q a:nAk @) ától (_S4q a:to:l + @) áig (_S3q a:ig + @) ára (_S3q a:R2A .group b b b @@ -36,8 +39,12 @@ tö) bb (ség b tö) bb (nyire b tö) bb (nek b - tová) bb (ra b + tová) bbr (a bR2 tö) bb (soro b + tö) bb (ny b + tö) bb (féle b + jo) bbr (a bR2 + tö) bbr (e bR2 .group c c ts @@ -72,7 +79,9 @@ har) c (cselek ts külön) c (sé ts mala) c (sül ts - +gyümöl) cs (zs tS + fil) c (csiz ts + szo) c (segély ts .group ch anar) ch (i h @@ -97,7 +106,8 @@ hierar) ch (i h ar) ch (ív h ar) ch (ivál h ma) ch (iná h - +oligar) ch h + legpe) ch (es h: .group d d d @@ -174,7 +184,21 @@ menetren) dsz (erű d|s föl) d (szerzé d twee) dz (ak d|z twee) dsz (ok d|s - + dtt t: //this letters need spokening longer t phoneme + _) kar) d (su d + zöl) d (sapk d + hí) d (szer d + szaba) d (szoft d + rövi) d (zár d + ren) d (zavar d + ügyvé) d (jel d + kez) dt t + tiné) dzs (e dZ + mene) dzs (me dZ + ná) d (szék d + rövi) d (soroz d + pa) d (szerű d + ná) d (suhog d .group dz fogó) dz (kod ts @@ -209,7 +233,8 @@ követelő) dz z rángató) dz z titkoló) dz z ringató) dz z - + mére) dz (k ts +pilóta) dzs (ek dZ .group e e E @@ -226,6 +251,8 @@ ringató) dz z @) ében (_S4q e:bEn @) ének (_S4q e:nEk @) étől (_S4q e:tY:l + @) ére (_S3q e:R2E + @) éig (_S3q e:ig éhség e:Se:g éhségg e:Se:g: @@ -235,6 +262,9 @@ ringató) dz z .group f f f //führer fy:R2ER2 + e) ff (ajt f + e) ff (él f + a) ff (él f .group g @@ -343,6 +373,12 @@ tizene) gy (edik J: e) gy (enként J: félmege) gy (ez J: _e) gy (el J: +tizene) gy (et J: +tizene) gy (en J: + e) gy (esület J: + a) gy (sej J + e) gy (úttal J: +épülete) gy (ütt J: .group h h h @@ -352,7 +388,7 @@ félmege) gy (ez J: .group i i i @) i (_S1 i - + @) ig (_S2 ig _) itthon ithon .group í @@ -367,16 +403,27 @@ félmege) gy (ez J: v) í (zére i sz) í (ve i t) í (zes i - + sz) í (vel i: .group j j j @) jában (_S5q ja:bAn @) jának (_S5q ja:nAk @) jától (_S5q ja:to:l + @) jáig (_S4q ja:ig + @) jára (_S4q ja:R2A + @) jával (_S5q ja:vAl + @) jének (_S5 je:nEk + @) jére (_S4 je:R2E + @) jétől (_S5 je:tY:l + @) jéig (_S4 je:ig + @) jével (_S5 je:vEl _) javíts jAvi:tS: _) javítsd jAvi:tSd + + + .group k k k kk k: @@ -393,6 +440,9 @@ félmege) gy (ez J: készségg ke:SSe:g: _a) kk (reditál k _) közt kYst + bara) kk (b k + bara) kk (f k + bara) kk (j k .group l l l @@ -507,6 +557,8 @@ tulajdo) n (jog n irá) ny (jel n^ ö) n (jelöl n teljesítmé) ny (javu n^ + törvé) ny (java n^ + ajá) nl l: .group o o o @@ -526,7 +578,7 @@ teljesítmé) ny (javu n^ .group p p p pp p: - pp (C pp + pp (C p: p (v p_ _) potsdam potsda:m @@ -539,9 +591,12 @@ teljesítmé) ny (javu n^ qu kv .group r + @) ra (_S2 R2A + @) re (_S2 RE r R2 - rr RR rm R2_m + r) r R2 + r (r R r (cc R _) richa (rd R2iCa: @@ -550,7 +605,6 @@ teljesítmé) ny (javu n^ i) rr (itá R2 ko) rr (epetá R2 - .group s s S föld) s (ánc S @@ -578,7 +632,8 @@ juventu) s s //a radio station name hallá) s (zavar S gyalogo) s (zászló S ki) s (zsidó S - +szennye) s (zsá S + alvá) s (zavar S .group ss ssz ss2 @@ -747,6 +802,10 @@ gyalogo) ssz Ss jelzé) ssz (erű Ss kitöré) ssz (erű Ss hatá) ssz (üne Ss + fri) ss (zöl S: + nyúva) ssz s: +hirdeté) ssz (erve Ss +páncélo) ssz Ss .group sz sz s @@ -776,8 +835,7 @@ kenyere) szs (ák SZ tava) sz (ára s rongyo) szs (ák SZ para) sztsz (ek st|s - rava) sz (ára s - + rava) sz (ár s .group t @@ -788,9 +846,12 @@ rongyo) szs (ák SZ tt t: ttk t:k tth t:h + ttg t:g + ttgy t:J + ttp t:p @) tól (_S3q to:l @) től (_S3q tY:l - tt (C tt + tt (C t: ttn t:n ttm t:m ttl t:l @@ -956,7 +1017,16 @@ hangula) t (jel t vizsgála) t (soroza t á) tjátsz tja:ts: á) tjátssz tja:ts: - + kobal) t (sugár t +többle) t (szol t + á) t (söprő t + ú) t (javí t +billentyűze) t (jel t + á) t (címké t + sej) t (szö t + szöve) t (sapk t + mene) t (szél t + tesz) t (cikk t .group ts ts (_S2 tS //general rule with word end of ts letters @@ -1037,6 +1107,10 @@ indula) tsz (ó t|s segi) ts (é tS: kür) tsz (ó t|s hi) tsz (ó t|s + á) tsz (ok t|s + halla) tsz (a ts: + fejle) ts (ég tS: + sie) tsz ts: .group u u u @@ -1103,7 +1177,7 @@ lefeje) z (te s lefeje) z (ték s pén) z (tár s ré) z (serpenyő z - tartó) z s + tartó) z (t s gá) z (cső z @@ -1199,6 +1273,16 @@ hiányo) z (t s foglalko) z (t s tanulmányo) z (t s magyará) z (t s + kötö) z (t s +vitatko) z (t s + tartó) z (k s +ajándéko) z (t s + tarto) z (k s + tarto) z (t s + rejtő) z (kö s + rejtő) z (t s + hango) z (t s + .group diff --git a/dictsource/is_list b/dictsource/is_list index 0e0bcc91..e2b0ac50 100755 --- a/dictsource/is_list +++ b/dictsource/is_list @@ -19,9 +19,9 @@ _2f tv'W: _3f Tr#j'u: _4f fj'W:Qyrr# _5 f'Im -_6 s'e:xs +_6 s'E:xs _7 sj'W: -_8 'aUhd& +_8 'aUhda _9 n'i:;y _10 t'i:;y _11 'EdlEv,y @@ -39,10 +39,10 @@ _4X fj'W:*Ryt,i;y _5X f'Imti;,y _6X s'Exsdi;,y _7X sj'W:ti;,y -_8X 'aUhd&t,i;y +_8X 'aUhdat,i;y _9X n'i:;yt,i;y _0C h'ynd@-*yD -_1C 'eIhd||h'ynd@-R&D +_1C 'eIhd||h'ynd@-RaD _2C tv'W:||h'ynd@-RyD _3C Tr#j'u:||h'ynd@-RyD _4C fj'W:Qyrr#||h'ynd@-RyD @@ -51,38 +51,38 @@ _0M2 m'IdljoUn _1M2 eI:n||m'IdljoUn _2M2 tv'aI:rr#||m'IdljoUn _3M2 Tr#j'aU:rr#||m'IdljoUn -_4M2 fj'oU:*&rr#||m'IdljoUn -_dpt _k,Omm&_ -_0and o:Q +_4M2 fj'oU:*arr#||m'IdljoUn +_dpt _k,Omma_ +_0and O:Q _cap sd'oUrr#d _?? t'aUghn# // Characters -_! 'yhbr#oUpyn&Rm,Err#kI -_" JaI:s&lWhb -# mIll& -_$ d'Odl&rr# -_& o:QmErr#kI +_! 'yhbr#oUpynaRm,Err#kI +_" JaI:salWhb +# mIlla +_$ d'Odlarr# +_& O:QmErr#kI / skaUsdr#Ig _( svI:jI -_) sv'I:jIl'o:k&sd +_) sv'I:jIl'O:kasd _{ slYy:vysvIjI -_} sl'Yy:vysv,IjIl'o:k&sd +_} sl'Yy:vysv,IjIl'O:kasd _[ hOrdn#glOvI -_] h'Ordn#glOvIl'o:k&sd -= s'a:m&sEmm,Err#kI +_] h'Ordn#glOvIl'O:kasd += s'a:masEmm,Err#kI _\ 'W:vyxdsk,aUsdr#Ig -_- b&ndsdrr#Ig +_- bandsdrr#Ig __ yndIRsdrr#Ig -_? sb'yrdn#iNg,&mErr#kI +_? sb'yrdn#iNg,amErr#kI + bl'u:s _< OdglOvI -_> 'OdglOvIl,o:k&sd -_. p'uN#hgdy#rr# -_, k'Omm& -_; s'e:mik,Omm& -_: dv'i:puN#hgdy#rr# +_> 'OdglOvIl,O:kasd +_. p'uN#hgdyrr# +_, k'Omma +_; s'E:mik,Omma +_: dv'i:puN#hgdyrr# // abbreviations @@ -379,39 +379,39 @@ fram $u+ // forward //**************** _á aU: á aU: $atend -b bje: -c sje: -d dje: -ð e:D +b bjE: +c sjE: +d djE: +ð E:D f Ef -g gje: +g gjE: h haU: _í i: í i: $atend -j j'o:D +j j'O:D k k'aU: l Etl# m Em n En -p pje: +p pjE: q ku: r Err# s Es -t tje: +t tjE: v vaf -w tv'W:v&ldv,af -x e:xs +w tv'W:valdv,af +x E:xs _y 'yfsilOn||,I: _ý 'yfsilOn||,i: y 'yfsilOn||,I: $atend ý 'yfsilOn||,i: $atend -z se:t& +z sE:ta þ T'Ordn# // MAIN WORD DICTIONARY //********************* -bolla bOll& -halló h&lloU -mylla mIll& +bolla bOlla +halló halloU +mylla mIlla diff --git a/dictsource/is_rules b/dictsource/is_rules index c572d0ab..43c4d2e3 100644 --- a/dictsource/is_rules +++ b/dictsource/is_rules @@ -5,6 +5,10 @@ // letter group F p,t,k,s // letter group H j,r,v, +.L01 e i í y ý æ j // front vowels +.L02 c f h k p t x þ s // voiceless consonants +.L03 p t k + .replace x xz // so that it behaves as 2 letters @@ -12,7 +16,7 @@ .group a a a: a (FH a: - a (CC & + a (CC a a (ng aU a (nk aU @@ -21,7 +25,7 @@ au (CC Yy _) al (@P2N ,a:l - _) a (ll+ & + _) a (ll+ a .group á á aU: @@ -47,12 +51,12 @@ .group ð ð D ð (B T - ð (__ T // before pause + ð (__ T .group e - e e: - e (FH e: + e E: + e (FH E: e (CC E e (ng eI e (nk eI @@ -93,13 +97,13 @@ _) g (i J _) g (í J _) g (æ J - _) g (j J + _) gj J A) g (a Q A) g (u Q A) g (ð Q A) g (r Q - g (_ Q - gn (_ g + g (_ x + gn (_ gn# gt xd g (s x gj J @@ -118,6 +122,7 @@ h h hj C hl l# + hr hr# hn hn# hv kv @@ -141,21 +146,20 @@ .group k - k k - _) k (e c - _) k (i c - _) k (í c - _) k (y c - _) k (ý c - _) k (æ c + _) k k + k g + _) k (L01 c + k (L01 J kj c k (K g k (k h // [hk] + k (s x + k (t t .group l l l - l (_ l# + l (_ l# // ?? l (BX l# ll dl ll (BX tl# @@ -166,13 +170,14 @@ m m mm (K m B) m hm# - m (B m# + m (L03 m# .group n n n + nn n: B) n hn# - n (B n# + n (L03 n# n (g N ng (_ Ng ngt (K N#d @@ -195,9 +200,11 @@ .group o - o o: - o (FH o: + o O: + o (FH O: o (CC O + o (gi OI + o (gj OI o (ng oU o (nk oU @@ -206,15 +213,11 @@ ó oU: ó (FH oU: ó (CC oU - óf (A oU2 .group p + p b _) p p - p p - B) p b - s) p b - p (K b p (s f p (k f p (t f @@ -230,37 +233,41 @@ C) r @-R l) r **R A) r (A *R - B) r r# - r (B rr# + r (L02 rr# r (_ _|R r _|R2 rr R*R rl dl - rl (K rtl# - rn rdn# + rl (B Rtl# + rn Rdn# .group s s s ss ss2 + _) sh S // English + sh (_ S // English .group t _) t t - t t - B) t d - s) t d - t (K d + t d tt hd - t (l ht //?? ætla + t (l hd //?? ætla + t (n hd + th (_ T // English + _) th T // English .group u u y: u (FH y: u (CC y + u (gi yI + u (gj yI K) u (ng u K) u (nk u + @) u (num_ O .group ú diff --git a/dictsource/nl_list b/dictsource/nl_list index 98d93905..346584b1 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -124,9 +124,9 @@ m'n m@n jouw $u uw $u zijn $u -z'n $u +z'n z@n haar $u -d'r $u +d'r d@r ons $u onze $u jullie $u diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 7e175be5..717ac02b 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -10,6 +10,8 @@ au VU ay a:j + _) aan (@P3 'a:n + .group b _) b (_ be: @@ -137,7 +139,7 @@ _) n (_ En n n nn n - ng (_ N + ng N nj n^ diff --git a/dictsource/pt_rules b/dictsource/pt_rules index e583d89e..742387dd 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -685,7 +685,7 @@ A) r (_A * rr x XC) r (A R - C) r (A r + C) r (A * //?1 C) r (A r _) r x l) r x diff --git a/dictsource/ta_list b/dictsource/ta_list index dca461c1..891e8f64 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -196,7 +196,6 @@ tamil தமிழ் $text பாகவதம் $alt பகவத் $alt பங்கம் $alt -பீதி $alt பேகம் $alt பார்லி $alt பிக்கினி $alt @@ -230,6 +229,9 @@ tamil தமிழ் $text பாக்கித் $alt பாக்கிச் $alt பர்மிய $alt +பலே $alt +பூம் $alt +பரத $alt (பி . ஏ) bije: @@ -266,11 +268,16 @@ tamil தமிழ் $text துருவம் $alt தீரமுள்ள $alt தீரமற்ற $alt - +தலாய் $alt +தேசிங்கு $alt +தேச $alt +தேசப் $alt +தானம் $alt // initial ட டார்ச் t.a:rtS டிவி t.ivi +டி t.i // initial ச as [tS] சீ $alt @@ -279,6 +286,7 @@ tamil தமிழ் $text சீச்சீ $alt சிட்டாய் $alt சேச்சே $alt +சிரம் sirVm கக $alt // initial க as [g] @@ -296,7 +304,6 @@ tamil தமிழ் $text கோபி $alt கச்சாமி $alt குரு $alt -கோர $alt கும் $alt கும்மென்று $alt கும்முனு $alt @@ -309,6 +316,8 @@ tamil தமிழ் $text கம்னு $alt கம்மென்று $alt குதி $alt +கம் $alt +காந்தம் $alt // p as [f] @@ -336,3 +345,5 @@ tamil தமிழ் $text டிபன் t.ifVn ஆகா a:Ha: ஓகோ o:Ho: +கப் kVp + diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 71a38447..7cdac750 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -42,8 +42,8 @@ _) க (B k _) க (T gV // if word has $alt attribute in ta_list _) க (BT+ g // $alt - க்க kkV - க்க (B kk + க் (க k + க்) க kV# ற்) க _kV ற்) க (B _k L01) க kV @@ -58,6 +58,7 @@ //sort _) க (ங்கா gV _) க (ங்கை gV + _) க (டகட gV _) க (டப்பாரை gV _) க (டிகார gV _) க (டோத்கஜ gV @@ -65,7 +66,9 @@ _) க (ணீர gV _) க (ணே gV _) க (ண்டங் gV + _) க (தாயுத gV _) க (திகலங் gV + _) க (திக் gV _) க (திதா gV _) க (திய gV _) க (தியில் gV @@ -84,11 +87,14 @@ _) க (லீர gV _) க (வண gV _) க (வன gV + _) க (வர்னர gV _) க (வாஸ்கர gV _) க (ாண்டாமிருக g _) க (ாண்டீப g _) காண்டேக (ர ga:n.d.e:kV - _) க (ாந்த g + _) க (ாந்தங் g + _) க (ாந்தத் g + _) க (ாந்தி g _) க (ானங் g _) க (ானத்த g _) க (ானம g @@ -98,6 +104,7 @@ _) க (ிரிஜா g _) க (ிரிதர g _) க (ீதல k + _) க (ீத்த k _) க (ுகன g _) க (ுகை g _) க (ுஜராத g @@ -115,6 +122,7 @@ _) குண்டாந்த (டி gun.d.a:ntV _) க (ுண்டாய g _) க (ுண்டு g + _) க (ுதிக் g _) க (ுதிச் g _) க (ுதித் g _) க (ுதிப் g @@ -122,6 +130,7 @@ _) க (ுபுகுபு g _) க (ுபுக் g _) க (ுப்பென்ற g + _) க (ுமாஸ்தா g _) க (ுமுகுமு g _) க (ும்பல g _) க (ும்மிடிப்பூண் g @@ -129,6 +138,7 @@ _) க (ுருக்கள g _) க (ுருதேவ g _) க (ுருநா g + _) க (ுருமார g _) க (ுருரா g _) க (ுருவா g _) க (ுருவாய g @@ -138,7 +148,9 @@ _) க (ுருவுடை g _) க (ுருவோட g _) க (ூடலூர g + _) க (ூர்க்கா g _) க (ெட்டி g + _) க (ெட்டிரு k _) க (ேலி g _) க (ோகுல g _) க (ோதாவரி g @@ -147,11 +159,15 @@ _) க (ோந்து g _) க (ோபப் k கோப (ால go:p + _) க (ோபிகை g _) க (ோபிசெட் g _) கோப (ித்து ko:b _) க (ோபிநா g _) க (ோபிய g _) க (ோபுர g + _) க (ோர_ g + _) க (ோர_முடிய k + _) க (ோர_வேண்ட k _) க (ோரக g _) க (ோரத g _) க (ோரப g @@ -169,6 +185,7 @@ //sort _கல்) க (ண்ட kV + _நற்) க (தி gV _கல்) க (த்தா kV கொல்) க (த்தா kV மோ) க (ன HV @@ -180,7 +197,13 @@ சுதா) க (ரின kV சுதா) க (ர்_ kV கல) க (ல kV - க (வி kV + வீண்) க (வலை kV + மகா) க (வி kV + மஹா) க (வி kV + விகட) க (வி kV + க (விஞ kV + க (விராய kV + வீண்) க (ஷ்ட kV ம) க (ா H தொல்) க (ாப்பி k கோயில்) க (ாளை k @@ -191,24 +214,37 @@ கி (ரண g _) கி (ரஹ g _) கி (ராக்கி g + _) கி (ராதக k _) கி (ராம g _) கி (ரீட k ங்) க (ிரு g கிரு (ஷ் kri + _) கி (ரைண்டர g + கி (லேச k + _வட) க (ிழ k + தென்) க (ிழ k நற்) க (ுண g + _சற்) க (ுண g க (ுமார k _) கு (ரோத k க (ுல k + _அங்) க (ுல g _) குல்க (ந்த gulkV +குண்டல) க (ேசி k ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ?? ம) க (ேந்திர H ம) க (ேஷ்வ H ம) க (ேஸ்வர H + வீண்) க (ோப k துர்) க்க ggV# மார்) க்க ggV# + மூர்) க்க ggV# _வர்) க்க ggV# _சொர்) க்க ggV# + நிர்) க்க (தி ggV + அ) க்க (ினி gg வி) க்ட (ோரியா kt. // victoria + வி) க (்ரம k //endsort @@ -263,12 +299,12 @@ _) சி (நே s _) சி (னே s _) ச (ின் tS - _) சிரத்த (ை srVdd சி (ரம s _) சிரு (ஷ்டி sri _) ச (ீன tS _) ச (ீனிவா s சீ (னிவாச sri: + _) ச (ீன்_ s _ஈ) சு s கே) சு (வ s மே) சு (வ s @@ -324,6 +360,7 @@ _) ட (ிவிய t. _) ட (வல t.V _) ட (வர t.V + _) ட (ேப t. .group ண ண n.V @@ -357,12 +394,14 @@ _) த (சரதர dV _) த (சரா dV _) த (சை dV + _) த (டதட dV _) த (டபுடல dV _) த (டவை dV _) த (டால dV _) த (டிJ_பயல dV _) த (டிJ_புத்தக dV _) த (டிJ_மாட dV + _) த (டிக்க dV _) த (டித்த dV _) த (டியன dV _) த (டியர dV @@ -374,7 +413,11 @@ _) த (ண்டபாணி dV _) த (ண்டம dV _) த (ண்டாயுதபாணி dV + _) த (ண்டிக்க dV _) த (ண்டித் dV + _) த (ண்டிப்ப dV + _) த (ண்டிப்பா dV + _) த (ண்டியுங்கள dV _) த (னகோடி dV _) த (னசேகரன dV _) த (னன்ஜெயன dV @@ -404,10 +447,14 @@ _) த (வம dV _) த (ாக்கா d _) த (ாக்காம t + _) த (ாக்காவிட்டா t _) த (ாச d _) த (ாடி d + _) த (ாட்சண்ய d _) த (ாட்சாய d _) த (ாதா d + _) த (ானங் d + _) த (ானத் d _) த (ானிய d _) த (ானுவ d _) த (ாம்_தூம d @@ -423,8 +470,10 @@ _) த (ிக்கு d _) த (ிக்கு_முக்க t _) த (ிக்கு_வாய t + _) த (ிக்குமுக்கா t _) த (ிக்கே d _) த (ிக்கை d + _) த (ிக்விஜய d _) த (ிசை d _) த (ிடப d _) த (ிடம d @@ -449,18 +498,18 @@ _) த (ிவாகர d _) த (ிவான d _) த (ிவ்ய d + _) த (ீட்சை d _) த (ீப d _) த (ீப்ப t _) த (ீரச் d + _) த (ீரத்துட d _) த (ீரன d _) த (ீரமில்ல d + _) த (ீரரை d _) த (ீரர் d _) த (ீர்க d - _) த (ீர்க்கலா t - _) த (ீர்க்கா t + _) த (ீர்க்க t _) த (ுக்க d - _) த (ுக்கடா t - _) த (ுக்கிரி t _) த (ுச்சம d _) த (ுச்சாதனன d _) த (ுட்ட d @@ -471,17 +520,22 @@ _) த (ுரோண d _) த (ுர் d _) து (வந்த_ d + _) து (வார d _) த (ுஷ் d _) த (ூசி d _) த (ூப d _) த (ூம d _) த (ூர d + _) த (ூஷணை d _) த (ெய்வ d _) த (ேக d _) த (ேக்க t + _) த (ேசத்தார d + _) த (ேவகான d _) த (ேவகி d _) த (ேவதை d _) த (ேவன d + _) த (ேவருலக d _) த (ேவர்க d _) த (ேவலோக d _) த (ேவாதி d @@ -492,6 +546,7 @@ _) த (ேவி d _) த (ேவேந் d _) த (ைரிய d + _) த (ொனி d _) த (ொபுக் d _) த (ொம் d _) த (ோசை d @@ -499,9 +554,11 @@ //endsort //sort + _வசந்) த tV# த (ன tV _கீ) த (ா t + _சீ) த (ா t _ல) த (ா t அனி) த (ா t சுஜா) த (ா t @@ -528,9 +585,11 @@ _பார்வ) த (ி t _) து (ரோண t _) து (வேச d _) து (வேஷ d + _) துவைத dvaItV# + வீண்) த (ேவை t + வீண்) த (ொல்லை t யு) த்த ddV# பு) த்த (ன ddV - சி) த்த (ர ddV பு) த்த (ர ddV பு) த்த (ி dd சா) த்த (ிய dd @@ -540,8 +599,10 @@ _பார்வ) த (ி t பு) த்த (ியி dd உ) த்த (ியோக dd சமு) த்த (ிர dd + அ) த்த (ெய்வ dd ச) த (்ய t நி) த (்ய t + ச) த்ரபதி trVpVti சி) த (்ரா t பவி) த (்ரா t ச) த (்ரு t @@ -569,13 +630,11 @@ _பார்வ) த (ி t _) ப (T+ bV // if word has $alt attribute in ta_list _) ப (BT+ b // if word has $alt ப் (ப p - ப pV - ப (B p + ப்) ப pV + ப்) ப (B p L02) ப pV L02) ப (B p குஷ்) ப (ு b - று) ப _pV - று) ப(B _p ம) ப pV ம) ப (ா p @@ -584,8 +643,6 @@ _பார்வ) த (ி t த) ப (ா p த) ப (B b - @) பத (ி pVt - ன்) பத (ி bVd ப (ுர p ப (ால p ப (ாள p @@ -611,6 +668,7 @@ _பார்வ) த (ி t _) ப (ட்டன bV _) ப (ட்டன_ pV _) ப (தில bV + _) பத்த (ிரகாளி bVdd _) ப (த்திரமா bV _) ப (ந்தங்கள bV _) ப (ந்தத் bV @@ -639,6 +697,7 @@ _பார்வ) த (ி t _) ப (லதேவ bV _) ப (லத்தை bV _) ப (லப்படு bV + _) ப (லப்பரீட்சை bV _) ப (லம bV _) ப (லமுறை pV _) ப (லராம bV @@ -647,8 +706,10 @@ _பார்வ) த (ி t _) ப (லவீன bV _) ப (லஹீன bV _) பலாத்க (ார bVla:dk + _) ப (லிபீட bV _) ப (லிய bV _) ப (லூன bV + _) ப (வாணி bV _) ப (வ்ய bV _) ப (ஸ bV _) ப (ாகங்க b @@ -660,8 +721,15 @@ _பார்வ) த (ி t _) ப (ாடி_பில்டிங் b _) ப (ாணி b _) ப (ாதிக்க b + _) ப (ாதிக்கு_ p + _) ப (ாதிக்கும்_குறை p + _) ப (ாதிக்கும்_மேற்பட்ட_ p + _) ப (ாதிக்கும்_மேல p + _) ப (ாதித்த b _) ப (ாதிப்ப b _) ப (ாதுஷா b + _) பாத்த (ியதை ba:dd + _) பாத்த (ியம்_ ba:dd _) ப (ாத்யதை b _) ப (ாத்ரூம b _) ப (ானு b @@ -675,9 +743,10 @@ _பார்வ) த (ி t _) ப (ாலக்காட p _) ப (ாலச b _) ப (ாலதண் b - _) ப (ாலமு b + _) ப (ாலமுர b _) ப (ாலாஜி b _) ப (ாலாபிஷேக p + _) ப (ாலாம்பிக b _) ப (ாலாவ b _) ப (ாலின் p _) ப (ாலு b @@ -687,6 +756,18 @@ _பார்வ) த (ி t _) ப (ால் p _) ப (ால்_தாக்கரே b _) ப (ால்ய b + _நேய_) ப (ாவ b +_சிநேக_) ப (ாவ b +_சினேக_) ப (ாவ b +_முக_) ப (ாவ b +_முகத்தின்_) ப (ாவ b +முகங்களினுடைய_) ப (ாவ b +முகங்களின்_) ப (ாவ b +முகங்களிலிருந்த_) ப (ாவ b +முகங்களிலிருந்து_) ப (ாவ b +முகத்தினுடைய_) ப (ாவ b +முகத்திலிருந்த_) ப (ாவ b +முகத்திலிருந்து_) ப (ாவ b _) ப (ாவனா b _) ப (ாவனை b _) ப (ாவித்த b @@ -712,6 +793,7 @@ _பார்வ) த (ி t _) ப (ீம b _) ப (ீரங்கி b _) ப (ீராமணர b + _) ப (ுக்தி b _) ப (ுட்டி b _) ப (ுதன b _) புத்த(K buddV @@ -724,8 +806,10 @@ _பார்வ) த (ி t _) ப (ுத்திய b _) ப (ுல்லாக்க b _) ப (ுவன b + _) ப (ூகம்ப b _) ப (ூகோல b _) ப (ூட்ஸ b + _) ப (ூதகணங்க b _) ப (ூதங் b _) ப (ூதத் b _) ப (ூதம b @@ -735,11 +819,11 @@ _பார்வ) த (ி t _) ப (ூமாதேவி b _) ப (ூமி b _) ப (ூலோக b - _) ப (ூவுலக b _) ப (ெங்களூர b _) ப (ெட்ரூம b _) ப (ெர்லிங b _) ப (ெல் b + _) ப (ெஸ்ட் b _) ப (ேஜார b _) ப (ேட்டரி b _) ப (ேதலித்த b @@ -749,6 +833,7 @@ _பார்வ) த (ி t _) ப (ைரவ b _) ப (ொம்மல b _) ப (ொம்மை b + _) ப (ோகங்க b _) ப (ோஜ b _) ப (ோதன b _) ப (ோதித் b @@ -761,36 +846,83 @@ _பார்வ) த (ி t //sort + + இயல்) ப bV# + பரிதா) ப (+ bV# + அனுதா) ப (+ bV# நன்) ப (கல pV பின்) ப (கல pV முன்) ப (கல pV - நாலா) ப (க்க pV + வட) ப (குதி pV + தென்) ப (குதி pV + ப (க்கK pV ப (டி pV + மறு) ப (டி bV @) ப (ட்ச+ pV ப (ண pV + _சிவ) ப (த pV + கஜ) பதி pVti + கண) பதி pVti + ரகு) பதி pVti + சீதா) பதி pVti + சேது) பதி pVti + தரணி) பதி pVti + மகுட) பதி pVti + பிரகஸ்) பதி pVti + லக்ஷ்மி) பதி pVti + வித்யா) பதி pVti +அம்பிகா) பதி pVti +வளையா) பதி pVti +வேங்கட) பதி pVti + மின்) ப (திப்ப+ pV + காண்) பத (ில bVd பதை) ப (தை pV கல்) ப (னா pV நிரு) ப (மா pV அனு) ப (மா pV + _ஊடு) ப (யிர pV + பல) ப (ல pV + _மூடு) ப (ல்லக் pV + பள) ப (ள pV + வட) ப (ழ pV + வீண்) ப (ழி pV + _தீ) ப (ா p சமன்) ப (ாட p முரன்) ப (ாட p ப (ாண்டி p ப (ாதை p + ச) பாபதி ba:pVti எதிர்) ப (ார p + _கா) ப (ாலி b அட) ப (ாவ p + வீண்) ப (ாவ p + அடி) ப (ாவி p கோ) ப (ி p + ஆண்) ப (ிள்ளை p + பெண்) ப (ிள்ளை p + பூம்) ப (ுகார p ம்) ப (ுரா b - நாலா) ப (ுற p + ப (ுறK p + மண்) ப (ுழு p + பூம்) ப (ுஹார p ம்) ப (ூர b ராம்) ப (ூர p அ) ப (ூர்வ b இன்ஸ்) ப (ெக்டர p + இளம்) ப (ெண் p + ப (ெருமான p ப (ெற p // ?? end-of-word + suffix ?? + வீண்) ப (ேச்ச p + ப (ோக_ p + ப (ோகின்ற p + ப (ோகிற p ப (ோதிலும்+ p ப (ோது+ p ப (ோதும்+ p ப (ோதும்_+ p ப (ோதே_+ p + ப (ோன_ p + ப (ோனா p ப (ோன்ற+ p // ?? end-of-word + suffix ?? ப (ோய் p ப (ோல_ p @@ -800,10 +932,15 @@ _பார்வ) த (ி t ப (ோலப்_ p ப (ோலவே_ p ப (ோல்_+ p + ப (ோவத p + _டே) ப (் p கர்) ப்ப bbV# நிர்) ப்ப (ந்த bbV _ர) ப்ப (ர bbV துர்) ப்ப (ாக்கிய bb + ஆர்) ப்ப (ாட்ட bb + துர்) ப்ப (ோதனை bb + கம்) ப்யூட (ர pjU:t.V //endsort // If ப+ appearing in the middle of a word is followed by ட+ @@ -814,6 +951,9 @@ _பார்வ) த (ி t ம்) ப (Bட b //sort + சித்தப்) பி(ரமை b + _) பி(ராந்தியு b + ஜெய) பி (ர p _) பி (ரகதீ b _) பி (ரகலாதன p _) பி (ரகஸ்பதி b @@ -822,6 +962,7 @@ _பார்வ) த (ி t _) பி (ரகாஷ p _) பி (ரக்ஞை p _) பி (ரசங் p + _) பி (ரசன்ந p _) பி (ரசன்ன p _) பி (ரசவ p _) பி (ரசாத p @@ -829,6 +970,7 @@ _பார்வ) த (ி t _) பிரச (ார prVtS _) பி (ரசித்த p _) பி (ரசித்தி p + _) பி (ரசுர p _) பி (ரச்சனை p _) பிரச (்னை prVtS _) பி (ரஜ p @@ -845,12 +987,14 @@ _பார்வ) த (ி t _) பி (ரமிப்ப b _) பி (ரமுகர p _) பி (ரமை b + வீண்) பி (ரமை b _) பி (ரம்ம b _) பி (ரம்மன b _) பி (ரம்மை b _) பி (ரயத்தன p _) பி (ரயா p _) பி (ரயோக p + துஷ்) பி (ரயோக p _) பி (ரயோசன p _) பி (ரயோஜன p _) பி (ரலய p @@ -859,18 +1003,29 @@ _பார்வ) த (ி t _) பி (ரவேச p _) பி (ரவேசி p _) பி (ரஷ்ட p + _) பி (ரஸாத p _) பி (ரஸ்தா p _) பி (ரஹலாத p _) பி (ராகார p _) பி (ராணன p _) பி (ராணி p + _) பி (ராண்ட p _) பி (ராதித் p + பயப்) பி (ராந்தி b + மனப்) பி (ராந்தி b + _) பி (ராந்தியங் p + _) பி (ராந்தியத் p + _) பி (ராந்தியம்_ p + _) பி (ராந்தியை b + _) பி (ரான்தி_ b _) பி (ராப் p _) பி (ராமண b _) பி (ராமணன b + _) பி (ராமின்_ b பி (ராய p _) பி (ரார்தன p _) பி (ரார்தி p + _) பி (ரார்த்த p _) பி (ரிட b _) பி (ரித்தானி b _) பி (ரியன p @@ -976,6 +1131,7 @@ _பார்வ) த (ி t வ vV வ (B v _) வி (யா v + வி (யூக v .group ஶ @@ -1018,13 +1174,16 @@ _பார்வ) த (ி t ஆ a: இ i - _) இ (ரா // silent before 'raa' - _) இ (ராக i - _) இ (ரான i _) இ (லட்சிய // silent _) இ (ரகசிய // silent _) இ (லேச // silent _) இ (ரத்த + _) இ (ராம + _) இ (ராவண + _) இ (ராத்த + _) இ (ராஜ + _) இ (ராணுவ + _) இ (லகுவாக ஈ i: diff --git a/dictsource/vi_list b/dictsource/vi_list index cf95e593..7d8b6501 100644 --- a/dictsource/vi_list +++ b/dictsource/vi_list @@ -1,28 +1,29 @@ -// letters +//vi_list +// chữ cái - ABC b be c se d de đ d@: f E3p -g g@: +g D'e7 h ha3t j gi k ka: -l E -m Em -n En +l El@:2 +m Em@:2 +n En@:2 p pe q kwi -r E -s E3t +r Ez.@:2 +s E3s t te v ve w v'ek,E3p -x i3ts; +x i3c z zE3t -// numbers -_0 J'e1z.'o // dê-rô +// số - numbers +_0 x,o1N // không _1 m'o6t[ // một _2 h'a:I // hai _3 _b'a: // ba @@ -33,32 +34,32 @@ _7 _b'aI4 // bảy _8 t['a:3m // tám _9 c'i3n // chín _1X m'y@2j // mười -_2X h'a:I||m'y@2j // hai mười -_3X _b'a:||m'y@2j // ba mười -_4X _b'o3n||m'y@2j // bốn mười -_5X n'am||m'y@2j // năm mười -_6X s.'aU3||m'y@2j // sáu mười -_7X _b'aI4||m'y@2j // bảy mười -_8X t['a:3m||m'y@2j // tám mười -_9X c'i3n||m'y@2j // chín mười +_2X h'a:I||m'y@7j // hai mươi +_3X _b'a:||m'y@7j // ba mươi +_4X _b'o3n||m'y@7j // bốn mươi +_5X n'am||m'y@7j // năm mươi +_6X s.'aU3||m'y@7j // sáu mươi +_7X _b'aI4||m'y@7j // bảy mươi +_8X t['a:3m||m'y@7j // tám mươi +_9X c'i3n||m'y@7j // chín mươi -_21 h'a:I||m'y@2j||m'o3t[ -_31 _b'a:||m'y@2j||m'o3t[ -_41 _b'o3n||m'y@2j||m'o3t[ -_51 n'am||m'y@2j||m'o3t[ -_61 s.'aU3||m'y@2j||m'o3t[ -_71 _b'aI4||m'y@2j||m'o3t[ -_81 t['a:3m||m'y@2j||m'o3t[ -_91 c'i3n||m'y@2j||m'o3t[ +_21 h'a:I||m'y@7j||m'o3t[ +_31 _b'a:||m'y@7j||m'o3t[ +_41 _b'o3n||m'y@7j||m'o3t[ +_51 n'am||m'y@7j||m'o3t[ +_61 s.'aU3||m'y@7j||m'o3t[ +_71 _b'aI4||m'y@7j||m'o3t[ +_81 t['a:3m||m'y@7j||m'o3t[ +_91 c'i3n||m'y@7j||m'o3t[ -_25 h'a:I||m'y@2j||l'a7m -_35 _b'a:||m'y@2j||l'a7m -_45 _b'o3n||m'y@2j||l'a7m -_55 n'am||m'y@2j||l'a7m -_65 s.'aU3||m'y@2j||l'a7m -_75 _b'aI4||m'y@2j||l'a7m -_85 t['a:3m||m'y@2j||l'a7m -_95 c'i3n||m'y@2j||l'a7m +_25 h'a:I||m'y@7j||l'a7m +_35 _b'a:||m'y@7j||l'a7m +_45 _b'o3n||m'y@7j||l'a7m +_55 n'am||m'y@7j||l'a7m +_65 s.'aU3||m'y@7j||l'a7m +_75 _b'aI4||m'y@7j||l'a7m +_85 t['a:3m||m'y@7j||l'a7m +_95 c'i3n||m'y@7j||l'a7m _0C cr'am // trăm _0M1 N'a:2n // ngàn @@ -67,8 +68,39 @@ _0M3 t['i4 // tỷ _0and l,in^ // linh _dpt _f,@I4_ -// symbols -_, f@I4 +// kí hiệu - symbols +~ J'@U3N'a:5 +` J'@U3hw'i@2n +_! J'@U3c'@3mt'a:7n +@ a:1k'O2N +# J'@U3t'a7N $max3 +$ J'@U3_d'o1l'a:7 +% f'@2ncr'a7m +^ J'@U3m'u5 +& J'@U3v,a:2 +* J'@U3s.'a:U7 $max3 +_( m'@:4Nw'a6kh +_) _d'O3NNw'a6kh +_- Q'a:6cN'a:7N +__ Q'a:6cJ'y@3j += J'@U3_b'a2N $max3 ++ J'@U3k'o6N $max3 +_{ m'@:4Nw'a6khn^'O6n +_} _d'O3NNw'a6khn^'O6n +_[ m'@:4Nw'a6khv'u@7N +_] _d'O3NNw'a6khv'u@7N +_| s'o4t'a4N +_\ s'o4f,a:I4 +_: h'a:I1c'@3m +_; c'@3mf'@I4 +_' Nw'a6kh_d'@:7n +_“ Nw'a6khk'E3p +_, f'@I4 +_. c'@3m +_/ s'o4cr'a:I3 +_< n^'O4h'@:7n +_> l'@:3nh'@:7n +_? h'OI4c'@3m // ?? found in festival wow_vi_ptn_phrasing.scm bị $u @@ -112,6 +144,5 @@ vẫn $u vì $u với $u - -internet int@:n'E3t - +// từ gốc nước ngoài -common foreign language words +internet int@:n'E3t diff --git a/dictsource/vi_rules b/dictsource/vi_rules index b11f3597..bb58847a 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -1,4 +1,3 @@ - // replace combining (tone) accents with single characters .replace à à @@ -80,90 +79,95 @@ ỵ ỵ //================================ .group b - b b - _) b _b + b b + _) b _b .group c - c k - c (_ kh - ch c // try [tS;] [tS] [c] + c k + c (_ kh + ch c // try [tS;] [tS] [c] .group d - d J // try [z] [J] [dZ] [dZ;] [J^] + d J // try [z] [J] [dZ] [dZ;] [J^] .group đ - đ d - _) đ _d + đ d + _) đ _d .group f - f f + f f .group g - g Q // try [g] [Q] - gh Q // or [g] [Q] - gi D // try [D] [z] [j] [J^] [z;] [J] [dZ] - + g Q // try [g] [Q] + gh Q // or [g] [Q] + g (i D // try [D] [z] [j] [J^] [z;] [J] [dZ] + g (ì D + g (í D + g (ỉ D + g (ĩ D + g (ị D + gi D .group h - h h + h h .group j - j Z + j Z .group k - k k - k (_ kh - kh x + k k + k (_ kh + kh x .group l - l l + l l .group m - m m + m m .group n - n n - ng N - ngh N - nh n^ + n n + ng N + ngh N + nh n^ .group ñ - ñ n^ + ñ n^ .group p - p p - ph f + p p + ph f .group q - q k - q (_ kh - qu kw + q k + q (_ kh + qu kw .group r - r z. // try [z] [z.] [r] [z;] + r z. // try [z] [z.] [r] [z;] .group s - s s. // try [s.] [s] [S] + s s. // try [s.] [s] [S] .group t - t t[ - th t - tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] + t t[ + th t + tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] .group v - v v + v v .group w - w w + w w .group x - x s + x s .group z - z z + z z //================================ @@ -171,488 +175,544 @@ ỵ ỵ //================================ .group a - a a: - ai a:I - aì a:I2 - aí a:I3 - aỉ a:I4 - aĩ a:I5 - aị a:I6 - ay aI - aỳ aI2 - aý aI3 - aỷ aI4 - aỹ aI5 - aỵ aI6 - ao a:U - aò a:U2 - aó a:U3 - aỏ a:U4 - aõ a:U5 - aọ a:U6 - au aU - aù aU2 - aú aU3 - aủ aU4 - aũ aU5 - aụ aU6 + a a: + ai a:I + aì a:I2 + aí a:I3 + aỉ a:I4 + aĩ a:I5 + aị a:I6 + ay aI + aỳ aI2 + aý aI3 + aỷ aI4 + aỹ aI5 + aỵ aI6 + ao a:U + aò a:U2 + aó a:U3 + aỏ a:U4 + aõ a:U5 + aọ a:U6 + au aU + aù aU2 + aú aU3 + aủ aU4 + aũ aU5 + aụ aU6 .group à - à a:2 - ài a:I2 - ày aI2 - ào a:U2 - àu aU2 + à a:2 + ài a:I2 + ày aI2 + ào a:U2 + àu aU2 .group á - á a:3 - ái a:I3 - áy aI3 - áo a:U3 - áu aU3 + á a:3 + ái a:I3 + áy aI3 + áo a:U3 + áu aU3 .group ả - ả a:4 - ải a:I4 - ảy aI4 - ảo a:U4 - ảu aU4 + ả a:4 + ải a:I4 + ảy aI4 + ảo a:U4 + ảu aU4 .group ã - ã a:5 - ãi a:I5 - ãy aI5 - ão a:U5 - ãu aU5 + ã a:5 + ãi a:I5 + ãy aI5 + ão a:U5 + ãu aU5 .group ạ - ạ a:6 - ại a:I6 - ạy aI6 - ạo a:U6 - ạu aU6 + ạ a:6 + ại a:I6 + ạy aI6 + ạo a:U6 + ạu aU6 //================================ .group ă - ă a + ă a .group ằ - ằ a2 + ằ a2 .group ắ - ắ a3 + ắ a3 .group ẳ - ẳ a4 + ẳ a4 .group ẵ - ẵ a5 + ẵ a5 .group ặ - ặ a6 + ặ a6 //================================= .group â - â @ - ây @I - âu @U + â @ + ây @I + âu @U .group ầ - ầ @2 - ầy @I2 - ầu @U2 + ầ @2 + ầy @I2 + ầu @U2 .group ấ - ấ @3 - ấy @I3 - ấu @U3 + ấ @3 + ấy @I3 + ấu @U3 .group ẩ - ẩ @4 - ẩy @I4 - ẩu @U4 + ẩ @4 + ẩy @I4 + ẩu @U4 .group ẫ - ẫ @5 - ẫy @I5 - ẫu @U5 + ẫ @5 + ẫy @I5 + ẫu @U5 .group ậ - ậ @6 - ậy @I6 - ậu @U6 + ậ @6 + ậy @I6 + ậu @U6 //=========================== .group e - e E - eo EU - eò EU2 - eó EU3 - eỏ EU4 - eỗ EU5 - eọ EU6 + e E + eo EU + eò EU2 + eó EU3 + eỏ EU4 + eỗ EU5 + eọ EU6 .group è - è E2 - èo EU2 + è E2 + èo EU2 .group é - é E3 - éo EU3 + é E3 + éo EU3 .group ẻ - ẻ E4 - ẻo EU4 + ẻ E4 + ẻo EU4 .group ẽ - ẽ E5 - ẽo EU5 + ẽ E5 + ẽo EU5 .group ẹ - ẹ E6 - ẹo EU6 + ẹ E6 + ẹo EU6 //============================ .group ê - ê e - êu eU + ê e + êu eU .group ề - ề e2 - ều eU2 + ề e2 + ều eU2 .group ế - ế e3 - ếu eU3 + ế e3 + ếu eU3 .group ể - ể e4 - ểu eU4 + ể e4 + ểu eU4 .group ễ - ễ e5 - ễu eU5 + ễ e5 + ễu eU5 .group ệ - ệ e6 - ệu eU6 + ệ e6 + ệu eU6 //============================ .group i - i i - i (A j - ia i@ - ià i@2 - iá i@3 - iả i@4 - iã i@5 - iạ i@6 - iê i@ - iề i@2 - iế i@3 - iể i@4 - iễ i@5 - iệ i@6 - iu iU - iù iU2 - iú iU3 - iủ iU4 - iũ iU5 - iụ iU6 + i i + i (A j + ia i@ + ià i@2 + iá i@3 + iả i@4 + iã i@5 + iạ i@6 + iê i@ + iề i@2 + iế i@3 + iể i@4 + iễ i@5 + iệ i@6 + iu iU + iù iU2 + iú iU3 + iủ iU4 + iũ iU5 + iụ iU6 // iêu i@U .group ì - ì i2 - ì (A j2 - ìa i@2 - ìu iU2 + ì i2 + ì (A j2 + ìa i@2 + ìu iU2 .group í - í i3 - í (A j3 - ía i@3 - íu iU3 + í i3 + í (A j3 + ía i@3 + íu iU3 .group ỉ - ỉ i4 - ỉ (A j4 - ỉa i@4 - ỉu iU4 + ỉ i4 + ỉ (A j4 + ỉa i@4 + ỉu iU4 .group ĩ - ĩ i5 - ĩ (A j5 - ĩa i@5 - ĩu iU5 + ĩ i5 + ĩ (A j5 + ĩa i@5 + ĩu iU5 .group ị - ị i6 - ị (A j6 - ịa i@6 - ịu iU6 + ị i6 + ị (A j6 + ịa i@6 + ịu iU6 //========================= .group o - o O - o (A w - oi OI - oì OI2 - oí OI3 - oỉ OI4 - oĩ OI5 - oị OI6 + o O + o (A w + oi OI + oì OI2 + oí OI3 + oỉ OI4 + oĩ OI5 + oị OI6 .group ò - ò O2 - òi OI2 - ò (A w2 + ò O2 + òi OI2 + ò (A w2 .group ó - ó O3 - ói OI3 - ó (A w3 + ó O3 + ói OI3 + ó (A w3 .group ỏ - ỏ O4 - ỏi OI4 - ỏ (A w4 + ỏ O4 + ỏi OI4 + ỏ (A w4 .group õ - õ O5 - õi OI5 - õ (A w5 + õ O5 + õi OI5 + õ (A w5 .group ọ - ọ O6 - ọi OI6 - ọ (A w6 + ọ O6 + ọi OI6 + ọ (A w6 //============================= .group ô - ô o - ôi oI + ô o + ôi oI .group ồ - ồ o2 - ồi oI2 + ồ o2 + ồi oI2 .group ố - ố o3 - ối oI3 + ố o3 + ối oI3 .group ổ - ổ o4 - ổi oI4 + ổ o4 + ổi oI4 .group ỗ - ỗ o5 - ỗi oI5 + ỗ o5 + ỗi oI5 .group ộ - ộ o6 - ội oI6 + ộ o6 + ội oI6 //============================= .group ơ - ơ @: - ơi @:I - ơu @:U + ơ @: + ơi @:I + ơu @:U .group ờ - ờ @:2 - ời @:I2 - ờu @:U2 + ờ @:2 + ời @:I2 + ờu @:U2 .group ớ - ớ @:3 - ới @:I3 - ớu @:U3 + ớ @:3 + ới @:I3 + ớu @:U3 .group ở - ở @:4 - ởi @:I4 - ởu @:U4 + ở @:4 + ởi @:I4 + ởu @:U4 .group ỡ - ỡ @:5 - ỡi @:I5 - ỡu @:U5 + ỡ @:5 + ỡi @:I5 + ỡu @:U5 .group ợ - ợ @:6 - ợi @:I6 - ợu @:U6 + ợ @:6 + ợi @:I6 + ợu @:U6 //============================= .group u - u u - u (A w - A) u w - ui uI - uì uI2 - uí uI3 - uỉ uI4 - uĩ uI5 - uị uI6 - ua u@ - uà u@2 - uá u@3 - uả u@4 - uã u@5 - uạ u@6 - uô u@ - uồ u@2 - uố u@3 - uổ u@4 - uỗ u@5 - uộ u@6 - uôi u@j - uồi u@j2 - uối u@j3 - uổi u@j4 - uỗi u@j5 - uội u@j6 + u u + u (A w + A) u w + ui uI + uì uI2 + uí uI3 + uỉ uI4 + uĩ uI5 + uị uI6 + ua u@ + uà u@2 + uá u@3 + uả u@4 + uã u@5 + uạ u@6 + uô u@ + uồ u@2 + uố u@3 + uổ u@4 + uỗ u@5 + uộ u@6 + uôi u@j + uồi u@j2 + uối u@j3 + uổi u@j4 + uỗi u@j5 + uội u@j6 .group ù - ù u2 - ù (A w2 - ùi uI2 - ùa u@2 + ù u2 + ù (A w2 + ùi uI2 + ùa u@2 .group ú - ú u3 - ú (A w3 - úi uI3 - úa u@3 + ú u3 + ú (A w3 + úi uI3 + úa u@3 .group ủ - ủ u4 - ủ (A w4 - ủi uI4 - ủa u@4 + ủ u4 + ủ (A w4 + ủi uI4 + ủa u@4 .group ũ - ũ u5 - ũ (A w5 - ũi uI5 - ũa u@5 + ũ u5 + ũ (A w5 + ũi uI5 + ũa u@5 .group ụ - ụ u6 - ụ (A w6 - ụi uI6 - ụa u@6 + ụ u6 + ụ (A w6 + ụi uI6 + ụa u@6 //============================= .group ư - ư y - ưi yI - ưa y@ - ươ y@ - ườ y@2 - ướ y@3 - ưở y@4 - ưỡ y@5 - ượ y@6 - ưu yw - ươi y@j - ười y@j2 - ưới y@j3 - ưởi y@j4 - ưỡi y@j5 - ượi y@j6 - ươu y@w - ườu y@w2 - ướu y@w3 - ưởu y@w4 - ưỡu y@w5 - ượu y@w6 + ư y + ưi yI + ưa y@ + ươ y@ + ườ y@2 + ướ y@3 + ưở y@4 + ưỡ y@5 + ượ y@6 + ưu yw + ươi y@j + ười y@j2 + ưới y@j3 + ưởi y@j4 + ưỡi y@j5 + ượi y@j6 + ươu y@w + ườu y@w2 + ướu y@w3 + ưởu y@w4 + ưỡu y@w5 + ượu y@w6 .group ừ - ừ y2 - ừi yI2 - ừa y@2 - ừu yw2 + ừ y2 + ừi yI2 + ừa y@2 + ừu yw2 .group ứ - ứ y3 - ứi yI3 - ứa y@3 - ứu yw3 + ứ y3 + ứi yI3 + ứa y@3 + ứu yw3 .group ử - ử y4 - ửi yI4 - ửa y@4 - ửu yw4 + ử y4 + ửi yI4 + ửa y@4 + ửu yw4 .group ữ - ữ y5 - ữi yI5 - ữa y@5 - ữu yw5 + ữ y5 + ữi yI5 + ữa y@5 + ữu yw5 .group ự - ự y6 - ựi yI6 - ựa y@6 - ựu yw6 + ự y6 + ựi yI6 + ựa y@6 + ựu yw6 .group y - y i - y (A j - ya i@ - yà i@2 - yá i@3 - yả i@4 - yã i@5 - yạ i@6 - yê i@ - yề i@2 - yế i@3 - yể i@4 - yễ i@5 - yệ i@6 + y i + y (A j + ya i@ + yà i@2 + yá i@3 + yả i@4 + yã i@5 + yạ i@6 + yê i@ + yề i@2 + yế i@3 + yể i@4 + yễ i@5 + yệ i@6 // yêu i@U .group ỳ - ỳ i2 - ỳ (A j2 - ỳa i@2 + ỳ i2 + ỳ (A j2 + ỳa i@2 .group ý - ý i3 - ý (A j3 - ýa i@3 + ý i3 + ý (A j3 + ýa i@3 .group ỷ - ỷ i4 - ỷ (A j4 - ỷa i@4 + ỷ i4 + ỷ (A j4 + ỷa i@4 .group ỹ - ỹ i5 - ỹ (A j5 - ỹa i@5 + ỹ i5 + ỹ (A j5 + ỹa i@5 .group ỵ - ỵ i6 - ỵ (A j6 - ỵa i@6 + ỵ i6 + ỵ (A j6 + ỵa i@6 + +.group 0xce // Greek letters +// 0xce is the first byte of the utf-8 code for these characters + + α a:1n_|f'a:1 + ά a:1n_|f'a:1 + β b'e1_|t['a:1 + γ Q'a:1_|m'a:1 + δ J'E1n_|t['a:1 + ε E1p_|s'i1_|l'O1n + έ E1p_|s'i1_|l'O1n + ζ D'e1_|t['a:1 + η e1_|t['a:1 + ή e1_|t['a:1 + θ t'e1_|t['a:1 + ι i1_|'o1_|t['a:1 + ί i1_|'o1_|t['a:1 + κ k'a:1p_|p'a:1 + λ l'a1m_|_d'a:1 + μ mw'i1 + ν nw'i1 + ξ s'i7 + ο o1_|m'i1_|kz.'O7n + +.group 0xcf // Greek letters + + π p'i1 + ρ z.'o1 + σ s'i3c_|m'a:1 + ς s'i3c_|m'a:1 + τ t['o1 + υ u1p_|s'i1_|l'O1n + ύ u1p_|s'i1_|l'O1n + φ f'i1 + χ c'i1 + ψ ps'i1 + ω o1_|m'e1_|Q'a:7 + ώ o1_|m'e1_|Q'a:7 + ό o1_|m'i1_|kz.'O7n .group - $ d'o||l'a - % f'@2n||tS;'am + % f'@2n||tS;'am + ! _:c'@3m_|t'a:7n_: + ! (\! +// : koUl@n + D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 + $ d'o||l'a + != x,o1N_|_b'a2N_ + >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N + <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N + + + __) - (_D cr'y2 + A_) - (_D _ + C_) - (_D _ + + + . c'@3m_ + . (. _: + \.) . diff --git a/dictsource/zh_list b/dictsource/zh_list index cef90475..90c21017 100644 --- a/dictsource/zh_list +++ b/dictsource/zh_list @@ -220,11 +220,11 @@ $textmode 护 hu4 横 heng2 环 huan2 -似 shi4 +似 si4 殿 dian4 品 pin3 塞 sai1 -候 hou5 +候 hou4 蛋 dan4 絲 si1 樓 lou2 @@ -1361,7 +1361,7 @@ $textmode 遥 yao2 司 si1 钓 diao4 -训 xun5 +训 xun4 奶 nai3 阿 a1 倦 juan4 @@ -1930,7 +1930,7 @@ $textmode 款 kuan3 臥 wo4 鵲 que5 -訓 xun5 +訓 xun4 鲜 xian1 锭 ding4 奴 nu2 diff --git a/phsource/compile_report b/phsource/compile_report index 31e5804f..b6eb200b 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,4 +1,4 @@ -60 phoneme tables +62 phoneme tables new total base 99 99 consonants 9 107 @@ -17,7 +17,7 @@ consonants 9 107 jbo 2 111 nci 3 120 fi 40 130 - fr 55 137 + fr 56 137 fr_ca 11 137 hi 58 145 ta 21 149 @@ -42,7 +42,7 @@ consonants 9 107 grc 12 124 sv 23 121 no 28 125 - is 32 125 + is 42 135 ru 39 130 vi 41 136 zhy 41 133 @@ -59,7 +59,9 @@ consonants 9 107 ne 18 153 pa 14 147 prs 8 106 + sl 6 130 gd 6 99 + bg 10 115 Data file Used by b/b [b] base @@ -104,7 +106,6 @@ d/dr [*] base [d[] base [d] base2 [d] fi - [d] fr [d.] hi [dh.] hi [d] hu @@ -199,6 +200,7 @@ envelope/p_rise [3] vi [35] zh envelope/vi_5amp [5] vi envelope/vi_6amp [6] vi +g2/g [g] fr g2/xg [gh] hi g/g [g] base [g-] en @@ -251,22 +253,28 @@ j/j_ [j] base [j] zh j/j@ [j] base [j] de + [j/] fr [j] zh j/ja [j] base [j] de + [j/] fr [j] zh j/je [j] base [j] de + [j/] fr [j] zh j/ji [j] base [j] de + [j/] fr [j] zh j/jo [j] base [j] de + [j/] fr [j] zh j/_j_short [j] de j/ju [j] base [j] de + [j/] fr [j] zh j/xj [j] base [j] de @@ -322,12 +330,10 @@ l/l_ [l/] base [l/] fr l/l_@ [l/3] base [W] fr - [Y] fr [l/] fr l/l@ [] base [L] base [W] fr - [Y] fr [l] fr l/L1_aL [l/] base [l/] de @@ -353,7 +359,6 @@ l/l_3 [l/] de l/l_4 [ll] sq l/la [] base [L] base - [a] fr [l] fr l/l_a [l/3] base [l/] fr @@ -373,6 +378,8 @@ l/li [] base l/l_i [l/3] base [l/] fr [i] sq +ll/ll [L] bg +ll/_ll [L] bg l/l_long [l] base [l] fr l/lo [] base @@ -380,15 +387,14 @@ l/lo [] base [l] fr l/l_o [l/3] base [l/] fr - [o2] fr l^/l_rfx [l.] base l/lu [] base [L] base [l] fr - [w^i] fr l/l_u [l/3] base [l/] fr l/l_vi [l] vi +ll/xll [L] bg l/l_y [y] fr l/tl [l] base [l] fr @@ -516,6 +522,8 @@ r3/r_uvl.wav [r"] base r3/rx [*] base [r/] base [r/] af + [r] fr + [r/] fr [r/2] fr [R] fr_ca [x] pt_pt @@ -590,6 +598,7 @@ ufric/ll [L] base [l#] is ufric/s [s] base [s] fr + [z2] fr [s] es [z] sq ufric/s_ [s] base @@ -597,7 +606,6 @@ ufric/s_ [s] base [s2] consonants [s] fr [z] fr - [z2] fr [s] es [z;] ro [z] sq @@ -773,6 +781,7 @@ ustop/t_short [t] fr [t] lv [t] sk [t] el +ustop/t_short_ [t] fr ustop/tsh_pzd [tS;] zh ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_sr [tS] sr @@ -835,7 +844,7 @@ vdiph2/o@ [o@] af vdiph2/oa [Oa] ro [ua] zh vdiph2/o_oo [o@] en_wi - [o] is + [O:] is [o] zh vdiph2/u#@ [U@] en_sc vdiph2/uaa [uo] lv @@ -867,6 +876,8 @@ vdiph/aai_2 [AI] af vdiph/aai_3 [ai] fi vdiph/aau [au] fi [au] lv + [aU] is + [aU:] is vdiph/aau_2 [aU] en_wi [aU] de [VU] nl @@ -900,6 +911,7 @@ vdiph/ai_6 [aI] en_rp vdiph/ai_7 [aI] en_sc [aI2] en_sc [aI] is + [aI:] is vdiph/ai_8 [aI] ta vdiph/aoo [aU] en_us vdiph/au [aU] en @@ -914,7 +926,6 @@ vdiph/au_4 [aU] base2 [aU] eo [aU] sk [aU] it - [aU] is [aU] id vdiph/ee-e [E:] hi vdiph/eei [EI] base2 @@ -946,6 +957,7 @@ vdiph/ei [eI] base2 [eI] la [eI] pt [eI] is + [eI:] is [eI] vi [ei] zhy vdiph/eu [eU] base2 @@ -971,11 +983,13 @@ vdiph/@i_3 [eI] en_wm vdiph/&i_3 [aI] vi vdiph/ii [iI] ro vdiph/i#i [yI] ro +vdiph/oa_fr [w^a] fr vdiph/oi [oI] base2 [OI] en_wm [OY] de [oI] it [OI] la + [OI] is [oI] vi [oI] ne vdiph/oi_2 [oI] af @@ -1001,7 +1015,7 @@ vdiph/ou [ou] fi vdiph/ou_2 [oU] sk [oU] ro vdiph/ou_3 [oU] is - [oU2] is + [oU:] is vdiph/@u [u:] en_wm [@U] vi [@:U] vi @@ -1034,6 +1048,7 @@ vdiph/yi [yi] fi [yi] zh vdiph/y#i [Yi] fi vdiph/y#i_2 [Yy] is + [Yy:] is vdiph/yi_fr [w^i] fr vdiph/y#y [Yy] fi vdiph/y#y_2 [Yy] af @@ -1119,12 +1134,12 @@ vocw/zh [Z] base vocw/zh_rfx [z.] base voc/z [z] base [z] fr + [z2] fr [z;] ro [z] sq voc/z_ [z] base [dz] consonants [z] fr - [z2] fr [z;] ro [z] sq voc/zh [Z] base @@ -1153,6 +1168,7 @@ vowel/@ [@] base [@4] hi [@] hy [@] ml + [@] sl vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1221,6 +1237,7 @@ vowel/a [a] en [a] it [a] zh [a] id + [a] bg vowel/a# [a] base2 [a/] base2 [a2] en_sc @@ -1242,7 +1259,7 @@ vowel/a_2 [a] base2 vowel/a#_2 [a#] pl [&] hr [a2] sv - [&] is + [a] is [a/] sw vowel/a_3 [a] en_sc [a/] en_sc @@ -1252,7 +1269,6 @@ vowel/a_3 [a] en_sc [a:] lv [a:] cs [a:] la - [a] is [A] zh [a] sq [A] da @@ -1278,17 +1294,17 @@ vowel/a#_3 [a2] en [a] ml vowel/a_4 [a/] el [a] vi -vowel/a_5 [a] fr - [a:] ta +vowel/a#_4 [a] bg +vowel/a_5 [a:] ta [a/] it [a] la [a] sv [a] sw [a] tr [a:] ml -vowel/a_6 [a] fr - [a] ca +vowel/a_6 [a] ca [a:] vi +vowel/a_7 [a] fr vowel/aa [A] fr_ca [A] no [A:] no @@ -1316,6 +1332,7 @@ vowel/aa_6 [A] de vowel/aa_7 [A] nl vowel/aa_8 [0] en_us [A:] en_us + [a:] is vowel/aa_9 [a] fi [a:] hi [a] ne @@ -1326,6 +1343,7 @@ vowel/@_bck [@] hi [V] ne [@/] ne [@] pa + [@] bg vowel/e [e] base2 [e:] en [eI] en_n @@ -1353,6 +1371,7 @@ vowel/e [e] base2 [e] ml [e:] ml [e] ne + [e] sl vowel/e# [I] en_sc vowel/e_2 [eI] en_sc [e:] de @@ -1371,7 +1390,7 @@ vowel/e_9 [E2] fr vowel/ee [E] en_n [E] sv vowel/e_e [E] en_sc - [e] is + [E:] is vowel/ee# [E#] pl vowel/ee_1 [E] base2 [e@] en @@ -1381,6 +1400,7 @@ vowel/ee_1 [E] base2 [E:] sv [E:] no [e] zhy + [E] sl vowel/ee_2 [E] cy [E2] nl [E] zh @@ -1422,6 +1442,7 @@ vowel/e_mid [E] en_rp [E2] id [e] hy [E] prs + [e] bg vowel/e_mid2 [E] af [E] de [E2] de @@ -1438,11 +1459,11 @@ vowel/e_mid2 [E] af [e] tr [e] sq [E] da + [e] bg vowel/@_fnt [@] en_wi [@2] en_wi [@2] hr vowel/@_fr [3] en_n - [@2] fr vowel/@_hgh [@] fr [@] hr vowel/i [i] base2 @@ -1471,8 +1492,6 @@ vowel/i [i] base2 vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de - [i] fr - [i-] fr [i] nl [i:] la [i:] sv @@ -1482,7 +1501,7 @@ vowel/i_3 [i] af vowel/i_4 [i] fi [i] hu [I] it - [i] is + [i:] is [i] vi [i] da vowel/i_5 [i:] en_sc @@ -1498,10 +1517,12 @@ vowel/i_6 [i] hi [i] ku [i] id [i] ml + [i] bg vowel/i#_6 [i.] zh vowel/i_7 [i] pl [i] sq vowel/i#_7 [i[] zh +vowel/i_8 [i] fr vowel/i_en [i:] en [i:] en_us vowel/i_fnt [i:] en_wi @@ -1517,6 +1538,7 @@ vowel/ii [I] en_n [I] fr_ca [I] nl [I] is + [I:] is [i] zhy [I] ku [I#] sq @@ -1542,6 +1564,7 @@ vowel/ii_4 [I2] en [I] en_us vowel/ii_5 [I] la [i] zh + [i] bg vowel/ii_6 [I] en_wm [I] en_wi [I2] en_wi @@ -1549,6 +1572,7 @@ vowel/ii_6 [I] en_wm [I] pt [y] pt [i/] pt + [i] is [I] sq vowel/ii_en [i] en [i] sq @@ -1594,6 +1618,7 @@ vowel/o [o] base2 [o] ml [o:] ml [o:] pa + [o] sl vowel/o_2 [o:] cy [o:] hi [o:] hu @@ -1623,6 +1648,7 @@ vowel/o_mid [U@] en_rp [o] hu [o] tr [o] ne + [o] bg vowel/o_mid2 [O] fr vowel/oo [O:] en_sc [O] en_wi @@ -1639,6 +1665,7 @@ vowel/oo [O:] en_sc [O] tr [O] id [o] prs + [o] bg vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -1668,6 +1695,7 @@ vowel/oo_4 [O] base2 vowel/oo_5 [O] pl [O] is [O] sq + [O] sl vowel/oo_en [O] en [O:] en [O@] en @@ -1705,7 +1733,9 @@ vowel/u_2 [u1] fi [u] sk [U] hr [u] ro + [u] is [u] tr + [u] bg vowel/u#_2 [u-] ta [u-] sv vowel/u#_3 [U] ta @@ -1737,7 +1767,7 @@ vowel/u_bck [u] base2 [u] pt [u:] sv [u:] no - [u] is + [u:] is [u] zhy [u] zh [u] sq @@ -1747,6 +1777,7 @@ vowel/u_bck [u] base2 [u#] rw [u] ne [u] pa + [u] bg vowel/u_bck2 [u] fr [u:] fr [u:] la @@ -1773,6 +1804,7 @@ vowel/uu_bck [U] en_wi [U] pa vowel/V [3] en_sc [W#] da + [@] bg vowel/V_2 [V] en [a] af [V] ru @@ -1782,6 +1814,7 @@ vowel/V_3 [V] en_rp [V] hi [V] ta [V] pa + [a] bg vowel/V_4 [V] en_sc [V] da vowel/V_6 [V] en_us @@ -1789,6 +1822,7 @@ vowel/V_6 [V] en_us vowel/y [y] base2 [y:] de [y] fi + [y] fr [y:] hu [y] nl [y] la @@ -1804,14 +1838,14 @@ vowel/y# [Y] base2 [8] nl [Y] ro [oe] zhy -vowel/y## [y#] is -vowel/y_2 [y] fr - [y:] la +vowel/y## [y] is +vowel/y_2 [y:] la [y] zh vowel/y#_2 [Y] hu [Y:] sv vowel/y_3 [y] af vowel/y#_3 [W] is + [W:] is vowel/y_4 [y:] no vowel/y_5 [y:] sv [y] tr @@ -1823,7 +1857,8 @@ vowel/yy_3 [y] sv vowel/yy_4 [y] de [y] hu [y] grc - [y] is + [y:] is + [yI] is [y] hy vwl_af/@ [@] af vwl_af/I [I] af @@ -1867,36 +1902,42 @@ vwl_en_us/oor [0] en_us vwl_en_us/or [o@] en_us [O:] en_sc vwl_en_us/ur [U@] en_us +vwl_fr/@2r [é”] fr +vwl_fr/a2r [é”] fr +vwl_fr/aa2r [é”] fr +vwl_fr/e2r [é”] fr +vwl_fr/ee2r [é”] fr +vwl_fr/i2r [é”] fr +vwl_fr/o2r [é”] fr +vwl_fr/oo2r [é”] fr vwl_fr/r [r] fr [r2] fr -vwl_fr/_r [r] fr -vwl_fr/r_ [r/2] fr -vwl_fr/r_@ [r/2] fr -vwl_fr/r@ [ j] fr +vwl_fr/r_ [r/] fr +vwl_fr/r_@ [r/] fr +vwl_fr/r@ [é”] fr vwl_fr/@R [x] pt_pt -vwl_fr/r_2 [r/2] fr vwl_fr/@R2 [R] fr_ca -vwl_fr/ra [ j] fr -vwl_fr/r_a [r/2] fr -vwl_fr/raa [A~] fr -vwl_fr/r_an [A~] fr -vwl_fr/re [ j] fr -vwl_fr/r_e [r/2] fr -vwl_fr/r_e2 [E] fr -vwl_fr/ri [ j] fr -vwl_fr/r_i [r/2] fr -vwl_fr/ro [ j] fr -vwl_fr/r_o [r/2] fr -vwl_fr/ro2 [O] fr -vwl_fr/r_o2 [O] fr -vwl_fr/ru [ j] fr -vwl_fr/r_u [r/2] fr -vwl_fr/ry [y] fr - [w^i] fr -vwl_fr/r_y [y] fr -vwl_fr/tr [r] fr -vwl_fr/trr [r/2] fr -vwl_fr/xr [ j] fr +vwl_fr/ra [é”] fr +vwl_fr/r_a [r/] fr +vwl_fr/raa [é”] fr +vwl_fr/re [é”] fr +vwl_fr/r_e [r/] fr +vwl_fr/ree [é”] fr +vwl_fr/ri [é”] fr +vwl_fr/r_i [r/] fr +vwl_fr/rj [é”] fr +vwl_fr/r_n [r/] fr +vwl_fr/ro [é”] fr +vwl_fr/r_o [r/] fr +vwl_fr/roo [é”] fr +vwl_fr/rr [r/] fr +vwl_fr/ru [é”] fr +vwl_fr/r_u [r/] fr +vwl_fr/ry [é”] fr +vwl_fr/tr [r/2] fr +vwl_fr/trr [r/] fr +vwl_fr/u2r [é”] fr +vwl_fr/y2r [é”] fr vwl_hi/l-voc [l-] base [l-] sk [l:] sk diff --git a/phsource/l/l_@ b/phsource/l/l_@ index c76b7fdb..56ba4fce 100755 Binary files a/phsource/l/l_@ and b/phsource/l/l_@ differ diff --git a/phsource/l/l_a b/phsource/l/l_a index 71b02499..451f9839 100755 Binary files a/phsource/l/l_a and b/phsource/l/l_a differ diff --git a/phsource/l/l_o b/phsource/l/l_o index 461ecbbe..2434e5a0 100755 Binary files a/phsource/l/l_o and b/phsource/l/l_o differ diff --git a/phsource/l/l_u b/phsource/l/l_u index 01d413dc..c8436b73 100755 Binary files a/phsource/l/l_u and b/phsource/l/l_u differ diff --git a/phsource/l/l_y b/phsource/l/l_y index 3f75233a..5df95086 100755 Binary files a/phsource/l/l_y and b/phsource/l/l_y differ diff --git a/phsource/ph_english b/phsource/ph_english index 96e95f70..284eea67 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -29,7 +29,11 @@ phoneme l // use dark [l/2] before not-vowel lengthmod 7 IF nextPh(isNotVowel) THEN - ChangePhoneme(l/2) + IF prevPh(isNotVowel) THEN + ChangePhoneme(l/) + ELSE + ChangePhoneme(l/2) + ENDIF ENDIF CALL base/l @@ -130,7 +134,7 @@ endphoneme phoneme a vowel starttype #a endtype #a - length 150 + length 160 ChangeIfDiminished(a2) FMT(vowel/a) endphoneme @@ -146,7 +150,7 @@ endphoneme phoneme aa // 'bath' etc. vowel starttype #a endtype #a - length 150 + length 190 IfNextVowelAppend(r-) FMT(vowel/a) endphoneme diff --git a/phsource/ph_french b/phsource/ph_french index bf1a7b2c..282a7fd5 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -1,14 +1,14 @@ //==================================================== // French //==================================================== -// Updated 2010-04-01 Michel Such +// Updated 2010-05-19 Michel Such phoneme #l virtual // Used for l and l/ endphoneme phoneme #r virtual -// Used for r and r/2 +// Used for r, r2 and r/ endphoneme phoneme : // Lengthen previous vowel by "length" @@ -18,20 +18,36 @@ endphoneme procedure pre_post_r - IF prevPh(isVowel) THEN - VowelEnding(vwl_fr/xr) + IF prevPh(y) THEN + VowelEnding(vwl_fr/y2r) + ELIF prevPh(A~) THEN + VowelEnding(vwl_fr/aa2r) + ELIF prevPh(E~) OR prevPh(W~) THEN + VowelEnding(vwl_fr/ee2r) + ELIF prevPh(O~) OR prevPh(W~) THEN + VowelEnding(vwl_fr/oo2r) + ELIF prevPh(isVowel) THEN + PrevVowelEndings + VowelEnding(vwl_fr/@2r) + VowelEnding(vwl_fr/a2r) + VowelEnding(vwl_fr/e2r) + VowelEnding(vwl_fr/i2r) + VowelEnding(vwl_fr/o2r) + VowelEnding(vwl_fr/u2r) + EndSwitch ENDIF - IF nextPhW(isFinalVowel) OR next2Ph(isFinalVowel) THEN - NextVowelStarts - VowelStart(vwl_fr/r@, -10) - VowelStart(vwl_fr/ra, -15) - VowelStart(vwl_fr/re, -10) - VowelStart(vwl_fr/ri, -20) - VowelStart(vwl_fr/ro, -10) - VowelStart(vwl_fr/ru, -10) - EndSwitch - ELSE + IF nextPh(A~) THEN + VowelStart(vwl_fr/raa) + ELIF nextPh(E~) OR nextPh(W~) THEN + VowelStart(vwl_fr/ree) + ELIF nextPh(y) THEN + VowelStart(vwl_fr/ry) + ELIF nextPh(O~) THEN + VowelStart(vwl_fr/roo) + ELIF nextPh(j/) THEN + VowelStart(vwl_fr/rj) + ELIF nextPh(isVowel) THEN NextVowelStarts VowelStart(vwl_fr/r@) VowelStart(vwl_fr/ra) @@ -45,27 +61,27 @@ endprocedure phoneme r - liquid rhotic uvl + liquid rhotic vel nopause starttype #r endtype #r - lengthmod 7 + Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=65 + Vowelout f1=0 f2=1200 -500 500 f3=200 100 len=50 + lengthmod 2 IF nextPh(isNotVowel) THEN - ChangePhoneme(r/2) + ChangePhoneme(r/) ENDIF CALL pre_post_r - IF thisPh(isWordStart) OR prevPhW(r/2) THEN - Vowelout len=50 - FMT(vwl_fr/_r, -30) - ELIF prevPhW(g) OR prevPhW(k) OR prevPhW(p) THEN - FMT(vwl_fr/tr, -40) - ELIF prevPhW(d) OR prevPhW(t) THEN - FMT(vwl_fr/tr, -30) - ELIF prevPhW(f) OR prevPhW(v) OR prevPhW(S) THEN - FMT(vwl_fr/tr, -30) - ELIF prevPhW(b) THEN - FMT(vwl_fr/tr, -20) + IF thisPh(isWordStart) THEN + length 80 + FMT(vwl_fr/r) addWav(r3/rx, 25) + ELIF prevPhW(p) OR prevPhW(k) OR prevPhW(t) OR prevPhW(S) THEN + ChangePhoneme(r/2) + ELIF prevPhW(b) OR prevPhW(d) OR prevPhW(g) THEN + ChangePhoneme(r/2) + ELIF prevPhW(f) OR prevPhW(v) THEN + ChangePhoneme(r/2) ENDIF FMT(vwl_fr/r) @@ -73,11 +89,11 @@ endphoneme phoneme r2 // silent unless followed by vowel - liquid rhotic uvl + liquid rhotic vel starttype #r endtype #r - lengthmod 7 - Vowelin f1=0 f2=1600 -300 300 f3=-200 80 - Vowelout f1=2 f2=1600 -300 300 f3=-300 80 + Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=65 + Vowelout f1=0 f2=1200 -500 500 f3=200 100 len=50 + lengthmod 2 IF nextPh(isNotVowel) THEN ChangePhoneme(NULL) @@ -89,48 +105,51 @@ phoneme r2 // silent unless followed by vowel endphoneme -phoneme r/2 // variant of [r] when not preceding a vowel +phoneme r/ // variant of [r] when not preceding a vowel liquid rhotic vel starttype #r endtype #r - Vowelout f1=2 f2=1600 -300 300 f3=-300 100 len=40 + Vowelout f1=0 f2=1150 -500 500 f3=200 100 len=30 lengthmod 2 - PrevVowelEndings - VowelEnding(vwl_fr/r_@) - VowelEnding(vwl_fr/r_a) - VowelEnding(vwl_fr/r_e) - VowelEnding(vwl_fr/r_i) - VowelEnding(vwl_fr/r_o) - VowelEnding(vwl_fr/r_u) - EndSwitch - - IF prevPh(isVowel) THEN - IF nextPh(isPause) THEN - FMT(vwl_fr/r_2) addWav(r3/rx, 20) - ELSE - FMT(vwl_fr/r_, -30) addWav(r3/rx, 20) - ENDIF - ENDIF - IF thisPh(isWordEnd) THEN IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN FMT(vwl_fr/trr) addWav(r3/rx, 15) - ELIF prevPhW(v) THEN - FMT(vwl_fr/r_, -40) - ELIF prevPhW(f) THEN - FMT(vwl_fr/r_, -10) addWav(r3/rx, 15) - ELIF prevPhW(d) THEN - FMT(vwl_fr/r_) addWav(r3/rx, 15) + ELIF prevPh(isNotVowel) THEN + FMT(vwl_fr/rr) addWav(r3/rx, 15) ENDIF - FMT(vwl_fr/r_) addWav(r3/rx, 15) ENDIF - FMT(vwl_fr/r_) + IF prevPh(isVowel) THEN + PrevVowelEndings + VowelEnding(vwl_fr/r_@) + VowelEnding(vwl_fr/r_a) + VowelEnding(vwl_fr/r_e) + VowelEnding(vwl_fr/r_i) + VowelEnding(vwl_fr/r_o) + VowelEnding(vwl_fr/r_u) + EndSwitch + ENDIF + IF nextPhW(n) OR nextPhW(n^) THEN + FMT(vwl_fr/r_n) addWav(r3/rx, 25) + ENDIF + + FMT(vwl_fr/r_) addWav(r3/rx, 30) +endphoneme + + +phoneme r/2 + liquid rhotic + starttype #r endtype #r + palatal + Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=75 + + CALL pre_post_r + FMT(vwl_fr/tr) addWav(r3/rx, 25) endphoneme phoneme l - liquid + liquid nopause starttype #l endtype #l lengthmod 7 @@ -154,10 +173,9 @@ phoneme l ENDIF IF prevPh(isPause) OR thisPh(isWordStart) THEN - VowelEnding(NULL) FMT(l/_l) ENDIF - IF prevPh(r/2) THEN + IF prevPh(isRhotic) THEN FMT(l/_l) ENDIF @@ -208,32 +226,25 @@ phoneme @ endphoneme -phoneme @2 - vowel starttype #@ endtype #@ - length 160 - FMT(vowel/@_fr) -endphoneme - - phoneme a vowel starttype #a endtype #a - length 170 - - IF prevPh(l) THEN - VowelStart(l/la, -15) + IF nextPh(isVowel) THEN + length 220 + ELSE + length 170 ENDIF - IF prevPhW(w) OR prevPhW(w/) THEN - FMT(vowel/a_5) - ENDIF - - FMT(vowel/a_6) + FMT(vowel/a_7) endphoneme phoneme e vowel starttype #e endtype #e - length 170 + IF nextPh(isVowel) THEN + length 220 + ELSE + length 170 + ENDIF IF nextPh(l/) THEN VowelEnding(l/xl, -20) @@ -250,10 +261,6 @@ phoneme E vowel starttype #e endtype #e length 170 - IF nextPh(r/2) THEN - VowelEnding(vwl_fr/r_e2) - ENDIF - IF nextPhW(j) THEN length 190 ENDIF @@ -272,19 +279,18 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 160 + + IF prevPhW(#r) AND nextPhW(isVowel) THEN + ChangePhoneme(j/) + ELIF nextPhW(isVowel) THEN + ChangePhoneme(j) + ELSE + length 160 + ENDIF IfNextVowelAppend(;) - FMT(vowel/i_2) -endphoneme - - -phoneme i- // shorter - vowel starttype #i endtype #i - length 110 - - FMT(vowel/i_2) + FMT(vowel/i_8) endphoneme @@ -298,40 +304,70 @@ phoneme i: // longer than i endphoneme +phoneme j/ // Short "i" between "r" and a vowel + vowel starttype #i endtype #i + palatal + + IF nextPh(isVowel) THEN + NextVowelStarts + VowelStart(j/j@) + VowelStart(j/ja) + VowelStart(j/je) + VowelStart(j/ji) + VowelStart(j/jo) + VowelStart(j/ju) + EndSwitch + ELSE + ChangePhoneme(NULL) + ENDIF +endphoneme + + phoneme o vowel starttype #o endtype #o - length 170 + IF nextPh(isVowel) THEN + length 220 + ELSE + length 170 + ENDIF IF thisPh(isFinalVowel) THEN IF thisPh(isWordEnd) THEN FMT(vowel/o_8) ELIF nextPh(p2) OR nextPh(t2) OR nextPh(z2) THEN FMT(vowel/o_8) + ELIF nextPh(z) THEN + FMT(vowel/o) ELSE ChangePhoneme(O) ENDIF ELSE IF nextPhW(isLiquid) AND next2Ph(isNotVowel) THEN ChangePhoneme(O) - ELIF nextPhW(isNasal) AND next2Ph(isNotVowel) THEN + ELIF nextPhW(n) AND next2Ph(j) THEN + FMT(vowel/o) + ELIF nextPhW(isNasal) AND next2Ph(isLiquid) THEN ChangePhoneme(O) ELIF nextPhW(isNotVowel) AND next2Ph(isNasal) THEN ChangePhoneme(O) + ELIF nextPhW(d) AND next2Ph(isNotVowel) THEN + ChangePhoneme(O) ELIF nextPhW(t) AND next2Ph(isLiquid) AND nextVowel(isFinalVowel) THEN ChangePhoneme(O) ELSE FMT(vowel/o) ENDIF + FMT(vowel/o) ENDIF endphoneme phoneme o2 vowel starttype #o endtype #o - length 170 - - IF nextPh(l/) THEN - VowelEnding(l/l_o) + IF nextPh(isVowel) THEN + length 220 + ELSE + length 170 ENDIF IF thisPh(isFinalVowel) THEN @@ -344,15 +380,12 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 180 - - IF prevPhW(#r) THEN - VowelStart(vwl_fr/ro2) + IF nextPhW(#r) THEN + length 200 + ELSE + length 170 ENDIF - IF nextPhW(r/2) THEN - VowelEnding(vwl_fr/r_o2) - ENDIF FMT(vowel/o_mid2) endphoneme @@ -366,7 +399,11 @@ endphoneme phoneme u vowel starttype #u endtype #u - length 180 + IF nextPh(isVowel) OR nextPh(j) THEN + length 220 + ELSE + length 180 + ENDIF FMT(vowel/u_bck2) endphoneme @@ -381,29 +418,19 @@ endphoneme phoneme y vowel starttype #u endtype #u - length 170 + IF nextPh(isVowel) THEN + length 200 + ELSE + length 170 + ENDIF IF nextPh(l/) THEN - VowelEnding(l/l_y, -30) + VowelEnding(l/l_y) + ELIF nextPhW(E~) THEN + FMT(vowel/y, -30) ENDIF - IF prevPh(#r) THEN - IF thisPh(isFinalVowel) THEN - VowelStart(vwl_fr/ry, -10) - ELSE - VowelStart(vwl_fr/ry) - ENDIF - ENDIF - - IF nextPh(r/2) THEN - VowelEnding(vwl_fr/r_y) - ENDIF - - IF nextPhW(E~) THEN - FMT(vowel/y_2, -30) - ENDIF - - FMT(vowel/y_2) + FMT(vowel/y) endphoneme @@ -427,14 +454,6 @@ phoneme Y vowel starttype #@ endtype #@ length 170 - IF prevPh(l) THEN - VowelStart(l/l@, -20) - ENDIF - - IF nextPh(l/) THEN - VowelEnding(l/l_@, -20) - ENDIF - IF thisPh(isFinalVowel) THEN IF thisPh(isWordEnd) THEN FMT(vowel/y#) @@ -458,8 +477,7 @@ endphoneme phoneme w vowel starttype #u endtype #u - IF prevPhW(#r) OR prevPhW(#l) THEN - + IF prevPh(#r) OR prevPhW(#l) THEN NextVowelStarts VowelStart(w/w@) VowelStart(w/wa, -10) @@ -479,16 +497,19 @@ phoneme w/ endphoneme +phoneme w^a + vowel starttype #o endtype #a + length 200 + + FMT(vdiph/oa_fr) +endphoneme + + phoneme w^i vowel starttype #u endtype #i length 240 - IF prevPhW(l) THEN - VowelStart(l/lu, -20) - ENDIF - IF prevPhW(#r) THEN - VowelStart(vwl_fr/ry) - ENDIF + IfNextVowelAppend(;) FMT(vdiph/yi_fr) endphoneme @@ -497,17 +518,6 @@ endphoneme phoneme A~ vowel starttype #a endtype #a length 190 - IF nextPh(r/2) THEN - VowelEnding(vwl_fr/r_an) - ENDIF - - IF prevPhW(#r) THEN - IF thisPh(isFinalVowel) THEN - VowelStart(vwl_fr/raa, -15) - ELSE - VowelStart(vwl_fr/raa, -10) - ENDIF - ENDIF FMT(vnasal/aa_n4) endphoneme @@ -586,8 +596,13 @@ phoneme b FMT(b/xb) ENDIF - IF nextPh(isPause2) OR nextPh(#l) THEN + IF nextPh(isPause2) OR nextPh(l) THEN FMT(b/b_) addWav(x/b_) + ELIF nextPh(l/) THEN + FMT(b/b) + ELIF nextPh(#r) THEN + length 40 + FMT(b/b) addWav(x/b, 50) ENDIF FMT(b/b) addWav(x/b, 70) @@ -605,12 +620,8 @@ phoneme d FMT(d/xd) ENDIF - IF nextPh(isPause2) OR nextPh(isPause) THEN + IF nextPh(isPause2) THEN FMT(d/d_) addWav(x/d_, 50) - ELIF nextPh(#r) THEN - FMT(d/dr) addWav(x/d, 30) - ELIF prevPh(isPause) THEN - FMT(d/d) addWav(x/d, 50) ENDIF FMT(d/d) addWav(x/d, 40) @@ -630,6 +641,8 @@ phoneme g IF nextPh(isPause2) THEN FMT(g/g_) addWav(x/g_) + ELIF nextPhW(#r) THEN + FMT(g2/g) addWav(x/g, 20) ENDIF FMT(g/g) addWav(x/g, 20) @@ -650,9 +663,12 @@ phoneme k WAV(ustop/ki, 45) ELIF nextPh(#l) THEN WAV(ustop/kl, 40) + ELIF nextPh(#r) THEN + length 50 + WAV(ustop/k, 50) ENDIF - WAV(ustop/k, 35) + WAV(ustop/k, 40) endphoneme @@ -680,6 +696,9 @@ phoneme p WAV(ustop/p_unasp, 60) ELIF nextPh(#l) THEN WAV(ustop/pl, 30) + ELIF nextPh(#r) THEN + length 40 + WAV(ustop/p_, 60) ENDIF WAV(ustop/p_unasp_, 90) endphoneme @@ -738,13 +757,14 @@ phoneme t vls alv stop voicingswitch d lengthmod 2 - Vowelin f1=0 f2=1600 -300 300 f3=-100 80 - Vowelout f1=0 f2=1600 -300 250 f3=-100 80 brk + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 IF nextPh(isPause2) THEN WAV(ustop/t_, 40) - ELIF nextPh(r/2) THEN - WAV(ustop/t_short, 50) + ELIF nextPh(#r) THEN + length 40 + WAV(ustop/t_short_, 40) ENDIF WAV(ustop/t_short, 40) @@ -757,7 +777,7 @@ phoneme t2 // silent unless followed by vowel Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 lengthmod 2 - IF nextPh(isVowel) OR nextPh(w) THEN + IF nextPh(isVowel) OR nextPh(w) OR nextPh(j) THEN WAV(ustop/t_short, 30) ELSE ChangePhoneme(NULL) @@ -797,7 +817,7 @@ phoneme v ENDIF IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN Length 70 - ELIF nextPhW(w) THEN + ELIF nextPhW(w) OR nextPhW(#r) THEN Length 50 ENDIF FMT(voc/v) addWav(vocw/v, 60) @@ -828,8 +848,8 @@ endphoneme phoneme z2 // silent unless followed by vowel vcd alv frc sibilant - IF nextPh(isVowel) OR nextPh(w/) THEN - FMT(voc/z_, -20) addWav(ufric/s_, 40) + IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN + FMT(voc/z, -20) addWav(ufric/s, 40) ELSE ChangePhoneme(NULL) ENDIF diff --git a/phsource/ph_icelandic b/phsource/ph_icelandic index 31076b5e..2a1838d9 100644 --- a/phsource/ph_icelandic +++ b/phsource/ph_icelandic @@ -17,10 +17,19 @@ phoneme i vowel starttype #i endtype #i length 130 IfNextVowelAppend(;) + FMT(vowel/ii_6) +endphoneme + +phoneme i: + vowel starttype #i endtype #i + length 230 + IfNextVowelAppend(;) + ChangeIfNotStressed(i) FMT(vowel/i_4) endphoneme + phoneme I vowel starttype #i endtype #i length 130 @@ -28,77 +37,101 @@ phoneme I FMT(vowel/ii) endphoneme - -phoneme e - vowel starttype #e endtype #e - length 130 - ChangeIfNotStressed(E) - FMT(vowel/e_e) +phoneme I: + vowel starttype #i endtype #i + length 230 + IfNextVowelAppend(;) + ChangeIfNotStressed(I) + FMT(vowel/ii) endphoneme + phoneme E vowel starttype #e endtype #e length 130 FMT(vowel/e_mid) endphoneme - -phoneme a - vowel starttype #a endtype #a +phoneme E: + vowel starttype #e endtype #e length 130 - ChangeIfNotStressed(&) - FMT(vowel/a_3) + FMT(vowel/e_e) endphoneme -phoneme & + +phoneme a vowel starttype #@ endtype #@ length 130 FMT(vowel/a#_2) endphoneme - -phoneme o - vowel starttype #o endtype #o - length 130 - ChangeIfNotStressed(O) - FMT(vdiph2/o_oo) +phoneme a: + vowel starttype #a endtype #a + length 230 + ChangeIfNotStressed(a) + FMT(vowel/aa_8) endphoneme + phoneme O vowel starttype #o endtype #o length 130 FMT(vowel/oo_5) endphoneme +phoneme O: + vowel starttype #o endtype #o + length 230 + ChangeIfNotStressed(O) + FMT(vdiph2/o_oo) +endphoneme + phoneme u vowel starttype #u endtype #u length 130 + FMT(vowel/u_2) +endphoneme + +phoneme u: + vowel starttype #u endtype #u + length 230 + ChangeIfNotStressed(u) FMT(vowel/u_bck) endphoneme phoneme y - vowel starttype #i endtype #i - length 130 - FMT(vowel/yy_4) -endphoneme - -phoneme y# vowel starttype #@ endtype #@ length 130 FMT(vowel/y##) endphoneme + +phoneme y: + vowel starttype #i endtype #i + length 230 + ChangeIfNotStressed(y) + FMT(vowel/yy_4) +endphoneme + + phoneme W vowel starttype #@ endtype #@ length 130 FMT(vowel/y#_3) endphoneme +phoneme W: + vowel starttype #@ endtype #@ + length 130 + ChangeIfNotStressed(W) + FMT(vowel/y#_3) +endphoneme + phoneme aI vowel starttype #a endtype #i @@ -106,36 +139,82 @@ phoneme aI FMT(vdiph/ai_7) endphoneme +phoneme aI: + vowel starttype #a endtype #i + length 230 + ChangeIfNotStressed(aI) + FMT(vdiph/ai_7) +endphoneme + + phoneme eI vowel starttype #e endtype #i length 170 FMT(vdiph/ei) endphoneme +phoneme eI: + vowel starttype #e endtype #i + length 230 + ChangeIfNotStressed(eI) + FMT(vdiph/ei) +endphoneme + + phoneme aU vowel starttype #a endtype #u length 170 - FMT(vdiph/au_4) + FMT(vdiph/aau) endphoneme +phoneme aU: + vowel starttype #a endtype #u + length 230 + ChangeIfNotStressed(aU) + FMT(vdiph/aau) +endphoneme + + phoneme oU vowel starttype #o endtype #u length 170 FMT(vdiph/ou_3) endphoneme -phoneme oU2 // long version for óf +phoneme oU: // long version for óf vowel starttype #o endtype #u length 230 + ChangeIfNotStressed(oU) FMT(vdiph/ou_3) endphoneme + phoneme Yy vowel starttype #@ endtype #i length 150 FMT(vdiph/y#i_2) endphoneme +phoneme Yy: + vowel starttype #@ endtype #i + length 220 + ChangeIfNotStressed(Yy) + FMT(vdiph/y#i_2) +endphoneme + + +phoneme OI + vowel starttype #o endtype #i + length 210 + FMT(vdiph/oi) +endphoneme + +phoneme yI + vowel starttype #i endtype #i + length 180 + FMT(vowel/yy_4) +endphoneme + // Consonants diff --git a/phsource/phonemes b/phsource/phonemes index 0403f6aa..2a1826c1 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1677,5 +1677,11 @@ include ph_punjabi phonemetable prs base include ph_dari +phonemetable sl sk +include ph_slovenian + phonemetable gd base include ph_s_gaelic + +phonemetable bg pl +include ph_bulgarian diff --git a/phsource/vnasal/aa_n4 b/phsource/vnasal/aa_n4 index 8d38cfc9..e2acca77 100755 Binary files a/phsource/vnasal/aa_n4 and b/phsource/vnasal/aa_n4 differ diff --git a/phsource/vowel/@_bck b/phsource/vowel/@_bck index 24dbe9ad..46e8d160 100644 Binary files a/phsource/vowel/@_bck and b/phsource/vowel/@_bck differ diff --git a/phsource/vowel/a_6 b/phsource/vowel/a_6 index 522b2fa4..18c77962 100755 Binary files a/phsource/vowel/a_6 and b/phsource/vowel/a_6 differ diff --git a/phsource/vowel/a_en b/phsource/vowel/a_en deleted file mode 100644 index 1fa61373..00000000 Binary files a/phsource/vowel/a_en and /dev/null differ diff --git a/phsource/vowel/e_8 b/phsource/vowel/e_8 index fa834411..2c62a046 100755 Binary files a/phsource/vowel/e_8 and b/phsource/vowel/e_8 differ diff --git a/phsource/vowel/e_mid b/phsource/vowel/e_mid index f7d8fb11..b1ccc460 100644 Binary files a/phsource/vowel/e_mid and b/phsource/vowel/e_mid differ diff --git a/phsource/vowel/o- b/phsource/vowel/o- index 55d0c8ad..7948b08d 100644 Binary files a/phsource/vowel/o- and b/phsource/vowel/o- differ diff --git a/phsource/vowel/o_mid2 b/phsource/vowel/o_mid2 index 9024d6fe..077cb61a 100755 Binary files a/phsource/vowel/o_mid2 and b/phsource/vowel/o_mid2 differ diff --git a/phsource/vowel/u_bck2 b/phsource/vowel/u_bck2 index 18d9f4b7..d3610436 100644 Binary files a/phsource/vowel/u_bck2 and b/phsource/vowel/u_bck2 differ diff --git a/phsource/vowel/vowelchart.png b/phsource/vowel/vowelchart.png index 6ae324a6..a4f69314 100644 Binary files a/phsource/vowel/vowelchart.png and b/phsource/vowel/vowelchart.png differ diff --git a/phsource/vwl_fr/@2r b/phsource/vwl_fr/@2r new file mode 100755 index 00000000..1c05306b Binary files /dev/null and b/phsource/vwl_fr/@2r differ diff --git a/phsource/vwl_fr/_r b/phsource/vwl_fr/_r index c84393dc..2d92579c 100755 Binary files a/phsource/vwl_fr/_r and b/phsource/vwl_fr/_r differ diff --git a/phsource/vwl_fr/_r2 b/phsource/vwl_fr/_r2 deleted file mode 100755 index 50235a1a..00000000 Binary files a/phsource/vwl_fr/_r2 and /dev/null differ diff --git a/phsource/vwl_fr/a2r b/phsource/vwl_fr/a2r new file mode 100755 index 00000000..df7d7ca6 Binary files /dev/null and b/phsource/vwl_fr/a2r differ diff --git a/phsource/vwl_fr/aa2r b/phsource/vwl_fr/aa2r new file mode 100755 index 00000000..090b3d61 Binary files /dev/null and b/phsource/vwl_fr/aa2r differ diff --git a/phsource/vwl_fr/e2r b/phsource/vwl_fr/e2r new file mode 100755 index 00000000..8a75c78d Binary files /dev/null and b/phsource/vwl_fr/e2r differ diff --git a/phsource/vwl_fr/ee2r b/phsource/vwl_fr/ee2r new file mode 100755 index 00000000..29a5a17c Binary files /dev/null and b/phsource/vwl_fr/ee2r differ diff --git a/phsource/vwl_fr/i2r b/phsource/vwl_fr/i2r new file mode 100755 index 00000000..07654f0a Binary files /dev/null and b/phsource/vwl_fr/i2r differ diff --git a/phsource/vwl_fr/o2r b/phsource/vwl_fr/o2r new file mode 100755 index 00000000..4662dff6 Binary files /dev/null and b/phsource/vwl_fr/o2r differ diff --git a/phsource/vwl_fr/oo2r b/phsource/vwl_fr/oo2r new file mode 100755 index 00000000..883525b8 Binary files /dev/null and b/phsource/vwl_fr/oo2r differ diff --git a/phsource/vwl_fr/r b/phsource/vwl_fr/r index f8dc75ef..78e9d068 100755 Binary files a/phsource/vwl_fr/r and b/phsource/vwl_fr/r differ diff --git a/phsource/vwl_fr/r@ b/phsource/vwl_fr/r@ index ad2b4334..5c4db707 100755 Binary files a/phsource/vwl_fr/r@ and b/phsource/vwl_fr/r@ differ diff --git a/phsource/vwl_fr/r_ b/phsource/vwl_fr/r_ index 37f766e4..cc14e196 100755 Binary files a/phsource/vwl_fr/r_ and b/phsource/vwl_fr/r_ differ diff --git a/phsource/vwl_fr/r_@ b/phsource/vwl_fr/r_@ index cb18603a..13aa950f 100755 Binary files a/phsource/vwl_fr/r_@ and b/phsource/vwl_fr/r_@ differ diff --git a/phsource/vwl_fr/r_a b/phsource/vwl_fr/r_a index 53f870fe..87d5b268 100755 Binary files a/phsource/vwl_fr/r_a and b/phsource/vwl_fr/r_a differ diff --git a/phsource/vwl_fr/r_an b/phsource/vwl_fr/r_an index 177f0fcf..1d29d11c 100755 Binary files a/phsource/vwl_fr/r_an and b/phsource/vwl_fr/r_an differ diff --git a/phsource/vwl_fr/r_e b/phsource/vwl_fr/r_e index 872daa1d..90197ac9 100755 Binary files a/phsource/vwl_fr/r_e and b/phsource/vwl_fr/r_e differ diff --git a/phsource/vwl_fr/r_i b/phsource/vwl_fr/r_i index e50505ff..b2779443 100755 Binary files a/phsource/vwl_fr/r_i and b/phsource/vwl_fr/r_i differ diff --git a/phsource/vwl_fr/r_n b/phsource/vwl_fr/r_n new file mode 100755 index 00000000..21a0de8e Binary files /dev/null and b/phsource/vwl_fr/r_n differ diff --git a/phsource/vwl_fr/r_o b/phsource/vwl_fr/r_o index b61651ae..273efcbe 100755 Binary files a/phsource/vwl_fr/r_o and b/phsource/vwl_fr/r_o differ diff --git a/phsource/vwl_fr/r_u b/phsource/vwl_fr/r_u index 008c6a7f..50a8369e 100755 Binary files a/phsource/vwl_fr/r_u and b/phsource/vwl_fr/r_u differ diff --git a/phsource/vwl_fr/r_y b/phsource/vwl_fr/r_y index 50d7d952..7b599ca5 100755 Binary files a/phsource/vwl_fr/r_y and b/phsource/vwl_fr/r_y differ diff --git a/phsource/vwl_fr/ra b/phsource/vwl_fr/ra index d3ffcb30..40d5b741 100755 Binary files a/phsource/vwl_fr/ra and b/phsource/vwl_fr/ra differ diff --git a/phsource/vwl_fr/raa b/phsource/vwl_fr/raa index 11998d04..179ff546 100755 Binary files a/phsource/vwl_fr/raa and b/phsource/vwl_fr/raa differ diff --git a/phsource/vwl_fr/re b/phsource/vwl_fr/re index 83087ced..f72f9bb1 100755 Binary files a/phsource/vwl_fr/re and b/phsource/vwl_fr/re differ diff --git a/phsource/vwl_fr/ree b/phsource/vwl_fr/ree new file mode 100755 index 00000000..fc9f779c Binary files /dev/null and b/phsource/vwl_fr/ree differ diff --git a/phsource/vwl_fr/ri b/phsource/vwl_fr/ri index 5ba4c413..a2dff89b 100755 Binary files a/phsource/vwl_fr/ri and b/phsource/vwl_fr/ri differ diff --git a/phsource/vwl_fr/rj b/phsource/vwl_fr/rj new file mode 100755 index 00000000..a0dbe141 Binary files /dev/null and b/phsource/vwl_fr/rj differ diff --git a/phsource/vwl_fr/ro b/phsource/vwl_fr/ro index 0e50ca3f..de97a1ff 100755 Binary files a/phsource/vwl_fr/ro and b/phsource/vwl_fr/ro differ diff --git a/phsource/vwl_fr/roo b/phsource/vwl_fr/roo new file mode 100755 index 00000000..75b14378 Binary files /dev/null and b/phsource/vwl_fr/roo differ diff --git a/phsource/vwl_fr/rr b/phsource/vwl_fr/rr new file mode 100755 index 00000000..f54d5f00 Binary files /dev/null and b/phsource/vwl_fr/rr differ diff --git a/phsource/vwl_fr/ru b/phsource/vwl_fr/ru index 8b9240c5..60eca337 100755 Binary files a/phsource/vwl_fr/ru and b/phsource/vwl_fr/ru differ diff --git a/phsource/vwl_fr/ry b/phsource/vwl_fr/ry index 7bb5509c..6c07b3ed 100755 Binary files a/phsource/vwl_fr/ry and b/phsource/vwl_fr/ry differ diff --git a/phsource/vwl_fr/tr b/phsource/vwl_fr/tr index 60d7d26b..53e3cc9c 100755 Binary files a/phsource/vwl_fr/tr and b/phsource/vwl_fr/tr differ diff --git a/phsource/vwl_fr/trr b/phsource/vwl_fr/trr new file mode 100755 index 00000000..af1e45af Binary files /dev/null and b/phsource/vwl_fr/trr differ diff --git a/phsource/vwl_fr/u2r b/phsource/vwl_fr/u2r new file mode 100755 index 00000000..24f9589b Binary files /dev/null and b/phsource/vwl_fr/u2r differ diff --git a/phsource/vwl_fr/w_a b/phsource/vwl_fr/w_a deleted file mode 100755 index 4c6f3f3f..00000000 Binary files a/phsource/vwl_fr/w_a and /dev/null differ diff --git a/phsource/vwl_fr/xr b/phsource/vwl_fr/xr index 93c42149..394c2912 100755 Binary files a/phsource/vwl_fr/xr and b/phsource/vwl_fr/xr differ diff --git a/platforms/windows/espeakedit/src/speech.h b/platforms/windows/espeakedit/src/speech.h index ba393a9e..ac289b4f 100755 --- a/platforms/windows/espeakedit/src/speech.h +++ b/platforms/windows/espeakedit/src/speech.h @@ -50,7 +50,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); diff --git a/platforms/windows/espeakedit/src_copy/speech.h b/platforms/windows/espeakedit/src_copy/speech.h index ba393a9e..ac289b4f 100755 --- a/platforms/windows/espeakedit/src_copy/speech.h +++ b/platforms/windows/espeakedit/src_copy/speech.h @@ -50,7 +50,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 16fd672d..a6aa9d6d 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.42 +AppVerName=eSpeak version 1.43.24 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -94,6 +94,8 @@ var UILanguage: Integer; UIVoice: String; Page: TInputQueryWizardPage; + voices_installed: array [0..200] of String; + n_voices_installed: Integer; const sEspeak = 'eSpeak-'; @@ -329,6 +331,7 @@ end; procedure SetupVoice(Voice: String; Index: Integer); var + ix: Integer; RegVoice2: String; RegVoice2a: String; VoiceUC: String; @@ -348,6 +351,16 @@ begin VoiceUC := 'default' else VoiceUC := Uppercase(Voice); + + // check for duplicate voice names + for ix := 0 to n_voices_installed - 1 do begin + if voices_installed[ix] = VoiceUC then + Exit; + end; + if n_voices_installed < 200 then begin + voices_installed[n_voices_installed] := VoiceUC; + n_voices_installed := n_voices_installed + 1; + end; RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'',sEspeak+VoiceUC); RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'CLSID','{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}'); @@ -439,7 +452,7 @@ begin Page.Values[0] := Format('%s',[UIVoice]); Page.Values[1] := Format('%s',[voice2]); - + n_voices_installed := 0; end; procedure ClearRegistry; diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index 375fd937..303dcf25 100755 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,7 +1,7 @@ [Setup] AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.42 +AppVerName=eSpeakEdit version 1.43.24 DefaultDirName={pf}\eSpeak DefaultGroupName=eSpeak OutputBaseFilename=setup_espeakedit diff --git a/platforms/windows/windows_cmd/src/speech.h b/platforms/windows/windows_cmd/src/speech.h index 861e7d52..9c0c1c4b 100755 --- a/platforms/windows/windows_cmd/src/speech.h +++ b/platforms/windows/windows_cmd/src/speech.h @@ -48,7 +48,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); diff --git a/platforms/windows/windows_dll/src/speech.h b/platforms/windows/windows_dll/src/speech.h index 5d6127cb..dcafdce6 100755 --- a/platforms/windows/windows_dll/src/speech.h +++ b/platforms/windows/windows_dll/src/speech.h @@ -49,7 +49,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); diff --git a/platforms/windows/windows_sapi/src/speech.h b/platforms/windows/windows_sapi/src/speech.h index f1fcd0b7..9cef021b 100755 --- a/platforms/windows/windows_sapi/src/speech.h +++ b/platforms/windows/windows_sapi/src/speech.h @@ -52,7 +52,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); diff --git a/platforms/windows/windows_sapi/ttsengobj.cpp b/platforms/windows/windows_sapi/ttsengobj.cpp index 9c43214b..3a2525a5 100755 --- a/platforms/windows/windows_sapi/ttsengobj.cpp +++ b/platforms/windows/windows_sapi/ttsengobj.cpp @@ -402,9 +402,11 @@ STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken) espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,1); espeak_SetSynthCallback(SynthCallback); initialised = 1; - g_voice_name[0] = 0; +// g_voice_name[0] = 0; } + strcpy(g_voice_name, voice_name); + espeak_SetVoiceByName(g_voice_name); return hr; } /* CTTSEngObj::SetObjectToken */ diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 351fdd46..3b0f46a2 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -177,6 +177,35 @@ enum { }; +enum { + kTUNE = 1, + kENDTUNE, + kTUNE_PREHEAD, + kTUNE_ONSET, + kTUNE_HEAD, + kTUNE_HEADEXTEND, + kTUNE_HEADLAST, + kTUNE_UNSTRESSED, + kTUNE_NUCLEUS0, + kTUNE_NUCLEUS1, + kTUNE_SPLIT, +}; + +static keywtab_t k_intonation[] = { + {"tune", 0, kTUNE}, + {"endtune", 0, kENDTUNE}, + {"prehead", 0, kTUNE_PREHEAD}, + {"onset", 0, kTUNE_ONSET}, + {"head", 0, kTUNE_HEAD}, + {"headextend", 0, kTUNE_HEADEXTEND}, + {"headlast", 0, kTUNE_HEADLAST}, + {"unstressed",0, kTUNE_UNSTRESSED}, + {"nucleus0", 0, kTUNE_NUCLEUS0}, + {"nucleus1", 0, kTUNE_NUCLEUS1}, + {"split", 0, kTUNE_SPLIT}, + {NULL, 0, -1} +}; + static keywtab_t keywords[] = { {"vowel", tPHONEME_TYPE, phVOWEL}, {"liquid", tPHONEME_TYPE, phLIQUID}, @@ -271,6 +300,7 @@ static keywtab_t keywords[] = { {"rhotic", tPHONEME_FLAG, phRHOTIC}, {"nonsyllabic",tPHONEME_FLAG, phNONSYLLABIC}, {"lengthenstop",tPHONEME_FLAG, phLENGTHENSTOP}, + {"nopause", tPHONEME_FLAG, phNOPAUSE}, // voiced / unvoiced {"vcd", tPHONEME_FLAG, phVOICED}, @@ -310,7 +340,7 @@ static keywtab_t keywords[] = { static keywtab_t *keyword_tabs[] = { -keywords, k_conditions, k_properties }; +keywords, k_conditions, k_properties, k_intonation }; static PHONEME_TAB *phoneme_out; @@ -621,6 +651,7 @@ enum { tKEYWORD, tCONDITION, tPROPERTIES, + tINTONATION, }; int item_type; @@ -982,7 +1013,7 @@ static void error(const char *format, const char *string) static void Error(const char *string) {//================================== - error(string,NULL); + error("%s",string); } static FILE *fopen_log(FILE *f_log, const char *fname,const char *access) @@ -1149,6 +1180,15 @@ static void unget_char(unsigned int c) } +int CheckNextChar() +{//================ + int c; + while(((c = get_char()) == ' ') || (c == '\t')); + unget_char(c); + return(c); +} // end of CheckNextChar + + static int NextItem(int type) {//========================== int acc; @@ -1243,7 +1283,12 @@ static int NextItem(int type) p++; } if(!isdigit(*p)) - error("Expected a number",NULL); + { + if((type == tNUMBER) && (*p == '-')) + error("Expected an unsigned number",NULL); + else + error("Expected a number",NULL); + } while(isdigit(*p)) { acc *= 10; @@ -1254,7 +1299,7 @@ static int NextItem(int type) } - if((type >= tKEYWORD) && (type <= tPROPERTIES)) + if((type >= tKEYWORD) && (type <= tINTONATION)) { pk = keyword_tabs[type-tKEYWORD]; while(pk->mnem != NULL) @@ -3020,6 +3065,7 @@ static void CompilePhonemeFiles() } // end of CompilePhonemeFiles + static void CompilePhonemeData2(const char *source) {//================================================ char fname[sizeof(path_source)+40]; @@ -3110,7 +3156,7 @@ memset(markers_used,0,sizeof(markers_used)); if(gui_flag) { - progress = new wxProgressDialog(_T("Phonemes"),_T(""),progress_max); + progress = new wxProgressDialog(_T("Compiling"),_T(""),progress_max); } else { @@ -3260,6 +3306,235 @@ void CompileMbrola() +static const TUNE default_tune = { +0, {0,0,0,0}, +{0, 40, 24, 8, 0, 0, 0, 0}, +46, 57, 255, 78, 50, 255, +PITCHfall, 0, +3, 5, +7, 7, 0, +PITCHfall, 64, 8, +PITCHfall, 70, 18, 24, 12, +PITCHfall, 70, 18, 24, 12, +{0,0,0,0,0,0,0,0,0,0} +}; + +TUNE new_tune; + +#define N_TUNE_NAMES 100 + +static MNEM_TAB envelope_names[] = { + {"fall", 0}, + {"rise", 1}, + {"fall_rise", 2}, + {"fall_rise2", 3}, + {"rise_fall", 4}, + {NULL, -1} }; + + +// env_fallrise3, env_fallrise3, +// env_fallrise4, env_fallrise4, +// env_fall2, env_fall2, +// env_rise2, env_rise2, +// env_risefallrise, env_risefallrise + +int LookupEnvelope(const char *name) +{//================================= + return(LookupMnem(envelope_names, name)); +} + + +void CompileIntonation() +{//===================== + int ix; + char *p; + char c; + int keyword; + int compiling_tune = 0; + int n_tune_names = 0; + int done_split; + int n_tunes = 0; + FILE *f_out; + wxString report; + + char name[5]; + unsigned int tune_names[N_TUNE_NAMES]; + char buf[sizeof(path_source)+120]; + + error_count = 0; + + sprintf(buf,"%s%s",path_source,"error_intonation"); + if((f_errors = fopen(buf,"w")) == NULL) + f_errors = stderr; + + sprintf(buf,"%sintonation",path_source); + f_in = fopen_log(f_errors, buf, "r"); + if(f_in == NULL) + { + fclose(f_errors); + return; + } + + sprintf(buf,"%s/intonations",path_home); + f_out = fopen_log(f_errors, buf, "w"); + if(f_out == NULL) + { + fclose(f_in); + fclose(f_errors); + return; + } + + // make a list of the tune names + while(!feof(f_in)) + { + if(fgets(buf,sizeof(buf),f_in) == NULL) + break; + + if((memcmp(buf,"tune",4)==0) && isspace(buf[4])) + { + p = &buf[5]; + while(isspace(*p)) p++; + + ix = 0; + while((ix < int(sizeof(name) - 1)) && !isspace(*p)) + { + name[ix++] = *p++; + } + name[ix] = 0; + tune_names[n_tune_names++] = StringToWord(name); + + if(n_tune_names >= N_TUNE_NAMES) + break; + } + } + rewind(f_in); + linenum = 1; + + while(!feof(f_in)) + { + keyword = NextItem(tINTONATION); + + switch(keyword) + { + case kTUNE: + if(compiling_tune) + { + } + compiling_tune = 1; + n_tunes++; + done_split = 0; + + memcpy(&new_tune, &default_tune, sizeof(TUNE)); + NextItem(tSTRING); + new_tune.name = StringToWord(item_string); + fprintf(f_errors,"tune %s\n",WordToString(new_tune.name)); + break; + + case kENDTUNE: + compiling_tune = 0; + fwrite(&new_tune, 1, sizeof(new_tune), f_out); + break; + + case kTUNE_PREHEAD: + new_tune.prehead_start = NextItem(tNUMBER); + new_tune.prehead_end = NextItem(tNUMBER); + break; + + case kTUNE_HEAD: + new_tune.head_max_steps = NextItem(tNUMBER); + new_tune.head_start = NextItem(tNUMBER); + new_tune.head_end = NextItem(tNUMBER); + NextItem(tSTRING); + if((ix = LookupEnvelope(item_string)) < 0) + { + error("Bad envelope name: '%s'",item_string); + } + break; + + case kTUNE_HEADEXTEND: + // up to 8 numbers + for(ix=0; ix < int(sizeof(new_tune.headextend)); ix++) + { + if(!isdigit(c = CheckNextChar()) && (c != '-')) + break; + + new_tune.headextend[ix] = (NextItem(tSIGNEDNUMBER) * 64) / 100; // convert from percentage to 64ths + } + new_tune.n_headextend = ix; // number of values + break; + + case kTUNE_UNSTRESSED: + new_tune.unstressed_start = NextItem(tSIGNEDNUMBER); + new_tune.unstressed_end = NextItem(tSIGNEDNUMBER); + break; + + case kTUNE_NUCLEUS0: + NextItem(tSTRING); + if((ix = LookupEnvelope(item_string)) < 0) + { + error("Bad envelope name: '%s'",item_string); + break; + } + new_tune.nucleus0_env = ix; + new_tune.nucleus0_max = NextItem(tNUMBER); + new_tune.nucleus0_min = NextItem(tNUMBER); + break; + + case kTUNE_NUCLEUS1: + NextItem(tSTRING); + if((ix = LookupEnvelope(item_string)) < 0) + { + error("Bad envelope name: '%s'",item_string); + break; + } + new_tune.nucleus1_env = ix; + new_tune.nucleus1_max = NextItem(tNUMBER); + new_tune.nucleus1_min = NextItem(tNUMBER); + new_tune.tail_start = NextItem(tNUMBER); + new_tune.tail_end = NextItem(tNUMBER); + + if(!done_split) + { + new_tune.split_nucleus_env = ix; + new_tune.split_nucleus_max = new_tune.nucleus1_max; + new_tune.split_nucleus_min = new_tune.nucleus1_min; + new_tune.split_tail_start = new_tune.tail_start; + new_tune.split_tail_end = new_tune.tail_end; + } + break; + + case kTUNE_SPLIT: + NextItem(tSTRING); + if((ix = LookupEnvelope(item_string)) < 0) + { + error("Bad envelope name: '%s'",item_string); + break; + } + new_tune.split_nucleus_env = ix; + new_tune.split_nucleus_max = NextItem(tNUMBER); + new_tune.split_nucleus_min = NextItem(tNUMBER); + new_tune.split_tail_start = NextItem(tNUMBER); + new_tune.split_tail_end = NextItem(tNUMBER); + done_split = 1; + break; + + default: + error("Unexpected: '%s'",item_string); + break; + } + } + + fclose(f_in); + fclose(f_out); + fclose(f_errors); + + report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tunes, error_count); + wxLogStatus(report); + +} // end of CompileIntonation + + + void CompilePhonemeData() { CompilePhonemeData2("phonemes"); diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 3d63065d..ab9d51b3 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -44,9 +44,6 @@ extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme static int linenum; static int error_count; -static int transpose_offset; // transpose character range for LookupDictList() -static int transpose_min; -static int transpose_max; static int text_mode = 0; static int debug_flag = 0; static int error_need_dictionary = 0; @@ -55,6 +52,15 @@ static int hash_counts[N_HASH_DICT]; static char *hash_chains[N_HASH_DICT]; static char letterGroupsDefined[N_LETTER_GROUPS]; +MNEM_TAB mnem_rules[] = { + {"w_alt2", 0x12}, + {"w_alt3", 0x13}, + {"w_alt", 0x11}, // note: put longer names before their sub-strings + {"p_alt2", 0x22}, + {"p_alt3", 0x23}, + {"p_alt", 0x21}, + {NULL, -1} }; + MNEM_TAB mnem_flags[] = { // these in the first group put a value in bits0-3 of dictionary_flags {"$1", 0x41}, // stress on 1st syllable @@ -89,9 +95,10 @@ MNEM_TAB mnem_flags[] = { // language specific {"$double", 19}, // IT double the initial consonant of next word {"$alt", 20}, // use alternative pronunciation + {"$alt1", 20}, // synonym for $alt {"$alt2", 21}, - {"$combine", 22}, // Combine with the next word - {"$alt3", 23}, + {"$alt3", 22}, + {"$combine", 23}, // Combine with the next word {"$dot", 24}, // ignore '.' after this word (abbreviation) {"$hasdot", 25}, // use this pronunciation if there is a dot after the word @@ -112,6 +119,7 @@ MNEM_TAB mnem_flags[] = { {"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */ {"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */ {"$accent", 0x2b}, // character name is base-character name + accent name + {"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :} // doesn't set dictionary_flags {"$?", 100}, // conditional rule, followed by byte giving the condition number @@ -143,27 +151,6 @@ int isspace2(unsigned int c) } -static const char *LookupMnem2(MNEM_TAB *table, int value) -{//======================================================= - while(table->mnem != NULL) - { - if(table->value == value) - return(table->mnem); - table++; - } - return(""); -} - - -char *print_dictionary_flags(unsigned int *flags) -{//============================================== - static char buf[20]; - - sprintf(buf,"%s 0x%x/%x",LookupMnem2(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]); - return(buf); -} - - static FILE *fopen_log(const char *fname,const char *access) {//================================================== @@ -179,9 +166,8 @@ static FILE *fopen_log(const char *fname,const char *access) } -#ifdef OPT_FORMAT -static const char *lookup_mnem(MNEM_TAB *table, int value) -//======================================================== +const char *LookupMnemName(MNEM_TAB *table, const int value) +//========================================================== /* Lookup a mnemonic string in a table, return its name */ { while(table->mnem != NULL) @@ -190,9 +176,181 @@ static const char *lookup_mnem(MNEM_TAB *table, int value) return(table->mnem); table++; } - return("??"); /* not found */ -} /* end of mnem */ -#endif + return(""); /* not found */ +} /* end of LookupMnemValue */ + + +char *print_dictionary_flags(unsigned int *flags) +{//============================================== + static char buf[20]; + + sprintf(buf,"%s 0x%x/%x",LookupMnemName(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]); + return(buf); +} + + + + +char *DecodeRule(const char *group_chars, int group_length, char *rule) +{//==================================================================== +/* Convert compiled match template to ascii */ + + unsigned char rb; + unsigned char c; + char *p; + int ix; + int match_type; + int finished=0; + int value; + int linenum=0; + int flags; + int suffix_char; + int condition_num=0; + const char *name; + char buf[60]; + char buf_pre[60]; + char suffix[20]; + static char output[60]; + + static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ', + '@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'}; + + static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; + + match_type = 0; + buf_pre[0] = 0; + + for(ix=0; ix> 8)) + suffix_char = 'P'; + sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f); + rule += 3; + for(ix=0;ix<9;ix++) + { + if(flags & 1) + sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]); + flags = (flags >> 1); + } + strcpy(p,suffix); + p += strlen(suffix); + c = ' '; + } + else + if(rb == RULE_LETTERGP) + { + c = symbols_lg[*rule++ - 'A']; + } + else + if(rb == RULE_LETTERGP2) + { + value = *rule++ - 'A'; + p[0] = 'L'; + p[1] = (value / 10) + '0'; + c = (value % 10) + '0'; + + if(match_type == RULE_PRE) + { + p[0] = c; + c = 'L'; + } + p+=2; + } + else + if(rb <= RULE_LAST_RULE) + c = symbols[rb]; + else + if(rb == RULE_SPACE) + c = '_'; + else + c = rb; + *p++ = c; + } + *p = 0; + + p = output; + if(linenum > 0) + { + sprintf(p,"%5d:\t",linenum); + p += 7; + } + if(condition_num > 0) + { + sprintf(p,"?%d ",condition_num); + p = &p[strlen(p)]; + } + if((ix = strlen(buf_pre)) > 0) + { + while(--ix >= 0) + *p++ = buf_pre[ix]; + *p++ = ')'; + *p++ = ' '; + } + *p = 0; + strcat(p,buf); + ix = strlen(output); + while(ix < 8) + output[ix++]=' '; + output[ix]=0; + return(output); +} /* end of DecodeRule */ @@ -533,9 +691,9 @@ step=1; // TEST len_word = strlen(word); - if(transpose_offset > 0) + if(translator->transpose_offset > 0) { - len_word = TransposeAlphabet(word, transpose_offset, transpose_min, transpose_max); + len_word = TransposeAlphabet(word, translator->transpose_offset, translator->transpose_min, translator->transpose_max); } *hash = HashDictionary(word); @@ -762,6 +920,7 @@ static void copy_rule_string(char *string, int &state) int sxflags; int value; int literal; + MNEM_TAB *mr; if(string[0] == 0) return; @@ -858,7 +1017,8 @@ static void copy_rule_string(char *string, int &state) c = RULE_CAPITAL; break; case 'T': - c = RULE_ALT1; + output[ix++] = RULE_DOLLAR; + c = 0x11; break; case 'W': c = RULE_SPELLING; @@ -899,10 +1059,28 @@ static void copy_rule_string(char *string, int &state) } break; - case '$': // obsolete, replaced by S - fprintf(f_log,"%5d: $ now not allowed, use S for suffix",linenum); + case '$': + output[ix++] = RULE_DOLLAR; + c = 0; + mr = mnem_rules; + while(mr->mnem != NULL) + { + len = strlen(mr->mnem); + if(memcmp(p, mr->mnem, len) == 0) + { + c = mr->value; + p += len; + break; + } + mr++; + } + if(c == 0) + { + fprintf(f_log,"%5d: $ command not recognized\n",linenum); error_count++; + } break; + case 'P': sxflags |= SUFX_P; // Prefix, now drop through to Suffix case 'S': @@ -1703,17 +1881,6 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha } sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP); - transpose_offset = 0; - - if(strcmp(dict_name,"ru") == 0) - { - // transpose cyrillic alphabet from unicode to iso8859-5 -// transpose_offset = 0x430-0xd0; - transpose_offset = 0x42f; // range 0x01 to 0x22 - transpose_min = 0x430; - transpose_max = 0x451; - } - value = N_HASH_DICT; Write4Bytes(f_out,value); Write4Bytes(f_out,offset_rules); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 993f24af..3bc8bc0d 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -18,8 +18,6 @@ ***************************************************************************/ #include "StdAfx.h" - -#define LOG_TRANSLATE #include #include @@ -40,6 +38,7 @@ int dictionary_skipwords; char dictionary_name[40]; extern char *print_dictionary_flags(unsigned int *flags); +extern char *DecodeRule(const char *group_chars, int group_length, char *rule); // accented characters which indicate (in some languages) the start of a separate syllable //static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0}; @@ -106,8 +105,8 @@ static int reverse_word_bytes(int word) } -int LookupMnem(MNEM_TAB *table, char *string) -{//========================================== +int LookupMnem(MNEM_TAB *table, const char *string) +{//================================================ while(table->mnem != NULL) { if(strcmp(string,table->mnem)==0) @@ -118,7 +117,6 @@ int LookupMnem(MNEM_TAB *table, char *string) } - //============================================================================================= // Read pronunciation rules and pronunciation lookup dictionary // @@ -1628,159 +1626,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, //============================================================================================= -#ifdef LOG_TRANSLATE -static char *DecodeRule(const char *group_chars, int group_length, char *rule) -{//=========================================================================== -/* Convert compiled match template to ascii */ - - unsigned char rb; - unsigned char c; - char *p; - int ix; - int match_type; - int finished=0; - int value; - int linenum=0; - int flags; - int suffix_char; - int condition_num=0; - char buf[60]; - char buf_pre[60]; - char suffix[20]; - static char output[60]; - - static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ', - '@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'}; - - static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; - - match_type = 0; - buf_pre[0] = 0; - - for(ix=0; ix> 8)) - suffix_char = 'P'; - sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f); - rule += 3; - for(ix=0;ix<9;ix++) - { - if(flags & 1) - sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]); - flags = (flags >> 1); - } - strcpy(p,suffix); - p += strlen(suffix); - c = ' '; - } - else - if(rb == RULE_LETTERGP) - { - c = symbols_lg[*rule++ - 'A']; - } - else - if(rb == RULE_LETTERGP2) - { - value = *rule++ - 'A'; - p[0] = 'L'; - p[1] = (value / 10) + '0'; - c = (value % 10) + '0'; - - if(match_type == RULE_PRE) - { - p[0] = c; - c = 'L'; - } - p+=2; - } - else - if(rb <= RULE_LAST_RULE) - c = symbols[rb]; - else - if(rb == RULE_SPACE) - c = '_'; - else - c = rb; - *p++ = c; - } - *p = 0; - - p = output; - if(linenum > 0) - { - sprintf(p,"%5d:\t",linenum); - p += 7; - } - if(condition_num > 0) - { - sprintf(p,"?%d ",condition_num); - p = &p[strlen(p)]; - } - if((ix = strlen(buf_pre)) > 0) - { - while(--ix >= 0) - *p++ = buf_pre[ix]; - *p++ = ')'; - *p++ = ' '; - } - *p = 0; - strcat(p,buf); - ix = strlen(output); - while(ix < 8) - output[ix++]=' '; - output[ix]=0; - return(output); -} /* end of decode_match */ -#endif - void AppendPhonemes(Translator *tr, char *string, int size, const char *ph) @@ -1833,8 +1678,8 @@ void AppendPhonemes(Translator *tr, char *string, int size, const char *ph) -static void MatchRule(Translator *tr, char *word[], int group_length, char *rule, MatchRecord *match_out, int word_flags, int dict_flags) -{//====================================================================================================================================== +static void MatchRule(Translator *tr, char *word[], char *word_start, int group_length, char *rule, MatchRecord *match_out, int word_flags, int dict_flags) +{//======================================================================================================================================================== /* Checks a specified word against dictionary rules. Returns with phoneme code string, or NULL if no match found. @@ -1861,6 +1706,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule char *rule_start; /* start of current match template */ char *p; + int ix; int match_type; /* left, right, or consume */ int failed; @@ -1874,6 +1720,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule int lg_pts; int n_bytes; int add_points; + int command; MatchRecord match; static MatchRecord best; @@ -1883,6 +1730,7 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule unsigned char condition_num; char *common_phonemes; /* common to a group of entries */ char *group_chars; + char word_buf[N_WORD_BYTES]; group_chars = *word; @@ -2091,11 +1939,29 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule failed = 1; break; - case RULE_ALT1: - if(dict_flags & FLAG_ALT_TRANS) - add_points = 1; + case RULE_DOLLAR: + command = *rule++; + if((command & 0xf0) == 0x10) + { + if(dict_flags & (1 << (BITNUM_FLAG_ALT + (command & 0xf)))) + add_points = 23; + else + failed = 1; + } else - failed = 1; + if((command & 0xf0) == 0x20) + { + // make a copy of the word up to the post-match characters + ix = *word - word_start + consumed + group_length + 1; + memcpy(word_buf, word_start-1, ix); + word_buf[ix] = ' '; + word_buf[ix+1] = 0; + + if(LookupFlags(tr, &word_buf[1]) & (1 << (BITNUM_FLAG_ALT + (command & 0xf)))) + add_points = 23; + else + failed = 1; + } break; case '-': @@ -2403,7 +2269,6 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule total_consumed = consumed; } -#ifdef LOG_TRANSLATE if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0)) { // show each rule that matches, and it's points score @@ -2417,7 +2282,6 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule DecodePhonemes(match.phonemes,decoded_phonemes); fprintf(f_trans,"%3d\t%s [%s]\n",pts,DecodeRule(group_chars, group_length, rule_start),decoded_phonemes); } -#endif } @@ -2425,13 +2289,11 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule while(*rule++ != 0); } -#ifdef LOG_TRANSLATE if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0)) { if(group_length <= 1) fprintf(f_trans,"\n"); } -#endif /* advance input data pointer */ total_consumed += group_length; @@ -2491,7 +2353,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c word_copy[ix] = 0; -#ifdef LOG_TRANSLATE if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0)) { char wordbuf[120]; @@ -2504,7 +2365,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c wordbuf[ix] = 0; fprintf(f_trans,"Translate '%s'\n",wordbuf); } -#endif p = p_start; tr->word_vowel_count = 0; @@ -2548,7 +2408,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c { if(tr->groups3[ix] != NULL) { - MatchRule(tr, &p, wc_bytes, tr->groups3[ix], &match1, word_flags, dict_flags0); + MatchRule(tr, &p, p_start, wc_bytes, tr->groups3[ix], &match1, word_flags, dict_flags0); found = 1; } } @@ -2568,12 +2428,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c found = 1; p2 = p; - MatchRule(tr, &p2, 2, tr->groups2[g], &match2, word_flags, dict_flags0); + MatchRule(tr, &p2, p_start, 2, tr->groups2[g], &match2, word_flags, dict_flags0); if(match2.points > 0) match2.points += 35; /* to acount for 2 letters matching */ /* now see whether single letter chain gives a better match ? */ - MatchRule(tr, &p, 1, tr->groups1[c], &match1, word_flags, dict_flags0); + MatchRule(tr, &p, p_start, 1, tr->groups1[c], &match1, word_flags, dict_flags0); if(match2.points >= match1.points) { @@ -2589,11 +2449,11 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c { /* alphabetic, single letter chain */ if(tr->groups1[c] != NULL) - MatchRule(tr, &p, 1, tr->groups1[c], &match1, word_flags, dict_flags0); + MatchRule(tr, &p, p_start, 1, tr->groups1[c], &match1, word_flags, dict_flags0); else { // no group for this letter, use default group - MatchRule(tr, &p, 0, tr->groups1[0], &match1, word_flags, dict_flags0); + MatchRule(tr, &p, p_start, 0, tr->groups1[0], &match1, word_flags, dict_flags0); if((match1.points == 0) && ((option_sayas & 0x10) == 0)) { @@ -3167,6 +3027,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor continue; } + if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE)) + { + // only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :} + continue; + } + if(dictionary_flags2 & FLAG_VERB) { // this is a verb-form pronunciation @@ -3243,7 +3109,18 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(textmode == translator->langopts.textmode) { // only show this line if the word translates to phonemes, not replacement text - fprintf(f_trans,"Found: %s [%s] %s\n",word1,ph_decoded,print_dictionary_flags(flags)); + if(dictionary_skipwords) + { + // matched more than one word + memcpy(word_buf,word2,word_end-word2); + word_buf[word_end-word2-1] = 0; + fprintf(f_trans,"Found: '%s %s",word1,word_buf); + } + else + { + fprintf(f_trans,"Found: '%s",word1); + } + fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags)); } } return(word_end); @@ -3541,12 +3418,11 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) if(end_flags & FLAG_SUFX_E_ADDED) { utf8_out(tr->langopts.suffix_add_e, &word_end[1]); -#ifdef LOG_TRANSLATE -if(option_phonemes == 2) -{ - fprintf(f_trans,"add e\n"); -} -#endif + + if(option_phonemes == 2) + { + fprintf(f_trans,"add e\n"); + } } } diff --git a/src/espeakedit.cpp b/src/espeakedit.cpp index fdb97f66..598f9c96 100755 --- a/src/espeakedit.cpp +++ b/src/espeakedit.cpp @@ -65,6 +65,7 @@ extern void DictionarySort(const char *dictname); extern void init_z(); extern void CompilePhonemeData(void); extern void CompileMbrola(); +extern void CompileIntonation(); extern void InitSpectrumDisplay(); extern void InitProsodyDisplay(); extern void InitWaveDisplay(); @@ -203,6 +204,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) EVT_MENU(MENU_FORMAT_DICTIONARY, MyFrame::OnTools) EVT_MENU(MENU_SORT_DICTIONARY, MyFrame::OnTools) EVT_MENU(MENU_COMPILE_MBROLA, MyFrame::OnTools) + EVT_MENU(MENU_COMPILE_INTONATION, MyFrame::OnTools) EVT_MENU(MENU_CLOSE_ALL, MyFrame::OnQuit) EVT_MENU(MENU_QUIT, MyFrame::OnQuit) EVT_MENU(MENU_SPEAK_TRANSLATE, MyFrame::OnSpeak) @@ -218,6 +220,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) EVT_MENU(MENU_VOWELCHART2, MyFrame::OnTools) EVT_MENU(MENU_VOWELCHART3, MyFrame::OnTools) EVT_MENU(MENU_LEXICON_RU, MyFrame::OnTools) + EVT_MENU(MENU_LEXICON_BG, MyFrame::OnTools) EVT_MENU(MENU_LEXICON_DE, MyFrame::OnTools) EVT_MENU(MENU_LEXICON_IT, MyFrame::OnTools) EVT_MENU(MENU_LEXICON_IT2, MyFrame::OnTools) @@ -553,6 +556,7 @@ void MyFrame::OnTools(wxCommandEvent& event) break; case MENU_LEXICON_RU: + case MENU_LEXICON_BG: case MENU_LEXICON_DE: case MENU_LEXICON_IT: case MENU_LEXICON_IT2: @@ -566,6 +570,10 @@ void MyFrame::OnTools(wxCommandEvent& event) case MENU_COMPILE_MBROLA: CompileMbrola(); break; + + case MENU_COMPILE_INTONATION: + CompileIntonation(); + break; case MENU_COMPILE_DICT_DEBUG: debug_flag =1; // and drop through to next case diff --git a/src/extras.cpp b/src/extras.cpp index 347dd2ff..e04f5477 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -200,8 +200,6 @@ static const unsigned short KOI8_R[0x60] = { #define N_CHARS 34 -int *p_unicode; -int unicode[80]; #define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name @@ -765,6 +763,202 @@ void Lexicon_De() } +void Lexicon_Bg() +{//============== +// Bulgarian: compare stress markup in a list of words with lookup using bg_rules + + char *p; + char *pw; + char *pw1; + int cc; + int vcount; + int lex_stress; + int input_length; + int n_words=0; + int n_wrong=0; + int n_out=0; + int n_stress; + int max_stress; + int max_stress_posn; + int stress_first; + int done; + PHONEME_TAB *ph; + + FILE *f_in; + FILE *f_out; + FILE *f_log; + + char word[80]; + char word_in[80]; + char phonemes[N_WORD_PHONEMES]; + char buf[200]; + char fname[sizeof(path_dsource)+20]; + + static unsigned short bg_vowels[] = {0x430, 0x435, 0x438, 0x43e, 0x443, 0x44a, 0x44d, 0x44e, 0x44f, 0x450, 0x451, 0x45d, 0}; + + if(gui_flag == 0) + return; + + wxString s_fname = wxFileSelector(_T("List of UTF-8 words with Combining Grave Accent U+300 to indicate stress"),path_dir1, + _T(""),_T(""),_T("*"),wxOPEN); + if(s_fname.IsEmpty()) + return; + strcpy(buf,s_fname.mb_str(wxConvLocal)); + path_dir1 = wxFileName(s_fname).GetPath(); + + if((f_in = fopen(buf,"r")) == NULL) + { + wxLogError(_T("Can't read file: ") + wxString(buf,wxConvLocal)); + return; + } + input_length = GetFileLength(buf); + + sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"bg_listx_1"); + if((f_out = fopen(fname,"w")) == NULL) + { + wxLogError(_T("Can't write to: ")+wxString(fname,wxConvLocal)); + fclose(f_in); + return; + } + + sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"bg_log"); + f_log = fopen(fname,"w"); + + LoadVoice("bg",0); + progress = new wxProgressDialog(_T("Lexicon"),_T(""),input_length); + + for(;;) + { + if((n_words & 0x3ff) == 0) + { + progress->Update(ftell(f_in)); + } + + if(fgets(buf,sizeof(buf),f_in) == NULL) + break; + + if(isspace2(buf[0])) + continue; + + // convert from UTF-8 to Unicode + word[0] = 0; + word[1] = ' '; + pw = &word[2]; + pw1 = word_in; + p = buf; + while(*p == ' ') p++; + vcount = 0; + lex_stress = 0; + n_stress = 0; + stress_first = 0; + + // find the marked stress position + for(;;) + { + p += utf8_in(&cc, p); + if(iswspace(cc)) + break; + if(cc == 0xfeff) + continue; // ignore UTF-8 indication + + pw1 += utf8_out(cc, pw1); // copy UTF-8 to 'word_in' + + if(lookupwchar(bg_vowels, cc) != 0) + vcount++; + + if((cc == 0x300) || (cc == 0x450) || (cc == 0x45d)) + { + // combining grave accent, of accented vowel character + lex_stress = vcount; + n_stress++; + + if(vcount == 1) + stress_first = 1; + + if(cc == 0x300) + continue; // discard combining accent + if(cc == 0x450) + cc = 0x435; // remove accent from vowel + if(cc == 0x45d) + cc = 0x438; + } + + pw += utf8_out(cc, pw); // copy UTF-8 to 'word' + } + *pw++ = ' '; + *pw = 0; + *pw1 = 0; + + // translate + TranslateWord(translator, &word[2],0, NULL); + DecodePhonemes(word_phonemes,phonemes); + + // find the stress position in the translation + max_stress = 0; + max_stress_posn = -1; + vcount = 0; + + ph = phoneme_tab[phonPAUSE]; + for(p=word_phonemes; *p != 0; p++) + { + ph = phoneme_tab[(unsigned int)*p]; + if(ph == NULL) + continue; + + if(ph->type == phVOWEL) + vcount++; + if(ph->type == phSTRESS) + { + if(ph->std_length > max_stress) + { + max_stress = ph->std_length; + max_stress_posn = vcount+1; + } + } + } + + done = 0; + if((lex_stress != max_stress_posn) || (n_stress != 1)) + { + if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7)) + { + if((n_stress == 2) && (stress_first)) + { + done = 1; + fprintf(f_out,"%s\t$%d\n",&word[2],lex_stress); + } + if(n_stress == 1) + { + done = 1; + fprintf(f_out,"%s\t$%d\n",&word[2],lex_stress); + } + } + + if(done == 0) + { + n_wrong++; + fprintf(f_out,"%s\t$text %s\n", &word[2], word_in); + } + + if(done) + n_out++; + } + + n_words++; + } + + fclose(f_in); + fclose(f_out); + fclose(f_log); + + + delete progress; + sprintf(buf,"Lexicon: Input %d, Output %d, Failed %d",n_words,n_out,n_wrong); + wxLogStatus(wxString(buf,wxConvLocal)); +} // end of Lexicon_Bg + + + void Lexicon_Ru() {//============== // compare stress markings in Russian RuLex file with lookup in ru_rules @@ -791,6 +985,9 @@ void Lexicon_Ru() int len; int check_root; + int *p_unicode; + int unicode[80]; + char word[80]; char word2[80]; int counts[20][20][10]; @@ -1066,6 +1263,9 @@ void CompareLexicon(int id) case MENU_LEXICON_RU: Lexicon_Ru(); break; + case MENU_LEXICON_BG: + Lexicon_Bg(); + break; case MENU_LEXICON_DE: Lexicon_De(); break; diff --git a/src/formantdlg.cpp b/src/formantdlg.cpp index 8940b4c5..96d20b07 100755 --- a/src/formantdlg.cpp +++ b/src/formantdlg.cpp @@ -49,6 +49,7 @@ BEGIN_EVENT_TABLE(FormantDlg, wxPanel) // EVT_SPINCTRL(T_TIMEFRAME,FormantDlg::OnSpin) END_EVENT_TABLE() +int use_spin_controls=0; void FormantDlg::OnCommand(wxCommandEvent& event) {//============================================= @@ -181,7 +182,14 @@ FormantDlg::FormantDlg(wxWindow *parent) : wxPanel(parent,-1,wxDefaultPosition,w } y=224; - t_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame length")); + if(use_spin_controls) + { + t_timeframe = new wxSpinCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame length")); + } + else + { + tt_timeframe = new wxTextCtrl(this,T_TIMEFRAME,_T(""), wxPoint(6,y+0), wxSize(52,24), wxTE_CENTRE,wxDefaultValidator,_T("Frame length")); + } t_orig_frame = new wxStaticText(this,-1,_T("mS"),wxPoint(61,y+8)); t_ampframe = new wxSpinCtrl(this,T_AMPFRAME,_T(""), wxPoint(104,y+0), wxSize(52,24), wxTE_CENTRE,0,500,0,_T("Frame amplitude")); t_lab[3] = new wxStaticText(this,-1,_T("% amp - Frame"),wxPoint(159,y+8)); @@ -255,6 +263,12 @@ void FormantDlg::GetValues(SpectSeq *spectseq, int frame) return; sf = spectseq->frames[frame]; + if(use_spin_controls == 0) + { + formantdlg->tt_timeframe->GetValue().ToLong(&num); + sf->length_adjust = num - spectseq->GetFrameLength(frame,0,NULL); + } + for(ix=0; ix < 8; ix++) { if(ix < 7) @@ -386,7 +400,13 @@ void FormantDlg::ShowFrame(SpectSeq *spectseq, int frame, int pk, int field) } // find the time until the next keyframe - SetSpinCtrl(t_timeframe,int(spectseq->GetFrameLength(frame,1,&original_mS)+0.5)); // round to nearest integer + value.Printf(_T("%d"),int(spectseq->GetFrameLength(frame,1,&original_mS)+0.5)); // round to nearest integer + + if(use_spin_controls) + t_timeframe->SetValue(value); + else + tt_timeframe->SetValue(value); + value.Printf(_T("%d mS"),original_mS); t_orig_frame->SetLabel(value); value.Printf(_T("%3d"),sf->amp_adjust); diff --git a/src/intonation.cpp b/src/intonation.cpp index 164c94cc..cfd0fab5 100755 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include "speak_lib.h" @@ -45,8 +46,8 @@ typedef struct { char env; char flags; //bit 0=pitch rising, bit1=emnphasized, bit2=end of clause char nextph_type; - short pitch1; - short pitch2; + unsigned char pitch1; + unsigned char pitch2; } SYLLABLE; static SYLLABLE *syllable_tab; @@ -61,10 +62,10 @@ static int tone_pitch_env; /* used to return pitch envelope */ #define PITCHfall 0 -#define PITCHrise 1 -#define PITCHfrise 2 // and 3 must be for the varient preceded by 'r' -#define PITCHfrise2 4 // and 5 must be the 'r' variant -#define PITCHrisefall 6 +#define PITCHrise 2 +#define PITCHfrise 4 // and 3 must be for the variant preceded by 'r' +#define PITCHfrise2 6 // and 5 must be the 'r' variant +#define PITCHrisefall 8 /* 0 fall */ unsigned char env_fall[128] = { @@ -191,9 +192,9 @@ static unsigned char env_risefallrise[128] = { -unsigned char *envelope_data[18] = { - env_fall, - env_rise, +unsigned char *envelope_data[20] = { + env_fall, env_fall, + env_rise, env_rise, env_frise, env_r_frise, env_frise2, env_r_frise2, env_risefall, env_risefall, @@ -206,18 +207,17 @@ unsigned char *envelope_data[18] = { }; -/* all pitches given in Hz above pitch_base */ + +/* indexed by stress */ +static int min_drop[] = {6,7,9,9,20,20,20,25}; // pitch change during the main part of the clause -static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00}; -//static int drops_1[8] = {0x400,0x400,0x600,0x600,0xc00,0xc00,0x0e00,0x0e00}; -//static int drops_2[8] = {0x400,0x400,0x600,0x600,-0x800,0xc00,0x0e00,0x0e00}; +static int drops_0[8] = {9,9,16,16,16,23,55,32}; -static short oflow[] = {0, 20, 12, 4, 0}; -static short oflow_emf[] = {5, 26, 16, 10, 5}; -static short oflow_less[] = {3, 19, 12, 7, 2}; -// static short oflow_test2[] = {20, 0, 20, 0, 20}; -// static short back_emf[] = {35, 32, 0}; +// overflow table values are 64ths of the body pitch range (between body_start and body_end) +static signed char oflow[] = {0, 40, 24, 8, 0}; +static signed char oflow_emf[] = {10, 52, 32, 20, 10}; +static signed char oflow_less[] = {6, 38, 24, 14, 4}; #define N_TONE_HEAD_TABLE 13 @@ -235,8 +235,8 @@ typedef struct { unsigned char body_max_steps; char body_lower_u; - char n_overflow; - short *overflow; + unsigned char n_overflow; + signed char *overflow; } TONE_HEAD; @@ -259,38 +259,38 @@ typedef struct { #define T_EMPH 1 static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = { - {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 0 statement - {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 1 comma - {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 2 question - {20, 25, 39, 22, drops_0, 3, 4, 5, oflow_emf}, // 3 exclamation - {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 4 statement, emphatic - {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 5 statement, less intonation - {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 6 comma, less intonation - {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 7 comma, less intonation, less rise - {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence - {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 9 comma - {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question - {15, 18, 18, 14, drops_0, 3, 3, 5, oflow_less}, // 11 test - {20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 12 test + {46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 0 statement + {46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 1 comma + {46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 2 question + {46, 57, 90, 50, drops_0, 3, 9, 5, oflow_emf}, // 3 exclamation + {46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 4 statement, emphatic + {46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 5 statement, less intonation + {46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 6 comma, less intonation + {46, 57, 74, 55, drops_0, 4, 7, 5, oflow_less}, // 7 comma, less intonation, less rise + {46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 8 pitch raises at end of sentence + {46, 57, 78, 46, drops_0, 3, 7, 5, oflow}, // 9 comma + {46, 57, 78, 50, drops_0, 3, 7, 5, oflow}, // 10 question + {34, 41, 41, 32, drops_0, 3, 7, 5, oflow_less}, // 11 test + {46, 57, 55, 50, drops_0, 3, 7, 5, oflow_less}, // 12 test }; static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { - {PITCHfall, 29, 4, PITCHfall, 31, 8, NULL, 11, 6, 0}, // 0 statement - {PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma - {PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question -// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation - {PITCHfall, 41, 4, PITCHfall, 41,35, NULL, 35, 4, T_EMPH}, // 3 exclamation - {PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic - {PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation - {PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation - {PITCHfrise2, 28, 7, PITCHfall, 29,14, NULL, 14, 8, 0}, // 7 comma, less intonation, less rise - {PITCHrise, 30,20, PITCHfall, 19,14, NULL, 20, 26, 0}, // 8 pitch raises at end of sentence - {PITCHfrise, 35,11, PITCHfrise2, 32,10, NULL, 19, 24, 0}, // 9 comma - {PITCHfrise, 39,15, PITCHfall, 28,14, NULL, 20, 36, 0}, // 10 question - {PITCHfall, 28, 6, PITCHfall, 28,10, NULL, 12, 6, 0}, // 11 test - {PITCHfall, 35, 9, PITCHfall, 35,12, NULL, 16, 10, 0}, // 12 test + {PITCHfall, 64, 8, PITCHfall, 70,18, NULL, 24, 12, 0}, // 0 statement + {PITCHfrise, 80,18, PITCHfrise2, 78,22, NULL, 34, 52, 0}, // 1 comma + {PITCHfrise, 88,22, PITCHfrise2, 82,22, NULL, 34, 64, 0}, // 2 question + {PITCHfall, 92, 8, PITCHfall, 92,80, NULL, 76, 8, T_EMPH}, // 3 exclamation + + {PITCHfall, 86, 4, PITCHfall, 94,66, NULL, 34, 10, 0}, // 4 statement, emphatic + {PITCHfall, 62,10, PITCHfall, 62,20, NULL, 28, 16, 0}, // 5 statement, less intonation + {PITCHfrise, 68,18, PITCHfrise2, 68,22, NULL, 30, 44, 0}, // 6 comma, less intonation + {PITCHfrise2, 64,16, PITCHfall, 66,32, NULL, 32, 18, 0}, // 7 comma, less intonation, less rise + {PITCHrise, 68,46, PITCHfall, 42,32, NULL, 46, 58, 0}, // 8 pitch raises at end of sentence + {PITCHfrise, 78,24, PITCHfrise2, 72,22, NULL, 42, 52, 0}, // 9 comma + {PITCHfrise, 88,34, PITCHfall, 64,32, NULL, 46, 82, 0}, // 10 question + {PITCHfall, 56,12, PITCHfall, 56,20, NULL, 24, 12, 0}, // 11 test + {PITCHfall, 70,18, PITCHfall, 70,24, NULL, 32, 20, 0}, // 12 test }; - + /* index by 0=. 1=, 2=?, 3=! 4=none, 5=emphasized */ @@ -306,11 +306,8 @@ unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = { }; - -/* indexed by stress */ -static int min_drop[] = {0x300,0x300,0x400,0x400,0x900,0x900,0x900,0xb00}; - - +int n_tunes = 0; +TUNE *tunes = NULL; #define SECONDARY 3 @@ -419,20 +416,17 @@ static int count_increments(int ix, int end_ix, int min_stress) + static void set_pitch(SYLLABLE *syl, int base, int drop) /******************************************************/ -// Set the pitch of a vowel in syllable_tab. Base & drop are Hz * 256 +// Set the pitch of a vowel in syllable_tab { int pitch1, pitch2; int flags = 0; - /* adjust experimentally */ - int pitch_range2 = 148; - int pitch_base2 = 72; - if(base < 0) base = 0; - pitch2 = ((base * pitch_range2 ) >> 15) + pitch_base2; + pitch2 = base; if(drop < 0) { @@ -440,10 +434,12 @@ static void set_pitch(SYLLABLE *syl, int base, int drop) drop = -drop; } - pitch1 = pitch2 + ((drop * pitch_range2) >> 15); + pitch1 = pitch2 + drop; + if(pitch1 < 0) + pitch1 = 0; - if(pitch1 > 511) pitch1 = 511; - if(pitch2 > 511) pitch2 = 511; + if(pitch1 > 254) pitch1 = 254; + if(pitch2 > 254) pitch2 = 254; syl->pitch1 = pitch1; syl->pitch2 = pitch2; @@ -466,13 +462,17 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t int initial; int overflow=0; int n_overflow; + int pitch_range; + int pitch_range_abs; int *drops; - short *overflow_tab; + signed char *overflow_tab; SYLLABLE *syl; - static short continue_tab[5] = {-13, 16, 10, 4, 0}; + static signed char continue_tab[5] = {-26, 32, 20, 8, 0}; drops = th->body_drops; + pitch_range = (th->body_end - th->body_start) << 8; + pitch_range_abs = abs(pitch_range); if(continuing) { @@ -480,8 +480,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t overflow = 0; n_overflow = 5; overflow_tab = continue_tab; - increment = (th->body_end - th->body_start) << 8; - increment = increment / (th->body_max_steps -1); + increment = pitch_range / (th->body_max_steps -1); } else { @@ -513,8 +512,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t if(n_steps > 1) { - increment = (th->body_end - th->body_start) << 8; - increment = increment / (n_steps -1); + increment = pitch_range / (n_steps -1); } else increment = 0; @@ -527,7 +525,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t pitch += increment; else { - pitch = (th->body_end << 8) - (increment * overflow_tab[overflow++])/16; + pitch = (th->body_end << 8) + (pitch_range_abs * overflow_tab[overflow++])/64; if(overflow >= n_overflow) { overflow = 0; @@ -548,20 +546,20 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t if(stress >= PRIMARY) { syl->stress = PRIMARY_STRESSED; - set_pitch(syl,pitch,drops[stress]); + set_pitch(syl,(pitch >> 8),drops[stress]); } else if(stress >= SECONDARY) { - set_pitch(syl,pitch,drops[stress]); + set_pitch(syl,(pitch >> 8),drops[stress]); } else { /* unstressed, drop pitch if preceded by PRIMARY */ if((syllable_tab[ix-1].stress & 0x3f) >= SECONDARY) - set_pitch(syl,pitch - (th->body_lower_u << 8), drops[stress]); + set_pitch(syl,(pitch >> 8) - th->body_lower_u, drops[stress]); else - set_pitch(syl,pitch,drops[stress]); + set_pitch(syl,(pitch >> 8),drops[stress]); } ix++; @@ -571,13 +569,12 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t +static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_pitch) +{//==================================================================================== +// Set a linear pitch change over a number of syllables. +// Used for pre-head, unstressed syllables in the body, and the tail - -static int calc_pitch_segment2(int ix, int end_ix, int start_p, int end_p, int min_stress) -/****************************************************************************************/ -/* Linear pitch rise/fall, change pitch at min_stress or stronger - Used for pre-head and tail */ -{ + int ix; int stress; int pitch; int increment; @@ -585,49 +582,43 @@ static int calc_pitch_segment2(int ix, int end_ix, int start_p, int end_p, int m int drop; SYLLABLE *syl; - if(ix >= end_ix) - return(ix); - - n_increments = count_increments(ix,end_ix,min_stress); - increment = (end_p - start_p) << 8; + increment = (end_pitch - start_pitch) << 8; + n_increments = end_ix - start_ix; + + if(n_increments <= 0) + return; if(n_increments > 1) { increment = increment / n_increments; } - - pitch = start_p << 8; - while(ix < end_ix) + pitch = start_pitch << 8; + + for(ix=start_ix; ix < end_ix; ix++) { syl = &syllable_tab[ix]; stress = syl->stress; if(increment > 0) { - set_pitch(syl,pitch,-increment); + set_pitch(syl,(pitch >> 8),-(increment >> 8)); pitch += increment; } else { - drop = -increment; + drop = -(increment >> 8); if(drop < min_drop[stress]) drop = min_drop[stress]; pitch += increment; - if(drop > 0x900) - drop = 0x900; - set_pitch(syl, pitch, drop); + if(drop > 18) + drop = 18; + set_pitch(syl, (pitch >> 8), drop); } - - ix++; } - return(ix); -} /* end of calc_pitch_segment2 */ - - - +} // end of SetPitchGradient @@ -651,10 +642,8 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) /* vowels before the first primary stress */ /******************************************/ - if(number_pre > 0) - { - ix = calc_pitch_segment2(ix, ix+number_pre, th->pre_start, th->pre_end, 0); - } + SetPitchGradient(ix, ix+number_pre, th->pre_start, th->pre_end); + ix += number_pre; /* body of tonic segment */ /*************************/ @@ -680,13 +669,13 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) { tone_pitch_env = tn->pitch_env0; drop = tn->tonic_max0 - tn->tonic_min0; - set_pitch(&syllable_tab[ix++],tn->tonic_min0 << 8,drop << 8); + set_pitch(&syllable_tab[ix++],tn->tonic_min0, drop); } else { tone_pitch_env = tn->pitch_env1; drop = tn->tonic_max1 - tn->tonic_min1; - set_pitch(&syllable_tab[ix++],tn->tonic_min1 << 8,drop << 8); + set_pitch(&syllable_tab[ix++],tn->tonic_min1, drop); } syllable_tab[tone_posn].env = tone_pitch_env; @@ -696,7 +685,7 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) /* tail, after the tonic syllable */ /**********************************/ - calc_pitch_segment2(ix, end, tn->tail_start, tn->tail_end, 0); + SetPitchGradient(ix, end, tn->tail_start, tn->tail_end); return(tone_pitch_env); } /* end of calc_pitches */ @@ -1057,13 +1046,8 @@ void CalcPitches(Translator *tr, int clause_type) { syl = &syllable_tab[st_ix]; - x = syl->pitch1 - 72; - if(x < 0) x = 0; - p->pitch1 = x; - - x = syl->pitch2 - 72; - if(x < 0) x = 0; - p->pitch2 = x; + p->pitch1 = syl->pitch1; + p->pitch2 = syl->pitch2; p->env = PITCHfall; if(syl->flags & SYL_RISE) @@ -1099,6 +1083,6 @@ if(p->tone_ph) } } -} // end of Translator::CalcPitches +} // end of CalcPitches diff --git a/src/main.h b/src/main.h index 1ee88e24..078f391a 100755 --- a/src/main.h +++ b/src/main.h @@ -138,6 +138,7 @@ enum { MENU_FORMAT_DICTIONARY, MENU_SORT_DICTIONARY, MENU_COMPILE_MBROLA, + MENU_COMPILE_INTONATION, MENU_SPEAK_TRANSLATE, MENU_SPEAK_RULES, @@ -155,6 +156,7 @@ enum { MENU_VOWELCHART3, MENU_LEXICON, MENU_LEXICON_RU, + MENU_LEXICON_BG, MENU_LEXICON_DE, MENU_LEXICON_IT, MENU_LEXICON_IT2, diff --git a/src/menus.cpp b/src/menus.cpp index 6846aea2..2c4880d9 100755 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -88,6 +88,7 @@ wxMenuBar *MakeMenu(int type) data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); +// data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); data_menu->AppendSeparator(); data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file")); data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file")); @@ -113,6 +114,7 @@ wxMenuBar *MakeMenu(int type) lexicon_menu = new wxMenu; lexicon_menu->Append(MENU_LEXICON_RU, _("Russian (lexicon.dict)")); + lexicon_menu->Append(MENU_LEXICON_BG, _("Bulgarian")); lexicon_menu->Append(MENU_LEXICON_DE, _("German")); lexicon_menu->Append(MENU_LEXICON_IT, _("Italian")); lexicon_menu->Append(MENU_LEXICON_IT2, _("Italian, pass 2")); @@ -120,7 +122,7 @@ wxMenuBar *MakeMenu(int type) tools_menu = new wxMenu; tools_menu->Append(MENU_VOWELCHART, _("Make &Vowels Chart"), vowelchart_menu); // tools_menu->Append(MENU_LOAD_WAV, _T("Analyse WAV file")); - tools_menu->Append(MENU_LEXICON, _("Compare &Lexicon"), lexicon_menu); + tools_menu->Append(MENU_LEXICON, _("Process &Lexicon"), lexicon_menu); tools_menu->Append(MENU_TO_UTF8, _("Convert file to &UTF8...")); tools_menu->Append(MENU_COUNT_WORDS, _("Count word &frequencies...")); tools_menu->Append(MENU_TEST , _("Test (temporary)")); diff --git a/src/numbers.cpp b/src/numbers.cpp index 9ce14e01..4a150602 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -769,7 +769,11 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB { if(roman || !(wtab[1].flags & FLAG_FIRST_UPPER)) { - utf8_in(&c2, &word_end[2]); + if(word_end[0] == '.') + utf8_in(&c2, &word_end[2]); + else + utf8_in(&c2, &word_end[1]); + if((word_end[1] != 0) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || IsAlpha(c2))) { // ordinal number is indicated by dot after the number @@ -810,6 +814,19 @@ if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG } // end of CheckDotOrdinal +static int hu_number_e(const char *word) +{//===================================== +// lang-hu: variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (but not a, e, az, ez, azt, ezt, att. ett + + if((word[0] == 'a') || (word[0] == 'e')) + { + if((word[1] == ' ') || (word[1] == 'z') || ((word[1] == 't') && (word[2] == 't'))) + return(0); + return(1); + } + return(0); +} // end of hu_numnber_e + int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) @@ -824,6 +841,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) int repeat = 0; int n_digits = 0; char *word_start; + int num_control = 0; unsigned int flags[2]; char ph_roman[30]; char number_chars[N_WORD_BYTES]; @@ -895,18 +913,34 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) sprintf(number_chars," %d ",acc); + if(word[0] == '.') + { + // dot has not been removed. This implies that there was no space after it + return(0); + } + if(CheckDotOrdinal(tr, word_start, word, wtab, 1)) wtab[0].flags |= FLAG_ORDINAL; if(tr->langopts.numbers & NUM_ROMAN_ORDINAL) { - if((n_digits <= 1) && !(wtab[0].flags & FLAG_ORDINAL)) - return(0); - wtab[0].flags |= FLAG_ORDINAL; + if(tr->translator_name == L('h','u')) + { + if(!(wtab[0].flags & FLAG_ORDINAL)) + { + if((wtab[0].flags & FLAG_HYPHEN_AFTER) && hu_number_e(word)) + { + // should use the 'e' form of the number + num_control |= 1; + } + else + return(0); + } + } } tr->prev_dict_flags = 0; - TranslateNumber(tr, &number_chars[2], p, flags, wtab); + TranslateNumber(tr, &number_chars[2], p, flags, wtab, num_control); if(tr->langopts.numbers & NUM_ROMAN_AFTER) strcat(ph_out,ph_roman); @@ -1319,11 +1353,11 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null tensunits = value % 100; buf1[0] = 0; + ph_thousands[0] = 0; + ph_thousand_and[0] = 0; + if(hundreds > 0) { - ph_thousands[0] = 0; - ph_thousand_and[0] = 0; - found = 0; if(ordinal && (tensunits == 0)) { @@ -1369,6 +1403,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 & NUM_AND_HUNDRED) && ((control & 1) || (ph_thousands[0] != 0))) @@ -1418,9 +1453,13 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } ph_hundred_and[0] = 0; - if((tr->langopts.numbers & NUM_HUNDRED_AND) && (tensunits != 0)) + if(tensunits > 0) { - if((value > 100) || ((control & 1) && (thousandplex==0))) + if((tr->langopts.numbers & NUM_HUNDRED_AND) && ((value > 100) || ((control & 1) && (thousandplex==0)))) + { + Lookup(tr, "_0and", ph_hundred_and); + } + if((tr->langopts.numbers & NUM_THOUSAND_AND) && (hundreds == 0) && ((control & 1) || (ph_thousands[0] != 0))) { Lookup(tr, "_0and", ph_hundred_and); } @@ -1461,8 +1500,8 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null } // end of LookupNum3 -static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, WORD_TAB *wtab) -{//======================================================================================================== +static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control) +{//===================================================================================================================== // Number translation with various options // the "word" may be up to 4 digits // "words" of 3 digits may be preceded by another number "word" for thousands or millions @@ -1501,7 +1540,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned n_digit_lookup = 0; buf_digit_lookup[0] = 0; digit_lookup = buf_digit_lookup; - number_control = 0; + number_control = control; for(ix=0; isdigit(word[ix]); ix++) ; n_digits = ix; @@ -1639,9 +1678,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned if(tr->translator_name == L('h','u')) { - // variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (buit not a, e, az, ez, azt, ezt - if((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact==1) - && ((word[suffix_ix] == 'a') || (word[suffix_ix] == 'e')) && ((c = word[suffix_ix+1]) != ' ') && (c != 'z')) + // variant form of numbers when followed by hyphen and a suffix starting with 'a' or 'e' (but not a, e, az, ez, azt, ezt + if((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact==1) && hu_number_e(&word[suffix_ix])) { number_control |= 1; // use _1e variant of number } @@ -1821,13 +1859,13 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned -int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab) -{//================================================================================================ +int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control) +{//============================================================================================================= if(option_sayas == SAYAS_DIGITS1) return(0); // speak digits individually if(tr->langopts.numbers != 0) - return(TranslateNumber_1(tr, word1, ph_out, flags, wtab)); + return(TranslateNumber_1(tr, word1, ph_out, flags, wtab, control)); return(0); } // end of TranslateNumber diff --git a/src/options.cpp b/src/options.cpp index 1dfc8c9b..b4bfb4b0 100755 --- a/src/options.cpp +++ b/src/options.cpp @@ -192,7 +192,7 @@ void ConfigSave(int exit) wxFileConfig *pConfig = (wxFileConfig *)(wxConfigBase::Get()); #ifndef PLATFORM_WINDOWS - pConfig->Write(_T("/samplerate"),samplerate); +// pConfig->Write(_T("/samplerate"),samplerate); #endif pConfig->Write(_T("/spectload"),path_spectload); pConfig->Write(_T("/spectload2"),path_spectload2); diff --git a/src/phoneme.h b/src/phoneme.h index da14a9eb..899f480d 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -62,6 +62,7 @@ #define phLONG 0x200000 #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer #define phRHOTIC 0x800000 +#define phNOPAUSE 0x1000000 #define phLOCAL 0x80000000 // used during compilation // fixed phoneme code numbers, these can be used from the program code diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 96c9b726..7272cc6f 100755 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -193,7 +193,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) if((type==phSTOP) || type==(phFRICATIVE)) { - if(voicing==0) + if((voicing==0) && (regression & 0xf)) { voicing = 1; } @@ -206,7 +206,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) else if((type==phVSTOP) || type==(phVFRICATIVE)) { - if(voicing==0) + if((voicing==0) && (regression & 0xf)) { voicing = 2; } @@ -229,10 +229,19 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) voicing = 0; } } - if((regression & 0x4) && (plist2[j].sourceix)) + if(plist2[j].sourceix) { - // stop propagation at a word boundary - voicing = 0; + if(regression & 0x04) + { + // stop propagation at a word boundary + voicing = 0; + } + if(regression & 0x10) + { + // devoice word-final consonants, unless propagating voiced + if(voicing == 0) + voicing = 1; + } } } } @@ -312,10 +321,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) InterpretPhoneme(tr, 0x100, plist3, &phdata); - if((alternative = phdata.pd_param[pd_CHANGEPHONEME]) == 1) - continue; // NULL phoneme, discard - - if(alternative > 1) + if((alternative = phdata.pd_param[pd_CHANGEPHONEME]) > 0) { PHONEME_TAB *ph2; ph2 = ph; @@ -323,6 +329,9 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) plist3->phcode = alternative; plist3->ph = ph; + if(alternative == 1) + continue; // NULL phoneme, discard + if(ph->type == phVOWEL) { plist3->synthflags |= SFLAG_SYLLABLE; @@ -553,8 +562,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) phlist[ix].prepause = 0; phlist[ix].amp = 20; // default, will be changed later - phlist[ix].pitch1 = 0x400; - phlist[ix].pitch2 = 0x400; + phlist[ix].pitch1 = 255; + phlist[ix].pitch2 = 255; ix++; } phlist[ix].newword = 2; // end of clause diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index 1a4c290e..ab7cd0a3 100755 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -56,7 +56,7 @@ ProsodyDisplay::ProsodyDisplay(wxWindow *parent, const wxPoint& pos, const wxSiz linewidth = size.GetWidth(); scalex = 0.5; - scaley = double(LINESEP*6)/80.0; + scaley = double(LINESEP*6)/160.0; selected_ph = -1; // SetBackgroundColour(* wxWHITE); @@ -77,18 +77,18 @@ void InitProsodyDisplay() menu_envelopes = new wxMenu; // entries match those in envelope_data[] in intonation.cpp menu_envelopes->Append(0x100,_T("Fall")); - menu_envelopes->Append(0x101,_T("Rise")); - menu_envelopes->Append(0x102,_T("Fall-rise")); - menu_envelopes->Append(0x103,_T("Fall-rise (R)")); - menu_envelopes->Append(0x104,_T("Fall-rise 2")); - menu_envelopes->Append(0x105,_T("Fall-rise 2(R)")); - menu_envelopes->Append(0x106,_T("Rise-fall")); + menu_envelopes->Append(0x102,_T("Rise")); + menu_envelopes->Append(0x104,_T("Fall-rise")); + menu_envelopes->Append(0x105,_T("Fall-rise (R)")); + menu_envelopes->Append(0x106,_T("Fall-rise 2")); + menu_envelopes->Append(0x107,_T("Fall-rise 2(R)")); + menu_envelopes->Append(0x108,_T("Rise-fall")); - menu_envelopes->Append(0x108,_T("Fall-rise 3")); - menu_envelopes->Append(0x10a,_T("Fall-rise 4")); - menu_envelopes->Append(0x10c,_T("Fall 2")); - menu_envelopes->Append(0x10e,_T("Rise 2")); - menu_envelopes->Append(0x110,_T("Rise-fall-rise")); + menu_envelopes->Append(0x10a,_T("Fall-rise 3")); + menu_envelopes->Append(0x10c,_T("Fall-rise 4")); + menu_envelopes->Append(0x10e,_T("Fall 2")); + menu_envelopes->Append(0x110,_T("Rise 2")); + menu_envelopes->Append(0x112,_T("Rise-fall-rise")); menu_prosody = new wxMenu; menu_prosody->Append(1,_T("Pitch envelope"),menu_envelopes); @@ -129,6 +129,7 @@ void ProsodyDisplay::SelectPh(int index) // A phoneme has been selected PHONEME_LIST *p; const char *emphasized; + int y1, y2; char buf[120]; if(index < 0) return; @@ -140,8 +141,10 @@ void ProsodyDisplay::SelectPh(int index) if(p->stresslevel & 8) emphasized = "*"; + y1 = p->pitch1; + y2 = p->pitch2; sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d [env=%d] Flags %.2x ", - emphasized,p->stresslevel&0x7,p->amp,p->length,p->pitch1,p->pitch2,p->env,p->ph->phflags); + emphasized,p->stresslevel&0x7,p->amp,p->length,y1,y2,p->env,p->ph->phflags); wxLogStatus(wxString(buf,wxConvLocal)); } diff --git a/src/readclause.cpp b/src/readclause.cpp index 7a4760e2..9aec954a 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -67,8 +67,6 @@ static int ssml_ignore_l_angle = 0; // alter tone for announce punctuation or capitals //static const char *tone_punct_on = "\0016T"; // add reverberation, lower pitch //static const char *tone_punct_off = "\001T\001P"; -static const char *tone_punct_on = ""; // add reverberation, lower pitch TEST apply no effect -static const char *tone_punct_off = ""; // ignore these characters static const unsigned short chars_ignore[] = { @@ -122,7 +120,7 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON, CLAUSE_SEMICOLON, // en-dash CLAUSE_SEMICOLON, // em-dash - CLAUSE_SEMICOLON + PUNCT_SAY_NAME, // elipsis + CLAUSE_SEMICOLON + PUNCT_SAY_NAME | 0x8000, // elipsis CLAUSE_QUESTION, // Greek question mark CLAUSE_SEMICOLON, // Greek semicolon @@ -887,24 +885,25 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output if(punct_count==1) { - sprintf(buf,"%s %s %s",tone_punct_on,punctname,tone_punct_off); +// sprintf(buf,"%s %s %s",tone_punct_on,punctname,tone_punct_off); + sprintf(buf,"%s",punctname); } else if(punct_count < 4) { - sprintf(buf,"\001+10S%s",tone_punct_on); + sprintf(buf,"\001+10S"); while(punct_count-- > 0) { sprintf(buf2," %s",punctname); strcat(buf, buf2); } - sprintf(buf2," %s\001-10S",tone_punct_off); + sprintf(buf2," \001-10S"); strcat(buf, buf2); } else { - sprintf(buf,"%s %s %d %s %s", - tone_punct_on,punctname,punct_count,punctname,tone_punct_off); + sprintf(buf,"%s %d %s", + punctname,punct_count,punctname); } } else @@ -1082,7 +1081,7 @@ static void ProcessParamStack(char *outbuf, int &outix) int value; char buf[20]; int new_parameters[N_SPEECH_PARAM]; - static char cmd_letter[N_SPEECH_PARAM] = {0, 'S','A','P','R', 0, 0, 0, 0, 0, 0, 0, 'F'}; // embedded command letters + static char cmd_letter[N_SPEECH_PARAM] = {0, 'S','A','P','R', 0, 'C', 0, 0, 0, 0, 0, 'F'}; // embedded command letters for(param=0; paramtype==phLIQUID) p->prepause = 25; if(prev->type==phVOWEL) - p->prepause = 12; + { + if(!(p->ph->phflags & phNOPAUSE)) + p->prepause = 12; + } } if(next->type==phVOWEL) @@ -426,43 +430,44 @@ void CalcLengths(Translator *tr) pre_sonorant = 1; } else - if((prev->type==phVOWEL) || (prev->type == phLIQUID)) { - p->length = prev->length; p->pitch2 = last_pitch; - if(p->pitch2 < 7) - p->pitch2 = 7; - p->pitch1 = p->pitch2 - 8; - p->env = PITCHfall; - pre_voiced = 0; - - if(p->type == phLIQUID) - { - p->length = speed1; -//p->pitch1 = p->pitch2 - 20; // post vocalic [r/] - } - if(next->type == phVSTOP) + if((prev->type==phVOWEL) || (prev->type == phLIQUID)) { - p->length = (p->length * 160)/100; - } - if(next->type == phVFRICATIVE) - { - p->length = (p->length * 120)/100; - } - } - else - { - p->pitch2 = last_pitch; - for(ix2=ix; ix2length = prev->length; + + if(p->type == phLIQUID) { - p->pitch2 = phoneme_list[ix2].pitch2; - break; + p->length = speed1; + } + + if(next->type == phVSTOP) + { + p->length = (p->length * 160)/100; + } + if(next->type == phVFRICATIVE) + { + p->length = (p->length * 120)/100; } } - p->pitch1 = p->pitch2-8; + else + { + for(ix2=ix; ix2pitch2 = phoneme_list[ix2].pitch2; + break; + } + } + } + + p->pitch1 = p->pitch2-16; + if(p->pitch2 < 16) + { + p->pitch1 = 0; + } p->env = PITCHfall; pre_voiced = 0; } @@ -602,14 +607,13 @@ if(stress <= 1) if(p->type != phVOWEL) { length_mod = 256; // syllabic consonant - min_drop = 8; + min_drop = 16; } p->length = length_mod; // pre-vocalic part // set last-pitch - env2 = p->env; - if(env2 > 1) env2++; // version for use with preceding semi-vowel + env2 = p->env + 1; // version for use with preceding semi-vowel if(p->tone_ph != 0) { @@ -626,11 +630,11 @@ if(p->type != phVOWEL) if(pre_sonorant || pre_voiced) { // set pitch for pre-vocalic part - if(pitch_start == 1024) + if(pitch_start == 255) last_pitch = pitch_start; // pitch is not set - if(pitch_start - last_pitch > 8) // was 9 - last_pitch = pitch_start - 8; + if(pitch_start - last_pitch > 16) + last_pitch = pitch_start - 16; prev->pitch1 = last_pitch; prev->pitch2 = pitch_start; @@ -677,9 +681,10 @@ if(p->type != phVOWEL) if((min_drop > 0) && ((p->pitch2 - p->pitch1) < min_drop)) { - p->pitch1 = p->pitch2 - min_drop; - if(p->pitch1 < 0) - p->pitch1 = 0; + pitch1 = p->pitch2 - min_drop; + if(pitch1 < 0) + pitch1 = 0; + p->pitch1 = pitch1; } last_pitch = p->pitch1 + ((p->pitch2-p->pitch1)*envelope_data[p->env][127])/256; diff --git a/src/spect.h b/src/spect.h index 3cf2f163..e415d01e 100755 --- a/src/spect.h +++ b/src/spect.h @@ -301,6 +301,7 @@ class FormantDlg : public wxPanel wxSpinCtrl *t_amplitude; wxSpinCtrl *t_ampframe; wxSpinCtrl *t_timeframe; + wxTextCtrl *tt_timeframe; wxSpinCtrl *t_timeseq; wxStaticText *t_pitch; wxStaticText *t_orig_frame; @@ -394,4 +395,4 @@ extern void SetSpinCtrl(wxSpinCtrl *t, int value); extern int GetNumeric(wxTextCtrl *t); extern void SetNumeric(wxTextCtrl *t, int value); - +extern int use_spin_controls; diff --git a/src/spectdisplay.cpp b/src/spectdisplay.cpp index 46c72db0..5b6cf548 100755 --- a/src/spectdisplay.cpp +++ b/src/spectdisplay.cpp @@ -246,6 +246,7 @@ void SpectDisplay::RefreshDialogValues(int type) //{============================================= { int ix; + long int value; SpectFrame *sf; if(spectseq == NULL) @@ -255,7 +256,13 @@ void SpectDisplay::RefreshDialogValues(int type) spectseq->amplitude = formantdlg->t_amplitude->GetValue(); sf->amp_adjust = formantdlg->t_ampframe->GetValue(); - sf->length_adjust = formantdlg->t_timeframe->GetValue() - spectseq->GetFrameLength(sframe,0,NULL); + + if(use_spin_controls) + value = formantdlg->t_timeframe->GetValue(); + else + formantdlg->tt_timeframe->GetValue().ToLong(&value); + + sf->length_adjust = value - spectseq->GetFrameLength(sframe,0,NULL); for(ix=0; ix < N_KLATTP; ix++) { @@ -268,7 +275,7 @@ void SpectDisplay::RefreshDialogValues(int type) Refresh(); } else - RefreshFrame(sframe); + RefreshFrame(sframe); // frame amplitude } diff --git a/src/speech.h b/src/speech.h index e4dc89ba..85404717 100755 --- a/src/speech.h +++ b/src/speech.h @@ -69,7 +69,7 @@ typedef struct { const char *mnem; int value; } MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); +int LookupMnem(MNEM_TAB *table, const char *string); #ifdef PLATFORM_WINDOWS diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 4aaf7b8e..45cf1754 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.43.14 29.Mar.10"; -const int version_phdata = 0x014300; +const char *version_string = "1.43.31 21.May.10"; +const int version_phdata = 0x014317; int option_device_number = -1; FILE *f_logespeak = NULL; @@ -71,8 +71,8 @@ int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsig -static char *ReadPhFile(void *ptr, const char *fname) -{//================================================== +static char *ReadPhFile(void *ptr, const char *fname, int *size) +{//============================================================= FILE *f_in; char *p; unsigned int length; @@ -102,6 +102,8 @@ static char *ReadPhFile(void *ptr, const char *fname) } fclose(f_in); + if(size != NULL) + *size = length; return(p); } // end of ReadPhFile @@ -112,15 +114,19 @@ int LoadPhData() int n_phonemes; int version; int result = 1; + int length; unsigned char *p; - if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab")) == NULL) + if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab",NULL)) == NULL) return(-1); - if((phoneme_index = (USHORT *)ReadPhFile((void *)(phoneme_index),"phonindex")) == NULL) + if((phoneme_index = (USHORT *)ReadPhFile((void *)(phoneme_index),"phonindex",NULL)) == NULL) return(-1); - if((spects_data = ReadPhFile((void *)(spects_data),"phondata")) == NULL) + if((spects_data = ReadPhFile((void *)(spects_data),"phondata",NULL)) == NULL) + return(-1); + if((tunes = (TUNE *)ReadPhFile((void *)(tunes),"intonations",&length)) == NULL) return(-1); wavefile_data = (unsigned char *)spects_data; + n_tunes = length / sizeof(TUNE); // read the version number from the first 4 bytes of phondata version = 0; @@ -583,7 +589,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, int instn2; PHONEME_TAB *ph; PHONEME_LIST *plist_this; - static int ph_position[7] = {0, 1, 2, 3, 2, 0, 1}; + static int ph_position[7] = {0, 1, 2, 3, 2, 0, 1}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel data = instn & 0xff; instn2 = instn >> 8; @@ -622,6 +628,15 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, plist_this = plist; plist = &plist[which-1]; + if(which == 0) + { + if(plist->phcode == 1) + { + // This is a NULL phoneme, a phoneme has been deleted so look at the previous phoneme + plist = &plist[-1]; + } + } + if(control & 0x100) { // change phonemes pass diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 54908298..79ad8a42 100755 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -162,11 +162,11 @@ static void DoPitch(unsigned char *env, int pitch1, int pitch2) EndPitch(0); - if(pitch1 == 1024) + if(pitch1 == 255) { // pitch was not set - pitch1 = 24; - pitch2 = 33; + pitch1 = 55; + pitch2 = 76; env = envelope_data[PITCHfall]; } last_pitch_cmd = wcmdq_tail; @@ -1308,8 +1308,14 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if(p->newword) { - if(translator->langopts.param[LOPT_WORD_MERGE] == 0) + if(((p->type == phVOWEL) && (translator->langopts.param[LOPT_WORD_MERGE] & 1)) || + (p->ph->phflags & phNOPAUSE)) + { + } + else + { last_frame = NULL; + } sourceix = (p->sourceix & 0x7ff) + clause_start_char; diff --git a/src/synthesize.h b/src/synthesize.h index 60d0387a..9c82bbce 100755 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -25,7 +25,7 @@ #define STEPSIZE 64 // 2.9mS at 22 kHz sample rate #define PITCHfall 0 -#define PITCHrise 1 +#define PITCHrise 2 // flags set for frames within a spectrum sequence #define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer @@ -64,8 +64,9 @@ #define EMBED_U 11 // audio uri #define EMBED_B 12 // break #define EMBED_F 13 // emphasis +#define EMBED_C 14 // capital letter indication -#define N_EMBEDDED_VALUES 14 +#define N_EMBEDDED_VALUES 15 extern int embedded_value[N_EMBEDDED_VALUES]; extern int embedded_default[N_EMBEDDED_VALUES]; @@ -232,15 +233,15 @@ typedef struct { unsigned short sourceix; // ix into the original source text string, only set at the start of a word PHONEME_TAB *ph; + short length; // length_mod unsigned char env; // pitch envelope number unsigned char type; unsigned char prepause; unsigned char postpause; unsigned char amp; unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence - short length; // length_mod - short pitch1; // pitch, 0-4095 within the Voice's pitch range - short pitch2; + unsigned char pitch1; + unsigned char pitch2; } PHONEME_LIST; @@ -379,6 +380,49 @@ typedef struct { } SPEED_FACTORS; +typedef struct { + unsigned int name; + unsigned char flags[4]; + signed char headextend[8]; + + unsigned char prehead_start; + unsigned char prehead_end; + unsigned char onset; + unsigned char head_start; + unsigned char head_end; + unsigned char head_last; + + unsigned char stressed_env; + unsigned char head_drops; + unsigned char head_max_steps; + unsigned char n_headextend; + + char unstressed_start; + char unstressed_end; + char unstressed_shape; + + unsigned char nucleus0_env; // pitch envelope, tonic syllable is at end, no tail + unsigned char nucleus0_max; + unsigned char nucleus0_min; + + unsigned char nucleus1_env; // when followed by a tail + unsigned char nucleus1_max; + unsigned char nucleus1_min; + unsigned char tail_start; + unsigned char tail_end; + + unsigned char split_nucleus_env; + unsigned char split_nucleus_max; + unsigned char split_nucleus_min; + unsigned char split_tail_start; + unsigned char split_tail_end; + + unsigned char spare[10]; +} TUNE; + +extern int n_tunes; +extern TUNE *tunes; + // phoneme table extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; @@ -467,7 +511,7 @@ int Read4Bytes(FILE *f); int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags); -extern unsigned char *envelope_data[18]; +extern unsigned char *envelope_data[20]; extern int formant_rate[]; // max rate of change of each formant extern SPEED_FACTORS speed; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index c81b9e1e..737efb76 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -39,7 +39,8 @@ #define L_qa 0x716100 #define L_grc 0x677263 // grc Ancient Greek #define L_jbo 0x6a626f // jbo Lojban -#define L_pap 0x706170 // pap Papiamento +#define L_pap 0x706170 // pap Papiamento] +#define L_shs 0x736873 // shs Shuswap / Secwepemctsin #define L_zhy 0x7a6879 // zhy // start of unicode pages for character sets @@ -57,6 +58,10 @@ static void Translator_Russian(Translator *tr); + + + + static void SetLetterVowel(Translator *tr, int c) {//============================================== tr->letter_bits[c] = (tr->letter_bits[c] & 0x40) | 0x81; // keep value for group 6 (front vowels e,i,y) @@ -216,6 +221,33 @@ static const unsigned int replace_cyrillic_latin[] = 0x45c,0x107, 0}; // ѓ ѕ ќ +static void SetCyrillicLetters(Translator *tr) +{//=========================================== + // character codes offset by 0x420 + static const char ru_vowels[] = {0x10,0x15,0x31,0x18,0x1e,0x23,0x2b,0x2d,0x2e,0x2f,0}; + static const char ru_consonants[] = {0x11,0x12,0x13,0x14,0x16,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0}; + static const char ru_soft[] = {0x2c,0x19,0x27,0x29,0}; // letter group B [k ts; s;] + static const char ru_hard[] = {0x2a,0x16,0x26,0x28,0}; // letter group H [S Z ts] + static const char ru_nothard[] = {0x11,0x12,0x13,0x14,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x27,0x29,0x2c,0}; + static const char ru_voiced[] = {0x11,0x12,0x13,0x14,0x16,0x17,0}; // letter group G (voiced obstruents) + static const char ru_ivowels[] = {0x2c,0x2e,0x2f,0x31,0}; // letter group Y (iotated vowels & soft-sign) + tr->charset_a0 = charsets[18]; // KOI8-R + tr->transpose_offset = 0x42f; // convert cyrillic from unicode into range 0x01 to 0x22 + tr->transpose_min = 0x430; + tr->transpose_max = 0x451; + + tr->letter_bits_offset = OFFSET_CYRILLIC; + memset(tr->letter_bits,0,sizeof(tr->letter_bits)); + SetLetterBits(tr,0,ru_vowels); + SetLetterBits(tr,1,ru_soft); + SetLetterBits(tr,2,ru_consonants); + SetLetterBits(tr,3,ru_hard); + SetLetterBits(tr,4,ru_nothard); + SetLetterBits(tr,5,ru_voiced); + SetLetterBits(tr,6,ru_ivowels); + SetLetterBits(tr,7,ru_vowels); +} // end of SetCyrillicLetters + void SetIndicLetters(Translator *tr) {//================================= @@ -238,6 +270,7 @@ void SetIndicLetters(Translator *tr) tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama } + void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps) {//================================================================================== if(lengths != NULL) @@ -284,6 +317,19 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words break; + case L('b','g'): //Bulgarian + { + SetCyrillicLetters(tr); + SetLetterVowel(tr,0x2a); + tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word + tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; + tr->langopts.param[LOPT_REDUCE] = 2; + tr->langopts.stress_rule = STRESSPOSN_2R; + tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_SINGLE_AND | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS ; + tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator + } + break; + case L('b','n'): // Bengali { static const short stress_lengths_bn[8] = {180, 180, 210, 210, 0, 0, 230, 240}; @@ -601,6 +647,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.numbers = NUM_DFRACTION_5 | NUM_ALLOW_SPACE | NUM_ROMAN | NUM_ROMAN_ORDINAL | NUM_ROMAN_CAPITALS | NUM_ORDINAL_DOT | NUM_OMIT_1_HUNDRED; tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator tr->langopts.decimal_sep = ','; + tr->langopts.max_roman = 899; tr->langopts.min_roman = 1; SetLetterVowel(tr,'y'); tr->langopts.spelling_stress = 1; @@ -917,6 +964,16 @@ SetLengthMods(tr,3); // all equal } break; + case L('s','l'): // Slovenian + tr->charset_a0 = charsets[2]; // ISO-8859-2 + tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary + tr->langopts.stress_flags = 0x20; + tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x13; + tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; + tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator + SetLetterVowel(tr,'r'); + break; + case L('s','q'): // Albanian { static const short stress_lengths_sq[8] = {150, 150, 180, 180, 0, 0, 300, 300}; @@ -1127,38 +1184,16 @@ SetLengthMods(tr,3); // all equal + static void Translator_Russian(Translator *tr) {//=========================================== static const unsigned char stress_amps_ru[] = {16,16, 18,18, 20,24, 24,22 }; static const short stress_lengths_ru[8] = {150,140, 220,220, 0,0, 260,280}; - - - // character codes offset by 0x420 - static const char ru_vowels[] = {0x10,0x15,0x31,0x18,0x1e,0x23,0x2b,0x2d,0x2e,0x2f,0}; - static const char ru_consonants[] = {0x11,0x12,0x13,0x14,0x16,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0}; - static const char ru_soft[] = {0x2c,0x19,0x27,0x29,0}; // letter group B [k ts; s;] - static const char ru_hard[] = {0x2a,0x16,0x26,0x28,0}; // letter group H [S Z ts] - static const char ru_nothard[] = {0x11,0x12,0x13,0x14,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x27,0x29,0x2c,0}; - static const char ru_voiced[] = {0x11,0x12,0x13,0x14,0x16,0x17,0}; // letter group G (voiced obstruents) - static const char ru_ivowels[] = {0x2c,0x15,0x31,0x18,0x2e,0x2f,0}; // letter group Y (iotated vowels & soft-sign) + static const char ru_ivowels2[] = {0x2c,0x15,0x18,0x2e,0x2f,0}; // add more vowels to letter group Y (iotated vowels & soft-sign) SetupTranslator(tr,stress_lengths_ru,stress_amps_ru); - - tr->charset_a0 = charsets[18]; // KOI8-R - tr->transpose_offset = 0x42f; // convert cyrillic from unicode into range 0x01 to 0x22 - tr->transpose_min = 0x430; - tr->transpose_max = 0x451; - - tr->letter_bits_offset = OFFSET_CYRILLIC; - memset(tr->letter_bits,0,sizeof(tr->letter_bits)); - SetLetterBits(tr,0,ru_vowels); - SetLetterBits(tr,1,ru_soft); - SetLetterBits(tr,2,ru_consonants); - SetLetterBits(tr,3,ru_hard); - SetLetterBits(tr,4,ru_nothard); - SetLetterBits(tr,5,ru_voiced); - SetLetterBits(tr,6,ru_ivowels); - SetLetterBits(tr,7,ru_vowels); + SetCyrillicLetters(tr); + SetLetterBits(tr,6,ru_ivowels2); tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; diff --git a/src/translate.cpp b/src/translate.cpp index 658927dd..0fda965a 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -573,6 +573,26 @@ char *strchr_w(const char *s, int c) } +static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word) +{//============================================================================================ + int posn = 0; + + while((*word != ' ') && (*word != 0)) + { + word += TranslateLetter(tr, word, phonemes, spell_word); + posn++; + if(phonemes[0] == phonSWITCH) + { + // change to another language in order to translate this word + strcpy(word_phonemes,phonemes); + return(NULL); + } + } + SetSpellingStress(tr,phonemes,spell_word,posn); + return(word); +} // end of SpeakIndividualLetters + + int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) {//=========================================================================== @@ -747,7 +767,7 @@ if((wmark > 0) && (wmark < 8)) if(word_phonemes[0] == phonSWITCH) return(0); - found = TranslateNumber(tr,word1,phonemes,dictionary_flags,wtab); + found = TranslateNumber(tr, word1, phonemes, dictionary_flags, wtab, 0); } if(!found & ((wflags & FLAG_UPPERS) != FLAG_FIRST_UPPER)) @@ -781,25 +801,15 @@ if((wmark > 0) && (wmark < 8)) if(spell_word > 0) { // Speak as individual letters - wordx = word1; - posn = 0; phonemes[0] = 0; end_type = 0; - while(*wordx != ' ') + if(SpeakIndividualLetters(tr, word1, phonemes, spell_word) == NULL) { - wordx += TranslateLetter(tr,wordx, phonemes, spell_word); - posn++; - if(phonemes[0] == phonSWITCH) - { - // change to another language in order to translate this word - strcpy(word_phonemes,phonemes); - if(word_length > 1) - return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces - return(0); - } + if(word_length > 1) + return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces + return(0); } - SetSpellingStress(tr,phonemes,spell_word,posn); } else if(found == 0) @@ -870,19 +880,10 @@ if((wmark > 0) && (wmark < 8)) utf8_in(&wc, wordx); if((word_length == 1) && IsAlpha(wc)) { - posn = 0; - while((*wordx != ' ') && (*wordx != 0)) + if((wordx = SpeakIndividualLetters(tr, wordx, phonemes, spell_word)) == NULL) { - wordx += TranslateLetter(tr,wordx, phonemes, 4); - posn++; - if(phonemes[0] == phonSWITCH) - { - // change to another language in order to translate this word - strcpy(word_phonemes,phonemes); - return(0); - } + return(0); } - SetSpellingStress(tr,phonemes,spell_word,posn); } } @@ -2114,7 +2115,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t charix[charix_top+3] = 0; clause_pause = (terminator & 0xfff) * 10; // mS - tone = (terminator >> 12) & 0xf; + tone = (terminator >> 12) & 0x7; if(tone2 != 0) { // override the tone type @@ -2143,6 +2144,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t { max_clause_pause = clause_pause; } + tr->clause_terminator = terminator; if(new_sentence) { @@ -2440,6 +2442,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre c = ' '; // lower case followed by upper case, treat as new word space_inserted = 1; prev_in_save = c; +// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set } else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) diff --git a/src/translate.h b/src/translate.h index 5bc55732..b7e56c08 100755 --- a/src/translate.h +++ b/src/translate.h @@ -52,10 +52,11 @@ #define FLAG_STEM 0x40000 // must have a suffix #define FLAG_DOUBLING 0x80000 // doubles the following consonant +#define BITNUM_FLAG_ALT 19 // bit number of FLAG_ALT_TRANS - 1 #define FLAG_ALT_TRANS 0x100000 // language specific #define FLAG_ALT2_TRANS 0x200000 // language specific -#define FLAG_COMBINE 0x400000 // combine with the next word -#define FLAG_ALT3_TRANS 0x800000 // language specific +#define FLAG_ALT3_TRANS 0x400000 // language specific +#define FLAG_COMBINE 0x800000 // combine with the next word #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot @@ -81,6 +82,7 @@ #define FLAG_ALLCAPS 0x400 // only if the word is all capitals #define FLAG_ACCENT 0x800 // character name is base-character name + accent name #define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2 +#define FLAG_SENTENCE 0x2000 // only if the clause is a sentence #define BITNUM_FLAG_ALLCAPS 0x2a #define BITNUM_FLAG_HYPHENATED 0x2c @@ -154,7 +156,7 @@ #define RULE_NO_SUFFIX 24 // N #define RULE_NOTVOWEL 25 // K #define RULE_IFVERB 26 // V -#define RULE_ALT1 28 // T word has $alt attribute +#define RULE_DOLLAR 28 // $ commands #define RULE_NOVOWELS 29 // X no vowels up to word boundary #define RULE_SPELLING 31 // W while spelling letter-by-letter #define RULE_LAST_RULE 31 @@ -257,6 +259,7 @@ extern const int param_defaults[N_SPEECH_PARAM]; // bit 1=LANG=ru, don't propagate over [v] // bit 2=don't propagate acress word boundaries // bit 3=LANG=pl, propagate over liquids and nasals + // bit 4=devoice word-final consonants #define LOPT_REGRESSIVE_VOICING 4 // 0=default, 1=no check, other allow this character as an extra initial letter (default is 's') @@ -268,7 +271,7 @@ extern const int param_defaults[N_SPEECH_PARAM]; // increase this to prevent sonorants being shortened before shortened (eg. unstressed) vowels #define LOPT_SONORANT_MIN 7 - // don't break vowels at word boundary + // bit 0: don't break vowels at word boundary #define LOPT_WORD_MERGE 8 // max. amplitude for vowel at the end of a clause @@ -385,6 +388,7 @@ typedef struct { #define NUM_VIGESIMAL 0x400000 #define NUM_ROMAN_ORDINAL 0x800000 #define NUM_ROMAN_CAPITALS 0x1000000 +#define NUM_THOUSAND_AND 0x2000000 // bits0-1=which numbers routine to use. // bit2= thousands separator must be space @@ -408,6 +412,7 @@ typedef struct { // bit22= vigesimal number, if tens are not found // bit23=Roman numbers are ordinal numbers // bit24=Roman numbers must be capital letters + // bit25='and' after thousands if there are no hundreds int numbers; // bits 1-4 use variant form of numbers before thousands,millions,etc. @@ -526,6 +531,7 @@ struct Translator int prepause_timeout; int end_stressed_vowel; // word ends with stressed vowel int prev_dict_flags; // dictionary flags from previous word + int clause_terminator; }; // end of class Translator @@ -608,7 +614,7 @@ void DeleteTranslator(Translator *tr); int Lookup(Translator *tr, const char *word, char *ph_out); int LookupFlags(Translator *tr, const char *word); -int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab); +int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control); int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab); void ChangeWordStress(Translator *tr, char *word, int new_stress); diff --git a/src/wavegen.cpp b/src/wavegen.cpp index f423ee1b..143d40ba 100755 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -134,8 +134,8 @@ int wcmdq_head=0; int wcmdq_tail=0; // pitch,speed, -int embedded_default[N_EMBEDDED_VALUES] = {0,50,170,100,50, 0,0, 0,170,0,0,0,0,0}; -static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,600,300,99,99,99, 0,600,0,0,0,0,4}; +int embedded_default[N_EMBEDDED_VALUES] = {0,50,170,100,50, 0,0, 0,170,0,0,0,0,0,0}; +static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,600,300,99,99,99, 0,600,0,0,0,0,4,0}; #define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word int current_source_index=0; @@ -1635,8 +1635,8 @@ void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pit // compensate for change in pitch when the range is narrowed or widened base -= (range - voice->pitch_range)*18; - *pitch_base = base + (pitch1 * range); - *pitch_range = base + (pitch2 * range) - *pitch_base; + *pitch_base = base + (pitch1 * range)/2; + *pitch_range = base + (pitch2 * range)/2 - *pitch_base; }