diff --git a/dictsource/af_rules b/dictsource/af_rules index 54328286..ece60904 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1829,7 +1829,7 @@ hiërar (gie_N h%i@r%ar // move default stress: hiërargie hiër (argie h%i@r // stress on 1st a: hiërargies/-e hiëro (glie h%i@r%u // fix stress and vowel sounds: hiëroglief/-gliewe - A) hle (_ =LE // Nguni words and names ending in -hle: Enhlalakahle/Hlalanikahle/malahle/Phahle + A) hle (_ =l#E // Nguni words and names ending in -hle: Enhlalakahle/Hlalanikahle/malahle/Phahle _) hobo ho@bu // fix o sound in compounds: hobokonsert/-musiek/-solo/-sonata/-speler hoender hun@r // drop d: hoender and many compounds hoeve (r h%uf& // fix stress and e sounds: hoever(re) diff --git a/dictsource/cy_rules b/dictsource/cy_rules index a3247012..d6cfebd8 100644 --- a/dictsource/cy_rules +++ b/dictsource/cy_rules @@ -117,11 +117,11 @@ .group l _) l (_ El - _) ll (_ EL + _) ll (_ El# l l - ll L + ll l# - _) llan Lan + _) llan l#an .group m diff --git a/dictsource/da_list b/dictsource/da_list index de3b0dc1..42a5a961 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -50,7 +50,7 @@ _hok h'uk // character names _cap stoVt||boustaw _?A boustaw -_?? symboL +_?? symbol _#9 tab _#32 blank @@ -83,7 +83,7 @@ __ b'Onsdrai ¢ s'ents ¥ j'en: µ my -' apostr'of +' apostr'Vf // PB o changed to V ½ en'hal + plus @@ -106,7 +106,7 @@ _14 fj'ord@-n _15 f'Emd@-n _16 s'ajsd@-n _17 s'Wd@-n // PP Y changed to W -_18 'ad@-n +_18 '&d@-n // PB a changed to & _19 n'ed@-n _2X t'y:w _3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] @@ -115,7 +115,7 @@ _5X hal't*es _6X t*'es _7X halfj'&rs _8X f'irs -_9X half'Ems +_9X h&lf'Ems // PB a changed to & _0C h'un*@:D _0M1 t'u:s@-n _1M1 ed||t'u:s@-n // PB added 'et' to tusind @@ -161,6 +161,8 @@ _9Xo half'Emsenstyv@n@ // 95. den dEn $u en e:n $u et ed $u +her $u +kun $u // conjunctions og V $u+ $pause // and @@ -171,12 +173,12 @@ for fV fordi fVd'i $pause // because - PB: changed stress når nVr $pause // while som $u+ $pause // who (relative) -der d&r $u+ $pause // PB changed from [d]A +der d&r $u+ $u // PB changed from [d]A hvor v'Vr // where -hvorfor vVf'Vr // why +hvorfor vVf'V // why - firan r deleted // prepositions -på pO +på pO $u til $u+ // toward fra $u+ // from ved $u+ // at @@ -191,19 +193,20 @@ som sVm // which / that - PB: removed [$u+] // pronouns jeg jai $u+ // I -du du $u+ +du du $u de di $u han $u hun $u det de $u +dét de vi $u -i _i: $u+ +i _i $u+ mig maj $u // me -dig daj //$u +dig daj $u dem $u ham $u hende $u -//sig saj +sig $u os Vs $u jer denne $u+ // this @@ -215,22 +218,22 @@ hvis ves $u+ // PB - whose min min $u mit mit $u mine m'in@ -din d'in +din d'in $u+ dit d'it $u dine d'ine -deres de:Vs $u -hans $u -hendes $u -dens $u +deres dE:Vs $u +hans $u+ +hendes $u+ +dens $u+ dets $u -sin s'in +sin s'in $u+ sit s'it $u -sine $u +sine $u+ vor $u vort $u vore $u vores $u -jeres $u +jeres $u+ // auxillary verbs @@ -249,6 +252,7 @@ bør $u+ // ought b be: c se: d de: +_e e: f Ef g ge: h hO: @@ -263,7 +267,7 @@ p pe: q ku: r Er s es -_t te: +//t te: mooved to da_rules because of clash with T-shirt u u? v ve: w d'Vbeltve: @@ -310,8 +314,6 @@ homepage _^_EN hooligan _^_EN interface _^_EN image _^_EN -jet _^_EN -joint _^_EN joke _^_EN joystick _^_EN junkie _^_EN @@ -399,8 +401,6 @@ purvis _^_EN sally _^_EN $alt washington _^_EN $alt white _^_EN $alt -new _^_EN -york _^_EN $alt chicago _^_EN $alt // PB French words @@ -889,6 +889,7 @@ sentimental $alt signal $alt sjakal $alt social $alt +special $alt // beginning of a word - specialarbejder spinal $alt spiral $alt subliminal $alt @@ -991,6 +992,39 @@ vegetar $alt velar $alt vokabular $alt +// PB final -agtig - stressed a +barnagtig $alt +blødagtig $alt +delagtig $alt +drilagtig $alt +fejlagtig $alt +fordelagtig $alt +frygtagtig $alt +følgagtig $alt +grinagtig $alt +kivagtig $alt +krampagtig $alt +krampeagtig $alt +kvindagtig $alt +langagtig $alt +livagtig $alt +løgnagtig $alt +løsagtig $alt +meddelagtig $alt +naragtig $alt +nøjagtig $alt +pinagtig $alt +skabagtig $alt +skalkagtig $alt +skurkagtig $alt +skælagtig $alt +splidagtig $alt +storagtig $alt +svigagtig $alt +svinagtig $alt +tvivlagtig $alt +tyvagtig $alt + // PB words with final -an - stressed a aeroplan $alt agraman $alt @@ -1903,6 +1937,7 @@ dramatik $alt duplik $alt dynamik $alt elastik $alt +elektronik $alt emblematik $alt energetik $alt epik $alt @@ -2724,6 +2759,120 @@ vanadium $alt vivarium $alt vokabularium $alt +// PB nouns with final -ie - stress on previous syllable +// unofficial suffix for the "ium" words above +adverbie $alt +akvarie $alt +aluminie $alt +ambulatorie $alt +amfibie $alt +ammonie $alt +antependie $alt +auditorie $alt +auspicie $alt +beneficie $alt +beryllie $alt +bromkalie $alt +cyankalie $alt +decennie $alt +delfinarie $alt +delirie $alt +deuterie $alt +diplomatarie $alt +dokumentarie $alt +eksaminatorie $alt +eksperimentarie $alt +elysie $alt +epitafie $alt +evangelie $alt +geranie $alt +germanie $alt +gerundie $alt +glosarie $alt +glossarie $alt +gymnasie $alt +harmonie $alt +herbarie $alt +imperie $alt +indicie $alt +ingenie $alt +instrumentarie $alt +interludie $alt +intermedie $alt +iridie $alt +judicie $alt +kalendarie $alt +kaprifolie $alt +kenotafie $alt +klimakterie $alt +kollegie $alt +kollodie $alt +kollokvie $alt +kolofonie $alt +kolumbarie $alt +kommissorie $alt +kompendie $alt +koncilie $alt +konservatorie $alt +konsilie $alt +konsistorie $alt +konsortie $alt +krematorie $alt +kriterie $alt +kuratorie $alt +laboratorie $alt +magnesie $alt +martyrie $alt +millennie $alt +ministerie $alt +moratorie $alt +mycelie $alt +mysterie $alt +neptunie $alt +niobie $alt +nobelie $alt +observatorie $alt +offertorie $alt +oratorie $alt +ovarie $alt +palladie $alt +participie $alt +planetarie $alt +plutonie $alt +polonie $alt +polynomie $alt +postludie $alt +privilegie $alt +proprie $alt +proscenie $alt +provisorie $alt +præludie $alt +præsidie $alt +refektorie $alt +refugie $alt +remedie $alt +responsorie $alt +sammensurie $alt +sanatorie $alt +scenarie $alt +seminarie $alt +silentie $alt +silicie $alt +skuffedarie $alt +solarie $alt +stipendie $alt +suppositorie $alt +suspensorie $alt +symposie $alt +sælarie $alt +terrarie $alt +territorie $alt +testimonie $alt +titanie $alt +vanadie $alt +vivarie $alt +vokabularie $alt + // PB words with final -ie - stress on the previous syllable akacie $alt aralie $alt @@ -2784,6 +2933,63 @@ rimesse $alt stewardesse $alt tristesse $alt +PB final -id - stressed i +adenoid $alt +alkaloid $alt +amid $alt +android $alt +baktericid $alt +biocid $alt +bromid $alt +celluloid $alt +cyanid $alt +dioxid $alt +europid $alt +faktoid $alt +fascistoid $alt +fluid $alt +fluorid $alt +frigid $alt +fungicid $alt +galliumoxid $alt +glykosid $alt +gravid $alt +herbicid $alt +hybrid $alt +hydrid $alt +hydroxid $alt +individ $alt +insekticid $alt +invalid $alt +karbid $alt +klorid $alt +kolloid $alt +krystalloid $alt +likvid $alt +metalloid $alt +mongolid $alt +mongoloid $alt +morbid $alt +negrid $alt +negroid $alt +oxid $alt +paranoid $alt +perfid $alt +pesticid $alt +polyamid $alt +rapid $alt +rigid $alt +sakkarid $alt +skizoid $alt +splendid $alt +steroid $alt +stupid $alt +sulfid $alt +tabloid $alt +timid $alt +tyfoid $alt +valid $alt + //PB words with final -isk - stress on the previous syllable abkhasisk $alt absolutistisk $alt @@ -4400,6 +4606,7 @@ påtagelig $alt påvirkelig $alt påviselig $alt regederlig $alt +retfærdig $alt sagtmodig $alt samdrægtig $alt samhørig $alt @@ -4407,6 +4614,7 @@ sammenfoldelig $alt sammenklappelig $alt sammenlignelig $alt sammentrækkelig $alt +samvittig $alt // PB not a real word - used for "samvittighed" sandfærdig $alt sandsynlig $alt selskabelig $alt @@ -4900,7 +5108,7 @@ appreter $alt approber $alt apter $alt arbitrer $alt -argumenter $alt +argumentere $alt arkaiser $alt arkivere $alt armer $alt @@ -5282,7 +5490,7 @@ fundamenter $alt funder $alt funger $alt funktionaliser $alt -funktioner $alt +funktionere $alt furner $alt fusioner $alt gagere $alt @@ -5328,6 +5536,7 @@ grimasser $alt ggrubliser $alt grundere $alt gruppere $alt +omgruppere $alt gruyere gryj'E:r $alt græciser $alt grønlandiser $alt @@ -5512,7 +5721,7 @@ karrier $alt karter $alt kartonner $alt kaserner $alt -kasser $alt +kassere $alt kastrer $alt katalogiser $alt katalyser $alt @@ -5549,6 +5758,7 @@ kolorer $alt kolporter $alt kombiner $alt kommander $alt +næstkommander $alt // næstkommanderende kommater $alt kommenter $alt kommercialiser $alt @@ -5650,8 +5860,8 @@ krypter $alt kryptografer $alt krystalliser $alt kubere $alt -kujoner $alt -kulminer $alt +kujonere $alt +kulminere $alt kultiver $alt kumuler $alt kuper $alt @@ -5703,7 +5913,8 @@ longer $alt lorgnetter $alt lukrer $alt lædere $alt -magasiner $alt +magasinere $alt +opmagasiner $alt magnetiser $alt majoriser $alt makadamiser $alt @@ -5737,7 +5948,7 @@ medicinere $alt medier $alt mediter $alt mekaniser $alt -meler $alt +melere $alt memorer $alt menager $alt menstruer $alt @@ -5758,7 +5969,7 @@ miser $alt miserer $alt missioner $alt mobiliser $alt -modeller $alt +modellere $alt moderer $alt moderniser $alt modificer $alt @@ -5803,7 +6014,7 @@ nomadiser $alt nominaliser $alt nominer $alt normaliser $alt -normer $alt +normere $alt notere $alt notificer $alt nuancere $alt @@ -5818,7 +6029,7 @@ offerer $alt okkuper $alt oktrojer $alt okuler $alt -olier $alt +oliere $alt onaner $alt onduler $alt opaliser $alt @@ -5857,8 +6068,8 @@ paralyser $alt parceller $alt pardonner $alt parer $alt -parfumer $alt -parker $alt +parfumere $alt +parkere $alt parlamenter $alt parler $alt parodiere $alt @@ -5870,13 +6081,13 @@ passiver $alt passiviser $alt pasteuriser $alt pasticher $alt -patenter $alt +patentere $alt patiner $alt patroniser $alt -patruljer $alt +patruljere $alt pausere $alt pelleter $alt -penduler $alt +pendulere $alt pensioner $alt perciper $alt perfektioner $alt @@ -5968,7 +6179,7 @@ prospekter $alt prostituer $alt proteger $alt protester $alt -protokoller $alt +protokollere $alt provianter $alt provoker $alt præciser $alt @@ -6200,7 +6411,7 @@ specificer $alt spekuler $alt spender $alt spionere $alt -spoler $alt +spolere $alt sponser $alt sponsorer $alt stabiliser $alt @@ -6349,7 +6560,7 @@ varedeklarer $alt varier $alt vatter $alt vegeter $alt -ventiler $alt +ventilere $alt verbaliser $alt verificer $alt verser $alt @@ -6412,6 +6623,7 @@ konstitutionel $alt konventionel $alt kornel $alt kriminel $alt +kriminal $alt // PB as in "kriminalroman" maskinel $alt model $alt nominel $alt @@ -8623,6 +8835,7 @@ føljeton fWljet'Vn $alt facon f&s'Vn $alt lazaron $alt makron $alt +melon $alt neuron $alt kupon kup'VN $alt postillon p,Vsdilj'VN $alt @@ -9696,6 +9909,35 @@ vibrator $alt visitator $alt ækvator $alt +// PB Final -ut - stressed u +absolut $alt +akut $alt +attribut $alt +azimut $alt +badut $alt +cerut $alt +dippedut $alt +disput disb'yt $alt +herut $alt +institut $alt +kanut $alt +kaput $alt +konvolut $alt +masut $alt +minut $alt +partout pAt'u $alt +passepartout p&abAt'u $alt +pullimut $alt +rekrut $alt +resolut $alt +salut $alt +servitut $alt +starut $alt +statut $alt +substitut $alt +tribut $alt +volut $alt + // PB nouns ending with -ør - stressed last syllable akkompagnatør $alt akkvisitør $alt @@ -10045,7 +10287,7 @@ sinecure $alt tournure $alt // exceptions -alene al'en@ // alone +alene &l'en@ // alone egen a:j@n mc mak' $capital // PB McDonald egne a:in@ @@ -10133,6 +10375,7 @@ billie bile // PB the name Billie (en passant) AN||p&s'AN (coney island) 'kouni||'ajl3nd // PB (union station) junj3n||steisj@n // PB +(secret service) sigred||s'Wvis chevrolet sjEvrol'e saigon sajg3-n // PB Saigon managua m&n'&:gw& @@ -10149,8 +10392,17 @@ 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 -(tv'et) te:ve:@d // *PB -(tv'er) te:ve:V // *PB +(tv'et) te:ve:@d // PB +(tv'er) te:ve:V // PB +(cd'en) se:de:3n // PB +(cd'er) se:de:V // PB +emp $abbrev +usa $abbrev +eu $abbrev +edb $abbrev +it $abbrev +id $abbrev +dna $abbrev sos $abbrev // PB the SOS signal pharm fA:rm? $hasdot // PB fx cand. pharm. phil fil/3 $hasdot // PB fx cand. phil. @@ -10187,7 +10439,7 @@ sig si $capital //PB Sig = si with capital S - Sig det med blom (vi steg) vi||st'e (de steg) di||st'e (alle steg) &l3||st'e -steget ste@d $atend $sentence +steget ste@d // 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 diff --git a/dictsource/da_rules b/dictsource/da_rules index 0793f66a..b3bbb888 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -1,3150 +1,3733 @@ - -// 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 + +// 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 +ö ø +ä æ + +.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 + _madr) a (s 'A // PB stressed + cr) a (ck & // PB + efter) a (b & // PB efterabe + for) a (n & // foran + for) a (nd A // PB forandre +// 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 + torn) ad (o '&d // PB stressed + kn) a (p A // PB manchetknap + m) a (p a // PB mappe + 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] after consonant before m + C) a (m a // PB ham, gamle, lam + C) a (mi & // PB vitamin +// 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 + sk) a (k A // PB skak +// PB general rule: [a] after k before pp + k) a (p+ a // PB kappe, kaptajn +// PB general rule: [a] after sk before f + sk) a (f+ a // PB skaffe +// PB general rule: [&] after sk before p/b + sk) a (L06+ & // PB skab, beredskab +// PB general rule: [A] after sk before p/b + t + sk) a (L06t+ A // PB skabt +// 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 d before mp + d) a (mp A // PB damp +// 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: [a] after j before g + k) a (j a // PB kaj + k) a (ja & // PB kajak +// PB general rule: [A] after k before p + k) a (ps a // PB kapsel +// PB general rule: [Au] after m/n before g (au) + L09) ag Au // PB nagle + m) ag (i &g // PB magi + m) ag (asi ag // PB magasin + m) ag (azi &g // PB magazine +// 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 kt + a (kt 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 + _) a (mb A // PB ambition +// 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 + l) av (es &v // PB laves + l) av (t &v // PB lavt + b) alaklav (a &l&kl'&:v // PB + g) av (mi Au // PB gavmild +// PB general rule: [Au] after t before s + t) av (s Au // tavshed +// PB general rule: [A] before r + a (r+ A // skar +// are A3 // klarede +// arer AV // klarer +// 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 + ang (reb &ng // PB angreb + a (gt A // agt + l) a (gt+ A // PB lagt + l) ag (_ &j // lag + f) ag (s au // PB fagsnak +// PB general rule: [A] before vn after consonant + C) a (vn A // favn, savn +// PB general rule: [a] after kl before consonant + kl) a (L06 a // PB klap + a (ngC A // PB angst + b) a (L06 A // PB baptist + a (mp %A // PB ampul + a (ngri & // angribe + a (ppar a // PB apparat + _okt) a (v '& // stressed + _konk) a (v '& // stressed + _pol) a (k 'a // PB stressed polak + _kos) a (k 'a // PB stressed - kosak + L08) av (C Au // stavn + st) av (nin &v // PB stavning + h) av (_ & // PB hav - problem with the noun "hav" [hAu] + @h) av (_ Au // PB flammehav + h) av (C Au // PB havbund + h) av (over Au // PB havoverfladen + h) a (vn A // PB havn + hav) a (nna '& // PB Havanna + color) ado 'Ado // PB US state + _) av (_ Au // PB av + C) a (k a // PB makværk + C) a (ck a // PB tackle + s) a (x a // PB saxofon + l) a (kA & // PB lakune + @l) a (g &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 +intern) atio (nal &So // clash with "internat" + +// 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 -agtig in da_list - stressed a + &) agtig ($p_alt+ 'agti // tyvagtig + +// PB nouns with final -gram in da_list - stressed a + &gr) am ($p_alt+ 'am // program + + erf) a (ring 'A // PB + åbenb) a (ring 'A // PB + bef) a (ring *A // PB + besp) a (ring 'A // PB + forv) a (ring 'A PB + +// 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 -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 + _kapt) a (jn '& // PB kaptajn + tilsk) a (de '& // PB tilskadekommne +_radio) a (kti 'A // PB stressed - radioaktiv + bl) a (d & // PB blad + h) a (n & // PB han + j) a & // PB ja + tj) a (_ &: // PB + 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 + kl) aver (_ &v'er // PB klaver + l) a (bo a // PB laborastorium + 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 + _) a (ndet & // PB andet + _) a (nden & // PB anden + t) a (bt a // PB tabte + l) a (b_+ a // PB lab + l) a (be & // PB laber + 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 &|'i: // PB kokain + ld) a (k & // PB baldakin + mir) a (k 'A // PB mirakel - stressed a + t) a (lA &: // PB tale + t) a (p a // PB tap + t) a (pi & // PB tapir + p) a (p a // PB pap + p) a (pi & // PB papir + 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 + &eks) a (m & // PB + 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 (nc '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 + m) anchet ANS'Ed // PB manchet + 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 + @g) a (ng 'a // PB stressed a in words ending with -gang - engang, enegang + h) a (nk a // PB hank + h) a (j a // PB haj +restaur) ant 'AN // PB added stress + l) a (p+ a // PB slap, lap + t) a (nk A // PB tankstation + t) a (x a // PB taxa + kålr) a (bi 'A // PB kålrabi - stressed 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 + 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 +disput) a (ts '& // PB stressed +amsterd) a (m 'a // PB + seb) a (stian '& // PN stressed + _te) a (ter '& // PB stressed + aw (K aw + ay (K Ej // PB a changed to E + +.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 (++ & // PB dommedag + d) ag (og+ ag // PB pædagog + j) ag (e+ &: // PB jage + j) ag (uar ag // PB + 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 + s) ag (sø Au // PB sagsøge + 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 + sl) ag (side Au // PB slagside + sp) ag (ett &g' // PB spagetti + sp) ag (hett &g' // PB spaghetti + r) ag (e+ Au // PB drage, rage + C) age (+ &:j@ // PB tage, bage, kage + C) ager (_+ &:jV // PB tager, bager, kager + l) agd (e &:j // PB lagde + 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 + rans) ag (n &j // PB ransagning + las) agn (e '&nj // PB + bret) agn (e '&nj // PB + s) agd (e+ &: // PB sagde + tilb) ag (e '&: // PB stressed a in 'tilbage' + +.group al + // PB final -ale - stressed a +_bienn) ale '&:l@ +_differenti) ale '&:l@ + _fin) ale '&:l@ + _forh) ale '&:l@ + _form) ale '&:l@ + _fort) ale '&:l@ +_gradu) ale '&:l@ +_grati) ale '&:l@ + _kab) ale '&:l@ + _lok) ale '&:l@ + _manu) ale '&:l@ +_materi) ale '&:l@ + _miss) ale '&:l@ + _mor) ale 'A:l@ +_numer) ale 'A:l@ +_pastor) ale 'A:l@ +_person) ale ''&:l@ +_potenti) ale '&:l@ +_ration) ale ''&:l@ + _reg) ale '&:l@ +_saltomort) ale '&:l@ +_skand) ale '&:l@ +_speci) ale '&:l@ + _timb) ale '&:l@ +_trienn) ale '&:l@ + _urin) ale ''&:l@ + +.group b + + b b + bb b + b (il 'b + beagle bi:g@l //PB beagle - dog + bloody blVdi // PB + 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 + bourgogne burg'Vnj@ + pe) b (er w // PB peber + _) buffet byf'e // PB + @) buffet byf'e // PB + &) bassin b&s'EN // svømmebassin + basketball BAsgetbO:l + butterfly bVtVflaj // PB + +.group be +// 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 + &) cer ($p_alt =s'er // annoncere + + 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 (+ S // 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 // PB + cornichon kVrniS'VN // PB + charlie _^_EN // PB + c (æsar s // PB + ni) ch (ol k // PB Nicholas + computer kVmpj'u:tV // PB + cha (t tj& // PB chatte + chianti kj'&nti // PB + callgirl kVlgW:l // PB + _) ciao (_ tjAw // PB + claude klO:d // PB name + churchill tSW:Sil // PB + cambridge kejmbRidZ // 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 (rig d // PB aldrig + 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 + ø) d (L08+ D // PB nødstop + be) d (st // PB silent d - bedst + 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 + hår) d // PB silend d - hård, hårdere + stri) d (s D // PB but not silent d in e.g. 'stridsvogn' + u) d (C+ D // udsætte + u) dt (+ t // PB brudt + 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) dder DV + 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 + fjer) d (e // PB silent d - fjerde + 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 + doughnut downVd // PB + _) doc (_ dVk // PB Doc - name + +.group é // added by PB + é 'e: // idé, entré + +.group e + e e // PB e: => e + +// PB general rules + l) e e + ll) e (d // PB silent e - billede + midl) er V // PB midlertidig + elleve elv@ // PB + _koll) e (ga 'e // PB stressed + r) e E // PB general rule: [E] after r +// dr) e (C@ @ // PP sladresøster - not tested + r) e (vn &# // PB revne + r) e (kto &# // PB rektor + &r) e (pl V // PB boreplatform + ur) e (ne @ // PB murene + r) e (s_ @ // PB forhindres + pr) e (+ &# // PB general rule: [&] after pr - presse + spr) e (d 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 + @n) e (d @ // PB general rule: [@] after @+n before d - måned + m) e (di+ e // PB medicin + _ans) e (+ e // PB avoid [V] in "anser" and [@] in "anse" + rn) e (d+ e // PB derned + 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 +// aml) e 3 // PB gamle + tel) e 3 // PB tele + afl) e (v 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 + en) e @ // PB ene, eneste + br) e (L09 & // PB bremse + sn) e (K e? // PB sne, snebold + sn) ed (k e e // PB silent d - snedker + _s) e (_ e? // PB se + e (mball A // PB emballere, emballage + dir) e (kt & // PB direkte, direktør + n) eu (r Wu // PB neuron + 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 + lar) e (do 'e // PB + +// 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 (r @ // 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 @ + hest) e (n+ @ // PB hestene + tr) edive aDv@ // PB tredive + entente ANt'ANt // PB + prof) essionel 'eSonel // PB + eisenhower ajs@nhAuV // PB + sp) ee (d i: // PB speedbåd + +// PB Words ending with e - general rule + @) e (_+ 3 // PB husleje + _) e (_speak i // PB eSpeak - capital s makes the e one word + _) e (_mail i // PB e-mail +// PB Words ending with -te + t) e (_ @ + _ist) e e // PB iste (cold tea) + +// PB Words ending with -se or -ce + s) e (_ @ + c) e (_ @ + +// PB 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 -cept - konfekt + _rec) e (pt 'E + _konc) e (pt 'E + _acc) e (pt '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 + henv) ende (_ E-n@ // PB + + L08) e (gt e // PB stegt + L08) e (g a // PB steg, spegepølse + _st) eg (_ e // steg - verb, problem with noun = "roast" + 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 + p) eg aj // PB pegefinger + _) 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 + ) C eg (l aj // PB segl, forsegle + p) en (sion aN + r) en (ce AN // reference + r) edd ED // PB redder + br) edd Ed // PB bredde + _tr) e (t a // tretten + _tr) e (d E // tredje + 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 + diskr) e (t+ 'e // PB stressed + ork) e (ster 'e // PB stressed e in 'orkester' + borgm) e (ster 'e // PB stressed + prot) e (se 'e // PB stressed + forur) e (ne 'e // PB stressed - forurene +_terap) eut 'Wwd // PB stressed + _torp) e (do 'e // PB stressed +// 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 + _) earl W:l/2 // PB Earl + eu (rop Wu // PB Europa + _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 + @) el (t_ @l // ædelt + +// 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 +bestandd) el el // PB + d) el (A+ el // PB dele, omdele + edd) el l/2 // PB seddel + medd) el del // PB meddel +_offici) el (+ 'el // PB officiel + verbi) el 'el // adverbiel + mod) el el // PB fotomodel + _mod) el 'el // PB modelbureau + 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 + spani) el @l // PB cockerspaniel + dani) el el // Daniel + ford) el el // fordel + orsk) el el // forskel + h) el (t+ el // PB tøffelhelt + t) el (ef el // telefgon + rsk) el @l // tærskel + ed) el (+ el // femtedel - words where "del" means 'part of' + led) el (se @l // PB ledelse + 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 + bagd) el el // PB + 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 + fid) el 'el + ded) el el // tiendedel, niendedel + farv) el 'El + s) el (s El // selskab +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 + _ag) en (t 'en // PB agent + ag) en (t en // PB agent + &g) en (st en // PB genstand + &g) en (kend en // PB genkende + &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 + våb) en (+ @n // PB våben + C) en (sC @n // PB TEST - verdensmagt + tj) en (st En // PB fortjenstmedalje + m) en (s+ En // PB menstruation + g) en (st en // PB genstand + g) en (sk en // PB genskabe + 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 +_acetyl) en 'en // PB +_influ) en (za 'En // PB + +// 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 (A+ ent // PB eventyr, eventuel + + // PB $alt words with final -ent in da_list - stressed e + &) ens ($p_alt 'ens // frekvens + &r) ens ($p_alt '&#ns // frekvens + +// common affix -ender + &) ender (_ EnV // anliggender, foretagender + +.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 + &) erens (_ @r3ns // elskerens + &) ers (_S3 Vs // elskers + &) erne (_ Vn@ // elskerne + &) ernes (_S5 Vn@s // elskernes + &) erste (_ Vst@ //midterste + &) ert (_ Vt // lummert + +// exceptions to the "er" suffix rule + g) er (_++ V // våger, læger [ l'Ejer] + g) er (t+ er // PB Gerta + @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 +_kvart) er 'er // PB kvarter, kvarterarrest +_karakt) er 'er // PB karakter +karakt) er er // PB topkarakter + _klav) er 'er // PB stressed +_perif) er 'er // PB stressed + perif) er er // PB not stressed after a syllable + klav) er er // PB after a syllable - værtshusklaver + _univ) er (s 'Er // PB stressed + ubiv) er Er // PB after a syllable - skoleunivers + n) er (_ V // PB italiener + up) er (C V // PB superfølsom + @d) er (C V // PB hæderlig - TOO BROAD? + mm) er (C V // PB sommerhilsen + &f) er (@ @ // PB konference + +// not a -erne suffix + _mod) erne (+ 'ern@ + &mod) erne (+ ern@ + _cist) erne (+ 'ern@ + &cist) erne (+ ern@ + _kas) erne (+ 'ern@ + &kas) erne (+ ern@ + _lant) erne (+ 'ern@ + &lant) erne (+ ern@ + _luc) erne (+ 'ern@ + &luc) erne (+ ern@ + _saut) erne (+ 'ern + &saut) erne (+ ern + _tav) 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 +// exceptions + fing) er (en VR // fingeren - clsashes with 'fing'ere' + +// 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 + +// fire stavelser, den sidste -tiv, tryk på anden + alt) er (nativ 'ER // PB stressed LOOK FOR MORE + + C) er (At V // PB probably way too broad - offeret + bl) er (e er // PB genetablere + desp) er (at 3R // PB desperat + d) er (fra er // PB derfra + v) er (C+ Er // PB vers, verden + øv) er (st V // PB + 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 + _hyst) er (i 'er // PB hysterisk + hust) er (i er // PB not stressed after a syllable - overhysterisk + @st) er (ie 'er // PB ministeriet + _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 'er // PB kasserer + _inf) er (no 'Er // PB inferno + 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 + sv) er (ige Er // PB + æ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 + ob) er (st V // PB + _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 + vildr) ede (_+ ED@ // PB vildrede + spr) ede (_+ ED@ // PB adsprede + ber) ede (_+ ED@ // PB berede + br) ede (_+ ED@ // PB brede + _fr) ede (_+ ED@ // PB frede + vr) ede (_+ ED@ // PB vrede + ler) ede (_+ ED@ // PB fuglerede + 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) +// not treated as a suffix any more + &) et (_+ @D // PB elsket + +// PB exceptions: not a 'et suffix + _sk) et et // PB sket + s) et (_+ et // PB set + it) et (_+ 'et // aktivitet + _rak) et 'Et // PB raket + _toil) et 'Et // PB toilet, toilette + _kok) et 'Et // PB stressed - koketteri, koket + 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 +_bajon) et 'Et // PB stressed + bajon) et Et // PB + udsl) et et // PB udslet +intern) et Et // PB + + // PB final -ette stressed e + _bagu) ette 'Et + _brun) ette 'Et@ + _bur) ette 'Et@ +_chemis) ette 'Et@ +_courg) ette 'Et@ + _cuv) ette 'Et + _disk) ette 'Et@ + _etik) ette 'Et@ +_georg) ette 'Et +_jambor) ette 'Et@ + _kok) ette 'Et@ +_marquis) ette 'Et@ + _mus) ette 'Et@ +_novell) ette 'Et@ + _palm) ette 'Et@ + _pian) ette 'Et@ + _pip) ette 'Et@ + _plak) ette 'Et@ + _rein) ette 'Et@ + _roul) ette 'Et@ +_soubr) ette '&t@ +_statu) ette 'Et@ +_suffrag) ette 'Et@ + _toil) ette 'Et@ +_vinaigr) ette '&t@ + _yl) ette 'Et@ + +// 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 // stressed second syllable after initial "for" + _) 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) ff (utage f // PB + + 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 + flush flVS // PB + freud frWjd // PB Freud + +.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 + A) g (n j // PB tegn, regne + æ) g (n+ g // PB udlægning, prægnant + by) g (n g // PB bygning + 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 + l) g (C j // PB bælgmørkt, bælgplante + ø) g j // PB deleted (_ + g (le j // PB mægler, besegle + g (lem g // PB glemt + val) g (t // PB silent g - valgt + sy) g // PB silent g -sygdom + spur) gte t@ // PB silent g - spurgte + 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 + r) g (er_ u // PB herberger + 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 (n j // PB lagnet + la) gr (e jR // PB lagre + 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 (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 // PB + gonzales _^_ES // PB + _) gin dZen // PB + _) guy (_ ga:j // PB Guy - name + geronimo dZer'VnimO:u // 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 + ør) g (s // PB silent g - spørgsmål + å) g u // PB åg, åge + 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 // PB + geneve Sen'E:v // PB + genève Sen'E:v // PB + _) gudskelov (_ gusg@lVu // 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 +_korte) ge =Se + korte) ge Se + _lo) ge (_ Se // lige + _) 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 + ge (nial ge // PB + ge (ni Se // PB + ger (ning gEr // PB + 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 + _k) ig (_ ig // PB kig + _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 + _av) i (s 'i // PB stressed + _grav) i (d 'i // PB stressed + _test) i (kel 'i // PM stressed + _test) i (kl 'i // PM plur. stressed +_molev) i (t 'i // PB stressed - molevitten +_marskand) i (s 'i // PB stressed - marskandiser +_princ) i (p 'i // PB stressed + _mess) i (as 'i // PB + n) ij (megen aj // PB Nijmegen + n) i (gg e // PB nigger + n) i (ss e // PB nisse + skr) i (pt 'e? // PB stressed - manuskript + r) i (ft e // PB skrift, rift, drift + kr) i (cket e // PB + f) i (sk e // PB + l) i (lla e // PB + kv) i (st 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 + dir) ige (r ig'e // PB dirigere +intell) ige (nt ig'e // PB intelligent + fr) igea (r igi // PB frigear + _) 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 +// i (ng e // PB Inge, ingen +// sv) i (ng e // PB sving +// v) i (nk e // PB vinkel +// v) i (ng e // PB vinge +// s) i (nk e // PB sinke + i (nL11 e //PB blinke, sinke, vinge, sving + s) i (d e // PB sidde + s) i (ds i // PB sidst + t) i (n e // PB stinke + _inst) i (nkt 'e // PB + f) i (ng e // PB finger + r) i (nK e // PB ring + gr) i (n i // PB grine + dr) i (l e // PB drille + br) i (lle e // PB briller + 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 -id in da_list - stressed i + &) id ($p_alt ''iD // hybrid + +// PB words with final -isk: stress on previous syllable (1.250 words) + &) isk (_$p_alt =isg // canadisk + &) isk (e$p_alt =isg // canadiske + &) isk (t$p_alt =isg // canadiskt + +// 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 +_konfl) i (kt 'i // PB stressed + _pap) i (r 'i // PB stressed + _tap) i (r 'i // PB stressed + _vels) i (gn 'i // PB stressed + 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 + m) i (k i // PB mikroskop + g) i (k+ i // PB begik + i (x e // PB fixe + mus) i (k i // PB musik + it) i (k i // PB politik + _g) i (k_ i // PB + i (k@ i // PB antikvar + v) i (k i // PB kvik + v) i (kl e // OB vikle + k) i (kC+ i // PB kiks, kikkert + l) i (kv i // PB likvid + fl) i (C i // PB flid + 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 + _st) i (l_ i // PB stil + L08) i (lt e // PB skilt, adskilt + 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 (le i // PB stile + ju) i (ce // PB juice - skip the i + soft) i (ce aj // PB softice + fr) i (L08 e // PB friste + fl) i (nk e // PB flink + 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) igevel 'i@vEl // 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 + d) ie (sel i // PB dieselolie + k) io (sk jV // PB kiosk + +// 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 // infirmeriet + +// 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 + kas) i (no 'i // PB stressed +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 +_polit) i 'i +_staffel) i 'i +_suffl) i 'i +_zoofil) i 'i + + // 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 iv + // PB stressed final -iv +_abort) iv 'iw +_adapt) iv 'iw +_adhæs) iv 'iw + _ark) iv 'iv +_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 + +.group j + + j j + j (aw dZ + j (ack dZ + j (ob dZ + j (ohn dZ + _) j (im_ dZ // PB + _) j (eff dZ // PB + j (azz dZ // PB + je (t dZE // PB jetfly + j (ungl dZ // PB jungle + _) jersey (_ dZW:si // PB New Jersey + _) jersey (s_ dZW:si // PB New Jerseys + jersey (k jErsi // PB jerseyko + jeep dZi:b // PB Jeep (American car) + _) juan Su'AN // PB don juan + derh) j (emme 'j // PB stressed j + en) j (ambe S // PB enjambement + ro) j (ekt S // projekt + a) j (ou S // ajour + j (ournal S // PB journal + 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 + joint dZVjnt // PB + _) james _^_EN + +.group k + + k k + kk k + 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 + b) l l/2 // PB add a bit more to l after b + &) 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 +// lever lev'er // PB + @) levere leveV // PB + +.group m + m m // PB m? -> m + mm m + m (A m + gour) mand %mAN // PB gourmand + _gour) mand m''AN // PB gourment + _) 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 + _) mike (_ majk // PB Mike + mail mejl + montre mO:ntrV + mayday m&jd&j // PB + miami m&j'&:mi // PB + machete m&S'Ed // PB + miguel _^_ES // PB + madero _^_ES // PB + money mVni // PB + +.group me +// PB General rule for words with -ment + &) ment m'end // PB element, segment +// PB exceptions for the -ment rule (French words) +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 +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 +_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: nk = [N] before t + nk (t N // adjunkt, sankt + ka) n_ // silent n - kan + pag) n (e =nj // PB stress added - kampagne, champagne + 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 + _) new (_ %nju // PB + +.group nd +// 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 + e) nd (elig n // PB endelig + ha) nd (el n // PB + ke) nd (el nd // PB kendelse + bi) nd (e n // PB forbindelse + u) nde (l n // PB silent de - misundelig + ble) nd (e nd // PB blender + ba) nd (it nd // PB bandit + ve) nde (l n // PB anvendelig + mi) nde (li n // PB almindelig + ele) nd (ig nd // PB + nødve) nd (ig nd // PB + evi) nde (li n@ // PB evindelig + y) nd (el n // PB begyndelse + ba) nd (el n // PB forbandelse + gru) ndig ndi // PB grundig + my) ndig ndi // PB myndighed + ma) nd (o nd // kommando + ma) nd (er nd // PB kommandere + nd (ent nd // PB prætendent + u) nd (re nd // PB beundre + va) nd (re nd // PB vandretur + _i) nd (er+ nd // inder +marska) nd nd // PB marskandiser + _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 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? + + nd (ow nd + sta) nd (ar nd // PB standard - keep the d + i) nd (eks nd + i) nd (i nd // PB Indien, individ, indianer + vi) nd (in n // PB udvinding + i) nd (imellem n // exception + i) nd (erl+ n // PB inderlig + eku) nd nd + +.group ng + ng (_ N + A) ng (e_ N // mange, penge + A) ng (et_ N // ringet + A) ng (ede_ N // ringede + A) ng (ene_ N // PB pengene + A) ng (er_ N // PB hænger + A) ng (en_ N // PB ingen + A) ng (el N // PB engel + A) ng (ning_ N // PB hængning + 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 (ere ng // PB fingeret + 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 + +// PB final -ode - stressed o + di) o (de 'o +elektr) o (de 'o + epis) o (de 'o + kat) o (de 'o + kust) o (de 'o + met) o (de 'o + pag) o (de 'o + peri) o (de 'o + + oo u: //PB English words like 'pool' + k) oor (d oV:? // PB koordinat + _biot) o (p 'o // PB stressed + _isot) o (p 'o // PB stressed + o (L06 V // PN op, opdrage, obstruere + gl) o o // PB global + kn) o (b o // PB + 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 (d V // PB skod + sk) o (t V // PB Skotland, skotte + _mask) o (t 'V // PB stressed + sk) o (tø o // PB skotøj + c) o (ck V // PB cockerspaniel + sk) o (te o // PB diskotek + skr) o (t V // PB skrot + skr) o (g V // PB skrog + o (tto V // PB + sj) o (f o // PB sjofel + o (be o // PB oberst, koben + r) o (L06 o // PB problem + kr) o (p V // PB + gr) o (g V // PB groggy + _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 + Ca) o (s V // PB kaos Laos + r) o (ma o // PB romantik + or (g+ V: // PB sorg, morgen + r) or (g oR // PB rorgænger + 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 + _rev) o (lv 'V // PB stressed - revolver + _kart) o (f 'V // PB stressed - kartofler + am) o (k 'V // PB amok + konv) oj 'Vj // PB stressed +mening) oko (k ok'V // PB meningokokker + hypok) o (nder 'V // PB + d) o (b V // PB dobbelt + d) o (nn V // PB donna + h) o (ll V // PB Holland +_horis) o (n 'V // PB horisont + o (nt V // PB dont + n) o (n V // PB nonne, nonkombattant + _kan) o (n 'o // PB stressed + kan) o (n o // PB not stressed after a syllable + 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 + l) ov (_mig_ ow // PB from the verb "at love" + 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 + k) o (ke O // PB koket + 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 + r) o (ke o // PB neurokemi + o (ktob %o // PB stressed next syllable - oktober + 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 + k) o (rre V // PB korrekt + g) od (tr oD // PB godtroende + g) od (tAg oD // PB godtage, godtog + h) o (nni V // PB honning + r) o (tt V // PB rotte + d) o (g V // PB dog + v) o (g V // PB vogn, vogte + v) o (ld V // PB volde + o (ld V // PB oldgammel + s) o (g V // PB sogn + s) o (r V // PB professor + s) orer 'o:V // PB professorer + 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 + 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 + p) olish VliS // PB møbelpolish + tr) o (kl V // PB trokle + tr) o (p V // PB trop + tr) o (pi o // PB tropisk + tr) o (pe o // PB troperne + t) or V // PB faktor + t) or (e o // PB faktorer + t) or (en V // PB faktoren, doktoren + oy (+ 'Vj // PB destroyer, royal, loyal + st) o (r+ o // PB stor + p) o (r O // PB porno + _m) o (C o // PB m + o + consonant: mor, mord, + m) o (ms V // PB + m) o (kk V // PB mokke, mokka + m) o (nitor V // PB + _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 + gr) o (f V // PB groft + spr) o (g o // PB sprog + t) o (gt V // PB togt + kl) og ou // PB klog, klogt + kn) og Vu // PB knogle + t) oi o& // PB toilet + d) o (k o // PB dokument + l) o (kA o // PB lokal + k) o (ka o // PB kokasse, kokain + s) o (pr o // PB sopran + oregonpine VregVn||pajn // PB + c) ogn (ac VN // PB + b) o (m o // PB bombe + L11) o (m V // PB gommen, brudgom, kom, velkommen + L11) o (ma o // PB koma, narkoman + L11) o (mman o // PB kommando + 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 + fot) o o // PB + r) o (mA o // PB romer + b) o (mu V // PB bomuld + n) o (ss V // PB nosse + l) o (s V // PB los + l) o (t V // PB lotteri + l) o (so o // PB filosofi + pl) o (s o // PB eksplosion + kol) o (s 'V // PB kolos - stressed + kosm) o (s V // PB + 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 + h) o (s o // PB hos, hospital + b) o (sn V // PB Bosnien + _r) o (sk V // PB Roskilde + r) o (ll V // PB rolle + o (se o: // PB rose, skose, pose + h) o (spice V // PB hospice + C) o (st V // PB post, moster + k) o (sC V // PB kosmisk + k) o (st o // PB kost (broom) Problem with kost = food + k) o (ste V // PB verb - koste = brooms will be mispronounced + frok) o (st V // PB + pr) o (s o // PB prostitueret + st) o (mi 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 +_astron) out awd // PM + 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 + filos) o (f_ 'V // PB +_filos) o (fi_ o' // PB +_filos) o (fisk 'o //PB + mem) oire o'A: // PB memoire(r) + aprop) o (s 'o // PB + +// 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 (e$p_alt 'ol // petroleum + &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 + L08) o (lp V // PB stolpe + L11) o (ld V // PB kold, gold + ravi) o (li 'o // PB stressed o + j) o (l V // PB jolle, fjols, fjolle + kj) o (l o // PB kjole + kj) o (ld V // PB skjold + L06) o (ld V // PB bold + L06) o (lt V // PB bolt + 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 + kn) o (ld V // PB knold + sn) o (t V // PB snot + 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 + bis) 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 + alf) on (s 'VN // PB alfons + ball) on 'VN + on (du Vn // ondulere + +.group or + + v) or Or // PB alvor + f) or V // PB derfor + juni) or V // PB + enf) or 'V // PB + k) or (t V:? // PB kort + m) orge V:3 // PB morgen + dek) or 'V:r // PB dekor + rapp) or (t 'V: // PB rapport + f) or (t V:? // PB fort + m) or (f V: // PB morfar + sp) or (t V:? // PB sport + s) or (t or // PB sort + st) or (t or // PB stort + sv) or (e+ or // PB svoret + _) or V // PB orientere + orm orm // PB + n) or (m O // PB + st) or (m O:? // PB + b) or (t Vr // PB bortforklare + or (al oR // PB oral + _esk) or (te 'V: // PB eskorte + _n) or or // PB nord, nordisk + v) or (e+ V: // PB vores + rek) or (d 'V: // PB exception - stressed o in 'rekord' + ak) or (d 'V: // PB exception - stressed o in 'akord' + or (den Or // PB orden, torden + s) or (te or // PB sorte + rep) or (ter 'V // PB stressed o + s) or (tA O // PB sortiment + k) or (tA V // PB korte +transp) or (tK 'V: // PB transport + +// 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 (A ord // PB morder + f) ord (æ Vd' // PB fordærve + f) ord (ø Vd' // PB fordømme + ord (en+ Vrd // PB orden, ordensmagt + j) ord (en oV // PB fjorden jorden + ord (entlig+ 'Vrd // PB overordentlig - stressed + 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 (ruk Vrd' // PB fordrukken + ord (i+ Vrd // PB ordinær + b) ord (el Vrd' // PB bordel + j) ord (an oRd // PB Jordan + ordonnans Vrdon'&ns // PB ordonnans + ordrup ordr0b // PB Ordrup - Danish town + C) ore (_ o:V // PB more, store + m) orel or'&#l // PB morel + +// PB stress on previous syllable - '-tor_' nouns in da_list + &t) or ($p_alt ==V // karburator, rollator, multiplikator + &t) or (er$p_alt 'o: // karburatorer + &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 'O* // 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 O // 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 (skelli %Vr // PB forskellig + _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 'O: // 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å (ske p'O // PB not a prefix - påske + &) p (_ p // PB hjælp + p (syk // 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 + + que =k // PB petanque, Monique + 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 + reggae REgEj + rioja ri'Vk& + ramirez _^_ES + 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 + A) r (er_N // silent r - skærer + &) re (_N V // silent r - skære + 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 + sc s // PB scene +// 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 + e) scort sk'V:t // PB +franci) sc (o sk // PB Francisco + e) sc (obar sk // PB Spanish name + @@) som =sVm // PB stress on previous syllable - opmærksom + 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 + scene sen@ // PB + speak spi:k // PB eSpeak + siegfried _^_DE // PB + slovakiet slov&k'i@D // PB + show So:u // PB + sydney sidni // PB + shakespeare SEiksbi:r // PB + squash sgwVS // PB + _) stone sdoun // PB namde - Stone + 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 + bare_) sig (_til si // PB verb + 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! + bare_) sig (_ si // PB bare sig sanddheden + _af_) sig (_ saj // PB avoid [si] af sig selv + _han_) sig (_ saj // PB avoid [si] sluttede han sig til + t_) sig (_ saj // PB holdt sig fra, opført sig + sat_) sig (_ saj // PB sat sig op mod + _) sig (_selv saj // PB noget for sig selv + for_) sig (_ saj // PB se noget for sig + fra_) sig (_ saj // PB slå fra sig + _) sig (_alene saj // PB klare sig alene +vende_) sig (_ saj // PB +erklære_) sig (_ saj // PB + føle_) sig (_ saj // PB +hygge_) sig (_ saj // PB + skød_) sig (_ saj // PB + tog_) sig (_ saj // PB + _) sig (_ud_ saj // PB rode sig ud i + _) sig (_af_ saj // PB tage sig af + ak_) sig (_ saj // PB drak sig fuld + s) s + +// PB use [sV] instead pf [sO] + 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 + _) så (_her_ sV // PB + _) så (_lad_ sV // PB + _) så (_skal_ sV // PB + _) så (_ved_ sV // PB + _) så (_kom_ sV // PB + _) så (_gik_ sV // PB +_er_du_) så (_ sV // PB +_gør_han_) så (_ sV // PB + og_) så (_videre sV // PB + +kompromi) s ' // PB stress added + succe) s ' + shirt S3:t // PB T-shirt + smiley smajli // PB + straight sdrE:jt // PB + seattle si'&t@l // PB + +.group t + t t + tt t + _) t (_ te: // the letter T + _) t (_shirt t'i:% // PB T-shirt + e) tt (@ t|t // PB ettiden, ettal + le) tt (e t // PB slette + 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 + vi) t (er t // PB inviter + teress (ant tr@s // PB interessant + in) teresse t@r'&s@ // PB interesse + in) teresseret tr3s'er@D // PB interesseret + in) teresserer tr3s'erV // PB interesserer +// er) t d // PB kuffert + r) t (e t // PB abortering + 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] + 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 + e) t (_ d // PB udvisket + le) t (+ t // PB let + le) tt t // PB slette + tredivtedel tr&fd@del // PB + tredvtedel tr&fd@del // PB + trenchcoat tr'EnSk,oud // PB + tennessee tEn@si // PB + teenage ti:nEdZ // PB + teenager ti:nEdZV // PB +// PB final -tek - stressed e + _apo) tek t'ek +_biblio) tek t'ek + _char) tek t'ek +_disko) tek t'ek + _fono) tek t'ek + _foto) tek t'ek +_glypto) tek t'ek + _hypo) tek t'ek +_karto) tek t'ek + _lege) tek t'ek +_media) tek t'ek +_pinako) tek t'ek +_video) tek t'ek + +.group ti +// 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 tel' + 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 tel' + 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' + +// PB final -tis - stress on previous syllable +appendici) ti (s =ti +bronki) ti (s =ti +celluli) ti (s =ti +difteri) ti (s =ti + eran) ti (s =ti +gastri) ti (s =ti +hepati) ti (s =ti +laryngi) ti (s =ti +meningi) ti (s =ti + pas) tis t'is + raki) ti (s =ti + lek) ti S + ak) ti (e S // PB aktie + ti (on+ S // bastion, station + ti (øs+ S // tendentiøs + pa) ti (ent S // PB patient + r) til tel // PP hertil, dertil + _poli) ti (k t'i // PB politik + +.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 (dgrundelig+ u // PB + u (ni++ u // uniform, universitet + u (den u // udenfor + u (ng+ 0 + u (ge++ u // ugerne + u (r++ u // ur, urrem, uret + _) u (retfæ++P1 u // uretfærdig - prefix + _) u (ds+ u // udsætte + u (de u // PB uden, udenfor + +// 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 final -ut in da_list - stressed u + &) ut ($p_alt 'ut // rekrut + + // 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 + br) unch VnS // PB + 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 + _sek) u (nd 'O // PB stressed + _glas) u (r 'u // PB stressed + _abs) u (rd 'u // PB stressed + 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 + alb) ue u: // PB albuerum + st) ue u: // PB stuearrest + d) ue (s u: // PB vinduesstørrelse + um) u (lig 'u: // PB stressed u in 'umulig' + _kalk) u (n 'u // PB stressed u +_konvol) u (t 'u // PB stressed + _årh) u (ndrede 'u // PB stressed +centrif) u (g 'u // PB stressed + l) ug (e u: + h) u (lt u // PB hult - adjective "et hult træ" + h) u (le u: // PB hule - adjective and noun + h) u (g O // PB hugge + hj) u (lp O // PB hjulpet + hond) u (ra 'u: // PB Honduras + u (lje 'u // PB patrulje, badulje + _laC) u (ne 'u: // PB lagune, lakune - stressed + _komm) u (ne 'u: // PB kommune - stressed + _trib) u (ne 'y // PB stressed tribune + trib) u (ne y // PB unstressed after a syllable + _deb) ut 'y // PB stressed, silent t + deb) ut y // PB unstressed after a syllable, silernt t + j) u (ice u: // PB juice + k) u (nne o //PB kunne + _k) u (n_ 0 // PB kun + kl) u (ns 0 // PB + k) u (l O // PB kulmine +hovedk) u (ls u // PB + k) u (ld u // PB kulde + k) u (le u // PB kule + sk) u (ll+ u // PB skulle + k) u (lt u // PB kultur + d) u (k 0 // PB duk, dukke + d) u (kti u // PB obduktion + u (kk 0 // PB dukke, stukket + ll) u (p V // PB bryllup + br) u (gt O // PB brugt + tr) u (ff O // PB truffet + t) u (nn 0 // PB tunnel + m) u (nt 0 // PB munter + sn) u (L06 0 // PB snup + s) u (L06 0 // PB suppe + u (nk 0 // PB sunket + 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 + d) u (ft 0 // PB duft + 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 O + 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 + _der) u (d 'u // PB stressed - derud + r) u u + r) u (m O + s) u (cc y + b) u (dget y + b) u (reau y + men) u y + parf) u (me 'y // PB +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 + t) u (berkul y // PB tuberkulose + 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 + i) v (l u // PB tvivl + _) von (_ fVn // PB von in German names + 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 + ø) v (en w // PB røven + A) v (n w // PB nævne + &A) v v + &r) v v + al) v (e v // PB halve + el) v (C + ha) v (C u // PB havfisker + ha) v (overf u // PB havoverflade + 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 + wien vin // PB wienerbrød + weekend wi:gEnd // PB + +.group x + + x gs + + _) x s + + n) x s + +.group y + + y y + + r) yg (_ @k // PB ryg + r) yg (C '@k, // PB rygrad + r) y (s W // PB ryste + fr) y (s y // PB fryse + kr) y (st Y // PB kryster + kr) y (m W // PB krymmel + 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 + sm) y (k W // PB smykke + lib) y i // // PB Libyen + l) y (st @ // PB problem with lyst = blond, light coloured + &l) y (st y // PB åbenlyst + 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 + sk) y (s y // PB skyskraber + 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 +_molek) y (le 'y // PB stressed + _lat) y (rus 'y // PB stressed + 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 (nt y // PB syntes + 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 + fl) y (tt W // PB flytte + afl) y (tt y // PB + whisk) y i // PB whisky + cit) y i // PB + 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 + york JV:k // PB + yankee j&nki // PB + ken) y (a j // PB + 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 a // PB forræder + æ (bK E // PB dræb, slæb + æ (bt &# // PB dræbt + sl) æ (L06 E // PB slæbt + tr) æ (d+ E // PB træde + tr) æ (n &# // PB trænge + tr) æ (ne E // PB træne + 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 + br) æ (t &# // PB bræt + 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 + gr) æ (d &# // PB græde + 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 + t) æe (r E // PB tæer + pr) æ (ge E: + ærge 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' + _milj) ø 'W // PB stressed - miljø + 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 'Vj // løgn, løg + 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 + sp) ør (gs Wr // PB spørgsmål + 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:? + ovenp) å (_ 'O // PB stressed + r) å (d+ O: // PB råd + r) å (dn+ V // PB rådne + r) å (dd V // PB rådden + tr) å (dt V // PB overtrådt + r) å (dg+ V // PB rådgive + ård O:? // PB gårdmand, bondegård - silent d + ården O@n // PB gården + p) å (ske O // PB påske + s) å O // PB så + s) å (vel V // PB + s) å (_snart V // PB + s) å (_få V // PB + s) å (kald V // PB såkaldt + 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åkage, 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 + år V:? // PB år, står + åre V3 // PB tåre + +.group + $ dVlV // PB changed from [dVlar] + ñ _^_ES // PB mañana + ï i: // PB Thaïs + 'er (_ %V // PB 60'er + 'erne (_ %Vn@ // PB 60'erne + 'en (_S3 %@n // PB EMP'en - doesn't work diff --git a/dictsource/de_list b/dictsource/de_list index 1f429c0b..b122a888 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -15,30 +15,31 @@ // spoken when "speak punctuation" option is on. _. pUnkt -* StE*n $max3 -% p@-*o:ts'Ent $max3 +* StErn $max3 +% pro:ts'Ent $max3 + plUs $max3 = glaIC $max3 # nUm3 $max3 -€ OY*o: +€ OYro: £ paUnd & Unt @ kl'am3_,af@ ~ tIld@ \ bakslaS -° g@-*A:t +° grA:t +± pl'Us||m'i:nUs _, kOma _| paIp _: d'Op@lp,UNkt -_; St@-*'ICpUNkt -__ ,Unt3St@-*'IC -_- b'IndEst@-*,IC -_! 'aUs_|@-*,u:f@ts,aIC@n -_? f@-*'Ag@ts,aIC@n -_' ,apo:st@-*'Of +_; Str'ICpUNkt +__ ,Unt3Str'IC +_- b'IndEstr,IC +_! 'aUs_|r,u:f@ts,aIC@n +_? fr'Ag@ts,aIC@n +_' ,apo:str'Of _" tsi:t'A:t -_/ S@-*'e:gSt@-*IC +_/ Sr'e:gStrIC _( kl'am3||_|'aUf _) kl'am3||ts'u: _{ g@Sv'aIft@kl'am3||_|'aUf @@ -46,17 +47,17 @@ _} g@Sv'aIft@kl'am3||ts'u: _[ 'EkIg@kl'am3||_|'aUf _] 'EkIg@kl'am3||ts'u: _< klaIn3 -_> g@-*Y:s3 -_` g@-*A:v -_^ tsI*kUmflEks -_— g@d'aNk@nSt@-*,IC +_> grY:s3 +_` grA:v +_^ tsIrkUmflEks +_— g@d'aNk@nStr,IC _#9 t,abu:l'A:to:3 -_#32 l'e:*ts'aIC@n +_#32 l'e:rts'aIC@n _?? zymb'o:l _?A b'u:xstA:b@ -_cap g@-*'o:s +_cap gr'o:s // accent names @@ -65,15 +66,15 @@ _acu ak'u:t _ac2 d'Op@lak,u:t _brv b@-*'E:v@ _ced se:d'i:j -_cir ts'I*kUmflEks +_cir ts'IrkUmflEks _dia 'UmlaUt _dot p'Unkt -_grv g@-*'A:vIs +_grv gr'A:vIs _hac h'atSEk -_mcn m'A:k@-*On +_mcn m'A:krOn _ogo 'o:gOn,Ek -_rng k@-*'o:wZEk -_stk S@-*'e:gst@-*IC +_rng kr'o:wZEk +_stk Sr'e:gstrIC _tld t'Ild@ æ $accent @@ -93,8 +94,8 @@ _0 'nUl _1 _'aIns _1a _'aIn _2 'tsvaI -_3 'd@-*aI -_4 'fi:* +_3 'draI +_4 'fi:r _5 'fynf _6 'zEks _7 'zi:b@n @@ -103,16 +104,16 @@ _9 'nOYn _10 'tse:n _11 '_Elf _12 'tsvWlf -_13 'd@-*aItse:n -_14 'fI*tse:n +_13 'draItse:n +_14 'fIrtse:n _15 'fynftse:n _16 'zECtse:n _17 'zi:btse:n _18 '_axtse:n _19 'nOYntse:n _2X 'tsvantsIC -_3X 'd@-*aIsIC -_4X 'fI*tsIC +_3X 'draIsIC +_4X 'fIrtsIC _5X 'fynftsIC _6X 'zECtsIC _7X 'zi:btsIC @@ -123,8 +124,8 @@ _0M1 'taUz@nt _1M1 'taUz@nt // no '1' before thousand _0M2 ||mIlI'o:n@n _1M2 _'aIn@||mIlI'o:n -_0M3 ||mIlI'a*d@n -_1M3 _'aIn@||mIlI'a*d@ +_0M3 ||mIlI'ard@n +_1M3 _'aIn@||mIlI'ard@ _0M4 bIlI'o:n _0and ||_|Unt _dpt _kOma @@ -143,31 +144,31 @@ _0Co 'hUnd3tst@ (a . a . o .) A:||A:||_o: allg 'alg@maIn abb 'abb,IldUN -anm 'anm,E*kUN +anm 'anm,ErkUN bd band bde bEnd@ bzw b@tsi:UNsvaIz@ -chr k@-*IstUs -dm d'OYtS@||m'A:*k $capital $only $abbrev -dr dOkt'o:* +chr k@rIstUs +dm d'OYtS@||m'A:rk $capital $only $abbrev +dr dOkt'o:r evtl e:vEntu:'El od o:d3 -fr f@-*aU -frl f@-*OYlaIn -hr hE* -hrsg hE*'aUsge:b3 +fr fraU +frl frOYlaIn +hr hEr +hrsg hEr'aUsge:b3 inkl Inklu:z'i:v@ km ki:lo:me:t3 nr nUm3 st 'Este: -usf %Untzo:f'O*t +usf %Untzo:f'Ort usw %Untzo:v'aIt3 $pause -vgl fE*gl'aIC@ +vgl fErgl'aIC@ (z . b .) tsUmb'aISpi:l // definite article -der %dE* +der %dEr die %di: das %das den %de:n @@ -188,14 +189,14 @@ oder o:d3 $u+ $pause sondern $pause denn dEn $u+ $pause weil $pause -als $u+ $pause -bevor b@fo:* $2 $pause +als $u+ $brk +bevor b@fo:r $2 $pause also $pause wenn ,vEn $pause $strend sowie $2 $pause obgleich $2 $pause obwohl $2 $pause -deren de:*@n $u+ $brk +deren de:r@n $u+ $brk // prepositions ab ap $u+ $brk @@ -203,32 +204,34 @@ an an $u+ $brk am am $u+ $brk auf aUf $u+ $pause aus ,aUs $brk $strend -bei baI $u+ $pause $only +bei baI $u+ $brk $only beim baIm $u+ $brk bis bIs $u+ $pause da $u+ durch $u+ $pause -für fy:* $u+ $pause $only +für fy:r $u+ $pause $only gegen ge:g@n $u+ $pause gegend ge:g@nt hin hIn in In $u+ $brk //(in die) %Ind%i: //(in den) %Ind%e:n -//(in der) %Ind%E* +//(in der) %Ind%Er im Im $u+ $brk ins Ins $u+ $brk mit mIt $u+ $pause nach nA:x $u+ $brk +neben $u+ $brk ob ,Ob $pause $strend $only -pro ,p@-*o: $pause +per pEr $u+ $brk +pro ,pro: $pause von fOn $u+ $brk //(von dem) %fOn%de:m $brk vom fOm $u+ $brk -vor ,fO* $strend +vor ,fOr $strend zu tsu: $u+ $brk zum tsUm $u+ $pause -zur tsu:* $u+ $pause +zur tsu:r $u+ $pause über ,yb3 $pause $strend unter ,Unt3 $pause $strend $only um Um $u+ $brk @@ -241,18 +244,18 @@ so zo: $u+ doch dOx $u+ noch $pause (noch nicht) n'Ox||n'ICt $brk -(nicht mehr) n'ICt||,me:* -(nicht mehr) n,ICt||m'e:* $atend -(nicht nur) n'ICt||n'u:* $pause -(gar nicht) g,A:*n'ICt +(nicht mehr) n'ICt||,me:r +(nicht mehr) n,ICt||m'e:r $atend +(nicht nur) n'ICt||n'u:r $pause +(gar nicht) g,A:rn'ICt // should these be in the Rules because they can be a prefix in a // compound verb ? -daran dA:*'an +daran dA:r'an darauf $2 daraus $2 dabei $2 -dadurch dA:d'U*x +dadurch dA:d'Urx dafür $2 dagegen $2 daher dA:h'Er @@ -261,27 +264,36 @@ damit dA:m'It danach $2 daneben $2 darein $2 -darin dA:*'In +darin dA:r'In darüber $2 darum $2 darunter $2 davon dA:f'On dazu dA:ts'u: -umher Umh'E* +umher Umh'Er umhin Umh'In -woran vo:*'an +woran vo:r'an worauf $2 woraus $2 -worin vo:*'In +worin vo:r'In // pronouns -ich IC $u $only -du du: $u $only +ich $u $only +mich $u $only +mir $u+ $only +du $u $only +dich $u+ $only +dir $u+ $only er Er $u $brk $only es Es $u $only +ihn $u+ $only +ihm $u+ $only sie zi: $u $only -wir vi:* $u $only -ihr i:* $u +ihnen $u+ $only +wir vi:r $u $only +uns $u+ $only +ihr i:r $u +euch $u+ $only man man $u $only sich zIC $u $only (es ist) %Es%Ist @@ -309,16 +321,16 @@ deine $u+ sein $u // can also be verb "to be" seine $u+ -unsre Unz*@ $u -unsere Unz*@ $u +unsre Unzr@ $u +unsere Unzr@ $u unser Unz3 $u unserm Uns3m $u -unserem Uns@*@m $u +unserem Uns@r@m $u -ihre i:*@ $u -ihrem i:*@m $u -ihrer i:*3 $u +ihre i:r@ $u +ihrem i:r@m $u +ihrer i:r3 $u dies di:z $u diese di:z@ $u @@ -334,6 +346,13 @@ etwa $u ganz g,ants $only je $u nur $brk +jetzt j,Etst $strend2 +schon S,o:n $strend2 +einst 'aInst // not 'ein' + st +zwar tsv,a:r +wo v,o: +während $u + // verbs @@ -347,7 +366,7 @@ habe %hA:b@ $only habest hA:bEst $only $u hast %hast $only hat %hat $only -haben h,A:b@n $only +haben h,A:b@n $only $strend2 hatte h,at@ $only hatten h,at@n $only hätte h,Et@ $only @@ -355,26 +374,27 @@ hättest h,EtEst $only hättet h,Et@t $only hätten h,Et@n $only -war %vA:* $only -warst %vA:*st $only -wart %vA:*t $only -waren 'vA:*@n +war %vA:r $only +warst %vA:rst $only +wart %vA:rt $only +waren 'vA:r@n will %vIl $only willst %vIlst $only wollen %vOl@n $only wollt %vOlt -werden v,E*d@n -werde v,E*d@ -wirst v,I*st -werdet v,E*d@t -wurden vU*d@n -wurde vU*d@ -wurdest v,U*dEst -wurdet vU*d@t +werden v,Erd@n $strend2 +werde v,Erd@ +wirst v,Irst +wird v,Irt +werdet v,Erd@t +wurden v,Urd@n +wurde v,Urd@ +wurdest v,UrdEst +wurdet v,Urd@t -können ,kWn@n $only +können ,kWn@n $only $strend2 kann ,kan $only kannst ,kanst $only könnt ,kWnt $only @@ -386,6 +406,7 @@ sollst ,zOlst sollte ,zOlt@ sollten ,zOlt@n +kam ,kA:m @@ -415,7 +436,6 @@ cursor _^_EN debugger _^_EN dj _^_EN email _^_EN -ensemble _^_FR enterprise _^_EN event _^_EN firewall _^_EN @@ -494,39 +514,40 @@ word _^_EN // Main exceptions list //===================== -abort ab'O*t -absentier apzEnt'i:* +abort ab'Ort +absentier apzEnt'i:r abstinent $3 achsig 'aksIg# akazie $alt allein $2 -andre and@-*@ // andere +andre andr@ // andere anomalie $2 antik ant'i:k -archaik a*C'A:Ik +archaik arC'A:Ik arie $alt -arpeggier a*pEdZ'i:* -arrangier a*aNZ'i:@ +arpeggier arpEdZ'i:r +arrangier araNZ'i:@ +Art A:rt // capital arterie $alt asphalt $2 atommüll $1 ausgeschamt aUsg@SA:mt außerdem 'aUs3d,e:m -aventurin avEntu:*'i:n +aventurin avEntu:r'i:n ave A:vE balkan $1 balkon $2 bandagier bandaZ'i:@ beben be:b@n -beere be:*@ +beere be:r@ bestie bEstI@ best bEst beten be:t@n bizarr $2 bronchie $alt -changier SaNZ'i:* +changier SaNZ'i:r ciao tSaU coup ku: @@ -536,35 +557,35 @@ deshalb $2 dezember $2 diadem di:ad'e:m dient di:nt -direkt $2 dividend di:vi:d'Ent -dragier d@-*aZ'i:* -dritte d@-*It@ +dragier draZ'i:r +dritte drIt@ duett du:'Et ebendaher e:b@ndah'e:r ebendahin e:b@ndah'In ebenso $1 einander aIn'and3 -einerlei aIn@*laI +einerlei aIn@rlaI einher aInh'e:r einig aInIC $only einige aInIg@ $u+ einiges aInIg@s $u+ -engagier aNgaZ'i:* +engagier aNgaZ'i:r endivie $alt endlich EntlIC +ensemble Ons'Omb@l episkopal e:pIsko:p'A:l -erde e:*d@ -erst e:*st -ersten e:*st@n -erstmal e:*stma:l +erde e:rd@ +erst e:rst +ersten e:rst@n +erstmal e:rstma:l extravagant $1 -extrem Ekst@-*'e:m +extrem Ekstr'e:m feuerrot $3 -friedvoll f@-*'i:tf,Ol -furchen fU*C@n +friedvoll fr'i:tf,Ol +furchen fUrC@n furie $alt geben ge:b@n @@ -573,7 +594,7 @@ gegenüber ge:g@n'y:b3 geglichen g@glIC@n gemein g@maIn genial ge:nI'al -geranie ge:*'A:nI@ +geranie ge:r'A:nI@ gessen gEs@n geste ge:st@ gestern gEst3n @@ -582,16 +603,16 @@ grazie $alt handy hEndi: häuschen hOYsC@n -hausier haUz'i:* +hausier haUz'i:r heimat $1 -herberg hE*bE*g +herberg hErbErg historie $alt hm h@m horsam hO3zA:m hostie $alt illegitim Ile:gi:t'i:m -illiberal Ili:b@*'A:l +illiberal Ili:b@r'A:l illoyal IlOajA:l immobilie $alt indem Ind'e:m @@ -604,10 +625,10 @@ inka INkA: inkaisch INkA:IS inkonstant $1 insbesondere $3 -interess Int@*'Es -intern Int'E*n +interess Int@r'Es +intern Int'Ern -januar janu:A:* +januar janu:A:r kamelie $alt kanoe kan'u: @@ -620,23 +641,23 @@ kurie $alt lappalie $alt lilie $alt -logier lo:Z'i:* +logier lo:Z'i:r lucent lu:sEnt luetisch lu:'e:tIS machen max@n marginalie $alt materie $alt -menagier me:naZ'i:* +menagier me:naZ'i:r menuette mEnu:'Et minut $2 -mikrofiche mi:k@-*o:fi:S +mikrofiche mi:kro:fi:S miteinander $1 modell mo:d'El monoton $3 monsun $2 montag mo:ntA:k -mors mO*s +mors mOrs mumie $alt nachdem naxd'e:m @@ -654,12 +675,12 @@ perplex $2 petersilie $alt pinie $alt planet plan'e:t -pochier pOS'i:* +pochier pOS'i:r pochs pOxs präsident $3 prämie $alt -privatisier p@-*i:vati:z'i:* -problematisier p@-*o:ble:m'a:tIzi:* +privatisier pri:vati:z'i:r +problematisier pro:ble:m'a:tIzi:r reliquie $alt risik $1 @@ -670,53 +691,56 @@ sagt zA:gt salopp $2 schult Su:lt selbst zElpst -serie se:*I;@ -service sE*vIs +serie se:rI;@ +service sErvIs soeben zo:_'e:b@n sofort $2 sogar $2 soweit $2 sowohl $2 -sparsam SpA:*zA:m +sparsam SpA:rzA:m spinozaisch spi:n'o:tsaIS stalagmit stalagm'It +subjekt $1 system zIst'e:m tag tA:g telegen te:le:g'e:n the D@ // English theater te:'A:t3 -train t@-*e:n +train tre:n turin $2 umweg $1 unten Unt@n -wasserung vas@*UN // because -ung isn't marked as a suffix -weiterung vaIt@*UN -weither vaIth'E* +wasserung vas@rUN // because -ung isn't marked as a suffix +weiterung vaIt@rUN +weither vaIth'Er weitum vaIt_|'Um woher vo:h'e:r -verein fE*'aIn +verein fEr'aIn vielbesprochen $3 vielleicht $2 -vorbei fo:*b'aI -vorher fo:*h'e:* -vorherig fo:*h'e:*Ig# -vorig fo:*Ig# +vorbei fo:rb'aI +vorher fo:rh'e:r +vorherig fo:rh'e:rIg# +vorig fo:rIg# //wahrscheinlich $2 -warum vA:*'Um +warum vA:r'Um zoom zu:m -//zuerst tsu:'E*st zugegen tsu:g'e:g@n zudem tsu:'de:m +zugegen tsu:g'e:g@n zurück $2 zymbal $1 // Names +Georg ge:Ork $only +George dZO:rdZ Neumexiko $2 Neuseeland $2 diff --git a/dictsource/de_rules b/dictsource/de_rules index fc311f49..2b9778d9 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -23,1211 +23,1241 @@ // This file is UTF-8 encoded .group a - _) a (_ A: - a A - aa A: - ah (+ A: - ael A:El - ae E: + _) a (_ A: + a A + aa A: + ah (+ A: + ael A:El + ae E: - a (C% a - a (CC a - a (sch a - a (x a - &CC) a (_ =A: + a (C% a + a (CC a + a (sch a + a (x a + &CC) a (_ =A: - ai aI - ay aI - au aU - auh (_ aU + ai aI + ay aI + au aU + auh (_ aU - ab (t_ A:p - ag (t_ A:k + ab (t_ A:p + ag (t_ A:k - _) ab (C@P2 _!'ap - _) ab (arP2 _!'ap - _) ab (nor %ap - _) ab (or ap_| - _) ab (sor %ap - _) ab (str %ap - _) ab (sur %ap - _) abb (a %ab - _) abb (rev ab - _) abd (+ apd - _) abend A:b@nt - _) aberr ab_|E* - _) ab (er@P2 'ap - _) ab (i ap - _) ab (j ap - _) ab (se ap - _) ab (so %ap - _) ab (sz ap - _) abzu 'aptsu: - _) ac (et ats - _) ad (ju at - _) an (@P2 _!'an - _) an (a %an - _) a (natioP1 'A: - _) anath anat - _) an (der an - _) angli (@ aNgli: - _) anglo (@ ,aNglo: - _) anheim (C@P6 anh'aIm - _) animal ,ani:mA:l - _) anim ,ani:m - _) ani (s %ani: - a (Co_ 'A: - _) anti (@P4 ,antI - _) an (tw an - _) auf (@P3 _!'aUf - _) aus (@P3 _!'aUs - _) aus (ku aUs + _) ab (C@P2 _!'ap + _) ab (arP2 _!'ap + _) ab (nor %ap + _) ab (or ap_| + _) ab (sor %ap + _) ab (str %ap + _) ab (sur %ap + _) abb (a %ab + _) abb (rev ab + _) abd (+ apd + _) abend A:b@nt + _) aberr ab_|Er + _) ab (er@P2 'ap + _) ab (i ap + _) ab (j ap + _) ab (se ap + _) ab (so %ap + _) ab (sz ap + _) abzu (@P4 'aptsu: + _) ac (et ats + _) ad (ju at + _) an (@P2 _!'an + _) an (a %an + _) a (natioP1 'A: + _) anath anat + _) an (der an + _) angli (@ aNgli: + _) anglo (@ ,aNglo: + _) anheim (C@P6 anh'aIm + _) animal ,ani:mA:l + _) anim ,ani:m + _) ani (s %ani: + a (Co_ 'A: + _) anti (@P4 ,antI + _) an (tw an + _) auf (@P3 _!'aUf + _) aus (@P3 _!'aUs + _) aus (ku aUs - a (_ A: - a (C_ A: - @) a (bl_ 'A: - @) a (bel_ 'A: - s) a (g A: - @l) a (g A: - schl) ag (ge A:k - scl) a (g A: - spr) a (ch A: - s) a (m_ A: - s) a (mkeit A: - gr) a (mm_ 'a - a (isier a - _) achs (@P4 'aks - _) achs (el 'aks - j) ag (d A:k - _) air _^_EN - m) air (_ aI3 - ai (sch A:I - tr) ain En - air (_ E:r - akqu %akv - @A) al (_ 'A:l - b) al (_ 'A:l - g) al (_ 'A:l - k) al (_ 'A:l - n) al (_ 'A:l - &kan) al (_ ,A:l - &sign) al (_ ,A:l - r) al (_ 'A:l - t) al (_ 'A:l - @) an (_ 'A:n - ein) an (der 'an - @) ant (_ 'ant - _) anthropo ,ant@-*o:p%o: - _) anti (@P4 ,anti: - anier (_N 'A:ni:3 - _) an (ten an - _) an (th an - _) appe (ll@ ,apE - _) archa (i %a*CA - arier (_N 'A:*i:3 - @l) ar (_ 'A:* - @t) ar (_ 'A:* - a (rch_ 'A: - @) at (_ 'A:t - @) atisch (_S6 'A:tIS - @) atisieren (_S9 A:tIs'i:*@n - a (tion a - _) ato (m %ato: - _) au (Ceinand aU - _) aufent aUf@nt - austra (l %aUst@-*A - _) authen aUtEn - ay (_N EI - m) ayr (_ aI3 - p) ay EI + a (_ A: + a (C_ A: + @) a (bl_ 'A: + @) a (bel_ 'A: + s) a (g A: + @l) a (g A: + schl) ag (ge A:k + scl) a (g A: + spr) a (ch A: + s) a (m_ A: + s) a (mkeit A: + gr) a (mm_ 'a + a (isier a + _) achs (@P4 'aks + _) achs (el 'aks + j) ag (d A:k + _) air _^_EN + m) air (_ aI3 + ai (sch A:I + tr) ain En + air (_ E:r + akqu %akv + @A) al (_ 'A:l + b) al (_ 'A:l + g) al (_ 'A:l + k) al (_ 'A:l + n) al (_ 'A:l + &kan) al (_ ,A:l + &sign) al (_ ,A:l + r) al (_ 'A:l + t) al (_ 'A:l + m) a (lt_ A:l + @) an (_ 'A:n + ein) an (der 'an + @) ant (_ 'ant + _) anthropo ,antro:p%o: + _) anti (@P4 ,anti: + anier (_N 'A:ni:3 + _) an (ten an + _) an (th an + _) appe (ll@ ,apE + _) archa (i %arCA + arier (_N 'A:ri:3 + @l) ar (_ 'A:r + @t) ar (_ 'A:r + a (rch_ 'A: + @) at (_ 'A:t + @) atisch (_S6 'A:tIS + @) atisieren (_S9 A:tIs'i:r@n + a (tion a + _) ato (m %ato: + _) au (Ceinand aU + _) aufent aUf@nt + austra (l %aUstrA + _) authen aUtEn + ay (_N EI + m) ayr (_ aI3 + p) ay EI .group b - _) b (_ be: - b b - b) b - b (_N p - b (L01 p - b (sA b - bt (_N pt + _) b (_ be: + b b + b) b + b (_N p + b (L01 p + b (sA b + bt (_N pt - _) be (@P2 b@ - &Cen) be (C@ b@ - ungs) be (C@ b@ - _) b (eHC b - _) be (C% bE - _) bei b'aI - _) beige be:S - _) be (inhP2 b@ - _) beo (b b,@o: + _) be (@P2 b@ + &Cen) be (C@ b@ + ungs) be (C@ b@ + _) b (eHC b + _) be (C% bE + _) bei b'aI + _) beige be:S + _) be (inhP2 b@ + _) beo (b b,@o: - _) ba (lA b%a - _) ba (ll@ b%a - &) bar (_S3 bA:* - &) bare (_S4 bA:*@ - &) barem (_S5 bA:*@m - &) baren (_S5 bA:*@n - &) barer (_S5 bA:*3 - &) bares (_S5 bA:*@s - _) b (ebC b - _) b (ecC b - _) b (eet b - _) b (enzin b - _) b (erC b - _) b (esen b - _) b (ess b - _) b (esten b - bestia bEsti:'A: - _) b (eug b - _) b (eul b - _) b (eut b + _) ba (lA b%a + _) ba (ll@ b%a + &) bar (_S3 bA:r + &) bare (_S4 bA:r@ + &) barem (_S5 bA:r@m + &) baren (_S5 bA:r@n + &) barer (_S5 bA:r3 + &) bares (_S5 bA:r@s + _) b (ebC b + _) b (ecC b + _) b (eet b + _) b (enzin b + _) b (erC b + be (reich b@ + _) b (esen b + _) b (ess b + _) b (esten b + bestia bEsti:'A: + _) b (eug b + _) b (eul b + _) b (eut b - _o) b (C p - baby _^_EN - beten be:t@n - _) bike _^_EN - _) bis (hP3 b%Is - _) blue _^_EN - board _^_EN - _) boom _^_EN - bo (sh bo: + _o) b (C p + baby _^_EN + beten be:t@n + _) bike _^_EN + _) bis (hP3 b%Is + _) blue _^_EN + board _^_EN + _) boom _^_EN + bo (sh bo: + _) bundes b'Und@s .group c - _) c (_ se: - c k - c) c + _) c (_ se: + c k + c) c - ch C - a) ch x - o) ch x - u) ch x - fu) ch (s k - äu) ch C - eu) ch C - C) chen (_S4 C@n - ä) chen (_ C@n - e) chen (_ C@n - ü) chen (_ C@n + ch C + a) ch x + o) ch x + u) ch x + fu) ch (s k + äu) ch C + eu) ch C + C) chen (_S4 C@n + ä) chen (_ C@n + e) chen (_ C@n + ü) chen (_ C@n - _) chr k@-* - chs ks (_ - ck k + _) chr kr + chs ks (_ + ck k - _) c (el S - _) cey tsaI - chef (_ SEf - _) c (ent ts - chara (kt k%a*a - _) ch (ic S - _) ch (if S - _) ch (il S - chip (_ tSIp // English - _) ch (ol k - _) ch (or k + _) c (el S + _) cey tsaI + chef (_ SEf + _) c (ent ts + chara (kt k%ara + _) ch (ic S + _) ch (if S + _) ch (il S + chip (_ tSIp // English + _) ch (ol k + _) ch (or k - bre) ch (en x - chro k@-*o: - nä) chs (t Cs - wa) chstu (m kstu: - c (ie s - pla) c (ie ts - coat (_ _^_EN - _) code ko:t - _) cow _^_EN - crew _^_EN - cup _^_EN - _) cyber saIb3 + bre) ch (en x + chro kro: + nä) chs (t Cs + wa) chstu (m kstu: + c (ie s + pla) c (ie ts + coat (_ _^_EN + _) code ko:t + _) cow _^_EN + crew _^_EN + cup _^_EN + _) cyber saIb3 .group d - _) d (_ de: - d d - d) d - d (_N t - d (L01 t - d (sA d - ds (_ ts - dt t - ddt t + _) d (_ de: + d d + d) d + d (_N t + d (L01 t + d (sA d + ds (_ ts + dt t + ddt t - _) darüber (@P7 da*'y:b@* - _) darum (@P5 da*'Um - _) darunter (@P8 da*'Unt@* - _) daten (@P5 d'at@n - _) deal _^_EN - _) de (if de: - _) de (ikP2 d%e: - _) de (instaP2 d%e: - _) deme de:mE - demo (g de:mo: - demo (k de:mo: - design _^_EN - dge (_ _^_EN - _) dia d,i:a - _) diver d%i:vE* - _) dort (C@P4 d'O*t - drive _^_EN - _) drug _^_EN - _) durch (@P5 d'U*C - _) durch (b d%U*C - _) durch (f d%U*C - _) durch (kr d%U*C - _) durch (la d%U*C - _) durchque d%U*Ckve: - _) durch (schau d%U*C - _) durch (st d%U*C - _) durch (su d%U*C - _) durch (tre d%U*C - _) durch (w d%U*C - _) durch (wachP5 d'U*C - _) durchweg dUrCve:k + _) darüber (@P7 dar'y:b@r + _) darum (@P5 dar'Um + _) darunter (@P8 dar'Unt@r + _) daten (@P5 d'at@n + _) deal _^_EN + _) de (if de: + _) de (ikP2 d%e: + _) de (instaP2 d%e: + _) deme de:mE + demo (g de:mo: + demo (k de:mo: + design _^_EN + dge (_ _^_EN + _) dia d,i:a + _) diver d%i:vEr + _) dort (C@P4 d'Ort + drive _^_EN + _) drug _^_EN + _) durch (@P5 d'UrC + _) durch (b d%UrC + _) durch (f d%UrC + _) durch (kr d%UrC + _) durch (la d%UrC + _) durchque d%UrCkve: + _) durch (schau d%UrC + _) durch (st d%UrC + _) durch (su d%UrC + _) durch (tre d%UrC + _) durch (w d%UrC + _) durch (wachP5 d'UrC + _) durchweg dUrCve:k .group e - _) e (_ e: - e e: - ee e: - eh (+ e: + _) e (_ e: + e e: + ee e: + eh (+ e: - e (C% E - e (CC E - e (sch E - e (x E + e (C% E + e (CC E + e (sch E + e (x E - ei aI - eu OY - ey (_ e: + ei aI + eu OY + ey aI + ey (_ e: - eb (t_ e:p - eg (t_ e:k + eb (t_ e:p + eg (t_ e:k - ell (_ 'El - ll) e (l e: - &) e (_S1 @ - @t) e (_S1 @ - &) e (BB_ E2 - e (gt_+ e: - &) el (_ @l - &) eln (_NS1 n - &) elnd (_S2 nt - &) e (lt_ @ - &) em (_NS2 @m - &) em (_ 'e:m - _) end (C@P3 'Ent - _) endo (@ ,Endo: - @) en (_S2 @n - &) end (_NS3 @nt - &) ende (_S4 @nd@ - &) endem (_S5 @nd@m - &) enden (_S5 @nd@n - &) ender (_S5 @nd3 - &) endes (_S5 @nd@s - &) end (_ @nd - ier) end (_NS3 @nt - ier) end (_ @nd - @) enhaft (_ =@nhaft - @) ent (_ 'Ent - @) entlich @ntl%IC - @m) ent (_ 'Ent - @m) ente (_ 'Ent@ - @) er (C 3 - @) er (r E* - @) er (ti E* - @) er (nC E* - @) er (_NS2 3 - @) er (_ @* // +suffix - &) ere (_S3 @*@ - &) erem (_S4 @*@m - &) eren (_S4 @*@n - &) erer (_S4 @*3 - &) eres (_S4 @*@s - &) er (C_ @:* - er (d_ e:* - &) er (n_ @:* - &) er (r_ E - w) er (k_ E* - &) er (nd_ @* - &) erin (_ @*In - &) erisch (_ @*IS - exp) er (t E* - @) es (_S2 @s - &) et (_S2 @t - &) est (_S3 @st - &) este (_S4 @st@ - &) estem (_S5 @st@m - &) esten (_S5 @st@n - &) ester (_S5 @st3 - &) estes (_S5 @st@s + een (_ 'e:n- + ell (_ 'El + ll) e (l e: + &) e (_S1 @ + @t) e (_S1 @ + &) e (BB_ E2 + e (gt_+ e: + @) e (kt_ 'E + @@) e (kt_ E + &) el (_ @l + &) eln (_NS1 n + &) elnd (_S2 nt + &) e (lt_ @ + &) em (_NS2 @m + &) em (_ 'e:m + _) end (C@P3 'Ent + _) endo (@ ,Endo: + @) en (_S2 @n + &) end (_NS3 @nt + &) ende (_S4 @nd@ + &) endem (_S5 @nd@m + &) enden (_S5 @nd@n + &) ender (_S5 @nd3 + &) endes (_S5 @nd@s + &) end (_ @nd + ier) end (_NS3 @nt + ier) end (_ @nd + @) enhaft (_ =@nhaft + @) ent (_ 'Ent + @) entlich @ntl%IC + @m) ent (_ 'Ent + @m) ente (_ 'Ent@ + @) e (pt_ 'E + @) er (C 3 + @) e (rr E + @) e (rti E + @) e (rnC E + @) er (_S2 @r + &) ere (_S3 @r@ + &) erem (_S4 @r@m + &) eren (_S4 @r@n + &) erer (_S4 @r3 + &) eres (_S4 @r@s + &) er (X_ 3: + er (d_ e:r + &) er (r_ E + w) er (k_ Er + &) erin (_ @rIn + &) erisch (_ @rIS + exp) er (t Er + @) es (_S2 @s + &) et (_S2 @t + &) est (_S3 @st + &) este (_S4 @st@ + &) estem (_S5 @st@m + &) esten (_S5 @st@n + &) ester (_S5 @st3 + &) estes (_S5 @st@s - &) en (@ E2n // [E2] can reduce to [@] - // &) er (C@ E2* - &) el (@ E2l - m) e (nt E + &) en (@ E2n // [E2] can reduce to [@] + // &) er (C@ E2r + &) el (@ E2l + m) e (nt E - @) ei (_ 'aI - @@) erisch @*IS - &) erung (_ =@*UN + @) ei (_ 'aI + &fr) ei (_ ,aI + @@) erisch @rIS + &) erung (_ =@rUN - echo ECo: - _) e (ff %E - l) e (g_ 'e: - eih (_ aI - _) eil (aP3 'aIl - _) eil (fP3 'aIl - _) ein (@P3 _!'aIn - ein (and _|%aIn - _) eine (r@ aIn@ - _) einig aInIg - m) eir (_ aI3 - _) eisen (@P5 'aIz@n - _) e (lek %e: - _) elektro (@P7 e:l'Ekt@-*o: - _) elen e:lEn - mod) e (l@ E - s) e (lig e: - _) emp (@P3 _|%Emp - _) emph (@ %Emf - _) emp (ir %Emp - br) ems Ems // brems-t, not brem-st - _) ene (rg %e:nE - _) energie e:nE*g'i: - @) en (i e:n - @) e (nsi E - _) ent (@P3 _|%Ent - _) enten Ent@n - _) ent (er Ent - pat) ent 'Ent - t) en (t En - qu) en (tA En - &) en (tum @n - &) e (nzK 'E - _) epi (@ ,e:pi: - _) epi (sk e:pI - _) er (@P2 _|%E* - _) er (gie E* - &) er (ig_ @* - &) er (igst @* - _) er (beK E* - _) er (HC E* // lC, mC, nC, rC - er (o_ 'e:* - _) ergeb (nis E*g'e:b - _) er (stC E* - _) er (ste E* - _) er (ste@@P2 _|%E* - @) er (v E* - mod) er (n E* + echo ECo: + _) e (ff %E + l) e (g_ 'e: + eih (_ aI + _) eil (aP3 'aIl + _) eil (fP3 'aIl + _) ein (@P3 _!'aIn + ein (and _|%aIn + _) eine (r@ aIn@ + _) einig aInIg + m) eir (_ aI3 + _) eisen (@P5 'aIz@n + _) e (lek %e: + _) elektro (@P7 e:l'Ektro: + _) elen e:lEn + mod) e (l@ E + s) e (lig e: + _) emp (@P3 _|%Emp + _) emph (@ %Emf + _) emp (ir %Emp + br) ems Ems // brems-t, not brem-st + _) ene (rg %e:nE + _) energie e:nErg'i: + @) en (i e:n + @) e (nsi E + _) ent (@P3 _|%Ent + _) enten Ent@n + _) ent (er Ent + pat) ent 'Ent + t) en (t En + qu) en (tA En + &) en (tum @n + &) e (nzK 'E + _) epi (@ ,e:pi: + _) epi (sk e:pI + _) er (@P2 _|%Er + _) er (gie Er + &) er (ig_ @r + &) er (igst @r + _) er (beK Er + _) er (HC Er // lC, mC, nC, rC + er (o_ 'e:r + _) ergeb (nis Erg'e:b + _) erst (CP4 'Erst + _) er (str+ _|%Er + @) er (v Er + mod) er (n Er - _) entert _^_EN - er (dig e:* - _) erob (er %E*o:b - @) esen (_ e:z@n - @) ett (_ 'Et - eum (_ 'e:Um - @@) eum (_ =e:Um - @) eur (_ 'Y:* - euse (_ 'Y:z@ - eusen (_ 'Y:z@n - schl) eu (s OY - h) eu (se++ OY + _) entert _^_EN + er (dig e:r + _) erob (er %Ero:b + @) esen (_ e:z@n + @) ett (_ 'Et + eum (_ 'e:Um + @@) eum (_ =e:Um + _) eur (op %OY + @) eur (_ 'Y:r + euse (_ 'Y:z@ + eusen (_ 'Y:z@n + schl) eu (s OY + h) eu (se++ OY .group f - _) f (_ Ef - f f - f) f + _) f (_ Ef + f f + f) f - _) faks (i f%akz - _) farb (C@P4 f'a*p - _) farb (l@P4 f'a*b - _) fein (@P4 f'aIn - _) fest (@P4 f'Est - _) flug fl'u:g - foto fo:to: - _) free _^_EN - _) feudal f%OYdA:l - _) feuer (@ fOY@* - _) frev f@-*e:f - _) froh (@P4 f@-*'o: - _) frohlock f@-*o:l'Ok - _) fung (A fUNg + _) faks (i f%akz + _) farb (C@P4 f'arp + _) farb (l@P4 f'arb + _) fein (@P4 f'aIn + _) fest (@P4 f'Est + _) flug fl'u:g + foto fo:to: + _) free _^_EN + _) feudal f%OYdA:l + _) feuer (@ fOY@r + _) frev fre:f + _) froh (@P4 fr'o: + _) frohlock fro:l'Ok + _) fung (A fUNg .group g - _) g (_ ge: - g g - g (g - g (_N k - g (L01 k - g (sA g - gd (_N kt - gtet (_ kt@t - gtest kt@st + _) g (_ ge: + g g + g (g + g (_N k + g (L01 k + g (sA g + gd (_N kt + i) gt (_ Ct + zei) gt (_ kt + gtet (_ kt@t + gtest kt@st - _) g (eHC g // hC, lC, mC, nC, rC - _) ge (@P2 g@ - ungs) ge (C@ g@ - _) ge (beX ge: - g (ei+ g + _) g (eHC g // hC, lC, mC, nC, rC - _) gn (A g@-n - B) gn (A g@-n + _) gn (A g@-n + B) gn (A g@-n - geben ge:b@n - gegen (@P5 ge:g@n - gegen (_ ge:g@n - gegn ge:gn - gehen ge:@n - _) geh (eX ge: - general ge:nE*'al - general (is ge:n@*al - _) g (ener g - _) g (eo+ g - _) ge (orP2 g@ - ge (rman gE - ge (rät g@ - ge (strig gE - @) ght (_ _^_EN - graph g@-*Af - graph (_ g@-*'A:f - green _^_EN - guide _^_EN - gue (_ k + @) ght (_ _^_EN + graph grAf + graph (_ gr'A:f + green _^_EN + guide _^_EN + gue (_ k +.group ge + _) ge (@P2 g@ + ungs) ge (C@ g@ + _) ge (beX ge: + geben ge:b@n + ge(birg g@ + gegen (@P5 ge:g@n + gegen (_ ge:g@n + gegn ge:gn + gehen ge:@n + _) geh (eX ge: + gei (+ gaI + ge (mach g@ + ge (mal g@ + ge (tr g@ + general ge:nEr'al + general (is ge:n@ral + _) ge (ner gE + _) geo g,e:o: + _) ge (orP2 g@ + _) ge (org g%e: + ge (rman gE + ge (rät g@ + ge (strig gE .group h - _) h (_ hA: - h h - h) h - ch) h h + _) h (_ hA: + h h + h) h + ch) h h - _) herab (P5 hE*'ab - _) heran (P5 hE*'an - _) herauf (P6 hE*'aUf - _) heraus (P6 hE*'aUs - _) herbei (P6 hE*'baI - _) herein (P6 hE*'aIn - _) herüber (P7 hE*'y:b3 - _) herum (P5 hE*'Um - _) herunter (P8 hE*'Unt3 - _) hervor (P6 hE*f'Or - _) hier (@ h%i:* - _) hilf (@P4 h'Ilf - _) hilfs (@P5 h'Ilfs - _) hilfe (@P5 h'Ilf@ + _) herab (P5 hEr'ab + _) heran (P5 hEr'an + _) herauf (P6 hEr'aUf + _) heraus (P6 hEr'aUs + _) herbei (P6 hEr'baI + _) herein (P6 hEr'aIn + _) herüber (P7 hEr'y:b3 + _) herum (P5 hEr'Um + _) herunter (P8 hEr'Unt3 + _) hervor (P6 hErf'Or + _) hier (@ h%i:r + _) hilf (@P4 h'Ilf + _) hilfs (@P5 h'Ilfs + _) hilfe (@P5 h'Ilf@ - _) hinab (P5 hIn'ab - _) hinan (P5 hIn'an - _) hinauf (P6 hIn'aUf - _) hinaus (P6 hIn'aUs - _) hinein (P6 hIn'aIn - _) hingegen hIng'e:g@n - _) hinüber (P7 hIn'y:b3 - _) hinum (P5 hIn'Um - _) hinunter (P8 hIn'Unt3 - _) hinweg (P6 hInv'e:g - _) hinzu (P5 hInts'u: + _) hinab (P5 hIn'ab + _) hinan (P5 hIn'an + _) hinauf (P6 hIn'aUf + _) hinaus (P6 hIn'aUs + _) hinein (P6 hIn'aIn + _) hingegen hIng'e:g@n + _) hinüber (P7 hIn'y:b3 + _) hinum (P5 hIn'Um + _) hinunter (P8 hIn'Unt3 + _) hinweg (P6 hInv'e:g + _) hinzu (P5 hInts'u: - _) hinge (@P5 h'Ing@ - _) hinter (@P6 h,Int3 + _) hinge (@P5 h'Ing@ + _) hinter (@P6 h,Int3 - _) haupt (@@P5 h'aUpt - _) haus (@P4 h'aUs + _) hand (CP4 h'ant + _) hand (lung hand + _) haupt (@@P5 h'aUpt + _) haus (@P4 h'aUs // @) heit (_S4 haIt - _) hero h%e:*o: - _) herz (er@P4 h'E*ts - _) high _^_EN - _) hinter (@ h,Int3 - _) hoch (@P4 h'o:x - hoch ho:x - homogen h,o:mo:ge:n - _) hyper _^_EN + _) hero h%e:ro: + _) herz (er@P4 h'Erts + _) high _^_EN + _) hinter (@ h,Int3 + _) hoch (@P4 h'o:x + hoch ho:x + homogen h,o:mo:ge:n + _) hyper _^_EN .group i - _) i (_ i: - i i: - ih (+ i: + _) i (_ i: + i i: + ih (+ i: - i (C% I - i (CC I - i (sch I - i (x I + i (C% I + i (CC I + i (sch I + i (x I - @) i (ng I - &CC) i (_ =i: + @) i (ng I + &CC) i (_ =i: - @) i (bl_ 'i: - @) i (bel_ 'i: - ib (t_ i:p + @) i (bl_ 'i: + @) i (bel_ 'i: + ib (t_ i:p - @) i (at_ I - i (d_ 'i: - i (erin =i: - ig Ig# // [ig] or [iC] - igh aI + @) i (at_ I + i (d_ 'i: + i (dee %i: + i (erin =i: + ig (+ Ig# // [ig] or [iC] + igh aI - i (i i:_! + i (i i:_! - s) ik (_ 'i:k - @r) ik (_ Ik - br) ik (_ 'i:k - @t) ik (_ =i:k - polit) ik 'i:k - @) ik (el_ 'i:k + s) ik (_ 'i:k + @r) ik (_ Ik + br) ik (_ 'i:k + @t) ik (_ =i:k + polit) ik 'i:k + @) ik (el_ 'i:k - _) illeg ,Ile:g - _) i (llu %I - _) i (mag I - i (Co_ 'i: - ik (o_ i:k - &) im (o_ =i:m - r) i (na_ 'i: + _) illeg ,Ile:g + _) i (llu %I + _) i (mag I + i (Co_ 'i: + ik (o_ i:k + &) im (o_ =i:m + r) i (na_ 'i: // @) ing (_N _^_EN - _) in (k %In - _) inter Int@* - &) in (_ i2n - l) in (_ 'i:n - m) in (_ 'i:n - s) in (_ 'i:n - z) in (_ 'i:n - @) in (o_ 'i:n - @) ion (_ j'o:n - @) io (n Io: - io Io: - @) is (_ Is - &) isch (_ =IS - is (mus_ 'Is - @) ist (_ 'Ist - @) it (_N 'It - @) ite (_ 'i:t@ - @) ität (_S4 i:t'E:t + _) in (k %In + _) inter Int@r + &) in (_ i2n + l) in (_ 'i:n + m) in (_ 'i:n + s) in (_ 'i:n + z) in (_ 'i:n + @) in (o_ 'i:n + @) ion (_ j'o:n + @) io (n Io: + io Io: + @) is (_ Is + &) isch (_ =IS + is (mus_ 'Is + @) ist (_ 'Ist + @) it (_N 'It + @) ite (_ 'i:t@ + @) ität (_S4 i:t'E:t - &) ium (_ =i:Um - @s) i (v_ 'i: - @t) i (v_ 'i: + &) ium (_ =i:Um + @s) i (v_ 'i: + @t) i (v_ 'i: .group ie - ie i: - ieh i: - @) ie (_ 'i: + ie i: + ieh i: + @) ie (_ 'i: - &) ie (ll_ I'E - &) ie (r_ 'i: - ie (rs@ 'i: - u) ie (r_ _|'i: - &) ie (rlich 'i: - bank) ie (r I'e: - barr) ie (r I'e: - financ) ie (r I'e: - arr) ie (r I'e: - hotel) ie (r I'e: - prem) ie (r I'e: - hyg) ie (n I'e: - ital) ie (n I'e: - d) ienst i:nst - r) ien (@ IEn - &) ien (_ =I@n - &b) ien (_ =i:@n - g) ien (_ 'i:@n - m) ien (_ 'i:@n - ph) ien (_ 'i:@n - &n) ien (_ I@n - p) ien (_ 'i:@n - &r) ien (_ =i:@n - ser) ien (_ 'i:@n - tter) ien (_ 'i:@n - eor) ien (_ 'i:@n - gor) ien (_ 'i:@n - etr) ien (_ 'i:@n - dustr) ien (_ 'i:@n - s) ien (_ 'i:@n - t) ien (_ 'i:@n - &) iens (_ =I;@ns - ient (_ I'Ent - &) ienz (_ I'Ents - sch) ie (n i: - @) ie (reX 'i: - ierungs 'i:*UNs - ierung 'i:*UN - bakter) ie =I@ - famil) ie =I@ - fer) ie (n =I@ - fol) ie (_ =I@ - formal) ie =I@ - stud) ie (_ =I@ - in) ie (_ I@ + &) ie (ll_ I'E + &) ie (r_ 'i: + ie (rs@ 'i: + u) ie (r_ _|'i: + &) ie (rlich 'i: + bank) ie (r I'e: + barr) ie (r I'e: +financ) ie (r I'e: + arr) ie (r I'e: + hotel) ie (r I'e: + prem) ie (r I'e: + hyg) ie (n I'e: + ital) ie (n I'e: + d) ienst i:nst + r) ien (@ IEn + &) ien (_ =I@n + &b) ien (_ =i:@n + g) ien (_ 'i:@n + m) ien (_ 'i:@n + ph) ien (_ 'i:@n + &n) ien (_ I@n + p) ien (_ 'i:@n + &r) ien (_ =i:@n + ser) ien (_ 'i:@n + tter) ien (_ 'i:@n + eor) ien (_ 'i:@n + gor) ien (_ 'i:@n + etr) ien (_ 'i:@n + dustr) ien (_ 'i:@n + s) ien (_ 'i:@n + t) ien (_ 'i:@n + &) iens (_ =I;@ns + ient (_ I'Ent + &) ienz (_ I'Ents + sch) ie (n i: + @) ie (reX 'i: + ierungs 'i:rUNs + ierung 'i:rUN +bakter) ie =I@ + famil) ie =I@ + fer) ie (n =I@ + fol) ie (_ =I@ +formal) ie =I@ + stud) ie (_ =I@ + in) ie (_ I@ .group j - _) j (_ jOt - j j + _) j (_ jOt + j j .group k - _) k (_ kA: - k k - k) k + _) k (_ kA: + k k + k) k // @) keit (_S4 kaIt // @) keiten (_S6 kaIt@n - ko (e@ ko: - kolleg k%Ole:g - _) komme (C@ k%OmE - _) ko (mp k%O - _) ko (mpost kO - _) ko (n@ k%O - _) ko (nter kO + ko (e@ ko: + kolleg k%Ole:g + _) komme (C@ k%OmE + _) ko (mp k%O + _) ko (mpost kO + _) ko (n@ k%O + _) ko (nter kO .group l - _) l (_ El - l l - l) l + _) l (_ El + l l + l) l - lady _^_EN - _) land (C@P4 l'ant - _) landes (@P6 l'and@s - _) lang (C@P4 l'aN - _) lang (t@ l'aN - langsam l'aNzA:m - _) leb (C le:p - _) leb (C@@P3 'le:p - _) leben (dig le:b'En - _) lehr (CP4 l'e:* - _) leit (@P4 l'aIt - _) lern (@@P4 l'E*n - _) lexi (@ lEksi: - &) lich (_S4 lIC - &) liche (_S5 lIC@ - &) lichem (_S6 lIC@m - &) lichen (_S6 lIC@n - &) licher (_S6 lIC3 - &) liches (_S6 lIC@s - &) lichere (_S7 lIC@*@ - &) licherem (_S8 lIC@*@m - &) licheren (_S8 lIC@*@n - &) licherer (_S8 lIC@*@3 - &) licheres (_S8 lIC@*@s - &) lichste (_S7 lICst@ - &) lichstem (_S8 lICst@m - &) lichsten (_S8 lICst@n - &) lichster (_S8 lICst@r - &) lichstes (_S8 lICst@s - &) lichkeit (_S8 lICk%aIt - &) lichung (_S7 lIC%UN - @) lo (gisch l'o: + lady _^_EN + _) land (C@P4 l'ant + _) landes (@P6 l'and@s + _) lang (C@P4 l'aN + _) lang (t@ l'aN + langsam l'aNzA:m + _) leb (C le:p + _) leb (C@@P3 'le:p + _) leben (dig le:b'En + _) lehr (CP4 l'e:r + _) leit (@P4 l'aIt + _) lern (@@P4 l'Ern + _) lexi (@ lEksi: + &) lich (_S4 lIC + &) liche (_S5 lIC@ + &) lichem (_S6 lIC@m + &) lichen (_S6 lIC@n + &) licher (_S6 lIC3 + &) liches (_S6 lIC@s + &) lichere (_S7 lIC@r@ + &) licherem (_S8 lIC@r@m + &) licheren (_S8 lIC@r@n + &) licherer (_S8 lIC@r@3 + &) licheres (_S8 lIC@r@s + &) lichste (_S7 lICst@ + &) lichstem (_S8 lICst@m + &) lichsten (_S8 lICst@n + &) lichster (_S8 lICst@r + &) lichstes (_S8 lICst@s + &) lichkeit (_S8 lICkaIt + &) lichung (_S7 lIC%UN + @) lo (gisch l'o: + _) luft (CP4 l'Uft .group m - _) m (_ Em - m m - m) m + _) m (_ Em + m m + m) m - marine mA:*'i:n@ - _) meß (@P3 m'Es - _) met (all m%e:t - _) meth m%e:t - meter m'e:t3 - _) metro (@P5 m,e:t@-*o: - _) micro _^_EN - _) miet (C@P4 m'i:t - _) mikro (@P5 m,i:k@-*o: - _) mit (P3 m'It - mitt mIt - mitt (eil mItt - _) mo (rb m%O - _) mono (@ m,o:no: - _) motor m%o:to:* - _) ms _^_EN - musik m%u:zi:k + marine mA:r'i:n@ + _) meß (@P3 m'Es + _) met (all m%e:t + _) meth m%e:t + meter m'e:t3 + _) metro (@P5 m,e:tro: + _) micro _^_EN + _) miet (C@P4 m'i:t + _) mikro (@P5 m,i:kro: + _) mit (P3 m'It + mitt mIt + mitt (eil mItt + _) mo (rb m%O + _) mono (@ m,o:no: + _) motor m%o:to:r + _) ms _^_EN + musik m%u:zi:k .group n - _) n (_ En - n n - n) n - ng N + _) n (_ En + n n + n) n + ng N // ng (A Ng // ng (l Ng - o) ng (e ng - o) ng (A Ng - u) ng (i Ng - ng (r Ng - nk Nk - nk (A nk - fu) nk Nk + o) ng (e ng + o) ng (A Ng + u) ng (i Ng + ng (r Ng + nk Nk + nk (A nk + fu) nk Nk - nce (_ _^_EN - _) ne (b ne: - nebeneina (nd n,e:b@n_|aIn'a - _) ne (g ne: - neglig ne:gli:Z - neglige ne:gli:Z - &) ness _^_EN - news _^_EN - nieder ni:d3 + _) natur (C@P5 nA:t'u:r + _) na (tür n%A: + nce (_ _^_EN + _) ne (b ne: + nebeneina (nd n,e:b@n_|aIn'a + _) neben (@P5 n'e:b@n + _) ne (g ne: + neglig ne:gli:Z + neglige ne:gli:Z + &) ness _^_EN + news _^_EN + nieder ni:d3 .group o - _) o (_ o: - o o: - oh (+ o: - oo o: - oe Y: - ou u: + _) o (_ o: + o o: + oh (+ o: + oo o: + oe Y: + ou u: - o (C% O - o (CC O - o (sch O - o (x O - &CC) o (_ =o: - o (Co_ 'o: - o (lo_ o: + o (C% O + o (CC O + o (sch O + o (x O + &CC) o (_ =o: + o (Co_ 'o: + o (lo_ o: - ob (t_ o:p - og (t_ o:k + ob (t_ o:p + og (t_ o:k - _) ober (@P4 _|,o:b3 - _) ober (eX o:b@* - _) ober (ste o:b3 - _) ob (jek %Op - _) obst (reP4 'o:pst - oe (_ o:@ - @) oen (_S1 n - _n) o (e o: - @) o (g_ 'o: - t) ogen (_ o:g'e:n - @) o (gin_ 'o: - o (l_ 'o: - o (lsam o: - o (m_ 'o: - @A) o (n_ 'o: - @) oo (_ u: - r) oo (m u: - z) oo (m u: - &t) or (_ =o:* - &) oren (_ 'o:*@n - oso (_ 'o:zo: - st) o (ss o: + _) ober (@P4 _|,o:b3 + _) ober (eX o:b@r + _) ober (ste o:b3 + _) ob (jek %Op + _) obst (reP4 'o:pst + oe (_ o:@ + @) oen (_S1 n + _n) o (e o: + @) o (g_ 'o: + t) ogen (_ o:g'e:n + @) o (gin_ 'o: + o (l_ 'o: + o (lsam o: + o (m_ 'o: + @A) o (n_ 'o: + @) oo (_ u: + r) oo (m u: + z) oo (m u: + &t) or (_ =o:r + &) oren (_ 'o:r@n + oso (_ 'o:zo: + st) o (ss o: + oy (K OY .group p - _) p (_ pe: - p p - p) p - pf pF - ph f + _) p (_ pe: + p p + p) p + pf pF + ph f - pake (t p%ake: - _) para (@ p,a*a - passagie pasaZ'i: - _) peri p,e:*i: - _) perio p,e:*Io: - _) periphe p,e:*i:fe: - _) personen (@P8 pE*s'o:n@n - philie f'i:li: - _) photo f,o:to: - _) pro (@ %p@-*o: + pake (t p%ake: + _) para (@ p,ara + passagie pasaZ'i: + _) peri p,e:ri: + _) perio p,e:rIo: + _) periphe p,e:ri:fe: + _) personen (@P8 pErs'o:n@n + philie f'i:li: + _) photo f,o:to: + _) pro (@ %pro: - po (em p%o: - po (et p%o: - poesie po:e:z'i: - _) poly (@P4 p,o:ly: - partei p%a*taI - _) perfe (k p%E*fE - _) polik p'o:li:k - _) po (lit p%o: - pool _^_EN - power paU@* - _) preß (@P4 p@-*'Es - _) prinzipien (@P9 p@-*Ints'i:pI@ - _) privat (@P6 p@-*i:v'A:t - problem p@-*%o:ble:m - _) psycho (@P6 ps,y:Co: - _) psycho (ti psy:C'o: - _) pu (e p%u: + po (em p%o: + po (et p%o: + poesie po:e:z'i: + _) poly (@P4 p,o:ly: + partei p%artaI + _) perfe (k p%ErfE + _) polik p'o:li:k + _) po (lit p%o: + pool _^_EN + power paU@r + _) preß (@P4 pr'Es + _) prinzipien (@P9 prInts'i:pI@ + _) privat (@P6 pri:v'A:t + problem pr%o:ble:m + _) psycho (@P6 ps,y:Co: + _) psycho (ti psy:C'o: + _) pu (e p%u: .group q - _) q (_ ku: - q k - qu kv - @) que (_ =k + _) q (_ ku: + q k + qu kv + @) que (_ =k .group r - _) r (_ E* - r * - r (r - C) r @-* - _) r @-* - _) rh @-* + _) r (_ Er + r r + r (r + b) r @-* + _) r r + _) rh r - rangier @-*A:NZ'i:* - _) re (d @-*e: - ressourc @-*Es'U*s + rangier rA:NZ'i:r + _) re (d re: + ressourc rEs'Urs .group s - _) s (_ Es - s s - s (A z - s (_NS1 s - s (_ z // suffix has been removed - A) s (_N s - A) s (_ z - ss s - sst (@ sSt + _) s (_ Es + s s + s (A z + s (_NS1 s + s (_ z // suffix has been removed + A) s (_N s + A) s (_ z + ss s + sst (@ sSt - sch S - _) sh S - sh (K S - sou (nd saU - p) s (a s - p) s (i s - t) s (i s - k) s (i s - _) sp Sp - _be) sp Sp - _ge) sp Sp - _ver) sp Sp - sp (eich Sp - sp (err Sp - sph sf - sp (r Sp - &C) st (_S2 st - &C) ste (_S3 st@ - &C) stem (_S4 st@m - &C) sten (_S4 st@n - &C) ster (_S4 st3 - &C) stes (_S4 st@s + sch S + _) sh S + sh (K S + sou (nd saU + p) s (a s + p) s (i s + t) s (i s + k) s (i s + _) sp Sp + _be) sp Sp + _ge) sp Sp + _ver) sp Sp + sp (eich Sp + sp (err Sp + sph sf + sp (iel Sp + sp (r Sp + &C) st (_S2 st + &C) ste (_S3 st@ + &C) stem (_S4 st@m + &C) sten (_S4 st@n + &C) ster (_S4 st3 + &C) stes (_S4 st@s - _) st St - _be) st St - _ge) st St - _ver) st St - ste (ll StE - a) ste (ll stE + _) st St + _be) st St + _ge) st St + _ver) st St + ste (ll StE + a) ste (ll stE - _) safe _^_EN - &) schaft (_S6 Saft + _) safe _^_EN + &) schaft (_S6 Saft - ä) schen sC@n // but not wäschen - wä) schen S@n - fe) schen sC@n - ie) schen sC@n - h) schen sC@n - ö) schen sC@n // but not löschen - lö) schen S@n - rö) schen S@n - äu) schen sC@n // but not täuschen - täu) schen S@n + ä) schen sC@n // but not wäschen + wä) schen S@n + fe) schen sC@n + ie) schen sC@n + h) schen sC@n + ö) schen sC@n // but not löschen + lö) schen S@n + rö) schen S@n + äu) schen sC@n // but not täuschen + täu) schen S@n - schein (lich S'aIn - _) schul (@P5 S'u:l - _) schul (d S'Ul + schein (lich S'aIn + _) schul (@P5 S'u:l + _) schul (d S'Ul - schwer Sve:* - _) sechs (P5 z'Eks - _) selbst (@@P6 z'Elpst - service (_S7 z%Ervi:s - shop _^_EN - _) sky _^_EN - soldat z%OldA:t - so (rt_ s_|O + schwer Sve:r + _) sechs (P5 z'Eks + _) selbst (@@P6 z'Elpst + service (_S7 z%Ervi:s + shop _^_EN + _) sky _^_EN + soldat z%OldA:t + so (rt_ s_|O - sound _^_EN - speed _^_EN - stau) ss s - @) straße (_S6 st*,A:s@ - _) street _^_EN - style _^_EN - synthesi _^_EN + sound _^_EN + speed _^_EN + stau) ss s + @) straße (_S6 str,A:s@ + _) street _^_EN + style _^_EN + synthesi _^_EN .group t - _) t (_ te: - t t - t) t - th (K t - K) th t - tz ts + _) t (_ te: + t t + t) t + th (K t + K) th t + tz ts - &t) te (_ @ + &t) te (_ @ // &t) ten (_ @n - ier) t (_S1 t - ier) te (_S2 t@ - ier) tem (_S3 t@m - ier) ten (_S3 t@n - ier) ter (_S3 t3 - ier) tes (_S3 t@s - ier) tet (_S3 t@t - ier) tere (_S4 t@*@ - ier) terem (_S5 t@*@m - ier) teren (_S5 t@*@n - ier) terer (_S5 t@*3 - ier) teres (_S5 t@*@s - ier) tst (_S3 tst - ier) tste (_S4 tst@ - ier) tstem (_S5 tst@m - ier) tsten (_S5 tst@n - ier) tster (_S5 tst3 - ier) tstes (_S5 tst@s - ier) test (_S4 t@st - ier) teste (_S5 t@st@ - ier) testem (_S6 t@st@m - ier) testen (_S6 t@st@n - ier) tester (_S6 t@st3 - ier) testes (_S6 t@st@s + ier) t (_S1 t + ier) te (_S2 t@ + ier) tem (_S3 t@m + ier) ten (_S3 t@n + ier) ter (_S3 t3 + ier) tes (_S3 t@s + ier) tet (_S3 t@t + ier) tere (_S4 t@r@ + ier) terem (_S5 t@r@m + ier) teren (_S5 t@r@n + ier) terer (_S5 t@r3 + ier) teres (_S5 t@r@s + ier) tst (_S3 tst + ier) tste (_S4 tst@ + ier) tstem (_S5 tst@m + ier) tsten (_S5 tst@n + ier) tster (_S5 tst3 + ier) tstes (_S5 tst@s + ier) test (_S4 t@st + ier) teste (_S5 t@st@ + ier) testem (_S6 t@st@m + ier) testen (_S6 t@st@n + ier) tester (_S6 t@st3 + ier) testes (_S6 t@st@s - _) talent tal'Ent - tch tS - t (chen_ t - _) teen _^_EN - _) tele (@ t,e:le: - _) thermo tE*mo: - tuerei (_ tu:@*'aI - thrill _^_EN - _pa) th t - the (era te: - _) tief (@P4 t'i:f - @) tient (_ tsI'Ent - @) tion tsI,o:n - @) tion (_ tsI'o:n - _) trail _^_EN - _) tranqu _^_EN - traver t@-*%avE* - _) tw _^_EN + _) talent tal'Ent + tch tS + _) tsch tS + t (chen_ t + _) teen _^_EN + _) tele (@ t,e:le: + _) thermo tErmo: + tuerei (_ tu:@r'aI + thrill _^_EN + _pa) th t + the (era te: + _) tief (@P4 t'i:f + @) tient (_ tsI'Ent + @) tion tsI,o:n + @) tion (_ tsI'o:n + _) trail _^_EN + _) tranqu _^_EN + traver tr%avEr + _) tw _^_EN .group u - _) u (_ u: - u u: - uh (+ u: - uell u:'El - u (e u: - r) ue (_ u:@ - t) ue (_ u:@ - ue (_ 'y: + _) u (_ u: + u u: + uh (+ u: + uell u:'El + u (e u: + r) ue (_ u:@ + t) ue (_ u:@ + ue (_ 'y: - u (C% U - u (CC U - u (sch U - u (x U - @) u (ng U + u (C% U + u (CC U + u (sch U + u (x U + @) u (ng U - ub (t_ u:p - ug (t_ u:k + ub (t_ u:p + ug (t_ u:k - _) um (@P2 Um - _) umbe (@P4 'Umb@ - _) umge (@P4 'Umg@ - _) um (orgP2 'Um - _) um (stAP2 'Um - @) u (m_ U - rt) u (m_ u: - _) un Un - _) un (@P2 _|'Un - _) unab (@P4 _|'Un_|ap - _) unan (@P4 _|'Un_|an - _) unauf (@P5 _|'Un_|aUf - _) unaus (@P5 _|'Un_|aUs - _) unbe (@P4 _|'Unb@ - _) unein (@P5 _|'Un_|aIn - _) unge (@P4 _|'Ung@ - _) unver (@P5 _|'UnfE* - _) un (i u:n - _) un (in@P2 _|'Un - _) unum (@P4 _|'Un_|Um - _) under _^_EN - _) unter (@P5 _|,Unt3 - _) unter (eX Unt@* + _) um (@P2 Um + _) umbe (@P4 'Umb@ + _) umge (@P4 'Umg@ + _) umge (b Umg'e: + _) um (orgP2 'Um + _) um (stAP2 'Um + @) u (m_ U + rt) u (m_ u: + _) un Un + _) un (@P2 _|'Un + _) unab (@P4 _|,Un_|ap + _) unan (@P4 _|'Un_|an + _) unauf (@P5 _|'Un_|aUf + _) unaus (@P5 _|'Un_|aUs + _) unbe (@P4 _|'Unb@ + _) unein (@P5 _|'Un_|aIn + _) unge (@P4 _|'Ung@ + _) unver (@P5 _|'UnfEr + _) un (i u:n + _) un (in@P2 _|'Un + _) unum (@P4 _|'Un_|Um + _) under _^_EN + _) unter (@P5 _|,Unt3 + _) unter (eX Unt@r - rep) u (bl u: - s) u (ch u: - &) uela (_ u:,e:la - @) uerisch (_ 'u:*IS - _) ultra (@P5 ,Ultra - um (_ Um - t) um (_ u:m - &) ungs (A %UNs_| // upto "ungs" is a prefix? - _) u (rk u: - _) u (rl u: - _) u (rv u: - us (_ Us - _d) u (sch u: - _) user _^_EN - Al) u (t_ u: + rep) u (bl u: + s) u (ch u: + &) uela (_ u:,e:la + @) uerisch (_ 'u:rIS + _) ultra (@P5 ,Ultra + um (_ Um + t) um (_ u:m + &) ungs (A %UNs_| // upto "ungs" is a prefix? + u (pt_ 'U + _) u (rk u: + _) u (rl u: + _) u (rv u: + us (_ Us + _d) u (sch u: + _) user _^_EN + Al) u (t_ u: - _) ueber (@P5 _|,y:b3 + _) ueber (@P5 _|,y:b3 .group v - _) v (_ faU - v v - v) v - v (_N f + _) v (_ faU + v v + v) v + v (_N f - _) vie fi: - _) vi (CC vI - _) vi vi: + _) vie fi: + _) vi (CC vI + _) vi vi: - _) v v - vater fA:t3 - väter fE:t3 - _) v (ät f - _) v (ie f - _) v (iet v - _) v (iz f - v (og f - v (oll f - v (olk f - v (ölC f - _) v (on f + _) v v + vater fA:t3 + väter fE:t3 + _) v (ät f + _) v (ie f + _) v (iet v + _) v (iz f + v (og f + v (oll f + v (olk f + v (ölC f + _) v (on f - _) vehe ve:he: - _) ver (@P3 f%Er - _) ve (rbal vE - _) ve (rbos v%E - _) ve (rsat vE - _) ve (rsie vE - _) ve (rsif vE - _) ve (rsion vE - _) ve (rteb vE - _) ve (rtik vE - @) versich fE*z,IC - @) vergess fE*g,Es - @) verfahren (_S9 fErf,A:@-*@n - _) viel (@P4 f'i:l - _) vier (g@P4 f'i:* - _) viet vIEt - _) voll (C@P4 f'Ol - _) voll (br f%Ol - _) voll (end f%Ol_| - _) voll (ko f%Ol - _) voll (stre f%Ol - _) voll (z f%Ol - _) vorder fO*d@* - -) vorha (nd fo:*h'a - _) vor (ne 'fo:* - _) vor (n fO* + _) vehe ve:he: + _) ver (@P3 f%Er + _) ve (rbal vE + _) ve (rbos v%E + _) ve (rsat vE + _) ve (rsie vE + _) ve (rsif vE + _) ve (rsion vE + _) ve (rteb vE + _) ve (rtik vE + @) versich fErz,IC + @) vergess fErg,Es + @) verfahren (_S9 fErf,A:r@n + _) viel (@P4 f'i:l + _) vier (g@P4 f'i:r + _) viet vIEt + _) voll (C@P4 f'Ol + _) voll (br f%Ol + _) voll (end f%Ol_| + _) voll (ko f%Ol + _) voll (stre f%Ol + _) voll (z f%Ol + _) vorder fOrd@r + -) vorha (nd fo:rh'a + _) vor (ne 'fo:r + _) vor (n fOr - _) vor (@P3 'fo:* - _) voraus (@P6 fo:*'aUs - _) vorbei (@P6 fo:*'baI - _) vorher (@P6 fo:*h'e:* - _) vorüber (@P7 fo:*'yb3 + _) vor (@P3 'fo:r + _) voraus (@P6 fo:r'aUs + _) vorbei (@P6 fo:r'baI + _) vorher (@P6 fo:rh'e:r + _) vorüber (@P7 fo:r'yb3 .group w - _) w (_ ve: - w v + _) w (_ ve: + w v + + @) wert (_ vErt + _) wh _^_EN + &) ware (_ _^_EN + _) wasch (@P5 v'aS + _) wasser (@P6 v'as@r + _) weg (C@P3 v'e:k + _) weit (C@P4 v'aIt + _) weiter (@P6 v'aIt@r + _) weither vaIthe:r + _) wieder (@P6 vi:d3 + _) wo (hin v%o: + _) wohl (@P4 v'o:l + work _^_EN - @) wert (_ vE*t - _) wh _^_EN - &) ware (_ _^_EN - _) wasch (@P5 v'aS - _) wasser (@P6 v'as@* - _) weg (C@P3 v'e:k - _) weit (C@P4 v'aIt - _) weiter (@P6 v'aIt@* - _) weither vaIthe:* - _) wieder (@P6 vi:d3 - _) wo (hin v%o: - _) wohl (@P4 v'o:l - work _^_EN - .group x - _) x (_ Iks - x ks + _) x (_ Iks + x ks .group y - _) y (_ ypsIlOn + _) y (_ ypsIlOn - y y: - y (CC y - y (x y - _) y (A j - A) y (A j - @) y (_ I - t) y (_ _^_EN + y y: + y (CC y + y (x y + _) y (A j + A) y (A j + @) y (_ I + t) y (_ _^_EN .group z - _) z (_ tsEt - z ts - z) z + _) z (_ tsEt + z ts + z) z - _) zentral (@P7 tsEnt@-*'A:l - _) zentral (i tsEnt@-*al - _) zer (@P3 tsE* - _) zere (b tse:*e: - _) zere (m tse:*e: - ziell tsj'El - _) zie (ge@P3 ts'aI - _) zeit (@P4 ts'aIt - _) ziel (@P4 ts'i:l - _) zier (@P4 ts'i:* - _) zigaretten (@P10 tsi:ga*'Et@n - _) zigeu tsi:g'OY - _) zu (C@P2 ts%u: - _) zu (eP2 ts%u: - _) zu (g@ tsu: - _) zu (gu@P2 ts%u: - _) zu (nC tsU - _) zurück (@P6 tsu:*'yk - _) zyklo (@P5 ,tsy:klo: - zylin ts%i:lIn + _) zentral (@P7 tsEntr'A:l + _) zentral (i tsEntral + _) zer (@P3 tsEr + _) zere (b tse:re: + _) zere (m tse:re: + ziell tsj'El + _) zie (ge@P3 ts'aI + _) zeit (@P4 ts'aIt + _) ziel (@P4 ts'i:l + _) zier (@P4 ts'i:r + _) zigaretten (@P10 tsi:gar'Et@n + _) zigeu tsi:g'OY + _) zu (C@P2 ts%u: + _) zu (eP2 ts%u: + _) zu (g@ tsu: + _) zu (gu@P2 ts%u: + _) zu (nC tsU + _) zurück (@P6 tsu:r'yk + _) zusammen (@P8 tsu:z'am@n + _) zyklo (@P5 ,tsy:klo: + zylin ts%i:lIn .group ä - ä E: - äh (+ e: - äu OY + ä E: + äh (+ e: + äu OY - ä (C% E - ä (CC E - ä (sch E + ä (C% E + ä (CC E + ä (sch E - äb (t_ E:p - äg (t_ E:k - t) ät (_ 'E:t - ä (um_N 'E: + äb (t_ E:p + äg (t_ E:k + t) ät (_ 'E:t + ä (um_N 'E: .group ö - ö Y: - öh (+ Y: + ö Y: + öh (+ Y: - ö (_ 'Y: - ö (C% W - ö (CC W - ö (sch W + ö (_ 'Y: + ö (C% W + ö (CC W + ö (sch W .group ü - ü y: - üh (+ y: + ü y: + üh (+ y: - ü (C% y - ü (CC y - ü (sch y - ü (x y + ü (C% y + ü (CC y + ü (sch y + ü (x y - üb (t_ y:p - üg (t_ y:k + üb (t_ y:p + üg (t_ y:k - _) über (@P4 _|,y:b3 - _) über (be@P4 _!'y:b3 - _) über (gangs y:b3 + _) über (@P4 _|,y:b3 + _) über (be@P4 _!'y:b3 + _) über (gangs y:b3 .group ß - _) ß (_ EstsEt - ß s + _) ß (_ EstsEt + ß s .group - é e: - ée 'e: - é (_ 'e: - æ E - ø W - ç s - č tS - š S - ž Z + é e: + ée 'e: + é (_ 'e: + æ E + ø W + ç s + č tS + š S + ž Z - , (D kOma - $ dOl'A: + , (D kOma + $ dOl'A: + __) - (_D mi:nUs + D_) - (_D daS + _) - (_D _ diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index a752f060..39abe29f 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -5,12 +5,12 @@ Dictionary af_dict & &: 3: @ @- @L @U a A: aI AI aU A~ E e: e@ -eI e~ I i iu O O: o@ +eI e~ i I iu O O: o@ OI oI o~ u uI W y Y@ Yy - : ; ? b c d dZ -f g h j k l L m +f g h j k l l# m n N n^ p r s S t T tS v w x x2 z Z @@ -48,7 +48,7 @@ O o: OI OY U u: uY V Y y: Yu : b C d D dZ f g -h j k l L m n N +h j k l l# m n N p r s S t T v w x z @@ -59,10 +59,10 @@ Dictionary da_dict e E i o O u V W 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 +* - : ? b B d D +dZ f g h j J k l +l/2 l/3 m n N p r R +s S t T tS v w Dictionary hu_dict @@ -78,10 +78,10 @@ t tS ts v z Z Dictionary de_dict -3 @ @- a A A: aI aU -E E2 E: e: EI I i2 i: -O o: OY U u: W y y: -Y: +3 3: @ @- a A A: aI +aU E E2 E: e: EI I i2 +i: n- O o: OY U u: W +y y: Y: * : ; b C d D dZ f g g# h j k l m @@ -103,14 +103,14 @@ T ts v x z z; Dictionary en_dict 0 3 3: @ @- @2 @5 @L -a a2 A: A@ aa aI aI@ aU -aU@ A~ E e: e@ eI I i +a a# A: A@ aa aI aI@ aU +aU@ A~ E e: e@ eI i I I2 i: i@ i@3 IR O O: o: O@ o@ OI oU O~ U u: U@ V VR : ; ? b C d D dZ -f g g- h j k l L +f g g- h j k l l# m n N n^ p Q r r- s S t T t2 tS v w x z Z @@ -153,14 +153,13 @@ s2 t v w Z Dictionary fr_dict @ @- 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 +E~ i I o O o2 o3 O~ +u u: w W W~ y Y -: b d dZ f g h j -k l m n N n2 n^ p -p2 r r2 s S t t2 t3 -tS v z Z z2 z3 +- : b d dZ f g h +j k l m n N n2 n^ +p p2 r r2 s S t t2 +t3 tS v z Z z2 z3 Dictionary grc_dict @@ -177,8 +176,8 @@ T v x z Dictionary hbs_dict & @ @2 a A a: aI aU -E e e: i I i: l- O -o o: oU r* r- u U u: +e E e: i I i: l- o +O o: oU r* r- u U u: * ; b d dZ dz dZ; f g h j k l l^ m n @@ -204,7 +203,7 @@ th. v w x z Dictionary ta_dict a a: aI aU e E e: i -I i: o o: U u u: U: +I i: o o: u U u: U: V V# : ; b C d d. dZ f @@ -264,11 +263,11 @@ ts v w w2 z Dictionary jbo_dict @ a aI aU e eI i l- -o oI r- u +n- o oI r- u -- b d dZ f g h j -k l m n N p R s -S t tS v w x z Z +b d dZ f g h j k +l m n N p R s S +t tS v w x z Z Dictionary ku_dict @@ -307,8 +306,8 @@ tS ts v z Z Dictionary mk_dict -& @ @- @2 a A a: E -e e: i I i: l- o o: +& @ @- @2 a A a: e +E e: i I i: l- o o: oU r- u u: * b d dZ dz dZ; f g @@ -328,14 +327,14 @@ t tS v w x Dictionary nl_dict -8 @ @- A a: E e: EI -eU i I O O: o: u VU -Wy y Y: yU +8 @ @- A a: A~ E e: +EI eU i I O O: o: u +VU Wy y Y: yU -* : ; b C d f g -h j k l m n N n^ -p Q r s S t tS v -v2 w x z +* : ; b d f g h +j k l m n N n^ p +Q r s S t tS v v# +w x z Dictionary no_dict @@ -431,7 +430,7 @@ Z Dictionary sq_dict -@ @/ a A a/ aI E e +@ @/ a A a/ aI e E eI i I I# O OI u V y yE @@ -444,9 +443,9 @@ w z Z Dictionary sv_dict -8 @ a a2 A: E E- e: -E: I i: O o: U u- u: -W y y: Y: +8 @ a A: E E- e: E: +I i: O o: U u- u: W +y y: Y: : ; b d f g h j k l m n N p R s @@ -466,7 +465,7 @@ v w x z Dictionary sl_dict -& @ a E e i O o +& @ a e E i o O u y : b d dZ dz f g h @@ -477,20 +476,20 @@ v w x z Z Dictionary tr_dict -a e E i I o O u -U u# W y Y +@ a e E i I o O +u U W y Y * : b c d dZ f g -h j J k l m n p -Q r R s S t tS v -w z Z +G h j J k l m n +p Q r R s S t tS +v w z Z Dictionary vi_dict @ @: @:I @:U @I @U a a: -a:I a:U aI aU E e eU EU -i i@ iU O o OI oI u +a:I a:U aI aU e E eU EU +i i@ iU o O OI oI u u@ uI y y@ yI b c d D f g h j @@ -506,10 +505,11 @@ i i. i[ iA iE io iou N- o o- ong ou u u@ ua uai uei uo y y& y@ yE yi yu -; f h j k kh l l. -l^ m n N p ph r s +; C f h j k kh l +l# m n N p ph Q q +Q" Q^ r R r" R2 R3 s s. S; t th ts ts. ts. tS; -tS; tsh v w x z. +tS; tsh v w x X z. Dictionary zhy_dict @@ -565,7 +565,7 @@ Dictionary pa_dict @ a a~ e E e~ E~ i I i~ I~ o O O~ o~ r- -U u U~ u~ V V~ +u U U~ u~ V V~ : ; b bh c ch d d. dh dh. f g gh h H j @@ -615,3 +615,14 @@ Dictionary bg_dict g j k l L l^ m n n^ p r s S s; t t; tS ts v x z Z z; + + +Dictionary nso_dict + +@ a e i m- n- N- o +u + +- : b d D dZ f g +h j J k l l# m n +N n^ p Q r R R3 s +S t T tS v w x z diff --git a/dictsource/en_list b/dictsource/en_list index 3d8107d9..5607dfa3 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -47,6 +47,11 @@ y waI z zEd ?3 z zi: +// singe letter words +a $nounf +a eI $atend + + // sounds are specified for these accented characters // use the $accent attribute here to force the use of the // accent table when speaking the name of the character. @@ -66,14 +71,14 @@ z zEd ñ $accent // accent names -_lig l,Iga2tS@ -_acu a2kj'u:t -_ac2 dVb@la2kj'u:t +_lig l,Iga#tS@ +_acu a#kj'u:t +_ac2 dVb@la#kj'u:t _brv br'i:v -_ced s@d'Ila2 +_ced s@d'Ila# _cir s'3:kVmfl,Eks _dia 'UmlaUt -_dot wIDd'0ta2bVv +_dot wIDd'0ta#bVv _grv gr'A:v _hac h'atS,Ek _mcn m'akr,0n @@ -109,8 +114,8 @@ _& amp@sand _' kwoUt _[ lEftbrakI2t _] raItbrakI2t -_( lEftpa2rEn -_) raItpa2rEn +_( lEftpa#rEn +_) raItpa#rEn _* ast@rIsk _, k0m@ _- h,aIf@n @@ -133,13 +138,13 @@ _} raItbreIs ~ tIld@ $max3 _¡ %Inv,3:tI2dEkskl@m'eIS@n _¦ broUk@nb'A@ -_¨ daIa2r'i:sIs +_¨ daIa#r'i:sIs _ª fEmI2nIn'O@dI2n@L _« lEft'gIl@mEt _­ makr0n _² su:p@skrIptt'u: _³ su:p@skrIptT'ri: -_´ a2kju:taksEnt +_´ a#kju:taksEnt _· mId@Ld0t _¸ sEd'Il@ _¹ su:p@skrIptw'0n @@ -173,7 +178,7 @@ _‰ p3:m'i:l _′ praIm _″ dVb@LpraIm _‴ trIp@LpraIm -_‼ Ekskla2m'eIS@nz +_‼ Ekskla#m'eIS@nz _₠ jU@roU + plVs $max3 @@ -202,8 +207,8 @@ _₠ jU@roU − maIn@s ± plVsO@m'aIn@s µ maIkroU -¼ a2kwO@t3 -½ a2hA:f +¼ a#kwO@t3 +½ a#hA:f ¾ Tri:kwO@t3 ⅓ w0nT'3:d ⅔ tu:T'3:dz @@ -217,7 +222,7 @@ _₠ jU@roU ∞ Inf'InI2tI2 ≠ n0t'i:kw@LtU № nju:m@roU -। dVnda2 +। dVnda# ß S,A@p'Es ə SwA: @@ -247,14 +252,14 @@ U+2cc s'Ek@ndrIstr,Es // combining diacritics U+300 grA:v_ -U+301 a2kju:t_ +U+301 a#kju:t_ U+302 s3:kVmflEks_ U+303 tIld@_ U+304 makr0n_ U+306 brEv_ U+308 daI@ri:sI2s U+30a rINg_ -U+31e a2pr'0ksIm@nt_ +U+31e a#pr'0ksIm@nt_ U+325 rINg_ U+32a dEnt@L_ U+32f n,0nsI2l'abI2k @@ -331,7 +336,7 @@ _0M1o T'aUz@ndT abc $abbrev ac $abbrev adfs $abbrev -a.k.a aka2_! +(a . k . a .) aka#_! agm $abbrev ai $abbrev api $abbrev @@ -342,6 +347,7 @@ cio $abbrev ctrl k0ntr'oUl dept dI2pA@tm@nt diy $abbrev +dow daU edt $abbrev eg fO@Egz'aamp@L $only est $abbrev @@ -360,6 +366,7 @@ LBS $abbrev ltd lImI2tI2d mc m@k $combine // combine with the following word mya $abbrev +nato neItoU ny $abbrev oem $abbrev ok $abbrev @@ -372,6 +379,7 @@ st s@nt th T thu T3: // Thursday ?5 thu TIR // Thursday +ucla $abbrev ufo $abbrev ui $abbrev uk $abbrev @@ -379,7 +387,6 @@ url $abbrev usa $abbrev usb $abbrev utc $abbrev -u.s ju:'Es VI $abbrev wwii dVb@Lju:dVb@Lju:t'u: xxx $abbrev // not roman 30 @@ -414,12 +421,12 @@ no noU $allcaps abbey abI abdomen abd@m@n -abed a2bEd -abet a2bEt -abhor a2bho@ +abed a#bEd +abet a#bEt +abhor a#bho@ abler eIbl3 ablest eIbl@st -ability a2bIl@tI +ability a#bIl@tI ablaut ablaUt aborigine ab@r'IdZ@nI abracadabra abr@k@d'abr@ @@ -430,20 +437,20 @@ absent abs'Ent $verb absentia abs'Enti:@ absinthe absInT absolutely $3 $verbf -abstemious a2bst'i:mi@s +abstemious a#bst'i:mi@s abstract abstrakt $only -abstract a2bstr'akt $verb -academe a2kad@mI +abstract a#bstr'akt $verb +academe a#kad@mI access aksEs $onlys access aksEs $verb -accouchement a2ku:SmO~ +accouchement a#ku:SmO~ acer eIs3 aces eIsI2z -acetylene a2sEt@li:n +acetylene a#sEt@li:n accurate akjUr@t -accursed a2k3:sI2d -?5 accursed a2kVRsI2d -achille a2kIli: +accursed a#k3:sI2d +?5 accursed a#kVRsI2d +achille a#kIli: aching eIkI2N achy eIkI adam ad@m @@ -452,67 +459,67 @@ add ad addict adIkt $onlys addon ad0n adher adh'i@3 -adieu a2dju: -adieus a2dju:z -adieux a2dju:z +adieu a#dju: +adieus a#dju:z +adieux a#dju:z adios aDj'o:s admirable adm@r@b@L admonition adm@n'IS@n -ado a2du: -adobe a2doUbI +ado a#du: +adobe a#doUbI adversary adv3s@rI -advert a2dv3:t $verb +advert a#dv3:t $verb advertise adv3taIz advertiser adv3taIz3 advertize adv3taIz -advertisement a2dv3:tIsm@nt +advertisement a#dv3:tIsm@nt ?3 advertisement $3 adware 'adw,e@ adze adz aegis i:dZIs aerate e@r'eIt aether i:T@ -afar a2fA@ +afar a#fA@ affirmation af3m'eIS@n affidavit afId'eIvIt -afflux a2flVks +afflux a#flVks aforemention $2 -again a2gEn -agape a2geIp +again a#gEn +agape a#geIp agar eIgA@ aged eIdZd aggro agroU -aghast a2gaast -agin a2gIn +aghast a#gaast +agin a#gIn aging eIdZI2N agist eIdZIst -agog a2g0g -agressive a2grEsIv // misspell -aground a2graUnd +agog a#g0g +agressive a#grEsIv // misspell +aground a#graUnd ague eIgju: -aha a2hA: -ahem a2h'@m -ahoy a2hOI +aha a#hA: +ahem a#h'@m +ahoy a#hOI airbus e@bVs airpower 'e@p,aU@ aisle aI@l -ajar a2dZA@ +ajar a#dZA@ ajax eIdZaks -aka aka2 +aka aka# akin $2 -alas a2l'as +alas a#l'as albeit O:lb'i:It alfalfa alf'alf@ alias eIli@s alibi al@baI alibis al@baIz alkali alk@laI -allay a2leI -allegiance a2li:dZ@ns -allele a2li:l +allay a#leI +allegiance a#li:dZ@ns +allele a#li:l alleluia alI2l'u:j@ allemande al@mand -allergic a2l3:dZIk +allergic a#l3:dZIk allhallows O:lh'aloUz allied alaId allover O:l'oUv3 @@ -527,34 +534,34 @@ altogether ,O:lt@gED3 always O:lweIz aluminium aljUm'Ini@m amaryllis am@r'IlIs -amass a2mas -ambassador a2mbas@d3 +amass a#mas +ambassador a#mbas@d3 ambidextrous $3 amen ,A:m'En $onlys -amok a2m0k +amok a#m0k amoral eIm'0r@L -amount a2maUnt +amount a#maUnt amply amplI $verbf anal eIn@L analog an@l0g analogue an@l0g -analyses a2nal@si:z +analyses a#nal@si:z analyses an@laIzI2z $verb -analysis a2nal@sIs -anenome a2nEn@mI +analysis a#nal@sIs +anenome a#nEn@mI angel eIndZ@L anecdote anIkdoUt anecdotal anIkd'oUt@L anemometer anIm'0mI2t3 -anemone a2nEn@mI -anew a2nju: -?3 anew a2nu: +anemone a#nEn@mI +anew a#nju: +?3 anew a#nu: anime anImeI anion aneI@n anniversary anIv'3:s@rI -anon a2n0n +anon a#n0n anonymous $2 -another a2nVD3 +another a#nVD3 answer aans3 ante antI antecedent antIs'i:d@nt @@ -579,45 +586,45 @@ anxiety aNz'aI@tI anxious aNS@s anymore $3 anything EnI2TIN -apache a2patSI -apostle a2p0s@L +apache a#patSI +apostle a#p0s@L apron eIpr@n -appal a2pO:l +appal a#pO:l apparatus ap@r'eIt@s -apprentice a2prEntIs -approximate a2pr0ksIm@t $only -approximate a2pr0ksImeIt $verb +apprentice a#prEntIs +approximate a#pr0ksIm@t $only +approximate a#pr0ksImeIt $verb arab ar@b arabic $1 -arable ara2b@L +arable ara#b@L arc A@k // arcing arcade $2 arch A@tS arches A@tSI2z archimedes A@kIm'i:di:z archway $1 -arena a2ri:n@ +arena a#ri:n@ argue A@gju: aries e@ri:z -arithmetic a2rITm@tIk -arise a2raIz +arithmetic a#rITm@tIk +arise a#raIz arisen @rIz@n armslength ,A@mzl'ENT -arouse a2raUz +arouse a#raUz asbestos asb'Est@s arsenal A@s@n@L arsenic A@snIk ascertain as3teIn asiatic eISI'atIk -askance a2skans +askance a#skans ass as -assess a2sEs +assess a#sEs atlas atl@s -atop a2t0p +atop a#t0p attache at'aSeI $only -attaches a2tatSI2z -attorney a2t3:nI -?5 attorney a2tVRnI +attaches a#tatSI2z +attorney a#t3:nI +?5 attorney a#tVRnI attribute atrIbju:t attribute $2 $verb au ,oU @@ -626,7 +633,7 @@ auger O:g3 aurora $2 aussie 0zI austere O:st'i@3 -authority a2T0rI2tI +authority a#T0rI2tI authoritative O:T'0rI2t@tIv autograph O:t@graf auto O:toU @@ -636,7 +643,7 @@ autopsy O:t0psI avalanche av@laanS average av@-rI2dZ aviary eIvi@rI -awry a2raI +awry a#raI axes aksI2z backend bak'End @@ -706,7 +713,7 @@ breath bri:D $verb $onlys brethren brEDr@n bridal braId@L brigade $2 -brigadier brIga2d'i@3 +brigadier brIga#d'i@3 brochure broUS3 brooch broUtS budgerigar bVdZ@rIgA@ @@ -723,11 +730,11 @@ cabaret kab@reI cach kaS // cached cachet kaSeI cacti kaktaI -cadet ka2dEt +cadet ka#dEt cadre kA:d3 caesar si:z3 cafe kafI -cajole ka2dZoUl +cajole ka#dZoUl caldera k0ld'e@r@ calix keIlIks calv kA:v // for calved, calving @@ -744,7 +751,7 @@ canoes k@nu:z canton kant0n canvas kanv@s capitol kapIt@L -caprice ka2pr'i:s +caprice ka#pr'i:s caramel kar@mEl caravan kar@van career k@r'i@3 @@ -752,7 +759,7 @@ caress k@rEs carpel kA@p@l cascade $2 cashmere kaSm'i@3 -catastrophe ka2tastr@f%I +catastrophe ka#tastr@f%I catarrh k@tA@ caterer keIt3r3 catholic kaTlIk @@ -760,7 +767,7 @@ cavalier $3 caveat kavIat caviar kavIA@ caviare kavIA@ -cavort ka2v'O@t +cavort ka#v'O@t cedar si:d3 celebre sEl'Ebr@ censure sEnS3 @@ -772,11 +779,13 @@ champagne Samp'eIn chang tSeIndZ chang tSaN $onlys chapel tSap@L -charade Sa2rA:d +charade Sa#rA:d charismatic karIsm'atIk charit tSarIt // charitable +chateau SatoU chemise SEm'i:z chic Si:k +chimera kaIm'i@r@ chimpanzee $3 chisel tSIz@L chloroplast $1 @@ -808,6 +817,7 @@ cockeye k0kaI cocksure ,k0kS'U@ coconut koUk@nVt codify koUdI2faI +coed koUEd coeur k3: cognac k0njak coincide koUIns'aId @@ -939,7 +949,6 @@ dengue dEngI denier dI2naI3 denouement deIn'u:mO~ deny dI2naI -denial dI2naI@l depot dEpoU derange dI2reIndZ descry dI2skreI @@ -998,7 +1007,7 @@ drier draI3 driest draI|@st duet dju:'Et dugout dVgaUt -dungaree dVNga2r'i: +dungaree dVNga#r'i: duvet du:veI d'ye dj@ @@ -1061,7 +1070,7 @@ estrange $2 etiquette $1 exit EgzIt // exiting exonerate Egz'0n@reIt -eureka ju:'ri:ka2 +eureka ju:'ri:ka# europa jU@r'oUp@ everything EvrI2TIN evildoers i:v@Ldu:3z @@ -1122,8 +1131,8 @@ fishnet fISnEt fiord fi:O@d fix fIks // for fixer fjord fIO@d -flagellum fla2dZEl@m -flamenco fla2mENkoU +flagellum fla#dZEl@m +flamenco fla#mENkoU flexible flEksIb@L flier flaI3 flourish flVrI2S @@ -1144,7 +1153,7 @@ fortunate fO@tS@n@t fortune fO@tSu:n foyer fOIeI freelance fri:laans -fricassee frIka2seI +fricassee frIka#seI frigate frIg@t fringer frIndZ3 // infringer fringing frIndZIN @@ -1161,9 +1170,9 @@ fuselage fju:z@lA:Z futon fu:t0n gala gA:l@ -galaxy gala2ksI +galaxy gala#ksI galileo galI2l'eIoU -galore ga2lo@ +galore ga#lo@ gases gasI2z gauche goUS gauge geIdZ @@ -1190,13 +1199,13 @@ goto goUtu: gourmet gU@meI graduate gradju:@t graduate gradju:eIt $verb -graffiti gra2fi:tI +graffiti gra#fi:tI gredient gri:di@nt // ingredient grenade gr@neId griffon grIf@n grosvenor groUv@n3 groupie gru:pI -guacamole gwA:ka2m'oUli: +guacamole gwA:ka#m'oUli: gui gu:I guinea gInI gurus gu:ru:z @@ -1236,7 +1245,7 @@ herpes h3:pi:z hideout haIdaUt hindu hIndu: hindus hIndu:z -hiya haIa2 +hiya haIa# hmmm h'@m hmpf h'@mpf holme hoUm @@ -1283,7 +1292,7 @@ impinging Imp'IndZIN imprecise ImprIs'aIs impregnable Impr'Egn@b@L inanimate In'anIm@t -inappropriate ,Ina2proUpri@t +inappropriate ,Ina#proUpri@t incense Ins'Ens $verb incoming InkVmI2N increase Inkr'i:s $verb @@ -1350,7 +1359,7 @@ jour ZU@ // french jukebox dZu:kb0ks july dZu:l'aI -kaput ka2pUt +kaput ka#pUt karate k@rA:tI kebab k@bab kefir ki:f3 @@ -1366,7 +1375,7 @@ kopje k0pI kosher koUS3 la ,la $only -laboratory la2b'0r@trI +laboratory la#b'0r@trI labor leIb3 labored leIb@d laborer leIb@r3 @@ -1414,6 +1423,7 @@ livecd l'aIvsi:d'i: livestock l'aIvst,0k lively laIvlI llama lA:m@ +locale loUk'aal loch l0x login l0gIn logon l0g'0n @@ -1426,11 +1436,12 @@ losing lu:zI2N // misspell lukewarm lu:kwO@m lullaby lVl@baI lunatic lu:n@tIk +lunchroom lVntS||ru:m lychee li:tSi: macabre m@kA:br@ -machete ma2SEtI -machismo ma2tSIzmoU +machete ma#SEtI +machismo ma#tSIzmoU mademoiselle mad@m@zEl magazine $3 magi meIdZaI @@ -1461,11 +1472,9 @@ marijuana marI2w'A:n@ marshall mA@S@L massacre mas@k3 massage masA:Z -matrices meItr@si:z mausoleum mO:s@li:@m mayhem meIhEm meant mEnt -matrix meItrIks meadow mEdoU meander mI'and3 mediaeval mEdI'i:v@L @@ -1541,7 +1550,7 @@ myrrh m3: naif naI'i:f naïve naI'i:v naked neIkI2d -nasa nasa2 +nasa nasa# nascent neIs@nt nativity $2 natural natS@r@L @@ -1566,6 +1575,7 @@ nonsense n0ns@ns nonetheless nVnD@l'Es nosedive noUzdaIv not noUt // for noted, notable, etc +nots n0ts nott n0t nothing nVTIN noway noUweI @@ -1646,21 +1656,21 @@ oxen 0ks@n padre pA:dreI paella paI'El@ pall pal // palling -papa pa2p'A: +papa pa#p'A: papal peIp@L pagan peIg@n pageant padZ@nt paltry pO:ltrI -panacea pana2s'i:@ +panacea pana#s'i:@ panache $2 pancreas pankri@s parabola p@rab@l@ paralysis p@ral@sIs parameter p@ramI2t3 parasite par@saIt -paren pa2rEn // "parenthesis" +paren pa#rEn // "parenthesis" pariah p@raI@ -parole pa2r'oUl +parole pa#r'oUl passenger pasI2ndZ3 passerby pas3b'aI passersby pas3zb'aI @@ -1722,6 +1732,7 @@ politer p@l'aIt3 politic p0l@tIk poll poUl polls poUlz +polythene $1 portend po@t'End posse p0sI postage poUstI2dZ @@ -1843,6 +1854,7 @@ record $verb redcross $2 redeye r'Ed,aI redo ri:du: +redone ri:d'Vn reference rEfr@ns referee rEf@r'i: referral rI2f3:r@L @@ -1914,7 +1926,7 @@ rouse raUz rout raUt // for routed routine $2 row roU -(row about) 'raU||,a2baUt +(row about) 'raU||,a#baUt (row over) 'raU||,oUv3 ruby ru:bI rugged rVgI2d @@ -1978,7 +1990,7 @@ series si:ri:z serenade sErI2n'eId serene s@ri:n sergeant sA@dZ@nt -sesame sEsa2mI +sesame sEsa#mI settee $2 severe sI2v'i@3 $only severely sI2v'i@3lI2 $verbf @@ -2034,7 +2046,6 @@ sooth su:D soundbite saUndbaIt souvenir su:v@n'i@3 sorbet sO@beI -soviet soUvi@t spaghetti spag'EtI spasm spas@m specific sp@sIfIk @@ -2106,7 +2117,8 @@ tatar tA:t3 tearing te@r-I2N tear ti@3 $onlys tear te@ $verb -teddybear t'EdIb,e@ +teddybear t'EdIb,e@ +telephony tEl'Ef@nI ten tEn // untenable termini t3:mInaI terrain t@reIn @@ -2144,7 +2156,7 @@ tone toUn tonight t@naIt tonne tVn tornado tO@n'eIdoU -tortilla tO@t'i:a2 +tortilla tO@t'i:a# touche tu:SeI $only toupee tu:peI transcript $1 $onlys @@ -2165,7 +2177,8 @@ trophy troUfI troubadour tru:b@do@ truely tru:lI2 $verbf truest tru:@st -tryst trIst +tryst trIst +tsk t'@sk tudor tju:d3 turntable t3:nteIb@L tulip tju:lIp @@ -2227,6 +2240,7 @@ vagina v@dZaIn@ (van der) vand3: variety v@raI@tI ?!3 vase vA:z +vaseline vas@li:n veg vEdZ vegetable vEdZI2t@b@L vehicle vi@k@L @@ -2253,7 +2267,7 @@ volcano v0lk'eInoU (wall st) w'O:lstr,i:t wane weIn -wannabe w0na2bi: +wannabe w0na#bi: warring wO@rIN wastage weIstI2dZ wast weIst // wasted @@ -2297,9 +2311,9 @@ wrongdoing r0Ndu:I2N wuss wUs wysiwyg wIzi:wIg -xmas Eksma2s +xmas Eksma#s -ya ja2 +ya ja# yer j3 ye ji: yea jeI @@ -2324,6 +2338,7 @@ Cheadle tSi:d@L Cheshire tSES3 Chiswick tSIzIk Clwyd klu:Id +Devon dEv@n Dolgellau d0lg'EClaI Dover doUv3 Dumfries dVmfr'i:s @@ -2357,8 +2372,8 @@ Welwyn wElIn Wirral wIr@L -Ababa aba2b@ -Accra akra2 +Ababa aba#b@ +Accra akra# Addis adIs Adelaide ad@leId Aegean $2 @@ -2367,15 +2382,16 @@ Aires aIrIz Alamo al@moU Albuquerque alb@k'3:kI Algiers $2 -Amman a2m'A:n +Amman a#m'A:n Andes andi:z Angeles andZ@li:z Angolan aNg'oUl@n +Ankara $1 Antarctica $2 Antigua ant'i:g@ Antilles ant'Ili:z Apennine ap@naIn -Armageddon A@ma2g'Ed@n +Armageddon A@ma#g'Ed@n Arkansas A@k@nsO: Athens aTI2nz Bahrain $2 @@ -2392,7 +2408,7 @@ Berlin b3:l'In Bhutan bu:t'an Bogota b0g@t'A: ?3 Boston bOst@n -Bucharest bu:ka2r'Est +Bucharest bu:ka#r'Est Budapest bu:d@p'Est Buenos bweIn0s Burundi bUr'UndI @@ -2407,6 +2423,7 @@ Caribbean kar@b'i@n Ceylon $2 Cheyenne SaI'an Chile tSIlI +Cincinnati sInsIn'atI Cologne k@loUn Columbus $2 Congo $1 @@ -2415,7 +2432,7 @@ Copenhagen koUp@nh'eIg@n Cruz kru:z Cyprus saIpr@s Dahomey $2 -Damascus da2mask@s +Damascus da#mask@s Danish deInIS Delhi dElI Djibouti dZIb'u:tI @@ -2424,18 +2441,20 @@ Durham dVr@m Egyptian IdZ'IpS@n Eire e@r@ Geneva dZ@ni:v@ -Harare ha2rA:rI +Gomera goUm'e@r@ +Harare ha#rA:rI Hanoi han'OI Hawaii h@w'aIi: Hawai'i h@w'aIi: Hawaiian h@w'aI@n Hebrew hi:bru: Hebrides hEbr@di:z -Honduras h0nd'jU@ra2s +Honduras h0nd'jU@ra#s Houston hju:st@n Idaho $1 Illinois Il@n'OI Indochina IndoUtS'aIn@ +Ipanema Ipa#n'i:m@ Israeli Izr'eIlI Istanbul ,Ist,anb'Ul Italia It'alI2@ // Italian(s) @@ -2443,24 +2462,24 @@ Jakarta $2 Jerusalem dZ@ru:s@l@m Johannesburg $2 Kalgoorlie kalgU@lI -Karachi ka2rA@tSI +Karachi ka#rA@tSI Kentucky $2 Kiev ki:Ev Khmer kmi@3 Korea kOr'i:@ Korean kOr'i:@n -Kuala kwA:la2 +Kuala kwA:la# Lagos leIg0s Leone li:'oUn Lesotho l@s'u:tu: Liberia laIb'i@ri:@ -Lima li:ma2 +Lima li:ma# Luxembourg lVks@mb3:g ?5 Luxembourg lVks@mbVRg Madagascar mad@g'ask3 Madras m@draas Madrid m@drId -Malawi ma2lA:wI +Malawi ma#lA:wI Maldives mO:ld'i:v Mali mA:lI Manhatten $2 @@ -2484,14 +2503,14 @@ Nauru naUru: Nebraska $2 Nepal nEp'O:l ?3 Nevada nI2vad@ -Newfoundland nju:f@ndla2nd +Newfoundland nju:f@ndla#nd Noumea nu:m'eI@ Oahu oU'A:hu: Ohio oUh'aIoU -Omaha oUma2hA: +Omaha oUma#hA: Oman oUm'an Oregon 0rI2g@n -Pacific pa2sIfIk +Pacific pa#sIfIk Palestine pal@staIn Palestinia pal@st'Ini:@ Panama pan@mA: @@ -2515,7 +2534,7 @@ Sahel sA:h'El Saigon saIg'0n Santiago santI'A:goU Savannah $2 -Savoy sa2vOI +Savoy sa#vOI Seattle si:'at@L Seychelle seIS'El Sicily sIsI2lI @@ -2524,11 +2543,12 @@ Seoul soUl Sri sr,i: // Sri Lanka(n) Sudan su:d'an Suez su:I2z -Sulawesi su:la2w'eIsI +Sulawesi su:la#w'eIsI Suriname sU@rIn'am Taipei t,aIp'eI Taiwan taI'wan -(tel aviv) t,El||a2v'i:v +(tel aviv) t,El||a#v'i:v +Tenerife tEn3r'i:f Toronto t@r0ntoU Timor ti:mo@ Tokyo toUkIoU @@ -2557,6 +2577,7 @@ Abu abu: Abraham eIbr@ham Ada eId@ $onlys Adrian eIdri@n +Aggie agI Agnes agn@s Aguilera agi:l'e@r@ Ahab eIhab @@ -2580,21 +2601,23 @@ Ares e@ri:z Astley astlI Baez baI'Ez Bambi bambi: -Barack ba2rA:k +Barack ba#rA:k Barbara bA@b@r@ Betsy bEtsI Boris b0rIs Brien braI@n Candace kandIs Carol kar@l -Calliope ka2laI@pI +Calliope ka#laI@pI Cassandra k@sandr@ Cassey keIsI Catherine kaTrI2n Cecile sEsi:l +Charlotte SA@l@t Cher Se@ Cheri Se@r'i: Cherie Se@r'i: +Cheryl SErI2l Chloe kloUI Chris krIs Cleo kli:oU @@ -2604,7 +2627,7 @@ Daphne dafnI Darryl dar@L Davie deIvI Davis deIvIs -Declan dEkla2n +Declan dEkla#n Denise d@ni:s Derek dErIk Dinah daIn@ @@ -2615,6 +2638,7 @@ Dorothy dO@r@Ti Dougall du:g@L Dylan dIl@n Edith i:dIT +Elise I2li:z Elizabeth I2lIz@b@T Emily EmI2lI Emma Em@ @@ -2657,7 +2681,7 @@ Jose hoUs'eI Juan hwA:n Judy dZu:dI Karen kar@n -Karene ka2ri:n +Karene ka#ri:n Katherine kaTrI2n Katie keItI Kieran ki@r@n @@ -2667,7 +2691,8 @@ Leanne li:'an Lenore lEn'o@ Leroy li:rOI Liam li:@m -Llewellyn L@w'ElIn +Lindsay lInzi +Llewellyn l#@w'ElIn Lois loUIs Louis lu:I Louise lu:w'i:z @@ -2675,11 +2700,11 @@ Madeline mad@lI2n Maeve meIv Mahmoud maxm'u:d Malcolm malk@m -Maria ma2ri:@ -Marie ma2ri: +Maria ma#ri:@ +Marie ma#ri: Margaret mA@gr@t Marilyn mar@lI2n -Matilda ma2tIld@ +Matilda ma#tIld@ Matthew maTju: Maurice m0rIs Mavis meIvIs @@ -2694,7 +2719,7 @@ Mohamed moUh'amI2d Mohammad moUh'amI2d Muhammad moUh'amI2d Moira mOIr@ -Natalie nata2li +Natalie nata#li Natasha $2 Nathan neIT@n Neville nEvIl @@ -2705,13 +2730,16 @@ Nigel naIdZ@L Nguyen nu:jEn Omar oUmA@ Oscar 0sk3 -Ottawa 0ta2w@ +Ottawa 0ta#w@ Pamela pam@l@ Pandora $2 Penelope p@nEl@pI Phoebe fi:bi: +Rachael reItS@L Rachel reItS@L Raul raU'u:l +Rees ri:s +Reese ri:s Reggie rEdZI Reynold rEn@Ld Rhys ri:s @@ -2719,8 +2747,8 @@ Rihanna rI'A:n@ Roderick r0drIk Rosario roUz'A@rIoU Russell rVs@L -Sabina sa2bi:n@ -Sabine sa2bi:n +Sabina sa#bi:n@ +Sabine sa#bi:n Samantha s@manT@ (Santa claus) s'ant@||kl'O:z Saoirse se@S@ @@ -2745,7 +2773,7 @@ Thomas t0m@s Tina ti:n@ Tracy treIsI Tricia trIS@ -Vanessa va2nEs@ +Vanessa va#nEs@ Wally w0lI Yvonne $2 Zoe zoUI @@ -2754,17 +2782,19 @@ Andromeda andr'0mId@ Buchanan bju:k'an@n Campbell kamb@l Carnegie kA@nEgI -Cthulhu k@-Tu:Lu: +Cohen koU@n +Cthulhu k@-Tu:l#u: Chrysler kraIzl3 Disney dIznI Dolce d0ltSeI Dvorak d@-vo@Zak Hades heIdi:z -Patel pa2tEl +Patel pa#tEl Primavera pri:m@v'e@r@ Prentice prEntIs Reid ri:d Reuter rOIt3 +Sanchez santSEz Ubuntu u:b'u:ntu: Yaesu jeIsu: zhivago ZI2vA:goU @@ -2782,7 +2812,7 @@ zhivago ZI2vA:goU ?5 (first place) f'IRst_pl,eIs (here and there) h'i@3||@nd||D'e@ (most of) moUst||@v -(such as) sVtS||_a2z $pause +(such as) sVtS||_a#z $pause (too few) t'u:||f,ju: (too many) t'u:||m,EnI @@ -2809,7 +2839,7 @@ of 0v $u $only (of a) @v@ $nounf (of an) @v@n $nounf (of which) 0vwItS $2 $pause -(of the) %0vD@2 $nounf +(of the) %%0vD@2 $nounf ?6 (of the) %VD@2 $nounf ?6 (of which) VvwItS $2 $pause @@ -2831,8 +2861,8 @@ to tu: $u $allcaps at at $nounf $only $u (at a) %at@ $nounf -(at once) a2t_w0ns -(at will) a2t_w'Il +(at once) a#t_w0ns +(at will) a#t_w'Il with wID $u (with the) w%IDD@2 $nounf @@ -2870,12 +2900,12 @@ under Vnd3 $u $strend2 $only within wIDIn $u2 without wIDaUt $u2 $strend2 above @bVv $u2 $strend2 -about a2baUt $u2 $strend2 -against a2gEnst -ahead a2hEd -among a2mVN $u2 $strend2 -amongst a2mVNst $u2 $strend2 -around a2raUnd +about a#baUt $u2 $strend2 +against a#gEnst +ahead a#hEd +among a#mVN $u2 $strend2 +amongst a#mVNst $u2 $strend2 +around a#raUnd before bIfo@ $u2 $strend2 behind bIhaInd $u2 $strend2 below bIloU $u2 $strend2 @@ -2900,7 +2930,7 @@ are %A@ $pastf $only was %w0z $pastf $only ?3 was %wVz $pastf $only ?3 wasn't wVznt $pastf $only -(was a) w%0za2 +(was a) w%0za# (was the) w%0zD@2 wast %w0st $only $pastf $only were %w3: $pastf $only @@ -2912,23 +2942,23 @@ will $u+ $only $verbf $strend2 //will $noun // but not "this/these/that/those will" (will to) wIlt@5 would $u+ $verbf $only $strend2 -(would have) w%Udh%a2v $pastf +(would have) w%Udh%a#v $pastf (would have) wUdhav $pastf $atend (would have to) wUdhavt@5 $u2 $verbf $strend2 (wouldn't have) wUdnt@v $u1 $pastf $strend2 (wouldn't have to) ,wUdntavt@5 $verbf $strend2 won't woUnt $u+ $verbf $strend2 $only wouldst $u+ -(won't have) woUnta2v $pastf $u1 +(won't have) woUnta#v $pastf $u1 (won't have) woUnthav $pastf $atend (won't have to) w'oUntavt@5 $verbf $strend2 must $verbf -(must have) mVsta2v $pastf $1 +(must have) mVsta#v $pastf $1 (must have) mVsthav $pastf $atend (must have to) m,Vstavt@5 $pastf mustn't mVsnt $verbf -(mustn't have) mVsntha2v $pastf $u1+ +(mustn't have) mVsntha#v $pastf $u1+ (mustn't have to) m'Vsnthavt@5 $pastf shall ,Sal $verbf $only $strend2 @@ -2945,13 +2975,13 @@ shan't ,SA:nt $verbf $strend2 can %kan $verbf $only $strend2 can't kA:nt $verbf $only $strend2 ?3 cannot $2 $verbf $only $strend2 -(can't have) kA:nta2v $pastf +(can't have) kA:nta#v $pastf (can't have to) ,kA:nt'avt@5 $verbf $atend ?3 can't kant $verbf $only $strend2 -?3 (can't have) kanta2v $pastf +?3 (can't have) kanta#v $pastf ?3 (can't have to) ,kant'avt@5 $verbf $atend could %kUd $verbf $strend2 $only -(could have) ,kUda2v $pastf +(could have) ,kUda#v $pastf (could have) kUdhav $pastf $atend (could have to) kUdhavt@5 $u2 $verbf $strend2 couldn't ,kUd@nt $verbf $strend2 @@ -2959,25 +2989,27 @@ couldn't ,kUd@nt $verbf $strend2 (couldn't have to) 'kUd@ntavt@5 $verbf $strend2 may meI $verbf $strend2 -(may have) meIha2v $pastf $u1+ +(may have) meIha#v $pastf $u1+ (may have to) ,meIh'avt@5 $verbf $atend might ,maIt $verbf $strend2 $only -(might have) maItha2v $pastf $u1+ +(might have) maItha#v $pastf $u1+ (might have to) ,maIth'avt@5 $verbf $atend have hav $pastf $only $u $strend2 haves havz -(have been) %hav%bIn $pastf -(have not) ha2vn,0t $pastf -has %ha2z $pastf $only +(have been) %ha#v%bIn $pastf +(have not) ha#vn,0t $pastf +has %ha#z $pastf $only has haz $only $atend -(has been) %haz%bIn $pastf -(has to) haztU $atend -(has not) ha2zn,0t $pastf +(has been) %ha#z%bIn $pastf +(has to) haztu: $atend +(has not) h@zn%0t $pastf has haz $allcaps hath %haT $pastf $only -had %had $pastf $strend2 $only -(had been) %had%bIn $pastf +had %ha#d $pastf $strend2 $only +had ,had $atend +(had to) hadtu: $atend +(had been) %ha#d%bIn $pastf having ,havI2N $strend2 $pastf $only haven't hav@nt $pastf hadn't had@nt $pastf @@ -3016,6 +3048,9 @@ put ,pUt $onlys $strend2 become bIkVm $u2 $strend2 became bIkeIm $u2 $strend2 +make m,eIk $strend2 +made m,eId $strend2 + we're %wi@3 you're %jO@ ?6 you're %jU@ @@ -3042,7 +3077,7 @@ they've DeIv $u $pastf we'd wi:d $u $pastf I aI $u+ $verbf $only -(I am) %aIa2m +(I am) %aIa#m (I am) %aIam $atend he hi: $u $verbsf she Si: $u $only $verbsf @@ -3088,7 +3123,7 @@ someone sVmw0n although OlD'oU $pause and and $u $pause $only -as ,az $pause $only +as %az $only (as is) ,az,Iz $pause (as it is) ,azIt,Iz $u+ because bIkVz $2 $pause @@ -3096,7 +3131,7 @@ once $pause or O@ $u $pause $only nor nO@ $pause $only but ,bVt $pause $only -if ,If $pause $only +if $u $pause $only despite $pause instead $pause otherwise VD3waIz $pause @@ -3105,13 +3140,12 @@ since sIns $pause thus DVs $pause though ,DoU whenever wEnEv3 $u2 $pause -within $pause +within $u $pause whoever hu:Ev3 $2 whatever w0tEv3 $2 $pause ?3 whatever wVtEv3 $2 $pause -while $pause -whilst waIlst $pause -(rather than) r'A:D3||Da2n $pause +while w,aIl $pause $strend +whilst w,aIlst $pause //some adverbs @@ -3123,8 +3157,8 @@ soon $verbf still $verbf already O:lrEdI $u2 $verbf $strend2 -not ,n0t $verbextend $onlys $strend -(not have) n0ta2v $pastf $u1 +not ,n0t $verbextend $only $strend +(not have) n0ta#v $pastf $u1 (not have) n0thav $pastf $atend (not have to) ,n0thavt@5 $pastf $strend (not a) ,n0t@ $nounf @@ -3144,7 +3178,7 @@ this DIs $u+ $nounf $verbsf that Dat $u $nounf $strend2 $verbsf (that a) ,Dat@ $nounf (that an) ,Dat@n $nounf -(that it) ,Da2tIt $verbsf +(that it) ,Da#tIt $verbsf (that one) D'atw,0n (that the) %DatD@2 these Di:z $u $nounf $strend2 $only @@ -3152,7 +3186,7 @@ those DoUz $u $nounf $strend2 $only there De@ $u $strend2 $only (there be) De@b'i: -than Dan $u $only +than Da#n $u $only (than a) ,Dan@ $nounf (than an) ,Dan@n $nounf then DEn $verbf @@ -3161,25 +3195,25 @@ then DEn $verbf which ,wItS $pause $strend2 $only $verbf who ,hu: $verbf $pause $strend2 $onlys whose ,hu:z $pause $only -what ,w0t $strend2 $onlys +what w%0t $strend2 $onlys +what ,w0t $atstart $onlys ?3 what ,wVt $strend2 $onlys how ,haU $strend2 $onlys where ,we@ $pause $strend2 $onlys why ,waI $strend2 $onlys -when ,wEn $strend2 $onlys +when w%En $strend2 $onlys +when ,wEn $atstart $onlys wherever w%e@r-Ev3 whereever w%e@r-Ev3 -an a2n $nounf $only -a $nounf -a eI $atend -(a while) a2||waIl +an a#n $nounf $only +(a while) a#||waIl (a la) ala the D@2 $only $nounf -(the while) D@2||waI@l +(the while) D@2||waIl like laIk $strend2 @@ -3209,11 +3243,11 @@ like laIk $strend2 ?3 puerile pjU@r@L ?3 sterile stEr@L ?3 virile vIr@L -?3 volatile v0la2t@L +?3 volatile v0la#t@L ?3 amen ,eIm'En ?3 anti antaI -?3 banana ba2nan@ +?3 banana ba#nan@ ?3 beta beIt@ ?3 caffeine $2 ?3 comrade k0mrad @@ -3225,7 +3259,7 @@ like laIk $strend2 ?3 envelope A:nv@loUp ?3 err e@ ?3 fortune fO@tS@n -?3 garage ga2rA:Z +?3 garage ga#rA:Z ?3 herb 3:b ?3 hurricane h3:@keIn ?3 investigative Inv,EstI2g'eItIv diff --git a/dictsource/en_rules b/dictsource/en_rules index 9616e6d8..a95912af 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -41,9 +41,9 @@ .group a a a _) a's (_ eIz - -) a (- a2 + -) a (- a# _) a (- 'eI - _) a (-half a2 + _) a (-half a# sw) a (B 0 a (Be# eI w) a (Be# eI @@ -63,7 +63,7 @@ n) a (Cal eI a (Cible 'eI &) a (_ @ - _) a (_ a2 + _) a (_ a# &b) a (_ =@ D_) a (_ eI XC) a (_ A: @@ -103,7 +103,7 @@ m) a (jes a m) a (jor_ eI m) a (jore eI - _) a (k@ a2 + _) a (k@ a# @) a (ki_ 'a @) ak (ia ak aku (_ 'A:ku: @@ -145,17 +145,17 @@ _) a (von eI aw O: a (wA a - _) aw (a+ a2w + _) aw (a+ a#w awal O:l a (way_ @ _) awe O: awe (B O: awe (_ O: _) aw (f O: - _) a (wh@ a2 + _) a (wh@ a# @) awi (_ 'A:wI _) aw (k O: - _) aw (ok a2w + _) aw (ok a#w C) a (x+ a _) a (x+ a ay eI @@ -179,22 +179,22 @@ a (zz_ 'a .group ab - _) ab (@ a2b + _) ab (@ a#b ab (acA ab - @) abad (_ =a2bad + @) abad (_ =a#bad ab (att ab _) abb ab _) abbo ab@ - _) abb (rev a2b + _) abb (rev a#b _) ab (d ab - _) ab (duc a2b + _) ab (duc a#b _) abel eIb@L _) ab (er@ ,ab C) aber (@ ab@ - _) aber (r a2bE + _) aber (r a#bE _) ab (i ab - _) ab (ide a2b + _) ab (ide a#b _l) ab (i eIb st) ab (il eIb C) ab (ilit+ @b @@ -212,11 +212,11 @@ ab (olit ,ab _) ab (ori ,ab l) ab (our eIb - _) above (@P5 a2b,Vv + _) above (@P5 a#b,Vv _) ab (ram eIb _) ab (ra ab - _) ab (rad a2b - ab (ras a2b + _) ab (rad a#b + ab (ras a#b ab (rog ab ab (ruc ab ab (sce ab @@ -236,31 +236,31 @@ &c) ably (_S4fv @bl%I .group ac - _) ac (@ a2k - _) acc (@ a2k - _) acc (e a2ks - _) acqu a2kw + _) ac (@ a#k + _) acc (@ a#k + _) acc (e a#ks + _) acqu a#kw aca (dem ak@ - aca (demy a2ka + aca (demy a#ka v) ac (a eIk ac (a_ 'ak ac (cent ak ac (centu %ak ac (cid ak acc (ol ak - accou (t a2ku: + accou (t a#ku: accu (ra akjU - accus (A a2kju:z + accus (A a#kju:z ace (_ eIs - _) ac (e a2s + _) ac (e a#s acean (_ 'eIS@n - pl) ac (at a2k + pl) ac (at a#k pl) ac (eb @s _pl) ac (ent @s ac (erb as - _) ac (erbi a2s + _) ac (erbi a#s _) ace (t asI - _) ace (ti a2si: + _) ace (ti a#si: _) ache (+ eIk d) ache (_ eIk h) ache (_ eIk @@ -273,15 +273,15 @@ r) aches (_ eIks rt) aches (_ eIks tr) ach (e @k - _) ach a2tS + _) ach a#tS achia 'eIS@ f) ac (ilit @s _m) ace (d asI - m) achi (n @Si: + m) achi (n# @Si: m) achina (t aSI2neI ach (rom ak ac (id_ as - _) ac (i a2s + _) ac (i a#s acious 'eIS@s _) ack (_ ak &) ac (le_ @k @@ -290,7 +290,7 @@ ac (orn eIk acme akmI acne aknI - acou (st a2ku: + acou (st a#ku: ac (quie ,a _) acre eIk@ _) ac (ri ak @@ -314,9 +314,9 @@ &) ac (y_ @s .group ad - _) ad (@ a2d - _) add (@ a2d - _) adj a2dZ + _) ad (@ a#d + _) add (@ a#d + _) adj a#dZ cr) ad eId ad (ag ad ad (am ad @@ -346,12 +346,12 @@ ad (ult_ ad _) ad (um ad ad (vent ad - ad (ventu a2d + ad (ventu a#d ad (ver ad adver (s adv'3: - ad (versa a2d + ad (versa a#d ad (vert_ ad - ad (vert a2d + ad (vert a#d ad (vo ad hex) ad (e ad torn) ad eId @@ -359,24 +359,24 @@ b) ad (os_ eId ad (iA eId s) ad (is eId - _tr) ad (it a2d + _tr) ad (it a#d qu) ad 0d l) ad (y eId mal) ad (y @d r) ad (ic ad .group af - _) af (@ a2f - _) aff (@ a2f - af (ea a2f + _) af (@ a#f + _) aff (@ a#f + af (ea a#f st) aff aaf aff (ab af aff (er af - _) affia a2faI@ + _) affia a#faI@ aff (lu af w) aff 0f _) af (g af - afore a2fo@ + afore a#fo@ af (ri af afro afroU af (t+ aaf @@ -384,7 +384,7 @@ .group ag _) ag (e eIdZ - _) agg (@ a2g + _) agg (@ a#g _) agg (rav ag _) agg (reg ag @) age (_ I2dZ @@ -394,12 +394,12 @@ _) age (l eIdZ _) ag (is eIdZ &h) agen (_ A:g@n - ag (end a2dZ - agg (res a2g - agg (riev a2g - _) ag (o_ a2g - ag (ree a2g - _) ag (ron a2g + ag (end a#dZ + agg (res a#g + agg (riev a#g + _) ag (o_ a#g + ag (ree a#g + _) ag (ron a#g ag (o_ eIg fl) age (_ A:Z teen) ag (e eIdZ @@ -421,7 +421,7 @@ agh (_ A: agio (_ 'A:dZIoU t) agi (o eIdZj - _) ag (l@ a2g + _) ag (l@ a#g &) ag (on_ @g dr) agon ag@n w) agon (+ ag@n @@ -466,9 +466,9 @@ aise (_ 'eIz .group al - _) al (@ a2l + _) al (@ a#l _) alaba al@b'a - @) aland (_ =@la2nd + @) aland (_ =@la#nd _) al (ast al m) alay @l'eI _) al (b al @@ -492,29 +492,29 @@ v) al (ia al al (ien eIl _) al (i al - _) al (ig a2l + _) al (ig a#l X) al (in eIl - _) ali (Be a2laI + _) ali (Be a#laI &) ali (sC_ @lI &) al (isCic @l _) al (k al - _) all (@ a2l + _) all (@ a#l _) all (C@P3 O:l _) all (a al _) all (eg al - alle (ge a2lE - all (egr a2l + alle (ge a#lE + all (egr a#l all (el al all (er al alley alI _) all (i al - _) all (ian a2l - _) all (iter a2l + _) all (ian a#l + _) all (iter a#l _) all (o al _) allo (ca al@ - _) all (ot a2l + _) all (ot a#l all (otr al - _) all (ow a2l + _) all (ow a#l _) ally alaI _) al (m 0l al (mig %0l @@ -537,7 +537,7 @@ _) al (y al alz alt|s &) al (_ @L -?8 &) al (_ a2l +?8 &) al (_ a#l @) ally (_S2 l%I @@ic) ally (_S4 l%I inst) al (_ O:l @@ -583,7 +583,7 @@ st) all O:l t) all O:l t) all (A al - t) all (y al + t) ally alI t) all (e O:l thr) all O:l Av) al (en @l @@ -594,7 +594,7 @@ w) all (a 0l al (tAr 0l _h) al (o eIl - al (ong a2l + al (ong a#l &) alry (_ @Lr%I _) al (s al f) al (s 0l @@ -621,42 +621,42 @@ ?!3 &h) am (_N @m &s) am (_ @m @r) am (a 'A:m - _) am (al a2m + _) am (al a#m amateur am@t3 - amaz a2meIz + amaz a#meIz amaz (o am@z ambi (d ambI ch) am (b eIm ambiv amb'Iv fl) ame eIm As) ame (_ 'A:mE - _) ame (l a2mi: + _) ame (l a#mi: _n) ame eIm &) am (ent @m - amer (ic a2mEr + amer (ic a#mEr c) am (el am am (i_ 'A:m - ami (g a2mi: + ami (g a#mi: _d) am (i eIm und) am (en @m - _) am (en a2m - ame (nab a2mi: + _) am (en a#m + ame (nab a#mi: l) ame (nt %amE - amm (end a2m - amoeb a2mi:b + amm (end a#m + amoeb a#mi:b f) amil amIl f) am (ous eIm - &g) am (ous =a2m + &g) am (ous =a#m &) am (ent @m &) ame (nta @m'E - _) ame (nt a2mE + _) ame (nt a#mE amphib amf'Ib ampton 'ampt@n - _) am (id a2m - &) amine (_ =a2mi:n - _) am (ino a2m - _) am (iss a2m - am (use a2m + _) am (id a#m + &) amine (_ =a#mi:n + _) am (ino a#m + _) am (iss a#m + am (use a#m .group an @) ana (_ 'A:n@ @@ -668,29 +668,29 @@ @m) an (d aan sl) an (d aan C) an (t aan - an (ath a2n - ann (eal a2n - ann (ih a2n - ann (oun a2n - _) ann (oy a2n - ann (ui a2n - ann (ul a2n - ann (un a2n - an (alog a2n - _) an (em a2n - _) ane (mi a2ni: + an (ath a#n + ann (eal a#n + ann (ih a#n + ann (oun a#n + _) ann (oy a#n + ann (ui a#n + ann (ul a#n + ann (un a#n + an (alog a#n + _) an (em a#n + _) ane (mi a#ni: _) anna an@ - _) an (oi a2n - _) anom a2n0m + _) an (oi a#n + _) anom a#n0m &) an (_ @n -?8 &) an (_ a2n +?8 &) an (_ a#n @u) an (_S1 n @i) an (_S1 n Cc) an (_ an l) an (_ an ll) an (_ @n &m) an (_ @n -?8 &m) an (_ a2n +?8 &m) an (_ a#n p) an (_ an r) an (_ an @@r) an (_ @n @@ -698,10 +698,10 @@ m) an (_ an hum) an (_ @n &) an (t_ @n -?8 &) an (t_ a2n +?8 &) an (t_ a#n pl) an (t_ an &) an (ce_ @n -?8 &) an (ce_ a2n +?8 &) an (ce_ a#n fin) an (c 'an h) an (ce_ aan z) an (ce_ aan @@ -722,7 +722,7 @@ an (gul 'an &) ani (_ 'A:nI an (ia 'eIn - z) ania a2n'i@ + z) ania a#n'i@ _l) an (ia an sp) an (ia an m) anipu @nIpjU @@ -759,12 +759,12 @@ an (za 'an .group ap - _) ap (@ a2p - _) aph (@ a2f + _) ap (@ a#p + _) aph (@ a#f ap (ath ap _) ap (e eIp - aper (ie a2pi@r - _) aperi (t a2pEr@ + aper (ie a#pi@r + _) aperi (t a#pEr@ _) aper (t ap@ _) aph (id eIf _) aph (o af @@ -777,15 +777,15 @@ _p) ap (is eIp ap (og ap ap (oli ap - _) app (@ a2p + _) app (@ a#p app (ara ap app (eti ap app (le ap app (lic ap - app (licab a2p + app (licab a#p app (reh ap apres apreI - _) apprec (L02 a2pri:S + _) apprec (L02 a#pri:S _) ap (ri eIp ap (ro eIp _) ap (s ap @@ -793,7 +793,7 @@ c) ap (ac @p tr) ape (z @pi: tr) ape (zo apI - app (ear a2p + app (ear a#p ap (el_ ap p) ap (er eIp m) ap (le eIp @@ -807,13 +807,13 @@ ar (_ A@ ar (o ar _) ar (A ar - _) ar (os a2r - _) ar (ou a2r + _) ar (os a#r + _) ar (ou a#r ar (a ar ar (a_ 'A:r ar (r a arr (_ A@ - _) arr (@ a2r + _) arr (@ a#r _) arr (ant ar _) arr (o ar ar (i_ 'A:r @@ -897,7 +897,7 @@ v) ar (iA e@r @) ar (ity ar ar (iu+ 'e@r - arom (at a2roUm + arom (at a#roUm arre (_ A@ arred (_ A@d arring (_ A@I2N @@ -923,8 +923,8 @@ chw) ar (d O@ .group as - _) as (@ a2s - _) ass (@ a2s + _) as (@ a#s + _) ass (@ a#s c) ass (_ @s tl) ass (_ @s omp) ass (_ @s @@ -937,8 +937,8 @@ _) as (e as as (exu %eIs _) ash aS - _) ash (a a2S - _) ash (o a2S + _) ash (a a#S + _) ash (o a#S _) as (in as _) asia eIS@ ?3 _) asia eIZ@ @@ -947,11 +947,11 @@ C) as (p aas w) as (p 0s C) as (pe aas - _) as (per a2s + _) as (per a#s _) as (pe as as (pha as as (pi as - _) as (pire a2s + _) as (pire a#s Cl) ass aas Cr) ass aas p) ass aas @@ -964,17 +964,17 @@ _) ass (h as ass (on as ass (u @S - ass (ump a2s + ass (ump a#s assur @SjU@ C) as (t aas as (ter aas - as (tern a2s + as (tern a#s as (thm as as (tral as as (tro as - as (trolog a2s - as (trono a2s - &) as (ty_ a2s + as (trolog a#s + as (trono a#s + &) as (ty_ a#s ass (ym as purch) as (e Is ph) ase (_ eIz @@ -982,7 +982,7 @@ &) asey (_ @s%I b) as (i eIs b) as (il az - as (sist a2 + as (sist a# j) as (on eIs m) as (on eIs m) as (oni as @@ -1021,9 +1021,9 @@ pl) at (ea at &) at (eer_ @t g) at (eau at - p) atrol a2troUl + p) atrol a#troUl ?3 p) at (riA eIt - fr) at (ern a2t + fr) at (ern a#t c) atego atIg@ c) atego (ric atIg'0 at (ia eIS @@ -1034,14 +1034,16 @@ athei eITI2I @) athy =@TI2 @) ath (is =@T - _) at (lan a2t - at (omi a2t - _) ato (n a2toU + _) at (lan a#t + at (omi a#t + _) ato (n a#toU _) ato (na %eItoU + atrices 'eItrI2si:z + atrix 'eItrIks atron (_ eItr@n - _) at (roc a2t + _) at (roc a#t @) atry (_ =@trI - _) att (@ a2t + _) att (@ a#t att (ic at att (it at _vers) at @t @@ -1103,11 +1105,11 @@ _) auto (n %O:t0 .group av - av (ail a2v + av (ail a#v avar (ic av@r - av (eng a2v - _) av (erC a2v - av (oA a2v + av (eng a#v + _) av (erC a#v + av (oA a#v d) av (en av d) av (id eIv j) av (a A:v @@ -1125,7 +1127,7 @@ f) av (o eIv fl) av (o eIv s) av (o eIv - avow a2vaU + avow a#vaU .group b b b @@ -1133,7 +1135,7 @@ m) b (_ _) bally (@ b,alI2 _) balli (@ b,alI2 - balli (st ba2l'I + balli (st ba#l'I _) ba (mb@ b%a _) book (@@P4 b'Uk su) bt (l t @@ -1245,7 +1247,7 @@ cc (i ks co) cc (i_ k c (aes s - caco (ph ka2k'0 + caco (ph ka#k'0 _) cement sI2mEnt chara (ct karI cien S@n @@ -1257,7 +1259,7 @@ c (elt k c (ellL03_ tS' cial (_ S@L -?8 cial (_ Sa2l +?8 cial (_ Sa#l cial S@l cian (_ S@n cian Si@n @@ -1345,7 +1347,7 @@ .group co _) co (ag k%oU - coa (les k%oUa2 + coa (les k%oUa# _) co (eCP2 k,oU _) coe (l si: co (hab k%oU @@ -1456,6 +1458,7 @@ _) co (ntrol k%0 conva (l k0nv@ _) co (nvoy k0 + _) co (nw k0 _) copy k0pI coro (ll k0r0 co (rrect k@ @@ -1536,6 +1539,7 @@ de (mor dI2 de (mot dI2 de (mur dI2 + _) deni (a dI2naI deni (tri d%i:naI _) de (no dI2 _) de (o d%i: @@ -1701,6 +1705,7 @@ t) ee (n_ 'i: eer 'i@3 ch) eese i:z + eeze (@ i:z d) e (fault i: e (ffec %I e (ffic %I @@ -1849,6 +1854,7 @@ h) ea (ther E th) ea (t i@ th) ea (tri i:a + _b) ea (tri i@ l) eath ED br) ea (th E br) eath (e i:D @@ -2150,15 +2156,16 @@ %C) er (_S3 3 ll) er (_S2 3 &) er (_ 3 -?8 &) er (_ a2 // (temporary because [3] -> [a2] is only for word-final +?8 &) er (_ a# // (temporary because [3] -> [a#] is only for word-final %C) ers (_S4 3z -?8 %C) ers (_S4 a2z +?8 %C) ers (_S4 a#z ss) er (_S2 3 all) er (_ 3 mb) er (_ 3 lin) er (_S1 3 lin) ers (_S2 3z er 3: + er (A 3:r _) er (A I2r _) er 3: _) err (A Er @@ -2215,6 +2222,7 @@ m) er (ge '3: erging '3:dZI2N v) er (ge '3: + er (gic_ '3: er (ic_ 'Er er (ical 'Er p) er (hap 3 @@ -2333,8 +2341,8 @@ &) eted (_ I2tI2d l) eted (_ 'i:tI2d cr) eted (_ 'i:tI2d - &) eting (_ I2tI2N - l) eting (_ 'i:tI2N + &) eting (_ I2t%IN + l) eting (_ 'i:tIN m) eter (_ i:t3 _m) et (ic @t @) et (_ I2t @@ -2439,6 +2447,7 @@ gg g g (e dZ _) gaol dZeIl + ge (dd g'E g (eek g geous dZ=@s g (E dZ @@ -2477,9 +2486,7 @@ g (ilt g r) ging dZI2N g (ift g - g (ird g - g (irl g - g (irt g + g (irK g _) g (it g g (ive g @) guay (_ gwaI @@ -2499,7 +2506,7 @@ @) head (_S4 hEd heir e@ _) hetero hEtroU - K) hl L + K) hl l# &) hold (_S4 hoUld holme hoUm _) home (o hoUmi: @@ -2669,7 +2676,7 @@ XC) ia aI|@ &) iac (_ =Iak C) iar aI@ -?8 C) iar aIa2 +?8 C) iar aIa# iar (iC Iar &) iary =j@r%I &l) iary =i@r%I @@ -2742,7 +2749,7 @@ sc) ie (nc aI@ ie (ntiC aI@ _sc) ie (n aI@ -?8 _sc) ie (n aIa2 +?8 _sc) ie (n aIa# ie (nCiA I2'E fr) ie (nd E f) ie (nd i: @@ -2757,6 +2764,7 @@ ier (c i@3 ierre (_ I2e@ ie (t aI@ + &) ie (t_ i@ @) ie (th i@ iesta i:'Est@ ie (tt I2'E @@ -3071,7 +3079,7 @@ ir (at %aIr ir (ate =i@r ire aI@ -?8 ire aIa2 +?8 ire aIa# s) ir (en aI@ c) ire (n aIr@ ir (ect %aIr @@ -3129,8 +3137,7 @@ iser (_ aIz3 &) ish (_ I2S is (ive aIs - _) is (lan aI - is (land aI + _) island aIl@nd _) is (le aI is (le_ aI an) ism (_S3d Iz@m @@ -3269,7 +3276,7 @@ A) ll (A l l (C l ll (C l - _) llan L%an + _) llan l#%an l (E l lle (_ l @@o) lled (_S3v d @@ -3546,7 +3553,7 @@ d) o (cil oU &%C) ock (_ @k l) o (com ,oU - ocrates (_ '0kra2ti:z + ocrates (_ '0kra#ti:z o (cre_ 'oU _h) o (cu oU cr) o (cu oU @@ -3870,7 +3877,7 @@ p) or (t o@ or (A o@r &) or (ate 3r - @@) or (_S2d 3 // suffix +// @@C) or (_S2de 3 // suffix &) or (_ 3 ?8 @@) or (_S2d o@ // suffix ?8 &) or (_ o@ @@ -4224,6 +4231,7 @@ p (haza p ph (erd p phila fIla + &) phony (_ =f@nI _) photo (@@P5 f,oUtoU photo foUtoU photon foUt0n @@ -4240,6 +4248,8 @@ por (tray p%o@ // _) post (@@P4 p,oUst // prefix pneu nju: + poly (@@ p,0lI + poly (@ p0lI pota (t p@teI _) ps s pseudo su:doU @@ -4390,6 +4400,7 @@ qu (er_ k quest kwEst quet (_ keI + ra) quet kI2t quett k'Et queu kju: qu (_ k @@ -4434,6 +4445,7 @@ rer (_ r@ re (_ 3 A) re (_ r@ + r) re (_ r@ _) re (C_ rE _) re (CC_ rE un) re (C@ rI2 @@ -4450,6 +4462,7 @@ re (ck rE reckon rEk@n reco (g rEk@ + _) re (conP2 ,ri: recon (c rEk@n re (ct rE re (dC rE @@ -4618,14 +4631,15 @@ ?8 ssion (_ =SVn 1_) st (_ _) st (_ s@nt - stein StaIn + stein staIn ti) ssue Su: _) s (u s ss (ue S ssur S3 a) ssur SU@ a) ssure S'U@ - ea) s (y z + sy (nerg sI + ea) s (y z s (_ z @) s (_S1 z _BA) s (_ s @@ -4637,6 +4651,7 @@ @ce) s (_S1 Iz f) s (_ s ng) s (_S1 z + ri) s (_S1 s k) s (_ s n) s (_S1 z p) s (_ s @@ -4987,7 +5002,7 @@ l) une (_ u:n r) une (_ u:n ?3 t) une (_ u:n - _) una (b ,Vna2 + _) una (b ,Vna# t) un (e ju:n ?3 t) un (e u:n un (ani %ju:n @@ -5148,6 +5163,7 @@ y (Be# aI @C) y (Be# aI ye (_ aI + %B) y (_S1d I _C) y (Ce aI C) y (i I y (iC_ j @@ -5442,9 +5458,9 @@ <= lEsO@i:kw@L - __) - (_D m'aIn@s - A_) - (_D _ - C_) - (_D _ + __) - (_D maIn@s + D_) - (_D daS + _) - (_D _ . d0t diff --git a/dictsource/fr_list b/dictsource/fr_list index d5500e04..f6827ba2 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2010-05-18 Michel Such +// Updated 2010-06-11 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -109,7 +109,7 @@ _#32 E2spas _" gijmE2 _# djEz -_' apostr'of +_' apostr'Of _( 'uvr@-parA~t'Ez _) f'Erm parA~t'Ez @@ -133,11 +133,11 @@ _` aks'A~_gr'av _{ uvr_akolad _| bar_vErtik'al _} f'Erm_akol'ad -² pw^is'A~s||d'Y +² pyis'A~s||d'Y _« uvre||gijm'E2 _» fErme||gijm'E2 -_’ apostr'of -_‘ apostr'of +_’ apostr'Of +_‘ apostr'Of _µ mikr'o _§ sEksj'O~ @@ -149,16 +149,16 @@ _& _e_komErsi'al * asterisk: $max3 + plys $max3 ~ tilde -€ @r'o +€ @r'o $u+ ¢ sEnt ¥ iEn £ livr ± pl'yz_'u_mw'E~ -× myltipli:'e_p'ar +× myltipli'e_p'ar ÷ diviz'e_p'ar ¼ W~_k'ar ½ W~_d@m'i -¾ trw^a_k'ar +¾ trwa_k'ar © _^_EN ® mark||depoz'e @@ -168,12 +168,12 @@ _& _e_komErsi'al _0 zero2 $u+ _1 W~ _2 d@z2 -_3 trw^az2 +_3 trwaz2 _4 katr _5 sE~k _6 siz3 _7 sEt -_8 _|w^it3 +_8 _|yit3 _9 nYf _10 diz3 _11 _|O~z @@ -183,17 +183,17 @@ _14 katorz _15 kE~z _16 sEz _17 disEt -_18 dizw^it3 +_18 dizyit3 _19 diznYf _20 vE~t2 _21 vE~te:W~ _22 vE~tdYz2 -_23 vE~t:trw^az2 +_23 vE~ttrwaz2 _24 vE~tkatr _25 vE~tsE~k _26 vE~tsiz3 _27 vE~tsEt -_28 vE~tw^it3 +_28 vE~tyit3 _29 vE~tnYf _3X trA~t _31 trA~te:W~ @@ -201,9 +201,9 @@ _4X karA~t _41 karA~te:W~ _5X sE~kA~t _51 sE~kA~te:W~ -_6X sw^asA~t -_61 sw^asA~te:W~ -_71 sw^asA~te:O~z +_6X swasA~t +_61 swasA~te:W~ +_71 swasA~te:O~z _8X katr@vE~: _80 katr@vE~z2 _0C sA~ @@ -225,7 +225,7 @@ _dpt virgyl (31 ème) trA~te:yniEm (41 ème) karA~te:yniEm (51 ème) sE~kA~te:yniEm -(61 ème) sw^asA~te:yniEm +(61 ème) swasA~te:yniEm (81 ème) katr@vE~:yniEm // ABBREVIATIONS @@ -234,15 +234,15 @@ _dpt virgyl abc $abbrev ac $abbrev acrobat acrobate $text -adn adeEn -adsl adeEsEl +adn ad,eEn +adsl ad,eEsEl alt _::alt -amd aEmde -aol aoEl -api apei +amd a,Emde +aol a,oEl +api ap,ei ascii aski avg $abbrev -avh aveaS +avh av,eaS bay _^_en bd boulevard $text brltty $abbrev @@ -252,32 +252,32 @@ cio $abbrev cm centimètre $text collins kolins cpu $abbrev -ctrl _::kO~trol +ctrl _::kO~trOl dept depart@mA~ divx diviks ebay _^_en (e bay) ebay $text ebcdic @besedik -edf @deEf -eml @EmEl +edf @d,eEf +eml @,EmEl etc E2tsetera ghz ZigaErts (g hz) ZigaErts -hmm h@m +hmm hWm (http ://) aSt,et,ep'e_ hz _|Erts -ibm ibeEm +ibm ib,e'Em ide $abbrev ip ipe -irc i:_!Er_!se +irc I,Er_|se jaws dZo3:z kbit kilobit kde $abbrev kg kilogramme $text khz kiloErts km kilomètre $text -(km player) ka,EmplE2j'Yr -(kmplayer) ka,EmplE2j'Yr +(km player) ka,EmplE2j'Wr +(kmplayer) ka,EmplE2j'Wr kw kilowatt $text m. m@siY mbit megabit @@ -289,16 +289,16 @@ mm millimètre $text mme madame $text mn minyt mns minytz2 -(mp 3) _|Empetrw^a +(mp 3) _|Empetrwa mr m@siY nsi $abbrev nsis $abbrev nti $abbrev nvda $abbrev -ocr oseEr +ocr os,eEr oem _!,o_!,@_!'Em -ogm oZeEm -ong oEnZe +ogm oZ,eEm +ong o,EnZe pci $abbrev pcmcia $abbrev pda $abbrev @@ -357,9 +357,9 @@ une $nounf $u+ // conjonctions mais $u+ ou u $u $brk -eh $u $brk +eh $u+ $brk en $u -et _|e $u +et e $u+ ni $u car $u car $noun @@ -381,7 +381,7 @@ lors $u+ certes $u+ dont dO~t2 $u lorsque lorsk=@ $u+ -puisque pw^isk=@ $u+ +puisque pyisk=@ $u+ presque prEsk=@ $u+ que $u+ (parce que) parsk@ $u+ @@ -423,16 +423,16 @@ ce $u+ $nounf ceci $u+ $verbf cela $u+ $verbf voici $u+ -voilà $u+ +voila $u+ cet $u $nounf cette $u $nounf ces sez2 $u $nounf (celle ci) sEl||si $verbf -(celle là) sEl||la $verbf +(celle la) sEl||la $verbf (ceux ci) sY||si $verbf -(ceux là) sY||la $verbf +(ceux la) sY||la $verbf (celles ci) sEl||si $verbf -(celles là) sEl||la $verbf +(celles la) sEl||la $verbf plupart $u+ // possessives @@ -465,7 +465,7 @@ du $u $nounf des dez2 $u $nounf -à a $u +//à a $u au $u $nounf aux $u $nounf @@ -586,13 +586,15 @@ tout t'ut2 $u+ tous $u+ toute t'ut $u+ toutes t'utz2 $u+ +(tout le monde) tulmO~d +(tout le temps) tultA~ rien ri'E~n2 $u+ // Letters which can be words //=========================== a a $atend $only à $atend $accent $only -y igr'Ek $atend $only +y _|igr'Ek $atend $only ô $atend $accent @@ -647,6 +649,7 @@ bien biE~n2 bis bis bissus bisys blues _^_en +blum blum broglie breuil $text browglie breuil $text buffer bYfYr @@ -672,7 +675,7 @@ fier fjer $verb for $u+ francis frA~sis fred frEd -free fri: +free frI fuel fjul gangster gA~gstEr gars ga @@ -687,6 +690,7 @@ hélas elas $u+ jacques Zak karaoke karaoke kevin kevin +laetitia letisja laser lazEr listbox listboks louis lwi @@ -697,6 +701,7 @@ mapper _^_en mars mars mas mas mat mat +matthias matjas merguez mErgEz messieurs mesjYz2 mieux miY $u+ @@ -706,7 +711,7 @@ oasis oazis ours urs pataquès patakEs patchwork patSwWrk -peter pi:tWr +peter pItWr phallus falys polder poldEr premier pr@mjer2 @@ -717,7 +722,7 @@ queries kueri quid kwid $u+ quit kwit recorder rikOrdWr -requiem rekw^ijEm +requiem rekyijEm revolver revOlvEr sas sas scan skan @@ -730,7 +735,9 @@ souris suri stocker stoker2 sus sys sus sy $verb +sushi suSi to tu $u+ +tramway tramwE: tuttiquanti tutikw'anti vaut $u+ vaux $u+ @@ -779,7 +786,7 @@ net nEt offset ofsEt set sEt soviet soviEt -stewart sti:wart +stewart stIwart // urt (t is said) kurt kurt @@ -800,10 +807,10 @@ smart smart // irt (sweat shirt) swEtSYrt (sweat shirts) swEtSYrt -(tee shirt) t,i:S'Yrt -(tee shirts) t,i:S'Yrt -(t shirt) t,i:S'Yrt -(t shirts) t,i:S'Yrt +(tee shirt) t,IS'Wrt +(tee shirts) t,IS'Wrt +(t shirt) t,IS'Wrt +(t shirts) t,IS'Wrt // words from other languages @@ -822,9 +829,9 @@ computer _^_en debian debjan edit _^_en emacs E2maks -emacspeak E2makspi:k +emacspeak E2makspIk end _^_en -espeak @spi:k +espeak @spIk ethernet etErnEt exit egzit (file zilla) f,ajl||zij'a @@ -876,7 +883,7 @@ constations kO~statjO~z2 contentions kO~tA~tjO~z2 dations datjO~z2 désertions dezErtjO~z2 $verb -exploitions Eksplw^atjO~z2 +exploitions EksplwatjO~z2 heurtions hYrtjO~z2 partions partjO~z2 rations ratjO~z2 $verb @@ -893,6 +900,7 @@ vincent vE~sA~ // Some countries, areas and languages afrikaans afrikans +aix Eks bahamas baamas bangladesh bA~gladES bayeux bajY @@ -912,10 +920,10 @@ honduras _|O~dyras kenya kenja laos laos lesotho lezoto -liechtenstein liStYnStajn +liechtenstein liStWnStajn angeles A~nZelEs malawi malawi -mayotte majot +mayotte majOt montréal mO~real montserrat mO~sera nevis nevis @@ -930,8 +938,8 @@ taïwan tajwan texas tE2ks'as tuvalu tuvalu vanuatu vanuatu -venezuela venezyela -(viêt nam) viEtnam +venezuela venezy-E2la +(viêt nam) vjEtnam wallis walis futuna futuna zimbabwe zimbabwe diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 6b0bac24..621cb397 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2010-05-18 Michel Such +// Updated: 2010-06-12 Michel Such // // Letter classes: @@ -35,6 +35,7 @@ .replace œ oe î i +à a .L01 d e l n r t u @@ -46,1403 +47,1405 @@ .group a - ae (_ e // reggae vitae - aen A~ // caen (diff Cicero: aA~) - ae aE // maestro - aim (K E~ // faim - ain (K E~ // pain - Ct) ain (_ E~n2 // certain ami - ch) ain (_ E~n2 // prochain arret - ai (_ e // dirai ferai... - _ess) ai (_ E2 // essai - _vr) ai (_ E2 // vrai - ai (b E // faible - ais (_ E2z2 // dirais ferais... - ait (_ E2t2 // dirait ferait... - aient (_ E2t2 // diraient feraient... - f) ai (sA @ // faisons faisan - a (ilK a - aie (me E2 // paiement - ai E // aile - ai (L06 E // aile - ai (CAX E // aile - am (b A~ // jambon - am (p A~ // camp - am (m a // programmation - _) am (n am // amnistie - am (n a // condamner + ae (_ e // reggae vitae + aen A~ // caen (diff Cicero: aA~) + ae aE // maestro + aim (K E~ // faim + ain (K E~ // pain + Ct) ain (_ E~n2 // certain ami + ch) ain (_ E~n2 // prochain arret + ai (_ e // dirai ferai... + _ess) ai (_ E2 // essai + _vr) ai (_ E2 // vrai + ai (b E // faible + ais (_ E2z2 // dirais ferais... + ait (_ E2t2 // dirait ferait... + aient (_ E2t2 // diraient feraient... + f) ai (sA @ // faisons faisan + a (ilK a + aie (me E2 // paiement + ai E // aile + ai (L06 E // aile + ai (CAX E // aile + am (b A~ // jambon + am (p A~ // camp + am (m a // programmation + _) am (n am // amnistie + am (n a // condamner - _L04) an (_ an - an (n_ a - _h) an (_ an - _) anti (@@P4 A~ti - _) arché (@P5 arke // archéologue - _) archéo (@P6 arkeo // archéologue - _) arch (aP4 ark // archange - _) arch (oP4 ark // archonte - _) anarcho (@P7 anarko // anarchosyndicalisme + _L04) an (_ an + an (n_ a + _h) an (_ an + _) anti (@@P4 A~ti + _) arché (@P5 arke // archéologue + _) archéo (@P6 arkeo // archéologue + _) arch (aP4 ark // archange + _) arch (oP4 ark // archonte + _) anarcho (@P7 anarko // anarchosyndicalisme - 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 - _caïm) an (_ A~ // caïman - _C) aon (_ A~ // faon, paon, taon - s) aoul (_ u // saoul - s) aou (le u // saoule - août ut // août - août (i aus // aoûtien - aut (_ ot2 - a (ô // saune - au o2 // au, aux - au (l_ o // Paul - au (re_ o // dinosaure - _) audio (@P5 o2dio - _) auto (@P4 o2to - _) autom (n otO - bb) aye (X ei // abbaye - ay (C E // aymé - ay Ej // paye - ay (_ E2 // display - Xl) ayer (X E2jWr // player, layer - w) an (_ an - a a // bateau + 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 + _caïm) an (_ A~ // caïman + _C) aon (_ A~ // faon, paon, taon + s) aoul (_ u // saoul + s) aou (le u // saoule + août ut // août + août (i aus // aoûtien + aut (_ ot2 + a (ô // saune + au o2 // au, aux + aud (_ o // chaud +_C) aud (_ o2d // Maud + au (l_ o // Paul + au (re_ o // dinosaure + _) audio (@P5 o2dio + _) auto (@P4 o2to + _) autom (n otO + bb) aye (X ei // abbaye + ay (C E // aymé + ay Ej // paye + ay (_ E2 // display + Xl) ayer (X E2jWr // player, layer + w) an (_ an + a a // bateau // group a: English section - sm) all _^_en // small, smaller - a (wC _^_en + sm) all _^_en // small, smaller + a (wC _^_en .group b - bb b // abbé - om) b (_ // plomb applomb - b b // aube + bb b // abbé + om) b (_ // plomb applomb + b b // aube // group b: English section - back _^_en - bbl _^_en - bird _^_en // bird - board _^_en // board, keyboard - box (_ _^_en // box, inbox, outbox - bugg _^_en // debugger - _) by _^_en // by, bye, bypass + back _^_en + bbl _^_en + bird _^_en // bird + board _^_en // board, keyboard + box (_ _^_en // box, inbox, outbox + bugg _^_en // debugger + _) by _^_en // by, bye, bypass .group c - _) c' (P2v s // s - cch k // bacchanale - cc (Y ks // accéder - cc k // occuper - _) c (d se - _) ch (arism k // charisme, charismatique - _) ch (irop k // chiroptère - a) ch (_ k // almanach - 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 - mito) ch (o k // mitochondrie - _eu) ch (ari k // eucharistie - or) ch (esC k // orchestre - or) ch (iC k // orchidée - _) ch (ao k // chaos, chaotique - _) ch (orA k // chorale - _) ch (oriz S - _) ch (oro S - ch (r k // chrétien - _) chrono (@P6 krono - ch (l k - ch (n k - ch (s k - ch (to k - ch S // chien - ck k // nickel - cqu k // grecque - cq k // pecq - s) c (Y - x) c (Y - c (Y s // cède - _) cyber (P5 sibEr - Can) c (_ // banc - Con) c (_ // tronc, jonc - _don) c (_ k // donc - cler) c (_ // leclerc - tchou) c (_ - taba) c (_ - toma) c (_ - se) c (ond g // seconde secondaire - c k // recoin donc + _) c' (P2v s // s + cch k // bacchanale + cc (Y ks // accéder + cc k // occuper + _) c (d se + _) ch (arism k // charisme, charismatique + _) ch (irop k // chiroptère + a) ch (_ k // almanach + 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 + mito) ch (o k // mitochondrie + _eu) ch (ari k // eucharistie + or) ch (esC k // orchestre + or) ch (iC k // orchidée + _) ch (ao k // chaos, chaotique + _) ch (orA k // chorale + _) ch (oriz S + _) ch (oro S + ch (r k // chrétien + _) chrono (@P6 krono + ch (l k + ch (n k + ch (s k + ch (to k + ch S // chien + ck k // nickel + cqu k // grecque + cq k // pecq + s) c (Y + x) c (Y + c (Y s // cède + _) cyber (P5 sibEr + Can) c (_ // banc + Con) c (_ // tronc, jonc + _don) c (_ k // donc + cler) c (_ // leclerc + tchou) c (_ + taba) c (_ + toma) c (_ + se) c (ond g // seconde secondaire + c k // recoin donc - cient (_ sit2 // ils appr�ient, remercient. - effi) cient sjA~ // coefficient - défi) cient sjA~ // déficient - cast (_S4 kast // podcast - casts (_S5 kast // podcasts - _) clown klun + cient (_ sit2 // ils appr�ient, remercient. + effi) cient sjA~ // coefficient + défi) cient sjA~ // déficient + cast (_S4 kast // podcast + casts (_S5 kast // podcasts + _) clown klun // group c: English section - n) ch (_ _^_en // french - ch (ment _^_en // attachment - cut (_ _^_en // cut, shortcut + n) ch (_ _^_en // french + ch (ment _^_en // attachment + cut (_ _^_en // cut, shortcut .group ç - ç s // rançon -_) ç' (P2v s + ç s // rançon + _) ç' (P2v s .group d - dd d // addition - _) d' (P2 d - _ban) d (_ d - _lan) d (_ d // land - _stan) d (_ d // stand - an) d (_ - _san) d (_ d + dd d // addition + _) d' (P2 d + _ban) d (_ d + _lan) d (_ d // land + _stan) d (_ d // stand + an) d (_ + _san) d (_ d - _gran) d (_ t2 // grand ami, grand marchand - Cen) d (_ t2 - Con) d (_ - con) d (_ t2 - quen) d (_ t2 - r) d (_ - _har) d (_ d - lor) d (_ d - au) d (_ - oi) d (_ - ou) d (_ + _gran) d (_ t2 // grand ami, grand marchand + Cen) d (_ t2 + Con) d (_ + con) d (_ t2 + quen) d (_ t2 + r) d (_ + _har) d (_ d + lor) d (_ d + oi) d (_ + ou) d (_ - dt (_ t // Schmidt - _ni) d (_ // nid - d d // don bled - _expé) dien (t_ djA~ // expédient - V_expé) dien (t_ di // expédient - _ingré) dien (t_ djA~ // ingrédient - dien (t_ di // étudient (verbe) - _) dendro (@P6 dE~dro + dt (_ t // Schmidt + _ni) d (_ // nid + d d // don bled + _expé) dien (t_ djA~ // expédient +V_expé) dien (t_ di // expédient +_ingré) dien (t_ djA~ // ingrédient + dien (t_ di // étudient (verbe) + _) dendro (@P6 dE~dro // group d: English section - day (_ _^_en - _) devic _^_en - dle (X _^_en // bundle, handle + day (_ _^_en + _) devic _^_en + dle (X _^_en // bundle, handle .group e // Define use of the final 'e' in french - e (_ - _C) e (_ @ // je te - -c) e (_ - -j) e (_ - C) e (- + e (_ + _C) e (_ @ // je te + -c) e (_ + -j) e (_ + C) e (- - e (Ce_ E - eau o // bateau - g) ea (s_ a // mangeas - cap) e (la_ e - gh) e (tAX e // spagheti - j) e (a // Jean Jeanne - p) ect (_ E2 // suspect - ect (_ Ekt // direct - pi) ed (_ e // pied - _art) e (++ e // arte, artefact - _cl) ef (_ e // clef - _cr) e (at e - _) ein (K En // Einstein - ein (K E~ // peindre - pl) ein (_ E~n2 // plein emploi - e (il E // vieille - ei E // neige - eoi w^a // asseoir - ell El // selle - el (K El // celsius, caramel - _f) em (me a // femme - i) e (mA // remerciement, d�ploiement - A) e (rA // remerciera - tch) e (rX Y - @) em (me a // patiemment - em (b A~ // décembre - em (mACC A~ // emmancher - em (mACAC A~ // emmagasiner - em (ma E2 // emmanuel - em (mai A~ // emmailloter - l) em (n a // solemnel - il) emn Em // dilemne - em (p A~ - en (_ A~n2 // en - en (hA A~n // enharmonique -_C) en (j E~ // benjamin -_flam) en (c E~ // flamenco -_) en (A A~n // enivrer + e (Ce_ E + eau o // bateau + g) ea (s_ a // mangeas + cap) e (la_ e + gh) e (tAX e // spagheti + j) e (a // Jean Jeanne + p) ect (_ E2 // suspect + ect (_ Ekt // direct + pi) ed (_ e // pied + _art) e (++ e // arte, artefact + _cl) ef (_ e // clef + _cr) e (at e + _) ein (K En // Einstein + ein (K E~ // peindre + pl) ein (_ E~n2 // plein emploi + e (il E // vieille + ei E // neige + eoi wa // asseoir + ell El // selle + el (K El // celsius, caramel + _f) em (me a // femme + i) e (mA // remerciement, d�ploiement + A) e (rA // remerciera + tch) e (rX Y + @) em (me a // patiemment + em (b A~ // décembre + em (mACC A~ // emmancher + em (mACAC A~ // emmagasiner + em (ma E2 // emmanuel + em (mai A~ // emmailloter + l) em (n a // solemnel + il) emn Em // dilemne + em (p A~ + en (_ A~n2 // en + en (hA A~n // enharmonique + _C) en (j E~ // benjamin + _flam) en (c E~ // flamenco + _) en (A A~n // enivrer - C) en (d_ A~ // comprend dépend - od) en (dr E~ // rhododendron - qu) en (d_ A~ + C) en (d_ A~ // comprend dépend + od) en (dr E~ // rhododendron + qu) en (d_ A~ - pati) en A~ // patient patience - en (nu A~ // ennui - en (nA E // penne ennemi + pati) en A~ // patient patience + en (nu A~ // ennui + en (nA E // penne ennemi - é) en (_ E~ // européen + é) en (_ E~ // européen - Ci) en (nA E // mienne + Ci) en (nA E // mienne - éC) en (t_ A~ // récent différent élément - équ) en (t_ A~ // fréquent, conséquent - étic) en (t_ A~ // réticent + éC) en (t_ A~ // récent différent élément + équ) en (t_ A~ // fréquent, conséquent + étic) en (t_ A~ // réticent - _C) en (t_ A~ // cent vent lent dent - cc) en (t_ A~ // accent - Asc) en (t_ A~ // luminescent - _dol) en (t_ A~ // dolent - ol) en (t_ A~ // somnolent, violent - Vol) en (t_ // somnolent, violent - Xol) ent (_ t2 // volent - eul) ent (_ t2 // veulent - ul) en (t_ A~ // turbulent - Vul) en (t_ - imCoC) en (t_ A~ // impotent - inCoC) en (t_ A~ // innocent, indolent + _C) en (t_ A~ // cent vent lent dent + cc) en (t_ A~ // accent + Asc) en (t_ A~ // luminescent + _dol) en (t_ A~ // dolent + ol) en (t_ A~ // somnolent, violent + Vol) en (t_ // somnolent, violent + Xol) ent (_ t2 // volent + eul) ent (_ t2 // veulent + ul) en (t_ A~ // turbulent + Ccul) ent (_ t2 + Vul) ent (_ t2 + imCoC) en (t_ A~ // impotent + inCoC) en (t_ A~ // innocent, indolent - XACcid) en (t_ A~ // accident, occident +XACcid) en (t_ A~ // accident, occident - _ag) en (t_ A~ // agent - _ard) en (t_ A~ // ardent - _arg) en (t_ A~ // argent - _urg) en (t_ A~ // urgent - V_urg) ent (_ t2 // urgent (verbe) + _ag) en (t_ A~ // agent + _ard) en (t_ A~ // ardent + _arg) en (t_ A~ // argent + _urg) en (t_ A~ // urgent + V_urg) ent (_ t2 // urgent (verbe) - _émin) en (t_ A~ // éminent - immin) en (t_ A~ // imminent - oémin) en (t_ A~ // proéminent - jac) en (t_ A~ // sous-jacent, adjacent - _lat) en (t_ A~ // latent + _émin) en (t_ A~ // éminent + immin) en (t_ A~ // imminent + oémin) en (t_ A~ // proéminent + jac) en (t_ A~ // sous-jacent, adjacent + _lat) en (t_ A~ // latent - @@Cig) en (t_ A~ // intransigent, intelligent - _dilig) en (t_ A~ // diligent - XACig) en (t_ A~ // dirigent, exigent - VXACig) ent (_ t2 // dirigent, exigent (verbe) - flig) en (t_ A~ // affligent - Vflig) ent (_ t2 // infligent (verbe) - Xig) ent (_ t2 // figent, pigent - oblig) en (t_ A~ // obligent, d�sobligent - Voblig) ent (_ t2 // obligent (verbe) - orrig) ent (_ t2 // corrigent - tang) en (t_ A~ // tangent + ig) ent (_ t2 + ilig) ent (_ A~t2 + llig) ent (_ A~t2 + ndig) ent (_ A~t2 + tang) ent (_ A~t2 // tangent + @@ing) en (t_ A~ // astreingent, contingentindigent - man) en (t_ A~ // permanent - @@ing) en (t_ A~ // astreingent, contingentindigent - _pat) en (t_ A~ // patent - rmam) en (t_ A~ // firmament - éCerg) en (t_ A~ // détergent - V_éCerg) ent (_ t2 // émergent - verg) en (t_ A~ // convergent, divergent - Vverg) ent (_ t2 // convergent, divergent (verbe) + man) en (t_ A~ // permanent + _pat) en (t_ A~ // patent + rmam) en (t_ A~ // firmament + verg) en (t_ A~ // convergent, divergent + Vverg) ent (_ t2 // convergent, divergent (verbe) - _serg) en (t_ A~ // sergent - CACCim) en (t_ A~ // condiment, gentiment - dim) en (t_ A~ // rudiment - Agim) en (t_ A~ // régiment - Alim) en (t_ A~ // poliment - inim) en (t_ A~ // infiniment - manim) en (t_ A~ // maniment - onim) en (t_ A~ // boniment - plim) en (t_ A~ // compliment - Atim) en (t_ A~ // bâtiment - _cim) en (t_ A~ // ciment - _pim) en (t_ A~ // piment - gm) en (t_ A~ // fragment - Asim) en (t_ A~ // quasiment + _serg) en (t_ A~ // sergent +CACCim) en (t_ A~ // condiment, gentiment + dim) en (t_ A~ // rudiment + Agim) en (t_ A~ // régiment + Alim) en (t_ A~ // poliment + inim) en (t_ A~ // infiniment + manim) en (t_ A~ // maniment + onim) en (t_ A~ // boniment + plim) en (t_ A~ // compliment + Atim) en (t_ A~ // bâtiment + _cim) en (t_ A~ // ciment + _pim) en (t_ A~ // piment + gm) en (t_ A~ // fragment + Asim) en (t_ A~ // quasiment - ertin) en (t_ A~ // pertinent, impertinent - ontin) en (t_ A~ // continent, incontinent - _sArm) en (t_ A~ // sarment, serment - erm) en (t_ A~ // ferment - Vferm) ent (_ t2 // ferment, referment (verbe) - XArp) en (t_ A~ // arpent, serpent - CArr) en (t_ A~ // conncurrent, torrent - Cerr) ent (_ t2 // ils serrent - _appar) en (t_ A~ // apparent - spar) en (t_ A~ // transparent - _par) en (t_ A~ // parent - V_par) ent (_ t2 // parent (verbe) - _var) en (t_ A~ // varent - mitt) en (t_ A~ // intermittent - énit) en (t_ A~ // pénitent - tourm) en (t_ A~ // tourment - Cflu) en (t_ A~ // affluent, confluent - VCflu) ent (_ t2 // refluent, influent (verbe) + ertin) en (t_ A~ // pertinent, impertinent + ontin) en (t_ A~ // continent, incontinent + _sArm) en (t_ A~ // sarment, serment + erm) en (t_ A~ // ferment + Vferm) ent (_ t2 // ferment, referment (verbe) + XArp) en (t_ A~ // arpent, serpent + CArr) en (t_ A~ // conncurrent, torrent + Cerr) ent (_ t2 // ils serrent +_appar) en (t_ A~ // apparent + spar) en (t_ A~ // transparent + _par) en (t_ A~ // parent + V_par) ent (_ t2 // parent (verbe) + _var) en (t_ A~ // varent + mitt) en (t_ A~ // intermittent + énit) en (t_ A~ // pénitent + tourm) en (t_ A~ // tourment + Cflu) en (t_ A~ // affluent, confluent + VCflu) ent (_ t2 // refluent, influent (verbe) - _tal) en (t_ A~ // talent - ival) en (t_ A~ // équivalent - Vival) ent (_ t2 // équivalent (verbe) - xcell) en (t_ A~ // excellent - Vxcell) ent (_ t2 // excellent + _tal) en (t_ A~ // talent + ival) en (t_ A~ // équivalent + Vival) ent (_ t2 // équivalent (verbe) + xcell) en (t_ A~ // excellent +Vxcell) ent (_ t2 // excellent - iCam) en (t_ A~ - mm) en (t_ A~ - em) en (t_ A~ // lentement - mom) en (t_ A~ // moment - Aaim) en (t_ A~ - Caim) en (t_ A~ - dum) en (t_ A~ - gum) en (t_ A~ - jum) en (t_ A~ - oCum) en (t_ A~ - rum) en (t_ A~ + iCam) en (t_ A~ + mm) en (t_ A~ + em) en (t_ A~ // lentement + mom) en (t_ A~ // moment + Aaim) en (t_ A~ + Caim) en (t_ A~ + dum) en (t_ A~ + gum) en (t_ A~ + jum) en (t_ A~ + oCum) en (t_ A~ + rum) en (t_ A~ - éCid) en (t_ A~ - VéCid) ent (_ t2 - Xtrid) en (t_ A~ - _flor) en (t_ A~ - _laur) en (t_ A~ - _mécont) en (t_ A~ - _cont) en (t_ A~ - _Vcont) ent (_ t2 - éC) en (t_ A~ // compétent - _souv) en (t_ A~ // souvent - Cud) en (t_ A~ + éCid) en (t_ A~ + VéCid) ent (_ t2 + Xtrid) en (t_ A~ + _flor) en (t_ A~ + _laur) en (t_ A~ +_mécont) en (t_ A~ + _cont) en (t_ A~ +_Vcont) ent (_ t2 + éC) en (t_ A~ // compétent + _souv) en (t_ A~ // souvent + Cud) en (t_ A~ - _couv) en (tS3f A~ // le couvent - V_couv) en (t_ // elles couvent - s_couv) en (t_ // elles couvent + _couv) en (tS3f A~ // le couvent +V_couv) en (t_ // elles couvent +s_couv) en (t_ // elles couvent - ent (_ t2 // étaient mangent - A) ent (_ t2 // étaient mangent + ent (_ t2 // étaient mangent + A) ent (_ t2 // étaient mangent - Ci) en (K E~ // rien, lien - Ci) en (c A~ // science + Ci) en (K E~ // rien, lien + Ci) en (c A~ // science - AA) en (_ E~ - C) en (_ En // amen, abdomen, golden - C) en (to_ En // memento - nc) ens (_ A~ // encens - xam) en (_ E~ // examen + AA) en (_ E~ + C) en (_ En // amen, abdomen, golden + C) en (to_ En // memento + nc) ens (_ A~ // encens + xam) en (_ E~ // examen - en (s_ A~ - en (CA A~ // pentathlon - en (CC A~ // entre - sp) ens (_ Ens // suspens - éC) ens (_ A~z2 // dépens démens + en (s_ A~ + en (CA A~ // pentathlon + en (CC A~ // entre + sp) ens (_ Ens // suspens + éC) ens (_ A~z2 // dépens démens - _C) er (_ Er // fer - _Ch) er (_ Er // cher - _env) er (_ Er - _hi) er (_ Er // hier - _fi) er (_ Er // fier - _hiv) er (X Er // hiver - Cst) er (X Er // hamster - _cart) er (X Er // carter - _cutt) er (X Er // cutter - tain) er (X Er // container - _ti) er (_ Er - ack) er (K Yr - ock) er (K Er - rock) er (K Yr + _C) er (_ Er // fer + _Ch) er (_ Er // cher + _env) er (_ Er + _hi) er (_ Er // hier + _fi) er (_ Er // fier + _hiv) er (X Er // hiver + Cst) er (X Er // hamster + _cart) er (X Er // carter + _cutt) er (X Er // cutter + tain) er (X Er // container + _ti) er (_ Er + ack) er (K Yr + ock) er (K Er + rock) er (K Yr - er (_ e // parler léger - er (s_ e + er (_ e // parler léger + er (s_ e - i) e (rt_ E // requiert + i) e (rt_ E // requiert - d) e (ssus_ @ // dessus + d) e (ssus_ @ // dessus - _d) es (bA e - _d) es (jA e // Desjardins - _d) es (nA e - _d) es (qA e // desquels + _d) es (bA e + _d) es (jA e // Desjardins + _d) es (nA e + _d) es (qA e // desquels - _l) es (qA e // lesquels + _l) es (qA e // lesquels - _m) es (dA e // mesdames - _m) es (nA e - Am) es (dA e - Am) es (nA e // Dumesnil + _m) es (dA e // mesdames + _m) es (nA e + Am) es (dA e + Am) es (nA e // Dumesnil - d) esh (A ez // Deshormeaux + d) esh (A ez // Deshormeaux - _r) e (ss @ // ressembler - _r) e (ssu e // ressusciter - _r) e (stra @ - _r) e (stro @ - _r) e (stru @ // restructurer - -) est (_ Est // -est + _r) e (ss @ // ressembler + _r) e (ssu e // ressusciter + _r) e (stra @ + _r) e (stro @ + _r) e (stru @ // restructurer + -) est (_ Est // -est - dg) et (_ Et // Bridget, gadget - k) et (_ Et - tick) et (_ E2 - m) et (_ Et2 + dg) et (_ Et // Bridget, gadget + k) et (_ Et + tick) et (_ E2 + m) et (_ Et2 - eu Y // eu - _) eu (ss y // eu + eu Y // eu + _) eu (ss y // eu - _) eut (_ yt2 - eut (_ Yt2 - _) extra (uP5 E2kstra - _) extra (CP5 E2kstra - _) eû y // eût - eû Y: // jeûne + _) eut (_ yt2 + eut (_ Yt2 + _) extra (uP5 E2kstra + _) extra (CP5 E2kstra + _) eû y // eût + eû Y: // jeûne - ey (_ E2 // dahomey - ey (C E2 // ceylan - ey Ej // asseye + ey (_ E2 // dahomey + ey (C E2 // ceylan + ey Ej // asseye - ez (_ ez2 // nez mangez chez + ez (_ ez2 // nez mangez chez - g) e (A // mangeons - g) eu Y // vengeur - g) eu (re y // gageure + g) e (A // mangeons + g) eu Y // vengeur + g) eu (re y // gageure - _d) e (ch @ - _r) e (ch @ // recherche - e (Cl @ + _d) e (ch @ + _r) e (ch @ // recherche + e (Cl @ - _l) e (xA E2 - _m) e (xA E2 - _l) e (CA @ - _l) e (ChA @ - _l) e (ClA @ // Leclerc - tr) e (CA @ - tr) e (ChA @ + _l) e (xA E2 + _m) e (xA E2 + _l) e (CA @ + _l) e (ChA @ + _l) e (ClA @ // Leclerc + tr) e (CA @ + tr) e (ChA @ - e (CC E // infect pelle mettre - e (Cr @ - _) e (C% e // effet, effectuer - e (C_ E - e (t_ E2 - e (rC E - es (_ z2 + e (CC E // infect pelle mettre + e (Cr @ + _) e (C% e // effet, effectuer + e (C_ E + e (t_ E2 + e (rC E + es (_ z2 - %C) e (xA E2 + %C) e (xA E2 -@gu) e (CA -@gu) er (A r -@qu) e (CA -@qu) er (A r -_qu) e (CA @ -@L06gu) e (CA @ -@L06qu) e (CA @ -@C) e (CA -@C) e (li @ -@ch) e (li @ -@C) er (A r -@C) e (rion++ @ -@C) e (riez++ @ -@ch) e (CA -@ch) er (A r -L06ch) e (CA @ -@L06C) e (CA @ -@CL06) e (CA @ -@bC) e (CA @ -@ct) e (CA @ -%C) e (CA++ -%C) er (A++ r -@C) e (xA++ E2 -@c) e (v++ @ -@d) e (v++ @ + @gu) e (CA + @gu) er (A r + @qu) e (CA + @qu) er (A r + _qu) e (CA @ +@L06gu) e (CA @ +@L06qu) e (CA @ + @C) e (CA + @C) e (li @ + @ch) e (li @ + @C) er (A r + @C) e (rion++ @ + @C) e (riez++ @ + @ch) e (CA + @ch) er (A r + L06ch) e (CA @ + @L06C) e (CA @ + @CL06) e (CA @ + @bC) e (CA @ + @ct) e (CA @ + %C) e (CA++ + %C) er (A++ r + @C) e (xA++ E2 + @c) e (v++ @ + @d) e (v++ @ -@C) e (CrA -@ch) e (CrA -@L06ch) e (CrA @ -@L06C) e (CrA @ -@L06C) e (rrA E -@CL06) e (CrA @ -%C) e (CrA++ - e (rr+++ E + @C) e (CrA + @ch) e (CrA +@L06ch) e (CrA @ + @L06C) e (CrA @ + @L06C) e (rrA E + @CL06) e (CrA @ + %C) e (CrA++ + e (rr+++ E - e @ // menue - _) e (CA e - _) e (xC++ E2 - Cr) eam i:m - Cr) eamer i:mWr - Cl) eaner i:nWr - vert) e (rX W - eïn (_ 'Ein -_y) en (_ En -iew) er (X er2 -_m) e (ga e + e @ // menue + _) e (CA e + _) e (xC++ E2 + Cr) eam Im + Cr) eamer ImWr + Cl) eaner InWr + vert) e (rX W + eï (K 'Ej + _y) en (_ En + iew) er (X er2 + _m) e (ga e // group e: English section - eac _^_en - C) ead _^_en // read, head - eak _^_en // break, speak - eal _^_en // deal - ear _^_en // ear, search - eas _^_en // please - eave _^_en // leave - ed (_ _^_en - ee _^_en // meeting - efore (_ _^_en // before - eing (_ _^_en // being, boeing - eive _^_en // receive - eld (_ _^_en // field - _) enter (_ _^_en // enter - _) enhan _^_en - qu) est (_ _^_en // request - qu) este (X_ _^_en // requested, requester - _) even (X _^_en // forever, however - _) ever _^_en // forever, however - oC) ever _^_en // forever, however - _) eye _^_en + eac _^_en + C) ead _^_en // read, head + eak _^_en // break, speak + eal _^_en // deal + ear _^_en // ear, search + eas _^_en // please + eave _^_en // leave + ed (_ _^_en + ee _^_en // meeting + efore (_ _^_en // before + eing (_ _^_en // being, boeing + eive _^_en // receive + eld (_ _^_en // field + _) enter (_ _^_en // enter + _) enhan _^_en + qu) est (_ _^_en // request + qu) este (X_ _^_en // requested, requester + _) even (X _^_en // forever, however + _) ever _^_en // forever, however + oC) ever _^_en // forever, however + _) eye _^_en .group è - Z) ème iEm - è E - ès (_ E -Ar) ès (_ Es -m) ès (_ Es -n) ès (_ Es -p) ès (_ Es + Z) ème iEm + è E + ès (_ E + Ar) ès (_ Es + m) ès (_ Es + n) ès (_ Es + p) ès (_ Es .group ë - u) ë // ambiguë - ë E // citroën noël + u) ë // ambiguë + ë E // citroën noël .group f - f f - f (f - _ner) f (X - _neu) f (_ans v // liaison: neuf ans - _neu) f (_heures v + f f + f (f + _ner) f (X + _neu) f (_ans v // liaison: neuf ans + _neu) f (_heures v // group f: English section - _) fire _^_en - fly _^_en - _) frame _^_en - fter (_ _^_en + _) fire _^_en + fly _^_en + _) frame _^_en + fter (_ _^_en .group g - g g - g (Y Z + g g + g (Y Z - su) gg (Y gZ // suggérer suggestif - gg g // agglomérer - ai) gni n^ // craignions châtaignier - 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 + su) gg (Y gZ // suggérer suggestif + gg g // agglomérer + ai) gni n^ // craignions châtaignier + gn nj // agneau +_wa) gner (_ gnEr + 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 + vin) gt (_A t // liaison: vingt ans - vin) gt (_un - vin) gt (_deux t - vin) gt (_trois t //liaison: vingt-trois - vin) gt (_quatr t - vin) gt (_cinq t - vin) gt (_six t - vin) gt (_sept t - vin) gt (_huit t - vin) gt (_neuf t - vin) gt (_neuvi t + vin) gt (_un + vin) gt (_deux t + vin) gt (_trois t //liaison: vingt-trois + vin) gt (_quatr t + vin) gt (_cinq t + vin) gt (_six t + vin) gt (_sept t + vin) gt (_huit t + vin) gt (_neuf t + vin) gt (_neuvi t - gt (_ // vingt doigts -An) gt (A t // vingtaine doigté + gt (_ // vingt doigts + An) gt (A t // vingtaine doigté - gu (i g // anguille - ai) gui (l gw^i // aiguillage - in) gui (s gw^i // linguiste - g (C g + gu (i g // anguille + ai) gui (l gyi // aiguillage + in) gui (s gyi // linguiste + g (C g - _ran) g (_ // rang - _san) g (_ // sang - étan) g (_ // étang - _lon) g (_ // long - bour) g (_ // Strasbourg + _ran) g (_ // rang + _san) g (_ // sang + étan) g (_ // étang + _lon) g (_ // long + bour) g (_ // Strasbourg - g (_ g // grog gag goulag + g (_ g // grog gag goulag // group g: English section - _) game (X _^_en - girl _^_en // girl - gy (_ _^_en + _) game (X _^_en + girl _^_en // girl + gy (_ _^_en .group h -_) h _| -_) h (abi // habit, habilleur -_) h (allo // hallogène -_) h (ame // hameçon -_) h (andr // handroïde -_) h (arm // harmonie -_) h (el // hellène -_) h (éb // hébreux -_) h (ect // hectare -_) h (él // hélice -_) h (erb // herbe -_) h (éCa // hématie -_) h (érit // hériter -_) h (ésit // hésiter -_) h (eure // heure -_) h (iber // hibernation -_) hi (A j // hier -_) h (ippo // hippodrome -_) h (iro // hirondelle -_) h (ist // histoire -_) h (iv // hiver -_) h (omm // homme -_) h (onn // honneur -_) h (ôp // hôpital -_) h (os // hostile -_) h (ora // horaire -_) h (orip // horipeau -_) h (oriz // horizon -_) h (oro // horoscope -_) h (orlo // horloge -_) h (orr // horreur -_) h (ôt // hôtel -_) h (uil // huile -_) h (uiss // huissier -_) h (uitr // huître -_) h (uma // humain -_) 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 - _) hypra (@P5 ipra - h // ahuri + _) h _| + _) h (abi // habit, habilleur + _) h (allo // hallogène + _) h (ame // hameçon + _) h (andr // handroïde + _) h (arm // harmonie + _) h (el // hellène + _) h (ect // hectare + _) h (erb // herbe + _) h (é + _) h (éris _| + _) h (éro _| + _) h (eure // heure + _) h (iber // hibernation + _) hi (A _|j // hier + _) h (ippo // hippodrome + _) h (iro // hirondelle + _) h (ist // histoire + _) h (iv // hiver + _) h (omm // homme + _) h (onn // honneur + _) h (ô // hôpital + _) h (os // hostile + _) h (ora // horaire + _) h (orip // horipeau + _) h (oriz // horizon + _) h (oro // horoscope + _) h (orlo // horloge + _) h (orr // horreur + _) h (uil // huile + _) h (uiss // huissier + _) h (uitr // huître + _) h (umA // humain + _) h (umC // humble + _) hy (A j + haus (_ o2s //blockhaus + heim (_ ajm + _) h (y // hypermarché + _) hyper (@P5 ipEr + _) hyper (_ ipEr + _) hypra (@P5 ipra + h // ahuri // group h: English section -_) half _^_en - here (_ _^_en // here + _) half _^_en + here (_ _^_en // here .group i - i i // cri + i i // cri - C) i (erA i - C) ien (t_ i - 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 jA~ // émolient - vén) ien (C jA~ // inconvénient - or) ien (t jA~ // orient, orienter - ot) ien (t_ jA~ // quotient + C) i (erA i + C) ien (t_ i + dév) ien (t_ i + t) ien (K_ jE~ // tient + v) ien (K_ jE~ // vient + at) ien (t_ jA~ // patient + cip) ien (C jA~ // récipient + cl) ien (C iA~ // client + mol) ien (C jA~ // émolient + vén) ien (C jA~ // inconvénient + or) ien (t iA~ // orient, orienter + ot) ien (t_ jA~ // quotient - i (e_ i - _) ill il // illégal - ill (_ il // Bill - _C) ill (y_ il // Billy - aigu) ill ij // aiguille - anqu) ill il // tranquille - c) ill (i il - dist) ill il // distiller - _L05) ill il // Lille, mille, ville, william - osc) ill il // osciller - gu) ill ij // guillaume - qu) ill ij // quille - A) ill j // caillou - C) ill ij // famille - a) il (_ j // bail - e) il (_ j - gt) i (m aj - u) il (_ j // deuil - L01_f) ils (_ is // fils (enfant) + i (e_ i + _) i (ce@ aj // iceberg + _) ill il // illégal + ill (_ il // Bill + _C) ill (y_ il // Billy + aigu) ill ij // aiguille + anqu) ill il // tranquille + c) ill (i il + dist) ill il // distiller + _L05) ill il // Lille, mille, ville, william + osc) ill il // osciller + gu) ill ij // guillaume + qu) ill ij // quille + A) ill j // caillou + C) ill ij // famille + a) il (_ j // bail + e) il (_ j + gt) i (m aj + u) il (_ j // deuil + L01_f) ils (_ is // fils (enfant) - imm imm // immaculé - im (_ im // karim - im (C E~ // timbre - w) in in // winrar - inct (_ E~ // distinct - in (h in // inhumain - in (kX iN // link - in (n i // innombrable - in (C E~ // vingt - in (_ E~ // vin - ing (_ iN - ing (s iN - ing (to iN - _) infra (sP5 E~fra - _) inter (@@P5 E~tEr - _) interr (A E~tEr - _) inter (_ E~t'Er - _) inter (ne_ E~t'Er - _) intra (neP5 E~tra - _) intra (uP5 E~tra - C) is (_ i - Kir) is (_ is - bor) is (_ is - dor) is (_ is - tor) is (_ is - fl) irt Wrt - otl) i (neX aj - onl) i (ne_ aj - offl) i (ne_ aj - dr) i (ve aj - pr) int (_ int + imm imm // immaculé + im (_ im // karim + im (C E~ // timbre + w) in in // winrar + inct (_ E~ // distinct + in (h in // inhumain + in (kX iN // link + in (n i // innombrable + in (C E~ // vingt + in (_ E~ // vin + ing (_ iN + ing (s iN + ing (to iN + _) infra (sP5 E~fra + _) inter (@@P5 E~tEr + _) interr (A E~tEr + _) inter (_ E~t'Er + _) inter (ne_ E~t'Er + _) intra (neP5 E~tra + _) intra (uP5 E~tra + C) is (_ i + Kir) is (_ is + bor) is (_ is + dor) is (_ is + tor) is (_ is + fl) irt Wrt + otl) i (neX aj + onl) i (ne_ aj + offl) i (ne_ aj + dr) i (ve aj + pr) int (_ int // group i: English section - ibuter (X _^_en - iev _^_en - ife (_ _^_en - igh _^_en - iven (_ _^_en - ind (X _^_en // find, mind - _C) ind (erX _^_en // finder - AC) ind (erX _^_en // reminder - ize (X _^_en // realize - _bAl) i (ze i - ram_f) i (le _^_en + ibuter (X _^_en + iev _^_en + ife (_ _^_en + igh _^_en + iven (_ _^_en + ind (X _^_en // find, mind + _C) ind (erX _^_en // finder + AC) ind (erX _^_en // reminder + ize (X _^_en // realize + _bAl) i (ze i + ram_f) i (le _^_en + +.group ï + ï i // naïf + A) ï (_ j + A) ïe (_ j + A) ï (lA j + + + ïn (K E~ // coïncidence + ma) ïs (_ is // maïs + .group j - j Z // adjoint joujoux - _) j' (P2v Z - _) jazz dZaz - _) j (obK dZ - _) j (ohK dZ - _) jusqu' (P6 Zysk + j Z // adjoint joujoux + _) j' (P2v Z + _) jazz dZaz + _) j (obK dZ + _) j (ohK dZ + _) jusqu' (P6 Zysk .group k - k k // kafka + k k // kafka // group k: English section - ke (_ _^_en // make, take - ke (s_ _^_en // makes, takes - ke (rX _^_en // maker - ke (nX _^_en // taken + ke (_ _^_en // make, take + ke (s_ _^_en // makes, takes + ke (rX _^_en // maker + ke (nX _^_en // taken .group l - l l // lit - ll l // aller - _) l' (P2 l - au) lt // hérault - uCi) l (_ // outil, fusil - nti) l (_ // gentil - nti) lh j // gentilhomme - ui) ll j // juillet - _) lorsqu' (P7 lorsk + l l // lit + ll l // aller + _) l' (P2 l + au) lt // hérault + uCi) l (_ // outil, fusil + nti) l (_ // gentil + nti) lh j // gentilhomme + ui) ll j // juillet + _) lorsqu' (P7 lorsk // group l: English section - less (_ _^_en // noiseless - _) live _^_en - @) loud (_ _^_en - ll (X _^_en + less (_ _^_en // noiseless + _) live _^_en + @) loud (_ _^_en + ll (X _^_en .group m - m m // film - mm m // pomme - _) m' (P2v m - _) mc (@P2 mak - _) ms (P2 EmEs - master (_S6 mastYr + m m // film + mm m // pomme + _) m' (P2v m + _) mc (@P2 mak + _) ms (P2 EmEs + master (_S6 mastYr // group m: English section - _) mail (_ _^_en // mailer - mov (ieX _^_en // move, movy + _) mail (_ _^_en // mailer + mov (ieX _^_en // move, movy .group n - n n // une - nn n - ng (_ N + n n // une + nn n + ng (_ N - _) n' (P2v n + _) n' (P2v n + _wAC) ner (_ nEr - _) n (_° nymero - _) neuro (@@P5 nYro - _) nvda (P4 Envedea + _) n (_° nymero + _) neuro (@@P5 nYro + _) nvda (P4 Envedea .group o - br) oc (_ o // broc - cr) oc (_ o // escroc - on (n o - ls) on (_ on - Cst) on (_ on - _) os (_ os - _v) os (gY o2 - s_) os (_ o - x_) os (_ o - o (t_ o + br) oc (_ o // broc + cr) oc (_ o // escroc + on (n o + ls) on (_ on + Cst) on (_ on + _) os (_ os + _v) os (gY o2 + s_) os (_ o + x_) os (_ o + o (t_ o - oe (ll w^a // moelleux - oe (i Y // oeil - _) oe (C Y // oesophage - _ph) oe (C e // phoetus - _ph) oe (n_ Y // phoen - oeu Y // voeu - oeud Y // noeud - oeufs (_ Y // oeufs boeufs - oeu (x Yz2 // voeux coeur - o (eC o // coefficient - _) oi (gnon o // oignons - oin (C wE~ - oin (_ wE~ // coin - oi w^a // poil - oê (l w^a // poêle - om (C O~ // bombe - om (m o // nommer - om (ni om // omnibus - n) om (X O~ // nom - om (_ om // www.web.com - s) om (n om + oe (ll wa // moelleux + oe (i Y // oeil + _) oe (C Y // oesophage + _ph) oe (C e // phoetus + _ph) oe (n_ Y // phoen + oeu Y // voeu + oeud Y // noeud + oeufs (_ Y // oeufs boeufs + oeu (x Yz2 // voeux coeur + o (eC o // coefficient + _) oi (gnon o // oignons + oin (C wE~ + oin (_ wE~ // coin + oi wa // poil + oê (l wa // poêle + om (C O~ // bombe + om (m o // nommer + om (ni om // omnibus + n) om (X O~ // nom + om (_ om // www.web.com + s) om (n om - on (K O~ // mon - on (t_ O~t2 // mont vont sont - _m) ont (pAC O~ // Montpellier - _m) ont (rAal O~ // Montreal - onsh (A O~z // bonshommes - onh (A on // bonhomme - _) on (z _|O~ // onze, onzi�me + on (K O~ // mon + on (t_ O~t2 // mont vont sont + _m) ont (pAC O~ // Montpellier + _m) ont (m O~ + _m) ont (rAal O~ // Montreal + onsh (A O~z // bonshommes + onh (A on // bonhomme + _) 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 + _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 - z) oo o // zoo - z) oo (C oo // zoologue - z) oo (m u // zoom - _gal) op (_ o // galop + alc) oo (l o // alcool + z) oo o // zoo + z) oo (C oo // zoologue + z) oo (m u // zoom + _gal) op (_ o // galop - _sir) op (_ o // sirop + _sir) op (_ o // sirop - v) ost (_ o // Prévost - _C) oup (_ u // coup, loup + v) ost (_ o // Prévost + _C) oup (_ u // coup, loup - ou u // hibou brouillard - oue (mA u // d‚vouement -_) ou (at _|u // ouate - où u // où - oû u // coûter - oy (A w^aj // noyer voyelles -_b) oy (co oj // boycott -_c) oy (o oi // coyote - _y) o (y o - oy w^a - o (_ o // zorro allégro - o (z_ o // berlioz - o o - _sC) ot ot + ou u // hibou brouillard + ou (in w // pingouin + oue (mA u // dvvouement + _) ou (at _|u // ouate + où u // où + oû u // coûter + oy (A waj // noyer voyelles + _b) oy (co oj // boycott + _c) oy (o oi // coyote + _y) o (y o + oy wa + o (_ o // zorro allégro + o (z_ o // berlioz + o o + _sC) ot ot // 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 - oun (C _^_en // bounce, found - _) over _^_en // over - ow (e _^_en // flower, power - ow (X _^_en - oy (X _^_en // boy, toy + 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 + oun (C _^_en // bounce, found + _) over _^_en // over + ow (e _^_en // flower, power + ow (X _^_en + oy (X _^_en // boy, toy .group ô - ôt (_ o2 // rôt - ô o2 // cône + ôt (_ o2 // rôt + ô o2 // cône .group p - p p // pas - _) para (pCP4 para - _) photo (@P5 foto - _) poly (@P4 poli - _) post (KP4 post - _) post (ACCP4 post - _) pseudo (@P6 psYdo - p (p // appliquer - pays pE2iz2 // pays, paysage - ph f // phrase + p p // pas + _) para (pCP4 para + _) photo (@P5 foto + _) poly (@P4 poli + _) post (KP4 post + _) post (ACCP4 post + _) pseudo (@P6 psYdo + p (p // appliquer + pays pE2iz2 // pays, paysage + ph f // phrase - m) ps (_ // temps champs - r) ps (_ // corps + m) ps (_ // temps champs + r) ps (_ // corps - cham) p (_ // champ + cham) p (_ // champ - cam) p (_ // camp + cam) p (_ // camp - dra) p (_ // drap - _) psych (@P5 psik - _) psych (iCP5 psiS - _) psych (AA_P5 psiS + dra) p (_ // drap + _) psych (@P5 psik + _) psych (iCP5 psiS + _) psych (AA_P5 psiS - ba) p (t // baptiser - com) p (t // compte + ba) p (t // baptiser + com) p (t // compte - C) pt (_ // prompt exempt + C) pt (_ // prompt exempt - se) pt (_ t // sept - se) pt (iè t // septième - scul) p (t // sculpture - _) puisqu' (P7 pw^isk + se) pt (_ t // sept + se) pt (iè t // septième + scul) p (t // sculpture + _) puisqu' (P7 pyisk // group p: English section - pad (_ _^_en - plug _^_en // plug - printer (_ _^_en // printer + pad (_ _^_en + plug _^_en // plug + printer (_ _^_en // printer .group q - q k // coq - _) qu' (AP3 k - _) qua (d kwa // quadrature - _) qua (tA kwa // quaternaire - _) quan (tA kwA~ // quantique - _) qua (drill ka // quadriller - _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 - qu k // quatre - _) que (_ k@ // que - n) q (_ k // cinq cent + q k // coq + _) qu' (AP3 k + _) qua (d kwa // quadrature + _) qua (tA kwa // quaternaire + _) quan (tA kwA~ // quantique + _) qua (drill ka // quadriller + _a) qua kwa // aquarium + _a) qu (if ku // aquifère + _A) qui (dist kyi // équidistant + _A) qui (lat kyi // équilatéral + _C) qua kwa // squale square + _A) qua kwa // équateur + dé) qua kwa // adequate + _) qua (rtz kwa // quartz + qu k // quatre + _) que (_ k@ // que + n) q (_ k // cinq cent // group q: English section - quick _^_en // quick, quickly + quick _^_en // quick, quickly .group r - _su) rr rr // surréaliste -cou) rr rr // courrai -mou) rr rr // mourrai -cou) rr (i r // courrier -cou) rr (o r // courroie - r r // rien - rr r - _) radio (@P5 radio + _su) rr rr // surréaliste + cou) rr rr // courrai + mou) rr rr // mourrai + cou) rr (i r // courrier + cou) rr (o r // courroie + r r // rien + rr r + _) radio (@P5 radio // group r: English section - _) real _^_en - resen _^_en - rst (_ _^_en - _) rule _^_en + _) real _^_en + resen _^_en + rst (_ _^_en + _) rule _^_en .group s - s s // verser sien + s s // verser sien - s (_S1 z2 - stein (_ Stajn + s (_S1 z2 + stein (_ Stajn - _) s' (P2v s // s'amène - _) s' (esXP2v s // s'amène - sç s // immisça - sch (ie sk // schierzo - sch (iz sk // schizophrène - sch (ol sk - sch (oo sk - schu Su + _) s' (P2v s // s'amène + _) s' (esXP2v s // s'amène + sç s // immisça + sch (ie sk // schierzo + sch (iz sk // schizophrène + sch (ol sk + sch (oo sk + schu Su - sch S // schéma - dé) sh (A z // déshabiller - sh S // shérif - ss s // assez + sch S // schéma + dé) sh (A z // déshabiller + sh S // shérif + ss s // assez - ai) s (em s // vraisemblable - aCè) s (_ s - nè) s (_ s - kansa) s (_ s // Kansas, Arkansas - ub) s (is z // subsister - tran) s (A z // transition - tran) s (e s // transe - tran) s (ub s // transubstantiation - A) s (A z // baiser - A) s (oft s // microsoft - A) s (ol_ s // tournesol - _) socio (@P5 sosio - _) super (@@P5 sypEr - _) super (_ sypEr - _) supra (@P5 sypra - batro) s (_ s - océro) s (_ s - scien (t siA~ // conscient scientifique - sql (_S3 EskyEl + ai) s (em s // vraisemblable + aCè) s (_ s + nè) s (_ s + kansa) s (_ s // Kansas, Arkansas + ub) s (is z // subsister + tran) s (A z // transition + tran) s (e s // transe + tran) s (ub s // transubstantiation + A) s (A z // baiser + A) s (oft s // microsoft + A) s (ol_ s // tournesol + _) socio (@P5 sosio + _) super (@@P5 sypEr + _) super (_ sypEr + _) supra (@P5 sypra + batro) s (_ s + océro) s (_ s + scien (t siA~ // conscient scientifique + sql (_S3 EskyEl - _u) s (_ s - Cu) s (_ - Abu) s (_ s - _Abu) s (_ - mbu) s (_ s - _cACpu) s (_ s - Acu) s (_ s - docu) s (_ - écu) s (_ - asu) s (_ s - odu) s (_ s - gu) s (_ s - igu) s (_ // aigus - iu) s (_ s // radius - ïu) s (_ s // laïus - Culu) s (_ s // cumulus - plu) s (_ z2 // plus, surplus - ylu) s (_ s // stylus - mu) s (_ s - _mu) s (_ - ému) s (_ - opu) s (_ s // opus, octopus - Aru) s (_ s // virus - aru) s (_ // disparus - ouru) s (_ // courus - Anu) s (_ s // bonus, tonus - enu) s (_ // menus, venus - psu) s (_ s // lapsus - cessu) s (_ s // processus + _u) s (_ s + Cu) s (_ + Abu) s (_ s + _Abu) s (_ + mbu) s (_ s +_cACpu) s (_ s + Acu) s (_ s + docu) s (_ + écu) s (_ + asu) s (_ s + odu) s (_ s + gu) s (_ s + igu) s (_ // aigus + iu) s (_ s // radius + ïu) s (_ s // laïus + Culu) s (_ s // cumulus + plu) s (_ z2 // plus, surplus + ylu) s (_ s // stylus + mu) s (_ s + _mu) s (_ + ému) s (_ + opu) s (_ s // opus, octopus + Aru) s (_ s // virus + aru) s (_ // disparus + ouru) s (_ // courus + Anu) s (_ s // bonus, tonus + enu) s (_ // menus, venus + psu) s (_ s // lapsus + cessu) s (_ s // processus - atu) s (_ s // stratus motus - ctu) s (_ s // cactus - etu) s (_ s - aitu) s (_ - itu) s (_ s - ltu) s (_ s // altus - otu) s (_ s // motus - Cutu) s (_ s + atu) s (_ s // stratus motus + ctu) s (_ s // cactus + etu) s (_ s + aitu) s (_ + itu) s (_ s + ltu) s (_ s // altus + otu) s (_ s // motus + Cutu) s (_ s - _tou) s (_ s + _tou) s (_ s - s (b z // sbire - s (d z - s (g z - s (j z - s (v z -_tou) s (_Ces_ -_tou) s (_des_ s -_tou) s (_Cos_ -_tou) s (_leurs_ + s (b z // sbire + s (d z + s (g z + s (j z + s (v z + _tou) s (_Ces_ + _tou) s (_des_ s + _tou) s (_Cos_ + _tou) s (_leurs_ // group s: English section - CA) sh (_ _^_en // punish - sh (_ _^_en - sh (Ap _^_en // shop, ship - sh (At _^_en // shut, shot - _) sky _^_en - _) smil _^_en // smile, smiley - spy _^_en + CA) sh (_ _^_en // punish + sh (_ _^_en + sh (Ap _^_en // shop, ship + sh (At _^_en // shut, shot + _) sky _^_en + _) smil _^_en // smile, smiley + spy _^_en .group t - t t // bataille -_) t (_ te --) t (- t2 - _) t' (P2v t -Vn) t (_ t2 -A) t (- t2 -VCi) t (_ t2 - t (_ - peti) t (_ t2 - _) th t // thon - ts (_S1 z2 // silent at end of word unless next word starts with a vowel - C) t (_ t // compost watt soft script malttact abrupt - ki) t (_ t // kit - n) t (_ - r) t (_ + t t // bataille + _) t (_ te + -) t (- t2 + _) t' (P2v t + Vn) t (_ t2 + A) t (- t2 + VCi) t (_ t2 + t (_ + peti) t (_ t2 + _) th t // thon + ts (_S1 z2 // silent at end of word unless next word starts with a vowel + C) t (_ t // compost watt soft script malttact abrupt + ki) t (_ t // kit + n) t (_ + r) t (_ - aul) t (_ // Renault - grani) t (_ t + aul) t (_ // Renault + grani) t (_ t - _) télé (@P4 tele - _) tele tele - _) thermo (@P6 tErmo + _) télé (@P4 tele + _) tele tele + _) thermo (@P6 tErmo - tt t // attitude + tt t // attitude - s) th (m // asthme - th t // théorie - hui) t (_ t3 // huit + s) th (m // asthme + th t // théorie + hui) t (_ t3 // huit - _) t t // tien tiers - an) t (ia t // Santiago - C) t (ieu s // contentieux + _) t t // tien tiers + an) t (ia t // Santiago + C) t (ieu s // contentieux - t (io_ s // ratio + t (io_ s // ratio - Ama) t (ieX s // diplomatie - a) t (ia s // spatial - en) t (ia s // confidentialit� - lbu) t (iA s // balbutiait - r) t (ia s // impartial - ini) t (iA s // initier - p) t (ia s // nuptial - an) t (iat s // transsubstantiation + Ama) t (ieX s // diplomatie + a) t (ia s // spatial + en) t (ia s // confidentialit� + lbu) t (iA s // balbutiait + r) t (ia s // impartial + ini) t (iA s // initier + p) t (ia s // nuptial + an) t (iat s // transsubstantiation - t (ion s // programmation - V) t (ion t // verbes - ache) t (ion t // achetions, rachetions - ai) t (ion t // souhaitions, traitions - oi) t (ion t // boitions - si) t (ion s // position - chan) t (ion t // chantions, d�chantions - Cisi) t (ion t // visitions - ci) t (ions t // citions - comp) t (ions t // comptions, escomptions - CAnc) t (ion s // fonctionner, ponctionner - Ce) t (ions t // jetions, rejetions - Vec) t (ion t // respections - Vep) t (ion t // respections - éCi) t (ions t // hésitions, héritions - éti) t (ion s // pétition - Vé) t (ion t // répétions - habi) t (ions t // habitions - imi) t (ions t // imitions, limitions - VAu) t (ion t // ajoutions - lu) t (ion s // févolution - Apor) t (ion t // emportions, exportions - opor) t (ion s // proportion - Cpor) t (ion t // emportions, exportions - sor) t (ion t // sortions - rê) t (ion t // arrêtions, apprêtions + t (ion s // programmation + V) t (ion t // verbes + ache) t (ion t // achetions, rachetions + ai) t (ion t // souhaitions, traitions + oi) t (ion t // boitions + si) t (ion s // position + chan) t (ion t // chantions, d�chantions + Cisi) t (ion t // visitions + ci) t (ions t // citions + comp) t (ions t // comptions, escomptions + CAnc) t (ion s // fonctionner, ponctionner + Ce) t (ions t // jetions, rejetions + Vec) t (ion t // respections + Vep) t (ion t // respections + éCi) t (ions t // hésitions, héritions + éti) t (ion s // pétition + Vé) t (ion t // répétions + habi) t (ions t // habitions + imi) t (ions t // imitions, limitions + VAu) t (ion t // ajoutions + lu) t (ion s // févolution + Apor) t (ion t // emportions, exportions + opor) t (ion s // proportion + Cpor) t (ion t // emportions, exportions + sor) t (ion t // sortions + rê) t (ion t // arrêtions, apprêtions - s) t (ion t // gestion - _ta) t (ion t // tation - sen) t (ion_ t // sentions, ressentions - t) t (ion t // combattions + s) t (ion t // gestion + _ta) t (ion t // tation + sen) t (ion_ t // sentions, ressentions + t) t (ion t // combattions - t (iel s // partiel - t (ieu s // ambitieux - t (iAm s // patiemment + t (iel s // partiel + t (ieu s // ambitieux + t (iAm s // patiemment - mar) t (ien s // martien vénitienne - a) t (ien s - i) t (ien s - o) t (ien s + mar) t (ien s // martien vénitienne + a) t (ien s + i) t (ien s + o) t (ien s - ipé) t (ieX s - amé) t (ieX s - nu) t (ieX s // minutie - ni) tien (t_ si - bu) tien (t_ si + ipé) t (ieX s + amé) t (ieX s + nu) t (ieX s // minutie + ni) tien (t_ si + bu) tien (t_ si - cra) t (ieX s // démocratie + cra) t (ieX s // démocratie - ner) t (ie s // inertie + ner) t (ie s // inertie - _ce) t (_ t - _transA) t (_ t + _ce) t (_ t +_transA) t (_ t // group t: English section - C) th (_ _^_en // month - _) th (eX _^_en // the, then - _) th (aX _^_en // than, that - _) time _^_en - tle (_ _^_en - too _^_en - ttl _^_en - try (_ _^_en // try, country - sCar) t (_ _^_en // smart, start - sCar) t (er_ _^_en // starter - _) tun (AX _^_en + C) th (_ _^_en // month + _) th (eX _^_en // the, then + _) th (aX _^_en // than, that + _) time _^_en + tle (_ _^_en + too _^_en + ttl _^_en + try (_ _^_en // try, country + sCar) t (_ _^_en // smart, start + sCar) t (er_ _^_en // starter + _) tun (AX _^_en .group u - u y // cruel nuage brut - ui w^i // nuit, fuite - uin (K yE~ // juin - _s) u (rfX Y - _bl) u (ff Y - _s) u (rfeX Y - uy (A w^ij + u y // cruel nuage brut + ui yi // nuit, fuite + uin (K yE~ // juin + _s) u (rfX Y + _bl) u (ff Y + _s) u (rfeX Y + uy (A yij - C) ucci utSi // capuccino - c) ueill Yj // cueillir - c) ueil (_ Yj // recueil - _g) ua wa - ag) ua (_ wa - Ctig) ua (_ wa - _c) ul (_ y - _) ultra (P5 yltra - g) u (ay u - g) ueill Yj // orgueilleux - haïk) u (X u + C) ucci utSi // capuccino + c) ueill Yj // cueillir + c) ueil (_ Yj // recueil + _g) ua wa + ag) ua (X wa + Ctig) ua (_ wa + _c) ul (_ y + _) ultra (P5 yltra + g) u (ay u + g) ueill Yj // orgueilleux + 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 W // run, autorun - pr) unt (_ W~ // emprunt - um (_ Om // album - f) um (_ W~ // parfum - um (b W~ // humble - um (p W~ - un (C W~ // emprunt lundi - un (n y // tunnel - CC) un (_ W~ // brun - uc) un (_ W~n2 // aucun - un (_ W~n2 // un avion - _h) un (_ W~ // hun + C) u (bX Y // hub, club + C) u (gX Y // bug, mug + _n) u (rse Y // nurse + r) u (nX W // run, autorun + pr) unt (_ W~ // emprunt + um (_ Om // album + f) um (_ W~ // parfum + um (b W~ // humble + um (p W~ + un (C W~ // emprunt lundi + un (n y // tunnel + CC) un (_ W~ // brun + uc) un (_ W~n2 // aucun + un (_ W~n2 // un avion + _h) un (_ W~ // hun - fl) ux (_ y // flux, reflux - g) u (A // fatigue - g) u (ï y // ambiguïté - g) u (ë y // ambiguë - uz (z Y + fl) ux (_ y // flux, reflux + g) u (A // fatigue + g) u (ï y // ambiguïté + g) u (ë y // ambiguë + uz (z Y // group u: English section - _b) usi _^_en // business, businessman - C) ui (ce _^_en // produice, juice - umber (_ _^_en - ump (_ _^_en - unch _^_en - under _^_en // under, understand, thunder - _C) un (_ _^_en - _C) un (ny _^_en - _) up (C _^_en // upper, update - up (_ _^_en // setup - urn (X _^_en // burn, turn - ust (_ _^_en // just, trust + _b) usi _^_en // business, businessman + C) ui (ce _^_en // produice, juice + umber (_ _^_en + ump (_ _^_en + unch _^_en + under _^_en // under, understand, thunder + _C) un (_ _^_en + _C) un (ny _^_en + _) up (C _^_en // upper, update + up (_ _^_en // setup + urn (X _^_en // burn, turn + ust (_ _^_en // just, trust .group ü - ü y - üs (_ ys - üm (_ om - ül (_ yll + ü y + üs (_ ys + üm (_ om + ül (_ yll .group v - v v - vers (_ vErz2 -dri) ver (X vYr - view (X vju - _) view (A vjuv + v v + vers (_ vErz2 + dri) ver (X vYr + view (X vju + _) view (A vjuv // group v: English section - voice (X _^_en - void (_ _^_en - vy (_ _^_en + voice (X _^_en + void (_ _^_en + vy (_ _^_en .group w - w w -_) w (A _|w - w (agon v // wagon - wa (ve_ wE:j // wave - wa (re_ wE: // hardware software + w w + _) w (A _|w + w (ag v // wagon + wa (ve_ wE:j // wave + wa (re_ wE: // hardware software // group w: English section - e) w (K _^_en - _) wan _^_en - wr _^_en // write - way _^_en // way, away - _) wir _^_en // wire - winn _^_en // winner - wise _^_en - with _^_en - wor _^_en + e) w (K _^_en + _) wan _^_en + wr _^_en // write + way _^_en // way, away + _) wir _^_en // wire + winn _^_en // winner + wise _^_en + with _^_en + wor _^_en .group x - x ks - xx ks - _) x (A gz // xylophone - _) x (CP1 iks // xylophone - xml (_S3 _|iksEmEl - e) x (A gz // exagérer exemple - L03e) x (A ks // annexe, vexer - _ine) x (A gz - _e) x (h gz // exhumer + x ks + xx ks + _) x (A gz // xylophone + _) x (CP1 iks // xylophone + xml (_S3 _|iksEmEl + e) x (A gz // exagérer exemple + L03e) x (A ks // annexe, vexer + _ine) x (A gz + _e) x (h gz // exhumer - ai) x (_ // voix paix prix - oi) x (_ - ri) x (_ + ai) x (_ // voix paix prix + oi) x (_ + ri) x (_ - _soi) x (A s // soixante + _soi) x (A s // soixante - Au) x (_ z2 // faux feux choux + Au) x (_ z2 // faux feux choux - _au) x (quel // auxquels + _au) x (quel // auxquels - _di) x (_neuf z // liaison: dix-neuf - _di) x (_ z3 - _si) x (_neu s // liaison: six-neuf - _si) x (_ z3 + _di) x (_neuf z // liaison: dix-neuf + _di) x (_ z3 + _si) x (_neu s // liaison: six-neuf + _si) x (_ z3 - di) x (iè z // dixième - si) x (iè z // sixième - deu) x (iè z // deuxième + di) x (iè z // dixième + si) x (iè z // sixième + deu) x (iè z // deuxième .group y - y i // cryogénique myope - _) y (A _|j // yak - _) y (eu j // yeux - _) yacht _^_en // yacht, yachtman + y i // cryogénique myope + _) y (A _|j // yak + _) y (eu j // yeux + _) yacht _^_en // yacht, yachtman - _) yahoo (P5 ja'u - ym (K E~ // tympan - y (nn i - y (nA i - X) ys (_ is - yx (_ iks + _) yahoo (P5 ja'u + ym (K E~ // tympan + y (nn i + y (nA i + X) ys (_ is + yx (_ iks - yn E~ // laryngite + yn E~ // laryngite .group z - z z - t) z s // tzigane - t) zer (_ zEr - C) zer (_ zWr + z z + t) z s // tzigane + t) zer (_ zEr + C) zer (_ zWr .group // accented characters, these could have their own groups if they need more rules - â a: - ñ n^ + â a: + ñ n^ - é e // été - ê E // fête - ï i // naïf - ïn (K E~ // coïncidence - ïs (_ is // maïs + é e // été + ê E // fête - ö o // angström - û y: // fûtes - ü y // bülcher + ö o // angström + û y: // fûtes + ü y // bülcher // symbols that are normally spoken when reading text - , (D pilk:u - $ dolar - ° d@gre - _n_) ° // n° + , (D pilk:u + $ dolar + ° d@gre + _n_) ° // n° diff --git a/dictsource/hu_list b/dictsource/hu_list index 3278bf8e..3d82521b 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -147,6 +147,9 @@ _#-vel e:vEl $alt2 _#-val a:vAl $alt2 _#-ánál a:na:l $alt2 _#-énél e:ne:l $alt2 +_#-ik || //This is not a mistake. This is a special ordinal number suffix, with not need insert replace word suffix. For example: +//If a string containing the 17-ik string, need spokening tizenhetedik phoneme. If the suffix rule not containing the || rule but containing another +//replace word, the spokened suffix is mistaked, for example tizenhetedikedik if this rule containing the Edik phoneme, not || phoneme. (1-e) elseje $text $alt2 (1-én) elsején $text $alt2 (1-jén) elsején $text $alt2 @@ -406,7 +409,7 @@ stb SAtYb:i $hasdot u.n u:JnEvEzEt: $hasdot ú.n u:JnEvEzEt: $hasdot vö v'EZd||_'Yss2E -(u . i .) u:i: +(u . i .) $abbrew @@ -977,6 +980,16 @@ lennénk $unstressend lennétek $unstressend hitt $unstressend fő $unstressend +dúl $unstressend +dúlt $unstressend +kapott $unstressend +nyakú $unstressend +rúgást $unstressend +kapni $unstressend +kulcs $unstressend +nyit $unstressend +lő $unstressend +támad $unstressend // word pairs @@ -1118,7 +1131,7 @@ _{ k'EzdY:kAptSoS $max3 _} v'e:gkAptSoS $max3 _… pontpontpont -_• fElSoR2ola:SjEl +_• liStAjEl _| fyg:Y:lEgESvonAl _> nAJob _< kiSSEb @@ -1172,7 +1185,6 @@ nato na:to: (end-of line) u:jS,oR2 - $textmode MSZP emeszpé SZDSZ eszdéesz diff --git a/dictsource/hu_rules b/dictsource/hu_rules index d22f610f..b4b3cde6 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -82,6 +82,7 @@ gyümöl) cs (zs tS fil) c (csiz ts szo) c (segély ts + _kó) c (csomó ts .group ch anar) ch (i h @@ -199,6 +200,13 @@ menetren) dsz (erű d|s rövi) d (soroz d pa) d (szerű d ná) d (suhog d + kató) d (sugár d + kalan) d (játék d + ezre) d (szem d + vé) d (jegy d + honvé) d (sereg d + va) d (szeder d + twee) d (sapk d .group dz fogó) dz (kod ts @@ -305,6 +313,7 @@ ritkasá) g (gyűjt g se) gg (fe g se) gg (be g pro) g (gyak g + se) ggr (e gR2 .group gy gy J @@ -379,6 +388,17 @@ tizene) gy (en J: a) gy (sej J e) gy (úttal J: épülete) gy (ütt J: + na) gy (salló J + _e) gy (ágy J: + nem-e) gy (ez J: //if have a nem word and used the $combine attribute in hu_list file, Espeak spokening one J phoneme, but J: is need spokening. + e) gy (idejű J: + _e) gy (idő J: + nem-e) gy (ütt J: //if have a nem word and used the $combine attribute in hu_list file, Espeak spokening one J phoneme, but J: is need spokening. + na) gy (sarló J + e) gy (azon J: + _e) gy (oldal J: + _e) gy (év J: + _e) gy (órá J: .group h h h @@ -437,6 +457,7 @@ tizene) gy (en J: készség ke:SSe:g kossuth koSu:t kossutht koSu:t: + kossuthj koSu:c: készségg ke:SSe:g: _a) kk (reditál k _) közt kYst @@ -491,6 +512,8 @@ keresztü) l (j l e) ll (ipsz l _) e) lj (ár lj ha) ll (ga l + _ta) lj (án lj + .group m @@ -836,6 +859,7 @@ kenyere) szs (ák SZ rongyo) szs (ák SZ para) sztsz (ek st|s rava) sz (ár s + _ka) sztsze st|sE .group t @@ -1027,6 +1051,22 @@ billentyűze) t (jel t szöve) t (sapk t mene) t (szél t tesz) t (cikk t + á) t (sejle t +mozdula) t (so t + kabá) t (szé t + bozó) t (so t + ezüs) tj c +fejeze) t (cím t + lan) t (szó t + á) tj (öhe t|j + kú) t (sug t + _há) ts (ág tS: + hol) t (játék t + hol) t (sápadt t + söré) t (seb t + pán) t (szél t + boo) t (sorrend t + _á) t (jöj t .group ts ts (_S2 tS //general rule with word end of ts letters @@ -1111,6 +1151,8 @@ indula) tsz (ó t|s halla) tsz (a ts: fejle) ts (ég tS: sie) tsz ts: + szemé) ts (ég tS: + ré) ts (ég tS: .group u u u @@ -1282,7 +1324,8 @@ ajándéko) z (t s rejtő) z (kö s rejtő) z (t s hango) z (t s - +szerve) z (ked s + kaló) z (ság z .group diff --git a/dictsource/nl_list b/dictsource/nl_list index 346584b1..a2124f36 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -6,6 +6,29 @@ // "letter" name, then include the letter name here, with the letter // prefixed by a _ character. +b be: +c se: +d de: +f Ef +g Qe: +h ha: +i i: +j je: +k ka: +l El +m Em +n En +p pe: +q ky +r Er +s Es +t te: +v fe: +w ve: +x Iks +y EI +z zEt + _s Es _t te: @@ -32,25 +55,25 @@ _tld t'Ild@ // punctuation -_. p8nt +. p8nt $max3 _, k'Oma: _: d'8b@l@p,8nt _; p'8ntkOm,a: / sl'As -_\ b'AkkslAs +\ b'AkkslAs _? v@-*'a:xte:k@n _! 'Wyt@-*upt,e:k@n _" 'a:nha:lInxste:k@n @ 'a:p@nst,a:rt;@ -# h'Ekj@ +# h'Ekj@ $max3 % p@-*o:s'Ent _( h'a:kj@_|'o:pe:n@n _) h'a:kj@sl'Wyt@n _{ v'irkAnt@h,a:k _} v'irkAnt@h,a:ksl'Wyt@n _- k'OpElt,e:k@n -+ pl'8s -* st'E*rEt;@ ++ pl'8s $max3 +* st'E*rEt;@ $max3 __ l'IgEntst@-*'e:pj@ € 'Y:*o:t,e:k@n @@ -58,7 +81,7 @@ __ l'IgEntst@-*'e:pj@ // numbers _0 n'8l _1 'e:n -_2 tv2'e: +_2 tv#'e: _3 dr'i _4 f'ir _5 f'EIf @@ -76,7 +99,7 @@ _16 z'Estin _17 z'e:f@ntin _18 'Axtin _19 n'e:x@ntin -_2X tv2'Int@x +_2X tv#'Int@x _3X d'e:rt@x _4X f'e:rt@x _5X f'EIft@x @@ -93,12 +116,30 @@ _0M4 b'iljun _0and En _dpt _k'Oma: +_ord d@ +_ord20 st@ +_1o 'I:rst@ +_2o tv#'e:d@ +_3o d'Erd@ +_4o v'ird@ +_5o v'EIfd@ +_6o z'Esd@ +_7o z'e:v@nd@ +_8o 'Axtst@ +_0Co h'OndErtst@ + + +// abbreviations +nr n8m@r +nvda $abbrev + // articles de d@ het h@t een @n - +ən @n // char.replacement for 'n +ət @t // char.replacement for 't // pronouns ik $u @@ -144,19 +185,26 @@ waar $pause // prepositions in $u+ $brk // in op $u+ $brk // in -aan $u+ $pause // at, on +aan $u+ $brk // at, on bij $u+ $pause // at, near om $u+ $brk // at -met $u+ $pause // with, by +met $u+ $brk // with, by over $u+ $pause // about na $u+ $pause // after -door $u+ $pause // through, by +naar $u+ // to +door $u+ $brk // through, by +te $u+ $brk // to tot $u+ $pause // until -uit $u+ $pause // from, out of +uit $u+ $brk // from, out of voor $u+ $pause // for, in front of -van $u+ $brk // from, of +van $u+ // from, of zonder $u+ $pause // without +// adverbs, etc. +ook $u+ // any +zo $u+ +sommige $u+ // some + // conjunctions en $u $pause // and @@ -172,7 +220,7 @@ dat $u $pause // that hoewel $pause // although of $u $pause // whether omdat $pause // because -nadat $pause // after +nadat $u $pause // after nudat $pause // now that sinds $pause // since tenzij $pause // unless @@ -188,8 +236,8 @@ zover $pause // as far as // negative -niet $u+ - +niet n,it $strend +(niet meer) _n'it||m,e:r // questions @@ -245,15 +293,55 @@ werd $u // Pronounce as English -game _^_EN -player _^_EN -the _^_EN +delete _^_EN +down _^_EN +escape _^_EN +home _^_EN +game _^_EN +items _^_EN +laptop _^_EN +page _^_EN +player _^_EN +slash _^_EN +speak _^_EN +the _^_EN +up _^_EN + + +// words where -eren is not a verb ending +ander $alt +kinder $alt +ouder $alt // pronunciation exceptions +aangrijpend $2 bourgondier burx'o:ndi:@r circuit sIrku'i +computer $2 contour ko:nt'ur eren I:*@n +ingewikkeld $3 +ingrijpend $2 +ingeval $3 +ingevolge $3 +ingrediënt $4 +ingenieur Inzj@nj'Y:r journaal Surn'a:l -kennedy kEn@dE +ongastvrij OnQAstv@-*'EI +ongelooflijk $3 +ongemakkelijk $3 +ongelukkig $3 +ongerieflijk $3 +ongrondwettig $3 +proces $2 +renaissance rEne:s'A~s@ +waarschijnlijk $2 + + +// names +Inge IN@ +Ingeborg INe:bOrx +Ingmar INmAr +Ingrid IN@-*It +kennedy kEn@dE diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 717ac02b..b0c78b95 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -1,23 +1,23 @@ // This file is UTF-8 encoded .group a - _) a (_ a: a a: a (CC A a (C_ A aa a: aai a:j + ae E: au VU ay a:j _) aan (@P3 'a:n + aa (rd_ 'a: + aire (_ 'E:r .group b - _) b (_ be: - b b + b b // auto-devoice at end-of-word bb b - b (_N p bs (_N ps _) be (@P2 b@ @@ -28,28 +28,25 @@ .group c - _) c (_ se: c (e s c (i s + c (y s c k - a) ch x - o) ch x - ch C + ch x + ck k .group d - _) d (_ de: - d d + d d // auto-devoice at end-of-word dd d dt t - d (_N t ds (_N ts .group e - _) e (_ e: e e: - C) e (_ @ + @C) e (_S1q @ + e (_ @ e (CC E e (C_ E e (r I: @@ -59,39 +56,50 @@ ee e: eeuw eU eu Y: + @) ee (rd_ 'I: + @) ee (l_ 'e: + @) ee (m_ 'e: + @) ee (rt_ 'e: @) el (_ @l + @) eld (_ @ld @) ele (_ @l@ - @) en (_ @n + @) en (_S2d @n + @) ens (_S3 @ns + @) end (_ @nd + @) ende (_ @nd@ @) er (_ @r @) ere (_ @r@ - @) eren (_ @r@n + @) er (en_$p_alt @r // where 'eren' is not a verb ending + @) eren (_ 'e:r@n + @) es (_ @s + eau o: //words with French origin _) er (@P2 Er + @) e (raar_ @ &) e (nB@ @ &) e (rC@ @ .group f - _) f (_ Ef f f ff f .group g - _) g (_ Qe: - g x - _) g Q - gg g + g Q // ph_dutch changes this to [x] before unvoiced + gg Q _) ge (@P2 Q@ _) gee Qe: + gelijk Q@lEIk _) geu QY: + _) ge (ven Qe: + _) ge (ving Qe: .group h - _) h (_ ha: h h C) h (K @@ -99,7 +107,6 @@ .group i - _) i (_ i: i i ij (+ EI i (CC I @@ -107,36 +114,33 @@ ie i ieuw iw + ie (rd_ 'i @) ig (_ @x + _) in (gP2 'In .group j - _) j (_ je: j j .group k - _) k (_ ka: k k kk k .group l - _) l (_ El l l ll l - @) lijk lIk + @) lijk (_S4 l@k &) laan (_S4 la:n .group m - _) m (_ Em m m mm m .group n - _) n (_ En n n nn n ng N @@ -144,7 +148,6 @@ .group o - _) o (_ o: o o: o (CC O o (C_ O @@ -156,24 +159,38 @@ oei uj ou VU + _) onaan (@P5 On'a:n + _) onge (@P4 ,OnQ@ _) ont (@P3 Ont _) onder Ond@r + _) ong (aarn ,OnQ' + _) ong (ans ,OnQ' + _) ong (rijpbaar ,OnQ' + _) ong (rond ,OnQ' + _) ong (unstig ,OnQ' + _) ong (uur ,OnQ' + + _) onge (diert OnQ@ // stress on 'on', not after 'ge' + _) onge (loof OnQ@ + _) onge (luk OnQ@ + _) onge (mak OnQ@ + _) onge (nade OnQ@ + _) onge (rief OnQ@ + _) onge (val OnQ@ + .group p - _) p (_ pe: p p pp p .group q - _) q (_ ky q k qu kv .group r - _) r (_ Er r r A) r (A * C) r (A @-* @@ -181,26 +198,25 @@ .group s - _) s (_ Es s s ss s sch sx sch (_ s sch (e_ s sj S + @@) s (_S1 s .group t - _) t (_ te: t t tt t tie (_ tsi + c) tie (_ si tj t; tsj tS .group u - _) u (_ y u y u (CC 8 u (C_ 8 @@ -211,29 +227,26 @@ .group v - _) v (_ fe: v v _) ver (@P3 v@r + _) ver (sie_ vEr + _) ver (der_ vEr .group w - _) w (_ ve: - w v2 + w v# .group x - _) x (_ Iks x ks .group y - _) y (_ EI y i .group z - _) z (_ zEt z z @@ -244,6 +257,3 @@ , (D k'Oma: __) - (_D m'In - . p8nt - . (. _: - \.) . diff --git a/dictsource/sv_list b/dictsource/sv_list index 6dbcb1cb..d3327f85 100755 --- a/dictsource/sv_list +++ b/dictsource/sv_list @@ -34,7 +34,7 @@ v ve: w d'8b@lve: x Eks y y: -z s'E:ta2 +z s'E:ta _é $accent diff --git a/dictsource/sv_rules b/dictsource/sv_rules index 9782cf98..25f35017 100755 --- a/dictsource/sv_rules +++ b/dictsource/sv_rules @@ -36,7 +36,6 @@ a (C% a // r) a (C% a a (_ a - &) a (_ a2 a (re a a (rn A: a (rna a @@ -433,10 +432,10 @@ medl m'e:dl maga maga meny mEn'y: - minimera mIni:m'e:Ra2 + minimera mIni:m'e:Ra maria m%aR'i:a marie m%aR'i: - maximera maksi:m'e:Ra2 + maximera maksi:m'e:Ra motor m'u:tOR motorer m'Otu:RER model mOd'El diff --git a/dictsource/ta_list b/dictsource/ta_list index 891e8f64..85cb8bd4 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -174,7 +174,6 @@ tamil தமிழ் $text // exceptions பாபு $alt // initial ப as [b] -பவானி $alt பகவதி $alt பானம் $alt பாணம் $alt @@ -232,6 +231,9 @@ tamil தமிழ் $text பலே $alt பூம் $alt பரத $alt +பலத்தில் $alt +பலத்தின் $alt +பைக்ல $alt (பி . ஏ) bije: @@ -273,6 +275,12 @@ tamil தமிழ் $text தேச $alt தேசப் $alt தானம் $alt +தீரமும் $alt +தீரத்தோடு $alt +தவத்தில் $alt +தவத்தின் $alt +தவத்தினால் $alt + // initial ட டார்ச் t.a:rtS @@ -318,6 +326,8 @@ tamil தமிழ் $text குதி $alt கம் $alt காந்தம் $alt +கான $alt +கோத்திர $alt // p as [f] diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 7cdac750..0c1e49d6 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -98,6 +98,7 @@ _) க (ானங் g _) க (ானத்த g _) க (ானம g + _) க (ானவித்தை g க (ாரன k க (ாரர k _) க (ிடுகிடு g @@ -155,7 +156,11 @@ _) க (ோகுல g _) க (ோதாவரி g _) க (ோதுமை g - _) க (ோத் g + _) க (ோத்திரங் g + _) க (ோத்திரத் g + _) க (ோத்திரம g + _) க (ோத்ரா g + _) க (ோத்ரேஜ் g _) க (ோந்து g _) க (ோபப் k கோப (ால go:p @@ -166,6 +171,7 @@ _) க (ோபிய g _) க (ோபுர g _) க (ோர_ g + _) க (ோர_மாட்ட k _) க (ோர_முடிய k _) க (ோர_வேண்ட k _) க (ோரக g @@ -184,8 +190,10 @@ //endsort //sort + அலை) க (டல kV _கல்) க (ண்ட kV _நற்) க (தி gV + வீண்) க (தை kV _கல்) க (த்தா kV கொல்) க (த்தா kV மோ) க (ன HV @@ -205,13 +213,19 @@ க (விராய kV வீண்) க (ஷ்ட kV ம) க (ா H + _தாலு) க (ா k தொல்) க (ாப்பி k + மூல) க (ாரண k + அந்திம) க (ால k கோயில்) க (ாளை k _கல்) க (ி k + _ம) க (ிந்த H மோ) க (ினி H + _ம) க (ிமை H _) கி (ரக g _) கி (ரகண g கி (ரண g + _) கி (ரந்த g _) கி (ரஹ g _) கி (ராக்கி g _) கி (ராதக k @@ -221,8 +235,12 @@ கிரு (ஷ் kri _) கி (ரைண்டர g கி (லேச k + _) கி (ளாஸ g _வட) க (ிழ k தென்) க (ிழ k + _பால்) க (ுட k + _வளை) க (ுட k +மன்னார்) க (ுடி k நற்) க (ுண g _சற்) க (ுண g க (ுமார k @@ -235,6 +253,10 @@ ம) க (ேந்திர H ம) க (ேஷ்வ H ம) க (ேஸ்வர H + அங்) க (ொ g + இங்) க (ொ g + க (ொண்ட k + க (ொள் k வீண்) க (ோப k துர்) க்க ggV# மார்) க்க ggV# @@ -242,7 +264,12 @@ _வர்) க்க ggV# _சொர்) க்க ggV# நிர்) க்க (தி ggV + _வி) க்க (ினம்_ gg அ) க்க (ினி gg + ஆரோ) க்க (ிய gg + வைரா) க்க (ிய gg + _வி) க்க (ிரக gg + ஜன) க்க (ும்பல gg வி) க்ட (ோரியா kt. // victoria வி) க (்ரம k //endsort @@ -283,6 +310,7 @@ ச (ந்திர tSV _) ச (ப்பாத்தி tSV ச (ாந்தி s. + _தே) ச (ாந்திர s _) ச (ான்ஸ tS _) ச (ாமுண்ட tS சமா) ச (ார tS @@ -293,6 +321,7 @@ _) ச (ிட்ல tS _) ச (ிதம்பர tS _) ச (ித்தப்ப tS + _) ச (ித்தப்பிரமை s வி) ச (ித்திர tS _) ச (ித்ரா tS சு) சித (்ரா tSit @@ -309,6 +338,9 @@ கே) சு (வ s மே) சு (வ s வி) சு (வ s + _சனீ) சு (வர s +இராவணே) சு (வர s +ராவணே) சு (வர s _) சு (வாச s சு (வாதீன s சு (வாமி s @@ -361,6 +393,7 @@ _) ட (வல t.V _) ட (வர t.V _) ட (ேப t. + _) ட (ாக்ஸி t. .group ண ண n.V @@ -444,6 +477,8 @@ _) த (ர்பார dV _) த (ர்பை dV _) த (ர்ம dV + _) த (லித் dV + _) த (வப் dV _) த (வம dV _) த (ாக்கா d _) த (ாக்காம t @@ -473,6 +508,7 @@ _) த (ிக்குமுக்கா t _) த (ிக்கே d _) த (ிக்கை d + _) திக்பி (ரமை digb _) த (ிக்விஜய d _) த (ிசை d _) த (ிடப d @@ -485,6 +521,7 @@ _) த (ிண்டிவன d _) த (ிண்டுக்கல d _) த (ினக d + _) த (ினங் d _) த (ினந் d _) த (ினம d _) த (ினுச d @@ -505,14 +542,18 @@ _) த (ீரத்துட d _) த (ீரன d _) த (ீரமில்ல d + _) த (ீரமுட d _) த (ீரரை d _) த (ீரர் d _) த (ீர்க d _) த (ீர்க்க t + _) த (ீர்க்கமா d _) த (ுக்க d _) த (ுச்சம d _) த (ுச்சாதனன d _) த (ுட்ட d + _) த (ுரதிர்ஷ்ட d + _) த (ுராசை d _) த (ுரியோதனன d _) த (ுருவங் d _) த (ுருவத் d @@ -527,14 +568,19 @@ _) த (ூம d _) த (ூர d _) த (ூஷணை d + _) த (ூஷித்த d _) த (ெய்வ d _) த (ேக d _) த (ேக்க t _) த (ேசத்தார d + _) த (ேசத்தில d + _) த (ேசாந்திர d _) த (ேவகான d _) த (ேவகி d _) த (ேவதை d _) த (ேவன d + _) த (ேவராட்டி d + _) த (ேவராள d _) த (ேவருலக d _) த (ேவர்க d _) த (ேவலோக d @@ -556,15 +602,20 @@ //sort _வசந்) த tV# - த (ன tV + _கீழ்) த (ட்ட tV + _மேல்) த (ட்ட tV +முட்டாள்) த (ன tV _கீ) த (ா t _சீ) த (ா t _ல) த (ா t + _சபி) த (ா t அனி) த (ா t சுஜா) த (ா t + லலி) த (ா t _சுனி) த (ா t _வனி) த (ா t _வினி) த (ா t +_புஷ்பல) த (ா t பிரேமல) த (ா t _சும) த (ி t _சாந்) த (ி t @@ -592,14 +643,26 @@ _பார்வ) த (ி t பு) த்த (ன ddV பு) த்த (ர ddV பு) த்த (ி dd + அயோ) த்த (ி dd + சில) த்த (ினங் dd + பல) த்த (ினங் dd சா) த்த (ிய dd ம) த்த (ிய dd வா) த்த (ிய dd வை) த்த (ிய dd பு) த்த (ியி dd உ) த்த (ியோக dd + பு) த்த (ிர tt சமு) த்த (ிர dd + _ரு) த்த (ிர dd + _ரௌ) த்த (ிர dd + _முக) த்து (வார dd அ) த்த (ெய்வ dd + குல) த்த (ெய்வ dd + வி) த்த (ையாக dd + வி) த்த (ையால்_ dd + வி) த்த (ையி dd + வி) த்த (ையை dd ச) த (்ய t நி) த (்ய t ச) த்ரபதி trVpVti @@ -695,6 +758,9 @@ _பார்வ) த (ி t _) ப (லங் bV _) ப (லசாலி bV _) ப (லதேவ bV + _) ப (லத்தினா bV + _) ப (லத்தினுட bV + _) ப (லத்துட bV _) ப (லத்தை bV _) ப (லப்படு bV _) ப (லப்பரீட்சை bV @@ -710,6 +776,7 @@ _பார்வ) த (ி t _) ப (லிய bV _) ப (லூன bV _) ப (வாணி bV + _) ப (வானி bV _) ப (வ்ய bV _) ப (ஸ bV _) ப (ாகங்க b @@ -719,6 +786,7 @@ _பார்வ) த (ி t _) ப (ாசு b _) ப (ாசுர p _) ப (ாடி_பில்டிங் b + _) ப (ாணங் b _) ப (ாணி b _) ப (ாதிக்க b _) ப (ாதிக்கு_ p @@ -739,6 +807,8 @@ _பார்வ) த (ி t _) ப (ாரத்த b _) ப (ாரம b _) ப (ார்கவி b + _) ப (ார்மசி f + _) ப (ார்மஸி f _) ப (ாலக b _) ப (ாலக்காட p _) ப (ாலச b @@ -770,7 +840,11 @@ _முகத்தின்_) ப (ாவ b முகத்திலிருந்து_) ப (ாவ b _) ப (ாவனா b _) ப (ாவனை b + _) ப (ாவிக்கிற b _) ப (ாவித்த b + _) ப (ாவிப்பதா b + _) ப (ாவிப்பதி b + _) ப (ாவிப்பது b _) ப (ாஷை b _) ப (ாஷ்ய b _) ப (ாஸ்கர b @@ -786,6 +860,7 @@ _முகத்தின்_) ப (ாவ b _) ப (ிரியாணி b _) ப (ில்டிங் b _) ப (ிஸினஸ b + _) ப (ிஸ்கோத் b _) ப (ீஜிங b _) ப (ீடி b _) ப (ீடிகை p @@ -794,6 +869,7 @@ _முகத்தின்_) ப (ாவ b _) ப (ீரங்கி b _) ப (ீராமணர b _) ப (ுக்தி b + _) ப (ுஜ b _) ப (ுட்டி b _) ப (ுதன b _) புத்த(K buddV @@ -830,6 +906,7 @@ _முகத்தின்_) ப (ாவ b _) ப (ேதி b _) ப (ேலன்ஸ b _) ப (ேஷ b + _) ப (ைக்குகள b _) ப (ைரவ b _) ப (ொம்மல b _) ப (ொம்மை b @@ -845,9 +922,7 @@ _முகத்தின்_) ப (ாவ b //endsort //sort - - - இயல்) ப bV# + இயல்) ப (+ bV# பரிதா) ப (+ bV# அனுதா) ப (+ bV# நன்) ப (கல pV @@ -856,6 +931,8 @@ _முகத்தின்_) ப (ாவ b வட) ப (குதி pV தென்) ப (குதி pV ப (க்கK pV + க) ப (ட bV + கரம்) ப (ட pV ப (டி pV மறு) ப (டி bV @) ப (ட்ச+ pV @@ -863,10 +940,12 @@ _முகத்தின்_) ப (ாவ b _சிவ) ப (த pV கஜ) பதி pVti கண) பதி pVti + பசு) பத (ி pVt ரகு) பதி pVti சீதா) பதி pVti சேது) பதி pVti தரணி) பதி pVti + பிரஜா) பத (ி pVt மகுட) பதி pVti பிரகஸ்) பதி pVti லக்ஷ்மி) பதி pVti @@ -877,10 +956,15 @@ _முகத்தின்_) ப (ாவ b மின்) ப (திப்ப+ pV காண்) பத (ில bVd பதை) ப (தை pV + _க) ப (த் bV + வீர) ப (த்தினி pV கல்) ப (னா pV நிரு) ப (மா pV அனு) ப (மா pV + _க) ப (ம்_ bV _ஊடு) ப (யிர pV + கரம்) ப (ற் pV + ப (ற்றி_ pV பல) ப (ல pV _மூடு) ப (ல்லக் pV பள) ப (ள pV @@ -894,14 +978,21 @@ _முகத்தின்_) ப (ாவ b ச) பாபதி ba:pVti எதிர்) ப (ார p _கா) ப (ாலி b + முக) ப (ாவ b அட) ப (ாவ p வீண்) ப (ாவ p அடி) ப (ாவி p கோ) ப (ி p + _முன்) ப (ின்_ p + உடன்) ப (ிற p + ப (ிறகு+ p + சிறு) ப (ிள்ளை p ஆண்) ப (ிள்ளை p பெண்) ப (ிள்ளை p பூம்) ப (ுகார p ம்) ப (ுரா b + இன்) ப (ுற b + _துன்) ப (ுற b ப (ுறK p மண்) ப (ுழு p பூம்) ப (ுஹார p @@ -913,13 +1004,21 @@ _முகத்தின்_) ப (ாவ b ப (ெருமான p ப (ெற p // ?? end-of-word + suffix ?? வீண்) ப (ேச்ச p + ப (ேரில்_ p + ப (ேர்_ p + வீண்) ப (ொழுத p ப (ோக_ p + ப (ோகவில்லை_ p ப (ோகின்ற p ப (ோகிற p + ப (ோகும்_ p + _வீண்) ப (ோக்க p + _சத்தம்) ப (ோட p ப (ோதிலும்+ p ப (ோது+ p ப (ோதும்+ p ப (ோதும்_+ p + ப (ோதெல்லாம்_ p ப (ோதே_+ p ப (ோன_ p ப (ோனா p @@ -936,9 +1035,11 @@ _முகத்தின்_) ப (ாவ b _டே) ப (் p கர்) ப்ப bbV# நிர்) ப்ப (ந்த bbV + நிர்) ப்ப (ய bbV _ர) ப்ப (ர bbV துர்) ப்ப (ாக்கிய bb ஆர்) ப்ப (ாட்ட bb + மன) ப்பி (ரமை bb துர்) ப்ப (ோதனை bb கம்) ப்யூட (ர pjU:t.V //endsort @@ -946,7 +1047,7 @@ _முகத்தின்_) ப (ாவ b // If ப+ appearing in the middle of a word is followed by ட+ // and not preceded by ம், then ப should sound as 'pa'. ப (ட pV - ப (Bட p + @) ப (Bட p ம்) ப (ட bV ம்) ப (Bட b @@ -980,6 +1081,7 @@ _முகத்தின்_) ப (ாவ b _) பி (ரதீ p _) பி (ரதேச p _) பி (ரப p + _) பி (ரமாண p _) பி (ரமாத p _) பி (ரமான p _) பி (ரமிக்க b @@ -1007,12 +1109,14 @@ _முகத்தின்_) ப (ாவ b _) பி (ரஸ்தா p _) பி (ரஹலாத p _) பி (ராகார p + _) பி (ராண_ p _) பி (ராணன p _) பி (ராணி p _) பி (ராண்ட p _) பி (ராதித் p பயப்) பி (ராந்தி b மனப்) பி (ராந்தி b + _) பி (ராந்தி_ b _) பி (ராந்தியங் p _) பி (ராந்தியத் p _) பி (ராந்தியம்_ p @@ -1029,6 +1133,7 @@ _முகத்தின்_) ப (ாவ b _) பி (ரிட b _) பி (ரித்தானி b _) பி (ரியன p + _) பி (ரியப் p _) பி (ரியம p _) பி (ரியர p _) பி (ரியா_ p @@ -1040,7 +1145,10 @@ _முகத்தின்_) ப (ாவ b _) பிரு (ந்தா bri _) பி (ரே p _) பி (ரோகிதர p + _) பி (ளாட்பார p + _) பி (ளாஸ்க் f _) பீ (ராமண b + அதிக) ப்பி (ரசங்க pp //endsort // musical notes @@ -1184,6 +1292,8 @@ _முகத்தின்_) ப (ாவ b _) இ (ராஜ _) இ (ராணுவ _) இ (லகுவாக + _) இ (ராணி + _) இ (லட்சண ஈ i: diff --git a/dictsource/tr_list b/dictsource/tr_list index 7240207e..6798b5ed 100644 --- a/dictsource/tr_list +++ b/dictsource/tr_list @@ -12,7 +12,7 @@ f fE g JE ğ jumuS'ak||J'E h hE -ı u# +ı @ i i j ZE k ka @@ -43,7 +43,7 @@ _?A haRf //_lig _acu vURg'UimI _ac2 tS'IftvURg'UimI -_brv ku#s'altmaimI +_brv k@s'altmaimI _ced h'aRf _cir Sapk'a _dia Umla'Ut @@ -60,41 +60,41 @@ _tld tIld'E // symbols _. nOkt'a _, vIRJ'Yl -_; nOktal'u#vIRJ'Yl +_; nOktal'@vIRJ'Yl _: ik'InOkt'a _… 'YtSnOkt'a _? soR'UiSa*et,I _! Ynl'EmiSa*et,I -_- k'u#satSIzg'I +_- k'@satSIzg'I _– 'uzUntSIzg'I _/ ej'IktSIzg'I -_" tu#Rn'akiSa*et'I +_" t@Rn'akiSa*et'I _' apOstR'Of _^ IndZ'EltmEiSa*et'I & _!v'E _& v'EiSa*et'I -_* j'u#ldu#z +_* j'@ld@z _@ kUjRUkl'U'a _\ t'ERs||ej,IktSIzg'I ¶ pa*agR'af § tSEnJ'El ° de*edZ'E _# dij'Ez -_~ jaklaS'u#k +_~ jaklaS'@k __ ,alttSIzg'I = ESIt $max3 % jYzdE $max3 -+ aRtu# $max3 ++ aRt@ $max3 € avRO -_0 su#fu#R +_0 s@f@R _1 biR _2 ici _3 YtS _4 dWRt _5 beS -_6 altu# +_6 alt@ _7 jedi _8 seciz _9 dokuz @@ -104,9 +104,9 @@ _12 'onici _1X on _2X jiRmi _3X otuz -_4X ku#Rk +_4X k@Rk _5X elli -_6X altmu#S +_6X altm@S _7X jetmiS _8X seksEn _9X doksan @@ -122,11 +122,11 @@ _dpt _viRg,Yl_| // function words // conjunctions -ve $brk // and -yoksa $brk // or -veya $brk // or +ve $u $brk // and +yoksa $u $brk // or +veya $u $brk // or ama $brk $1 // but -ki $brk // that +ki $u $brk // that mı $u // question mi $u diff --git a/dictsource/tr_rules b/dictsource/tr_rules index 78f0590b..aa46a51f 100644 --- a/dictsource/tr_rules +++ b/dictsource/tr_rules @@ -5,6 +5,10 @@ // Stress rule: Right-most vowel, but stop before the vowel which is // marked as unstressed [%]. +// Conditional rules: +// ?1 mbrola voices + + // unvoiced consonants .L01 ç f h k p q s ş t @@ -17,10 +21,10 @@ @) a (_S1 a acak (_S3 adZak - acakmış (_S7 adZakm%u#S - ayım (_S4 aju#m - alım (_S4 alu#m - asın (_S4 asu#n + acakmış (_S7 adZakm%@S + ayım (_S4 aj@m + alım (_S4 al@m + asın (_S4 as@n avru (pa avr'u @@ -48,12 +52,12 @@ diniz (_S5 diniz di (_S2 di diler (_S5 dileR - dım (_S3 du#m - dık (_S3 du#k - dın (_S3 du#n - dınız (_S5 du#nu#z - dı (_S2 du# - dılar (_S5 du#laR + dım (_S3 d@m + dık (_S3 d@k + dın (_S3 d@n + dınız (_S5 d@n@z + dı (_S2 d@ + dılar (_S5 d@laR dum (_S3 dum duk (_S3 duk dun (_S3 dun @@ -68,7 +72,7 @@ düler (_S5 dyler dir (_S3 %diR - dır (_S3 %du#R + dır (_S3 %d@R dur (_S3 %duR dür (_S3 %dyR @@ -100,6 +104,7 @@ .group ğ ğ Q A) ğ :|| +?1 A) ğ G // mbrola i) ğ j e) ğ j @@ -120,15 +125,15 @@ .group ı - ı u# + ı @ - @) ı (_S1 u# + @) ı (_S1 @ - ım (_S2 %u#m - ınız (_S2 %u#nu#z - ız (_S2 %u#z - ıyor (_S4 u#j%oR - ın (_S2 u#n + ım (_S2 %@m + ınız (_S2 %@n@z + ız (_S2 %@z + ıyor (_S4 @j%oR + ın (_S2 @n .group j @@ -154,12 +159,12 @@ ler (_S3 leR li (_S2 li - lı (_S2 lu# + lı (_S2 l@ lu (_S2 lu lü (_S2 ly lik (_S3 lik - lık (_S3 lu#k + lık (_S3 l@k luk (_S3 luk lük (_S3 lyk @@ -175,7 +180,7 @@ n n nin (_S3 nin - nın (_S3 nu#n + nın (_S3 n@n nun (_S3 nun nün (_S3 nyn @@ -204,7 +209,7 @@ .group s s s - sınız (_S5 %su#nu#z + sınız (_S5 %s@n@z siniz (_S5 %siniz sunuz (_S5 %sunuz sünüz (_S5 %synyz @@ -212,7 +217,7 @@ sam (_S3 %sam // if sak (_S3 %sak san (_S3 %san - sanız (_S5 %sanu#z + sanız (_S5 %san@z sa (_S2 %sa sem (_S3 %sem sek (_S3 %sek @@ -233,7 +238,7 @@ ten (_S3 ten L01) tir (_S3 %tiR - L01) tır (_S3 %tu#R + L01) tır (_S3 %t@R L01) tur (_S3 %tuR L01) tür (_S3 %tyR @@ -279,22 +284,22 @@ ya (_S2 ja ye (_S2 je yi (_S2 ji - yı (_S2 ju# + yı (_S2 j@ yu (_S2 ju yü (_S2 jy yim (_S3 %jim - yım (_S3 %ju#m + yım (_S3 %j@m yum (_S3 %jum yüm (_S3 %jym yiz (_S3 %jiz - yız (_S3 %ju#z + yız (_S3 %j@z yuz (_S3 %juz yüz (_S3 %jyz yiniz (_S5 %jiniz - yınız (_S5 %ju#nu#z + yınız (_S5 %j@n@z yunuz (_S5 %junuz yünüz (_S5 %jynyz @@ -303,12 +308,12 @@ yacak (_S5 jadZak yecek (_S5 jedZek - yacakmış (_S8 jadZakm%u#S + yacakmış (_S8 jadZakm%@S yecekmiş (_S8 jedZekm%iS - yayım (_S5 jaju#m - yalım (_S5 jalu#m - yasın (_S5 jasu#n + yayım (_S5 jaj@m + yalım (_S5 jal@m + yasın (_S5 jas@n yeyim (_S5 jejim yelim (_S5 jelim yesin (_S5 jesin diff --git a/docs/phontab.html b/docs/phontab.html index 7feb54fd..767ed8b4 100644 --- a/docs/phontab.html +++ b/docs/phontab.html @@ -3,7 +3,6 @@ eSpeak: Phoneme tables - diff --git a/phsource/compile_report b/phsource/compile_report index b6eb200b..18280327 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,67 +1,68 @@ -62 phoneme tables +63 phoneme tables new total - base 99 99 -consonants 9 107 - base2 26 120 - en 47 141 - en_n 32 141 - en_us 37 142 - en_sc 39 143 - en_rp 33 141 - en_wm 30 141 - en_wi 30 141 - af 39 131 - cy 29 125 - de 32 126 - eo 13 111 - jbo 2 111 - nci 3 120 - fi 40 130 - fr 56 137 - fr_ca 11 137 - hi 58 145 - ta 21 149 - hu 24 116 - lv 29 122 - nl 24 119 - pl 20 113 - sk 28 130 - cs 6 130 - hr 26 135 - mk 3 136 - sr 14 135 - it 18 123 - la 21 117 - es 8 120 - es_la 1 120 - ca 11 122 - pt 29 135 - pt_pt 20 135 - ro 36 143 - el 8 120 - grc 12 124 - sv 23 121 - no 28 125 - is 42 135 - ru 39 130 - vi 41 136 - zhy 41 133 - zh 64 150 - sw 12 108 - tr 18 123 - ku 18 124 - id 15 122 - sq 33 121 - hy 23 114 - da 23 116 - rw 15 127 - ml 13 147 - ne 18 153 - pa 14 147 - prs 8 106 - sl 6 130 - gd 6 99 - bg 10 115 + base 107 107 +consonants 9 115 + base2 26 123 + en 48 148 + en-n 32 148 + en-us 37 149 + en-sc 39 150 + en-rp 33 148 + en-wm 30 148 + en-wi 30 148 + af 39 136 + cy 29 132 + de 38 139 + eo 13 114 + jbo 2 114 + nci 3 123 + fi 40 133 + fr 56 138 + fr-ca 11 138 + hi 58 149 + ta 21 152 + hu 24 121 + lv 29 125 + nl 24 125 + pl 20 118 + sk 28 133 + cs 6 133 + hr 26 138 + mk 3 139 + sr 14 138 + it 18 126 + la 21 124 + es 8 123 + es-la 1 123 + ca 11 125 + pt 29 138 + pt-pt 20 138 + ro 36 146 + el 8 123 + grc 12 127 + sv 22 127 + no 28 132 + is 42 139 + ru 39 133 + vi 41 139 + zhy 41 136 + zh 64 153 + sw 9 108 + tr 19 126 + ku 18 127 + id 15 125 + sq 33 126 + hy 23 117 + da 23 119 + rw 15 130 + ml 13 150 + ne 18 156 + pa 14 150 + prs 8 111 + sl 6 133 + gd 6 107 + bg 10 119 + nso 8 107 Data file Used by b/b [b] base @@ -76,6 +77,7 @@ b/be [b] base b/bi [b] base [b;] ro b/bo [b] base +b/br [b] fr b/bu [b] base b/xb [b] base [b] fr @@ -106,6 +108,7 @@ d/dr [*] base [d[] base [d] base2 [d] fi + [d] fr [d.] hi [dh.] hi [d] hu @@ -200,7 +203,6 @@ 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 @@ -212,6 +214,7 @@ g/g_ [g] base [g] cy [g] fr [g] es +g/gr [g] fr g/xg [g] base [g-] en [g] cy @@ -283,14 +286,17 @@ klatt/b [b] base [b] fr klatt/bh [B] base klatt/dz_pzd [J] base + [J] tr klatt/dz_pzd_ [J] base klatt/m [m] base klatt/m_ [m] base +klatt/m-syl [m-] base klatt/n [n] base klatt/n^ [n^] base klatt/n^@ [n^] base klatt/nn [N] base klatt/nr [n.] base +klatt/n-syl [n-] base klatt/qqh [Q] base klatt/qqh_ [Q] base klatt/tap2 [t#] en @@ -319,6 +325,7 @@ l^/_l^ [l^] base l^/l^ [l^] base l/l [l] base [l] fr + [l/2] fr [l] hu l/_l [l] base [l] fr @@ -329,12 +336,11 @@ l/l_ [l/] base [l/3] base [l/] fr l/l_@ [l/3] base - [W] fr [l/] fr -l/l@ [] base - [L] base - [W] fr +l/l@ [l#] base + [ߵ ] base [l] fr + [l/2] fr l/L1_aL [l/] base [l/] de l/L1_eL [l/] base @@ -352,28 +358,31 @@ l/L2_eL [l/2] base l/L2_iL [l/2] base [i] sq l/L2_@L [l/2] base - [I] en_sc + [I] en-sc l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [] base - [L] base +l/la [l#] base + [ߵ ] base [l] fr + [l/2] fr l/l_a [l/3] base [l/] fr -l/le [] base - [L] base +l/le [l#] base + [ߵ ] base [l] fr + [l/2] fr l/l_e [l/3] base [l/] fr l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [] base - [L] base +l/li [l#] base + [ߵ ] base [l] fr + [l/2] fr [l] zh l/l_i [l/3] base [l/] fr @@ -382,25 +391,28 @@ ll/ll [L] bg ll/_ll [L] bg l/l_long [l] base [l] fr -l/lo [] base - [L] base +l/lo [l#] base + [ߵ ] base [l] fr + [l/2] fr l/l_o [l/3] base [l/] fr l^/l_rfx [l.] base -l/lu [] base - [L] base +l/lu [l#] base + [ߵ ] base [l] fr + [l/2] fr l/l_u [l/3] base [l/] fr l/l_vi [l] vi ll/xll [L] bg -l/l_y [y] fr +l/l_y [l/] fr l/tl [l] base [l] fr + [l/2] fr [l] hu -l/xl [L] base - [l] base +l/xl [l] base + [l#] base [e] fr [l] fr [l] hu @@ -414,6 +426,7 @@ m/me [m] base m/mi [m] base m/mj [m] base m/mo [m] base +m/m-syl [m-] base m/mu [m] base n^/_n^ [n^] base n^/n^_ [n^] base @@ -468,6 +481,7 @@ nn/nnj [N] base nn/nno [N] base [N#] is [N] zh +nn/nn-syl [N-] base nn/nnu [N] base [N#] is [N] zh @@ -478,11 +492,14 @@ n/no [n] base [n] zh n/_nr [n.] base n/nr_ [n.] base +n/n-syl [n-] base n^/n^u [n^] base n/nu [n] base [n.] base [n#] is [n] zh +r/@_ [V#] de + [V3#] de r2/r2@ [r-] en r2/r2a [r-] en r2/r2e [r-] en @@ -518,15 +535,15 @@ r3/r_trill.wav [R2] base [r*] sr [x] pt r3/r_uvl [r"] base + [r] de r3/r_uvl.wav [r"] base + [r] de r3/rx [*] base [r/] base [r/] af - [r] fr [r/] fr - [r/2] fr - [R] fr_ca - [x] pt_pt + [R] fr-ca + [x] pt-pt [*;] ro [r#] is [r/] ru @@ -577,6 +594,10 @@ r/tr [r] base r/trr [r/] base [r] ro [r] ru +r/V_ [V#] de + [V1#] de +r/V_2_ [V#] de + [V2#] de r/xr [r] base [R3] base [r-] en @@ -589,13 +610,15 @@ ufric/ch_sr [h] sr [x] sr ufric/f [f] base [pF] de + [f] fr [f] pl [f] grc [f] zh ufric/f_ [f] base + [f] fr [f] pl -ufric/ll [L] base - [l#] is +ufric/l# [l#] is +ufric/ll [l#] base ufric/s [s] base [s] fr [z2] fr @@ -733,12 +756,12 @@ ustop/p_unasp_ [p-] consonants ustop/q [q] base ustop/q_u [q] base ustop/t [t] base - [t] en_us + [t] en-us [dh.] hi [th.] hi [t] zhy ustop/t_ [t] base - [t] en_us + [t] en-us [t] fr [t] lv [t] sk @@ -747,7 +770,7 @@ ustop/t_ [t] base ustop/t_dnt [t] base [t[] base [t] base2 - [t] en_us + [t] en-us [dh] hi [th] hi [t] hu @@ -758,7 +781,7 @@ ustop/t_hi [t[] base ustop/t_pzd [c] base [t;] pl ustop/tr [t] base - [t] en_us + [t] en-us ustop/ts [ts] consonants [dz] consonants [ts] hu @@ -804,26 +827,26 @@ ustop/t_unasp2 [t] zh vdiph/0i [OI] pt [OI] grc [OI] vi -vdiph/0i_2 [OI] en_sc - [OI] en_wi +vdiph/0i_2 [OI] en-sc + [OI] en-wi [AI] no -vdiph2/e@ [3:] en_sc - [e@] en_sc - [e@] en_wi +vdiph2/e@ [3:] en-sc + [e@] en-sc + [e@] en-wi vdiph2/ea [ea] ro -vdiph2/ee@ [e@] en_n -vdiph2/ee@_2 [e@] en_rp -vdiph2/ei_2 [eI] en_rp -vdiph2/ei_3 [i:] en_wm -vdiph2/ei_4 [eI] en_us +vdiph2/ee@ [e@] en-n +vdiph2/ee@_2 [e@] en-rp +vdiph2/ei_2 [eI] en-rp +vdiph2/ei_3 [i:] en-wm +vdiph2/ei_4 [eI] en-us [ei] zh [eI] sq vdiph2/eo [eo] ro vdiph2/e[u [e[u] ro -vdiph2/i@ [i@] en_n +vdiph2/i@ [i@] en-n [i@] hy -vdiph2/i@_2 [i@] en_wm -vdiph2/ie [i@] en_wi +vdiph2/i@_2 [i@] en-wm +vdiph2/ie [i@] en-wi [ie] fi vdiph2/ie_2 [ie] lv vdiph2/ii@ [i@] en @@ -843,20 +866,20 @@ vdiph2/o@ [o@] af [u@] zh vdiph2/oa [Oa] ro [ua] zh -vdiph2/o_oo [o@] en_wi +vdiph2/o_oo [o@] en-wi [O:] is [o] zh -vdiph2/u#@ [U@] en_sc +vdiph2/u#@ [U@] en-sc vdiph2/uaa [uo] lv vdiph2/uo [uo] fi vdiph2/uu@ [U@] en - [U@] en_n - [U@] en_wm + [U@] en-n + [U@] en-wm [u@] vi -vdiph2/uw [u:] en_us +vdiph2/uw [u:] en-us vdiph2/uw_2 [u:] en vdiph2/uw_3 [yU] ro -vdiph2/uw_4 [u:] en_n +vdiph2/uw_4 [u:] en-n vdiph2/y@ [y@] zh vdiph2/y#@ [Y@] af vdiph2/ye [yE] sq @@ -864,9 +887,9 @@ vdiph2/yu [yU] nl [yu] zh vdiph2/y-y# [yY] fi [y@] vi -vdiph/8u [oU] en_us +vdiph/8u [oU] en-us [ou] zh -vdiph/aae [aI] en_us +vdiph/aae [aI] en-us vdiph/aai [ai] lv [aai] zhy [aI] sq @@ -878,8 +901,7 @@ vdiph/aau [au] fi [au] lv [aU] is [aU:] is -vdiph/aau_2 [aU] en_wi - [aU] de +vdiph/aau_2 [aU] en-wi [VU] nl [aU] la [aau] zhy @@ -887,11 +909,12 @@ vdiph/aau_3 [aU] hi [aU] ta [aU] ne vdiph/aau_4 [aU] vi -vdiph/ae [E:] fr_ca +vdiph/aau_6 [aU] de +vdiph/ae [E:] fr-ca [aI] la -vdiph/ae_2 [aI] en_n +vdiph/ae_2 [aI] en-n vdiph/ai [aI] base2 - [aI] en_wi + [aI] en-wi [aI] eo [aI] sk [aI] hr @@ -906,21 +929,21 @@ vdiph/ai_2 [aI] en vdiph/ai_3 [aI] no vdiph/ai_4 [aI] af vdiph/ai_5 [aI] de -vdiph/ai_6 [aI] en_rp +vdiph/ai_6 [aI] en-rp [ai] zh -vdiph/ai_7 [aI] en_sc - [aI2] en_sc +vdiph/ai_7 [aI] en-sc + [aI2] en-sc [aI] is [aI:] is vdiph/ai_8 [aI] ta -vdiph/aoo [aU] en_us +vdiph/aoo [aU] en-us vdiph/au [aU] en [aU] af [a:U] vi [aU] prs -vdiph/au# [aU] en_sc +vdiph/au# [aU] en-sc vdiph/au_2 [au] zhy -vdiph/au_3 [aU] en_rp +vdiph/au_3 [aU] en-rp vdiph/au_4 [aU] base2 [aU] cy [aU] eo @@ -947,9 +970,9 @@ vdiph/eeu [EU] pt [EU] vi [eu] zhy vdiph/eeu_2 [EU] la - [EU] pt_pt -vdiph/eeu_3 [aU] en_n - [aU] en_wm + [EU] pt-pt +vdiph/eeu_3 [aU] en-n + [aU] en-wm [eU] ku vdiph/eey [ey] fi vdiph/ei [eI] base2 @@ -977,15 +1000,14 @@ vdiph/@i_2 [eI] af [@I] cy [@Y] cy vdiph/i@_2 [e@] af -vdiph/@i_3 [eI] en_wm +vdiph/@i_3 [eI] en-wm [@I] ro [ai] zhy 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 + [OI] en-wm [OY] de [oI] it [OI] la @@ -994,7 +1016,7 @@ vdiph/oi [oI] base2 [oI] ne vdiph/oi_2 [oI] af vdiph/ooi [OI] en - [OI] en_n + [OI] en-n [OI] cy [OY] cy [oI] eo @@ -1003,9 +1025,9 @@ vdiph/ooi [OI] en [OI] no [oi] zhy vdiph/ooi_2 [OI] af -vdiph/ooi_3 [OI] en_rp - [aI] en_wm -vdiph/ooi_4 [OI] en_us +vdiph/ooi_3 [OI] en-rp + [aI] en-wm +vdiph/ooi_4 [OI] en-us [OI] sq vdiph/oou [oU] cs [OU] grc @@ -1016,10 +1038,10 @@ vdiph/ou_2 [oU] sk [oU] ro vdiph/ou_3 [oU] is [oU:] is -vdiph/@u [u:] en_wm +vdiph/@u [u:] en-wm [@U] vi [@:U] vi -vdiph/@u_2 [oU] en_rp +vdiph/@u_2 [oU] en-rp vdiph/@u_3 [o3] fr [@U] ro vdiph/@u_en [oU] en @@ -1038,7 +1060,7 @@ vdiph/ui_4 [ui] fi vdiph/Vi [VI] ne vdiph/Vu [@U] af [VU] ne -vdiph/Vu_2 [oU] en_wm +vdiph/Vu_2 [oU] en-wm vdiph/Vu_3 [o:] nl vdiph/&y [&y] fi [Wy] nl @@ -1049,7 +1071,6 @@ vdiph/yi [yi] fi 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 [eoi] zhy @@ -1060,11 +1081,11 @@ vnasal/aa_n3 [A~] af vnasal/aa_n4 [A~] fr vnasal/a#_n [&~] pt vnasal/a#u_n [&U~] pt - [&U~] pt_pt -vnasal/ee_n [E~] fr_ca -vnasal/ee_n2 [a] en_us + [&U~] pt-pt +vnasal/ee_n [E~] fr-ca +vnasal/ee_n2 [a] en-us [E~] hi - [&~] pt_pt + [&~] pt-pt vnasal/ee_u_n [E~] pl vnasal/e_n [e~] af [e~] hi @@ -1072,9 +1093,6 @@ vnasal/e_n [e~] af vnasal/ii_n [I~] hi vnasal/i_n [i~] pt vnasal/i_n2 [i~] hi -vnasal/m- [m-] sw -vnasal/n- [n-] sw -vnasal/nn- [N-] sw vnasal/oi_n [oI~] pt vnasal/o_n [o~] hi [o~] pt @@ -1162,16 +1180,15 @@ vowel/@ [@] base [@] en [@2] en [@5] en - [@] en_rp + [@] en-rp [V] cy - [W] fr [@4] hi [@] hy [@] ml [@] sl vowel/@- [@-] base [r*] hr -vowel/& [a] en_rp +vowel/& [a] en-rp [&] fi [&:] hi [&] lv @@ -1182,48 +1199,53 @@ vowel/0 [0] en [O] hi [O] pt [O] grc -vowel/0_2 [0] en_n - [O] pt_pt +vowel/0_2 [0] en-n + [O] pt-pt [o] sw -vowel/0_3 [O:] en_us - [O] en_sc - [0] en_rp + [o] nso +vowel/0_3 [O:] en-us + [O] en-sc + [0] en-rp [A] hu vowel/@_2 [@] vi [@:] vi [@] sq [V] sq [@/] sq -vowel/@_3 [@] en_sc - [I] en_sc - [@2] en_sc - [@5] en_sc - [@] de +vowel/@_3 [@] en-sc + [I] en-sc + [@2] en-sc + [@5] en-sc [@3] hi [@] da [@3] ne -vowel/3_2 [3:] en_n +vowel/3_2 [3:] en-n [@] zh -vowel/3_3 [3:] en_rp +vowel/3_3 [3:] en-rp vowel/3_en [3:] en - [e@] en_wm + [e@] en-wm [3:] af -vowel/@_4 [@] en_us +vowel/@_4 [@] en-us + [@] de [@] nl [@] no +vowel/@_6 [3] en + [@] en + [W] fr vowel/8 [o-] zh -vowel/8_2 [U] en_us +vowel/8_2 [U] en-us [8] sv vowel/8_3 [eo] zhy vowel/8_5 [8] ku vowel/8_6 [V] sq vowel/8_7 [@] lv -vowel/a [a] en +vowel/a [a] base + [a] en [aa] en - [a] en_n - [aa] en_n - [a] en_wm - [aa] en_wm + [a] en-n + [aa] en-n + [a] en-wm + [aa] en-wm [a] cy [a] de [a] ta @@ -1240,31 +1262,33 @@ vowel/a [a] en [a] bg vowel/a# [a] base2 [a/] base2 - [a2] en_sc - [a2] en_wi + [a#] en-sc + [a#] en-wi [&] sr [a#] rw [a/] rw vowel/a_2 [a] base2 - [a] en_wi - [A:] en_wi - [A@] en_wi - [aa] en_wi + [a] en-wi + [A:] en-wi + [A@] en-wi + [aa] en-wi [a] eo [A] pt - [a] pt_pt + [a] pt-pt [a] ro [a] da [a] rw -vowel/a#_2 [a#] pl +vowel/a#_2 [A] nl + [a#] pl [&] hr - [a2] sv + [a] sv [a] is [a/] sw -vowel/a_3 [a] en_sc - [a/] en_sc - [A:] en_sc - [aa] en_sc + [a] nso +vowel/a_3 [a] en-sc + [a/] en-sc + [A:] en-sc + [aa] en-sc [a] lv [a:] lv [a:] cs @@ -1272,18 +1296,18 @@ vowel/a_3 [a] en_sc [A] zh [a] sq [A] da -vowel/a#_3 [a2] en - [a2] en_n - [a2] en_us - [a2] en_wm +vowel/a#_3 [a#] en + [a#] en-n + [a#] en-us + [a#] en-wm [3] de - [@] de + [3:] de [a] hi [a#] ca [&] pt [&/] pt - [&] pt_pt - [&/] pt_pt + [&] pt-pt + [&/] pt-pt [a] ru [a#] ru [a] zhy @@ -1294,24 +1318,26 @@ vowel/a#_3 [a2] en [a] ml vowel/a_4 [a/] el [a] vi -vowel/a#_4 [a] bg +vowel/a#_4 [a:] nl + [a] tr + [a] bg vowel/a_5 [a:] ta [a/] it [a] la [a] sv [a] sw - [a] tr [a:] ml vowel/a_6 [a] ca [a:] vi -vowel/a_7 [a] fr -vowel/aa [A] fr_ca +vowel/a_7 [a] en + [a] fr +vowel/aa [A] fr-ca [A] no [A:] no [aa] zhy [a] hy -vowel/aa# [O] en_us - [0] en_wi +vowel/aa# [O] en-us + [0] en-wi [a2] fi [a] ku vowel/aa_2 [A:] en @@ -1323,15 +1349,15 @@ vowel/aa_3 [A:] af [A] prs vowel/aa_4 [A:] sv [O] vi -vowel/aa_5 [A:] en_n - [A@] en_n - [A:] en_wm - [A@] en_wm +vowel/aa_5 [A:] en-n + [A@] en-n + [A:] en-wm + [A@] en-wm vowel/aa_6 [A] de [A:] de vowel/aa_7 [A] nl -vowel/aa_8 [0] en_us - [A:] en_us +vowel/aa_8 [0] en-us + [A:] en-us [a:] is vowel/aa_9 [a] fi [a:] hi @@ -1344,12 +1370,13 @@ vowel/@_bck [@] hi [@/] ne [@] pa [@] bg -vowel/e [e] base2 +vowel/e [e] base + [e] base2 [e:] en - [eI] en_n - [E] en_wm - [E] en_wi - [eI] en_wi + [eI] en-n + [E] en-wm + [E] en-wi + [eI] en-wi [e:] af [e:] cy [e] eo @@ -1360,7 +1387,7 @@ vowel/e [e] base2 [e:] la [e] ca [e] pt - [e] pt_pt + [e] pt-pt [e] grc [e] vi [e] id @@ -1372,8 +1399,8 @@ vowel/e [e] base2 [e:] ml [e] ne [e] sl -vowel/e# [I] en_sc -vowel/e_2 [eI] en_sc +vowel/e# [I] en-sc +vowel/e_2 [eI] en-sc [e:] de [e] hi [e:] hi @@ -1381,15 +1408,15 @@ vowel/e_2 [eI] en_sc [e:] sv [e:] no [e] pa -vowel/e_3 [i] en_n +vowel/e_3 [i] en-n [e:] hu [e] ku -vowel/e_5 [i] en_sc +vowel/e_5 [i] en-sc vowel/e_8 [e] fr vowel/e_9 [E2] fr -vowel/ee [E] en_n +vowel/ee [E] en-n [E] sv -vowel/e_e [E] en_sc +vowel/e_e [E] en-sc [E:] is vowel/ee# [E#] pl vowel/ee_1 [E] base2 @@ -1418,10 +1445,10 @@ vowel/ee_5 [E] en vowel/ee_6 [&] sk [E3] sv [E] ku -vowel/e_mid [E] en_rp +vowel/e_mid [E] en-rp [E] fr [E~] fr - [E] fr_ca + [E] fr-ca [E] hi [E] hu [e] lv @@ -1434,7 +1461,7 @@ vowel/e_mid [E] en_rp [E] es [E] ca [E2] ca - [E] pt_pt + [E] pt-pt [E] no [E] is [E] tr @@ -1460,23 +1487,25 @@ vowel/e_mid2 [E] af [e] sq [E] da [e] bg -vowel/@_fnt [@] en_wi - [@2] en_wi + [e] nso +vowel/@_fnt [@] en-wi + [@2] en-wi [@2] hr -vowel/@_fr [3] en_n +vowel/@_fr [3] en-n vowel/@_hgh [@] fr [@] hr -vowel/i [i] base2 - [i:] en_n - [i:] en_rp - [i] en_wm - [i] en_wi +vowel/i [i] base + [i] base2 + [i:] en-n + [i:] en-rp + [i] en-wm + [i] en-wi [i:] cy [i] eo [i:] ta [i:] hu [i] it - [i] pt_pt + [i] pt-pt [i/] ro [i] el [i:] no @@ -1489,6 +1518,7 @@ vowel/i [i] base2 [i:] ml [i] ne [i] prs + [i] nso vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -1496,7 +1526,7 @@ vowel/i_2 [i2] de [i:] la [i:] sv vowel/i_3 [i] af - [i:] fr + [I] fr [i:] sk vowel/i_4 [i] fi [i] hu @@ -1504,9 +1534,9 @@ vowel/i_4 [i] fi [i:] is [i] vi [i] da -vowel/i_5 [i:] en_sc -vowel/i#_5 [y] pt_pt - [i/] pt_pt +vowel/i_5 [i:] en-sc +vowel/i#_5 [y] pt-pt + [i/] pt-pt [y] ro vowel/i_6 [i] hi [i] ta @@ -1524,18 +1554,18 @@ vowel/i_7 [i] pl vowel/i#_7 [i[] zh vowel/i_8 [i] fr vowel/i_en [i:] en - [i:] en_us -vowel/i_fnt [i:] en_wi + [i:] en-us +vowel/i_fnt [i:] en-wi [i:] hi [i] pa -vowel/ii [I] en_n - [I2] en_n - [I] en_rp - [I2] en_rp - [I] en_wm +vowel/ii [I] en-n + [I2] en-n + [I] en-rp + [I2] en-rp + [I] en-wm [I] de [I:] de - [I] fr_ca + [I] fr-ca [I] nl [I] is [I:] is @@ -1559,15 +1589,15 @@ vowel/ii_3 [I] cy [I] no [I] tr [I] pa -vowel/ii#_3 [I2] en_us +vowel/ii#_3 [I2] en-us vowel/ii_4 [I2] en - [I] en_us + [I] en-us vowel/ii_5 [I] la [i] zh [i] bg -vowel/ii_6 [I] en_wm - [I] en_wi - [I2] en_wi +vowel/ii_6 [I] en-wm + [I] en-wi + [I2] en-wi [I] sr [I] pt [y] pt @@ -1576,12 +1606,12 @@ vowel/ii_6 [I] en_wm [I] sq vowel/ii_en [i] en [i] sq -vowel/ii_final [i] en_us - [i] en_rp -vowel/@_low [@] en_rp - [@2] en_rp - [a2] en_rp - [@5] en_rp +vowel/ii_final [i] en-us + [i] en-rp +vowel/@_low [@] en-rp + [a#] en-rp + [@2] en-rp + [@5] en-rp [@] hi [V] hi [@2] hi @@ -1592,12 +1622,12 @@ vowel/@_low [@] en_rp [@/] ne [@] pa [V] pa -vowel/@_low2 [@/] en_us - [@2] en_us +vowel/@_low2 [@/] en-us + [@2] en-us vowel/o [o] base2 [o:] en - [oU] en_n - [oU] en_wi + [oU] en-n + [oU] en-wi [o:] de [o] fr [o2] fr @@ -1608,7 +1638,7 @@ vowel/o [o] base2 [o/] it [O] la [o] ca - [o] pt_pt + [o] pt-pt [o] grc [o:] sv [o] id @@ -1626,10 +1656,10 @@ vowel/o_2 [o:] cy [o:] no [o] vi [o] da -vowel/o-_2 [V] en_n - [V] en_wm -vowel/o_3 [oU] en_sc -vowel/o-_3 [U] en_rp +vowel/o-_2 [V] en-n + [V] en-wm +vowel/o_3 [oU] en-sc +vowel/o-_3 [U] en-rp vowel/o-_4 [o] ro vowel/o_5 [O] nl [O] da @@ -1642,18 +1672,19 @@ vowel/oe [W] af [W] hy [W] da vowel/oe_2 [W] no - [W] tr vowel/oe_4 [W] sv -vowel/o_mid [U@] en_rp +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 - [O:] en_wi - [O@] en_wi + [o] fr +vowel/oo [o] base + [O:] en-sc + [O] en-wi + [O:] en-wi + [O@] en-wi [O] de [o] eo [O] es @@ -1666,12 +1697,12 @@ vowel/oo [O:] en_sc [O] id [o] prs [o] bg -vowel/oo_1 [O:] en_n - [O:] en_rp - [O@] en_rp - [O] en_wm - [O:] en_wm - [O@] en_wm +vowel/oo_1 [O:] en-n + [O:] en-rp + [O@] en-rp + [O] en-wm + [O:] en-wm + [O@] en-wm [O:] af [o] fi [o] lv @@ -1680,15 +1711,15 @@ vowel/oo_1 [O:] en_n [o:] sk [o] hr [O] sq -vowel/oo_2 [0] en_sc +vowel/oo_2 [0] en-sc [O] cy [o] cs [0] da vowel/oo_3 [O] af vowel/oo_4 [O] base2 - [0] en_wm - [V] en_wi - [3:] en_wi + [0] en-wm + [V] en-wi + [3:] en-wi [O:] hi [O] it [O] pa @@ -1700,22 +1731,23 @@ vowel/oo_en [O] en [O:] en [O@] en [o@] en - [O] en_n - [O] en_rp -vowelr/aa_r [A:] en_sc - [A@] en_sc -vowelr/i_r [i@3] en_sc -vowelr/oo_r [O@] en_sc -vowelr/o_r [o@] en_sc + [O] en-n + [O] en-rp +vowelr/aa_r [A:] en-sc + [A@] en-sc +vowelr/i_r [i@3] en-sc +vowelr/oo_r [O@] en-sc +vowelr/o_r [o@] en-sc vowelr/r-voc [r-] base [r-] sk [r:] sk [r-] hr vowelr/V3_r [VR] en - [3] en_sc + [3] en-sc [@r] zh vowelr/V_r [IR] en -vowel/u [u:] en_wi +vowel/u [u] base + [u:] en-wi [u:] cy [u:] de [u] eo @@ -1727,7 +1759,7 @@ vowel/u [u:] en_wi [u] ml [u:] ml [u] prs -vowel/u# [u:] en_sc +vowel/u# [u:] en-sc [Y] tr vowel/u_2 [u1] fi [u] sk @@ -1740,21 +1772,23 @@ vowel/u#_2 [u-] ta [u-] sv vowel/u#_3 [U] ta [U:] ta -vowel/u#_4 [U] en_sc - [u:] en_sc +vowel/u#_4 [U] en-sc + [u:] en-sc vowel/u_5 [u] sw + [u] nso vowel/u#_5 [y] vi -vowel/u_6 [u] ta +vowel/u_6 [u:] en-rp + [u] ta [u:] ta - [U] pt_pt - [u] pt_pt + [U] pt-pt + [u] pt-pt [u] ku vowel/u_7 [u] vi -vowel/u#_7 [u#] tr +vowel/u#_7 [@] tr vowel/u_bck [u] base2 [U] cy [u] fi - [u] fr_ca + [u] fr-ca [u:] hi [u:] hu [u] nl @@ -1781,10 +1815,9 @@ vowel/u_bck [u] base2 vowel/u_bck2 [u] fr [u:] fr [u:] la -vowel/u_fnt [u:] en_rp vowel/uu [U] en - [U] en_n - [U] en_wm + [U] en-n + [U] en-wm vowel/uu# [U] ku vowel/uu_2 [U] base2 [U] de @@ -1794,15 +1827,15 @@ vowel/uu_3 [u] af [y] zh vowel/uu_4 [U] fi [U] sv -vowel/uu_bck [U] en_wi - [U] fr_ca +vowel/uu_bck [U] en-wi + [U] fr-ca [U] hi [u] hu [U] pt [U] no [u] zhy [U] pa -vowel/V [3] en_sc +vowel/V [3] en-sc [W#] da [@] bg vowel/V_2 [V] en @@ -1810,14 +1843,16 @@ vowel/V_2 [V] en [V] ru [V#] ru [V] ku -vowel/V_3 [V] en_rp +vowel/V_3 [V] en-rp + [3] de + [3:] de [V] hi [V] ta [V] pa [a] bg -vowel/V_4 [V] en_sc +vowel/V_4 [V] en-sc [V] da -vowel/V_6 [V] en_us +vowel/V_6 [V] en-us [a#] lv vowel/y [y] base2 [y:] de @@ -1830,7 +1865,7 @@ vowel/y [y] base2 [y] sq [y] da vowel/y# [Y] base2 - [3:] en_wm + [3:] en-wm [Y:] de [Y] fi [Y] fr @@ -1838,6 +1873,7 @@ vowel/y# [Y] base2 [8] nl [Y] ro [oe] zhy + [W] tr vowel/y## [y] is vowel/y_2 [y:] la [y] zh @@ -1850,7 +1886,7 @@ vowel/y_4 [y:] no vowel/y_5 [y:] sv [y] tr [y] ku -vowel/yy [y"] fr_ca +vowel/yy [y"] fr-ca [y] no [Y] da vowel/yy_3 [y] sv @@ -1864,80 +1900,90 @@ vwl_af/@ [@] af vwl_af/I [I] af vwl_af/r@ [@] af [I] af +vwl_de/uu_@ [UR] de vwl_en/aI@ [aI@] en - [aI@] en_n - [aI@] en_rp -vwl_en/aI@_2 [aI] en_sc - [aI@] en_sc + [aI@] en-n + [aI@] en-rp +vwl_en/aI@_2 [aI] en-sc + [aI@] en-sc vwl_en/aU@ [aU@] en - [aU@] en_n - [aU@] en_sc - [aU@] en_wm + [aU@] en-n + [aU@] en-sc + [aU@] en-wm vwl_en/@L [@L] en - [@L] en_us + [@L] en-us [@L] af -vwl_en/@L_2 [@L] en_sc -vwl_en_n/O@ [O@] en_n - [o@] en_n -vwl_en/ooi@ [aI@] en_wm -vwl_en_rp/aa [A:] en_rp - [A@] en_rp - [aa] en_rp -vwl_en_rp/aU@ [aU@] en_rp -vwl_en_rp/i@ [i@] en_rp +vwl_en/@L_2 [@L] en-sc +vwl_en_n/O@ [O@] en-n + [o@] en-n +vwl_en/ooi@ [aI@] en-wm +vwl_en_rp/aa [A:] en-rp + [A@] en-rp + [aa] en-rp +vwl_en_rp/aU@ [aU@] en-rp +vwl_en_rp/i@ [i@] en-rp vwl_en/u_L [u:] en -vwl_en_us/3_us [3] en_us -vwl_en_us/3_us2 [3:] en_us -vwl_en_us/a [a] en_us -vwl_en_us/ai@ [aI@] en_us -vwl_en_us/ar [A:] en_us - [A@] en_us -vwl_en_us/aU@ [aU@] en_us -vwl_en_us/ee [E] en_us -vwl_en_us/er [e@] en_us -vwl_en_us/ir [i@3] en_us -vwl_en_us/oor [0] en_us - [O:] en_us - [O@] 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_en_us/3_us [3] en-us +vwl_en_us/3_us2 [3:] en-us +vwl_en_us/a [a] en-us +vwl_en_us/ai@ [aI@] en-us +vwl_en_us/ar [A:] en-us + [A@] en-us +vwl_en_us/aU@ [aU@] en-us +vwl_en_us/ee [E] en-us +vwl_en_us/er [e@] en-us +vwl_en_us/ir [i@3] en-us +vwl_en_us/oor [0] en-us + [O:] en-us + [O@] 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/br [r/2] fr +vwl_fr/e2r [ߵ ] fr +vwl_fr/e_2r [ߵ ] fr +vwl_fr/ee2r [ߵ ] fr +vwl_fr/i2r [ߵ ] fr +vwl_fr/j [j/] fr +vwl_fr/o2r [ߵ ] fr +vwl_fr/oo2r [ߵ ] fr vwl_fr/r [r] fr - [r2] fr + [r/2] fr vwl_fr/r_ [r/] fr vwl_fr/r_@ [r/] fr -vwl_fr/r@ [é”] fr -vwl_fr/@R [x] pt_pt -vwl_fr/@R2 [R] fr_ca -vwl_fr/ra [é”] fr +vwl_fr/r@ [ߵ ] fr +vwl_fr/@R [x] pt-pt +vwl_fr/r@2 [ߵ ] fr +vwl_fr/@R2 [R] fr-ca +vwl_fr/ra [ߵ ] fr vwl_fr/r_a [r/] fr -vwl_fr/raa [é”] fr -vwl_fr/re [é”] 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/re2 [ߵ ] fr +vwl_fr/ree [ߵ ] fr +vwl_fr/ri [ߵ ] fr vwl_fr/r_i [r/] fr -vwl_fr/rj [é”] fr +vwl_fr/rj [ߵ ] fr vwl_fr/r_n [r/] fr -vwl_fr/ro [é”] fr +vwl_fr/ro [ߵ ] fr vwl_fr/r_o [r/] fr -vwl_fr/roo [é”] fr +vwl_fr/roo [ߵ ] fr vwl_fr/rr [r/] fr -vwl_fr/ru [é”] fr +vwl_fr/ru [ߵ ] fr vwl_fr/r_u [r/] fr -vwl_fr/ry [é”] fr +vwl_fr/rw [ߵ ] fr +vwl_fr/ry [ߵ ] fr +vwl_fr/r_y [r/] fr vwl_fr/tr [r/2] fr vwl_fr/trr [r/] fr -vwl_fr/u2r [é”] fr -vwl_fr/y2r [é”] fr +vwl_fr/u2r [ߵ ] fr +vwl_fr/wa [w] fr + [w/] fr +vwl_fr/y2r [ߵ ] fr vwl_hi/l-voc [l-] base [l-] sk [l:] sk @@ -1997,24 +2043,29 @@ vwl_zh/uo [uo] zh vwl_zh/y& [y&] zh vwl_zh/yee [yE] zh w/iw_ [w] base + [w/] fr w/_w [w] base + [w/] fr w/w_ [w] base + [w/] fr w/w@ [w] base [w] fr + [w/] fr w/w2 [w2] base2 [w] pl [w] sq w/wa [w] base - [w] fr w/we [w] base [w] fr + [w/] fr w/wi [w] base [w] fr + [w/] fr [i] vi w/wi2 [i:] en - [i:] en_n - [i:] en_sc - [i:] en_rp + [i:] en-n + [i:] en-sc + [i:] en-rp [i2] de [i:] de [i] nl @@ -2022,9 +2073,12 @@ w/wi2 [i:] en [i:] no w/wo [w] base [w] fr + [w/] fr w/wu [w] base [w] fr + [w/] fr w/xw [w] base + [w/] fr x/b [b] base [b] fr [b;] ro diff --git a/phsource/j/ju b/phsource/j/ju index a8951a92..6bb2be25 100644 Binary files a/phsource/j/ju and b/phsource/j/ju differ diff --git a/phsource/l/L1_@L b/phsource/l/L1_@L index c135ee01..146aa52b 100644 Binary files a/phsource/l/L1_@L and b/phsource/l/L1_@L differ diff --git a/phsource/l/L1_aL b/phsource/l/L1_aL index 4f004f8e..f7d4be92 100644 Binary files a/phsource/l/L1_aL and b/phsource/l/L1_aL differ diff --git a/phsource/l/L1_iL b/phsource/l/L1_iL index 8a9375da..1789adcb 100644 Binary files a/phsource/l/L1_iL and b/phsource/l/L1_iL differ diff --git a/phsource/l/L1_oL b/phsource/l/L1_oL index f3ae3dcb..e84496a9 100644 Binary files a/phsource/l/L1_oL and b/phsource/l/L1_oL differ diff --git a/phsource/l/L1_uL b/phsource/l/L1_uL index 6762f27b..590255fc 100644 Binary files a/phsource/l/L1_uL and b/phsource/l/L1_uL differ diff --git a/phsource/l/L2_@L b/phsource/l/L2_@L index 7c4d9304..77cdd41b 100644 Binary files a/phsource/l/L2_@L and b/phsource/l/L2_@L differ diff --git a/phsource/l/L2_aL b/phsource/l/L2_aL index 56daf002..270948f9 100644 Binary files a/phsource/l/L2_aL and b/phsource/l/L2_aL differ diff --git a/phsource/l/L2_iL b/phsource/l/L2_iL index 66d501ed..caff2f38 100644 Binary files a/phsource/l/L2_iL and b/phsource/l/L2_iL differ diff --git a/phsource/l/L2_oL b/phsource/l/L2_oL index e8398d47..583e4133 100644 Binary files a/phsource/l/L2_oL and b/phsource/l/L2_oL differ diff --git a/phsource/l/L2_uL b/phsource/l/L2_uL index 4369dbee..9e0863dd 100644 Binary files a/phsource/l/L2_uL and b/phsource/l/L2_uL differ diff --git a/phsource/l/l_i b/phsource/l/l_i index 62634716..d0760b53 100755 Binary files a/phsource/l/l_i and b/phsource/l/l_i differ diff --git a/phsource/l/l_o b/phsource/l/l_o index 2434e5a0..5562a62b 100755 Binary files a/phsource/l/l_o and b/phsource/l/l_o differ diff --git a/phsource/ll/_ll b/phsource/ll/_ll new file mode 100644 index 00000000..b74427ab Binary files /dev/null and b/phsource/ll/_ll differ diff --git a/phsource/ll/ll b/phsource/ll/ll new file mode 100644 index 00000000..2c9992b8 Binary files /dev/null and b/phsource/ll/ll differ diff --git a/phsource/ll/xll b/phsource/ll/xll new file mode 100644 index 00000000..8a16c167 Binary files /dev/null and b/phsource/ll/xll differ diff --git a/phsource/m/m-syl b/phsource/m/m-syl new file mode 100644 index 00000000..377b94c6 Binary files /dev/null and b/phsource/m/m-syl differ diff --git a/phsource/m/m_ b/phsource/m/m_ index 8d308898..d01f2d7e 100644 Binary files a/phsource/m/m_ and b/phsource/m/m_ differ diff --git a/phsource/mbrola/af1 b/phsource/mbrola/af1 index e2351d80..c2e75250 100644 --- a/phsource/mbrola/af1 +++ b/phsource/mbrola/af1 @@ -42,7 +42,7 @@ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 I2 NULL 0 i -0 a2 NULL 0 a +0 a# NULL 0 a 0 aa NULL 0 a 0 0 NULL 0 O 0 A@ NULL 0 a diff --git a/phsource/mbrola/cr1 b/phsource/mbrola/cr1 index cd86df41..1c417ea0 100644 --- a/phsource/mbrola/cr1 +++ b/phsource/mbrola/cr1 @@ -66,7 +66,7 @@ volume 16 0 @2 NULL 0 e // @ 0 @5 NULL 0 e // @ 0 3 NULL 0 r // @ -0 a2 NULL 0 a // @ +0 a# NULL 0 a // @ 0 I2 NULL 0 i 0 I NULL 0 i 0 a NULL 0 a diff --git a/phsource/mbrola/de2 b/phsource/mbrola/de2 index be24daaf..afad4d52 100644 --- a/phsource/mbrola/de2 +++ b/phsource/mbrola/de2 @@ -34,6 +34,8 @@ 0 _| NULL 0 _ 0 pF NULL 0 pf 0 r NULL 0 R +0 V# NULL 0 R +0 UR NULL 60 U R 0 eI NULL 60 E j 0 oU NULL 0 o: @@ -45,7 +47,7 @@ 0 @L NULL 50 @ l 0 @2 NULL 0 @ 0 @5 NULL 0 @ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 I2 NULL 0 I 0 aa NULL 0 a 0 V NULL 0 a: diff --git a/phsource/mbrola/de4 b/phsource/mbrola/de4 index 3bebb351..6a566ab3 100644 --- a/phsource/mbrola/de4 +++ b/phsource/mbrola/de4 @@ -30,6 +30,8 @@ 0 g- NULL 0 NULL 0 @- NULL 0 NULL 0 * NULL 0 R +0 V# NULL 0 R +0 UR NULL 60 U R 0 E2 NULL 0 E 0 y NULL 0 Y @@ -53,7 +55,7 @@ 0 @L NULL 0 L 0 @2 NULL 0 @ 0 @5 NULL 0 @ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 I2 NULL 0 I 0 aa NULL 0 a 0 V NULL 0 a: diff --git a/phsource/mbrola/de6 b/phsource/mbrola/de6 index 67b8610a..b4c19db7 100644 --- a/phsource/mbrola/de6 +++ b/phsource/mbrola/de6 @@ -25,6 +25,9 @@ 0 _! VWL 0 ? 0 pF NULL 0 pf 0 r NULL 0 R +0 V# NULL 0 R +0 UR NULL 60 U R + 0 eI NULL 60 E j 0 oU NULL 60 @ w @@ -36,7 +39,7 @@ 0 @L NULL 40 @ l 0 @2 NULL 0 @ 0 @5 NULL 0 @ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 I2 NULL 0 I 0 aa NULL 0 a 0 V NULL 0 a: diff --git a/phsource/mbrola/en1 b/phsource/mbrola/en1 index 02d41e3e..b6ea279c 100644 --- a/phsource/mbrola/en1 +++ b/phsource/mbrola/en1 @@ -1,6 +1,6 @@ //volume 29 0 oU NULL 0 @U -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 @/ NULL 0 @ diff --git a/phsource/mbrola/es b/phsource/mbrola/es index 86bc8a0c..8b948cad 100644 --- a/phsource/mbrola/es +++ b/phsource/mbrola/es @@ -64,7 +64,7 @@ 0 3 NULL 60 e r 0 3: NULL 60 e r 0 @L NULL 40 e l -0 a2 NULL 0 a +0 a# NULL 0 a 0 aa NULL 0 a 0 e@ NULL 0 e r 0 oU NULL 0 o diff --git a/phsource/mbrola/fr1 b/phsource/mbrola/fr1 index 5bd564ea..39f2dc3b 100644 --- a/phsource/mbrola/fr1 +++ b/phsource/mbrola/fr1 @@ -55,7 +55,7 @@ volume 15 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 3 NULL 0 @ -0 a2 NULL 0 a +0 a# NULL 0 a 0 I2 NULL 0 i 0 aa NULL 0 a 0 V NULL 0 @ diff --git a/phsource/mbrola/gr2 b/phsource/mbrola/gr2 index fe9aa051..6e6c7ac3 100644 --- a/phsource/mbrola/gr2 +++ b/phsource/mbrola/gr2 @@ -66,7 +66,7 @@ volume 16 0 @2 NULL 0 e // @ 0 @5 NULL 0 e // @ 0 3 NULL 0 r // @ -0 a2 NULL 0 a // @ +0 a# NULL 0 a // @ 0 I2 NULL 0 i 0 I NULL 0 i 0 a NULL 0 a diff --git a/phsource/mbrola/hu1 b/phsource/mbrola/hu1 index aff2cb49..c0596f64 100644 --- a/phsource/mbrola/hu1 +++ b/phsource/mbrola/hu1 @@ -37,7 +37,7 @@ volume 32 0 @2 NULL 0 2 // @ 0 @5 NULL 0 2 // @ 0 3 NULL 0 2 // @ -0 a2 NULL 0 a: // @ +0 a# NULL 0 a: // @ 0 I2 NULL 0 i 0 I NULL 0 i 0 a NULL 0 a: diff --git a/phsource/mbrola/nl b/phsource/mbrola/nl index 05e472b4..fddcd05b 100644 --- a/phsource/mbrola/nl +++ b/phsource/mbrola/nl @@ -45,7 +45,7 @@ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 3 NULL 0 @ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 I2 NULL 0 I 0 aa NULL 0 a 0 V NULL 0 @ diff --git a/phsource/mbrola/pl1 b/phsource/mbrola/pl1 index 3163ca71..058b3f30 100644 --- a/phsource/mbrola/pl1 +++ b/phsource/mbrola/pl1 @@ -44,7 +44,7 @@ 0 @2 NULL 0 I // @ 0 @5 NULL 0 I // @ 0 3 NULL 0 I // @ -0 a2 NULL 0 a // @ +0 a# NULL 0 a // @ 0 I2 NULL 0 I 0 aa NULL 0 a 0 V NULL 0 a // @ diff --git a/phsource/mbrola/pt1 b/phsource/mbrola/pt1 index f6e26b66..107bcc47 100644 --- a/phsource/mbrola/pt1 +++ b/phsource/mbrola/pt1 @@ -84,7 +84,7 @@ 0 3 NULL 60 e r 0 3: NULL 60 e r 0 @L NULL 40 e l -0 a2 NULL 0 a +0 a# NULL 0 a 0 aa NULL 0 a 0 e@ NULL 0 e r 0 oU NULL 0 o diff --git a/phsource/mbrola/ptbr b/phsource/mbrola/ptbr index 73694e65..3a332d26 100644 --- a/phsource/mbrola/ptbr +++ b/phsource/mbrola/ptbr @@ -102,7 +102,7 @@ 0 3 NULL 60 e r 0 3: NULL 60 e r 0 @L NULL 40 e l -0 a2 NULL 0 a +0 a# NULL 0 a 0 aa NULL 0 a 0 e@ NULL 0 e r 0 oU NULL 0 o diff --git a/phsource/mbrola/ptbr4 b/phsource/mbrola/ptbr4 index 7edfddd0..879c30dc 100644 --- a/phsource/mbrola/ptbr4 +++ b/phsource/mbrola/ptbr4 @@ -95,7 +95,7 @@ 0 3 NULL 60 e r 0 3: NULL 60 e r 0 @L NULL 40 e l -0 a2 NULL 0 a +0 a# NULL 0 a 0 aa NULL 0 a 0 e@ NULL 0 e r 0 oU NULL 0 o diff --git a/phsource/mbrola/ro1 b/phsource/mbrola/ro1 index d6248fe5..e4541feb 100644 --- a/phsource/mbrola/ro1 +++ b/phsource/mbrola/ro1 @@ -67,7 +67,7 @@ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 3 NULL 0 @ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 I2 NULL 0 i 0 aa NULL 0 a 0 V NULL 0 @ diff --git a/phsource/mbrola/sv b/phsource/mbrola/sv index a8724dd8..1fecd9ea 100644 --- a/phsource/mbrola/sv +++ b/phsource/mbrola/sv @@ -29,7 +29,7 @@ 0 E NULL 0 e 0 E- NULL 0 e 0 @ N 0 e -0 a2 NULL 0 a +0 a# NULL 0 a 0 E: r 0 {: 0 Y: r 0 9: 0 E r 0 { diff --git a/phsource/mbrola/sv2 b/phsource/mbrola/sv2 index d6a121e6..0f0e95ce 100644 --- a/phsource/mbrola/sv2 +++ b/phsource/mbrola/sv2 @@ -25,7 +25,7 @@ 0 E NULL 0 e 0 E- NULL 0 e 0 @ N 0 e -0 a2 NULL 0 a +0 a# NULL 0 a 0 E: r 0 {: 0 Y: r 0 9: 0 E r 0 { diff --git a/phsource/mbrola/us b/phsource/mbrola/us index 23399126..2e2db319 100644 --- a/phsource/mbrola/us +++ b/phsource/mbrola/us @@ -1,4 +1,4 @@ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 @/ NULL 0 @ diff --git a/phsource/mbrola/us3 b/phsource/mbrola/us3 index 44e094a9..1f59b143 100644 --- a/phsource/mbrola/us3 +++ b/phsource/mbrola/us3 @@ -1,4 +1,4 @@ -0 a2 NULL 0 @ +0 a# NULL 0 @ 0 @2 NULL 0 @ 0 @5 NULL 0 @ 0 @/ NULL 0 @ diff --git a/phsource/n/n-syl b/phsource/n/n-syl new file mode 100644 index 00000000..79f4d5b3 Binary files /dev/null and b/phsource/n/n-syl differ diff --git a/phsource/nn/nn-syl b/phsource/nn/nn-syl new file mode 100644 index 00000000..0d02ce1c Binary files /dev/null and b/phsource/nn/nn-syl differ diff --git a/phsource/ph_dutch b/phsource/ph_dutch index 4b316192..e5e56ce0 100644 --- a/phsource/ph_dutch +++ b/phsource/ph_dutch @@ -77,15 +77,25 @@ endphoneme phoneme a: vowel starttype #a endtype #a length 210 + IF thisPh(isUnstressed) THEN + FMT(vowel/a#_4) + ENDIF FMT(vowel/a) endphoneme phoneme A vowel starttype #a endtype #a length 160 + IF thisPh(isUnstressed) THEN + FMT(vowel/a#_2) + ENDIF FMT(vowel/aa_7) endphoneme +phoneme A~ + import_phoneme fr/A~ +endphoneme + // Diphthongs //=========== @@ -147,14 +157,10 @@ endphoneme phoneme r // from Afrikaans - import_phoneme af/r + import_phoneme base/R2 endphoneme -phoneme v2 // approximant, not fricative - import_phoneme base/v# -endphoneme - phoneme Q vcd vel frc @@ -163,6 +169,11 @@ phoneme Q Vowelin f1=2 f2=2300 200 300 f3=-300 80 Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk + IF nextPhW(isVoiced) THEN + ELSE + ChangePhoneme(x) + ENDIF + IF nextPh(isPause2) THEN FMT(voc/Q_) addWav(vocw/Q_) ENDIF diff --git a/phsource/ph_english b/phsource/ph_english index 284eea67..79b02eb5 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -78,6 +78,20 @@ phoneme r- // linking r, used in English between certain vowels and a followin endphoneme +phoneme z/2 // used for 's suffix + vcd alv frc sibilant + lengthmod 6 + IF prevPh(isSibilant) THEN + InsertPhoneme(I2) + ENDIF + + IF prevPh(isVoiced) THEN + ELSE + ChangePhoneme(s) + ENDIF + ChangePhoneme(z) +endphoneme + //******************************************************************* // VOWELS @@ -88,6 +102,9 @@ phoneme @ // Schwa unstressed length 140 IfNextVowelAppend(r-) + IF thisPh(isWordEnd) THEN + FMT(vowel/@_6) + ENDIF FMT(vowel/@) endphoneme @@ -97,6 +114,9 @@ phoneme 3 // Schwa, used for rhotic schwa in American unstressed length 140 IfNextVowelAppend(r-) + IF thisPh(isWordEnd) THEN + FMT(vowel/@_6) + ENDIF FMT(vowel/@) endphoneme @@ -135,12 +155,15 @@ endphoneme phoneme a vowel starttype #a endtype #a length 160 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) + IF thisPh(isUnstressed) THEN + FMT(vowel/a_7) + ENDIF FMT(vowel/a) endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 150 @@ -240,7 +263,7 @@ endphoneme phoneme i: vowel starttype #i endtype #i - length 175 + length 175 long IfNextVowelAppend(;) IF prevPh(w) THEN VowelStart(w/wi2) diff --git a/phsource/ph_english_n b/phsource/ph_english_n index 65aceace..b5c495f4 100644 --- a/phsource/ph_english_n +++ b/phsource/ph_english_n @@ -24,7 +24,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 140 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) FMT(vowel/a) endphoneme @@ -86,7 +86,7 @@ endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 140 diff --git a/phsource/ph_english_rp b/phsource/ph_english_rp index f6e7a008..35c6d5eb 100644 --- a/phsource/ph_english_rp +++ b/phsource/ph_english_rp @@ -46,7 +46,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 175 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) FMT(vowel/&) endphoneme @@ -107,7 +107,7 @@ endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 150 @@ -150,7 +150,7 @@ endphoneme phoneme i: vowel starttype #i endtype #i - length 175 + length 175 long IfNextVowelAppend(;) IF prevPh(w) THEN VowelStart(w/wi2) @@ -187,7 +187,7 @@ endphoneme phoneme u: vowel starttype #u endtype #u length 190 - FMT(vowel/u_fnt) + FMT(vowel/u_6) endphoneme @@ -214,7 +214,7 @@ endphoneme phoneme eI vowel starttype #i endtype #i - length 210 + length 220 FMT(vdiph2/ei_2) endphoneme diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index 1412a287..b4fcacad 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -54,7 +54,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 200 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) ChangeIfNotStressed(a/) FMT(vowel/a_3) endphoneme @@ -63,12 +63,12 @@ endphoneme phoneme a/ vowel starttype #a endtype #a length 160 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) FMT(vowel/a_3) endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 140 diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 1b0bc559..1c885245 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -52,7 +52,7 @@ phoneme a vowel starttype #e endtype #@ length 210 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) IF nextPh(isNasal) THEN FMT(vnasal/ee_n2) @@ -62,11 +62,11 @@ endphoneme phoneme aa // 'bath' etc. - import_phoneme en_us/a + import_phoneme en-us/a endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 150 diff --git a/phsource/ph_english_wi b/phsource/ph_english_wi index a93cfc71..7ff1bef8 100644 --- a/phsource/ph_english_wi +++ b/phsource/ph_english_wi @@ -85,7 +85,7 @@ phoneme U endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 140 diff --git a/phsource/ph_english_wm b/phsource/ph_english_wm index 366a2d50..64c8d4f2 100644 --- a/phsource/ph_english_wm +++ b/phsource/ph_english_wm @@ -19,7 +19,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 170 - ChangeIfDiminished(a2) + ChangeIfDiminished(a#) FMT(vowel/a) endphoneme @@ -81,7 +81,7 @@ phoneme U endphoneme -phoneme a2 +phoneme a# vowel starttype #@ endtype #@ unstressed length 140 diff --git a/phsource/ph_french b/phsource/ph_french index 282a7fd5..72de3c7b 100644 --- a/phsource/ph_french +++ b/phsource/ph_french @@ -1,14 +1,14 @@ //==================================================== // French //==================================================== -// Updated 2010-05-19 Michel Such +// Updated 2010-06-12 Michel Such phoneme #l virtual // Used for l and l/ endphoneme phoneme #r virtual -// Used for r, r2 and r/ +// Used for "r" sounds endphoneme phoneme : // Lengthen previous vowel by "length" @@ -16,15 +16,21 @@ phoneme : // Lengthen previous vowel by "length" length 40 // shorter than for fr-ca endphoneme +phoneme #cFR virtual +// To identify "b k d f g p t v" when before "r" +endphoneme -procedure pre_post_r + +procedure pre_r IF prevPh(y) THEN VowelEnding(vwl_fr/y2r) + ELIF prevPh(E) OR prevPh(E2) THEN + VowelEnding(vwl_fr/e_2r) 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 + ELIF prevPh(O~) THEN VowelEnding(vwl_fr/oo2r) ELIF prevPh(isVowel) THEN PrevVowelEndings @@ -36,16 +42,26 @@ procedure pre_post_r VowelEnding(vwl_fr/u2r) EndSwitch ENDIF +endprocedure - IF nextPh(A~) THEN + +procedure post_r + + IF nextPh(E) OR nextPh(E2) THEN + VowelStart(vwl_fr/re2) + ELIF nextPh(W) THEN + VowelStart(vwl_fr/r@2) + ELIF 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(w) THEN + VowelStart(vwl_fr/rw) ELIF nextPh(O~) THEN VowelStart(vwl_fr/roo) - ELIF nextPh(j/) THEN + ELIF nextPh(j) OR nextPh(j/) THEN VowelStart(vwl_fr/rj) ELIF nextPh(isVowel) THEN NextVowelStarts @@ -61,90 +77,88 @@ endprocedure phoneme r - liquid rhotic vel nopause + vcd uvl frc nopause + rhotic starttype #r endtype #r - 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 + Vowelin f1=1 f2=1600 -500 500 f3=-200 100 len=65 + Vowelout f1=1 f2=1200 -400 800 f3=200 100 len=60 + lengthmod 7 IF nextPh(isNotVowel) THEN ChangePhoneme(r/) - ENDIF - - CALL pre_post_r - - 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 + ELIF prevPh(isNotVowel) OR prevPh(isPause) THEN ChangePhoneme(r/2) ENDIF + CALL pre_r + CALL post_r + FMT(vwl_fr/r) endphoneme phoneme r2 // silent unless followed by vowel - liquid rhotic vel + vcd uvl frc + rhotic starttype #r endtype #r - 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) + ELSE + ChangePhoneme(r) ENDIF - - CALL pre_post_r - - FMT(vwl_fr/r) endphoneme phoneme r/ // variant of [r] when not preceding a vowel - liquid rhotic vel + vcd uvl frc + rhotic starttype #r endtype #r - Vowelout f1=0 f2=1150 -500 500 f3=200 100 len=30 - lengthmod 2 + Vowelout f1=1 f2=1200 -400 800 f3=200 100 len=30 + lengthmod 7 - IF thisPh(isWordEnd) THEN - IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN - FMT(vwl_fr/trr) addWav(r3/rx, 15) - ELIF prevPh(isNotVowel) THEN - FMT(vwl_fr/rr) addWav(r3/rx, 15) - ENDIF + IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN + FMT(vwl_fr/trr) addWav(r3/rx, 15) + ELIF prevPh(isNotVowel) THEN + FMT(vwl_fr/rr) addWav(r3/rx, 15) ENDIF - 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) + 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(y) THEN + VowelEnding(vwl_fr/r_y) ENDIF - FMT(vwl_fr/r_) addWav(r3/rx, 30) + IF nextPh(isNasal) THEN + FMT(vwl_fr/r_n) addWav(r3/rx, 20) + ELIF nextPh(#r) THEN + length 30 + ENDIF + + FMT(vwl_fr/r_) addWav(r3/rx, 20) endphoneme phoneme r/2 - liquid rhotic + liquid rhotic uvl nopause starttype #r endtype #r - palatal - Vowelin f1=0 f2=1200 -500 500 f3=-200 100 len=75 + Vowelin f1=1 f2=1600 -500 500 f3=-200 100 len=65 amp=8 - CALL pre_post_r - FMT(vwl_fr/tr) addWav(r3/rx, 25) + CALL post_r + IF prevPhW(f) OR prevPhW(k) OR prevPhW(p) OR prevPhW(s) OR prevPhW(t) OR prevPhW(S) THEN + FMT(vwl_fr/tr) + ELIF prevPhW(#cFR) THEN + FMT(vwl_fr/br) + ELSE + length 80 + FMT(vwl_fr/r) + ENDIF endphoneme @@ -155,6 +169,8 @@ phoneme l IF nextPh(isNotVowel) THEN ChangePhoneme(l/) + ELIF prevPhW(#cFR) THEN + ChangePhoneme(l/2) ENDIF NextVowelStarts @@ -200,14 +216,18 @@ phoneme l/ // used for [l] when not before a vowel ChangePhoneme(l) ENDIF - PrevVowelEndings - VowelEnding(l/l_@) - VowelEnding(l/l_a) - VowelEnding(l/l_e) - VowelEnding(l/l_i) - VowelEnding(l/l_o) - VowelEnding(l/l_u) + IF prevPhW(y) THEN + VowelEnding(l/l_y) + ELIF prevPhW(isVowel) THEN + PrevVowelEndings + VowelEnding(l/l_@) + VowelEnding(l/l_a) + VowelEnding(l/l_e) + VowelEnding(l/l_i) + VowelEnding(l/l_o) + VowelEnding(l/l_u) EndSwitch +ENDIF IF prevPh(#r) THEN FMT(l/_l) @@ -217,6 +237,31 @@ phoneme l/ // used for [l] when not before a vowel endphoneme +phoneme l/2 + liquid + starttype #l endtype #l + + IF nextPh(isNotVowel) THEN + ChangePhoneme(l/) + ENDIF + + NextVowelStarts + VowelStart(l/l@) + VowelStart(l/la, -10) + VowelStart(l/le, -15) + VowelStart(l/li, -15) + VowelStart(l/lo, -10) + VowelStart(l/lu, -20) + EndSwitch + + IF prevPh(t) THEN + FMT(l/tl) + ENDIF + + FMT(l/l) +endphoneme + + // Vowels //======= phoneme @ @@ -240,17 +285,14 @@ endphoneme phoneme e vowel starttype #e endtype #e - IF nextPh(isVowel) THEN - length 220 - ELSE - length 170 - ENDIF + palatal IF nextPh(l/) THEN VowelEnding(l/xl, -20) - ENDIF - IF nextPh(isVowel) THEN + ELIF nextPh(isVowel) THEN length 200 + ELSE + length 170 ENDIF FMT(vowel/e_8) @@ -259,10 +301,11 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 170 IF nextPhW(j) THEN length 190 + ELSE + length 170 ENDIF FMT(vowel/e_mid) @@ -279,23 +322,33 @@ endphoneme phoneme i vowel starttype #i endtype #i + palatal - IF prevPhW(#r) AND nextPhW(isVowel) THEN - ChangePhoneme(j/) + IF prevPhW(r/2) OR prevPhW(l/2) THEN + IF nextPhW(isVowel) THEN + length 240 + ENDIF + ELIF prevPhW(#r) AND nextPhW(isVowel) THEN + IF nextPhW(#i) THEN + length 220 + IfNextVowelAppend(;) + ELSE + ChangePhoneme(j/) + ENDIF ELIF nextPhW(isVowel) THEN ChangePhoneme(j) ELSE length 160 + IfNextVowelAppend(;) ENDIF - IfNextVowelAppend(;) - FMT(vowel/i_8) endphoneme -phoneme i: // longer than i +phoneme I // longer than i vowel starttype #i endtype #i + palatal length 240 IfNextVowelAppend(;) @@ -306,20 +359,18 @@ endphoneme phoneme j/ // Short "i" between "r" and a vowel vowel starttype #i endtype #i - palatal + length 100 + unstressed - 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 + NextVowelStarts + VowelStart(j/j@) + VowelStart(j/ja) + VowelStart(j/je) + VowelStart(j/ji) + VowelStart(j/jo) + VowelStart(j/ju) + EndSwitch + FMT(vwl_fr/j) endphoneme @@ -339,10 +390,12 @@ phoneme o ELIF nextPh(z) THEN FMT(vowel/o) ELSE - ChangePhoneme(O) + FMT(vowel/o_mid2) ENDIF ELSE - IF nextPhW(isLiquid) AND next2Ph(isNotVowel) THEN + IF nextPhW(#r) AND next2Ph(isNotVowel) THEN + ChangePhoneme(O) + ELIF nextPhW(isLiquid) AND next2Ph(isNotVowel) THEN ChangePhoneme(O) ELIF nextPhW(n) AND next2Ph(j) THEN FMT(vowel/o) @@ -418,16 +471,10 @@ endphoneme phoneme y vowel starttype #u endtype #u - IF nextPh(isVowel) THEN - length 200 - ELSE - length 170 - ENDIF + length 170 - IF nextPh(l/) THEN - VowelEnding(l/l_y) - ELIF nextPhW(E~) THEN - FMT(vowel/y, -30) + IF nextPhW(E~) OR nextPhW(#i) THEN + FMT(vowel/y, -40) ENDIF FMT(vowel/y) @@ -438,15 +485,7 @@ phoneme W vowel starttype #@ endtype #@ length 180 - IF prevPh(l) THEN - VowelStart(l/l@, -20) - ENDIF - - IF nextPh(l/) THEN - VowelEnding(l/l_@, -20) - ENDIF - - FMT(vowel/@) + FMT(vowel/@_6) endphoneme @@ -480,7 +519,7 @@ phoneme w IF prevPh(#r) OR prevPhW(#l) THEN NextVowelStarts VowelStart(w/w@) - VowelStart(w/wa, -10) + VowelStart(vwl_fr/wa) VowelStart(w/we) VowelStart(w/wi) VowelStart(w/wo) @@ -493,25 +532,34 @@ endphoneme phoneme w/ - import_phoneme base/w -endphoneme + liquid + lengthmod 7 + IF nextPh(isVowel) THEN + NextVowelStarts + VowelStart(w/w@) + VowelStart(vwl_fr/wa) + VowelStart(w/we) + VowelStart(w/wi) + VowelStart(w/wo) + VowelStart(w/wu) + EndSwitch -phoneme w^a - vowel starttype #o endtype #a - length 200 + VowelEnding(w/xw, -30) - FMT(vdiph/oa_fr) -endphoneme - - -phoneme w^i - vowel starttype #u endtype #i - length 240 - - IfNextVowelAppend(;) - - FMT(vdiph/yi_fr) + IF prevPh(isPause) THEN + FMT(w/_w) + ELSE + FMT(w/_w) + ENDIF + ELSE + // no vowel follows + Vowelout len=50 + IF prevPh(#i) THEN + FMT(w/iw_) + ENDIF + FMT(w/w_) + ENDIF endphoneme @@ -551,10 +599,6 @@ endphoneme // These vowels map to others in fr-fr, but are distinct in fr-ca -phoneme I // same as [i] - import_phoneme fr/i -endphoneme - phoneme U // same as [u] import_phoneme fr/u endphoneme @@ -580,8 +624,10 @@ endphoneme phoneme b vcd blb stop + starttype #cFR endtype #cFR voicingswitch p - lengthmod 5 + lengthmod 6 + Vowelin f1=2 f2=1000 -300 -200 f3=-100 100 Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk IF KlattSynth THEN @@ -601,8 +647,7 @@ phoneme b ELIF nextPh(l/) THEN FMT(b/b) ELIF nextPh(#r) THEN - length 40 - FMT(b/b) addWav(x/b, 50) + FMT(b/br) addWav(x/b, 50) ENDIF FMT(b/b) addWav(x/b, 70) @@ -611,10 +656,11 @@ endphoneme phoneme d vcd alv stop + starttype #cFR endtype #cFR voicingswitch t lengthmod 5 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 amp=20 - Vowelout f1=0 f2=1700 -300 300 f3=-100 80 + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 amp=20 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 IF PreVoicing THEN FMT(d/xd) @@ -622,18 +668,35 @@ phoneme d IF nextPh(isPause2) THEN FMT(d/d_) addWav(x/d_, 50) + ELIF nextPhW(#r) THEN + FMT(d/dr) addWav(x/d_, 50) ENDIF FMT(d/d) addWav(x/d, 40) endphoneme +phoneme f + vls lbd frc + starttype #cFR endtype #cFR + voicingswitch v + lengthmod 3 + Vowelout f1=0 f2=1000 -500 -350 f3=-200 100 + + IF nextPh(isPause) THEN + WAV(ufric/f_) + ENDIF + WAV(ufric/f, 80) +endphoneme + + phoneme g vcd vel stop + starttype #cFR endtype #cFR voicingswitch k lengthmod 5 Vowelin f1=2 f2=2300 200 300 f3=-300 80 - Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk + Vowelout f1=1 f2=2300 250 300 f3=-300 80 brk IF PreVoicing THEN FMT(g/xg) @@ -642,7 +705,7 @@ phoneme g IF nextPh(isPause2) THEN FMT(g/g_) addWav(x/g_) ELIF nextPhW(#r) THEN - FMT(g2/g) addWav(x/g, 20) + FMT(g/gr) addWav(x/g, 20) ENDIF FMT(g/g) addWav(x/g, 20) @@ -651,6 +714,7 @@ endphoneme phoneme k vls vel stop + starttype #cFR endtype #cFR voicingswitch g length 50 lengthmod 2 @@ -664,7 +728,7 @@ phoneme k ELIF nextPh(#l) THEN WAV(ustop/kl, 40) ELIF nextPh(#r) THEN - length 50 + length 45 WAV(ustop/k, 50) ENDIF @@ -685,6 +749,7 @@ endphoneme phoneme p vls blb stop + starttype #cFR endtype #cFR voicingswitch b lengthmod 2 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 @@ -736,6 +801,7 @@ endphoneme phoneme S vls pla frc sibilant + starttype #cFR endtype #cFR voicingswitch Z lengthmod 3 Vowelin f1=0 f2=1900 100 300 f3=-100 80 @@ -755,6 +821,7 @@ endphoneme phoneme t vls alv stop + starttype #cFR endtype #cFR voicingswitch d lengthmod 2 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 @@ -801,11 +868,12 @@ endphoneme phoneme v vcd lbd frc + starttype #cFR endtype #cFR voicingswitch f lengthmod 6 length 90 Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 - Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 + Vowelout f1=0 f2=1000 -500 -300 f3=-300 100 IF KlattSynth THEN CALL base/v @@ -817,8 +885,8 @@ phoneme v ENDIF IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN Length 70 - ELIF nextPhW(w) OR nextPhW(#r) THEN - Length 50 + ELIF nextPhW(w/) OR nextPhW(#r) THEN + Length 60 ENDIF FMT(voc/v) addWav(vocw/v, 60) endphoneme diff --git a/phsource/ph_german b/phsource/ph_german index 55be17ce..a6abe4cd 100755 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -9,28 +9,43 @@ phoneme @ // Schwa vowel starttype #@ endtype #@ unstressed - length 125 - IF nextPh(r/) THEN - FMT(vowel/a#_3) // replace [@r] by [3] + length 120 + IF nextPh(r) THEN + IF next2Ph(isVowel) THEN + ELSE + ChangePhoneme(3) + ENDIF ENDIF - FMT(vowel/@_3) + FMT(vowel/@_4) endphoneme -phoneme 3 // open Schwa - vowel starttype #@ endtype #@ - unstressed - length 125 - FMT(vowel/a#_3) +phoneme 3 // Schwa+r + vowel starttype #a endtype #a + unstressed flag1 + length 170 + IF thisPh(isWordEnd) THEN + FMT(vowel/V_3) + ELSE + FMT(vowel/a#_3) + ENDIF +endphoneme + +phoneme 3: // Schwa+r + vowel starttype #a endtype #a + unstressed flag1 + length 220 + IF thisPh(isWordEnd) THEN + FMT(vowel/V_3) + ELSE + FMT(vowel/a#_3) + ENDIF endphoneme phoneme a vowel starttype #a endtype #a length 110 - IF nextPh(*) THEN - length 150 - ENDIF FMT(vowel/a) endphoneme @@ -38,9 +53,6 @@ endphoneme phoneme E vowel starttype #e endtype #e length 120 - IF nextPh(*) THEN - length 160 - ENDIF FMT(vowel/e_mid2) endphoneme @@ -49,9 +61,6 @@ phoneme E2 // as[E] but reduces to @ if unstressed vowel starttype #e endtype #e length 120 ChangeIfDiminished(@) - IF nextPh(*) THEN - length 160 - ENDIF FMT(vowel/e_mid2) endphoneme @@ -59,9 +68,6 @@ endphoneme phoneme I vowel starttype #i endtype #i length 120 - IF nextPh(*) THEN - length 160 - ENDIF IfNextVowelAppend(;) FMT(vowel/ii) endphoneme @@ -77,18 +83,18 @@ endphoneme phoneme O vowel starttype #o endtype #o length 120 - IF nextPh(*) THEN - length 160 - ENDIF FMT(vowel/oo) endphoneme phoneme U vowel starttype #u endtype #u - length 140 - IF nextPh(*) THEN - length 180 + length 120 + IF nextPh(r) THEN + IF next2Ph(isVowel) THEN + ELSE + ChangePhoneme(UR) + ENDIF ENDIF FMT(vowel/uu_2) endphoneme @@ -103,7 +109,7 @@ endphoneme phoneme A // reduces to [a] if not stressed vowel starttype #a endtype #a - length 240 + length 250 ChangeIfNotStressed(a) FMT(vowel/aa_6) endphoneme @@ -112,9 +118,6 @@ endphoneme phoneme i: vowel starttype #i endtype #i length 180 - IF nextPh(*) THEN - length 220 - ENDIF IF prevPh(w) THEN VowelStart(w/wi2) ENDIF @@ -125,9 +128,6 @@ endphoneme phoneme i2 vowel starttype #i endtype #i length 180 - IF nextPh(*) THEN - length 220 - ENDIF ChangeIfNotStressed(I) IF prevPh(w) THEN VowelStart(w/wi2) @@ -139,9 +139,6 @@ endphoneme phoneme u: vowel starttype #u endtype #u length 190 - IF nextPh(*) THEN - length 230 - ENDIF FMT(vowel/u) endphoneme @@ -149,7 +146,7 @@ endphoneme phoneme aU vowel starttype #a endtype #u length 220 - FMT(vdiph/aau_2) + FMT(vdiph/aau_6) endphoneme @@ -177,27 +174,21 @@ endphoneme phoneme E: vowel starttype #e endtype #e - length 190 + length 200 FMT(vowel/e_mid2) endphoneme phoneme e: vowel starttype #e endtype #e - length 190 - IF nextPh(*) THEN - length 230 - ENDIF + length 200 FMT(vowel/e_2) endphoneme phoneme o: vowel starttype #o endtype #o - length 200 - IF nextPh(*) THEN - length 240 - ENDIF + length 210 FMT(vowel/o) endphoneme @@ -205,19 +196,13 @@ endphoneme phoneme y: vowel starttype #u endtype #u length 200 - IF nextPh(*) THEN - length 240 - ENDIF FMT(vowel/y) endphoneme phoneme y vowel starttype #u endtype #u - length 130 - IF nextPh(*) THEN - length 170 - ENDIF + length 110 FMT(vowel/yy_4) endphoneme @@ -225,19 +210,13 @@ endphoneme phoneme Y: vowel starttype #@ endtype #@ length 220 - IF nextPh(*) THEN - length 260 - ENDIF FMT(vowel/y#) endphoneme phoneme W vowel starttype #@ endtype #@ - length 160 - IF nextPh(*) THEN - length 200 - ENDIF + length 150 FMT(vowel/oe) endphoneme @@ -320,13 +299,74 @@ phoneme j endphoneme -// This is actually the ENGLISH "rolling r". For german, we now use * in the dictionary, -// so this phoneme will only be used in english words in german texts. -phoneme r - liquid rhotic - trill - lengthmod 7 - CALL base/r + +// TESTING + +phoneme r // uvular trill + vcd uvl frc + lengthmod 6 + length 110 + IF nextPhW(isVowel) THEN + FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50) + ELSE + IF prevPh(isFlag1) THEN + ChangePhoneme(NULL) // 'r' is already included in the previous vowel + ELSE + ChangePhoneme(V#) + ENDIF + ENDIF endphoneme +phoneme UR + vowel starttype #u endtype #@ + flag1 + length 180 + FMT(vwl_de/uu_@) +endphoneme + + + +phoneme V2# // used for 'r' after a vowel (to create a diphthong) + liquid + lengthmod 7 + IF nextPhW(isVowel) THEN + ChangePhoneme(r") + ENDIF + FMT(r/V_2_) +endphoneme + + +phoneme V# // used for 'r' after a vowel (to create a diphthong) + liquid + lengthmod 7 + IF nextPhW(isVowel) THEN + ChangePhoneme(r") + ENDIF + + IF prevPh(#a) OR prevPh(E) THEN + FMT(r/V_2_) + ENDIF + IF prevPh(#u) THEN + FMT(r/@_) + ENDIF + FMT(r/V_) +endphoneme + +phoneme V3# + liquid + lengthmod 7 + IF nextPhW(isVowel) THEN + ChangePhoneme(r") + ENDIF + FMT(r/@_) +endphoneme + +phoneme V1# + liquid + lengthmod 7 + IF nextPhW(isVowel) THEN + ChangePhoneme(r") + ENDIF + FMT(r/V_) +endphoneme diff --git a/phsource/ph_icelandic b/phsource/ph_icelandic index 2a1838d9..19d340c1 100644 --- a/phsource/ph_icelandic +++ b/phsource/ph_icelandic @@ -276,7 +276,7 @@ endphoneme phoneme l# vls alv frc lengthmod 3 - WAV(ufric/ll, 25) + WAV(ufric/l#, 25) endphoneme diff --git a/phsource/ph_swahili b/phsource/ph_swahili index a64dee69..fe3c7ac0 100644 --- a/phsource/ph_swahili +++ b/phsource/ph_swahili @@ -45,24 +45,6 @@ phoneme u FMT(vowel/u_5) endphoneme -phoneme m- - vowel starttype #o endtype #o - length 190 - FMT(vnasal/m-) -endphoneme - -phoneme n- - vowel starttype #e endtype #e - length 190 - FMT(vnasal/n-) -endphoneme - -phoneme N- - vowel starttype #e endtype #e - length 190 - FMT(vnasal/nn-) -endphoneme - // Consonants diff --git a/phsource/ph_swedish b/phsource/ph_swedish index 06d8b24c..fabfa70b 100644 --- a/phsource/ph_swedish +++ b/phsource/ph_swedish @@ -101,15 +101,12 @@ endphoneme phoneme a vowel starttype #a endtype #a length 140 + IF thisPh(isNotStressed) AND thisPh(isWordEnd) THEN + FMT(vowel/a#_2) + ENDIF FMT(vowel/a_5) endphoneme -phoneme a2 - vowel starttype #a endtype #a - length 140 - FMT(vowel/a#_2) -endphoneme - phoneme & vowel starttype #a endtype #a length 140 diff --git a/phsource/ph_turkish b/phsource/ph_turkish index e8e4c6c6..cd03992f 100644 --- a/phsource/ph_turkish +++ b/phsource/ph_turkish @@ -59,7 +59,7 @@ endphoneme phoneme W vowel starttype #@ endtype #@ length 180 - FMT(vowel/oe_2) + FMT(vowel/y#) endphoneme @@ -67,7 +67,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 190 - FMT(vowel/a_5) + FMT(vowel/a#_4) endphoneme @@ -90,7 +90,7 @@ phoneme U FMT(vowel/uu_2) endphoneme -phoneme u# +phoneme @ // previously u# vowel starttype #@ endtype #@ length 150 FMT(vowel/u#_7) @@ -120,7 +120,7 @@ endphoneme phoneme : // Lengthen previous vowel by "length" virtual - length 180 + length 140 endphoneme @@ -146,6 +146,12 @@ phoneme J Vowelin f1=2 f2=2700 400 600 f3=300 80 Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1 + + IF KlattSynth THEN + FMT(klatt/dz_pzd) addWav(ustop/ki, 60) + ENDIF + + FMT(dzh/dz_pzd) addWav(ustop/ki, 60) endphoneme @@ -154,4 +160,8 @@ phoneme l import_phoneme en/l endphoneme +phoneme G +import_phoneme en/r/ +lengthmod 7 +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 2a1826c1..47d17e42 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -134,6 +134,8 @@ phoneme - // Indicates the previous phoneme is a syllabic consonant endphoneme +// Some default vowel definitions + phoneme @ // Schwa vowel starttype #@ endtype #@ unstressed @@ -151,6 +153,78 @@ phoneme @- // very short schwa endphoneme +phoneme a + vowel starttype #a endtype #a + length 180 + FMT(vowel/a) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 170 + FMT(vowel/e) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 170 + IfNextVowelAppend(;) + FMT(vowel/i) +endphoneme + + +phoneme o + vowel starttype #o endtype #o + length 170 + FMT(vowel/oo) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 170 + FMT(vowel/u) +endphoneme + + +// Syllablic consonants +//===================== + +phoneme m- + vowel starttype #@ endtype #@ + length 170 + + IF thisPh(isWordStart) THEN + length 190 + ENDIF + IF KlattSynth THEN + FMT(klatt/m-syl) + ENDIF + FMT(m/m-syl) +endphoneme + +phoneme n- + vowel starttype #@ endtype #@ + length 170 + + IF thisPh(isWordStart) THEN + length 190 + ENDIF + IF KlattSynth THEN + FMT(klatt/n-syl) + ENDIF + FMT(n/n-syl) +endphoneme + +phoneme N- + vowel starttype #e endtype #e + length 190 + FMT(nn/nn-syl) +endphoneme + + //******************************************************************* // Other sounds //******************************************************************* @@ -1396,7 +1470,7 @@ phoneme S; endphoneme -phoneme L // Welsh "ll" +phoneme l# // Lateral fricative (eg. Welsh "ll") vls alv frc lengthmod 3 @@ -1413,7 +1487,7 @@ phoneme L // Welsh "ll" VowelEnding(l/xl, -40) ENDIF - WAV(ufric/ll, 80) + WAV(ufric/ll, 60) endphoneme @@ -1492,22 +1566,22 @@ include ph_base2 phonemetable en base include ph_english -phonemetable en_n en +phonemetable en-n en include ph_english_n -phonemetable en_us en +phonemetable en-us en include ph_english_us -phonemetable en_sc en +phonemetable en-sc en include ph_english_sc -phonemetable en_rp en +phonemetable en-rp en include ph_english_rp -phonemetable en_wm en +phonemetable en-wm en include ph_english_wm -phonemetable en_wi en +phonemetable en-wi en include ph_english_wi @@ -1535,7 +1609,7 @@ include ph_finnish phonemetable fr base include ph_french -phonemetable fr_ca fr +phonemetable fr-ca fr include ph_french_ca phonemetable hi base @@ -1581,7 +1655,7 @@ include ph_latin phonemetable es base2 include ph_spanish -phonemetable es_la es +phonemetable es-la es include ph_spanish_la phonemetable ca es @@ -1590,7 +1664,7 @@ include ph_catalan phonemetable pt base2 include ph_pt_brazil -phonemetable pt_pt pt +phonemetable pt-pt pt include ph_portugal phonemetable ro base2 @@ -1685,3 +1759,6 @@ include ph_s_gaelic phonemetable bg pl include ph_bulgarian + +phonemetable nso base +include ph_northern-sotho diff --git a/phsource/r3/r_trill_short b/phsource/r3/r_trill_short new file mode 100644 index 00000000..a9eeb52f Binary files /dev/null and b/phsource/r3/r_trill_short differ diff --git a/phsource/r3/r_uvl b/phsource/r3/r_uvl index 1f7f5032..da21e950 100644 Binary files a/phsource/r3/r_uvl and b/phsource/r3/r_uvl differ diff --git a/phsource/ufric/l#.wav b/phsource/ufric/l#.wav new file mode 100644 index 00000000..ceb588f3 Binary files /dev/null and b/phsource/ufric/l#.wav differ diff --git a/phsource/ufric/ll.wav b/phsource/ufric/ll.wav deleted file mode 100644 index f4884e8f..00000000 Binary files a/phsource/ufric/ll.wav and /dev/null differ diff --git a/phsource/vdiph2/uu@ b/phsource/vdiph2/uu@ index d28d4cde..d38daef3 100644 Binary files a/phsource/vdiph2/uu@ and b/phsource/vdiph2/uu@ differ diff --git a/phsource/vdiph2/uw_2 b/phsource/vdiph2/uw_2 index 2b08ce6b..2d8eeb56 100644 Binary files a/phsource/vdiph2/uw_2 and b/phsource/vdiph2/uw_2 differ diff --git a/phsource/voc/v# b/phsource/voc/v# new file mode 100644 index 00000000..40e0a7ef Binary files /dev/null and b/phsource/voc/v# differ diff --git a/phsource/voc/v#_ b/phsource/voc/v#_ new file mode 100644 index 00000000..b6a7c0fb Binary files /dev/null and b/phsource/voc/v#_ differ diff --git a/phsource/voc/z_ b/phsource/voc/z_ index 95815441..d433e939 100644 Binary files a/phsource/voc/z_ and b/phsource/voc/z_ differ diff --git a/phsource/vowel/& b/phsource/vowel/& index 4096cca7..5d0ee30d 100644 Binary files a/phsource/vowel/& and b/phsource/vowel/& differ diff --git a/phsource/vowel/V_3 b/phsource/vowel/V_3 index 0f823735..61f3aac2 100644 Binary files a/phsource/vowel/V_3 and b/phsource/vowel/V_3 differ diff --git a/phsource/vowel/a#_4 b/phsource/vowel/a#_4 new file mode 100644 index 00000000..a637d097 Binary files /dev/null and b/phsource/vowel/a#_4 differ diff --git a/phsource/vowel/a_7 b/phsource/vowel/a_7 new file mode 100755 index 00000000..1974c863 Binary files /dev/null and b/phsource/vowel/a_7 differ diff --git a/phsource/vowel/aa_6 b/phsource/vowel/aa_6 index d9985896..6aaffffe 100644 Binary files a/phsource/vowel/aa_6 and b/phsource/vowel/aa_6 differ diff --git a/phsource/vowel/i_8 b/phsource/vowel/i_8 new file mode 100755 index 00000000..d2d9c92e Binary files /dev/null and b/phsource/vowel/i_8 differ diff --git a/phsource/vowel/o b/phsource/vowel/o index 4ac4f1b0..f9a41db7 100644 Binary files a/phsource/vowel/o and b/phsource/vowel/o differ diff --git a/phsource/vowel/o_2 b/phsource/vowel/o_2 index 00982b23..a24dd480 100644 Binary files a/phsource/vowel/o_2 and b/phsource/vowel/o_2 differ diff --git a/phsource/vowel/o_7 b/phsource/vowel/o_7 index 55c38fd4..308a8138 100644 Binary files a/phsource/vowel/o_7 and b/phsource/vowel/o_7 differ diff --git a/phsource/vowel/oo_en b/phsource/vowel/oo_en index ade881ad..6dbbeb86 100644 Binary files a/phsource/vowel/oo_en and b/phsource/vowel/oo_en differ diff --git a/phsource/vowel/u b/phsource/vowel/u index 15c1b34c..d075fb82 100644 Binary files a/phsource/vowel/u and b/phsource/vowel/u differ diff --git a/phsource/vowel/u#_7 b/phsource/vowel/u#_7 index 7a3c0c5b..aaba5ebf 100644 Binary files a/phsource/vowel/u#_7 and b/phsource/vowel/u#_7 differ diff --git a/phsource/vowel/u_6 b/phsource/vowel/u_6 index bdce153b..274e625b 100644 Binary files a/phsource/vowel/u_6 and b/phsource/vowel/u_6 differ diff --git a/phsource/vowel/u_bck2 b/phsource/vowel/u_bck2 index d3610436..070d6266 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 a4f69314..a22da11c 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 index 1c05306b..2a705d0b 100755 Binary files a/phsource/vwl_fr/@2r and b/phsource/vwl_fr/@2r differ diff --git a/phsource/vwl_fr/_r b/phsource/vwl_fr/_r index 2d92579c..1d34f153 100755 Binary files a/phsource/vwl_fr/_r and b/phsource/vwl_fr/_r differ diff --git a/phsource/vwl_fr/a2r b/phsource/vwl_fr/a2r index df7d7ca6..082ae823 100755 Binary files a/phsource/vwl_fr/a2r and b/phsource/vwl_fr/a2r differ diff --git a/phsource/vwl_fr/aa2r b/phsource/vwl_fr/aa2r index 090b3d61..e8ca82fd 100755 Binary files a/phsource/vwl_fr/aa2r and b/phsource/vwl_fr/aa2r differ diff --git a/phsource/vwl_fr/br b/phsource/vwl_fr/br new file mode 100755 index 00000000..8c79113d Binary files /dev/null and b/phsource/vwl_fr/br differ diff --git a/phsource/vwl_fr/e2r b/phsource/vwl_fr/e2r index 8a75c78d..84b1d0d5 100755 Binary files a/phsource/vwl_fr/e2r and b/phsource/vwl_fr/e2r differ diff --git a/phsource/vwl_fr/ee2r b/phsource/vwl_fr/ee2r index 29a5a17c..cee7d674 100755 Binary files a/phsource/vwl_fr/ee2r and b/phsource/vwl_fr/ee2r differ diff --git a/phsource/vwl_fr/j b/phsource/vwl_fr/j new file mode 100755 index 00000000..1d72918f Binary files /dev/null and b/phsource/vwl_fr/j differ diff --git a/phsource/vwl_fr/oo2r b/phsource/vwl_fr/oo2r index 883525b8..438c2d39 100755 Binary files a/phsource/vwl_fr/oo2r and b/phsource/vwl_fr/oo2r differ diff --git a/phsource/vwl_fr/r b/phsource/vwl_fr/r index 78e9d068..3e6e6ae4 100755 Binary files a/phsource/vwl_fr/r and b/phsource/vwl_fr/r differ diff --git a/phsource/vwl_fr/r@2 b/phsource/vwl_fr/r@2 new file mode 100755 index 00000000..e4c82448 Binary files /dev/null and b/phsource/vwl_fr/r@2 differ diff --git a/phsource/vwl_fr/r_ b/phsource/vwl_fr/r_ index cc14e196..808dd5b4 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 13aa950f..ce8bc0f5 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 87d5b268..b1fc28f1 100755 Binary files a/phsource/vwl_fr/r_a and b/phsource/vwl_fr/r_a differ diff --git a/phsource/vwl_fr/r_e b/phsource/vwl_fr/r_e index 90197ac9..091c3962 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 b2779443..62906f31 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 index 21a0de8e..3ff69b13 100755 Binary files a/phsource/vwl_fr/r_n and b/phsource/vwl_fr/r_n differ diff --git a/phsource/vwl_fr/r_o b/phsource/vwl_fr/r_o index 273efcbe..ff1fd4f5 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 50a8369e..12d51848 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 7b599ca5..31aea7ff 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 40d5b741..0c98aca0 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 179ff546..38eb3655 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 f72f9bb1..a14826ef 100755 Binary files a/phsource/vwl_fr/re and b/phsource/vwl_fr/re differ diff --git a/phsource/vwl_fr/re2 b/phsource/vwl_fr/re2 new file mode 100755 index 00000000..a9599dc9 Binary files /dev/null and b/phsource/vwl_fr/re2 differ diff --git a/phsource/vwl_fr/ri b/phsource/vwl_fr/ri index a2dff89b..36975db6 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 index a0dbe141..1d65fb7a 100755 Binary files a/phsource/vwl_fr/rj and b/phsource/vwl_fr/rj differ diff --git a/phsource/vwl_fr/ru b/phsource/vwl_fr/ru index 60eca337..c25b8968 100755 Binary files a/phsource/vwl_fr/ru and b/phsource/vwl_fr/ru differ diff --git a/phsource/vwl_fr/rw b/phsource/vwl_fr/rw new file mode 100755 index 00000000..cf21a65f Binary files /dev/null and b/phsource/vwl_fr/rw differ diff --git a/phsource/vwl_fr/tr b/phsource/vwl_fr/tr index 53e3cc9c..5fcee383 100755 Binary files a/phsource/vwl_fr/tr and b/phsource/vwl_fr/tr differ diff --git a/phsource/vwl_fr/u2r b/phsource/vwl_fr/u2r index 24f9589b..68e489c0 100755 Binary files a/phsource/vwl_fr/u2r and b/phsource/vwl_fr/u2r differ diff --git a/phsource/vwl_fr/wa b/phsource/vwl_fr/wa new file mode 100644 index 00000000..44a7166b Binary files /dev/null and b/phsource/vwl_fr/wa differ diff --git a/phsource/vwl_fr/y2r b/phsource/vwl_fr/y2r new file mode 100755 index 00000000..2145750f Binary files /dev/null and b/phsource/vwl_fr/y2r differ diff --git a/phsource/w/w_ b/phsource/w/w_ index b18964a6..ba57e7e2 100644 Binary files a/phsource/w/w_ and b/phsource/w/w_ differ diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 3b0f46a2..d05bff6b 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -41,6 +41,7 @@ #endif extern void FindPhonemesUsed(void); +extern void DisplayErrorFile(const char *fname); char path_source[sizeof(path_home)+20]; @@ -87,11 +88,12 @@ static keywtab_t k_conditions[] = { {"OR", 0, k_OR}, {"THEN", 0, k_THEN}, {"prevPh", tWHICH_PHONEME, 0x000}, + {"prevPhW", tWHICH_PHONEME, 0x500}, {"thisPh", tWHICH_PHONEME, 0x100}, {"nextPh", tWHICH_PHONEME, 0x200}, {"next2Ph", tWHICH_PHONEME, 0x300}, {"nextPhW", tWHICH_PHONEME, 0x400}, - {"prevPhW", tWHICH_PHONEME, 0x500}, + {"next2PhW", tWHICH_PHONEME, 0x700}, {"nextVowel",tWHICH_PHONEME, 0x600}, // {"numVowels", tTEST, 0x000}, @@ -99,12 +101,11 @@ static keywtab_t k_conditions[] = { {"PreVoicing", tTEST, 0xf01}, {"KlattSynth", tTEST, 0xf02}, + {"MbrolaSynth", tTEST, 0xf03}, {NULL, 0, 0} }; -// place of articulation -#define i_isVel 0x28 static keywtab_t k_properties[] = { {"isPause", 0, phPAUSE}, @@ -115,6 +116,10 @@ static keywtab_t k_properties[] = { {"isPalatal", 0, i_isPalatal}, {"isRhotic", 0, i_isRhotic}, + {"isSibilant", 0, i_isSibilant}, + {"isFlag1", 0, i_isFlag1}, + {"isFlag2", 0, i_isFlag2}, + {"isFlag3", 0, i_isFlag3}, {"isVel", 0, i_isVel}, @@ -183,9 +188,9 @@ enum { kTUNE_PREHEAD, kTUNE_ONSET, kTUNE_HEAD, + kTUNE_HEADENV, kTUNE_HEADEXTEND, kTUNE_HEADLAST, - kTUNE_UNSTRESSED, kTUNE_NUCLEUS0, kTUNE_NUCLEUS1, kTUNE_SPLIT, @@ -197,11 +202,11 @@ static keywtab_t k_intonation[] = { {"prehead", 0, kTUNE_PREHEAD}, {"onset", 0, kTUNE_ONSET}, {"head", 0, kTUNE_HEAD}, + {"headenv", 0, kTUNE_HEADENV}, {"headextend", 0, kTUNE_HEADEXTEND}, {"headlast", 0, kTUNE_HEADLAST}, - {"unstressed",0, kTUNE_UNSTRESSED}, {"nucleus0", 0, kTUNE_NUCLEUS0}, - {"nucleus1", 0, kTUNE_NUCLEUS1}, + {"nucleus", 0, kTUNE_NUCLEUS1}, {"split", 0, kTUNE_SPLIT}, {NULL, 0, -1} }; @@ -302,6 +307,10 @@ static keywtab_t keywords[] = { {"lengthenstop",tPHONEME_FLAG, phLENGTHENSTOP}, {"nopause", tPHONEME_FLAG, phNOPAUSE}, + {"flag1", tPHONEME_FLAG, phFLAG1}, + {"flag2", tPHONEME_FLAG, phFLAG2}, + {"flag3", tPHONEME_FLAG, phFLAG3}, + // voiced / unvoiced {"vcd", tPHONEME_FLAG, phVOICED}, {"vls", tPHONEME_FLAG, phFORTIS}, @@ -584,6 +593,7 @@ static FILE *f_phindex; static FILE *f_phtab; static FILE *f_phcontents; static FILE *f_errors = stderr; +static FILE *f_prog_log = NULL; static FILE *f_in; @@ -615,7 +625,6 @@ static REF_HASH_TAB *ref_hash_tab[256]; #define N_ENVELOPES 30 -#define ENV_LEN 128 static int n_envelopes = 0; static char envelope_paths[N_ENVELOPES][80]; static unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; @@ -2533,6 +2542,7 @@ int CompilePhoneme(int compile_phoneme) int value; int phcode = 0; PHONEME_TAB phoneme_out2; + PHONEME_PROG_LOG phoneme_prog_log; prog_out = prog_buf; if_level = 0; @@ -2726,6 +2736,7 @@ int CompilePhoneme(int compile_phoneme) break; case kFMT: + if_stack[if_level].returned = 1; DecThenCount(); if(phoneme_out->type == phVOWEL) endphoneme = CompileSound(keyword,1); @@ -2832,6 +2843,14 @@ int CompilePhoneme(int compile_phoneme) // write out the program for this phoneme fflush(f_phindex); phoneme_out->program = ftell(f_phindex) / sizeof(USHORT); + + if(f_prog_log != NULL) + { + phoneme_prog_log.addr = phoneme_out->program; + phoneme_prog_log.length = prog_out - prog_buf; + fwrite(&phoneme_prog_log, 1, sizeof(phoneme_prog_log), f_prog_log); + } + if(compile_phoneme == 0) { proc_addr[n_procs++] = ftell(f_phindex) / sizeof(USHORT); @@ -3154,6 +3173,9 @@ memset(markers_used,0,sizeof(markers_used)); return; } + sprintf(fname,"%scompile_prog_log",path_source); + f_prog_log = fopen_log(f_errors,fname,"wb"); + if(gui_flag) { progress = new wxProgressDialog(_T("Compiling"),_T(""),progress_max); @@ -3181,6 +3203,7 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references fclose(f_in); fclose(f_phdata); fclose(f_errors); + fclose(f_prog_log); fclose(f_phindex); fclose(f_phtab); fclose(f_phcontents); @@ -3306,29 +3329,36 @@ void CompileMbrola() +static const char *preset_tune_names[] = { +"s1", "c1", "q1", "e1", NULL}; + static const TUNE default_tune = { -0, {0,0,0,0}, +{0,0,0,0,0,0,0,0,0,0,0,0}, +{0,0,0,0}, {0, 40, 24, 8, 0, 0, 0, 0}, -46, 57, 255, 78, 50, 255, -PITCHfall, 0, +46, 57, PITCHfall, 16, 0, 0, +255, 78, 50, 255, 3, 5, -7, 7, 0, +{-7,-7,-7}, {-7,-7,-7}, PITCHfall, 64, 8, PITCHfall, 70, 18, 24, 12, -PITCHfall, 70, 18, 24, 12, +PITCHfall, 70, 18, 24, 12, 0, {0,0,0,0,0,0,0,0,0,0} }; -TUNE new_tune; - #define N_TUNE_NAMES 100 -static MNEM_TAB envelope_names[] = { +MNEM_TAB envelope_names[] = { {"fall", 0}, - {"rise", 1}, - {"fall_rise", 2}, - {"fall_rise2", 3}, - {"rise_fall", 4}, + {"rise", 2}, + {"fall-rise", 4}, + {"fall-rise2", 6}, + {"rise-fall", 8}, + {"fall-rise3",10}, + {"fall-rise4",12}, + {"fall2", 14}, + {"rise2", 16}, + {"rise-fall-rise", 18}, {NULL, -1} }; @@ -3353,36 +3383,47 @@ void CompileIntonation() int compiling_tune = 0; int n_tune_names = 0; int done_split; - int n_tunes = 0; + int done_onset = 0; + int done_last = 0; + int n_preset_tunes = 0; + int found; + int tune_number = 0; FILE *f_out; wxString report; + TUNE *tune_data; + TUNE new_tune; - char name[5]; - unsigned int tune_names[N_TUNE_NAMES]; + + char name[12]; + char fname_errors[sizeof(path_source)+120]; + char tune_names[N_TUNE_NAMES][12]; char buf[sizeof(path_source)+120]; error_count = 0; - sprintf(buf,"%s%s",path_source,"error_intonation"); - if((f_errors = fopen(buf,"w")) == NULL) + sprintf(fname_errors,"%s%s",path_source,"error_intonation"); + if((f_errors = fopen(fname_errors,"w")) == NULL) f_errors = stderr; - sprintf(buf,"%sintonation",path_source); - f_in = fopen_log(f_errors, buf, "r"); - if(f_in == NULL) + sprintf(buf,"%sintonation.txt",path_source); + if((f_in = fopen(buf, "r")) == NULL) { - fclose(f_errors); - return; + sprintf(buf,"%sintonation",path_source); + if((f_in = fopen_log(f_errors, buf, "r")) == NULL) + { + wxLogError(_T("Can't read file: ") + wxString(buf,wxConvLocal)); + fclose(f_errors); + return; + } } - sprintf(buf,"%s/intonations",path_home); - f_out = fopen_log(f_errors, buf, "w"); - if(f_out == NULL) + + for(ix=0; preset_tune_names[ix] != NULL; ix++) { - fclose(f_in); - fclose(f_errors); - return; + strcpy(tune_names[ix], preset_tune_names[ix]); } + n_tune_names = ix; + n_preset_tunes = ix; // make a list of the tune names while(!feof(f_in)) @@ -3401,15 +3442,47 @@ void CompileIntonation() name[ix++] = *p++; } name[ix] = 0; - tune_names[n_tune_names++] = StringToWord(name); - if(n_tune_names >= N_TUNE_NAMES) - break; + found = 0; + for(ix = 0; ix < n_tune_names; ix++) + { + if(strcmp(name, tune_names[ix]) == 0) + { + found = 1; + break; + } + } + + if(found == 0) + { + strncpy0(tune_names[n_tune_names++], name, sizeof(name)); + + if(n_tune_names >= N_TUNE_NAMES) + break; + } } } rewind(f_in); linenum = 1; + tune_data = (TUNE *)calloc(sizeof(TUNE), n_tune_names); + if(tune_data == NULL) + { + fprintf(f_errors, "Failed to allocate data for tunes\n"); + fclose(f_in); + fclose(f_errors); + return; + } + + sprintf(buf,"%s/intonations",path_home); + f_out = fopen_log(f_errors, buf, "wb"); + if(f_out == NULL) + { + fclose(f_in); + fclose(f_errors); + return; + } + while(!feof(f_in)) { keyword = NextItem(tINTONATION); @@ -3421,18 +3494,51 @@ void CompileIntonation() { } 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)); + strncpy0(new_tune.name, item_string, sizeof(new_tune.name)); + + found = 0; + tune_number = 0; + for(ix=0; ix < n_tune_names; ix++) + { + if(strcmp(new_tune.name, tune_names[ix]) == 0) + { + found = 1; + tune_number = ix; + + if(tune_data[ix].name[0] != 0) + found = 2; + break; + } + } +// fprintf(f_errors,"tune %s (%d)\n", new_tune.name, tune_number); + if(found == 2) + { + error("Duplicate tune name: '%s'",new_tune.name); + } + if(found == 0) + { + error("Bad tune name: '%s;", new_tune.name); + } break; case kENDTUNE: compiling_tune = 0; - fwrite(&new_tune, 1, sizeof(new_tune), f_out); + + if(done_onset == 0) + { + new_tune.unstr_start[0] = new_tune.unstr_start[1]; + new_tune.unstr_end[0] = new_tune.unstr_end[1]; + } + if(done_last == 0) + { + new_tune.unstr_start[2] = new_tune.unstr_start[1]; + new_tune.unstr_end[2] = new_tune.unstr_end[1]; + } + memcpy(&tune_data[tune_number], &new_tune, sizeof(TUNE)); break; case kTUNE_PREHEAD: @@ -3440,32 +3546,47 @@ void CompileIntonation() new_tune.prehead_end = NextItem(tNUMBER); break; + case kTUNE_ONSET: + new_tune.onset = NextItem(tNUMBER); + new_tune.unstr_start[0] = NextItem(tSIGNEDNUMBER); + new_tune.unstr_end[0] = NextItem(tSIGNEDNUMBER); + done_onset = 1; + break; + + case kTUNE_HEADLAST: + new_tune.head_last = NextItem(tNUMBER); + new_tune.unstr_start[2] = NextItem(tSIGNEDNUMBER); + new_tune.unstr_end[2] = NextItem(tSIGNEDNUMBER); + done_last = 1; + break; + + case kTUNE_HEADENV: + NextItem(tSTRING); + if((ix = LookupEnvelope(item_string)) < 0) + error("Bad envelope name: '%s'",item_string); + else + new_tune.stressed_env = ix; + new_tune.stressed_drop = 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); - } + new_tune.unstr_start[1] = NextItem(tSIGNEDNUMBER); + new_tune.unstr_end[1] = NextItem(tSIGNEDNUMBER); break; case kTUNE_HEADEXTEND: // up to 8 numbers - for(ix=0; ix < int(sizeof(new_tune.headextend)); ix++) + for(ix=0; ix < int(sizeof(new_tune.head_extend)); ix++) { if(!isdigit(c = CheckNextChar()) && (c != '-')) break; - new_tune.headextend[ix] = (NextItem(tSIGNEDNUMBER) * 64) / 100; // convert from percentage to 64ths + new_tune.head_extend[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); + new_tune.n_head_extend = ix; // number of values break; case kTUNE_NUCLEUS0: @@ -3495,6 +3616,7 @@ void CompileIntonation() if(!done_split) { + // also this as the default setting for '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; @@ -3510,12 +3632,24 @@ void CompileIntonation() error("Bad envelope name: '%s'",item_string); break; } + done_split = 1; 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; + NextItem(tSTRING); + item_string[12] = 0; + for(ix=0; ix < n_tune_names; ix++) + { + if(strcmp(item_string, tune_names[ix]) == 0) + break; + } + + if(ix == n_tune_names) + error("Tune '%s' not found",item_string); + else + new_tune.split_tune = ix; break; default: @@ -3524,13 +3658,27 @@ void CompileIntonation() } } + for(ix = 0; ix < n_preset_tunes; ix++) + { + if(tune_data[ix].name[0] == 0) + { + error("Tune '%s' not defined", preset_tune_names[ix]); + } + } + fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out); fclose(f_in); fclose(f_out); fclose(f_errors); - report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tunes, error_count); + report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tune_names, error_count); wxLogStatus(report); + if(error_count > 0) + { + DisplayErrorFile(fname_errors); + } + LoadPhData(); + } // end of CompileIntonation diff --git a/src/compiledict.cpp b/src/compiledict.cpp index ab9d51b3..f99e441c 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -88,6 +88,7 @@ MNEM_TAB mnem_flags[] = { {"$strend2", 12}, /* full stress if at end of clause, or only followed by unstressed */ {"$unstressend",13}, /* reduce stress at end of clause */ {"$atend", 14}, /* use this pronunciation if at end of clause */ + {"$atstart", 15}, // use this pronunciation at start of clause {"$abbrev", 17}, /* use this pronuciation rather than split into letters */ {"$stem", 18}, // must have a suffix @@ -691,9 +692,9 @@ step=1; // TEST len_word = strlen(word); - if(translator->transpose_offset > 0) + if(translator->transpose_min > 0) { - len_word = TransposeAlphabet(word, translator->transpose_offset, translator->transpose_min, translator->transpose_max); + len_word = TransposeAlphabet(translator, word); } *hash = HashDictionary(word); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 3bc8bc0d..cf89dcfe 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -762,6 +762,13 @@ static int Unpronouncable_en(Translator *tr, char *word) } /* end of Unpronounceable */ +static int Unpronouncable_de(Translator *tr, char *word) +{//===================================================== + if(memcmp(word,"tsch",4)==0) + return(0); + return(2); +} + int Unpronouncable(Translator *tr, char *word) @@ -778,11 +785,18 @@ int Unpronouncable(Translator *tr, char *word) int index; int count; int apostrophe=0; + int result=2; // unknown if(tr->translator_name == L('e','n')) { return(Unpronouncable_en(tr,word)); } + if(tr->translator_name == L('d','e')) + { + result = Unpronouncable_de(tr,word); + } + if(result < 2) + return(result); utf8_in(&c,word); if((tr->letter_bits_offset > 0) && (c < 0x241)) @@ -1977,6 +1991,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ { /* more than specified number of vowel letters to the right */ char *p = post_ptr + letter_xbytes; + int vowel_count=0; syllable_count = 1; while(*rule == RULE_SYLLABLE) @@ -1989,14 +2004,14 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ { if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2)) { - // this is counting vowels which are separated by non-vowels - syllable_count--; + // this is counting vowels which are separated by non-vowel letters + vowel_count++; } vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2); p += utf8_in(&letter_w,p); } - if(syllable_count <= 0) - add_points = (19-distance_right); + if(syllable_count <= vowel_count) + add_points = (18+syllable_count-distance_right); else failed = 1; } @@ -2169,7 +2184,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ syllable_count++; /* number of syllables to match */ } if(syllable_count <= tr->word_vowel_count) - add_points = (19-distance_left); + add_points = (18+syllable_count-distance_left); else failed = 1; break; @@ -2692,55 +2707,30 @@ void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags) // special properties, such as pronounce as unstressed //============================================================================================= -// common letter pairs, encode these as a single byte -static const short pairs_ru[] = { -0x010c, // ла 21052 0x23 -0x010e, // на 18400 -0x0113, // та 14254 -0x0301, // ав 31083 -0x030f, // ов 13420 -0x060e, // не 21798 -0x0611, // ре 19458 -0x0903, // ви 16226 -0x0b01, // ак 14456 -0x0b0f, // ок 17836 -0x0c01, // ал 13324 -0x0c09, // ил 16877 -0x0e01, // ан 15359 -0x0e06, // ен 13543 0x30 -0x0e09, // ин 17168 -0x0e0e, // нн 15973 -0x0e0f, // он 22373 -0x0e1c, // ын 15052 -0x0f03, // во 24947 -0x0f11, // ро 13552 -0x0f12, // со 16368 -0x100f, // оп 19054 -0x1011, // рп 17067 -0x1101, // ар 23967 -0x1106, // ер 18795 -0x1109, // ир 13797 -0x110f, // ор 21737 -0x1213, // тс 25076 -0x1220, // яс 14310 -0x7fff}; -//0x040f ог 12976 -//0x1306 ет 12826 -//0x0f0d мо 12688 - -int TransposeAlphabet(char *text, int offset, int min, int max) -{//============================================================ +int TransposeAlphabet(Translator *tr, char *text) +{//============================================== // transpose cyrillic alphabet (for example) into ascii (single byte) character codes // return: number of bytes, bit 6: 1=used compression int c; int c2; int ix; + int offset; + int min; + int max; char *p = text; char *p2 = text; int all_alpha=1; int bits; int acc; + int pairs_start; + const short *pairs_list; + + offset = tr->transpose_min - 1; + min = tr->transpose_min; + max = tr->transpose_max; + + pairs_start = max - min + 2; do { p += utf8_in(&c,p); @@ -2767,15 +2757,18 @@ int TransposeAlphabet(char *text, int offset, int min, int max) p2 = text; while((c = *p++) != 0) { - c2 = c + (*p << 8); - for(ix=0; c2 >= pairs_ru[ix]; ix++) + if((pairs_list = tr->frequent_pairs) != NULL) { - if(c2 == pairs_ru[ix]) + c2 = c + (*p << 8); + for(ix=0; c2 >= pairs_list[ix]; ix++) { - // found an encoding for a 2-character pair - c = ix + 0x23; // 2-character codes start at 0x23 - p++; - break; + if(c2 == pairs_list[ix]) + { + // found an encoding for a 2-character pair + c = ix + pairs_start; // 2-character codes start after the single letter codes + p++; + break; + } } } acc = (acc << 6) + (c & 0x3f); @@ -2838,10 +2831,10 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor } word1 = word; - if(tr->transpose_offset > 0) + if(tr->transpose_min > 0) { strcpy(word_buf,word); - wlen = TransposeAlphabet(word_buf, tr->transpose_offset, tr->transpose_min, tr->transpose_max); + wlen = TransposeAlphabet(tr, word_buf); word = word_buf; } else @@ -3027,6 +3020,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor continue; } + if((dictionary_flags & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD)) + { + // only use this pronunciation if it's the first word of a clause + continue; + } + if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE)) { // only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :} @@ -3109,9 +3108,10 @@ 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 - if(dictionary_skipwords) + if((dictionary_skipwords) && (wtab != NULL)) { // matched more than one word + // (check for wtab prevents showing RULE_SPELLING byte when speaking individual letters) memcpy(word_buf,word2,word_end-word2); word_buf[word_end-word2-1] = 0; fprintf(f_trans,"Found: '%s %s",word1,word_buf); diff --git a/src/espeak.cpp b/src/espeak.cpp index 38f2b8a5..205a25d5 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -49,7 +49,7 @@ static const char *help_text = "-p \n" "\t Pitch adjustment, 0 to 99, default is 50\n" "-s \n" -"\t Speed in words per minute, 80 to 390, default is 170\n" +"\t Speed in words per minute, 80 to 450, default is 175\n" "-v \n" "\t Use voice file of this name from espeak-data/voices\n" "-w \n" diff --git a/src/espeakedit.cpp b/src/espeakedit.cpp index 598f9c96..b84d0b1b 100755 --- a/src/espeakedit.cpp +++ b/src/espeakedit.cpp @@ -89,6 +89,7 @@ wxNotebook *notebook = NULL; wxProgressDialog *progress; int progress_max; int gui_flag = 0; +int frame_x, frame_y, frame_w, frame_h; wxList my_children; @@ -153,6 +154,7 @@ extern void VoiceReset(int control); } } + ConfigInit(); gui_flag = 1; // It seems that the wctype functions don't work until the locale has been set // to something other than the default "C". Then, not only Latin1 but also the @@ -163,9 +165,14 @@ extern void VoiceReset(int control); setlocale(LC_CTYPE,""); } + if((frame_w == 0) || (frame_h == 0)) + { + frame_w = 1024; + frame_h = 768; + } // Create the main frame window - myframe = new MyFrame(NULL, -1, AppName, wxPoint(0, 0), wxSize(1024, 768), + myframe = new MyFrame(NULL, -1, AppName, wxPoint(frame_x, frame_y), wxSize(frame_w, frame_h), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE | wxHSCROLL | wxVSCROLL); @@ -176,7 +183,7 @@ extern void VoiceReset(int control); myframe->CreateStatusBar(); myframe->SetVoiceTitle(voice_name2); - myframe->Maximize(); +// myframe->Maximize(); myframe->Show(TRUE); SetTopWindow(myframe); @@ -235,6 +242,12 @@ BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) END_EVENT_TABLE() +MyFrame::~MyFrame(void) +{//==================== + myframe->GetPosition(&frame_x, &frame_y); + myframe->GetSize(&frame_w, &frame_h); +} + MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): wxMDIParentFrame(parent, id, title, pos, size, style) @@ -270,7 +283,6 @@ wxSashLayoutWindow *win; notebook->AddPage(transldlg,_T("Text"),TRUE); - ConfigInit(); LoadConfig(); WavegenInitSound(); @@ -464,7 +476,7 @@ void OnOptions2(int event_id) switch(event_id) { case MENU_PARAMS: - value = wxGetNumberFromUser(_T(""),_T(""),_T("Speed"),option_speed,80,390); + value = wxGetNumberFromUser(_T(""),_T(""),_T("Speed"),option_speed,80,500); if(value > 0) { option_speed = value; @@ -527,6 +539,32 @@ void MyFrame::OnOptions(wxCommandEvent& event) } +void DisplayErrorFile(const char *fname) +{//===================================== + int len; + FILE *f; + char *msg; + wxString msg_string; + + len = GetFileLength(fname); + if(len > 0) + { + if(len > 2000) + len = 2000; // restrict length to pppppevent crash in wxLogMessage() + msg = (char *)malloc(len+1); + if(msg != NULL) + { + f = fopen(fname,"r"); + fread(msg,len,1,f); + fclose(f); + msg[len] = 0; + msg_string = wxString(msg,wxConvUTF8); + wxLogMessage(msg_string); + free(msg); + } + } +} // end of DisplayErrorFile + void MyFrame::OnTools(wxCommandEvent& event) @@ -604,28 +642,7 @@ void MyFrame::OnTools(wxCommandEvent& event) if(err > 0) { // display the error messages - int len; - FILE *f; - char *msg; - wxString msg_string; - - len = GetFileLength(fname_log); - if(len > 0) - { - if(len > 2000) - len = 2000; // restrict length to pppppevent crash in wxLogMessage() - msg = (char *)malloc(len+1); - if(msg != NULL) - { - f = fopen(fname_log,"r"); - fread(msg,len,1,f); - fclose(f); - msg[len] = 0; - msg_string = wxString(msg,wxConvUTF8); - wxLogMessage(msg_string); - free(msg); - } - } + DisplayErrorFile(fname_log); } } break; diff --git a/src/intonation.cpp b/src/intonation.cpp index cfd0fab5..7d83eb68 100755 --- a/src/intonation.cpp +++ b/src/intonation.cpp @@ -447,6 +447,164 @@ static void set_pitch(SYLLABLE *syl, int base, int drop) } /* end of set_pitch */ +static int CountUnstressed(int start, int end, int limit) +{//====================================================== + int ix; + + for(ix=start; ix <= end; ix++) + { + if(syllable_tab[ix].stress >= limit) + break; + } + return(ix - start); +} + +static int SetHeadIntonation(TUNE *tune, int syl_ix, int end_ix, int control) +{//========================================================================== + int stress; + SYLLABLE *syl; + int ix; + int pitch=0; + int increment=0; + int n_steps=0; + int stage; // onset, head, last + int initial; + int overflow_ix=0; + int pitch_range; + int pitch_range_abs; + int *drops; + int n_unstressed=0; + int unstressed_ix=0; + int unstressed_inc; + int used_onset = 0; + int head_final = end_ix; +int secondary=2; // 2 + + pitch_range = (tune->head_end - tune->head_start) << 8; + pitch_range_abs = abs(pitch_range); + drops = drops_0; // this should be controled by tune->head_drops + initial = 1; + + stage = 0; + if(tune->onset == 255) + stage = 1; // no onset specified + + if(tune->head_last != 255) + { + // find the last primary stress in the body + for(ix = end_ix-1; ix >= syl_ix; ix--) + { + if(syllable_tab[ix].stress >= 4) + { + head_final = ix; + break; + } + } + } + + while(syl_ix < end_ix) + { + syl = &syllable_tab[syl_ix]; + stress = syl->stress; + + if(initial || (stress >= 4)) + { + // a primary stress + + if((initial) || (stress == 5)) + { + initial = 0; + overflow_ix = 0; + + if(tune->onset == 255) + { + n_steps = count_increments(syl_ix, head_final, 4); + pitch = tune->head_start << 8; + } + else + { + // a pitch has been specified for the onset syllable, don't include it in the pitch incrementing + n_steps = count_increments(syl_ix+1, head_final, 4); + pitch = tune->onset << 8; + used_onset = 1; + } + + if(n_steps > tune->head_max_steps) + n_steps = tune->head_max_steps; + + if(n_steps > 1) + { + increment = pitch_range / (n_steps -1); + } + else + increment = 0; + + } + else + if(syl_ix == head_final) + { + // a pitch has been specified for the last primary stress before the nucleus + pitch = tune->head_last << 8; + stage = 2; + } + else + { + if(used_onset) + { + stage = 1; + used_onset = 0; + pitch = tune->head_start << 8; + n_steps++; + } + else + if(n_steps > 0) + pitch += increment; + else + { + pitch = (tune->head_end << 8) + (pitch_range_abs * tune->head_extend[overflow_ix++])/64; + if(overflow_ix >= tune->n_head_extend) + { + overflow_ix = 0; + } + } + } + + n_steps--; + } + + if(stress >= PRIMARY) + { + n_unstressed = CountUnstressed(syl_ix+1, end_ix, secondary); + unstressed_ix = 0; + syl->stress = PRIMARY_STRESSED; + syl->env = tune->stressed_env; + set_pitch(syl,(pitch >> 8), tune->stressed_drop); + } + else + if(stress >= secondary) + { + n_unstressed = CountUnstressed(syl_ix+1, end_ix, secondary); + unstressed_ix = 0; + set_pitch(syl,(pitch >> 8),drops[stress]); + } + else + { + if(n_unstressed > 1) + unstressed_inc = (tune->unstr_end[stage] - tune->unstr_start[stage]) / (n_unstressed - 1); + else + unstressed_inc = 0; + + set_pitch(syl, (pitch >> 8) + tune->unstr_start[stage] + (unstressed_inc * unstressed_ix), drops[stress]); + unstressed_ix++; + } + + syl_ix++; + } + return(syl_ix); + +} // end of SetBodyIntonation + + static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *tn, int min_stress, int continuing) /**********************************************************************************************/ @@ -622,8 +780,76 @@ static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_ -static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) -//=========================================================================== +static int calc_pitches2(int start, int end, int tune_number) +//============================================================ +// Calculate pitch values for the vowels in this tone group +{ + int ix; + TUNE *tune; + int drop; + int continuing = 0; + + if(start > 0) + continuing = 1; + + tune = &tunes[tune_number]; + ix = start; + + /* vowels before the first primary stress */ + /******************************************/ + + SetPitchGradient(ix, ix+number_pre, tune->prehead_start, tune->prehead_end); + ix += number_pre; + + /* body of tonic segment */ + /*************************/ + + if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE) + { + tone_posn = tone_posn2; // put tone on the penultimate stressed word + } + ix = SetHeadIntonation(tune, ix, tone_posn, 0); + + if(no_tonic) + return(0); + + /* tonic syllable */ + /******************/ + +// if(tn->flags & T_EMPH) +// { +// syllable_tab[ix].flags |= SYL_EMPHASIS; +// } + + if(number_tail == 0) + { + tone_pitch_env = tune->nucleus0_env; + drop = tune->nucleus0_max - tune->nucleus0_min; + set_pitch(&syllable_tab[ix++],tune->nucleus0_min, drop); + } + else + { + tone_pitch_env = tune->nucleus1_env; + drop = tune->nucleus1_max - tune->nucleus1_min; + set_pitch(&syllable_tab[ix++],tune->nucleus1_min, drop); + } + + syllable_tab[tone_posn].env = tone_pitch_env; + if(syllable_tab[tone_posn].stress == PRIMARY) + syllable_tab[tone_posn].stress = PRIMARY_STRESSED; + + /* tail, after the tonic syllable */ + /**********************************/ + + SetPitchGradient(ix, end, tune->tail_start, tune->tail_end); + + return(tone_pitch_env); +} /* end of calc_pitches2 */ + + + +static int calc_pitches(int control, int start, int end, int tune_number) +//======================================================================== // Calculate pitch values for the vowels in this tone group { int ix; @@ -632,11 +858,16 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) int drop; int continuing = 0; + if(control == 0) + { + return(calc_pitches2(start, end, tune_number)); + } + if(start > 0) continuing = 1; - th = &tone_head_table[head_tone]; - tn = &tone_nucleus_table[nucleus_tone]; + th = &tone_head_table[tune_number]; + tn = &tone_nucleus_table[tune_number]; ix = start; /* vowels before the first primary stress */ @@ -653,7 +884,8 @@ static int calc_pitches(int start, int end, int head_tone, int nucleus_tone) tone_posn = tone_posn2; // put tone on the penultimate stressed word } ix = calc_pitch_segment(ix,tone_posn, th, tn, PRIMARY, continuing); - +// ix = SetBodyIntonation(&tunes[0], ix, tone_posn, 0); + if(no_tonic) return(0); @@ -940,11 +1172,20 @@ void CalcPitches(Translator *tr, int clause_type) option = tr->langopts.intonation_group; if(option >= INTONATION_TYPES) - option = 0; + option = 1; - group_tone = tr->punct_to_tone[option][clause_type]; - group_tone_emph = tr->punct_to_tone[option][5]; // emphatic form of statement - group_tone_comma = tr->punct_to_tone[option][1]; // emphatic form of statement + if(option == 0) + { + group_tone = tr->langopts.tunes[clause_type]; + group_tone_emph = tr->langopts.tunes[5]; + group_tone_comma = tr->langopts.tunes[1]; + } + else + { + group_tone = tr->punct_to_tone[option][clause_type]; + group_tone_emph = tr->punct_to_tone[option][5]; // emphatic form of statement + group_tone_comma = tr->punct_to_tone[option][1]; // emphatic form of statement + } if(clause_type == 4) no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */ @@ -1012,9 +1253,9 @@ void CalcPitches(Translator *tr, int clause_type) count_pitch_vowels(st_start, ix, n_st); if((ix < n_st) || (clause_type == 0)) - calc_pitches(st_start, ix, group_tone_emph, group_tone_emph); // split into > 1 tone groups, use emphatic tone + calc_pitches(option, st_start, ix, group_tone_emph); // split into > 1 tone groups, use emphatic tone else - calc_pitches(st_start, ix, group_tone, group_tone); + calc_pitches(option, st_start, ix, group_tone); st_start = ix; } @@ -1023,7 +1264,7 @@ void CalcPitches(Translator *tr, int clause_type) // end of clause after this syllable, indicated by a phonPAUSE_CLAUSE phoneme st_clause_end = st_ix+1; count_pitch_vowels(st_start, st_clause_end, st_clause_end); - calc_pitches(st_start, st_clause_end, group_tone_comma, group_tone_comma); + calc_pitches(option, st_start, st_clause_end, group_tone_comma); st_start = st_clause_end; } } @@ -1031,7 +1272,7 @@ void CalcPitches(Translator *tr, int clause_type) if(st_start < st_ix) { count_pitch_vowels(st_start, st_ix, n_st); - calc_pitches(st_start, st_ix, group_tone, group_tone); + calc_pitches(option, st_start, st_ix, group_tone); } diff --git a/src/klatt.cpp b/src/klatt.cpp index 955540c6..f17628eb 100644 --- a/src/klatt.cpp +++ b/src/klatt.cpp @@ -226,6 +226,7 @@ Converts synthesis parameters to a waveform. static int parwave(klatt_frame_ptr frame) { double temp; + int value; double outbypas; double out; long n4; @@ -457,18 +458,27 @@ if(option_log_frames) temp = (temp * kt_globals.fadeout) / 64; } - if (temp < -32768.0) + value = int(temp) + ((echo_buf[echo_tail++]*echo_amp) >> 8); + if(echo_tail >= N_ECHO_BUF) + echo_tail=0; + + if (value < -32768) { - temp = -32768.0; + value = -32768; } - if (temp > 32767.0) + if (value > 32767) { - temp = 32767.0; + value = 32767; } - *out_ptr++ = int(temp); - *out_ptr++ = int(temp) >> 8; + *out_ptr++ = value; + *out_ptr++ = value >> 8; + + echo_buf[echo_head++] = value; + if(echo_head >= N_ECHO_BUF) + echo_head = 0; + sample_count++; if(out_ptr >= out_end) { diff --git a/src/main.h b/src/main.h index 078f391a..a2ae2910 100755 --- a/src/main.h +++ b/src/main.h @@ -37,6 +37,7 @@ class MyFrame: public wxMDIParentFrame public: MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); + ~MyFrame(void); void OnSize(wxSizeEvent& event); void OnAbout(wxCommandEvent& event); diff --git a/src/menus.cpp b/src/menus.cpp index 2c4880d9..ab44e635 100755 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -87,8 +87,9 @@ wxMenuBar *MakeMenu(int type) data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); + data_menu->AppendSeparator(); data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); -// data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); + 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")); @@ -109,7 +110,7 @@ wxMenuBar *MakeMenu(int type) // TOOLS vowelchart_menu = new wxMenu; vowelchart_menu->Append(MENU_VOWELCHART1, _("From compiled phoneme data")); - vowelchart_menu->Append(MENU_VOWELCHART2, _("From list of formants...")); +// vowelchart_menu->Append(MENU_VOWELCHART2, _("From list of formants...")); vowelchart_menu->Append(MENU_VOWELCHART3, _("From directory of vowel files...")); lexicon_menu = new wxMenu; diff --git a/src/numbers.cpp b/src/numbers.cpp index 4a150602..eeb35468 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -546,7 +546,7 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b if(next_byte != ' ') next_byte = RULE_SPELLING; - single_letter[3+len] = next_byte; // follow by space-space if the end of the word, or space-0x31 + single_letter[3+len] = next_byte; // follow by space-space if the end of the word, or space-31 single_letter[1] = '_'; @@ -1524,6 +1524,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int decimal_mode; int hyphen; int suffix_ix; + int skipwords = 0; char *p; char string[20]; // for looking up entries in **_list char buf1[100]; @@ -1598,15 +1599,26 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } *p = 0; - if((suffix[0] != 0) && (!isdigit(suffix[0]))) // not _#9 (tab) + if(suffix[0] != 0) { - sprintf(string,"_#%s",suffix); - if(Lookup(tr, string, ph_ordinal2)) + if((tr->langopts.ordinal_indicator != NULL) && (strcmp(suffix, tr->langopts.ordinal_indicator) == 0)) { - // this is an ordinal suffix ordinal = 2; + } + else + if(!isdigit(suffix[0])) // not _#9 (tab) + { + sprintf(string,"_#%s",suffix); + if(Lookup(tr, string, ph_ordinal2)) + { + // this is an ordinal suffix + ordinal = 2; + } + } + if(ordinal) + { flags[0] |= FLAG_SKIPWORDS; - dictionary_skipwords = 1; + skipwords = 1; } } } @@ -1854,6 +1866,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned *flags |= FLAG_FOUND; speak_missing_thousands--; + + if(skipwords) + dictionary_skipwords = skipwords; return(1); } // end of TranslateNumber_1 diff --git a/src/options.cpp b/src/options.cpp index b4bfb4b0..23a35c5f 100755 --- a/src/options.cpp +++ b/src/options.cpp @@ -182,6 +182,10 @@ void ConfigInit() pConfig->Read(_T("/modifiervoice"),&path_modifiervoice,basedir); pConfig->Read(_T("/dir1"),&path_dir1,basedir); option_speed = pConfig->Read(_T("/speed"),160); + frame_x = pConfig->Read(_T("/windowx"), 0l); + frame_y = pConfig->Read(_T("/windowy"), 0l); + frame_h = pConfig->Read(_T("/windowh"), 0l); + frame_w = pConfig->Read(_T("/windoww"), 0l); ConfigSetPaths(); } // end of ConfigInit @@ -191,6 +195,7 @@ void ConfigSave(int exit) {//====================== wxFileConfig *pConfig = (wxFileConfig *)(wxConfigBase::Get()); + #ifndef PLATFORM_WINDOWS // pConfig->Write(_T("/samplerate"),samplerate); #endif @@ -207,7 +212,10 @@ void ConfigSave(int exit) pConfig->Write(_T("/speed"),option_speed); pConfig->Write(_T("/modifiervoice"),path_modifiervoice); pConfig->Write(_T("/dir1"),path_dir1); - + pConfig->Write(_T("/windowx"),frame_x); + pConfig->Write(_T("/windowy"),frame_y); + pConfig->Write(_T("/windoww"),frame_w); + pConfig->Write(_T("/windowh"),frame_h); if(exit) delete wxFileConfig::Set((wxFileConfig *)NULL); } diff --git a/src/options.h b/src/options.h index 02a4bd8e..64e17608 100755 --- a/src/options.h +++ b/src/options.h @@ -39,6 +39,7 @@ extern wxString path_phsource; extern wxString path_dictsource; extern wxString path_modifiervoice; extern wxString path_dir1; +extern int frame_x, frame_y, frame_w, frame_h; extern char path_source[sizeof(path_home)+20]; extern char path_dsource[sizeof(path_home)+20]; diff --git a/src/phoneme.h b/src/phoneme.h index 899f480d..cda100aa 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -35,7 +35,7 @@ // phoneme properties -// bits 16-19 give place of articulation (not currently used) +// bits 16-19 give place of articulation #define phWAVE 0x01 #define phUNSTRESSED 0x02 #define phFORTIS 0x08 @@ -45,24 +45,21 @@ #define phTRILL 0x80 #define phVOWEL2 0x100 // liquid that is considered a vowel #define phPALATAL 0x200 +#define phSINGLE_INSTN 0x1000 // this phoneme has a single instruction program, with an implicit Return #define phAPPENDPH 0x2000 // always insert another phoneme (link_out) after this one #define phBRKAFTER 0x4000 // [*] add a post-pause #define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause -#define phSINGLE_INSTN 0x1000 // this phoneme has a single instruction program, with an implicit Return -#define phALTERNATIVE 0x1c00 // bits 10,11,12 specifying use of alternative_ph -#define phBEFOREVOWEL 0x0000 -#define phBEFOREVOWELPAUSE 0x0400 -#define phBEFORENOTVOWEL 0x0c00 -#define phBEFORENOTVOWEL2 0x1000 -#define phSWITCHVOICING 0x0800 -#define phBEFORE_R 0x1400 #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position #define phLONG 0x200000 #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer #define phRHOTIC 0x800000 #define phNOPAUSE 0x1000000 + +#define phFLAG1 0x10000000 +#define phFLAG2 0x20000000 +#define phFLAG3 0x40000000 #define phLOCAL 0x80000000 // used during compilation // fixed phoneme code numbers, these can be used from the program code @@ -150,6 +147,14 @@ extern int n_replace_phonemes; extern REPLACE_PHONEMES replace_phonemes[N_REPLACE_PHONEMES]; +// Table of phoneme programs and lengths. Used by MakeVowelLists +typedef struct { + unsigned int addr; + unsigned int length; +} PHONEME_PROG_LOG; + + + #define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name #define PH3(c1,c2,c3) (c3<<16)+(c2<<8)+c1 #define PhonemeCode2(c1,c2) PhonemeCode((c2<<8)+c1) diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 7272cc6f..d6eb6c6e 100755 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -97,6 +97,8 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) // copy phoneme into the output list memcpy(&plist_out[n_plist_out],plist2,sizeof(PHONEME_LIST2)); + plist_out[n_plist_out].ph = phoneme_tab[plist2->phcode]; + plist_out[n_plist_out].type = plist_out[n_plist_out].ph->type; n_plist_out++; } return(n_plist_out); @@ -248,6 +250,37 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) n_ph_list3 = SubstitutePhonemes(tr,ph_list3) - 2; + for(j=0; (j < n_ph_list3) && (ix < N_PHONEME_LIST-3);) + { + if(ph_list3[j].sourceix) + { + // start of a word + int k; + int nextw; + word_stress = 0; + + // find the highest stress level in this word + for(nextw=j; nextw < n_ph_list3;) + { + if(ph_list3[nextw].stresslevel > word_stress) + word_stress = ph_list3[nextw].stresslevel; + + nextw++; + if(ph_list3[nextw].sourceix) + break; // start of the next word + } + for(k=j; ksourceix) - { - // start of a word - int k; - word_stress = 0; - first_vowel = 1; - - // find the highest stress level in this word - for(k=j+1; k < n_ph_list3; k++) - { - if(ph_list3[k].sourceix) - break; // start of the next word - - if(ph_list3[k].stresslevel > word_stress) - word_stress = ph_list3[k].stresslevel; - } - while(--k >= j) - { - ph_list3[k].wordstress = word_stress; - } - } - if(ph == NULL) continue; InterpretPhoneme(tr, 0x100, plist3, &phdata); + if((alternative = phdata.pd_param[pd_INSERTPHONEME]) > 0) + { + // PROBLEM: if we insert a phoneme before a vowel then we loose the stress. + PHONEME_TAB *ph2; + ph2 = ph; + + insert_ph = plist3->phcode; + ph = phoneme_tab[alternative]; + plist3->ph = ph; + plist3->phcode = alternative; + + if(ph->type == phVOWEL) + { + plist3->synthflags |= SFLAG_SYLLABLE; + if(ph2->type != phVOWEL) + plist3->stresslevel = 0; // change from non-vowel to vowel, make sure it's unstressed + } + else + plist3->synthflags &= ~SFLAG_SYLLABLE; + + // re-interpret the changed phoneme + // But it doesn't obey a second ChangePhoneme() + InterpretPhoneme(tr, 0x100, plist3, &phdata); + } + if((alternative = phdata.pd_param[pd_CHANGEPHONEME]) > 0) { PHONEME_TAB *ph2; ph2 = ph; ph = phoneme_tab[alternative]; - plist3->phcode = alternative; plist3->ph = ph; + plist3->phcode = alternative; if(alternative == 1) continue; // NULL phoneme, discard @@ -348,24 +384,48 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) if(ph->type == phVOWEL) { + PHONEME_LIST *p; + // Check for consecutive unstressed syllables, even across word boundaries. // Do this after changing phonemes according to stress level. - if(plist3->stresslevel == 1) + if(plist3->stresslevel <= 1) { // an unstressed vowel unstress_count++; - if((unstress_count > 1) && ((unstress_count & 1)==0)) + + if(tr->langopts.stress_flags & 0x08) { - // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' - // stress. But not for the last phoneme of a stressed word - if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) + // change sequences of consecutive unstressed vowels in unstressed words to diminished stress (TEST) + for(p=plist3+1; p->type != phPAUSE; p++) { - // An unstressed final vowel of a stressed word - unstress_count=1; // try again for next syllable + if(p->type == phVOWEL) + { + if(p->stresslevel <= 1) + { + if(plist3->wordstress < 4) + plist3->stresslevel = 0; + if(p->wordstress < 4) + p->stresslevel = 0; + } + break; + } } - else + } + else + { + if((unstress_count > 1) && ((unstress_count & 1)==0)) { - plist3->stresslevel = 0; // change stress to 'diminished' + // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' + // stress. But not for the last phoneme of a stressed word + if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) + { + // An unstressed final vowel of a stressed word + unstress_count=1; // try again for next syllable + } + else + { + plist3->stresslevel = 0; // change stress to 'diminished' + } } } } @@ -375,19 +435,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) } } -#ifdef deleted - if(tr->langopts.param[LOPT_REDUCE_T]) - { - if((ph->mnemonic == 't') && (plist3->sourceix == 0) && ((prev->type == phVOWEL) || (prev->mnemonic == 'n'))) - { - if(((plist3+1)->sourceix == 0) && ((plist3+1)->stress < 3) && (next->type == phVOWEL)) - { - ph = phoneme_tab[phonT_REDUCED]; - } - } - } -#endif - #ifdef deleted while((ph->reduce_to != 0) && (!(plist3->synthflags & SFLAG_DICTIONARY) || (tr->langopts.param[LOPT_REDUCE] & 1))) { diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index ab7cd0a3..87de3a2a 100755 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -48,6 +48,8 @@ END_EVENT_TABLE() static wxPen PEN_PITCHENV(wxColour(0,0,255),1,wxSOLID); static wxPen PEN_SAMPLED(wxColour(0,200,200),2,wxSOLID); static wxPen PEN_PHSELECTED(wxColour(255,0,0),2,wxSOLID); +static wxPen PEN_PHSTRESSED(wxColour(80,80,196),3,wxSOLID); +static wxPen PEN_PHSTRESSED2(wxColour(160,160,255),2,wxSOLID); ProsodyDisplay::ProsodyDisplay(wxWindow *parent, const wxPoint& pos, const wxSize& size) : wxScrolledWindow(parent, -1, pos, size, @@ -56,11 +58,8 @@ ProsodyDisplay::ProsodyDisplay(wxWindow *parent, const wxPoint& pos, const wxSiz linewidth = size.GetWidth(); scalex = 0.5; - scaley = double(LINESEP*6)/160.0; + scaley = double(LINESEP*6)/150.0; selected_ph = -1; -// SetBackgroundColour(* wxWHITE); - - LayoutData(phoneme_list,n_phoneme_list); } // end of ProsodyDisplay::ProsodyDisplay @@ -69,27 +68,37 @@ ProsodyDisplay::~ProsodyDisplay() prosodycanvas = NULL; } +extern MNEM_TAB envelope_names[]; void InitProsodyDisplay() {//====================== wxMenu *menu_envelopes; + int ix; + wxString string; menu_envelopes = new wxMenu; // entries match those in envelope_data[] in intonation.cpp - menu_envelopes->Append(0x100,_T("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(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")); + for(ix=0; envelope_names[ix].mnem != NULL; ix++) + { + string = wxString(envelope_names[ix].mnem, wxConvLocal); + menu_envelopes->Append(0x100+envelope_names[ix].value, string); + } +#ifdef deleted + menu_envelopes->Append(0x100,_T("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(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")); +#endif menu_prosody = new wxMenu; menu_prosody->Append(1,_T("Pitch envelope"),menu_envelopes); menu_prosody->Append(2,_T("Amplitude")); @@ -130,6 +139,8 @@ void ProsodyDisplay::SelectPh(int index) PHONEME_LIST *p; const char *emphasized; int y1, y2; + int ix; + const char *name = "?"; char buf[120]; if(index < 0) return; @@ -141,10 +152,18 @@ void ProsodyDisplay::SelectPh(int index) if(p->stresslevel & 8) emphasized = "*"; + for(ix=0; envelope_names[ix].mnem != NULL; ix++) + { + if(envelope_names[ix].value == (p->env & 0xfe)) + { + name = envelope_names[ix].mnem; + break; + } + } 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,y1,y2,p->env,p->ph->phflags); + sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d %s PhFlags %.2x ", + emphasized,p->stresslevel&0x7,p->amp,p->length,y1,y2,name,p->ph->phflags); wxLogStatus(wxString(buf,wxConvLocal)); } @@ -352,6 +371,7 @@ void ProsodyDisplay::DrawEnv(wxDC& dc, int x1, int y1, int width, PHONEME_LIST * p1 = ph->pitch1; } + if(p1 == 255) return; dc.SetPen(PEN_PITCHENV); @@ -427,6 +447,16 @@ void ProsodyDisplay::DrawPitchline(wxDC& dc, int line, int x1, int x2) continue; // before the redraw region } + // is this a stressed vowel ? + if((p->type == phVOWEL) && (p->stresslevel >= 2)) + { + if(p->stresslevel >= 4) + dc.SetPen(PEN_PHSTRESSED); + else + dc.SetPen(PEN_PHSTRESSED2); + dc.DrawLine(xpos,offy-LINEBASE-1,xpos+width,offy-LINEBASE-1); + } + // is this phoneme selected ? if(ix == selected_ph) { diff --git a/src/readclause.cpp b/src/readclause.cpp index 9aec954a..795f9a03 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -58,6 +58,7 @@ static const char *ungot_word = NULL; static int end_of_input; static int ignore_text=0; // set during ... to ignore text which has been replaced by an alias +static int audio_text=0; // set during static int clear_skipping_text = 0; // next clause should clear the skipping_text flag int count_characters = 0; static int sayas_mode; @@ -183,7 +184,7 @@ static int speech_parameters[N_SPEECH_PARAM]; // current values, from param_ const int param_defaults[N_SPEECH_PARAM] = { 0, // silence (internal use) - 170, // rate wpm + 175, // rate wpm 100, // volume 50, // pitch 50, // range @@ -579,8 +580,7 @@ static const char *LookupSpecial(Translator *tr, const char *string, char* text_ { SetWordStress(tr, phonemes, flags, -1, 0); DecodePhonemes(phonemes,phonemes2); - sprintf(text_out,"[[%s]]",phonemes2); - option_phoneme_input |= 2; + sprintf(text_out,"[\002%s]]",phonemes2); return(text_out); } return(NULL); @@ -657,22 +657,20 @@ static const char *LookupCharName(Translator *tr, int c, int only) { SetWordStress(translator2, phonemes, flags, -1, 0); DecodePhonemes(phonemes,phonemes2); - sprintf(buf,"[[_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name)); + sprintf(buf,"[\002_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name)); SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table } else { SetWordStress(tr, phonemes, flags, -1, 0); DecodePhonemes(phonemes,phonemes2); - sprintf(buf,"[[%s]] ",phonemes2); + sprintf(buf,"[\002%s]] ",phonemes2); } - option_phoneme_input |= 2; } else if(only == 0) { - strcpy(buf,"[[(X1)(X1)(X1)]]"); - option_phoneme_input |= 2; + strcpy(buf,"[\002(X1)(X1)(X1)]]"); } return(buf); @@ -764,7 +762,7 @@ static int LoadSoundFile(const char *fname, int index) f = fopen(fname,"rb"); if(f == NULL) { - fprintf(stderr,"Can't read temp file: %s\n",fname); +// fprintf(stderr,"Can't read temp file: %s\n",fname); return(3); } } @@ -872,7 +870,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) { punct_count=1; - while(c2 == c1) + while((c2 == c1) && (c1 != '<')) // don't eat extra '<', it can miss XML tags { punct_count++; c2 = GetC(); @@ -891,13 +889,13 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output else if(punct_count < 4) { - sprintf(buf,"\001+10S"); + sprintf(buf,"\001+15S"); while(punct_count-- > 0) { sprintf(buf2," %s",punctname); strcat(buf, buf2); } - sprintf(buf2," \001-10S"); + sprintf(buf2," \001-15S"); strcat(buf, buf2); } else @@ -1859,10 +1857,13 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb if(self_closing) PopParamStack(tag_type, outbuf, outix); + else + audio_text = 1; return(CLAUSE_NONE); case SSML_AUDIO + SSML_CLOSE: PopParamStack(tag_type, outbuf, outix); + audio_text = 0; return(CLAUSE_NONE); case SSML_BREAK: @@ -1884,7 +1885,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb } if((attr2 = GetSsmlAttribute(px,"time")) != NULL) { - value = (attrnumber(attr2,0,1) * 25) / speed.speed_factor1; // compensate for speaking speed to keep constant pause length + value = (attrnumber(attr2,0,1) * 25) / speed.pause_factor; // compensate for speaking speed to keep constant pause length if(terminator == 0) terminator = CLAUSE_NONE; @@ -1986,7 +1987,7 @@ terminator=0; // ?? Sentence intonation, but no pause ?? static MNEM_TAB xml_char_mnemonics[] = { {"gt",'>'}, - {"lt",'<'}, + {"lt", 0xe000 + '<'}, // private usage area, to avoid confusion with XML tag {"amp", '&'}, {"quot", '"'}, {"nbsp", ' '}, @@ -2482,7 +2483,9 @@ if(option_ssml) parag=1; } } - if(option_punctuation && iswpunct(c1)) + // don't announce punctuation for the alternative text inside inside + if(c1 == 0xe000+'<') c1 = '<'; + if(option_punctuation && iswpunct(c1) && (audio_text == 0)) { // option is set to explicitly speak punctuation characters // if a list of allowed punctuation has been set up, check whether the character is in it @@ -2556,6 +2559,10 @@ if(option_ssml) parag=1; } } else + if(c_next == '\'') + { + is_end_clause = 0; // eg. u.s.a.'s + } if(iswlower(c_next)) { // next word has no capital letter, this dot is probably from an abbreviation @@ -2636,6 +2643,9 @@ if(option_ssml) parag=1; } j = ix+1; + + if(c1 == 0xe000 + '<') c1 = '<'; + ix += utf8_out(c1,&buf[ix]); // buf[ix++] = c1; if(!iswspace(c1) && !IsBracket(c1)) { @@ -2701,6 +2711,7 @@ void InitText2(void) current_voice_id[0] = 0; ignore_text = 0; + audio_text = 0; clear_skipping_text = 0; count_characters = -1; sayas_mode = 0; diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 58125170..8261813b 100755 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -34,71 +34,97 @@ extern int GetAmplitude(void); // convert from words-per-minute to internal speed factor -static unsigned char speed_lookup[290] = { - 250, 246, 243, 239, 236, // 80 - 233, 229, 226, 223, 220, // 85 - 217, 214, 211, 208, 205, // 90 - 202, 197, 194, 192, 190, // 95 - 187, 185, 183, 180, 178, // 100 - 176, 174, 172, 170, 168, // 105 - 166, 164, 161, 159, 158, // 110 - 156, 154, 152, 150, 148, // 115 - 146, 145, 143, 141, 137, // 120 - 136, 135, 133, 132, 131, // 125 - 129, 128, 127, 126, 125, // 130 - 124, 122, 121, 120, 119, // 135 - 117, 116, 115, 114, 113, // 140 - 112, 111, 110, 108, 107, // 145 - 106, 105, 104, 103, 102, // 150 - 101, 100, 99, 98, 97, // 155 - 96, 95, 93, 92, 92, // 160 - 91, 90, 89, 89, 88, // 165 - 87, 87, 86, 85, 85, // 170 - 84, 83, 83, 82, 81, // 175 - 80, 80, 79, 78, 78, // 180 - 77, 76, 76, 75, 73, // 185 - 72, 72, 71, 71, 70, // 190 - 70, 69, 69, 68, 67, // 195 - 67, 66, 66, 65, 65, // 200 - 64, 64, 63, 63, 62, // 205 - 62, 61, 60, 60, 59, // 210 - 59, 58, 58, 57, 57, // 215 - 56, 56, 55, 55, 55, // 220 - 54, 54, 53, 53, 52, // 225 - 52, 51, 51, 50, 50, // 230 - 49, 49, 49, 48, 48, // 235 - 47, 47, 46, 46, 46, // 240 - 45, 45, 44, 44, 43, // 245 - 43, 43, 42, 42, 41, // 250 - 41, 41, 40, 40, 39, // 255 - 39, 39, 38, 38, 38, // 260 - 37, 37, 37, 36, 36, // 265 - 35, 35, 35, 34, 34, // 270 - 34, 33, 33, 33, 32, // 275 - 32, 32, 32, 31, 31, // 280 - 31, 30, 30, 30, 29, // 285 - 29, 29, 29, 28, 28, // 290 - 28, 28, 27, 27, 27, // 295 - 26, 26, 26, 26, 25, // 300 - 25, 25, 22, 22, 22, // 305 - 22, 22, 22, 22, 22, // 310 - 21, 21, 21, 21, 21, // 315 - 21, 20, 20, 20, 20, // 320 - 20, 15, 15, 15, 15, // 325 - 15, 15, 15, 15, 16, // 330 - 16, 16, 16, 15, 15, // 335 - 15, 15, 15, 15, 15, // 340 - 15, 17, 17, 16, 16, // 345 - 15, 15, 14, 14, 13, // 350 - 13, 12, 12, 11, 11, // 355 - 10, 10, 9, 8, 8, // 360 - 7, 6, 5, 5, 4, // 365 +// Use this to calibrate speed for wpm 80-350 +static unsigned char speed_lookup[] = { + 255, 255, 255, 255, 255, // 80 + 253, 249, 245, 242, 238, // 85 + 235, 232, 228, 225, 222, // 90 + 218, 216, 213, 210, 207, // 95 + 204, 201, 198, 196, 193, // 100 + 191, 188, 186, 183, 181, // 105 + 179, 176, 174, 172, 169, // 110 + 168, 165, 163, 161, 159, // 115 + 158, 155, 153, 152, 150, // 120 + 148, 146, 145, 143, 141, // 125 + 139, 137, 136, 135, 133, // 130 + 131, 130, 129, 127, 126, // 135 + 124, 123, 122, 120, 119, // 140 + 118, 117, 115, 114, 113, // 145 + 112, 111, 110, 109, 107, // 150 + 106, 105, 104, 103, 102, // 155 + 101, 100, 99, 98, 97, // 160 + 96, 95, 94, 93, 92, // 165 + 91, 90, 89, 89, 88, // 170 + 87, 86, 85, 84, 83, // 175 + 82, 82, 81, 80, 80, // 180 + 79, 78, 77, 76, 76, // 185 + 75, 75, 74, 73, 72, // 190 + 71, 71, 70, 69, 69, // 195 + 68, 67, 67, 66, 66, // 200 + 65, 64, 64, 63, 62, // 205 + 62, 61, 61, 60, 59, // 210 + 59, 58, 58, 57, 57, // 215 + 56, 56, 55, 54, 54, // 220 + 53, 53, 52, 52, 52, // 225 + 51, 50, 50, 49, 49, // 230 + 48, 48, 47, 47, 46, // 235 + 46, 46, 45, 45, 44, // 240 + 44, 44, 43, 43, 42, // 245 + 41, 40, 40, 40, 39, // 250 + 39, 39, 38, 38, 38, // 255 + 37, 37, 37, 36, 36, // 260 + 35, 35, 35, 35, 34, // 265 + 34, 34, 33, 33, 33, // 270 + 32, 32, 31, 31, 31, // 275 + 30, 30, 30, 29, 29, // 280 + 29, 29, 28, 28, 27, // 285 + 27, 27, 27, 26, 26, // 290 + 26, 26, 25, 25, 25, // 295 + 24, 24, 24, 24, 23, // 300 + 23, 23, 23, 22, 22, // 305 + 22, 21, 21, 21, 21, // 310 + 20, 20, 20, 20, 19, // 315 + 19, 19, 18, 18, 17, // 320 + 17, 17, 16, 16, 16, // 325 + 16, 16, 16, 15, 15, // 330 + 15, 15, 14, 14, 14, // 335 + 13, 13, 13, 12, 12, // 340 + 12, 12, 11, 11, 11, // 345 + 11, 10, 10, 10, 9, // 350 + 9, 9, 8, 8, 8, // 355 }; -// speed_factor2 adjustments for speeds 370 to 390 -static unsigned char faster[] = { -114,112,110,109,107,105,104,102,100,98, // 370-379 -96,94,92,90,88,85,83,80,78,75,72 }; //380-390 + +// speed_factor1 adjustments for speeds 350 to 374: pauses +static unsigned char pause_factor_350[] = { +22,22,22,22,22,22,22,21,21,21, // 350 +21,20,20,19,19,18,17,16,15,15, // 360 +15,15,15,15,15}; // 370 + +// wav_factor adjustments for speeds 350 to 450 +// Use this to calibrate speed for wpm 350-450 +static unsigned char wav_factor_350[] = { + 120, 121, 120, 119, 119, // 350 + 118, 118, 117, 116, 116, // 355 + 115, 114, 113, 112, 112, // 360 + 111, 111, 110, 109, 108, // 365 + 107, 106, 106, 104, 103, // 370 + 103, 102, 102, 102, 101, // 375 + 101, 99, 98, 98, 97, // 380 + 96, 96, 95, 94, 93, // 385 + 91, 90, 91, 90, 89, // 390 + 88, 86, 85, 86, 85, // 395 + 85, 84, 82, 81, 80, // 400 + 79, 77, 78, 78, 76, // 405 + 77, 75, 75, 74, 73, // 410 + 71, 72, 70, 69, 69, // 415 + 69, 67, 65, 64, 63, // 420 + 63, 63, 61, 61, 59, // 425 + 59, 59, 58, 56, 57, // 430 + 58, 56, 54, 53, 52, // 435 + 52, 53, 52, 52, 50, // 440 + 48, 47, 47, 45, 46, // 445 + 45}; // 450 static int speed1 = 130; static int speed2 = 121; @@ -106,27 +132,92 @@ static int speed3 = 118; +//#define TEST_SPEED + void SetSpeed(int control) {//======================= int x; int s1; int wpm; int wpm2; + int test=0; + + speed.loud_consonants = 0; + speed.min_sample_len = 450; + speed.lenmod_factor = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change + speed.lenmod2_factor = 100; wpm = embedded_value[EMBED_S]; if(control == 2) wpm = embedded_value[EMBED_S2]; +#ifdef TEST_SPEED + if(wpm > 1000) + { + // TESTING + test = wpm / 1000; + wpm = wpm % 1000; + } +#endif + if(voice->speed_percent > 0) { wpm = (wpm * voice->speed_percent)/100; } + if(wpm > 450) + wpm = 450; + + if(wpm > 360) + { + speed.loud_consonants = (wpm - 360) / 8; + } + +#ifdef deleted + if(wpm >= 450) + { + // TEST + speed1 = 6; + speed2 = speed3 = 5; + speed.pause_factor = 12; + speed.clause_pause_factor = 15; + speed.wav_factor = 70; + speed.lenmod_factor = 53; + speed.min_sample_len = 400; + return; + } + if(wpm > 390) + { + // TEST + speed1 = 6; + speed2 = speed3 = 5; + speed.pause_factor = 13; + speed.clause_pause_factor = 15; + + if(wpm >= 440) + { + speed.wav_factor = 72 - (wpm - 440)/4; + speed.lenmod_factor = 60 - (wpm - 440)/2; + speed.min_sample_len = 420 - (wpm - 440); + } + else + { + speed.wav_factor = 74; + speed.lenmod_factor = 65 - (wpm - 400)/10; + speed.min_sample_len = 450 - (wpm - 400)/2; + } + return; + } +#endif + wpm2 = wpm; + if(wpm > 359) wpm2 = 359; + if(wpm < 80) wpm2 = 80; + x = speed_lookup[wpm2-80]; - if(wpm > 369) wpm = 369; - if(wpm < 80) wpm = 80; - - x = speed_lookup[wpm-80]; + if(wpm >= 380) + x = 7; + if(wpm >= 400) + x = 6; if(control & 1) { @@ -135,43 +226,101 @@ void SetSpeed(int control) speed1 = (x * voice->speedf1)/256; speed2 = (x * voice->speedf2)/256; speed3 = (x * voice->speedf3)/256; + + if(x <= 7) + { + speed1 = x; + speed2 = speed3 = x - 1; + } } if(control & 2) { // these are used in synthesis file - s1 = (x * voice->speedf1)/256; - speed.speed_factor1 = (256 * s1)/115; // full speed adjustment, used for pause length -if(speed.speed_factor1 < 15) - speed.speed_factor1 = 15; - if(wpm >= 170) -// speed_factor2 = 100 + (166*s1)/128; // reduced speed adjustment, used for playing recorded sounds - speed.speed_factor2 = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds - else - speed.speed_factor2 = 128 + (128*s1)/130; // = 215 at 170 wpm - if(wpm2 > 369) + if(wpm > 350) { - if(wpm2 > 390) - wpm2 = 390; - speed.speed_factor2 = faster[wpm2 - 370]; + speed.lenmod_factor = 85 - (wpm - 350) / 3; + speed.lenmod2_factor = 60 - (wpm - 350) / 8; + } + else + if(wpm > 250) + { + speed.lenmod_factor = 110 - (wpm - 250)/4; + speed.lenmod2_factor = 110 - (wpm - 250)/2; + } + + s1 = (x * voice->speedf1)/256; + + if(wpm >= 170) + speed.wav_factor = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds + else + speed.wav_factor = 128 + (128*s1)/130; // = 215 at 170 wpm + + if(wpm >= 350) + { + speed.wav_factor = wav_factor_350[wpm-350]; + } + + if(wpm >= 390) + { + speed.min_sample_len = 450 - (wpm - 400)/2; + if(wpm > 440) + speed.min_sample_len = 420 - (wpm - 440); + } + + if(test > 0) + speed.wav_factor = test; + + speed.pause_factor = (256 * s1)/115; // full speed adjustment, used for pause length + speed.clause_pause_factor = 0; + + if(wpm > 430) + { + speed.pause_factor = 12; +// speed.clause_pause_factor = 15; + } + else + if(wpm > 400) + { + speed.pause_factor = 13; +// speed.clause_pause_factor = 15; + } + else + if(wpm > 374) + { + speed.pause_factor = 14; + } + else + if(wpm > 350) + { + speed.pause_factor = pause_factor_350[wpm - 350]; + } + + if(speed.clause_pause_factor == 0) + { + // restrict the reduction of pauses between clauses + if((speed.clause_pause_factor = speed.pause_factor) < 16) + speed.clause_pause_factor = 16; + } + + if(wpm >= 370) + { + // TESTING + // use experimental fast settings if they have been specified in the Voice + if(speed.fast_settings[0] > 0) + speed.pause_factor = speed.fast_settings[0]; + if(speed.fast_settings[1] > 0) + speed.wav_factor = speed.fast_settings[1]; + if(speed.fast_settings[2] > 0) + speed.lenmod_factor = speed.lenmod2_factor = speed.fast_settings[2]; } } - speed.min_sample_len = 450; - speed.speed_factor3 = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change - - if(wpm2 >= 370) - { - // TESTING - // use experimental fast settings if they have been specified in the Voice - if(speed.fast_settings[0] > 0) - speed.speed_factor1 = speed.fast_settings[0]; - if(speed.fast_settings[1] > 0) - speed.speed_factor2 = speed.fast_settings[1]; - if(speed.fast_settings[2] > 0) - speed.speed_factor3 = speed.fast_settings[2]; - } +#ifdef TEST_SPEED +//if(control==3) +printf("%3d: speedf %d %d %d pause=%d %d wav=%d lenmod=%d %d\n",wpm,speed1,speed2,speed3, speed.pause_factor,speed.clause_pause_factor, speed.wav_factor,speed.lenmod_factor,speed.lenmod2_factor); +#endif } // end of SetSpeed @@ -349,13 +498,17 @@ void CalcLengths(Translator *tr) break; case phVFRICATIVE: - if(next->type==phVOWEL) - { - pre_voiced = 1; - } // drop through case phFRICATIVE: if(p->newword) - p->prepause = 15; + { + if((prev->type == phVOWEL) && (p->ph->phflags & phNOPAUSE)) + { + } + else + { + p->prepause = 15; + } + } if(next->type==phPAUSE && prev->type==phNASAL && !(p->ph->phflags&phFORTIS)) p->prepause = 25; @@ -363,6 +516,9 @@ void CalcLengths(Translator *tr) if(prev->ph->phflags & phBRKAFTER) p->prepause = 30; + if((tr->langopts.word_gap & 0x10) && (p->newword)) + p->prepause = 30; + if((p->ph->phflags & phSIBILANT) && next->type==phSTOP && !next->newword) { if(prev->type == phVOWEL) @@ -373,9 +529,17 @@ void CalcLengths(Translator *tr) else p->length = 256; - if((tr->langopts.word_gap & 0x10) && (p->newword)) - p->prepause = 30; - + if(type == phVFRICATIVE) + { + if(next->type==phVOWEL) + { + pre_voiced = 1; + } + if((prev->type==phVOWEL) || (prev->type == phLIQUID)) + { + p->length = (255 + prev->length)/2; + } + } break; case phVSTOP: diff --git a/src/speak.cpp b/src/speak.cpp index 2ed30f56..7f100867 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -81,7 +81,7 @@ static const char *help_text = "-p \n" "\t Pitch adjustment, 0 to 99, default is 50\n" "-s \n" -"\t Speed in words per minute 80 to 390, default is 170\n" +"\t Speed in words per minute 80 to 450, default is 175\n" "-v \n" "\t Use voice file of this name from espeak-data/voices\n" "-w \n" @@ -485,7 +485,7 @@ int main (int argc, char **argv) int option_index = 0; int c; int value; - int speed=170; + int speed=175; int ix; char *optarg2; int amp = 100; // default diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 29873079..f9805101 100755 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -599,13 +599,13 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) { // a pause phoneme, which has not been changed by the translation name = '_'; - len = (p->length * speed.speed_factor1)/256; + len = (p->length * speed.pause_factor)/256; // if(len == 0) continue; if(len == 0) len = 1; } else - len = (80 * speed.speed_factor2)/256; + len = (80 * speed.wav_factor)/256; #ifdef USE_MBROLA_LIB MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); @@ -667,7 +667,7 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) break; case phVSTOP: - len = (80 * speed.speed_factor2)/256; + len = (80 * speed.wav_factor)/256; break; case phFRICATIVE: diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 45cf1754..da4f5b20 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.31 21.May.10"; -const int version_phdata = 0x014317; +const char *version_string = "1.43.46 20.Jun.10"; +const int version_phdata = 0x014342; int option_device_number = -1; FILE *f_logespeak = NULL; @@ -48,7 +48,7 @@ int current_phoneme_table; PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited -static USHORT *phoneme_index=NULL; +USHORT *phoneme_index=NULL; char *spects_data=NULL; unsigned char *wavefile_data=NULL; static unsigned char *phoneme_tab_data = NULL; @@ -589,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}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel + static int ph_position[8] = {0, 1, 2, 3, 2, 0, 1, 3}; // prevPh, thisPh, nextPh, next2Ph, nextPhW, prevPhW, nextVowel, next2PhW data = instn & 0xff; instn2 = instn >> 8; @@ -621,6 +621,12 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, break; } } + if(which==7) + { + // nextPh2 not word boundary + if((plist[1].sourceix) || (plist[2].sourceix)) + return(false); + } else { which = ph_position[which]; @@ -723,7 +729,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, break; case 12: // isVoiced - return((ph->type == phVOWEL) || (ph->phflags & phVOICED)); + return((ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED)); } break; @@ -740,6 +746,8 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, return(control & 1); case 2: // KlattSynth return(voice->klattv[0] != 0); + case 3: // MbrolaSynth + return(mbrola_name[0] != 0); } } return(false); diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 79ad8a42..c37fbf09 100755 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -190,9 +190,14 @@ int PauseLength(int pause, int control) int len; if(control == 0) - len = (pause * speed.speed_factor1)/256; + { + if(pause >= 200) + len = (pause * speed.clause_pause_factor)/256; + else + len = (pause * speed.pause_factor)/256; + } else - len = (pause * speed.speed_factor2)/256; + len = (pause * speed.wav_factor)/256; if(len < 5) len = 5; // mS, limit the amount to which pauses can be shortened return(len); @@ -204,9 +209,14 @@ static void DoPause(int length, int control) // control = 1, less shortening at fast speeds int len; - len = PauseLength(length, control); + if(length == 0) + len = 0; + else + { + len = PauseLength(length, control); - len = (len * samplerate) / 1000; // convert from mS to number of samples + len = (len * samplerate) / 1000; // convert from mS to number of samples + } EndPitch(1); wcmdq[wcmdq_tail][0] = WCMD_PAUSE; @@ -223,7 +233,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng {//============================================================================================= int length; int wav_length; - int format; + int wav_scale; int min_length; int x; int len4; @@ -232,18 +242,26 @@ static int DoSample2(int index, int which, int std_length, int control, int leng index = index & 0x7fffff; p = &wavefile_data[index]; - format = p[2]; + wav_scale = p[2]; wav_length = (p[1] * 256); wav_length += p[0]; // length in bytes min_length = speed.min_sample_len; - if(format==0) - min_length *= 2; + + if(wav_scale==0) + min_length *= 2; // 16 bit samples + else + { + // increase consonant amplitude at high speeds, depending on the peak consonant amplitude + x = ((35 - wav_scale) * speed.loud_consonants); + if(x < 0) x = 0; + wav_scale = (wav_scale * (x+256))/256; + } if(std_length > 0) { std_length = (std_length * samplerate)/1000; - if(format == 0) + if(wav_scale == 0) std_length *= 2; x = (min_length * std_length)/wav_length; @@ -261,7 +279,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng std_length = (std_length * length_mod)/256; } - length = (std_length * speed.speed_factor2)/256; + length = (std_length * speed.wav_factor)/256; if(control & pd_DONTLENGTHEN) { @@ -283,7 +301,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng length = min_length; - if(format == 0) + if(wav_scale == 0) { // 16 bit samples length /= 2; @@ -305,7 +323,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q[0] = WCMD_WAVE2; q[1] = length | (wav_length << 16); // length in samples q[2] = long(&wavefile_data[index]); - q[3] = format + (amp << 8); + q[3] = wav_scale + (amp << 8); WcmdqInc(); return(length); } @@ -326,14 +344,14 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q[0] = WCMD_WAVE; q[1] = x; // length in samples q[2] = long(&wavefile_data[index]); - q[3] = format + (amp << 8); + q[3] = wav_scale + (amp << 8); WcmdqInc(); while(length > len4*3) { x = len4; - if(format == 0) + if(wav_scale == 0) x *= 2; last_wcmdq = wcmdq_tail; @@ -341,7 +359,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng q[0] = WCMD_WAVE; q[1] = len4*2; // length in samples q[2] = long(&wavefile_data[index+x]); - q[3] = format + (amp << 8); + q[3] = wav_scale + (amp << 8); WcmdqInc(); length -= len4*2; @@ -350,14 +368,14 @@ static int DoSample2(int index, int which, int std_length, int control, int leng if(length > 0) { x = wav_length - length; - if(format == 0) + if(wav_scale == 0) x *= 2; last_wcmdq = wcmdq_tail; q = wcmdq[wcmdq_tail]; q[0] = WCMD_WAVE; q[1] = length; // length in samples q[2] = long(&wavefile_data[index+x]); - q[3] = format + (amp << 8); + q[3] = wav_scale + (amp << 8); WcmdqInc(); } @@ -662,8 +680,8 @@ static short vcolouring[N_VCOLOUR][5] = { seq[0].length = VOWEL_FRONT_LENGTH; if(len > 0) seq[0].length = len; - seq[0].frflags |= FRFLAG_LEN_MOD; // reduce length modification - fr->frflags |= FRFLAG_LEN_MOD; + seq[0].frflags |= FRFLAG_LEN_MOD2; // reduce length modification + fr->frflags |= FRFLAG_LEN_MOD2; next_rms = seq[1].frame->rms; @@ -994,13 +1012,14 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L long *q; int len; int frame_length; - int frame1_length; - int frame2_length; int length_factor; int length_mod; + int length_sum; + int length_min; int total_len = 0; static int wave_flag = 0; int wcmd_spect = WCMD_SPECT; + int frame_lengths[N_SEQ_FRAMES]; if(fmt_params->fmt_addr == 0) return(0); @@ -1008,6 +1027,13 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L length_mod = plist->length; if(length_mod==0) length_mod=256; + length_min = (samplerate/70); // greater than one cycle at low pitch (Hz) + if(which==2) + { + if((translator->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] > 0) && ((this_ph->std_length >= translator->langopts.param[LOPT_LONG_VOWEL_THRESHOLD]) || (plist->synthflags & SFLAG_LENGTHEN) || (this_ph->phflags & phLONG))) + length_min *= 2; // ensure long vowels are longer + } + if(which==1) { // limit the shortening of sonorants before shortened (eg. unstressed vowels) @@ -1026,14 +1052,16 @@ if(which==1) return(0); // not found frame1 = frames[0].frame; - frame1_length = frames[0].length; if(voice->klattv[0]) wcmd_spect = WCMD_KLATT; wavefile_ix = fmt_params->wav_addr; - wavefile_amp = (fmt_params->wav_amp * 32)/100; - if(wavefile_amp == 0) + + if(fmt_params->wav_amp == 0) wavefile_amp = 32; + else + wavefile_amp = (fmt_params->wav_amp * 32)/100; + if(wavefile_ix == 0) { if(wave_flag) @@ -1083,11 +1111,39 @@ if(which==1) syllable_centre = wcmdq_tail; } - frame_length = frame1_length; + length_sum = 0; + for(frameix=1; frameix < n_frames; frameix++) + { + length_factor = length_mod; + if(frames[frameix-1].frflags & FRFLAG_LEN_MOD) // reduce effect of length mod + { + length_factor = (length_mod*(256-speed.lenmod_factor) + 256*speed.lenmod_factor)/256; + } + else + if(frames[frameix-1].frflags & FRFLAG_LEN_MOD2) // reduce effect of length mod, used for the start of a vowel + { + length_factor = (length_mod*(256-speed.lenmod2_factor) + 256*speed.lenmod2_factor)/256; + } + + frame_length = frames[frameix-1].length; + len = (frame_length * samplerate)/1000; + len = (len * length_factor)/256; + length_sum += len; + frame_lengths[frameix] = len; + } + + if((length_sum > 0) && (length_sum < length_min)) + { + // lengthen, so that the sequence is greater than one cycle at low pitch + for(frameix=1; frameix < n_frames; frameix++) + { + frame_lengths[frameix] = (frame_lengths[frameix] * length_min) / length_sum; + } + } + for(frameix=1; frameixwav_addr != 0) && ((frame1->frflags & FRFLAG_DEFER_WAV)==0)) { @@ -1099,14 +1155,6 @@ if(which==1) fmt_params->wav_addr = 0; } - length_factor = length_mod; - if(frame1->frflags & FRFLAG_LEN_MOD) // reduce effect of length mod - { - length_factor = (length_mod*(256-speed.speed_factor3) + 256*speed.speed_factor3)/256; - } - len = (frame_length * samplerate)/1000; - len = (len * length_factor)/256; - if(modulation >= 0) { if(frame1->frflags & FRFLAG_MODULATE) @@ -1117,13 +1165,13 @@ if(which==1) modulation |= modn_flags; // before or after a glottal stop } + len = frame_lengths[frameix]; pitch_length += len; amp_length += len; - if(frame_length < 2) + if(len == 0) { last_frame = NULL; - frame_length = frame2_length; frame1 = frame2; } else @@ -1141,7 +1189,6 @@ if(which==1) WcmdqInc(); } last_frame = frame1 = frame2; - frame_length = frame2_length; total_len += len; } } @@ -1280,6 +1327,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) syllable_centre = -1; last_pitch_cmd = -1; memset(vowel_transition,0,sizeof(vowel_transition)); + DoPause(0,0); // isolate from the previous clause } while(ix < (*n_ph)) diff --git a/src/synthesize.h b/src/synthesize.h index 9c82bbce..e87178c2 100755 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -24,9 +24,6 @@ #define N_SEQ_FRAMES 25 // max frames in a spectrum sequence (real max is ablut 8) #define STEPSIZE 64 // 2.9mS at 22 kHz sample rate -#define PITCHfall 0 -#define PITCHrise 2 - // flags set for frames within a spectrum sequence #define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer #define FRFLAG_VOWEL_CENTRE 0x02 // centre point of vowel @@ -37,6 +34,7 @@ #define FRFLAG_FORMANT_RATE 0x20 // Flag5 allow increased rate of change of formant freq #define FRFLAG_MODULATE 0x40 // Flag6 modulate amplitude of some cycles to give trill #define FRFLAG_DEFER_WAV 0x80 // Flag7 defer mixing WAV until the next frame +#define FRFLAG_LEN_MOD2 0x4000 // reduce effect of length adjustment, used for the start of a vowel #define FRFLAG_COPIED 0x8000 // This frame has been copied into temporary rw memory #define SFLAG_SEQCONTINUE 0x01 // a liquid or nasal after a vowel, but not followed by a vowel @@ -227,7 +225,7 @@ typedef struct { // The first section is a copy of PHONEME_LIST2 unsigned char phcode; unsigned char stresslevel; - unsigned char wordstress; + unsigned char wordstress; // the highest level stress in this word unsigned char tone_ph; // tone phoneme to use with this vowel unsigned short synthflags; unsigned short sourceix; // ix into the original source text string, only set at the start of a word @@ -252,9 +250,10 @@ typedef struct { #define pd_ADDWAV 4 #define N_PHONEME_DATA_PARAM 16 +#define pd_INSERTPHONEME i_INSERT_PHONEME #define pd_APPENDPHONEME i_APPEND_PHONEME -#define pd_CHANGEPHONEME i_CHANGE_PHONEME -#define pd_LENGTHMOD i_SET_LENGTH +#define pd_CHANGEPHONEME i_CHANGE_PHONEME +#define pd_LENGTHMOD i_SET_LENGTH #define pd_FORNEXTPH 0x2 #define pd_DONTLENGTHEN 0x4 @@ -346,10 +345,16 @@ typedef struct { #define i_isFinalVowel 0x8b #define i_isVoiced 0x8c +// place of articulation +#define i_isVel 0x28 +// phflags +#define i_isSibilant 0x45 // bit 5 in phflags #define i_isPalatal 0x49 // bit 9 in phflags #define i_isRhotic 0x56 // bit 22 in phflags - +#define i_isFlag1 0x5c +#define i_isFlag2 0x5d +#define i_isFlag3 0x5e #define i_StressLevel 0x800 @@ -372,34 +377,39 @@ typedef struct { } MBROLA_TAB; typedef struct { - int speed_factor1; - int speed_factor2; - int speed_factor3; + int pause_factor; + int clause_pause_factor; + int wav_factor; + int lenmod_factor; + int lenmod2_factor; int min_sample_len; + int loud_consonants; int fast_settings[8]; } SPEED_FACTORS; typedef struct { - unsigned int name; + char name[12]; unsigned char flags[4]; - signed char headextend[8]; + signed char head_extend[8]; unsigned char prehead_start; unsigned char prehead_end; + unsigned char stressed_env; + unsigned char stressed_drop; + unsigned char secondary_drop; + unsigned char unstressed_shape; + 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; + unsigned char n_head_extend; - char unstressed_start; - char unstressed_end; - char unstressed_shape; + signed char unstr_start[3]; // for: onset, head, last + signed char unstr_end[3]; unsigned char nucleus0_env; // pitch envelope, tonic syllable is at end, no tail unsigned char nucleus0_max; @@ -416,6 +426,7 @@ typedef struct { unsigned char split_nucleus_min; unsigned char split_tail_start; unsigned char split_tail_end; + unsigned char split_tune; unsigned char spare[10]; } TUNE; @@ -485,6 +496,12 @@ extern int wavefile_amp2; extern int vowel_transition[4]; extern int vowel_transition0, vowel_transition1; +#define N_ECHO_BUF 5500 // max of 250mS at 22050 Hz +extern int echo_head; +extern int echo_tail; +extern int echo_amp; +extern short echo_buf[N_ECHO_BUF]; + extern int mbrola_delay; extern char mbrola_name[20]; @@ -511,7 +528,11 @@ int Read4Bytes(FILE *f); int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags); +#define ENV_LEN 128 // length of pitch envelopes +#define PITCHfall 0 // standard pitch envelopes +#define PITCHrise 2 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 737efb76..bd43959d 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -112,6 +112,7 @@ static Translator* NewTranslator(void) static const short stress_lengths2[8] = {182,140, 220,220, 220,240, 260,280}; static const wchar_t empty_wstring[1] = {0}; static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words + static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0}; tr = (Translator *)Alloc(sizeof(Translator)); if(tr == NULL) @@ -123,7 +124,8 @@ static Translator* NewTranslator(void) tr->data_dictrules = NULL; // language_1 translation rules file tr->data_dictlist = NULL; // language_2 dictionary lookup file - tr->transpose_offset = 0; + tr->transpose_min = 0; + tr->frequent_pairs = NULL; // only need lower case tr->letter_bits_offset = 0; @@ -158,11 +160,11 @@ static Translator* NewTranslator(void) tr->langopts.unstressed_wd1 = 1; tr->langopts.unstressed_wd2 = 3; tr->langopts.param[LOPT_SONORANT_MIN] = 95; + tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 190/2; tr->langopts.param[LOPT_MAXAMP_EOC] = 19; tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word tr->langopts.param[LOPT_BRACKET_PAUSE] = 4; // pause at bracket tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2; // pauses when announcing bracket names - tr->langopts.param[LOPT_MIN_LONG_VOWEL] = 40; tr->langopts.max_initial_consonants = 3; tr->langopts.replace_chars = NULL; tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English @@ -181,9 +183,49 @@ static Translator* NewTranslator(void) memcpy(tr->punct_to_tone, punctuation_to_tone, sizeof(tr->punct_to_tone)); + memcpy(tr->langopts.tunes, default_tunes, sizeof(tr->langopts.tunes)); + return(tr); } +// common letter pairs, encode these as a single byte +// 2 bytes, using the transposed character codes +static const short pairs_ru[] = { +0x010c, // ла 21052 0x23 +0x010e, // на 18400 +0x0113, // та 14254 +0x0301, // ав 31083 +0x030f, // ов 13420 +0x060e, // не 21798 +0x0611, // ре 19458 +0x0903, // ви 16226 +0x0b01, // ак 14456 +0x0b0f, // ок 17836 +0x0c01, // ал 13324 +0x0c09, // ил 16877 +0x0e01, // ан 15359 +0x0e06, // ен 13543 0x30 +0x0e09, // ин 17168 +0x0e0e, // нн 15973 +0x0e0f, // он 22373 +0x0e1c, // ын 15052 +0x0f03, // во 24947 +0x0f11, // ро 13552 +0x0f12, // со 16368 +0x100f, // оп 19054 +0x1011, // рп 17067 +0x1101, // ар 23967 +0x1106, // ер 18795 +0x1109, // ир 13797 +0x110f, // ор 21737 +0x1213, // тс 25076 +0x1220, // яс 14310 +0x7fff}; +//0x040f ог 12976 +//0x1306 ет 12826 +//0x0f0d мо 12688 + + static const unsigned int replace_cyrillic_latin[] = {0x430,'a', @@ -232,9 +274,9 @@ static void SetCyrillicLetters(Translator *tr) 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_min = 0x430; // convert cyrillic from unicode into range 0x01 to 0x22 tr->transpose_max = 0x451; + tr->frequent_pairs = pairs_ru; tr->letter_bits_offset = OFFSET_CYRILLIC; memset(tr->letter_bits,0,sizeof(tr->letter_bits)); @@ -322,7 +364,7 @@ Translator *SelectTranslator(const char *name) 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_REGRESSIVE_VOICING] = 0x10; // devoice at end of word 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 ; @@ -379,6 +421,9 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_da[8] = {160,140, 200,200, 0,0, 220,210}; SetupTranslator(tr,stress_lengths_da,NULL); + tr->transpose_min = 'a'; + tr->transpose_max = 'z'; + tr->langopts.stress_rule = STRESSPOSN_1L; SetLetterVowel(tr,'y'); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900; @@ -388,11 +433,13 @@ Translator *SelectTranslator(const char *name) case L('d','e'): { - static const short stress_lengths_de[8] = {150,130, 200,200, 0, 0, 260,275}; + static const short stress_lengths_de[8] = {150,130, 200,200, 0, 0, 250,260}; tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.word_gap = 0x8; // don't use linking phonemes tr->langopts.vowel_pause = 0x30; tr->langopts.param[LOPT_PREFIXES] = 1; + tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word + tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; @@ -405,7 +452,11 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_en[8] = {182,140, 220,220, 0,0, 248,275}; SetupTranslator(tr,stress_lengths_en,NULL); + tr->transpose_min = 'a'; + tr->transpose_max = 'z'; + tr->langopts.stress_rule = STRESSPOSN_1L; + tr->langopts.stress_flags = 0x08; tr->langopts.numbers = NUM_HUNDRED_AND | NUM_ROMAN | NUM_1900; tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word tr->langopts.suffix_add_e = 'e'; @@ -545,7 +596,6 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.long_stop = 130; - tr->langopts.param[LOPT_MIN_LONG_VOWEL] = 65; tr->langopts.numbers = NUM_DECIMAL_COMMA + NUM_ALLOW_SPACE; SetLetterVowel(tr,'y'); @@ -642,7 +692,6 @@ Translator *SelectTranslator(const char *name) tr->langopts.unstressed_wd1 = 2; tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? ! - tr->langopts.param[LOPT_MIN_LONG_VOWEL] = 65; 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 @@ -833,11 +882,14 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.vowel_pause = 1; + tr->langopts.vowel_pause = 0x30; // ?? tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_PREFIXES] = 1; + tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x10; // devoice at end of word SetLetterVowel(tr,'y'); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_ALLOW_SPACE | NUM_1900 | NUM_ORDINAL_DOT; + tr->langopts.ordinal_indicator = "e"; memcpy(tr->stress_lengths,stress_lengths_nl,sizeof(tr->stress_lengths)); } break; @@ -1080,8 +1132,8 @@ SetLengthMods(tr,3); // all equal case L('t','r'): // Turkish { - static const unsigned char stress_amps_tr[8] = {18,18, 20,20, 20,22, 22,21 }; - static const short stress_lengths_tr[8] = {190,190, 190,190, 0,0, 250,270}; + static const unsigned char stress_amps_tr[8] = {18,16, 20,20, 20,21, 21,20 }; + static const short stress_lengths_tr[8] = {190,180, 200,200, 0,0, 240,250}; SetupTranslator(tr,stress_lengths_tr,stress_amps_tr); tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 diff --git a/src/translate.cpp b/src/translate.cpp index 0fda965a..629fe17d 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -115,6 +115,7 @@ static const unsigned short brackets[] = { '(',')','[',']','{','}','<','>','"','\'','`', 0xab,0xbb, // double angle brackets 0x300a,0x300b, // double angle brackets (ideograph) +0xe000+'<', // private usage area 0}; // other characters which break a word, but don't produce a pause @@ -594,6 +595,73 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, +static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab) +{//===================================================== + int wc; + int count = 0; + int nbytes; + int ok; + int ix; + char *word; + char *wbuf; + char word_buf[80]; + + word = word1; + wbuf = word_buf; + ix = 0; + + for(;;) + { + ok = 0; + nbytes = utf8_in(&wc, word); + if((word[nbytes] == ' ') && IsAlpha(wc)) + { + if(word[nbytes+1] == '.') + { + if(word[nbytes+2] == ' ') + ok = 1; + else + if(word[nbytes+2] =='\'') + { + nbytes += 2; // delete the final dot (eg. u.s.a.'s) + ok = 2; + } + } + else + if((count > 0) && (word[nbytes] == ' ')) + ok = 2; + } + + if(ok == 0) + break; + + for(ix=0; ix < nbytes; ix++) + *wbuf++ = word[ix]; + + count++; + + if(ok == 2) + { + word += nbytes; + break; + } + + word += (nbytes + 3); + } + + if(count > 1) + { + ix = wbuf - word_buf; + memcpy(word1, word_buf, ix); + while(&word1[ix] < word) + word1[ix++] = ' '; + dictionary_skipwords = (count - 1)*2; + } + return(count); +} // end of CheckDottedAbbrev + + + int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) {//=========================================================================== // word1 is terminated by space (0x20) character @@ -677,6 +745,7 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) } spell_word = 0; + if(option_sayas == SAYAS_KEY) { if(word_length == 1) @@ -702,6 +771,7 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) if(!found) found = LookupDictList(tr, &word1, phonemes, dictionary_flags, FLAG_ALLOW_TEXTMODE, wtab); // the original word + if((dictionary_flags[0] & (FLAG_ALLOW_DOT || FLAG_NEEDS_DOT)) && (wordx[1] == '.')) { wordx[1] = ' '; // remove a Dot after this word @@ -740,6 +810,20 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab) } } + if((word_length == 1) && (dictionary_skipwords == 0)) + { + // is this a series of single letters separated by dots? + if(CheckDottedAbbrev(word1, wtab)) + { + dictionary_flags[0] = 0; + dictionary_flags[1] = 0; + spell_word = 1; + if(dictionary_skipwords) + dictionary_flags[0] = FLAG_SKIPWORDS; + } + } + + // if textmode, LookupDictList() replaces word1 by the new text and returns found=0 if(phonemes[0] == phonSWITCH) @@ -1604,7 +1688,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if(pre_pause < 1) pre_pause = 1; } - if((flags & FLAG_PREPAUSE) && ((word_flags && FLAG_LAST_WORD) == 0) && (tr->prepause_timeout == 0)) + if((flags & FLAG_PREPAUSE) && !(word_flags && (FLAG_LAST_WORD | FLAG_FIRST_WORD)) && !(wtab[-1].flags & FLAG_FIRST_WORD) && (tr->prepause_timeout == 0)) { // the word is marked in the dictionary list with $pause if(pre_pause < 4) pre_pause = 4; @@ -1667,6 +1751,13 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if((word_flags & FLAG_HYPHEN) && (phoneme_tab[*p]->type == phPAUSE)) p++; + if((p[0] == 0) && (embedded_flag)) + { + // no phonemes. Insert a very short pause to carry an embedded command + p[0] = phonPAUSE_VSHORT; + p[1] = 0; + } + while(((ph_code = *p++) != 0) && (n_ph_list2 < N_PHONEME_LIST-4)) { if(ph_code == 255) @@ -1989,17 +2080,27 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, switch(tr->translator_name) { case L('a','f'): + case L('n','l'): // look for 'n and replace by a special character (unicode: schwa) - utf8_in(&next2, &ptr[1]); if(!iswalpha(prev_in)) { - if((c == '\'') && (next_in == 'n') && IsSpace(next2)) + utf8_in(&next2, &ptr[1]); + + if((c == '\'') && IsSpace(next2)) { - // n preceded by either apostrophe or U2019 "right single quotation mark" - ptr[0] = ' '; // delete the n - return(0x0259); // replace ' by unicode schwa character + if((next_in == 'n') && (tr->translator_name == L('a','f'))) + { + // n preceded by either apostrophe or U2019 "right single quotation mark" + ptr[0] = ' '; // delete the n + return(0x0259); // replace ' by unicode schwa character + } + if((next_in == 'n') || (next_in == 't')) + { + // Dutch, [@n] and [@t] + return(0x0259); // replace ' by unicode schwa character + } } } break; @@ -2090,7 +2191,6 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t embedded_ix = 0; embedded_read = 0; - option_phoneme_input &= ~2; // clear bit 1 (temporary indication) pre_pause = 0; any_stressed_words = 0; @@ -2263,6 +2363,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t c = towlower2(c); } + if(phoneme_mode) { all_upper_case = FLAG_PHONEMES; @@ -2374,11 +2475,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } } - if((c == '[') && (next_in == '[') && option_phoneme_input) + if(c == '[') { - phoneme_mode = FLAG_PHONEMES; - source_index++; - continue; + if((next_in == '\002') || ((next_in == '[') && option_phoneme_input)) + { + // "[\002" is used internally to start phoneme mode + phoneme_mode = FLAG_PHONEMES; + source_index++; + continue; + } } if(c == 0) @@ -2536,9 +2641,9 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre else if(c == '\'') { - if(iswalnum(prev_in) && IsAlpha(next_in)) + if(((prev_in == '.') || iswalnum(prev_in)) && IsAlpha(next_in)) { - // between two letters, consider apostrophe as part of the word + // between two letters, or in an abbreviation (eg. u.s.a.'s). Consider the apostrophe as part of the word single_quoted = 0; } else @@ -2720,7 +2825,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre words[0].flags |= FLAG_FIRST_WORD; - for(ix=0; ixLayoutData(ph_list,n_ph_list); - } - else + if(prosodycanvas == NULL) { myframe->OnProsody(event); } + prosodycanvas->LayoutData(ph_list,n_ph_list); option_phoneme_events = 1; option_log_frames = 1; MakeWave2(ph_list,n_ph_list); diff --git a/src/voices.cpp b/src/voices.cpp index c9243275..5e519f15 100755 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -92,6 +92,7 @@ enum { // these override defaults set by the translator V_WORDGAP, V_INTONATION, + V_TUNES, V_STRESSLENGTH, V_STRESSAMP, V_STRESSADD, @@ -116,7 +117,6 @@ enum { static MNEM_TAB options_tab[] = { {"reduce_t", LOPT_REDUCE_T}, {"bracket", LOPT_BRACKET_PAUSE}, - {"fastLongVowel", LOPT_MIN_LONG_VOWEL}, {NULL, -1} }; static MNEM_TAB keyword_tab[] = { @@ -133,6 +133,7 @@ static MNEM_TAB keyword_tab[] = { {"stressAmp", V_STRESSAMP}, {"stressAdd", V_STRESSADD}, {"intonation", V_INTONATION}, + {"tunes", V_TUNES}, {"dictrules", V_DICTRULES}, {"stressrule", V_STRESSRULE}, {"charset", V_CHARSET}, @@ -194,6 +195,20 @@ static char *fgets_strip(char *buf, int size, FILE *f_in) } +static int LookupTune(const char *name) +{//==================================== + int ix; + + for(ix=0; ixintonation_group = option_tone_flags & 0xff; break; + case V_TUNES: + n = sscanf(p,"%s %s %s %s %s %s",names[0],names[1],names[2],names[3],names[4],names[5]); + langopts->intonation_group = 0; + for(ix=0; ixtunes[ix] = value; + } + break; + case V_DICTRULES: // conditional dictionary rules and list entries while(*p != 0) { diff --git a/src/vowelchart.cpp b/src/vowelchart.cpp index 3cb091fa..81cae2eb 100644 --- a/src/vowelchart.cpp +++ b/src/vowelchart.cpp @@ -42,6 +42,7 @@ extern wxString path_phsource; extern char *spects_data; +extern USHORT *phoneme_index; extern int n_phoneme_tables; @@ -270,6 +271,7 @@ static int VowelChartList(wxDC *dc, wxBitmap *bitmap, char *fname) FILE *f_in; int ix; int f1,f2,f3,g1,g2; + int colour; int count=0; wxFileName filename; char name[40]; @@ -303,9 +305,20 @@ static int VowelChartList(wxDC *dc, wxBitmap *bitmap, char *fname) while(fgets(buf,sizeof(buf),f_in) != NULL) { g2 = 0xffff; - ix = sscanf(buf,"%s %d %d %d %d %d",name,&f1,&f2,&f3,&g1,&g2); - if(ix >= 3) + ix = sscanf(buf,"%s %d %d %d %d %d %d",name,&colour,&f1,&f2,&f3,&g1,&g2); + if(ix >= 4) { + if(colour == 1) + { + dc->SetPen(*wxMEDIUM_GREY_PEN); + dc->SetTextForeground(wxColour(100,100,128)); + } + else + { + dc->SetPen(*wxBLACK_PEN); + dc->SetTextForeground(*wxBLACK); + } + DrawVowel(dc,wxString(name,wxConvLocal), f1,f2,f3,g1,g2); count++; @@ -365,6 +378,8 @@ void VowelChart(int control, char *fname) else count = VowelChartList(&dc, &bitmap, fname); + dc.SetTextForeground(*wxBLACK); + if(control != 1) wxLogStatus(_T("Plotted %d vowels"),count); } @@ -498,6 +513,66 @@ void FindPhonemesUsed(void) + +#define N_VOWELFMT_ADDR 20 +int n_vowelfmt_addr; +int vowelfmt_addr[N_VOWELFMT_ADDR]; // FMT() statements found in a phoneme definition + +static void FindVowelFmt(int prog_start, int length) +{//================================================= + USHORT *prog; + USHORT instn; + int prog_end; + + prog_end = prog_start + length; + n_vowelfmt_addr = 0; + + for(prog = &phoneme_index[prog_start]; prog < &phoneme_index[prog_end]; prog++) + { + instn = *prog; + + switch(instn >> 12) + { + case 2: + case 3: + // conditions + while((instn & 0xe000) == 0x2000) + { + instn = *(++prog); + } + prog--; + break; + + case 10: // Vowelin, Vowelout + prog += 3; + break; + + case 9: + case 12: // WAV + case 13: // VowelStart + case 14: // VowelEnd + case 15: // addWav + prog++; + break; + + case 11: // FMT + if(n_vowelfmt_addr < N_VOWELFMT_ADDR) + { + vowelfmt_addr[n_vowelfmt_addr++] = ((instn & 0xf) << 18) + (prog[1] << 2); + } + prog++; + + break; + } + } +} // end of FindVowelFmt + + +static int prog_log_sorter(PHONEME_PROG_LOG *p1, PHONEME_PROG_LOG *p2) +{//=================================================================== + return(p1->addr - p2->addr); +} + void MakeVowelLists(void) {//====================== // For each phoneme table, make a list of its vowels and their @@ -508,18 +583,46 @@ void MakeVowelLists(void) int phcode; PHONEME_TAB *ph; FILE *f; + FILE *f_prog_log; SPECT_SEQ *seq; SPECT_SEQK *seqk; frame_t *frame; - PHONEME_DATA phdata; + int n_prog_log; + int vowelfmt_ix; + int colour; + int voice_found; + PHONEME_PROG_LOG *prog_log_table; + PHONEME_PROG_LOG *prog_log_end; + PHONEME_PROG_LOG *found_prog; + PHONEME_PROG_LOG this_prog; char dirname[sizeof(path_source)+20]; char fname[sizeof(dirname)+40]; + char save_voice_name[80]; + + strcpy(save_voice_name,voice_name2); + + sprintf(fname,"%s%s",path_source,"compile_prog_log"); + if((f_prog_log = fopen(fname,"rb")) == NULL) + { + wxLogError(_T("Can't read 'compile_prog_log;")); + return; + } + ix = GetFileLength(fname); + prog_log_table = (PHONEME_PROG_LOG *)malloc(ix); + if(prog_log_table == NULL) + return; + fread(prog_log_table, 1, ix, f_prog_log); + fclose(f_prog_log); + prog_log_end = prog_log_table + ix; + n_prog_log = ix / sizeof(PHONEME_PROG_LOG); progress = new wxProgressDialog(_T("Vowel charts"),_T(""),n_phoneme_tables); sprintf(dirname,"%s%s",path_source,"vowelcharts"); mkdir(dirname,S_IRWXU | S_IRGRP | S_IROTH); + sprintf(fname,"%s/vowel_log",dirname); + for(table=0; tabledata_dictrules != NULL)) + { + voice_found = 1; + FindPhonemesUsed(); + } // phoneme table is terminated by a phoneme with no name (=0) for(phcode=1; phcode < n_phoneme_tab; phcode++) { -//if((phoneme_tab_flags[phcode] & 3) == 0) -// continue; // inherited, and not used - ph = phoneme_tab[phcode]; - if((ph==NULL) || (ph->type != phVOWEL)) + if((ph==NULL) || (ph->type != phVOWEL) || (ph->program == 0)) continue; - InterpretPhoneme2(phcode, &phdata); + if(voice_found && (phoneme_tab_flags[phcode] & 3) == 0) + { + continue; // inherited, and not used + } - if((ix = phdata.sound_addr[pd_FMT]) == 0) - continue; + // find the size of this program + this_prog.addr = ph->program; + found_prog = (PHONEME_PROG_LOG *)bsearch((void *)&this_prog, (void *)prog_log_table, n_prog_log, sizeof(PHONEME_PROG_LOG), (int(*)(const void *,const void *))prog_log_sorter); - seq = (SPECT_SEQ *)(&spects_data[ix]); - seqk = (SPECT_SEQK *)seq; + FindVowelFmt(ph->program, found_prog->length); - if(seq->frame[0].frflags & FRFLAG_KLATT) - frame = &seqk->frame[1]; - else - frame = (frame_t *)&seq->frame[1]; + for(vowelfmt_ix=0; vowelfmt_ix < n_vowelfmt_addr; vowelfmt_ix++) + { + ix = vowelfmt_addr[vowelfmt_ix]; - fprintf(f,"%s\t %3d %4d %4d",WordToString(ph->mnemonic), - frame->ffreq[1],frame->ffreq[2],frame->ffreq[3]); + seq = (SPECT_SEQ *)(&spects_data[ix]); + seqk = (SPECT_SEQK *)seq; + + if(seq->frame[0].frflags & FRFLAG_KLATT) + frame = &seqk->frame[1]; + else + frame = (frame_t *)&seq->frame[1]; - if(seq->frame[0].frflags & FRFLAG_KLATT) - frame = &seqk->frame[seqk->n_frames-1]; - else - frame = (frame_t *)&seq->frame[seq->n_frames-1]; - fprintf(f," %3d %4d %4d\n",frame->ffreq[1],frame->ffreq[2],frame->ffreq[3]); + if((n_vowelfmt_addr - vowelfmt_ix) == 1) + colour = 0; + else + colour = 1; + + fprintf(f,"%s\t %d %3d %4d %4d",WordToString(ph->mnemonic), colour, + frame->ffreq[1],frame->ffreq[2],frame->ffreq[3]); + + if(seq->frame[0].frflags & FRFLAG_KLATT) + frame = &seqk->frame[seqk->n_frames-1]; + else + frame = (frame_t *)&seq->frame[seq->n_frames-1]; + fprintf(f," %3d %4d %4d\n",frame->ffreq[1],frame->ffreq[2],frame->ffreq[3]); + } } fclose(f); VowelChart(1,fname); // draw the vowel chart } + free(prog_log_table); LoadVoice(voice_name2,0); // reset the original phoneme table delete progress; + LoadVoiceVariant(save_voice_name,0); } #define N_ENVELOPES 30 -#define ENV_LEN 128 int n_envelopes = 0; char envelope_paths[N_ENVELOPES][80]; unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 143d40ba..5f8777be 100755 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -78,12 +78,11 @@ static wavegen_peaks_t peaks[N_PEAKS]; static int peak_harmonic[N_PEAKS]; static int peak_height[N_PEAKS]; -#define N_ECHO_BUF 5500 // max of 250mS at 22050 Hz -static int echo_head; -static int echo_tail; +int echo_head; +int echo_tail; +int echo_amp = 0; +short echo_buf[N_ECHO_BUF]; static int echo_length = 0; // period (in sample\) to ensure completion of echo at the end of speech, set in WavegenSetEcho() -static int echo_amp = 0; -static short echo_buf[N_ECHO_BUF]; static int voicing; static RESONATOR rbreath[N_PEAKS]; @@ -134,7 +133,7 @@ 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,0}; +int embedded_default[N_EMBEDDED_VALUES] = {0,50,175,100,50, 0,0, 0,175,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 @@ -149,36 +148,8 @@ static PortAudioStream *pa_stream=NULL; static PaStream *pa_stream=NULL; #endif -/* default pitch envelope, a steady fall */ -#define ENV_LEN 128 -/* -unsigned char Pitch_env0[ENV_LEN] = { - 255,253,251,249,247,245,243,241,239,237,235,233,231,229,227,225, - 223,221,219,217,215,213,211,209,207,205,203,201,199,197,195,193, - 191,189,187,185,183,181,179,177,175,173,171,169,167,165,163,161, - 159,157,155,153,151,149,147,145,143,141,139,137,135,133,131,129, - 127,125,123,121,119,117,115,113,111,109,107,105,103,101, 99, 97, - 95, 93, 91, 89, 87, 85, 83, 81, 79, 77, 75, 73, 71, 69, 67, 65, - 63, 61, 59, 57, 55, 53, 51, 49, 47, 45, 43, 41, 39, 37, 35, 33, - 31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1 -}; -*/ - -/* -unsigned char Pitch_long[ENV_LEN] = { - 254,249,250,251,252,253,254,254, 255,255,255,255,254,254,253,252, - 251,250,249,247,244,242,238,234, 230,225,221,217,213,209,206,203, - 199,195,191,187,183,179,175,172, 168,165,162,159,156,153,150,148, - 145,143,140,138,136,134,132,130, 128,126,123,120,117,114,111,107, - 104,100,96,91, 86,82,77,73, 70,66,63,60, 58,55,53,51, - 49,47,46,45, 43,42,40,38, 36,34,31,28, 26,24,22,20, - 18,16,14,12, 11,10,9,8, 8,8,8,8, 9,8,8,8, - 8,8,7,7, 6,6,6,5, 4,4,3,3, 2,1,1,0 -}; -*/ - // 1st index=roughness // 2nd index=modulation_type // value: bits 0-3 amplitude (16ths), bits 4-7 every n cycles @@ -1412,11 +1383,12 @@ static int PlaySilence(int length, int resume) static int n_samples; int value=0; - if(length == 0) - return(0); - nsamples = 0; samplecount = 0; + wavephase = 0x7fffffff; + + if(length == 0) + return(0); if(resume==0) n_samples = length;