From 62687ad0a3782211f62cc9e6aae001dc97e647c8 Mon Sep 17 00:00:00 2001 From: jonsd Date: Tue, 26 Mar 2013 01:07:27 +0000 Subject: [PATCH 01/10] git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@333 d46cf337-b52f-0410-862d-fd96e6ae7743 --- phsource/ph_bengali | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phsource/ph_bengali b/phsource/ph_bengali index 17933f2f..7b93cc90 100755 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -8,7 +8,7 @@ phoneme V // inherent vowel, can be [O] or [o] vowel flag1 starttype #o endtype #o length 200 - IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isNotVowel) THEN + IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isVowel) THEN ChangePhoneme(NULL) ENDIF From 473e9abc15cf681ff0a29ca7bfbb4c0ed557ba41 Mon Sep 17 00:00:00 2001 From: jonsd Date: Wed, 27 Mar 2013 00:16:39 +0000 Subject: [PATCH 02/10] [1.47.03d] Lang=ml, change aspirated voiced consonants. Lang=ko, define temporary replacements for undefined consonant phonemes. Lang=bn, fix numbers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@334 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/bn_list | 123 ++++-- dictsource/bn_rules | 8 +- dictsource/da_rules | 793 ++++++++++++++++++++++++--------------- dictsource/dict_phonemes | 49 ++- dictsource/en_list | 1 + dictsource/en_rules | 142 +++---- dictsource/ko_list | 6 +- dictsource/ko_rules | 6 +- dictsource/pt_list | 2 + dictsource/pt_rules | 12 +- dictsource/te_list | 26 +- dictsource/te_rules | 10 +- phsource/compile_report | 43 ++- phsource/d/xd | Bin 3172 -> 3172 bytes phsource/ph_bengali | 2 +- phsource/ph_danish | 343 +++++++++-------- phsource/ph_hindi | 2 +- phsource/ph_korean | 20 + phsource/ph_malayalam | 120 +++++- phsource/phonemes | 6 +- phsource/voc/murmur1 | Bin 0 -> 5277 bytes src/phonemelist.cpp | 2 +- src/synthdata.cpp | 2 +- src/synthesize.cpp | 20 +- src/tr_languages.cpp | 2 +- src/voices.cpp | 2 +- 26 files changed, 1102 insertions(+), 640 deletions(-) create mode 100755 phsource/voc/murmur1 diff --git a/dictsource/bn_list b/dictsource/bn_list index c7c52e38..0e4e124f 100755 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -2,7 +2,7 @@ // This file is UTF8 encoded // Numbers - devanagari numbers are changed to latin characters before translation +// Bengali numbers are changed to latin characters before translation _0 S'unjO _1 '&k _2 duj @@ -14,11 +14,16 @@ _7 S'at _8 'at.# _9 n'Oj +_2a d'u // with hundreds etc. +_6a tS#'a +_9a n'O + + _10 d'OS _11 '&garo _12 b'arO _13 t'erO -_14 tS'owddO +_14 tS'oddO _15 p'OnerO _16 S'olO _17 S'OterO @@ -26,57 +31,94 @@ _18 'at.#arO _19 'uniS _20 k'uri // or b'iS ?? -_21 'ekuS +_21 ek'uS _22 b'ajS _23 t'ejS _24 tS'ObbiS _25 p'O~tSiS -_26 tSh'ObbiS -_27 S'ataS +_26 tSh'abbiS +_27 Sat'aS _28 'at.#aS -_29 'untriS +_29 unOtr'iS -_30 t'iriS -_31 'ektriS -_32 b'OtriS -_33 t'etriS -_34 tSowtriS -_35 pO~jtriS -_36 tS#'OtriS -_37 S'a~itriS -_38 'at.riS -_39 'unOtSOlliS +_30 tr'iS +_31 ekOtr'iS +_32 bOtr'iS +_33 tetr'iS +_34 tSowtr'iS +_35 pO~jtr'iS +_36 tS#'Otr'iS +_37 Sa~itr'iS +_38 at.tr'iS +_39 'unOtSOll'iS -_40 tS'OlliS -_41 'ektSOlliS -_42 b'ialliS -_43 t'etalliS -_44 tS'oalliS -_45 p'O~jtalliS -_46 tS'etSOlliS -_47 S'atSOllis -_48 'atSOlliS -_49 'unOpO~tSaS +_40 tSOll'iS +_41 ektSOll'iS +_42 biall'iS +_43 tetall'iS +_44 tSoall'iS +_45 pO~jtall'iS +_46 tSetSOll'iS +_47 SatSOll'is +_48 atSOll'iS +_49 unOpO~tSaS + +_50 pO~tS'aS +_51 &kann'o +_52 bajann'o +_53 tepann'o +_54 tSujann'o +_55 pontSann'o +_56 tS#apann'o +_57 Satann'o +_58 at.ann'o +_59 unOS'at. -// numbers above 50 need to be corrected -_50 p'O~tSaS -_5X p'O~tSaS -_59 'unOsat. _60 s'at. -_6X s'at. -_69 'unOS'OttOr +_61 ekSOt.t.'i +_62 baSOt.t.'i +_63 teSOt.t.'i +_64 tSowSOt.t.'i +_65 pojSOt.t.'i +_66 SeSOt.t.'i +_67 SatSOt.t.'i +_68 at.SOt.t.'i +_6X sat.t.'i +_69 unOSOtt'ur -_70 S'OttOr -_7X S'OttOr -_79 'unOaSi +_70 SOtt'Or +_71 ekatt'Or +_72 bahatt'Or +_73 tehatt'Or +_74 tSuhatt'Or +_75 pOtSatt'Or +_76 tS#ijatt'Or +_77 Satatt'Or +_78 at.att'Or +_79 unOaS'i -_80 'aSi -_8X 'aSi -_89 'unOnObbOj +_80 aS'i +_81 &kaS'i +_82 beraS'i +_83 teraS'i +_84 tSuraS'i +_85 po~tSaS'i +_86 tS#ijaS'i +_87 SataS'i +_88 at.aS'i +_89 ,unOnObb'oj -_90 n'ObbOj -_9X n'ObbOj +_90 nObb'oj +_91 &kanObb'oj +_92 beranObb'oj +_93 teranObb'oj +_94 tSuranObb'oj +_95 pOtSanObb'oj +_96 tS#ijanObb'oj +_97 SatanObb'oj +_98 at.anObb'oj +_99 niranObb'oj _0C S'o _0M1 h'ajar @@ -264,3 +306,4 @@ _dpt dOsomik // Exceptions +এত &to diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 64fb2305..4052adb3 100755 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -28,6 +28,7 @@ .group অ অ V অঁ O~ + অ্যা & // V,ja in [æmiba] .group আ @@ -74,6 +75,8 @@ .group এ এ e এঁ e~ + + এ্যা & // e,ja [ækademi] .group ও @@ -288,7 +291,10 @@ য় jV // nukta য় (B j - + ্) য (C & // ব্যস্ত [bæsto] + ্) যা & // ব্যাকরণ [bækɔron] + + .group র র rV র (B r diff --git a/dictsource/da_rules b/dictsource/da_rules index 71217dc1..ce8518a1 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -37,7 +37,7 @@ .group a a & // changed from [a?] - h) al (fback a // + h) al (fback A aaron ArVn // name zol) a '& // name m) ary &ri // name @@ -54,13 +54,13 @@ a (ld+ ?& // kalde, falde - TEST ld = double consonant? C) a (L06% ?A // tapper, tappen, lapper, lappen v) a (cc ?A // vaccinere - a (ffald+ A // - s) a (bbat ?& // + a (ffald+ A + s) a (bbat ?& grim) a (sse '?& // stressed _c) annes &:n: // French city a (cc+ A // accent - b) accarat AkAr'A // - st) a (ccato & // + b) accarat AkAr'A + st) a (ccato & // Short followed by 2 consonants = 1 phoneme: lg=>[l], ds=>[s] a (lg ?& // valg, valget, alge - TEST @@ -75,6 +75,19 @@ pl) a (ner ?& // planer pl) a (nen ?& // planen +// long & before de + a (de &: // gade + a (den & //gaden + +// Have = "oceans" vs. the verb have + _vi_h) ave & // hvad skal vi have? + _du_h) ave & // hvad skal du have? + _de_h) ave & // hvad skal de have? + _i_h) ave & // hvad skal I have? + vil_h) ave & + må_h) ave & +kunne_h) ave & // kunne have sagt +burde_h) ave & // burde have sagt t) abernak abVn'ak // tabernakel, tabernakler mil) a (no '&: // stressed @@ -83,7 +96,7 @@ past) a & // tandpastareklame r) a (CK+ A // drab, Rasmus, rask - r) a (CA+ A // drabelig, brase + r) a (CA+ A: // drabelig, brase, gratis r) a (len+ ?A // gralen TEST r) a (le+ A // morale, prale r) a (dio++ A: // shortend too much by ph_danish @@ -103,8 +116,8 @@ arapahoe &r'&p&hOw // // 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 + &gr) af ($p_alt '?Af // biograf + &gr) af (i$p_alt ?Af' // biografi // amm => [A] a (mm++ ?A // kammerat, amme @@ -126,6 +139,7 @@ // general rule: [A] after r r) a (_ A // jura, zebra tr) a A // kontraordre + tr) ai (ler Ej // trailer r) aer (_ AV // fakturaer, zebraer fr) a A // bagfra fr) aiche 'ES // cremefraiche @@ -137,6 +151,7 @@ r) a (n A // ran, ransage _r) anda (l &ndO // Randall - name tr) a (C A // straf, traf, trav + r) a (nd+ ?A // strand - short A str) a A // ekstra r) a (L06 A // trappe r) a (CL04 A // generation @@ -263,6 +278,7 @@ narkotik) a & // narkotikaproblemer // general rule: [&:] after consonant before "ne" C) a (ne &: // "mane" opposed to "mande" + C) a (nen & // banen - too long with &: + n@-n form) a (ne & // formane C) a (ner & // glaner r) a (ne A // krigsveteraner @@ -270,7 +286,7 @@ narkotik) a & // narkotikaproblemer // general rule: [A] after k before p L10) a (p+ A // kaptajn, handicap L10) a (pp+ ?A // kappe - L10) a (pL04+ & // kapitel + L10) a (pL04+ ?& // kapitel, kapital dac) a (po '& // stressed // general rule: [&] before a/e @@ -317,6 +333,7 @@ gammeld) a (gs & // // general rule: [Au] after m/n before g (au) L09) ag (+ Au // nagle m) agn (on &nj // Cro-Magnon + arm) agh 'A: // name n) agasaki ag&s'aki // m) agne (t Aun'e // magnet m) ag (i+ &g // magi @@ -372,7 +389,11 @@ gammeld) a (gs & // // general rule: [A] before r ar (++ A: // skar, barsk + ar (k+ A: // marken + ar (A+ AR // tarif TEST + _) ar (i+ A: // arier, arisk are (++ A:A // skare, sparepenge + aret (+ A:A@-D // advaret ar (ne+ A // barnet ar (e+ AR // reparere, parere TEST f) are (++ A:A // fare @@ -380,6 +401,7 @@ gammeld) a (gs & // f) arer (++ A:V // farer, søfarer f) arere (++ A:VR@- // søfareren ar (a+ AR // arabisk, ara + m) ar (in AR // marina ar (_++ Ar // sårbar C) ara (k AA // karakteristika a (rr++ ?A // narren - short A @@ -407,7 +429,9 @@ _longob) a (rd 'A // stressed // general rule: [a] before velars a (L01++ A // planke, slanke, anke, flanke, gang, hank, aksel, maj, blanko + a (L01%++ ?A // bakken a (x A // Axel + _ig) a (ng@ 'A // igangværende es) aj (as 'aI // name pizz) a & // pizzakæde b) a (jonet & // @@ -455,7 +479,8 @@ michel) angelo 'andZ3lo // name a (ngav++ & // angav a (ngå++ & // b) a (gage++ & // bagage - s) a (g+ & // ankesag, sag, sago, heksagon + s) a (g+ ?& // ankesag, sag, heksagon + s) a (go & // General rule: sag => sAu s) ag (C+ Au // sagfører @@ -510,7 +535,7 @@ snakkes) ag (lig '& // a (k%o+ ?& // akkord, akkompagnerer a (k%u+ ?A // akkurat a (kvA+ & // akvarium - a (ppetit ?A // appetit + appe (tit+ Ab@- // appetit a (bnorm A // abdo (m Abd'o // abdomen - stressed _) a (bC A // Abdul, abdicere @@ -519,7 +544,7 @@ snakkes) ag (lig '& // a (bb & // abbedi a (bra & // Abraham a (bru & // abrupt - h) a (cienda _^_es // + h) a (cienda++ _^_es // l) a (kr %& // lakrids e) a & // Korea, azalea b) ayer aIV // bayersk, Bayern @@ -648,7 +673,7 @@ ginger_) ale Ejl // _indi) a (na '& // stressed - U.S. state // stressed a in final -al in $alt words in da_list - &) al ($p_alt+ ''&l // fatal, monumental, krystalklar, regional + &) al (_$p_alt+ '&l // fatal, monumental, krystalklar, regional &) al (ist$p_alt+ &l // specialist &) al (e_$p_alt+ ''&l // anale &r) al (e_$p_alt+ 'Al // liberale, morale @@ -823,7 +848,7 @@ kanonl) avet &vEd // exception - French origin g) av (tyv a?u // b) a (jer A // b) aby (+ Ejbi // baby - _) a (nder A // anderledes + _) a (nderled+ A // anderledes _) anderson &ndVsVn // name _) angie &ndZi // name _) a (ndet & // andet @@ -846,6 +871,7 @@ interf) a (ce Ei // interface a (fC+ A // [Af] = [au] and exceptions in the f group st) af (f & // staffet, staffeli k) aff (e+ ?Af // skaffe, kaffe + k) a (f A // skaf vodk) a & // vodkaflaske a (ffære+ & // st) a (ffage & // @@ -890,7 +916,7 @@ guatem) a (l '& _) a (ldrig+ A // aldrig a (lde & // alder aldetha &ld'iT& // name - skr) a (l A // skrald + skr) a (l ?A // skrald rappenskr) a (lde 'A // stressed over) a (lt '& // stressed a in 'overalt' _eks) a (m+ '& // stressed - eksamen, eksaminere @@ -907,6 +933,7 @@ parmes) a (n '& // stressed j) a (men & // exception jamen = ja men ch) a (n A // chance v) a (j A // svajende, vaje + // general rule: [&] after p/b/d before n L06) a (n & // tand, tante, band, spand, spade L06) a (nd ?& // bande @@ -921,7 +948,7 @@ kontrab) ande '&nd@- // L06) a (nk A // bank sp) a (nking &: // an (cien AN - a (ndre A // andre + a (ndre+ A // andre t) a (nd & // tandrensning _) andrea &ndr'e& // name andrew &ndru // name @@ -953,9 +980,10 @@ astron) au (t 'Aw // stressed firm) a & // firmaudfordring m) aureen OR'i:n // name _dinos) aur 'A?uV // stressed -_dinos) aurer 'W?urV // stressed +_dinos) aurer 'A?urV // stressed ch) au (vin o // chauvinist _p) au (l O // name + p) au (lus Aw // name _biss) au 'A:w // Guinea-Bissau s) au (ce O: // sauce, bearnaisesauce ch) au (f o @@ -1113,7 +1141,6 @@ parkeringsv) ag (t Ag // æresv) ag (t Ag // butiksv) ag (t Ag // hospitalsv) ag (t Ag // -// m) ag (t Ag // verdensmagt sl) ag (smål A?u // slagsmål sl) ag (tilf A?u // slagtilfælde sl) ag (side A?u // slagside @@ -1122,8 +1149,11 @@ hospitalsv) ag (t Ag // sp) ag (num A?u // r) ag (e+ A?u // drage, rage C) age (++ &:j@- // bage, kage - C) age (nK++ &j@- // sagen, kagen + fl) age (ne ?&j@- // flagene + C) age (nK++ ?&j@- // sagen, kagen _t) age (_+ &j@- // tage + _t) age (_sig & + du_t) age (_ & cart) age (na &g'e: // name b) ag (efter++ &j // age (lig '&j@- // uindtagelig, behagelig - stressed @@ -1131,7 +1161,6 @@ hospitalsv) ag (t Ag // arm) agedd &g'Ed // Harmagedon mut) age (n &g'e // stressed affut) age &:S@- // missilaffutage -// bag) age &:S3 // håndbagage _b) ag (el+ Ejg // age (rn &jV // "acorn" _) age (_ &j@- // "age med heste" @@ -1158,7 +1187,7 @@ rædselssl) age (n &j@- // rædselsslagent suffr) age (tte AS'E // suffragette - stressed r) ager (+++ AwV // rager tr) agedie Ag'eDj@- // - _t) ager (_ Ar // tager [t'Ar] + _t) ager (_+ Ar // tager [t'Ar] iagtt) ager (_ &jV // iagttager - noun t) ag (_ &j // tag t) ag (C Aw // tagvindue @@ -1384,6 +1413,7 @@ cadilla) c k // Cadilacen frederi) c (ia =ks // _pa) c (ino tS' // name scor) c (ese tS' // name + c (embalo tS // music instrument ch (loe k // Chloe c (k c (ølibat s // @@ -1494,30 +1524,36 @@ north_) carolina k&rol'aIn& // d d A) de (_ D@-_| // hade, lade - ski) de D@- // skidefuld - ba) de D@- // badeforhæng - ga) de D@- // gadebetjent - ga) der DV // - væ) dde (+ D@- // væddeløb + a) de (@ D@- // hadefuld + a) der (@ DV // skaderne + ski) de (@ D@- // skidefuld + ski) der DV // skideren + ski) der (ik DVR // skiderik + ba) de (@ D@- // badeforhæng + ga) de (@ D@- // gadebetjent + fe) de (@ D@- // fedekalv + ga) der DV + væ) dde (@+ D@- // væddeløb + re) de (@ D@- // redegørelse + ge) de (@ D@- // gedemarked orki) de d'e // stressed d (i d // redigere, hindi ly) d D // lydisolering - drome) d (ar d // + drome) d (ar d floy) d d // name - mel) d (ing // + mel) d (ing // silent d A) d (ig D // stadig - vene) d (ig d // - d (øm d // idømme - i) d (ol d // + vene) d (ig d + d (øm+ d // idømme + i) d (ol d u) d (i D // hou) di (ni d'i // name _pro) du (kt d'O // produkt _pro) du (ktiv du // produktiv - bo) d (ega d // + bo) d (ega d d (us d // fidus d (ok d // paradoks, tørdok - a) de (Cr D@- // badedragt - not tested - y) de D@- // brydehold + y) de (@ D@- // brydehold y) der DV // yderligere gry) de (ret D@- // gryderet sy) de (ng DE // sydengland @@ -1527,11 +1563,11 @@ north_) carolina k&rol'aIn& // y) der (_ DV // betyder @) d (elt d // udelt, tildelt æ) de (l+ D@- // ædelt - mo) d (em d // + mo) d (em d d (onna d // madonna - dil) d (o d // -tourne) dos d'o // - re) dund (ant dOnd // + dil) d (o d +tourne) dos d'o // stressed + re) dund (ant dOnd _) dorset dO:sEt // name _) drysdale dRaIsdEjl // name dreyfus drEf'?ys // name @@ -1547,7 +1583,7 @@ tourne) dos d'o // d (om d // PN trældom d (ronning d // Snedronningen d (ufte d // lavendelduftende - el) dorado dor'Ado // + el) dorado dor'Ado // stressed vel) d (rej d // veldrejede _hil) d (a d // name _mil) dred drEd // name @@ -1557,11 +1593,11 @@ tourne) dos d'o // formal) d (e d // formaldehyd d (åse d // øldåse d (rys d // kaneldrys - sol) d (æk d // - bil) d (æk d // -radial) d (æk d // - d (emens d // senilodemens -turtel) d (ue d // + sol) d (æk d + bil) d (æk d +radial) d (æk d + d (emens d // senildemens +turtel) d (ue d l) d (ug d // meldug d (ør d // bildør gul) d // guldøreringe @@ -1570,7 +1606,7 @@ turtel) d (ue d // morta) de (l d'E // stressed ba) d (e D // badelegetøj d (rev d // soldrevne - sal) d (o d // + sal) d (o d C) d (etA d // metaldetektor ol) d (ing d // holdingfirma, olding d (ag d // gammeldags @@ -1625,6 +1661,7 @@ stikor) d // exception - silent d in 'stikord' æ) d (ru d // pe) d (ro d // name e) d (gar d // name + be) d (ford d // name bu) ddh d // buddhist y) ds s // kryds pi) ds s // spids @@ -1635,6 +1672,7 @@ stikor) d // exception - silent d in 'stikord' A) ds (æt Ds // hidsætte _u) d (++ D // udse A) ds (el s // fødsel, brændsel, bidsel + A) ds (le s // gidsler, fødsler ræ) d (sel D // ned) d (s D // nedsmelte ø) d (s++ D // dødscelle, nødspor, ødsel, nødstilfælde @@ -1666,12 +1704,14 @@ stikor) d // exception - silent d in 'stikord' A) d (A D ste) d D // sted aci) d (ose d // + fi) d (us d ø) d (em_ d // ødem ø) d (emer_ d // ødemer ø) d (emet_ d // ødemet A) dd D // skuddene _i) d (e d // _i) d (é d // + ra) di (o dj evi) d (en d // evident bi) d (e D // bider ri) de D@- // rideskole @@ -1679,6 +1719,7 @@ stikor) d // exception - silent d in 'stikord' si) de D@- // sidemand vi) d (er D // videre ti) d (e D // tider + ti) de (@ D@- // tidevand salva) dor d'O: // El Salvador via) du (kt d'O // bermu) d (a d // name @@ -1788,15 +1829,26 @@ stikor) d // exception - silent d in 'stikord' // short (glottal) e before double consonant e (C% ?e // leddet + e (ll+ ?E // heller + int) e (lligent e l) e (L07% ?E // lettede + n) e (L07% ?E // nettet e (nn ?E // denne, henne e (L02%+ ?E // modemmet, slemme - C) e (rr ?E // herre + C) erre ?&3-V // herre C) e (ll% ?E // celle e (ks ?E // heks - ek (t ?Eg // kontakt - _konf) ek (t '?Eg // stressed - perf) ek (t '?Eg // stressed + e (x ?E // sex + ek (t_+ '?Eg // defekt, arkitekt - stressed + ek (ter_+ '?Eg // defekter + ek (ten_+ '?Eg // defekten + ek (tens_+ '?Eg // defektens + r) ek (t+ '?&#g // korrekt + l) e (fl ?E // lefle + p) e (ng ?E // penge + +// Short e - various words + sk) e (d ?e // besked // Short e followed by st, st, sk - made short in ph_danish C) e (L08 E // fest, fester, hest, heste @@ -1805,10 +1857,12 @@ stikor) d // exception - silent d in 'stikord' m) e (ster E // politimester nærm) e @- // nærmeste ån) e (C @- // månestråle - rav) e @- // travesko - skad) e @- // skadestue + rav) e (@ @- // travesko + skad) e (@ @- // skadestue hyld) e (s @- // hyldest - arv) e @- // farvestof + arv) e (@ @- // farvestof + ugl) e (@ @- // fugleskræmsel + ønn) e (st @- // kønneste // exceptions cyk) e (lløb @- @@ -1816,29 +1870,39 @@ stikor) d // exception - silent d in 'stikord' menn) e @- // menneske æl) e (@ @- // sjælefred ill) e (@ @- // lillebror + mill) enium '?EniOm + usl) e (@ @- // puslespil + ill) e (gal e r) e (v E // brev år) e (@+ @- // årevis Ass) e (@ @- // klasseværelse r) e (Ce+ E // breve + fr) e (d+ ?E + fr) e (de_ E str) ee (t i: // street _d) e (m_ E f) e (m E // femten e (dith e: // name + t) eur 'W:r // agent provocateur // E after r r) e E // reaktion - VERY BROAD @r) es (_ Vs // koncentreres TEST // E before n - VERY BROAD - e (nK ?E // send, end, men + e (nK E // end, men - ?E sounds too short in words like "endelig" + C) e (nd ?E // kendelse, send e (ns e // ensrette _) e (n_ e b) e (n e + _st) e (n_ e + st) e (nrig e ov) e (n @- // ovenpå os) e (n @- // rosenknop sjæld) e (n @- // sjældent _) e (ne e // ene, eneste - e (net_ @- // bækkenet + ækk) e (net_ @- // bækkenet + røntg) e (n @- // røntgenfotografere gen) e (ral @- _s) e (n_ e // sen _s) e (nt_ e // sent @@ -1868,8 +1932,6 @@ stikor) d // exception - silent d in 'stikord' dobb) e (l // silent e reb) e (kka 'E // name - l) e (fl ?E // lefle - p) e (ng ?E // penge e (fter E // efter, efterse leg) e @- // legeværelse leg) e (nd E // legende (myth, not playing) @@ -1881,8 +1943,9 @@ _emfys) e (m 'e // stressed kn) e (b e kn) eb (re Eu // "knebre med næbbet" C) e (L02a e // tema + jert) e (@ @- // hjertebarn ød) e (+ @- // ødemark - herr) e @- // herremand +// herr) e @- // herremand bed) e @- // bedemand _still) e (ben ='e fr) e (m &# // fremad @@ -1891,8 +1954,8 @@ _still) e (ben ='e ordr) e @- // ordrebog r) e (L02s &# // revse, krebs - TEST br) ev (+ Ew // brevstemt - br) eve E:?u@- // breve - Cr) evet E:?u@-D_! // brevet, skrevet + br) eve Ev@- // breve + Cr) evet ?Ev@-D_! // brevet, skrevet L03) e (L02i e // akademiker åd) e (++ @- // gådefuld åd) er (++ V // gåder @@ -1958,6 +2021,8 @@ banglad) esh 'ES // stressed udsl) e (t++ E // familieudslettelse, udslet (not [uDsl@D]) varsl) et @-D // ål) e (C @- // strålekrans + el) e (@ @- // seletøj + l) e (der e // apacheleder // general rule: E before l e (lC E // heldig, held og lykke, helvede @@ -1965,6 +2030,10 @@ banglad) esh 'ES // stressed // general rule: E before m e (m E // slem, slemt, hjem - short in ph_danish genn) e (m @- // igennem + k) e (mo e: // kemo, kemoterapi + nal) e (@ @- // Personalemøde + old) e (@ @- // oldemor + d) e (ment e // E before r + consonant e (rCe E // hjerte, smerte TEST @@ -1974,9 +2043,11 @@ banglad) esh 'ES // stressed // compound with eiding -er + another word @C) er (C@ V // hypermoderne - TEST hj) er (t+ Er // hjerte + b) er (l+++ Er // Berlin // general rule: [E] after r before consonant r) e (d E // rede, fred + r) e (ds ?E // tilfreds ds => s r) e (C% ?E // short e before double consonant - redde adr) e (sse ?&# // afsenderadresse L02r) e (C% ?&# // labial + r - fremmed @@ -2007,6 +2078,7 @@ himstr) eg (ims Vg // avoid aI r) e (ndt a // røvrendt r) e (nte &# // r) e (st &# // restlager + r) estante Est'A:Nd@- // poste restente r) e (stau e // restaurere klatr) e V // r) e (vn &# // revne @@ -2038,7 +2110,6 @@ himstr) eg (ims Vg // avoid aI // general rule: [e] after r before m + front vowel r) e (mL04 e // remoulade, remisse - ældr) e (+ @- // forældremyndighed fr) e (mov &# // fremover // general rule: [&#] after r before ng @@ -2073,7 +2144,6 @@ kriminalr) e (t &# // _tr) e (t e // tretal kr) e (ta e // Kreta fr) e (l &# // frelse - yr) e (@+ @- // myretue, dyrehold r) e (nse &# // nyrenset r) e (h @- // general rule: [@-] after r before h - fårehyrde, varehus _tr) e (+ e // treholdsskift @@ -2096,7 +2166,7 @@ stikir) e (nddreng '&# // arkim) e (des 'e // name mus) e (um 'E // stressed mus) e (et 'E // stressed - L09) e (t e // metal + L09) e (ta e // metal n) etop Ed\,Vb // heavy_m) etal Et@-l // L09) e (l E // mellem @@ -2127,10 +2197,10 @@ heavy_m) etal Et@-l // l) eg (iti eg // legitim l) eg (an++ @-g // elegant tel) e (x E // - afl) eve (r @-ve // aflevere + afl) eve (r @-ve // aflevere bri) e (f // briefing - silent e hav) e @- // havesyg - e (ment @- // supplement, møblement + @) e (ment @- // supplement, møblement hvab) e (har_ @- // hvabehar v) ek (s Eg // veksle r) eau o // bureaukratiske @@ -2182,6 +2252,7 @@ papmach) e e // e (mball A // emballere, emballage dir) e (kt &# // direkte, direktør n) eu Wu // neuron, neutral + vidn) e @- // vidneudsagn n) e (unge @- // ørneunge ed) e (- @- g) e (js aI @@ -2212,7 +2283,7 @@ provenc) e // Provence - skip the e æbl) e (grød @- // æblegrød bobl) e @- // boblegummi - nothing to do with "bleg" _) egen (@ ej@-n // egenrådig, egennyttig, egentlig - eg (enkapital+ Aj + eg (enkapital+ Aj eg (enbeskyd+ aI // egenbeskydning _r) e (sten_ &# // resten nyr) e (+ V // nyresten @@ -2258,11 +2329,6 @@ _deres_ball) e (t 'E // _hans_ball) e (t 'E // _hendes_ball) e (t 'E // _r) e (ndyr+ e // rendyrke - øjest) e (n+ e // øjesten -skorst) e (n e // - murst) e (n e // -bautast) e (n // -meterst) e (n ?e // kilometersten h) e (n++ ?E // hen, hente, derhen h) e (nde+ ?e // carst) e (n @- @@ -2303,22 +2369,26 @@ stoneh) enge EndZ // r) e (re_ E // operere kk) e (@ @- // vækkeur TEST studi) e (@ @- // studiegruppe + apach) e (@ @- // apacheleder studi) er V // Catt) e (@ @- // skatteår - ytt) e (@ @- // skytteforbundet + ell) e @- // cellevæg + ytt) e (@ @- // skytteforbundet klog) e @- // klogeste vi) e (@ @- // vievand + alv) e @- // kalvekød næs) e (@ @- // næseblod dans) e (@ @- // dansebal ås) e @- // dåse, gåsehud, Åse ån) e (@ @- // låneansøgning - ev) e (@ @- // levevis + _lev) e (@++ @- // levevis arn) e (@ @- // barnebarn kam) e (ra @- // + ørv) e (@ @- // tørvetriller ull) e (@ @- // rullebræt od) e (@ @- // modetøj hest) e (@ @- // hestehår - nt) e (@ @- // plantesaft + ant) e (@ @- // plantesaft ørn) e (@ @- // børnebog mm) e (@ @- // dømmekraft ab) e (@ @- // abekat @@ -2326,23 +2396,31 @@ stoneh) enge EndZ // aff) e (@ @- // straffeattest Alj) e (@ @- // patruljevogn Avn) e (@ @- // navneordbog + lej) e (@ @- // plejehjem + ild) e (@ @- // kildevand yv) e (@ @- // flyveplads - App) e (@ @- // tæppeforretning + ask) e @- // vaskeklud + høns) e @- // hønsehus + æpp) e (@ @- // tæppeforretning bib) e (l @- // Bibelen + vic) e (@ @- // vicedirektør @iker) e (_N V // fabrikere @iker) et (_ VD // fabrikeret groupi) e // silent e _jani) e // name - silent e _arti) e // name - silent e ud) e (@+ @- // studehandel, brudepige + e (pisode++ e // skudepisode øj) e (@ @- // øjeblik ukk) e @ // smukkeste ol) e @- // tolerant TEST - ul) e (@ @- // juleaften, gulerod - is) e (@ @- // spisetid, fisefornem + ul) e (@ @-_! // juleaften, gulerod + ul) e (mp E // forulempe + is) e (@ @ // spisetid, fisefornem, disede + s) e (rie e // miniserie im) e (@ @- // timevis åb) e (n @- // åbenbart - Arr) e (@ @- // tørresnor - TEST + ørr) e (@ @- // tørresnor - TEST konsul) e (nt E // sikkerhedskonsulent afs) e (_ e // afse afs) e (t_+ e // afset @@ -2447,14 +2525,16 @@ _sociol) eg (t 'E _acc) e (pt 'E // 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 + _arr) e (st '&# + _asb) e (st 'E + _att) e (st 'E + @att) e (st E // fødselsattesten +_manif) e (st 'E + _mol) e (st 'E + mol) e (stere @- + _prot) e (st 'E _prot) e (ster @- // protesterede - _reg) e (st 'e + _reg) e (st 'E // stressed e in some words with final -ente/-ende _testam) e (nte 'e @@ -2492,6 +2572,7 @@ _sakram) e (nte 'e eg (angs @-g // førstegangsforbrydere. best) eg (_ 'e // besteg best) eg (et_ 'e // besteget + st) eg (et e overst) eg ej // st) eg (å @-g // præstegård eg (affel @-g // fiskegaffel @@ -2503,7 +2584,7 @@ overst) eg ej // k) eg (le Aj // keglebane h) eg (le Aj // gennemhegle br) ea (k Ej // breakdance - res) e (rve 'e // reserve - stressed + res) e (rve '& // reserve - stressed res) erver (_en Erv'er // reserver en plads m) eg (a eg // mega, omega _) eget (_ Aj@-D // eget @@ -2527,7 +2608,7 @@ underl) eg ej // underlegen _) ege (løv e:j@- // _) ege (blad e:j@- // L06) eg (e aI // p) changed to L06 to include b - l) ege (me Ej-@- // fornedrelseslegeme + l) ege (me Ej@- // fornedrelseslegeme l) eg (e+ aI // PM julelege, blege coll) ege idZ // l) eg (ere i-g // priviligeret @@ -2551,11 +2632,13 @@ selskabsl) eg aI // _tr) e (d E // tredje ej (+++ Aj // nej, arbejde eje (n++ ?Aj@- // ejendom - e (job+ @- // ønskejob - e (jæger+ @- // skalpejæger + e (job+ @-_! // ønskejob + e (jord++ @-_! // apachejord + e (jæger++ @-_! // skalpejæger dr) ej (+ aI // fordrejet - ykk) e (C @- // lykkejæger - skørt) e (C @- // skørtejæger +// ykk) e (@ @- // lykkejæger +// skørt) e (@ @- // skørtejæger +// skørt) er (_ V hygi) ej (ne 'aI // stressed ej (aku ej // ejakulere gal) ej 'aI // stressed @@ -2734,7 +2817,9 @@ at_form) ene 'en@- // t) el (t_ el // ilttelt jub) el @-l // jubelidiot - p) el (s El // rævepels + rævep) el (s+ ?El // rævepels +skindp) el (s+ ?El // skindpelsen + // exceptions to the -el rule // final -el in da_list - stressed e &) el ($p_alt+++ ''El // model @@ -2772,10 +2857,10 @@ krimin) el El // småkriminel C) el (ig+ @-l // kedelig, drabelig, fredelig r) el (igi+ El // - _) el (C El // elkedel - _) ell El // eller + _) el (C ?El // elkedel + _) ell ?El // eller, Ellen muskat) el ''El // - el (sk+ ?El // naturelsker + @) el (ske+ ?El // naturelsker intellektu) el El // // _pan) el 'el // pan) el el // @@ -2818,7 +2903,8 @@ gennemsku) el (ig =el spani) el @-l // cockerspaniel dani) el El // Daniel ford) el el // fordel - h) el (t+ el // tøffelhelt + h) el (t@+ El // tøffelhelt + _h) el (t_ el // problem with helt = hero h) el (st El // allerhelst r) el (at el // relateret public_r) elation il'EjS@-n @@ -2838,7 +2924,7 @@ underst) el (+ El _st) el (_ El ond) el el // milliondel jav) el 'el // stressed e in 'javel' - _v) el El // velkommen + _v) el ?El // velkommen icha) el l // Michael ika) el l // Mikael brøkd) el el @@ -2854,10 +2940,11 @@ underst) el (+ El fid) el 'el ded) el el // tiendedel, niendedel farv) el 'El - s) el (s El // selskab + s) el (ska El // selskab juv) el 'el kam) el 'el - kap) el 'El + kap) el '?El +// kap) ell '?El legemsd) el el løsd) el el _makr) el (+ '&#l @@ -2910,11 +2997,13 @@ verdensd) el el // noun suffix -en (perlen - the pearl), -ens (perlens - the pearl's) // not a suffix any more - too many exceptions &) en (_N @-n // brien + r) en (_ Vn // skideren [ sk'iDV,Vn] TEST + _r) en (_ En d) en (t_ @-n // beredent kier) en (_N @-n // bankieren - avoid the r generated by [V] -// &r) en (_N Vn // frisøren &) ens (_+ @-ns // ungdommens -// &r) ens (_ Vns // frisørens + k) en (en @-n // tallerkenen + // exceptions aft) en @-n // avoid [Au] when aft(en) is translated _ag) en (t 'en // agent @@ -2925,9 +3014,9 @@ verdensd) el el _ad) en (_ 'en // stressed &g) en (st en // genstand &g) en (kend en // genkende - &g) enn (em en // ugennemskuelig +menneskev) en (+ En // menneskeven + &g) enn (em En // ugennemskuelig _ur) en (_ en // uren hud -//kuglep) en En // afløbsr) en (s &#n // ord) en @-n anci) enn EN // anciennitet @@ -2945,116 +3034,117 @@ oliegr) en En susp) en (sion en // suspension retskaff) en @-n sid) en @-n // not a suffix - siden -præsid) en (t en // vicepræsident -skyldsr) en en // uskyldsren +præsid) en (t En // vicepræsident +skyldsr) en En // uskyldsren ædelst) en en // -_præsid) en (t 'en // præsidentfrue - @sv) en (_ en // barndomsven +_præsid) en (t 'En // præsidentfrue + @sv) en (_ En // barndomsven bøssev) en En // pennev) en En // dyrev) en En // metalp) en En // - v) en (sk+ en // venskab - dov) en (++ @n // dovenskab + v) en (sk+ En // venskab + dov) en (++ @-n // dovenskab kob) en en // koben øgleb) en en // nøgleben + kødb) en en // kødben læb) en (++ @-n // overlæben - kæb) en @-n (++ // + kæb) en (++ @-n elfenb) en (+ en // elfenbensbande bomb) en (+ @-n // ribb) en (++ en // ribbenssteg gribb) en (e+ @-n // gribbene // sten = "stone" -gravst) en en // -nyrest) en en // -bautast) en en // - brost) en en // -byggest) en en // -drypst) en en // - dækst) en en // -fedtst) en en // -flintest) en en // -flintst) en en // -galdest) en en // -grundst) en en // - gråst) en en // -hinkest) en en // -hjørnest) en en // - holst) en en // -kalkst) en en // -kampest) en en // -kantst) en en // -kedelst) en en // -kværnst) en en // -kvaderst) en en // - limst) en en // -marmorst) en en // -meteorst) en en // -mindest) en en // -molerst) en en // -munkest) en en // - murst) en en // -møllest) en en // -månest) en en // -pimpst) en en // -prøvest) en en // -rendest) en en // -ranglest) en en // -rhinst) en en // -rokkest) en en // -rullest) en en // -runest) en en // -sandst) en en // -skorst) en en // -slibest) en en // -smutst) en en // -slutst) en en // -smykkest) en en // - småst) en en // -sveskest) en en // - tagst) en en // -tandst) en en // -teglst) en en // -trappest) en en // -trædest) en en // - tufst) en en // -tungst) en en // - vinst) en en // -ædelst) en en // - øjest) en en // +gravst) en ?en +nyrest) en ?en +bautast) en ?en + brost) en ?en +byggest) en ?en +drypst) en ?en + dækst) en ?en +fedtst) en ?en +flintest) en ?en +flintst) en ?en +galdest) en ?en +grundst) en ?en + gråst) en ?en +hinkest) en ?en +hjørnest) en ?en + holst) en ?en +kalkst) en ?en +kampest) en ?en +kantst) en ?en +kedelst) en ?en +kværnst) en ?en +kvaderst) en ?en + limst) en ?en +marmorst) en ?en +meteorst) en ?en +mindest) en ?en +molerst) en ?en +munkest) en ?en + murst) en ?en +møllest) en ?en +månest) en ?en +pimpst) en ?en +prøvest) en ?en +rendest) en ?en +ranglest) en ?en +rhinst) en ?en +meterst) en ?en // kilometersten +rokkest) en ?en +rullest) en ?en +runest) en ?en +sandst) en ?en +skorst) en ?en +slibest) en ?en +smutst) en ?en +slutst) en ?en +smykkest) en ?en + småst) en ?en +sveskest) en ?en + tagst) en ?en +tandst) en ?en +teglst) en ?en +trappest) en ?en +trædest) en ?en + tufst) en ?en +tungst) en ?en + vinst) en ?en +ædelst) en ?en + øjest) en ?en st) en (gulv en // tj) en (st En // fortjenstmedalje m) en (s+ En // menstruation - g) en (st en // genstand - g) en (sk en // genskabe + g) en (st En // genstand + g) en (sk En // genskabe t) en (å @-n // TEST - femtenårig st) en (A en // stenograf - småst) en en // -eksist) en (s 'en // eksistens -_resid) en (s 'en // residens - resid) en (s en // residens -_acetyl) en 'en // - mæc) en 'en // + småst) en ?en // +eksist) en (s 'En // eksistens +_resid) en (s 'En // residens + resid) en (s En // residens +_acetyl) en '?en // + mæc) en '?en // _influ) en (za 'En // skizofr) en 'En // til) end (ebr 'En // tilendebringe -_en_syr) en 'en // problem with "syren" = "the acid" - syr) en (en_ 'en // syrenen - syr) en (er_ 'en // syrener - syr) en (edsættende @-n // syrenedsættende +_en_syr) en '?en // problem with "syren" = "the acid" + syr) en (en_ '?en // syrenen + syr) en (er_ '?en // syrener s) en (sib AN // sensibel - _rev) en (che 'An // stressed - rev) en (che An // not stressed after a syllable + _rev) en (che 'AN // stressed + rev) en (che AN // not stressed after a syllable // $alt words with final -ent in da_list - stressed e - &) ent ($p_alt++ 'ent // student + &) ent ($p_alt++ 'Ent // student &es) ent ($p_alt+ 'AN // present (gift) &cc) ent ($p_alt+ 'AN // accent &r) ent ($p_alt+ ''&#nt // omtrent &) ent (ur$p_alt+ ent' // agentur - stressed u - &) ent (alsk$p_alt+ ent' // + "alsk" - stressed a - orientalsk + &) ent (alsk$p_alt+ Ent' // + "alsk" - stressed a - orientalsk // exceptions acc) ent (+ AN // ev) ent (A++ @-nt // eventyr, eventuel @@ -3105,11 +3195,11 @@ infant) eri ($p_alt @-r''i // infanteri // 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 (_+ ?VV // elskere + @) er (_N V // elsker + @) ere (_+ VV // elskere @) eres (_ V@-Vs // elskeres - @) eren (_ Vr@-n // elskeren - @) erens (_ Vr@-ns // elskerens + @) eren (_ V:Vn // elskeren + @) erens (_ VrVns // elskerens @) ers (_ Vs // elskers @) erne (_++ Vn@- // elskerne @) ernes (_ Vn@-s // elskernes @@ -3128,7 +3218,7 @@ vigtigp) er er // beh) er (sk Er // beherske _t) er (_ er // "de ter sig underligt" g) er (_++ V // våger, læger [l'EjV] - _g) er (ta+ er // Gerta + _g) er (ta+ Er // Gerta xavi) er 'e // name gys) er V // gyserafdeling lys) er (ød @-R // lyserød @@ -3168,7 +3258,7 @@ revolv) er (+ V // _int) er (n_++ 'Er // intern _int) er (ne_++ 'Er // interne int) erne (t+ VnE // - skid) er Vr // +// skid) er Vr // ønst) er (+ V // mønsterelev st) er (i er // ministerium ast) er (i -@R // madkasteri @@ -3338,7 +3428,9 @@ reserv) ert 'e3-t d) er (fra er // derfra urd) er (et er // vurderet udd) er V // mudderet - v) er (C+++ Er // vers, verden, kontroversiel + _v) er (s_ Er + v) er (@++ Er // verden, kontroversiel + v) er (anda+ er // veranda salv) er (++ V // kvaksalverbutik snæv) er (++ V // snæversynet ov) er (++++ V // overbevisende, sover, ovenover, overfald @@ -3401,6 +3493,7 @@ guldgrav) er (e V // _gen) er (t Er // genert _man) erer 'eV // _L06) er Er // per, person + @p) er (son Er // enkeltperson L06L06) er V // klipper fisk) er V // fisker, fiskerby elsk) er ?V // elskerinde @@ -3450,8 +3543,8 @@ der_man) er (_ V // der er intet land, der maner ... mm) ed @-D // fremmed afst) ed (kom 'eD // afstedkomme opf) ede (++ eD@- // opfede - f) eder (_+ eDV // - f) ed (e+ eD // blegfed + f) eder (_+ eDV // feder + gf) ed (e+ eD // blegfede h) ede (+ eD@- // glohede sm) ede eD@- // guldsmede velocip) ed (e 'eD // stressed @@ -3545,6 +3638,7 @@ jazzball) et Et // tabl) et ?Et // jodtablet tabl) ett ?Et // jodtabletter omel) et Et // spinatomelet + uglen) et Et // sommerfuglenet leverpl) et Et // _sk) et et // sket gennems) et et // @@ -3590,9 +3684,9 @@ _tromp) et 'et // stressed klarin) et Et // _klarin) et 'Et // marion) et 'Et // -marion) ett 'Et // +marion) ett '?Et // _servi) et 'Et // -_servi) ett 'Et // +_servi) ett '?Et // servi) et et // _prof) et 'et // stressed prof) et et // dommedagsprofet @@ -3613,11 +3707,11 @@ _alfab) et 'et // bill) ett Et // _tib) et 'et // tib) et et // - _bill) ett 'Et // stressed - only one t - _kask) et 'et // stressed - _kask) ett 'et // stressed - only one t + _bill) ett '?Et // stressed - only one t + _kask) et 'Et // stressed + _kask) ett '?Et // stressed - only one t _bajon) et 'Et // stressed -_bajon) ett 'Et // only one t +_bajon) ett '?Et // only one t bajon) et Et // eln) et (+ Et // hårn) et Et // @@ -3670,15 +3764,19 @@ _nicol) ette 'Et@- // Nicolette f f ff f - // _) for (&@P3 f%V // stressed second syllable after initial "for" +// _) for (&@P3 f%V // stressed second syllable after initial "for" _) fore (_ f'o@-V // only the word 'fore' _) forer (_ f'o@-V // only the word 'forer' _) fore (de_ f'o@-V // only the word 'forede' _) for (um f'or _) fe (_ fe // + cali) for 'fO: // Californien + @) for (@ fV: // lønforhøjelse, efterforske + // General rule, most words with af- plus vowel: [f] => [w] a) f (A w // afart, afprøve + // exceptions to the 'a)f(A' rule below ca) fe f'e // cafe, bogcafe ca) fé f'e // café @@ -3886,6 +3984,7 @@ _vi_to) g // silent g østro) gen g'en // nitro) gen g'en // ero) gen g'en // + psyko) gen g'en mono) ga (m g'& // g (yro g // autogyro vo) g (t g // bevogtning @@ -4032,7 +4131,7 @@ svededu) g // silent g _lo) g (g g ør) g u // changed from w - spørge ør) ge (+ w@- // spørgeleg - avoid "gele" = [Sel'e] - ør) ger wV + ør) ger wV ør) g (s // silent g - spørgsmål å) g u // åg, åge g (røn g // PN blågrøn @@ -4060,7 +4159,7 @@ svededu) g // silent g gibraltar SibRAlt'A // _) gates (_ gEjts // name _) gable gEjb@-l // name - gendarm S&nd'arm // + gendarm SAnd'A:m // _) gary g&ri // name guillotine gijut'i:n@- // _) gerard SeR'A: // name @@ -4229,6 +4328,7 @@ proktolo) ge (n @- // heavy hEvi // _) hearst hWst // name _) haag (_ h&j // Dutch city + hereford hE:rfO:d .group i i i @@ -4237,7 +4337,10 @@ proktolo) ge (n @- // i (dt ?i // skridt, skridtet - short i before dt br) i (te ?i // person from GB i (ds ?i // gidsel - short before 2 consonants - i (ld ?i // ilden + ild ?il // ilden, vildlede + b) ild (ør ild // bildør + v) ild (ig ild // uvildig + math) ild 'ild // name d) i (kt+ i // diktere t) i (l+ e // tilknytte, stille @@ -4252,8 +4355,12 @@ engelsk_st) i (l+ i // f) i (l ?i // fil, filen v) i (dere ?i // t) i (d ?i // tid + t) i (de@ i: // tidevand l) i (ter ?i // t) i (t ?i // titel + b) i (son ?i + skr) i (ver ?i + fr) i ?i // befrielseshær // exceptions dr) i (nk e // @@ -4273,6 +4380,7 @@ engelsk_st) i (l+ i // // general rule: initial in- : [e] _) i (n+ e // instinkt, ineffektiv i (ns e // bladinsekt, musikinstrument + ingeni (ø enS@-nj // flyingeniør i (nter e // fritidsinteresse h) i (n i // hinsides i (nfant e // marineinfanteri @@ -4325,8 +4433,9 @@ mississ) i (ppi 'i // stressed but) i (k i // videobutikken // general rule: [i] after k, [e] followed by n/m - k) i (C++ ?i // kikke, kikkert, kirke, kiosk + k) i (C+++ ?i // kikke, kikkert, kirke, kiosk k) i (Ce++ i // skide +// k) i (dere++ i: k) i (L09++ e // kind, skinke, skimme, skimte k) i (L09L11++ i // kime k) i (mning+ i // @@ -4375,7 +4484,6 @@ mississ) i (ppi 'i // stressed v) i (nglas++ i // v) i (nstok i // t) i (ka+ i // distika, Vatikanet - v) i (g e // vinge v) i (L01a i // vikar v) i (L10i i // viking v) i (ck i // Vicki, Vicky @@ -4453,7 +4561,7 @@ espadr) ille 'ilj@- // // [e] after gr - exception gr) i (m e // grimrian - C) i (ng+ e // dressing, ising, ping, ring + C) i (ng+++ e // dressing, ising, ping, ring len) i (n i // Leningrad v) ing (ummi ing // gr) i (mL11 i: // grime, grimasse @@ -4461,10 +4569,11 @@ espadr) ille 'ilj@- // l) inge (ri l&NSe // // general rule: [e] before nd/nk/ng - i (nd+ e // ind, find, vind + i (nd+ ?e // ind, find, vind + p) i (nkode ?e i (nde+ ?e // inde, finde, vinde er) i (ndr ?e // erindring, erindre - i (nne+ ?e // finne + i (nne+++ ?e // finne, skinne lets) i (ndig '?e // stressed f) i (nland ?e // h) i (nd ?e // hindre @@ -4500,7 +4609,8 @@ espadr) ille 'ilj@- // @sk) i (ld++ ?i // ungdomskilde, forsyningskilde sp) i (ds ?e // spids L08l) i (L07 ?e // splitte - l) iv (K++ ?iw // pensionistliv, livret + l) iv (K++ ?iw // pensionistliv, livret, livsstil + l) iv (et_ ?iv _bl) iv (e_ i // blive - silent v, long i r) i (f ?e // skrifte, rift, drift tar) i (f '?i // @@ -4522,6 +4632,7 @@ _ventr) i (k 'i // ventrikel, ventrikler // general rule: [e] between consonant and st/sp/sk l) i (L08+ ?e // list + ball) i (stik i l) i (sk ?i // cyklisk @cykl) i (st ?i // røvcyklist obel) i (sk '?i // stressed @@ -4540,7 +4651,7 @@ _ventr) i (k 'i // ventrikel, ventrikler fr) i (sted ?i // fr) i (stede_ ?e // fr) i (stedes_ ?e // - gr) i (L08+ ?i // grisk + gr) i (s++ ?i // grisk &r) i (sk ?i // historisk TEST infanter) i i // marineinfanterist f) i (L08+ ?e // fisketur @@ -4611,9 +4722,9 @@ ganske_v) i (st_ ?e // &) isk (t$p_alt =isg // canadiskt // country names in da_list 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 + &) ien ($p_alt =j@-n // it'alien + &) ien (sk$p_alt j'En // itali'ensk + &) ien (er$p_alt j'En // itali'ener austral) ier =jV // words with final -ik in da_list - stressed i @@ -4638,7 +4749,8 @@ austral) ier =jV mus) i (k i // folkemusik // words with final -ti in da_list - stressed i - &t) i ($p_alt+ ''i // politi, parti, profeti + &t) i ($p_alt+ 'i // politi, parti, profeti + &t) i (sør$p_alt+ i // sympatisør // words with final -isme in da_list (348) - stressed i &) isme ($p_alt ''ism@- // kommunisme, egoisme @@ -4672,8 +4784,8 @@ austral) ier =jV er) ie j@- // serie, ferie er) iet i@-D // nusseriet er) ier jV // serier, ferier - ie (re j'E // karriere TEST - ierer j'EV // karrierer TEST + rr) ie (re j'E // karriere TEST + rr) ierer j'EV // karrierer TEST or) ie (nt_ i'E // Den nære Orient or) ie (nten_ i'E // Orienten or) ie (ntens_ i'E // Orientens @@ -4686,6 +4798,7 @@ barbad) ier j'e croup) ier j'e den) ier j'e doss) ier j'e + doss) ieret j'e@-D elegant) ier j'e espal) ier j'e financ) ier j'e @@ -4952,10 +5065,8 @@ _terap) i 'i // stressed i in words with final -si in da_list &s) i ($p_alt 'i // fantasi, afasi -// v) i (sk e // viskelæder _t) i (ske_ e // hviske og tiske v) i (sne e // - l) i (e j r) i (gti ?e // rigtigt - short vowel - override ph_danish offentl) ig i // as) i (e j @@ -5169,7 +5280,7 @@ behænd) ig i // silent g rr) ige (r ig'e // korrigere nav) ige (r ig'e // navigere dir) ige (r ig'e // dirigere -intell) ige (n ig'e // intelligent +intell) ige (n ig'?E // intelligent ige (n_+ ig'E // igen, igennem, herigennem ige (nn+ ig'?E // igennem, herigennem f) igen i@-n // fruit @@ -5181,7 +5292,7 @@ intell) ige (n ig'e // intelligent st) ige (+ i@- // rangstigen l) ig (ene i@- // ligene l) igg (e++ ?eg // - kr) ige (n i@- // + kr) ige (n ?i@- // .group in @@ -5195,6 +5306,7 @@ intell) ige (n ig'e // intelligent // words ending with "in" in da_list with $alt - stressed i @) in ($p_alt+ '?in // baldakin, bekkasin, appelsin + @) in (a$p_alt+ 'i:n // marina &) in (ar$p_alt in' // disciplinarmiddel &ass) in ($p_alt 'EN // bassin &at) in ($p_alt 'EN // satin @@ -5314,7 +5426,7 @@ _adopt) iv 'iw j (uice dZ // juice juke (boks dZu:k // jukeboks _) jer (_ jEr // jer - er swallowed by other rules - _) jeres (_ jEVs // + _) jeres (_ jEVs // jamsession dj&:ms'eSj@n // jardiniere SjArdinj'E:r // jardiniere jeton Sjet'VN // @@ -5372,7 +5484,7 @@ _adopt) iv 'iw ll l _a) llende lj'End@- // name a) lli (er lj // allieret - a) li (e lj // italiener TEST + // a) li (e lj // italiener TEST // nouns in da_list with final -log - stressed o // A lot of these can have a stressed i added (-gi rule in group g) @@ -5405,6 +5517,7 @@ hestefi) let le // silent t se) lv l // selv, selvfølgelig, selvhjælp se) lve lv@- // selve, selvet bo) ld ld + bo) ld (gade l // silent d so) ld (at ld leg (_ laI // leg, kysseleg, ligbleg leger (_ laIV // leger @@ -5412,6 +5525,8 @@ hestefi) let le // silent t _o) leg lEg // name læg (præd lEj // lægprædikant k) læg lEj // + lægg (e l?Eg // mørklægge + læg (ning lEg // mørklægning legem (C lEj@-m // legemsdel lotion l3uSjn // håndlotion lorraine loRE:n // name @@ -5449,6 +5564,7 @@ hestefi) let le // silent t m m // m? -> m mm m o) mm (øble m||m // ommøblere +forgle) mmigej m||mAj_!Aj // forglemmigejer melle) mm m|m // mellemmåltid mm (assage m|m // lemmassage // m (A m @@ -5462,7 +5578,6 @@ hestefi) let le // silent t _) megen (_ mAj@-n // megen _) medea med'E:& // Medea montgomery mVndg'Vmri // - mareridt mA:@-rit // _) mc (C@ m&k // McDonald musketer musget'er // musketer milkshake melkSEjk // @@ -5514,7 +5629,7 @@ single_) malt mOlt // whisky .group me // General rule for words with -ment - &) ment m'ent // element, segment + &) ment m'Ent // element, segment // exceptions for the -ment rule (French words) arrange) ment mAN // arrangement @@ -5617,14 +5732,14 @@ ceremo) n (i n /// not a -ner word ræso) nn n // ræsonnement A) nn n // venner, denne gra) n n // grannål 2 * n - @) nien =ni@-n // Albanien, Rumænien - stress on previous syllable - @) nier =niV // armenier - stress on previous syllable + @) nien =nj@-n // Albanien, Rumænien - stress on previous syllable + @) nier =njV // armenier - stress on previous syllable newton nj'u:t@-n nylon naIlVn neglige negliS'e nightingale _^_EN _) nag (_ n&:j // nag - nougat nug'& // + nougat nug& // _) naiv n&'iv // naiv @) naiv n&iv // bundnaiv new nju // newton, New York @@ -5658,6 +5773,7 @@ james_bo) nd nd // James Bond gwe) nd (a nd // name pa) nd (ora nd' // name ama) nd (a =nd // name +// hacie) nd (a nd spa) ndex ndEgs a) nd (esbj nd // Andesbjergene li) nd (y nd // name @@ -5768,7 +5884,7 @@ salama) nd nd // salamander nødve) nd (ig nd // vi) nd (u nd // vindue i) nd (oki nd // Indokina - i) nd (u nd // industri + i) nd (u++ nd // industri evi) nde (li n@- // evindelig y) nd (el n // begyndelse ba) nd (el n // forbandelse @@ -5820,6 +5936,7 @@ _den_ba) nde nd@- // ba) nde (medlem nd@- // ba) nde (opgør nd@- // ba) nde (vold nd@- // + i_ba) nde (n nd@- // med i banden tyveba) nde nd@- // røverba) nde nd@- // bjørneba) nde nd@- // @@ -5837,7 +5954,7 @@ _de_ba) nd (er n // _man_ba) nd (er n // sta) nd (ar nd // standard - keep the d i) nd (eks nd - i) nd (i nd // Indien, individ, indianer + i) nd (i++ nd // Indien, individ, indianer ti) nd (in n // tinding fi) nd (+ n // fejlfinding i) nd (ig+ nd // spidsfindig, besindig @@ -5875,7 +5992,6 @@ _man_ba) nd (er n // ng (evær ng // maskingevær ng (las ng // vinglas he) ng (iv ng // hengiven - i) ngeni (ø nSin // ingeniør eva) ng (el ng // evangelie allo) ng (e NS // A) ng (o ng // bongo, Congo, Ringo @@ -5904,7 +6020,7 @@ _man_ba) nd (er n // r) o (C%++ ?V // droppe, kroppe, skrotte tr) os (sag+ os // tr) os (skrift+ os // - o (ld+ ?V // hold, holde + o (ld++ ?V // hold, holde, solde - ld=>l o (mm+ ?V // komme, omme _noget_r) o (s_ ?V // @@ -5914,6 +6030,7 @@ _noget_r) o (s_ ?V // oo u: // English words like 'pool' C) oog oV // toogtyve + scr) ooge u:dZ // name b) oogie ugi // boogie-woogie w) oogie ugi // w) oo u // Hollywood @@ -6048,11 +6165,13 @@ elektr) o (de 'o C) o (g+ O // bogmærke, bedrog, krog, tog (verb "took", noun "train") C) o (gA+ O // toge + fot) o (+ o // fotografere n) oge (n o@- // PN nogensinde d) og (+ Vw // dogme d) og (e oS // doge + og (tyve V d) o (nkraft o // et_dr) o (g V // et drog (noun) arist) o (k o // aristokrat @@ -6067,6 +6186,7 @@ elektr) o (de 'o h) og (an owg // name fot) oge (n og'e // stressed ep) o (ke 'o // stressed + ariz) o (na 'o: // stressed l) ogre VwrV // g) o (kart+ Ow // kr) o (ketC V // kroketbane, -spiller, -plæne @@ -6112,7 +6232,6 @@ elektr) o =o // elektrokromatisk symb) o (l o // sexsymbol bornh) o (lm 'V // L08) o (l+ o // skole, spole, spol - L08) o (len ?o // skolen - short o t) o (lk V // mistolke p) o (l ?o // nordpolen, politi p) o (l_ o // @@ -6123,7 +6242,15 @@ melank) o (lsk 'o // wimp) ole Owl // name st) o (d_ o // L09) o (d+ o // mod + m) o (de+ o: // modefænomen + m) oder or // pronounced like "mor" + m) oderen o3-Vn // pronounced like "moren" + m) oder (@ o:DV // compunds - moderkage + m) oder (ne od'Er l) o (L03+ o // forlod, blod, efterlod + fl) o (d_ ?o // short o + fl) o (den ?o // short o + fl) o (der o // long o j) o (d+ o // j) odle Vdl@- // jordl) o (d V // @@ -6173,6 +6300,7 @@ kommand) o o // kommandobroen s) ophia of'i& // name o (pposit o // opposition o (L06L11+ o // oktober, global, Robert, oberst + psyk) o (+ o // psykogen o (pefter+ V // o (parbejde+ V // j) o (b@ V // jobannonce @@ -6251,6 +6379,7 @@ rekogn) o (scere o // tr) o (ld V // charmetrold bek) o (st V // bekostning o (sCL04 V // osmose + d) o (ssier o kosm) o (s V // kosmos tjekk) o (slov o // Tjekkoslovakiet heter) o o // heterosvin @@ -6317,7 +6446,7 @@ rekogn) o (scere o // v) od (ka Vd // o (ttawa V // term) o (sta o // termostat - r) o (st+ o // rost, skamrost, prostitueret, roste + r) o (st++ o // rost, skamrost, prostitueret, roste f) oged o:@-D // silent g bank) o (sp o // bankospil k) o (sko o // bronkoskop @@ -6355,7 +6484,7 @@ helsek) o (st V // s) oames oums // name osborne Vsb,On // name _b) o (nd_ V // Bond Street - k) oor (d oV:? // koordinat + k) oor (d oO: // koordinat _biot) o (p '?o // stressed _isot) o (p '?o // stressed antibi) o (tik '?o // antibiotika @@ -6425,7 +6554,7 @@ _horis) o (n '?V // horisont trik) ot 'o // stressed, silent t er) o (b 'o // erobre - stressed o _er) o (t 'o // erot - stressed o - _pil) o (t 'o: // stressed - pilot + _pil) o (t '?o // stressed - pilot _idi) o (t 'o: // stressed _patri) o (t 'o: // stressed _cypri) o (t 'o: // stressed @@ -6479,7 +6608,8 @@ _paran) oia 'Vj& // stressed ren) ov (er ov // renovering ov (n Ow // brændeovn ov (re Ou // derovre - C) ov (+ O?u // sjov, lov, skov, plov, provst + C) ov (+ Ow // sjov, lov, skov, plov, provst + C) ov (en+ ?Ow // skoven - short O j) ov (ist ov' // jovist t) ov (ør ov // tatovør n) ov (icA ov // novice, noviciat @@ -6522,6 +6652,7 @@ artisk) o (k 'V // stressed o (ktob %o // stressed next syllable - oktober sm) o (king o: // j) o (rt V // hjort, pjort + fj) o (rt o // fjorten kj) o (rt o // skjorte, kjortel gj) o (rt o // k) or (p V: // korps @@ -6585,16 +6716,16 @@ perestr) o (jka 'V // stressed _st) o (r_ o // stor past) or V // mot) or V // startmotor - t) or (s O // torsdag, torsk + t) or (s O: // torsdag, torsk - long to compensate for silent r t) or (ny V // tornyster oy (+ 'Vj // destroyer, royal, loyal v) oyeur VjW:r // r) oyce Vjs // Rolls Royce han) oi Vj // - _f) oyer O@j'e // - _f) oyeren O@j'e@-n // - f) oyer O@je // - p) o (r O // porno + _f) oyer wAj'e // + _f) oyeren wAj'e@-n // + f) oyer wAje // + p) or (n O: // porno p) or (c V // porcelæn m) oskva Vskv'& // _im) o (d 'o // stressed @@ -6694,34 +6825,33 @@ noblesse_) oblige _^_fr // noblesse oblige // final -ol words in da_list - stressed o &) ol ($p_alt++ '?ol // parabol, symbol mong) oliet ol'i@-D // - &s) ol ($p_alt+ 'Vl // konsol + &s) ol ($p_alt+ '?Vl // konsol &s) ol (L04$p_alt+ 'ol // konsolidere - &h) ol ($p_alt+ 'Vl // alkohol + &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 - &nt) ol ($p_alt+ 'ol // mentol - &tr) ol ($p_alt+ 'Vl // kontrol - &tr) ol (len$p_alt 'V // kontrollen + &ok) ol ($p_alt+ '?Vl // protokol + &t) ol ($p_alt+ '?Vl // chatol + &nt) ol ($p_alt+ '?ol // mentol + &tr) ol ($p_alt+ '?Vl // kontrol + &tr) ol (len$p_alt '?V // kontrollen &tr) ol (e$p_alt 'ol // petroleum - &tr) ol (lle$p_alt 'o // kontrollere - &st) ol (+$p_alt 'ol // pistol + &tr) ol (lle$p_alt '?o // kontrollere + &st) ol (+$p_alt '?ol // pistol @id) ol ol // popidol L08) o (lC+ ?V // stolt, stolpe - short _g) oldie Ouldi // name _g) olden (_ Ould-@n // Golden Delicious -// L01) o (ld V // kold, gold ravi) o (li 'o // stressed o rob) o (t++ 'V // d) ollar VlV // dollar - only this word plus compounds like 'dollargrin' - s) o (l+ ?o // sol, soldat - s) o (llys++ o // + s) o (l++ ?o // sol, soldat + s) o (llys++ ?o // is) olde 'Vld@- // name s) olgt Vlt // solgt - exception kontr) o (l V // billetkontrol - kontr) o (ller %O // priskontrolleret - kontr) o (llør o // + kontr) o (ller %?O // priskontrolleret + kontr) o (llør ?o // sn) o (t V // snot h) otdog VtdVg // _h) o (t_ V // @@ -6743,10 +6873,10 @@ noblesse_) oblige _^_fr // noblesse oblige // 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, tyfon, person, mission - &) on (n$p_alt 'o // only one n - ræsonnement + &) on (n$p_alt '?o // only one n - ræsonnement &c) on ($p_alt++ '?VN // facon &t) on ($p_alt '?VN // beton, futon - &p) on ($p_alt '?VN // tampon, kupon, pompon + &p) on ($p_alt++ '?VN // tampon, kupon, pompon &if) on ($p_alt '?VN // sifon &lef) on ($p_alt '?on // telefon &of) on ($p_alt '?on // grammofon @@ -6825,10 +6955,10 @@ robins) on Vn // name alv) or O // alvor // or (L04+ or // favorit - or (ienter Vr // venstreorienterede v) or (L11+ or // favorabel v) or (_ O // f) or (_ V // for +// _f) or (_at_ O:_! derf) or V // derfor tayl) or V // name helsingf) or (s 'V // stressed @@ -6839,7 +6969,7 @@ helsingf) or (s 'V // stressed k) or (tA ?O: // korte t) or (L06 O // torpedere or (to O: // ortodoks, ortopæd - m) orge O:@- // morgen + m) orge OO@- // morgen dek) or (_ 'V:r // dekor rapp) or (t 'O: // rapport f) or (t_ O: // fort @@ -6852,10 +6982,12 @@ helsingf) or (s 'V // stressed hum) or (i OR // humorist sp) or (t O: // sport eksp) or (t 'O: // + eksp) or (tere O: // s) or (t or // sort st) or (t or // stort sv) or (e+ or // svoret - _) or (i V // orientere + _) or (i O // orientere, original + orien (ter Oi3n // venstreorienterede _) or (a or // orange orm orm // f) or (m_ O: // form @@ -6878,7 +7010,7 @@ helsingf) or (s 'V // stressed s) or (te or // sorte rep) or (ter 'V // stressed o s) or (tA O // sortiment -_transp) or (t 'O: // stressed - transport +_transp) or (t_ 'O: // stressed - transport n) orth V:T // rekt) or V // rektorforening @@ -6946,12 +7078,12 @@ _transp) or (t 'O: // stressed - transport // no stress on initial 'for' - 1.550 words. // Secondary stress on the next syllable after a syllable. - _f) or (@++ %V // fork'ølet, fordr'ev + _f) or (@++ %?V // fork'ølet, fordr'ev // _f) or (mL11++ %V // formane, formaning, formene - f) or (køl V, // s'ommerfork,ølet - f) or (bund O: // skytteforbundet - _f) ore (g++ O:O // foregå, foregive - misf) or (stå V + f) or (køl ?V, // s'ommerfork,ølet + f) or (bund O: // skytteforbundet + _f) ore (@++ O:O // foregå, foregive, foretage + misf) or (stå ?V // exceptions to initial 'for' below - 'for' means "front/fore" _f) or (a_+ 'O: // fora (plur. of 'forum') @@ -6965,6 +7097,7 @@ _transp) or (t 'O: // stressed - transport _f) or (ben_+ 'O: // forben _f) or (bens+ 'O: // forbens _f) or (benene+ 'O: // forbenene + _f) or (benet+ 'O: // forbenet - problem with verb "forbenet" _f) or (behand+ 'O: // forbehandle _f) or (beho+ 'O: // forbehold _f) or (bered+ 'O: // forberede @@ -6988,12 +7121,12 @@ _transp) or (t 'O: // stressed - transport _f) ore (Cr++ '0:@- // foreberinge, foregribe _f) ore (l_+ or'&#l // _f) ore (lle+ or'&#l // foreller (fish) - _f) ore (n+ V'e: // forene, forening + _f) ore (n++ V'e: // forene, forening genf) ore (n+ Ve: // genforene - f) ore (sC+ 0:@- // forestiller + f) ore (sC+ 0:0 // forestiller, foreslog _f) or (el_+ or // forel _f) or (et_+ 'o@- // foret - _f) or (elsk+ V' // forelske + _f) or (elsk++ V' // forelske _f) orend (e+ 'O:,en // forende _f) orenkl (e+ V'enkl // forenkle _f) orenkl (ing V'enkl // forenkling @@ -7036,6 +7169,7 @@ _transp) or (t 'O: // stressed - transport _f) or (hud+ 'O: // forhud _f) or (hus+ 'O: // forhus _f) or (hæng+ 'O: // forhæng + f) or (hæng+ O: // badeforhæng _f) or (hånd+ 'O: // forhånd _f) or (hånds+ 'O: // forhåndsindtryk _f) or (ring_ O: // foring @@ -7058,7 +7192,8 @@ _transp) or (t 'O: // stressed - transport _f) or (lem+ 'O: // forlem _f) or (lover+ '?O: // forlover _f) or (lyd+ 'O: // forlyd - _f) or (lydende+ O' + _f) or (lyder+ O:' // forlyder + _f) or (lydende+ O:' _f) or (lygte+ '?O: // forlygte _f) or (lys+ 'O: // forlys _f) orlyst Vl'Wsd // forlyste, forlystelse @@ -7127,7 +7262,7 @@ _transp) or (t 'O: // stressed - transport _f) or (side+ 'O: // forside _f) or (ske+ 'O: // forske _f) or (skn+ 'O: // forskning - _f) or (skelli+ %O // forskellig + _f) or (skelli+ %O: // forskellig _f) or (sker+ 'O: // forsker, forskerby _f) or (skel_+ 'O: // forskel _f) or (skelsbehandl+ 'O: // forskelsbehandle, -behandling @@ -7303,14 +7438,19 @@ _transp) or (t 'O: // stressed - transport A) re (n_ 3-V // frisøren, fyren A) re (ns_ 3-V // frisørens, fyrens C) re (_ R?V // after consonant: ad the r - sejre, venstre, ældre + sy) re (nedsættende ?V // syrenedsættende C) re (st_ R?V // taprest C) re (ste_ R?V // tapreste + æld) re RV // forældreløs + dy) re RV // dyrefoder + y) re (@+ V // myretue, dyrehold A) res (_ Vs C) rer (_++ rV // beundrer @) rer (_$p_alt+++ ''rEr // stressed - operer @) rer (e_$p_alt+++ ''rE // stressed - operere, opererer @) rer (es_$p_alt+++ r''E // stressed - opereres C) ret (_++ rVD // ændret + op) ret (++ r&#t A) rer (_++ V // horer A) ret (_++ 3-VD // horet, fyret A) rerne (_++ Vn@- // horerne @@ -7319,11 +7459,19 @@ _transp) or (t 'O: // stressed - transport A) rene (s_ Vn@- // hærenes æ) re (+ V // ærefrygt, kæreste æ) re (C+ 3-V // væremåde, værelse - myld) re (@ V // myldretid + myld) re (@ V // myldretid stue) re (n RE -ad) re (@ rV // sladrehank + ad) re (@ rV // sladrehank + re (tion++++ R@- // diskretion + høj) re (@ rV // højresving // "ret" exceptions - not a verb or noun ending + disk) ret (+ r'Et + dek) ret (+ r'Et + konk) ret (+ r'Et + sek) ret (_+ r'Et + sek) ret (er+ r'Et + sek) ret (et+ r'Et _) ret (_++ r&#t // skue) ret (++ r&#t // klage) ret (++ r&#t // @@ -7355,7 +7503,7 @@ stemme) ret (++ r&#t // dagpenge) ret (++ r&#t // ene) ret (++ r&#t // rett (++++ r?&#t // henrette, rettroende - only one t - s) ret (++ &#t // rigsret + s) ret (+++ r&#t // rigsret, yndlingsret højeste) ret (++ &#t // familie) ret (++ r&#t // by) ret (++ r&#t // @@ -7422,7 +7570,12 @@ virtual_) reality ri'&liti // smø) re V // smørefedt hav) re rV // havregryn bekym) ret rVD // bekymret - _ent) re (_ R'e // entre + _ent) re (_ R'E // entre + _ent) re (en_ R'E // entreen + _ent) re (er_ R'E // entreer + _ent) re (ers_ R'E // entreers + _ent) re (erne_ R'E // entreerne + _ent) re (ernes_ R'E // entreernes bu) rd (eK rd æ) r (er_N // silent r - skærer æ) re (_N V // silent r - skære @@ -7442,7 +7595,7 @@ virtual_) reality ri'&liti // e) r (e_N // hellere dia) re r'e // diare diar) re r'e -transpo) r (t // transport +//transpo) r (t // transport au_) revoir r@w'a:r // au revoir rouge ru:S // richie RitSi // name @@ -7528,6 +7681,7 @@ franci) sc (o sk // Francisco sh (erif S // su) sh (i S // ha) sh S // + sma) sh S // smashe sch (ool sk // sherman SW:m&n // Sherman kampvogn schweiz svaIts // @@ -7749,7 +7903,7 @@ kompromi) s ' // stress added t t // final t changed to d in ph_danish tt t tt (er d // atter - t (er_ d // kryster [kR'ysdV] +// C) t (er_ d // kryster [kR'ysdV] t (en_ d // femten - final ten: d@-n tt (en d // attentat, atten - final tten: d@-n Ce) t (_ d // final -et => [@-d] spærret - TEST @@ -7786,7 +7940,7 @@ kompromi) s ' // stress added third TW:d // Third Street thunder TVndV // tredivtedel tr&fd@del // - tyve ty:?u@- // 20 + tyve ty:w // 20 tredvtedel tr&fd@del // trenchcoat tr'EnSk,oud // tennessee tEn@si // @@ -7819,11 +7973,12 @@ world_) trade trEjd // // final -te: D@- te (_ d@- // smerte, hjerte lyg) te (@ t@- // lygtepæl - or) te (@ d@- // sorteper -tor) t (ere t // tortere + sor) te (@ d@- // sorteper + tor) t (ere t // tortere nes) te (@ d@- // tjenestepige _) te (_ te // tea + por) tefø (lje t@-f'?W // stressed ø // final -tek - stressed e _apo) tek t'ek @@ -7903,7 +8058,7 @@ meningi) ti (s =ti .group u u u -// General rule: Normal vs. glottal u +// General rule: Normal vs. short (glottal) u // short u followed by double consonant u (C%+ ?u // blusse L03) u (ff+ ?O // bluffe @@ -7912,6 +8067,7 @@ meningi) ti (s =ti r) u (L06% ?O // siruppen C) u (kk+ ?O // sukker, lukker C) u (gg ?O // hugge + b) ug (gjord u: r) u (mmy ?V // card game u (ds ?u // pludselig h) utton ?Vt@n // name @@ -7949,12 +8105,13 @@ meningi) ti (s =ti br) u (gt ?O // sl) ug u // slugt, sluge - silent g s) u (g u // sugerør, suggestiv - l) u (k ?0 // sluk, pluk, lukke, fluks + l) u (k ?O // sluk, pluk, lukke, fluks l) u (krL11 u // lukrativ u (ks ?0 // juks, buks l) ukaf Og'& // sygelukaf p) urple W:p-@-l // Purple Heart d) u (dley V // name + ulster VlstV // name // general rule: [0] after l/d followed by ns L03) u (ns ?0 // luns, dunst @@ -7989,7 +8146,7 @@ meningi) ti (s =ti abr) u (pt 'u // abrupt m) u (L01 0 // mug, mukke m) ug (_ud u // - m) ug (e_ud u // + m) ug (e_ud u: // sm) ug uw // i smug, smugkigge // generak rule: b/d + u + k:_ O @@ -8004,7 +8161,7 @@ meningi) ti (s =ti // remove u in order to make the -ig/elig rule (group i) work with u + -ig list words // e.g. u+erværdig [uErv'Erdi] will keep its stress on the next to last syllable. _) u (@@+P1 u: - _) u (for '?u // uforskyldt, uforfalsket + _) ufor '?ufV: // uforskyldt, uforfalsket, uforandret _) uud 'u|'uD // uudforsket // exceptions - u isn't a prefix uppercut VpVkVt // @@ -8015,7 +8172,7 @@ meningi) ti (s =ti _) ubeset (_ ubesed // _p) u (b_ V // p) u (bb V // pubben, pubber - u (hyre+ u + u (hyre+ u: u (enig+ u' // uformel ufOm'el // u (ltima u // ultimatum @@ -8031,7 +8188,7 @@ meningi) ti (s =ti _st) u (art ju // name g) u (den+ ?u // u is shorter in "guden" than in "gud" (glottal stop) u (ge++ u // ugerne, sluge - uger (+ uV // sluger, slugere + uger (+ u:V // sluger, slugere s) uge (rør u3 // silent g _) u (r++ u // ur, urrem, uret _) u (retfæ++P1 u: // uretfærdig - prefix @@ -8088,7 +8245,7 @@ meningi) ti (s =ti // short u - glottal stop h) u (dK ?u - h) u (den ?u + h) u (deC ?u // huden, lyshudet st) u (dK ?u st) u (den ?u t) u (dK ?u @@ -8212,7 +8369,8 @@ centrif) u (g 'u // stressed _deb) ut 'y // stressed, silent t vestib) u (l 'y // vestibule fl) ute yt // - deb) ut y // unstressed after a syllable, silernt t + @) deb) ut y // unstressed after a syllable, silernt t + b) u (tik+ u // modebutik p) u (ré y // _p) u (rere y // d) u (chesse y // @@ -8261,11 +8419,11 @@ hovedk) u (ls u // h) u (n+ ?u // hunkøn, hund h) u (nter V // headh) u (nt V // - h) u (rtig O // hurtigtog + h) u (rtig ?O // hurtigtog s) u (k 0 // suk, sukker - sl) u (p O // sluppet, løssluppen - sv) u (p O // svuppe - v) u (g 0 // vugge + sl) u (pp ?O // sluppet, løssluppen + sv) u (pp ?O // svuppe + v) u (gg ?O // vugge f) u (L06 0 // fup h) u (l O // hul - noun @@ -8280,15 +8438,15 @@ mudderh) u (l O // h) u (lske O // h) u (lbånd O // h) u (ljern O // - h) u (lle O // hulledame + h) u (lle ?O // hulledame h) u (g O // hugge, hugorm h) u (go_ u // name Cr) u (k O // sprukne, fordrukken, foretrukne, trukket, krukket TEST p) u (f O // p) u (lv 0 // pulver - _r) u (b_ O // rub - _n) u (l 0 // nul + _r) u (b_ ?O // rub + _n) u (l O // nul n) u (levende u // _r) u (bbe ?O // rubbe, rubbet k) u (ffert ?O @@ -8299,13 +8457,14 @@ mudderh) u (l O // at_g) uid (e aId // at guide vil_g) uid (e aId // vil guide aug) u (st 'O // stressed - the month - the name is in da_list with $capital - g) u (f O // guffe + g) u (f ?O // guffe g) ulv Ol // gulv - silent v g) ulv (e Olv // gulve sm) u (C O // smukkere, smurt rasm) u (s u // Rasmus - name m) u (sik u // middagsmusik - sL09) u (t u // snut, smutte + sL09) u (t u // snut, smut + sL09) u (tt ?u // smutte sL09) u (CL11 u // snude sm) u (L03+ u // smule, smuld, smuds l) u (krere u // @@ -8380,7 +8539,7 @@ proven) u 'y .group v v v vv v - v (_ w // væv + A) v (_ w // væv i) v (_ w // stativ i) v (t_ w // effektivt ra) v (C w // gravkammer @@ -8508,6 +8667,7 @@ udeble) v w // // short y Cl) y ?y // fly, bly TEST + s) y (nes ?y // general rule: [W] before (some) velars y (nk+ W // ynk, ynkelig, klynke @@ -8843,7 +9003,7 @@ _hun_l) æ (ste E: _portr) æ (t '?&# // stressed // general rule r + æ + consonant + e: E - tr) æ (Ce++ E // træne, træde + tr) æ (Ce++ E // træne, træde rr) æ (Cer+ &# // forræderi dr) æ (ber E // _mor) æ (ne+ 'E // stressed @@ -8910,11 +9070,16 @@ majest) æ (t 'E // stressed æ ø W // Short ø - double consonant - ø (C%+ ?W // tørre, fødder, rødder + ø (C%++ ?W // tørre, fødder, rødder r) ø (L09% ?W# // grønne, strømme, rømme ø (rnene ?W // børnene, tjørnene - TEST ø (ds ?W // ødsel, fødsel - short before 2 consonants b) ø (n ?W // bønder + ø (dt ?W // mødtes + +// words with short ø + bel) ø (b ?W + ø (rn ?W // ørne, børn _chauff) ø (r 'W // stressed in 'chauffør' _milj) ø 'W // stressed - miljø @@ -8958,9 +9123,9 @@ oberstl) ø (jtnant 'W# // stressed sp) øg (en Vj // sp) øg (_ Vj // spøg = joke s) ø (g ?W // søgte - sp) ørg Wr // spørg - sp) ørge W3-V - sp) ørger (_ W3-V // + sp) ørg Wr // spørg + sp) ørge W3-V + sp) ørger (_ W3- // sp) ør (gs Wr // spørgsmål r) ø (g+ ?W# // røg r) ø (gte W // misrøgte @@ -8996,19 +9161,23 @@ bonder) ø (v W# // bonderøve .group ør // (mostley French -eur) nouns ending with -ør - stressed ø - around 150 words &) ør ($p_alt ''?W3- // hønnør, frisør + &) ør (er$p_alt ''?W3- // sympatisører + &g) ør ($p_alt ''W:3- // vigør &) ør (en$p_alt ''?WV // hønnøren, frisøren .group å å O // changed from O:? - å (C ?O // lås, ås, båd + å (s ?O // lås, ås + å (d ?O // båd + å (Ce O // måned år (@ O: // dårlig, årsag - @) år (_ O: // skatteår + @) år (_ ?O: // skatteår // g) år O // går, overgår _) år (_ O: // år - C) år (_ O: // sår, kår, skår, får + C) år (_ ?O: // sår, kår, skår, får år (s O: // årstid - s) år (C O: // sårbsr + s) år (C O: // sårbar åre O:?O // Pb åre, årelang, båre, båren året O:?OD // året, håret n) å (et ?O // short glottal o @@ -9040,15 +9209,16 @@ uimodst) åe (lig '?O // stressed r) å (dsp V // rådspørge, rådspurgte r) å (sejl V // - g) ård V: // gårdmand, bondegård - silent d - g) årde V:@- // - ården V:Vn // gården + g) ård O: // gårdmand, bondegård - silent d + g) årde O:@- // + ården O:Vn // gården h) år O // hår, hård h) år (dt O: - h) årde V@- // - h) årdest V:r@-st // + h) årde O: + h) årdest O:@-st // p) å (ske O // påske s) å O // så + s) å (h_ O: s) å (vel V // s) å (_snart V // s) å (_få V // @@ -9078,6 +9248,7 @@ uimodst) å (elig 'O // stressed p) å (st ?V // påstand gåp) å (mod '?O // stressed sl) å (s ?V // slås + sl) å (s_ihjel O tændingsl) å (s ?O // sl) å (brok ?V // ansl) å ?O // anslås @@ -9114,7 +9285,6 @@ slagsm) å (l ?O // str) å (forkort ?V // stråforkorter str) å (hat ?V // str) å (død ?V // - st) år V // forstår årer V:V- // sårer å (lti ?V // måltid @@ -9134,3 +9304,4 @@ slagsm) å (l ?O // ï i: // Thaïs ç s à & // à part + ë E // Ismaël diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 8da898bb..f1b3ff11 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -15,16 +15,6 @@ n N n^ p r s S t T tS v w x x2 z Z -Dictionary ak_dict 2010-08-11 - -a e E i o O u - -: b C d dZ dZ; f g -h j k l m n N n^ -p R s t tS; v w z -z; - - Dictionary am_dict 2011-11-22 @ a e i o u y @@ -46,6 +36,19 @@ Q r R R2 s S t T t# tS w x +Dictionary te_dict 2013-03-26 + +a a: aI aU e E e: i +i: l- o o: r- u u: + +#X1 #X2 : ; b b# c c# +d d# d. d.# dZ f g g# +h j J J# k k# l l. +m n N n. n^ p p# r +s s. S; t t# t. t.# tS +v v# w z + + Dictionary bg_dict 2013-03-16 @ a e i o u @@ -57,7 +60,7 @@ s; t t; tS ts v x z Z z; -Dictionary bn_dict 2013-03-25 +Dictionary bn_dict 2013-03-26 & a a~ e e~ i i~ l- o O o: O~ o~ r- u u~ @@ -108,7 +111,7 @@ p r s S t T v w x z -Dictionary da_dict 2013-03-15 +Dictionary da_dict 2013-03-26 & &# 0 3 ?& ?&# ?0 ?A ?e ?E ?i ?o ?O ?u ?V ?W @@ -147,7 +150,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-25 +Dictionary en_dict 2013-03-26 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -389,14 +392,14 @@ S s. S; t t# t. t.# tS v w z -Dictionary ko_dict 2013-03-19 +Dictionary ko_dict 2013-03-26 @ a e E i o u u- -* - ; b d dZ; g h +* ; b d d- dZ; g h j k k- kh l L m n -N p p- ph q r R s -t t- tS tS; w +N p p- ph q q- r R +s s- t t- tS tS; tS;- w Dictionary ku_dict 2008-04-14 @@ -560,7 +563,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-25 +Dictionary pt_dict 2013-03-26 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -602,16 +605,6 @@ t; ts tS; v x z Z z; Z; -Dictionary rw_dict 2008-03-27 - -a e i o u - -* : b B c d dZ f -g h j J k l m n -N n^ p q R s S S; -t tS v w x z - - Dictionary si_dict 2013-03-23 & &: @ a a: aI aU e diff --git a/dictsource/en_list b/dictsource/en_list index 2ae975c8..050b3a74 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -3283,6 +3283,7 @@ Noumea nu:m'eI@ Oahu oU'A:hu: Oklahoma oUkla#h'oUm@ Ohio oUh'aIoU +Ohioan oUh'aIoU@n Omagh oUmA: Omaha oUma#hA: Oman oUm'an diff --git a/dictsource/en_rules b/dictsource/en_rules index 30a4b5cf..ec32d6c3 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1927,23 +1927,6 @@ h) e (sion_ 'i: @) e (tio i: discr) e (tion E - eu ju: -?3 n) eu u: -?3 n) eu (r U@ - r) eu (d OI - eu (m_ 'i:@ - s) eu (m_ 'i@ - l) eur 3: -?5 eur VR - eur (_ '3: -?3 eur (_ 'U@ -?5 eur (_ 'VR - _) euro jU@roU - _) euro (pe jU@r-@ - &) eus (_ =I2@s - @) euse (_ '3:z -?3 @) euse (_ 'u:z - d) eu (ts OI ew ju: _s) ew u: ?3 d) ew u: @@ -2599,6 +2582,27 @@ m) etry (_ =@tr%I &) ett (_ I2t + +.group eu + eu ju: +?3 n) eu u: +?3 n) eu (r U@ + r) eu (d OI + eu (m_ 'i:@ + s) eu (m_ 'i@ + l) eur 3: +?5 eur VR + eur (_ '3: +?3 eur (_ 'U@ +?5 eur (_ 'VR + _) euro jU@roU + _) euro (pe jU@r-@ + &) eus (_ =I2@s + @) euse (_ '3:z +?3 @) euse (_ 'u:z + d) eu (ts OI + + .group ev _) ev I2v _) eva (ne Ev@ @@ -2915,40 +2919,10 @@ n) ihi aI|@ _) i (h aI ii (_ IaI + ij (C eI // Dutch f) i (j i: h) i (j aI - @b) il (_ @L - @Cc) il (_ @L - @p) il (_ @L - @r) il (_ @L - @s) il (_ @L - nt) il (_ @L - @v) il (_ @L - @) ila (_ 'Il@ -?3 &) ile (_$w_alt2 @L - _C) i (lage aI - _d) i (lat %aI - l) il (ah_ aIl - _m) i (ld aI - _w) i (ld aI - ch) i (ld aI - w) i (lderC I - ch) i (ldr I - sacr) ile IlI - i (leA I - &) ile (ge @lI - il (ise @l - il (ize @l - s) i (len aI - C) i (ler aI - _) il (l@ %Il - @) illa (_ 'Il@ - &) illard (_ i:A: - _) il (ln Il @) i (less I - _) il (lust Il - _C) i (lo aI - &) ily (_S2i l%I @) i (ness I i (o I2 _) i (o aI @@ -3135,6 +3109,40 @@ igu (e 'i:g igu (_ 'i:g +.group il + @b) il (_ @L + @Cc) il (_ @L + @p) il (_ @L + @r) il (_ @L + @s) il (_ @L + nt) il (_ @L + @v) il (_ @L + @) ila (_ 'Il@ +?3 &) ile (_$w_alt2 @L + _C) il (age aIl + _d) il (at %aIl + l) il (ah_ aIl + _m) il (d aIl + _w) il (d aIl + ch) il (d aIl + w) il (derC Il + ch) il (dr Il + sacr) ile IlI + il (eA Il + &) ile (ge @lI + il (ise @l + il (ize @l + s) il (en aIl + C) il (er aIl + _) il (l@ %Il + @) illa (_ 'Il@ + &) illard (_ i:A: + _) il (ln Il + _) il (lust Il + _C) il (o aIl + &) ily (_S2i l%I + + .group im &) im (_ I#m cl) im aIm @@ -5274,23 +5282,6 @@ _) tsu tsu: _) two tu: ttu (r t@ - @) tu (al tSu: - @) tu (at tSu: - _sta) tu tSu: -?3 _sta) tu (to tS@ - c) tu (al_ =tSu: - r) tue (_ tSu: -?3 tu (la_ tS@ - @) tu (lat =tSU -?3 tu (Ant tSu: -?3 tu (Ancy tSu: - - tu (ous tSu: - @) tur (A tS@r - @) tur (al_ tS=@r - &) tur (y tS@r - &) tur (_ tS3 - &) ture (_ tS3 tz ts tze (_ tsi @@ -5367,7 +5358,26 @@ &) tious S=@s AC) tive (_ =tIv - + +.group tu + @) tu (al tSu: + @) tu (at tSu: + _sta) tu tSu: +?3 _sta) tu (to tS@ + c) tu (al_ =tSu: + r) tue (_ tSu: +?3 tu (la_ tS@ + @) tu (lat =tSU +?3 tu (Ant tSu: +?3 tu (Ancy tSu: + tu (ous tSu: + @) tur (A tS@r + @) tur (al_ tS=@r + &) tur (y tS@r + &) tur (_ tS3 + &) ture (_ tS3 + + .group u u V man) u ju: diff --git a/dictsource/ko_list b/dictsource/ko_list index 8f7a1e71..c7b71a75 100644 --- a/dictsource/ko_list +++ b/dictsource/ko_list @@ -24,8 +24,8 @@ _9X g'u_!||s'ip_! _0C p'Eq_! // Larger numbers -_0M0 tS'h-@n // 10^3 -_1M0 tS'h-@n +_0M0 tS'h@n // 10^3 +_1M0 tS'h@n _0M1 m'an // 10^4 _1M1 m'an _0M2 '@q // 10^8 @@ -50,7 +50,7 @@ _1M4 gj'@N ᄋ i;'u-N ᄌ tS;i;'u-t ᄍ 's-aNdZ;,i;u-t -ᄎ tSh-'i;u-t +ᄎ tSh'i;u-t ᄏ khi;'u-k ᄐ thi;'u-t- ᄑ phi;'u-p diff --git a/dictsource/ko_rules b/dictsource/ko_rules index 2ca039a5..7293bb65 100644 --- a/dictsource/ko_rules +++ b/dictsource/ko_rules @@ -83,7 +83,7 @@ ᄍ 'tS;- // TODO: phoneme .group ᄎ // ㅊ - ᄎ tSh- // TODO: phoneme + ᄎ tSh // TODO: phoneme .group ᄂ // ㄴ ᄂ ;n @@ -198,7 +198,7 @@ ᇀᄂ nn ᇀᄆ mm ᇀ (A th - ᇀ (L02 tSh; + ᇀ (L02 tS;h .group ᆸ // ㅂ ᆸ p @@ -236,7 +236,7 @@ ᆾ t ᆾᄂ nn ᆾᄆ mm - ᆾ (A tSh; + ᆾ (A tS;h .group ᆫ // ㄴ ᆫ n diff --git a/dictsource/pt_list b/dictsource/pt_list index 092d663c..4c930fa4 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -879,6 +879,7 @@ lambreta $alt2 lebre $alt lembrete $alt2 leste $alt2 $verb +lingueta $alt2 lopes $alt macete $alt2 maior $alt @@ -987,6 +988,7 @@ refresco $alt $verb reitora $alt2 relevo $alt2 $noun remorso $alt +renovo $alt $verb retorno $alt $verb rixa x'iS& rocha $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 36d23b68..69e6b3d3 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -573,9 +573,13 @@ _entorp) e (çL03_ e g (Y Z // ge gi gu (Y g a) gu (ent gw + _ar) gu (i gw enxa) gu (e gw lin) gu (e gw lin) gu (i gw + _pin) gu (im_ gw + _pin) gu (ins_ gw + _sa) gu )i gw san) gu (ín gw san) gu (in gw ?1 n) gu (A gw // eg: língua, etc. @@ -851,6 +855,8 @@ _entorp) e (çL03_ e _ens) o (pL04_ O _s) o (prL04_ O _) o (ptL04_ O + p) o (rL02_ o + _dev) o (rL02_ O _defl) o (rL02_ O _impl) o (rL02_ O _inod) o (rL03_ O @@ -926,14 +932,18 @@ _remem) o (rL04_ O ?1 _) qua kwa // quatro, etc. ?1 _) que ke // quente, etc. ?1 _) quei (C k'eI // queira, queima, etc - A) quên (C kw'eIN // frequência, etc. + A) quên (C kw'eN // frequência, etc. + C) quên (C kw'eN // delinquência, etc. + C) quên (A kw'eN // quinquênio, etc. ade) qu (e kw e) qu (estr kw + ese) qu (ív kw _e) qu (in kw fre) qu (ent kw li) qu (id kw lí) qu (id kw n) qu (en kw + _) qu (inqu kw se) qu (en kw tran) qu (il kw ?1 quec kes // esquece, etc. diff --git a/dictsource/te_list b/dictsource/te_list index 9f2a78e6..83bfc551 100644 --- a/dictsource/te_list +++ b/dictsource/te_list @@ -27,7 +27,7 @@ s Es t t#i: u ju: v vi: -w dVbVlju: +w dabalju: x Eks y wa:j z zEd @@ -43,7 +43,7 @@ _3 mu:d.u _4 na:lgu _5 aIdu _6 a:ru -_7 e:d.u +_7 ;e:d.u _8 ;enimidi _9 tommidi _1X padi @@ -56,20 +56,20 @@ _16 padaha:ru _17 padihe:d.u _18 padd#enimidi _19 pamdommadi -_2X iravaI +_2X irav#aI _3X muppaI _4X nalub#aI _5X ja:b#aI -_6X aravaI +_6X arav#aI _7X d.eb#baI _8X jenab#aI _9X tomb#aI -_0C vandala -_0C0 vandalu -_1C okavanda -_0M1 vela -_0M1x velu -_1M1 okavejji +_0C v#andala +_0C0 v#andalu +_1C okav#anda +_0M1 v#ela +_0M1x v#elu +_1M1 okav#ejji _0M2 laks.ala _0M2x laks.alu _1M2 laks.a @@ -87,7 +87,7 @@ _?? aks.aram // 'unknown character' \ bja:kasla:s. / sla:s. © ka:pi:raIt. -¶ ve:ra: +¶ v#e:ra: _, ka:ma: _; semi:ko:lan @@ -110,7 +110,7 @@ __ amd.ar||sko:r U+c01 am U+c02 an U+c03 ah -U+c4d vottu +U+c4d v#ottu // consonants with virama క్ ik @@ -143,7 +143,7 @@ U+c4d vottu ఱ్ ir ల్ il ళ్ il. -వ్ iv +వ్ iv# శ్ iS; ష్ is. స్ is diff --git a/dictsource/te_rules b/dictsource/te_rules index 2ceb5476..77008280 100644 --- a/dictsource/te_rules +++ b/dictsource/te_rules @@ -140,8 +140,8 @@ ళ (B l. .group వ - వ va - వ (B v + వ v#a + వ (B v# .group శ శ S;a @@ -265,12 +265,6 @@ ౖ : // ai length mark ?? -.group 0xe0a4 // devanagari - 0xe0a4 _^_HI // switch to hindi voice for devanagari characters -.group 0xe0a5 // devanagari - 0xe0a5 _^_HI - - .group $ d.a:lar diff --git a/phsource/compile_report b/phsource/compile_report index 5d49eb44..cc441290 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -74 phoneme tables +75 phoneme tables new total base 109 109 consonants 11 119 @@ -30,7 +30,8 @@ consonants 11 119 pa 15 151 ta 23 153 kn 17 149 - ml 21 152 + ml 26 152 + te 16 149 hu 25 124 lt 44 139 lv 29 127 @@ -69,7 +70,7 @@ consonants 11 119 da 45 138 ka 20 115 fa 9 112 - ko 15 116 + ko 19 120 kl 18 119 am 15 114 si 24 155 @@ -95,6 +96,7 @@ b/bu [b] base b/xb [b] base [b] fr [b#] hi + [b#] ml b/xbr [b] fr d/d [d] base [d[] base @@ -161,6 +163,7 @@ d/xd [d] base [z] fr [d#] hi [d] kn + [d#] ml [d] hu [d] lt [d] pl @@ -174,6 +177,7 @@ d/xd_pzd [d^] et d/xdr [d] fr [d.] hi [d.#] hi + [d.#] ml d/xdz [dz] consonants d/x_tap [t#] en [*] pt @@ -210,6 +214,7 @@ dzh/xdzh [dZ] base [dZ;] sq dzh/xdz_pzd [J] base [J#] hi + [J#] ml [J] tr [J] ku envelope/i_risefall [11] zh @@ -271,6 +276,7 @@ g/xg [g] base [g-] en [g] cy [g] fr + [g#] ml [g] ru [g;] bg [g] es @@ -810,11 +816,14 @@ ustop/k_ [k] base ustop/k_asp [k#] consonants [kh] consonants [g#] hi + [g#] ml [kh] zh [k#] ka ustop/k_asp_a [k#] consonants + [g#] ml [k#] ka ustop/k_asp_e [k#] consonants + [g#] ml [k#] ka ustop/k_asp_u [k#] ka ustop/k_ejc [k`] am @@ -862,8 +871,10 @@ ustop/p [p] base ustop/p_ [p] base [ph] consonants [p] fr + [b#] ml ustop/p_asp [ph] consonants [b#] hi + [b#] ml [ph] zh ustop/percus02 [#X2] hi ustop/percus10 [#X1] base @@ -872,6 +883,7 @@ ustop/pl [p] base [ph] consonants [p] base2 [p] fr + [b#] ml [p] lv [p] sk [p] sq @@ -902,6 +914,7 @@ ustop/t [t] base [t] en-us [d.#] hi [t.#] hi + [d.#] ml [t] zhy [t] da ustop/t_ [t] base @@ -919,6 +932,7 @@ ustop/t_dnt [t] base [t] et [d#] hi [t#] hi + [d#] ml [t] hu [t] lt [t] pl @@ -967,6 +981,7 @@ ustop/tsh_sr [tS] sr ustop/tsh_unasp [tS`] am ustop/ts_pzd [tS;] base [J#] hi + [J#] ml [tS;] lt [tS;] ru [dZ;] sq @@ -1081,6 +1096,7 @@ vdiph/aau_3 [aU] hi [aU] ne [aU] kn [aU] ml + [aU] te vdiph/aau_4 [aU] vi vdiph/aau_6 [aU] de vdiph/ae [E:] fr-ca @@ -1092,6 +1108,7 @@ vdiph/ai [aI] base2 [aI] eo [aI] kn [aI] ml + [aI] te [aI] lt [aI] sk [aI] hr @@ -1327,6 +1344,11 @@ voc/dh [D] base voc/dh_ [D] base [D] es voc/j [J^] base +voc/murmur1 [J#] ml + [b#] ml + [d#] ml + [g#] ml + [d.#] ml voc/Q [Q] base [Q^] base [Q] ka @@ -1398,6 +1420,7 @@ vowel/@ [@] base [V] cy [@/] ga [@] kn + [@] te [@] hy [@] ka [@] sl @@ -1511,7 +1534,7 @@ vowel/a_2 [a] base2 vowel/a#_2 [A] nl [a:] nl [a] kn - [a] ml + [a] te [a#] pl [&] hr [a] sv @@ -1523,6 +1546,7 @@ vowel/a_3 [a] en-sc [a/] en-sc [A:] en-sc [aa] en-sc + [a] bn [a:] kn [A] lt [a] lt @@ -1559,11 +1583,13 @@ vowel/a_4 [a] ga [a] es [a] el vowel/a#_4 [a:] nl + [a] ml [a] bg [a/] it [a] tr vowel/a_5 [a:] ta [a:] ml + [a:] te [a/] it [a] la [a] sv @@ -1612,7 +1638,6 @@ vowel/aa_8 [0] en-us vowel/aa_9 [a] fi [a] et [a:] hi - [a] bn [a] ne [a] pa vowel/@_bck [@] hi @@ -1640,6 +1665,7 @@ vowel/e [e] base [e:] kn [e] ml [e:] ml + [e:] te [e] hr [e/] it [e:] la @@ -1753,6 +1779,7 @@ vowel/e_mid2 [E] af [e] nci [e] fi [E] nl + [e] te [e] sk [e] bg [e/] it @@ -1788,6 +1815,7 @@ vowel/i [i] base [i:] ta [i:] kn [i:] ml + [i:] te [i:] hu [i] it [i] es @@ -1831,6 +1859,7 @@ vowel/i_6 [i] hi [i] ta [i] kn [i] ml + [i] te [i:] lt [i] lv [i:] lv @@ -1950,6 +1979,8 @@ vowel/o [o] base2 [o:] kn [o] ml [o:] ml + [o] te + [o:] te [o] it [o/] it [O] la @@ -2119,6 +2150,8 @@ vowel/u#_5 [y] vi vowel/u_6 [u] ta [u2] ta [u:] ta + [u] te + [u:] te [U] pt-pt [u] pt-pt [u] ku diff --git a/phsource/d/xd b/phsource/d/xd index a2b1a0d89de7fb25b100f3bb1b0d4824fd2782cb..3cad09d07e17d7f43f6783a4b3fa3026ac234813 100644 GIT binary patch delta 84 zcmaDN@kC<6bYTW57AY1MMg|5J#!7xRCJ6xshK;M(S&+qJ_+=SE;+yYrv@uWi;%LMv F2>?oa4OIXD delta 84 zcmaDN@kC<6bYVs*7AY1MMg|5J#!7xRCJ6xs#*M4kS&+qJ_+=SE;+yYrv@uWi;%LMv F2>?rZ4O;*J diff --git a/phsource/ph_bengali b/phsource/ph_bengali index 7b93cc90..a7dd4bc1 100755 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -29,7 +29,7 @@ endphoneme phoneme a vowel starttype #a endtype #a length 225 - FMT(vowel/aa_9) + FMT(vowel/a_3) endphoneme diff --git a/phsource/ph_danish b/phsource/ph_danish index 4ebfed75..885bbbd9 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -23,6 +23,17 @@ phoneme @- // very short schwa ipa NULL // @-* is used to make 'r' ENDIF length 40 +// "femten", "manden" - only a short "n" sound + IF nextPhW(n) THEN + length 20 + ENDIF +IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN + length 15 +ENDIF +// "lige" [li@-] +IF prevPhW(i) AND thisPh(isWordEnd) THEN + length 15 +ENDIF FMT(vowel/@-) endphoneme @@ -45,22 +56,22 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 95 //150 + length 140 //225 // PB long vowel followed by consonant and certain vowels "gide" IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN - length 150 + length 225 ENDIF // "gider", vrider" IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN - length 95 + length 140 ENDIF -// PB long vowel followed by certain vowels - "pigen" [p'i@-n] -IF nextPhW(#@) OR nextPhW(#e) THEN - length 150 +// PB long vowel followed by [@-] - "pigen" [p'i@-n] +IF nextPhW(@-) OR nextPhW(V) THEN + length 225 ENDIF // Only this vowel (in this case [i]) IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN - length 150 + length 225 ENDIF // This vowel is word end - longer because it sounds too short // "sig", "si" @@ -69,14 +80,23 @@ IF thisPh(isWordEnd) THEN ENDIF // "vilje" - short followed by 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 95 + length 140 ENDIF // PB "tie", "stige", "krige" vowel + vowel: extra length // What is causing this very short [i] in words with final [@-]? -// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n] -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN +// NOT "galleriet" [g,?&lVR'i@-D] +IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN length 240 ENDIF +//"skider" short +IF nextPhW(D) AND next2PhW(V) THEN + length 140 +ENDIF +//"skideren" long +IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN + length 225 +ENDIF + FMT(vowel/i_4) endphoneme @@ -84,7 +104,7 @@ endphoneme // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i - length 90 + length 100 IfNextVowelAppend(;) FMT(vowel/i_4) endphoneme @@ -99,26 +119,30 @@ endphoneme phoneme e vowel starttype #e endtype #e - length 95 //150 + length 140 //225 // "delte", "mente" IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN - length 150 + length 225 ENDIF // PB "ring", "ringe" IF nextPhW(N) THEN - length 95 + length 140 ENDIF // PB "enig", "enige", "evig" IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 150 + length 225 ENDIF // Only "e" IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 150 + length 225 ENDIF // "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 95 + length 140 +ENDIF +// "et" +IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN + length 120 ENDIF FMT(vowel/e) endphoneme @@ -127,18 +151,18 @@ endphoneme // "skille" vs. "skele", "pille" vs. "pile" phoneme ?e vowel starttype #e endtype #e - length 90 + length 140 FMT(vowel/e) endphoneme phoneme E vowel starttype #e endtype #e - length 100 //150 -// "værelse", "breve" -IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN -// length 150 + length 140 //225 +// no link with next vowel +IF thisPh(isWordEnd) THEN + IfNextVowelAppend(_!) ENDIF -// "ræve" + // "ræve" IF nextVowel(#@) OR nextVowel(#e) THEN length 160 ENDIF @@ -156,15 +180,15 @@ IF nextPhW(isNotVowel) AND next2PhW(i) THEN ENDIF // "længe" - short - 2 consonants => 1 consonant IF nextPhW(N) THEN - length 120 + length 100 ENDIF // "værelse" [v'E3-Vls@_!] IF nextPhW(3-) AND next2PhW(V) THEN - length 120 + length 100 ENDIF // "mælkebøtte" - short followed by 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 120 + length 140 ENDIF FMT(vowel/e_mid2) endphoneme @@ -174,22 +198,23 @@ endphoneme phoneme ?E vowel starttype #e endtype #e ipa ε - length 100 + length 140 FMT(vowel/e_mid2) endphoneme phoneme & vowel starttype #e endtype #e ipa a - length 90 //150 -// "same", "sale", "bade" - consonant + gooup #e or group #@: long -IF next2PhW(#@) OR next2PhW(#e) THEN - length 150 + length 140 //225 +// "same", "sale", "bade" - consonant + @-: long +// but NOT "hinanden" +IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN + length 225 ENDIF -// ThisPh + gooup #e or group #@ +// ThisPh + V or group #@ // "ae", "aer" vowel + vowel: extra length -IF nextPhW(#@) OR nextPhW(#e) THEN - length 220 +IF nextPhW(@-) OR nextPhW(V) THEN + length 260 ENDIF // This vowel is word end - longer because it sounds too short // "ja", "Omaha" @@ -198,7 +223,7 @@ IF thisPh(isWordEnd) THEN ENDIF // Only this vowel (in this case [&]) IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN - length 150 + length 225 ENDIF // "stadig" [st&Di], "stadigt" [st&Dit] IF nextPhW(isNotVowel) AND next2PhW(i) THEN @@ -206,7 +231,7 @@ IF nextPhW(isNotVowel) AND next2PhW(i) THEN ENDIF // "Alfie", "alfer" - short before 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 90 + length 140 ENDIF FMT(vowel/ee_2) endphoneme @@ -217,20 +242,20 @@ endphoneme phoneme ?& ipa a vowel starttype #e endtype #e - length 90 + length 140 FMT(vowel/ee_2) endphoneme // PB added for the æ in "dræbt" phoneme &# vowel starttype #e endtype #e - length 120 -IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 + length 140 //120 +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN + length 120 ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 150 +// "drenge" +IF nextPhW(N) THEN + length 140 ENDIF FMT(vowel/&) endphoneme @@ -239,33 +264,16 @@ endphoneme // "revl" vs. "tremme" phoneme ?&# vowel starttype #e endtype #e - length 90 + length 140 FMT(vowel/&) endphoneme -//phoneme a -// vowel starttype #a endtype #a -// length 90 //150 -//IF nextPhW(#@) OR nextPhW(#e) THEN -// length 150 -//ENDIF -// FMT(vowel/a_2) -//endphoneme - -// PB short (glottal) a -// "bragt" -//phoneme ?a -// vowel starttype #a endtype #a -// length 90 -// FMT(vowel/a_2) -//endphoneme - phoneme A // PB changed to a_8 vowel starttype #a endtype #a - length 90 //150 + length 140 //225 // PB long vowel followed by consonant and certain vowels - "drabelig" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN - length 150 +IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN + length 225 ENDIF // "far", "bastard" - a bit longer followed by [r] IF nextPhW(r) AND nextPhW(isWordEnd) THEN @@ -273,11 +281,19 @@ IF nextPhW(r) AND nextPhW(isWordEnd) THEN ENDIF // "bange" [bAN@-] - [N] = 2 consonants (ng) => short IF nextPhW(N) THEN - length 90 + length 140 ENDIF // "fare" [f'A:A] IF nextPhW(A) THEN - length 150 + length 225 +ENDIF +// "av" [Au] - a bit longer +IF nextPhW(isWordEnd) THEN + length 120 +ENDIF +// "magnat" [mAun&d] - sounds too short +IF nextPhW(u) OR nextPhW(w) THEN + length 130 ENDIF FMT(vowel/a_8) endphoneme @@ -286,7 +302,7 @@ endphoneme // "drab" vs. "drabelig" phoneme ?A vowel starttype #a endtype #a - length 90 + length 140 // "straffeattest", "straffe", "rapid" - a bit longer after R IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN length 110 @@ -296,10 +312,14 @@ endphoneme phoneme u vowel starttype #u endtype #u - length 90 //150 + length 140 //225 +// "fugl" [ful] - a bit longer +IF nextPhW(isWordEnd) THEN + length 120 +ENDIF // "suge", "uge", "bluse", "julegave" -IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN - length 150 +IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN + length 225 ENDIF // "umulig" [u:m'uli] IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN @@ -307,11 +327,7 @@ IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN ENDIF // Only "u" IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 150 -ENDIF -// "fugl" [ful] - a bit longer -IF nextPhW(isWordEnd) THEN - length 120 + length 225 ENDIF FMT(vowel/u_bck) endphoneme @@ -320,20 +336,33 @@ endphoneme // "tude" vs. "tuden" - [tuD3] [t?uD@n] phoneme ?u vowel starttype #u endtype #u - length 90 + length 140 FMT(vowel/u_bck) endphoneme phoneme o vowel starttype #o endtype #o - length 90 //150 + length 140 //225 // "bore", "borer" -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN - length 150 +IF nextPhW(V) OR nextPhW(#@) THEN + length 225 +ENDIF +// "kone", "koner" +IF next2PhW(V) OR next2PhW(#@) THEN + length 225 ENDIF // "modig" - long vowel after consonant + [i] IF nextPhW(D) AND next2PhW(i) THEN - length 150 + length 225 +ENDIF +// Only "o" +IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN + length 120 +ENDIF +// This vowel is word end - longer because it sounds too short +// "ko" +IF thisPh(isWordEnd) THEN + length 120 ENDIF FMT(vowel/o_2) endphoneme @@ -342,24 +371,33 @@ endphoneme // "patron" vs. "kone" phoneme ?o vowel starttype #o endtype #o - length 95 + length 140 FMT(vowel/o_2) endphoneme phoneme O vowel starttype #o endtype #o - length 90 // 150 + length 140 // 150 // "sove", "sover" - consonant + #e or #@: long -IF next2PhW(#@) OR next2PhW(#e) THEN - length 150 +IF next2PhW(@-) OR next2PhW(V) THEN + length 225 ENDIF -// PB "gået" - ThisPh + #e or #@ -IF nextPhW(#e) OR nextPhW(#@) THEN - length 150 +// PB "gået" - ThisPh + V or @- +IF nextPhW(V) OR nextPhW(@-) THEN + length 225 ENDIF // "rådig" IF nextVowel(i) AND nextVowel(isFinalVowel) THEN length 180 +ENDIF +// This vowel is word end - longer because it sounds too short +// "på", "gå" +IF thisPh(isWordEnd) THEN + length 120 +ENDIF +// "såre", "sårede" [s'O:?OD@-] +IF nextPhW(O) OR nextPhW(?O) THEN + length 225 ENDIF FMT(vowel/o_5) endphoneme @@ -368,36 +406,33 @@ endphoneme // "toget" vs. "tåget" phoneme ?O vowel starttype #o endtype #o - length 90 + length 140 +// "hoven" +IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN + length 120 +ENDIF FMT(vowel/o_5) endphoneme phoneme V vowel starttype #@ endtype #@ - length 150 -// "sport" [spV:t] -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN - length 150 -ENDIF -// PB short V in "holder", "solder" -IF nextPhW(isNotVowel) AND next2Ph(V) THEN - length 90 -ENDIF -// "snorke", "snorker", årlig -IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN + length 140 //225 +// "forlig" +IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 180 ENDIF -// "sove" [sVw3] - longer followed by w + 3 -IF nextPhW(w) AND next2PhW(3) THEN - length 220 -ENDIF -// PB "konge" +// PB "konge" - ng=>n IF nextPhW(N) THEN - length 95 + length 100 +ENDIF +// Only [V] - "og" +IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN + length 120 +ENDIF +// This vowel is word end - longer because it sounds too short +// "for" [fV] +IF thisPh(isWordEnd) THEN + length 120 ENDIF FMT(vowel/V_4) endphoneme @@ -406,19 +441,15 @@ endphoneme // "forstår" vs. "kåre" phoneme ?V vowel starttype #@ endtype #@ - length 90 + length 140 FMT(vowel/V_4) endphoneme phoneme 0 vowel starttype #o endtype #o - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 150 + length 140 //225 +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN + length 225 ENDIF FMT(vowel/oo_2) endphoneme @@ -426,7 +457,7 @@ endphoneme // Short 0 "sukker" phoneme ?0 vowel starttype #o endtype #o - length 90 + length 140 FMT(vowel/oo_2) endphoneme @@ -434,28 +465,28 @@ phoneme y vowel starttype #i endtype #i // Length changed to short since most vowels are short. // It's probably easier only to make rules for long vowels. - length 90 //150 + length 140 //225 // PB long vowel followed by consonant and certain vowels -// "lyde", "lyder" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN - length 150 +// "gyde", "gyder" +IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN + length 225 ENDIF // Only this vowel (in this case [y]) IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 150 + length 225 ENDIF // "dydig" [dyDi] IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 150 + length 225 ENDIF -// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] -IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN +// "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] +IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN length 200 ENDIF // "tyve" IF nextPhW(?u) AND next2PhW(@-) THEN - length 150 + length 225 ENDIF FMT(vowel/y) endphoneme @@ -464,26 +495,26 @@ endphoneme // "kylling" vs. "kyle", "krybbe" vs. "krybe" phoneme ?y vowel starttype #i endtype #i - length 90 + length 140 FMT(vowel/y) endphoneme phoneme Y vowel starttype #i endtype #i - length 150 + length 225 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop - length 90 + length 140 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 150 + length 225 ENDIF FMT(vowel/yy) endphoneme phoneme W vowel starttype #@ endtype #@ - length 90 //160 + length 140 //160 // "kløe" vowel + vowel: extra length IF nextPhW(#@) OR nextPhW(#e) THEN length 220 @@ -494,7 +525,7 @@ IF next2PhW(#@) OR next2PhW(#e) THEN ENDIF // "røveri" but NOT "surfer" [sWf?V] TEST IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN - length 90 + length 140 ENDIF // PB "nødig", "nødigt", "kølige" IF nextVowel(i) THEN @@ -506,7 +537,16 @@ IF nextPhW(w) AND nextVowel(@-) THEN ENDIF // "børnebog" IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN - length 150 + length 225 +ENDIF +// This vowel is word end - longer because it sounds too short +// "dø" [dW] +IF thisPh(isWordEnd) THEN + length 120 +ENDIF +// PB "synge" +IF nextPhW(N) THEN + length 140 ENDIF FMT(vowel/oe) endphoneme @@ -515,21 +555,17 @@ endphoneme // "prøv" vs. "prøve" phoneme ?W vowel starttype #@ endtype #@ - length 95 + length 140 FMT(vowel/oe) endphoneme // Added for the ø in "røv", "røg", "øje" instead of [V3] phoneme W# vowel starttype #@ endtype #@ - length 90 //150 -IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop -// length 90 -ENDIF + length 140 //225 // PB long vowel followed by consonant and certain vowels IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN - length 150 + length 225 ENDIF FMT(vowel/V) endphoneme @@ -538,7 +574,7 @@ endphoneme // "rømme" phoneme ?W# vowel starttype #@ endtype #@ - length 90 + length 140 FMT(vowel/V) endphoneme @@ -547,7 +583,7 @@ phoneme aI length 300 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN glstop - length 150 + length 225 ENDIF // "dreje" [dR'aI@-_!] IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN @@ -571,6 +607,10 @@ endphoneme phoneme l liquid lengthmod 7 +// [ll] => [-l] - avoid double l +IF nextPhW(l) THEN +// ChangePhoneme(-) +ENDIF ChangePhoneme(l/3) // CALL base/l endphoneme @@ -579,16 +619,16 @@ phoneme l/3 // Replacement for [l/] liquid lengthmod 7 - IF nextPh(isVowel) THEN + IF nextPhW(isVowel) THEN // ChangePhoneme(l) ENDIF PrevVowelEndings VowelEnding(l/l_@) - VowelEnding(l/l_a,-70) // kvalt, kapital - VowelEnding(l/l_e, -40) - VowelEnding(l/l_i, -70) - VowelEnding(l/l_o,-70) // stole, skole, pistol + VowelEnding(l/l_a) + VowelEnding(l/l_e, -50) // hjælpe + VowelEnding(l/l_i, -70) // flygte? + VowelEnding(l/l_o,-35) // stole, skole, pistol VowelEnding(l/l_u, -70) EndSwitch @@ -678,7 +718,10 @@ endphoneme phoneme j liquid palatal lengthmod 7 - +// no link with next vowel +IF thisPh(isWordEnd) THEN + IfNextVowelAppend(_!) +ENDIF IF nextPhW(isVowel) THEN NextVowelStarts VowelStart(j/j@) @@ -699,4 +742,4 @@ Vowelout len=70 Vowelout len=70 FMT(j/j_) ENDIF -endphoneme \ No newline at end of file +endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 4a934108..461bbb44 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -439,7 +439,7 @@ endphoneme phoneme c# CALL base/tS; - ipa ch + ipa cU+02B0 endphoneme diff --git a/phsource/ph_korean b/phsource/ph_korean index 3e40d0cb..aed3f596 100644 --- a/phsource/ph_korean +++ b/phsource/ph_korean @@ -95,6 +95,26 @@ phoneme dZ; // voiced /ㅈ/ FMT(dzh/dzh) addWav(x/dz_pzd) endphoneme +phoneme s- + import_phoneme base/s // temporary +endphoneme + +phoneme q- + import_phoneme base/q // temporary +endphoneme + +phoneme tS;- + import_phoneme base/tS; // temporary +endphoneme + +phoneme d- + import_phoneme base/d +endphoneme + +// phoneme tSh; ?? changed to [tS;h] in ko_rules +// phoneme h- in ko_list (for 10^3) ?? changed to [h] +// phoneme tSh- changed to tSh + phoneme * // r(ㄹ) at initial, medial vcd alv flp rhotic ipa ɾ diff --git a/phsource/ph_malayalam b/phsource/ph_malayalam index 47b677d3..9c6c09e4 100644 --- a/phsource/ph_malayalam +++ b/phsource/ph_malayalam @@ -25,7 +25,7 @@ phoneme a length 130 IF thisPh(isStressed) OR thisPh(isFirstVowel) OR thisPh(isWordEnd) THEN - FMT(vowel/a#_2) + FMT(vowel/a#_4) ELSE ChangeIfUnstressed(@) @@ -144,3 +144,121 @@ phoneme d2 // 'rr' sounds like English 'd' endphoneme +// Aspirated voice stops, sound like aspirated unvoiced stops ? + +phoneme b# + vls blb stop prevoice + lengthmod 2 + voicingswitch b + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 + Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 + + IF PreVoicing THEN + IF prevPhW(isVowel) THEN + FMT(b/xb) + ELSE + FMT(voc/murmur1) + ENDIF + ENDIF + + IF nextPh(isPause2) THEN + WAV(ustop/p_) + ENDIF + IF nextPh(l) THEN + WAV(ustop/pl) + ENDIF + WAV(ustop/p_asp) +endphoneme + + +phoneme d# + vls dnt stop prevoice + lengthmod 2 + voicingswitch d + Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16 + Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + + IF PreVoicing THEN + IF prevPhW(isVowel) THEN + FMT(d/xd) + ELSE + FMT(voc/murmur1) + ENDIF + ENDIF + + IF nextPh(isPause2) THEN + WAV(ustop/t_dnt, 35) + ENDIF + WAV(ustop/t_dnt, 50) +endphoneme + + +phoneme d.# + vls rfx stop prevoice + lengthmod 2 + ipa ʈU+02B0 + Vowelin f1=0 f2=1800 -300 300 f3=-400 80 + Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 + + IF PreVoicing THEN + IF prevPhW(isVowel) THEN + FMT(d/xdr) + ELSE + FMT(voc/murmur1) + ENDIF + ENDIF + + voicingswitch d.# + WAV(ustop/t) +endphoneme + + +phoneme J# + vls pal afr sibilant palatal prevoice + voicingswitch c# + lengthmod 2 + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + + IF PreVoicing THEN + IF prevPhW(isVowel) THEN + FMT(dzh/xdz_pzd) + ELSE + FMT(voc/murmur1) + ENDIF + ENDIF + + IF nextPh(isPause2) THEN + WAV(ustop/ts_pzd) + ENDIF + WAV(ustop/ts_pzd) +endphoneme + + +phoneme g# + vls vel stop prevoice + lengthmod 2 + Vowelin f1=1 f2=1400 -100 100 f3=-150 80 + Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 + + IF PreVoicing THEN + IF prevPhW(isVowel) THEN + FMT(g/xg) + ELSE + FMT(voc/murmur1) + ENDIF + ENDIF + + + IF nextPh(isPause2) THEN + WAV(ustop/k_asp, 40) + ENDIF + IF nextPhW(#e) OR nextPhW(#i) THEN + WAV(ustop/k_asp_e, 40) + ELIF nextPhW(#o) OR nextPhW(#u) THEN + WAV(ustop/k_asp_a, 25) + ELSE + WAV(ustop/k_asp_a, 30) + ENDIF +endphoneme + + diff --git a/phsource/phonemes b/phsource/phonemes index a7587850..4b57c0ac 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1745,6 +1745,9 @@ include ph_kannada phonemetable ml hi include ph_malayalam +phonemetable te hi +include ph_telugu + phonemetable hu base @@ -1923,9 +1926,6 @@ include ph_slovenian //phonemetable dv hi //include ph_divehi -//phonemetable te hi -//include ph_telugu - //phonemetable tn base //include ph_setswana diff --git a/phsource/voc/murmur1 b/phsource/voc/murmur1 new file mode 100755 index 0000000000000000000000000000000000000000..42e8e81681393c59442f93e71d37cb949a67188c GIT binary patch literal 5277 zcmeH~dsGzH9mfZDX6|EN`B_5_=v_ABpQR7 z#z)YqF($S(iqR<1`lvBRjap3v6>V$OXj(0`QLARF#s@@!j-rhvr>E_|DfiAjbLV@0 z_jhOJoclSyZ@)f2&Mod&)EN*2F?!;7{pv&!L-mJ8TQ)s?*SPyacJx&us&!`AG0Sy- z_GT1G1pgVXuQj;!K0sFn5T8dS5XLBi?rZ34cv@GUCK&Jpq30ta(UItRx-yUO;&LL0 zrxP?ulcb)Uj7sLV5EnUuP)Oy0QX)8_WFtZBjNTdD8bc5gd|7N&Zs@D-4T6~BY^wx) zk1Cz+1>JAoz41fkqN%rdUWs?t`>k<*2!|6>l3G$$q$Z~y%UqB>G&eQxa>3x96MK<` z#|zgK=Jftq&$9fSoWzVZDV~m=xJ3U3_X6irj;Y$G>W@@|+ChC=HEAQYIob=FU)!dp ztNWEf3Q%_0$J-VA200`zl?>8Uo85Ls{7l>4W`Flj`8}x_Kb5~)~Xd~e@u4BqvS(!vwT6G zC0~__q?5KawnMfg>7Z00541n4{8BYKK5&+}Y41YcC4Xbg#sC?6El?g<7gOm^^=@s zJO>tleV_rv!=J!%Jzo`E2RFbia5p>#uR{fOM^n)j^f%_bQzsS+h~=}qvz2lX&XodDS!cc>0z`;H&fl{8hQx$ zD@ca}U>3Xvrh!}ZSo$utmYPBhrutF^R2t=_qN!8ld*nzmmi)?4ZJ22&H_SDxH=Hmu z8@yyTIe;8PR**}{P2>?WLNb(xil>}Z6M2ZNCeM(sPy^`<5Uu|oGwO$aib_xtYJgke zc>SNyupS%$o52cD3Ccj$w}%hc-9I*ukil@ErKMH-7c%5MJYM&x(oTkUGPIN7hfIb$ z9~E8s9vR+!z<}&_GPKtW?KQ*yXU%Y@CVz7)8K{=UFFhc_!`q`|Ac%igGf>fidv1dK z&P`y@r;VG?@Soebi9y_sHf|zW2z}2@yqx==-9#Gk-@A!njss5GTNm?O+?4R$gr>yh zoz>*p6k}?S^m$p!9v6B{FPvW->EEwp+B01TPkW|U$rt^H7iSkP@4h;BbSBs3!^BPT zy<=+JK}WHYFROZ0o-EZ$`ErFkMmEZ2(oS1MRK+}Nsb#8plqq0b#&2hb<1#RT8Ur(! zb=)nX!2F@LKx(qrX=`0my`5s-k3AZK5*vz(b;(BqSm?av;E7qgdt=6U17p=Kg zY^}A-vgBF}mi^|L`gcW4Z=1TABE~hwF~&S&$S4^p<2B)wuuG^C<_hJ)7-5(&NGKAz z2_eBMH1U`C)BF*BAO8`*j{gN;$-l}^;a}um;K%Z%{PTP)0Ch0DF)^96H+ zsbh{YXPF4o%wX1}cg(gh*O?2t_9v#ExyW2)ZZmh7Z<$-n-i8?%HN!33D! z<59Q?y@7)01pF0zRre(`;8OUT`;LS`4it;xQCP3(bI>4Efj-b3)Hle04frPd5`BVJ zp+%??y@l4IJ?IpQpk@Rxzy!XI&Y;iq=%1s>=vmYYWuasg(%qB`DM&;{#2^|)p+`xq!hx`-?x`~16L13D3|n9!T7nLu^SU!SiMHuE$D$`u*8f0; VjEBHz<0jh4&`ySSGW^iU@DKOBNech~ literal 0 HcmV?d00001 diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 3905865f..027949cf 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -619,7 +619,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed } - if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE) + if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE)) { phlist[ix].length = 128; // length_mod phlist[ix].env = PITCHfall; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 8d47553c..f76225b0 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.03c 23.Mar.13"; +const char *version_string = "1.47.03d 26.Mar.13"; const int version_phdata = 0x014701; int option_device_number = -1; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 3a3631d6..5d1da5bc 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1426,7 +1426,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) EndAmplitude(); - if(p->prepause > 0) + if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE)) DoPause(p->prepause,1); done_phoneme_marker = 0; @@ -1455,6 +1455,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) case phSTOP: released = 0; + ph = p->ph; if(next->type==phVOWEL) { released = 1; @@ -1468,6 +1469,23 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if(released == 0) p->synthflags |= SFLAG_NEXT_PAUSE; + if(ph->phflags & phPREVOICE) + { + // a period of voicing before the release + memset(&fmtp, 0, sizeof(fmtp)); + InterpretPhoneme(NULL, 0x01, p, &phdata, &worddata); + fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; + fmtp.fmt_amp = phdata.sound_param[pd_FMT]; + + if(last_pitch_cmd < 0) + { + DoAmplitude(next->amp,NULL); + DoPitch(envelope_data[p->env],next->pitch1,next->pitch2); + } + + DoSpect2(ph, 0, &fmtp, p, 0); + } + InterpretPhoneme(NULL, 0, p, &phdata, &worddata); phdata.pd_control |= pd_DONTLENGTHEN; DoSample3(&phdata, 0, 0); diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 066edfd5..57cdcabf 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -79,7 +79,7 @@ ALPHABET alphabets [] = { {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, - {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, + {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0}, {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, diff --git a/src/voices.cpp b/src/voices.cpp index bdaeec1d..a762abdf 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control) // which directory to look for a named voice. List of voice names, must end in a space. static const char *voices_asia = - "fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue "; + "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue "; static const char *voices_europe = "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; From e1ff0b56dc3cec3f7e96b5b2bc8ce3db85cdcc20 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 27 Mar 2013 00:40:12 +0000 Subject: [PATCH 03/10] 1.47.03d (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/voices/test/ak | 4 ---- espeak-data/voices/test/az | 3 --- espeak-data/voices/test/dv | 3 --- espeak-data/voices/test/ht | 3 --- espeak-data/voices/test/kk | 3 --- espeak-data/voices/test/mt | 3 --- espeak-data/voices/test/nso | 3 --- espeak-data/voices/test/prs | 5 ----- espeak-data/voices/test/rw | 4 ---- espeak-data/voices/test/tn | 3 --- espeak-data/voices/test/tt | 5 ----- espeak-data/voices/test/wo | 4 ---- phsource/voc/murmur1 | Bin 13 files changed, 43 deletions(-) delete mode 100644 espeak-data/voices/test/ak delete mode 100644 espeak-data/voices/test/az delete mode 100644 espeak-data/voices/test/dv delete mode 100644 espeak-data/voices/test/ht delete mode 100644 espeak-data/voices/test/kk delete mode 100644 espeak-data/voices/test/mt delete mode 100644 espeak-data/voices/test/nso delete mode 100644 espeak-data/voices/test/prs delete mode 100644 espeak-data/voices/test/rw delete mode 100644 espeak-data/voices/test/tn delete mode 100644 espeak-data/voices/test/tt delete mode 100644 espeak-data/voices/test/wo mode change 100755 => 100644 phsource/voc/murmur1 diff --git a/espeak-data/voices/test/ak b/espeak-data/voices/test/ak deleted file mode 100644 index ab42a223..00000000 --- a/espeak-data/voices/test/ak +++ /dev/null @@ -1,4 +0,0 @@ -name akan-test -language ak -translator sw - diff --git a/espeak-data/voices/test/az b/espeak-data/voices/test/az deleted file mode 100644 index 6fdf3827..00000000 --- a/espeak-data/voices/test/az +++ /dev/null @@ -1,3 +0,0 @@ -name azerbaijani-test -language az - diff --git a/espeak-data/voices/test/dv b/espeak-data/voices/test/dv deleted file mode 100644 index d8562c44..00000000 --- a/espeak-data/voices/test/dv +++ /dev/null @@ -1,3 +0,0 @@ -name divehi-test -language dv - diff --git a/espeak-data/voices/test/ht b/espeak-data/voices/test/ht deleted file mode 100644 index acc5d7bc..00000000 --- a/espeak-data/voices/test/ht +++ /dev/null @@ -1,3 +0,0 @@ -name haitian -language ht - diff --git a/espeak-data/voices/test/kk b/espeak-data/voices/test/kk deleted file mode 100644 index c99d4ecf..00000000 --- a/espeak-data/voices/test/kk +++ /dev/null @@ -1,3 +0,0 @@ -name kazakh -language kk - diff --git a/espeak-data/voices/test/mt b/espeak-data/voices/test/mt deleted file mode 100644 index bdf31d11..00000000 --- a/espeak-data/voices/test/mt +++ /dev/null @@ -1,3 +0,0 @@ -name maltese-test -language mt - diff --git a/espeak-data/voices/test/nso b/espeak-data/voices/test/nso deleted file mode 100644 index 7da1397f..00000000 --- a/espeak-data/voices/test/nso +++ /dev/null @@ -1,3 +0,0 @@ -name northern-sotho -language nso -translator sw diff --git a/espeak-data/voices/test/prs b/espeak-data/voices/test/prs deleted file mode 100644 index 52d494fc..00000000 --- a/espeak-data/voices/test/prs +++ /dev/null @@ -1,5 +0,0 @@ -name dari-test -language prs - -translator fa -stressrule 10 diff --git a/espeak-data/voices/test/rw b/espeak-data/voices/test/rw deleted file mode 100644 index eecc8b7e..00000000 --- a/espeak-data/voices/test/rw +++ /dev/null @@ -1,4 +0,0 @@ -name kinyarwanda-test -language rw -gender male - diff --git a/espeak-data/voices/test/tn b/espeak-data/voices/test/tn deleted file mode 100644 index e3569fa5..00000000 --- a/espeak-data/voices/test/tn +++ /dev/null @@ -1,3 +0,0 @@ -name setswana-test -language tn - diff --git a/espeak-data/voices/test/tt b/espeak-data/voices/test/tt deleted file mode 100644 index d1586fe1..00000000 --- a/espeak-data/voices/test/tt +++ /dev/null @@ -1,5 +0,0 @@ -name tatar-test -language tt - -tunes s3 c3 q3 e3 - diff --git a/espeak-data/voices/test/wo b/espeak-data/voices/test/wo deleted file mode 100644 index d4ac9f2e..00000000 --- a/espeak-data/voices/test/wo +++ /dev/null @@ -1,4 +0,0 @@ -name wolof-test -language wo - - diff --git a/phsource/voc/murmur1 b/phsource/voc/murmur1 old mode 100755 new mode 100644 From ee8a2db70dff27661cf064f6ffbd81200e906f71 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 27 Mar 2013 00:44:16 +0000 Subject: [PATCH 04/10] autotools: update dictionary build to build the re-added 'te' dictionary --- Makefile.am | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile.am b/Makefile.am index 8b3ef227..c5131fc2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -181,6 +181,7 @@ dictionaries: \ espeak-data/sv_dict \ espeak-data/sw_dict \ espeak-data/ta_dict \ + espeak-data/te_dict \ espeak-data/tr_dict \ espeak-data/ur_dict \ espeak-data/vi_dict \ @@ -517,6 +518,12 @@ dictsource/ta_extra: espeak-data/ta_dict: src/espeak espeak-data/phontab dictsource/ta_list dictsource/ta_rules dictsource/ta_extra cd dictsource && ../src/espeak --compile=ta && cd .. +te: espeak-data/te_dict +dictsource/te_extra: + touch dictsource/te_extra +espeak-data/te_dict: src/espeak espeak-data/phontab dictsource/te_list dictsource/te_rules dictsource/te_extra + cd dictsource && ../src/espeak --compile=te && cd .. + tr: espeak-data/tr_dict dictsource/tr_extra: touch dictsource/tr_extra From 665afbf8d2e08b2845d559c7db6d41888530dcd8 Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 29 Mar 2013 11:23:30 +0000 Subject: [PATCH 05/10] [1.47.03e] lang=zh: Fix: was speaking Chinese character names as character codes. lang=hr, sr: Fix: speak Cyrillic character names in the local langauge. Phoneme definitions: add new statement type "LengthAdd ". git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@335 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/an_list | 4 + dictsource/bn_list | 4 +- dictsource/da_list | 167 ++++++++++++------------ dictsource/da_rules | 53 ++++---- dictsource/dict_phonemes | 21 +-- dictsource/en_list | 21 ++- dictsource/en_rules | 30 +++-- dictsource/es_list | 3 + dictsource/hbs_list | 50 +++++++- dictsource/hbs_rules | 7 +- dictsource/nl_list | 9 +- dictsource/nl_rules | 17 ++- dictsource/pt_list | 77 +++++------ dictsource/pt_rules | 31 +++-- espeak-data/voices/en-us | 2 +- phsource/compile_report | 4 +- phsource/ph_danish | 270 ++++++++++++++++----------------------- phsource/ph_english | 27 ++++ phsource/ph_english_us | 13 +- phsource/ph_portugal | 20 +-- src/compiledata.cpp | 4 +- src/dictionary.cpp | 22 +++- src/numbers.cpp | 2 +- src/synthdata.cpp | 12 +- src/tr_languages.cpp | 12 +- src/translate.h | 1 + 26 files changed, 507 insertions(+), 376 deletions(-) diff --git a/dictsource/an_list b/dictsource/an_list index 43df719e..33ede621 100755 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -118,6 +118,9 @@ _x#º %o // for 1º 2º 3º _x#ª %a º orDin'al||maskul'in ª orDin'al||femen'in +ºc gr'aUs||T'e +ºf gr'aUs||'Efe +ºk gr'aUs||k'a _1ox prim'Er _2ox seQ'und @@ -483,6 +486,7 @@ espeak isp'ik facebook f'eIsbuk firefox f'aIrfoks google g'ugEl +hotmail xotm'eIl (i phone) 'aIfon iphone 'aIfon (i pod) 'aIpod diff --git a/dictsource/bn_list b/dictsource/bn_list index 0e4e124f..56852140 100755 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -1,4 +1,4 @@ -// Translation rules for Bengali +// Translation rules for Bengali // This file is UTF8 encoded // Numbers @@ -200,6 +200,8 @@ _dpt dOsomik ঁ tS'Ondrobindu ় b'indu +_, koma + // Punctuation । dVn.d.V diff --git a/dictsource/da_list b/dictsource/da_list index af824667..b8c481e2 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -102,19 +102,19 @@ _9 n'i _10 t'i _11 'Elv@ _12 t'Vl -_13 tR'?&#d@-n +_13 t*'?&#d@-n _14 fj'ord@-n _15 f'Emd@-n -_16 s'ajsd@-n -_17 s'Wd@-n +_16 s'Ajsd@-n +_17 s'?Wd@-n _18 '?&d@-n -_19 n'ed@-n +_19 n'?ed@-n _2X t'y:?u -_3X tR'&#Dv@ +_3X t*'&#Dv@ _4X f'?W:_|V _5X h&l't*Es _6X t*'Es -_7X h&lfj'&rs +_7X h&lfj'Ers _8X f'irs _9X h&lf'Ems // PB a changed to & _0C h'unRVD @@ -131,32 +131,32 @@ _0M4 bilij'o:n3 _0and V _dpt _k,Vm&: -// PB a number followed by dot +// A number followed by dot // ordinals are followed by a dot in Danish -_ord 3 // 13. (trettende) +_ord @- // 13. (trettende) // exceptions for ordinals -_1o fWrsd3 // 1. første +_1o fWrsd@- // 1. første _2o &n@n // 2. anden -_3o trEdj3 // 3. tredje +_3o trEdj@- // 3. tredje _4o fjeV // 4. fjerde -_5o fEmt3 // 5. femte -_6o sjEd3 // 6. sjette -_7o syvn3 // 7. syvende -_8o Vtn3 // 8. ottende -_9o ni@n3 // 9. niende -_10o ti@n3 // 10. tiende -_11o Elfd3 // 11. elvte/ellevete -_12o tVlfd3 // 12. tolvte +_5o fEmt@- // 5. femte +_6o sjEd@- // 6. sjette +_7o syvn@- // 7. syvende +_8o Vtn@- // 8. ottende +_9o ni@-n@- // 9. niende +_10o ti@-n@- // 10. tiende +_11o Elfd@- // 11. elvte/ellevete +_12o tVlfd@- // 12. tolvte -_2Xo t'yv@n@ // 25. -_3Xo tr'&#ft@ //36. -_4Xo fWV'tyv@n@ // 42. -_5Xo h<*'Esenstyv@n@ // 52. -_6Xo tr'Esenstyv@n@ // 62. -_7Xo h&lfj'&rsenstyv@n@ // 72. -_8Xo firsenstyv@n@ // 82. -_9Xo h&lf'Emsenstyv@n@ // 95. +_2Xo t'yv@n@- // 25. +_3Xo tr'&#ft@- //36. +_4Xo fWV'tyv@-n@- // 42. +_5Xo h<*'Esenstyv@-n@- // 52. +_6Xo tr'Esenstyv@-n@- // 62. +_7Xo h&lfj'&rsenstyv@-n@- // 72. +_8Xo firsenstyv@-n@- // 82. +_9Xo h&lf'Emsenstyv@-n@- // 95. // function words @@ -187,10 +187,10 @@ fra $u+ // from ved $u+ // at om $u+ $brk // about, within med $u+ // with -af & -ad & +af &_! +ad &_! ad &D $atend $sentence // "Det må ikke skille os ad." -at & $u +at &_! $u hos som sVm $u // which / that @@ -203,7 +203,7 @@ hun $u det de $u dét de vi vi $u -i _i $u+ +i _i_! $u+ mig mAj $u // me dig dAj $u+ dem $u @@ -220,10 +220,10 @@ hvis ves $u+ // PB - whose // possessive pronouns min min $u mit mit $u -mine m'in3 +mine m'in@- din d'in $u+ dit d'it $u -dine d'in3 +dine d'in@- deres dE:Vs $u hans $u+ hendes $u+ @@ -1448,7 +1448,6 @@ elegance $alt eminence $alt excellence $alt fajance $alt -hospice $alt ignorance $alt inspektrice $alt intolerance $alt @@ -1846,6 +1845,7 @@ afrikan $alt afrikaan $alt aleksandrin $alt amerikan $alt +austral $alt andorran $alt anglikan $alt angolan $alt @@ -5968,6 +5968,7 @@ dediker $alt deducer $alt defiler $alt definer $alt +omdefiner $alt deflorer $alt deformer $alt degrader $alt @@ -6547,6 +6548,7 @@ konstater $alt konstituer $alt konstringer $alt konstruer $alt +rekonstruer $alt konsulere $alt konsulter $alt konsumer $alt @@ -11121,7 +11123,7 @@ sinecure $alt tournure $alt // exceptions -alene &l'en@ // alone +alene &l'en@- // alone egen _|aj@-n mc mak' $capital // PB McDonald egne ajn@- @@ -11150,48 +11152,48 @@ giv g'i // PB the v shouldn't be pronounced giver gir // PB the v shouldn't be pronounced opgiver Vpgir // PB jaloux sj&'lu // PB jaloux -aficionado afisjo'na:do // PB -breakdance brEig'da:ns // PB breakdance -breakdancen brEig'da:ns@-n // PB breakdancen -breakdancer brEig'da:nsV // PB breakdancer -breakdancere brEig'da:nsV3 // PB breakdancere -breakdancerne brEig'da:nsV-n@ // PB breakdancerne -breakdancernes brEig'da:nsV-n@s // PB breakdancernes -squaredance skw'e@da:ns // PB squaredance -squaredancer skw'e@da:nsV // PB squaredancer -squaredancere skw'e@da:nsV3 // PB squaredancere -squaredancen skw'e@da:ns@-n // PB squaredancen -squaredancerne skw'e@da:nsV-n@ // PB squaredancerne -squaredancernes skw'e@da:nsV-n@s // PB squaredancernes -baguette b%a'get // French word used in Danish -jambore djamboR'E // PB English? word used in Danish - stressed e -shampu Sjambo // PB Danish pronunciation - oo has been replaced by u -(en face) aN||f'as // PB 'en face' - French used in Danish -(en bloc) aN||'blVk // PB 'en bloc' - French used in Danish +aficionado afisjo'nA:do // PB +breakdance brEig'd&:ns // PB breakdance +breakdancen brEig'd&:ns@-n // PB breakdancen +breakdancer brEig'd&:nsV // PB breakdancer +breakdancere brEig'd&:nsV3 // PB breakdancere +breakdancerne brEig'd&:nsV-n@ // PB breakdancerne +breakdancernes brEig'd&:nsV-n@s // PB breakdancernes +squaredance skw'EVd&:ns // PB squaredance +squaredancer skw'EVd&:nsV // PB squaredancer +squaredancere skw'EVd&:nsV3 // PB squaredancere +squaredancen skw'EVd&:ns@-n // PB squaredancen +squaredancerne skw'EVd&:nsV-n@ // PB squaredancerne +squaredancernes skw'EVd&:nsV-n@s // PB squaredancernes +baguette b?&'gEt // French word used in Danish +jambore djAmboR'E // PB English? word used in Danish - stressed e +shampu SjAmbo // PB Danish pronunciation - oo has been replaced by u +(en face) AN||f'as // PB 'en face' - French used in Danish +(en bloc) AN||'blVk // PB 'en bloc' - French used in Danish (haute couture) %o:tku'ty:r // PB - french word -(par excellence) pa:egs@'la:Ns // PB - french word -(public service) pVblek||s@:vis // PB -(public servicen) pVblek||s@:vis@-n // PB +(par excellence) pA:Egs@'la:Ns // PB - french word +(public service) pVblek||sW:vis // PB +(public servicen) pVblek||sW:vis@-n // PB (tour de force) tu:@d@||'fV:s // PB (al qaeda) al||k'ajda // PB (force majeure) fVrs||,ma'sjW:r // PB -(diner transportable) din'e|trANspVt'abl@ // PB +(diner transportable) din'e|trANspVt'abl@- // PB (quiche lorraine) kiS||lor'E:n: -(fait accompli) fEtakVmpl'i // PB +(fait accompli) fEt&kVmpl'i // PB (salt lake city) s'Vlt||lEjk||s'iti wien v'i:n // PB Wien - the town of Vienna -calais kal'E // PB Calais - town in France -date dejt // PB date - stævnemøde +calais k&l'E // PB Calais - town in France +date dEjt // PB date - stævnemøde //siger sir // PB silent d (tids nok) tis||n'Vk // PB silent d -skateboardet sk'eitbo@d3D // PB +skateboardet sk'EitbO:d@-D // PB (hole in one) h'oulinw,0n // PB English golf expression used in Danish (en passant) AN||p&s'AN (coney island) 'kouni||'ajl3nd // PB (union station) junj3n||steisj@n // PB (secret service) sigred||s'Wvis (happy hour) h&pi||'AuV -chevrolet sjEvrol'e +chevrolet sjEvrol'E saigon sAjgVn // PB Saigon managua m&n'&:gw& (deja-vu) deSja||'vy @@ -11246,32 +11248,37 @@ ikes ajks // PB // Try to catch errors (et kvarter) et||kvA'ter // PB -(mit kvarter) mit||kvA'ter // PB -(vores kvarter) vV:s||kvA'ter // PB -(deres kvarter) dE:Vs||kvA'ter // PB -(det kvarter) de||kvA'ter // PB +(mit kvarter) mit||kvA'ter +(vores kvarter) vV:s||kvA'ter +(deres kvarter) dE:Vs||kvA'ter +(det kvarter) de||kvA'ter (i kvarter) i||kv'A:dV -(at have) &||h& // PB the verb 'have', not the noun 'have' = garden -(vil have) vel||h'& // PB -(ville have) v?il3||h'& // PB -(du have) du||h& // PB -(må have) mO:||h& // PB -(skal have) sk?&||h& // PB +// the verb 'have', not the noun 'have' = garden/oceans +(at have) &||h& +(vil have) vel||h'& +(ville have) v?il3||h'& +(du have) du||h&_! +(må have) mO:||h& +(skal have) sk?&||h& (helst have) h'Elst||h& (gerne have) g'Ern3||h& -(kan have) k?&n||h& // PB -(ikke have) ege||h& // PB +(kan have) k?&n||h& +(ikke have) eg@-||h& +(have ret) h&||R'&#d +(måtte have) m'?Vt@-||h& +(have været) h&||v'?E3-VD +(have gjort) h&||gj'Ort // PB 'hav' = ocean - 'hav' = have (a nice day) (et hav) ed||hAu (stort hav) stord||hAu hav hAu $atend -(et for) ed||'for // PB for i jakke - lining +(et for) ed||'for // for i jakke - lining +(et for dig) ed||fV||dAj // vælge et for dig // PB problem with 'sig' [si] = "say" and 'sig' = "himself/herself" [saj] -//(sig mig) si||maj // PB sig mig engang -(sig hvad) si||v& // PB sig hvad du mener -sig $atend $sentence saj // end of a sentence - han vaskede sig. -(gør sig til) g,Wr||saj||t'el // PB -(gav sig til) g&||saj||tel // PB han gav sig til at ... +(sig hvad) si||v& // sig hvad du mener +sig $atend $sentence sAj // end of a sentence - han vaskede sig. +(gør sig til) g,Wr||sAj||t'el +(gav sig til) g&||sAj||tel // han gav sig til at ... // PB avoid [staj] as in "flæskesteg" (han steg) h&n||st'e (hun steg) hOn||st'e @@ -11280,7 +11287,7 @@ sig $atend $sentence saj // end of a sentence - han vaskede sig. (alle steg) &l3||st'e (vandet steg) v&n@D||st'e steg sdaj $atend $sentence -steget ste@d +//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 legende = legend/myth and = playing diff --git a/dictsource/da_rules b/dictsource/da_rules index ce8518a1..05103726 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -51,7 +51,7 @@ // Short vowel before double consonant r) a (C%++ ?A // trappe a (C%+ ?& // pladder, basser, masser - a (ld+ ?& // kalde, falde - TEST ld = double consonant? + a (ld+ &# // kalde, falde - ld => l double consonant C) a (L06% ?A // tapper, tappen, lapper, lappen v) a (cc ?A // vaccinere a (ffald+ A @@ -75,8 +75,8 @@ pl) a (ner ?& // planer pl) a (nen ?& // planen -// long & before de - a (de &: // gade +// long & before de(n) - made long in ph_danish + a (de & // gade a (den & //gaden // Have = "oceans" vs. the verb have @@ -96,7 +96,7 @@ burde_h) ave & // burde have sagt past) a & // tandpastareklame r) a (CK+ A // drab, Rasmus, rask - r) a (CA+ A: // drabelig, brase, gratis + r) a (CA+ A // drabelig, brase, gratis r) a (len+ ?A // gralen TEST r) a (le+ A // morale, prale r) a (dio++ A: // shortend too much by ph_danish @@ -1154,6 +1154,8 @@ hospitalsv) ag (t Ag // _t) age (_+ &j@- // tage _t) age (_sig & du_t) age (_ & + voldt) age (_ & + voldt) ager (_ Ar cart) age (na &g'e: // name b) ag (efter++ &j // age (lig '&j@- // uindtagelig, behagelig - stressed @@ -1441,6 +1443,7 @@ frederi) c (ia =ks // cigaret sig3r'&#t cigarett sig3r'&#t cc ks // accent + yu) cc (a k ro) cc (o k // name pu) ccini S'ini // name rebe) cc (a =k // name @@ -1758,6 +1761,7 @@ stikor) d // exception - silent d in 'stikord' kandi) d (at 'd mi) dd (a d nø) dde (+ D@- // jordnøddesmør + nø) dder (+ DV // nødderne an) d (e // manden, anden - silent d _fan) de (me // fandeme - skip de, only this word gær) de V // silent d @@ -1863,6 +1867,7 @@ stikor) d // exception - silent d in 'stikord' arv) e (@ @- // farvestof ugl) e (@ @- // fugleskræmsel ønn) e (st @- // kønneste + av) e (@ @- // pavestolt // exceptions cyk) e (lløb @- @@ -1973,7 +1978,7 @@ _still) e (ben ='e st) ed (mo e // stedmor st) ed (sø e // stedsøm st) ed (da e // steddatter - e (dt e // fedtet + e (dt ?e // fedtet dt => t 2 consonants: short e gaz) e (lle '?E // stressed van) e (ssa '?E // stressed ard) e (nner '?E // Ardennerne - stressed @@ -1982,6 +1987,7 @@ _still) e (ben ='e h) e (dd ?e // hedde m) e (dalje e // medalje v) e (de @- // helvedes + hv) ede eD@- // hvedebrød tol) ed (o 'ed // toledostål val) e (ncia 'E // name mal) er V // maler @@ -2160,7 +2166,7 @@ stikir) e (nddreng '&# // m) e (di+ e // medicin rn) e (d+ ,e // derned forn) eden 'eD@-n // - an) e (r @- // anerkende + an) er (@ V // anerkende L09) e (de e // nede, nederlag mån) e (d @- // måneder arkim) e (des 'e // name @@ -2392,6 +2398,8 @@ stoneh) enge EndZ // ørn) e (@ @- // børnebog mm) e (@ @- // dømmekraft ab) e (@ @- // abekat + + e (dere @- // torpedere øl) e (@+ @- // køleskab aff) e (@ @- // straffeattest Alj) e (@ @- // patruljevogn @@ -6035,6 +6043,7 @@ _noget_r) o (s_ ?V // w) oogie ugi // w) oo u // Hollywood oonagh un& // name + c) ochise OwS'i:s // name kl) oro (form oo shamp) oo ?o // nark) o o // narkoopgør @@ -6645,6 +6654,7 @@ torped) o o // torpedoflyene artisk) o (k 'V // stressed aut) o (+ o // autoklub t) or (t O: // tortur + C) or (L07L05 O: // portal TEST t) o (t V // hårtot, tot, hottentot t) o (tA o // total em) o (+ o // demokrati @@ -6733,7 +6743,7 @@ perestr) o (jka 'V // stressed m) o (nitor V // _C) o (_ o // jo, ko, lo, so f) o (d+ ?o // fodre - C) oe (de o: // boede, troede + C) oe (de o // boede, troede betr) oe (de o@- // betroede midler sk) oe (de o@- // spr) og ow // sprog @@ -6954,11 +6964,9 @@ robins) on Vn // name .group or alv) or O // alvor -// or (L04+ or // favorit v) or (L11+ or // favorabel v) or (_ O // f) or (_ V // for -// _f) or (_at_ O:_! derf) or V // derfor tayl) or V // name helsingf) or (s 'V // stressed @@ -6967,7 +6975,7 @@ helsingf) or (s 'V // stressed sekt) or V // sektoren k) or (t ?O: // kort k) or (tA ?O: // korte - t) or (L06 O // torpedere + t) or (L06 O: // torpedere or (to O: // ortodoks, ortopæd m) orge OO@- // morgen dek) or (_ 'V:r // dekor @@ -7036,6 +7044,7 @@ _transp) or (t_ 'O: // stressed - transport f) ord (ø Vd' // fordømme v) ord (i 'Vrd // gernvordighed ord (en+ Od // orden, ordensmagt + n) orden OVn // Norden - silent d b) orde (nde orE // ord (ene+ oR // ordene ord (enen+ O:d // ordenen @@ -7718,9 +7727,9 @@ franci) sc (o sk // Francisco _) stone sdoun // namde - Stone empire_) state (_ stEjt // _) sir (_ sW: // Sir Arthur - sher (wood SW // Sherwood Forrest + sher (wood SW: // Sherwood Forrest surf sW:f // windsurfing - surf (e sWf + surf (e sW:f la) sur sur // lasurfarve _) sugar (_ SugV // Sugar Ray savoir s&voa: // savoir-faire @@ -8267,17 +8276,17 @@ meningi) ti (s =ti _) ud (@@+P2 ''?uD _) ude (@@+P3 ''uD@- // exceptions for ud-: [ud] - _) ud (elt+P2 'ud // udelt - _) ud (at+P2 'ud // udateret + _) ud (elt+P2 '?ud // udelt + _) ud (at+P2 '?ud // udateret _) ud (rikkelig+P2 ud _) ud (røj+P2 'ud - _) ud (uelig+ ud + _) ud (uelig+ ?ud _) ud (y+P2 '?ud // udyd, udygtig, udyr _) ud (øbt+P2 'ud - _) ud (ød+P2 ud // udødelig - _) ud (åd+P2 'ud - _) ud (en+ uD - _) ud (kig uD // udkigspost (another rule overrides a silent g rule) + _) ud (ød+P2 ?ud // udødelig + _) ud (åd+P2 '?ud + _) ud (en+ ?uD + _) ud (kig ?uD // udkigspost (another rule overrides a silent g rule) u (nL08+ O // kunst br) unch VnS // @@ -8964,7 +8973,7 @@ _hun_l) æ (ste E: kr) æ (_ E? // r) æ (t+ &# // åndedræt spr) æ (C+ &# // sprængt - pr) æ (C+ E // prætendere, præsentere, prækvalificere + pr) æ (C+ ?E // prætendere, præsentere, prækvalificere rør) æg Eg // pr) æ (gn E // prægnans, prægnant for) æ (dle ?E // @@ -9079,7 +9088,7 @@ majest) æ (t 'E // stressed æ // words with short ø bel) ø (b ?W - ø (rn ?W // ørne, børn +// ø (rn ?W // ørne, børn _chauff) ø (r 'W // stressed in 'chauffør' _milj) ø 'W // stressed - miljø @@ -9285,7 +9294,7 @@ slagsm) å (l ?O // str) å (forkort ?V // stråforkorter str) å (hat ?V // str) å (død ?V // - årer V:V- // sårer + årer OO- // sårer, årer å (lti ?V // måltid .group ' diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index f1b3ff11..caa07896 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -25,7 +25,7 @@ n^ p p` r s S t t` tS tS` v w x z Z -Dictionary an_dict 2013-03-21 +Dictionary an_dict 2013-03-28 a aI aU e E eI eU i o O oI u U @@ -60,7 +60,7 @@ s; t t; tS ts v x z Z z; -Dictionary bn_dict 2013-03-26 +Dictionary bn_dict 2013-03-29 & a a~ e e~ i i~ l- o O o: O~ o~ r- u u~ @@ -111,7 +111,7 @@ p r s S t T v w x z -Dictionary da_dict 2013-03-26 +Dictionary da_dict 2013-03-29 & &# 0 3 ?& ?&# ?0 ?A ?e ?E ?i ?o ?O ?u ?V ?W @@ -150,7 +150,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-26 +Dictionary en_dict 2013-03-28 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -178,7 +178,7 @@ s S t T tS ts v w x z Z -Dictionary es_dict 2013-03-19 +Dictionary es_dict 2013-03-28 @ a aI aU e E eI eU i o O oI u @@ -261,7 +261,7 @@ l m n N p R s t T v x z -Dictionary hbs_dict 2012-08-08 +Dictionary hbs_dict 2013-03-29 & @ @2 a A a: aI aU e E e: i I i: l- o @@ -501,7 +501,7 @@ r r. s S s. t t# t. t.# v w x z -Dictionary nl_dict 2013-03-21 +Dictionary nl_dict 2013-03-27 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -563,7 +563,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-26 +Dictionary pt_dict 2013-03-29 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -700,10 +700,11 @@ p Q r R s S t tS v w z Z -Dictionary ur_dict 2013-03-13 +Dictionary ur_dict 2013-03-28 @ a a: aI aU e E e: -i I i: O o: U u: V +i I i: O o: u U u: +V : ; b b# c c# d D d# d. d.# f g g# h H diff --git a/dictsource/en_list b/dictsource/en_list index 050b3a74..ecc2fbdf 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -70,6 +70,7 @@ a eI $atend ï $accent ö $accent ü $accent +û $accent č $accent š $accent ş $accent @@ -754,6 +755,7 @@ ambassador a#mbas@d3 ambidextrous $3 amen ,A:m'En $onlys ?3 amen ,eIm'En +?3 amo amoU amok a#m0k amoral eIm'0r@L amount a#maUnt @@ -767,8 +769,6 @@ analyses an@laIzI#z $verb analysis a#nal@sIs anemone a#nEm@ni angel eIndZ@L -anecdote anIkdoUt -anecdotal anIkd'oUt@L anemometer anIm'0mI2t3 anew a#nju: ?3 anew a#nu: @@ -829,7 +829,7 @@ arena a#ri:n@ argon A@g0n argue A@gju: aries e@ri:z -arithmetic a#rITm@tIk +arithmetic a#rITm@tIk $onlys arise a#raIz arisen @rIz@n armslength ,A@mzl'ENT @@ -877,6 +877,7 @@ average av@-rI2dZ aviary eIvi@ri awry a#raI axes aksI#z +axon aks0n backend bak'End backstory baksto@ri @@ -1115,6 +1116,7 @@ circumference $2 circumvent s3:k@mvEnt ?5 circumvent sIRk@mvEnt citadel sIt@dEl +clandestine $2 clarinet klar@n'Et cleanliness klEnlIn@s cleanse klEnz @@ -1236,6 +1238,7 @@ coordinate koU'O:dI2neIt $verb copier k0pi@3 copilot koUpaIl@t coral k0r@L +?3 cordial kO@dZ@L coronet k0r@nEt corollary $2 corporal kO@pr@L @@ -1291,6 +1294,7 @@ debut deIbju: ?3 debut deIb'ju: decade dEkeId decent di:s@nt +decibel dEsI#b@L declaration dEkl@'reIS@n decolletage deIk0lt'A:Z decor deIkO@ @@ -1380,6 +1384,7 @@ doctrine d0ktrI2n doctrinal $alt1 doer du:3 dogged d0gI#d +dogmatic d0gm'atIk doin du:In domino $1 donor doUn3 @@ -1796,6 +1801,7 @@ intestine I2ntEstI#n inventory Inv@ntri ?3 inventory Inv@nto:ri interface $1 +interlude $1 intermin Int'3:mIn // interminable intern $1 $onlys internee Int'3:ni: @@ -2056,6 +2062,7 @@ molybdenum $2 momentary moUm@nt@ri ?3 momentary moUm@nt2e@ri momentum $2 +monarchic m@nA@kIk monday mVndeI monotone m0n@toUn monsieur m@sj3: @@ -2251,6 +2258,7 @@ pear pe@ pecan pi:k@n peculiar pI2kju:lI3 pedalo pEd@loU +pedestal pEdI2st@L pedestrian $alt3 pegasus pEg@s@s pejorative p@dZ0r@tIv @@ -2545,6 +2553,7 @@ ruby ru:bi rugged rVgI#d ruin ru:I2n // for ruining +sabbatic $alt3 sabotage sab@tA:Z saboteur sab@t'3: ?5 saboteur sab@t'VR @@ -2552,6 +2561,7 @@ sabre seIb3 sachet saSeI sacred seIkr@d sacrifice sakrI2faIs +sadistic $alt3 safety seIfti saga sA:g@ sahara $alt3 @@ -2566,6 +2576,7 @@ saloon $alt3 san ,san $only sardine $2 satanic $alt3 +satiric $alt3 saucepan sO:sp@n saudi saUdi saute sO:teI @@ -2706,6 +2717,7 @@ stagnate $2 stampede $2 starboard stA@b3d starry stA:rI +statistic $alt3 stiletto stI2lEtoU strychnine str'Ikni:n sterile stEraIl @@ -2882,6 +2894,7 @@ unaware Vn@w'e@ uncle VNk@L undeny VndIn'aI underling $1 +underlings Vnd3lINz underworld $1 undies Vndiz undo Vnd'u: @@ -3649,6 +3662,7 @@ Phoebe fi:bi: Rachael reItS@L Rachel reItS@L Rafael rA:faI'El +Rashid rA:S'i:d Raul raU'u:l Rees ri:s Reese ri:s @@ -3673,6 +3687,7 @@ Sebastian $alt3 Sheila Si:l@ Simon saIm@n Sinead SI2neId +Sinéad SI2neId Siobhan S@vO:n Siobhán S@vO:n Sonia s0nj@ diff --git a/dictsource/en_rules b/dictsource/en_rules index ec32d6c3..b913125a 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -504,6 +504,7 @@ portr) ai (t I# .group al + @ic) al (_S2 @L _) al (@ a#l gonz) al 'A:l _) alaba al@b'a @@ -720,6 +721,7 @@ p) an (c an @m) an (d aan sl) an (d aan + _) anecdo anIkdoU C) an (t aan an (ath a#n ann (eal a#n @@ -1066,8 +1068,8 @@ as (thm as as (tral as as (tro as - as (trolog a#s - as (trono a#s + _) as (trolog a#s + _) as (trono a#s &) as (ty_ a#s ass (ym as purch) as (e Is @@ -1093,11 +1095,12 @@ _s) ata (n eIt@ _g) ator eIt3 &) ate (_$w_alt2 @t + der) ated (_ eItI#d pal) ate (_ @t consul) ate (_ @t macul) ate (_ @t tim) ate (_ @t - tim) ated (_ eItI2d + tim) ated (_ eItI#d tim) ating (_ eItIN din) ate (_ @t ion) ate (_ @t @@ -1128,7 +1131,6 @@ at (io_ eIS ati (aX 'eIS &) atism @tIz@m - st) at (ist @t w) at (t 0t @) ath (An_ @T athed (_ eIDd @@ -1334,6 +1336,7 @@ bi (nm bI bi (noc bI2 _) bio (@P3 b,aIoU + bi (ol baI bi (otic baI @) bi (osA baI bi (oC_ bI @@ -1685,6 +1688,7 @@ de (ft dE _) de (g@ dI2 _) de (hyd ,di: + _) de (ist deI _) de (j dI2 _) de (l@ dI2 de (law dE @@ -1865,6 +1869,7 @@ sp) e (cies i: depr) ec (L02 i:S _) e (cl %I + _) eccles (i I2kli:z econo (m Ik'0n@ econo (mic i:k@n'0 _) eco (s i:koU @@ -2441,6 +2446,7 @@ er (nal_ '3: &) er (n_ 3 c) er (n_ 3: + _g) er (on Er &) er (oCe_ =@r er (se 3: v) er (sal '3: @@ -2514,7 +2520,7 @@ pr) es (ent Ez es (iA i:z es (ian_ 'i:z - es (ic 'i:z + @) es (ic 'i:z esis (_ 'i:sIs th) eses (_ @si:z th) esis (_ @sIs @@ -2945,7 +2951,7 @@ ize (_ aIz ial) ize (_S3 aIz ize (d_ aIz - i (zen I2 + i (zen I iz (er_ aIz i (zon_ 'aI _p) izz i:t|s @@ -3169,6 +3175,7 @@ imm (in Im immo (bi Im'oU imm (unis Im + _) immu (no I2mju: @) imous (_ =Im@s im (pac Im im (pecu ,Im @@ -3249,6 +3256,7 @@ in (ga_ 'IN in (got IN _) in (gro IN + _) in (im I2n _) in (jur In _) in (k IN _) in (l In @@ -3501,7 +3509,7 @@ @) istan (_ =Istan @) istani (_ Ist'A:nI @) iste (_ 'i:st - @) is (tic 'Is + @) is (tic_ 'Is r) is (y_ =@s @@ -4082,7 +4090,6 @@ betr) oth oUD ?3 cl) o (th O cl) othe oUD - tr) othe oUD b) o (ther 0 _r) o (ther 0 o (ther+ V @@ -4220,7 +4227,7 @@ dr) on (_ @n or) on (_ 0n cr) on (_ 0n - x) on (_+ 0n + @x) on (_ @n phot) on @n pers) on @n pers) on (i '0n @@ -4303,6 +4310,7 @@ .group or or o@ _) or O@ + _) organo (@P6 O@g,anoU or (ch_ O@ or (m_ O@ st) or (m o@ @@ -5229,6 +5237,7 @@ ?5 _) sur sVR _) sure SU@ sur (anc SU@ + sur (g+ s3: sur (m s3 sur (pa s3 sur (pr s3 @@ -5261,6 +5270,7 @@ te (rrest t2@ r) tga (g gI @) t (ia S + _pi) t (ia t s) t (l to (morr t@ _) to (nn tV @@ -5273,6 +5283,7 @@ tribe traIb _) tri (bu trI _) tri (g trI + _) tri (gonA trI _) tri (ni trI _) tri (vi trI _) tri (xA trI @@ -6079,6 +6090,7 @@ ö 3: ör 3: ü u: + û u: ç s ß s č tS diff --git a/dictsource/es_list b/dictsource/es_list index 9fc6458e..abce5fcb 100644 --- a/dictsource/es_list +++ b/dictsource/es_list @@ -123,6 +123,9 @@ _dpt koma _#º o _#ª a _ord o +ºc gr'ados||T'e +ºf gr'ados||'Efe +ºk gr'ados||k'a _1o prim'Er _2o seQ'und diff --git a/dictsource/hbs_list b/dictsource/hbs_list index 98336074..290064a1 100644 --- a/dictsource/hbs_list +++ b/dictsource/hbs_list @@ -1,4 +1,4 @@ - + // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage // This file is UTF-8 encoded @@ -40,6 +40,50 @@ y ipsilon z z@ ž Z@ + +а a +б b@ +ц ts@ +ћ tS;@2 +ч tS@ +џ dZ@ +ѕ dz@ +д d@ +ђ dZ;@2 +е E +ф f@ +г g@ +х x@ +и i +ј j@2 +к k@ +љ l^@ +л l@ +м m@ +њ n^@ +н n@ +о o +п p@ +р R@ +_с s@ +ш S@ +т t@ +у u +в v@ +з z@ +ж Z@ +ѓ dZ;@2 +ќ tS;@2 + +ё jo +й kr,atko||'i +щ StS;@2 +ъ tvR2d'i||zn,ak +ы jeri +ь m'eki||z,nak +э e +ю ju +я ja _á $accent _é $accent @@ -47,6 +91,10 @@ _í $accent _ó $accent _ú $accent +_ar 'Arapsko +_cyr tS;'iRilitsa + + // accent names _lig l'ig&t,UR& _acu 'akUt diff --git a/dictsource/hbs_rules b/dictsource/hbs_rules index 3e77614d..91212351 100755 --- a/dictsource/hbs_rules +++ b/dictsource/hbs_rules @@ -1,4 +1,4 @@ - + // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage // This file is UTF-8 encoded @@ -31,7 +31,9 @@ .group d d d dz dz + _) dz (_ dz@ dž dZ + _) dž (_ dZ@ .group đ đ dZ; @@ -67,6 +69,8 @@ .group l l l K) l (K l- + + _) lj (_ l^@ lj (+ l^ v) lj lj @@ -79,6 +83,7 @@ n (k N nj n^ + _) nj (_ n^@ .group o o o diff --git a/dictsource/nl_list b/dictsource/nl_list index 9c2428dd..5cff59cf 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -58,7 +58,7 @@ _tld t'Ild@ // punctuation -. p8nt $max3 +. p8nt _, k'Oma: _: d'8b@l@p,8nt _; p'8ntkOm,a: @@ -75,8 +75,9 @@ _) 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 $max3 -* st'E*rEt;@ $max3 ++ pl'8s +* st'E*rEt;@ += Q@l'EIkte:k@n __ l'IgEntst@-*'e:pj@ € 'Y:*o:t,e:k@n @@ -133,6 +134,7 @@ _0Co h'OndErtst@ // abbreviations be $abbrev // used as domain abbrev for Belgium and in a lot of other names +ca ka: $hasdot enz Enzo:vo:rt bvb bEIv'o:rbe:lt eu e:_y: $abbrev @@ -379,6 +381,7 @@ reken $alt schepen $alt steven $alt teken $alt +volwassen $alt wapen $alt zegen $alt trokken $alt diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 917b7373..4035a054 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -4,7 +4,7 @@ // Suffix rule: SUFX_E eg. S2e means double the vowel before the final consonant .L01 g k -.L02 _ t_ d_ de_ den_ // verb endings +.L02 _ t_ d_ de_ den_ nen_ // verb endings ('nen' for 'scannen') .group a @@ -330,13 +330,20 @@ g Q // ph_dutch changes to [x] before unvoiced, NULL after [x] gg Q s) g x + + @) gi (eus Z + @) gi (euz Z + reli) gi (eu Qij + +.group ge _) ge (@P2 Q@ ge (bied Q@ _) gee Qe: _) gei QEI gener (aal Q,e:n@r _) gelijk Q@lEIk + _) ge (lC QE _) ge (rC QE _) geu QY: _) ge (ven Qe: @@ -346,10 +353,8 @@ ge (sprek Q@ // in compounds - @) gi (eus Z - @) gi (euz Z - reli) gi (eu Qij + .group h h h @@ -360,6 +365,7 @@ _) herinn h%ErIn // herinneren _) hersen h'Ers@n &) heid (_S4 hEIt + _) hulp (@@P4 h'8lp .group i @@ -546,13 +552,14 @@ _) inn (@P2 'I // ?? inneren pl) oi (t v#A c) oi (ffu v#A pr) o (gram o: + omgeving OmQ'e:vIN oo (X 'o: oon 'o:n // in compounds, eg. telefoongesprek oo (C_ 'o: _) oost (@P4 o:st _) op (@@P2 'Op _) open (@P4 'o:p@n - _) op (enen 'o:p + _) op (enen+ 'o:p _) openings (P8 'o:p@nINs _) op (era 'o:p _) op (tion Op diff --git a/dictsource/pt_list b/dictsource/pt_list index 4c930fa4..34dd50b5 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -639,18 +639,19 @@ acervo $alt2 adepto $alt adore $alt adorno $alt $verb +aeroporto $alt2 +aeroportos $alt albatrozes $alt alcateia $alt alferes $alt algozes $alt alicerce $alt almoço $alt $verb -amarelo $alt ameba $alt amores $alt2 antonieta $alt2 apego $alt2 $noun -apelo $alt $verb +apelo $alt2 $noun aposto $alt $verb aperto $alt2 $noun apneia $alt @@ -660,8 +661,8 @@ arremesso $alt2 $noun arroz $alt2 assembleia $alt ateia $alt -aterro $alt2 $noun -aterros $alt2 +aterro $alt2 +aterro $alt $verb atmosfera $alt atrozes $alt autora $alt2 @@ -671,7 +672,6 @@ azeda $alt $verb azedo $alt $verb baqueta $alt2 beco $alt2 -belo $alt besta $alt2 bilhete $alt2 boca $alt2 @@ -685,22 +685,24 @@ borboleta $alt2 bordo $alt bosque $alt boto $alt2 $noun +brejo $alt bromelha $alt +cabelo $alt2 cabresto $alt2 cacete $alt2 cachorra $alt2 caderneta $alt2 cadete $alt2 +camelo $alt2 camiseta $alt2 cantora $alt2 capacete $alt2 caractere $alt -caramelo $alt +carbureto $alt2 careta $alt2 carreta $alt2 carroça $alt casebre $alt -castelo $alt cateto $alt2 catorze $alt2 cebola $alt2 @@ -712,8 +714,6 @@ cerco $alt $verb chamego $alt2 chefe $alt checam $alt -cheque $alt -chinelo $alt choro $alt2 $noun chovesse $alt2 chupeta $alt2 @@ -721,7 +721,6 @@ clamores $alt2 clero $alt coco $alt2 cofre $alt -cogumelo $alt coice $alt2 colabore $alt colete $alt2 @@ -736,7 +735,6 @@ concerto $alt2 $noun concertos $alt2 concordo $alt conforto $alt $verb -congelo $alt consolo $alt2 $noun controle $alt2 $noun controlo $alt2 $noun @@ -749,18 +747,21 @@ corto $alt corveta $alt2 corvos $alt coto $alt2 +cotovelo $alt2 cratera $alt crede $alt2 crepe $alt decore $alt +degelo $alt2 desapego $alt2 $noun -descabelo $alt descordo $alt desemprego $alt2 desemprego $alt $verb desespero $alt2 $noun desfecho $alt2 -desmantelo $alt $verb +desmantelo $alt2 $noun +desporto $alt2 +desportos $alt desprezo $alt2 $noun desse $alt2 desse $alt $verb @@ -771,15 +772,14 @@ destroem $alt deveras $alt dez $alt diarreia $alt +diego $alt2 discordo $alt dobro $alt2 $noun doce $alt2 doutora $alt2 droga $alt -duelo $alt dueto $alt2 elixir eliSir -elo $alt emprego $alt2 $noun empregos $alt2 encosto $alt $verb @@ -795,8 +795,8 @@ envolto $alt2 enxerto $alt2 $noun epopeia $alt eritreia $alt -erro $alt2 $noun -erros $alt2 +erro $alt2 +erro $alt $verb esboço $alt $verb escopeta $alt2 escova $alt2 $noun @@ -805,8 +805,8 @@ escovo $alt escroto $alt2 esforço $alt $verb esforços $alt -esgoto $alt2 $noun -esgotos $alt2 +esgoto $alt2 +esgoto $alt $verb esperma $alt espeto $alt2 $noun espiroqueta $alt2 @@ -825,7 +825,6 @@ exagero $alt $verb explore $alt faceta $alt2 fantoche $alt -farelo $alt farofa $alt febre $alt fera $alt @@ -834,26 +833,27 @@ ferozes $alt fezes $alt ?1 fixe fiSy foda $alt2 $verb -folheto $alt2 -folga $alt fogos $alt foguete $alt2 foice $alt2 +folheto $alt2 fora $alt fora $alt2 $verb forca $alt2 força $alt2 $noun forças $alt2 forço $alt +formos $alt2 forro $alt $verb frevo $alt2 +fulgores $alt2 galera $alt galileia $alt gameta $alt2 geleia $alt -gelo $alt $verb +gelo $alt2 +gelo $alt $verb genebra $alt -germe $alt gesso $alt2 golpe $alt gonorreia $alt @@ -878,22 +878,19 @@ lagosta $alt2 lambreta $alt2 lebre $alt lembrete $alt2 +lepra $alt leste $alt2 $verb lingueta $alt2 lopes $alt macete $alt2 maior $alt maleta $alt2 -marcelo $alt -marmelo $alt marreta $alt2 -martelo $alt +megera $alt melhor $alt menor $alt -merda $alt -megera $alt -melo $alt mentora $alt2 +merda $alt meta $alt $noun meteoro $alt metro $alt @@ -903,6 +900,8 @@ mexo m'eSU minueto $alt2 miolo $alt2 miolos $alt +modelo $alt2 +modelo $alt $verb moeda $alt mofo $alt $verb molho $alt2 $noun @@ -923,6 +922,7 @@ namoro $alt2 $noun naquela $nounf naquele $alt2 $nounf nervo $alt2 +novelo $alt2 novos $alt obstetra $alt odisseia $alt @@ -944,14 +944,14 @@ panfleto $alt2 pangeia $alt panqueca p,&~Nk'Ek& pantera $alt -paralelo $alt parede $alt2 pastora $alt2 pedra $alt pela $alt $verb pelego $alt2 pela $alt $verb -pelo $alt $verb +pelo $alt2 +pelo $alt $verb peso $alt $verb piloto $alt2 $noun pintora $alt2 @@ -986,10 +986,13 @@ reforço $alt $verb reforços $alt refresco $alt $verb reitora $alt2 +rejo $alt relevo $alt2 $noun remorso $alt renovo $alt $verb retorno $alt $verb +reuva $alt +rigores $alt2 rixa x'iS& rocha $alt rock $alt @@ -1005,12 +1008,12 @@ seca $alt2 $noun secas $alt2 seco $alt2 seco $alt $verb -selo $alt $verb +selo $alt2 +selo $alt $verb selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 senhores $alt2 -singelo $alt sinopse $alt soco $alt2 soco $alt $verb @@ -1034,6 +1037,7 @@ tocha $alt toga $alt topo $alt $verb torno $alt $verb +tornozelo $alt2 torre $alt2 $noun torres $alt2 torro $alt @@ -1049,16 +1053,13 @@ trombeta $alt2 tumores $alt2 valeta $alt2 vanessa $alt2 -velo $alt velozes $alt -verme $alt violeta $alt2 violoncelo $alt voga $alt vozes $alt xarope $alt -xeque $alt -zelo $alt $verb +zelo $alt2 $noun zero $alt zorra $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 69e6b3d3..8cbbbbd6 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -198,7 +198,7 @@ e (guem_ E e (lA_ E - e (lo_ e + e (lo_ E e (lAm_ E i) e (r_ E @@ -220,9 +220,15 @@ f) e (re_ E f) e (rem_ E + e (que_ E + e (quem_ E + e (rgA_ E e (rgAm_ E +e (rgue_ E +e (rguem_ E + e (rsA_ E e (rsAm_ E @@ -236,6 +242,8 @@ e (stAm_ E e (strA_ E +e (rme_ E + e (rnA_ E e (rnAm_ E @@ -458,10 +466,7 @@ respond) e (L07_ e // cor- tr) e (pL04_ E // es- _dec) e (pL04_ E _in) e (ptL03_ E - _p) e (quL02_ E - _s) e (quL02_ E ad) e (quL04_ E - l) e (que_ E _imp) e (rL03_ E _sev) e (rL03_ E _reit) e (rL03_ E @@ -483,13 +488,10 @@ _recup) e (rL04_ E _refrig) e (rL04_ E _v) e (rbL03_ E _p) e (rdL02_ E +_ch) e (guL02_ e _l) e (rdL03_ E _h) e (rdL04_ E - _) e (rgL03_ e - _) e (rguL02_ E - _alb) e (rguL02_ E - _enx) e (rguL02_ E - _bez) e (rrL03_ e + _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e _refr) e (scL01_ E @@ -574,14 +576,18 @@ _entorp) e (çL03_ e gu (Y g a) gu (ent gw _ar) gu (i gw + averi) gu (e gw enxa) gu (e gw + i) gu (idade gw lin) gu (e gw lin) gu (i gw + _min) gu (e gw _pin) gu (im_ gw _pin) gu (ins_ gw - _sa) gu )i gw + _sa) gu (i gw san) gu (ín gw san) gu (in gw + tin) gu (i gw ?1 n) gu (A gw // eg: língua, etc. ?1 man) gu (ei g // mangueira ?1 gu (ém_ g // eg: alguém, ninguém, etc... @@ -825,9 +831,10 @@ _entorp) e (çL03_ e //sort _f) o (L05_ o _f) o (L07_ o - _engl) o (bL01_ O + _engl) o (bL04_ O _s) o (bL02_ O _esn) o (bL04_ O + _af) o (bL04_ O br) o (chL04_ O _deb) o (chL04_ O _m) o (fL01_ O @@ -835,6 +842,8 @@ _entorp) e (çL03_ e _s) o (frL02_ O r) o (gL04_ O // inter- _j) o (gL04_ O +_emp) o (lgL04_ O +_f) o (lgL04_ O _af) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O diff --git a/espeak-data/voices/en-us b/espeak-data/voices/en-us index fd86703c..d61ff5cf 100755 --- a/espeak-data/voices/en-us +++ b/espeak-data/voices/en-us @@ -9,7 +9,7 @@ phonemes en-us dictrules 3 6 option reduce_t 1 -stressLength 145 125 190 170 0 0 260 300 +stressLength 140 120 190 170 0 0 255 290 stressAmp 17 16 19 19 19 19 21 19 replace 03 I i diff --git a/phsource/compile_report b/phsource/compile_report index cc441290..639f02eb 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1016,7 +1016,8 @@ 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] zh +vdiph2/ei_4 [eI] en-us + [ei] zh [eI] sq vdiph2/eo [eo] ro vdiph2/e_u [e[u] ro @@ -1169,7 +1170,6 @@ vdiph/eei_2 [eI] eo vdiph/eei_3 [eI] lt [eI] sk [eI] ku -vdiph/eei_5 [eI] en-us vdiph/eeu [EU] pt [EU] grc [EU] vi diff --git a/phsource/ph_danish b/phsource/ph_danish index 885bbbd9..de0a2e11 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -1,11 +1,11 @@ // PB General rules for vowels: // Short vowels -// ACC: Short "pille" [p?el@-] -// AC[V]: Short "piler" [p?ilV] +// ACC: Short "pille" [p?el@-], "andre" [AndRV] +// AC[V]: Short "piler" [p?ilV] - verbs, not nouns, which is a problem // A[N]: Short "bange" [b?AN@-] // Long vowels -// A + group #@ OR group #e: Long "ae" "aer" [&:@-] -// AC + group #@ OR group #e: Long "pile" [pi:l@-] +// A + @- OR V: Long "ae" "aer" [&:@-] +// AC + @- OR V: Long "pile" [pi:l@-] // AC[i]: Long "smidig" [smi:Di] phoneme @ @@ -22,10 +22,10 @@ phoneme @- // very short schwa IF nextPhW(*) OR nextPhW(r) THEN ipa NULL // @-* is used to make 'r' ENDIF - length 40 + length 50 // "femten", "manden" - only a short "n" sound IF nextPhW(n) THEN - length 20 + length 15 ENDIF IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN length 15 @@ -56,9 +56,9 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 140 //225 -// PB long vowel followed by consonant and certain vowels "gide" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN + length 140 +// Long vowel followed by consonant and @- "gide", "pile" +IF nextPhW(isNotVowel) AND next2PhW(@-) THEN length 225 ENDIF // "gider", vrider" @@ -69,15 +69,6 @@ ENDIF IF nextPhW(@-) OR nextPhW(V) THEN length 225 ENDIF -// Only this vowel (in this case [i]) -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN - length 225 -ENDIF -// This vowel is word end - longer because it sounds too short -// "sig", "si" -IF thisPh(isWordEnd) THEN - length 120 -ENDIF // "vilje" - short followed by 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 140 @@ -86,7 +77,7 @@ ENDIF // What is causing this very short [i] in words with final [@-]? // NOT "galleriet" [g,?&lVR'i@-D] IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN - length 240 +// length 240 ENDIF //"skider" short IF nextPhW(D) AND next2PhW(V) THEN @@ -119,9 +110,9 @@ endphoneme phoneme e vowel starttype #e endtype #e - length 140 //225 -// "delte", "mente" -IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN + length 140 +// "dele", "mene" +IF next2PhW(@-) THEN length 225 ENDIF // PB "ring", "ringe" @@ -132,17 +123,9 @@ ENDIF IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 225 ENDIF -// Only "e" -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 225 -ENDIF -// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short +// "nedladende" [n'eDl&D@-n@-], "delte" - before 2 consonants: short IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 140 -ENDIF -// "et" -IF thisPh(isWordStart) AND nextPhW(isWordEnd) THEN - length 120 ENDIF FMT(vowel/e) endphoneme @@ -152,35 +135,39 @@ endphoneme phoneme ?e vowel starttype #e endtype #e length 140 +// "rigtigt" R makes the e too long + IF prevPhW(R) THEN + length 100 + ENDIF +// "sigte" t/d + @- makes the e too long +IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) AND next3PhW(@-) THEN + length 100 +ENDIF FMT(vowel/e) endphoneme phoneme E vowel starttype #e endtype #e - length 140 //225 + length 140 // no link with next vowel IF thisPh(isWordEnd) THEN IfNextVowelAppend(_!) ENDIF // "ræve" -IF nextVowel(#@) OR nextVowel(#e) THEN - length 160 +IF nextVowel(@-) THEN + length 225 ENDIF // "ære", "kærester", "ærefrygt" - longer E IF nextPhW(V) THEN - length 180 -ENDIF -// Only the letter "æ" - long -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 160 + length 225 ENDIF // "stædig" [st'EDi] long IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 160 + length 225 ENDIF // "længe" - short - 2 consonants => 1 consonant IF nextPhW(N) THEN - length 100 + length 140 ENDIF // "værelse" [v'E3-Vls@_!] IF nextPhW(3-) AND next2PhW(V) THEN @@ -199,35 +186,34 @@ phoneme ?E vowel starttype #e endtype #e ipa ε length 140 + // "fred" R makes the E too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN + length 100 + ENDIF +// "fængsel" N makes the E too long + IF nextPhW(N) THEN + length 100 + ENDIF FMT(vowel/e_mid2) endphoneme phoneme & vowel starttype #e endtype #e - ipa a - length 140 //225 + ipa æ + length 140 // "same", "sale", "bade" - consonant + @-: long // but NOT "hinanden" IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN length 225 ENDIF -// ThisPh + V or group #@ +// ThisPh + V or @- // "ae", "aer" vowel + vowel: extra length IF nextPhW(@-) OR nextPhW(V) THEN length 260 ENDIF -// This vowel is word end - longer because it sounds too short -// "ja", "Omaha" -IF thisPh(isWordEnd) THEN - length 120 -ENDIF -// Only this vowel (in this case [&]) -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN - length 225 -ENDIF // "stadig" [st&Di], "stadigt" [st&Dit] IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 180 + length 225 ENDIF // "Alfie", "alfer" - short before 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN @@ -236,27 +222,20 @@ ENDIF FMT(vowel/ee_2) endphoneme -// PB Short & +// Short & // e.g. the last a in "staldkarl" // "sale" vs. "sal" phoneme ?& - ipa a vowel starttype #e endtype #e length 140 FMT(vowel/ee_2) endphoneme -// PB added for the æ in "dræbt" +// Added for the æ in "dræbt" phoneme &# vowel starttype #e endtype #e - length 140 //120 -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN - length 120 -ENDIF -// "drenge" -IF nextPhW(N) THEN - length 140 -ENDIF + length 140 + ipa a FMT(vowel/&) endphoneme @@ -264,21 +243,17 @@ endphoneme // "revl" vs. "tremme" phoneme ?&# vowel starttype #e endtype #e - length 140 + length 120 FMT(vowel/&) endphoneme phoneme A // PB changed to a_8 vowel starttype #a endtype #a - length 140 //225 + length 140 // PB long vowel followed by consonant and certain vowels - "drabelig" IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN length 225 ENDIF -// "far", "bastard" - a bit longer followed by [r] -IF nextPhW(r) AND nextPhW(isWordEnd) THEN - length 120 -ENDIF // "bange" [bAN@-] - [N] = 2 consonants (ng) => short IF nextPhW(N) THEN length 140 @@ -287,13 +262,12 @@ ENDIF IF nextPhW(A) THEN length 225 ENDIF -// "av" [Au] - a bit longer -IF nextPhW(isWordEnd) THEN - length 120 +// "gratis" +IF next2PhW(i) THEN + length 225 ENDIF -// "magnat" [mAun&d] - sounds too short -IF nextPhW(u) OR nextPhW(w) THEN - length 130 +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 140 ENDIF FMT(vowel/a_8) endphoneme @@ -303,66 +277,49 @@ endphoneme phoneme ?A vowel starttype #a endtype #a length 140 -// "straffeattest", "straffe", "rapid" - a bit longer after R -IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN - length 110 -ENDIF FMT(vowel/a_8) endphoneme phoneme u vowel starttype #u endtype #u - length 140 //225 -// "fugl" [ful] - a bit longer -IF nextPhW(isWordEnd) THEN - length 120 -ENDIF + length 140 // "suge", "uge", "bluse", "julegave" IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN length 225 ENDIF // "umulig" [u:m'uli] IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN - length 180 -ENDIF -// Only "u" -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 225 + length 225 ENDIF FMT(vowel/u_bck) endphoneme -// PB glottal u +// Short u // "tude" vs. "tuden" - [tuD3] [t?uD@n] phoneme ?u vowel starttype #u endtype #u length 140 +// "slutte" t/d + @- makes the u too long +IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN + length 100 +ENDIF FMT(vowel/u_bck) endphoneme phoneme o vowel starttype #o endtype #o - length 140 //225 -// "bore", "borer" -IF nextPhW(V) OR nextPhW(#@) THEN + length 140 +// "bore", "borer" [boV] o + V +IF nextPhW(V) OR nextPhW(@-) THEN length 225 ENDIF -// "kone", "koner" -IF next2PhW(V) OR next2PhW(#@) THEN +// "kone", "koner" o + consonant + V or @- +IF next2PhW(V) OR next2PhW(@-) THEN length 225 ENDIF // "modig" - long vowel after consonant + [i] IF nextPhW(D) AND next2PhW(i) THEN length 225 -ENDIF -// Only "o" -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 120 -ENDIF -// This vowel is word end - longer because it sounds too short -// "ko" -IF thisPh(isWordEnd) THEN - length 120 ENDIF FMT(vowel/o_2) endphoneme @@ -377,8 +334,9 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 140 // 150 -// "sove", "sover" - consonant + #e or #@: long + length 140 + ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ +// "sove", "sover" - consonant + @ or V: long IF next2PhW(@-) OR next2PhW(V) THEN length 225 ENDIF @@ -388,12 +346,7 @@ IF nextPhW(V) OR nextPhW(@-) THEN ENDIF // "rådig" IF nextVowel(i) AND nextVowel(isFinalVowel) THEN - length 180 -ENDIF -// This vowel is word end - longer because it sounds too short -// "på", "gå" -IF thisPh(isWordEnd) THEN - length 120 + length 225 ENDIF // "såre", "sårede" [s'O:?OD@-] IF nextPhW(O) OR nextPhW(?O) THEN @@ -407,37 +360,24 @@ endphoneme phoneme ?O vowel starttype #o endtype #o length 140 -// "hoven" -IF nextPhW(w) OR nextPhW(?u) AND next2PhW(@-) THEN - length 120 -ENDIF FMT(vowel/o_5) endphoneme phoneme V vowel starttype #@ endtype #@ - length 140 //225 + length 140 // "forlig" IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 180 + length 225 ENDIF // PB "konge" - ng=>n IF nextPhW(N) THEN - length 100 -ENDIF -// Only [V] - "og" -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 120 -ENDIF -// This vowel is word end - longer because it sounds too short -// "for" [fV] -IF thisPh(isWordEnd) THEN - length 120 + length 140 ENDIF FMT(vowel/V_4) endphoneme -// PB Short å +// PB Short V // "forstår" vs. "kåre" phoneme ?V vowel starttype #@ endtype #@ @@ -463,31 +403,28 @@ endphoneme phoneme y vowel starttype #i endtype #i -// Length changed to short since most vowels are short. -// It's probably easier only to make rules for long vowels. - length 140 //225 - + length 140 // PB long vowel followed by consonant and certain vowels // "gyde", "gyder" IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN length 225 ENDIF -// Only this vowel (in this case [y]) -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 225 -ENDIF // "dydig" [dyDi] IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 225 ENDIF // "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN - length 200 + length 225 ENDIF // "tyve" IF nextPhW(?u) AND next2PhW(@-) THEN length 225 ENDIF +// "bryde" R makes the y too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN + length 180 + ENDIF FMT(vowel/y) endphoneme @@ -496,6 +433,14 @@ endphoneme phoneme ?y vowel starttype #i endtype #i length 140 +// "udrydde" R makes the y too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN + length 100 + ENDIF +// "hytte" t/d + @- makes the y too long +IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN + length 100 +ENDIF FMT(vowel/y) endphoneme @@ -514,35 +459,30 @@ endphoneme phoneme W vowel starttype #@ endtype #@ - length 140 //160 -// "kløe" vowel + vowel: extra length -IF nextPhW(#@) OR nextPhW(#e) THEN - length 220 + length 140 +// "kløe" vowel + vowel: long +IF nextPhW(@-) THEN + length 225 ENDIF -// røde" W + 1 consonant + 3 or W or @ -IF next2PhW(#@) OR next2PhW(#e) THEN - length 160 +// "røve" W + 1 consonant + 3 or W or @ +IF next2PhW(@-) OR next2PhW(3) THEN + length 225 ENDIF -// "røveri" but NOT "surfer" [sWf?V] TEST +// "røveri" but NOT "surfer" [sWfV] TEST IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN length 140 ENDIF -// PB "nødig", "nødigt", "kølige" +// PB "nødig", "nødigt", "kølige" - long IF nextVowel(i) THEN - length 160 -ENDIF -// "møve" [mWw@-] -IF nextPhW(w) AND nextVowel(@-) THEN - length 160 -ENDIF -// "børnebog" -IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN length 225 ENDIF -// This vowel is word end - longer because it sounds too short -// "dø" [dW] -IF thisPh(isWordEnd) THEN - length 120 +// "møve" [mWw@-] - long +IF nextPhW(w) AND nextVowel(@-) THEN + length 225 +ENDIF +// "børnebog" - short +IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN + length 140 ENDIF // PB "synge" IF nextPhW(N) THEN @@ -556,6 +496,10 @@ endphoneme phoneme ?W vowel starttype #@ endtype #@ length 140 +// "bryllup", "rødder" R makes the y too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN + length 100 + ENDIF FMT(vowel/oe) endphoneme @@ -628,7 +572,7 @@ phoneme l/3 // Replacement for [l/] VowelEnding(l/l_a) VowelEnding(l/l_e, -50) // hjælpe VowelEnding(l/l_i, -70) // flygte? - VowelEnding(l/l_o,-35) // stole, skole, pistol + VowelEnding(l/l_o, -60) // stole, skole, hjulpet VowelEnding(l/l_u, -70) EndSwitch @@ -742,4 +686,4 @@ Vowelout len=70 Vowelout len=70 FMT(j/j_) ENDIF -endphoneme +endphoneme \ No newline at end of file diff --git a/phsource/ph_english b/phsource/ph_english index f0e54f71..427e5da3 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -194,6 +194,11 @@ phoneme aa // 'bath' etc. vowel starttype #a endtype #a ipa a length 185 + + IF MbrolaSynth THEN + ChangePhoneme(A:) + ENDIF + IfNextVowelAppend(r-) FMT(vowel/a) endphoneme @@ -219,18 +224,30 @@ phoneme I2 vowel starttype #i endtype #i unstressed length 130 + + IF MbrolaSynth THEN + ChangePhoneme(I) + ENDIF + IfNextVowelAppend(;) FMT(vowel/ii_4) endphoneme + phoneme I# // used for [I] which may be [@] in some accents vowel starttype #i endtype #i unstressed length 130 + + IF MbrolaSynth THEN + ChangePhoneme(I) + ENDIF + IfNextVowelAppend(;) ChangePhoneme(I2) endphoneme + phoneme i // optional variant of [I] for end of words vowel starttype #i endtype #i ipa ɪ @@ -342,6 +359,11 @@ phoneme o@ vowel starttype #o endtype #o ipa ɔː length 250 + + IF MbrolaSynth THEN + ChangePhoneme(O@) + ENDIF + IfNextVowelAppend(r-) FMT(vowel/oo_en) endphoneme @@ -418,6 +440,11 @@ endphoneme phoneme i@3 vowel starttype #i endtype #@ length 250 + + IF MbrolaSynth THEN + ChangePhoneme(i@) + ENDIF + IfNextVowelAppend(r-) FMT(vdiph2/ii@) endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 746ff73f..fdfc2909 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -69,7 +69,7 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 195 + length 190 ChangeIfDiminished(I2) FMT(vwl_en_us/ee) endphoneme @@ -181,7 +181,7 @@ endphoneme phoneme O: vowel starttype #o endtype #o - length 210 + length 200 ChangeIfDiminished(@) IF nextPh(r) THEN FMT(vwl_en_us/oor) @@ -245,7 +245,7 @@ endphoneme phoneme aI vowel starttype #a endtype #i - length 250 + length 240 IF nextPh(#a) OR nextPh(#o) THEN AppendPhoneme(;) ENDIF @@ -255,14 +255,15 @@ endphoneme phoneme eI vowel starttype #e endtype #i - length 230 - FMT(vdiph/eei_5) + length 220 + FMT(vdiph2/ei_4) +// FMT(vdiph/eei_5) endphoneme phoneme OI vowel starttype #o endtype #i - length 285 + length 280 FMT(vdiph/ooi_4) endphoneme diff --git a/phsource/ph_portugal b/phsource/ph_portugal index 37f51ed7..5635da19 100644 --- a/phsource/ph_portugal +++ b/phsource/ph_portugal @@ -48,21 +48,21 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 170 + length 180 ChangeIfUnstressed(y) FMT(vowel/e_mid) endphoneme phoneme e vowel starttype #e endtype #e - length 160 + length 180 ChangeIfUnstressed(y) FMT(vowel/e) endphoneme phoneme y vowel starttype #@ endtype #@ - length 110 + length 130 ipa ɨ FMT(vowel/i#_5) endphoneme @@ -70,7 +70,7 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 150 + length 170 IfNextVowelAppend(;) FMT(vowel/i) endphoneme @@ -78,7 +78,7 @@ endphoneme phoneme i/ // changes to NULL before a vowel vowel starttype #i endtype #i - length 100 + length 130 ipa ɨ IF nextPh(isVowel) THEN ChangePhoneme(NULL) @@ -90,7 +90,7 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 170 + length 180 // ChangeIfNotStressed(o) FMT(vowel/0_2) endphoneme @@ -98,7 +98,7 @@ endphoneme phoneme o vowel starttype #o endtype #o - length 170 + length 180 ChangeIfNotStressed(u) FMT(vowel/o) endphoneme @@ -106,13 +106,13 @@ endphoneme phoneme u vowel starttype #u endtype #u - length 160 + length 180 FMT(vowel/u_6) endphoneme phoneme U vowel starttype #u endtype #u - length 110 + length 130 IF nextPh(isVowel) THEN ChangePhoneme(w) ENDIF @@ -122,7 +122,7 @@ endphoneme phoneme EU vowel starttype #e endtype #u - length 220 + length 230 FMT(vdiph/eeu_2) endphoneme diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 793bd10a..a9307d25 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -2866,8 +2866,8 @@ int CompilePhoneme(int compile_phoneme) break; case i_ADD_LENGTH: - value = NextItem(tSIGNEDNUMBER); - *prog_out++ = (i_ADD_LENGTH << 8) + value/2; + value = NextItem(tSIGNEDNUMBER) / 2; + *prog_out++ = (i_ADD_LENGTH << 8) + (value & 0xff); DecThenCount(); break; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 7d8cb09b..fb51399a 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -3469,16 +3469,34 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f } // end of LookupDictList +extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes int Lookup(Translator *tr, const char *word, char *ph_out) {//=================================================== + int found; unsigned int flags[2]; + int say_as; + char *word1 = (char *)word; + char text[80]; + flags[0] = 0; flags[1] = FLAG_LOOKUP_SYMBOL; - char *word1 = (char *)word; - return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL)); + found = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL); + + if(flags[0] & FLAG_TEXTMODE) + { + say_as = option_sayas; + option_sayas = 0; // don't speak replacement word as letter names + text[0] = 0; + strncpy0(&text[1], word1, sizeof(text)); + found = TranslateWord(tr, &text[1], 0, NULL, NULL); + strcpy(ph_out, word_phonemes); + option_sayas = say_as; + } + return(found); } + int LookupFlags(Translator *tr, const char *word) {//============================================== char buf[100]; diff --git a/src/numbers.cpp b/src/numbers.cpp index 242924ac..ce94948b 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -651,7 +651,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) current_alphabet = alphabet; if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset)) { - if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet)) + if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet) || (al_offset == translator->langopts.our_alphabet)) { // don't say the alphabet name } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index f76225b0..b6fe3fbf 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.03d 26.Mar.13"; +const char *version_string = "1.47.03e 29.Mar.13"; const int version_phdata = 0x014701; int option_device_number = -1; @@ -1032,6 +1032,16 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ phdata->pd_param[i_APPEND_PHONEME] = data; } else + if(instn2 == i_ADD_LENGTH) + { + if(data & 0x80) + { + // a negative value, do sign extension + data = -(0x100 - data); + } + phdata->pd_param[i_SET_LENGTH] += data; + } + else if(instn2 == i_IPA_NAME) { // followed by utf-8 characters, 2 per instn word diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 57cdcabf..5a325c37 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -654,10 +654,10 @@ Translator *SelectTranslator(const char *name) // character codes offset by 0x380 static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0}; - static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ - static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ + static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ _ + static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ _ static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0}; - static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ + static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ _ SetupTranslator(tr,stress_lengths_el,stress_amps_el); @@ -670,7 +670,7 @@ Translator *SelectTranslator(const char *name) SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels); SetLetterBits(tr,LETTERGP_B,el_voiceless); SetLetterBits(tr,LETTERGP_C,el_consonants); - SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ + SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ _ tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_2R; @@ -912,6 +912,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS; tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5; // variant numbers before thousands,milliards tr->langopts.replace_chars = replace_cyrillic_latin; + tr->langopts.our_alphabet = OFFSET_CYRILLIC; // don't say "cyrillic" before letter names SetLetterVowel(tr,'y'); SetLetterVowel(tr,'r'); @@ -1113,6 +1114,7 @@ SetLengthMods(tr,3); // all equal static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N tr->letter_bits_offset = OFFSET_KOREAN; + tr->langopts.our_alphabet = 0xa700; memset(tr->letter_bits,0,sizeof(tr->letter_bits)); SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); SetLetterBits(tr,LETTERGP_Y,ko_ivowels); @@ -1194,6 +1196,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_mk,stress_amps_mk); tr->charset_a0 = charsets[5]; // ISO-8859-5 tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic; + tr->letter_bits_offset = OFFSET_CYRILLIC; tr->langopts.stress_rule = STRESSPOSN_3R; // antipenultimate tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; @@ -1608,6 +1611,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) tr->langopts.ideographs = 1; + tr->langopts.our_alphabet = 0x3100; tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word if(name2 == L('z','h')) { diff --git a/src/translate.h b/src/translate.h index 898cd9b7..2ffcd223 100644 --- a/src/translate.h +++ b/src/translate.h @@ -546,6 +546,7 @@ typedef struct { int listx; // compile *_listx after *list const unsigned int *replace_chars; // characters to be substitutes char ascii_language[8]; // switch to this language for Latin characters + int our_alphabet; // offset for main alphabet (if not set in letter_bits_offset) int alt_alphabet; // offset for another language to recognize int alt_alphabet_lang; // language for the alt_alphabet int max_lengthmod; From b01a65df1683e8fc474e557c585b59a9a3d19f60 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Fri, 29 Mar 2013 12:12:21 +0000 Subject: [PATCH 06/10] 1.47.03e (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/ur_list | 199 +++++++++++++++++++++++++++++++++++++++++--- dictsource/ur_rules | 131 +++++++++++++++++++++++++++-- 2 files changed, 309 insertions(+), 21 deletions(-) diff --git a/dictsource/ur_list b/dictsource/ur_list index 326ec13c..506a61a2 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -36,7 +36,7 @@ ل la:m م mi:m ن nu:n -و va:O +_و va:O ہ He: ں g#Unna ﮨ c#o:ti:||He: @@ -45,10 +45,13 @@ ی c#o:t.i:||je: ے bar.i:||je: ئ h'amza +ۂ He:h'amza +_ؤ va:Oh'amza َ z@b@R ِ ze:R ُ pe:S +ٰ ,alIfmaqs'u:R,a ّ t,aSd'i:d ً d'o:zab'aR @@ -166,8 +169,7 @@ _dpt _ISaRI'Ia_ // pronouns -یہ jE $u -کہ kE $u +یہ j'e:H $u وہ wo: $u آپ $u تم tUm $u @@ -186,8 +188,8 @@ _dpt _ISaRI'Ia_ تجھے t'UJ#e: جن J'In جنھیں J,InH'e:n -انھوں ,UnH'o:n -انھیں ,InH'e:n +انہوں ,UnH'o:n +انہیں ,UnH'e:n // unstressed prepositions کا $u @@ -196,6 +198,7 @@ _dpt _ISaRI'Ia_ سے $u اور OR $u $brk +کہ k'e:H $u // unstressed verbs ہے $u @@ -206,7 +209,6 @@ _dpt _ISaRI'Ia_ // Pronunciation exceptions پاکستان p'a:k'i:st'a:n -سندھ s'Ind# کچھ k'Uc# لنکس l'Ink,s لفظ l'afz. @@ -218,7 +220,6 @@ _dpt _ISaRI'Ia_ مسلح m,Usal'aH متفق mUt'afIq سابق s'a:bIq -برسر b,aRs'aR اعلان e:l'a:n سنئیے sUn'i:;e: کلنگ k'IlIn,g @@ -226,7 +227,6 @@ _dpt _ISaRI'Ia_ جسٹس J'ast.,Is شکایت S,Ika:j'at شکست SIk'ast -منزل m'anz,Il شعر S'e:R فعل f'e:l خصوصی xUs.'u:s.i: @@ -256,7 +256,6 @@ _dpt _ISaRI'Ia_ باہر ba:H'aR دیا d'i:;a: انڈیا ,Ind.'i:;a: -مظاہرین m,Uz.a:HIR'i:n فائرنگ f'a:jIR,Ing ڈائریکٹر d.,a:jIR,e:kt.'aR فرقہ f'IRqa @@ -303,7 +302,6 @@ _dpt _ISaRI'Ia_ بغیر baQ'e:R ممکن m'Umk,In ممکنہ m'Unk,In,a -طرح taR'aH الیکشن ,Ile:kS'an ووٹنگ vo:t.'Ing شواہد Sav'a:HId @@ -348,11 +346,188 @@ _dpt _ISaRI'Ia_ تعین t'a:jUn باعث b'a:jIs کتب k'UtUb -سلسلہ s'Ils,Il,a -سلسلے s'Ils,Ile: بحث be:He:s قسمت q,Ism'at آور a:v'aR بظاہر baz.'a:HIR ظاہر z.'a:HIR حکم H'Ukm +کورٹ k'o:Rt. +برطرف b,aRtaR'af +برطرفی b,aRt'aRf,i: +لئے l'i:;e: +نامزد n,a:mz'ad +نامزدگی n,a:mz'adg,i: +معطل m,Oat'al +معطلی m,Oat'ali: +تین t'i:n +تینوں ti:n'o:n +ڈاکٹر d.,a:kt.'aR +اقبال ,Iqb'a:l +جرم J'URm +اقتدار ,IqtId'a:R +عشرت ,ISR'at +نگران n,IgR'a:n +نگرانی n,IgR'a:ni: +مستقل m,Ust'aqIl +مستقبل m,Ust'aqb,Il +میر m'i:R +چھ c#'eh_! +خفیہ xUf'i:;a +اٹھانا Ut.#'a:na: +اٹھانی Ut.#'a:ni: +اٹھانے Ut.#'a:ne: +اٹھا 'Ut.#a: +اٹھی 'Ut.#i: +اٹھے 'Ut.#e: +قوت qu:v'at +اٹھایا Ut.#'a:ja: +اٹھائی Ut.#'a:ji: +اٹھائے Ut.#'a:je: +مدافعت m,Uda:fI;'at +خطرہ x'atRa +مظفر m,Uz.af'aR +کرکٹ kRIk,It. +انگلینڈ ,Ingl'e:nd. +رنز R'anz +انسداد ,InsId'a:d +نہیں naH'i:n +صحتِ s.e:H'ate: +متفقہ mUt'afIqa +تعلق t'a:lUq +متعلق mUt'a:lIq +متعلقہ mUt'a:lIqa +مسترد m,UstaR'ad +مثبت m,Usb'at +تاہم ta:H'am +پیشرفت p,e:SR'aft +تعطل t'a:tUl +متعدد mUt'a:dId +گیا g'aja: +(کیا گیا) k'i:;a:||g'aja: +(ہوا تھا) H'u:a||t#a: +(کیا ہوا) kj'a:||H'u:a: +اتحاد ,ItaH'a:d +اننگز In'Ingz +بیٹنگ be:t.'Ing +منٹ m'InIt. +ناممکن n'a:mUmkIn +(کیا جائے) k'i:;a:||J'a:je: +جمعرات J,Ume:R'a:t +جمعہ J'Uma: +برسرِ b,aRs'aRe: +درجنوں d,aRJan'o:n +درجن d,aRJ'an +خلاف xIl'a:f +برخلاف b,aRxIl'a:f +کرکٹر kRIkIt.'aR +ذمہ D'Im,a +دستخط d,astx'at +اجاگر ,UJa:g'aR +فطرت f,ItR'at +فطرتاً f,ItRat'an +طاقتور ta:q'atvaR +دفتر d,aft'aR +مشرف m,USaR'af +سنگھ s'Ing# +کمپلیکس k,ampl'e:ks +مرتبہ m,aRt'ab,a +واقع v'a:qe: +یہیں jaH'i:n +کیونکہ kj,u:nk'e:H +گفتگو g'Uft,Ugu: +جستجو J'Ust,UJu: +بھانت b#'a:nt +چکے c'Uke: +مفت m'Uft +(تو نے) t'u||n'e: +پرسکون p,URsUk'u:n +منحصر m,UnH'as.IR +سکون sUk'u:n +گشت g'aSt +گذار gUD'a:R +پرور p'aRvaR +قصے q'Is.e: +قصہ q'Is.,a +قصوں qIs.'o:n +محفوظ m,e:Hf'u:z. +مقدس m,Uqad'as +و o: +انحراف ,InHIR'a:f +مبینہ m,Ubai:;'an,a +متبادل m,Utab'a:dIl +گنا g'Una: +ملک m'Ulk +ملکی m'Ulk,i: +ملکوں m,Ulk'o:n +ممالک mUm'a:lIk +سنیچر s,ani:c'aR +اختر ,axt'aR +ملا m'Ila: +سٹیڈیم st.e:d.i:;'am +مدت mUd'at +باکس b'a:ks +آفس 'a:fIs +اشاعت ,ISa:'a:t +اظہار ,Iz.H'a:R +برقرار b,aRqaR'a:R +گھریلو g#aR'e:lu: +ٹھیک t.#'i:k +مشتمل m,USt'amIl +متلاشی m,Utal'a:Si: +ذکر D'IkR +محسوس m,e:Hs'u:s +برعکس b,aR'aks +بت b'Ut +بتوں bUt'o:n +سسٹم sIst.'am +معمر m,Oam'aR +حلیے H'Ulje: +ہلا H'Ila: +گذشتہ gUD'aSta +خطوط xUt'u:t +ہفتہ H'afta +مکرر m,UkaR'aR +چینی c'i:ni: +خیرمقدم x,e:Rm,aqd'am +محترمہ m,UHt'aRma +محترم m,UHtaR'am +ورزش v'aRz,IS +شروع S'URu: +انٹرنیٹ ,Int.,aRn'e:t. +سروس s'aRvIs +سروسز s'aRvIs,Iz +لطف l'Utf +سامع s'a:me: +ہوائیں H,ava:j'e:n +سرے s'IRe: +طبیعت t,abi:;'at +سخن sUx'an +گہر go:H'aR +سست s'Ust +لیکن l'e:kIn +سیاست sja:s'at +ریاست Rja:s'at +منسلک mUns'alIk +داخل d'a:xIl +نجی n'IJi: +منہدم m,UnH'adIm +گم g'Um +محدود m,e:Hd'u:d +متحارب m,UtaH'a:RIb +جنت Jan'at +سفر saf'aR +(فیس بک) f'e:s||b'Uk +بینک b'e:nk +حقوق HUq'u:q +آئندہ a:'Ind,a +اہتمام 'e:HtIm,a:m +قلت qIl'at +استحکام ,Iste:Hk'a:m +حصول HUs.'u:l +منقطع m,Unq'ata: +مرتکب m,URt'akIb +منہ m'u:n +فتنہ f'Itna +ذرائع DaR'a:e: +مریم m,aRi:;'am diff --git a/dictsource/ur_rules b/dictsource/ur_rules index e128c6e2..dff966e0 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -16,7 +16,7 @@ ٨ 8 ٩ 9 ي ی - +یٰ ا // vowel signs, alif acts as consonants at start of word if these follow @@ -81,6 +81,26 @@ _) ای e: _) ایمان i:m'a:n _) اعت 'e:tI _) اضاف Iz'a:f + _) اختلاف ,IxtIl'a:f + _) اسمبلی as'ambli: + _) اٹھت 'Ut.#t + _) اٹھن 'Ut.#n + _) اٹھات Ut.#'a:t + اقلیت ,aqali:;'at + استثن ,Ist'asn + اندھیر 'and#e:R + انتالیس ,Unta:l'i:s + انتیس ,Unt'i:s + اکثر ,aks'aR + ایران i:R'a:n + اجتماع ,IJtIm'a: + استحصال ,Ist,e:Hs.'a:l + _) امنگ Um'ang + انعام In'a:m + امتحان ,ImtIH'a:n + الزام ,Ilz'a:m + اشتہار ,IStIH'a:R + اصول Us.'u:l .group آ آ a: @@ -91,7 +111,8 @@ _) ای e: عا a: _) ع a _) عیس 'i:s - + _) عید 'i:d + عنوان Unv'a:n .group و و o: @@ -117,6 +138,9 @@ _) ای e: .group ے // yeh barree ے e: +.group ۂ + ۂ 'ae: + // with hamza .group ئ ئ @@ -148,7 +172,14 @@ _) ای e: بھیک bh'i:k بھیگ bh'i:g بھول bh'u:l - + _) بیان baj'a:n + _) بٹھا b'It.#a: + بئی b'ai: + بیوی b'i:vi: + _) بیوا b'e:va: + برسر b,aRs'aR + بگاڑ bIg'a:r. + بغاوت b,aQa:v'at .group پ پ pV @@ -160,7 +191,8 @@ _) ای e: _) پھر ph'IR پھول ph'u:l _) پہل (L01 p'e:Hl - + پہنچ paH'Unc + پوچھ p'u:c# .group ت ت tV @@ -169,6 +201,9 @@ _) ای e: تھ (L01 t# تّ ttV تّ (L01 tt + _) تمہ t'UmH + تحقیق t,e:Hq'i:q + _) ترجم t'aRJ,Um .group ٹ @@ -178,6 +213,8 @@ _) ای e: ٹھ (L01 t.# ٹّ t.t.V ٹّ (L01 t.t. + ٹریفک t.R'e:fIk + _) ٹکڑ t.'Ukr. .group ث @@ -196,7 +233,10 @@ _) ای e: جّ (L01 JJ _) جیت J'i:t _) جوا J'ava: - + جانب J'a:nIb + _) جنس J'Ins + جھوٹ J#'u:t. + _) جمل J'Uml .group چ چ cV @@ -205,12 +245,19 @@ _) ای e: چھ (L01 c# چّ ccV چّ (L01 cc + _) چکا c'Uka: .group ح ح HV ح (L01 H - ح (_ H + ح (_ 'aH + L01) ح (_ H + حکومت H,Uku:m'at + حکمران H,UkmaR'a:n + _) حوال Hav'a:l + + حّ HHV حّ (L01 HH @@ -218,7 +265,7 @@ _) ای e: .group خ خ xV خ (L01 x - خت(_ xt + @) خ (ت x خّ xxV خّ (L01 xx _) خوش x'US @@ -233,7 +280,12 @@ _) ای e: دھ (L01 d# دّ ddV دّ (L01 dd - + درخواست d,aRxv'a:st + دیا(_ d'i:;a: + درج d'aRJ + دیوا d'i:va: + _) دوسر d'u:sR + دفاع d'Ifa: .group ڈ ڈ d.V @@ -242,6 +294,7 @@ _) ای e: ڈھ (L01 d.# ڈّ d.d.V ڈّ (L01 d.d. + ڈھونڈ d.#'u:nd. .group ذ ذ DV @@ -254,6 +307,11 @@ _) ای e: ر (L01 R رّ RRV رّ (l01 RR + @) ر (ٹ R + @) ر (ڈ R + _) رہت R'e:Ht + @) ر (د R + @) ر (چ R .group ڑ ڑ r.V @@ -268,6 +326,7 @@ _) ای e: ز (L01 z زّ zzV زّ (L01 zz + _) زند z'Ind .group ژ ژ ZV @@ -284,18 +343,32 @@ _) ای e: _) سلجھ (L01 sUlJh _) سدھر sUdh'aR _) سدھر (L01 sUdhR + _) سلسل s'Ils,Il + _) ستار sIt'a:R + @) س (ٹ s + سندھ s'Ind# + سیکھ s'i:k# + @) س (ت s + _) سپرد sUp'URd .group ش ش SV ش (L01 S شّ SSV شّ (L01 SS + _) شعب S'Ob + شاعر Sa:'a:IR + _) شعرا S'ORa: + _) شعل S'Ol + @) ش (ت S + _) شخص S'axs. .group ص ص s.V ص (L01 s. صّ ssV صّ (L01 ss + صوب s.'u:b .group ض ض zV @@ -306,7 +379,7 @@ _) ای e: .group ط ط tV طھ t#V - ط (L01 t + ط (L01 t طھ (L01 t# طّ ttV طّ (L01 tt @@ -328,12 +401,14 @@ _) ای e: ف (L01 f فّ ffV فّ (L01 ff + _) فکر f'IkR .group ق ق qV ق (L01 q قّ qqV قّ (L01 qq + قاعد q'a:jd .group ک ک kV @@ -343,6 +418,9 @@ _) ای e: کّ kkV کّ (L01 kk _) کتن k'Itn + کوئل k'o:Il + کتاب kIt'a:b + کوشش k'o:SIS .group گ گ gV @@ -354,6 +432,10 @@ _) ای e: _) گرفت g'IRIft _) گزر gUz'aR _) گزر (L01 gUzR + گئے g'ae: + گئی g'ai: + گمشد g'UmS,Ud + _) گھما g#'Uma: .group ل ل lV @@ -368,6 +450,29 @@ _) ای e: مّ mmV مّ (L01 mm _) مشکل m'USk,Il + محکم me:He:km + مظاہر mUz.'a:HIR + _) ملن (L01 m'Iln + مسجد m'asJ,Id + مشرق m'aSR,Iq + مقدم mUq'adm + مسلم m'Usl,Im + مسلما mUs'alm,a: + @) م (پ m + موجود mo:J'u:d + منزل m'anz,Il + @) م (ب m + محقق mUH'aqIq + منظر m,anz.'aR + محفل m'e:Hf,Il + مسکرا m'Usk,URa: + مسکراہٹ m,Usk,URa:H'at. + محسن m'o:Hs,In + مجرم m'UJR,Im + منظور m,anz.'u:R + ملزم m'Ulz,Im + مغرب m'aQR,Ib + منسوخ m'ansu:x .group ن ن nV @@ -383,6 +488,14 @@ _) ای e: @) ن (چ n _) نکال nIk'a:l _) نگاہ nIg'a:H + _) نمٹ nIm'at. + _) نمٹ (L01 nImt. + @) ن (پ n + @) نچل n'Icl + نشان nIS'a:n + @) ن (ڈ n + _) نظر naz.'aR + _) نظام nIz.'a:m .group ں ں n // this should nasalize the vowel From 394869c5c270fa4ed37a9434f1f0afc4db32c69a Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 31 Mar 2013 23:05:17 +0000 Subject: [PATCH 07/10] [1.47.03f] Fix, speak letter names of Hangul (Korean) characters. Fix, ChangePhoneme(NULL) caused problems for word-gap options. Recognize Arabic comma U+060C. Languages changes: pt, nl, bn, te, da. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@336 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/an_list | 3 +- dictsource/bn_list | 44 ++-- dictsource/bn_rules | 4 +- dictsource/da_list | 38 +-- dictsource/da_rules | 518 +++++++++++++++++++++------------------ dictsource/dict_phonemes | 28 +-- dictsource/en_list | 3 +- dictsource/es_list | 1 + dictsource/hi_list | 19 +- dictsource/hi_rules | 9 +- dictsource/it_list | 3 +- dictsource/ml_rules | 7 - dictsource/nl_list | 3 +- dictsource/pt_list | 80 +++--- dictsource/pt_rules | 63 +++-- dictsource/ru_list | 6 +- dictsource/te_list | 16 +- dictsource/te_rules | 4 +- espeak-data/voices/en | 2 +- espeak-data/voices/es-la | 2 +- phsource/compile_report | 8 +- phsource/ph_bengali | 12 +- phsource/ph_danish | 341 ++++++++++++-------------- phsource/ph_english_us | 2 +- phsource/ph_tamil | 4 + phsource/vwl_en_us/er | Bin 7274 -> 7876 bytes phsource/vwl_en_us/oor | Bin 3169 -> 3169 bytes src/compiledata.cpp | 1 + src/numbers.cpp | 31 ++- src/phonemelist.cpp | 109 ++++---- src/readclause.cpp | 2 + src/setlengths.cpp | 28 ++- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 4 +- src/translate.cpp | 62 ++--- src/voices.cpp | 17 +- 36 files changed, 796 insertions(+), 680 deletions(-) diff --git a/dictsource/an_list b/dictsource/an_list index 33ede621..65a0ee0c 100755 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -1,4 +1,4 @@ -// Aragon translation rules +// Aragon translation rules // This file is UTF-8 encoded // letters @@ -182,6 +182,7 @@ $ d'olar / baRRa \ kontraBaRRa | b'aRRaBertik'al +° graUs _- gj'on ! TaRR'ar||eksklamaTj'on diff --git a/dictsource/bn_list b/dictsource/bn_list index 56852140..11a5429b 100755 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -5,7 +5,7 @@ // Bengali numbers are changed to latin characters before translation _0 S'unjO _1 '&k -_2 duj +_2 d'uj _3 t'in _4 tS'ar _5 p'a~tS @@ -125,7 +125,7 @@ _0M1 h'ajar _0M2 l'ak# _0M3 k'ot.i _0M4 'Orbud -_dpt dOsomik +_dpt _d'Osomik_ // Single consonants @@ -133,40 +133,42 @@ _dpt dOsomik খ k#O গ gO ঘ g#O -ঙ 'uNO +ঙ 'uNO~ চ tSO ছ tShO // [h] to distinguish from [tS] জ JO ঝ J#O -ঞ 'iNO +ঞ 'iNO~ ট t.O ঠ t.#O ড d.O ঢ d.#O -ণ m'odd#ennO +ণ m,odd#en.n.'O ত tO থ t#O দ dO ধ d#O -ন d'ontennO +ন d,ontenn'O প pO ফ fO // or [p#O] ? ব bO ভ b#O ম mO য় Oj -য ontostedZ'O +য ,ontostedZ'O র rO ড় r.O ড় r.O // (d. + nukta) ঢ় hr.O ঢ় hr.O // (d#. + nukta) ল lO -শ taleboS:O -ষ mud#en:oS:O -স d'onteS:O +শ t,aleboS:'O +ষ m,ud#en:oS:'O +স d,onteS:'O হ hO -ৎ kh'Ond.otO +ৎ kh,Ond.ot'O +ক্ষ k,ojmud#en:oS:'O + // full vowels অ O @@ -176,11 +178,16 @@ _dpt dOsomik উ hrOS:o'u ঊ dirg#o'u ঋ ri -এ e -ঐ oj -ও o ঔ ow +এ e $u+ // word 'it' +ঐ oj $u+ // word 'that' +ও o $u+ $brk // 'and' +_এ e +_ঐ oj +_ও o + + // combining vowel signs া 'akar ি r'oS:ikar @@ -200,12 +207,17 @@ _dpt dOsomik ঁ tS'Ondrobindu ় b'indu -_, koma +$ d.Olar +% SOtk'Ora ++ jOg += SOman + // Punctuation । dVn.d.V - +_, koma +_? pr'oSnOtSihnO // Pronouns আমি $u // main: I diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 4052adb3..66b685af 100755 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -1,4 +1,4 @@ - + // This file is UTF8 encoded // letter groups: @@ -384,3 +384,5 @@ ৢ l- ৣ l- + __) - (_D bij'og + D_) - (_D bij'og diff --git a/dictsource/da_list b/dictsource/da_list index b8c481e2..9e13ce6f 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -54,38 +54,38 @@ _?? symbol _#9 tab _#32 blank -* 'asd&r,isg $max3 -% pRos'end $max3 -@ sn,&:bel'&: -/ sgRVsdrai $max3 -\ 'Vmvendsgr,VsdRai $max3 +* '&sd@-r,isg $max3 +% pRos'End $max3 +@ sn,&b@-l'&: +/ sgRVsdrAj $max3 +\ 'VmvEndsgr,VsdRai $max3 _, k'oma: -_; se:mi:ko:lVn +_; semiko:lVn _: k'o:lVn _. pONtOm // PN u => O -_? spWrgsmVlstajn -_! udRVbstejn -_- binnesdrai -__ b'Onsdrai +_? spWrsmOlstAjn +_! udRVbstAjn +_- bin@-sdrAi +__ b'OnsdrAi & _Vw £ pun? € euro -© kVpirajt -÷ divid'eReD||meD +© kVpirAjt +÷ divid'eRVD||mED = l'imeD # n'OmV § paragr'af × g'aNe ª feminin||Wdin'al º m'askulin||Wdin'al -® registr'Er@D||v'ar@mErk3 -¼ en||kvart -¾ trEkv'art +® registr'ErVD||v'Ar@-mErk@- +¼ en||kvArt +¾ trEkv'Art ¢ s'ent ¥ j'en: µ my ' apostr'Vf -½ en'hal +½ en'h&l + plus // numbers @@ -11132,7 +11132,7 @@ ide id'e // idea idé id'e // idea tune tun3 $capital // PB Tune lufthavn - not "tune a car" [tjune] ny ny // new -også Vs@- // also +også ?Vs@- // also idet id'e // in so far as (rub og stub) R'Ob||V||sd'Ob tre tr'E // the number 3 @@ -11140,8 +11140,8 @@ rejicere rejis'eV // PB should not be pronounced [raje] rejicerer rejis'eV // PB rejiceres rejis'eVs // PB rejicering rejis'eRiN // PB -nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' -nogen n'o:@-n // PB +nogle n'o@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' +nogen n'o@-n // PB ligesom l?isVm // PB bliver blir // PB konfirmand kVnferm'&nd // PB diff --git a/dictsource/da_rules b/dictsource/da_rules index 05103726..3f891bf8 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -76,7 +76,7 @@ pl) a (nen ?& // planen // long & before de(n) - made long in ph_danish - a (de & // gade + a (de & // gade a (den & //gaden // Have = "oceans" vs. the verb have @@ -96,7 +96,7 @@ burde_h) ave & // burde have sagt past) a & // tandpastareklame r) a (CK+ A // drab, Rasmus, rask - r) a (CA+ A // drabelig, brase, gratis + r) a (CA+ A // drabelig, brase, gratis r) a (len+ ?A // gralen TEST r) a (le+ A // morale, prale r) a (dio++ A: // shortend too much by ph_danish @@ -224,6 +224,7 @@ burde_h) ave & // burde have sagt // general rule: [A] after consonant before m C) a (m+ A // ham, gamle, lam, Sam, samarbejde s) a (mL04+ & // Samoa, Samuel + met) a (+ & // metamorfose _im) a (m '& // stressed s) amurai &mur'aI // samurai c) a (mp+ & // camping @@ -388,12 +389,14 @@ gammeld) a (gs & // _t) av (_ Aw // han tav stille // general rule: [A] before r - ar (++ A: // skar, barsk + ar (K++ A: // skar, barsk + ar (Ce++ A // farten + ar (Ci++ A // farlig ar (k+ A: // marken ar (A+ AR // tarif TEST _) ar (i+ A: // arier, arisk - are (++ A:A // skare, sparepenge - aret (+ A:A@-D // advaret + are (++ A?A // skare, sparepenge + aret (+ A?A@-D // advaret ar (ne+ A // barnet ar (e+ AR // reparere, parere TEST f) are (++ A:A // fare @@ -595,7 +598,7 @@ _entusi) a (s '& // stressed - entusiast st) av (nin &v // stavning bogst) av &v // bogstavrim - not [Au] h) av (_ & // hav - problem with the noun "hav" [hAu] -iske_h) av A?u // Kaspiske hav, Karibiske Hav +iske_h) av (_ A?u // Kaspiske hav, Karibiske Hav @h) av (_ A?u // flammehav h) av (C A?u // havbund, havre københ) av (n 'Aw // @@ -673,11 +676,11 @@ ginger_) ale Ejl // _indi) a (na '& // stressed - U.S. state // stressed a in final -al in $alt words in da_list - &) al (_$p_alt+ '&l // fatal, monumental, krystalklar, regional + &) al ($p_alt+ '?&l // fatal, monumental, krystalklar, regional &) al (ist$p_alt+ &l // specialist - &) al (e_$p_alt+ ''&l // anale + &) al (e_$p_alt+ ''?&l // anale &r) al (e_$p_alt+ 'Al // liberale, morale - r) al ($p_alt++ 'Al // [A] after "r" - general, neutral, koral + r) al ($p_alt++ '?Al // [?A] after "r" - general, neutral, koral &) al (ism$p_alt+ &l' // socialisme // exception - no stress because of stressed -ion r) a (l@@+ A // centralisation NEEDS MORE WORK @@ -702,13 +705,13 @@ ginger_) ale Ejl // &) ans ($p_alt '&ns // varians // stressed a in final -at - words in da_list - &) at ($p_alt '&d // attentat - &) at (t$p_alt ''& // fregatter - only one t - &) ation ($p_alt &S''on // delegation - 2*'' because of ventil-ventilation - &r) ation ($p_alt AS'on // koncentration - &r) at ($p_alt 'At // [A] after "r" - kammerat - &r) at (i$p_alt At // [A] after "r" - demokrati - &r) at (ur$p_alt At' // [A] after "r", stressed u - littteratur + &) at ($p_alt '?&d // attentat + &) at (t$p_alt ''?& // fregatter - only one t + &) ation ($p_alt &S''?on // delegation - 2*'' because of ventil-ventilation + &r) ation ($p_alt AS'?on // koncentration + &r) at ($p_alt '?At // [A] after "r" - kammerat + &r) at (i$p_alt ?At // [A] after "r" - demokrati + &r) at (ur$p_alt ?At' // [A] after "r", stressed u - littteratur intern) atio (nal &So // clash with "internat" _oblig) atio (n &S'o // clash with "obligat" in da_list oblig) atio (n &S'o // statsobligation @@ -937,40 +940,40 @@ parmes) a (n '& // stressed // general rule: [&] after p/b/d before n L06) a (n & // tand, tante, band, spand, spade L06) a (nd ?& // bande - ban) a (n '& // banan -kontrab) ande '&nd@- // - hvord) a (n '& // stressed a in 'hvordan' - g) a (ngster+ & // + ban) a (n '?& // banan +kontrab) ande '?&nd@- // + hvord) a (n '?& // stressed a in 'hvordan' + g) a (ngster+ ?& // m) anche (t ANS'E // manchet - hin) a (n '& // stressed - hinanden - _ap) a (ch '& // apache + hin) a (n '?& // stressed - hinanden + _ap) a (ch '?& // apache pil) a (tus '& // Pontius Pilatus - L06) a (nk A // bank + L06) a (nk ?A // bank sp) a (nking &: // an (cien AN - a (ndre+ A // andre - t) a (nd & // tandrensning - _) andrea &ndr'e& // name - andrew &ndru // name - v) a (ndr A // vandre - v) a (ndrør & // - a (pote A // apotek - n) apoleon &p'oljVn // name - eng) a (ng 'A // stressed - h) a (L01 A // hank, hang, bank -restaur) ant 'AN // added stress - l) a (p+ A // slap, lap - h) a (p A // haps - l) a (pL04+ & // volapyk + a (ndre+ ?A // andre + t) a (nd ?& // tandrensning + _) andrea ?&ndr'e& // name + andrew ?&ndru // name + v) a (ndr ?A // vandre + v) a (ndrør ?& // + a (pote ?A // apotek + n) apoleon ?&p'oljVn // name + eng) a (ng '?A // stressed + h) a (L01 ?A // hank, hang, bank +restaur) ant '?AN // added stress + l) a (p+ ?A // slap, lap + h) a (p ?A // haps + l) a (pL04+ ?& // volapyk h) a (ppA ?& // happy end, happening - j) a (pp A // jappe - j) a (ps A // japser - t) a (nk A // tankstation + j) a (pp ?A // jappe + j) a (ps ?A // japser + t) a (nk ?A // tankstation mj) a (v A // kålr) a (bi 'A // kålrabi - stressed a au (++ Aw // auto, autoritet aubergin oberS'i:n // - vagin) a & // vaginaudvider + vagin) a ?& // vaginaudvider l) aurie Ori // name astron) au (t 'Aw // stressed _f) aux o // faux pas @@ -1017,11 +1020,11 @@ _dinos) aurer 'A?urV // stressed str) abads Ab'&s // stressed a, silent d disput) a (ts '& // stressed amsterd) a (m 'A // - seb) a (stian '& // PN stressed - _te) a (ter '& // stressed - byz) a (ns_ '& // stressed -_domin) a (n '& // stressed - dominans - top) a (s '& // stressed + seb) a (stian '?& // PN stressed + _te) a (ter '?& // stressed + byz) a (ns_ '?& // stressed +_domin) a (n '?& // stressed - dominans + top) a (s '?& // stressed sm) a (ck & // aw (K Aw ay (K Ej // a changed to E @@ -1047,7 +1050,7 @@ dovenl) ar (s & // &) age (re$p_alt+ &S'e@ // not for the "age" words - gagere hjertemass) age &:S@- // hjertemassage et) age (+ &:S@- // stueetage - t) aget (+ &@D // kirketaget - [@-] is too short here + t) aget (+ &:@D // kirketaget - [@-] is too short here t) age (lse &@- // tilfangetagelse foret) age & // bet) age &@- // betaget @@ -1148,14 +1151,15 @@ hospitalsv) ag (t Ag // sp) agh (ett &g' // spaghetti sp) ag (num A?u // r) ag (e+ A?u // drage, rage - C) age (++ &:j@- // bage, kage + C) age (++ &j@- // bage, kage fl) age (ne ?&j@- // flagene C) age (nK++ ?&j@- // sagen, kagen _t) age (_+ &j@- // tage _t) age (_sig & + _t) age (_imod & du_t) age (_ & - voldt) age (_ & - voldt) ager (_ Ar + voldt) age (_ & + voldt) ager (_ Ar cart) age (na &g'e: // name b) ag (efter++ &j // age (lig '&j@- // uindtagelig, behagelig - stressed @@ -1208,7 +1212,7 @@ rædselssl) age (n &j@- // rædselsslagent las) agn (e '&nj // bret) agn (e '&n; // s) agd (e+ & // sagde - tilb) ag (e '&:; // stressed a in 'tilbage' + tilb) ag (e '&; // stressed a in 'tilbage' .group al // final -ale - stressed a @@ -1443,7 +1447,7 @@ frederi) c (ia =ks // cigaret sig3r'&#t cigarett sig3r'&#t cc ks // accent - yu) cc (a k + yu) cc (a k ro) cc (o k // name pu) ccini S'ini // name rebe) cc (a =k // name @@ -1461,7 +1465,7 @@ frederi) c (ia =ks // c (æsar s // cordelia kVd'ili-& // ni) ch (ol k // Nicholas - computer kVmpj'u:tV // + computer kVmpj'utV // cha (t tj& // chatte ch (ateau S // chianti kj'&nti // @@ -1526,7 +1530,7 @@ north_) carolina k&rol'aIn& // d d - A) de (_ D@-_| // hade, lade + A) de (_ D@-_! // hade, lade a) de (@ D@- // hadefuld a) der (@ DV // skaderne ski) de (@ D@- // skidefuld @@ -1761,7 +1765,7 @@ stikor) d // exception - silent d in 'stikord' kandi) d (at 'd mi) dd (a d nø) dde (+ D@- // jordnøddesmør - nø) dder (+ DV // nødderne + nø) dder (+ DV // nødderne an) d (e // manden, anden - silent d _fan) de (me // fandeme - skip de, only this word gær) de V // silent d @@ -1867,7 +1871,8 @@ stikor) d // exception - silent d in 'stikord' arv) e (@ @- // farvestof ugl) e (@ @- // fugleskræmsel ønn) e (st @- // kønneste - av) e (@ @- // pavestolt + rn) e (ste @- // fjerneste + av) e (@ @- // pavestolt // exceptions cyk) e (lløb @- @@ -1895,7 +1900,7 @@ stikor) d // exception - silent d in 'stikord' @r) es (_ Vs // koncentreres TEST // E before n - VERY BROAD - e (nK E // end, men - ?E sounds too short in words like "endelig" + e (nK ?E // end, men, endelig C) e (nd ?E // kendelse, send e (ns e // ensrette _) e (n_ e @@ -1978,7 +1983,8 @@ _still) e (ben ='e st) ed (mo e // stedmor st) ed (sø e // stedsøm st) ed (da e // steddatter - e (dt ?e // fedtet dt => t 2 consonants: short e + st) ed (br e // stedbror, stedbroder, stedbrødre + e (dt ?e // fedtet dt => t 2 consonants: short e gaz) e (lle '?E // stressed van) e (ssa '?E // stressed ard) e (nner '?E // Ardennerne - stressed @@ -1987,7 +1993,7 @@ _still) e (ben ='e h) e (dd ?e // hedde m) e (dalje e // medalje v) e (de @- // helvedes - hv) ede eD@- // hvedebrød + hv) ede eD@- // hvedebrød tol) ed (o 'ed // toledostål val) e (ncia 'E // name mal) er V // maler @@ -2166,7 +2172,7 @@ stikir) e (nddreng '&# // m) e (di+ e // medicin rn) e (d+ ,e // derned forn) eden 'eD@-n // - an) er (@ V // anerkende + an) er (@ V // anerkende L09) e (de e // nede, nederlag mån) e (d @- // måneder arkim) e (des 'e // name @@ -2288,7 +2294,7 @@ provenc) e // Provence - skip the e _b) eg (_ aI // æbl) e (grød @- // æblegrød bobl) e @- // boblegummi - nothing to do with "bleg" - _) egen (@ ej@-n // egenrådig, egennyttig, egentlig + _) egen (@ ?ej@-n // egenrådig, egennyttig, egentlig eg (enkapital+ Aj eg (enbeskyd+ aI // egenbeskydning _r) e (sten_ &# // resten @@ -2364,6 +2370,7 @@ stoneh) enge EndZ // trap) ez 'Ets // stressed l) eague i:g // Champions League _m) e (d E // med, medgift + m) e (da e // medaljon // Words ending with e - general rule @) e (_+ @-_! // husleje, vække @@ -2376,6 +2383,8 @@ stoneh) enge EndZ // kk) e (@ @- // vækkeur TEST studi) e (@ @- // studiegruppe apach) e (@ @- // apacheleder +handsk) e @- // handskerum + bøvs) e @- // bøvsesen studi) er V // Catt) e (@ @- // skatteår ell) e @- // cellevæg @@ -2384,9 +2393,11 @@ stoneh) enge EndZ // vi) e (@ @- // vievand alv) e @- // kalvekød næs) e (@ @- // næseblod + øv) e (@ @- // prøveperiode + al) e (@ @- // malebog dans) e (@ @- // dansebal ås) e @- // dåse, gåsehud, Åse - ån) e (@ @- // låneansøgning + ån) e (@+ @- // låneansøgning, månestråle _lev) e (@++ @- // levevis arn) e (@ @- // barnebarn kam) e (ra @- // @@ -2398,8 +2409,8 @@ stoneh) enge EndZ // ørn) e (@ @- // børnebog mm) e (@ @- // dømmekraft ab) e (@ @- // abekat - - e (dere @- // torpedere + + e (dere @- // torpedere øl) e (@+ @- // køleskab aff) e (@ @- // straffeattest Alj) e (@ @- // patruljevogn @@ -2554,6 +2565,7 @@ _sakram) e (nte 'e &) ende (_++ @-n@- // troende // exceptions to the -ende rule k) end (e_+++ E-n // genkende, kende, anerkende + søsk) end (e++ @-n _erk) end (e_++ 'En // erkende k) ender (_ E-nV // genkender, kender, anerkender henv) ende (_ E-n@- // @@ -2672,52 +2684,52 @@ _offic) e (_ // office (officepakke) st) edet (_ ED@-t // værkstedet Ad) en (@ @-n // udenlandsk, udenad Ad) en (ti en // identificere - sir) ene (+ 'En@- // + sir) ene (+ '?En@- // gr) ene (+ En@- // grene rr) ed @-D // lærred, ørred rr) ed (A @-d // herredømme fingr) ene Vn@- // _st) evie ivi // name - ucc) es 'e + ucc) es '?e nog) et (_ D // noget - styr) e (n 'e // styren - diskr) e (t+ 'e // stressed - ork) ester 'estV // stressed e in 'orkester' - borgm) e (ster 'e // stressed - prot) e (se 'e // stressed - forur) e (ne 'e // stressed - forurene + styr) e (n '?e // styren + diskr) e (t+ '?e // stressed + ork) ester '?EstV // stressed e in 'orkester' + borgm) e (ster '?E // stressed + prot) e (se '?e // stressed + forur) e (ne '?e // stressed - forurene _terap) eut 'Wwd // stressed terap) eut Wwd // synsterapeut _torp) e (do 'e // stressed - _cel) e (ber 'e // stressed -_parent) e (s 'e // stressed - _kat) e (der 'e // stressed - ekst) e (rn 'E // stressed - int) e (rn+ 'E // stressed - bod) e (ga 'e // stressed -halvfj) e (rds '& // stressed - _konc) e (rn 'E // + _cel) e (ber '?e // stressed +_parent) e (s '?e // stressed + _kat) e (der '?e // stressed + ekst) e (rn '?E // stressed + int) e (rn+ '?E // stressed + bod) e (ga '?e // stressed +halvfj) e (rds '?& // stressed + _konc) e (rn '?E // merc) e (des 'e // car -vietnam) e (ser 'e // stressed - _ant) e (nne 'E // stressed - _el) e (v 'e // stressed - el) e (v e // kostelev, skoleelev +vietnam) e (ser '?e // stressed + _ant) e (nne '?E // stressed + _el) e (v '?e // stressed + el) e (v ?e // kostelev, skoleelev el) e (vat @- // elevator - sydv) e (st 'E // stressed - nordv) e (st 'E // - musk) e (t+ 'E // stressed + sydv) e (st '?E // stressed + nordv) e (st '?E // + musk) e (t+ '?E // stressed all) e (gro 'e // stressed - _id) e 'e // ide, ideen - id) ee (l e'E // ideelle, ideelt -havann) e (ser 'e // stressed - _malt) e (s 'e // malteser + _id) e '?e // ide, ideen + id) ee (l e'?E // ideelle, ideelt +havann) e (ser '?e // stressed + _malt) e (s '?e // malteser // a few words with final -es - stressed e - abc) e (s 'E + abc) e (s '?E cypr) e (s '&# - rec) e (s 'E - exc) e (s 'E - proc) e (s 'E + rec) e (s '?E + exc) e (s '?E + proc) e (s '?E k) ea (ton i: // name ompet) en (ce AN @@ -2783,7 +2795,7 @@ magdal) e (n 'e // Magdalena - name _d) e (_gaulle @- // name _d) e (_ i_! // venstr) e V // venstreorienterede - e (venty E: // eventyr + e (venty E // eventyr // plural suffix -ene @) ene (_ @-n@- // benene, pengene @@ -2799,6 +2811,8 @@ venstr) e V // venstreorienterede _hel) ene 'en@- // name at_form) ene 'en@- // + charl) ene 'i:n // name + // stressed e in nouns with final -esse in da_list &) esse ($p_alt ''?Es@- // finesse &) esse (r$p_alt ''?EsV // finesser @@ -2827,6 +2841,7 @@ at_form) ene 'en@- // rævep) el (s+ ?El // rævepels skindp) el (s+ ?El // skindpelsen + s) el (e+ el // sikkerhedssele // exceptions to the -el rule // final -el in da_list - stressed e @@ -3017,6 +3032,8 @@ verdensd) el el _ag) en (t 'en // agent fænom) en 'en // stressed _gem) en 'en // stressed + ætyl) en 'en // stressed + metyl) en 'en // stressed _form) en (e 'en // formene - stressed ag) en (t en // agent _ad) en (_ 'en // stressed @@ -3204,10 +3221,10 @@ infant) eri ($p_alt @-r''i // infanteri // 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 (_+ VV // elskere - @) eres (_ V@-Vs // elskeres - @) eren (_ V:Vn // elskeren - @) erens (_ VrVns // elskerens + @) ere (_+ V%V // elskere + @) eres (_ V%Vs // elskeres + @) eren (_ V:%Vn // elskeren + @) erens (_ Vr%Vns // elskerens @) ers (_ Vs // elskers @) erne (_++ Vn@- // elskerne @) ernes (_ Vn@-s // elskernes @@ -3221,6 +3238,8 @@ infant) eri ($p_alt @-r''i // infanteri wien) er V // wienerbrød od) er V // moderinstinkt + hyp) er (@ V // hyperaktiv + æd) er (@ V // læderindtræk sortep) er er // vigtigp) er er // beh) er (sk Er // beherske @@ -3278,7 +3297,7 @@ revolv) er (+ V // kundes) ervice Wvis // s) er (vicen W // v) ernon (++ Wn@-n // name - t) er (a+ er // synsterapeut + t) er (ap+ er // synsterapeut met) er (+ V // materantal dent) er V // studentereksamen _all) er V // allersidst @@ -3488,8 +3507,8 @@ guldgrav) er (e V // t) er (mo Er // termometer t) er (r E // terror t) er (rass a // [taˈʁɑsə] - _) er (C er' // er + consonant: stress on next syllable - er'hverv - _) er (go er // not stress on next in "ergo..." + _) er (C Er' // er + consonant: stress on next syllable - er'hverv + _) er (go Er // not stress on next in "ergo..." er (fari Er // ministererfaring _) ernie W:ni // name am) er (ika_ 'er // Amerika @@ -3780,7 +3799,7 @@ _nicol) ette 'Et@- // Nicolette _) fe (_ fe // cali) for 'fO: // Californien - @) for (@ fV: // lønforhøjelse, efterforske + @) for (C@ fV: // lønforhøjelse, efterforske // General rule, most words with af- plus vowel: [f] => [w] a) f (A w // afart, afprøve @@ -3812,6 +3831,7 @@ _nicol) ette 'Et@- // Nicolette a) ff (utage f // ra) ff (e f // straffe ra) f (le f // rafle + ka) f (ka f // name gira) f f // girafskind ra) f (fr f // straffri ra) f (for f // strafforfølge @@ -3955,7 +3975,8 @@ _nicol) ette 'Et@- // Nicolette g (rib g // ådselgribbe g (ran g // ædelgran g (ross g // ølgrossist - ø) g j // deleted (_ + ø) g (A j_! // møgunge - no link with next vowel + ø) g (C j // møgkedelig rø) g (ter g // røgterdreng sø) g (ang g // g (le j // mægler, besegle @@ -4361,6 +4382,7 @@ engelsk_st) i (l+ i // skr) i (der ?i // short i - general rule? b) i (l ?i // bil, bilen f) i (l ?i // fil, filen + f) i (le i // file v) i (dere ?i // t) i (d ?i // tid t) i (de@ i: // tidevand @@ -4384,23 +4406,24 @@ engelsk_st) i (l+ i // l) ide (_deres i l) ide (_jeres i l) ide (_vores i +_godt_l) ide i // general rule: initial in- : [e] - _) i (n+ e // instinkt, ineffektiv - i (ns e // bladinsekt, musikinstrument + _) i (n+ ?e // instinkt, ineffektiv + i (ns ?e // bladinsekt, musikinstrument ingeni (ø enS@-nj // flyingeniør - i (nter e // fritidsinteresse - h) i (n i // hinsides - i (nfant e // marineinfanteri + i (nter ?e // fritidsinteresse + h) i (n ?i // hinsides + i (nfant ?e // marineinfanteri f) i (nsky ?i // finskytte, finskydning i (nc ?e // pincet - _) insider ensaIdV // - _) inside (information ensaId // - _) i (ni i // initiativ - i (nu i // inuit - p) i (nsel i // - p) i (nsler i // - sixt) i (nsk 'i // + _) insider ?ensaIdV // + _) inside (information ?ensaId // + _) i (ni ?i // initiativ + i (nu ?i // inuit + p) i (nsel ?i // + p) i (nsler ?i // + sixt) i (nsk '?i // // general rule: [e] before double consonant L03) i (L01%+ ?e // ligge, dikke @@ -4412,46 +4435,47 @@ engelsk_st) i (l+ i // bast) ille 'ilj3 // sp) i (l e // lotterispil sp) ilop il'Vp // stressed - L09) i (L03%a+ e // middag - L02) i (pp e // svippe, vippe - L09) i (pp e // nippe, knippe, knippel, snippe - s) i (pp e // sippe + L09) i (L03%a+ ?e // middag + L02) i (pp ?e // svippe, vippe + L09) i (pp ?e // nippe, knippe, knippel, snippe + s) i (pp ?e // sippe mississ) i (ppi 'i // stressed musl) i (n_ 'i // stressed - v) i (ss e // visse - vr) i (ss e // vrisse - v) i (sh e // uvished - n) i (sse e // - pen) i (s i // penissen - vildn) i (s i // - p) i (sse e // - n) i (p e // nips, niptang + v) i (ss ?e // visse + vr) i (ss ?e // vrisse + v) i (sh ?e // uvished + n) i (sse ?e // + pen) i (s ?i // penissen + vildn) i (s ?i // + p) i (sse ?e // + n) i (p ?e // nips, niptang kn) ip (tang iw // kniptang i (kke+ ?e // ikke, sikkerhed, sikkert - ch) i (k+ i // chikke - sk) i (k+ i // skikkelse + ch) i (k+ ?i // chikke + sk) i (k+ ?i // skikkelse L06) i (lle ?e // billede, piller b) i (lle_+ ?i // insect b) i (ller_+ ?i // insect b) i (llen_+ ?i // insect - b) i (llet+ i // - traf) i (k i // juletrafikken - tekn) i (k i // salgsteknikken - but) i (k i // videobutikken + b) i (llet+ ?i // + traf) i (k ?i // juletrafikken + tekn) i (k ?i // salgsteknikken + but) i (k ?i // videobutikken // general rule: [i] after k, [e] followed by n/m - k) i (C+++ ?i // kikke, kikkert, kirke, kiosk + k) i (k ?i // kik, kikkert k) i (Ce++ i // skide -// k) i (dere++ i: - k) i (L09++ e // kind, skinke, skimme, skimte + sk) i (bet++ ?i // skibet + k) i (L09++ ?e // kind, skinke, skimme, skimte k) i (L09L11++ i // kime k) i (mning+ i // bik) i (ni ?i // sk) i (mo+ ?i // eskimo -// General rule j in "udie" +// General rule j in "udie", "olie" ud) i (e j // studie, audiens + ol) i (e j // olie // general rule: [e] between l and nt l) i (nt e // flint, klint, splint @@ -4526,20 +4550,20 @@ spirrev) i (p 'i // stressed C) i (mL06 e // simpel, vimpel sl) i (m i // slimprøve p) ibe (tøj iw // - p) i (p+ i // pipfugl - b) i (p+ i // bipper, biperson + p) i (p+ ?i // pipfugl + b) i (p+ ?i // bipper, biperson v) i (b+ i // vibrere - C) i (mC e // fims, gesims, vimse, bims, dims, bimle + C) i (mC ?e // fims, gesims, vimse, bims, dims, bimle l) i (mni+ i // limning -himstreg) i (ms 'e // stressed +himstreg) i (ms '?e // stressed sk) i (n+ ?e // skin, skinne, skinke - kn) i (p e // kniplen - Cr) i (mC e // vrimle, strimle + kn) i (p ?e // kniplen + Cr) i (mC ?e // vrimle, strimle Cr) i (mm ?e // grimme - short followed by 2 consonants pr) i (m+ i // primtal, primus - L06r) i (nt e // brint, print - kor) i (nt e // korinterne - str) i (nt e // strinte + L06r) i (nt ?e // brint, print + kor) i (nt ?e // korinterne + str) i (nt ?e // strinte s) i (dde ?e // sidde s) i (dning e // eftersidning læbest) i (ft e // @@ -4577,7 +4601,7 @@ espadr) ille 'ilj@- // l) inge (ri l&NSe // // general rule: [e] before nd/nk/ng - i (nd+ ?e // ind, find, vind + i (nd++++ ?e // ind, find, vind p) i (nkode ?e i (nde+ ?e // inde, finde, vinde er) i (ndr ?e // erindring, erindre @@ -4646,7 +4670,7 @@ _ventr) i (k 'i // ventrikel, ventrikler obel) i (sk '?i // stressed r) i (L08++ ?e // riste, frisk, brist, vrist, Kristus, dristig r) i (skage+ ?i // riskager - r) i (L08L04+ ?i // aristokrat + r) i (L08L04++ ?i // aristokrat, periskop dr) i (stig ?e // r) i (stik+ ?i // karakteristik fr) i (stad ?i // @@ -5332,8 +5356,8 @@ byzant) in '?in // byzantinsk .group it // words with final -it - stressed i &) it ($p_alt '?it // bakelit - &) it (an$p_alt it' // samaritan - &) ition ($p_alt iS'on // definition + &) it (an$p_alt ?it' // samaritan + &) ition ($p_alt iS'?on // definition &) it (t$p_alt '?i // avoid double t - bakelitten [ b,ak@l'it@-n] .group iv @@ -5415,6 +5439,7 @@ _adopt) iv 'iw _) je (t dZE // jetfly firma) je (t dZE // jumbo) je (t dZE // + per) je (t sZE // hyperjet ø) j (et j // øjet, overtøjet j (ungl dZ // jungle _) jersey (_ dZW:si // New Jersey @@ -5461,7 +5486,7 @@ _adopt) iv 'iw .group k k k - kk g // bækkenet [b'?Eg@n@-D] + kk k s) k (r g // skrive kanterel kant@-r'&#l // kumquat kVmkwVd // @@ -5842,8 +5867,8 @@ salama) nd nd // salamander ba) nd (emedlem nd // nd (åse nd // tundåse eje) nd (el nd // - fi) nd (el nd // findele - nd (else n // opfindelse + _fi) nd (el nd // findele + nd (else+ n // opfindelse fi) nd (eløn n // e) nd (e+ n // endeløs iske) nd (erun =nd // name @@ -6030,6 +6055,7 @@ _man_ba) nd (er n // tr) os (skrift+ os // o (ld++ ?V // hold, holde, solde - ld=>l o (mm+ ?V // komme, omme + o (nd ?o // bonde, onde _noget_r) o (s_ ?V // @@ -6043,7 +6069,7 @@ _noget_r) o (s_ ?V // w) oogie ugi // w) oo u // Hollywood oonagh un& // name - c) ochise OwS'i:s // name + c) ochise OwS'i:s // name kl) oro (form oo shamp) oo ?o // nark) o o // narkoopgør @@ -6066,13 +6092,13 @@ _noget_r) o (s_ ?V // t) o (rna ?V // tornado // PB final -skop - stressed o - &sk) op ($p_alt++ 'op // gyroskop - &sk) op (i$p_alt op' // mikroskopi - &tr) op ($p_alt++ 'op // misantrop, filantrop + &sk) op ($p_alt++ '?op // gyroskop + &sk) op (i$p_alt ?op' // mikroskopi + &tr) op ($p_alt++ '?op // misantrop, filantrop // final -om in da_list - stressed o - @) om ($p_alt+++ 'om // atom, diplom, syndrom - sark) om om // knoglesarkom + @) om ($p_alt+++ '?om // atom, diplom, syndrom + sark) om ?om // knoglesarkom // final - ose - stressed o &) ose ($p_alt+ 'o:s@- // hypnose @@ -6082,14 +6108,14 @@ _noget_r) o (s_ ?V // o (tisk o: // gotisk, laotisk // 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 + _ 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 // general rule c/k + o + n + consonant = [V] L10) o (nC V // konvoj, conga, konservator - could also be [O] @@ -6305,26 +6331,27 @@ trak_l) o (d // // general rule o + p/b: [V] o (L06+ V // op, opdrage, obstruere + o (L06%+ ?V // oppe - short kommand) o o // kommandobroen s) ophia of'i& // name - o (pposit o // opposition + o (pposit ?o // opposition o (L06L11+ o // oktober, global, Robert, oberst - psyk) o (+ o // psykogen - o (pefter+ V // - o (parbejde+ V // - j) o (b@ V // jobannonce - o (pad+ V // opad - b) o (pæl o // - k) o (par V // koparret + psyk) o (+ ?o // psykogen + o (pefter+ ?V // + o (parbejde+ ?V // + j) o (b@ ?V // jobannonce + o (pad+ ?V // opad + b) o (pæl ?o // + k) o (par ?V // koparret L10) o (L06rL11 o // kobra L02) o (L06le+ V // boble L02) o (L06%e++ ?V // dobbel C) o (L06L04++ o // monopol, mobil p) o (pidol++ V // popidol o (bbA+++ ?V // hobby, snobbet, snobbede - st) o (p++ V // stopur - k) o (bber+++ O // - selv) o (p V // selvoptaget + st) o (p++ ?V // stopur + k) o (bber+++ ?O // + selv) o (p ?V // selvoptaget _r) o (bin++ V // Robin Hood _r) oby (n++ Vbe // name pr) o (ble o // problem @@ -6333,13 +6360,13 @@ kommand) o o // kommandobroen cle) o (patra 'o // nark) o (C o // narkobranchen mikr) o o // mikroprocessor - h) o (b+ o // menneskehob - Cn) o (L06++ o // knob, knop, knoppen - gal) o (C 'V // galoche, galop - stressed - dr) o (sche V // - r) o (che V // broche - gal) o (ppere o // - kykl) o (p 'o // + h) o (b+ ?o // menneskehob + Cn) o (L06++ ?o // knob, knop, knoppen + gal) o (C '?V // galoche, galop - stressed + dr) o (sche ?V // + r) o (che ?V // broche + gal) o (ppere ?o // + kykl) o (p '?o // // general rule l + o + t: [V] l) o (t V // blot, plot, kaskelot @@ -6654,7 +6681,7 @@ torped) o o // torpedoflyene artisk) o (k 'V // stressed aut) o (+ o // autoklub t) or (t O: // tortur - C) or (L07L05 O: // portal TEST + C) or (L07L05 O: // portal TEST t) o (t V // hårtot, tot, hottentot t) o (tA o // total em) o (+ o // demokrati @@ -6736,14 +6763,14 @@ perestr) o (jka 'V // stressed _f) oyeren wAj'e@-n // f) oyer wAje // p) or (n O: // porno - p) or (c V // porcelæn + p) orce Os@- // porcelæn m) oskva Vskv'& // _im) o (d 'o // stressed m) ontana Vnt'&n& // m) o (nitor V // _C) o (_ o // jo, ko, lo, so f) o (d+ ?o // fodre - C) oe (de o // boede, troede + C) oe (de o // boede, troede betr) oe (de o@- // betroede midler sk) oe (de o@- // spr) og ow // sprog @@ -6893,7 +6920,7 @@ noblesse_) oblige _^_fr // noblesse oblige &l) on ($p_alt '?VN // bouillon, talon &æs) on ($p_alt++ '?VN // sæson bet) on ($p_alt++ '?VN // beton - &j) on ($p_alt '?VN // medaljon + &j) on ($p_alt++ '?VN // medaljon &el) on ($p_alt '?on // melon &) on (el$p_alt++ on // rationel @@ -6975,7 +7002,7 @@ helsingf) or (s 'V // stressed sekt) or V // sektoren k) or (t ?O: // kort k) or (tA ?O: // korte - t) or (L06 O: // torpedere + t) or (L06 O: // torpedere or (to O: // ortodoks, ortopæd m) orge OO@- // morgen dek) or (_ 'V:r // dekor @@ -7003,7 +7030,7 @@ helsingf) or (s 'V // stressed f) or (me O: // forme f) or (mere V // formere _h) ormon Om'on // - n) or (m O: // normal - length 90 in ph_danish + n) or (m O // normal st) or (m O: // b) or (t O: // bortforklare _ab) or 'O:d // stressed @@ -7044,7 +7071,7 @@ _transp) or (t_ 'O: // stressed - transport f) ord (ø Vd' // fordømme v) ord (i 'Vrd // gernvordighed ord (en+ Od // orden, ordensmagt - n) orden OVn // Norden - silent d + n) orden OVn // Norden - silent d b) orde (nde orE // ord (ene+ oR // ordene ord (enen+ O:d // ordenen @@ -7132,7 +7159,7 @@ _transp) or (t_ 'O: // stressed - transport _f) ore (lle+ or'&#l // foreller (fish) _f) ore (n++ V'e: // forene, forening genf) ore (n+ Ve: // genforene - f) ore (sC+ 0:0 // forestiller, foreslog + f) ore (sC+ O:O // forestiller, foreslog _f) or (el_+ or // forel _f) or (et_+ 'o@- // foret _f) or (elsk++ V' // forelske @@ -7462,6 +7489,7 @@ _transp) or (t_ 'O: // stressed - transport op) ret (++ r&#t A) rer (_++ V // horer A) ret (_++ 3-VD // horet, fyret + æ) ret (_+++ VD // været A) rerne (_++ Vn@- // horerne A) rerne (s_++ Vn@- // horernes A) rene (_ Vn@- // hærene @@ -7727,7 +7755,7 @@ franci) sc (o sk // Francisco _) stone sdoun // namde - Stone empire_) state (_ stEjt // _) sir (_ sW: // Sir Arthur - sher (wood SW: // Sherwood Forrest + sher (wood SW: // Sherwood Forrest surf sW:f // windsurfing surf (e sW:f la) sur sur // lasurfarve @@ -8133,6 +8161,7 @@ meningi) ti (s =ti j) u (nk V // junkaktie hal) u (nk 'O // stressed _f) u (nk V // funkmusik + f) unk (tion 0N // funktionsfejl _p) u (nk V // punker L06) u (nkt O // punkt @@ -8169,23 +8198,25 @@ meningi) ti (s =ti // remove u in order to make the -ig/elig rule (group i) work with u + -ig list words // e.g. u+erværdig [uErv'Erdi] will keep its stress on the next to last syllable. - _) u (@@+P1 u: + _) u (@@+P1 u_! // _" = no link with next vowel _) ufor '?ufV: // uforskyldt, uforfalsket, uforandret - _) uud 'u|'uD // uudforsket + _) uud '?u|'?uD // uudforsket + _) u (lækker '?u + // exceptions - u isn't a prefix uppercut VpVkVt // - _) u (nd+ O // underfuld, undtage - _) u (ng+ O // ungdommelig + _) u (nd+ ?O // underfuld, undtage + _) u (ng+ ?O // ungdommelig u (gle+ u // ugle - u (lv+ u // ulvene + u (lv+ ?u // ulvene _) ubeset (_ ubesed // - _p) u (b_ V // - p) u (bb V // pubben, pubber + _p) u (b_ ?V // + p) u (bb ?V // pubben, pubber u (hyre+ u: u (enig+ u' // uformel ufOm'el // - u (ltima u // ultimatum - u (ltra u // ultraviolet + u (ltima ?u // ultimatum + u (ltra ?u // ultraviolet u (denfor+ u // u (dgrundelig+ u // u (imodståelig u // @@ -8276,17 +8307,17 @@ meningi) ti (s =ti _) ud (@@+P2 ''?uD _) ude (@@+P3 ''uD@- // exceptions for ud-: [ud] - _) ud (elt+P2 '?ud // udelt - _) ud (at+P2 '?ud // udateret + _) ud (elt+P2 '?ud // udelt + _) ud (at+P2 '?ud // udateret _) ud (rikkelig+P2 ud _) ud (røj+P2 'ud _) ud (uelig+ ?ud _) ud (y+P2 '?ud // udyd, udygtig, udyr _) ud (øbt+P2 'ud - _) ud (ød+P2 ?ud // udødelig + _) ud (ød+P2 ?ud // udødelig _) ud (åd+P2 '?ud _) ud (en+ ?uD - _) ud (kig ?uD // udkigspost (another rule overrides a silent g rule) + _) ud (kig ?uD // udkigspost (another rule overrides a silent g rule) u (nL08+ O // kunst br) unch VnS // @@ -8297,7 +8328,7 @@ meningi) ti (s =ti st) u (nt V // stuntman _) d) u (ncan V // name b) urg (er Wg // - u (mK+ O // dum + u (mK+ ?O // dum n) u (mlock V // h) umphrey Vmfri // name _b) urns W:ns // name @@ -8469,15 +8500,15 @@ mudderh) u (l O // g) u (f ?O // guffe g) ulv Ol // gulv - silent v g) ulv (e Olv // gulve - sm) u (C O // smukkere, smurt + sm) u (C ?O // smukkere, smurt rasm) u (s u // Rasmus - name m) u (sik u // middagsmusik - sL09) u (t u // snut, smut + sL09) u (t ?u // snut, smut sL09) u (tt ?u // smutte sL09) u (CL11 u // snude sm) u (L03+ u // smule, smuld, smuds l) u (krere u // - L09) u (f O // fornuft + L09) u (f ?O // fornuft L09) u (ff ?O // muffe m) uffin VfIn // m) u (ft u // mufti @@ -8487,7 +8518,7 @@ mudderh) u (l O // _instr) u (ks 'u // stressed valp) u (rgis 'u // stressed valpurgisnat gr) u (p u // gruppe - r) u (m O + r) u (m ?O tr) u (man u // name _st) urgis WdZis // name _m) u (llin V // name @@ -8569,7 +8600,7 @@ proven) u 'y dø) v w // døvstum le) v (_ w // elev ble) v (et : // long e - could also be w [ˈblewəð] - mø) v (e+ w_| // møve + mø) v (e+ w_! // møve &A) v (_A v // gav ordre ti) v (A v // fiktive v (n w // jævn, levne @@ -8673,10 +8704,15 @@ udeble) v w // d) y (sse ?y // dysse pl) y (ss ?y // plysset h) y (ld ?y // hyldest + C) y (ll ?y // gylle // short y Cl) y ?y // fly, bly TEST s) y (nes ?y + s) y (l ?y // sylen + l) y (d ?y + l) y (de_ y + l) y (den_ ?y // general rule: [W] before (some) velars y (nk+ W // ynk, ynkelig, klynke @@ -8705,38 +8741,38 @@ udeble) v w // s) yndi (k ?Wndi // syndikat // general rule: consonant + y + sp/st/sk: [?y] - glottal - C) y (L08+ y // kysk + C) y (L08+ ?y // kysk C) y (se+ y // kyse l) y (set+ ?y // c) y (kel ?y // short y - l) y (stgård W // + l) y (stgård ?W // kr) y (bb+ ?y // krybbe - kr) y (s+ y // krystal, kryster + kr) y (s+ ?y // krystal, kryster r) y (L01%++ ?W // krykke, ryggen r) y (C+ ?W // ryste, bryllup, tryg, krympe, krymmel - short W - tr) y (l++ y // tryl - str) y (C y // stryknin + tr) y (l++ ?y // tryl + str) y (C ?y // stryknin _harr) y i // dr) y (p W // r) y (Ce++ y // tryne, pryde tr) y (de ?y // fortryde r) ydell aId'El/2 // name - r) y (sk+ y // brysk - mar) y (s i // - r) y (L06+ y // kryptere, kryb + r) y (sk+ ?y // brysk + mar) y (s i // name + r) y (L06+ ?y // kryptere, kryb r) y (L06A+ y // krybe - r) y (t+ y // rytme, rytter - br) y (n y // øjenbryn - gr) y (n y // - gr) y (nt W // - p) y (nt W // + r) y (t+ ?y // rytme, rytter + br) y (n ?y // øjenbryn + gr) y (n ?y // + gr) y (nt ?W // + p) y (nt ?W // r) y (de++ y // bryde forbr) y (d++ ?y // forbrydelse, forbryder - r) y (den++ ?y // gryden - short y TEST - r) y (d_++ y // fryd, ryd -// Short glottal y in both "kryds" and "krydse/r" + r) y (d_++ ?y // fryd, ryd + +// Short y in both "kryds" and "krydse/r" r) y (dC++ ?y // krydser, rydde - fr) y (s+ y // forfrysning + fr) y (s+ ?y // forfrysning // exceptions // problem with lyst - blond = light coloured; and lyst = would like to, feel like @@ -8950,7 +8986,8 @@ _stereot) y (p 'y // stressed // glottal æ followed by double consonant æ (C%+ ?E // læsse - æ (CC ?E // hænder - nd=>n Too broad? + æ (CC ?E // hænder - nd=>n + æv (de ?Ew // hævde æ (gypt E' // ærre ?E3-V // spærreballon desv) ærre 'E3-V // stressed @@ -8973,7 +9010,7 @@ _hun_l) æ (ste E: kr) æ (_ E? // r) æ (t+ &# // åndedræt spr) æ (C+ &# // sprængt - pr) æ (C+ ?E // prætendere, præsentere, prækvalificere + pr) æ (C+ ?E // prætendere, præsentere, prækvalificere rør) æg Eg // pr) æ (gn E // prægnans, prægnant for) æ (dle ?E // @@ -9079,8 +9116,8 @@ majest) æ (t 'E // stressed æ ø W // Short ø - double consonant - ø (C%++ ?W // tørre, fødder, rødder - r) ø (L09% ?W# // grønne, strømme, rømme + ø (C%++ ?W // tørre, fødder, rødder + r) ø (L09%+ ?W# // grønne, strømme, rømme ø (rnene ?W // børnene, tjørnene - TEST ø (ds ?W // ødsel, fødsel - short before 2 consonants b) ø (n ?W // bønder @@ -9125,7 +9162,7 @@ oberstl) ø (jtnant 'W# // stressed dr) ø (n ?W // drøn dr) ø (ne W // drøne d) ø (d ?W // død - d) ø (de W: // døde + d) ø (de W // døde d) ø (den ?W // døden r) ø (mer ?W // strømere L08) ø (ge W // skøge @@ -9182,7 +9219,6 @@ bonder) ø (v W# // bonderøve å (Ce O // måned år (@ O: // dårlig, årsag @) år (_ ?O: // skatteår -// g) år O // går, overgår _) år (_ O: // år C) år (_ ?O: // sår, kår, skår, får år (s O: // årstid @@ -9192,6 +9228,10 @@ bonder) ø (v W# // bonderøve n) å (et ?O // short glottal o @n) å (et O // opnået +// Short o + v) å (gn ?0 // vågne + v) å (ben ?0 + ovenp) å (_ '?O // stressed (originally 2 words "oven på") undg) åe (lig '?O // stressed opn) åe (lig '?O // stressed @@ -9294,7 +9334,7 @@ slagsm) å (l ?O // str) å (forkort ?V // stråforkorter str) å (hat ?V // str) å (død ?V // - årer OO- // sårer, årer + årer OO- // sårer, årer å (lti ?V // måltid .group ' diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index caa07896..0ef01f8a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -25,7 +25,7 @@ n^ p p` r s S t t` tS tS` v w x z Z -Dictionary an_dict 2013-03-28 +Dictionary an_dict 2013-03-29 a aI aU e E eI eU i o O oI u U @@ -36,7 +36,7 @@ Q r R R2 s S t T t# tS w x -Dictionary te_dict 2013-03-26 +Dictionary te_dict 2013-03-31 a a: aI aU e E e: i i: l- o o: r- u u: @@ -60,7 +60,7 @@ s; t t; tS ts v x z Z z; -Dictionary bn_dict 2013-03-29 +Dictionary bn_dict 2013-03-31 & a a~ e e~ i i~ l- o O o: O~ o~ r- u u~ @@ -111,7 +111,7 @@ p r s S t T v w x z -Dictionary da_dict 2013-03-29 +Dictionary da_dict 2013-03-31 & &# 0 3 ?& ?&# ?0 ?A ?e ?E ?i ?o ?O ?u ?V ?W @@ -150,7 +150,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-28 +Dictionary en_dict 2013-03-30 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -178,7 +178,7 @@ s S t T tS ts v w x z Z -Dictionary es_dict 2013-03-28 +Dictionary es_dict 2013-03-29 @ a aI aU e E eI eU i o O oI u @@ -273,10 +273,10 @@ N n^ p r R R2 s S t tS ts tS; v x z Z -Dictionary hi_dict 2013-03-16 +Dictionary hi_dict 2013-03-31 -@ @- @2 a a: aI aU a~ -e E e: E: E~ i I i: +@ @2 a a: aI aU a~ e +E e: E: e~ E~ i I i: l- o O o: O: O~ o~ r- u U u: u~ V @@ -336,7 +336,7 @@ n^# p Q r R r# R2 s S s2 t T tl# v x z -Dictionary it_dict 2012-11-22 +Dictionary it_dict 2013-03-29 @- a a/ aI aU e E eI i I i# o O u @@ -462,7 +462,7 @@ N n^ p r R s S t tS ts tS; v x z Z -Dictionary ml_dict 2013-03-16 +Dictionary ml_dict 2013-03-31 @ a a# a: aI aU e E e: i I i: o o: r- u @@ -501,7 +501,7 @@ r r. s S s. t t# t. t.# v w x z -Dictionary nl_dict 2013-03-27 +Dictionary nl_dict 2013-03-29 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -563,7 +563,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-29 +Dictionary pt_dict 2013-03-31 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -592,7 +592,7 @@ ts; v v; w w2 x z Z z; Z; -Dictionary ru_dict 2011-10-24 +Dictionary ru_dict 2013-03-31 8 @- a A e E E# E% E2 i I I# I3 I^ ja ju diff --git a/dictsource/en_list b/dictsource/en_list index ecc2fbdf..1cd478c9 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -1,4 +1,4 @@ - + // You can use the en_extra file, rather than this one // to add your own pronunciation definitions. @@ -1631,6 +1631,7 @@ gigantic dZaIg'antIk gilead g'IlIad gimme gImi giraffe dZI2raaf +github gIthVb glacier gleIS3 goin ,goUI2n $only // for goin' gonna g,@n@ diff --git a/dictsource/es_list b/dictsource/es_list index abce5fcb..6d307b7b 100644 --- a/dictsource/es_list +++ b/dictsource/es_list @@ -29,6 +29,7 @@ _tld t'ilde // names of symbols ª a º o +° grados _. punto _, koma _; p,untoik'oma diff --git a/dictsource/hi_list b/dictsource/hi_list index d926d6ba..f77a850f 100755 --- a/dictsource/hi_list +++ b/dictsource/hi_list @@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? श S@ ष s.@ // retroflex [S] स s@ -ह H@- +ह H@ क़ q@ ख़ x@ ग़ Q@ @@ -196,10 +196,21 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? _?? Vks.@r +// Alphabet names +_ar 'Vrbi +_cyr sIrIk'Ik +_zh c'i@ni // Punctuation । dVn.d.V +$ dOl@r +% pVt'IS@t ++ plVs += bVr'a:b@r +* ta:r'a:Nk@n +* + // Pronouns मैं $u // main: IrI मुझे $u @@ -262,7 +273,7 @@ _?? Vks.@r को $u // ko: to तक $u // tak: until, for(time) बिना $u $pause // without (preposition) -में $u // me: in +में me~: $u+ // me: in से $u // se: from, with, by @@ -272,7 +283,7 @@ _?? Vks.@r // Conjunctions -और $u $pause // aur: and +और $u $brk // aur: and य j@ $u $pause // ja: or अगर $u $pause // agar: if यदि $u $pause // yadi: if, whether @@ -299,5 +310,5 @@ _?? Vks.@r // Exceptions -क्रिकेट krIk'Et +क्रिकेट kr'IkIt सायबर s'aIb@r diff --git a/dictsource/hi_rules b/dictsource/hi_rules index ffbd8801..5b6ccf83 100755 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -390,7 +390,7 @@ ः H // visarga .group ् // virama -् + ् // Extra consonants @@ -410,7 +410,7 @@ ज़ zV ज़ (B z -.group ड़ // dddha (should retroflex flap) +.group ड़ // dddha (should retroflex flap ?) ड़ r.V ड़ (B r. @@ -443,8 +443,3 @@ -.group - $ dOlV - % pVsEnt - - diff --git a/dictsource/it_list b/dictsource/it_list index f5aab0cd..90500f7d 100644 --- a/dictsource/it_list +++ b/dictsource/it_list @@ -1,4 +1,4 @@ -// This file is UTF-8 encoded +// This file is UTF-8 encoded // $alt change [e] or [o] in the stressed syllable to [E] or [O] @@ -82,6 +82,7 @@ _tld t'ilde # kantSellet:o @ ki'otS:ola ~ tilde +° g@-*'a:di : d,uep'unti _! p,untoesklamat'ivo diff --git a/dictsource/ml_rules b/dictsource/ml_rules index 3094aba9..fa6061b1 100644 --- a/dictsource/ml_rules +++ b/dictsource/ml_rules @@ -295,12 +295,5 @@ -.group 0xe0a4 // devanagari - 0xe0a4 _^_HI // switch to hindi voice - -.group 0xe0a5 // devanagari - 0xe0a5 _^_HI - - .group $ do:l.ar diff --git a/dictsource/nl_list b/dictsource/nl_list index 5cff59cf..1a0f4cea 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -1,4 +1,4 @@ - + // This file in UTF8 encoded // $alt2, remove s from plural, remove en from plural @@ -80,6 +80,7 @@ _- k'OpElt,e:k@n = Q@l'EIkte:k@n __ l'IgEntst@-*'e:pj@ € 'Y:*o:t,e:k@n +° Qra:d@n // numbers diff --git a/dictsource/pt_list b/dictsource/pt_list index 34dd50b5..19d2c056 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -683,6 +683,7 @@ bolo $alt2 bolo $alt $verb borboleta $alt2 bordo $alt +borra $alt2 $noun bosque $alt boto $alt2 $noun brejo $alt @@ -693,12 +694,13 @@ cacete $alt2 cachorra $alt2 caderneta $alt2 cadete $alt2 +camelha $alt camelo $alt2 camiseta $alt2 cantora $alt2 capacete $alt2 caractere $alt -carbureto $alt2 +carbureto $alt2 careta $alt2 carreta $alt2 carroça $alt @@ -707,7 +709,7 @@ cateto $alt2 catorze $alt2 cebola $alt2 cefaleia $alt -centopeia $alt +centopeia $alt cerca $alt cerca $alt2 $noun cerco $alt $verb @@ -735,8 +737,11 @@ concerto $alt2 $noun concertos $alt2 concordo $alt conforto $alt $verb +console $alt2 $noun consolo $alt2 $noun controle $alt2 $noun +controles $alt2 +controles $alt $verb controlo $alt2 $noun coreia $alt coreto $alt2 @@ -747,19 +752,19 @@ corto $alt corveta $alt2 corvos $alt coto $alt2 -cotovelo $alt2 +cotovelo $alt2 cratera $alt crede $alt2 crepe $alt decore $alt -degelo $alt2 +degelo $alt2 desapego $alt2 $noun descordo $alt desemprego $alt2 desemprego $alt $verb desespero $alt2 $noun desfecho $alt2 -desmantelo $alt2 $noun +desmantelo $alt2 $noun desporto $alt2 desportos $alt desprezo $alt2 $noun @@ -768,7 +773,7 @@ desse $alt $verb deste $alt2 deste $alt $verb desterro $alt2 -destroem $alt +destroem $alt deveras $alt dez $alt diarreia $alt @@ -787,11 +792,12 @@ endereço $alt $verb enforco $alt engordo $alt enredo $alt $verb -enrosco $alt $verb +enrosco $alt $verb enterro $alt2 $noun enumerem $alt envelope $alt envolto $alt2 +enxaqueca $alt2 enxerto $alt2 $noun epopeia $alt eritreia $alt @@ -800,7 +806,7 @@ erro $alt $verb esboço $alt $verb escopeta $alt2 escova $alt2 $noun -escovas $alt2 +escovas $alt2 escovo $alt escroto $alt2 esforço $alt $verb @@ -813,18 +819,18 @@ espiroqueta $alt2 espoleta $alt2 esposa $alt2 esqueleto $alt2 -estilete $alt2 +estilete $alt2 estrela $alt2 estrofe $alt estorno $alt $verb estorvo $alt $verb etiqueta $alt2 europa $alt -europeia $alt +europeia $alt exagero $alt $verb explore $alt faceta $alt2 -fantoche $alt +fantoche $alt farofa $alt febre $alt fera $alt @@ -843,7 +849,7 @@ forca $alt2 força $alt2 $noun forças $alt2 forço $alt -formos $alt2 +formos $alt2 forro $alt $verb frevo $alt2 fulgores $alt2 @@ -851,8 +857,8 @@ galera $alt galileia $alt gameta $alt2 geleia $alt -gelo $alt2 -gelo $alt $verb +gelo $alt2 +gelo $alt $verb genebra $alt gesso $alt2 golpe $alt @@ -871,16 +877,18 @@ hemorroida $alt hoje $alt2 horrores $alt2 ideia $alt -interesse $alt2 $noun +imberbe $alt +interesse $alt2 +interesse $alt $verb jogo $alt2 $noun joguete $alt2 lagosta $alt2 lambreta $alt2 lebre $alt lembrete $alt2 -lepra $alt +lepra $alt leste $alt2 $verb -lingueta $alt2 +lingueta $alt2 lopes $alt macete $alt2 maior $alt @@ -901,9 +909,9 @@ minueto $alt2 miolo $alt2 miolos $alt modelo $alt2 -modelo $alt $verb +modelo $alt $verb moeda $alt -mofo $alt $verb +mofo $alt $verb molho $alt2 $noun monera $alt morcego $alt2 @@ -928,7 +936,7 @@ obstetra $alt odisseia $alt onu $1 olho $alt2 $noun -onomatopeia $alt +onomatopeia $alt opereta $alt2 ordens $alt osso $alt2 @@ -942,7 +950,6 @@ palacete $alt2 palheta $alt2 panfleto $alt2 pangeia $alt -panqueca p,&~Nk'Ek& pantera $alt parede $alt2 pastora $alt2 @@ -970,7 +977,7 @@ pose $alt2 povos $alt poxa p'oS& primavera $alt -prosopopeia $alt +prosopopeia $alt quarteto $alt2 queda $alt quede $alt2 @@ -986,13 +993,13 @@ reforço $alt $verb reforços $alt refresco $alt $verb reitora $alt2 -rejo $alt +rejo $alt relevo $alt2 $noun remorso $alt -renovo $alt $verb +renovo $alt $verb retorno $alt $verb -reuva $alt -rigores $alt2 +reuva $alt +rigores $alt2 rixa x'iS& rocha $alt rock $alt @@ -1037,10 +1044,10 @@ tocha $alt toga $alt topo $alt $verb torno $alt $verb -tornozelo $alt2 +tornozelo $alt2 torre $alt2 $noun torres $alt2 -torro $alt +torro $alt tortos $alt traqueia $alt travesso $alt2 @@ -1054,6 +1061,7 @@ tumores $alt2 valeta $alt2 vanessa $alt2 velozes $alt +verbete $alt2 violeta $alt2 violoncelo $alt voga $alt @@ -1070,7 +1078,8 @@ zorra $alt2 ?1 back b'Ek ?2 backup bEk'&p ?2 backups bEk'&ps -?1 blind bl'aind +blind bl'aind +book buk ?1 braille b:r'aily ?2 Braille bR'aili ?1 cancel k'&ns'El @@ -1087,7 +1096,6 @@ zorra $alt2 ?2 download daUNl'owd ?3 download dau~Nl'owd ?1 end 'end -?1 escape Sk'eIpy ?2 esc 'Esk ?3 esc 'EskI ?1 explorer ,ekspl'O:*&r- @@ -1110,6 +1118,7 @@ zorra $alt2 ?2 Intranet iNtRan'Et ?1 kernel k'Ern,El ?2 kernel k'Ern@l +laptop lEptOp ?1 line l'ain layout l'eI,aUt ?2 logo l'OgU @@ -1140,14 +1149,12 @@ símbolo s'imbolU ?2 software s'Oftwe@- ?1 space sp'eIsy ?1 sporting sp'Ort,ing -?1 tab t'ab + tab t'aby ?1 telemóvel t,El,Em'OvEl ?1 telemóveis t,El,Em'OveIs# ?1 up &p ?1 upload &pl'oud ?2 web w'Eb -?2 verbete verb'etSi -?2 verbetes verb'etSis ?1 yahoo 'i,ah'u ?2 yahoo iah'u ?1 yes j'Es @@ -1161,14 +1168,16 @@ louis _^_FR // foreign product names ?1 access 'aks,Es ?1 adobe &d'Oby +apple 'Epow +chrome kR'owmi debian d'Ebj&~N ?1 excel ,Eks'El ?1 express ,Ekspr'Es espeak isp'i:k ?1 espeakedit isp'i:kEd,it +facebook feisybuk ?1 fedora _^_EN -?1 firefox f'ai&rfOks -?2 firefox f'ai@fOks + firefox f'ai@fOks ?1 front fr'ont ?1 jaws dZ'au:z ?1 linux l,in'uks @@ -1203,6 +1212,7 @@ playstation _^_EN suse z'u:ts@ ?1 start st'art // nero StartSmart ?1 time t'aImy // nero show time +twitter tw'iter ubuntu ub'untu ?1 unix ,u:n'iks ?2 unix j'uniks diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 8cbbbbd6..cce034fc 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -100,6 +100,7 @@ ái (s ''aI á (iCK ''a áy ''aI + ál (C ''aU áu ''aU áu (s ''aU ?1 ál ''Al @@ -221,13 +222,13 @@ f) e (rem_ E e (que_ E - e (quem_ E - + e (quem_ E + e (rgA_ E e (rgAm_ E -e (rgue_ E -e (rguem_ E + e (rgue_ E + e (rguem_ E e (rsA_ E e (rsAm_ E @@ -242,7 +243,7 @@ e (rguem_ E e (stAm_ E e (strA_ E -e (rme_ E + e (rme_ E e (rnA_ E e (rnAm_ E @@ -461,6 +462,7 @@ respond) e (L07_ e // cor- _gr) e (gL03_ e _gal) e (gL03_ e _n) e (grL03_ e + _ch) e (guL02_ e estr) ei (L04_ EI _inv) e (jL04_ E tr) e (pL04_ E // es- @@ -488,10 +490,9 @@ _recup) e (rL04_ E _refrig) e (rL04_ E _v) e (rbL03_ E _p) e (rdL02_ E -_ch) e (guL02_ e _l) e (rdL03_ E _h) e (rdL04_ E - _bez) e (rrL03_ e + _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e _refr) e (scL01_ E @@ -536,6 +537,7 @@ _entorp) e (çL03_ e éi (s ''EI é (iCK ''E éy ''eI + él (C ''EU éu ''EU éu (s ''EU é (uCK ''E @@ -576,18 +578,18 @@ _entorp) e (çL03_ e gu (Y g a) gu (ent gw _ar) gu (i gw - averi) gu (e gw + averi) gu (e gw enxa) gu (e gw - i) gu (idade gw + i) gu (idade gw lin) gu (e gw lin) gu (i gw - _min) gu (e gw + _min) gu (e gw _pin) gu (im_ gw _pin) gu (ins_ gw - _sa) gu (i gw + _sa) gu (i gw san) gu (ín gw san) gu (in gw - tin) gu (i gw + tin) gu (i gw ?1 n) gu (A gw // eg: língua, etc. ?1 man) gu (ei g // mangueira ?1 gu (ém_ g // eg: alguém, ninguém, etc... @@ -620,6 +622,8 @@ _entorp) e (çL03_ e i (A_ 'i i (am_ 'i + i (em_ 'i + io (_ iU io (s_ iU i (oCK i @@ -657,6 +661,7 @@ _entorp) e (çL03_ e ím (C ''im ín (K ''iN ính ''in^ + íl (C ''IU .group j @@ -754,6 +759,9 @@ _entorp) e (çL03_ e o (ltA_ O o (ltAm_ O + o (lve_ O + o (lvem_ O + o (sA_ O o (so_N o // not for osos_ o (sAm_ O @@ -831,10 +839,10 @@ _entorp) e (çL03_ e //sort _f) o (L05_ o _f) o (L07_ o - _engl) o (bL04_ O _s) o (bL02_ O + _af) o (bL04_ O _esn) o (bL04_ O - _af) o (bL04_ O + _engl) o (bL04_ O br) o (chL04_ O _deb) o (chL04_ O _m) o (fL01_ O @@ -842,8 +850,6 @@ _entorp) e (çL03_ e _s) o (frL02_ O r) o (gL04_ O // inter- _j) o (gL04_ O -_emp) o (lgL04_ O -_f) o (lgL04_ O _af) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O @@ -851,15 +857,12 @@ _f) o (lgL04_ O _ap) oi (L02_ OI _b) oi (L04_ OI _t) o (lL03_ o + _f) o (lgL04_ O + _emp) o (lgL04_ O c) o (lhL02_ O // es- en- re- _t) o (lhL02_ O _m) o (lhL04_ O - env) o (lvL02_ O // des- - _abs) o (lvL02_ O - _dev) o (lvL02_ O - _res) o (lvL02_ O - _rev) o (lvL02_ O - _ent) o (pL02_ O + ent) o (pL02_ O _c) o (pL03_ O _ens) o (pL04_ O _s) o (prL04_ O @@ -941,21 +944,21 @@ _remem) o (rL04_ O ?1 _) qua kwa // quatro, etc. ?1 _) que ke // quente, etc. ?1 _) quei (C k'eI // queira, queima, etc - A) quên (C kw'eN // frequência, etc. - C) quên (C kw'eN // delinquência, etc. - C) quên (A kw'eN // quinquênio, etc. + quên kw'eN // quinquênio, etc. ade) qu (e kw + _a) qu (idade_ kw + _a) qu (ífero_ kw e) qu (estr kw ese) qu (ív kw _e) qu (in kw fre) qu (ent kw + _ini) qu (idade_ kw li) qu (id kw lí) qu (id kw n) qu (en kw _) qu (inqu kw se) qu (en kw tran) qu (il kw -?1 quec kes // esquece, etc. ?1 queç kes // esqueça. ?1 A) que (nA_ ke // pequeno, etc. ?1 C) quê (_ ke // porquê, etc. @@ -1013,6 +1016,14 @@ _remem) o (rL04_ O ?1 A) s (G+ Z ?1 A) s (_KS1 s# ?1 A) s (_G+S1 Z + s (b z + s (d z + s (g z + s (l z + s (m z + s (n z + sr zx + s (v z _) sobre (@P5 sob*e diff --git a/dictsource/ru_list b/dictsource/ru_list index 2666f1e3..58af2d00 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -51,9 +51,9 @@ _6C S,E#s;t;s'ot _7C s;,Ims'ot _8C vOs;Ims'ot _9C dev;Vts'ot -_1MA1 t'ys;Its;V // no '1' before thousand -_0MA1 t'ys;Its;i -_0M1 t'ys;Vts; +_1MA1 t'ys;ItS;V // no '1' before thousand +_0MA1 t'ys;ItS;i +_0M1 t'ys;VtS; _1MA2 m;,IlI;'on _0MA2 m;,IlI;'ona _0M2 m;,IlI;'onof diff --git a/dictsource/te_list b/dictsource/te_list index 83bfc551..1af8f373 100644 --- a/dictsource/te_list +++ b/dictsource/te_list @@ -22,7 +22,7 @@ n En o o: p pi: q kju: -r a:r +r a:rp s Es t t#i: u ju: @@ -40,7 +40,7 @@ _1 okat.i _1a oka _2 rend.u _3 mu:d.u -_4 na:lgu +_4 na:lugu _5 aIdu _6 a:ru _7 ;e:d.u @@ -48,20 +48,20 @@ _8 ;enimidi _9 tommidi _1X padi _11 padakond.u -_12 pannemd.u -_13 padamu:d.u: +_12 pannend.u +_13 padammu:d.u: _14 pad#na:lugu _15 padihe:nu _16 padaha:ru _17 padihe:d.u _18 padd#enimidi -_19 pamdommadi +_19 pandommidi _2X irav#aI _3X muppaI _4X nalub#aI _5X ja:b#aI _6X arav#aI -_7X d.eb#baI +_7X d.#eb#baI _8X jenab#aI _9X tomb#aI _0C v#andala @@ -85,7 +85,7 @@ _?? aks.aram // 'unknown character' + ku:d.ika * naks.atra \ bja:kasla:s. -/ sla:s. +/ kudiva:lugi:ta © ka:pi:raIt. ¶ v#e:ra: @@ -137,7 +137,7 @@ U+c4d v#ottu ఫ్ ip# బ్ ib భ్ ib# -మ్ im +మ్ imu: య్ ij ర్ ir ఱ్ ir diff --git a/dictsource/te_rules b/dictsource/te_rules index 77008280..ade4544c 100644 --- a/dictsource/te_rules +++ b/dictsource/te_rules @@ -224,7 +224,7 @@ . ఁ n // candrabindu - ం m // anusvara (this should nasalize the vowel) + ం n // anusvara (this should nasalize the vowel) ః h // visarga @@ -243,7 +243,7 @@ ూ u: - ృ ru + ృ r- ౄ r-: diff --git a/espeak-data/voices/en b/espeak-data/voices/en index 59ed2ce2..84d12dd8 100755 --- a/espeak-data/voices/en +++ b/espeak-data/voices/en @@ -1,6 +1,6 @@ name english -language en-uk 2 language en-gb 2 +language en-uk 2 language en 2 gender male diff --git a/espeak-data/voices/es-la b/espeak-data/voices/es-la index 262d0687..4fbacd1b 100755 --- a/espeak-data/voices/es-la +++ b/espeak-data/voices/es-la @@ -1,4 +1,4 @@ -name spanish-latin-american +name spanish-latin-am language es-la language es-mx 6 language es 6 diff --git a/phsource/compile_report b/phsource/compile_report index 639f02eb..944e95c6 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -28,7 +28,7 @@ consonants 11 119 ne 18 157 ur 6 149 pa 15 151 - ta 23 153 + ta 24 153 kn 17 149 ml 26 152 te 16 149 @@ -429,7 +429,6 @@ l/l_ [l] base [l/3] da l/l_@ [l/3] base [l/] fr - [l/3] da l/l@ [l#] base base vowelstart_l [l] fr @@ -468,14 +467,12 @@ l/la [l#] base [l/2] fr l/l_a [l/3] base [l/] fr - [l/3] da l/le [l#] base base vowelstart_l [l] fr [l/2] fr l/l_e [l/3] base [l/] fr - [l/3] da l/L_eL_af [&] af [&:] af l/l_front [L] sq @@ -488,7 +485,6 @@ l/li [l#] base l/l_i [l/3] base [l/] fr [i] sq - [l/3] da ll/ll [L] base ll/_ll [L] base l/l_long [l] base @@ -498,7 +494,6 @@ l/lo [l#] base [l/2] fr l/l_o [l/3] base [l/] fr - [l/3] da l^/l_rfx [l.] base [l;] lt [l] ru @@ -509,7 +504,6 @@ l/lu [l#] base [l/2] fr l/l_u [l/3] base [l/] fr - [l/3] da l/l_vi [l] vi ll/xll [L] base l/l_y [l/] fr diff --git a/phsource/ph_bengali b/phsource/ph_bengali index a7dd4bc1..f7863016 100755 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -35,37 +35,37 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 200 + length 210 FMT(vowel/i_6) endphoneme phoneme u vowel starttype #u endtype #u - length 200 + length 210 FMT(vowel/u) endphoneme phoneme e vowel starttype #e endtype #e - length 200 + length 210 FMT(vowel/e) endphoneme phoneme & vowel starttype #a endtype #a - length 200 + length 210 FMT(vowel/&_2) endphoneme phoneme o vowel starttype #o endtype #o - length 200 + length 210 IF nextPhW(w) THEN - length 160 + length 170 ENDIF FMT(vowel/o) endphoneme diff --git a/phsource/ph_danish b/phsource/ph_danish index de0a2e11..bd92210e 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -8,6 +8,116 @@ // AC + @- OR V: Long "pile" [pi:l@-] // AC[i]: Long "smidig" [smi:Di] +// Change the length of short vowels (?+vowel) +procedure ShortVowelLength +// "endelig" - Short initial vowel sounds too short +IF thisPh(isWordStart) THEN + length 160 + RETURN +ENDIF +// "slutte" t/d + @- makes the u too long +IF next2PhW(@-) THEN + IF nextPhW(t) OR nextPhW(d) THEN + //length 100 + LengthAdd -50 + // Don't shorten it further if it comes after an "r" sound + // Exit the procedure + RETURN + ENDIF +ENDIF +// "bygget" - consonant + [@-D] makes the vowel too long +IF next2PhW(@-) THEN + IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN + LengthAdd -50 + // Don't shorten it further if it comes after an "r" sound ("brygget") + // Exit the procedure + RETURN + ENDIF +ENDIF +// "bygger" - consonant + [V] makes the vowel too long +IF nextPhW(isNotVowel) AND next2PhW(V) THEN + LengthAdd -50 + // Don't shorten it further if it comes after an "r" sound ("brygger") + // Exit the procedure + RETURN +ENDIF +// "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN +// length 100 + LengthAdd -50 + ENDIF +// "ring", "ringe", "fængsel" + IF nextPhW(N) THEN +// length 100 + LengthAdd -10 + ENDIF +// "sigte" t/d + @- makes the vowel too long + IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN + IF next3PhW(@-) THEN +// length 100 + LengthAdd -50 + ENDIF + ENDIF +endprocedure + +// Change the length of normal vowels (without ? in front of them) +procedure LongVowelLength +// "alene" - Short initial vowel sounds too short at length 140 +IF thisPh(isWordStart) THEN + length 160 + RETURN +ENDIF +// "forlade" - [D@-] makes the vowel too long +IF nextPhW(D) AND next2PhW(@-) THEN + length 180 + RETURN +ENDIF +// PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n] + IF nextPhW(@-) OR nextPhW(V) THEN + length 225 + ENDIF +// PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i] + IF nextPhW(isNotVowel) AND next2PhW(i) THEN + length 225 + ENDIF +// "ræve", "dele", "mene", "røve", "møve" +IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN + length 225 +ENDIF +// "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants + IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + // Don't make "møve" [m'Ww_!@-_!] short + IF NOT next2PhW(_!) THEN + length 140 + ENDIF + ENDIF +// "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long + IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN + IF next2PhW(@-) OR next2PhW(V) THEN +// length 180 + LengthAdd -70 + ENDIF + ENDIF + // "syste", "sylte" t/d/D + @- makes the vowel too long + // "international", - added [V] TEST + IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) OR next2PhW(D) THEN + IF next3PhW(@-) OR next3PhW(V) THEN + length 110 + ENDIF + ENDIF +// "glimrende" [l/3] makes the following vowel too long +// LengthAdd doesn't work here. The length could be 225 or 140 - 30 + IF prevPhW(l/3) THEN +// LengthAdd -30 + length 110 + ENDIF +// "længe" - short - 2 consonants => 1 consonant (ng => [N]) +IF nextPhW(N) THEN + length 140 +ENDIF +endprocedure + +// A bit longer than [@-] phoneme @ vowel starttype #@ endtype #@ unstressed @@ -59,26 +169,12 @@ phoneme i length 140 // Long vowel followed by consonant and @- "gide", "pile" IF nextPhW(isNotVowel) AND next2PhW(@-) THEN - length 225 +// length 225 ENDIF // "gider", vrider" IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN length 140 ENDIF -// PB long vowel followed by [@-] - "pigen" [p'i@-n] -IF nextPhW(@-) OR nextPhW(V) THEN - length 225 -ENDIF -// "vilje" - short followed by 2 consonants -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 140 -ENDIF -// PB "tie", "stige", "krige" vowel + vowel: extra length -// What is causing this very short [i] in words with final [@-]? -// NOT "galleriet" [g,?&lVR'i@-D] -IF nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN -// length 240 -ENDIF //"skider" short IF nextPhW(D) AND next2PhW(V) THEN length 140 @@ -87,7 +183,7 @@ ENDIF IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN length 225 ENDIF - +CALL LongVowelLength FMT(vowel/i_4) endphoneme @@ -95,7 +191,8 @@ endphoneme // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i - length 100 + length 140 + CALL ShortVowelLength IfNextVowelAppend(;) FMT(vowel/i_4) endphoneme @@ -111,22 +208,8 @@ endphoneme phoneme e vowel starttype #e endtype #e length 140 -// "dele", "mene" -IF next2PhW(@-) THEN - length 225 -ENDIF -// PB "ring", "ringe" -IF nextPhW(N) THEN - length 140 -ENDIF -// PB "enig", "enige", "evig" -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 225 -ENDIF -// "nedladende" [n'eDl&D@-n@-], "delte" - before 2 consonants: short -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 140 -ENDIF + CALL LongVowelLength + CALL ShortVowelLength FMT(vowel/e) endphoneme @@ -135,14 +218,7 @@ endphoneme phoneme ?e vowel starttype #e endtype #e length 140 -// "rigtigt" R makes the e too long - IF prevPhW(R) THEN - length 100 - ENDIF -// "sigte" t/d + @- makes the e too long -IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) AND next3PhW(@-) THEN - length 100 -ENDIF + CALL ShortVowelLength FMT(vowel/e) endphoneme @@ -153,29 +229,18 @@ phoneme E IF thisPh(isWordEnd) THEN IfNextVowelAppend(_!) ENDIF - // "ræve" -IF nextVowel(@-) THEN - length 225 -ENDIF -// "ære", "kærester", "ærefrygt" - longer E +// "ære", "kærester", "ærefrygt" - vowel + vowel IF nextPhW(V) THEN length 225 ENDIF -// "stædig" [st'EDi] long -IF nextPhW(isNotVowel) AND next2PhW(i) THEN +// "dræber" TEST shortened by -70 in procedure because of the "r" sound +IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) AND next2PhW(V) THEN length 225 ENDIF -// "længe" - short - 2 consonants => 1 consonant -IF nextPhW(N) THEN - length 140 -ENDIF + CALL LongVowelLength // "værelse" [v'E3-Vls@_!] IF nextPhW(3-) AND next2PhW(V) THEN length 100 -ENDIF -// "mælkebøtte" - short followed by 2 consonants -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 140 ENDIF FMT(vowel/e_mid2) endphoneme @@ -186,14 +251,7 @@ phoneme ?E vowel starttype #e endtype #e ipa ε length 140 - // "fred" R makes the E too long - IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN - length 100 - ENDIF -// "fængsel" N makes the E too long - IF nextPhW(N) THEN - length 100 - ENDIF + CALL ShortVowelLength FMT(vowel/e_mid2) endphoneme @@ -203,22 +261,17 @@ phoneme & length 140 // "same", "sale", "bade" - consonant + @-: long // but NOT "hinanden" -IF next2PhW(@-) OR next2PhW(@) AND NOT next3PhW(n) THEN - length 225 +IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN + IF NOT next3PhW(n) THEN + length 225 + ENDIF ENDIF // ThisPh + V or @- // "ae", "aer" vowel + vowel: extra length IF nextPhW(@-) OR nextPhW(V) THEN length 260 ENDIF -// "stadig" [st&Di], "stadigt" [st&Dit] -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 225 -ENDIF -// "Alfie", "alfer" - short before 2 consonants -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 140 -ENDIF +CALL LongVowelLength FMT(vowel/ee_2) endphoneme @@ -228,7 +281,7 @@ endphoneme phoneme ?& vowel starttype #e endtype #e length 140 - FMT(vowel/ee_2) + FMT(vowel/ee_2) endphoneme // Added for the æ in "dræbt" @@ -236,6 +289,8 @@ phoneme &# vowel starttype #e endtype #e length 140 ipa a + CALL LongVowelLength +// CALL ShortVowelLength FMT(vowel/&) endphoneme @@ -243,40 +298,28 @@ endphoneme // "revl" vs. "tremme" phoneme ?&# vowel starttype #e endtype #e - length 120 + length 140 + CALL ShortVowelLength FMT(vowel/&) endphoneme phoneme A // PB changed to a_8 vowel starttype #a endtype #a length 140 -// PB long vowel followed by consonant and certain vowels - "drabelig" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN - length 225 -ENDIF -// "bange" [bAN@-] - [N] = 2 consonants (ng) => short -IF nextPhW(N) THEN - length 140 -ENDIF +CALL LongVowelLength // "fare" [f'A:A] IF nextPhW(A) THEN length 225 -ENDIF -// "gratis" -IF next2PhW(i) THEN - length 225 -ENDIF -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 140 ENDIF FMT(vowel/a_8) endphoneme // PB short A -// "drab" vs. "drabelig" +// "krabbe" vs. "drabelig" phoneme ?A vowel starttype #a endtype #a length 140 +CALL ShortVowelLength FMT(vowel/a_8) endphoneme @@ -287,10 +330,7 @@ phoneme u IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN length 225 ENDIF -// "umulig" [u:m'uli] -IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN - length 225 -ENDIF +CALL LongVowelLength FMT(vowel/u_bck) endphoneme @@ -299,10 +339,7 @@ endphoneme phoneme ?u vowel starttype #u endtype #u length 140 -// "slutte" t/d + @- makes the u too long -IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN - length 100 -ENDIF + CALL ShortVowelLength FMT(vowel/u_bck) endphoneme @@ -317,10 +354,7 @@ ENDIF IF next2PhW(V) OR next2PhW(@-) THEN length 225 ENDIF -// "modig" - long vowel after consonant + [i] -IF nextPhW(D) AND next2PhW(i) THEN - length 225 -ENDIF +CALL LongVowelLength FMT(vowel/o_2) endphoneme @@ -344,14 +378,11 @@ ENDIF IF nextPhW(V) OR nextPhW(@-) THEN length 225 ENDIF -// "rådig" -IF nextVowel(i) AND nextVowel(isFinalVowel) THEN - length 225 -ENDIF // "såre", "sårede" [s'O:?OD@-] IF nextPhW(O) OR nextPhW(?O) THEN length 225 ENDIF +CALL LongVowelLength FMT(vowel/o_5) endphoneme @@ -366,14 +397,7 @@ endphoneme phoneme V vowel starttype #@ endtype #@ length 140 -// "forlig" -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 225 -ENDIF -// PB "konge" - ng=>n -IF nextPhW(N) THEN - length 140 -ENDIF +CALL LongVowelLength FMT(vowel/V_4) endphoneme @@ -387,10 +411,8 @@ endphoneme phoneme 0 vowel starttype #o endtype #o - length 140 //225 -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN - length 225 -ENDIF + length 140 + ipa ɔ FMT(vowel/oo_2) endphoneme @@ -398,6 +420,7 @@ endphoneme phoneme ?0 vowel starttype #o endtype #o length 140 + ipa ɔ FMT(vowel/oo_2) endphoneme @@ -407,24 +430,20 @@ phoneme y // PB long vowel followed by consonant and certain vowels // "gyde", "gyder" IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN - length 225 -ENDIF -// "dydig" [dyDi] -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 225 + // not "gebyret" TEST + IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN + length 225 + ENDIF ENDIF // "syge" [sy@-] vowel + vowel: extra length, but NOT "fyret" [fyVD] IF nextPhW(@-) OR nextPhW(3) AND NOT next2PhW(D) THEN length 225 ENDIF // "tyve" -IF nextPhW(?u) AND next2PhW(@-) THEN +IF nextPhW(w) AND next2PhW(@-) THEN length 225 ENDIF -// "bryde" R makes the y too long - IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN - length 180 - ENDIF +CALL LongVowelLength FMT(vowel/y) endphoneme @@ -433,25 +452,14 @@ endphoneme phoneme ?y vowel starttype #i endtype #i length 140 -// "udrydde" R makes the y too long - IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN - length 100 - ENDIF -// "hytte" t/d + @- makes the y too long -IF nextPhW(t) OR nextPhW(d) AND next2PhW(@-) THEN - length 100 -ENDIF + CALL ShortVowelLength FMT(vowel/y) endphoneme phoneme Y vowel starttype #i endtype #i - length 225 -IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 140 -ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 140 +IF nextPhW(V) OR nextPhW(@-) THEN length 225 ENDIF FMT(vowel/yy) @@ -460,34 +468,15 @@ endphoneme phoneme W vowel starttype #@ endtype #@ length 140 -// "kløe" vowel + vowel: long -IF nextPhW(@-) THEN - length 225 -ENDIF -// "røve" W + 1 consonant + 3 or W or @ -IF next2PhW(@-) OR next2PhW(3) THEN - length 225 -ENDIF // "røveri" but NOT "surfer" [sWfV] TEST IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN length 140 ENDIF -// PB "nødig", "nødigt", "kølige" - long -IF nextVowel(i) THEN - length 225 -ENDIF -// "møve" [mWw@-] - long -IF nextPhW(w) AND nextVowel(@-) THEN - length 225 -ENDIF // "børnebog" - short IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN length 140 ENDIF -// PB "synge" -IF nextPhW(N) THEN - length 140 -ENDIF +CALL LongVowelLength FMT(vowel/oe) endphoneme @@ -496,10 +485,7 @@ endphoneme phoneme ?W vowel starttype #@ endtype #@ length 140 -// "bryllup", "rødder" R makes the y too long - IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN - length 100 - ENDIF + CALL ShortVowelLength FMT(vowel/oe) endphoneme @@ -519,6 +505,7 @@ endphoneme phoneme ?W# vowel starttype #@ endtype #@ length 140 + CALL ShortVowelLength FMT(vowel/V) endphoneme @@ -562,24 +549,6 @@ endphoneme phoneme l/3 // Replacement for [l/] liquid lengthmod 7 - - IF nextPhW(isVowel) THEN -// ChangePhoneme(l) - ENDIF - - PrevVowelEndings - VowelEnding(l/l_@) - VowelEnding(l/l_a) - VowelEnding(l/l_e, -50) // hjælpe - VowelEnding(l/l_i, -70) // flygte? - VowelEnding(l/l_o, -60) // stole, skole, hjulpet - VowelEnding(l/l_u, -70) - EndSwitch - -// IF nextPh(isLiquid) THEN -// FMT(l/_l) -// ENDIF - FMT(l/l_) endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index fdfc2909..760ede5e 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -322,7 +322,7 @@ endphoneme phoneme aI3 vowel starttype #a endtype #@ - length 300 + length 310 ipa aɪɚ IfNextVowelAppend(r-) FMT(vwl_en_us/ai3) diff --git a/phsource/ph_tamil b/phsource/ph_tamil index a09cf775..ce006565 100644 --- a/phsource/ph_tamil +++ b/phsource/ph_tamil @@ -159,3 +159,7 @@ phoneme # // a NULL phoneme for 'virama' ChangePhoneme(NULL) endphoneme +phoneme z. + CALL base/z. + ipa U+027B +endphoneme diff --git a/phsource/vwl_en_us/er b/phsource/vwl_en_us/er index 064276adb3bdd62b3eb535c4c90650c34042dcdb..6dff71674a65ab0affa6c0ec3167b5e4c4a9507d 100644 GIT binary patch delta 1448 zcmciBKWGzS7{~G7`@ZM(eeLzG^r93}f)bF-4pLD22U|m|)RZcuEofK4p~M!lY)0Nm#CERS`D#z z<=>+*Kx3bb9n5t_%W2cmE?Ch*k773Nml{1)8>SObNJJ8qj7%k?<-B{7ccdCWg6rG0 z=fYErNt3-&*TfsFZg5|5TmOtb{a5TR&(#(0RGj@#uw7|GvEeGLu*A$K zTGm2mSb(c?v+sj&OQ1M6UPvtPAbGA-G94+0Dc0X>4+JZfCk(sDaVyZ7%u(Y3X_!Cq zNIe1RroK+3N-Q6cHdGDGq+MgJg>=Wv93WjGlH-!nzKH;1vXB^x0Nl4~gY;1n=_!%o z-h7%VgM77xlG9gOC|l|~ww2Qpe)%uP7Ev5CERW5vB5PHShXq(1sZ$z~L3;64%Hl{H zlwG4vv5OjR1k;%ZVyi*k~t^(O>~6C{lnRK%XGYLb6`4WBIVEpSM9zp$}`<32$cN~px<3b54tDH`QC)L Y*p6;8|AaIzHbmy&e%@5FjmhN2U!G|humAu6 delta 925 zcmX?N`^thNIKb68B-k}@B8OeQC&vc{28I<(3e2ud6B#ZrF)%z}e85=Bwvgcg8v~F( zg=sCP17is%MEokx1%?7%2wRb_fyIU&!Uh__kRXjuZs{YkZ3=$M zk5siZWVLo`|JQlHS(>qzx!#+Dk8usBKl3_9cc!Tf5=;%k!c06&nQS*1KCpckDQ1db z+Qcc%_=b}~805ICJUc;-;0Liq_~x<%@H23O*bEFl9J^%pGDFyAeid@1Ob|8$gNCv@ zn4KiqE#)R#sW4eNUhRy=O|3Sa>$;aV*RmEfGftcQkwZFzkFkN%59km_rfFb@2mu`u z$F>>hkOLw`K!@z){K5cp$Q7OqaEIjZc_KN)3+Rvrs6)ItD&!n69J2WoX9qLm7NDKN z^$ZN5pa5im*=^4>4{mn^+f=yS2RUCe9N}yb0(t5g&q1Kw4SXQ>OuiS)0sIHJAfD}Y zLD!QB&6j0ln$s))p)qsny-?1vY40%+#w|l3>@>A#F*`vmN0NI zG4MwKo$tn0&rre2z%K)2@8bN*z`=fi17zVpo}Ua8xEVM>>=1{5k_0Re zKn`I*3IsJUd$0618BzJKiYHV8)vGmKHvbnZXJ&R_J^>At0C1>K;+Q|YlsIN8a|XRE K-~2(Wh#3GFEBMg> diff --git a/phsource/vwl_en_us/oor b/phsource/vwl_en_us/oor index 3d6ca31ed749a85aca4d0dd35127b379c97795e6..302b7da47535ee1860e1f72171bcf6ca5d719e6b 100644 GIT binary patch delta 248 zcmaDT@layJVHU=o%|}?;8AW>-Ai#n3_5%pZmw{z-0$VYoxC0A9^40-_cODPy~dT88lcM1OtE~AcG->yRbWO zKVW>o$im3L0K)nlJGdLTkVW)3uJAT+po%z4H!wd0>iVJp)ba(085k<$7?{99a1jk< RHKvD?KQOCqw&c=a0st*XF_-`V delta 214 zcmaDT@layJVHU;(n~$)xGm4&IfB*;9+YcZtUj~NF32eoT;`?76fQT?Su-<|)L6Wc7 ziy4`LGLsWHMe9?bN*EYGCOu%>z!(XnL70KzA|ps-31bwH4Z_R}dO&?LOe{=2KpqG) qFjR1X)I4Bh0jdRIeU1!nR1rOnUOsdY2Wg1Nmx+g5H(PRPFaZEv{wQbw diff --git a/src/compiledata.cpp b/src/compiledata.cpp index a9307d25..a275558d 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -3059,6 +3059,7 @@ int CompilePhoneme(int compile_phoneme) case kRETURN: *prog_out++ = i_RETURN; + DecThenCount(); break; case kINCLUDE: diff --git a/src/numbers.cpp b/src/numbers.cpp index ce94948b..f8192a64 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -699,11 +699,38 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) else language = L('e','n'); - if(language != tr->translator_name) + if((language != tr->translator_name) || (language == L('k','o'))) { + char *p3; + int initial, code; + char hangul_buf[12]; + // speak in the language for this alphabet (or English) ph_buf[2] = SetTranslator2(WordToString2(language)); - LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + + if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af)) + { + // Special case for Korean letters. + // break a syllable hangul into 2 or 3 individual jamo + + hangul_buf[0] = ' '; + p3 = &hangul_buf[1]; + if((initial = (code/28)/21) != 11) + { + p3 += utf8_out(initial + 0x1100, p3); + } + utf8_out(((code/28) % 21) + 0x1161, p3); // medial + utf8_out((code % 28) + 0x11a7, &p3[3]); // final + p3[6] = ' '; + p3[7] = 0; + ph_buf[3] = 0; + TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL); + SetWordStress(translator2, &ph_buf[3], NULL, -1, 0); + } + else + { + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + } if(ph_buf[3] == phonSWITCH) { diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 027949cf..b514ddd2 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -125,6 +125,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) int delete_count; int word_start; int inserted; + int deleted; PHONEME_DATA phdata; int n_ph_list3; @@ -343,6 +344,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) plist3 = &ph_list3[j]; inserted = 0; + deleted = 0; if(insert_ph != 0) { // we have a (linking) phoneme which we need to insert here @@ -431,23 +433,27 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) plist3->phcode = alternative; if(alternative == 1) - continue; // NULL phoneme, discard - - 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 + deleted = 1; // NULL phoneme, discard } else - plist3->synthflags &= ~SFLAG_SYLLABLE; + { + 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, &worddata); + // re-interpret the changed phoneme + // But it doesn't obey a second ChangePhoneme() + InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata); + } } - if(ph->type == phVOWEL) + if((ph->type == phVOWEL) && (deleted == 0)) { PHONEME_LIST *p; @@ -552,7 +558,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) } } - if(plist3 != plist3_inserted) + if((plist3 != plist3_inserted) && (ix > 0)) { if((x = (tr->langopts.word_gap & 0x7)) != 0) { @@ -585,51 +591,54 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) // not yet implemented } - phlist[ix].ph = ph; - phlist[ix].type = ph->type; - phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module - phlist[ix].synthflags = plist3->synthflags; - phlist[ix].stresslevel = plist3->stresslevel & 0xf; - phlist[ix].wordstress = plist3->wordstress; - phlist[ix].tone_ph = plist3->tone_ph; - phlist[ix].sourceix = 0; - phlist[ix].phcode = ph->code; - - if(plist3->sourceix != 0) + if(deleted == 0) { - phlist[ix].sourceix = plist3->sourceix; - phlist[ix].newword = 1; // this phoneme is the start of a word + phlist[ix].ph = ph; + phlist[ix].type = ph->type; + phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module + phlist[ix].synthflags = plist3->synthflags; + phlist[ix].stresslevel = plist3->stresslevel & 0xf; + phlist[ix].wordstress = plist3->wordstress; + phlist[ix].tone_ph = plist3->tone_ph; + phlist[ix].sourceix = 0; + phlist[ix].phcode = ph->code; - if(start_sentence) + if(plist3->sourceix != 0) { - phlist[ix].newword = 5; // start of sentence + start of word - start_sentence = 0; + phlist[ix].sourceix = plist3->sourceix; + phlist[ix].newword = 1; // this phoneme is the start of a word + + if(start_sentence) + { + phlist[ix].newword = 5; // start of sentence + start of word + start_sentence = 0; + } + } + else + { + phlist[ix].newword = 0; } - } - else - { - phlist[ix].newword = 0; - } -// phlist[ix].length = ph->std_length; - phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2; - if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0)) - { - phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT]; - phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed - } + // phlist[ix].length = ph->std_length; + phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2; + if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0) && (plist3[1].sourceix != 0)) + { + phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT]; + phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed + } - if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE)) - { - phlist[ix].length = 128; // length_mod - phlist[ix].env = PITCHfall; - } + if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE)) + { + phlist[ix].length = 128; // length_mod + phlist[ix].env = PITCHfall; + } - phlist[ix].prepause = 0; - phlist[ix].amp = 20; // default, will be changed later - phlist[ix].pitch1 = 255; - phlist[ix].pitch2 = 255; - ix++; + phlist[ix].prepause = 0; + phlist[ix].amp = 20; // default, will be changed later + phlist[ix].pitch1 = 255; + phlist[ix].pitch2 = 255; + ix++; + } } phlist[ix].newword = 2; // end of clause diff --git a/src/readclause.cpp b/src/readclause.cpp index ea8bcbbb..049ef18d 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -85,6 +85,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x055e, // Armenian question 0x055b, // Armenian emphasis mark + 0x060c, // Arabic , 0x061b, // Arabic ; 0x061f, // Arabic ? 0x06d4, // Arabic . @@ -132,6 +133,7 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_QUESTION | PUNCT_IN_WORD, // Armenian question CLAUSE_PERIOD | PUNCT_IN_WORD, // Armenian emphasis mark + CLAUSE_COMMA, // Arabic , CLAUSE_SEMICOLON, // Arabic ; CLAUSE_QUESTION, // Arabic question mark CLAUSE_PERIOD, // Arabic full stop diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 392faa2b..785e14fd 100644 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -575,6 +575,7 @@ void CalcLengths(Translator *tr) int last_pitch = 0; int pitch_start; int length_mod; + int next2type; int len; int env2; int end_of_clause; @@ -689,8 +690,19 @@ void CalcLengths(Translator *tr) p->prepause = 40; - if((prev->type == phPAUSE) || (prev->type == phVOWEL)) // || (prev->ph->mnemonic == ('/'*256+'r'))) - p->prepause = 0; + if(prev->type == phVOWEL) + { + p->prepause = 0; // use murmur instead to link from the preceding vowel + } + else + if(prev->type == phPAUSE) + { + // reduce by the length of the preceding pause + if(prev->length < p->prepause) + p->prepause -= prev->length; + else + p->prepause = 0; + } else if(p->newword==0) { @@ -827,9 +839,17 @@ if(stress <= 1) next3 = &phoneme_list[ix+4]; } + next2type = next2->ph->length_mod; if(more_syllables==0) { - len = tr->langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod]; + if(next->newword || next2->newword) + { + // don't use 2nd phoneme over a word boundary, unless it's a pause + if(next2type != 1) + next2type = 0; + } + + len = tr->langopts.length_mods0[next2type *10+ next->ph->length_mod]; if((next->newword) && (tr->langopts.word_gap & 0x20)) { @@ -841,7 +861,7 @@ if(stress <= 1) } else { - length_mod = tr->langopts.length_mods[next2->ph->length_mod *10+ next->ph->length_mod]; + length_mod = tr->langopts.length_mods[next2type *10+ next->ph->length_mod]; if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS)) length_mod -= 15; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index b6fe3fbf..92c61ac4 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.03e 29.Mar.13"; +const char *version_string = "1.47.03f 31.Mar.13"; const int version_phdata = 0x014701; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 5a325c37..2a6e4645 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -93,12 +93,12 @@ ALPHABET alphabets [] = { {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, - {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, + {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, L('k','o'), AL_WORDS}, {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, {"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, - {"_ko", 0xa700, 0xa700,0xd7ff, 0, AL_NOT_CODE}, + {"_ko", 0xa700, 0xa700,0xd7ff, L('k','o'), AL_NOT_CODE | AL_WORDS}, {NULL, 0, 0, 0, 0, 0} }; diff --git a/src/translate.cpp b/src/translate.cpp index eeafb2c5..1a0471d9 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1732,6 +1732,7 @@ int SetTranslator2(const char *new_language) translator2->phoneme_tab_ix = new_phoneme_tab; } } + translator2->phonemes_repeat[0] = 0; return(new_phoneme_tab); } // end of SetTranslator2 @@ -2440,6 +2441,35 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, 0x72,0x73,0x74,0x75 }; + // check for Korean Hangul letters + if(((code = c - 0xac00) >= 0) && (c <= 0xd7af)) + { + // break a syllable hangul into 2 or 3 individual jamo + initial = (code/28)/21; + medial = (code/28) % 21; + final = code % 28; + + if(initial == 11) + { + // null initial + c = medial + 0x1161; + if(final > 0) + *insert = final + 0x11a7; + } + else + { + // extact the initial and insert the remainder with a null initial + c = initial + 0x1100; + *insert = (11*28*21) + (medial*28) + final + 0xac00; + } + return(c); + } + else if(((code = c - 0x3130) >= 0) && (code < 0x34)) + { + // Hangul compatibility jamo + return(hangul_compatibility[code] + 0x1100); + } + switch(tr->translator_name) { case L('a','f'): @@ -2467,36 +2497,6 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, } } break; - - case L('k','o'): - if(((code = c - 0xac00) >= 0) && (c <= 0xd7af)) - { - // break a syllable hangul into 2 or 3 individual jamo - initial = (code/28)/21; - medial = (code/28) % 21; - final = code % 28; - - if(initial == 11) - { - // null initial - c = medial + 0x1161; - if(final > 0) - *insert = final + 0x11a7; - } - else - { - // extact the initial and insert the remainder with a null initial - c = initial + 0x1100; - *insert = (11*28*21) + (medial*28) + final + 0xac00; - } - return(c); - } - else if(((code = c - 0x3130) >= 0) && (code < 0x34)) - { - // Hangul compatibility jamo - return(hangul_compatibility[code] + 0x1100); - } - break; } return(SubstituteChar(tr, c, next_in, insert, wordflags)); } @@ -2951,7 +2951,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } else { - if(iswlower(prev_in)) + if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case { // lower case followed by upper case in a word if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) diff --git a/src/voices.cpp b/src/voices.cpp index a762abdf..c0486025 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -1883,12 +1883,24 @@ void FreeVoiceList() ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) {//======================================================================== -#ifndef PLATFORM_RISCOS + char path_voices[sizeof(path_home)+12]; + + +#ifdef PLATFORM_RISCOS + if(n_voices_list == 0) + { + sprintf(path_voices,"%s%cvoices",path_home,PATHSEP); + len_path_voices = strlen(path_voices)+1; + GetVoices(path_voices); + voices_list[n_voices_list] = NULL; // voices list terminator + } + return((const espeak_VOICE **)voices_list); + +#else int ix; int j; espeak_VOICE *v; static espeak_VOICE **voices = NULL; - char path_voices[sizeof(path_home)+12]; // free previous voice list data FreeVoiceList(); @@ -1926,7 +1938,6 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) } return((const espeak_VOICE **)voices); #endif - return((const espeak_VOICE **)voices_list); } // end of espeak_ListVoices From a800efcd429f4f396a4902c9de05d3bc35ed1b62 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 1 Apr 2013 00:42:55 +0100 Subject: [PATCH 08/10] 1.47.03f (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/voices/test/bn | 2 +- espeak-data/voices/test/ko | 2 +- espeak-data/voices/test/si | 2 +- espeak-data/voices/test/te | 2 +- phsource/vwl_en_us/ai3 | Bin 26951 -> 26951 bytes 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/espeak-data/voices/test/bn b/espeak-data/voices/test/bn index 1e99fa8c..e1e569fb 100644 --- a/espeak-data/voices/test/bn +++ b/espeak-data/voices/test/bn @@ -1,3 +1,3 @@ -name bengali +name bengali-test language bn gender male diff --git a/espeak-data/voices/test/ko b/espeak-data/voices/test/ko index 74f98ab3..d9330a8f 100644 --- a/espeak-data/voices/test/ko +++ b/espeak-data/voices/test/ko @@ -1,4 +1,4 @@ -name Korean +name korean-test language ko gender male pitch 80 118 diff --git a/espeak-data/voices/test/si b/espeak-data/voices/test/si index 1229e49c..87d564d6 100644 --- a/espeak-data/voices/test/si +++ b/espeak-data/voices/test/si @@ -1,4 +1,4 @@ -name sinhala +name sinhala-test language si intonation 2 diff --git a/espeak-data/voices/test/te b/espeak-data/voices/test/te index 3872a3af..c23078a8 100644 --- a/espeak-data/voices/test/te +++ b/espeak-data/voices/test/te @@ -1,4 +1,4 @@ -name telugu +name telugu-test language te intonation 2 diff --git a/phsource/vwl_en_us/ai3 b/phsource/vwl_en_us/ai3 index fdce05138ce63f943df2e2bd580c523b2195d92c..d4f301abef212db2f35a9f2902fe711f47b4a3e3 100644 GIT binary patch delta 225 zcmX?piShU)#tk;gEG#D&7$-X@r!u|Z-Mn0RmYj$Rrvu*u#s`cnj0_AcjD>uz3_zJs zr`C2z1@o_!O8>b#LYmX9nsH IjQA!10Axr#D*ylh delta 211 zcmX?piShU)#tk;gOspM~C$NZ44pt6gQsLXYTzQt9h!3X&-vh=6j4X@{3@nU=e69>7 ze49g^cJqiae_#NL0f7Va8rwoJYbPVaWHtX_M%&F*{y&(Rm_LAx>kO7*d^dSnu(Fyy z2eM%ae8mjgc^r5iF+PGCA1m~ciGhFf``{ Date: Tue, 2 Apr 2013 13:18:57 +0000 Subject: [PATCH 09/10] [1.47.04] Official release git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@337 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 34 +++--- dictsource/en_list | 59 ++++++---- dictsource/en_rules | 2 + dictsource/pt_list | 53 ++++++--- dictsource/pt_rules | 30 +++-- dictsource/ru_list | 4 +- phsource/compile_report | 16 +-- phsource/ph_sinhala | 155 ++++++++++++++++++++++++++ phsource/ph_urdu | 45 ++++++++ phsource/phonemes | 17 ++- platforms/riscos/Makefile | 11 +- platforms/riscos/copysource | 1 - platforms/riscos/cpp/speak_riscos | 136 +++++++++++++++++----- platforms/windows/make_espeak.iss | 8 +- platforms/windows/make_espeakedit.iss | 2 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 1 + src/translate.cpp | 3 +- 18 files changed, 452 insertions(+), 127 deletions(-) create mode 100755 phsource/ph_sinhala create mode 100755 phsource/ph_urdu diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 0ef01f8a..4b119d6a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -49,6 +49,20 @@ s s. S; t t# t. t.# tS v v# w z +Dictionary pt_dict 2013-04-02 + +& &/ &U~ &~ @ @- a A +aI aU e E eI EI eU EU +i I i/ iU o O oI OI +o~ u U uI u~ y + +* : ; b c C d dZ +f g h j k l l^ m +n N n^ p Q r R r- +s S s# s; t T tS ts +v w x z Z + + Dictionary bg_dict 2013-03-16 @ a e i o u @@ -150,7 +164,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-30 +Dictionary en_dict 2013-04-02 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -164,7 +178,7 @@ d# dZ f g h j k l l# l/ m n N n^ p Q q Q" r R r- R2 s S t T t2 tS tS; v w x -z Z z# +z Z z# z. Dictionary eo_dict 2013-03-08 @@ -563,20 +577,6 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-31 - -& &/ &U~ &~ @ @- a A -aI aU e E eI EI eU EU -i I i/ iU o O oI OI -o~ u U uI u~ y - -* : ; b C d dZ f -g h j k l l^ m n -N n^ p Q r R r- s -S s# s; t T tS ts v -w x z Z - - Dictionary ro_dict 2013-03-04 @ @- @I @U a aI aU e @@ -592,7 +592,7 @@ ts; v v; w w2 x z Z z; Z; -Dictionary ru_dict 2013-03-31 +Dictionary ru_dict 2013-04-01 8 @- a A e E E# E% E2 i I I# I3 I^ ja ju diff --git a/dictsource/en_list b/dictsource/en_list index 1cd478c9..92b93d45 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -325,37 +325,54 @@ _zh tS'aIni:z // Arabic letters ء h'amza -آ 'Elifm,adda# -أ 'Elifh,amza -ا 'Elif -ب bE? +آ al'if_mamd'uda# +أ h'amza_taht_al'if +ؤ h'amza_?la_waw +إ al'if_taht_h'amza +ئ h'amza_?la_jE? +ا al'if +ب ba ة t'E?maR2b'uta# -ت tE? +ت ta ث TE? -ج ZIm +ج dZi:m ح hE? خ xE? -د dEl/1 -ذ DEl/1 +د dal/1 +ذ Dal/1 ر R2A:? ز zEjn س si:n ش Si:n -ص sO:d@- -ض dO:d@- +ص sa:d@- +ض da:d@- ط thA:? ظ DA:? -ع ?ajn -غ Q"ajn -ف fE? -ق qO:f -ك kEf -ل lEm +ع '?Ein +غ 'Q"Ein +ف fa +ق qa:f +ك kaf +ل lam م mi:m ن nu|:n -ه hE? -و wO:w +ه ha +و waw +ى al'if_maks'ura ي jE? +// Farsi +پ pa +چ tSa +ژ Za +گ ga:f +ی f'A@si||j'e +ک k'a:f +// Urdu +ٹ te +ڈ de +ڑ z.e +ے barij'e +ھ h'@ َ a ِ i @@ -725,6 +742,7 @@ aka aka# alas a#l'as albeit O:lb'i:It alfalfa alf'alf@ +algebra aldZI2br@ alias eIli@s alibi al@baI alibis al@baIz @@ -2793,7 +2811,6 @@ tear te@ $verb (tear apart) t,e@||a#pA@t (tear off) t'e@||'0f teargas ti@3gas -techy tEki teddybear t'EdIb,e@ telemetry t@lEm@tri telepathy t@lEp@Ti @@ -3255,8 +3272,9 @@ Lvov l@-v0v ?5 Luxembourg lVks@mbVRg Madagascar mad@g'ask3 Madras m@draas -Madrid m@drId +Madrid m@drId Malawi $alt3 +Malayalam maleI'A:l@m Maldives mO:ld'i:v Mali mA:li Mandalay $3 @@ -3384,6 +3402,7 @@ Wisconsin wI2sk'0nsI2n Wyoming waI'oUmIN Xhosa kO:s@ Yemen $alt2 +Yosemite joUs'Em@ti zaire zaI'i@3 zimbabwe zI2mbA:bwi zimbabwean zI2mbA:bwI@n diff --git a/dictsource/en_rules b/dictsource/en_rules index b913125a..4683f324 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1464,6 +1464,7 @@ a) ch (il k bra) ch k te) ch (K k + _te) ch k ch (isC k ch (ic_ k @@Car) ch (_ k @@ -3035,6 +3036,7 @@ &n) iel (_ j@L &r) iel (_ =i:@L ie (n i@ + &) ie (n_ =i@n d) iene (_ 'aIi:n ie (ntal I'E g) ie (n i: diff --git a/dictsource/pt_list b/dictsource/pt_list index 19d2c056..c4400fd9 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -329,8 +329,7 @@ vocês $u2+ $verbf eles $u+ $verbf elas $u+ $verbf -me $u // reflexive -me $u $verbf +me $u $verbf // reflexive te $u $verbf nos $u $nounf la $u @@ -345,7 +344,7 @@ se $u ?2 nesta $u+ $nounf ?2 neste $u+ $nounf n'estSi //in this ?2 esse $u+ $nounf 'esi // that -essa 'Es& $u+ +essa 'Es& $u+ $noun desse $u+ $nounf desta $nounf nesse n'esy $u+ $nounf @@ -384,7 +383,7 @@ duma $u $nounf duns $u $nounf dumas $u $nounf -em $u // in,on,at +em $u $noun // in,on,at no nu $u $nounf na $u $nounf num $u $nounf @@ -427,7 +426,7 @@ com $u // with // conjunctions ?1 e i $u // and ?2 e i $u // and -se $u // if +se $u+ $verbf // if ?2 mas $u // but @@ -522,7 +521,7 @@ estão $u estava $u estávamos $u -astavam $u +estavam $u estive $u ?2 esteve estevy $u2 @@ -619,9 +618,14 @@ o O $atend // some common adjectives and adverbs -alguns $u // some -algumas $u // some -não n,&U~ $strend // not +alguns $u $noun // some +algumas $u $noun // some +não n,&U~ $verbf $strend // not +nunca $u+ $verbf +sempre $u+ $verbf +qualquer $u $nounf +quaisquer $u $nounf +jamais $u+ $verbf // MAIN WORD DICTIONARY @@ -643,9 +647,9 @@ aeroporto $alt2 aeroportos $alt albatrozes $alt alcateia $alt +alcova $alt2 alferes $alt algozes $alt -alicerce $alt almoço $alt $verb ameba $alt amores $alt2 @@ -675,6 +679,7 @@ beco $alt2 besta $alt2 bilhete $alt2 boca $alt2 +boceta $alt2 bochecha $alt2 bojo $alt2 boleia $alt @@ -686,6 +691,7 @@ bordo $alt borra $alt2 $noun bosque $alt boto $alt2 $noun +boxe $alt brejo $alt bromelha $alt cabelo $alt2 @@ -696,6 +702,7 @@ caderneta $alt2 cadete $alt2 camelha $alt camelo $alt2 +caminhonete $alt camiseta $alt2 cantora $alt2 capacete $alt2 @@ -832,11 +839,13 @@ explore $alt faceta $alt2 fantoche $alt farofa $alt +farolete $alt2 febre $alt fera $alt feitora $alt2 ferozes $alt fezes $alt +filete $alt2 ?1 fixe fiSy foda $alt2 $verb fogos $alt @@ -856,6 +865,7 @@ fulgores $alt2 galera $alt galileia $alt gameta $alt2 +garçonete $alt2 geleia $alt gelo $alt2 gelo $alt $verb @@ -884,6 +894,7 @@ jogo $alt2 $noun joguete $alt2 lagosta $alt2 lambreta $alt2 +lanchonete $alt lebre $alt lembrete $alt2 lepra $alt @@ -893,6 +904,7 @@ lopes $alt macete $alt2 maior $alt maleta $alt2 +marionete $alt marreta $alt2 megera $alt melhor $alt @@ -911,6 +923,7 @@ miolos $alt modelo $alt2 modelo $alt $verb moeda $alt +moem $alt mofo $alt $verb molho $alt2 $noun monera $alt @@ -930,12 +943,14 @@ namoro $alt2 $noun naquela $nounf naquele $alt2 $nounf nervo $alt2 +nojo $alt2 novelo $alt2 novos $alt obstetra $alt odisseia $alt onu $1 -olho $alt2 $noun +olho $alt2 $noun +olhos $alt onomatopeia $alt opereta $alt2 ordens $alt @@ -953,10 +968,9 @@ pangeia $alt pantera $alt parede $alt2 pastora $alt2 +patinete $alt pedra $alt pela $alt $verb -pelego $alt2 -pela $alt $verb pelo $alt2 pelo $alt $verb peso $alt $verb @@ -998,11 +1012,12 @@ relevo $alt2 $noun remorso $alt renovo $alt $verb retorno $alt $verb -reuva $alt +reuva x'EUv& rigores $alt2 rixa x'iS& rocha $alt rock $alt +roem $alt rola $alt2 $noun rolo $alt2 $noun rota $alt2 @@ -1037,6 +1052,7 @@ suor swOr tapete $alt2 temores $alt2 tempero $alt2 $noun +tenores $alt2 terrores $alt2 teta $alt2 tetra $alt @@ -1068,7 +1084,6 @@ voga $alt vozes $alt xarope $alt zelo $alt2 $noun -zero $alt zorra $alt2 @@ -1095,6 +1110,9 @@ book buk ?1 download d'a,wnl'oud ?2 download daUNl'owd ?3 download dau~Nl'owd +drive dR'aivy +driver dR'aiver +drivers dR'aiveRs ?1 end 'end ?2 esc 'Esk ?3 esc 'EskI @@ -1135,6 +1153,7 @@ laptop lEptOp ?1 ovo 'ovu ?1 pause p'au:z page p'eIdZ + pizza p'its& python p'aIT&~N ?1 readme r'i:dmi: ?1 sapi s,ap'i @@ -1150,6 +1169,7 @@ símbolo s'imbolU ?1 space sp'eIsy ?1 sporting sp'Ort,ing tab t'aby + tablet t'ablet ?1 telemóvel t,El,Em'OvEl ?1 telemóveis t,El,Em'OveIs# ?1 up &p @@ -1190,7 +1210,8 @@ facebook feisybuk ?2 microsoft m'aIkRows'Oft ?1 movie m'uvi ?1 nero n'Eru -?1 office 'Of,is +/1 office 'Of,is +?2 office 'Ofsy openoffice 'opeIN|'Ofis ?1 outlook 'autl'uk ?2 Outlook ,aUtl'uk diff --git a/dictsource/pt_rules b/dictsource/pt_rules index cce034fc..d2f26045 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -47,7 +47,6 @@ ?1 a (lK ,A // Algarve, Almerinda, etc... ?2 al (K aU a (lh+ a - a (m &~ a (mAr_ & a (mA@ & @@ -274,7 +273,6 @@ e (xA_ E e (xAm_ E ?2 _n) e (t E - em (C eIm en (K eIN enh en^ @@ -368,6 +366,7 @@ _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E + _talh) e (L05_ E _trem) e (L05_ e diss) e (L06_ E // contra- fend) e (L06_ e // de- o- @@ -461,6 +460,7 @@ respond) e (L07_ e // cor- _hosp) e (dL03_ E _gr) e (gL03_ e _gal) e (gL03_ e + _pel) e (gL03_ e _n) e (grL03_ e _ch) e (guL02_ e estr) ei (L04_ EI @@ -474,10 +474,12 @@ respond) e (L07_ e // cor- _reit) e (rL03_ E _sinc) e (rL03_ E _g) e (rL04_ E + _z) e (rL04_ E qu) e (rL04_ E // re- _op) e (rL04_ E gen) e (rL04_ E // de- re- _alt) e (rL04_ E + _enc) e (rL04_ E _sug) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E @@ -489,12 +491,16 @@ respond) e (L07_ e // cor- _recup) e (rL04_ E _refrig) e (rL04_ E _v) e (rbL03_ E + _alic) e (rcL02_ E _p) e (rdL02_ E _l) e (rdL03_ E _h) e (rdL04_ E _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e + _alic) e (rçL03_ E + _p) e (sL01_ E + _l) e (sL03_ E _refr) e (scL01_ E _d) e (scL02_ E _cr) e (scL02_ E @@ -520,6 +526,7 @@ _obsol) e (tL03_ e _atr) e (vL03_ e _r) e (zL04_ E _pr) e (zL04_ E + _rev) e (zL04_ E _despr) e (zL04_ E _embel) e (zL04_ E _menospr) e (zL04_ E @@ -688,9 +695,9 @@ _entorp) e (çL03_ e _) l (_ 'Ele l l l) l - lh l^ + lh lj A) lh lj -?1 A) lh l^ + A) lh l^ ?4 A) lh l^ @@ -756,6 +763,9 @@ _entorp) e (çL03_ e o (lA_ O o (lAm_ O + o (lhe_ O + o (lhem_ O + o (ltA_ O o (ltAm_ O @@ -778,9 +788,7 @@ _entorp) e (çL03_ e ?1 o (l_ 'O ?2 ol (_ Ow - o (lh o -?2 _) o (lhA_ O -?2 _) o (lhAm_ O + om (_ oN o (ma_ o @@ -838,6 +846,7 @@ _entorp) e (çL03_ e //sort _f) o (L05_ o +_pormen) o (L05_ O _f) o (L07_ o _s) o (bL02_ O _af) o (bL04_ O @@ -859,9 +868,8 @@ _entorp) e (çL03_ e _t) o (lL03_ o _f) o (lgL04_ O _emp) o (lgL04_ O - c) o (lhL02_ O // es- en- re- - _t) o (lhL02_ O - _m) o (lhL04_ O + _) o (lhL04_ O + m) o (lhL04_ O ent) o (pL02_ O _c) o (pL03_ O _ens) o (pL04_ O @@ -1057,6 +1065,8 @@ _remem) o (rL04_ O u (iu w u (iCK u uy uI + ul (K uw + u (lh+ u um (_ u~N um (C u~m diff --git a/dictsource/ru_list b/dictsource/ru_list index 58af2d00..d1cd23ed 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -28,7 +28,7 @@ _10 d;'es;It; _11 Od;'innVttsVt; _12 dv;In'AttsVt; _13 tR;In'AttsVt; -_14 ts;It'y@-*nVttsVt; +_14 tS;It'y@-*nVttsVt; _15 p;Itn'AttsVt; _16 SE#stn'AttsVt; _17 s;Imn'AttsVt; @@ -45,7 +45,7 @@ _9X d;E2v;In'ostO _0C st'o _2C dv;'es;t;I _3C tr;'ista -_4C ts;It'yr;E2sta +_4C tS;It'yr;E2sta _5C p;,It;s'ot _6C S,E#s;t;s'ot _7C s;,Ims'ot diff --git a/phsource/compile_report b/phsource/compile_report index 944e95c6..fb1da3e3 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -75 phoneme tables +74 phoneme tables new total base 109 109 consonants 11 119 @@ -74,7 +74,6 @@ consonants 11 119 kl 18 119 am 15 114 si 24 155 - rw 15 132 sl 10 137 Data file Used by @@ -218,7 +217,6 @@ dzh/xdz_pzd [J] base [J] tr [J] ku envelope/i_risefall [11] zh -envelope/i_risefall2 [+2] rw envelope/p_214 [5] vi [5] vi-hue [214] zh @@ -236,7 +234,6 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh - [+] rw envelope/p_fallrise [4] vi envelope/p_level [1] vi [1] vi-hue @@ -1511,8 +1508,6 @@ vowel/a# [a] base2 [a#] en-sc [a#] en-wi [&] sr - [a#] rw - [a/] rw vowel/a_2 [a] base2 [a] en-wi [A:] en-wi @@ -1524,7 +1519,6 @@ vowel/a_2 [a] base2 [a] pt-pt [a] ro [a] el - [a] rw vowel/a#_2 [A] nl [a:] nl [a] kn @@ -1673,8 +1667,6 @@ vowel/e [e] base [e] da [?e] da [E] kl - [e] rw - [e#] rw vowel/e# [I] en-sc [e] et [E] kl @@ -1825,8 +1817,6 @@ vowel/i [i] base [i] fa [i] kl [i:] si - [i] rw - [i#] rw vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -1985,8 +1975,6 @@ vowel/o [o] base2 [o] id [o] hy [o] kl - [o] rw - [o#] rw vowel/o_2 [o:] cy [o:] hi [o:] hu @@ -2183,8 +2171,6 @@ vowel/u_bck [u] base2 [?u] da [u] ka [u] ko - [u] rw - [u#] rw vowel/u_bck2 [u] et [u] fr [u:] fr diff --git a/phsource/ph_sinhala b/phsource/ph_sinhala new file mode 100755 index 00000000..cee7ba6f --- /dev/null +++ b/phsource/ph_sinhala @@ -0,0 +1,155 @@ + +// Phonemes for Sinhala +// This inherits from ph_hindi + +// (these are only guesses) + +phoneme @ + vowel starttype #a endtype #a + length 150 + FMT(vowel/@_low) +endphoneme + + +phoneme a + vowel long starttype #a endtype #a + ipa ɐ + length 150 + ChangeIfNotStressed(@) + FMT(vowel/a#_2) +endphoneme + + +phoneme a: + vowel starttype #a endtype #a + length 300 + FMT(vowel/a_3) +endphoneme + + +phoneme & + vowel starttype #e endtype #e + length 150 + FMT(vowel/ee_6) +endphoneme + + +phoneme &: + vowel starttype #e endtype #e + length 300 + FMT(vowel/ee_6) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 150 + FMT(vowel/e_mid) +endphoneme + + +phoneme e: + vowel starttype #e endtype #e + length 300 + FMT(vowel/e_mid2) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 150 + FMT(vowel/i_6) +endphoneme + + +phoneme i: + vowel starttype #i endtype #i + length 300 + FMT(vowel/i) +endphoneme + + + +phoneme o + vowel starttype #o endtype #o + length 150 + FMT(vowel/oo_1) +endphoneme + + +phoneme o: + vowel starttype #o endtype #o + length 300 + FMT(vowel/oo_1) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 130 + FMT(vowel/u_6) +endphoneme + +phoneme u: + vowel starttype #u endtype #u + length 300 + FMT(vowel/u_6) +endphoneme + + + +phoneme aI + vowel long starttype #a endtype #i + length 300 + FMT(vdiph/ai_8) +endphoneme + +phoneme aU + vowel long starttype #a endtype #u + length 300 + FMT(vdiph/au) +endphoneme + + + +// ?? This is standard [v]. Should be it [v] without the fricative noise? +phoneme v + import_phoneme base/v +endphoneme + + +phoneme r + import_phoneme base/r +endphoneme + +phoneme t + import_phoneme base2/t // dental +endphoneme + + +// temporary, map [n#] etc. to [n] etc. + +phoneme m# + ipa U+1D50 + CALL base/m +endphoneme + +phoneme n# + ipa U+207F + CALL base/n +endphoneme + +phoneme n.# + ipa U+1DAF + CALL base/n. +endphoneme + +phoneme n^# + ipa U+1DAE + CALL base/n^ +endphoneme + +phoneme N# + ipa U+1D51 + CALL base/N +endphoneme diff --git a/phsource/ph_urdu b/phsource/ph_urdu new file mode 100755 index 00000000..2dd61fb3 --- /dev/null +++ b/phsource/ph_urdu @@ -0,0 +1,45 @@ +//==================================================== +// Phonemes adjusted for Urdu by Him Prasad Gautam. +//==================================================== + + +phoneme : // Lengthen the previous vowel by "length" + virtual + length 120 +endphoneme + +phoneme @ + vowel flag1 starttype #@ endtype #@ + length 130 + + ChangeIfDiminished(@-) + IF nextPh(H) THEN + FMT(vowel/@_low) + ENDIF + FMT(vowel/@_bck) +endphoneme + + +phoneme V + vowel flag1 starttype #@ endtype #@ + length 150 + CALL hi/V +endphoneme + + +phoneme @2 + vowel flag1 starttype #@ endtype #@ + length 150 + FMT(vowel/@_low) +endphoneme + +phoneme @3 + vowel flag1 starttype #@ endtype #@ + length 150 + ChangeIfDiminished(@-) + FMT(vowel/@_3) +endphoneme + + +//==================================================== +// The rest Phonemes are inherted from Hindi. diff --git a/phsource/phonemes b/phsource/phonemes index 4b57c0ac..22f593bd 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1878,17 +1878,20 @@ include ph_greenlandic phonemetable am base include ph_amhari -phonemetable si hi -include ph_sinhala - //************************************************************************************** // The following lines are experimental, for future additions. // These langauges are not in a usable state. // These lines can be deleted. -phonemetable rw base2 -include ph_kinyarwanda +phonemetable si hi +include ph_sinhala + +phonemetable sl sk +include ph_slovenian + +//phonemetable rw base2 +//include ph_kinyarwanda //phonemetable mr hi //include ph_marathi @@ -1902,9 +1905,6 @@ include ph_kinyarwanda //phonemetable prs base //include ph_dari -phonemetable sl sk -include ph_slovenian - //phonemetable gd base //include ph_s_gaelic @@ -1929,7 +1929,6 @@ include ph_slovenian //phonemetable tn base //include ph_setswana - //phonemetable mt base //include ph_maltese diff --git a/platforms/riscos/Makefile b/platforms/riscos/Makefile index 2cd3b0da..3522e043 100644 --- a/platforms/riscos/Makefile +++ b/platforms/riscos/Makefile @@ -2,8 +2,8 @@ # Toolflags: -CCflags = -c -C90 -depend !Depend -IC: -throwback -zM -C++flags = -c -depend !Depend -IC: -throwback -zM +CCflags = -c -C90 -depend !Depend -IC: -throwback -memaccess -zM -L22-S22-L41 +C++flags = -c -depend !Depend -IC: -throwback -zM -L22-S22-L41 Linkflags = -rmf -c++ -o $@ ObjAsmflags = -throwback -NoCache -depend !Depend CMHGflags = @@ -16,11 +16,11 @@ Squeezeflags = -o $@ @.o.intonation @.o.readclause @.o.setlengths @.o.synthdata \ @.o.synthesize @.o.translate @.o.tr_languages @.o.numbers \ @.o.synth_mbrola @.o.phonemelist \ - @.o.tr_english @.o.wavegen @.o.voices @.o.assemb @.o.cmhgfile + @.o.wavegen @.o.voices @.o.assemb @.o.cmhgfile Link $(Linkflags) C:o.stubs C:o.c++lib @.o.speak_riscos @.o.compiledict \ @.o.dictionary @.o.intonation @.o.readclause @.o.setlengths \ @.o.synthdata @.o.synthesize @.o.numbers @.o.synth_mbrola \ - @.o.translate @.o.tr_english @.o.wavegen @.o.tr_languages \ + @.o.translate @.o.wavegen @.o.tr_languages \ @.o.voices @.o.phonemelist @.o.assemb @.o.cmhgfile @@ -51,8 +51,6 @@ Squeezeflags = -o $@ c++ $(c++flags) -o @.o.synthesize @.CPP.synthesize @.o.translate: @.CPP.translate c++ $(c++flags) -o @.o.translate @.CPP.translate -@.o.tr_english: @.CPP.tr_english - c++ $(c++flags) -o @.o.tr_english @.CPP.tr_english @.o.tr_languages: @.CPP.tr_languages c++ $(c++flags) -o @.o.tr_languages @.CPP.tr_languages @.o.voices: @.CPP.voices @@ -63,3 +61,4 @@ Squeezeflags = -o $@ objasm $(objasmflags) -from @.s.assemb -to @.o.assemb # Dynamic dependencies: + diff --git a/platforms/riscos/copysource b/platforms/riscos/copysource index 4bfece70..b63ca50e 100644 --- a/platforms/riscos/copysource +++ b/platforms/riscos/copysource @@ -18,6 +18,5 @@ copy .^.src.sintab/h .h.sintab fq~c copy .^.src.speak_lib/h .h.speak_lib fq~c copy .^.src.synthesize/h .h.synthesize fq~c copy .^.src.translate/h .h.translate fq~c -copy .^.src.tr_languages/h .h.tr_languages fq~c copy .^.src.voice/h .h.voice fq~c copy .^.src.wave/h .h.wave fq~c diff --git a/platforms/riscos/cpp/speak_riscos b/platforms/riscos/cpp/speak_riscos index 5c22b550..420137be 100644 --- a/platforms/riscos/cpp/speak_riscos +++ b/platforms/riscos/cpp/speak_riscos @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,7 @@ #include #include #include "kernel.h" +#include #include "speech.h" #include "speak_lib.h" @@ -221,6 +222,7 @@ void ReadVoiceNames2(char *directory) voice_variant_names[n_voice_variant_files++] = p; } else + if(strcmp(p, "default") != 0) { if(n_voice_files >= (N_VOICE_NAMES-1)) continue; @@ -233,11 +235,17 @@ void ReadVoiceNames2(char *directory) void ReadVoiceNames() {//=================== - char directory[sizeof(path_home)+10]; + char directory[sizeof(path_home)+20]; n_voice_files = 0; n_voice_variant_files = 0; + sprintf(directory,"%s.voices.default", path_home); + if(GetFileLength(directory) > 0) + { + // put the 'default' voice at the start of the list + voice_names[n_voice_files++] = "default"; + } sprintf(directory,"%s.voices",path_home); ReadVoiceNames2(directory); @@ -400,11 +408,27 @@ void FillSoundBuf(int size) int initialise(void) {//================= - sprintf(path_home,"%s.espeak-data",""); + char buf[N_PATH_HOME]; + + _kernel_swi_regs regs; + _kernel_oserror *error; + + buf[0] = 0; + regs.r[0] = (int)"eSpeak$Dir"; + regs.r[1] = (int)buf; + regs.r[2] = sizeof(buf); + regs.r[3] = 0; + regs.r[4] = 0; + regs.r[5] = 0; + + error = _kernel_swi(0x20023,®s,®s); // OS_ReadVarVal + buf[regs.r[2]] = 0; + + sprintf(path_home,"%s.espeak-data",buf); if(GetFileLength(path_home) != -2) { // not found, try the 10 character version of the directory name - sprintf(path_home,"%s.espeak-dat",""); + sprintf(path_home,"%s.espeak-dat",buf); } if(GetFileLength(path_home) != -2) { @@ -414,7 +438,7 @@ int initialise(void) } WavegenInit(22050,0); - LoadPhData(); + LoadPhData(NULL); SetVoiceStack(NULL, ""); SynthesizeInit(); return(0); @@ -453,7 +477,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ static_length = 0; else { - strcat(&static_buf[static_length]," : "); + strcat(&static_buf[static_length]," \n "); static_length+=3; } @@ -578,13 +602,14 @@ void set_say_options(int reg2, int reg3) void jsd_swi_functions(int *r) /****************************/ { + int use_ipa; espeak_VOICE voice_select; switch(r[0]) { case 0: /* major version */ r[0] = 4; - r[1] = 331; + r[1] = 347; break; case 1: /* register user */ @@ -594,7 +619,13 @@ void jsd_swi_functions(int *r) break; case 3: -// r[0] = (int)speech_to_phonemes((char *)r[1]); + // translate into phonemes + use_ipa = 0; + if((r[2] >= 1) && (use_ipa <= 3)) + use_ipa = r[2]; + TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); + GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); + r[0] = (int)translator->phon_out; break; case 4: @@ -642,6 +673,7 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) /*********************************************************/ { int value; + int value2; int q_length; value = r[0]; @@ -650,21 +682,23 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) case 0: // ready ? // returns the index into the source text of the currently speaking word - if(current_source_index > 0) - r[1] = current_source_index-1; - else - r[1] = current_source_index; /* source index */ + if(current_source_index > 0) + r[1] = current_source_index-1; + else + r[1] = current_source_index; /* source index */ r[2] = 0; /* source tag */ r[3] = 0; /* for future expansion */ r[4] = 0; r[5] = 0; - if(wcmdq_head == wcmdq_tail) + if(WcmdqUsed() < 5) { r[0] = -1; /* ready, or nearly */ } else + { r[0] = 0; + } break; case 1: /* restore old sound channel. DO NOTHING */ @@ -692,19 +726,32 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) break; case 7: /* pitch */ - // not implemented + value = (value * 50)/128; + SetParameter(espeakPITCH, value, 0); break; - case 8: /* speed */ - SetParameter(espeakRATE,value,0); + case 8: // speed, convert to range 80 to 400, mid-value=180 + if(value < 128) + value2 = 80 + (value*100)/128; // linear range for 0-127 -> 80-179 + else + value2 = 80 + pow((float)value/128.0, 1.75)*100; + + SetParameter(espeakRATE,value2,0); break; case 9: /* word_gap */ + if(value >= 128) + value = value - 128; + + if(value > 1) + value = (value-1) * 5; + SetParameter(espeakWORDGAP,value,0); break; case 10: /* pitch_range */ - // not implemented + value = (value * 50)/128; + SetParameter(espeakRANGE, value, 0); break; case 12: /* reset */ @@ -712,7 +759,22 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) break; case 13: /* volume */ - SetParameter(espeakVOLUME,value,0); + // convert to range 6-255 to 10-400, mid-value=100 + if(value < 6) + value2 = value + 4; + else + if(value < 128) + { + value2 = pow((float)(value+40)/168.0, 1.75)*100; + } + else + value2 = pow((float)value/128.0, 2.0)*100; + SetParameter(espeakVOLUME,value2,0); + WavegenSetVoice(voice); + break; + + case 14: // set voice by name + SetVoiceByName((char *)r[0]); WavegenSetVoice(voice); break; } @@ -835,6 +897,13 @@ int param_number(char **argp) return(value); } +void PrintVersion() +{//================ + char buf[120]; + printf("\nspeak text-to-speech: %s Data at: %s\n", version_string, path_home); +} + + void command_line(char *arg_string, int wait) {//========================================== @@ -854,6 +923,7 @@ void command_line(char *arg_string, int wait) char command[80]; char *p; int ix; + int quiet; voicename[0] = 0; wavefile[0] = 0; @@ -861,7 +931,7 @@ void command_line(char *arg_string, int wait) option_linelength = 0; option_phonemes = 0; option_waveout = 0; - option_quiet = 0; + quiet = 0; option_multibyte = 0; // auto option_capitals = 0; option_punctuation = 0; @@ -887,7 +957,8 @@ void command_line(char *arg_string, int wait) break; case 'h': - printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); + PrintVersion(); + printf("\n%s",help_text); return; case 'k': @@ -912,7 +983,7 @@ void command_line(char *arg_string, int wait) break; case 'q': - option_quiet = 1; + quiet = 1; break; case 'f': @@ -963,7 +1034,8 @@ void command_line(char *arg_string, int wait) else if(strcmp(command,"help")==0) { - printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); + PrintVersion(); + printf("\n%s",help_text); return; } else @@ -980,6 +1052,17 @@ void command_line(char *arg_string, int wait) SetParameter(espeakPUNCTUATION,option_punctuation,0); } else + if(memcmp(command,"version",7)==0) + { + PrintVersion(); + return; + } + else + if(memcmp(command,"ipa",3)==0) + { + option_phonemes = 3; + } + else { printf("Command not recognised\n"); } @@ -997,22 +1080,25 @@ void command_line(char *arg_string, int wait) } } + if((option_phonemes > 1) && !option_waveout) + quiet = 1; // can't call sprintf() during callback + SetVoiceByName(voicename); if((filename[0]==0) && (p[0]=='\r')) { // nothing to speak - if(option_quiet) + if(quiet) { SpeakNextClause(NULL,NULL,2); // stop speaking more_text = 0; } } - if(option_waveout || option_quiet) + if(option_waveout || quiet) { // write speech to a WAV file - if(option_quiet) + if(quiet) { OpenWaveFile(NULL,samplerate); option_waveout = 2; diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 2a83b5fa..ec9bca85 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.47.03 +AppVerName=eSpeak version 1.47.04 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -146,7 +146,7 @@ begin $0e: Result := 'hu'; $0f: Result := 'is'; $10: Result := 'it'; - //$12: Result := 'ko'; + $12: Result := 'ko'; $13: Result := 'nl'; $14: Result := 'no'; $15: Result := 'pl'; @@ -158,7 +158,7 @@ begin $1c: Result := 'sq'; $1d: Result := 'sv'; $1f: Result := 'tr'; - //$20: Result := 'ur'; + $20: Result := 'ur'; $21: Result := 'id'; $25: Result := 'et'; $26: Result := 'lv'; @@ -174,6 +174,7 @@ begin $39: Result := 'hi'; //$3a: Result := 'mt'; $3c: Result := 'ga'; + $3e: Result := 'ms'; //$3f: Result := 'kk'; $41: Result := 'sw'; //$44: Result := 'tt'; @@ -263,6 +264,7 @@ begin 'mk': value := $42f; 'ml': value := $44c; 'mn': value := $450; + 'ms': value := $43e; 'mt': value := $43a; 'my': value := $455; 'ne': value := $461; diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index bafbdf3e..235aa67d 100755 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,7 +1,7 @@ [Setup] AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.47.03 +AppVerName=eSpeakEdit version 1.47.04 DefaultDirName={pf}\eSpeak DefaultGroupName=eSpeak OutputBaseFilename=setup_espeakedit diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 92c61ac4..6d6eae4c 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.03f 31.Mar.13"; +const char *version_string = "1.47.04 02.Apr.13"; const int version_phdata = 0x014701; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 2a6e4645..6621f999 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -518,6 +518,7 @@ Translator *SelectTranslator(const char *name) { SetCyrillicLetters(tr); SetLetterVowel(tr,0x2a); + tr->charset_a0 = charsets[5]; // ISO-8859-5 tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) tr->langopts.param[LOPT_REDUCE] = 2; diff --git a/src/translate.cpp b/src/translate.cpp index 1a0471d9..2e876cd1 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -3469,7 +3469,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre prev_clause_pause = clause_pause; - *tone_out = tone; + if(tone_out != NULL) + *tone_out = tone; new_sentence = 0; if(terminator & CLAUSE_BIT_SENTENCE) From 530253327b6f664c366faf6044890410df83e2b2 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Tue, 2 Apr 2013 17:34:22 +0100 Subject: [PATCH 10/10] 1.47.04 (from http://espeak.sourceforge.net/test/latest.html) --- phsource/envelopes.png | Bin 20187 -> 17934 bytes phsource/r/V_ | Bin 5632 -> 0 bytes phsource/r/V_2_ | Bin 5634 -> 0 bytes platforms/windows/make_espeakedit.iss | 10 ++++++++-- 4 files changed, 8 insertions(+), 2 deletions(-) delete mode 100644 phsource/r/V_ delete mode 100644 phsource/r/V_2_ diff --git a/phsource/envelopes.png b/phsource/envelopes.png index 5876f8bc5888a16ccf3b1d8a3d7080e9a9eff474..aac09caa46490b4e9e302c44b308d6726812d441 100644 GIT binary patch literal 17934 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⪻wqeT#dYB3u=n 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 diff --git a/phsource/r/V_ b/phsource/r/V_ deleted file mode 100644 index 349d2b7892f022eaa5b5b5d7bacb348e7f45183d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 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 V$p3?5VUNtn_oZK?d(uzR{{nh-y8QqE diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index e460d7fd..235aa67d 100644 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -32,18 +32,24 @@ Source: "License.txt"; DestDir: "{app}"; [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" +Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl" Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" +Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" Name: "de"; MessagesFile: "compiler:Languages\German.isl" Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "fa"; MessagesFile: "compiler:Languages\Farsi.isl" Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" Name: "fr"; MessagesFile: "compiler:Languages\French.isl" +Name: "hi"; MessagesFile: "compiler:Languages\Hindi.islu" Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl" Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" -Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl" +Name: "ka"; MessagesFile: "compiler:Languages\Georgian.islu" +Name: "lv"; MessagesFile: "compiler:Languages\Latvian.isl" +Name: "ne"; MessagesFile: "compiler:Languages\Nepali.islu" Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" @@ -51,8 +57,8 @@ Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" -;Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl" Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" +Name: "vi"; MessagesFile: "compiler:Languages\Vietnamese.isl" Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl"