diff --git a/Makefile.am b/Makefile.am index e131aac2..861a1bea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -195,6 +195,7 @@ dictionaries: src/espeak \ 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 \ @@ -531,6 +532,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 diff --git a/dictsource/an_list b/dictsource/an_list index 43df719e..65a0ee0c 100644 --- 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 @@ -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 @@ -179,6 +182,7 @@ $ d'olar / baRRa \ kontraBaRRa | b'aRRaBertik'al +° graUs _- gj'on ! TaRR'ar||eksklamaTj'on @@ -483,6 +487,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 c7c52e38..11a5429b 100644 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -1,11 +1,11 @@ -// Translation rules for Bengali +// Translation rules for Bengali // 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 +_2 d'uj _3 t'in _4 tS'ar _5 p'a~tS @@ -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,64 +31,101 @@ _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 _0M2 l'ak# _0M3 k'ot.i _0M4 'Orbud -_dpt dOsomik +_dpt _d'Osomik_ // Single consonants @@ -91,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 @@ -134,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 @@ -158,10 +207,17 @@ _dpt dOsomik ঁ tS'Ondrobindu ় b'indu +$ d.Olar +% SOtk'Ora ++ jOg += SOman + + // Punctuation । dVn.d.V - +_, koma +_? pr'oSnOtSihnO // Pronouns আমি $u // main: I @@ -264,3 +320,4 @@ _dpt dOsomik // Exceptions +এত &to diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 64fb2305..66b685af 100644 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -1,4 +1,4 @@ - + // This file is UTF8 encoded // letter groups: @@ -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 @@ -378,3 +384,5 @@ ৢ l- ৣ l- + __) - (_D bij'og + D_) - (_D bij'og diff --git a/dictsource/da_list b/dictsource/da_list index af824667..9e13ce6f 100644 --- 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 @@ -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@- @@ -11130,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 @@ -11138,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 @@ -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 71217dc1..3f891bf8 100644 --- 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 @@ -51,16 +51,16 @@ // 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 // - 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(n) - made long in ph_danish + 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 @@ -209,6 +224,7 @@ // 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 @@ -263,6 +279,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 +287,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 +334,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 @@ -371,8 +389,14 @@ gammeld) a (gs & // _t) av (_ Aw // han tav stille // general rule: [A] before r - ar (++ A: // skar, barsk - are (++ A:A // skare, sparepenge + 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 ar (ne+ A // barnet ar (e+ AR // reparere, parere TEST f) are (++ A:A // fare @@ -380,6 +404,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 +432,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 +482,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 +538,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 +547,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 @@ -570,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 // @@ -648,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 @@ -677,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 @@ -823,7 +851,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 +874,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 +919,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,43 +936,44 @@ 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 - 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 @@ -953,9 +983,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 @@ -989,11 +1020,11 @@ _dinos) aurer 'W?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 @@ -1019,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 @@ -1113,7 +1144,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 @@ -1121,9 +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 (nK++ &j@- // sagen, kagen + 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 cart) age (na &g'e: // name b) ag (efter++ &j // age (lig '&j@- // uindtagelig, behagelig - stressed @@ -1131,7 +1167,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 +1193,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 @@ -1177,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 @@ -1384,6 +1419,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 // @@ -1411,6 +1447,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 @@ -1428,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 // @@ -1493,31 +1530,37 @@ 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@-_! // hade, lade + 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 +1570,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 +1590,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 +1600,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 +1613,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 +1668,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 +1679,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 +1711,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 +1726,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 @@ -1717,6 +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 an) d (e // manden, anden - silent d _fan) de (me // fandeme - skip de, only this word gær) de V // silent d @@ -1788,15 +1837,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 +1865,14 @@ 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 + rn) e (ste @- // fjerneste + av) e (@ @- // pavestolt // exceptions cyk) e (lløb @- @@ -1816,29 +1880,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, 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 +1942,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 +1953,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 +1964,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 @@ -1910,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 + 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 @@ -1919,6 +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 tol) ed (o 'ed // toledostål val) e (ncia 'E // name mal) er V // maler @@ -1958,6 +2033,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 +2042,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 +2055,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 +2090,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 +2122,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 +2156,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 @@ -2090,13 +2172,13 @@ 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 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 +2209,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 +2264,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 @@ -2211,8 +2294,8 @@ 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 - eg (enkapital+ Aj + _) egen (@ ?ej@-n // egenrådig, egennyttig, egentlig + eg (enkapital+ Aj eg (enbeskyd+ aI // egenbeskydning _r) e (sten_ &# // resten nyr) e (+ V // nyresten @@ -2258,11 +2341,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 @- @@ -2292,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 @@ -2303,46 +2382,64 @@ stoneh) enge EndZ // r) e (re_ E // operere 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 - 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 + øv) e (@ @- // prøveperiode + al) e (@ @- // malebog dans) e (@ @- // dansebal ås) e @- // dåse, gåsehud, Åse - ån) e (@ @- // låneansøgning - ev) e (@ @- // levevis + ån) e (@+ @- // låneansøgning, månestråle + _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 + + e (dere @- // torpedere øl) e (@+ @- // køleskab 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 +2544,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 @@ -2466,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@- // @@ -2492,6 +2592,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 +2604,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 +2628,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 +2652,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 @@ -2581,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 @@ -2692,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 @@ -2708,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 @@ -2734,7 +2839,10 @@ 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 + s) el (e+ el // sikkerhedssele + // exceptions to the -el rule // final -el in da_list - stressed e &) el ($p_alt+++ ''El // model @@ -2772,10 +2880,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 +2926,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 +2947,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 +2963,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,24 +3020,28 @@ 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 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 &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 +3059,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 +3220,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 - @) eres (_ V@-Vs // elskeres - @) eren (_ Vr@-n // elskeren - @) erens (_ Vr@-ns // elskerens + @) er (_N V // elsker + @) 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 @@ -3123,12 +3238,14 @@ 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 _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 +3285,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 @@ -3180,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 @@ -3338,7 +3455,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 @@ -3388,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 @@ -3401,6 +3520,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 +3570,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 +3665,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 +3711,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 +3734,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 +3791,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 (C@ 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é @@ -3706,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 @@ -3849,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 @@ -3886,6 +4013,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 +4160,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 +4188,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 +4357,7 @@ proktolo) ge (n @- // heavy hEvi // _) hearst hWst // name _) haag (_ h&j // Dutch city + hereford hE:rfO:d .group i i i @@ -4237,7 +4366,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 @@ -4250,10 +4382,15 @@ 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 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 // @@ -4269,22 +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 (nter e // fritidsinteresse - h) i (n i // hinsides - i (nfant e // marineinfanteri + _) 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 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 @@ -4296,45 +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 (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 @@ -4375,7 +4516,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 @@ -4410,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 // @@ -4453,7 +4593,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 +4601,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 +4641,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,12 +4664,13 @@ _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 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 // @@ -4540,7 +4683,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 +4754,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 +4781,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 +4816,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 +4830,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 +5097,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 +5312,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 +5324,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 +5338,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 @@ -5212,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 @@ -5295,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 @@ -5314,7 +5459,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 // @@ -5341,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 // @@ -5372,7 +5517,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 +5550,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 +5558,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 +5597,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 +5611,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 +5662,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 +5765,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 +5806,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 @@ -5718,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 @@ -5768,7 +5917,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 +5969,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 +5987,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 +6025,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,8 +6053,9 @@ _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 + o (nd ?o // bonde, onde _noget_r) o (s_ ?V // @@ -5914,10 +6064,12 @@ _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 oonagh un& // name + c) ochise OwS'i:s // name kl) oro (form oo shamp) oo ?o // nark) o o // narkoopgør @@ -5940,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 @@ -5956,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] @@ -6048,11 +6200,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 +6221,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 +6267,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 +6277,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 // @@ -6169,25 +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 - 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 @@ -6196,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 @@ -6251,6 +6415,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 +6482,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 +6520,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 +6590,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 +6644,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 @@ -6515,6 +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 t) o (t V // hårtot, tot, hottentot t) o (tA o // total em) o (+ o // demokrati @@ -6522,6 +6689,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,24 +6753,24 @@ 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 - p) or (c V // porcelæn + _f) oyer wAj'e // + _f) oyeren wAj'e@-n // + f) oyer wAje // + p) or (n O: // porno + 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 @@ -6694,34 +6862,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,17 +6910,17 @@ 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 &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 @@ -6824,8 +6991,6 @@ robins) on Vn // name .group or alv) or O // alvor -// or (L04+ or // favorit - or (ienter Vr // venstreorienterede v) or (L11+ or // favorabel v) or (_ O // f) or (_ V // for @@ -6837,9 +7002,9 @@ 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 O:@- // morgen + m) orge OO@- // morgen dek) or (_ 'V:r // dekor rapp) or (t 'O: // rapport f) or (t_ O: // fort @@ -6852,10 +7017,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 @@ -6863,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 @@ -6878,7 +7045,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 @@ -6904,6 +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 b) orde (nde orE // ord (ene+ oR // ordene ord (enen+ O:d // ordenen @@ -6946,12 +7114,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 +7133,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 +7157,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+ O:O // 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 +7205,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 +7228,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 +7298,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,27 +7474,41 @@ _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 + æ) ret (_+++ VD // været A) rerne (_++ Vn@- // horerne A) rerne (s_++ Vn@- // horernes A) rene (_ Vn@- // hærene 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 +7540,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 +7607,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 +7632,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 +7718,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 // @@ -7564,9 +7755,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 @@ -7749,7 +7940,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 +7977,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 +8010,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 +8095,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 +8104,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 +8142,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 @@ -7967,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 @@ -7989,7 +8184,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 @@ -8003,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 (for '?u // uforskyldt, uforfalsket - _) uud 'u|'uD // uudforsket + _) u (@@+P1 u_! // _" = no link with next vowel + _) ufor '?ufV: // uforskyldt, uforfalsket, uforandret + _) 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 - u (hyre+ u + _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 // @@ -8031,7 +8228,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 +8285,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 @@ -8110,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 (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 // @@ -8131,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 @@ -8212,7 +8409,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 +8459,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 +8478,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,17 +8497,18 @@ 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 + 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 // - L09) u (f O // fornuft + L09) u (f ?O // fornuft L09) u (ff ?O // muffe m) uffin VfIn // m) u (ft u // mufti @@ -8319,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 @@ -8380,7 +8579,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 @@ -8401,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 @@ -8505,9 +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 @@ -8536,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 @@ -8781,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 @@ -8804,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 // @@ -8843,7 +9049,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 +9116,16 @@ 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 + ø (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ø @@ -8951,16 +9162,16 @@ 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 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,24 +9207,31 @@ 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 -// g) år O // går, overgår + @) år (_ ?O: // skatteå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 @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 @@ -9040,15 +9258,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 +9297,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,8 +9334,7 @@ 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 + årer OO- // sårer, årer å (lti ?V // måltid .group ' @@ -9134,3 +9353,4 @@ slagsm) å (l ?O // ï i: // Thaïs ç s à & // à part + ë E // Ismaël diff --git a/dictsource/en_list b/dictsource/en_list index 2ae975c8..92b93d45 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. @@ -70,6 +70,7 @@ a eI $atend ï $accent ö $accent ü $accent +û $accent č $accent š $accent ş $accent @@ -324,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 @@ -724,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 @@ -754,6 +773,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 +787,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 +847,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 +895,7 @@ average av@-rI2dZ aviary eIvi@ri awry a#raI axes aksI#z +axon aks0n backend bak'End backstory baksto@ri @@ -1115,6 +1134,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 +1256,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 +1312,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 +1402,7 @@ doctrine d0ktrI2n doctrinal $alt1 doer du:3 dogged d0gI#d +dogmatic d0gm'atIk doin du:In domino $1 donor doUn3 @@ -1626,6 +1649,7 @@ gigantic dZaIg'antIk gilead g'IlIad gimme gImi giraffe dZI2raaf +github gIthVb glacier gleIS3 goin ,goUI2n $only // for goin' gonna g,@n@ @@ -1796,6 +1820,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 +2081,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 +2277,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 +2572,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 +2580,7 @@ sabre seIb3 sachet saSeI sacred seIkr@d sacrifice sakrI2faIs +sadistic $alt3 safety seIfti saga sA:g@ sahara $alt3 @@ -2566,6 +2595,7 @@ saloon $alt3 san ,san $only sardine $2 satanic $alt3 +satiric $alt3 saucepan sO:sp@n saudi saUdi saute sO:teI @@ -2706,6 +2736,7 @@ stagnate $2 stampede $2 starboard stA@b3d starry stA:rI +statistic $alt3 stiletto stI2lEtoU strychnine str'Ikni:n sterile stEraIl @@ -2780,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 @@ -2882,6 +2912,7 @@ unaware Vn@w'e@ uncle VNk@L undeny VndIn'aI underling $1 +underlings Vnd3lINz underworld $1 undies Vndiz undo Vnd'u: @@ -3241,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 @@ -3283,6 +3315,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 @@ -3369,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 @@ -3648,6 +3682,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 @@ -3672,6 +3707,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 30a4b5cf..4683f324 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 @@ -1461,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 @@ -1685,6 +1689,7 @@ de (ft dE _) de (g@ dI2 _) de (hyd ,di: + _) de (ist deI _) de (j dI2 _) de (l@ dI2 de (law dE @@ -1865,6 +1870,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 @@ -1927,23 +1933,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: @@ -2458,6 +2447,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: @@ -2531,7 +2521,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 @@ -2599,6 +2589,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 +2926,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 @@ -2971,7 +2952,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 @@ -3055,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: @@ -3135,6 +3117,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 @@ -3161,6 +3177,7 @@ imm (in Im immo (bi Im'oU imm (unis Im + _) immu (no I2mju: @) imous (_ =Im@s im (pac Im im (pecu ,Im @@ -3241,6 +3258,7 @@ in (ga_ 'IN in (got IN _) in (gro IN + _) in (im I2n _) in (jur In _) in (k IN _) in (l In @@ -3493,7 +3511,7 @@ @) istan (_ =Istan @) istani (_ Ist'A:nI @) iste (_ 'i:st - @) is (tic 'Is + @) is (tic_ 'Is r) is (y_ =@s @@ -4074,7 +4092,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 @@ -4212,7 +4229,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 @@ -4295,6 +4312,7 @@ .group or or o@ _) or O@ + _) organo (@P6 O@g,anoU or (ch_ O@ or (m_ O@ st) or (m o@ @@ -5221,6 +5239,7 @@ ?5 _) sur sVR _) sure SU@ sur (anc SU@ + sur (g+ s3: sur (m s3 sur (pa s3 sur (pr s3 @@ -5253,6 +5272,7 @@ te (rrest t2@ r) tga (g gI @) t (ia S + _pi) t (ia t s) t (l to (morr t@ _) to (nn tV @@ -5265,6 +5285,7 @@ tribe traIb _) tri (bu trI _) tri (g trI + _) tri (gonA trI _) tri (ni trI _) tri (vi trI _) tri (xA trI @@ -5274,23 +5295,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 +5371,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: @@ -6069,6 +6092,7 @@ ö 3: ör 3: ü u: + û u: ç s ß s č tS diff --git a/dictsource/es_list b/dictsource/es_list index 9fc6458e..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 @@ -123,6 +124,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 100644 --- 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/hi_list b/dictsource/hi_list index d926d6ba..f77a850f 100644 --- 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 100644 --- 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/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/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 9c2428dd..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 @@ -58,7 +58,7 @@ _tld t'Ild@ // punctuation -. p8nt $max3 +. p8nt _, k'Oma: _: d'8b@l@p,8nt _; p'8ntkOm,a: @@ -75,10 +75,12 @@ _) 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 +° Qra:d@n // numbers @@ -133,6 +135,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 +382,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 092d663c..c4400fd9 100644 --- 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 @@ -639,18 +643,19 @@ acervo $alt2 adepto $alt adore $alt adorno $alt $verb +aeroporto $alt2 +aeroportos $alt albatrozes $alt alcateia $alt +alcova $alt2 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 +665,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,10 +676,10 @@ azeda $alt $verb azedo $alt $verb baqueta $alt2 beco $alt2 -belo $alt besta $alt2 bilhete $alt2 boca $alt2 +boceta $alt2 bochecha $alt2 bojo $alt2 boleia $alt @@ -683,37 +688,41 @@ bolo $alt2 bolo $alt $verb borboleta $alt2 bordo $alt +borra $alt2 $noun bosque $alt boto $alt2 $noun +boxe $alt +brejo $alt bromelha $alt +cabelo $alt2 cabresto $alt2 cacete $alt2 cachorra $alt2 caderneta $alt2 cadete $alt2 +camelha $alt +camelo $alt2 +caminhonete $alt 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 cefaleia $alt -centopeia $alt +centopeia $alt cerca $alt cerca $alt2 $noun cerco $alt $verb chamego $alt2 chefe $alt checam $alt -cheque $alt -chinelo $alt choro $alt2 $noun chovesse $alt2 chupeta $alt2 @@ -721,7 +730,6 @@ clamores $alt2 clero $alt coco $alt2 cofre $alt -cogumelo $alt coice $alt2 colabore $alt colete $alt2 @@ -736,9 +744,11 @@ concerto $alt2 $noun concertos $alt2 concordo $alt conforto $alt $verb -congelo $alt +console $alt2 $noun consolo $alt2 $noun controle $alt2 $noun +controles $alt2 +controles $alt $verb controlo $alt2 $noun coreia $alt coreto $alt2 @@ -749,37 +759,39 @@ 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 deste $alt2 deste $alt $verb desterro $alt2 -destroem $alt +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 @@ -787,73 +799,77 @@ 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 -erro $alt2 $noun -erros $alt2 +erro $alt2 +erro $alt $verb esboço $alt $verb escopeta $alt2 escova $alt2 $noun -escovas $alt2 +escovas $alt2 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 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 -farelo $alt +fantoche $alt farofa $alt +farolete $alt2 febre $alt fera $alt feitora $alt2 ferozes $alt fezes $alt +filete $alt2 ?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 +garçonete $alt2 geleia $alt +gelo $alt2 gelo $alt $verb genebra $alt -germe $alt gesso $alt2 golpe $alt gonorreia $alt @@ -871,28 +887,30 @@ 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 +lanchonete $alt lebre $alt lembrete $alt2 +lepra $alt leste $alt2 $verb +lingueta $alt2 lopes $alt macete $alt2 maior $alt maleta $alt2 -marcelo $alt -marmelo $alt +marionete $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 @@ -902,8 +920,11 @@ mexo m'eSU minueto $alt2 miolo $alt2 miolos $alt +modelo $alt2 +modelo $alt $verb moeda $alt -mofo $alt $verb +moem $alt +mofo $alt $verb molho $alt2 $noun monera $alt morcego $alt2 @@ -922,12 +943,15 @@ 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 -onomatopeia $alt +olho $alt2 $noun +olhos $alt +onomatopeia $alt opereta $alt2 ordens $alt osso $alt2 @@ -941,16 +965,14 @@ palacete $alt2 palheta $alt2 panfleto $alt2 pangeia $alt -panqueca p,&~Nk'Ek& pantera $alt -paralelo $alt parede $alt2 pastora $alt2 +patinete $alt 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 @@ -969,7 +991,7 @@ pose $alt2 povos $alt poxa p'oS& primavera $alt -prosopopeia $alt +prosopopeia $alt quarteto $alt2 queda $alt quede $alt2 @@ -985,12 +1007,17 @@ 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 x'EUv& +rigores $alt2 rixa x'iS& rocha $alt rock $alt +roem $alt rola $alt2 $noun rolo $alt2 $noun rota $alt2 @@ -1003,12 +1030,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 @@ -1025,6 +1052,7 @@ suor swOr tapete $alt2 temores $alt2 tempero $alt2 $noun +tenores $alt2 terrores $alt2 teta $alt2 tetra $alt @@ -1032,9 +1060,10 @@ tocha $alt toga $alt topo $alt $verb torno $alt $verb +tornozelo $alt2 torre $alt2 $noun torres $alt2 -torro $alt +torro $alt tortos $alt traqueia $alt travesso $alt2 @@ -1047,17 +1076,14 @@ trombeta $alt2 tumores $alt2 valeta $alt2 vanessa $alt2 -velo $alt velozes $alt -verme $alt +verbete $alt2 violeta $alt2 violoncelo $alt voga $alt vozes $alt xarope $alt -xeque $alt -zelo $alt $verb -zero $alt +zelo $alt2 $noun zorra $alt2 @@ -1067,7 +1093,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 @@ -1083,8 +1110,10 @@ zorra $alt2 ?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 -?1 escape Sk'eIpy ?2 esc 'Esk ?3 esc 'EskI ?1 explorer ,ekspl'O:*&r- @@ -1107,6 +1136,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 @@ -1123,6 +1153,7 @@ zorra $alt2 ?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 @@ -1137,14 +1168,13 @@ símbolo s'imbolU ?2 software s'Oftwe@- ?1 space sp'eIsy ?1 sporting sp'Ort,ing -?1 tab t'ab + tab t'aby + tablet t'ablet ?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 @@ -1158,14 +1188,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 @@ -1178,7 +1210,8 @@ louis _^_FR ?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 @@ -1200,6 +1233,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 36d23b68..d2f26045 100644 --- 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@ & @@ -100,6 +99,7 @@ ái (s ''aI á (iCK ''a áy ''aI + ál (C ''aU áu ''aU áu (s ''aU ?1 ál ''Al @@ -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 @@ -265,7 +273,6 @@ e (xA_ E e (xAm_ E ?2 _n) e (t E - em (C eIm en (K eIN enh en^ @@ -359,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- @@ -452,25 +460,26 @@ 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 _inv) e (jL04_ E 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 _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 @@ -482,16 +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 - _) e (rgL03_ e - _) e (rguL02_ E - _alb) e (rguL02_ E - _enx) e (rguL02_ 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 @@ -517,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 @@ -534,6 +544,7 @@ _entorp) e (çL03_ e éi (s ''EI é (iCK ''E éy ''eI + él (C ''EU éu ''EU éu (s ''EU é (uCK ''E @@ -573,11 +584,19 @@ _entorp) e (çL03_ e g (Y Z // ge gi 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 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... @@ -610,6 +629,8 @@ _entorp) e (çL03_ e i (A_ 'i i (am_ 'i + i (em_ 'i + io (_ iU io (s_ iU i (oCK i @@ -647,6 +668,7 @@ _entorp) e (çL03_ e ím (C ''im ín (K ''iN ính ''in^ + íl (C ''IU .group j @@ -673,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^ @@ -741,9 +763,15 @@ _entorp) e (çL03_ e o (lA_ O o (lAm_ O + o (lhe_ O + o (lhem_ O + 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 @@ -760,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 @@ -820,10 +846,12 @@ _entorp) e (çL03_ e //sort _f) o (L05_ o +_pormen) o (L05_ O _f) o (L07_ o - _engl) o (bL01_ O _s) o (bL02_ O + _af) o (bL04_ O _esn) o (bL04_ O + _engl) o (bL04_ O br) o (chL04_ O _deb) o (chL04_ O _m) o (fL01_ O @@ -838,19 +866,17 @@ _entorp) e (çL03_ e _ap) oi (L02_ OI _b) oi (L04_ OI _t) o (lL03_ 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 + _f) o (lgL04_ O + _emp) o (lgL04_ O + _) o (lhL04_ O + m) o (lhL04_ O + ent) o (pL02_ O _c) o (pL03_ O _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,17 +952,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'eIN // frequência, 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. @@ -994,6 +1024,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 @@ -1027,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 2666f1e3..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,15 +45,15 @@ _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 _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 new file mode 100644 index 00000000..1af8f373 --- /dev/null +++ b/dictsource/te_list @@ -0,0 +1,171 @@ + +// This file is UTF8 encoded +// Spelling to phoneme rules for Telugu + + + +// speak Latin letters as English +a e:j +b bi: +c si: +d di: +e i: +f Ef +g dZi: +h e:tS +i a:j +j dZe:j +k ke:j +l El +m Em +n En +o o: +p pi: +q kju: +r a:rp +s Es +t t#i: +u ju: +v vi: +w dabalju: +x Eks +y wa:j +z zEd + + + +// numbers +_0 sunna +_1 okat.i +_1a oka +_2 rend.u +_3 mu:d.u +_4 na:lugu +_5 aIdu +_6 a:ru +_7 ;e:d.u +_8 ;enimidi +_9 tommidi +_1X padi +_11 padakond.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 pandommidi +_2X irav#aI +_3X muppaI +_4X nalub#aI +_5X ja:b#aI +_6X arav#aI +_7X d.#eb#baI +_8X jenab#aI +_9X tomb#aI +_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 +_0M3 kotla +_0M3x kotlu +_1M3 koti +_dpt _d,aS;a:mkam + + +// symbols +_?? aks.aram // 'unknown character' +% S;a:tam ++ ku:d.ika +* naks.atra +\ bja:kasla:s. +/ kudiva:lugi:ta +© ka:pi:raIt. +¶ v#e:ra: + +_, ka:ma: +_; semi:ko:lan +_: ko:lan +_! a:S;carja:rt#aka +_? praS;na:rt#aka +_- haIfan +__ amd.ar||sko:r + + +// unstressed function words +// articles +ద $u +అ $u+ +ఆ $u+ +ఒక $u + + +// letter names +U+c01 am +U+c02 an +U+c03 ah +U+c4d v#ottu + + // consonants with virama +క్ ik +ఖ్ ik# +గ్ ig +ఘ్ ig# +ఙ్ iN +చ్ ic +ఛ్ ic# +జ్ iJ +ఝ్ iJ# +ఞ్ in^ +ట్ it. +ఠ్ it.# +డ్ id. +ఢ్ id.# +ణ్ in. +త్ it +థ్ it# +ద్ id +ధ్ id# +న్ in +ప్ ip +ఫ్ ip# +బ్ ib +భ్ ib# +మ్ imu: +య్ ij +ర్ ir +ఱ్ ir +ల్ il +ళ్ il. +వ్ iv# +శ్ iS; +ష్ is. +స్ is +హ్ ih +ౘ్ its +ౙ్ idz + + + // combining vowels, precede by a click so they + // can be distinguished from stand-alone vowels +ా #X2a:: +ి #X1i +ీ #X2i:: +ు #X1u +ూ #X2u:: +ృ #X1ru +ౄ #X2ru: +ె #X1e +ే #X2e:: +ై #X2aI +ొ #X1o +ో #X2o:: +ౌ #X2aU + + diff --git a/dictsource/te_rules b/dictsource/te_rules new file mode 100644 index 00000000..ade4544c --- /dev/null +++ b/dictsource/te_rules @@ -0,0 +1,271 @@ + +// This file is UTF8 encoded +// Spelling to phoneme rules for Telugu + +// A means vowel letters (not vowel signs) +// B means a combining vowel sign or a virama + + +.replace +౦ 0 // Convert Telugu numbers +౧ 1 +౨ 2 +౩ 3 +౪ 4 +౫ 5 +౬ 6 +౭ 7 +౮ 8 +౯ 9 + + +.group క + క ka + క (B k + +.group ఖ + ఖ k#a + ఖ (B k# + +.group గ + గ ga + గ (B g + +.group ఘ + ఘ g#a + ఘ (B g# + +.group ఙ + ఙ Na + ఙ (B N + +.group చ + చ ca + చ (B c + +.group ఛ + ఛ c#a + ఛ (B c# + +.group జ + జ Ja + జ (B J + +.group ఝ + ఝ J#a + ఝ (B J# + +.group ఞ + ఞ n^a + ఞ (B n^ + +.group ట + ట t.a + ట (B t. + +.group ఠ + ఠ t.#a + ఠ (B t.# + +.group డ + డ d.a + డ (B d. + +.group ఢ + ఢ d.#a + ఢ (B d.# + +.group ణ + ణ n.a + ణ (B n. + +.group త + త ta + త (B t + +.group థ + థ t#a + థ (B t# + +.group ద + ద da + ద (B d + +.group ధ + ధ d#a + ధ (B d# + +.group న + న na + న (B n + +.group ప + ప pa + ప (B p + +.group ఫ + ఫ p#a + ఫ (B p# + +.group బ + బ ba + బ (B b + +.group భ + భ b#a + భ (B b# + +.group మ + మ ma + మ (B m + +.group య + య ja + య (B j + +.group ర + ర ra + ర (B r + +.group ఱ + ఱ ra + ఱ (B r + +.group ల + ల la + ల (B l + +.group ళ + ళ l.a + ళ (B l. + +.group వ + వ v#a + వ (B v# + +.group శ + శ S;a + శ (B S; + +.group ష + ష s.a + ష (B s. + +.group స + స sa + స (B s + +.group హ + హ ha + హ (B h + +.group ౘ + ౘ tsa + ౘ (B ts + +.group ౙ + ౙ dza + ౙ (B dz + +.group ౠ + ౠ ru + +.group ౡ + ౡ l- + + +// Stand-alone vowels +.group అ + అ a + +.group ఆ + ఆ a: + +.group ఇ + ఇ i + +.group ఈ + ఈ i: + +.group ఉ + ఉ u + +.group ఊ + ఊ u: + +.group ఋ + ఋ ru + +.group ఌ + ఌ l- + +.group ఎ + ఎ e + _) ఎ ;e + +.group ఏ + ఏ e: + +.group ఐ + ఐ aI + +.group ఒ + ఒ o + +.group ఓ + ఓ o: + +.group ఔ + ఔ aU + + + +.group 0xe0b0 // characters which start with UTF-8 bytes: [e0 b0] + +. ఁ n // candrabindu + + ం n // anusvara (this should nasalize the vowel) + + ః h // visarga + +// combining vowel signs + + ా a: + + ి i + + +.group 0xe0b1 // characters which start with UTF-8 bytes: [e0 b1] + + ీ i: + + ు u + + ూ u: + + ృ r- + + ౄ r-: + + ె e + + ే e: + + ై aI + + ొ o + + ో o: + + ౌ aU + + ్ // virama + + ౕ : // length mark ?? + ౖ : // ai length mark ?? + + +.group + $ d.a:lar + + 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 diff --git a/espeak-data/voices/en b/espeak-data/voices/en index 59ed2ce2..84d12dd8 100644 --- 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/en-us b/espeak-data/voices/en-us index fd86703c..d61ff5cf 100644 --- 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/espeak-data/voices/es-la b/espeak-data/voices/es-la index 262d0687..4fbacd1b 100644 --- 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/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/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/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/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/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/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/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/d/xd b/phsource/d/xd index a2b1a0d8..3cad09d0 100644 Binary files a/phsource/d/xd and b/phsource/d/xd differ diff --git a/phsource/envelopes.png b/phsource/envelopes.png index 5876f8bc..aac09caa 100644 Binary files a/phsource/envelopes.png and b/phsource/envelopes.png differ diff --git a/phsource/ph_bengali b/phsource/ph_bengali index 7b93cc90..f7863016 100644 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -29,43 +29,43 @@ endphoneme phoneme a vowel starttype #a endtype #a length 225 - FMT(vowel/aa_9) + FMT(vowel/a_3) 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 4ebfed75..bd92210e 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -1,13 +1,123 @@ // 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] +// 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 @@ -22,7 +132,18 @@ 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 15 + 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,38 +166,24 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 95 //150 -// PB long vowel followed by consonant and certain vowels "gide" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN - length 150 + length 140 +// Long vowel followed by consonant and @- "gide", "pile" +IF nextPhW(isNotVowel) AND next2PhW(@-) THEN +// 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 +//"skider" short +IF nextPhW(D) AND next2PhW(V) THEN + length 140 ENDIF -// Only this vowel (in this case [i]) -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN - length 150 -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 95 -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 - length 240 +//"skideren" long +IF nextPhW(D) AND next2PhW(V) AND next3PhW(V) THEN + length 225 ENDIF +CALL LongVowelLength FMT(vowel/i_4) endphoneme @@ -84,7 +191,8 @@ endphoneme // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i - length 90 + length 140 + CALL ShortVowelLength IfNextVowelAppend(;) FMT(vowel/i_4) endphoneme @@ -99,27 +207,9 @@ endphoneme phoneme e vowel starttype #e endtype #e - length 95 //150 -// "delte", "mente" -IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN - length 150 -ENDIF -// PB "ring", "ringe" -IF nextPhW(N) THEN - length 95 -ENDIF -// PB "enig", "enige", "evig" -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 150 -ENDIF -// Only "e" -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 150 -ENDIF -// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 95 -ENDIF + length 140 + CALL LongVowelLength + CALL ShortVowelLength FMT(vowel/e) endphoneme @@ -127,44 +217,30 @@ endphoneme // "skille" vs. "skele", "pille" vs. "pile" phoneme ?e vowel starttype #e endtype #e - length 90 + length 140 + CALL ShortVowelLength 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 +// no link with next vowel +IF thisPh(isWordEnd) THEN + IfNextVowelAppend(_!) ENDIF -// "ræve" -IF nextVowel(#@) OR nextVowel(#e) THEN - length 160 -ENDIF -// "ære", "kærester", "ærefrygt" - longer E +// "ære", "kærester", "ærefrygt" - vowel + vowel IF nextPhW(V) THEN - length 180 + length 225 ENDIF -// Only the letter "æ" - long -IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 160 -ENDIF -// "stædig" [st'EDi] long -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 160 -ENDIF -// "længe" - short - 2 consonants => 1 consonant -IF nextPhW(N) THEN - length 120 +// "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 + CALL LongVowelLength // "værelse" [v'E3-Vls@_!] IF nextPhW(3-) AND next2PhW(V) THEN - length 120 -ENDIF -// "mælkebøtte" - short followed by 2 consonants -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 120 + length 100 ENDIF FMT(vowel/e_mid2) endphoneme @@ -174,64 +250,47 @@ endphoneme phoneme ?E vowel starttype #e endtype #e ipa ε - length 100 + length 140 + CALL ShortVowelLength 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 + ipa æ + length 140 +// "same", "sale", "bade" - consonant + @-: long +// but NOT "hinanden" +IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN + IF NOT next3PhW(n) THEN + length 225 + ENDIF ENDIF -// ThisPh + gooup #e or group #@ +// ThisPh + V or @- // "ae", "aer" vowel + vowel: extra length -IF nextPhW(#@) OR nextPhW(#e) THEN - length 220 -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 150 -ENDIF -// "stadig" [st&Di], "stadigt" [st&Dit] -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 180 -ENDIF -// "Alfie", "alfer" - short before 2 consonants -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 90 +IF nextPhW(@-) OR nextPhW(V) THEN + length 260 ENDIF +CALL LongVowelLength 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 90 - FMT(vowel/ee_2) + 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 120 -IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 150 -ENDIF + length 140 + ipa a + CALL LongVowelLength +// CALL ShortVowelLength FMT(vowel/&) endphoneme @@ -239,102 +298,63 @@ endphoneme // "revl" vs. "tremme" phoneme ?&# vowel starttype #e endtype #e - length 90 + length 140 + CALL ShortVowelLength 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 -// PB long vowel followed by consonant and certain vowels - "drabelig" -IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN - length 150 -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 90 -ENDIF + length 140 +CALL LongVowelLength // "fare" [f'A:A] IF nextPhW(A) THEN - length 150 + length 225 ENDIF FMT(vowel/a_8) endphoneme // PB short A -// "drab" vs. "drabelig" +// "krabbe" vs. "drabelig" phoneme ?A vowel starttype #a endtype #a - length 90 -// "straffeattest", "straffe", "rapid" - a bit longer after R -IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN - length 110 -ENDIF + length 140 +CALL ShortVowelLength FMT(vowel/a_8) endphoneme phoneme u vowel starttype #u endtype #u - length 90 //150 + length 140 // "suge", "uge", "bluse", "julegave" -IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN - length 150 -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 150 -ENDIF -// "fugl" [ful] - a bit longer -IF nextPhW(isWordEnd) THEN - length 120 +IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN + length 225 ENDIF +CALL LongVowelLength 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 90 + length 140 + CALL ShortVowelLength FMT(vowel/u_bck) endphoneme phoneme o vowel starttype #o endtype #o - length 90 //150 -// "bore", "borer" -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN - length 150 + length 140 +// "bore", "borer" [boV] o + V +IF nextPhW(V) OR nextPhW(@-) THEN + length 225 ENDIF -// "modig" - long vowel after consonant + [i] -IF nextPhW(D) AND next2PhW(i) THEN - length 150 +// "kone", "koner" o + consonant + V or @- +IF next2PhW(V) OR next2PhW(@-) THEN + length 225 ENDIF +CALL LongVowelLength FMT(vowel/o_2) endphoneme @@ -342,25 +362,27 @@ 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 -// "sove", "sover" - consonant + #e or #@: long -IF next2PhW(#@) OR next2PhW(#e) THEN - length 150 + length 140 + ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ +// "sove", "sover" - consonant + @ or V: long +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 +// "såre", "sårede" [s'O:?OD@-] +IF nextPhW(O) OR nextPhW(?O) THEN + length 225 ENDIF +CALL LongVowelLength FMT(vowel/o_5) endphoneme @@ -368,95 +390,60 @@ endphoneme // "toget" vs. "tåget" phoneme ?O vowel starttype #o endtype #o - length 90 + length 140 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 180 -ENDIF -// "sove" [sVw3] - longer followed by w + 3 -IF nextPhW(w) AND next2PhW(3) THEN - length 220 -ENDIF -// PB "konge" -IF nextPhW(N) THEN - length 95 -ENDIF + length 140 +CALL LongVowelLength FMT(vowel/V_4) endphoneme -// PB Short å +// PB Short V // "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 -ENDIF + length 140 + ipa ɔ FMT(vowel/oo_2) endphoneme // Short 0 "sukker" phoneme ?0 vowel starttype #o endtype #o - length 90 + length 140 + ipa ɔ FMT(vowel/oo_2) 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 90 //150 - + length 140 // 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 + // not "gebyret" TEST + IF NOT nextPhW(3-) AND NOT nextPhW(R) AND NOT nextPhW(r) THEN + length 225 + ENDIF ENDIF -// Only this vowel (in this case [y]) -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN - length 150 -ENDIF -// "dydig" [dyDi] -IF nextPhW(isNotVowel) AND next2PhW(i) THEN - length 150 -ENDIF -// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] -IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN - length 200 +// "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 - length 150 +IF nextPhW(w) AND next2PhW(@-) THEN + length 225 ENDIF +CALL LongVowelLength FMT(vowel/y) endphoneme @@ -464,50 +451,32 @@ endphoneme // "kylling" vs. "kyle", "krybbe" vs. "krybe" phoneme ?y vowel starttype #i endtype #i - length 90 + length 140 + CALL ShortVowelLength FMT(vowel/y) endphoneme phoneme Y vowel starttype #i endtype #i - length 150 -IF NOT next2Ph(3) AND NOT next2Ph(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 +IF nextPhW(V) OR nextPhW(@-) THEN + length 225 ENDIF FMT(vowel/yy) endphoneme phoneme W vowel starttype #@ endtype #@ - length 90 //160 -// "kløe" vowel + vowel: extra length -IF nextPhW(#@) OR nextPhW(#e) THEN - length 220 -ENDIF -// røde" W + 1 consonant + 3 or W or @ -IF next2PhW(#@) OR next2PhW(#e) THEN - length 160 -ENDIF -// "røveri" but NOT "surfer" [sWf?V] TEST + length 140 +// "røveri" but NOT "surfer" [sWfV] 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 - 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 150 +// "børnebog" - short +IF nextPhW(r) AND next2PhW(n) AND next3PhW(@-) THEN + length 140 ENDIF +CALL LongVowelLength FMT(vowel/oe) endphoneme @@ -515,21 +484,18 @@ endphoneme // "prøv" vs. "prøve" phoneme ?W vowel starttype #@ endtype #@ - length 95 + length 140 + CALL ShortVowelLength 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 +504,8 @@ endphoneme // "rømme" phoneme ?W# vowel starttype #@ endtype #@ - length 90 + length 140 + CALL ShortVowelLength FMT(vowel/V) endphoneme @@ -547,7 +514,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 +538,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 @@ -578,24 +549,6 @@ endphoneme phoneme l/3 // Replacement for [l/] liquid lengthmod 7 - - IF nextPh(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_u, -70) - EndSwitch - -// IF nextPh(isLiquid) THEN -// FMT(l/_l) -// ENDIF - FMT(l/l_) endphoneme @@ -678,7 +631,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@) 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..760ede5e 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 @@ -321,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_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/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/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/phonemes b/phsource/phonemes index a7587850..22f593bd 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 @@ -1875,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 @@ -1899,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 @@ -1923,13 +1926,9 @@ include ph_slovenian //phonemetable dv hi //include ph_divehi -//phonemetable te hi -//include ph_telugu - //phonemetable tn base //include ph_setswana - //phonemetable mt base //include ph_maltese diff --git a/phsource/r/V_ b/phsource/r/V_ deleted file mode 100644 index 349d2b78..00000000 Binary files a/phsource/r/V_ and /dev/null differ diff --git a/phsource/r/V_2_ b/phsource/r/V_2_ deleted file mode 100644 index 2f189216..00000000 Binary files a/phsource/r/V_2_ and /dev/null differ diff --git a/phsource/voc/murmur1 b/phsource/voc/murmur1 new file mode 100644 index 00000000..42e8e816 Binary files /dev/null and b/phsource/voc/murmur1 differ diff --git a/phsource/vwl_en_us/ai3 b/phsource/vwl_en_us/ai3 index fdce0513..d4f301ab 100644 Binary files a/phsource/vwl_en_us/ai3 and b/phsource/vwl_en_us/ai3 differ diff --git a/phsource/vwl_en_us/er b/phsource/vwl_en_us/er index 064276ad..6dff7167 100644 Binary files a/phsource/vwl_en_us/er and b/phsource/vwl_en_us/er differ diff --git a/phsource/vwl_en_us/oor b/phsource/vwl_en_us/oor index 3d6ca31e..302b7da4 100644 Binary files a/phsource/vwl_en_us/oor and b/phsource/vwl_en_us/oor differ diff --git a/platforms/riscos/Makefile b/platforms/riscos/Makefile index e996cc63..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 = @@ -61,3 +61,4 @@ Squeezeflags = -o $@ objasm $(objasmflags) -from @.s.assemb -to @.o.assemb # Dynamic dependencies: + 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 439e913b..ec9bca85 100644 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.47.01 +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 f2dee7df..235aa67d 100644 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,58 +1,64 @@ - -[Setup] -AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.47.01 -DefaultDirName={pf}\eSpeak -DefaultGroupName=eSpeak -OutputBaseFilename=setup_espeakedit -Compression=lzma -SolidCompression=yes -DirExistsWarning=no -ShowLanguageDialog=auto - -[Icons] -Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized -Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}" - -[InstallDelete] -Type: filesandordirs; Name: "{app}\phsource\vowelcharts" -Type: filesandordirs; Name: "{app}\espeakedit" - - -[Files] -Source: "espeakedit.exe"; DestDir: "{app}" -;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs -Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs -Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs -Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs -Source: "License.txt"; DestDir: "{app}"; -;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme - - -[Languages] -Name: "en"; MessagesFile: "compiler:Default.isl" -Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" -Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" -Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" -Name: "de"; MessagesFile: "compiler:Languages\German.isl" -Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" -Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" -Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" -Name: "fr"; MessagesFile: "compiler:Languages\French.isl" -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: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" -Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" -Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" -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: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl" - + +[Setup] +AppName=eSpeakEdit +AppVerName=eSpeakEdit version 1.47.04 +DefaultDirName={pf}\eSpeak +DefaultGroupName=eSpeak +OutputBaseFilename=setup_espeakedit +Compression=lzma +SolidCompression=yes +DirExistsWarning=no +ShowLanguageDialog=auto + +[Icons] +Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized +Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}" + +[InstallDelete] +Type: filesandordirs; Name: "{app}\phsource\vowelcharts" +Type: filesandordirs; Name: "{app}\espeakedit" + + +[Files] +Source: "espeakedit.exe"; DestDir: "{app}" +;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs +Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs +Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs +Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs +Source: "License.txt"; DestDir: "{app}"; +;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme + + +[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: "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" +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: "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" + diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 82eca4d5..c410d1b6 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; @@ -3059,6 +3059,7 @@ int CompilePhoneme(int compile_phoneme) case kRETURN: *prog_out++ = i_RETURN; + DecThenCount(); break; case kINCLUDE: diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 08463906..706b4f05 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -3473,16 +3473,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 de332e44..8c9df1f5 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -655,7 +655,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 } @@ -703,11 +703,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 3905865f..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) - { - 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 48eca79a..f8ffd92b 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -90,6 +90,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x055e, // Armenian question 0x055b, // Armenian emphasis mark + 0x060c, // Arabic , 0x061b, // Arabic ; 0x061f, // Arabic ? 0x06d4, // Arabic . @@ -137,6 +138,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 8d47553c..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.03c 23.Mar.13"; +const char *version_string = "1.47.04 02.Apr.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/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..6621f999 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}, @@ -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} }; @@ -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; @@ -654,10 +655,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 +671,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 +913,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 +1115,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 +1197,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 +1612,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.cpp b/src/translate.cpp index fc02ce16..3db90aca 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1736,6 +1736,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 @@ -2444,6 +2445,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'): @@ -2471,36 +2501,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)); } @@ -2955,7 +2955,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) @@ -3473,7 +3473,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) 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; diff --git a/src/voices.cpp b/src/voices.cpp index 60119edc..6613f68c 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -602,7 +602,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 "; @@ -1894,12 +1894,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(); @@ -1938,7 +1950,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