From 3eb5cb58d7cd170084e81eb63247f28b1ddc5dcb Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 1 Mar 2013 20:45:05 +0000 Subject: [PATCH 01/24] [1.46.39] Fixes to speaking characters from foreign alphabets. Allow $textmode and $text to translate between words in different alphabets. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@305 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 50 +++-- dictsource/en_list | 4 +- dictsource/en_rules | 14 +- dictsource/hi_list | 68 +++--- dictsource/hi_rules | 436 +++++++++++++++++++-------------------- dictsource/ml_list | 68 ++++-- dictsource/ml_rules | 251 +++++++++++----------- dictsource/pt_list | 7 +- dictsource/pt_rules | 1 + phsource/compile_report | 67 +++--- phsource/ph_hindi | 4 +- phsource/ph_malayalam | 19 +- phsource/ph_pt_brazil | 14 +- phsource/phonemes | 18 +- src/compiledict.cpp | 67 +++--- src/dictionary.cpp | 21 +- src/extras.cpp | 10 +- src/menus.cpp | 4 +- src/numbers.cpp | 34 ++- src/synthdata.cpp | 4 +- src/tr_languages.cpp | 7 + src/translate.cpp | 26 ++- src/translate.h | 40 ++-- src/voices.cpp | 19 +- src/wave_sada.cpp | 2 +- 25 files changed, 687 insertions(+), 568 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 96d541b0..755edc6a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-02-27 +Dictionary en_dict 2013-03-01 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -190,12 +190,12 @@ N n^ p r R R2 s S t tS ts tS; v x z Z -Dictionary hi_dict 2012-04-12 +Dictionary hi_dict 2013-03-01 -@ @2 a a: aI aU e E -e: E: E~ i I i: l- o -O o: O: O~ o~ r- U u: -u~ V +@ @- @2 a a: aI aU a~ +e E e: E: E~ i I i: +l- o O o: O: O~ o~ r- +u U u: u~ V #X1 #X2 - : b bh c ch d d. dh dh. f g gh h @@ -378,7 +378,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-02-25 +Dictionary pt_dict 2013-02-27 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -539,7 +539,7 @@ n^ p p` r s S t t` tS tS` v w x z Z -Dictionary ml_dict 2011-12-05 +Dictionary ml_dict 2013-02-28 @ a a# a: aI aU e E e: i I i: o o: r- u @@ -569,18 +569,18 @@ r r. s S s. t t. th th. v w x z -Dictionary pa_dict 2012-05-04 +Dictionary pa_dict 2013-03-01 -@ a a~ e E eI e~ E~ -i I i: i~ I~ o O O~ -o~ r- u U U~ u~ V V~ +@ a a~ e E e~ E~ i +I i~ I~ o O O~ o~ r- +u U U~ u~ V V~ : ; b bh c ch d d. -dh dh. dZ f g gh h H -j J Jh k kh l l. m -n N n. n^ p ph Q r -R R2 s S t t. th th. -v w x z +dh dh. f g gh h H j +J Jh k kh l l. m n +N n. n^ p ph Q R R2 +s S t t. th th. v x +z Dictionary prs_dict 2009-12-01 @@ -602,7 +602,7 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2013-02-08 +Dictionary ur_dict 2013-03-01 @ a a: aI aU e E e: i I i: O o: U u: V @@ -869,3 +869,17 @@ b B d D f g j k l l^ m n n^ p Q r R R2 s S t T t# tS w x + + +Dictionary bn_dict 2013-02-28 + +@ a a: aI a~ e E e: +E: E~ i I i: i~ o O +o: O: O~ o~ r- u U u: +u~ V + +#X1 #X2 : b bh c ch d +d. dh dh. g gh h H j +J Jh k kh l m n N +n. n^ p ph r r. s S +s. t t. th th. v w z diff --git a/dictsource/en_list b/dictsource/en_list index 27531271..208b18bc 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -187,7 +187,7 @@ _‴ trIp@LpraIm _‼ Ekskla#m'eIS@nz _₠ jU@roU -+ plVs $max3 ++ plVs # haS $max3 @ _at_ $u+ & _and $u+ @@ -1196,6 +1196,7 @@ convent k0nv@nt converse $1 $only converse $verb convert $1 $noun +convict $1 convict $2 $verb convolute k0nv@l'u:t coop ku:p @@ -1961,6 +1962,7 @@ mercedes m3:s'eIdi:z //mercenary m3:s@n@rI merest mi@r@st meringue m@raN +meson mi:z0n metabolic mEt@b'0lIk metaphor mEt@fO@ metastable $alt1 diff --git a/dictsource/en_rules b/dictsource/en_rules index 97f6c7ab..37889166 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1,6 +1,6 @@ // *************************************************************************** -// * Copyright (C) 2005 to 2010 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 * @@ -1601,7 +1601,7 @@ co (ntrol+ k@ conva (l k0nv@ _) co (nvenA k@ - _) co (nvi k0# + _) con (vi k%0#n _) co (nvoy k0 _) co (nw k0 _) copy k0pI @@ -1734,7 +1734,7 @@ _) des (k dEs des (ol dEs des (pot dEs - _) dess dI2z + _) dess (er dI2z desta (b d%i:steI desti dEstI des (ul d%i:s @@ -2547,7 +2547,7 @@ v) es (t+ Es harv) es (t Is esti (m EstI# - es (ty @s + &) es (ty @s .group et _) et (on i:t @@ -2994,6 +2994,7 @@ iah (_ 'aI@ ia (m i@ &) ia (n i@ + @) ia (nd I'a @) ia (nic I'a @) ia (nit I'a @) ia (na_ i:'a @@ -3394,8 +3395,8 @@ iority I'0rI2t%I iou (rA j@ iour (K j3 - @) ious (_ =I2@s - g) ious (_ =@s + @) ious =I2@s + g) ious =@s ioux u: _r) io (t aI@ io (t_ I|@ @@ -5881,6 +5882,7 @@ &d) Ed (_S2vei I#d &ch) Ed (_S2vei t &k) Ed (_S2vei t + ril) Ed (_S2 d &@@om) Ed (_S2v d &p) Ed (_S2vei t &t) Ed (_S2vei I#d diff --git a/dictsource/hi_list b/dictsource/hi_list index 82eecb20..43663a6e 100755 --- a/dictsource/hi_list +++ b/dictsource/hi_list @@ -2,12 +2,12 @@ // Numbers // devanagari numbers are changed to latin characters before translation -_0 S'u:n.jV +_0 s'u:n.jV _1 'e:k _2 d'o: _3 t'i:n -_4 c'a:r: -_5 p'a:nc +_4 c:'a:r: +_5 'pa~c _6 ch'@2 _7 s'a:t _8 'a:th. @@ -15,30 +15,30 @@ _9 n'O: ?3 _9 n'aU _10 d'Vs -_11 gj'a:r@2 -_12 b'a:r@2 -_13 t'E:r@2 -_14 ch'O:d@2 -_15 p'Vndr@2 -_16 s'o:l@2 -_17 s'Vt:r@2 -_18 Vth.:'a:r@2 +_11 gj'a:r-ah +_12 b'a:rah +_13 t'e:r@2h +_14 ch'O:d@2h +_15 p'Vndr@2h +_16 s'o:l@2h +_17 sVtr@2h +_18 a:th:arah _19 Unn'Is _20 b'i:s _21 Ik:'Is _22 b'a:Is -_23 t'e:Is +_23 t'ue:Is _24 c'O:bIs _25 p@c:'Is _26 ch@bb'i:rs _27 s@t:'a:Is _28 ath:'a:Is -_29 Unt'Is +_29 ,Unt'Is _30 t'i:s _31 Ik@t:'Is -_32 bat:'Is +_32 b'at:'I'S _33 tE~t'Is // E~ ? _34 cO~t'Is _35 pE~t'Is @@ -65,16 +65,16 @@ _53 t'IrpVn _54 c'Ou:wVn _55 p'achpVn _56 chh@p:'Vn -_57 sVt:'a:w@n -_58 ath:'a:w@n +_57 santa:'w@n +_58 ath:a:'w@n _59 Uns'Vth _60 s'a:th. _61 'Iks@th. _62 b'a:s@th. _63 t'Irs@th. -_64 c'O~s@th. -_65 paIns@th. +_64 cO:'s@th. +_65 paI's@th. _66 ch'Ija:s@th. _67 s'Vrs@th. _68 ars@th. @@ -92,15 +92,15 @@ _78 athhat:'Vr: _79 ,Un^Ia:s'i: _80 ,Vss'i: -_81 Ikja:s'i: -_82 baIa:s'i: -_83 tIra:s'i: -_84 cO:ra:s'i: -_85 pI'ca:s'i: -_86 chIja:s'i: -_87 sVt:a:s'i: -_88 ath:a:s'i: -_89 nVwa:s'i: +_81 Ikja:s'i +_82 baIa:s'i +_83 tIra:s'i +_84 cO:ra:s'i +_85 pI'ca:s'i +_86 chIja:s'i +_87 sVt:a:s'i +_88 ath:a:s'i +_89 nVwa:s'i _90 nVb:'e: _91 Ikj'a:n@we: @@ -114,9 +114,9 @@ _98 ath:'a:n@we: _99 nIn^j'a:n@we: _0C s'O: -_0M1 h@z'a:r +_0M1 h@J,a:r _0M2 l'a:kh -_0M3 cr'ore +_0M3 k@ro:r.V _0M4 'Vr@b _0M5 kh'Vr@b _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? @@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? श S@ ष s.@ // retroflex [S] स s@ -ह H@ +ह H@- क़ q@ ख़ x@ ग़ Q@ @@ -199,14 +199,14 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? । dVn.d.V // Pronouns -मैं $u // main: I +मैं $u // main: IrI मुझे $u मेरा $u मेरी $u मेरे $u हम $u // we -हमें $u +हमे $u हमारा $u हमारी $u हमारे $u @@ -234,7 +234,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? इसका $u ये $u // they -इन्हें $u +इन्हें $u इनका $u वह $u // he/she/it @@ -246,7 +246,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? वे $u // they वो $u -उन्हें $u // unheṃ: them +उन्हे $u // unheṃ: them उनका $u उनकी $u उनके $u diff --git a/dictsource/hi_rules b/dictsource/hi_rules index e5cd0291..b8cd8e16 100755 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -1,5 +1,5 @@ -// This file is UTF8 encoded +// This file is UTF8 encoded // letter groups: // A vowel letters and vowel signs @@ -28,423 +28,423 @@ // Vowels .group अ - अ V - अ (ह E // (h - अह) अ E + अ V + अ (ह E // (h + अह) अ E .group आ - आ a: + आ a: .group इ - इ I + इ I // इँ i~ // इं i~ .group ई - ई i: - ई (_ i + ई i: + ई (_ i .group उ - उ U + उ U .group ऊ - ऊ u: - ऊं u~ // + anusvara - ऊँ u~ // + candrabinbu + ऊ u + ऊं u~ // + anusvara + ऊँ u~ // + candrabinbu .group ऋ - ऋ rI + ऋ rI .group ऌ - ऌ l- // vocalic l + ऌ l- // vocalic l .group ऍ - ऍ E // candra e + ऍ E // candra e .group ऎ - ऎ e + ऎ e .group ए - ए e: + ए e: .group ऐ - ऐ E: // ?? [aI] [E:] [&:] - ऐं E~ - ऐँ E~ -?2 ऐ aI // ?? [aI] [E:] [&:] + ऐ E: // ?? [aI] [E:] [&:] + ऐं E~ + ऐँ E~ +?2 ऐ aI // ?? [aI] [E:] [&:] .group ऑ - ऑ O // candra O + ऑ O // candra O .group ऒ - ऒ o + ऒ o .group ओ - ओ o: - ओं o~ // +anusvara - ओँ o~ // +candrabindu + ओ o: + ओं o~ // +anusvara + ओँ o~ // +candrabindu .group औ - औ O: // ?? [aU] [O:] - औं O~ // +anusvara - औँ O~ // +candrabindu -?3 औ aU // ?? [aU] [O:] + औ O: // ?? [aU] [O:] + औं O~ // +anusvara + औँ O~ // +candrabindu +?3 औ aU // ?? [aU] [O:] // Vowel Signs .group ा ा a: - ाव aU + ाव aU .group ि - ि I + ि I // िँ i~ // िं i~ .group ी - ी i: - ी (_ i + ी i: + ी (_ i .group ु - ु U + ु u .group ू - ू u: - ूं u~ // or O~ ?? - ूँ u~ + ू u: + ूं u~ // or O~ ?? + ूँ u~ .group ृ - ृ rI + ृ rI .group ॄ - ॄ rI + ॄ rI .group ॅ - ॅ E + ॅ E .group ॆ - ॆ e + ॆ e .group े - े e: + े e: .group ै - ै E: // ?? [aI] [E:] [&:] - ैं E~ - ैँ E~ -?2 ै aI // ?? [aI] [E:] [&:] + ै E: // ?? [aI] [E:] [&:] + ैं E~ + ैँ E~ +?2 ै aI // ?? [aI] [E:] [&:] .group ॉ - ॉ O + ॉ O .group ॊ - ॊ o + ॊ o .group ो - ो o: - ों o~ - ोँ o~ + ो o: + ों o~ + ोँ o~ .group ौ - ौ O: // [O:] or [aU] ?? - ौं O~ - ौँ O~ -?3 ौ aU // [O:] or [aU] ?? + ौ O: // [O:] or [aU] ?? + ौं O~ + ौँ O~ +?3 ौ aU // [O:] or [aU] ?? .group ॢ // vowel sign l - ॢ l- + ॢ l- .group ॣ // vowel sign ll - ॣ l-: + ॣ l-: .group ॐ - ॐ o~m + ॐ o~m // Consonants .group क - क kV - क (B k - क (्य k: - क़ qV - क़ (B q + क kV + क (B k + क (्य k: + क़ qV + क़ (B q .group ख - ख khV - ख (B kh - ख़ xV - ख़ (B x + ख khV + ख (B kh + ख़ xV + ख़ (B x .group ग - ग gV - ग (B g - ग़ QV - ग़ (B Q + ग gV + ग (B g + ग़ QV + ग़ (B Q .group घ - घ ghV - घ (B gh + घ ghV + घ (B gh .group ङ - ङ NV - ङ (B N - ्) ङ (_ N@ + ङ NV + ङ (B N + ्) ङ (_ N@ .group च - च cV - च (B c - च (्य c: + च cV + च (B c + च (्य c: .group छ - छ chV - छ (B ch + छ chV + छ (B ch .group ज - ज JV - ज (B J - ज़ zV - ज़ (B z + ज JV + ज (B J + ज़ zV + ज़ (B z .group झ - झ JhV - झ (B Jh + झ JhV + झ (B Jh .group ञ - ञ n^V - ञ (B n^ - ्) ञ (_ n^ + ञ n^V + ञ (B n^ + ्) ञ (_ n^ .group ट - ट t.V - ट (B t. - ट (्य t.: + ट t.V + ट (B t. + ट (्य t.: .group ठ - ठ th.V - ठ (B th. + ठ th.V + ठ (B th. .group ड - ड d.V - ड (B d. + ड d.V + ड (B d. - ड़ r.V - ड़ (B r. + ड़ r.V + ड़ (B r. .group ढ - ढ dh.V - ढ (B dh. - ढ़ r.hV // nukta (should retroflex flap) - ढ़ (B r.h // nukta + ढ dh.V + ढ (B dh. + ढ़ r.hV // nukta (should retroflex flap) + ढ़ (B r.h // nukta .group ण - ण n.V // (temporary) same as dental [n] - ण (B n. - ्) ण (_ n.@ + ण n.V // (temporary) same as dental [n] + ण (B n. + ्) ण (_ n.@ .group त - त tV - त (B t - त (्य t: + त tV + त (B t + त (्य t: .group थ - थ thV - थ (B th + थ thV + थ (B th .group द - द dV - द (B d + द dV + द (B d .group ध - ध dhV - ध (B dh + ध dhV + ध (B dh .group न - न nV - न (B n - ्) न (_ n@ - र्) न (_ n // r +virama + न nV + न (B n + ्) न (_ n@ + र्) न (_ n // r +virama .group ऩ - ऩ n: // should this be a long [n] ? + ऩ n: // should this be a long [n] ? .group प - प pV - प (B p - प (्य p: + प pV + प (B p + प (्य p: .group फ - फ phV - फ (B ph - फ़ fV - फ़ (B f + फ phV + फ (B ph + फ़ fV + फ़ (B f .group ब - ब bV - ब (B b + ब bV + ब (B b .group भ - भ bhV - भ (B bh + भ bhV + भ (B bh .group म - म mV - म (B m - ्) म (_ m@ - र्) म (_ m // r +virama - न्) म (_ m // n +virama + म mV + म (B m + ्) म (_ m@ + र्) म (_ m // r +virama + न्) म (_ m // n +virama .group य - य jV - य (B j - ्) य (_ j@ + य j@ + य (B j + ्) य (_ j@ .group र - र rV - र (B r - ्) र (_ r@ + र rV + र (B r + ्) र (_ r@ .group ऱ // rra - ऱ rV // (temporary) same as [r] - ऱ (B r - ्) ऱ (_ r@ + ऱ rV // (temporary) same as [r] + ऱ (B r + ्) ऱ (_ r@ .group ल - ल lV - ल (B l - ्) ल (_ l@ + ल lV + ल (B l + ्) ल (_ l@ .group ळ - ळ l.V - ळ (B l. - ्) ळ (_ l.@ + ळ l.V + ळ (B l. + ्) ळ (_ l.@ .group ऴ - ऴ l.V // (temporary) same as [l.] - ऴ (B l. - ्) ऴ (_ l.@ + ऴ l.V // (temporary) same as [l.] + ऴ (B l. + ्) ऴ (_ l.@ .group व - व vV - व (B v - _) व wV - _) व (B w - _) व (् v // +virma + व vV + व (B v + _) व wV + _) व (B w + _) व (् v // +virma .group श - श SV - श (B S + श SV + श (B S .group ष - ष s.V //?? or retroflex [S] - ष (B s. //?? + ष s.V //?? or retroflex [S] + ष (B s. //?? .group स - स sV - स (B s + स sV + स (B s .group ह - ह HV - ह (B H + ह H + ह (B H // nukta, modifies a consonant .group ऽ // avagraha, lengthens a vowel ?? - ऽ : + ऽ : .group ँ - ँ n // candrabindu + ँ n // candrabindu -.group ं - ं n // anusvara - ं (प m - ं (फ m - ं (ब m - ं (भ m - ं (म m +.group ं + ं n // anusvara + ं (प m + ं (फ m + ं (ब m + ं (भ m + ं (म m - ं (ट n. - ं (ठ n. - ं (ड n. - ं (ढ n. - ं (ण n. + ं (ट n. + ं (ठ n. + ं (ड n. + ं (ढ n. + ं (ण n. - ं (च n^ - ं (छ n^ - ं (ज n^ - ं (झ n^ - ं (ञ n^ - ं (य n^ + ं (च n^ + ं (छ n^ + ं (ज n^ + ं (झ n^ + ं (ञ n^ + ं (य n^ - ं (क N - ं (ख N - ं (ग N - ं (घ N - ं (ङ N - ं (ह N + ं (क N + ं (ख N + ं (ग N + ं (घ N + ं (ङ N + .group ः - ः H // visarga + ः H // visarga .group ् // virama - ् +् // Extra consonants .group क़ // qa - क़ qV - क़ (B q + क़ qV + क़ (B q .group ख़ // khha - ख़ xV - ख़ (B x + ख़ xV + ख़ (B x .group ग़ // ghha - ग़ QV - ग़ (B Q + ग़ QV + ग़ (B Q .group ज़ // za - ज़ zV - ज़ (B z + ज़ zV + ज़ (B z .group ड़ // dddha (should retroflex flap) - ड़ r.V - ड़ (B r. + ड़ r.V + ड़ (B r. .group ढ़ // rha (aspirated version of dddha) - ढ़ r.hV - ढ़ (B r.h + ढ़ r.hV + ढ़ (B r.h .group फ़ // fa - फ़ fV - फ़ (B f + फ़ fV + फ़ (B f .group य़ // yya - य़ jV - य़ (B j + य़ jV + य़ (B j .group ॠ // rr - ॠ V-rr + ॠ V-rr .group ॡ // ll - ॡ l-: // long syllabic l + ॡ l-: // long syllabic l // If we find a Latin letter a-z, then translate as English // (This is now done automatically by the eSpeak program) .group o - o _^_EN - D__) of (__D    me + o _^_EN + D__) of (__D    me .group - $ dOlV - % pVsEnt + $ dOlV + % pVsEnt diff --git a/dictsource/ml_list b/dictsource/ml_list index 76e8de39..da527242 100644 --- a/dictsource/ml_list +++ b/dictsource/ml_list @@ -87,33 +87,65 @@ _! a:S;c@rjacihn@m // numbers _0 p'u:Jj@m _1 'onny -_2 r'an.t.y -_3 m'unny +_2 r@n.d#y +_3 m'u:nny _4 n'a:ly _5 'an^cy -_6 'aR2y +_6 'a:R2y _7 'e:r.y _8 'et.t.y _9 'onpaty -_1X p'ati _10 p'atty +_1X p'ati + _11 p'atinonny _12 p'antran.t.y -_15 p'atinan^cy -_16 p'atinaR2y -_17 p'atine:R2y -_18 p'atine:t.t.y _19 p'attompatu -_2X 'irupat -_3X m'uppat -_4X n'a:lppat -_5X 'anpat -_6X 'aR2upat -_7X 'er.upat -_8X 'en.pat -_9X t'on.n.u:R2 +_20 'irup'aty +_2X 'irupatti +_30 m'uppaty +_3X m'uppatti': +_40 n'a:lppaty +_4X n'a:lppatti +_50 'anpaty +_5X 'anpatti +_60 'aR2upaty +_6X 'aR2upatti +_70 'er.'upaty +_7X 'er.'upatti +_80 'en.paty +_8X 'en.patti +_90 t'on.n.u:r: +_9X t'on.n.u:t.t.i + _0C n'u:R -_0M1 'a:jiRam -_0M2 l'aks.am +_1C0 n'u:r: +_1C n'u:t.t.i +_2C0 irunn'u:r +_2C irunn'u:t.t.i +_3C0 munn'u:r +_3C munn'u:t.t.i +_4C0 na:nnu:r +_4C na:nnu:t.t.i +_5C0 'an^cu:r +_5C 'an^cu:t.t.i +_6C0 aR2unu:r +_6C aR2unu:t.t.i +_7C0 'er.'unu:r +_7C 'er.'unu:t.t.i +_8C0 'en.n.u:r +_8C 'en.n.u:t.t.i +_9C0 tol.l.'a:jiRam +_9C tol.l.'a:jiRatti + +_0M1x 'a:jiRam +_0M1 'a:jiRat.t.i +_0M2x l'aks.am +_0M2 l'aks.at.t.i _0M3 k'o:t.i + _dpt _d'aS;a:mS;@m_ + + + + diff --git a/dictsource/ml_rules b/dictsource/ml_rules index c07810dd..ef9e9d87 100644 --- a/dictsource/ml_rules +++ b/dictsource/ml_rules @@ -1,5 +1,5 @@ -// This file is UTF8 encoded +// This file is UTF8 encoded // Spelling to phoneme rules for Malayalam // A means vowel letters (not vowel signs) @@ -17,266 +17,267 @@ ൭ 7 ൮ 8 ൯ 9 -ോ ോ +ോ ോ ൊ ൊ ൌ ൌ .group ക - ക ka - ക (B k + ക ka + ക (B k .group ഖ - ഖ kha - ഖ (B kh + ഖ kha + ഖ (B kh .group ഗ - ഗ ga - ഗ (B g + ഗ ga + ഗ (B g .group ഘ - ഘ gha - ഘ (B gh + ഘ gha + ഘ (B gh .group ങ - ങ Na - ങ (B N + ങ Na + ങ (B N .group ച - ച ca - ച (B c + ച ca + ച (B c .group ഛ - ഛ cha - ഛ (B ch + ഛ cha + ഛ (B ch .group ജ - ജ Ja - ജ (B J + ജ Ja + ജ (B J .group ഝ - ഝ Jha - ഝ (B Jh + ഝ Jha + ഝ (B Jh .group ഞ - ഞ n^a - ഞ (B n^ + ഞ n^a + ഞ (B n^ .group ട - ട t.a - ട (B t. + ട t.a + ട (B t. .group ഠ - ഠ th.a - ഠ (B th. + ഠ th.a + ഠ (B th. .group ഡ - ഡ d.a - ഡ (B d. + ഡ d.a + ഡ (B d. .group ഢ - ഢ dh.a - ഢ (B dh. + ഢ dh.a + ഢ (B dh. .group ണ - ണ n.a - ണ (B n. + ണ n.a + ണ (B n. .group ത - ത ta - ത (B t + ത ta + ത (B t .group ഥ - ഥ tha - ഥ (B th + ഥ tha + ഥ (B th .group ദ - ദ da - ദ (B d + ദ da + ദ (B d .group ധ - ധ dha - ധ (B dh + ധ dha + ധ (B dh .group ന - ന na - ന (B n + ന na + ന (B n .group പ - പ pa - പ (B p + പ pa + പ (B p .group ഫ - ഫ pha - ഫ (B p + ഫ pha + ഫ (B p -_പ്രൊ) ഫ (സര് fa + _പ്രൊ) ഫ (സര് fa .group ബ - ബ ba - ബ (B b + ബ ba + ബ (B b .group ഭ - ഭ bha - ഭ (B bh + ഭ bha + ഭ (B bh .group മ - മ ma - മ (B m + മ ma + മ (B m .group യ - യ ja - യ (B j + യ ja + യ (B j .group ര - ര ra - ര (B r + ര ra + ര (B r .group റ - റ R2a - റ (B R2 - ന്) റ d# - റ്റ t.t. // ?? R2R2 = t.t. + റ R2a + റ (B R2 + ന്) റ d# + റ്റ t.t. // ?? R2R2 = t.t. .group ല - ല la - ല (B l + ല la + ല (B l .group ള - ള l.a - ള (B l. + ള l.a + ള (B l. .group ഴ // retroflex [r.] ? - ഴ r.a - ഴ (B r. + ഴ r.a + ഴ (B r. .group വ - വ va - വ (B v + വ va + വ (B v .group ശ - ശ S;a - ശ (B S; + ശ S;a + ശ (B S; .group ഷ - ഷ s.a - ഷ (B s. + ഷ s.a + ഷ (B s. .group സ - സ sa - സ (B s + സ sa + സ (B s .group ഹ - ഹ ha - ഹ (B h + ഹ ha + ഹ (B h // chillu consonants .group ൺ - ൺ n. + ൺ n. .group ൻ - ൻ n + ൻ n .group ർ - ർ r + ർ r .group ൽ - ൽ l + ൽ l .group ൾ - ൾ l. + ൾ l. .group ൿ - ൿ k + ൿ k .group 0xe0b4 // characters which start with UTF-8 bytes: [e0 b4] - ഽ // avagraha + ഽ // avagraha - ം m // anusvara (this should nasalize the vowel) + ം m // anusvara (this should nasalize the vowel) - ഃ h // visarga + ഃ h // visarga - അ a + അ a - ആ a: + ആ a: - ഇ i + ഇ i - ഈ i: + ഈ i: - ഉ u + ഉ u - ഊ u: + ഊ u: - ഋ Ry + ഋ Ry - എ e - _) എ ;e + എ e + _) എ ;e - ഏ e: - _) ഏ ;e: + ഏ e: + _) ഏ ;e: - ഐ aI + ഐ aI - ഒ o + ഒ o - ഓ o: + ഓ o: - ഔ aU + ഔ aU // combining vowel signs - ാ a: + ാ a: - ി i - ി (ല്K I + ി i + ി (ല്K I .group 0xe0b5 // characters which start with UTF-8 bytes: [e0 b5] - ീ i: + ീ i: - ു u + ു u - ൂ u: + ൂ u: - ൃ r- + ൃ r- - ൄ r-: + ൄ r-: - െ e + െ e - േ e: + േ e: - ൈ aI + ൈ aI - ൊ o + ൊ o - ോ o: + ോ o: - ൌ aU - ൗ aU // au length mark, treat at [aU] ? + ൌ aU + ൗ aU // au length mark, treat at [aU] ? - ് // virama - ൎ // chillu-virama (unofficial) - ്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character - ് (_ y // epenthetic vowel at end of word + ് // virama + ൎ // chillu-virama (unofficial) + ്് // espeak uses double-virama for "virama + U+200d" (zero-width joiner), to indicate a chillu character + ് (_ y // epenthetic vowel at end of word - ൠ Ry: + ൠ Ry: - ൡ ly: + ൡ ly: .group 0xe0a4 // devanagari - 0xe0a4 _^_HI // switch to hindi voice + 0xe0a4 _^_HI // switch to hindi voice + .group 0xe0a5 // devanagari - 0xe0a5 _^_HI + 0xe0a5 _^_HI .group - $ do:l.ar + $ do:l.ar diff --git a/dictsource/pt_list b/dictsource/pt_list index 3f55eae9..36e7edf6 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -647,6 +647,7 @@ almoço $alt $verb amarelo $alt ameba $alt amores $alt2 +antonieta $alt2 apego $alt2 $noun apelo $alt $verb aposto $alt $verb @@ -723,7 +724,7 @@ coice $alt2 colabore $alt colete $alt2 colchete $alt2 -colher $alt $verb +colher $alt $noun colheres $alt $noun colmeia $alt colore $alt @@ -762,8 +763,6 @@ descordo $alt desespero $alt2 $noun desfecho $alt2 desprezo $alt $verb -deva $alt2 -devo $alt2 deveras $alt dez $alt diarreia $alt @@ -839,6 +838,8 @@ fogos $alt foguete $alt2 foice $alt2 forca $alt2 +força $alt2 $noun +forço $alt forças $alt2 fordes $alt2 fores $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 5a5a3600..e1a5a932 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -407,6 +407,7 @@ respond) e (L07_ e // cor- viv) e (L07_ e // re- qu) e (brL04_ E _hosp) e (dL03_ E + _d) e (vL03_ e _gr) e (gL03_ e _n) e (grL03_ e _estr) ei (L03_ EI diff --git a/phsource/compile_report b/phsource/compile_report index 69fdc75a..47626176 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -87 phoneme tables +88 phoneme tables new total base 109 109 consonants 10 118 @@ -22,10 +22,12 @@ consonants 10 118 fr 64 146 fr-ca 11 146 hi 57 150 + bn 5 150 + ne 18 158 + ur 6 150 ta 23 154 kn 17 150 - ml 21 153 - ur 6 150 + ml 22 154 hu 25 124 lt 44 139 lv 29 127 @@ -65,7 +67,6 @@ consonants 10 118 da 36 131 ka 20 114 rw 15 132 - ne 18 158 pa 15 152 prs 8 113 sl 10 137 @@ -432,7 +433,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h6r] base +l/l@ [] base [l#] base [l] fr [l/2] fr @@ -466,7 +467,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h6r] base +l/la [] base [l#] base [l] fr [l/2] fr @@ -474,7 +475,7 @@ l/la [h6r] base [K] tn l/l_a [l/3] base [l/] fr -l/le [h6r] base +l/le [] base [l#] base [l] fr [l/2] fr @@ -486,7 +487,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h6r] base +l/li [] base [l#] base [l] fr [l/2] fr @@ -500,7 +501,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [h6r] base +l/lo [] base [l#] base [l/2] fr [K] nso @@ -511,7 +512,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [h6r] base +l/lu [] base [l#] base [l] fr [l/2] fr @@ -673,7 +674,6 @@ r3/r_trill [R2] base [R] pl [r*] sr [r] ru - [x] pt [r] tn r3/r_trill2 [R] base [r] cy @@ -690,7 +690,6 @@ r3/r_trill.wav [R2] base [R] pl [r*] sr [r] ru - [x] pt r3/r_uvl [r"] base [r2] de r3/r_uvl.wav [r"] base @@ -854,7 +853,8 @@ ustop/k_asp [kh] consonants [gh] hi [kh] zh [kh] tn -ustop/k_asp2 [k#] ka +ustop/k_asp2 [kh2] ml + [k#] ka ustop/k_ejc [k`] am ustop/ki [k] base [k] base2 @@ -873,6 +873,7 @@ ustop/kl [k] base [k] base2 [k] et [k] fr + [kh2] ml [k] lv [k] el [k] zhy @@ -1124,11 +1125,11 @@ vdiph2/y-y# [yY] fi vdiph/8u [oU] en-us [ou] zh vdiph/aae [aI] en-us -vdiph/aai [ai] lt +vdiph/aai [aI] ne + [ai] lt [ai] lv [aai] zhy [aI] sq - [aI] ne vdiph/aai_2 [AI] af [AY] cy vdiph/aai_3 [ai] fi @@ -1144,9 +1145,9 @@ vdiph/aau_2 [aU] en-wi [aU] la [aau] zhy vdiph/aau_3 [aU] hi + [aU] ne [aU] kn [aU] ml - [aU] ne [aU] te vdiph/aau_4 [aU] vi vdiph/aau_6 [aU] de @@ -1206,10 +1207,10 @@ vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en [EI] de + [eI] ne [EI] nl [EI] vi [eI] hy - [eI] ne [eI] prs vdiph/eei_2 [eI] eo [ei] fi @@ -1244,12 +1245,12 @@ vdiph/ei [eI] base2 vdiph/eu [eU] base2 [eU] cy [eU] eo + [eU] ne [eU] lt [eU] nl [eU] sk [eU] pt [eU] vi - [eU] ne vdiph/eu_2 [eu] fi [eu] mt vdiph/@i [Yi] et @@ -1274,11 +1275,11 @@ vdiph/i#i [yI] ro vdiph/oi [oI] base2 [OI] en-wm [OY] de + [oI] ne [oI] it [OI] la [OI] is [oI] vi - [oI] ne vdiph/oi_2 [oI] af vdiph/ooi [OI] en [OI] en-n @@ -1299,8 +1300,8 @@ vdiph/ooi_4 [OI] en-us vdiph/oou [oU] cs [OU] grc vdiph/ou [ou] fi - [ou] zhy [oU] ne + [ou] zhy [ou] mt vdiph/ou_2 [oU] lt [oU] sk @@ -1319,11 +1320,11 @@ vdiph/@u_en [oU] en [@U] id vdiph/ui [uI] base2 [uI] eo + [uI] ne [ui] lt [ui] lv [uI] vi [ui] zhy - [uI] ne vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy @@ -1535,9 +1536,9 @@ vowel/@_3 [@#] en [@2] en-sc [@5] en-sc [@3] hi + [@3] ne [@3] ur [@] da - [@3] ne [@] am vowel/3_2 [3:] en-n [@] zh @@ -1723,17 +1724,19 @@ vowel/aa_8 [0] en-us vowel/aa_9 [a] fi [a] et [a:] hi + [a:] bn [a] ne [a] pa [a] ak [a] mt [A] kk vowel/@_bck [@] hi + [@] bn + [V] ne + [@/] ne [@] ur [@] bg [@] zh - [V] ne - [@/] ne [@] pa vowel/e [e] base [e] base2 @@ -1744,6 +1747,7 @@ vowel/e [e] base [eI] en-wi [e:] af [e:] cy + [e] ne [e] ta [e:] ta [e] kn @@ -1764,7 +1768,6 @@ vowel/e [e] base [?e] da [e] rw [e#] rw - [e] ne [e] wo [e:] wo [e] dv @@ -1918,6 +1921,7 @@ vowel/i [i] base [i] en-wi [i:] cy [i] eo + [i] ne [i:] ta [i:] kn [i:] ml @@ -1935,7 +1939,6 @@ vowel/i [i] base [i] ka [i] rw [i#] rw - [i] ne [i] prs [i] nso [i] ak @@ -2074,14 +2077,15 @@ vowel/@_low [@] en-rp [@] hi [V] hi [@2] hi - [@] ml + [@] bn + [V] ne + [@/] ne [@] ur [@2] ur + [@] ml [@] ro [a#] no [@] id - [V] ne - [@/] ne [@] pa [V] pa [@] si @@ -2123,6 +2127,7 @@ vowel/o [o] base2 [o] kl vowel/o_2 [o:] cy [o:] hi + [o:] bn [o:] hu [o:] la [o:] no @@ -2155,10 +2160,10 @@ vowel/oe_4 [W] sv vowel/o_mid [U@] en-rp [o] et [O] fr + [o] ne [o] hu [o] bg [o] tr - [o] ne [o] az [o] dv [o:] dv @@ -2313,6 +2318,7 @@ vowel/u_bck [u] base2 [u] fi [u] fr-ca [u:] hi + [u] ne [u:] hu [u:] lt [u] nl @@ -2337,7 +2343,6 @@ vowel/u_bck [u] base2 [u] ka [u] rw [u#] rw - [u] ne [u] pa [u] mt [u:] ga diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 84a70594..0ca2925c 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -136,7 +136,7 @@ endphoneme phoneme a: vowel long starttype #a endtype #a - length 230 + length 190 FMT(vowel/aa_9) endphoneme @@ -149,7 +149,7 @@ endphoneme phoneme o: vowel long starttype #o endtype #o - length 220 + length 227 FMT(vowel/o_2) endphoneme diff --git a/phsource/ph_malayalam b/phsource/ph_malayalam index e81a6f1c..562f8f13 100644 --- a/phsource/ph_malayalam +++ b/phsource/ph_malayalam @@ -132,7 +132,7 @@ phoneme v endphoneme phoneme r - import_phoneme base/* + import_phoneme base/** endphoneme phoneme R @@ -142,3 +142,20 @@ endphoneme phoneme d# // 'rr' sounds like English 'd' import_phoneme base/d endphoneme + + +phoneme kh2 + vls vel stop + lengthmod 2 + voicingswitch g + Vowelin f1=0 f2=2300 200 300 f3=-150 80 + Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 + IF nextPh(isPause2) THEN + WAV(ustop/k_asp2, 50) + ENDIF + IF nextPh(l) THEN + WAV(ustop/kl) + ENDIF + WAV(ustop/k_asp2, 90) +endphoneme + diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index c39d76e3..1803f379 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -189,18 +189,8 @@ phoneme l endphoneme -phoneme x // this is [R] from Slovak/Czech - liquid - trill - ipa ʁ - lengthmod 6 - IF thisPh(isWordStart) THEN - ChangePhoneme(h) // Change by Cleverson 22.09.2012 - ENDIF - - Vowelin f1=0 f2=1700 -300 300 f3=-300 80 - Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk - FMT(r3/r_trill) addWav(r3/r_trill.wav, 50) +phoneme x // (previously [R] from Slovak/Czech) + import_phoneme base/h endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 5f0f61e2..cfc8da01 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1718,6 +1718,15 @@ include ph_french_ca phonemetable hi base include ph_hindi +phonemetable bn hi +include ph_bengali + +phonemetable ne hi +include ph_nepali + +phonemetable ur hi +include ph_urdu + phonemetable ta hi include ph_tamil @@ -1727,9 +1736,6 @@ include ph_kannada phonemetable ml hi include ph_malayalam -phonemetable ur hi -include ph_urdu - phonemetable hu base include ph_hungarian @@ -1857,12 +1863,6 @@ include ph_georgian phonemetable rw base2 include ph_kinyarwanda -//phonemetable bn hi -//include ph_bengali - -phonemetable ne hi -include ph_nepali - //phonemetable mr hi //include ph_marathi diff --git a/src/compiledict.cpp b/src/compiledict.cpp index c8c4f5ef..bb4f7860 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -51,15 +51,21 @@ static char letterGroupsDefined[N_LETTER_GROUPS]; MNEM_TAB mnem_rules[] = { {"unpr", 0x01}, + {"w_alt1", 0x11}, {"w_alt2", 0x12}, {"w_alt3", 0x13}, -// {"w_alt4", 0x14}, + {"w_alt4", 0x14}, + {"w_alt5", 0x15}, + {"w_alt6", 0x16}, {"w_alt", 0x11}, // note: put longer names before their sub-strings + {"p_alt1", 0x21}, {"p_alt2", 0x22}, {"p_alt3", 0x23}, -// {"p_alt4", 0x24}, + {"p_alt4", 0x24}, + {"p_alt5", 0x25}, + {"p_alt6", 0x26}, {"p_alt", 0x21}, {NULL, -1} }; @@ -83,24 +89,22 @@ MNEM_TAB mnem_flags[] = { // these set the corresponding numbered bit if dictionary_flags - {"$pause", 8}, /* ensure pause before this word */ - {"$only", 9}, /* only match on this word without suffix */ - {"$onlys", 10}, /* only match with none, or with 's' suffix */ - {"$strend", 11}, /* full stress if at end of clause */ - {"$strend2", 12}, /* full stress if at end of clause, or only followed by unstressed */ - {"$unstressend",13}, /* reduce stress at end of clause */ - {"$atend", 14}, /* use this pronunciation if at end of clause */ - {"$atstart", 15}, // use this pronunciation at start of clause - - {"$abbrev", 17}, /* use this pronuciation rather than split into letters */ - {"$stem", 18}, // must have a suffix + {"$pause", 8}, // ensure pause before this word + {"$strend", 9}, // full stress if at end of clause + {"$strend2", 10}, // full stress if at end of clause, or only followed by unstressed + {"$unstressend",11}, // reduce stress at end of clause + {"$abbrev", 13}, // use this pronuciation rather than split into letters // language specific - {"$double", 19}, // IT double the initial consonant of next word - {"$alt", 20}, // use alternative pronunciation - {"$alt1", 20}, // synonym for $alt - {"$alt2", 21}, - {"$alt3", 22}, + {"$double", 14}, // IT double the initial consonant of next word + {"$alt", 15}, // use alternative pronunciation + {"$alt1", 15}, // synonym for $alt + {"$alt2", 16}, + {"$alt3", 17}, + {"$alt4", 18}, + {"$alt5", 19}, + {"$alt6", 20}, + {"$combine", 23}, // Combine with the next word {"$dot", 24}, // ignore '.' after this word (abbreviation) @@ -111,18 +115,23 @@ MNEM_TAB mnem_flags[] = { {"$text", 29}, // word translates to replcement text, not phonemes // flags in dictionary word 2 - {"$verbf", 0x20}, /* verb follows */ - {"$verbsf", 0x21}, /* verb follows, allow -s suffix */ - {"$nounf", 0x22}, /* noun follows */ - {"$pastf", 0x23}, /* past tense follows */ - {"$verb", 0x24}, /* use this pronunciation when its a verb */ - {"$noun", 0x25}, /* use this pronunciation when its a noun */ - {"$past", 0x26}, /* use this pronunciation when its past tense */ - {"$verbextend",0x28}, /* extend influence of 'verb follows' */ - {"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */ - {"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */ + {"$verbf", 0x20}, // verb follows + {"$verbsf", 0x21}, // verb follows, allow -s suffix + {"$nounf", 0x22}, // noun follows + {"$pastf", 0x23}, // past tense follows + {"$verb", 0x24}, // use this pronunciation when its a verb + {"$noun", 0x25}, // use this pronunciation when its a noun + {"$past", 0x26}, // use this pronunciation when its past tense + {"$verbextend",0x28}, // extend influence of 'verb follows' + {"$capital", 0x29}, // use this pronunciation if initial letter is upper case + {"$allcaps", 0x2a}, // use this pronunciation if initial letter is upper case {"$accent", 0x2b}, // character name is base-character name + accent name {"$sentence",0x2d}, // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :} + {"$only", 0x2e}, // only match on this word without suffix + {"$onlys", 0x2f}, // only match with none, or with 's' suffix + {"$stem", 0x30}, // must have a suffix + {"$atend", 0x31}, // use this pronunciation if at end of clause + {"$atstart", 0x32}, // use this pronunciation at start of clause // doesn't set dictionary_flags {"$?", 100}, // conditional rule, followed by byte giving the condition number @@ -611,7 +620,7 @@ static char nullstring[] = {0}; // PROBLEM vowel reductions are not applied to the translated phonemes // condition rules are not applied - TranslateWord(translator,phonetic,0,NULL); + TranslateWord(translator,phonetic,0,NULL,NULL); text_not_phonemes = 0; strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 4ed621f6..2c9ffcd7 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -3012,10 +3012,10 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor int no_phonemes; int skipwords; int ix; + int c; const char *word_end; const char *word1; int wflags = 0; -// int wflags2; char word_buf[N_WORD_BYTES+1]; if(wtab != NULL) @@ -3165,20 +3165,20 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if((end_flags & FLAG_SUFX)==0) { // no suffix has been removed - if(dictionary_flags & FLAG_STEM) + if(dictionary_flags2 & FLAG_STEM) continue; // this word must have a suffix } - if((end_flags & SUFX_P) && (dictionary_flags & (FLAG_ONLY | FLAG_ONLY_S))) + if((end_flags & SUFX_P) && (dictionary_flags2 & (FLAG_ONLY | FLAG_ONLY_S))) continue; // $only or $onlys, don't match if a prefix has been removed if(end_flags & FLAG_SUFX) { // a suffix was removed from the word - if(dictionary_flags & FLAG_ONLY) + if(dictionary_flags2 & FLAG_ONLY) continue; // no match if any suffix - if((dictionary_flags & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0)) + if((dictionary_flags2 & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0)) { // only a 's' suffix allowed, but the suffix wasn't 's' continue; @@ -3212,13 +3212,13 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor continue; } - if((dictionary_flags & FLAG_ATEND) && (word_end < tr->clause_end)) + if((dictionary_flags2 & FLAG_ATEND) && (word_end < tr->clause_end)) { // only use this pronunciation if it's the last word of the clause continue; } - if((dictionary_flags & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD)) + if((dictionary_flags2 & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD)) { // only use this pronunciation if it's the first word of a clause continue; @@ -3318,6 +3318,12 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags)); } } + + ix = utf8_in(&c, word); + if((word[ix] == 0) && !IsAlpha(c)) + { + flags[0] |= FLAG_MAX3; + } return(word_end); } @@ -3390,6 +3396,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab); + if(flags[0] & FLAG_MAX3) { if(strcmp(ph_out, tr->phonemes_repeat) == 0) diff --git a/src/extras.cpp b/src/extras.cpp index a04e4704..7fb5c348 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -464,7 +464,7 @@ void Lexicon_It(int pass) } // translate - TranslateWord(translator,&word1[1],0, NULL); + TranslateWord(translator,&word1[1],0, NULL, NULL); DecodePhonemes(word_phonemes,phonemes); stress_posn1 = 0; @@ -487,7 +487,7 @@ void Lexicon_It(int pass) vowel_ix++; } - TranslateWord(translator,&word2[1],0, NULL); + TranslateWord(translator,&word2[1],0, NULL, NULL); DecodePhonemes(word_phonemes,phonemes2); vowel_ix = 1; @@ -802,7 +802,7 @@ void Lexicon_De() } // translate - TranslateWord(translator,&word2[1],0, NULL); + TranslateWord(translator,&word2[1],0, NULL, NULL); DecodePhonemes2(word_phonemes,phonemes); // also need to change some phoneme names @@ -1042,7 +1042,7 @@ void Lexicon_Bg() *pw1 = 0; // translate - TranslateWord(translator, &word[2],0, NULL); + TranslateWord(translator, &word[2],0, NULL, NULL); DecodePhonemes(word_phonemes,phonemes); // find the stress position in the translation @@ -1300,7 +1300,7 @@ void Lexicon_Ru() } // translate - TranslateWord(translator, &word2[1],0, NULL); + TranslateWord(translator, &word2[1],0, NULL, NULL); DecodePhonemes(word_phonemes,phonemes); // find the stress position in the translation diff --git a/src/menus.cpp b/src/menus.cpp index 917f4899..52ac13ab 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -89,10 +89,10 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) // DATA MENU data_menu = new wxMenu; - data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); - data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate")); data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); + data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); + data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate")); data_menu->AppendSeparator(); data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); diff --git a/src/numbers.cpp b/src/numbers.cpp index 838fc145..4cc9add3 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -656,20 +656,32 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) current_alphabet = alphabet; if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME)) { + phontab_1 = tr->phoneme_tab_ix; + ph_buf2[0] = 0; if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice { // Can't find the local name for this alphabet, use the English name - phontab_1 = tr->phoneme_tab_ix; ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 - if(Lookup(translator2, alphabet->name, &ph_alphabet[3]) != 0) - { - ph_alphabet[0] = phonPAUSE; - ph_alphabet[1] = phonSWITCH; - len = strlen(&ph_alphabet[3]) + 3; - ph_alphabet[len] = phonSWITCH; // switch back - ph_alphabet[len+1] = phontab_1; - ph_alphabet[len+2] = 0; - } + Lookup(translator2, alphabet->name, ph_buf2); + } + else + if(translator != tr) + { + phontab_1 = tr->phoneme_tab_ix; + strcpy(ph_buf2, ph_alphabet); + ph_alphabet[2] = translator->phoneme_tab_ix; + } + + if(ph_buf2[0] != 0) + { + // we used a different language for the alphabet name (now in ph_buf2) + ph_alphabet[0] = phonPAUSE; + ph_alphabet[1] = phonSWITCH; + strcpy(&ph_alphabet[3], ph_buf2); + len = strlen(ph_buf2) + 3; + ph_alphabet[len] = phonSWITCH; + ph_alphabet[len+1] = phontab_1; + ph_alphabet[len+2] = 0; } } } @@ -876,7 +888,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB nextflags = 0; if(IsAlpha(c2)) { - nextflags = TranslateWord(tr, &word_end[2], 0, NULL); + nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL); } if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) diff --git a/src/synthdata.cpp b/src/synthdata.cpp index eed59bf4..55f6bff4 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.38 27.Feb.13"; -const int version_phdata = 0x014636; +const char *version_string = "1.46.39 01.Mar.13"; +const int version_phdata = 0x014639; int option_device_number = -1; FILE *f_logespeak = NULL; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index db1766b8..d903b139 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -808,6 +808,13 @@ Translator *SelectTranslator(const char *name) } break; + case L('g','a'): // irish + { + tr->langopts.stress_rule = STRESSPOSN_1L; + tr->langopts.numbers = 1; + } + break; + case L('h','i'): // Hindi case L('n','e'): // Nepali case L('p','a'): // Punjabi diff --git a/src/translate.cpp b/src/translate.cpp index 233a1c40..9917f04a 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -807,8 +807,8 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) -int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab) -{//=========================================================================== +int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab, char *word_out) +{//================================================================================================== // word1 is terminated by space (0x20) character char *word1; @@ -943,6 +943,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt if(dictionary_flags[0] & FLAG_TEXTMODE) { + if(word_out != NULL) + strcpy(word_out, word1); + first_char = word1[0]; stress_bits = dictionary_flags[0] & 0x7f; found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement @@ -1760,6 +1763,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa int word_flags; int word_copy_len; char word_copy[N_WORD_BYTES+1]; + char word_replaced[N_WORD_BYTES+1]; char old_dictionary_name[40]; if((f_logespeak != NULL) && (logging_type & 8)) @@ -1871,7 +1875,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++; word_copy_len = ix; - flags = TranslateWord(translator, word, next_pause, wtab); + word_replaced[2] = 0; + flags = TranslateWord(translator, word, next_pause, wtab, &word_replaced[2]); if(flags & FLAG_SPELLWORD) { @@ -1906,7 +1911,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa { strcpy(ph_buf,word_phonemes); - flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1); + flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1, NULL); if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH)) ok = 0; @@ -1934,12 +1939,12 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if(ok) { *p2 = '-'; // replace next space by hyphen - flags = TranslateWord(translator, word, next_pause, wtab); // translate the combined word + flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) { // revert to separate words *p2 = ' '; - flags = TranslateWord(translator, word, next_pause, wtab); + flags = TranslateWord(translator, word, next_pause, wtab, NULL); } else { @@ -1967,7 +1972,14 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa { // re-translate the word using the new translator wtab[0].flags |= FLAG_TRANSLATOR2; - flags = TranslateWord(translator2, word, next_pause, wtab); + if(word_replaced[2] != 0) + { + word_replaced[0] = 0; // byte before the start of the word + word_replaced[1] = ' '; + flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL); + } + else + flags = TranslateWord(translator2, word, next_pause, wtab, NULL); // strcpy((char *)p,translator2->word_phonemes); if(p[0] == phonSWITCH) { diff --git a/src/translate.h b/src/translate.h index 9248d09e..2d7c5aa2 100644 --- a/src/translate.h +++ b/src/translate.h @@ -37,26 +37,18 @@ #define FLAG_SKIPWORDS 0x80 #define FLAG_PREPAUSE 0x100 -#define FLAG_ONLY 0x200 -#define FLAG_ONLY_S 0x400 -#define BITNUM_FLAG_ONLY 9 // bit 9 is set -#define BITNUM_FLAG_ONLY_S 10 // bit 10 is set +#define FLAG_STRESS_END 0x200 // full stress if at end of clause +#define FLAG_STRESS_END2 0x400 // full stress if at end of clause, or only followed by unstressed +#define FLAG_UNSTRESS_END 0x800 // reduce stress at end of clause +#define FLAG_SPELLWORD 0x1000 // re-translate the word as individual letters, separated by spaces +#define FLAG_ABBREV 0x2000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters +#define FLAG_DOUBLING 0x4000 // doubles the following consonant -#define FLAG_STRESS_END 0x800 /* full stress if at end of clause */ -#define FLAG_STRESS_END2 0x1000 /* full stress if at end of clause, or only followed by unstressed */ -#define FLAG_UNSTRESS_END 0x2000 /* reduce stress at end of clause */ -#define FLAG_ATEND 0x4000 /* use this pronunciation if at end of clause */ -#define FLAG_ATSTART 0x8000 // use this pronunciation if at start of clause -#define FLAG_SPELLWORD 0x10000 // re-translate the word as individual letters, separated by spaces -#define FLAG_ABBREV 0x20000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters -#define FLAG_STEM 0x40000 // must have a suffix - -#define FLAG_DOUBLING 0x80000 // doubles the following consonant -#define BITNUM_FLAG_ALT 19 // bit number of FLAG_ALT_TRANS - 1 -#define FLAG_ALT_TRANS 0x100000 // language specific -#define FLAG_ALT2_TRANS 0x200000 // language specific -#define FLAG_ALT3_TRANS 0x400000 // language specific -#define FLAG_COMBINE 0x800000 // combine with the next word +#define BITNUM_FLAG_ALT 14 // bit number of FLAG_ALT_TRANS - 1 +#define FLAG_ALT_TRANS 0x8000 // language specific +#define FLAG_ALT2_TRANS 0x10000 // language specific +#define FLAG_ALT3_TRANS 0x20000 // language specific +#define FLAG_COMBINE 0x40000 // combine with the next word #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot @@ -83,8 +75,16 @@ #define FLAG_ACCENT 0x800 // character name is base-character name + accent name #define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2 #define FLAG_SENTENCE 0x2000 // only if the clause is a sentence +#define FLAG_ONLY 0x4000 +#define FLAG_ONLY_S 0x8000 +#define FLAG_STEM 0x10000 // must have a suffix +#define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ +#define FLAG_ATSTART 0x30000 // use this pronunciation if at start of clause + #define BITNUM_FLAG_ALLCAPS 0x2a #define BITNUM_FLAG_HYPHENATED 0x2c +#define BITNUM_FLAG_ONLY 0x2e +#define BITNUM_FLAG_ONLY_S 0x2f // wordflags, flags in source word @@ -714,7 +714,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); int Unpronouncable(Translator *tr, char *word, int posn); void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress); int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); -int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); +int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab, char *word_out); void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change); int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change); diff --git a/src/voices.cpp b/src/voices.cpp index f2947faf..68dcc5c7 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -798,14 +798,25 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_DICTRULES: // conditional dictionary rules and list entries + case V_NUMBERS: + // expect a list of numbers while(*p != 0) { while(isspace(*p)) p++; n = -1; - if(((n = atoi(p)) > 0) && (n < 32)) + if((n = atoi(p)) > 0) { p++; - conditional_rules |= (1 << n); + if((key==V_DICTRULES) && (n < 32)) + conditional_rules |= (1 << n); + else + if((key==V_NUMBERS) && (n < 32)) + langopts->numbers |= (1 << n); + else + if((key==V_NUMBERS) && (n < 64)) + langopts->numbers |= (1 << (n-32)); + else + fprintf(stderr,"Bad option number %d\n", n); } while(isalnum(*p)) p++; } @@ -837,10 +848,6 @@ voice_t *LoadVoice(const char *vname, int control) new_translator->charset_a0 = charsets[value]; break; - case V_NUMBERS: - sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2); - break; - case V_OPTION: value2 = 0; if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0)) diff --git a/src/wave_sada.cpp b/src/wave_sada.cpp index 54295822..f44c30fd 100644 --- a/src/wave_sada.cpp +++ b/src/wave_sada.cpp @@ -535,7 +535,7 @@ int wave_get_remaining_time(uint32_t sample, uint32_t* time) #else // notdef USE_SADA -void wave_init() {} +init wave_init() {} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} From c229b34ae22a24b73bd66a9d395d3838938504bc Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Mar 2013 17:08:18 +0000 Subject: [PATCH 02/24] 1.46.39 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/bn_list | 278 ++++++++++++++++++++ dictsource/bn_rules | 316 +++++++++++++++++++++++ dictsource/pa_list | 107 ++++---- dictsource/ur_list | 5 + dictsource/ur_rules | 7 +- espeak-data/voices/{test => asia}/fa | 0 espeak-data/voices/{test => asia}/fa-pin | 0 espeak-data/voices/{ => asia}/hi | 0 espeak-data/voices/{ => asia}/hy | 0 espeak-data/voices/{ => asia}/hy-west | 0 espeak-data/voices/{ => asia}/id | 2 +- espeak-data/voices/asia/ka | 2 + espeak-data/voices/{ => asia}/kn | 0 espeak-data/voices/{ => asia}/ku | 0 espeak-data/voices/{ => asia}/ml | 0 espeak-data/voices/{test => asia}/ne | 2 +- espeak-data/voices/{ => asia}/ta | 0 espeak-data/voices/{ => asia}/tr | 0 espeak-data/voices/{ => asia}/vi | 0 espeak-data/voices/{ => asia}/vi-hue | 0 espeak-data/voices/{ => asia}/zh | 0 espeak-data/voices/{ => asia}/zh-yue | 0 espeak-data/voices/{en => }/en | 0 espeak-data/voices/{en => }/en-us | 0 espeak-data/voices/{ => europe}/bg | 2 +- espeak-data/voices/{ => europe}/bs | 0 espeak-data/voices/{ => europe}/ca | 0 espeak-data/voices/{ => europe}/cs | 0 espeak-data/voices/{ => europe}/cy | 2 +- espeak-data/voices/{ => europe}/da | 0 espeak-data/voices/{ => europe}/el | 0 espeak-data/voices/{ => europe}/es | 0 espeak-data/voices/{ => europe}/et | 0 espeak-data/voices/{ => europe}/fi | 0 espeak-data/voices/{ => europe}/fr-be | 0 espeak-data/voices/{ => europe}/hr | 0 espeak-data/voices/{ => europe}/hu | 0 espeak-data/voices/{ => europe}/is | 2 +- espeak-data/voices/{ => europe}/it | 0 espeak-data/voices/{ => europe}/lv | 0 espeak-data/voices/{ => europe}/mk | 2 +- espeak-data/voices/{ => europe}/nl | 0 espeak-data/voices/{ => europe}/no | 0 espeak-data/voices/{ => europe}/pl | 0 espeak-data/voices/{ => europe}/pt-pt | 0 espeak-data/voices/{ => europe}/ro | 0 espeak-data/voices/{ => europe}/ru | 2 +- espeak-data/voices/{ => europe}/sk | 0 espeak-data/voices/{ => europe}/sq | 0 espeak-data/voices/{ => europe}/sr | 0 espeak-data/voices/{ => europe}/sv | 0 espeak-data/voices/ka | 2 - espeak-data/voices/{ => other}/af | 0 espeak-data/voices/{en => other}/en-n | 0 espeak-data/voices/{en => other}/en-rp | 0 espeak-data/voices/{en => other}/en-sc | 0 espeak-data/voices/{en => other}/en-wi | 0 espeak-data/voices/{en => other}/en-wm | 0 espeak-data/voices/{ => other}/eo | 0 espeak-data/voices/{test => other}/grc | 0 espeak-data/voices/{test => other}/jbo | 0 espeak-data/voices/{ => other}/la | 0 espeak-data/voices/{ => other}/sw | 0 espeak-data/voices/test/bg | 5 - espeak-data/voices/test/ga | 4 - phsource/ph_bengali | 37 +++ 66 files changed, 701 insertions(+), 76 deletions(-) create mode 100644 dictsource/bn_list create mode 100644 dictsource/bn_rules rename espeak-data/voices/{test => asia}/fa (100%) rename espeak-data/voices/{test => asia}/fa-pin (100%) rename espeak-data/voices/{ => asia}/hi (100%) rename espeak-data/voices/{ => asia}/hy (100%) rename espeak-data/voices/{ => asia}/hy-west (100%) rename espeak-data/voices/{ => asia}/id (86%) create mode 100644 espeak-data/voices/asia/ka rename espeak-data/voices/{ => asia}/kn (100%) rename espeak-data/voices/{ => asia}/ku (100%) rename espeak-data/voices/{ => asia}/ml (100%) rename espeak-data/voices/{test => asia}/ne (68%) rename espeak-data/voices/{ => asia}/ta (100%) rename espeak-data/voices/{ => asia}/tr (100%) rename espeak-data/voices/{ => asia}/vi (100%) rename espeak-data/voices/{ => asia}/vi-hue (100%) rename espeak-data/voices/{ => asia}/zh (100%) rename espeak-data/voices/{ => asia}/zh-yue (100%) rename espeak-data/voices/{en => }/en (100%) rename espeak-data/voices/{en => }/en-us (100%) rename espeak-data/voices/{ => europe}/bg (82%) rename espeak-data/voices/{ => europe}/bs (100%) rename espeak-data/voices/{ => europe}/ca (100%) rename espeak-data/voices/{ => europe}/cs (100%) rename espeak-data/voices/{ => europe}/cy (70%) rename espeak-data/voices/{ => europe}/da (100%) rename espeak-data/voices/{ => europe}/el (100%) rename espeak-data/voices/{ => europe}/es (100%) rename espeak-data/voices/{ => europe}/et (100%) rename espeak-data/voices/{ => europe}/fi (100%) rename espeak-data/voices/{ => europe}/fr-be (100%) rename espeak-data/voices/{ => europe}/hr (100%) rename espeak-data/voices/{ => europe}/hu (100%) rename espeak-data/voices/{ => europe}/is (55%) rename espeak-data/voices/{ => europe}/it (100%) rename espeak-data/voices/{ => europe}/lv (100%) rename espeak-data/voices/{ => europe}/mk (54%) rename espeak-data/voices/{ => europe}/nl (100%) rename espeak-data/voices/{ => europe}/no (100%) rename espeak-data/voices/{ => europe}/pl (100%) rename espeak-data/voices/{ => europe}/pt-pt (100%) rename espeak-data/voices/{ => europe}/ro (100%) rename espeak-data/voices/{ => europe}/ru (70%) rename espeak-data/voices/{ => europe}/sk (100%) rename espeak-data/voices/{ => europe}/sq (100%) rename espeak-data/voices/{ => europe}/sr (100%) rename espeak-data/voices/{ => europe}/sv (100%) delete mode 100644 espeak-data/voices/ka rename espeak-data/voices/{ => other}/af (100%) rename espeak-data/voices/{en => other}/en-n (100%) rename espeak-data/voices/{en => other}/en-rp (100%) rename espeak-data/voices/{en => other}/en-sc (100%) rename espeak-data/voices/{en => other}/en-wi (100%) rename espeak-data/voices/{en => other}/en-wm (100%) rename espeak-data/voices/{ => other}/eo (100%) rename espeak-data/voices/{test => other}/grc (100%) rename espeak-data/voices/{test => other}/jbo (100%) rename espeak-data/voices/{ => other}/la (100%) rename espeak-data/voices/{ => other}/sw (100%) delete mode 100644 espeak-data/voices/test/bg delete mode 100644 espeak-data/voices/test/ga create mode 100644 phsource/ph_bengali diff --git a/dictsource/bn_list b/dictsource/bn_list new file mode 100644 index 00000000..065d77c3 --- /dev/null +++ b/dictsource/bn_list @@ -0,0 +1,278 @@ +// Translation rules for Bengali +// This file is UTF8 encoded + +// Numbers + devanagari numbers are changed to latin characters before translation +_0 S'u:n.nV'o: +_1 a'k +_2 d:UI +_3 t'i:n +_4 c'a:@'r +_5 ,pa~c +_6 ch'O:j +_7 S'a:t +_8 'a:th. +_9 n'O:j + +_10 d'O:S +_11 a'g'a:rO: +_12 b'a:rO: +_13 t'a:rO: +_14 ch:O:d'dO: +_15 p'O:n'e:rO: +_16 S'o:lO: +_17 SO:t'e:rO: +_18 a:th'e:rO: +_19 U'n'IS + +_20 kU:'ri +_21 e:kU'S +_22 b'a:IS +_23 t'e:IS +_24 c'O:b'bIS +_25 pa~O:c'IS +_26 ch'a:'bb'IS +_27 Sa:ta:S +_28 ath'a:S +_29 Unt'rIs +_30 t'i:rIS + +_31 e:k't:rIS +_32 bat:'rIS +_33 tE't'rIS +_34 ca~o:u:t'rIS +_35 pa~O:it'rIS +_36 cha'trIS +_37 Sa~it'rIS +_38 at'tr'IS +_39 U'nO:cO:l'IS + +_40 co:l'lIS +_41 e:k'co:l'lIS +_42 bi'al'lIS +_43 te:ta:l'lIS +_44 cu:a:l'lIS +_45 paI'nta:l'lIS +_46 che:co:l'lIS +_47 Sat'co:l'lIs +_48 at'co:l'lIS +_49 Uno:pan'ca:S + +_50 p@n'ca:s +_51 e:ka:n'no: +_52 ba:h@n'no: +_53 t'Ip'pan'no: +_54 cu:wan'no: +_55 po:n'ca:n'no: +_56 chh@p:'an'no: +_57 Sa:ta:n'no: +_58 ath'a:n'no: +_59 Uno:s'ath + +_60 s'a:th. +_61 e:k'so:t'tI +_62 ba:so:t'tI +_63 te:so:t'tI +_64 ca~o:u:so:t'tI +_65 pa~I'so:t'tI +_66 che:so:t'tI +_67 Sat'so:t'tI +_68 atso:t'ti +_69 ,Uno:Sat'to:r + +_70 So:t'to:r +_71 e:kat'to:r +_72 ba:hat'to:r +_73 tIat'to:r +_74 cu:at'to:r +_75 pa~chat'to:r +_76 chI'at:to:r +_77 Sa:t@'t:o:r +_78 atat'to:r +_79 ,Uno:a:Si: + +_80 a:Si +_81 e:ka:Si: +_82 bI'ra:Si: +_83 tIra:Si: +_84 cu:ra:Si: +_85 pa~ca:Si: +_86 chIa:Si: +_87 Sa:ta:Si: +_88 O:sto:a:Si: +_89 Uno:no:b'bo:I + +_90 no:b:bo:I +_91 e:ka:no:b'bo:I +_92 bIra:no:b'bo:I +_93 tIr'a:no:b'bo:I +_94 cu:r'a:no:b'bo:I +_95 pa~ca:no:b'bo:I +_96 chIa:no:b'bo:I +_97 S@ta:no:b'bo:I +_98 ata:no:b'bo:I +_99 nIra:no:b'bo:I + +_0C SO: +_0M1 h@z'a:r +_0M2 l'a:kh +_0M3 ko:tI +_0M4 o:r'bu:d +_dpt d@so:mIk + +// Single consonants +ক k@ +খ kh@ +গ g@ +ঘ gh@ +ঙ N'g +চ c@ +ছ ch@ +জ J@ +ঝ Jh@ +ঞ n^@ +ট t.@ +ঠ th.@ +ড d.@ +ঢ dh.@ +ণ n.@ // retroflex n.@ +ত t@ +থ th@ +দ d@ +ধ dh@ +ন n@ +প p@ +ফ ph@ +ব b@ +ভ bh@ +ম m@ +য় O:j +য J@ +র r@ +ড় r-@ +ঢ় hr@ +ল l@ +শ S@ +ষ s.@ // retroflex [S] +স s@ +হ H@ +ৎ t@ + + +// combining vowel signs +ा #X2a: +ि #X1I +ी #X2i: +ূ #X1U +ू #X2u: +ृ #X1rI +ে #X1e: +ৈ #X2E: +ো #X1o: +ৌ #X1O: +ॐ #X1o~m + + +// Punctuation +। dVn.d.V + +// Pronouns +আমি $u // main: I +আমায় $u +আমার $u + +আমরা $u // we +আমাদের $u + +আপনি $u // you(formal) +আপনাকে $u +আপনার $u + +তুমি $u // you (informal) +তোমায় $u +তোমার $u +তোমাদের $u + +তুই $u // you (informal) +তোকে $u +তোর $u + +এ $u // he/she/it +একে $u +এটার $u +এর $u + +ইনি $u // they +এনাকে $u +এনার $u + +ও $u // he/she/it +সে $u +ওর $u +তার $u + +ওরা $u // they +তারা $u +ওদের $u // unheṃ: them +তাদের $u + +এই $u // e:I this/it +এটা $u // e:ta: this/it +এটার $u // e:ta:'r this/it +এর $u // e:r this/it + +ওটা $u // o:ta: that +ওটাকে $u // o:ta:ke: to that +ওটার $u // o:ta:'r of that + +ওগুলো $u // o:gu:lo: those +ওগুলোকে $u // o:gu:lo:ke: to those +ওগুলোর $u // o:gu:lo:'r of those + + + +// Prepositions/Postpositions +মধ্যে $u // moddhe in +উপর $u // upor on, above +নীচে $u // niche below + +পূর্ব্বে $u // purbe before, prior +পর্য্যন্ত $u // parjonto till +অব্দি $u // abdi till +বিনা $u // bina without + + + +// Questions +কেন $u $pause // kano why interrogative particle +কি $u $pause // ki what +কোথায় $u $pause // kothaay where +কখন $u $pause // kakhon when +কে $u $pause // ke who + +// Conjunctions + +এবং $u $pause // ebong: and +আর $u $pause // aar: and +অথবা $u $pause // athoba: or +কিন্তু $u $pause // kintu: but +যদি $pause // jodi: if +তবু $pause // tobu: still, yet +তবে $pause // tabe: if...then +অথচ $u // athacho: yet + + +// Verbs + +ছিল $u // chilo: past aux +ছিলেন $u // chilen + + +করছি $u // korchi: continuous +করছিলাম $u // korchilam: past indefinite +করেছি $u // korechi: past + + +// Exceptions +ক্রিকেট krIk'Et +সাইবার s'aIb@r diff --git a/dictsource/bn_rules b/dictsource/bn_rules new file mode 100644 index 00000000..2a356171 --- /dev/null +++ b/dictsource/bn_rules @@ -0,0 +1,316 @@ + +// This file is UTF8 encoded + +// letter groups: +// A vowel letters and vowel signs +// B vowel signs and virama ् +// C consonants +// Y vowel letters and vowel signs + +// conditional rules +// ?2 use diphthong for "ai" +// ?3 use diphthong for "au" + + +.replace + ০ 0 + ১ 1 + ২ 2 + ৩ 3 + ৪ 4 + ৫ 5 + ৬ 6 + ৭ 7 + ৮ 8 + ৯ 9 + + +// Vowels + + +.group অ + অ a + + +.group আ + আ a: + +.group ই + ই I + ইঁ i~ + ইং I'ng + +.group ঈ + ঈ i: + ঈ (_ i + +.group উ + উ U + +.group ঊ + ঊ u: + ঊং u~ // + anusvara + ঊঁ u~ // + candrabinbu + +.group ঋ + ঋ rI + +.group এঁ + এঁ E // candra e + +.group ঐ + ঐ e + +.group এ + এ e: + +.group ঐ + ঐ E: // ?? [aI] [E:] [&:] + ঐং E~ + ঐঁ E~ +?2 ঐ aI // ?? [aI] [E:] [&:] + + +.group ওঁ + ওঁ O // candra O + +.group ঔ + ঔ o + +.group ও + ও o: + ওং o~ // +anusvara + ওঁ o~ // +candrabindu + +.group ঔ + ঔ O: // ?? [aU] [O:] + ঔঁ O~ // +candrabindu + + +// Vowel Signs + +.group া + া a: + +.group ি + ি I + +.group ী + ী i: + ী (_ i + +.group ূ + ূ U + +.group ু + ু u: + +.group ৃ + ৃ rI + +.group ে + ে e: + +.group ৈ + ৈ E: // ?? [aI] [E:] [&:] + +.group ো + ো o: + +.group ৌ + ৌ O: // [O:] or [aU] ?? + +.group ॐ + ॐ o~m + +// Consonants + +.group ক + ক k@ + ক (B k + ক্য (्য kja: + ক্ষ kh'@ + +.group খ + খ khV + খ (B kh@ + +.group গ + গ gV + গ (B g@ + ঈ)গ (ল g@ + +.group ঘ + ঘ ghV + ঘ (B gh + +.group ঙ + ঙ N'g + ঙ্ (B N + গা)ঙ (চি Ng@ + +.group চ + চ cV + চ (B c + ্য) চ্য c'j@ + +.group ছ + ছ chV + ছ (B ch@ + +.group জ + জ J@ + জ (B J@ + ্) জ zV + জ (B J@ + +.group ঝ + ঝ Jh@ + ঝ (B Jh@ + +.group ঞ + ঞ n^V + ঞ্ (B n^ + +.group ট + ট tV + ট (B tV + ট (्য় t.j@ + +.group ঠ + ঠ thV + ঠ (B th. + +.group ড + ড d.V + ড (B d. + +.group ঢ + ঢ dh.V + ঢ (B dh. +.group ণ + ণ n.V // (temporary) same as dental [n] + ণ (B n. + ণ্ম n.m + + +.group ত + ত t@ + ত (B t@ + +.group থ + থ th@ + থ (B th. + ক) থ (ন th@ + +.group দ + দ d@ + দ (B d. + ব) দ (ল d@ + +.group ধ + ধ dh@ + ধ (B dh. + সা) ধ (ন dh@ + +.group ন + ন n@ + ন (B n@ + ্) ন (্ n@ + র্) ন (_ r.n // r +virama অর্ণব + + +.group ন + ন n: // should this be a long [n] ? + +.group প + প p@ + প (B p + প্য (्য p: + +.group ফ + ফ ph@ + ফ (B ph@ + ফ ph@ + + +.group ব + ব b@ + ব (B b@ + +.group ভ + ভ bh@ + ভ (B bh@ + +.group ম + ম mV + ्) ম (_ mV + র্) ম (_ r.m@ // r +virama + ন্) ম (_ n.m // n +virama + +.group য় + য় jV + য় (B jV + +.group য + য J@ + য (B J@ + ्) য (_ ja + +.group র + র rV + র (B r + ्) র (_ r@ + + +.group ল + ল l + ল (B l@ + ক) ল (ম l@ + + +.group শ + শ S@ + শ (B S@ + +.group ষ + ষ s + ষ (B s //?? + +.group স + স s@ + স (B s. + +.group হ + হ H@ + হ (B H@ + হ্ব v@ +.group হ্ব + B) হ্ব (B v@ + +.group ৎ + ৎ (B t@t + + + + // nukta, modifies a consonant + +.group ্যা // ja'falaa + ্যা a + +.group ँ + ँ n // candrabindu + +.group ং + ং aN'g // anusvara + +.group ः + ः H // visarga + +.group ্ // virama + ্ + + + + + diff --git a/dictsource/pa_list b/dictsource/pa_list index ebbb9966..e8ce7beb 100644 --- a/dictsource/pa_list +++ b/dictsource/pa_list @@ -1,4 +1,4 @@ - + // This file is UTF8 encoded // Punjabi/Gurmukhi @@ -24,14 +24,14 @@ _15 p'Vnd@Ra~ _16 s'ol.a~ _17 s@t'aRa~ _18 Vth.'aRa~ -_19 'Uni +_19 'Unni _20 v'iH _21 Ik:i _22 b'ai _23 t'ei _24 c'Ovi -_25 p'VnJhi +_25 p'Vc:i _26 ch'Vb:i _27 s@t'ai _28 Vth.'ai @@ -40,79 +40,80 @@ _29 Un'Vt:i _30 t'iH _31 Ik'Vt:i _32 b'Vt:i -_33 t'eti -_34 c'O~ti -_35 p'E~ti +_33 t'et:i +_34 c'ONti +_35 p'ENti _36 ch'Vt:i -_37 s'E~ti +_37 s'ENti + _38 Vth.'Vt:i -_39 Un@t'ali +_39 U~Nt'ali _40 c'ali _41 Ik@t'ali -_42 b@t'ali +_42 be'ali _43 t@R@t'ali -_44 cOt'ali -_45 p@nJ@t'ali +_44 cUt'ali +_45 p@nt'ali _46 chI'ali _47 s@nt'ali -_48 Vth.:@t'ali -_49 'Un.I~Ja +_48 ,@R2@t'ali +_49 Un'VnJa _50 p@nJ'aH -_51 'Ik@vI~Ja -_52 b'VvI~Ja -_53 t'VR@vI~Ja -_54 c'VRI~Ja -_55 p'Vc@vI~Ja -_56 ch'VpI~Ja -_57 s'Vt@vI~Ja -_58 'Vth.:@vI~Ja +_51 ,@k@v'VnJa +_52 b@v'VnJa +_53 t,@R@v'VnJa +_54 cUR'VnJa +_55 p,@c@v'VnJa +_56 ch@p'VnJa +_57 s,@t@v'VnJa +_58 ,@th.@v'VnJa _59 Un.'ath. _60 s'Vth.: -_61 Ik'ath. -_62 b'ath.H -_63 t@R'eth.H -_64 c'Oth.H -_65 p'E~th. -_66 chI'ath. -_67 s@t'aH@th. -_68 Vth.:'ath. +_61 Ik'aH@t. +_62 b'aH@t. +_63 t@R'e~H@t. +_64 c'O~H@t. +_65 p'E~H@t. +_66 che'aH@t. +_67 s@t'aH@t. +_68 ,@th.'aH@t. _69 Un.'Vt:@R _70 s'Vt:@R -_71 IkH'Vt:@R +_71 Ik'Vt:@R _72 b@H'Vt:@R -_73 t@H'Vt:@R +_73 t@H'et:@R _74 cOH'Vt:@R -_75 p@nJ'Vt:@R +_75 p@J'Vt:@R _76 chIH'Vt:@R _77 s@t'Vt:@R _78 Vth.'Vt:@R _79 Un.'asi _80 'Vssi -_81 Ik'asi -_82 bI'asi -_83 t@R@'asi -_84 c@R'asi -_85 p@nJ'asi -_86 chI'asi +_81 ,IkI;'asi +_82 bI;'asi +_83 t,@RI;'asi +_84 cUR'asi +_85 p@c'asi +_86 chI;'asi _87 s@t'asi _88 Vth.'asi -_89 Un.a~n@v'eN +_89 Un'an@v,e~ _90 n'Vb:e -_91 Ik@'an@v,e~ -_92 bI;'an@v,e~ -_93 t@R@'an@ve~ -_94 c@R'an@ve~ -_95 p@c'an@ve~ +_91 Ik'an@v,e~ +_92 b'an@v,e~ +_93 t@R'a~n@v,e~ +_94 cUR'an@v,e~ +_95 p@c'an@v,e~ _96 chI'an@ve~ _97 s@t'an@ve~ _98 Vth.'an@ve~ -_99 nIR'Vnn@ve~ +_99 n@R2'I~n@v,e~ _0C s'O _0M1 H@J'aR @@ -130,8 +131,6 @@ _dpt _dOth // ?? ੱ VddVk ਃ visaRg ੍ hVlVnt -ॄ addak - ਅ 'ERV ੲ 'IRI @@ -157,15 +156,13 @@ _ਔ 'ERV||kVnOR'a ੌ kVn'ORa । d.'Vnd.i -₹ rupi - - ਸਰਕਾਰ sR@k'aR ਸਰਕਾਰੀ sR@k'aRi +$textmode +ਸੋਫਟਵਿਅਰ software +ਈਮੇਲ email +ਕੀਬੋਰਡ keyboard +ਬੋਰਡ board +$phonememode -// English words -ਸੋਫਟਵਿਅਰ s'OftwER -ਵੈਬਪੇਜ w'EbpeIdZ -ਈਮੇਲ 'i:meIl -ਕੀਬੋਰਡ k'i:boRd diff --git a/dictsource/ur_list b/dictsource/ur_list index b0fae0c2..a35bf8ea 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -164,4 +164,9 @@ _dpt _ISaRI'Ia_ // Exception of phonemes +یہ jE $u +کہ kE $u +وہ wo: $u + + پاکستان p'a:k'i:st'a:n diff --git a/dictsource/ur_rules b/dictsource/ur_rules index 18542979..a69f822f 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -19,7 +19,7 @@ // vowel signs, alif acts as consonants at start of word if these follow -.L01 َ ِ ُ و ی ع ا +.L01 َ ِ ُ و ی ع ا ے // VOWELS @@ -52,6 +52,7 @@ _) ا a _) او u: _) ای i: + ائ a:j .group آ آ a: @@ -68,13 +69,13 @@ _) ای i: وُ u: وٗ u: و (L01 v - _) و v + _) و vV .group ی ی e: ی (L01 j ی (_ i: - _) ی j + _) ی jV .group ے // yeh barree diff --git a/espeak-data/voices/test/fa b/espeak-data/voices/asia/fa similarity index 100% rename from espeak-data/voices/test/fa rename to espeak-data/voices/asia/fa diff --git a/espeak-data/voices/test/fa-pin b/espeak-data/voices/asia/fa-pin similarity index 100% rename from espeak-data/voices/test/fa-pin rename to espeak-data/voices/asia/fa-pin diff --git a/espeak-data/voices/hi b/espeak-data/voices/asia/hi similarity index 100% rename from espeak-data/voices/hi rename to espeak-data/voices/asia/hi diff --git a/espeak-data/voices/hy b/espeak-data/voices/asia/hy similarity index 100% rename from espeak-data/voices/hy rename to espeak-data/voices/asia/hy diff --git a/espeak-data/voices/hy-west b/espeak-data/voices/asia/hy-west similarity index 100% rename from espeak-data/voices/hy-west rename to espeak-data/voices/asia/hy-west diff --git a/espeak-data/voices/id b/espeak-data/voices/asia/id similarity index 86% rename from espeak-data/voices/id rename to espeak-data/voices/asia/id index ce800f70..f35b116a 100644 --- a/espeak-data/voices/id +++ b/espeak-data/voices/asia/id @@ -1,4 +1,4 @@ -name indonesian-test +name indonesian language id gender male diff --git a/espeak-data/voices/asia/ka b/espeak-data/voices/asia/ka new file mode 100644 index 00000000..6f748b7f --- /dev/null +++ b/espeak-data/voices/asia/ka @@ -0,0 +1,2 @@ +name georgian +language ka diff --git a/espeak-data/voices/kn b/espeak-data/voices/asia/kn similarity index 100% rename from espeak-data/voices/kn rename to espeak-data/voices/asia/kn diff --git a/espeak-data/voices/ku b/espeak-data/voices/asia/ku similarity index 100% rename from espeak-data/voices/ku rename to espeak-data/voices/asia/ku diff --git a/espeak-data/voices/ml b/espeak-data/voices/asia/ml similarity index 100% rename from espeak-data/voices/ml rename to espeak-data/voices/asia/ml diff --git a/espeak-data/voices/test/ne b/espeak-data/voices/asia/ne similarity index 68% rename from espeak-data/voices/test/ne rename to espeak-data/voices/asia/ne index e9671231..fc829532 100644 --- a/espeak-data/voices/test/ne +++ b/espeak-data/voices/asia/ne @@ -1,4 +1,4 @@ -name nepali-test +name nepali language ne gender male diff --git a/espeak-data/voices/ta b/espeak-data/voices/asia/ta similarity index 100% rename from espeak-data/voices/ta rename to espeak-data/voices/asia/ta diff --git a/espeak-data/voices/tr b/espeak-data/voices/asia/tr similarity index 100% rename from espeak-data/voices/tr rename to espeak-data/voices/asia/tr diff --git a/espeak-data/voices/vi b/espeak-data/voices/asia/vi similarity index 100% rename from espeak-data/voices/vi rename to espeak-data/voices/asia/vi diff --git a/espeak-data/voices/vi-hue b/espeak-data/voices/asia/vi-hue similarity index 100% rename from espeak-data/voices/vi-hue rename to espeak-data/voices/asia/vi-hue diff --git a/espeak-data/voices/zh b/espeak-data/voices/asia/zh similarity index 100% rename from espeak-data/voices/zh rename to espeak-data/voices/asia/zh diff --git a/espeak-data/voices/zh-yue b/espeak-data/voices/asia/zh-yue similarity index 100% rename from espeak-data/voices/zh-yue rename to espeak-data/voices/asia/zh-yue diff --git a/espeak-data/voices/en/en b/espeak-data/voices/en similarity index 100% rename from espeak-data/voices/en/en rename to espeak-data/voices/en diff --git a/espeak-data/voices/en/en-us b/espeak-data/voices/en-us similarity index 100% rename from espeak-data/voices/en/en-us rename to espeak-data/voices/en-us diff --git a/espeak-data/voices/bg b/espeak-data/voices/europe/bg similarity index 82% rename from espeak-data/voices/bg rename to espeak-data/voices/europe/bg index 688d9fd6..c3842ca7 100644 --- a/espeak-data/voices/bg +++ b/espeak-data/voices/europe/bg @@ -1,4 +1,4 @@ -name bulgarian-test +name bulgarian language bg stressAmp 13 12 17 17 20 22 22 21 diff --git a/espeak-data/voices/bs b/espeak-data/voices/europe/bs similarity index 100% rename from espeak-data/voices/bs rename to espeak-data/voices/europe/bs diff --git a/espeak-data/voices/ca b/espeak-data/voices/europe/ca similarity index 100% rename from espeak-data/voices/ca rename to espeak-data/voices/europe/ca diff --git a/espeak-data/voices/cs b/espeak-data/voices/europe/cs similarity index 100% rename from espeak-data/voices/cs rename to espeak-data/voices/europe/cs diff --git a/espeak-data/voices/cy b/espeak-data/voices/europe/cy similarity index 70% rename from espeak-data/voices/cy rename to espeak-data/voices/europe/cy index 2991e99d..30abd943 100644 --- a/espeak-data/voices/cy +++ b/espeak-data/voices/europe/cy @@ -1,5 +1,5 @@ language cy -name welsh-test +name welsh gender male intonation 4 diff --git a/espeak-data/voices/da b/espeak-data/voices/europe/da similarity index 100% rename from espeak-data/voices/da rename to espeak-data/voices/europe/da diff --git a/espeak-data/voices/el b/espeak-data/voices/europe/el similarity index 100% rename from espeak-data/voices/el rename to espeak-data/voices/europe/el diff --git a/espeak-data/voices/es b/espeak-data/voices/europe/es similarity index 100% rename from espeak-data/voices/es rename to espeak-data/voices/europe/es diff --git a/espeak-data/voices/et b/espeak-data/voices/europe/et similarity index 100% rename from espeak-data/voices/et rename to espeak-data/voices/europe/et diff --git a/espeak-data/voices/fi b/espeak-data/voices/europe/fi similarity index 100% rename from espeak-data/voices/fi rename to espeak-data/voices/europe/fi diff --git a/espeak-data/voices/fr-be b/espeak-data/voices/europe/fr-be similarity index 100% rename from espeak-data/voices/fr-be rename to espeak-data/voices/europe/fr-be diff --git a/espeak-data/voices/hr b/espeak-data/voices/europe/hr similarity index 100% rename from espeak-data/voices/hr rename to espeak-data/voices/europe/hr diff --git a/espeak-data/voices/hu b/espeak-data/voices/europe/hu similarity index 100% rename from espeak-data/voices/hu rename to espeak-data/voices/europe/hu diff --git a/espeak-data/voices/is b/espeak-data/voices/europe/is similarity index 55% rename from espeak-data/voices/is rename to espeak-data/voices/europe/is index 9e9c4e74..b8f23834 100644 --- a/espeak-data/voices/is +++ b/espeak-data/voices/europe/is @@ -1,4 +1,4 @@ -name icelandic-test +name icelandic language is gender male diff --git a/espeak-data/voices/it b/espeak-data/voices/europe/it similarity index 100% rename from espeak-data/voices/it rename to espeak-data/voices/europe/it diff --git a/espeak-data/voices/lv b/espeak-data/voices/europe/lv similarity index 100% rename from espeak-data/voices/lv rename to espeak-data/voices/europe/lv diff --git a/espeak-data/voices/mk b/espeak-data/voices/europe/mk similarity index 54% rename from espeak-data/voices/mk rename to espeak-data/voices/europe/mk index 4607dd07..47a8398c 100644 --- a/espeak-data/voices/mk +++ b/espeak-data/voices/europe/mk @@ -1,4 +1,4 @@ -name macedonian-test +name macedonian language mk gender male diff --git a/espeak-data/voices/nl b/espeak-data/voices/europe/nl similarity index 100% rename from espeak-data/voices/nl rename to espeak-data/voices/europe/nl diff --git a/espeak-data/voices/no b/espeak-data/voices/europe/no similarity index 100% rename from espeak-data/voices/no rename to espeak-data/voices/europe/no diff --git a/espeak-data/voices/pl b/espeak-data/voices/europe/pl similarity index 100% rename from espeak-data/voices/pl rename to espeak-data/voices/europe/pl diff --git a/espeak-data/voices/pt-pt b/espeak-data/voices/europe/pt-pt similarity index 100% rename from espeak-data/voices/pt-pt rename to espeak-data/voices/europe/pt-pt diff --git a/espeak-data/voices/ro b/espeak-data/voices/europe/ro similarity index 100% rename from espeak-data/voices/ro rename to espeak-data/voices/europe/ro diff --git a/espeak-data/voices/ru b/espeak-data/voices/europe/ru similarity index 70% rename from espeak-data/voices/ru rename to espeak-data/voices/europe/ru index 238c6912..6be1017b 100644 --- a/espeak-data/voices/ru +++ b/espeak-data/voices/europe/ru @@ -1,4 +1,4 @@ -name russian_test +name russian language ru gender male diff --git a/espeak-data/voices/sk b/espeak-data/voices/europe/sk similarity index 100% rename from espeak-data/voices/sk rename to espeak-data/voices/europe/sk diff --git a/espeak-data/voices/sq b/espeak-data/voices/europe/sq similarity index 100% rename from espeak-data/voices/sq rename to espeak-data/voices/europe/sq diff --git a/espeak-data/voices/sr b/espeak-data/voices/europe/sr similarity index 100% rename from espeak-data/voices/sr rename to espeak-data/voices/europe/sr diff --git a/espeak-data/voices/sv b/espeak-data/voices/europe/sv similarity index 100% rename from espeak-data/voices/sv rename to espeak-data/voices/europe/sv diff --git a/espeak-data/voices/ka b/espeak-data/voices/ka deleted file mode 100644 index bc2def28..00000000 --- a/espeak-data/voices/ka +++ /dev/null @@ -1,2 +0,0 @@ -name georgian-test -language ka diff --git a/espeak-data/voices/af b/espeak-data/voices/other/af similarity index 100% rename from espeak-data/voices/af rename to espeak-data/voices/other/af diff --git a/espeak-data/voices/en/en-n b/espeak-data/voices/other/en-n similarity index 100% rename from espeak-data/voices/en/en-n rename to espeak-data/voices/other/en-n diff --git a/espeak-data/voices/en/en-rp b/espeak-data/voices/other/en-rp similarity index 100% rename from espeak-data/voices/en/en-rp rename to espeak-data/voices/other/en-rp diff --git a/espeak-data/voices/en/en-sc b/espeak-data/voices/other/en-sc similarity index 100% rename from espeak-data/voices/en/en-sc rename to espeak-data/voices/other/en-sc diff --git a/espeak-data/voices/en/en-wi b/espeak-data/voices/other/en-wi similarity index 100% rename from espeak-data/voices/en/en-wi rename to espeak-data/voices/other/en-wi diff --git a/espeak-data/voices/en/en-wm b/espeak-data/voices/other/en-wm similarity index 100% rename from espeak-data/voices/en/en-wm rename to espeak-data/voices/other/en-wm diff --git a/espeak-data/voices/eo b/espeak-data/voices/other/eo similarity index 100% rename from espeak-data/voices/eo rename to espeak-data/voices/other/eo diff --git a/espeak-data/voices/test/grc b/espeak-data/voices/other/grc similarity index 100% rename from espeak-data/voices/test/grc rename to espeak-data/voices/other/grc diff --git a/espeak-data/voices/test/jbo b/espeak-data/voices/other/jbo similarity index 100% rename from espeak-data/voices/test/jbo rename to espeak-data/voices/other/jbo diff --git a/espeak-data/voices/la b/espeak-data/voices/other/la similarity index 100% rename from espeak-data/voices/la rename to espeak-data/voices/other/la diff --git a/espeak-data/voices/sw b/espeak-data/voices/other/sw similarity index 100% rename from espeak-data/voices/sw rename to espeak-data/voices/other/sw diff --git a/espeak-data/voices/test/bg b/espeak-data/voices/test/bg deleted file mode 100644 index 688d9fd6..00000000 --- a/espeak-data/voices/test/bg +++ /dev/null @@ -1,5 +0,0 @@ -name bulgarian-test -language bg - -stressAmp 13 12 17 17 20 22 22 21 -stressLength 180 170 200 200 200 200 210 220 \ No newline at end of file diff --git a/espeak-data/voices/test/ga b/espeak-data/voices/test/ga deleted file mode 100644 index 2467ea18..00000000 --- a/espeak-data/voices/test/ga +++ /dev/null @@ -1,4 +0,0 @@ -name irish-test -language ga -stressrule 0 - diff --git a/phsource/ph_bengali b/phsource/ph_bengali new file mode 100644 index 00000000..1fceed4b --- /dev/null +++ b/phsource/ph_bengali @@ -0,0 +1,37 @@ + +//==================================================== +// Bengali, inherits from Hindi +//==================================================== + +phoneme @ + vowel flag1 starttype #@ endtype #@ + length 65 + + ChangeIfDiminished(@-) + IF nextPh(H) THEN + FMT(vowel/@_low) + ENDIF + FMT(vowel/@_bck) +endphoneme + + +phoneme V + vowel flag1 starttype #@ endtype #@ + length 180 + CALL hi/V +endphoneme + + +phoneme a: + vowel long starttype #a endtype #a + length 230 + FMT(vowel/aa_9) +endphoneme + + +phoneme o: + vowel long starttype #o endtype #o + length 220 + FMT(vowel/o_2) +endphoneme + From 1b7dae7aea69bedf8712af4d05303dac2aa3f4e2 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Mar 2013 17:23:03 +0000 Subject: [PATCH 03/24] autotools: build the 'bn' dictionary --- Makefile.am | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile.am b/Makefile.am index a6420e88..6414838e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -132,6 +132,7 @@ dictionaries: \ espeak-data/an_dict \ espeak-data/az_dict \ espeak-data/bg_dict \ + espeak-data/bn_dict \ espeak-data/ca_dict \ espeak-data/cs_dict \ espeak-data/cy_dict \ @@ -234,6 +235,12 @@ dictsource/bg_extra: espeak-data/bg_dict: src/espeak espeak-data/phontab dictsource/bg_list dictsource/bg_listx dictsource/bg_rules dictsource/bg_extra cd dictsource && ../src/espeak --compile=bg && cd .. +bn: espeak-data/bn_dict +dictsource/bn_extra: + touch dictsource/bn_extra +espeak-data/bn_dict: src/espeak espeak-data/phontab dictsource/bn_list dictsource/bn_rules dictsource/bn_extra + cd dictsource && ../src/espeak --compile=bn && cd .. + bo: espeak-data/bo_dict dictsource/bo_extra: touch dictsource/bo_extra From 0fdba9386d76ffb4163f6790a45d24a6a8b2bec0 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Mar 2013 17:29:24 +0000 Subject: [PATCH 04/24] src/compiledata.cpp: only call DrawEnvelopes if MAKE_ENVELOPES is defined --- src/compiledata.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 762f6e58..101d6abe 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -3606,7 +3606,9 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references CompileReport(); report_dict = CompileAllDictionaries(); +#ifdef MAKE_ENVELOPES DrawEnvelopes(); +#endif if(gui_flag) From 3168f9a6f78da3b96d315545e332f60feb67212f Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Mar 2013 17:35:24 +0000 Subject: [PATCH 05/24] autotools: don't compile the 'bn' dictionary as there is not a corresponding voice file --- Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 6414838e..55500b15 100644 --- a/Makefile.am +++ b/Makefile.am @@ -132,7 +132,6 @@ dictionaries: \ espeak-data/an_dict \ espeak-data/az_dict \ espeak-data/bg_dict \ - espeak-data/bn_dict \ espeak-data/ca_dict \ espeak-data/cs_dict \ espeak-data/cy_dict \ From 83bc87a000e6581a8c48594cfe545cb142d60ecb Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 3 Mar 2013 12:27:43 +0000 Subject: [PATCH 06/24] [1.46.40] Command line option --ipa can have option to include Tie or ZWJ characters to disabmiguate multi-letter phoneme names. Recognize and ignore UTF8-BOM byte sequence at the start of phoneme definition files. Languages changes: ta, nl, pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@306 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/en_list | 3 + dictsource/en_rules | 6 +- dictsource/nl_rules | 3 + dictsource/pt_list | 65 ++++++------------ dictsource/pt_rules | 92 +++++++++++++++----------- dictsource/ta_list | 4 +- dictsource/ta_rules | 147 +++++++++++++++++++++++++++++++++++++++-- phsource/ph_english | 2 +- phsource/ph_english_sc | 22 ++++-- phsource/ph_english_us | 12 ++-- src/compiledata.cpp | 59 ++++++++++++++--- src/dictionary.cpp | 68 +++++++++++++------ src/espeak.cpp | 14 +++- src/speak.cpp | 14 +++- src/speak_lib.cpp | 124 +++++++++++++++++----------------- src/synth_mbrola.cpp | 4 +- src/synthdata.cpp | 4 +- src/synthesize.cpp | 8 +-- src/tr_languages.cpp | 18 ++++- src/translate.cpp | 26 +++++--- src/translate.h | 2 +- 21 files changed, 475 insertions(+), 222 deletions(-) diff --git a/dictsource/en_list b/dictsource/en_list index 208b18bc..a521e25b 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -620,6 +620,7 @@ ablaut ablaUt aborigine ab@r'IdZ@ni abracadabra abr@k@d'abr@ absence abs@ns +absent $1 absent abs'Ent $verb absentia abs'Ent2i:@ absinthe absInT @@ -902,6 +903,7 @@ bias baI@s biased baI@st bible baIb@L bidet bi:deI +bigot bIg@t // -ed bijou bi:Zu: bikini bIk'i:ni binman bInman @@ -1606,6 +1608,7 @@ gourmet gU@meI graduate gradju:@t graduate gradju:eIt $verb graffiti $alt3 +grandson gr'andsVn gredient gri:di@nt // ingredient grenade gr@neId griffon grIf@n diff --git a/dictsource/en_rules b/dictsource/en_rules index 37889166..5a6576c4 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -4082,6 +4082,7 @@ m) otor oUt3 n) o (tor oU otro (py '0tr@ + &) o (try @ c) otyle 0tIl'i: m) o (x @ o (x++ 0 @@ -4192,7 +4193,6 @@ ?3 ag) on (_ 0n rg) on (_ @n &s) on (_ @n - ds) on (_ Vn &t) on (_ @n &tr) on (_ 0n fl) on (_ 0n @@ -4209,7 +4209,9 @@ pers) on @n pers) on (i '0n postp) on 'oUn + _sp) on 0n on (ald 0n + &) on (age_ @n d) on (at %oUn on (an_ oUn _) on (io Vn @@ -4585,7 +4587,7 @@ ?3 h) ov (er Vv l) ov Vv l) ov (e Vv - _l) ove Vv + _l) ove (@ Vv cl) ov (e oUv _sl) ov (enA oUv pl) ov oUv diff --git a/dictsource/nl_rules b/dictsource/nl_rules index c15ddde1..f5b726e5 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -244,6 +244,7 @@ @) ent (st_ 'Ent @) ent (ste_ 'Ent ag) ent 'Ent + X) es (_ Es @j) es (_S1 s @z) es (_S1 s @) es (_S2qd 'Es // double the previous vowel @@ -323,6 +324,7 @@ _) ge (@P2 Q@ ge (bied Q@ _) gee Qe: + _) gei QEI gener (aal Q,e:n@r _) gelijk Q@lEIk _) ge (rC QE @@ -630,6 +632,7 @@ _) inn (@P2 'I // ?? inneren @) s (_S1 s @) s (_$w_alt =s + _) samen(@P5 s'a:m@n sc (oop sk sc (opi sk &) sel (_ =s@l diff --git a/dictsource/pt_list b/dictsource/pt_list index 36e7edf6..f7005d56 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -757,12 +757,10 @@ der $alt derdes $alt desapego $alt2 $noun descabelo $alt -desce $alt -descem $alt descordo $alt desespero $alt2 $noun desfecho $alt2 -desprezo $alt $verb +desprezo $alt2 $noun deveras $alt dez $alt diarreia $alt @@ -781,10 +779,17 @@ encosto $alt $verb endereço $alt2 endereço $alt $verb enforco $alt +enforque $alt +enforquem $alt engordo $alt -enumerem $alt +ensopa $alt +ensopam $alt +ensope $alt +ensopem $alt +ensopo $alt enredo $alt $verb enterro $alt2 $noun +enumerem $alt envelope $alt envolto $alt2 enxerto $alt2 $noun @@ -818,8 +823,6 @@ estorvo $alt $verb etiqueta $alt2 europa $alt exagero $alt $verb -expeça $alt2 -expeço $alt2 explore $alt faceta $alt2 farelo $alt @@ -833,14 +836,15 @@ fezes $alt fizerdes $alt fizermos $alt foda $alt2 $verb +folheto $alt2 folga $alt fogos $alt foguete $alt2 foice $alt2 forca $alt2 força $alt2 $noun -forço $alt forças $alt2 +forço $alt fordes $alt2 fores $alt2 forro $alt $verb @@ -882,10 +886,9 @@ joguem $alt joguete $alt2 lambreta $alt2 lebre $alt -lerda $alt -lerdo $alt líderes $alt2 lopes $alt +maior $alt maleta $alt2 mantiverdes $alt mantiveres $alt @@ -894,6 +897,8 @@ marcelo $alt marmelo $alt marreta $alt2 martelo $alt +melhor $alt +menor $alt merda $alt megera $alt melo $alt @@ -917,8 +922,7 @@ morda $alt2 moreia $alt mortos $alt motora $alt2 -?2 mulher mulj'Er -?4 mulher mul^'Er +mulher $alt mui mwi muito mw'iNtU // -s is included as a suffix muita mw'iNt& @@ -931,8 +935,6 @@ naquele $alt2 $nounf nervo $alt2 novos $alt obstetra $alt -obsoleta $alt2 -obsoleto $alt2 obtivera $alt obtivermos $alt odisseia $alt @@ -948,6 +950,7 @@ pachorra $alt2 paexa paeSa palacete $alt2 palheta $alt2 +panfleto $alt2 pangeia $alt pantera $alt paralelo $alt @@ -956,15 +959,12 @@ pastora $alt2 pedra $alt pelego $alt2 pelo $alt $verb -perde $alt -perdem $alt -pesa $alt -pesam $alt pesque $alt pesquem $alt peso $alt $verb piloto $alt2 $noun pintora $alt2 +pior $alt pirueta $alt2 plateia $alt plebeia $alt @@ -976,8 +976,7 @@ portos $alt pose $alt2 povos $alt poxa p'oS& -preta $alt2 -preto $alt2 +preço $alt2 primavera $alt provo $alt puder $alt @@ -985,6 +984,7 @@ puderdes $alt pudermos $alt puserdes $alt quarteto $alt2 +queda $alt quinteto $alt2 quiserdes $alt quisermos $alt @@ -1018,8 +1018,6 @@ rosno $alt rumores $alt2 saleta $alt2 sarjeta $alt -severa $alt -severo $alt seborreia $alt seca $alt2 $noun secas $alt2 @@ -1030,11 +1028,9 @@ selvagem seUv'aZeIN sexteto $alt2 ?1 senhora $alt2 senhores $alt2 -sincera $alt -sincero $alt sinopse $alt sobe $alt -sobem $alt +sobem $alt soco $alt2 soco $alt $verb sofrem $alt @@ -1042,7 +1038,7 @@ sofre $alt sofreste $alt2 sogra $alt sopre $alt -soprem $alt +soprem $alt sopro $alt $verb soro $alt2 sorvete $alt2 @@ -1052,8 +1048,6 @@ soubermos $alt suborno $alt $verb sufoco $alt2 $noun sufocos $alt2 -sugere $alt -sugerem $alt suporto $alt suor swOr tapete $alt2 @@ -1098,8 +1092,6 @@ zero $alt zorra $alt2 - - // foreign words ?1 alt 'alt ?2 agosto &g'ostU @@ -1144,7 +1136,6 @@ zorra $alt2 ?1 install ,inst'al ?2 internet iNtern'Et ?2 Intranet iNtRan'Et -?2 inveja iNv'EZ& ?1 kernel k'Ern,El ?2 kernel k'Ern@l ?1 line l'ain @@ -1153,16 +1144,6 @@ zorra $alt2 ?1 lock l'Ok mail m'eIl mails m'eIls -?1 maior m,&j'Or- -?2 maior maI'Or -?2 maiores maI'O*is -?1 menor myn'Or- -?2 menor men'Or -?2 menores men'O*is -?2 melhor melj'Or -?2 melhores melj'O*is -?4 melhor mel^'Or -?4 melhores mel^'O*is ?2 mouse m'aUzi ?1 menu menu ?1 next n'Ekst @@ -1173,11 +1154,7 @@ zorra $alt2 ?1 ovo 'ovu ?1 pause p'au:z page p'eIdZ -?2 pior pi'Or -?2 piores pi'O*is -preço $alt2 python p'aIT&~N -queda $alt ?1 readme r'i:dmi: ?1 sapi s,ap'i ?1 scanner sk'En&r diff --git a/dictsource/pt_rules b/dictsource/pt_rules index e1a5a932..ec031928 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -304,7 +304,7 @@ ?1 _n) e (nhu i // eg: nenhum, nenhuma, nenhuns, nenhumas. ?1 e (la_ 'E // eg: cadela, janela, vela, etc... ?1 C) e (cC ,E // eg: seleccionar, efectuar, etc... -?1 C) ecç 'Es // eg: selecção, etc... +?1 C) ecç 'Es // eg: selecção, etc... ?1 C) e (ã i // leão, panteão, etc. ?1 C) e (a i // oceano, etc. ?1 C) e (o 'i // eg: geologia, etc... @@ -345,69 +345,69 @@ sf) e (ra_ E // esfera, biosfera //sort - _com) e (L05_ e fiz) e (L05_ E + tiv) e (L05_ E // es- + _com) e (L05_ e _coub) e (L05_ E _exag) e (L05_ E _houv) e (L05_ E _perd) e (L05_ e _soub) e (L05_ E - tiv) e (L05_ E // es- + _rend) e (L06_ e + _vend) e (L06_ e _atend) e (L06_ e _compreend) e (L06_ e _entend) e (L06_ e _estend) e (L06_ e - _rend) e (L06_ e - _vend) e (L06_ e respond) e (L06_ e // cor- + bat) e (L07_ e // re- com- + ced) e (L07_ e // pro- con- su- + met) e (L07_ e // co- pro- arre- re- intro- compro- sub- + viv) e (L07_ e // re- + _beb) e (L07_ e + _com) e (L07_ e + _tem) e (L07_ e + colh) e (L07_ e // & es- + corr) e (L07_ e // per- con- in- so- dis- + torc) e (L07_ e // con- + venc) e (L07_ e // con- + vert) e (L07_ e // in- re- con- + _eleg) e (L07_ e + _ergu) e (L07_ e + _mord) e (L07_ e + _morr) e (L07_ e + _perd) e (L07_ e + _sofr) e (L07_ e + merec) e (L07_ e // des- + padec) e (L07_ e // com- + parec) e (L07_ e // a- rea- com- desa- _aborrec) e (L07_ e -_rejuvenec) e (L07_ e _adoec) e (L07_ e +_adormec) e (L07_ e _amanhec) e (L07_ e _anoitec) e (L07_ e _arrepend) e (L07_ e - _beb) e (L07_ e - _com) e (L07_ e _defend) e (L07_ e _depend) e (L07_ e - _eleg) e (L07_ e _enlouquec) e (L07_ e _entristec) e (L07_ e _envaidec) e (L07_ e _envelhec) e (L07_ e - _ergu) e (L07_ e _esclarec) e (L07_ e _escond) e (L07_ e _escurec) e (L07_ e _esquec) e (L07_ e _interromp) e (L07_ e - _mord) e (L07_ e - _morr) e (L07_ e _obedec) e (L07_ e - _perd) e (L07_ e - _sofr) e (L07_ e - _tem) e (L07_ e +_perec) e (L07_ e +_rejuvenec) e (L07_ e aprend) e (L07_ e // re- - bat) e (L07_ e // re- com- - ced) e (L07_ e // pro- con- su- - colh) e (L07_ e // & es- conhec) e (L07_ e // & re- des- - corr) e (L07_ e // per- con- in- so- dis- entend) e (L07_ e - merec) e (L07_ e // des- - met) e (L07_ e // co- pro- arre- re- intro- compro- sub- - padec) e (L07_ e // com- - parec) e (L07_ e // a- rea- com- desa- preend) e (L07_ e // sur- com- -_perec) e (L07_ e respond) e (L07_ e // cor- - torc) e (L07_ e // con- - venc) e (L07_ e // con- - vert) e (L07_ e // in- re- con- - viv) e (L07_ e // re- qu) e (brL04_ E _hosp) e (dL03_ E - _d) e (vL03_ e _gr) e (gL03_ e _n) e (grL03_ e _estr) ei (L03_ EI @@ -416,57 +416,67 @@ respond) e (L07_ e // cor- _s) e (quL02_ E _p) e (quL02_ E l) e (que_ E + _sug) e (rL02_ E _imp) e (rL03_ E + _sev) e (rL03_ E _reit) e (rL03_ E + _sinc) e (rL03_ E _g) e (rL04_ E _op) e (rL04_ E _qu) e (rL04_ E _alt) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E + _ven) e (rL04_ E _coop) e (rL04_ E _temp) e (rL04_ E - _ven) e (rL04_ E _v) e (rbL03_ E + _p) e (rdL02_ E + _l) e (rdL03_ E _h) e (rdL04_ E _) e (rguL02_ E _alb) e (rguL02_ E _enx) e (rguL02_ E _bez) e (rrL03_ e - _rejuven) e (çL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e + _p) e (sL01_ E + _d) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E _l) e (ssL02_ e _esp) e (ssL03_ e _m) e (tL03_ e _com) e (tL03_ e + _rem) e (tL03_ e prom) e (tL03_ e // com- _derr) e (tL03_ e - _rem) e (tL03_ e +_obsol) e (tL03_ e + _pr) e (tL03_ e _sol) e (trL03_ E _pen) e (trL04_ E - _atr) e (vL03_ e scr) e (vL03_ e // e- in- pre- ree- de- - _pr) e (zL04_ E + _d) e (vL03_ e + _atr) e (vL03_ e _embel) e (zL04_ E + pr) e (zL04_ E / des- menos- _acont) e (çL01_ e _arref) e (çL01_ e + par) e (çL03_ e // a- re- com- rea- desa- + _ado) e (çL03_ e _aqu) e (çL03_ e _car) e (çL03_ e -_estrem) e (çL03_ e _mer) e (çL03_ e _pad) e (çL03_ e // com- _per) e (çL03_ e - par) e (çL03_ e // a- re- com- rea- desa- +_rejuven) e (çL03_ e + conh) e (çL03_ e // re- _esqu) e (çL03_ e + _forn) e (çL03_ e _obed) e (çL03_ e _ofer) e (çL03_ e abast) e (çL03_ e // re- _aborr) e (çL03_ e -_fortal) e (çL03_ e - _ado) e (çL03_ e _amanh) e (çL03_ e _anoit) e (çL03_ e _enfraqu) e (çL03_ e @@ -476,8 +486,8 @@ _entrist) e (çL03_ e _envaid) e (çL03_ e _envelh) e (çL03_ e _esclar) e (çL03_ e - _forn) e (çL03_ e - conh) e (çL03_ e // re- +_estrem) e (çL03_ e +_fortal) e (çL03_ e //endsort @@ -787,6 +797,8 @@ _desenv) o (lvL02_ O _m) o (rrL01_ o _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. + _s) o (bL02_ O + _s) o (prL02_ O //endsort .group ô diff --git a/dictsource/ta_list b/dictsource/ta_list index 31b5e89d..083ff0e2 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -379,6 +379,7 @@ tamil தமிழ் $text பாதிக்கக் $alt புசு $alt புஸு $alt +பாதிக்காம $alt // initial த as [d] @@ -398,7 +399,6 @@ tamil தமிழ் $text தைவதம் $alt தாட்சண்யம் $alt தனம் $alt -திக்கற்ற $alt தானு $alt திட $alt தோ $alt @@ -446,6 +446,8 @@ tamil தமிழ் $text தம்ம $alt தாயம் $alt திமு $alt +தாவா $alt + // initial ட டார்ச் t.a:rtS diff --git a/dictsource/ta_rules b/dictsource/ta_rules index ee2b5310..89ae853f 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2009 to 2012 by Jonathan Duddington * + * Copyright (C) 2009 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -168,6 +168,7 @@ _) க (ங்கூலி gV _) க (ங்கை gV _) க (ங்கோத gV + _) கஜ (க்ஸ்தான kVzV _) க (ஞ்சா gV _) க (டகட gV _) க (டத்தில gV @@ -224,6 +225,7 @@ _) க (லீர gV _) க (லீல gV _) க (லீஷிய gV + _) கல்த (ா gVlt _) க (ளுக் gV _) க (வண gV _) க (வன gV @@ -329,6 +331,7 @@ _) கி (ளாL04ி k _) கி (ளாL04ு k _) கி (ளாL04ை k + _) கி (ளாமர g _) கி (ளாஸ்_ g _) கி (ளாஸ்_மேட k _) கிளிக் (_L29 kl.ik @@ -351,6 +354,7 @@ _) க (ுகநாத g _) க (ுகன g _) க (ுகராஜ g + _) க (ுகா g _) க (ுகை g _மன்மதக்) க (ுகை g _) க (ுஜராத g @@ -378,10 +382,13 @@ _மன்மதக்) க (ுகை g _) க (ுண்டத் k _) க (ுண்டம k _) க (ுண்டல k + _) க (ுண்டாக்கள k _) குண்டாந்த (டி gun.d.a:ntV _) க (ுண்டானில k _) க (ுண்டானை k _) க (ுண்டான் k + _) க (ுண்டாவி k + _) க (ுண்டாவை k _) க (ுண்டி k _) க (ுண்டின g _) குண்ட (ூர gun.t.V# @@ -393,6 +400,7 @@ _மன்மதக்) க (ுகை g _) க (ுபீர g _) க (ுபுகுபு g _) க (ுபுக் g + _) க (ுபேர g _) குப் (த gup _) க (ுப்புன g _) க (ுப்பென்ற g @@ -425,10 +433,12 @@ _மன்மதக்) க (ுகை g _) க (ுருமூர்த்தி g _) க (ுருரா g _) க (ுருவடி g + _) க (ுருவருள g _) க (ுருவா g _) க (ுருவாய g _) க (ுருவிட g _) க (ுருவின g + _) க (ுருவிற்க g _) க (ுருவு g _) க (ுருவுடை g _) க (ுருவை g @@ -520,6 +530,7 @@ _மன்மதக்) க (ுகை g _) க (ோர_முடிய k _) க (ோர_வேண்ட k _) க (ோரக g + _) க (ோரக்கூட k _) க (ோரத்_தாண்ட g _) க (ோரத்தால g _) க (ோரத்தை g @@ -553,6 +564,7 @@ _மன்மதக்) க (ுகை g _) க் (ரீன g _) க் (ரூப g _) க் (ரௌண்ட g + _) க் (ளாமர g _) க் (ளாஸ்_ g _) க்வ (A kw _) க் (வாலியர g @@ -704,6 +716,8 @@ _தொன்ம) க (ால k தென்) க (ிழ k _பா) க (ிஸ்தான k அப) க (ீர்த்தி k + க (ீழே_ k + க (ீழ்_ k _பல்) க (ு k மலைக்) க (ுகை g _பால்) க (ுட k @@ -767,6 +781,7 @@ _நினைவு) க (ூர k ம) க (ேசுவர H // need to restrict to _ம) and _வீரம) ?? சீர்) க (ேட k _லொ) கேட ke:t.V# + _நசி) க (ேத k ம) க (ேந்திர H _ரா) க (ேஷ k _மு) க (ேஷ k @@ -842,6 +857,7 @@ _கர்ப்ப) க்கி (ர gg _வி) க்க (ிரக gg சத்தியா) க்கி (ரக gg L03) க்கி (ரஹ gg // a,i +_சத்தியா) க்கி (ரஹ gg கு) க்கி (ராம gg அ) க்கி (ராம gg இ) க்கி (ராம gg @@ -925,9 +941,12 @@ _துப்பாக்கி) க்க (ுண்ட gg //sort _ராஞ்) ச tSV# + எபிL09ே) ச zV# + ராகவா) ச )(ாரி tS _ப) சக் tSVk _) ச (க்கரவர்த்தி tSV _) ச (க்கிலி tSV + _க) ச (க்ஸ்தான zV சங்க (ர s.VNkV _) ச (ட்டL08ஸ்கர tSV _) ச (ட்டினி tSV @@ -960,6 +979,7 @@ _விமோ) ச (ன tSV _நீலலோ) ச (னி tSV _மீனலோ) ச (னி tSV _) ச (ப்பL11் tSV + _) ச (ப்பலா tSV _) ச (ப்பா tSV _) ச (ப்பி tSV _) ச (ப்பு tSV @@ -970,6 +990,7 @@ _மீனலோ) ச (னி tSV _பங்) ச (ர tSV _பன்) ச (ர tSV _) சரசு (வதி sVrVs + _ந) சரத் zVrVt _ந) ச (ருதீன zV _) சர்ச (ி tSVrtS _) ச (ர்ச்சில tSV @@ -984,6 +1005,7 @@ _L04்விட்) ச (ர்லாந்த zV மருதா) ச (ல tSV வேதா) ச (ல tSV _சேஷா) ச (ல tSV + _ஹிமா) ச (ல tSV _தணிகா) ச (ல tSV அருணா) ச (ல tSV வெங்கடா) ச (ல tSV @@ -1025,7 +1047,17 @@ _தணிகா) ச (ல tSV ஆ) ச (ாரங்கள tS ஆ) ச (ாரத் tS ஆ) ச (ாரம tS + _ரங்கா) ச (ாரி tS + _வரதா) ச (ாரி tS + _வேதா) ச (ாரி tS +_கிருஷ்ணமா) ச (ாரி tS +_தேசிகா) ச (ாரி tS +_பட்டா) ச (ாரி tS +அனந்தா) ச (ாரி tS + ஆ) ச (ாரிய_ tS + ஆ) ச (ாரியார tS அ) ச (ாருதீன z + _) ச (ாருமதி tS _) சாருலத (ா tSa:rUlVt _) ச (ாருவ tS _ஹ) ச (ாரே z @@ -1086,6 +1118,7 @@ _தணிகா) ச (ல tSV _) சிம்பன்ச (ி tSimpVnz _மலே) ச (ிய s. இந்தோனே) ச (ிய s. + _) ச (ியர்ஸ tS _பக்தி_) சிரத் (தை srVd _) சிரத்த (ைL27 srVdd சி (ரம s @@ -1203,10 +1236,12 @@ _மங்களே) சு (வர s _) ச (ேரி tS _தல) ச (ேரி tS _) ச (ேர்கள tS + _) ச (ேர்மன tS _) ச (ேர்மேன tS _) ச (ேலஞ் tS _) ச (ேஷ்டை tS _) ச (ேஸ்_ tS + _) சைத (ன்ய tSaItV _) ச (ைத்திய tS _) ச (ைனா tS _) ச (ைனா_நேவால s @@ -1214,12 +1249,14 @@ _மங்களே) சு (வர s _) ச (ைனீஸ tS _) ச (ோட்டா tS ஓ) ச (ோன z + அரி) ச (ோன z _) ச (ோன்ன tS _) ச (ோவு tS _) ச (ோவெ tS _) ச (ௌக்கிதார tS _) ச (ௌதரி tS _) ச (ௌதிரி tS + _) ச (ௌத்தாலா tS _) சௌப (ாத்தி tSaUp _) ச (ௌபே tS _) ச (ௌஹான tS @@ -1246,11 +1283,16 @@ _மங்களே) சு (வர s _ப) ஜ (ார z அ) ஜ (ாருதீன z _நா) ஜ (ி z + _) ஜிப்(_ zip + _) ஜ (ிப்ப z _) ஜ (ியா z + _) ஜ (ீனத் z + _) ஜ (ீப்ரா z _) ஜ (ீரோ z _) ஜ (ுல்ஃபி z _) ஜ (ுல்பி z _) ஜு (வால dZ + _) ஜ (ெனித் z _) ஜ (ெராக்ஸ z //endsort @@ -1401,9 +1443,11 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ரங் t. _) டி (ரங்கு t. _) டி (ரபிள t. + _) டி (ரம d. _) டிரம்பெட் t.rVmpet. _) டிர (ஸ d.re _) டிர (ஸ்ட t.rV + _) டி (ரா_ d. _) டிராஃபிக் t.ra:fik _) டி (ராகுலா d. _) டிராக் t.ra:k @@ -1427,12 +1471,15 @@ _செண்) டிமெண்ட t.imen.t.V# _) டி (ராயிங் d. கொலஸ்) டி (ரால _|t. _) டி (ராலி t. + _) டி (ராவ d. _) டி (ராவல t. _) டி (ராவெல t. _) டிரிக (ர t.riggV _) டிரிக் t.rik _) டிரிக்க (ர t.riggV + _) டி (ரிங்_ t. _) டி (ரிங்க் d. + _) டி (ரிங்ஸ d. _) டிரினிட (ி t.rinit. _) டிரிப் t.rip _) டி (ரிம் t. @@ -1518,6 +1565,7 @@ _லான்_) ட (ென்னிஸ t. _) டைப (ாய்ட t.aIf _) டைப் t.aIp _) ட (ைம்_ t. + _) ட (ைல்ஸ t. _) டொக் t.ok _) ட (ோக்கன t. _) ட (ோக்கியோ t. @@ -1527,6 +1575,7 @@ _லான்_) ட (ென்னிஸ t. _) டோரண்ட (ோ t.o:rVn.t. _ப்ரி) ட (ோரிய t. _) டோர்னமெண்ட t.o:rnVmen.t.V# + _) ட (ோலிவுட் t. _லே) ட் t. @மெண்) ட் t. // -ment _பேண்) ட் t. @@ -1535,6 +1584,11 @@ _ஹெல்மெ) ட் t. ல) ட்சு (மண ks. ல) ட்சு (மி ks. _ல) ட்ட d.d.V# +_கோலிவு) ட்ட d.d.V# +_டோலிவு) ட்ட d.d.V# +_பாலிவு) ட்ட d.d.V# +_மாலிவு) ட்ட d.d.V# +_ஹாலிவு) ட்ட d.d.V# _ரெ) ட்ட (ிய d.d. இ) ட்ட (ிலி d.d. அப்பாயிண்) ட்மெண்ட t.men.t.V# @@ -1577,6 +1631,7 @@ _ஹெல்மெ) ட் t. _) ட்ரிக (ர t.riggV _) ட்ரிக் t.rik _) ட்ரிக்க (ர t.riggV + _) ட் (ரிங்_ t. _நியூ) ட் (ரின t. _) ட்ரினிட (ி t.rinit. _) ட் (ரிம் t. @@ -1642,6 +1697,8 @@ _நடுரோ) ட் (ல t. ஸ்) த (B t ப்) த tV ப்) த (B t + ட்) த tV + ட்) த (B t த் (_த t // exceptions, த as [d] @@ -1654,6 +1711,7 @@ _நடுரோ) ட் (ல t. _) த (கன dV _) த (கி dV _) த (க்க்ஷிண dV + _) த (க்ஷன dV _) த (க்ஷிண dV _) த (க்ஷிணா dV _) த (சகண்ட dV @@ -1686,6 +1744,7 @@ _நடுரோ) ட் (ல t. _) த (ட்சன dV _) த (ட்சிண dV _) த (ண்டக் dV + _) த (ண்டச்செலவ dV _) த (ண்டச்சோற dV _) த (ண்டத் dV _) த (ண்டன dV @@ -1714,6 +1773,7 @@ _நடுரோ) ட் (ல t. _) த (னுச dV _) த (னுஷ dV _) த (ன்மந்திரி dV + _) த (ன்ய dV _) த (ன்ராஜ dV _) த (ன்வந்தரி dV _) தபதப dVbVdVbV# @@ -1723,6 +1783,8 @@ _நடுரோ) ட் (ல t. _) த (ம்பதி dV _) த (ம்பிடி dV _) த (ம்மடிL11் dV + _) த (ம்மத் dV + _) த (ம்மம dV _) த (யவ dV _) த (யாணந்த dV _) த (யான dV @@ -1762,13 +1824,16 @@ _நடுரோ) ட் (ல t. _) த (ர்ப்பை dV _) த (ர்ம dV _) த (லித் dV + _) தலீத் dVli:t _அகாலி_) த (ள dV + _) த (ளவாய dV _) த (வக்கால dV _) த (வக்கோல dV _) த (வத்த dV _) த (வப் dV _) த (வம dV _) தவுலதாப (ாத dVvUlVda:b + _) த (வே dV _) த (ாக்கா d _) த (ாக்காத t _) த (ாக்காம t @@ -1804,12 +1869,14 @@ _அகாலி_) த (ள dV _) த (ாராள d _) த (ாராவி d _) த (ாவணி d - _) த (ாவா d + _) த (ாவாக்க d + _) த (ாவாவ d _) த (ாவேய d _) த (ாஸ d _) த (ிகம்பர d _) த (ிகில d _) த (ிகுதிகு d + _) த (ிக்கற்ற d _) த (ிக்கித்த d _) த (ிக்கில d _) த (ிக்கு d @@ -1853,7 +1920,6 @@ _அகாலி_) த (ள dV _) த (ிம்ம d _) தி (யாக t _) தி (யான d - _) தி (யேட்டர t _) த (ிரவ d _) த (ிரவிய d _) தி (ராட்சை d @@ -1881,7 +1947,10 @@ _அகாலி_) த (ள dV _) த (ிவால d _) த (ிவ்ய d _) த (ிவ்விய d + _) தீக்ஷணி (ய di:ks.Vn + _) த (ீக்ஷண்ய d _) த (ீக்ஷிதர d + _) தீட்சணி (ய di:d.tSVn. _) த (ீட்சண்ய d _) த (ீட்சித d _) த (ீட்சை d @@ -1894,6 +1963,7 @@ _அகாலி_) த (ள dV _) த (ீரச் d _) த (ீரத்துட d _) த (ீரன d + _) த (ீரமிக d _) த (ீரமில்ல d _) த (ீரமுட d _) த (ீரம்மிக d @@ -1909,6 +1979,7 @@ _) தீர்க்க (_சுமங்கலி di:rggV _) தீர்க்க (முள்ள di:rggV# _) தீர்க்க (ம்_ di:rggV _) தீர்க்க (ாயு di:rggV# + _) த (ீர்க்காலோசனை d _) த (ீவாளி d _) து(ரோக d _) த (ுக்க d @@ -1923,12 +1994,13 @@ _) தீர்க்க (_சுமங்கலி di:rggV _) த (ுன்மதி d _) த (ுன்மார்க்க d _) த (ுபாய d - _) த (ுபாஷி d + _) த (ுபாஷ d _) த (ுப்பட்டா d _) த (ுமளி d _) த (ுரதிருஷ்ட d _) த (ுரதிர்ஷ்ட d _) த (ுரதிஷ்ட d + _) துராக்க (ிர tra:gg _) த (ுராசை d _) த (ுரியோதனன d _) த (ுரியோதனா d @@ -2041,6 +2113,7 @@ _வசந்) த tV# _கௌ) த (மி tV _புல்) த (ரை tV _மண்) த (ரை tV + _சகுந்) த (லா tV _சாந்) த (லிங்க tV# _கீ) த (ா t _சீ) த (ா t @@ -2163,9 +2236,13 @@ L03வ்வு) த்த (ியோக dd _சுப) த்த (ிர dd _ரு) த்த (ிர dd _ரௌ) த்த (ிர dd + _சூ) த்த (ிரச் dd _சூ) த்த (ிரச்சி dd + _சூ) த்த (ிரத் dd _சூ) த்த (ிரன dd + _சூ) த்த (ிரப் dd _சூ) த்த (ிரரி dd + _சூ) த்த (ிரரே dd _சூ) த்த (ிரர் dd ஆதி) த்தி (ராவிட dd _சேஷா) த்த (ிரி dd @@ -2199,6 +2276,7 @@ _மொழி) த்து (வே dd _வில்_வி) த்த (ை dd _வில்வி) த்த (ை dd _வி) த்த (ைகள dd + _வி) த்த (ைக்க dd _வி) த்த (ைக்காக dd _வி) த்த (ைக்கு dd வி) த்த (ையாக dd @@ -2296,6 +2374,7 @@ _சி) த்ரலேக (ா trVle:k _) ப (கீர bV _) ப (குள bV _) ப (க்கிங்L06ாம bV + _) ப (க்கீர fV _) ப (க்கெட் bV _) ப (க்கென்ற bV _) பக் (த bVk @@ -2305,6 +2384,7 @@ _சி) த்ரலேக (ா trVle:k _) ப (ங்கம bV _) பங்க (ர bVNkV _) ப (ங்களா bV + _) ப (ங்களூர bV _) ப (ங்கார bV _) ப (ங்க் bV _) ப (சவகல்யாண bV @@ -2394,6 +2474,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (ராக்_ஒபாமா bV _) ப (ரிதா_ fV _) ப (ரிதாவ fV + _) ப (ரீத fV _) பரூக் fVrU:k _) ப (ரோட bV _) ப (ர்ஃபி bV @@ -2454,6 +2535,7 @@ _டீயும்_) ப (ன்னும்_ bV _) ப (லராம bV _) ப (லவந்த bV _) ப (லவான bV + _) ப (லவானவ pV _) ப (லவீன bV _) ப (லஹீன bV _) பலாத்க (ார bVla:dk @@ -2511,6 +2593,7 @@ _டீயும்_) ப (ன்னும்_ bV _) பாங்க (ாக் ba:Nk _) ப (ாங்கில b _) ப (ாங்க் b + _) ப (ாசிL04 f _) ப (ாசில f _) ப (ாசு b _) பாசுப (த pa:sUpV @@ -2547,6 +2630,7 @@ _டெட்_) ப (ாடி b _) ப (ாதிக்கவா b _) ப (ாதிக்கவில் b _) ப (ாதிக்காத b + _) ப (ாதிக்காமல b _) ப (ாதிக்கால p _) ப (ாதிக்கின்ற b _) ப (ாதிக்கிற b @@ -2603,6 +2687,7 @@ _டெட்_) ப (ாடி b _) பாப (ாவ ba:b _) ப (ாபிலோன b _) ப (ாபுவ b +_டைம்_) ப (ாம b _) ப (ாமாவ b _) ப (ாமினி b _) ப (ாம்பே b @@ -2616,6 +2701,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாரதி b _) ப (ாரத்த b _) ப (ாரம b + _) ப (ாரமை p _) ப (ாரம்பரிய p _) ப (ாரம்மா p _) ப (ாரவி b @@ -2661,6 +2747,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ாலுவ b _) ப (ாலே_L25 b _) ப (ாலை p + _) ப (ாலையா b _) ப (ால் p _) ப (ால்_தாக்கரே b _) பால்க (னி ba:lkV @@ -2726,6 +2813,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ினிஷ f _) ப (ின்_லேடன b _) ப (ின்னங்கள b + _) ப (ின்னத்த b _) ப (ின்னத்தால b _) ப (ின்னத்தை b _) ப (ின்னம b @@ -2791,6 +2879,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரமுகர p _) பி (ரமை b _) பி (ரமோஷன p + _) பி (ரமோஸ b _) ப (ிரம்ம b _) பி (ரம்ம b _) பி (ரம்மன b @@ -2805,6 +2894,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரளய p _) பி (ரவகி p _) பி (ரவாக p + _) பி (ரவாள p _) பி (ரவீண p _) பி (ரவீன p _) பி (ரவுச b @@ -2812,6 +2902,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரவேசி p _) பி (ரஷ் b _) பி (ரஷ்ட p + _) பி (ரஸ p _) பி (ரஸல்ஸ b _) பி (ரஸாத p _) பி (ரஸ்தா p @@ -2845,6 +2936,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரான்ச f _) பி (ரான்தி_ b _) பி (ரான்ஸ f + _) பி (ராபல்ய p _) பி (ராப் p _) பி (ராமண b _) பி (ராமணன b @@ -2852,6 +2944,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ராமிக் b _) பி (ராமின்_ b _) பி (ராமிஸ p + _) பி (ராம்மண b _) பி (ராய்லர b _) பி (ரார்தன p _) பி (ரார்தி p @@ -2864,6 +2957,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ராவுக்கு b _) பி (ராவை b _) பி (ரிகேட b + _) பி (ரிஜேஷ b _) பி (ரிட b _) பிரிட (ோரிய prit. _) பி (ரிட்டோரிய p @@ -2887,6 +2981,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரியாவின p _) பி (ரியாவு p _) பி (ரியாவை p + _) பி (ரில்லிய b _) பி (ரிஸ்டன b _) பி (ரிஸ்டல b _) பிரிஸ்ப (ேன brisb @@ -2914,6 +3009,7 @@ _விளையாடு_) ப (ாம்பே p _) பி (ரோகிதர p _) பி (ரௌச b _) பி (ரௌன b + _) ப (ிர்லா b _) ப (ிலாஸ்பூர b _) பிலிடெல்ப (ிய filidelf _) பிலிம filmV# @@ -2966,6 +3062,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ீடித்த p _) ப (ீடிப்புகை b _) ப (ீடிய b + _) ப (ீடியாட் p _) ப (ீட்டில்ஸ b _) பீட்ரூட் bi:t.ru:t. _) பீத (ோவன bi:t @@ -2979,6 +3076,7 @@ _விளையாடு_) ப (ாம்பே p _) பீ (ராமண b _) ப (ீராமணர b _) ப (ீரிட p + _) ப (ீரியட p _) ப (ீரோ b _) ப (ீர்_முகமத p _) ப (ீர்_முஹமத p @@ -3083,6 +3181,8 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெங்களூர b _) ப (ெங்கால b _) பெசண்ட besVn.t.V# + _) பெச (வாடா beZV + _) பெஜ (வாடா beZV _) பெஞ்ச ben^tSV# _) ப (ெஞ்சமின b _) பெஞ்ச (மின ben^dZV @@ -3104,6 +3204,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெப்ரவரி f _) ப (ெயில f _) பெரோஸ fero:zV# + _) ப (ெர்க்கிலி b _) பெர்ட் (ரண்ட bert. _) ப (ெர்த் b _) ப (ெர்னாட்ஷா b @@ -3152,6 +3253,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ைகுக்கு b _) ப (ைக்கின b _) ப (ைக்கிற்க b + _) ப (ைக்கில b _) ப (ைக்குகள b _) ப (ைக்கும b _) ப (ைசன b @@ -3171,6 +3273,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ொம்மனாட்டி p _) ப (ொம்மல b _) ப (ொம்மை b + _) ப (ோஃபர்ஸ b _) ப (ோஃபோர் b _) ப (ோக_L13 b _) ப (ோகங்க b @@ -3188,6 +3291,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோகிய b _) ப (ோக்கஸ f _) ப (ோங்கா b + _) ப (ோங்கானும p _) ப (ோங்கு b _) ப (ோஜ b _) ப (ோடோ b @@ -3195,6 +3299,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோட்டோக்க f _) போட்டோக்ராப (ர fo:t.t.o:gra:fV _) ப (ோட்டோதான f + _) ப (ோணி b _) ப (ோண்டா b _) ப (ோண்டி b _) ப (ோதகன b @@ -3223,6 +3328,7 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ோன்கூட f _) ப (ோன்லகூட f _) ப (ோன்ஸ்லே b + _) போப (ர்ஸ bo:fV _) போப (ால bo:p _) போப (ோர் bo:f _) ப (ோரடி b @@ -3365,6 +3471,7 @@ _விரகதா) ப (+ bV# _மீள்) ப (தி pV சீதா) பதி pVti சேது) பதி pVti + _விடு) ப (தி pV தரணி) பதி pVti திரௌ) ப (தி pV பிரஜா) பத (ி pVt @@ -3389,6 +3496,7 @@ _ராஷ்டிர) ப (தி pV _க) ப (த் bV அரா) பத் fVt அல்) ப (த் pV + _கிலா) பத் fVt _தா) ப (த்த bV வீர) ப (த்தினி pV _ரிஷி) ப (த்தினி pV @@ -3419,6 +3527,7 @@ _சொந்த) ப (ந்த bV _ஊடு) ப (யிர pV _நடை) ப (யிற்சி pV கா) ப (ர bV +_ஜெனி) ப (ர fV நாகா) ப (ரண bV _ஒலி) ப (ரப் pV _ஒளி) ப (ரப் pV @@ -3429,6 +3538,7 @@ _சொந்த) ப (ந்த bV _கார்) ப (ரேஷன pV _பம்) ப (ர்_ pV _கன்) ப (ர்ம fV + இன்) ப (ர்ம fV கரம்) ப (ற் pV _தீ) ப (ற்ற pV ஆள்) ப (ற்ற pV @@ -3463,6 +3573,7 @@ _முனிசி) ப (ல pV _ஷில்) ப (ா p _முஸ்த) ப (ா f _ஹனி) ப (ா f + _ஹனீ) ப (ா f _போதும்) ப (ா p _போலாம்) ப (ா p _வேண்டாம்) ப (ா p @@ -3506,8 +3617,10 @@ _வெளிப்) ப (ாக b ஒரு) ப (ாத p _படு) ப (ாத p _மறு) ப (ாத p + பரீதா) ப (ாத b ஆமதா) ப (ாத b அL06மதா) ப (ாத b +அலாகா) ப (ாத b இஸ்லாமா) ப (ாத b ஒளரங்கா) ப (ாத b ஔரங்கா) ப (ாத b @@ -3554,6 +3667,7 @@ _ப்ரின்சி) ப (ால p முக) ப (ாவ b அட) ப (ாவ p வீண்) ப (ாவ p + _படு) ப (ாவ p அடி) ப (ாவி p _நவ) ப (ாஷ p _தமிழ்ப்) ப (ாஷ _b @@ -3605,6 +3719,7 @@ _கன்னா) ப (ின்னா p @) ப (ின்னால்_ p _) ப (ிப்ரவரி f _லெஸ்) ப (ியன b + _மா) ப (ியா f _கன்) பி (யுச f _பெர்) பி (யூம f _வரப்) பி (ரL04ாத p @@ -3625,6 +3740,7 @@ _ஞானப்) பிரக (ா prVk வீண்) பி (ரமை b துஷ்) பி (ரயோக p L03ந்தப்) பி (ரளய p + _சொற்) பி (ரவாக p எக்ஸ்) பிர (ஸ pre ஆ) பி (ரஹாம b பயப்) பி (ராந்தி b @@ -3654,6 +3770,7 @@ L03ந்தப்) பி (ராய p ஆண்) ப (ிள்ளை p பெண்) ப (ிள்ளை p அச்சா) ப (ீ f + _ர) பீக் fi:k உப) ப (ீட p விக்கி) ப (ீடியா p இம்) ப (ீரியல p @@ -3661,6 +3778,7 @@ L03ந்தப்) பி (ராய p _அன்) ப (ுட b _மார்) ப (ுட b ராஜ) ப (ுதன p + _மின்) ப (ுத்தக p _) புத்தம்ப (ுத puttVmp ராஜ) ப (ுத்திர p வாயு) ப (ுத்திர p @@ -3679,6 +3797,7 @@ L03ந்தப்) பி (ராய p _பா) ப (ுலர p _) பு (ளோரன்ஸ f மண்) ப (ுழு p + _ஷாம்) ப (ூ p ப (ூச்சி p ம்) ப (ூச்சி b உறுதி) ப (ூண்ட p @@ -3708,6 +3827,7 @@ _கோலாலம்) ப (ூர p _கை) ப (ேசி p _செல்) ப (ேசி p அலை) ப (ேசி p + _திரை) ப (ேசி p தொலை) ப (ேசி p _மறு) ப (ேச்ச p ஒரு) ப (ேச்ச p @@ -3732,6 +3852,7 @@ _கோலாலம்) ப (ூர p _ வெடி) ப (ொரு p _பழம்) ப (ொருள p _தொல்) ப (ொருள p + _தேடு) ப (ொறி p வீண்) ப (ொழுத p ப (ொழுதிலா_+ p ப (ொழுதிலும்_+ p @@ -3743,6 +3864,7 @@ _ வெடி) ப (ொரு p ப (ொழுதே_+ p ப (ொழுதோ_+ p _விலை) ப (ோ p + _பிர) ப (ோL04 p _ஏக) ப (ோக b ராஜ) ப (ோக b ப (ோக_ p @@ -3780,6 +3902,7 @@ _விலை) ப (ோ p ப (ோன_ p ப (ோனது_ p ப (ோனா p + அல்) ப (ோன்சா f ப (ோன்ற+ p // ?? end-of-word + suffix ?? அல்) ப (ோன்ஸ f ப (ோயிரு p @@ -3802,7 +3925,9 @@ _விலை) ப (ோ p _டே) ப (் p _போ) ப் p _லாக) ப் p + ஆசி) ப் f _டெஸ்க்டா) ப் p + ஆ) ப் (கன f ஆ) ப் (கான f _பா) ப்க (ார்ன pk _ர) ப்ச (ர ptSV @@ -3810,6 +3935,11 @@ _டெஸ்க்டா) ப் p _லி) ப் (ட f _மைக்ரோசா) ப் (ட f _சா) ப்ட் (வேர ft + _ச) ப் (த_ p + _ச) ப்த (மி_ ptV + _ச) ப்த (மிய ptV + _ச) ப் (தரிஷி p + _ச) ப் (தஸ்வர p _ஹி) ப்னாட (ிச pna:t. கர்) ப்ப bbV# _நவா) ப்ப bbV# @@ -3822,6 +3952,7 @@ _மைக்ரோசா) ப் (ட f _ர) ப்ப (ர bbV ஆ) ப்ப (ரிக்க fV தென்னா) ப்ப (ரிக்க fV + _துர்) ப்ப (ல bbV உ) ப்ப (லா bbV உ) ப்ப (லாக bbV உ) ப்ப (லான bbV @@ -3837,6 +3968,8 @@ _மைக்ரோசா) ப் (ட f _ஜ) ப்ப (ார bb _துர்) ப்ப (ாஷ bb அ) ப்ப (ாஸ bb + அ) ப்ப (ாஸாமி pp + அ) ப்ப (ாஸ்வாமி pp உ) ப்ப (ி_ bb _ட) ப்ப (ிங் bb உ) ப்ப (ின_ bb @@ -3848,6 +3981,8 @@ _யாதவ) ப்பி (ரகாச pp L03) ப்பி (ரகார pp _வெளி) ப்பி (ரகார pp அதிக) ப்பி (ரசங்க pp + _வன) ப்பி (ரதேச pp +_காட்டு) ப்பி (ரதேச pp _நில) ப்பி (ரபு pp _சத்திய) ப்பி (ரமா pp மன) ப்பி (ரமை bb @@ -3861,10 +3996,12 @@ _சத்திய) ப்பி (ரமா pp _மன) ப்பி (ரவாக pp _ரத்த) ப்பி (ரவாக pp இசை) ப்பி (ரவாக pp + உரை) ப்பி (ரவாக pp இரத்த) ப்பி (ரவாக pp _ஒL10ி) ப்பி (ரவாக pp தேச) ப்பி (ரஷ்ட pp _ஜாதி) ப்பி (ரஷ்ட pp + _வான) ப்பி (ரஸ்த pp ஆ) ப்பி (ரிக்க f தென்னா) ப்பி (ரிக்க fV _கஜ) ப்ப (ிருஷ்ட bb @@ -4028,6 +4165,8 @@ _சந்தேக) ப்ப (ுத்தி bb _உ) ஸ்பெக் zbek _நவா) ஸ zV# பெர்னாண்ட) ஸ zV# + _ம) ஸ்த (ூர zd + அரி) ஸ (ோன z .group ஹ ஹ HV diff --git a/phsource/ph_english b/phsource/ph_english index 4f7bbdbd..48368c97 100644 --- a/phsource/ph_english +++ b/phsource/ph_english @@ -162,7 +162,7 @@ endphoneme phoneme @L vowel starttype #@ endtype l - ipa əl + ipa ə|l unstressed length 160 CALL vowelstart_l diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index ee3b2c97..a4637e41 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -168,7 +168,9 @@ phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in Ameri vowel starttype #a endtype #@ length 250 ipa aː - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/aa_r) endphoneme @@ -211,7 +213,9 @@ phoneme O@ vowel starttype #o endtype #@ length 230 ipa ɔ - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/oo_r) endphoneme @@ -219,7 +223,9 @@ phoneme o@ vowel starttype #o endtype #@ length 230 ipa o - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/oo_r) endphoneme @@ -305,7 +311,9 @@ phoneme e@ vowel starttype #e endtype #@ length 220 ipa e - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vdiph2/e@) endphoneme @@ -314,7 +322,9 @@ phoneme i@3 vowel starttype #i endtype #@ ipa ɪ length 240 - AppendPhoneme(r) + IF NOT nextPhW(r) THEN + AppendPhoneme(r) + ENDIF FMT(vowelr/i_r) endphoneme @@ -380,11 +390,11 @@ phoneme r liquid rhotic lengthmod 7 trill - IF nextPh(isNotVowel) THEN ChangePhoneme(r/) ENDIF CALL base/r + ipa r endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 93d2454e..662689c7 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -151,7 +151,7 @@ endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vowel starttype #a endtype #a - ipa ɑːɹ + ipa ɑː|ɹ IF nextPh(r-) THEN ipa ɑː ENDIF @@ -192,7 +192,7 @@ endphoneme phoneme O@ vowel starttype #o endtype #@ length 250 - ipa ɔːɹ + ipa ɔː|ɹ IF nextPhW(r) THEN ipa ɔː ENDIF @@ -204,7 +204,7 @@ endphoneme phoneme o@ vowel starttype #o endtype #@ length 250 - ipa oːɹ + ipa oː|ɹ IF nextPhW(r) THEN ipa oː ENDIF @@ -269,7 +269,7 @@ endphoneme phoneme e@ vowel starttype #e endtype #@ length 280 - ipa ɛɹ + ipa ɛ|ɹ IF nextPhW(r) THEN ipa ɛ ENDIF @@ -288,7 +288,7 @@ endphoneme phoneme i@3 vowel starttype #i endtype #@ length 280 - ipa ɪɹ + ipa ɪ|ɹ IF nextPhW(r) THEN ipa ɪ ENDIF @@ -300,7 +300,7 @@ endphoneme phoneme U@ vowel starttype #@ endtype #@ length 250 - ipa ʊɹ + ipa ʊ|ɹ IF nextPhW(r-) THEN ipa ʊ ENDIF diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 762f6e58..35bcb361 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -44,6 +44,7 @@ extern void FindPhonemesUsed(void); extern void DisplayErrorFile(const char *fname); +extern int utf8_in(int *c, const char *buf); extern int utf8_out(unsigned int c, char *buf); extern void DrawEnvelopes(); extern void ReadPhondataManifest(); @@ -157,6 +158,7 @@ static keywtab_t k_properties[] = { enum { kPHONEMESTART = 1, + kUTF8_BOM, kPROCEDURE, kENDPHONEME, kENDPROCEDURE, @@ -210,6 +212,8 @@ enum { kTUNE_SPLIT, }; +static const char utf8_bom[] = {0xef,0xbb,0xbf,0}; + static keywtab_t k_intonation[] = { {"tune", 0, kTUNE}, {"endtune", 0, kENDTUNE}, @@ -250,6 +254,7 @@ static keywtab_t keywords[] = { {"phonemenumber",tSTATEMENT, kPHONEMENUMBER}, {"phonemetable",tSTATEMENT, kPHONEMETABLE}, {"include", tSTATEMENT, kINCLUDE}, + {utf8_bom, tSTATEMENT, kUTF8_BOM}, {"phoneme", tSTATEMENT, kPHONEMESTART}, {"procedure", tSTATEMENT, kPROCEDURE}, @@ -2720,11 +2725,14 @@ int CompilePhoneme(int compile_phoneme) int keyword; int value; int phcode = 0; + int flags; int ix; - unsigned int c; + int start; + int count; + int c; char *p; char number_buf[12]; - char ipa_buf[N_ITEM_STRING]; + char ipa_buf[N_ITEM_STRING+1]; PHONEME_TAB phoneme_out2; PHONEME_PROG_LOG phoneme_prog_log; @@ -2852,32 +2860,58 @@ int CompilePhoneme(int compile_phoneme) strcpy(item_string," "); // copy the string, recognize characters in the form U+9999 - p = item_string; - ix = 0; - while((c = *p++) != 0) + flags = 0; + count = 0; + ix = 1; + + for(p=item_string; *p != 0;) { + p += utf8_in(&c, p); + + if((c == '|') && (count > 0)) + { + // '|' means don't allow a tie or joiner before this letter + flags |= (1 << (count -1)); + } + else if((c=='U') && (p[0]=='+')) { + int j; // U+9999 - memcpy(number_buf,&p[1],4); // U+ should be followed by 4 hex digits + p++; + memcpy(number_buf,p,4); // U+ should be followed by 4 hex digits number_buf[4] = 0; - c = 0; + c = '#'; sscanf(number_buf,"%x",&c); - p += 5; + + // move past the 4 hexdecimal digits + for(j=0; j<4; j++) + { + if(!isalnum(*p)) + break; + p++; + } ix += utf8_out(c, &ipa_buf[ix]); + count++; } else { - ipa_buf[ix++] = c; + ix += utf8_out(c, &ipa_buf[ix]); + count++; } } + ipa_buf[0] = flags; ipa_buf[ix] = 0; - value = strlen(ipa_buf); // number of UTF-8 bytes + + start = 1; + if(flags != 0) + start = 0; // only include the flags byte if bits are set + value = strlen(&ipa_buf[start]); // number of UTF-8 bytes *prog_out++ = (i_IPA_NAME << 8) + value; for(ix=0; ix < value; ix += 2) { - *prog_out++ = (ipa_buf[ix] << 8) + (ipa_buf[ix+1] & 0xff); + *prog_out++ = (ipa_buf[ix+start] << 8) + (ipa_buf[ix+start+1] & 0xff); } break; } @@ -3400,6 +3434,9 @@ static void CompilePhonemeFiles() switch(item) { + case kUTF8_BOM: + break; // ignore bytes 0xef 0xbb 0xbf + case kINCLUDE: NextItem(tSTRING); sprintf(buf,"%s%s",path_source,item_string); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 2c9ffcd7..720c5723 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -524,15 +524,14 @@ unsigned short ipa1[96] = { }; -char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa) -{//===================================================================================== +char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags) +{//=================================================================================================== int c; int mnem; int len; int first; int ix = 0; char *p; - unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme PHONEME_DATA phdata; if(ph->code == phonEND_WORD) @@ -564,20 +563,28 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int InterpretPhoneme(NULL, 0, plist, &phdata, NULL); } - len = strlen(phdata.ipa_string); + p = phdata.ipa_string; + if(*p == 0x20) + { + // indicates no name for this phoneme + *phon_out = 0; + return(phon_out); + } + if((*p != 0) && ((*p & 0xff) < 0x20)) + { + // name starts with a flags byte + if(flags != NULL) + *flags = *p; + p++; + } + + len = strlen(p); if(len > 0) { - if((ipa_control = phdata.ipa_string[0]) > 0x20) - { - strcpy(&phon_out[ix], phdata.ipa_string); - ix += len; - } - if(ipa_control >= 0x20) - { - phon_out = &phon_out[ix]; - *phon_out = 0; - return(phon_out); // 0x20 = ignore phoneme - } + strcpy(phon_out, p); + phon_out += len; + *phon_out = 0; + return(phon_out); } } @@ -630,12 +637,17 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) unsigned int max_len; int phon_out_ix=0; int stress; - unsigned int c; + int c; + char *p; char *buf; + int count; + int flags; char phon_buf[30]; + char phon_buf2[30]; PHONEME_LIST *plist; static const char *stress_chars = "==,,''"; + static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner if(phon_out != NULL) { @@ -672,22 +684,38 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) } } - buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa); + flags = 0; + WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); + count = 0; + for(p=phon_buf2; *p != 0;) + { + p += utf8_in(&c, p); + if(use_ipa > 1) + { + // look for non-inital alphabetic character, but not diacritic, superscript etc. + if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) + { + buf += utf8_out(char_tie[use_ipa-2], buf); + } + } + buf += utf8_out(c, buf); + count++; + } if(plist->ph->code != phonSWITCH) { if(plist->synthflags & SFLAG_LENGTHEN) { - buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa, NULL); } if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) { // syllablic consonant - buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa, NULL); } if(plist->tone_ph > 0) { - buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa); + buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa, NULL); } } diff --git a/src/espeak.cpp b/src/espeak.cpp index 25bc9aac..f9669a9e 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -67,6 +67,7 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" +"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -362,7 +363,7 @@ int main (int argc, char **argv) {"path", required_argument, 0, 0x107}, {"phonout", required_argument, 0, 0x108}, {"pho", no_argument, 0, 0x109}, - {"ipa", no_argument, 0, 0x10a}, + {"ipa", optional_argument, 0, 0x10a}, {"version", no_argument, 0, 0x10b}, {0, 0, 0, 0} }; @@ -604,6 +605,17 @@ int main (int argc, char **argv) case 0x10a: // --ipa option_phonemes = 3; + if(optarg2 != NULL) + { + value = -1; + sscanf(optarg2,"%d",&value); + if((value<0) || (value>2)) + { + fprintf(stderr,"Bad value for -ipa=\n"); + value = 0; + } + option_phonemes += value; + } break; case 0x10b: // -version diff --git a/src/speak.cpp b/src/speak.cpp index 661df32c..7ce8e70a 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -101,6 +101,7 @@ static const char *help_text = "\t Compile pronunciation rules and dictionary from the current\n" "\t directory. specifies the language\n" "--ipa Write phonemes to stdout using International Phonetic Alphabet\n" +"\t --ipa=1 Use ties, --ipa=2 Use ZWJ\n" "--path=\"\"\n" "\t Specifies the directory containing the espeak-data directory\n" "--pho Write mbrola phoneme data (.pho) to stdout or to the file in --phonout\n" @@ -485,7 +486,7 @@ int main (int argc, char **argv) {"path", required_argument, 0, 0x107}, {"phonout", required_argument, 0, 0x108}, {"pho", no_argument, 0, 0x109}, - {"ipa", no_argument, 0, 0x10a}, + {"ipa", optional_argument, 0, 0x10a}, {"version", no_argument, 0, 0x10b}, {0, 0, 0, 0} }; @@ -723,6 +724,17 @@ int main (int argc, char **argv) case 0x10a: // --ipa option_phonemes = 3; + if(optarg2 != NULL) + { + value = -1; + sscanf(optarg2,"%d",&value); + if((value<0) || (value>2)) + { + fprintf(stderr,"Bad value for -ipa=\n"); + value = 0; + } + option_phonemes += value; + } break; case 0x10b: // --version diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index 78feaff8..6c5d6bc3 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -82,12 +82,12 @@ void WVoiceChanged(voice_t *wvoice) static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) {//====================================================================== ENTER("dispatch_audio"); - + int a_wave_can_be_played = fifo_is_command_enabled(); - + #ifdef DEBUG_ENABLED - SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", - (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, + SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", + (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, (event) ? event->sample : 0, a_wave_can_be_played); #endif @@ -134,8 +134,8 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) while(a_wave_can_be_played) { // TBD: some event are filtered here but some insight might be given // TBD: in synthesise.cpp for avoiding to create WORDs with size=0. - // TBD: For example sentence "or ALT)." returns three words - // "or", "ALT" and "". + // TBD: For example sentence "or ALT)." returns three words + // "or", "ALT" and "". // TBD: the last one has its size=0. if (event && (event->type == espeakEVENT_WORD) && (event->length==0)) { @@ -171,7 +171,7 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event) } SHOW_TIME("LEAVE dispatch_audio\n"); - + return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error } @@ -183,12 +183,12 @@ static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_ int i=0; // The audio data are written to the output device. - // The list of events in event_list (index: event_list_ix) is read: + // The list of events in event_list (index: event_list_ix) is read: // Each event is declared to the "event" object which stores them internally. // The event object is responsible of calling the external callback // as soon as the relevant audio sample is played. - do + do { // for each event espeak_EVENT* event; if (event_list_ix == 0) @@ -231,7 +231,7 @@ int sync_espeak_terminated_msg( uint32_t unique_identifier, void* user_data) if (my_mode==AUDIO_OUTPUT_PLAYBACK) { - while(1) + while(1) { espeak_ERROR a_error = event_declare(event_list); if (a_error != EE_BUFFER_FULL) @@ -290,14 +290,14 @@ static void select_output(espeak_AUDIO_OUTPUT output_type) int GetFileLength(const char *filename) {//==================================== struct stat statbuf; - + if(stat(filename,&statbuf) != 0) return(0); - + if((statbuf.st_mode & S_IFMT) == S_IFDIR) // if(S_ISDIR(statbuf.st_mode)) return(-2); // a directory - + return(statbuf.st_size); } // end of GetFileLength @@ -337,7 +337,7 @@ static void init_path(const char *path) { sprintf(path_home,"%s/espeak-data",env); if(GetFileLength(path_home) == -2) - return; // an espeak-data directory exists + return; // an espeak-data directory exists } buf[0] = 0; @@ -362,7 +362,7 @@ static void init_path(const char *path) { snprintf(path_home,sizeof(path_home),"%s/espeak-data",env); if(GetFileLength(path_home) == -2) - return; // an espeak-data directory exists + return; // an espeak-data directory exists } snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME")); @@ -561,21 +561,21 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un ENTER("MarkerEvent"); espeak_EVENT *ep; double time; - + if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) return; - + ep = &event_list[event_list_ix++]; ep->type = (espeak_EVENT_TYPE)type; ep->unique_identifier = my_unique_identifier; ep->user_data = my_user_data; ep->text_position = char_position & 0xffffff; ep->length = char_position >> 24; - + time = (double(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate; ep->audio_position = int(time); ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); - + #ifdef DEBUG_ENABLED SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", @@ -605,22 +605,22 @@ void MarkerEvent(int type, unsigned int char_position, int value, int value2, un -espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size, - unsigned int position, espeak_POSITION_TYPE position_type, +espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size, + unsigned int position, espeak_POSITION_TYPE position_type, unsigned int end_position, unsigned int flags, void* user_data) {//=========================================================================== - + #ifdef DEBUG_ENABLED ENTER("sync_espeak_Synth"); SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); #endif espeak_ERROR aStatus; - + InitText(flags); my_unique_identifier = unique_identifier; my_user_data = user_data; - + for (int i=0; i < N_SPEECH_PARAM; i++) saved_parameters[i] = param_stack[0].parameter[i]; @@ -629,26 +629,26 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, case POS_CHARACTER: skip_characters = position; break; - + case POS_WORD: skip_words = position; break; - + case POS_SENTENCE: skip_sentences = position; break; - + } if(skip_characters || skip_words || skip_sentences) skipping_text = 1; - + end_character_position = end_position; - + aStatus = Synthesize(unique_identifier, text, flags); #ifdef USE_ASYNC wave_flush(my_audio); #endif - + SHOW_TIME("LEAVE sync_espeak_Synth"); return aStatus; } // end of sync_espeak_Synth @@ -656,29 +656,29 @@ espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, -espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size, - const char *index_mark, unsigned int end_position, +espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size, + const char *index_mark, unsigned int end_position, unsigned int flags, void* user_data) {//========================================================================= espeak_ERROR aStatus; - + InitText(flags); - + my_unique_identifier = unique_identifier; my_user_data = user_data; - + if(index_mark != NULL) { strncpy0(skip_marker, index_mark, sizeof(skip_marker)); skipping_text = 1; } - + end_character_position = end_position; - - + + aStatus = Synthesize(unique_identifier, text, flags | espeakSSML); SHOW_TIME("LEAVE sync_espeak_Synth_Mark"); - + return (aStatus); } // end of sync_espeak_Synth_Mark @@ -710,7 +710,7 @@ void sync_espeak_Char(wchar_t character) char buf[80]; my_unique_identifier = 0; my_user_data = NULL; - + sprintf(buf,"&#%d;",character); Synthesize(0, buf,espeakSSML); } @@ -722,7 +722,7 @@ void sync_espeak_SetPunctuationList(const wchar_t *punctlist) // Set the list of punctuation which are spoken for "some". my_unique_identifier = 0; my_user_data = NULL; - + wcsncpy(option_punctlist, punctlist, N_PUNCTLIST); option_punctlist[N_PUNCTLIST-1] = 0; } // end of sync_espeak_SetPunctuationList @@ -771,7 +771,7 @@ ENTER("espeak_Initialize"); setlocale(LC_CTYPE,""); } #endif - + init_path(path); initialise(options); select_output(output_type); @@ -788,30 +788,30 @@ ENTER("espeak_Initialize"); outbuf = (unsigned char*)realloc(outbuf,outbuf_size); if((out_start = outbuf) == NULL) return(EE_INTERNAL_ERROR); - + // allocate space for event list. Allow 200 events per second. // Add a constant to allow for very small buf_length n_event_list = (buf_length*200)/1000 + 20; if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) return(EE_INTERNAL_ERROR); - + option_phonemes = 0; option_mbrola_phonemes = 0; option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); VoiceReset(0); // SetVoiceByName("default"); - + for(param=0; paramu.my_mark.unique_identifier; - + // Create the "terminated msg" command (same uid) t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data); - + // Try to add these 2 commands (single transaction) if (c1 && c2) { @@ -1152,15 +1152,15 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) value=0 No phoneme output (default) value=1 Output the translated phoneme symbols for the text value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) - value=3 as (1), but produces IPA phoneme names rather than ascii + value=3 as (1), but produces IPA phoneme names rather than ascii bit 4: produce mbrola pho data */ - option_phonemes = value & 3; + option_phonemes = value & 7; option_mbrola_phonemes = value & 16; f_trans = stream; if(stream == NULL) f_trans = stderr; - + } // end of espeak_SetPhonemes @@ -1269,4 +1269,4 @@ ESPEAK_API const char *espeak_Info(const char **ptr) #pragma GCC visibility pop - + diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 0abda433..961254ef 100644 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * 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 * @@ -490,7 +490,7 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr if(ph->code != phonEND_WORD) { char phoneme_name[16]; - WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA); + WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name); } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 55f6bff4..a2e35543 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,8 +35,8 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.39 01.Mar.13"; -const int version_phdata = 0x014639; +const char *version_string = "1.46.40 03.Mar.13"; +const int version_phdata = 0x014640; int option_device_number = -1; FILE *f_logespeak = NULL; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 5db0db9e..0928c08d 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1438,7 +1438,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) } else { - WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); + WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); done_phoneme_marker = 1; } @@ -1751,7 +1751,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) if((option_phoneme_events) && (done_phoneme_marker == 0)) { - WritePhMnemonic(phoneme_name, p->ph, p, use_ipa); + WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL); DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name); } @@ -1937,8 +1937,8 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) if((option_phonemes > 0) || (phoneme_callback != NULL)) { int use_ipa = 0; - if(option_phonemes == 3) - use_ipa = 1; + if(option_phonemes >= 3) + use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); if(option_phonemes > 0) diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index d903b139..e71750e1 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 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 * @@ -163,7 +163,7 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last) // ignore these characters static const unsigned short chars_ignore_default[] = { - 0xad, 1, // soft hyphtn + 0xad, 1, // soft hyphen 0x200c, 1, // zero width non-joiner 0x200d, 1, // zero width joiner 0, 0 }; @@ -436,13 +436,16 @@ Translator *SelectTranslator(const char *name) int name2 = 0; Translator *tr; + static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250}; + static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 }; + static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 }; static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; - static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; + static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270}; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; // convert name string into a word of up to 4 characters, for the switch() @@ -836,8 +839,17 @@ Translator *SelectTranslator(const char *name) { tr->letter_bits_offset = OFFSET_GURMUKHI; } + else + if(name2 == L('g','u')) + { +SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); + tr->letter_bits_offset = OFFSET_GUJARATI; + tr->langopts.stress_rule = STRESSPOSN_2R; + } + else if(name2 == L('n','e')) { +SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->langopts.break_numbers = 0x2aaaa8; tr->langopts.max_digits = 22; tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS; diff --git a/src/translate.cpp b/src/translate.cpp index 9917f04a..8125d76f 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -3309,17 +3309,21 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre *pn++ = tr->langopts.thousands_sep; } *pn++ = ' '; - if(tr->langopts.break_numbers & (1 << (nx-1))) - { - // the next group only has 1 digits (i.e. NUM2_10000), make it three - *pn++ = '0'; - *pn++ = '0'; - } - if(tr->langopts.break_numbers & (1 << (nx-2))) - { - // the next group only has 2 digits (i.e. NUM2_10000), make it three - *pn++ = '0'; - } + + if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0) + { + if(tr->langopts.break_numbers & (1 << (nx-1))) + { + // the next group only has 1 digits, make it three + *pn++ = '0'; + *pn++ = '0'; + } + if(tr->langopts.break_numbers & (1 << (nx-2))) + { + // the next group only has 2 digits (eg. Indian languages), make it three + *pn++ = '0'; + } + } } } pw--; diff --git a/src/translate.h b/src/translate.h index 2d7c5aa2..2d9ff38e 100644 --- a/src/translate.h +++ b/src/translate.h @@ -721,7 +721,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix void SetVoiceStack(espeak_VOICE *v, const char *variant_name); void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata, WORD_PH_DATA *worddata); void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); -char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa); +char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags); extern FILE *f_trans; // for logging extern FILE *f_logespeak; From 1a0f4af8c5fb6c83d93476731af110774cd5ed2e Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 3 Mar 2013 17:11:48 +0000 Subject: [PATCH 07/24] [1.46.41] git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@307 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 10 +++++----- dictsource/nl_rules | 1 + dictsource/ta_rules | 13 +++++++++---- phsource/compile_report | 24 ++++++++++++------------ src/numbers.cpp | 3 ++- src/synthdata.cpp | 2 +- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 755edc6a..7937746a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-01 +Dictionary en_dict 2013-03-02 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -205,7 +205,7 @@ q r r. s S s. t T t. th th. v w x z -Dictionary ta_dict 2013-01-18 +Dictionary ta_dict 2013-03-03 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -330,7 +330,7 @@ k l m n p R s S t tS v w x -Dictionary nl_dict 2013-02-26 +Dictionary nl_dict 2013-03-03 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -378,7 +378,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-02-27 +Dictionary pt_dict 2013-03-02 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -602,7 +602,7 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2013-03-01 +Dictionary ur_dict 2013-03-03 @ a a: aI aU e E e: i I i: O o: U u: V diff --git a/dictsource/nl_rules b/dictsource/nl_rules index f5b726e5..a33f4c04 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -630,6 +630,7 @@ _) inn (@P2 'I // ?? inneren sj S @) sje (_ sj@ @) s (_S1 s + a) s (_ s @) s (_$w_alt =s _) samen(@P5 s'a:m@n diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 89ae853f..09a0695d 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -397,6 +397,7 @@ _மன்மதக்) க (ுகை g _) க (ுதித் g _) க (ுதிப் g _) க (ுதிப்பகுதி k + _) க (ுதியாட்ட g _) க (ுபீர g _) க (ுபுகுபு g _) க (ுபுக் g @@ -1054,6 +1055,7 @@ _கிருஷ்ணமா) ச (ாரி tS _தேசிகா) ச (ாரி tS _பட்டா) ச (ாரி tS அனந்தா) ச (ாரி tS +அன்னமா) ச (ாரி tS ஆ) ச (ாரிய_ tS ஆ) ச (ாரியார tS அ) ச (ாருதீன z @@ -1920,6 +1922,7 @@ _அகாலி_) த (ள dV _) த (ிம்ம d _) தி (யாக t _) தி (யான d + _) த (ியோபந்த d _) த (ிரவ d _) த (ிரவிய d _) தி (ராட்சை d @@ -2000,7 +2003,7 @@ _) தீர்க்க (_சுமங்கலி di:rggV _) த (ுரதிருஷ்ட d _) த (ுரதிர்ஷ்ட d _) த (ுரதிஷ்ட d - _) துராக்க (ிர tra:gg + _) துராக்க (ிர dra:gg _) த (ுராசை d _) த (ுரியோதனன d _) த (ுரியோதனா d @@ -2124,6 +2127,7 @@ _வசந்) த tV# அனி) த (ா t சுஜா) த (ா t லலி) த (ா t + _சமந்) த (ா t _சுனி) த (ா t _மம்) த (ா t _ஹரி) த (ா t @@ -2627,8 +2631,8 @@ _டெட்_) ப (ாடி b _) ப (ாதிக்கப்பட b _) ப (ாதிக்கப்பட b _) ப (ாதிக்கலாம b + _) ப (ாதிக்கவ b _) ப (ாதிக்கவா b - _) ப (ாதிக்கவில் b _) ப (ாதிக்காத b _) ப (ாதிக்காமல b _) ப (ாதிக்கால p @@ -2645,6 +2649,7 @@ _டெட்_) ப (ாடி b _) ப (ாதிக்கும்_மேற் p _) ப (ாதிக்கும்_மேற்பட்ட_ p _) ப (ாதிக்கும்_மேல p + _) ப (ாதிச்ச b _) ப (ாதித்த b _) ப (ாதிப்படை b _) ப (ாதிப்படைகி b @@ -3181,8 +3186,8 @@ _பெனசீர்_) ப (ுட்டோ b _) ப (ெங்களூர b _) ப (ெங்கால b _) பெசண்ட besVn.t.V# - _) பெச (வாடா beZV - _) பெஜ (வாடா beZV + _) பெச (வாடா bezV + _) பெஜ (வாடா bezV _) பெஞ்ச ben^tSV# _) ப (ெஞ்சமின b _) பெஞ்ச (மின ben^dZV diff --git a/phsource/compile_report b/phsource/compile_report index 47626176..1019b474 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -433,8 +433,8 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [] base - [l#] base +l/l@ [l#] base + [X)]] base [l] fr [l/2] fr [K] nso @@ -467,16 +467,16 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [] base - [l#] base +l/la [l#] base + [X)]] base [l] fr [l/2] fr [K] nso [K] tn l/l_a [l/3] base [l/] fr -l/le [] base - [l#] base +l/le [l#] base + [X)]] base [l] fr [l/2] fr [K] nso @@ -487,8 +487,8 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [] base - [l#] base +l/li [l#] base + [X)]] base [l] fr [l/2] fr [l] zh @@ -501,8 +501,8 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [] base - [l#] base +l/lo [l#] base + [X)]] base [l/2] fr [K] nso [K] tn @@ -512,8 +512,8 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [] base - [l#] base +l/lu [l#] base + [X)]] base [l] fr [l/2] fr [K] nso diff --git a/src/numbers.cpp b/src/numbers.cpp index 4cc9add3..bbc78423 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -653,8 +653,9 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) alphabet = AlphabetFromChar(letter); if(alphabet != current_alphabet) { + // speak the name of the alphabet current_alphabet = alphabet; - if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME)) + if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) { phontab_1 = tr->phoneme_tab_ix; ph_buf2[0] = 0; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index a2e35543..318b8fa8 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.40 03.Mar.13"; +const char *version_string = "1.46.41 03.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; From 4f00e22bacc5c7c8527ff67295ffd1873c18e64e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 3 Mar 2013 21:21:31 +0000 Subject: [PATCH 08/24] 1.46.41 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/ur_list | 21 +++++++++++++++++++-- dictsource/ur_rules | 10 ++++++++-- espeak-data/voices/en | 3 --- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/dictsource/ur_list b/dictsource/ur_list index a35bf8ea..0155778b 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -1,4 +1,4 @@ -// This ur_list file is prepared by Him Prasad Gautam (Kathmandu, Nepal) +// This ur_list file is prepared by Him Prasad Gautam (Kathmandu, Nepal) // This file is UTF8 encoded // Letter Names, Numbers and exceptional pronounciation of Urdu @@ -162,11 +162,28 @@ _0M5 'khaRab _dpt _ISaRI'Ia_ -// Exception of phonemes +// pronouns یہ jE $u کہ kE $u وہ wo: $u +پ $u +تم tUm $u +ہم Ham $u +اس Is $u +ان In $u +// unstressed prepositions +کا $u +کی $u +کے $u +سے $u +اور OR $u $brk + +// unstressed verbs +ہے $u +ہیں $u + +// Pronunciation exceptions پاکستان p'a:k'i:st'a:n diff --git a/dictsource/ur_rules b/dictsource/ur_rules index a69f822f..4ad23d60 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -1,4 +1,4 @@ - + // This ur_rules file is written by Him Prasad Gautam (Kathmandu, Nepal). // This file is UTF8 encoded // phoneme rules for Urdu @@ -70,12 +70,14 @@ _) ای i: وٗ u: و (L01 v _) و vV + وع (_ u: .group ی ی e: ی (L01 j ی (_ i: _) ی jV + یع(_ i: .group ے // yeh barree @@ -244,8 +246,12 @@ _) ای i: .group ء ء -.group ہ +.group ہ ہ H + _) ہ Ha + _) ہ (L01 H + _) ہ (ند HI + ہ (_ a diff --git a/espeak-data/voices/en b/espeak-data/voices/en index c96248f6..59ed2ce2 100644 --- a/espeak-data/voices/en +++ b/espeak-data/voices/en @@ -4,9 +4,6 @@ language en-gb 2 language en 2 gender male -replace 03 I i -replace 03 I2 i - //pitch 80 118 tunes s1 c1 q1 e1 From 70915e2a92a47b3e565bc11a09e552055f354855 Mon Sep 17 00:00:00 2001 From: jonsd Date: Wed, 6 Mar 2013 10:24:43 +0000 Subject: [PATCH 09/24] [1.46.42] Command line option -X now lists *_list flags by name. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@308 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 16 ++--- dictsource/en_list | 11 +++- dictsource/en_rules | 1 + dictsource/ml_rules | 39 ++++++++--- dictsource/nl_list | 5 ++ dictsource/nl_rules | 20 ++++-- dictsource/pt_list | 47 +------------ dictsource/pt_rules | 30 ++++++--- dictsource/ro_list | 2 +- dictsource/ro_rules | 2 + dictsource/ta_list | 6 ++ phsource/compile_report | 24 +++---- platforms/windows/espeakedit/src/speech.h | 2 +- .../windows/espeakedit/src_copy/speech.h | 2 +- platforms/windows/make_espeak.iss | 10 ++- src/compiledict.cpp | 33 ++++++++-- src/dictionary.cpp | 66 +++++-------------- src/espeak_command.cpp | 46 ++++++------- src/numbers.cpp | 26 ++------ src/speech.h | 2 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 14 ++-- src/translate.cpp | 13 ++-- src/translate.h | 13 ++-- src/voices.cpp | 48 +++++++++----- src/wave.cpp | 2 +- src/wave_pulse.cpp | 2 +- src/wave_sada.cpp | 2 +- 28 files changed, 251 insertions(+), 235 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 7937746a..c82db939 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -103,7 +103,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-02 +Dictionary en_dict 2013-03-06 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -205,7 +205,7 @@ q r r. s S s. t T t. th th. v w x z -Dictionary ta_dict 2013-03-03 +Dictionary ta_dict 2013-03-05 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -330,7 +330,7 @@ k l m n p R s S t tS v w x -Dictionary nl_dict 2013-03-03 +Dictionary nl_dict 2013-03-05 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -338,9 +338,9 @@ o O O: o: O~ u VU Wy y Y: yU * : ; b d D dZ f -g h j k l m n N -n^ p Q r s S t tS -v v# w x z Z +g h j k l L m n +N n^ p Q r s S t +tS v v# w x z Z Dictionary no_dict 2011-03-07 @@ -378,7 +378,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-02 +Dictionary pt_dict 2013-03-06 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -392,7 +392,7 @@ S s# s; t T tS ts v w x z Z -Dictionary ro_dict 2011-07-21 +Dictionary ro_dict 2013-03-04 @ @- @I @U a aI aU e ea eI eo eU i i/ I^ iI diff --git a/dictsource/en_list b/dictsource/en_list index a521e25b..106e12f9 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -19,6 +19,7 @@ // $alt1 use strong ending (-table, -inal) // $alt2 use weak ending // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] +// $alt6 'to' // letter names, as they are spoken as a single character in text @@ -261,11 +262,12 @@ _hi h'Indi _bn bEng'A:li _gur g'U@mUki _gu gu:dZ3r'A:ti -_or 0r'i@ +_or O:r'ia: _ta t'amI2l +_te t'Elugu _kn k'A:na#d@ _ml maleI'A:l@m -_si sI2nh'A:l@ +_si s'INh@l@ _th t'aI _lo l'aU _ti tI2b'Et@n @@ -3773,7 +3775,7 @@ for fO@ $u (for a while) f@@||w'aIl (for one) fO@w0n $2 $atend -to t@5 $verbf // @ change to U before vowel +to t@5 $verbf $alt6 // @ change to U before vowel (to be) t@b%i $pastf (to be) t@||'bi: $atend (to to) %tU_t@5 $verbf @@ -4036,6 +4038,9 @@ thou DaU thy ,DaI thine ,DaIn +(i had) aI||h'ad $atend +(he had) hi:||h'ad $atend + me ,mi: $only me mi: $atstart $atend him ,hIm $only diff --git a/dictsource/en_rules b/dictsource/en_rules index 5a6576c4..7e92b8fd 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -2768,6 +2768,7 @@ h (_ _B) h @) hammed h'amId + d) h (am_ A) han (_ han // places e) han (_ h@n ha (st heI diff --git a/dictsource/ml_rules b/dictsource/ml_rules index ef9e9d87..49c0d321 100644 --- a/dictsource/ml_rules +++ b/dictsource/ml_rules @@ -5,6 +5,9 @@ // A means vowel letters (not vowel signs) // B means a combining vowel sign or a virama +// change (k t. t p) to (g d. d b) if followed by a vowel, unless at start of a word or preceeded by an unvoiced stop consonant ?? +.L01 _ ക് ച് ട് ത് പ് + .replace ൦ 0 // Convert Malayalam numbers @@ -24,8 +27,13 @@ .group ക - ക ka - ക (B k + ക് k + L01) ക ka + L01) ക (B k + ക ga + ക (B g + ക്ക k:a + ക്ക (B k: .group ഖ ഖ kha @@ -64,8 +72,13 @@ ഞ (B n^ .group ട - ട t.a - ട (B t. + ട് t. + L01) ട t.a + L01) ട (B t. + ട d.a + ട (B d. + ട്ട t.:a + ട്ട (B t.: .group ഠ ഠ th.a @@ -84,8 +97,13 @@ ണ (B n. .group ത - ത ta - ത (B t + ത് t + L01) ത ta + L01) ത (B t + ത da + ത (B d + ത്ത t:a + ത്ത (B t: .group ഥ ഥ tha @@ -104,8 +122,13 @@ ന (B n .group പ - പ pa - പ (B p + പ് p + L01) പ pa + L01) പ (B p + പ ba + പ (B b + പ്പ p:a + പ്പ (B p: .group ഫ ഫ pha diff --git a/dictsource/nl_list b/dictsource/nl_list index 8842911f..4bca6835 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -1,6 +1,7 @@ // This file in UTF8 encoded +// $alt2, remove s from plural, remove en from plural // Use $alt3 where 'ng' and 'nk' is 'n+g' not [N] // Letters @@ -1408,6 +1409,7 @@ armand _^_FR augustus VUQ'8st8s bacterie bAkt'I:ri banengids $alt3 +bascule $2 beha be:_h'a: beige bEZ@ benard b@nArt @@ -1444,6 +1446,8 @@ damascering damA;s'e:rIN december $2 dieet $2 diesel diz@l +discipline $3 +//discussie $2 divers div'Ers diftongering dIft,ON'e:rIN doordat $2 @@ -1474,6 +1478,7 @@ januari $3 kadaster $2 mangat $alt3 materie ma:t'e:ri +maatregel ma:tre:Q@l $alt2 maxima $1 meteen mEt'e:n metro me:tro: diff --git a/dictsource/nl_rules b/dictsource/nl_rules index a33f4c04..655f8a62 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -4,6 +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 .group a @@ -65,6 +66,7 @@ &) bare (_S4 =ba:r@ _) bij (C@P3 b'EI bij (zond b%i + _) bijeen bEI'e:n _) binnen (P6 b'In@n _) boven (P5 b'o:v@n _) brand br'And @@ -188,7 +190,8 @@ ig) e (_+S1qd @ ea (_ 'e:a: - eau o: //words with French origin + eau 'o: //words with French origin +// eau (_ 'o: @) ee (_ 'e: @) ee (X_ 'e: @) ee (r_ 'I @@ -214,6 +217,7 @@ &) el (ingen_$p_alt =@l @) elen (_ 'e:l@n + @) el (en_$p_alt2 @L &) elijks @l@ks &) em (_ @m &) e (ment @ @@ -256,7 +260,6 @@ @) etten (_S3 @n @) es (_$p_alt @s // for wors which end on [@] with multiple on 's'. - eau (_ 'o: euille @'y eum (_$w_alt 'e:8m @mus) eum (_ ,e:8m // compounds @@ -360,11 +363,13 @@ ie i ieuw iw iee ie: + ii i d) ie (_ 'i g) ie (_ 'i m) ie (_ 'i p) ie (_ 'i + ss) ie (_ =i ieus (_ ij'Y:s ieuze (_ ij'Y:z@ ieuzer (_ ij'Y:z@r @@ -407,6 +412,7 @@ io (nage iO io (de_ i'o: iodes (_ i'o:d@s + _) in (scrip In is (_ Is @) isch (_ =is @) ische (_ =is@ @@ -521,6 +527,7 @@ _) inn (@P2 'I // ?? inneren @@C) o (_ =o: obsc (u opsk oe (X_ 'u + office Of@s oir (_ 'v#a:r pl) oi (t v#A c) oi (ffu v#A @@ -532,6 +539,7 @@ _) inn (@P2 'I // ?? inneren _) oost (@P4 o:st _) op (@@P2 'Op _) open (@P4 'o:p@n + _) op (enen 'o:p _) openings (P8 'o:p@nINs _) op (era 'o:p _) op (tion Op @@ -620,7 +628,8 @@ _) inn (@P2 'I // ?? inneren A) s (A z s (b z s (d z - sc s + sc (e s + sc (i s sch sx sch (_ s sch (e_ s @@ -633,11 +642,14 @@ _) inn (@P2 'I // ?? inneren a) s (_ s @) s (_$w_alt =s - _) samen(@P5 s'a:m@n + _) samen(@P5 s'a:m@n + _) scan (L02 skEn + science saI@ns sc (oop sk sc (opi sk &) sel (_ =s@l &) selen (_ =s@l@n + service s8v@s @) si (o S A) si (o Z @) ssi (o S diff --git a/dictsource/pt_list b/dictsource/pt_list index f7005d56..3d8a3d0b 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -631,8 +631,8 @@ abacaxi abakaSy abordo $alt aborto $alt $verb acerto $alt2 $noun -acordo $alt $verb acertos $alt2 +acordo $alt $verb acervo $alt2 adepto $alt adereço $alt2 @@ -663,8 +663,6 @@ ateia $alt aterro $alt2 $noun atmosfera $alt atrozes $alt -austera $alt -austero $alt autora $alt2 avesso $alt2 axé aSE @@ -706,8 +704,6 @@ cefaleia $alt cerca $alt cerca $alt2 $noun cerco $alt $verb -cesta $alt2 -cesto $alt2 chamego $alt2 chefe $alt checam $alt @@ -737,8 +733,6 @@ consolo $alt2 $noun contivermos $alt controle $alt2 $noun controlo $alt2 $noun -copa $alt -copo $alt coreia $alt corneta $alt2 cornos $alt @@ -751,8 +745,6 @@ couberdes $alt coubermos $alt cratera $alt crede $alt2 -cresce $alt -crescem $alt der $alt derdes $alt desapego $alt2 $noun @@ -779,14 +771,7 @@ encosto $alt $verb endereço $alt2 endereço $alt $verb enforco $alt -enforque $alt -enforquem $alt engordo $alt -ensopa $alt -ensopam $alt -ensope $alt -ensopem $alt -ensopo $alt enredo $alt $verb enterro $alt2 $noun enumerem $alt @@ -877,16 +862,10 @@ houvermos $alt ideia $alt insonoro $alt interesse $alt2 $noun -joga $alt -jogam$alt -jogo $alt $verb -jogos $alt -jogue $alt -joguem $alt +jogo $alt2 $noun joguete $alt2 lambreta $alt2 lebre $alt -líderes $alt2 lopes $alt maior $alt maleta $alt2 @@ -913,7 +892,6 @@ minueto $alt2 miolo $alt2 miolos $alt moeda $alt -modo $alt modos $alt molho $alt2 $noun monera $alt @@ -1001,20 +979,12 @@ reitora $alt2 relevo $alt2 $noun remorso $alt reprovo $alt -resolve $alt -resolvem $alt retorno $alt $verb rixa x'iS& rocha $alt rock $alt -rogas $alt rola $alt2 $noun rolo $alt2 $noun -rosna $alt -rosnam $alt -rosne $alt -rosnem $alt -rosno $alt rumores $alt2 saleta $alt2 sarjeta $alt @@ -1029,17 +999,10 @@ sexteto $alt2 ?1 senhora $alt2 senhores $alt2 sinopse $alt -sobe $alt -sobem $alt soco $alt2 soco $alt $verb -sofrem $alt -sofre $alt -sofreste $alt2 sogra $alt -sopre $alt -soprem $alt -sopro $alt $verb +sopro $alt2 $noun soro $alt2 sorvete $alt2 sossego $alt2 $noun @@ -1058,10 +1021,6 @@ tiverdes $alt tivermos $alt tocha $alt toga $alt -tola $alt2 -tolo $alt2 -tolhe $alt -tolhem $alt topo $alt $verb torno $alt $verb torre $alt2 $noun diff --git a/dictsource/pt_rules b/dictsource/pt_rules index ec031928..a40fdb92 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -413,8 +413,8 @@ respond) e (L07_ e // cor- _estr) ei (L03_ EI _inv) e (jL04_ E _dec) e (pL04_ E - _s) e (quL02_ E _p) e (quL02_ E + _s) e (quL02_ E l) e (que_ E _sug) e (rL02_ E _imp) e (rL03_ E @@ -442,24 +442,26 @@ respond) e (L07_ e // cor- _f) e (rvL03_ e _p) e (sL01_ E _d) e (scL02_ E + _cr) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E _l) e (ssL02_ e _esp) e (ssL03_ e + _c) e (stL03_ e _m) e (tL03_ e + _pr) e (tL03_ e _com) e (tL03_ e _rem) e (tL03_ e prom) e (tL03_ e // com- _derr) e (tL03_ e _obsol) e (tL03_ e - _pr) e (tL03_ e _sol) e (trL03_ E _pen) e (trL04_ E - scr) e (vL03_ e // e- in- pre- ree- de- _d) e (vL03_ e + scr) e (vL03_ e // e- in- pre- ree- de- _atr) e (vL03_ e -_embel) e (zL04_ E pr) e (zL04_ E / des- menos- +_embel) e (zL04_ E _acont) e (çL01_ e _arref) e (çL01_ e par) e (çL03_ e // a- re- com- rea- desa- @@ -469,7 +471,6 @@ _arref) e (çL01_ e _mer) e (çL03_ e _pad) e (çL03_ e // com- _per) e (çL03_ e -_rejuven) e (çL03_ e conh) e (çL03_ e // re- _esqu) e (çL03_ e _forn) e (çL03_ e @@ -488,6 +489,7 @@ _envelh) e (çL03_ e _esclar) e (çL03_ e _estrem) e (çL03_ e _fortal) e (çL03_ e +_rejuven) e (çL03_ e //endsort @@ -779,26 +781,34 @@ _fortal) e (çL03_ e //sort _engl) o (bL01_ O + _s) o (bL02_ O _esn) o (bL04_ O _deb) o (chL04_ O _desabr) o (chL04_ O + _s) o (frL02_ O + _j) o (gL04_ O _r) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O _ap) oi (L01_ OI - _esc) o (lhL02_ O + _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 - _env) o (lvL02_ O + _res) o (lvL02_ O _rev) o (lvL02_ O -_desenv) o (lvL02_ O _ent) o (pL02_ O + _c) o (pL03_ O + _ens) o (pL04_ O + _s) o (prL04_ O + _enf) o (rquL02_ O c) o (rrL01_ o // escorra, incorra, corra, recorra _m) o (rrL01_ o + _r) o (snL04_ O _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. - _s) o (bL02_ O - _s) o (prL02_ O //endsort .group ô diff --git a/dictsource/ro_list b/dictsource/ro_list index 05970422..ebfcb482 100644 --- a/dictsource/ro_list +++ b/dictsource/ro_list @@ -2291,7 +2291,7 @@ vindeţi $1 vinovăţi $alt vinovăţii $4 virgulă $1 -vis-a-vis vizav'i +(vis-a vis) vizav'i viscol $1 vitreg $1 vitrege $1 diff --git a/dictsource/ro_rules b/dictsource/ro_rules index 975461b9..984d6ae4 100644 --- a/dictsource/ro_rules +++ b/dictsource/ro_rules @@ -198,6 +198,8 @@ ţi-) i (_ _ // combined with previous word as [iI] Cr) i (_+++ i V&) i (N_ 'i // verb + + @) i (A$p_alt1 i // i is not [j] ăC) ia (_ 'ia âC) ia (_ 'ia ăC) ie (_ 'ie diff --git a/dictsource/ta_list b/dictsource/ta_list index 083ff0e2..03a308a2 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -113,6 +113,12 @@ U+bf9 ru:ba:j ½ araI ¾ mukka:l +// alphabet names +_ar arVbU +_cyr sirillik +_he ;ebire:jVm + + // abbreviations ரூ ru:ba:j $dot $only (பி . ஏ) bije: $dot diff --git a/phsource/compile_report b/phsource/compile_report index 1019b474..7f15008c 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -433,8 +433,8 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [l#] base - [X)]] base +l/l@ [¨\-] base + [l#] base [l] fr [l/2] fr [K] nso @@ -467,16 +467,16 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [l#] base - [X)]] base +l/la [¨\-] base + [l#] base [l] fr [l/2] fr [K] nso [K] tn l/l_a [l/3] base [l/] fr -l/le [l#] base - [X)]] base +l/le [¨\-] base + [l#] base [l] fr [l/2] fr [K] nso @@ -487,8 +487,8 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [l#] base - [X)]] base +l/li [¨\-] base + [l#] base [l] fr [l/2] fr [l] zh @@ -501,8 +501,8 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [l#] base - [X)]] base +l/lo [¨\-] base + [l#] base [l/2] fr [K] nso [K] tn @@ -512,8 +512,8 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [l#] base - [X)]] base +l/lu [¨\-] base + [l#] base [l] fr [l/2] fr [K] nso diff --git a/platforms/windows/espeakedit/src/speech.h b/platforms/windows/espeakedit/src/speech.h index a004b157..a3e9b203 100755 --- a/platforms/windows/espeakedit/src/speech.h +++ b/platforms/windows/espeakedit/src/speech.h @@ -37,7 +37,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -#define USE_PORTAUDIO +//#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/espeakedit/src_copy/speech.h b/platforms/windows/espeakedit/src_copy/speech.h index a004b157..a3e9b203 100755 --- a/platforms/windows/espeakedit/src_copy/speech.h +++ b/platforms/windows/espeakedit/src_copy/speech.h @@ -37,7 +37,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -#define USE_PORTAUDIO +//#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 24368b09..53bc3866 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.31 +AppVerName=eSpeak version 1.46.42 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -18,6 +18,11 @@ Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}" [InstallDelete] Type: files; Name: "{app}\espeak.dll" +Type: files; Name: "{app}\espeak-data\voices\*" +Type: filesandordirs; Name: "{app}\espeak-data\voices\en" +Type: filesandordirs; Name: "{app}\espeak-data\voices\asia" +Type: filesandordirs; Name: "{app}\espeak-data\voices\europe" +Type: filesandordirs; Name: "{app}\espeak-data\voices\other" Type: filesandordirs; Name: "{app}\espeak-data\voices\test" Type: filesandordirs; Name: "{app}\docs" @@ -161,6 +166,7 @@ begin $41: Result := 'sw'; //$44: Result := 'tt'; $49: Result := 'ta'; + $46: Result := 'pa'; $4b: Result := 'kn'; //$50: Result := 'mn'; $52: Result := 'cy'; @@ -208,6 +214,7 @@ begin 'an': value := $40a; // Aragon, use code for Spanish 'az': value := $42c; 'bg': value := $402; + 'bn': value := $445; 'bs': value := $41a; // should be $141a but Jaws crashes on startup 'ca': value := $403; 'cs': value := $405; @@ -247,6 +254,7 @@ begin 'ne': value := $461; 'nl': value := $413; 'no': value := $414; + 'pa': value := $446; 'pl': value := $415; 'pt': value := $416; 'ro': value := $418; diff --git a/src/compiledict.cpp b/src/compiledict.cpp index bb4f7860..10427913 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -192,12 +192,35 @@ const char *LookupMnemName(MNEM_TAB *table, const int value) } /* end of LookupMnemValue */ -char *print_dictionary_flags(unsigned int *flags) -{//============================================== - static char buf[20]; +void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len) +{//======================================================================== + int stress; + int ix; + const char *name; + int len; + int total = 0; - sprintf(buf,"%s 0x%x/%x",LookupMnemName(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]); - return(buf); + buf[0] = 0; + if((stress = flags[0] & 0xf) != 0) + { + sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40)); + total = strlen(buf); + buf += total; + } + + for(ix=8; ix<64; ix++) + { + if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20))))) + { + name = LookupMnemName(mnem_flags, ix); + len = strlen(name) + 1; + total += len; + if(total >= buf_len) + continue; + sprintf(buf, " %s", name); + buf += len; + } + } } diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 720c5723..30079784 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -37,7 +37,7 @@ int dictionary_skipwords; char dictionary_name[40]; -extern char *print_dictionary_flags(unsigned int *flags); +extern void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len); extern char *DecodeRule(const char *group_chars, int group_length, char *rule, int control); // accented characters which indicate (in some languages) the start of a separate syllable @@ -770,7 +770,7 @@ static int IsLetterGroup(Translator *tr, char *word, int group, int pre) { w = word; } - while(*p == *w) + while((*p == *w) && (*w != 0)) { w++; p++; @@ -2715,7 +2715,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c p += (wc_bytes-1); } - if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->language != 0) && (alphabet->offset != tr->letter_bits_offset)) + if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset)) { // switch to the nominated language for this alphabet sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); @@ -2808,8 +2808,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c } } - // any language specific changes ? - ApplySpecialAttribute(tr,phonemes,dict_flags0); memcpy(p_start,word_copy,strlen(word_copy)); return(0); @@ -2853,46 +2851,6 @@ void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags) } // end of ApplySpecialAttribute2 -void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags) -{//======================================================================= -// Amend the translated phonemes according to an attribute which is specific for the language. - int len; - char *p_end; - - if((dict_flags & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) == 0) - return; - - len = strlen(phonemes); - p_end = &phonemes[len-1]; - - switch(tr->translator_name) - { -#ifdef deleted -// this is now done in de_rules - case L('d','e'): - if(p_end[0] == PhonemeCode2('i',':')) - { - // words ends in ['i:], change to [=I@] - p_end[-1] = phonSTRESS_PREV; - p_end[0] = PhonemeCode('I'); - p_end[1] = phonSCHWA; - p_end[2] = 0; - } - break; -#endif - - case L('r','o'): - if(p_end[0] == PhonemeCode('j')) - { - // word end in [j], change to ['i] - p_end[0] = phonSTRESS_P; - p_end[1] = PhonemeCode('i'); - p_end[2] = 0; - } - break; - } -} // end of ApplySpecialAttribute - //============================================================================================= @@ -3045,6 +3003,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor const char *word1; int wflags = 0; char word_buf[N_WORD_BYTES+1]; + char dict_flags_buf[80]; if(wtab != NULL) { @@ -3265,6 +3224,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(tr->expect_verb || (tr->expect_verb_s && (end_flags & FLAG_SUFX_S))) { // OK, we are expecting a verb + if((tr->translator_name == L('e','n')) && (tr->prev_dict_flags[0] & FLAG_ALT6_TRANS) && (end_flags & FLAG_SUFX_S)) + { + // lang=en, don't use verb form after 'to' if the word has 's' suffix + continue; + } } else { @@ -3294,7 +3258,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(dictionary_flags & FLAG_ALT2_TRANS) { // language specific - if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags & FLAG_ALT_TRANS)) + if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags[0] & FLAG_ALT_TRANS)) continue; } @@ -3308,7 +3272,8 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor { if(option_phonemes == 2) { - fprintf(f_trans,"Flags: %s %s\n",word1,print_dictionary_flags(flags)); + print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); + fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf); } return(0); // no phoneme translation found here, only flags. So use rules } @@ -3331,19 +3296,20 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor if(textmode == translator->langopts.textmode) { // only show this line if the word translates to phonemes, not replacement text - if((dictionary_skipwords) && (wtab != NULL)) + if((dictionary_flags & FLAG_SKIPWORDS) && (wtab != NULL)) { // matched more than one word // (check for wtab prevents showing RULE_SPELLING byte when speaking individual letters) memcpy(word_buf,word2,word_end-word2); word_buf[word_end-word2-1] = 0; - fprintf(f_trans,"Found: '%s %s",word1,word_buf); + fprintf(f_trans,"Found: '%s %s\n",word1,word_buf); } else { fprintf(f_trans,"Found: '%s",word1); } - fprintf(f_trans,"' [%s] %s\n",ph_decoded,print_dictionary_flags(flags)); + print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); + fprintf(f_trans,"' [%s] %s\n", ph_decoded,dict_flags_buf); } } diff --git a/src/espeak_command.cpp b/src/espeak_command.cpp index c0030e63..d8460c75 100644 --- a/src/espeak_command.cpp +++ b/src/espeak_command.cpp @@ -46,14 +46,14 @@ t_espeak_command* create_espeak_text(const void *text, size_t size, unsigned int { goto text_error; } - - a_text = malloc( size ); + + a_text = malloc( size+1 ); if (!a_text) { goto text_error; } memcpy(a_text, text, size); - + a_command->type = ET_TEXT; a_command->state = CS_UNDEFINED; data = &(a_command->u.my_text); @@ -102,7 +102,7 @@ t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, v { goto msg_error; } - + a_command->type = ET_TERMINATED_MSG; a_command->state = CS_UNDEFINED; data = &(a_command->u.my_terminated_msg); @@ -234,7 +234,7 @@ t_espeak_command* create_espeak_char(wchar_t character, void* user_data) { goto char_error; } - + a_command->type = ET_CHAR; a_command->state = CS_UNDEFINED; a_command->u.my_char.user_data = user_data; @@ -270,11 +270,11 @@ t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value, { goto param_error; } - + a_command->type = ET_PARAMETER; a_command->state = CS_UNDEFINED; data = &(a_command->u.my_param); - data->parameter = parameter; + data->parameter = parameter; data->value = value; data->relative = relative; a_error=0; @@ -308,7 +308,7 @@ t_espeak_command* create_espeak_punctuation_list(const wchar_t *punctlist) { goto list_error; } - + a_command->type = ET_PUNCTUATION_LIST; a_command->state = CS_UNDEFINED; @@ -350,7 +350,7 @@ t_espeak_command* create_espeak_voice_name(const char *name) { goto name_error; } - + a_command->type = ET_VOICE_NAME; a_command->state = CS_UNDEFINED; a_command->u.my_voice_name = strdup( name); @@ -381,7 +381,7 @@ t_espeak_command* create_espeak_voice_spec(espeak_VOICE *voice) { goto spec_error; } - + a_command->type = ET_VOICE_SPEC; a_command->state = CS_UNDEFINED; { @@ -451,11 +451,11 @@ int delete_espeak_command( t_espeak_command* the_command) break; case ET_TERMINATED_MSG: - { + { // if the terminated msg is pending, - // it must be processed here for informing the calling program + // it must be processed here for informing the calling program // that its message is finished. - // This can be important for cleaning the related user data. + // This can be important for cleaning the related user data. t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg); if (the_command->state == CS_PENDING) { @@ -491,7 +491,7 @@ int delete_espeak_command( t_espeak_command* the_command) free((void*)(the_command->u.my_voice_name)); } break; - + case ET_VOICE_SPEC: { espeak_VOICE* data = &(the_command->u.my_voice_spec); @@ -542,23 +542,23 @@ void process_espeak_command( t_espeak_command* the_command) case ET_TEXT: { t_espeak_text* data = &(the_command->u.my_text); - sync_espeak_Synth( data->unique_identifier, data->text, data->size, - data->position, data->position_type, - data->end_position, data->flags, data->user_data); + sync_espeak_Synth( data->unique_identifier, data->text, data->size, + data->position, data->position_type, + data->end_position, data->flags, data->user_data); } break; case ET_MARK: { t_espeak_mark* data = &(the_command->u.my_mark); - sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size, - data->index_mark, data->end_position, data->flags, + sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size, + data->index_mark, data->end_position, data->flags, data->user_data); } break; case ET_TERMINATED_MSG: - { + { t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg); sync_espeak_terminated_msg( data->unique_identifier, data->user_data); } @@ -654,8 +654,8 @@ void display_espeak_command( t_espeak_command* the_command) { t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg); - SHOW("display_espeak_command > (0x%x) TERMINATED_MSG uid=%d, user_data=0x%x, state=%d\n", - the_command, data->unique_identifier, data->user_data, + SHOW("display_espeak_command > (0x%x) TERMINATED_MSG uid=%d, user_data=0x%x, state=%d\n", + the_command, data->unique_identifier, data->user_data, the_command->state); } break; @@ -670,7 +670,7 @@ void display_espeak_command( t_espeak_command* the_command) case ET_PARAMETER: { t_espeak_parameter* data = &(the_command->u.my_param); - SHOW("display_espeak_command > (0x%x) PARAMETER=%d, value=%d, relative=%d\n", + SHOW("display_espeak_command > (0x%x) PARAMETER=%d, value=%d, relative=%d\n", the_command, data->parameter, data->value, data->relative); } break; diff --git a/src/numbers.cpp b/src/numbers.cpp index bbc78423..ecd5d288 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -631,25 +631,6 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } -#ifdef deleted - if((ph_buf[0] == 0) && (tr->translator_name != L('e','n'))) - { - // speak as English, check whether there is a translation for this character - SetTranslator2("en"); - save_option_phonemes = option_phonemes; - option_phonemes = 0; - LookupLetter(translator2, letter, word[n_bytes], ph_buf, control & 1); - SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table - option_phonemes = save_option_phonemes; - - if(ph_buf[0] != 0) - { - sprintf(phonemes,"%cen",phonSWITCH); - return(0); - } - } -#endif - alphabet = AlphabetFromChar(letter); if(alphabet != current_alphabet) { @@ -892,7 +873,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL); } -if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) +if((tr->prev_dict_flags[0] & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) ordinal = 0; // TEST 09.02.10 if(nextflags & FLAG_ALT_TRANS) @@ -903,7 +884,7 @@ if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG if(word[-2] == '-') ordinal = 0; // eg. december 2-5. között - if(tr->prev_dict_flags & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS)) + if(tr->prev_dict_flags[0] & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS)) ordinal = 0x22; } } @@ -1052,7 +1033,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) } } - tr->prev_dict_flags = 0; + tr->prev_dict_flags[0] = 0; + tr->prev_dict_flags[1] = 0; TranslateNumber(tr, &number_chars[2], p, flags, wtab, num_control); if(tr->langopts.numbers & NUM_ROMAN_AFTER) diff --git a/src/speech.h b/src/speech.h index 8f37f343..d4d4cb7d 100644 --- a/src/speech.h +++ b/src/speech.h @@ -51,7 +51,7 @@ #endif #ifdef _ESPEAKEDIT -#define USE_PORTAUDIO +//#define USE_PORTAUDIO #define USE_ASYNC #define LOG_FRAMES // write keyframe info to log-espeakedit #endif diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 318b8fa8..9959794f 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.41 03.Mar.13"; +const char *version_string = "1.46.42 06.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index e71750e1..4f66bb59 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -73,25 +73,25 @@ ALPHABET alphabets [] = { {"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS}, {"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0}, - {"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), 0}, + {"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), AL_WORDS}, {"_he", OFFSET_HEBREW, 0x590, 0x5ff, 0, 0}, {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, - {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), 0}, + {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0}, {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, - {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), 0}, - {"_te", OFFSET_TELUGU, 0xc00, 0xc7f, 0, 0}, - {"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), 0}, - {"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), 0}, + {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS}, + {"_te", OFFSET_TELUGU, 0xc00, 0xc7f, L('t','e'), 0}, + {"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), AL_WORDS}, + {"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), AL_WORDS}, {"_si", OFFSET_SINHALA, 0xd80, 0xdff, 0, 0}, {"_th", OFFSET_THAI, 0xe00, 0xe7f, 0, 0}, {"_lo", OFFSET_LAO, 0xe80, 0xeff, 0, 0}, {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, - {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), 0}, + {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, {NULL, 0, 0, 0, 0, 0} diff --git a/src/translate.cpp b/src/translate.cpp index 8125d76f..16cc4347 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -1374,9 +1374,6 @@ if(end_type & SUFX_UNPRON) { // don't retranslate, use the original lookup result strcpy(phonemes,phonemes2); - - // language specific changes - ApplySpecialAttribute(tr,phonemes,dictionary_flags[0]); } else { @@ -2059,7 +2056,8 @@ return(FLAG_SPELLWORD); pre_pause--; } tr->end_stressed_vowel = 0; // forget about the previous word - tr->prev_dict_flags = 0; + tr->prev_dict_flags[0] = 0; + tr->prev_dict_flags[1] = 0; } if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER)) @@ -2208,7 +2206,7 @@ return(FLAG_SPELLWORD); { if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING]) { - if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || + if(((tr->prev_dict_flags[0] & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || (tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2))) { // italian, double the initial consonant if the previous word ends with a @@ -2264,7 +2262,7 @@ return(FLAG_SPELLWORD); ph_list2[max_stress_ix].synthflags |= SFLAG_PROMOTE_STRESS; } - tr->prev_dict_flags = flags; + tr->prev_dict_flags[0] = flags; return(flags); } // end of TranslateWord2 @@ -2623,7 +2621,8 @@ p = source; tr->expect_verb_s=0; tr->phonemes_repeat_count = 0; tr->end_stressed_vowel=0; - tr->prev_dict_flags = 0; + tr->prev_dict_flags[0] = 0; + tr->prev_dict_flags[1] = 0; word_count = 0; single_quoted = 0; diff --git a/src/translate.h b/src/translate.h index 2d9ff38e..5e3fa336 100644 --- a/src/translate.h +++ b/src/translate.h @@ -48,8 +48,11 @@ #define FLAG_ALT_TRANS 0x8000 // language specific #define FLAG_ALT2_TRANS 0x10000 // language specific #define FLAG_ALT3_TRANS 0x20000 // language specific -#define FLAG_COMBINE 0x40000 // combine with the next word +#define FLAG_ALT4_TRANS 0x40000 // language specific +#define FLAG_ALT5_TRANS 0x80000 // language specific +#define FLAG_ALT6_TRANS 0x100000 // language specific +#define FLAG_COMBINE 0x800000 // combine with the next word #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot #define FLAG_WAS_UNPRONOUNCABLE 0x04000000 // the unpronounceable routine was used @@ -79,7 +82,7 @@ #define FLAG_ONLY_S 0x8000 #define FLAG_STEM 0x10000 // must have a suffix #define FLAG_ATEND 0x20000 /* use this pronunciation if at end of clause */ -#define FLAG_ATSTART 0x30000 // use this pronunciation if at start of clause +#define FLAG_ATSTART 0x40000 // use this pronunciation if at start of clause #define BITNUM_FLAG_ALLCAPS 0x2a #define BITNUM_FLAG_HYPHENATED 0x2c @@ -272,7 +275,7 @@ extern ALPHABET *current_alphabet; // alphabet flags #define AL_DONT_NAME 0x01 // don't speak the alphabet name #define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters -#define AL_NOT_WORDS 0x04 // don't use the language to speak words +#define AL_WORDS 0x04 // use the language to speak words #define N_LOPTS 21 @@ -585,7 +588,6 @@ typedef struct unsigned char groups2_start[256]; // index into groups2 const short *frequent_pairs; // list of frequent pairs of letters, for use in compressed *_list - int expect_verb; int expect_past; // expect past tense int expect_verb_s; @@ -601,7 +603,7 @@ typedef struct int prepause_timeout; int end_stressed_vowel; // word ends with stressed vowel - int prev_dict_flags; // dictionary flags from previous word + int prev_dict_flags[2]; // dictionary flags from previous word int clause_terminator; } Translator; @@ -703,7 +705,6 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f void MakePhonemeList(Translator *tr, int post_pause, int new_sentence); int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch); -void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags); void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags); void AppendPhonemes(Translator *tr, char *string, int size, const char *ph); diff --git a/src/voices.cpp b/src/voices.cpp index 68dcc5c7..db43a34e 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -554,12 +554,13 @@ voice_t *LoadVoice(const char *vname, int control) const char *language_type; char buf[200]; char path_voices[sizeof(path_home)+12]; - char langname[4]; int stress_amps[8]; int stress_lengths[8]; int stress_add[8]; char names[8][40]; + char name2[80]; + const char *voice_dir; int pitch1; int pitch2; @@ -568,6 +569,12 @@ voice_t *LoadVoice(const char *vname, int control) static char voice_name[40]; // voice name for current_voice_selected static char voice_languages[100]; // list of languages and priorities for current_voice_selected + // which directory to look for a named voice + static const char *voices_asia = + "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; + static const char *voices_europe = + "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; + strcpy(voicename,vname); if(voicename[0]==0) strcpy(voicename,"default"); @@ -581,27 +588,34 @@ voice_t *LoadVoice(const char *vname, int control) else { sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); - sprintf(buf,"%s%s",path_voices,voicename); + sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory if(GetFileLength(buf) <= 0) { - // look for the voice in a sub-directory of the language name - langname[0] = voicename[0]; - langname[1] = voicename[1]; - langname[2] = 0; - sprintf(buf,"%s%s%c%s",path_voices,langname,PATHSEP,voicename); + // then look in the appropriate subdirectory + if((voicename[0]=='m') && (voicename[1]=='b')) + { + voice_dir = "mb"; // mbrola voices + } + else + { + sprintf(name2, "%s ", voicename); + if(strstr(voices_europe, voicename) != NULL) + voice_dir = "europe"; + else + if(strstr(voices_asia, voicename) != NULL) + voice_dir = "asia"; + else + voice_dir = "other"; - if(GetFileLength(buf) <= 0) - { - // look in "extra" sub-directory - sprintf(buf,"%sextra%c%s",path_voices,PATHSEP,voicename); + sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename); - if(GetFileLength(buf) <= 0) - { - // look in "test" sub-directory - sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); - } - } + if(GetFileLength(buf) <= 0) + { + // if not found, look in "test" sub-directory + sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); + } + } } } diff --git a/src/wave.cpp b/src/wave.cpp index b3d25992..b3e6593a 100644 --- a/src/wave.cpp +++ b/src/wave.cpp @@ -1195,7 +1195,7 @@ void *wave_test_get_write_buffer() // notdef USE_PORTAUDIO -int wave_init(int srate) {} +int wave_init(int srate) {return 1;} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} diff --git a/src/wave_pulse.cpp b/src/wave_pulse.cpp index 85cab2d6..1bcb593a 100644 --- a/src/wave_pulse.cpp +++ b/src/wave_pulse.cpp @@ -870,7 +870,7 @@ void *wave_test_get_write_buffer() // notdef USE_PULSEAUDIO -int wave_init() {} +int wave_init(return 1;) {} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} diff --git a/src/wave_sada.cpp b/src/wave_sada.cpp index f44c30fd..23d53c77 100644 --- a/src/wave_sada.cpp +++ b/src/wave_sada.cpp @@ -535,7 +535,7 @@ int wave_get_remaining_time(uint32_t sample, uint32_t* time) #else // notdef USE_SADA -init wave_init() {} +init wave_init() {return 1;} void* wave_open(const char* the_api) {return (void *)1;} size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} int wave_close(void* theHandler) {return 0;} From d78b391acd41ff94234f100c3b1870e03bd2d7c1 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 7 Mar 2013 00:58:10 +0000 Subject: [PATCH 10/24] 1.46.42 (from http://espeak.sourceforge.net/test/latest.html) --- .gitignore | 1 + espeak-data/voices/{test => europe}/lt | 0 platforms/windows/espeakedit/src/speech.h | 2 +- platforms/windows/espeakedit/src_copy/speech.h | 2 +- platforms/windows/make_espeak.iss | 10 +--------- 5 files changed, 4 insertions(+), 11 deletions(-) rename espeak-data/voices/{test => europe}/lt (100%) diff --git a/.gitignore b/.gitignore index 857b9771..08199e85 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ praat-mod/ ChangeLog.txt License.txt ReadMe +Makefile # espeak-data diff --git a/espeak-data/voices/test/lt b/espeak-data/voices/europe/lt similarity index 100% rename from espeak-data/voices/test/lt rename to espeak-data/voices/europe/lt diff --git a/platforms/windows/espeakedit/src/speech.h b/platforms/windows/espeakedit/src/speech.h index 9b2aae5c..0ac7b3b2 100644 --- a/platforms/windows/espeakedit/src/speech.h +++ b/platforms/windows/espeakedit/src/speech.h @@ -35,7 +35,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -//#define USE_PORTAUDIO +#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/espeakedit/src_copy/speech.h b/platforms/windows/espeakedit/src_copy/speech.h index 9b2aae5c..0ac7b3b2 100644 --- a/platforms/windows/espeakedit/src_copy/speech.h +++ b/platforms/windows/espeakedit/src_copy/speech.h @@ -35,7 +35,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -//#define USE_PORTAUDIO +#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 53bc3866..24368b09 100644 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.42 +AppVerName=eSpeak version 1.46.31 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -18,11 +18,6 @@ Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}" [InstallDelete] Type: files; Name: "{app}\espeak.dll" -Type: files; Name: "{app}\espeak-data\voices\*" -Type: filesandordirs; Name: "{app}\espeak-data\voices\en" -Type: filesandordirs; Name: "{app}\espeak-data\voices\asia" -Type: filesandordirs; Name: "{app}\espeak-data\voices\europe" -Type: filesandordirs; Name: "{app}\espeak-data\voices\other" Type: filesandordirs; Name: "{app}\espeak-data\voices\test" Type: filesandordirs; Name: "{app}\docs" @@ -166,7 +161,6 @@ begin $41: Result := 'sw'; //$44: Result := 'tt'; $49: Result := 'ta'; - $46: Result := 'pa'; $4b: Result := 'kn'; //$50: Result := 'mn'; $52: Result := 'cy'; @@ -214,7 +208,6 @@ begin 'an': value := $40a; // Aragon, use code for Spanish 'az': value := $42c; 'bg': value := $402; - 'bn': value := $445; 'bs': value := $41a; // should be $141a but Jaws crashes on startup 'ca': value := $403; 'cs': value := $405; @@ -254,7 +247,6 @@ begin 'ne': value := $461; 'nl': value := $413; 'no': value := $414; - 'pa': value := $446; 'pl': value := $415; 'pt': value := $416; 'ro': value := $418; From 2d64d3289318b0e2b400ad3adb47aaf8726854a0 Mon Sep 17 00:00:00 2001 From: jonsd Date: Thu, 7 Mar 2013 10:32:34 +0000 Subject: [PATCH 11/24] [1.46.43] language changes: da, pt git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@309 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/da_list | 41 +- dictsource/da_rules | 3065 ++++++++++------- dictsource/dict_phonemes | 23 +- dictsource/en_list | 1 + dictsource/pt_list | 37 +- dictsource/pt_rules | 24 +- phsource/compile_report | 32 +- phsource/ph_danish | 461 ++- platforms/windows/espeakedit/src/speech.h | 4 +- .../windows/espeakedit/src_copy/speech.h | 4 +- platforms/windows/windows_cmd/src/speech.h | 9 +- platforms/windows/windows_dll/src/speech.h | 9 +- platforms/windows/windows_sapi/src/speech.h | 9 +- src/dictionary.cpp | 5 + src/speech.h | 4 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 5 +- src/translate.h | 1 + src/transldlg.cpp | 2 +- src/voice.h | 2 +- src/voices.cpp | 11 +- 21 files changed, 2339 insertions(+), 1412 deletions(-) diff --git a/dictsource/da_list b/dictsource/da_list index 76106749..737be652 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -102,16 +102,16 @@ _9 n'i _10 t'i _11 'Elv@ _12 t'Vl -_13 tR'&#d@-n // PB & changed to &# +_13 tR'?&#d@-n // PB & changed to &# _14 fj'ord@-n -_15 f'emt@-n +_15 f'Emd@-n _16 s'ajsd@-n _17 s'Wd@-n // PP Y changed to W -_18 '&d@-n // PB a changed to & +_18 '?&d@-n // PB a changed to & _19 n'ed@-n -_2X t'y:w +_2X t'y:?u _3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] -_4X f'W:V //PB [f'W:*3] changed to [ f'W:V] +_4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V] _5X h&l't*Es // PB [a] changed to [&], e changed to E _6X t*'Es // PB changed from e to E _7X h&lfj'&rs // PV a changed to & @@ -187,7 +187,7 @@ fra $u+ // from ved $u+ // at om $u+ $brk // about, within med $u+ // with -af & // PB changed from [a?] to [&] - sound too short in a sentence +af &_| // PB changed from [a?] to [&] - sound too short in a sentence // Also removed $u from 'af' and other words. They disappeared. ad &: // PB added 'ad' ad &D $atend $sentence // PB "Det må ikke skille os ad." @@ -221,10 +221,10 @@ hvis ves $u+ // PB - whose // possessive pronouns min min $u mit mit $u -mine m'in@ +mine m'in3 din d'in $u+ dit d'it $u -dine d'ine +dine d'in3 deres dE:Vs $u hans $u+ hendes $u+ @@ -288,7 +288,6 @@ night _^_EN the _^_EN skinhead _^_EN skinheads _^_EN -street _^_EN boy _^_EN square _^_EN apple _^_EN @@ -11125,18 +11124,18 @@ tournure $alt // exceptions alene &l'en@ // alone -egen a:j@n +egen _|aj@-n mc mak' $capital // PB McDonald -egne a:in@ +egne ajn@- enter entV 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 +tre tr'E // the number 3 rejicere rejis'eV // PB should not be pronounced [raje] rejicerer rejis'eV // PB rejiceres rejis'eVs // PB @@ -11151,6 +11150,7 @@ konfirmanderne kVnferm'&nd3-n@ // PB konfirmandernes kVnferm'&nd3-n@s // PB 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 @@ -11184,7 +11184,7 @@ shampu Sjambo // PB Danish pronunciation - oo has been replaced b 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 -siger sir // PB silent d +//siger sir // PB silent d (tids nok) tis||n'Vk // PB silent d skateboardet sk'eitbo@d3D // PB (hole in one) h'oulinw,0n // PB English golf expression used in Danish @@ -11253,10 +11253,15 @@ ikes ajks // PB (deres kvarter) dE:Vs||kvA'ter // PB (det kvarter) de||kvA'ter // PB (i kvarter) i||kv'A:dV -(at have) &||h&: // PB the verb 'have', not the noun 'have' = garden -(vil have) vel||h'&: // PB -(du have) du||h&: // PB -(må have) m'O:||h&: // PB +(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 +(helst have) h'Elst||h& +(gerne have) g'Ern3||h& +(kan have) k?&n||h& // PB (ikke have) ege||h& // PB // PB 'hav' = ocean - 'hav' = have (a nice day) (et hav) ed||hAu diff --git a/dictsource/da_rules b/dictsource/da_rules index ffd9245b..7081c264 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -40,24 +40,55 @@ h) al (fback a // PB aaron ArVn // PB name zol) a '& // PB name + m) ary &ri // PB name vin) ai (gre 'E // PB stressed _gymn) a (st '& // PB stressed + _gymn) a (sti & // PB avoid secondary stress in gymnastik stigm) a (ta '& // PB stressed + arm) ad (a '&:d // PB stressed avondale _^_en //PB -// PB consonant + a + consonant => a: - C) a (Ce & // PB plade, base, mase +// PB Short vowel before double consonant + r) a (C%++ ?A // PB trappe + a (C%+ ?& // PB pladder, basser, masser + a (ld+ ?& // PB kalde, falde - TEST ld = double consonant? + C) a (L06% ?a // PB tapper, tappen, lapper, lappen + v) a (cc ?a // PB vaccinere + a (ffald+ a // PB + s) a (bbat ?& // PB + grim) a (sse '?& // PB stressed + _c) annes &:n: // PB French city + a (cc+ a // accent + b) accarat akar'a // PB + st) a (ccato & // PB + +// PB Short followed by 2 consonants = 1 phoneme: lg=>[l], ds=>[s] + a (lg ?& // PB valg, valget, alge - TEST + a (ls ?& // PB hals, halsen + a (ds ?& // PB plads + a (nd ?& // PB manden + +// PB short & - more specific rule(s) needed + pl) a (n ?& // plan + pl) a (ner ?& // planer + pl) a (nen ?& // planen + + C) a (rL04 a // PB karismatisk t) abernak abVn'ak // PB tabernakel, tabernakler mil) a (no '&: // PB stressed - C) a (rL11 a // PB bare + n) a (bo &: // PB + past) a & // PB tandpastareklame - r) a (C+ A // PB drab + + r) a (CK+ A // PB drab, Rasmus, rask + r) a (CA+ A // PB drabelig + r) a (dio++ A: // PB shortend too much by ph_danish br) ady Ejdi // PB name br) adbury &db@-re // PB name a (dress+ & // PB afsenderadresse _der) af (_ ,& // PB - a (nstreng+ & // PB overanstreng + a (nstreng++ & // PB overanstrengelse a (ntal+ & // PB meterantal a (ttach+ & // PB militærattache hvor) af =,& // PB @@ -68,23 +99,18 @@ w) ade Ejd // PB Wade, waders arapahoe &r'&p&hOw // PB -// PB consonant + a + double consonant => ?& (glottal a) - C) a (C% ?& // PB pladder, basser, masser - C) a (rr a // PB narrøv, narre - C) a (L06% a // PB tapper, tappen, lapper, lappen - v) a (cc a // PB vaccinere - s) a (bbat & // PB - grim) a (sse '& // PB stressed - _c) annes &:n: // PB French city - // PB amm => [a] - a (mm+ a // PB kammerat, amme + a (mm++ ?a // PB kammerat, amme + // PB k/c + ame => [&] L10) a (me+ & // PB kamel, kamera, Camelot + s) a (me & // PB person from Lapland + s) a (mer ?& // plur. + au (_revoir %o // PB au revoir au (_pair %o // PB au pair-pige - a (lt & // PB alt, overalt + a (lt ?& // PB alt, overalt, altid - short w) a (lt O // PB name vr) a (lt A // PB vralte aserbajdsjan &sVb&S'&n // PB @@ -130,16 +156,20 @@ for) a (n & // foran for) a (nd A // PB forandre for) a (nk A // PB forankre - r) a (nch & // PB + r) a (nch+ & // PB br) an (ch AN // PB branche d) and (ere ANd // PB dendere r) a (nsigt & // PB pokeransigt // PB general rule: [a] after r followed by sp/st/sk - r) a (L08 a // PB rask +// r) a (L08 a // PB rask + +// a followed by t + a or o: &: + a (ta &: // PB data TEST + a (to &: // PB dato TEST // PB general rule: [&:] after m/n before L02 followed by e - L09) a (L02e &: // mave + L09) a (L02e+ &: // mave can) averal '&v3r3l // PB Cape Canaveral gn) av (pot Aw // PB gnavpotte torn) ad (o '&d // PB stressed @@ -147,18 +177,20 @@ kan) ape &p'e // PB kanape kan) apé &p'e // PB kanapé n) a (palm & // PB + d) a (vid &: // PB name // PB General rule a between L02: [A] - L02) a (L02 A // PB mappe - too broad? - L02) a (L02e & // PB hvabehar - too broad? + L02) a (L02+ ?A // PB mappe, pap - too broad? + _p) a (m_+ & // PB Pam - name + L02) a (L02e+ & // PB hvabehar - too broad? _b) abe (_ Ejp // PB Babe Ruth - f) a (L02rL04 & // PB fabrik + f) a (L02rL04+ & // PB fabrik L02) a (L02le & // PB vable v) a (f++ a // PB vafler prim) a & // PB primaballerina L02) a (L02ser A // PB babser - m) amelu (k Am3l'u // PB - p) apegøje ap@g'Vj3 // PB + m) amelu (k Am@-l'u // PB + p) apegøje ap@g'Vj@- // PB p) a (v+ & // PB pave, pavillon sv) a (b & // PB svabre @@ -167,8 +199,8 @@ m) a (jo+ & // PB major, majonæse // PB general rule: [a] after l before n - l) a (n & // land - l) an (ce AN // PB lancere + l) a (nd ?& // land, lande, landlig - short & + l) an (cer AN // PB lancere pl) an (ch AN // PB planche cas) ablan (ca &bl'AN // PB Casablanca atl) a (ntis '& // PB stressed @@ -177,7 +209,7 @@ C) a (m+ a // PB ham, gamle, lam, Sam, samarbejde s) a (muel & // PB Samuel _im) a (m '& // PB stressed - s) amurai &mur'aj // PB samurai + s) amurai &mur'aI // PB samurai k) a (mufl+ a // PB kamuflage a (mulet a // PB C) a (mæ+ & // PB kamæleon TEST @@ -210,12 +242,14 @@ // PB general rule: [&] after f before m/n f) a (L09 & // PB familie, fane + f) a (nd ?& // PB fandens f) a (mle+ A // PB // fan) a (tL04 '& // PB fanatiker, fanatisk // PB general rule: [&] after k k) a (+ & // PB kage, kaste + mik) ad (o '&:d // PB stressed k) a (kao+ & // PB kakao _chik) a (ne '& // PB stressed sk) a (k A // PB skak @@ -225,9 +259,12 @@ _alk) a (li '& // PB alkalisk stressed k) atie Ejti // PB name narkotik) a & // PB narkotikaproblemer + k) athy &Te // PB name // general rule: [&:] after consonant before "ne" C) a (ne &: // PB "mane" opposed to "mande" + form) a (ne & // PB formane + C) a (ner & // PB glaner r) a (ne A // PB krigsveteraner // PB general rule: [a] after k before p @@ -274,7 +311,7 @@ gammeld) a (gs & // PB hverd) ag & // PB hverdagskost dd) a (g+ & // PB middagstid _d) a (m_ a // PB dam - _d) a (mm a // PB dammen + _d) a (mm ?a // PB dammen d) a (fn a // PB dafnie // PB general rule: [A] after d before mp @@ -320,11 +357,6 @@ gammeld) a (gs & // PB // PB general rule: [A] before kt a (kt A // PB aktuar, aktivitet -// PB general rule: [A] before cc - a (cc A // accent - b) accarat akar'a // PB - st) a (ccato & // PB - // PB general rule: [Au] after b before v b) av (++ Au // PB forbavset b) a (vian+ & // PB exception @@ -342,14 +374,14 @@ gammeld) a (gs & // PB af (s Aw // afstand // PB general rule: [Au] before l - av (l+ Aw // savle, tavle, travl + av (l++ Aw // savle, tavle, travl // PB general rule: [Au] after l _l) av Aw // lavenergi, lavteknologi, lavadel, lavtryk _l) av (v Aw // PB lavvandet l) a (vendel & // exception: lavendel - sl) a (v &: // exception: slaver - l) av (et &:v // exception: lave + sl) a (v & // exception: slaver + l) av (et &v // exception: lave _l) av (_ &v // PB lav l) av (er &v // PB laver, lavere l) av (ed &v // PB lavede @@ -368,11 +400,20 @@ gammeld) a (gs & // PB _t) av (_ Aw // PB han tav stille // PB general rule: [A] before r - a (r+ A // skar + ar (++ A: // skar, fare, faren, barsk + ar (e+ AR // PB reparere, parere TEST + f) are (++ A:A // PB fare + ar (a+ AR // PB arabisk, ara + ar (_++ Ar // PB sårbar + C) ara (k AA // PB karakteristika + a (rr++ ?A // PB narren - short A + ti) a (ra 'A: // PB stressed + m) arokko ar'Vko // PB stressed hav) a (rti 'A // PB stressed e) a (rL04+ & // PB stearin a (rrest a // PB - b) arry &ri // PB name + b) arry &rI // PB name + @b) a (rlig 'A // PB ufejlbarlig - stressed saf) a (ri 'A // PB stressed _has) a (rd 'A // PB stressed _bast) a (rd 'A // PB stressed @@ -389,7 +430,7 @@ _longob) a (rd 'A // PB stressed _bulg) a (r 'A // PB bulgarer - stressed // PB general rule: [a] before velars - a (L01++ a // planke, slanke, anke, flanke, gang + a (L01++ a // planke, slanke, anke, flanke, gang, hank es) a (jas 'a // PB name pizz) a & // PB pizzakæde a (L01L04++ & // PB bajonet, lagune @@ -405,6 +446,7 @@ _longob) a (rd 'A // PB stressed j) a (L10o+ A // PB Jakob, Jacob C) a (nL10L04++ a // PB blankocheck h) a (nkøn++ & // PB + h) a (nkanin & // PB h) a (j++ a // PB hajøjne sp) a (nkuler a // PB akryl &kr'yl // PB @@ -446,10 +488,10 @@ michel) angelo 'andZ3lo // PB name s) a (g+ & // PB ankesag, sag, sago, heksagon s) ag (C+ Au // PB sagfører s) ag (s_+ &j // PB for den sags skyld - s) a (gsma++ & // PB sagsmappe - s) a (gsan++ & // PB sagsanlæg - s) a (gsom++ & // PB sagsomkostninger - s) a (gsbehandl++ & // PB sagsbehandler + s) ag (sma++ &j // PB sagsmappe + s) ag (san++ &j // PB sagsanlæg + s) ag (som++ &j // PB sagsomkostninger + s) ag (sbehandl++ &j // PB sagsbehandler snakkes) ag (lig '& // PB s) ag (sø Au // PB sagsøge sl) a (ng+ & // PB @@ -469,6 +511,7 @@ snakkes) ag (lig '& // PB l) a (gt+ A // PB lagt - avoid [au] forl) a (gt_ ''A // PB stressed _bat) a (lje '& // PB stressed + alfie &lfi // PB name // PB general rule: [A] before vn a (vn+ A // favn, savn, avner @@ -479,6 +522,7 @@ snakkes) ag (lig '& // PB // PB general rule: consonant + a + c/k: [a] C) a (L10 a // PB makværk, Jacob + l) acrosse &kr'Vs // PB game tax) a & // PB taxachauffør f) a (cL11 & // PB facade att) ache &S'e // PB @@ -491,7 +535,8 @@ snakkes) ag (lig '& // PB pl) a (ce & // PB placere st) a (ka & // PB stakat - a (k%L04+ & // PB akkord, akkompagnerer TEST + a (k%o+ ?& // PB akkord, akkompagnerer + a (k%u+ ?A // PB akkurat a (kvA+ & // PB akvarium a (ppetit a // PB appetit a (bnorm a // PB @@ -505,21 +550,21 @@ snakkes) ag (lig '& // PB h) a (cienda _^_es // PB l) a (kr %& // PB lakrids e) a & // PB Korea, azalea - b) ayer ajV // PB bayersk, Bayern + b) ayer aIV // PB bayersk, Bayern _b) ay (_ Ej // PB Thunder Bay - ayatollah aj&t'Vl& // PB - b) ayreuth ajR'Vjt // PB German town + ayatollah aI&t'Vl& // PB + b) ayreuth aIR'Vjt // PB German town m) anhattan &nh'&t@n // PB bloody_m) ary &ri // PB - gu) ay aj // PB Paraguay + gu) ay aI // PB Paraguay a (mp %A // PB ampul _) aage Ou3 // PB name _) a (men_ A // PB _) amager AmAr // PB Amager _) amy Ejmi // PB name g) aux 'o // PB Margaux - a (ppar a // PB apparat - a (ppelsin a // PB appelsin + a (ppar+ a // PB apparat + a (ppelsin+ a // PB appelsin ae (ro E // PB aerobic, aerosol _st) a (ll O // PB about airplane "stall" t) alk (show Ok // PB @@ -556,7 +601,7 @@ _entusi) a (s '& // PB stressed - entusiast h) av (_ & // PB hav - problem with the noun "hav" [hAu] iske_h) av Au // PB Kaspiske hav, Karibiske Hav @h) av (_ Au // PB flammehav - h) av (C Au // PB havbund + h) av (C Au // PB havbund, havre københ) av (n 'Aw // PB h) av (over Au // PB havoverfladen h) av (is Au // PB @@ -570,7 +615,8 @@ himmel_og_h) av Au // PB "sea/ocean" not "have" = "garden" ag (n+ Au // PB agn, Agnes r) ag (na+ Au // PB ragnarok ag (new &g // PB name - champ) agne '&nj@ // PB champagne + champ) agne '&nj@- // PB champagne + _kamp) agne '&nj@- // PB stressed ag (nos %ag // PB agnostiker hav) a (nna '& // PB Havanna h) a (ck+ & // PB hacke @@ -600,12 +646,12 @@ lidt_v) ag (t &j // PB l) arge AdZ // PB a (merikan a // PB amerikansk aids Eids // PB - air Er // PB airbag - n) ai (robi aj' // PB - _k) airo ajro // PB Kairo - c) ai (ro aj // PB - det) ai (l 'aj // PB detailhandel - _sin) ai aj // PB Sinai + air E:3- // PB airbag, fair + n) ai (robi aI' // PB + _k) airo aIro // PB Kairo + c) ai (ro aI // PB + det) ai (l 'aI // PB detailhandel + _sin) ai aI // PB Sinai cl) aire E:r // PB name aubrey O:bri // PB name audrey O:dRi // PB name @@ -627,7 +673,7 @@ ginger_) ale Ejl // PB l) a (serpr Ej // PB laserprinter l) a (seren Ej // PB l) a (sernes Ej // PB - m) ay (a aj // PB + m) ay (a aI // PB _indi) a (na '& // PB stressed - U.S. state // PB stressed a in final -al in $alt words in da_list @@ -641,7 +687,7 @@ ginger_) ale Ejl // PB r) a (l@@+ A // PB centralisation NEEDS MORE WORK an) al (fabet =&l // PB an) al (y+ &l' // PB analytiker - form) aldehyd &ld3h'yD // PB + form) aldehyd &ld@-h'yD // PB // PB words in da_list with final -ance - stressed a &) ance ($p_alt 'ANs@ // balance, romance @@ -660,7 +706,7 @@ ginger_) ale Ejl // PB &) ans ($p_alt '&ns // varians // PB stressed a in final -at - words in da_list - &) at ($p_alt '&t // attentat + &) 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 @@ -672,8 +718,8 @@ _oblig) atio (n &S'o // PB clash with "obligat" in da_list oblig) atio (n &S'o // PB statsobligation // PB (stressed a in final -ar - words in da_list - &) ar ($p_alt ''Ar // antikvar, dinar - &) ar (iat$p_alt Ar // antikvariat + &) ar ($p_alt+ ''A // antikvar, dinar + &) ar (iat$p_alt ''A // antikvariat // PB nouns with final -ade in da_list - stressed a &) ade ($p_alt '&:D@ // hystade @@ -687,8 +733,10 @@ _oblig) atio (n &S'o // PB clash with "obligat" in da_list // PB nouns with final -an in da_list - stressed a // alt2 is used in order not to stress -ner words in da_list // where "er" has been removed eg. J'apan which becomes jap'ansk, jap'aner - &) an ($p_alt2+ ''&n // leguan, velan + &) an ($p_alt2+ '&n // leguan, velan + &) an (i$p_alt2+ &n' // pyromani, nymfomani &r) an ($p_alt2+ 'An // varan + &r) an (i$p_alt2+ An' // tyrani &r) an (ne$p_alt2+ 'A // tyrannen - one n // PB final -abel in da_list - stressed a @@ -701,7 +749,7 @@ _oblig) atio (n &S'o // PB clash with "obligat" in da_list // PB nouns with final -gram in da_list - stressed a &gr) am ($p_alt+ 'am // program - &gr) am (m$p_alt+ 'a // programmet - only one m + &gr) am (m$p_alt+ '?a // programmet - only one m erf) a (r 'A // PB erfaren, erfaring erst) a (tning '& // PB @@ -782,13 +830,17 @@ _chimp) a (n '& // PB stressed - chimpanse a (sme '& // PB orgasme, entusiasme bl) a (d & // PB blad h) a (n & // PB han + a (nsk ?& // PB dansk, danske - short vowel + a (ndsk ?& // PB handske + h) a (ndl ?& // PB handle tj) a (_ &: // PB j) avert aurt // PB javert l) ave (ment &@ // PB lavement l) ave (_ &v@ // PB lave l) aver (_ &vV // PB laver - sl) ave &v@ // PB slavearbejde + sl) ave &v@- // PB slavearbejde sl) aver &vV // PB + sl) averi &vVr'i // PB _enkl) a (ve+ '& // PB stressed _enkl) aver '&vV // PB stressed pal) a (ver+ '& PB stressed - also [aw] @@ -818,9 +870,9 @@ kanonl) avet &vet // PB exception - French origin p) ace eis // PB motorpace, pacemaker pacem) a (k ei // PB pacemaker interf) a (ce ei // PB interface - L08) a (d &: // PB stadig +// L08) a (d &: // PB stadig busk) ad (s '& // PB - _) a (e_ &: // PB ae + _) a (e_ & // PB ae a (fC+ a // PB af = au and exceptions in the f group vodk) a & // PB vodkaflaske a (ffære+ & // PB @@ -849,23 +901,23 @@ cornfl) akes Ejgs // PB n) aise 'E:s@ // PB mayonnaise br) ai (s E // PB braisere k) ai (n &|'i: // PB kokain - _k) ai (n aj // PB name Kain + _k) ai (n aI // PB name Kain ld) a (k & // PB baldakin mir) a (k 'A // PB mirakel - stressed a - t) a (lA &: // PB tale + t) a (lA & // PB tale t) a (p a // PB tap kat) a (pult &' // PB t) a (pL11 & // PB tapet, tapas _et) a (pe 'a // PB t) a (pi & // PB tapir _) aha (_ ah'a // PB - p) a (pi & // PB papir - replace with: p) a (CL04 ?? + p) a (pi+ & // PB papir - replace with: p) a (CL04 ?? p) a (pri+ a // PB paprika - L09) a (l &: // PB male +// L09) a (l &: // PB male guatem) a (l '& PB - m) alaj &l'aj // PB stressed + m) alaj &l'aI // PB stressed L09) a (ld & // PB knald - _) a (ldrig a // PB aldrig + _) a (ldrig+ a // PB aldrig a (lde & // PB alder aldetha &ld'iT& // PB name skr) a (l a // PB skrald @@ -877,7 +929,7 @@ parmes) a (n '& // PB stressed &eks) a (m & // PB sh) a (mL11 & // PB shaman sh) ah & // PB silent h - sh) ahen &3n // PB + sh) ahen &@-n // PB sp) a (m &: // PB isl) a (m 'a: // PB islam isl) a (mi & // PB islamist @@ -886,12 +938,13 @@ parmes) a (n '& // PB stressed ch) a (n a // PB chance v) a (j a // PB svajende, vaje // PB general rule: [&] after p/b/d before n - L06) a (n & // PB tand, tante, band, bande, spand, spade + L06) a (n & // PB tand, tante, band, spand, spade + L06) a (nd ?& // PB bande ban) a (n '& // PB banan -kontrab) ande '&nd3 // PB +kontrab) ande '&nd@- // PB hvord) a (n '& // PB stressed a in 'hvordan' g) a (ngster+ & // PB - m) anchet ANS'Ed // PB manchet + m) anche (t ANS'E // PB manchet hin) a (n '& // PB stressed - hinanden _ap) a (ch '& // PB apache pil) a (tus '& // PB Pontius Pilatus @@ -913,7 +966,8 @@ kontrab) ande '&nd3 // PB restaur) ant 'AN // PB added stress l) a (p+ a // PB slap, lap h) a (p a // PB haps - h) a (ppA & // PB happy end, happening + l) a (pL04+ & // PB volapyk + h) a (ppA ?& // PB happy end, happening j) a (pp a // PB jappe j) a (ps a // PB japser t) a (nk A // PB tankstation @@ -940,6 +994,7 @@ _dinos) aurer 'aurV // PB stressed rest) au (r o s) au (terne o // PB wine @h) av_ Au // PB ildhav -[Au] = [&v] followed by syllable: ['ilh&:v@D] + en_k) ar (l ?& // PB "sikke en karl" @k) ar (l ?& // PB bøssekarl, forkarl k) ar (lene & // PB afrik) aa (n A: // PB afrikaaner @@ -959,7 +1014,7 @@ _dinos) aurer 'aurV // PB stressed r) a (oul A' // PB name alejandro _^_es // PB name arkansas Ak@nsO: // PB - s) ally &li // PB + s) ally ?&li // PB sar) ah A // PB name th) a (nks & // PB thanksgiving all (_right Ol // PB @@ -1005,18 +1060,18 @@ dovenl) ar (s & // PB &) age (r$p_alt++ '&:SV // reportager, plamager &r) age ($p_alt++ 'A:S@ // [A] after "r" - garage &) age (re$p_alt+ &S'e@ // not for the "age" words - gagere -hjertemass) age &:S@ // hjertemassage - et) age &S3 // PB stueetage - t) age (t &j3 // PB kirketaget - t) age (lse &j@ // PB tilfangetagelse - foret) age &j@ // PB - bet) age &j@ // PB betaget - varet) age &j@ // PB +hjertemass) age &:S@- // hjertemassage + et) age (+ &:S@- // PB stueetage + t) aget (+ &@D // PB kirketaget - [@-] is too short here + t) age (lse &@- // PB tilfangetagelse + foret) age & // PB + bet) age &@- // PB betaget + varet) age & // PB //PB general rule: "ag" words silent g d) ag (_ &j // PB dag - d) ag (e+ &j // PB dage - d) ag (s_ &j // PB en dags tid + d) ag (e+ & // PB dage + d) ag (s_ & // PB en dags tid d) ag (l@+ Au // PB daglejer d) ag (insti Au // PB daginstitution @d) ag (_++ & // PB dommedag @@ -1068,8 +1123,10 @@ hjemmeb) ag (_ &j // PB sl) ag (C@ au // PB slagskib sl) ag (_kort aw // PB "et slag kort" l) ag (re+ &j // PO overskudslagre - sl) agg (e ak // PB slagger + pell) ag (ra &g // PB + sl) agg (e ?ak // PB slagger C) ag (t+ ag // PB venskabspagt, smagte, sagt + b) ag (tal aw // PB bagtalt sl) ag (ne &j // PB rædselsslagne l) ag (_ &j // lag forl) ag %&j // PB forlagsvirksomhed @@ -1079,12 +1136,13 @@ hjemmeb) ag (_ &j // PB l) ag (C au // PB flagstang, lagkage fl) ag (afbrænd au // PB flagafbrænding gall) agh 3g // PB name - _sl) ag (s_ ag // PB slags - _sl) ag (sen ag // PB slagsen + _sl) ag (s_ ?ag // PB slags + _sl) ag (sen ?ag // PB slagsen gennemsl) ag (+ &j // PB gennemslagskraft sl) ag (sværd au // PB pl) ag &j // PB plagsom pl) ag (i &g // PB plagiere, plagiat + fl) ag (rant &g // PB flagrante delicto l) ag (re &j // PB oplagres fl) ag (re au // PB esl) ag (lA Au // PB beslaglægge @@ -1106,15 +1164,18 @@ hospitalsv) ag (t ag // PB sp) agh (ett &g' // PB spaghetti sp) ag (num Au // PB r) ag (e+ Au // PB drage, rage - C) age (+ &:j@ // PB tage, bage, kage + C) age (++ &:j@- // PB bage, kage + C) age (nK++ &j@- // PB sagen, kagen + b) ag (efter++ &j // PB + age (lig '&j@- // PB uindtagelig, behagelig - stressed arm) aged &g'Ed // PB Armageddon arm) agedd &g'Ed // PB Harmagedon mut) age (n &g'e // PB stressed affut) age &:S@ // PB missilaffutage - bag) age &:S3 // PB håndbagage +// bag) age &:S3 // PB håndbagage _b) ag (el+ Ejg // PB age (rn &jV // PB "acorn" - _) age (_ &j3 // PB "age med heste" + _) age (_ &j@- // PB "age med heste" _) ager (_ &jV // PB "field" ager (høn &jV // PB agerhøne/høns l) ag (n &j // PB lagner @@ -1122,21 +1183,21 @@ hospitalsv) ag (t ag // PB ass) age &S@ // PB rygmassage plant) age &S@ // PB citronplantage on) age &S@ // PB kontraspionage - C) ager (+ &:jV // PB bagerst, kager + C) ager (+ &jV // PB bagerst, kager b) age (rul &j@ // PB bagerulle b) ag (eri+ &j // PB bager'i et) ager &SV // PB treetagers foret) ager Ar // PB g) age (_+ &:S@ // PB fl) ager (mus AuV // PB - l) agd (e &:j // PB lagde + l) agde &:@- // PB lagde g) ager (e+ &S'e // PB gagere - r) age (++ Aw@ // PB rage, fremragende + r) age (++++ Aw@- // PB rage, fremragende, uddragene _) age (nt++ &g'E // PB agent, agenten - stressed age (nt++ &gE // PB superagenten, dobbeltagent, forsikringsagent rædselssl) age (n &j@ // PB rædselsslagent suffr) age (tte AS'E // PB suffragette - stressed - r) ager (++ AwV // PB rager + r) ager (+++ AwV // PB rager tr) agedie Ag'eDj@ // PB _t) ager (_ Ar // PB tager [t'Ar] iagtt) ager (_ &jV // PB iagttager - noun @@ -1156,38 +1217,38 @@ rædselssl) age (n &j@ // PB rædselsslagent s) ag (n Au // PB sagn rans) ag (n &j // PB ransagning las) agn (e '&nj // PB - bret) agn (e '&nj // PB + bret) agn (e '&n; // PB s) agd (e+ &: // PB sagde - tilb) ag (e '&: // PB stressed a in 'tilbage' + tilb) ag (e '&:; // PB stressed a in 'tilbage' .group al // PB final -ale - stressed a -_bienn) al '&:l -_differenti) ale '&:l@ - _fin) al (e '&:l - _forh) al (e '&:l - _form) al (e '&:l - _fort) al (e '&:l -_gradu) al (e '&:l -_grati) al (e '&:l - _kab) al (e '&:l - _lok) al (e '&:l - _manu) al (e '&:l -_materi) al (e '&:l - _miss) al (e '&:l +_bienn) al '&l +_differenti) ale '&l@ + _fin) al (e '&l + _forh) al (e '&l + _form) al (e '&l + _fort) al (e '&l +_gradu) al (e '&l +_grati) al (e '&l + _kab) al (e '&l + _lok) al (e '&l + _manu) al (e '&l +_materi) al (e '&l + _miss) al (e '&l _mor) al (e 'A:l _numer) al (e 'A:l _pastor) al (e 'A:l -_person) al (e ''&:l -_potenti) al (e '&:l -_ration) al (e ''&:l - _reg) al (e '&:l -_saltomort) al (e '&:l -_skand) al (e '&:l -_speci) ale (_ '&:l@ - _timb) al (e '&:l -_trienn) al (e '&:l - _urin) al ''&:l +_person) al (e ''&l +_potenti) al (e '&l +_ration) al (e ''&l + _reg) al (e '&l +_saltomort) al (e '&l +_skand) al (e '&l +_speci) ale (_ '&l@ + _timb) al (e '&l +_trienn) al (e '&l + _urin) al ''&l seksu) al '&l // PB seksualliv sped) al (sk '&l @@ -1201,7 +1262,7 @@ _trienn) al (e '&:l kø) b (ma // PB købmand - silent b kø) b (mæ // PB købmænd - silent b beagle bi:g@l //PB beagle - dog - braille braj: // PB + braille braI: // PB bouill (on bulj // PB bloody blVdi // PB bonsoir _^_fr // PB @@ -1231,20 +1292,20 @@ _trienn) al (e '&:l &) bassin b&s'EN // svømmebassin basketball bAsgetbO:l // PB baseball bejsBO:l/2 // PB - butterfly bVtVflaj // PB + butterfly bVtVflaI // PB beach bi:tS // PB Beach Boys _) blake blEjk // PB name - _) bligh blAj // PB name + _) bligh blaI: // PB name burton bWtVn // PB name bugsy bVgsi // PB name baltimore bOltimV: // PB US city burgh bW:g // PB Pittsburgh - bike bajk // PB mountainbike, bikermiljø + bike baIk // PB mountainbike, bikermiljø _) buic bjuik // PB car brand t_) bone bOwn // PB T-bone-steak bernie bWni // PB name beverly bEvVli // PB - bei (rut baj // PB + bei (rut baI // PB fris) bee bi // PB burgess bWdZes // PB name borough bVrV // PB Peterborough @@ -1271,10 +1332,10 @@ _trienn) al (e '&:l _) be (@ b%e // PB besta'and // PB exceptions to the "be" rule - _) be (dste bE // bedstefar, bedstemor + _) be (dste b?E // bedstefar, bedstemor _) be (dring bE _) be (nmel be - _) be (gge bE + _) be (gge b?E _) be (narbejde be _) be (nbrud be _) be (nbræk bE @@ -1302,26 +1363,30 @@ _trienn) al (e '&:l _) be (nv bE _) be (de be _) be (dre bE - _) be (dding be - _) beg (blende baj - _) beg (mand baj - _) beg (ning baj + _) be (dding b?e + _) beg (blende baI + _) beg (mand baI + _) beg (ning baI _) be (jds bE _) be (jle ba _) be (lgi bE _) be (rb bE _) be (rgen_ bE + _) be (sk_ b?e + _) be (ske_ b?e _) be (tastrål be _) be (eta_ be _) be (tatron be _) be (taversion be _) be (tel be _) be (tl be + _) be (ta be // PB betablokker + _) be (tal %be // PB betale, betalt _) beige bE:S // PB colour - _) be (lla bE + _) be (lla bEE _) beech bitS _) beau %bo // PB Beaulieu, Beaumont - beethoven betov3n // PB name + beethoven betov@-n // PB name berkeley bWkl/2i // PB .group c @@ -1329,20 +1394,23 @@ _trienn) al (e '&:l c k fran) cs k // PB French currency - silent s c (e s // PB chance - s) cene en3 // PB forførelsescene + s) cene en@- // PB forførelsescene s) cener enV // PB forførelsescener // PB nouns in da_list with final -ce - stress on previous syllable &) ce (_$p_alt =s@ // ekspeditrice &) ce (n$p_alt =s@ // ekspeditricen &) ce (r$p_alt =sV // ekspeditricer - &) cer ($p_alt =s''er // annoncere + &) cer ($p_alt =s''er // placér + &) cer (e$p_alt =s''e // placere + &) cer (edes$p_alt =s''e // placeredes + &) cer (er$p_alt =s''e // placerer dedi) cer ($p_alt =k''er // dedicere - &) cere ($p_alt =s''er3 // annoncerede + &) cere ($p_alt =s''eV // annoncerede &) cér (_ s'er // annoncér &) cør (_ s'Wr // annoncør diskvalifi) cer ser // PB - produ) ceren =sV3n // PB + produ) ceren =sVVn // PB c (y s // PB s followed by y - cykel cyper kypV // PB Cypern @@ -1369,11 +1437,11 @@ frederi) c (ia =ks // PB chaplin tS&plin // PB name challenge tS&lendZ // PB chelsea tSElsi // PB - cheyenne Saj'En // PB + cheyenne SaI'En // PB maso) ch (is k // PB sadomasochisme, masochist wi) ch tS // PB sandwich chicago Sik'AgOw // PB - child tSajld // PB Fairchild + child tSaIld // PB Fairchild chopin SopEN // PB name ch (ip tSj // PB mikrochip te) ch (no k //& PB @@ -1395,7 +1463,7 @@ frederi) c (ia =ks // PB cappu) cc (ino tSj' // PB fa) c (ad s fa) c (on s - ceylon sajl/2Vn // PB + ceylon saIl/2Vn // PB cornichon kVrniS'VN // PB charlie tSAli // PB charles tSA:ls // PB @@ -1418,8 +1486,8 @@ frederi) c (ia =ks // PB cambridge kejmbRidZ // PB canterbury k&ntVbri // PB connecticut kVn'etikVd // PB - carlisle kAlajl // PB - china tjajn& // PB + carlisle kAlaIl // PB + china tjaIn& // PB _) cape (_town kEjp // PB name _) chuck tSVk // PB name cleveland kli:vl&n // PB @@ -1450,7 +1518,7 @@ piccadilly_) circus sWk@s // PB cutler kVtlV // PB name cajun kEdZ3n // PB English pronunciation courtney kO:tni // PB -north_) carolina k&rol'ajn& // PB +north_) carolina k&rol'aIn& // PB _) cathy k&Ti // PB name _) cagney k&gni // PB name cottage kVtidZ // PB @@ -1462,13 +1530,17 @@ north_) carolina k&rol'ajn& // PB cézannen ses'&n3n // PB Cézannen cockney kVkni // PB clerk klA:k // PB Clerkenwell - carmine kA:majn // PB name + carmine kA:maIn // PB name .group d d d - A) de (_ D3 + A) de (_ D@-_| // PB hade, lade + ski) de D@- // PB skidefuld + ba) de D@- // PB badeforhæng + ga) de D@- // PB gadebetjent + væ) dde (+ D@- // PB væddeløb orki) de d'e // PB stressed d (i d // PB redigere, hindi ly) d D // PB lydisolering @@ -1486,28 +1558,30 @@ north_) carolina k&rol'ajn& // PB bo) d (ega d // PB d (us d // PB fidus d (ok d // PB paradoks, tørdok - a) de (Cr D3 // PB badedragt - not tested - y) de D3 // PB brydehold + a) de (Cr D@- // PB badedragt - not tested + y) de D@- // PB brydehold + y) der DV // PB yderligere + gry) de (ret D@- // PB gryderet sy) de (ng DE // PB sydengland by) de (l de // PB bydel - indby) de D3 // PB indbydelse + indby) de D@- // PB indbydelse by) d (elig D // PB modbydelig y) der (_ DV // PB betyder @) d (elt d // PB udelt, tildelt - æ) de (l+ D3 // PB ædelt + æ) de (l+ D@- // PB ædelt mo) d (em d // PB d (onna d // PB madonna dil) d (o d // PB tourne) dos d'o // PB re) dund (ant dOnd // PB _) dorset dO:sEt // PB name - _) drysdale dRajsdEjl // PB name + _) drysdale dRaIsdEjl // PB name + dreyfus drEf'?ys // PB name // PB general rule: silent d in final ærd ær) d (_ // PB færd, sværd svær) d (et // PB sværdet lær) d (_ d // PB højlærd -// fær) d (_ // PB // PB general rule: silent d after l l) d // PB hold, skjold @@ -1534,7 +1608,7 @@ turtel) d (ue d // PB d (ør d // PB bildør gul) d // PB guldøreringe d (ele d // PB tildele - a) de (l D@ // PB adelen + a) de (l D@- // PB adelen morta) de (l d'E // PB stressed ba) d (e D // PB badelegetøj d (rev d // PB soldrevne @@ -1546,7 +1620,7 @@ turtel) d (ue d // PB il) d (ring d // PB skildring kil) d (re d // PB skildre l) d (ig d // PB skyldig - bal) de l3 // PB silent d - balde + bal) de l@- // PB silent d - balde l) d (akin d // PB keep d in "baldakin" hel) d (i d // PB keep d in "heldig" mo) d (ern d // PB moderne, moderniteter @@ -1568,12 +1642,16 @@ stikor) d // PB exception - silent d in 'stikord' d' d //PB d'Aviano - e.g. French and Italian names woo) d t // PB Hollywood ([d] sounds like [D] dawson dV:s3n // PB name - dwight dwajt // PB name + dwight dwaIt // PB name _) doreen d0r'in // PB name daumier _^_fr // PB name // general rule: [D] after vowel and before consonant A) d (C D // adkomst + +// PB final d: D + A) d (_ D // PB lad + // exceptions fe) dt (@ t // PB fedtet, fedtsyl ski) dt t // PB @@ -1581,7 +1659,7 @@ stikor) d // PB exception - silent d in 'stikord' bi) d (sk // PB silent d _ma) d (sen // PB silent d spre) dt t // PB spredtes - sta) ds s // PB + sta) ds (_ s // PB flitterstads stru) ds s // PB i) d (ti+ D // PB hidtil bu) d (apest d // PB @@ -1628,14 +1706,19 @@ stikor) d // PB exception - silent d in 'stikord' fre) d (s D // PB fredstid // PB general rule: [D] after a vowel - A) d D // PB sted - way too broad? + A) d (A D + ste) d D // PB sted aci) d (ose d // PB + ø) d (em_ d // PB ødem + ø) d (emer_ d // PB ødemer + ø) d (emet_ d // PB ødemet A) dd D // PB skuddene _i) d (e d // PB _i) d (é d // PB evi) d (en d // PB evident bi) d (e D // PB bider - ri) d (e D // PB + ri) de D@- // PB rideskole + si) de D@- // PB sidemand vi) d (er D // PB videre ti) d (e D // PB tider salva) dor d'O: // PB El Salvador @@ -1666,7 +1749,7 @@ stikor) d // PB exception - silent d in 'stikord' hår) d // PB silend d - hård, hårdere stri) d (s D // PB but not silent d in e.g. 'stridsvogn' u) dt (+ t // PB brudt - plu) dsel sl/2 // PB silentg d - pludselig [pl'usli] + plu) dsel s@-l/2 // PB silentg d - pludselig [pl'usli] in) d (C ir) d (_ d pæ) d (a d @@ -1675,7 +1758,7 @@ stikor) d // PB exception - silent d in 'stikord' å) d (an d kandi) d (at 'd mi) dd (a d - nø) dde (+ D3 // PB jordnøddesmør + nø) dde (+ D@- // PB jordnøddesmør an) d (e // PB manden, anden - silent d _fan) de (me // PB fandeme - skip de, only this word gær) de V // PB silent d @@ -1683,9 +1766,9 @@ stikor) d // PB exception - silent d in 'stikord' mo) d (el d or) d (el d or) d (en d - gui) de (n de - ver) d (en d - gui) der dV +// gui) de (n de + ver) den d@-n // PB verdenskrig +// gui) der dV klu) d (ere d // konkludere A) d (es D bu) d (get @@ -1698,7 +1781,8 @@ stikor) d // PB exception - silent d in 'stikord' hon) d (ura d // PB Honduras ti) d (s+ D // tidstabel ti) d (sel // PB silent d - A) d (t_++ // PB silent d - forbudt, skudt, ladt, godt + A) d (t_++ // PB silent d - forbudt, skudt, ladt, godt, vådt + A) d (te++ // PB silent d vådte, vådtet A) d (te_++ // PB silent d - beskidte, godte A) d (ter_++ // PB silent d - godter i) d (t // PB skridtet, skoleridtet @@ -1723,7 +1807,7 @@ stikor) d // PB exception - silent d in 'stikord' dodge dVdZ // PB city daiquiri d&k@ri // PB drink _) duke dZu:k // PB Duke - name - _) drive (- dRAjv // PB drive-in + _) drive (- dRAIv // PB drive-in _) dean di:n // PB name dubois dybw'A // PB name dorothy _^_en // PB name @@ -1735,16 +1819,70 @@ stikor) d // PB exception - silent d in 'stikord' drisco _^_en // PB name Driscoll dutch dVtS // PB name darlene dAl'in // PB name - doubtfire dawdfajV // PB name (movie) + doubtfire dawdfaIV // PB name (movie) dickie deki // PB name dicky deki // PB name dewey djui // PB name .group é // added by PB - é 'e // idé, entré + é '?e // idé, entré .group e e e // PB e: => e + +// PB short (glottal) e before double consonant + e (C% ?e // PB leddet + e (nn ?E // PB denne, henne + e (L02%+ ?E // PB modemmet + C) e (rr ?E // PB herre + C) e (ll% ?E // PB celle + e (ks ?E // PB heks + +// PB Short e followed by st, st, sk - made short in ph_danish + C) e (L08 E // PB fest, fester, hest, heste + sl) e (sk e // PB slesk, sleske + m) e (st e // PB + ån) e (C @- // PB månestråle + +// exceptions + cyk) e (lløb @- // PB + sku) e @- // PB skuespil + menn) e @- // PB menneske + æl) e @- // PB sjælefred + r) e (v E // PB brev + år) e (+ @- // PB årevis + r) e (Ce+ E // PB breve + str) ee (t i: // PB street + _d) e (m_ E // PB + f) e (m E // PB femten + e (dith e: // PB name + +// PB E after r + r) e E // PB reaktion - VERY BROAD + @r) es (_ Vs // PB koncentreres TEST +// @r) et (_+ Vd // PB koncentreret TEST + +// PB E before n - VERY BROAD + e (nK ?E // PB send, end, men + e (ns e // PB ensrette + _) e (n_ e // PB + b) e (n e // PB + ov) e (n @- // PB ovenpå + os) e (n @- // PB rosenknop + sjæld) e (n @- // PB sjældent + _) e (ne e // PB ene, eneste + e (net_ @ // PB bækkenet + gen) e (ral @- // PB + _s) e (n_ e // PB sen + _s) e (nt_ e // PB sent + _l) e (n_ e // PB len + +// PB e followed by ne - VERY BROAD + e (ne_ e // PB sene, mene + +// PB e followed by ner - VERY BROAD + e (ner_ e // PB scene, mener + // PB stress on second syllable after initial "be" in .group be // Secondary stress after a syllable &b) e (s@ e, // PB hv'alrosbest,and @@ -1756,33 +1894,46 @@ stikor) d // PB exception - silent d in 'stikord' b) e (rig e // PB våbenberiget b) e (rg+ E // PB herberg fab) ergé ErS'e // PB name - bomb) e (r@ 3 // PB bomberydder - dobb) e (l @ // PB + bomb) e (r@ @- // PB bomberydder + dobb) e (l // PB reb) e (kka 'E // PB name - C) e (L02 E // PB stemme, lefle + l) e (fl ?E // PB lefle + p) e (ng ?E // PB penge + e (fter E // PB efter, efterse + leg) e @- // PB legeværelse + leg) e (nd E // PB legende (myth, not playing) + dag) e @- // PB dagevis + op) e (r @- // PB operere, opera _halvf) e (ms 'E // PB stressed - d) e (p e // PB depressiv + d) e (pr e // PB depressiv _emfys) e (m 'e // PB stressed kn) e (b e // PB - C) e (L02L11 e // PB tema - TEST - herr) e 3 // PB herremand - bed) e 3 // PB bedemand + kn) eb (re Eu // PB "knebre med næbbet" + C) e (L02a e // PB tema + ød) e (+ @- // PB ødemark + herr) e @- // PB herremand + bed) e @- // PB bedemand _still) e (ben ='e // PB fr) e (m &# // PB fremad _eks) e (mpel 'E // PB stressed - entr) e (pr 3 // PB entreprise - spar) e 3 // PB sparebøsse - ordr) e 3 // PB ordrebog - ær) e (+ 3 // PB ærefrygt + entr) e (pr V // PB entreprise + spar) e @- // PB sparebøsse + ordr) e @- // PB ordrebog r) e (L02s &# // PB revse, krebs - TEST - br) e (v E // PB brevstemt - L03) e (L02L04 e // PB akademiker + br) ev (+ Ew // PB brevstemt + br) eve E:w@- // PB breve + Cr) evet Ew@-D // PB brevet, skrevet + L03) e (L02i e // PB akademiker + åd) e (++ @- // PB gådefuld + åd) er (++ V // PB gåder + nd) e @- // PB yndefuld + nd) er V // PB inder andr) e V // PB vandrefalk, andres r) e (nsning &# // PB tandrensning - tub) e (rku E // PB tuberkulose + tub) er (ku E3 // PB tuberkulose - kol) e (C @ // PB skolebog + kol) e (C @- // PB skolebog pol) e (re+ e // PB finpolere kol) e (st E // PB kolesterol t) e (d E // PB sted - TEST @@ -1791,30 +1942,32 @@ _still) e (ben ='e // PB st) ed (sø e // PB stedsøm st) ed (da e // PB steddatter e (dt e // PB fedtet - C) e (C% ?E // PB celle, redde TEST - gaz) e (lle 'E // PB stressed - van) e (ssa 'E // PB stressed - ard) e (nner 'E // PB Ardennerne - stressed - _konf) e (tti 'E // PB stressed - kass) e (tte 'E // PB stresed - h) e (dd e // PB hedde - C) e (dA e // PB medalje, rede TEST + gaz) e (lle '?E // PB stressed + van) e (ssa '?E // PB stressed + ard) e (nner '?E // PB Ardennerne - stressed + _konf) e (tti '?E // PB stressed + kass) e (tte '?E // PB stresed + h) e (dd ?e // PB hedde + m) e (dalje e // PB medalje + v) e (de @- // PB helvedes tol) ed (o 'ed // PB toledostål val) e (ncia 'E // PB mal) er V // PB maler end) er V // PB afsenderadresse mål) er V // PB måleraflæser mal) e (ri V // PB - val) e (ri++ @ // PB kavaleri - perl) e @ // PB - aml) e @ // PB samlestykke - kons) e (kv @ // PN inkonsekvens + val) e (ri++ @- // PB kavaleri + perl) e @- // PB + aml) e @- // PB samlestykke + kons) e (kv @- // PN inkonsekvens l) e (ve e // PB samlever _dil) e (mma 'E // PB ll) e (de // PB silent e - billede + ll) e (det @- // billedet CAs) e (ner // PB silent e - væsener (also spelled "væsner") midl) er V // PB midlertidig - elleve elv@ // PB + elleve Elv@- // PB + ellever ElvV // PB elleverne _koll) e (ga 'e // PB stressed _koll) eg (e 'ej // PB stressed kolleger strat) eg (_ 'ej // PB strateg @@ -1828,20 +1981,27 @@ philad) elphi (a 'Elfj // PB stressed sankt) e (lmsild 'E // PB stressed banglad) esh 'ES // PB stressed _p) errier eri'e // PB brand name - eddike Edk3 // PB + eddike Edk@- // PB // PB general rule: [E] after l before t/k l) e (L07 E // PB lektor, let - sl) e (t++ E // PB familieudslettelse, udslet (not [uDsl@D]) - varsl) et @D // PB + udsl) e (t++ E // PB familieudslettelse, udslet (not [uDsl@D]) + varsl) et @-D // PB + ål) e (C @- // PB strålekrans + +// PB general rule: E before l + e (lC E // PB heldig, held og lykke, helvede + +// PB E before r + consonant + e (rC E // PB hjerte, smerte TEST // PB general rule: [E] after r before consonant - r) e (dA E // PB rede + r) e (d E // PB rede, fred r) e (C% ?E // PB short e before double consonant - redde - r) e (sse &# // PB afsenderadresse - L02r) e (C% &# // PB labial + r - fremmed - aggr) e (ssor &# // PB - L07r) e (m &# // PB tremme + r) e (sse ?&# // PB afsenderadresse + L02r) e (C% ?&# // PB labial + r - fremmed + aggr) e (ssor ?&# // PB + L07r) e (mm ?&# // PB tremme ekstr) e (m 'e // PB stressed r) e (vl &# // PB trevl, revle dr) e (des_ V // PB ændredes, undredes - TEST @@ -1854,21 +2014,21 @@ banglad) esh 'ES // PB stressed ndr) e (A V // PB mindreårig gr) e (l &# // PB grel stor) e V // PB storebror - str) eg aj // PB streg, stregkode - tr) eg (en_ aj // PB stregen - tr) eg (er_ aj // PB streger - tr) eg (e_ aj // PB understrege - tr) eg (es_ aj // PB streges - tr) eg (ede_ aj // PB understregede - overj) eg aj // PB - sj) eg aj // PB fremtidsjeg + str) eg aI // PB streg, stregkode + tr) eg (en_ aI // PB stregen + tr) eg (er_ aI // PB streger + tr) eg (e_ aI // PB understrege + tr) eg (es_ aI // PB streges + tr) eg (ede_ aI // PB understregede + overj) eg aI // PB +himstr) eg (ims Vg // PB avoid aI + sj) eg aI // PB fremtidsjeg tuar) eg Eg // PB r) e (ndt a // PB røvrendt r) e (nte &# // PB r) e (st &# // PB restlager - r) e (stL11 e // PB restaurere + r) e (stau e // PB restaurere klatr) e V // PB - hor) e V // PB horeunge r) e (vn &# // PB revne leder) e (vne E // PB dr) e (vn E // PB overdrevne @@ -1876,15 +2036,16 @@ banglad) esh 'ES // PB stressed r) e (kto &# // PB rektor &or) e (pl V // PB boreplatform ur) e (ne @ // PB murene - r) e (s_ @ // PB forhindres +// r) e (s_ V // PB forhindres _tr) e (s E // PB tres (60) opr) e (v E // PB oprevet pr) e (m E // PB premiere spr) e (d E // PB spredt // PB general rule: [&#] after pr followed by double consonant TEST - pr) e (C%+ &# // PB presse - pr) e (s+ &# // PB + pr) e (C%+ ?&# // PB presse + pr) e (s+ ?&# // PB + pr) e (st+ 3 // PB tapreste pr) e (sserende E' // PB pr) estige (_ Est'iS // PB depr) e (ss E // PB depressiv @@ -1903,15 +2064,15 @@ banglad) esh 'ES // PB stressed fr) e (mov &# // PB fremover //PB general rule: [&#] after r before ng - r) e (ng &# //PB streng, dreng + r) e (ng ?&# //PB streng, dreng mar) e (ng '&# // PB stressed - marengs r) e (ngø E // PB rengøre //PB general rule: [&#] after r before t - r) e (t &# //PB ret + r) e (t+ &# //PB ret, efterretning ber) e (t++ &# // PB beret, indberet karryr) e (t+ &# // PB - forr) e (t++ &# // PB + forr) e (t++ &# // PB forret opr) e (t++ &# // PB kriminalr) e (t &# // PB gr) e (t E // PB Greta @@ -1925,7 +2086,7 @@ kriminalr) e (t &# // PB r) e (tou e // PB retouchere r) e (tran e // PB retreansmittere r) e (tro e // PB retospekt - r) e (træ e // PB retræte + r) e (træ %?E // PB retræte - stressed æ r) e (tsina e // PB r) e (tur e // PB returnere @@ -1959,18 +2120,18 @@ stikir) e (nddreng '&# // PB L09) e (t e // metal heavy_m) etal Et3l // PB L09) e (l E // mellem - L06) e (r E // PB perle + L06) e (rl E // PB perle rob) e (rto 'E // PB name r) e (re 3 // PB operere sup) er V // PB superagenten sup) er (lativ 'Er // PB stressed - @) es (_N 3s // elskes, skabes +// @) es (_N @-s // elskes, skabes _arl) es _^_fr // PB French town _m) e (l_ e // PB ed) e (r @ // nederlag tr) e (ma E' // trema s) e (dd E // PB seddel - s) ek (sten aj // PB seksten, sekstende + s) ek (sten aI // PB seksten, sekstende ell) er V // ellers fr) edag Ed& // PB fredag - not [d&j) nov) e (mber 'e // PB @@ -1979,28 +2140,27 @@ heavy_m) etal Et3l // PB eus Wws // PB for Greek names - Zeus, Achilleus m) euse W:z // PB French river st) ew ju // PB Stewart - tel) e 3 // PB tele - ele) eg (+ aj // PB gætteleg + tel) e @- // PB tele + ele) eg (+ aI // PB gætteleg del) eg (A @g // PB delegation tel) eg (r 3g // PB telegram l) eg (iti eg // PB legitim - l) eg (an++ @g // PB elegant + l) eg (an++ @-g // PB elegant tel) e (x E // PB afl) e (v @ // PB aflevere ri) e 3 // PB ferie bri) e (f // PB briefing - silent e _a) e (_ 3 // PB ae - ød) e 3 // PB øde hav) e 3 // PB god) e @ // PB kod) e @ // PB kodeord pl) e (men 3 // PB supplement øbl) e (m 3 // PB møblement - hvab) e (har_ 3 // PB hvabehar - Ar) e (s_ 3_: // PB gøres + hvab) e (har_ @- // PB hvabehar + v) ek (s Eg // PB veksle r) eau o // PB bureaukratiske _m) ead (_ i:d // PB name - Lake Mead - ee (r 'e: // PB ideer, cafeer + eer 'eV // PB ideer, cafeer, veer k) eefe 'i:f // PB name sh) ee (la i: // PB name _r) eed (K i:d // PB name @@ -2022,35 +2182,34 @@ heavy_m) etal Et3l // PB _n) eal i:l/2 // PB name fr) ee (lan i: // PB freelance b) ee (d ee // PB beedige - _en) e @ // PB ene, eneste + _en) e @- // PB ene, eneste en) e (m E // PB pærenem en) e (rgi E // PB br) e (L09 &# // PB bremse br) enda End& // PB name sn) e (K+ e // PB sne, snebold, nysne - lAsn) e (+ 3 // PB lysne, løsne + frosn) e @- // PB fastfrosne + lAsn) e (+ @- // PB lysne, løsne lAsn) er (+ V // PB lysner, løsner - visn) e (+ 3 // PB visne + visn) e (+ @- // PB visne visn) er (+ V // PB visner - gisn) e (+ 3 // PB gisne - gisn) er (+ V // PB gisner - _isn) e (+ 3 // PB isne - _isn) er (+ V // PB isner - voksn) e 3 // PB - sn) eg (l aj // PB + gisn) e (+ @- // PB gisne + _isn) e (+ @- // PB isne + voksn) e @- // PB + sn) eg (l aI // PB _sn) e (r_ e // PB det sner - _sn) ee (de_ e@ // PB det sneede + _sn) ee (de_ e@- // PB det sneede sn) e (rp E // PB snerpet sn) e (rre &# // PB snerre sn) edker ekV e // PB silent d - snedker papmach) e e // PB - _s) e (_ e? // PB se + _s) e (_++ ?e // PB se e (mball A // PB emballere, emballage dir) e (kt &# // PB direkte, direktør n) eu Wu // PB neuron, neutral - n) e (unge 3 // PB ørneunge - ed) e (- @ - g) e (js aj + n) e (unge @- // PB ørneunge + ed) e (- @- + g) e (js aI _ni) e // PB changed from [ni)e] to[_ni)e] - niende, nier, niendedel _ni) e (ce 'E: // PB exception from the rule above (_ni)e) _fl) ee (ce+ i: // PB fleece, fleecejakka - material for clothing @@ -2058,7 +2217,7 @@ papmach) e e // PB freelanc) e // PB freelance - skip the final e freelanc) e (r V // PB the word 'freelancer' hospic) e (_ // PB hospice - skip the final e -hospic) et 3D // PB +hospic) et @-D // PB penc) e // PB pence - skip the e interfac) e // PB interface - skip the final e sauc) e // PB sauce, bearnaisesauce @@ -2075,17 +2234,17 @@ motorpac) e (n @ // PB motorpacen pac) e (maker // PB pacemaker - skip the e provenc) e // PB Provence - skip the e prov) e (nce 'A: // PB Provence - bl) eg aj // PB bleg + bl) eg aI // PB bleg e (gsot a // PB blegsot e (gfi a // PB blegfis - bl) egem (id aj@m // PB blegemiddel, blegemidler - eg (rød aj // PB blegrød - _b) eg (_ aj // PB + bl) egem (id aI@m // PB blegemiddel, blegemidler + eg (rød aI // PB blegrød + _b) eg (_ aI // PB æbl) e (grød 3 // PB æblegrød bobl) e 3 // PB boblegummi - nothing to do with "bleg" _) egen (@ ej@n // PB egenrådig, egennyttig - eg (enbeskyd+ aj // PB egenbeskydning - r) e (ste &# // PB resten + eg (enbeskyd+ aI // PB egenbeskydning + _r) e (sten_ &# // PB resten nyr) e (+ V // PB nyresten r) e (staurant E e (gansigt &# // PB blegansigt @@ -2118,7 +2277,7 @@ _aller) e (de_ E // PB allerede - otherwise the E is changed by anot &) em (s$p_alt+ 'em // PB problems // various exceptions - el) e (ndig E // PB møgelendig - steressed with $alt rule + el) e (ndig ?E // PB møgelendig - steressed with $alt rule leb) e (ndig 'E // PB steressed with $alt rule _ball) e (t@ 'E // PB balletdanser _en_ball) e (t 'E // PB @@ -2133,43 +2292,79 @@ _hendes_ball) e (t 'E // PB skorst) e (n e // PB murst) e (n e // PB bautast) e (n // PB -meterst) e (n e // PB kilometersten - h) e (n_+ e // hen - carst) e (n @ - karst) e (n @ - hest) e (n+ @ // PB hestene - serv) e @ // PB reservehjul +meterst) e (n ?e // PB kilometersten + h) e (n++ ?E // hen, hente, derhen + h) e (nde+ ?e // PB + carst) e (n @- + karst) e (n @- + hest) e (n+ @- // PB hestene + serv) e @- // PB reservehjul + off) e (n 3 // PB offentliggøre tr) edive &#Dv@ // PB tredive + tr) ediver &#DvV // PB trediverne tr) edivete &#Dft@ // PB tredivete entente ANt'ANt // PB prof) essionel 'eSonel // PB - eisenhower ajs@nhAuV // PB - st) ei (nK aj // -stein in German names - _h) ei (l_ aj // PB heil Hitler - s) ei (smol aj // PB seismolog + eisenhower aIs@nhAuV // PB + st) ei (nK aI // -stein in German names + _h) ei (l_ aI // PB heil Hitler + s) ei (smol aI // PB seismolog t) eint EN // PB - eiger ajgV // PB Eiger mountain + eiger aIgV // PB Eiger mountain sp) eed i:d // PB speedbåd t) ech Ek // PB hightech stoneh) enge EndZ // PB pal) e (rmo 'E // PB w) ee i: // PB Sweeney, weekend, tweed tw) eed i:d // PB - _h) ei (di aj // PB name + _h) ei (di aI // PB name _d) ei (dre i: // PB name trap) ez 'Ets // PB stressed l) eague i:g // PB Champions League + _m) e (d E // PB med, medgift // PB Words ending with e - general rule - @) e (_+ 3 // PB husleje + @) e (_+ @-_! // PB husleje, vække + @) e (s_ @- // PB føles + s) e (_+ @_! // PB galakse, skose + @r) e (_+ ?V // PB tørre + nerv) e (C @- // PB nervesammenbrud + urg) ere (_++ VV // PB burgere + r) e (re_ E // PB operere + k) e (@ @- // PB vækkeur TEST + studi) e (@ @- // PB studiegruppe + studi) er V // PB + klog) e @- // PB klogeste + næs) e (@ @- // PB næseblod + dans) e (@ @- // PB dansebal + ås) e @- // PB dåse, gåsehud, Åse + ån) e (@ @- // PB låneansøgning + ev) e (@ @- // PB levevis + hest) e (@ @- // PB hestehår + nt) e (@ @- // PB plantesaft + rn) e (@ @- // PB børnebog + mm) e (@ @- // PB dømmekraft + ab) e (@ @- // PB abekat + øl) e (@+ @- // PB køleskab + Aff) e (@ @- // PB straffeattest + Alj) e (@ @- // PB patruljevogn + Avn) e (@ @- // PB navneordbog + yv) e (@ @- // PB flyveplads @iker) e (_N V // PB fabrikere @iker) et (_ VD // PB fabrikeret groupi) e // PB silent e _jani) e // PB name - silent e _arti) e // PB name - silent e - ud) e 3 // PB studehandel - ul) e 3 // PB juleaften, gulerod -konsul) e (nt e // PB sikkerhedskonsulent + ud) e (@+ @- // PB studehandel, brudepige + øj) e (@ @- // PB øjeblik + ukk) e @ // PB smukkeste + ol) e @- // PB tolerant TEST + ul) e (@ @- // PB juleaften, gulerod + is) e (@ @- // PB spisetid, fisefornem + im) e (@ @- // PB timevis + åb) e (n @- // PB åbenbart + Arr) e (@ @- // PB tørresnor - TEST +konsul) e (nt E // PB sikkerhedskonsulent afs) e (_ e // PB afse afs) e (t_+ e // PB afset tils) e e // PB tilset @@ -2179,7 +2374,7 @@ efters) e e // PB _) e (_speak i // PB eSpeak - capital s makes the e one word _) e (_mail i // PB e-mail hjemv) e e // PB - hjemv) ej aj // PB + hjemv) ej aI // PB _uds) e (_+ e // PB udse _uds) e (r_+ e // PB udser puds) er (+ V // PB @@ -2196,13 +2391,15 @@ efters) e e // PB kamillet) e e // PB middagst) e e // PB eftermiddagste komit) e 'e // PB - komit) ee (n 'e@ // PB + komit) ee (n 'e@- // PB variet) e 'e // PB // PB Words ending with -se or -ce s) e (_ @ c) e (_ @ + c) e (rin @- // PB nitroglycerin overs) e (_ e + overs) e (s_ e _ans) e (++ e // PB avoid [V] in "anser" and [@] in "anse" velans) e (t e // PB @@ -2277,6 +2474,7 @@ _sociol) e (kt 'E _manif) e (st 'e _mol) e (st 'e _prot) e (st 'e + _prot) e (ster @ // PB protesterede _reg) e (st 'e // PB stressed e in some words with final -ente/-ende @@ -2286,29 +2484,29 @@ _regim) e (nte 'e _sakram) e (nte 'e // PB words with final -ende - &) ende (_ @n@ // troende + &) ende (_++ @-n@- // troende // exceptions to the -ende rule - k) end (e_+ E-n // genkende, kende, anerkende - _) erk) end (e_ 'En // PB erkende + k) end (e_+++ E-n // genkende, kende, anerkende + _erk) end (e_++ 'En // PB erkende k) ender (_ E-nV // genkender, kender, anerkender - sv) ende (_ E-n@ // PB not a -ende suffix - svende - henv) ende (_ E-n@ // PB + sv) ende (_ E-n@- // PB not a -ende suffix - svende + henv) ende (_ E-n@- // PB henv) ender (_ E-nV // PB - anv) ende (_ E-n@ // PB + anv) ende (_ E-n@- // PB anv) ender (_ E-nV // PB - fuld) ende E-n3 // PB - ops) ende E_n@ // PB - røvr) ende (_ a-n@ // PB røvrende + fuld) ende E-n@- // PB + ops) ende E_n@- // PB + røvr) ende (_ a-n@- // PB røvrende røvr) ender (_ a-nV // PB røvrender - v) ende (+ E-n@ // PB omvende - v) ender (+ E-nV // PB omvender + omv) ende (+ E-n@- // PB omvende + omv) ender (+ E-nV // PB omvender v) ende (tta End'E // PB stressed lav) ende (l 'En3 // PB satressed - fj) ende e-n@ // PB dødsfjende + fj) ende e-n@- // PB dødsfjende fj) ender e-nV // PB dødsfjender L08) e (gt e // PB stegt - L08) eg aj // PB steg, spegepølse + L08) eg aI // PB steg, spegepølse fisk) eg 3g // PB tunfiskegryde torsk) eg 3g // PB torskegilde _st) eg (_ e // steg - verb, problem with noun = "roast" @@ -2316,109 +2514,109 @@ _sakram) e (nte 'e best) eg (_ 'e // PB besteg best) eg (et_ 'e // PB besteget overst) eg ej // PB - st) eg (å @g // PB præstegård - eg (affel @g // PB fiskegaffel + st) eg (å @-g // PB præstegård + eg (affel @-g // PB fiskegaffel _sk) eg (affel eg // PB skegaffel - rel) eg (ion -@g // PB - n) egl ajl // PB negl + rel) eg (ion @-g // PB + n) egl aIl // PB negl r) egel Ejl // PB regel r) egl Ejl // PB regler - k) eg (le aj // PB keglebane - h) eg (le aj // PB gennemhegle + k) eg (le aI // PB keglebane + h) eg (le aI // PB gennemhegle br) ea (k Ej // PB breakdance res) e (rve 'e // PB reserve - stressed res) erver (_en Erv'er // PB reserver en plads m) eg (a eg // mega, omega _) eget (_ a:j@D // PB eget r) eg (er Eg // PB e=> E - eg (n aj // PB regn, tegning, lege + eg (n aI // PB regn, tegning, lege _v) eg (_ ej // PB _v) eg (et_ ej // PB - skr) eg aj // PB + skr) eg aI // PB underl) eg ej // PB underlegen - p) eg aj // PB pegefinger - eg (å+ @g // PB oppegående - eg (rund @g // PB klippegrund + p) eg aI // PB pegefinger + eg (å+ @-g // PB oppegående + eg (rund @-g // PB klippegrund p) eg (asus eg // PB p) egmatit Egm&t'it // PB - s) eg (l aj // PB segl, forsegle - t) eg (l aj // PB teglværk + s) eg (l aI // PB segl, forsegle + t) eg (l aI // PB teglværk p) eggy Egi // PB name ll) ey i // PB volley - _) ege (_ e:j@ // PB added _ - ege(træer) - _) ege (træ e:j@ // PB added _ - egetræe - _) ege (løv e:j@ // PB - _) ege (blad e:j@ // PB - L06) eg (e aj // PB p) changed to L06 to include b - l) ege (me Ej-@ // PB fornedrelseslegeme - l) eg (e+ aj // PM julelege, blege + _) ege (_ e:j@- // PB added _ - ege(træer) + _) ege (træ e:j@- // PB added _ - egetræe + _) ege (løv e:j@- // PB + _) ege (blad e:j@- // PB + L06) eg (e aI // PB p) changed to L06 to include b + l) ege (me Ej-@- // PB fornedrelseslegeme + l) eg (e+ aI // PM julelege, blege coll) ege idZ // PB l) eg (ere eg // PB legere, priviligeret - l) egende (_børn aj@n@ // PB - l) egende (_let aj@n@ // PB + l) egende (_børn aI@-n@- // PB + l) egende (_let aI@-n@- // PB l) eg (enda eg // PB legendarisk _l) egende (_ eg'End3 // PB "myth" -selskabsl) eg aj // PB +selskabsl) eg aI // PB l) eg (er eg // PB delegere eg (evinst+ eg // PB spillegevinst overl) eg Ej // PB overlegen - r) ej (s aj + r) ej (s aI engag (e aNg&S // engagere _) en (tre aN en (tré aN // PB - c) en (t En + c) en (t En // PB koncentrere c) en (tA En - c) en (tC en +// c) en (tC en p) en (sion aN r) en (ce AN // reference - Cr) e (d E // PB seinebred, flodbred -// r) edd ED // PB redder + br) e (d E // PB seinebred, flodbred br) edd Ed // PB bredde _tr) e (tten a // tretten _tr) e (d E // tredje - ej (++ aj // PB changed from ai to aj - nej, arbejde + ej (+++ aI // PB changed from ai to aj - nej, arbejde + eje (n++ aj@- // PB ejendom e (job+ 3 // PB ønskejob e (jæger+ 3 // PB skalpejæger - e (jour+ 3 // PB sygejournal - dr) ej (+ aj // PB fordrejet - ykk) e (C 3 // PB lykkejæger - skørt) e (C 3 // PB skørtejæger - hygi) ej (ne 'aj // PB stressed + dr) ej (+ aI // PB fordrejet + ykk) e (C @- // PB lykkejæger + skørt) e (C @- // PB skørtejæger + hygi) ej (ne 'aI // PB stressed ej (aku ej // PB ejakulere - gal) ej 'aj // PB stressed - ejer (C ajV // PB grundejerforening + gal) ej 'aI // PB stressed + ejer (C aIV // PB grundejerforening mælk) e 3 // PB mælkejunge m) ejern 3jErn // PB stemmejern v) ejern 3jErn // PB rivejern - ej (agt @j // PB menneskejagt - e (jul+ @ // PB lillejuleaften - _pleb) ej (er 'aj // PB stressed + ej (agt 3j // PB menneskejagt + e (jul+ @- // PB lillejuleaften + _pleb) ej (er 'aI // PB stressed nd) ej (ob 3dZ // PB mandejob, kvindejob m) ej (ob 3dZ // PB drømmejob - lort) e @ // PB lortejob - avoid "aj" - lus) e (++ @ // PB væggelusejæger + lort) e @- // PB lortejob - avoid "aj" + lus) e (++ @- // PB væggelusejæger lus) er (+ V // PB bluser - syg) e (+ @ // PB sygejournal - v) ej (r E - v) ejr (e_ ajR // PB vejre - v) ejr (er_ ajR // PB vejrer + syg) e (++ @- // PB sygejournal - avoid [s'yaj,urn&:l] + v) ej (r_+ E // PB gråvejr + v) ej (ret_+ E // PB gråvejret + _v) ej (rC+ E // PB vejrsituationen + v) ejr (e_ aIR // PB vejre + v) ejr (er_ aIR // PB vejrer _offic) e (_ // office (officepakke) - fl) e (de+ e // PB aflede - ov) edet (_ @D3d // PB hovedet - l) edet (+ eD@t // PB håndledet - r) edet (_ ED3d // PB helbredet - st) edet (_ ED3t // PB værkstedet +// fl) e (de+ e // PB aflede +// ov) edet (_ @-D@-d // PB hovedet +// dl) edet (+ eD@-t // PB håndledet +// r) edet (_ ED3d // PB helbredet + st) edet (_ ED@-t // PB værkstedet Ad) en (@ @-n // udenlandsk, udenad Ad) en (t en // PB identificere - sir) ene (+ 'En@ // PB - gr) ene (+ En@ // PB grene - rr) ed @D // PB lærred, ørred - rr) ed (A @d // PB herredømme + sir) ene (+ 'En@- // PB + gr) ene (+ En@- // PB grene + rr) ed @-D // PB lærred, ørred + rr) ed (A @-d // PB herredømme fingr) ene Vn@ // PB _st) evie ivi // PB name ucc) es 'e nog) et (_ D // PB noget - _ir) e (ne 'e // PB name styr) e (n 'e // styren diskr) e (t+ 'e // PB stressed ork) ester 'estV // PB stressed e in 'orkester' @@ -2468,6 +2666,7 @@ havann) e (ser 'e // PB stressed inds) e (r_ e // PB indser rak) e (t+ E // PB bremseraket _rak) e (t+ 'E // PB raket + _rak) e (tt+ '?E // PB raketten etagere et&S'E:R // PB espeak ispi:k // PB eindhoven ajnh'o:f@n // PB @@ -2475,10 +2674,10 @@ havann) e (ser 'e // PB stressed eyeliner ajlajnV // PB _) edie (_ idi // PB name k) ey i // PB jockey - eiffel ajf3l // PB Eiffeltårnet - eileen ajl'i:n // PB name + eiffel aIf3l // PB Eiffeltårnet + eileen aIl'i:n // PB name ecstacy Est&si // PB - s) ei (s aj // PB seismograf + s) ei (s aI // PB seismograf rev) eill (e 'Elj // PB ef) eu Vj // PB plant _) earl W:l/2 // PB Earl @@ -2492,7 +2691,7 @@ stript) ease i:s // PB eau 'o // PB bureau, niveau eau (kti @au // PB pladeauktion eau (to @au // PB hæveautomat - empire (_state Empaj3 // PB + empire (_state EmpaI3 // PB _t) e (_ e // PB te kin) e (s 'e // PB kineser d) e (s_ @ // PB mødes @@ -2504,16 +2703,16 @@ stript) ease i:s // PB disn) ey i // PB name _barn) ey i // PN name jess) e i // PB name - m) ey (er aj // PB name + m) ey (er aI // PB name sylv) e (ster 'E // PB name magdal) e (n 'e // PB Magdalena - name ebay ibEj // PB eBay budap) e (st 'E // PB stressed - h) ei (del aj // PB Heidelberg + h) ei (del aI // PB Heidelberg r) eaux O // PB Devereaux eugene judZ'i:n // PB name - _ir) e (ne+ 'E // PB name - e (legi e // PB + _ir) e (ne++ 'E // PB name + e (legi++ e // PB elegi, relegion ven) e (dig 'e // PB t) ea (m i: // PB teamwork h) eart A:d // PB Ourple Heart @@ -2524,22 +2723,22 @@ venstr) e V // PB venstreorienterede e (venty E: // PB eventyr // PB plural suffix -ene - @) ene (_ @n@ // benene - @) enes (_ @n@s // benenes - @r) ene (_ Vn@ // brødrene - @r) enes (_S4 Vn@s // brødrenes - @gg) ene (_S4 @n@ // væggene - tj) ene (++ En@ // PB betjene + @) ene (_ @-n@- // benene, pengene + @) enes (_ @-n@-s // benenes + @r) ene (_ Vn@- // brødrene + @r) enes (_S4 Vn@-s // brødrenes + @gg) ene (_S4 @-n@- // væggene + tj) ene (++ En@- // PB betjene tj) ener (+ EnV // PB - forl) ene 'en@ // PB stressed - ur) ene (_tanker 'en@ // PB - marl) ene 'en3 // PB name - _hel) ene 'en3 // PB name -at_form) ene 'en3 // PB + forl) ene 'en@- // PB stressed + ur) ene (_tanker 'en@- // PB + marl) ene 'en@- // PB name + _hel) ene 'en@- // PB name +at_form) ene 'en@- // PB // PB stressed e in nouns with final -esse in da_list - &) esse ($p_alt ''Es3 // finesse - &) esse (r$p_alt ''EsV // finesser + &) esse ($p_alt ''?Es3 // finesse + &) esse (r$p_alt ''?EsV // finesser &r) esse ($p_alt '&#s3 // adresse &r) esse (r$p_alt '&#sV // adresser @r) esse (re$p_alt &#s'e // adresseret @@ -2554,10 +2753,10 @@ at_form) ene 'en3 // PB .group el // PB GENERAL RULE FOR WORDS ENDING WITH -EL - 1.182 words - @) el (_ @l // fødsel - @) el (s @l // fødselsdag, fødselstal - @) el (Ar @l // fødselar - @) el (t_ @l // ædelt + @) el (_ @-l // fødsel + @) el (s @-l // fødselsdag, fødselstal + @) el (Ar @-l // fødselar + @) el (t_ @-l // ædelt @r) el (_+ &#l // PB multikulturel t) el (t_ el // PB ilttelt @@ -2567,13 +2766,16 @@ at_form) ene 'en3 // PB &) el ($p_alt+++ ''El // model &) el (t$p_alt ''El // kommercielt &r) el ($p_alt++ ''&#l // multikulturel - &) el (l$p_alt+++ ''E // modellen - only one l + &) el (l$p_alt+++ ''?E // modellen, hotellet - only one l &r) el (l$p_alt+++ ''&# // kulturelle - only one l &) elet ($p_alt @l'Et // kotelet korn) el (evator el // PB not [korn'El3v,&tV] _app) el (sin El // PB person) el El // PB dysfunktion) el El // PB + _s) elv (e ?Elv // PB selve, selveste + _s) elv El // PB selv, selvkørende - silent d + _s) elv (om_ El // PB selvom - silent d isab) el El // PB name marc) el 'El // PB name form) el (t 'El // PB @@ -2582,20 +2784,24 @@ dysfunktion) el El // PB venezu) el (a 'el // PB hall) el (uja 'el // PB stressed t) el (e el // PB sangtelegram - @hot) el El // PB møghotel + @hot) el ?El // PB møghotel ration) el El // PB krimin) el El // PB småkriminel ti) el El // PB vækstpotentiel el (iksir el // PB ungdomseliksir // PB final -elig in da_list - stress on previous syllable - &) elig ($p_alt =@li // PB jomfruelig - &s) elig ($p_alt 'eli // PB foruselig + &) elig ($p_alt =3li // PB jomfruelig + &s) elig ($p_alt '3li // PB foruselig - _) el El // elkedel +// PB final -elig without stress on previous syllable + C) el (ig+ @-l // PB kedelig, drabelig, fredelig + r) el (igi+ El // PB + + _) el (C El // elkedel _) ell El // PB eller muskat) el ''El // PB - el (sk+ El // PB naturelsker + el (sk+ ?El // PB naturelsker intellektu) el El // // PB _pan) el 'el // PB pan) el el // PB @@ -2614,8 +2820,9 @@ marksk) el el lob) el (ia 'el // PB d) el (e+ el // PB dele særd) el (es 'el // PB særdeleshed - stressed - bind) ele (d 3le // PB bindeledder - kvind) el (A 3l // PB kvindelejr + bind) ele (d @-le // PB bindeledder + kvind) el (A @-l // PB kvindelejr + djæv) el @-l // PB Djævelen d) eler (+ elV // PB deler bestandd) el el // PB halvd) el el // PB @@ -2656,7 +2863,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 @@ -2668,7 +2875,7 @@ underst) el (+ El for) el (s 'El // PB forelsket citad) el 'el ejend) el el - nt) el El // eksperimentel + ent) el El // eksperimentel fid) el 'el ded) el el // tiendedel, niendedel farv) el 'El @@ -2712,13 +2919,14 @@ stikked) el el _tab) el 'El tab) el El respektab) el @l // PB +irritab) el @-l // PB tarant) el 'el univers) el 'el _frikad) el (l 'El // PB stressed - frikadelle frikad) el (l El // PB verdensd) el el @) el (øs+++ @l // PB mageløs, kasteløs - jul) eleg @laj // PB juleleg + jul) eleg @laI // PB juleleg dr) el (+ Vl // PB ældre, forældreløs alleh) elg (ens 'Elj // PB stressed - allehelgensdag elliot EljVt // PB name @@ -2726,13 +2934,13 @@ verdensd) el el .group en // PB noun suffix -en (perlen - the pearl), -ens (perlens - the pearl's) // not a suffix any more - too many exceptions - &) en (_N @n - &ier) en (_N @n // PB bankieren - avoid the r generated by [V] - &r) en (_N Vn // frisøren + &) en (_N @-n // PB brien + kier) en (_N @-n // PB bankieren - avoid the r generated by [V] +// &r) en (_N Vn // frisøren &) ens (_+ @-ns // PB ungdommens - &r) ens (_ V-ns // frisørens +// &r) ens (_ Vns // frisørens // exceptions - aft) en @n // PB avoid [Au] when aft(en) is translated + aft) en @-n // PB avoid [Au] when aft(en) is translated _ag) en (t 'en // PB agent fænom) en 'en // PB stressed _gem) en 'en // PB stressed @@ -2745,7 +2953,7 @@ verdensd) el el _ur) en (_ en // PB uren hud //kuglep) en En // PB afløbsr) en (s &#n // PB - ord) en @n + ord) en @-n anci) enn EN // anciennitet _persi) enn 'En // PB _pol) en (ta 'En // PB stressed @@ -2772,16 +2980,17 @@ pennev) en En // PB metalp) en En // PB v) en (sk+ en // PB venskab dov) en (++ @n // PB dovenskab - &b) en (_+ en // PB koben, nøgleben + kob) en en // PB koben + øgleb) en en // PB nøgleben læb) en (++ @n // PB overlæben kæb) en @n (++ // PB - stab) en (+ @n // PB generalstaben +// stab) en (+ @n // PB generalstaben elfenb) en (+ en // PB elfenbensbande - skab) en (+ @-n // PB ondskaben, morskaben - _åb) en (_+ @n // PB åben - _åb) en (t_+ @n // PB åbent - våb) en (++ @n // PB våben - bb) en (_++ @n // PB klubben +// skab) en (+ @-n // PB ondskaben, morskaben +// _åb) en (_+ @n // PB åben +// _åb) en (t_+ @n // PB åbent +// våb) en (++ @n // PB våben +// bb) en (_++ @n // PB klubben bomb) en (+ @n // PB ribb) en (++ en // PB ribbenssteg gribb) en (e+ @n // PB gribbene @@ -2844,6 +3053,7 @@ tungst) en en // PB vinst) en en // PB ædelst) en en // PB øjest) en en // PB + st) en (gulv en // PB tj) en (st En // PB fortjenstmedalje m) en (s+ En // PB menstruation g) en (st en // PB genstand @@ -2877,7 +3087,7 @@ _en_syr) en 'en // PB problem with "syren" = "the acid" &) ent (alsk$p_alt+ ent' // + "alsk" - stressed a - orientalsk // exceptions acc) ent (+ AN // PB - ev) ent (A++ Ent // PB eventyr, eventuel + ev) ent (A++ @-nt // PB eventyr, eventuel v) enti (on+ enSj // PB konvention engros ANgr'o // PB engroshandler // PB $alt words with final -enser in da_list - stressed e @@ -2904,13 +3114,13 @@ excell) ence ($p_alt 'Ens@ // PB exception bart) ender EndV // PB .group er - r) er (_ V // PB final "er": V after r - murer - t) er (_ V // PB final "er": V after t - frygter + C) er (_ V // PB final "er": V after consonant - handler- TEST + _p) er (_ Er // PB per t) er (et_ V // PB final "er": V after t - centeret - r) ere (_ 3V // PB general rule: plural ending - murere - relat) ere er3 // PB arbejdsrelaeret - oper) ere er3 // PB hasteoperere -diskut) ere er3 // PB omdiskuteret + r) ere (_ VV // PB general rule: plural ending - murere + relat) ere eV // PB arbejdsrelaeret + oper) ere EV // PB hasteoperere +diskut) ere eV // PB omdiskuteret // PB -ri words in da_list preceeded by e: stressed i @) eri ($p_alt++ Vr'i // røveri, bedrageri @@ -2925,21 +3135,23 @@ infant) eri ($p_alt 3r''i // infanteri // NB suffix takes away the stres from "italiener/italienere" and since // it isn't possible to mark the rule "not for $alt words" -er and -ere a not suffixes any more. @) er (_N V // elsker - @) ere (_ 3V // elskere - @) eren (_ Vr3n // elskeren + @) ere (_+ VV // elskere + @) eres (_ V3Vs // elskeres + @) eren (_ Vr@-n // elskeren @) erens (_ Vr3ns // elskerens @) ers (_ Vs // elskers - @) erne (_++ Vn@ // elskerne - @) ernes (_ Vn@s // elskernes - @) erste (_ Vst@ // midterste - @) ert (_ Vt // lummert, slubbert + @) erne (_++ Vn@- // elskerne + @) ernes (_ Vn@-s // elskernes + @) erste (_ Vsd@- // midterste + @) ert (_ Vd // lummert, slubbert @) ert (s_ Vt // PB Alberts - slamb) ert Vt // slamberter + slamb) ert Vd // slamberter @) er (sC V // PB Petersborg, tiggerske - TEST f) ers (k Ers // PB dåseferskner @) ers (tat Ers // PB skadeserstatning wien) er V // PB wienerbrød + od) er V // PB moderinstinkt sortep) er er // PB vigtigp) er er // PB beh) er (sk Er // PB beherske @@ -2951,27 +3163,27 @@ vigtigp) er er // PB dans) er V // PB danserinde rom) er V // PB romertal genfotograf) er (e er // PB røntgenfotografere - fing) erne (m Vne // PB fingernem + fing) erne (m VnE // PB fingernem @d) erne (++ Vn@ // let the nd rule kick in - inderne g) er (n++ Er // gerning - reag) ere (_ er3 // overreagere - _reag) ere (_ 'er3 // reagere - vurd) ere (_ er3 // overvurdere - tr) ere (+ er3 // indregistrere -@dramatis) ere er3 // PB overdramatisere + reag) ere (_ eV // overreagere + _reag) ere (_ 'eV // reagere + vurd) ere (_ eV // overvurdere + tr) ere (+ EV // indregistrere +@dramatis) ere er@- // PB overdramatisere opsumm) ere er3 // PB _overs) er er // PB fj) er (_ er // PB falkefjer - ov) ere (ns+ V'e // PB uoverensstemmelse, overens - stressed + ov) ere (ns++ V'e // PB uoverensstemmelse, overens - stressed g) er (+ V // unger, borgerkrig g) er (t er // PB Gert/Gerd g) er (rig Er // PB gerrig g) er (da Er // PB name g) er (harK Er // PB Gerhard, Gerhart - g) er (e+ er // PB overreagerede, omarrangere - gg) er (e+ V // PB indbyggere + g) er (e+ eV // PB overreagerede, omarrangere + gg) ere (+ 3V // PB indbyggere sug) er (e V // PB blodsugere - læng) er (e V // PB + læng) ere 3V // PB borg) er (e V // PB g) er (ani er // PB geranium g) er (mans er // PB germansk @@ -2981,6 +3193,7 @@ _overs) er er // PB revolv) er (+ V // PB int) er (@ V // PB interaktiv smugl) er V // PB smuglergods + smugl) ere 3V // PB smuglere _int) er (n_++ 'Er // PB intern _int) er (ne_++ 'Er // PB interne int) erne (t+ VnE // PB @@ -3003,6 +3216,7 @@ kundes) ervice Wvis // PB _all) er V // PB allersidst pill) er V // PB spiller, piller brus) er V // PB bruseranvendelse + brus) ere 3V // PB brusere eft) er V // PB efteruddanne s) er (v+ Er // PB reservat, servo s) er (t+ Er // PB dessertere @@ -3012,8 +3226,9 @@ kundes) ervice Wvis // PB bas) ere eV // PB behovbaseret tn) er V // PB partnerskab all) er (g er // PB allergisk - j) er (n+++++ Er // jern, stjerne + j) er (n+++++ E3_ // jern, stjerne talj) er (K+++ V // PB detaljer + trulj) er (n+++ V // PB patruljerne linj) er (+++ V // PB telefonlinjer lej) er V // PB sygeplejerske bunk) er V // PB not a -er suffix @@ -3048,7 +3263,6 @@ _perif) er 'er // PB stressed Amm) er (C V // PB sommerhilsen, tømmerflåde r) er (C V // PB frimurerloge komm) er (ciel er // PB -// amm) er (C V // PB hammersej &nf) eren (c @rAN // PB konference, konferencier &nf) er (er@ @r // PB konferere vid) ere 3V // PB viderekomne @@ -3065,7 +3279,6 @@ fascist) erne (+ Vn@ // exception to "&cist) erne" kas) erne (+ ern@ _lant) erne (+ 'Ern@ toplant) erne (++ Ern@ -// lant) erne (_+ ern@ plant) erne (++ Vn@ _luc) erne (+ 'ern@ luc) erne (+ ern@ @@ -3077,7 +3290,7 @@ toplant) erne (++ Ern@ // Exceptions to the suffix rules // Words ending with -ere - stressed e - around 1.600 words in list file - @) ere (_$p_alt++ ''e:V // PB stressed - manipulere, protestere (not parfum'ereklame) + @) ere (_$p_alt+++ ''e:V // PB stressed - manipulere, protestere (not parfum'ereklame) @) ere (r$p_alt++ ''e:V // PB stressed - generer, kasserer @) ere (re$p_alt+++ ''e:V // PB stressed - polerere @) ere (ren$p_alt++ ''e:V // PB stressed - kassereren @@ -3087,7 +3300,10 @@ toplant) erne (++ Ern@ @) ere (s_$p_alt++ ''e:V // PB stressed - pensioneres @i) ere (n_$p_alt++ ''e:V // PB stressed - karrieren @) er ($p_alt+++ ''er // PB stressed - repeter, kurer - @) er (e_$p_alt+++ ''er // PB stressed - vurdere + @) er (er$p_alt+++ ''e // PB stressed - adopterer + @) er (e_$p_alt+++ ''e // PB stressed - acceptere + @r) er (e_$p_alt+++ ''E3- // PB stressed - reparere + @r) er (er_$p_alt+++ ''E3- // PB stressed - reparerer @) er (_$p_alt++ ''er // PB stressed - repeter ion) er (_$p_alt++ V // PB unstressed - missioner, kommissioner @) er (et$p_alt++++ ''er // PB stressed - orienteret @@ -3096,9 +3312,10 @@ toplant) erne (++ Ern@ // exceptions fing) er (en VR // fingeren - clsashes with 'fing'ere' - _barb) er (+ 'er // PB barber, barberen + _barb) er (+ '?er // PB barber + _barb) er (e+ 'er // PB barberen lev) er (eg+ @r // PB leveregel -fabrik) ere (+++++++'eV +fabrik) ere (+++++++'?eV brod) er (en Vr // PB lev) er (en+ Vr // PB the liver _not) er (_det 'er // PB @@ -3110,8 +3327,8 @@ orient) eret er3D // PB venstreorienteret _kap) er (s++ V // PB // PB stressed e in words with -ering (1.100) in da_ list - likvidering - &) ering ($p_alt++ ''ereN - @C) ering (++ ,ereN // PB lydisolering, hjertetatovering + &) ering ($p_alt++ ''e3-eN + @C) ering (++ ,e3-eN // PB lydisolering, hjertetatovering // PB final -eret: stressed e ['er3D] &) eret ($p_alt++ ''er3D // PB detaljeret, pikeret @@ -3125,13 +3342,13 @@ diskontinu) ert 'ert eksp) ert 'Ert ethv) ert 'Ert fork) ert 'ert - gen) ert 'ert + gen) ert (+ 'ert in) ert 'ert introv) ert 'Ert konc) ert 'Ert kontinu) ert 'ert kuv) ert (++ 'Ert -reform) ert 'ert +reform) ert ''ert reserv) ert 'ert // fire stavelser, den sidste -tiv, tryk på anden @@ -3142,14 +3359,14 @@ reserv) ert 'ert v) er (et er // PB kultiverret bl) er (e er // PB genetablere desp) er (at 3R // PB desperat - alt) eret @r3D // PB + alt) eret @-r@-D // PB d) er (fra er // PB derfra urd) er (et er // PB vurderet udd) er V // PB mudderet v) er (C+++ Er // PB vers, verden, kontroversiel salv) er (++ V // PB kvaksalverbutik snæv) er (++ V // PB snæversynet - ov) er (+++ V // PB overbevisende, sover, ovenover, overfald + ov) er (++++ V // PB overbevisende, sover, ovenover, overfald farv) er (s+ V // PB _kontrov) er (s 'Er // PB kontrovers yv) er (+ V // PB flyver @@ -3171,22 +3388,22 @@ guldgrav) er (e V // PB _myst) er (iu 'er // PB mysterium hust) er (i er // PB not stressed after a syllable - overhysterisk @st) er (ie 'er // PB ministeriet - _sk) er (_ er // PB sker + _sk) er (_ ?er // PB sker _s) er (_ er // PB ser _h) er (_ er // PB her + h) er (s++ Er // PB herse, herske h) er (li+ Er // PB herlig - hv) er (+ er // PB hver - enhv) er 'er // PB stressed + hv) er (+ Er // PB hver + enhv) er 'Er // PB stressed fork) er (t+ er // PB forkert Cik) er (+ V // PB epileptiker, optiker kk) er (+ V // PB rykker kuff) er (t V // PB kuffert - Amm) er (a 3r // PB kammerater + Amm) er (a @-r // PB kammerater f) er (ni Er // PB fernis _fall) er (+ 'er // PB falleret _kass) er (er 'er // PB kasserer inf) er (no 'Er // PB inferno -// st) er (et r // PB orkesteret tt) er (C V // PB lattermild _int) er (n_++ 'Er // PB stressed int) er (nat V // PB international @@ -3200,8 +3417,6 @@ guldgrav) er (e V // PB er (fari Er // PB ministererfaring _) ernie W:ni // PB name am) er (ika_ 'er // PB Amerika -// _røv) er (i Vr' // PB røveri - stressed i -// røv) er (i Vr // PB togrøveri sv) er (ige Er // PB ærg) err Er // PB ærgerrig offic) er 'er // PB officer - stressed e @@ -3209,10 +3424,10 @@ guldgrav) er (e V // PB n) er (v Er // PB nerve, nervøs _gen) er (t Er // PB genert _man) erer 'eV // PB - _L06) er (_ Er // PB per + _L06) er Er // PB per, person L06L06) er V // PB klipper fisk) er V // PB fisker, fiskerby - elsk) er V // PB elskerinde + elsk) er ?V // PB elskerinde und) er V // PB under hund) er 3r // PB hunderæd umm) er V // PB hummer @@ -3232,10 +3447,10 @@ der_man) er (_ V // PB der er intet land, der maner ... orman) er (_ V // PB formaner th) er_ V // Luther gt) er V // PB agter - øl) er V // PB brøler + øl) er (+ V // PB brøler, køler t) erræn &r'&N // PB terræn _g) er (ne_+ Er // PB gerne - j) er (g Er // PB bjerg + j) er (g E3- // PB bjerg @m) er (sk V // PB romersk ob) er (st V // PB rooms) ervice Wvis // PB @@ -3243,63 +3458,65 @@ der_man) er (_ V // PB der er intet land, der maner ... polt) er (ab V // PB polterabend alt) er V // PB altervin d) er (byg V // PB underbygge - _all) erede (_ @reD@ + _all) erede (_ 3rED@ alb) er (tA 'Er // PB Alberta, Alberte f) ergie W:gi // PB name .group ed // PB verb suffix - ede (elskede - lovede) // not treated as a suffix any more - too many exceptions - @) ede (_ @D@ // PB elskede - &r) ede (_ 3D@ // PB pikerede + @) ede (_ @-D@- // PB elskede + &r) ede (_ VD@- // PB pikerede, spekulerede + &r) ede (s_ VD@- // PB placeredes - hov) ed @D // PB hoved + hov) ed @'D // PB hoved + mm) ed @-D // PB fremmed afst) ed (kom 'eD // PB afstedkomme - f) ede (++ eD@ // PB opfede + opf) ede (++ eD@- // PB opfede f) eder (_+ eDV // PB - h) ede (+ eD@ // PB glohede + h) ede (+ eD@- // PB glohede sm) ede eD3 // PB guldsmede velocip) ed (e 'eD // PB stressed h) eder (+ eDV // PB muligheder - vildr) ede (_+ ED@ // PB vildrede - ørner) ede ED@ // PB - err) ede (+ ED@ // PB forbryderrede, røverrede - bortl) ede ED@ // PB - spr) ede (_+ ED@ // PB adsprede - ber) ede (_+ ED@ // PB berede - _br) ede (_+ ED@ // PB brede - helbr) ede ED@ // PB - _fr) ede (_+ ED@ // PB frede - vr) ede (_+ ED@ // PB vrede - ler) ede (_+ ED@ // PB fuglerede -hvepser) ede (_+ ED@ // PB hvepserede -elskovsr) ede ED@ // PB -rotter) ede (_+ ED@ // PB rotterede - emb) ede (_+ eD@ // PB embede - emb) ede (t_+ eD@ // PB embedet - tilb) ede eD@ // PB + vildr) ede (_+ ED@- // PB vildrede + ørner) ede ED@- // PB + err) ede (+ ED@- // PB forbryderrede, røverrede + bortl) ede eD@ // PB + spr) ede (_+ ED@- // PB adsprede + ber) ede (_+ ED@- // PB berede + _br) ede (_+ ED@- // PB brede + helbr) ede ED@- // PB + _fr) ede (_+ ED@- // PB frede + vr) ede (_+ ED@- // PB vrede + ugler) ede (_+ ED@- // PB fuglerede +hvepser) ede (_+ ED@- // PB hvepserede +elskovsr) ede ED@- // PB +rotter) ede (_+ ED@- // PB rotterede + emb) ede (_+ eD@- // PB embede + emb) ede (t_+ eD@- // PB embedet + tilb) ede eD@- // PB tilb) eder eDV // PB hundr) ed (+ @:D // PB hundred dern) ed (e eD // PB dernede hern) ed (e eD // PB dernede - &k) ede (+ eD@ // PB dødkede - forsk) ede @D@ // PB uudforskede + dødk) ede (+ eD@- // PB dødkede + forsk) ede @D@- // PB uudforskede psyk) ede (lisk @d'e // PB psykedelisk // PB compounds with "lede" - afl) ede (+ eD@ // PB aflede - bortl) ede (+ eD@ // PB - forl) ede (+ eD@ // PB - henl) ede (+ eD@ // PB henlede - livsl) ede (+ eD@ // PB - indl) ede (+ eD@ // PB + afl) ede (+ eD@- // PB aflede + bortl) ede (+ eD@- // PB + forl) ede (+ eD@- // PB + henl) ede (+ eD@- // PB henlede + livsl) ede (+ eD@- // PB + indl) ede (+ eD@- // PB indl) eder (+ eDV // PB - misl) ede (+ eD@ // PB + misl) ede (+ eD@- // PB misl) eder (+ eDV // PB - opl) ede (+ eD@ // PB - retl) ede (+ eD@ // PB - udl) ede (+ eD@ // PB - vejl) ede (+ eD@ // PB - vildl) ede (+ eD@ // PB + opl) ede (+ eD@- // PB + retl) ede (+ eD@- // PB + udl) ede (+ eD@- // PB + vejl) ede (+ eD@- // PB + vildl) ede (+ eD@- // PB vildl) eder (+ eDV // PB afl) eder (+ eDV // PB afleder bortl) eder (+ eDV // PB @@ -3314,9 +3531,11 @@ rotter) ede (_+ ED@ // PB rotterede .group et // PB verb suffix -et (har elsket - has loved) // not treated as a suffix any more - @) et (_+ @D // PB elsket - @r) et (_+ 3D // PB pikeret - @) ets (_+ @Ds // PB målets - noun ending + @) et (_+ @-D // PB elsket + @r) et (_+ VD // PB placeret + @) ets (_+ @-Ds // PB målets - noun ending + + int) et @-D // PB tilintetgøre // PB exceptions: not a 'et suffix en_du) et (_ 'Et // PB @@ -3326,22 +3545,24 @@ synger_du) et (_ 'Et // PB sang_du) et (_ 'Et // PB @du) et (_ 'Et // PB @sekr) et Et // PB sædsekret + starl) et Et // PB young actor konkr) et 'Et // PB stressed harri) et 3t // PB name michel) et 'E // PB Name - silent t -margar) et &#t // PB name - nazar) et &#t // PB name sorb) et 'E // PB hindbærsorbet dekr) et (+ 'et // PB stressed + klos) et 'Et // PB kloset stressed + klos) ett 'Et // PB klosettet stressed en_blank) et 'Et // PB en blanket, den blanket - noun - problem with verb "blanke/blanket" en_son) et 'Et // PB poem piru) et 'Et // PB pinc) et 'Et // PB stressed son) ett (e 'Et // PB sonetten, sonetter - vindu) et (_ @D // PB + vindu) et (_ @-D // PB jazzball) et Et // PB viol) et Et // PB ultraviolet - tabl) et Et // PB jodtablet + tabl) et ?Et // PB jodtablet + tabl) ett ?Et // PB jodtabletter omel) et Et // PB spinatomelet leverpl) et Et // PB _sk) et et // PB sket @@ -3355,7 +3576,7 @@ gennems) et et // PB spl) et (+ Et // PB skønhedsplet guldpl) et Et // PB sølvpl) et Et // PB - pl) et (+ Et // PB kaffeplet + Apl) et (+ Et // PB kaffeplet pl) ett (+ Et // PB kaffepletter _geb) et (+ 'et // PB _sekr) et (+ 'Et // PB stressed @@ -3384,7 +3605,6 @@ _et_kors) et 'Et // PB a corset [kVs'Et] vs the cross [kVrs@d] _tromp) et 'et // PB stressed tromp) et et // PB _tap) et 'et // PB -_lazar) et '&#t // PB tap) et et // PB klarin) et Et // PB _klarin) et 'Et // PB @@ -3400,60 +3620,9 @@ _servi) ett 'Et // PB _pubert) et 'et // PB stressed meg) et (+ et // PB not a suffix &m) eter 'etV // PB kilometer, kometer, taxameter - stressed - skuer) et (+ &#t // PB -klager) et (+ &#t // PB - køber) et (+ &#t // PB -skatter) et (+ &#t // PB - liger) et (+ &#t // PB - møder) et (+ &#t // PB -påtaler) et (+ &#t // PB - råder) et (+ &#t // PB -skoler) et (+ &#t // PB -straffer) et (+ &#t // PB -sædvaner) et (+ &#t // PB - taler) et (+ &#t // PB - vetor) et (+ &#t // PB -borgerr) et &#t // PB - indr) et (+ &#t // PB -regelr) et (+ &#t // PB - henr) et (_ &#t // PB - _ordr) et (+ &#t // PB ordret oversættelse -mennesker) et (+ &#t // PB -fisker) et (+ &#t // PB - livr) et (+ &#t // PB -færdigr) et (+ &#t // PB -stemmer) et (+ &#t // PB - arver) et (+ &#t // PB -bygger) et (+ &#t // PB -bytter) et (+ &#t // PB -dagpenger) et (+ &#t // PB - ener) et (++ &#t // PB -familier) et (+ &#t // PB -underr) et (+ &#t // PB -førster) et (+ &#t // PB -gryder) et (+ &#t // PB - ur) et (_++ @D // PB -ret_og_ur) et (+ &#t // PB -gør_ur) et (++ &#t // PB -gøre_ur) et (++ &#t // PB -e_mig_ur) et (++ &#t //PB gjorde mig uret -e_dig_ur) et (++ &#t //PB gjorde dig uret -e_os_ur) et (++ &#t //PB gjorde os uret -e_dem_ur) et (++ &#t //PB gjorde dem uret -t_mig_ur) et (++ &#t //PB gjort mig uret -t_dig_ur) et (++ &#t //PB gjort dig uret -t_dem_ur) et (++ &#t //PB gjort dem uret -t_jer_ur) et (++ &#t //PB gjort jer uret -t_os_ur) et (++ &#t //PB gjort os uret - en_ur) et (++ &#t // PB begå en uret - _ur) et (_mod_++ &#t // PB begå uret mod -dig_ur) et (++ &#t // PB har alle andre end dig uret ændr) et (+ VD // PB - r) ett (++++ &#t // henrette, rettroende - only one t - sr) et (++ &#t // PB rigsret -højester) et &#t // PB - av) et (_+ @D // havet, lavet - avoid [Au] - tag) et @D + av) et (_+ @-D // havet, lavet - avoid [Au] + tag) et @-D amul) et 'Et // PB _alfab) et 'et // PB alfab) et et // PB avoid [@D] @@ -3468,12 +3637,12 @@ _alfab) et 'et // PB _kask) ett 'et // PB stressed - only one t _bajon) et 'Et // PB stressed _bajon) ett 'Et // PB only one t -_tabur) et (+ '&#t // PB bajon) et Et // PB eln) et (+ Et // PB hårn) et Et // PB fisken) et Et // PB kamuflagen) et Et // PB +kamuflagen) ett Et // PB _bass) et Et // PB dog // PB final -ette stressed e @@ -3521,8 +3690,9 @@ _niL10ol) ette 'Et@ // PB Nicolette ff f // _) for (&@P3 f%V // stressed second syllable after initial "for" - _) for (e_ f%o // PB only the word 'fore' - _) fore (de_ f%'orV // PB only the word 'forede' + _) fore (_ f'o@-V // PB only the word 'fore' + _) forer (_ f'o@-V // PB only the word 'forer' + _) fore (de_ f'o@-V // PB only the word 'forede' _) for (um f'or _) fe (_ fe // PB @@ -3580,7 +3750,7 @@ _niL10ol) ette 'Et@ // PB Nicolette gra) f (A f ra) f (ik f stra) f f // PB strafpoint - fire fi:V // PB fire (4) + fire fi@-V // PB fire (4) fireog fi:V // PB fireogtyve (24) sa) f (ar f sta) f (e f @@ -3599,6 +3769,7 @@ _niL10ol) ette 'Et@ // PB Nicolette finlay fenli // PB name es_) frites frit // PB pommes frites _) four (_ fO: // PB + fiction _^_en // PB science fiction .group g g g @@ -3679,21 +3850,22 @@ _niL10ol) ette 'Et@ // PB Nicolette læ) g (dom j // PB lægdommer læ) g (søs j // PB lægsøster æl) g (e j // PB sælge vælge - y) g (e j // syge, ryge, myge + y) g (e // syge, ryge, myge l) g (_ j // valg, elg val) g // PB valgaften, valgkamp + l) g (et_ j // PB valget l) g (en_ j // PB elgen el) g (e_ j // PB elge, Helge el) g (ene_ j // PB elgene el) g (enes_ j // PB elgenes _e) g (_ j // PB kvæ) g j // PB - l) g (et_ j // PB valget l) g (C // PB bælgmørkt, bælgplante, forfulgt g (ruL06 g // PB kulgrube, kontrolgruppe g (rundlag g // PN kapitalgrundlag g (las g // PB spejlglas pil) g (rim g // PB + g (rib g // PB ådselgribbe g (ran g // PB ædelgran g (ross g // PB ølgrossist ø) g j // PB deleted (_ @@ -3707,7 +3879,7 @@ _niL10ol) ette 'Et@ // PB Nicolette g (lem g // PB glemt _) g (led g // PB gled val) g (t // PB silent g - valgt - spur) gt t // PB silent g - spurgt + spur) gt d // PB silent g - spurgt sy) g // PB silent g -sygdom sa) g j // PB frisag sa) g (o g // PB sagogryn, heksagon @@ -3717,10 +3889,19 @@ _niL10ol) ette 'Et@ // PB Nicolette aspar) ges =s // PB _) grunge (_ grVndZ // PB _mar) ge dZ // POB name + gottfried gVtfr'it // PB name + +// PB general rule: consonant + o + g + e: [w] + Co) g w // PB tog, toge + g (lycerin g // PB nitroglycerin +// no) g @ // PB noget -// PB general rule: consonant + o + g: [w] - Co) g w // PB tog, toge, noget // o=>w exceptions +// "tog" = "took", not "train" - problem with "de tog" = they took/those trains +_han_to) g // PB silent g +_hun_to) g // PB silent g +_vi_to) g // PB silent g + _i_to) g // PB silent g pro) g (r g // PB program østro) gen g'en // PB nitro) gen g'en // PB @@ -3751,8 +3932,8 @@ _niL10ol) ette 'Et@ // PB Nicolette r) gen (s_ @n // PB kirurgens jær) g (e w // PB bjærge r) g (er_ u // PB herberger - u) g (e : - su) g : // PB silent g - sugerør + u) ge :@- // PB uge, ugevis, bruge + su) g // PB silent g - sugerør, sug u) g (ene S // PB ugenert gener (_ham Sen'er // PB try to solve "gener" = bother and "gener" = genes gener (_hende Sen'er // PB @@ -3772,7 +3953,8 @@ sejldu) g // PB silent g voksdu) g // PB silent g svededu) g // PB silent g hertu) g // PB silent g - ø) ge (+++ :j@ // PB bøgetræ, øge, døgenigt + ø) ge (+++ j@- // PB bøgetræ, øge, døgenigt, høgen + ø) ger (++ jV // PB bøger mø) ge (len :je // PB møgelendig beha) g j // PB ubehag ø) g (n j @@ -3871,7 +4053,7 @@ svededu) g // PB silent g lo) g (fil g // PB _lo) g (g g ør) g u // PB changed from w - spørge - ør) ge (l+ u3 // PB spørgeleg - avoid "gele" = [Sel'e] + ør) ge (+ w@ // PB spørgeleg - avoid "gele" = [Sel'e] ør) g (s // PB silent g - spørgsmål å) g u // PB åg, åge g (røn g // PN blågrøn @@ -3887,8 +4069,8 @@ svededu) g // PB silent g godaften go'aftn // PB godmorgen gom'V:n // PB grace _^_EN // PB Grace - name - gentleman djEnt@lm&n // PB - gentlemen djEnt@lmEn // PB + gentleman dZEnt@-lm&n // PB + gentlemen dZEnt@-lm?En // PB george _^_EN // PB georgie _^_en // PB name georgien ge'O:gi3n // PB @@ -3950,7 +4132,7 @@ proktolo) ge (n 3 // PB _) ge (ne_ Se // gene _) ge (nere Se // genere gener (_mig Sen'er // PB gener mig ikke - gener (e_mig Sen'er // PB genere mig + genere (_mig Sen'eV // PB genere mig _) ge (nerere_ ge // PB ge (nerøs Se // generøs ge (nert Se // genert @@ -4071,20 +4253,43 @@ proktolo) ge (n 3 // PB .group i i i -// Glottal i followed by two consonants - C) i (C% ?i // PB svirret, fisse - TEST -// Normal i followed by consonant + wovel - C) i (CA i // PB sviret, fise - TEST -// Glottal i not followed by vowel -C) i (CK ?i // PB fis +// Short i followed by double consonant + i (C% ?i // PB svirret, fisse + i (dt ?i // PB skridt, skridtet - short i before dt + br) i (te ?i // PB person from GB + + d) i (kt+ i // PB diktere + t) i (l+ e // PB tilknytte, stille +dansk_st) i (l+ i // PB +engelsk_st) i (l+ i // PB + indst) i (l e // PB indstille + h) i (ls ?i // PB hils, hilsen - short i + skr) i (der ?i // PB short i - general rule? + b) i (l ?i // PB bil, bilen + +// exceptions + dr) i (nk e // PB + + +// PB "lide" - "like" versus "suffer" + l) ide (_dig i + l) ide (_mig i + l) ide (_jer i + l) ide (_dem i + l) ide (_os i + l) ide (_andre i + l) ide (_deres i + l) ide (_jeres i + l) ide (_vores i // PB general rule: initial in- : [e] _) i (n+ e // PB instinkt, ineffektiv i (ns e // PB bladinsekt, musikinstrument + i (nter e // PB fritidsinteresse h) i (n i // PB hinsides i (nfant e // PB marineinfanteri - f) i (nsky i // PB finskytte, finskydning - i (nc e // PB pincet + f) i (nsky ?i // PB finskytte, finskydning + i (nc ?e // PB pincet _) insider ensajdV // PB _) inside (information ensajd // PB _) i (ni i // PB initiativ @@ -4094,11 +4299,11 @@ C) i (CK ?i // PB fis sixt) i (nsk 'i // PB // PB general rule: [e] before double consonant - L03) i (L01%+ ?e // PB ligge, dikke + L03) i (L01%+ ?e // PB ligge, dikke i (ggør++ i // PB legemliggøre i (ggjo++ i // PB legemliggjort/gjorde r) i (L01% e // PB drikke, prikke - L08) i (ll e // PB skille, stille + L08) i (ll++ ?e // PB skille, stille, spille st) illads il'&s // PB bast) ille 'ilj3 // PB sp) i (l e // PB lotterispil @@ -4119,10 +4324,10 @@ mississ) i (ppi 'i // PB stressed p) i (sse e // PB n) i (p e // PB nips, niptang kn) ip (tang iw // PB kniptang - i (kke e // PB ikke, sikkerhed, sikkert + i (kke+ ?e // PB ikke, sikkerhed, sikkert ch) i (k+ i // PB chikke sk) i (k+ i // PB skikkelse - L06) i (lle ?e // PB billede, piller + L06) i (lle ?e // PB billede, piller b) i (lle_+ ?i // PB insect b) i (ller_+ ?i // PB insect b) i (llen_+ ?i // PB insect @@ -4132,27 +4337,31 @@ mississ) i (ppi 'i // PB stressed but) i (k i // PB videobutikken // PB general rule: [i] after k, [e] followed by n/m - k) i (++ i // PB kikke, kikkert, kirke, kiosk + k) i (C++ ?i // PB kikke, kikkert, kirke, kiosk + k) i (Ce++ i // PB skide k) i (L09++ e // PB kind, skinke, skimme, skimte k) i (L09L11++ i // PB kime k) i (mning+ i // PB - bik) i (ni i // PB - sk) i (mo+ i // PB eskimo + bik) i (ni ?i // PB + sk) i (mo+ ?i // PB eskimo + +// PB General rule j in "udie" + ud) i (e j // PB studie, audiens // general rule: [e] between l and nt l) i (nt e // PB flint, klint, splint // general rule: [e] between h and m - h) i (m+ e // PB himlen + h) i (m+ ?e // PB himlen h) iroshi (ma iroS'i // PB - h) imalaya em&l'aj& // PB stressed + h) imalaya ?em&l'aj& // PB stressed // general rule: [e] before mp i (mp e // PB imperium, impuls impromptu _^_fr // PB fr) i (g i // PB frigav, frigid, frigøre - l) i (L01 e // flink, link, blink + l) i (nk e // flink, link, blink hell) ig ij // PB helligånd r) ig (C i // PB rigdom - silent g r) ig (ning eg // PB @@ -4178,7 +4387,7 @@ mississ) i (ppi 'i // PB stressed v) i (nglas++ i // PB v) i (nstok i // PB t) i (ka+ i // PB distika, Vatikanet - v) i (L01 e // PB vinge + v) i (g e // PB vinge v) i (L01a i // PB vikar v) i (L10i i // PB viking v) i (ck i // PB Vicki, Vicky @@ -4190,10 +4399,10 @@ mississ) i (ppi 'i // PB stressed t) i (gg+ e // PB tigge, tigger pl) i (gt+ e // PB pligt pl) i (L01L11+ i // PB komplikation - s) i (L01L07 e // PB sigte, sigt, udsigt + s) i (L01L07 ?e // PB sigte, sigt, udsigt l) ig (C ij // PB lighus fil) ig (ran ig // PB - l) ig (i ig // PB relegiøs + l) igi igj // PB relegiøs, religion _n) i (L10 e // PB nikke, nik, Nick n) i (kL04 i // PB nikotin n) i (che i // PB @@ -4218,14 +4427,14 @@ spirrev) i (p 'i // PB stressed C) i (mC e // PB fims, gesims, vimse, bims, dims, bimle l) i (mni+ i // PB limning himstreg) i (ms 'e // PB stressed - sk) i (n e // PB skin, skinne + sk) i (n+ ?e // PB skin, skinne, skinke kn) i (p e // PB kniplen Cr) i (mC e // PB vrimle, strimle pr) i (m+ i // PB primtal, primus L06r) i (nt e // PB brint, print kor) i (nt e // PB korinterne str) i (nt e // PB strinte - s) i (dde e // PB sidde + s) i (dde ?e // PB sidde s) i (dning e // PB eftersidning læbest) i (ft e // PB tegnest) i (ft e // PB @@ -4234,21 +4443,23 @@ blyantsst) i (ft e // PB blyantst) i (ft e // PB slagst) i (ft e // PB blækst) i (ft e // PB - bes) i (dde i // PB våbenbesiddelse - Cr) i (ll e // PB drille, brille - tr) i (ll i // PB trille + bes) i (dde ?i // PB våbenbesiddelse + Cr) i (ll ?e // PB drille, brille + tr) i (ll ?i // PB trille eskadr) ille 'ilj3 // PB espadr) ille 'ilj3 // PB kvadr) ille 'ilj3 // PB _dr) i (l e // PB dril, drilagtig - L01r) i (ll i // PB kriller, grill + L01r) i (ll ?i // PB kriller, grill jun) i (or j // PB - b) i (tter e // PB + b) i (tter ?e // PB b) i (tre e // PB m) iav jaw // PB _rad) i (se 'i // PB stressed tils) i (de 'i // PB tilsidesætte - stressed _kal) i (ber 'i // PB + tob) i (as '?i // PB name - stressed + ros) i (ta 'i // PB name // PB [e] after gr - exception gr) i (m e // PB grimrian @@ -4260,13 +4471,15 @@ espadr) ille 'ilj3 // PB l) inge (ri l&NSe // PB // PB general rule: [e] before nd/nk/ng - i (nd e // PB ind, finde, vinde - er) i (ndr 'e // PB erindring, erindre - i (nne e // PB finne - lets) i (ndig 'e // PB stressed - f) i (nland e // PB - h) i (nd e // PB hindre - C) i (nk e // PB spinkel, vinkel, forsinke + i (nd+ e // PB ind, find, vind + i (nde+ ?e // PB inde, finde, vinde + er) i (ndr ?e // PB erindring, erindre + i (nne+ ?e // PB finne + lets) i (ndig '?e // PB stressed + f) i (nland ?e // PB + h) i (nd ?e // PB hindre + C) i (nke ?e // PB spinkel, vinkel, forsinke + v) i (nk ?e // PB v) i (nkort i // PB f) i (nkæm i // PB finkæmme @@ -4274,10 +4487,10 @@ espadr) ille 'ilj3 // PB v) i (ndrik+ // PB vindrikker v) i (nkæld+ i // PB vinkælder v) i (ngård+ i // PB vingård - f) ind (el ind // PB findele - f) ind (eløn en // PB - ind (else+ en // PB opfindelse, forbindelse - f) ind (yrk ind // PB findyrke + f) ind (el ?ind // PB findele + f) ind (eløn ?en // PB + ind (else+ ?en // PB opfindelse, forbindelse + f) ind (yrk ?ind // PB findyrke _vest) i (ndi 'e // PB vestindisk // PB general rule: [e] before nn @@ -4291,14 +4504,14 @@ espadr) ille 'ilj3 // PB part) i i // PB skyggepartikler polit) i (k i // PB miljøpolitikken art) i (k i // PB trosartikel - sk) i (l++ ?e // PB skildpadde, skilt + sk) i (l++ ?e // PB skildpadde, skilt sk) i (løb++ i // PB skiløber sk) i (lift+ i // PB @sk) i (ld++ i // PB ungdomskilde, forsyningskilde sp) i (ds e // PB spids - L08l) i (L07 e // PB splitte + L08l) i (L07 ?e // PB splitte l) i (v++ i // PB pensionistliv - t) i (d+ i // PB livstidsdom + t) i (ds+ ?i // PB livstidsdom r) i (f e // PB skrifte, rift, drift tar) i (f 'i // PB fr) i (f+ i // PB frifundet @@ -4318,24 +4531,24 @@ _ventr) i (k 'i // PB ventrikel, ventrikler fr) i (ken i // PB frikende // general rule: [e] between consonant and st/sp/sk - l) i (L08 e // PB list + l) i (L08+ ?e // PB list l) i (sk i // PB cyklisk @cykl) i (st i // PB røvcyklist obel) i (sk 'i // PB stressed - r) i (L08+ e // PB riste, frisk, brist, vrist, Kristus, dristig + r) i (L08+ ?e // PB riste, frisk, brist, vrist, Kristus, dristig r) i (L08L04+ i // PB aristokrat dr) i (stig e // PB r) i (stik+ i // PB karakteristik fr) i (stad i // PB fr) i (spark i // PB - kr) i (sti_ e // PB Kristi genkomst - kr) i (stus e // PB + kr) i (sti_ ?e // PB Kristi genkomst + kr) i (stus ?e // PB L10r) i (stin i' // PB Christine, Kristine tr) i (L08+ i // PB trist pr) i (s i // PB fr) i (sted i // PB - fr) i (stede_ e // PB - fr) i (stedes_ e // PB + fr) i (stede_ ?e // PB + fr) i (stedes_ ?e // PB gr) i (L08+ i // PB grisk &r) i (sk i // PB historisk TEST infanter) i i // PB marineinfanterist @@ -4345,13 +4558,13 @@ infanter) i i // PB marineinfanterist konf) i (sker i // PB _kl) i (ster i // PB klister kl) i (str i // PB klistret - v) i (sk+ e // PB hviske + v) i (sk+ ?e // PB hviske bev) i (s i // PB beviskæde høv) i (sk i // PB - m) i (ste e // PB miste - _m) i (st_ e // PB + m) i (ste ?e // PB miste + _m) i (st_ ?e // PB m) i (stanke i // PB - m) istelten istElten // PB + m) istelten ?istElten // PB bil) i (s i // PB spritbilist // PB "vist" exceptions @@ -4360,31 +4573,34 @@ ganske_v) i (st_ e // PB jav) i (st e // PB L07v) i (st+ e // PB kvist, tvist bortv) i (s i // PB bortvist + har_v) i (st_mig i // PM _v) i (st_ e // PB "vist" = probably/might/maybe - problem with verb "vise/vist" - v) i (stnok e, // PB + v) i (stnok e // PB _v) i (st_sig i // PB verb + _v) i (st_den_til i // PB verb v) i (s_grad e // PB "til en vis grad" - avoid [i] // PB general rule: [e] after consonant + l followed by p - Cl) i (p e // PB slip, slippe, klip, glippe, glip + Cl) i (p e // PB slip, klip, glip + Cl) i (pp ?e // PB slippe, klipppe, glippe - _l) i (dt_ e // PB problem with verb "lide" + _l) i (dt_+ e // PB problem with verb "lide" _l) i (dt_skade i // PB _l) i (dt_nederlag i // PB _l) i (dt_overlast i // PB _l) i (dt_under i // PB // PB general rule: d/l + i + k = [e] - L03) i (k e // PB blik, øjeblik, dik - L03) i (kL04 i // PB helikopter, publikum + L03) i (k+ e // PB blik, øjeblik, dik + L03) i (kL04+ i // PB helikopter, publikum L03) i (L10a i // PB handikap L03) i (ke i // PB klike - L06) i (k e // PB pik, vatpik, bikse + L06) i (k+ ?e // PB pik, vatpik, bikse b) i (kube i // PB b) i (kini i // PB L06) i (ke i // PB pikikerede, piké _sp) ike ajk // PB Spike Jones - name - d) i (kt i // PB diktat, diktatur, diktum +// d) i (kt i // PB diktat, diktatur, diktum l) i (kv+ i // PB likvid pl) i (k i // PB replik, duplik publ) i i // PB folkerepublik @@ -4411,10 +4627,10 @@ austral) ier =jV // PB // PB words with final -ik in da_list - stressed i @) ik ($p_alt+++ ''ik // romantik @) ik (et$p_alt+++ ik // etiket - @r) ik (k$p_alt++++ ''e // fabrikker - @) ik (k$p_alt+++ ''i // musikken, replikker - only one k - @est) ik (k$p_alt+++ ''e // bestikke - only one k - @ast) ik (k$p_alt+++ ''i // elastikker + @r) ik (k$p_alt++++ ''?e // fabrikker + @) ik (k$p_alt+++ ''?i // musikken, replikker - only one k + @est) ik (k$p_alt+++ ''?e // bestikke - only one k + @ast) ik (k$p_alt+++ ''?i // elastikker @) ik (at$p_alt++ ik // duplikat, duplikator @) ik (er$p_alt++ %ik // rom'antiker, k'omikere @) iker (en$p_alt++ =ikV // mekanikeren @@ -4422,7 +4638,7 @@ austral) ier =jV // PB &) ik (alsk$p_alt+ ik' // musikalsk &r) ik ($p_alt++ ''ek // fabrik &or) ik ($p_alt++ ''ik // retorik - &) ik (k$p_alt+ ''i // antikke, trafikken - only one k + &) ik (k$p_alt+ ''?i // antikke, trafikken - only one k &r) ik (k$p_alt ''e // fabrikker - only one k @) ik (ant$p_alt+ ik' // praktikant, musikant C) ik (er+ ik // PB mimiker, spastiker, musiker @@ -4430,7 +4646,7 @@ austral) ier =jV // PB mus) i (k i // PB folkemusik // PB 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 // PB words with final -isme in da_list (348) - stressed i &) isme ($p_alt ''ism@ // kommunisme, egoisme @@ -4447,10 +4663,10 @@ austral) ier =jV // PB &r) i (et$p_alt 'i // infirmeriet // PB put stress on the syllable before final 'ie' - words in da_list - &) ie ($p_alt =i3 // valkyrie, kalorie - &) ie (liv$p_alt =i@ // familieliv + &) ie ($p_alt =i@- // valkyrie, kalorie + &) ie (liv$p_alt =j@- // familieliv &) ie (r$p_alt =jV // familier - &s) ie ($p_alt =j3 // gymnasiereform + &s) ie ($p_alt =j@- // gymnasiereform &r) ie (l$p_alt i'E // materiel &) ie (re$p_alt =i''e // injuriere, injurierende kalor) i (us =i // PB @@ -4460,6 +4676,15 @@ austral) ier =jV // PB &k) i ($p_alt 'i // PB anarki &m) i (sk$p_alt =i // stress on the previous syllable - økonomisk +// PB ie=>j@- TEST + er) ie j@- // PB serie, ferie + er) ier jV // PB serier, ferier + ie (re j'E // PB karriere TEST + ierer j'EV // PB karrierer TEST + or) ie (nt_ i'E // PB Den nære Orient + or) ie (nten_ i'E // PB Orienten + or) ie (ntens_ i'E // PB Orientens + // PB French words with final -ier atel) ier j'e bank) ier j'e @@ -4495,7 +4720,7 @@ particul) ier j'e _t) i (n e // PB tinfolie t) i (nL11 i // PB Tina, Tine b) ingo engo // PB - _m) id (t e // PB midt - silent d + _m) id (t ?e // PB midt - silent d i (mpo e // PB imponerende special) i (st i // PB stålspecialist gev) i (nst e // PB @@ -4548,48 +4773,54 @@ havde_st) i (l_ i // PB st) i (l_ham e // PB verb - stil ham om st) i (l_op_ e // PB verb ant) i i // PB antilope - sp) i (ld i // PB spilde - L08) i (le++ i: // PB spile, stile + sp) i (ld ?i // PB spilde + L08) i (le++ i // PB spile, stile k) i (mse e // PB kimse v) i (l_+ e // PB vil hv) i (l+ i // PB hvil nashv) ille el/2 // PB US city hv) i (lk+ e // PB hvilken v) ind (rue ind // PB - v) i (nter e // PB - v) i (ntre e // PB + v) i (nter ?e // PB + v) i (ntre ?e // PB v) id (st e // PB vidst - e and silent d uv) i (s e // PB v) i (st_ikke e // PB - t) i (l e // PB til +// t) i (l e // PB til projekt) i (l i // PB blyprojektiler art) ille (ri il@ // PB artilleri st) i (lfuld i // PB // PB stil = "style" not the verb 'stil' = "put, place" -_min_st) i (l_ i // PB -_sin_st) i (l_ i // PB -_din_st) i (l_ i // PB -_jeres_st) i (l_ i // PB -_deres_st) i (l_ i // PB -_hans_st) i (l_ i // PB -_hendes_st) i (l_ i // PB -_med_st) i (l_ i // PB -_ny_st) i (l_ i // PB -_skifte_st) i (l_ i // PB -_skift_st) i (l_ i // PB -_skifter_st) i (l_ i // PB - st) i (l_over i // PB "der er stil over ham" - Ast) i (l_ i // PB fægtestil, rokokkostil +_min_st) i (l_ ?i // PB +_sin_st) i (l_ ?i // PB +_din_st) i (l_ ?i // PB +_jeres_st) i (l_ ?i // PB +_deres_st) i (l_ ?i // PB +_hans_st) i (l_ ?i // PB +_hendes_st) i (l_ ?i // PB +_med_st) i (l_ ?i // PB +_ny_st) i (l_ ?i // PB +_skifte_st) i (l_ ?i // PB +_skift_st) i (l_ ?i // PB +_skifter_st) i (l_ ?i // PB +_dansk_st) i (l ?i // PB + st) i (l_over ?i // PB "der er stil over ham" + _st) i (l_dem ?e // PB "stil dem derhenne" + _st) i (l_jer ?e // PB + _st) i (l_den ?e // PB + _st) i (l_mig ?e // PB + _st) i (l_os ?e // PB + _st) i (l_vores ?e // PB + Ast) i (l_ ?i // PB fægtestil, rokokkostil st) i (lart i // PB forest) i (l e // PB -livsst) i (l i // PB +livsst) i (l ?i // PB st) i (lling++ e // PB livsstilling - vent) i (l i // PB slangeventil - st) i (le i: // PB stile + vent) i (l ?i // PB slangeventil ju) i (ce // PB juice - skip the i soft) i (ce aj // PB softice s) i (kC e // PB sikre - p) is (_ es // PB pis + p) is (_ ?es // PB pis L08) is (+ is // PB spis l) igh (ter aj // PB luksusl) i (ner aj // PB @@ -4597,26 +4828,26 @@ luksusl) i (ner aj // PB v) ie (tnam jE // PB v) ie (t_cong jE // PB hipp) ie i // PB silent e - p) ie (destal i // PB silent e + p) ie (destal ?i // PB silent e pav) ill (o ilj // PB pavillon br) ill (ere ilj / PB brillere d) i (sk e // PB købmandsdisk d) i (skrepans i // PB - d) i (skva i // PB diskvalificere - d) i (skrimi i // PB diskriminere - d) i (skett i // PB diskette - d) i (sko i // PB diskotek, diskodans - d) i (sL10a i // PB diskant - ind) i (sk i // PB + d) i (skva ?i // PB diskvalificere + d) i (skrimi ?i // PB diskriminere + d) i (skett ?i // PB diskette + d) i (sko ?i // PB diskotek, diskodans + d) i (sL10a ?i // PB diskant + ind) i (sk ?i // PB jord) i (sk i // PB tw) i (st e // PB - d) i (sku i // PB diskutere - d) i (skret i // PB + d) i (sku ?i // PB diskutere + d) i (skret ?i // PB kr) i (cket e // PB d) i (ngo e // PB - konf) i (skere i // PB + konf) i (skere ?i // PB pr) i (n e // prins, princip, print - d) ie (sel i // PB dieselolie + d) ie (sel ?i // PB dieselolie k) io (sk jV // PB kiosk _suz) ie i // PB name _ann) ie i // PB name @@ -4666,7 +4897,7 @@ amnesty_) international intVn'&Son&l // PB k) i (et+ 'i // PB Tyrkiet bol) i (via 'i // PB stressed - kas) i (no 'i // PB stressed + kas) i (no 'i: // PB stressed prosod) i 'i // PB prosodi, prosodien _melod) i 'i // PB melodi _parod) i 'i // PB parodi @@ -4728,7 +4959,7 @@ _terap) i 'i _t) i (ske_ e // PB hviske og tiske v) i (sne e // PB l) i (e j - r) i (gti e // PB rigtigt + r) i (gti ?e // PB rigtigt - short vowel - override ph_danish offentl) ig i // PB as) i (e j t) i (øs @@ -4783,7 +5014,7 @@ _astero) i (de 'i // PB _mess) i (as 'i // PB _mart) i (ni 'i // PB cocktail _alb) i (no 'i // PB stressed - &skr) i (pt 'E // PB stressed - manuskript + nuskr) i (pt 'E // PB stressed - manuskript L10am) i (lla 'i // PB Camilla, Kamilla _alib) i 'i // PB alibi _fob) i 'i // PB fobi @@ -4865,7 +5096,7 @@ michel) in EN // PB Michelinguide // exceptions ops) ig (t+ eg // PB opsigt pl) ig (t+ eg // PB tavshedspligt - sv) ig (t+ eg // PB strømsvigt + sv) ig (t+ ?eg // PB strømsvigt _b) ig (_ eg // PB Big Ben trods) ig i puds) ig i @@ -4877,6 +5108,7 @@ michel) in EN // PB Michelinguide puds) ig (t i // pudsigt ds) ig (t+ eg // PB indsigt, udsigt _d) ig (t eg // PB + d) ig (te eg // PB kærlighedsdigte helted) ig (t eg // PB eddad) ig (t eg // PB haikud) ig (t eg // PB @@ -4911,12 +5143,14 @@ skæmted) ig (t eg // PB // Any other syllable before the word reverts to normal stress &) ig ($p_alt++ =i // velærværdig, gudvelbehagelig - ige (++ i:@ // PB pige, pigen, stige, sige, lige + ige (++ i@- // PB pige, pigen, stige, sige, lige, berolige + iget (+ i@-D // PB beroliget volt) ige 'i:S // PB - s) ige (++ i:@ // PB sigende - iger (+ i:V // PB piger, afskediger - p) igen i:3n // PB pigen -gensid) ig ij // PB maybe "j" should be removed + s) ige (++ i@- // PB sigende + iger (++ iV // PB piger, afskediger + _s) iger (_ i:r + p) igen (+ i@-n // PB pigen +gensid) ig i // PB n) ige (ri ige // PB nigerianer dir) ig (ent ig // PB er) ige (re ig'e // PB erigeret @@ -4925,12 +5159,12 @@ privil) ige ig'e // PB priviligeret n) igeria ig'eRi& // PB dil) igen (ce iS'AN // PB diligence kr) igs is - rol) ige iE // PB rolige, beroligende +// rol) ige iE // PB rolige, beroligende rol) iger iV // PB beroliger værd) ig (enstand 'ig // PB værdigenstand - yd) ig ij // PB tvetydigt, lydig + yd) ig i // PB tvetydigt, lydig behænd) ig i // PB silent g - sned) ig ij // PB silent g + sned) ig i // PB silent g ld) ig i // PB heldig // PB stressed e after -ig @@ -4939,16 +5173,18 @@ behænd) ig i // PB silent g nav) ige (r ig'e // PB navigere dir) ige (r ig'e // PB dirigere intell) ige (n ig'e // PB intelligent - ige (n+ ig'E // PB igen, igennem, herigennem - sn) ige (+ ij3 // PB + ige (n_+ ig'E // PB igen, igennem, herigennem + ige (nn+ ig'E // PB igennem, herigennem + f) igen i@-n // PB fruit + sn) ige (+ i@- // PB bol) ig (+ i // PB boligen intr) ig (+ 'i // PB intrigen, intriger - silent g - d) ige (nde ij@ // PB nedværdigende - v) ige (n ij3 // PB vigen, mundvigen - st) ig (e+ ij // PB rangstigen - l) ig (ene ij // PB ligene - l) igg (e++ eg // PB - kr) ige (n i:@ // PB + d) ige (nde i@- // PB nedværdigende + v) ige (n i@- // PB vigen, mundvigen + st) ige (+ i@- // PB rangstigen + l) ig (ene i@- // PB ligene + l) igg (e++ ?eg // PB + kr) ige (n i@- // PB .group in @@ -4961,12 +5197,12 @@ intell) ige (n ig'e // PB intelligent kab) ine (t in'E // kabinet // PB words ending with "in" in da_list with $alt - stressed i - @) in ($p_alt 'in // baldakin, bekkasin + @) in ($p_alt+ '?in // baldakin, bekkasin, appelsin &) in (ar$p_alt in' // disciplinarmiddel &ass) in ($p_alt 'EN // bassin &at) in ($p_alt 'EN // satin - &lat) in ($p_alt 'in // latin -byzant) in 'in // PB byzantinsk + &lat) in ($p_alt '?in // latin +byzant) in '?in // PB byzantinsk vel) in (formeret en // PB ind (hold en // PB klorindhold @@ -4978,10 +5214,10 @@ byzant) in 'in // PB byzantinsk .group it // PB words with final -it - stressed i - &) it ($p_alt 'it //PB bakelit + &) it ($p_alt '?it //PB bakelit &) it (an$p_alt it' //PB samaritan &) ition ($p_alt iS'on //PB definition - &) it (t$p_alt 'i //PB avoid double t - bakelitten [ b,ak@l'it@-n] + &) it (t$p_alt '?i //PB avoid double t - bakelitten [ b,ak@l'it@-n] .group iv // PB stressed final -iv @@ -5039,8 +5275,8 @@ _sport) iv 'iv joule dZu:l // PB jambalaya dZAmb&l'aj& // PB _) jake dZEjk // PB name - _) jakel j&k-@l // PM mester Jakel - _) jill dZil // PB name + _) jakel j&k@l // PM mester Jakel + _) jill dZIl // PB name j (ob dZ john dZVn johnny dZVni // PB name @@ -5051,10 +5287,10 @@ _sport) iv 'iv j (unk dZ // PB junkaktie j (unkt j // PB junktur, konjunktion jo (ckey dZV // PB - _) ji (m_ dZe // PB - _) ji (ms_ dZe // PB - jimmy dZemi // PB - jimmie dZemi // PB + _) ji (m_ dZI // PB + _) ji (ms_ dZI // PB + jimmy dZImi // PB + jimmie dZImi // PB _) j (eff dZ // PB j (azz dZ // PB nava) j (o h // PB @@ -5106,7 +5342,7 @@ _sport) iv 'iv .group k k k - kk k + kk g // PB bækkenet [b'?Eg@n@-D] kanterel kant@r'&#l // PB kumquat kVmkwVd // PB kakerla (k kak@l'a // PB @@ -5135,16 +5371,20 @@ _sport) iv 'iv l l ll l _a) llende lj'End3 // PB name + a) lli (er lj // PB allieret + a) li (e lj // PB italiener TEST // PB nouns in da_list with final -log - stressed o // A lot of these can have a stressed i added (-gi rule in group g) &) log ($p_alt l'o // nekrolog (silent g) // not a silent g followed by i &) log (i$p_alt log' // mytologi + &) log (isk$p_alt l'o // psykologisk // PB nouns in da_list with final -let - stressed e - &) let ($p_alt l'Et // amulet - &) let (t$p_alt l'E // avoid double t - toilettet + &) let ($p_alt l'?Et // amulet + &) lett ($p_alt l'?Et // amuletter + &) let (t$p_alt l'?E // avoid double t - toilettet cabrio) let l'E // PB silent t fiskefi) let le // PB silent t søtungefi) let le // PB silent t @@ -5169,7 +5409,7 @@ hestefi) let le // PB silent t se) lve lv3 // PB selve, selvet bo) ld ld so) ld (at ld - leg (_ laj // PB leg, kysseleg, ligbleg + leg (_ laI // PB leg, kysseleg, ligbleg leger (_ lajV // PB leger lege (ring leg'e // PB stressed _o) leg lEg // PB name @@ -5218,8 +5458,8 @@ hestefi) let le // PB silent t // m (A m gour) mand %mAN // PB gourmand _gour) mand m''AN // PB gourment - _) mannequin m&n@k'EN // PB - mannequin m&n@kEN // PB + _) mannequin m&n@-k'EN // PB + mannequin m&n@-kEN // PB _) mere (_ mer // PB mere matine m&tin'e // PB _) meget (_ ma:j@D // PB meget @@ -5369,15 +5609,19 @@ _harmo) nika =nik& // PB stressed o &) n (er$p_alt+ =n // italiener, amerikaner &) n (sk$p_alt =n // italiensk, amerikansk &) n (istan$p_alt =n // Afghanistan +ceremo) n (i n /// PB not a -ner word -// PB general rule: nk = [N] before t +// PB General rule: N after ko before k + ko) n (k N // PB konkurrence, konkret + +// PB general rule: nk = [N] nk (t N // adjunkt, sankt nk (tio nk // PB funktionel ka) n_ // silent n - kan ræso) nn n // PB ræsonnement A) nn n // PB venner, denne gra) n n // PB grannål 2 * n - @) nien =ni3-n // PB Albanien, Rumænien - stress on previous syllable + @) nien =ni@-n // PB Albanien, Rumænien - stress on previous syllable @) nier =niV // PB armenier - stress on previous syllable newton nj'u:t@n nylon najlVn @@ -5434,6 +5678,7 @@ glissa) nd (o =nd // PB ke) nd (is nd // PB pa) nd (a nd // PB ro) nd (el nd // PB rondel +salama) nd nd // salamander mu) nd (ering nd // PB ska) nd (inav nd // PB ge) nd (an nd // PB gendanne @@ -5468,7 +5713,8 @@ glissa) nd (o =nd // PB norma) nd (i nd' // PB Normandiet sa) nde (lig n3 // PB A) nd (re nd // PB mindre, andre - _i) nd (ret n // PB + _i) nd (++ n // PB indret, indregistrere + i) nd (ivid nd // PB individualist ply) nd (r n // PB plyndre, plyndring sta) nd (+ n // PB opstandelse ba) nd (emedlem nd // PB @@ -5567,21 +5813,23 @@ subtrahe) nd nd ba) nd (er n? ba) nd (ens nd // PB ba) nd (erne nd // PB -_en_ba) nd (e nd // PB -_den_ba) nd (e nd // PB - ba) nd (ekri nd // PB -krig, -kriminalitet, -kriger - ba) nd (euvæsen nd // PB - ba) nd (ero nd // PB banderole - ba) nde (leder+ nd3 // PB - ba) nde (medlem nd3 // PB - ba) nde (opgør nd3 // PB -tyveba) nde nd3 // PB -røverba) nde nd3 // PB -bjørneba) nde nd3 // PB -min_ba) nde nd3 // PB -din_ba) nde nd3 // PB -hele_ba) nde nd3 // PB hele banden -res_ba) nde nd3 // PB vores/jeres/deres bande +_en_ba) nde nd@- // PB +_den_ba) nde nd@- // PB + ba) nde (kri nd@- // PB -krig, -kriminalitet, -kriger + ba) nde (uvæsen nd@- // PB + ba) nde (ro nd@-' // PB banderole + ba) nde (leder+ nd@- // PB + ba) nde (medlem nd@- // PB + ba) nde (opgør nd@- // PB + ba) nde (vold nd@- // PB +tyveba) nde nd@- // PB +røverba) nde nd@- // PB +bjørneba) nde nd@- // PB +min_ba) nde nd@- // PB +din_ba) nde nd@- // PB +hele_ba) nde nd@- // PB hele banden +res_ba) nde nd@- // PB vores/jeres/deres bande + s_ba) nde nd@- // PB Johns bande forba) nd (er n // PB jeg_ba) nd (er n // PB du_ba) nd (er n // PB @@ -5605,7 +5853,8 @@ _man_ba) nd (er n // PB .group ng ng N // general rule - ting, ring - + ora) ng (u =Ng // PB stressed previous vowel + ng (ænger ng // PB søvngænger kæ) ng (uru ng // PB nger (rig ngEr // PB hævngerrig morge) ng (ry ng // PB @@ -5652,14 +5901,26 @@ _man_ba) nd (er n // PB .group o o o + +// PB Short o followed by double consonant + r) o (C%++ ?V // PB droppe, kroppe, skrotte + o (ld+ ?V // PB hold, holde + o (mm+ ?V // PB komme, omme + +_noget_r) o (s_ ?V // PB + +// PB long o because of the a? + s) o (fa o: + oo u: // PB English words like 'pool' + C) oog oV // PB toogtyve b) oogie ugi // PB boogie-woogie w) oogie ugi // PB w) oo u // PB Hollywood oonagh un& // PB name - shamp) oo o // PB + shamp) oo ?o // PB nark) o o // PB narkoopgør - hall) o 'o // PB stressed + hall) o '?o // PB stressed ky) o (to 'o // PB stressed br) ooke uk // PB name f) ood u:d // PB @@ -5674,7 +5935,8 @@ _man_ba) nd (er n // PB h) ood u:d // PB Robin Hood dan) ois w'A // PB granddanois g) oebbels Wb@ls // PB name - m) o (nste V // PB monster + m) o (nste ?V // PB monster + t) o (rna ?V // PB tornado // PB final -skop - stressed o &sk) op ($p_alt++ 'op // gyroskop @@ -5689,6 +5951,9 @@ _man_ba) nd (er n // PB &) ose ($p_alt+ 'o:s@ // hypnose &) ose+ (r$p_alt 'o:sV // hypnoser +// PB final -isk: long o (ph_danish shortens the o) + o (tisk o: // PB gotisk, laotisk + // PB final -ode - stressed o di) o (de 'o elektr) o (de 'o @@ -5701,17 +5966,17 @@ elektr) o (de 'o // PB general rule c/k + o + n + consonant = [V] L10) o (nC V // PB konvoj, conga - L10) o (nCa o // PB kontakt + L10) o (nCL11 0 // PB kontakt, koncert sek) ond (løjtnant 'ond // PB // PB general rule consonant + o + double consonant: [V] - C) o (L03%+ V skodde, rolle, lodder - C) o (L03%a o rollator + C) o (L03%+ V // skodde, rolle, lodder + r) o (L03%a++ o // rollator bl) od oD // PB bloddonor - h) o (ll+ V // PB Holland + h) o (lla+ V // PB Holland C) o (rr V // PB korrekt + gon) o (rr o // PB gonnorré L06) o (t V // PB pot - L06) o (tL11 o // PB pote, botaniker - r) o (C%++ V // PB droppe, kroppe, skrotte +// L06) o (tL11 o // PB pote, botaniker tr) o (ssætning o // PB tr) o (ts V // PB trotskist _r) oll (_+ Owl // PB rock and roll @@ -5722,23 +5987,22 @@ elektr) o (de 'o foxtr) o (t V // PB ren) omme (+ om'e // PB ren) ommé (+ om'e // PB - C) o (C%et_++ V // PB jokket + C) o (C%et_++ ?V // PB jokket, rosset C) o (bber_++ V // PB snobber -// C) o (L02%L04++ V // PB koffein gr) o (ssi+ o // PB grossist fr) o (ss++ o // PB frosset, frossen fr) otte (++ ot'e // PB frottehåndklæde - stressed - m) o (sset++ o // PB + m) o (sse+++ ?O // PB mosset, rødmossede k) ommers (_ om'Ers // PB stressed ap) o (llo++ 'V // PB stressed - k) o (mmerciel++ o // PB kommerciel + k) o (mmerciel++ ?o // PB kommerciel n) o (nC V // PB nonsens C) o (L09n V // PB velkomne, nonne // PB general rule k + o + double consonant + front vowel: [o] // Some people pronounce it [V] k) o (C%L04++ o // PB korridor, korrupt, kollegium, kommode - L08) o (tt V // PB skotte, spotte + L08) o (tt ?V // PB skotte, spotte // r) o (tt+ V // PB rotte, skrotte k) o (mmentA+++ o // PB kommentar, kommentere @@ -5781,8 +6045,10 @@ elektr) o (de 'o // PB general rule consonant + o + velars: V C) o (L01+ V // PB fjong, jogge, knokle -// PB short O - glottal stop - C) o (g+ ?O // PB noget, bogmærke, bedrog, krog, tog (verb "took", noun "train") + C) o (g+ O // PB bogmærke, bedrog, krog, tog (verb "took", noun "train") + C) o (gA+ O // PB toge + + n) oge (n o@- // PN nogensinde d) og (+ Vw // PB dogme d) og (e oS // PB doge @@ -5817,36 +6083,38 @@ elektr) o =o // PB elektrokromatisk bl) og Vg // PB (we)blog C) o (gg+ V // PB jogging van_g) ogh Vk // PB name - j) o (L01%L11 V // PB jogge, jokke - l) o (L01%L11 V // PB logge, lokke - k) o (gt+ V // PB kogte - og (firs V // PB enogfirs + j) o (L01%L11 ?V // PB jogge, jokke + l) o (L01%L11 ?V // PB logge, lokke + k) o (gt+ ?V // PB kogte + og (firs ?V // PB enogfirs sl) o (g o // PB foreslog - dag) o (g o // PB pædagog + dag) o (g ?o // PB pædagog o (kaC o // PB pokal, advokat l) o (kum o // PB // PB general rule sp/st/sk + o + t: V - L08) o (t V // PB spotte, skotte +// L08) o (t V // PB spotte, skotte L08r) o (t V // PB skrot + o (tL11++ o // PB skrote, blote, pote, botaniker L08r) o (tL04 o // PB skrotum _mask) o (t 'V // PB stressed L08) o (tL04 o // PB followed by front vowel: o - skotøj disk) o o // PB diskotek kach) o (t 'V // PB -// PB general rule o + front consonant: [V] +// PB general rule o + frontal consonant: [V] o (L03K+ V // PB Olga, Volga, vold, vod, od, volt, polstre + s) o (d+ o // PB sod, løbesod o (lsen o // PB name k) o (d+ o // PB omkodning gaj) o (l 'o // PB candy symb) o (l o // PB sexsymbol bornh) o (lm 'V // PB L08) o (l+ o // PB skole, spole, spol + L08) o (len ?o // PB skolen - short o t) o (lk V // PB mistolke - p) o (l o // PB nordpolen + p) o (l ?o // PB nordpolen, politi p) o (l_ o // PB - o (lde V // PB tipoldefar p) o (lsk o // PB polsk p) o (lt V // PB polterabend @) o (lsk 'o // PB katolsk, symbolsk @@ -5872,6 +6140,8 @@ trak_l) o (d // PB forl) o (ds V // PP g) o (d+ o // PB g) o (dt+ V // PB + sk) o (t V // PB Skotland + sk) o (tøj ?o // PB g) odfather VdfADV // PB b) o (d+ o // PB isbod camb) o (dj 'o // PB Cambodja @@ -5898,6 +6168,7 @@ trak_l) o (d // PB // PB general rule o + p/b: [V] o (L06+ V // PB op, opdrage, obstruere +kommand) o o // PB kommandobroen s) ophia of'i& // PB name o (pposit o // PB opposition o (L06L11+ o // PB oktober, global, Robert, oberst @@ -5947,6 +6218,7 @@ trak_l) o (d // PB L08) o (f V // PB stof kask) o o // PB kaskoforsikring tr) o (CL04 o // PB antropolog, tropisk, troperne + fortr) o (lig ?o // PB _) o (mC ''V // PB omgang, omformulere _) o (mar V // PB omarrangere, omarbejde o (madresse V // PB omadressere @@ -5958,6 +6230,7 @@ trak_l) o (d // PB o (mk V // PB deromkring k) o (nC V // PB konfirmand, konfekt, konkurrence C) o (sCL11+ V // PB fosfat, koster, moster, foster, floskel + fr) o (sne o // PB fastfrosne tr) o (sretning o // PB tr) o (sbekend o // PB trosbekendelse tr) o (ssag o // PB @@ -5970,6 +6243,7 @@ trak_l) o (d // PB k) o (steskab o // PB k) osh (er+ oS // PB kr) o (s o // PB krostue + kr) o (snak o // PB hydr) o o // PB hydrostatisk test) o (steron o // PB rekogn) o (scere o // PB @@ -6065,7 +6339,8 @@ helsek) o (st V // PB omko (st VmkV // PB omkostninger, leveomkostninger k) otele (t Vt@l'E // PB svinekotelet boyk) o (t V // PB boycotte - h) o (st++ o // PB host + h) o (st++ ?o // PB host + h) o (ste++ o // PB hoste fC) o (t V // PB flot, fjot fC) o (tL04 o // PB flotille @@ -6081,12 +6356,12 @@ helsek) o (st V // PB osborne Vsb,On // PB name _b) o (nd_ V // PB Bond Street k) oor (d oV:? // PB koordinat - _biot) o (p 'o // PB stressed - _isot) o (p 'o // PB stressed -antibi) o (tik 'o // PB antibiotika + _biot) o (p '?o // PB stressed + _isot) o (p '?o // PB stressed +antibi) o (tik '?o // PB antibiotika lak) o (ta 'o // PB stressed - _morm) o (n 'o // PB stressed - _dæm) o (n 'o // PB stressed + _morm) o (n '?o // PB stressed + _dæm) o (n '?o // PB stressed _matr) o (ne 'o // PB stressed _silik) o (ne 'o // PB stressed _acet) o (ne 'o // PB stressed @@ -6097,36 +6372,36 @@ _cicer) o (ne 'o // PB stressed _anem) o (ne 'o // PB stressed _sign) o (r 'o // PB signora _anekd) o (t 'o // PB anekdote, anekdotisk -_abrik) o (s 'o // PB stressed -art_dec) o 'o // PB - o (pofre V // PB - f) o (nt V // PB døbefont, fontæne +_abrik) o (s '?o // PB stressed +art_dec) o '?o // PB + o (pofre ?V // PB + f) o (nt ?V // PB døbefont, fontæne ann) on (cA VN // PB annonce, annoncør - stressed by $alt list - radi) o o // PB radiobil + radi) o ?o // PB radiobil f) o (b o // PB fobi _antil) o (pe 'o // PB stressed - _t) o (bak o' // PB tobak - vide) o o // PB videobånd + _t) o (bak ?o' // PB tobak + vide) o ?o // PB videobånd h) o (lding Ou // PB holdingselskab - br) occ (oli Vk // PB + br) occ (oli ?Vk // PB ma) o (+ o // PB Mao, Maos maosko - helik) opter 'VptV // PB stressed - helikopter + helik) opter '?VptV // PB stressed - helikopter _eur) o (pa 'o // PB stressed -_eskim) o 'o // PB stressed - _resp) o (ns 'V // PB stressed - _dep) o (t 'o // PB stressed - al) o (ha 'o // PB stressed - dep) o (t o // PB - kont) o (r 'o // PB kontor - stressed -korrid) o (r 'o // PB -labrad) o (r 'V // PB +_eskim) o '?o // PB stressed + _resp) o (ns '?V // PB stressed + _dep) o (t '?o // PB stressed + al) o (ha '?o // PB stressed + dep) o (t '?o // PB + kont) o (r '?o // PB kontor - stressed +korrid) o (r '?o // PB +labrad) o (r '?V // PB don) or V // PB - mete) o (r 'o // PB - matad) o (r 'o // PN + mete) o (r '?o // PB + matad) o (r '?o // PN sam) o (a 'o // PB -katastr) ofe 'o:f3 // PB katastrofe -katastr) ofer 'o:fV // PB katastrofer +katastr) ofe 'of3 // PB katastrofe +katastr) ofer 'ofV // PB katastrofer lit) o (te 'o: // PB stressed en) o (rm+ 'V // PB stressed abn) o (rm 'V // PB stressed @@ -6135,17 +6410,17 @@ klorof) o (rm 'V // PB stressed konf) o (rm 'V // PB stressed ref) o (rm 'V // PB stressed unif) o (rm 'V // PB stressed - _rev) o (lv 'V // PB stressed - revolver - _kart) o (f 'V // PB stressed - kartofler - am) o (k 'V // PB amok - mon) o (k 'V // PB monokel - stressed - konv) oj 'Vj // PB stressed -mening) oko (k ok'V // PB meningokokker - hypok) ond (er 'Vnd // PB + _rev) o (lv '?V // PB stressed - revolver + _kart) o (f '?V // PB stressed - kartofler + am) o (k '?V // PB amok + mon) o (k '?V // PB monokel - stressed + konv) oj '?Vj // PB stressed +mening) oko (k ok'?V // PB meningokokker + hypok) ond (er '?Vnd // PB h) o (ck+ V // PB hockey -_horis) o (n 'V // PB horisont - _kan) o (n 'o // PB stressed - kan) o (n o // PB not stressed after a syllable +_horis) o (n '?V // PB horisont + _kan) o (n '?o // PB stressed + kan) o (n ?o // PB not stressed after a syllable bistr) o 'o // PB stressed o in 'bistro' trik) ot 'o // PB stressed, silent t er) o (b 'o // PB erobre - stressed o @@ -6191,19 +6466,20 @@ _paran) oia 'Vj& // PB stressed og (tredive V // PB fireogtredive hvalr) o (s V // PB _) obo ob'o // PB - org (+ V:w // PB sorg, morgen, Norge + org (+ O:w // PB sorg, morgen, Norge org (el O:w // PB orgelet org (i V:g // PB georgisk org (ie Vg // PB ge) org (ine og // PB o (rga+ V // PB organ r) or (g oR // PB rorgænger - ov (e+ Vu // PB over, oven, sove + ov (e+ Ow // PB over, oven, sove h) o (vere o // PB ren) ov (er ov // PB renovering - ov (n Vw // PB brændeovn - ov (re Vu // PB derovre - C) ov (+ Vw // PB sjov, lov, skov, plov, provst + ov (n Ow // PB brændeovn + ov (re Ou // PB derovre + C) ov (+ Ow // PB sjov, lov, skov, plov, provst + j) ov (ist ov' // PB jovist t) ov (ør ov // PB tatovør n) ov (icA ov // PB novice, noviciat sl) ov (ak ov' // PB @@ -6272,37 +6548,43 @@ artisk) o (k 'V // PB stressed l) o (gbog Vg // PB l) ov (e+ ou // PB love l) ov (en++ Ov // PB lovende - ov (ers++ Vw // PB tilovers + ov (ers++ Ow // PB tilovers, overstå kontr) ov (ers ov // PB kontroversiel pl) ov (++ Vw // PB sneplove l) ondon VndVn // PB London bl) ond Vnd //PB Keep the d - blondine, blonde - k) ors V:s // PB kors, korsage - et_k) orset Vs'Et // PB - k) orsett Vs'Et // PB korsettet, korsetter - c) o (rs V // PB corsage - k) o (gl+ V // PB kogle, kogleri + bl) ond (e Vn // PB den blonde pige - problem with noun [blVnd3] + bl) ond (en_ Vnd // PN noun with d +_en_bl) ond (e_ Vnd // PB noun with d + bl) ond (er Vnd // PB noun with d, plur. + k) ors O:s // PB kors, korsage + k) or (stol o3- // PB + et_k) orset Os'Et // PB + k) orsett Os'Et // PB korsettet, korsetter + c) o (rs O // PB corsage + k) o (gl+ O // PB kogle, kogleri _d) o (n_ V // PB don juan pr) o (vA+ o // PB provokere - h) oved o:@D // PB hoved + h) oved o:@-D // PB hoved kn) o (tn V // PB knotne tr) od (s V // PB silent d - trods kl) od (s V // PB silent d - klods - g) od (s o // PB silent d - gods + g) od (s O // PB silent d - gods tr) o (j+ V // PB trojka, Troja perestr) o (jka 'V // PB stressed tr) o (jan o // PB trojanerne p) olish VliS // PB møbelpolish tr) o (kl V // PB trokle t) or (_ V // PB faktor, rotor - st) or (+ or // PB kæmpestor + st) or (+ o3- // PB kæmpestor, historie t) or (en V // PB faktoren - or (k++ Vr // PB orke, orkester, stork + or (k++ O: // PB orke, morkel, stork + or (kester+ O k) or (kåbe or // PB _st) o (r_ o // PB stor past) or V // PB mot) or V // PB startmotor - t) or (s V // PB torsdag, torsk + t) or (s O // PB torsdag, torsk t) or (ny V // PB tornyster oy (+ 'Vj // PB destroyer, royal, loyal v) oyeur VjW:r // PB @@ -6325,7 +6607,7 @@ perestr) o (jka 'V // PB stressed spr) og ow // PB sprog t) o (gt+ V // PB togt t) og (tur ow // PB - kl) og ow // PB klog, klogt + kl) og (+ Ow // PB klog, klogt kn) og Vu // PB knogle t) oi (l o& // PB toilet repert) oire 'wA: // PB @@ -6359,7 +6641,7 @@ west_p) oint Vjnt // PB pl) o (m+ o // PB plombe, plombere o (m_ V // PB alderdom VERY BROAD - o (sL11 o: // PB rose, skose, pose, prosa + o (sL11 o // PB rose, skose, pose, prosa ou u // PB poussin, toupe miss) ou (ri 'u: // PB stressed f) ourth O:T // PB Fourth Street @@ -6409,7 +6691,7 @@ noblesse_) oblige _^_fr // PB noblesse oblige // PB final -ol words in da_list - stressed o - &) ol ($p_alt++ 'ol // parabol, symbol + &) ol ($p_alt++ '?ol // parabol, symbol mong) oliet ol'i@D // PB &s) ol ($p_alt+ 'Vl // konsol &s) ol (L04$p_alt+ 'ol // konsolidere @@ -6425,17 +6707,17 @@ noblesse_) oblige _^_fr // PB noblesse oblige &st) ol (+$p_alt 'ol // pistol @id) ol ol // PB popidol - L08) o (lC+ V // PB stolt, stolpe + L08) o (lC+ ?V // PB stolt, stolpe - short _g) oldie Ouldi // PB name _g) olden (_ Ould-@n // PB Golden Delicious - L01) o (ld V // PB kold, gold +// L01) o (ld V // PB kold, gold ravi) o (li 'o // PB stressed o rob) o (t++ 'V // PB d) ollar VlV // PB dollar - only this word plus compounds like 'dollargrin' - s) o (l+ o // PB sol, soldat + s) o (l+ ?o // PB sol, soldat s) o (llys++ o // PB - o (ld_ V // PB nathold, skjold - o (lde_ V // PB skjolde, solde +// o (ld_ V // PB nathold, skjold +// o (lde_ V // PB skjolde, solde is) olde 'Vld3 // PB name s) olgt Vlt // PB solgt - exception kontr) o (l V // PB billetkontrol @@ -6461,20 +6743,20 @@ noblesse_) oblige _^_fr // PB noblesse oblige // PB stressed o in words ending with -ion/-on - around 750 $alt words in da_list // Words from Latin, French and other languages - @) on ($p_alt+++ 'on // aktion, tyfon, person, mission + @) on ($p_alt+++ '?on // aktion, tyfon, person, mission &) 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 - &if) on ($p_alt 'VN // sifon - &lef) on ($p_alt 'on // telefon - &of) on ($p_alt 'on // grammofom - &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 - &el) on ($p_alt 'on // melon - &) on (el$p_alt on // rationel + &c) on ($p_alt++ '?VN // facon + &t) on ($p_alt '?VN // beton, futon + &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 + &el) on ($p_alt '?on // melon + &) on (el$p_alt++ on // rationel // PB exceptions to the -on rule (and other -on exception) stadi) on Vn @@ -6544,57 +6826,64 @@ robins) on Vn // PB name alv) or V // PB alvor // or (L04+ or // PB favorit - or (ient Vr // PB venstreorienterede + or (ienter Vr // PB venstreorienterede v) or (L11+ or // PB favorabel - f) or V // PB derfor + v) or (_ O // PB + f) or (_ V // PB for + derf) or V // PB derfor tayl) or V // PB name helsingf) or (s 'V // PB stressed - f) or (en V // PB fagforening + f) or (en O // PB fagforening _f) or (_vild_ %or // PB verb sekt) or V // PB sektoren k) or (t O: // PB kort k) or (tA O: // PB korte + t) or (L06 O // PB torpedere or (to Vr // PB ortodoks - m) orge V:3 // PB morgen + m) orge O:@- // PB morgen dek) or (_ 'V:r // PB dekor - rapp) or (t 'V: // PB rapport - f) or (t V:? // PB fort - _komf) or (t 'V:? // PB stressed - m) or (f V: // PB morfar - m) or (m V: // PB mormor, mormon - m) or (se V: // PB morse + rapp) or (t 'O: // PB rapport + f) or (t_ O: // PB fort + f) ort (sæt O:d // PB fortsæt + _komf) or (t 'O: // PB stressed + m) or (f O: // PB morfar + m) or (m O: // PB mormor, mormon + m) or (se O: // PB morse hum) or V // PB - sp) or (t V: // PB sport - eksp) or (t 'V: // PB + sp) or (t O: // PB sport + eksp) or (t 'O: // PB s) or (t or // PB sort st) or (t or // PB stort sv) or (e+ or // PB svoret _) or (i V // PB orientere _) or (a or // PB orange orm orm // PB - _h) ormon Vrm'on // PB - n) or (m Vr // PB + f) or (m_ O: // PB form + f) or (mC O: // PB formgive + f) or (me O: // PB forme + f) or (mere V // PB formere + _h) ormon Om'on // PB + n) or (m O // PB st) or (m O: // PB - b) or (t O // PB bortforklare - _ab) or (t 'Vr // PB stressed + b) or (t O: // PB bortforklare + _ab) or 'O:d // PB stressed or (al oR // PB oral _esk) or (te 'V: // PB eskorte _n) or (d or // PB nord, nordisk - n) or (sk Vr // PB norsk - v) or (e+ V: // PB vores - hv) or V // PB hvorfra, hvorved - rek) or (d 'V: // PB exception - stressed o in 'rekord' - ak) or (d 'V: // PB exception - stressed o in 'akord' - or (den Or // PB orden, torden + n) or (sk O: // PB norsk + v) or (e+ O: // PB vores + hv) or ?O // PB hvorfra, hvorved + rek) or (d 'O: // PB exception - stressed o in 'rekord' + ak) or (d 'O: // PB exception - stressed o in 'akord' s) or (te or // PB sorte rep) or (ter 'V // PB stressed o s) or (tA O // PB sortiment -_transp) or (t 'V: // PB stressed - transport +_transp) or (t 'O: // PB stressed - transport n) orth V:T // PB rekt) or V // PB rektorforening // PB when "ord" means 'word', the d isn't pronunced - ord (++ oR // PB ord , forord + ord (++ or // PB ord , forord // PB Exceptions to the or rule - "ord" doesn't mean "word" k) ord (el Vrd // PB kordel v) ord (e Vrd // PB helliget vorde dit navn @@ -6602,7 +6891,7 @@ _transp) or (t 'V: // PB stressed - transport b) ordeaux oRd'o // PB conc) ord (e 'V:d // PB Concorde g) ord (on V:d // PB name - n) ordi (sk oRdi // PB + n) ordisk ordisg // PB _l) ord (_ V:d // PB _l) ord (er_ Vrd // PB _akk) ord 'V:?d // PB stressed @@ -6613,29 +6902,29 @@ _transp) or (t 'V: // PB stressed - transport f) ord (æ Vd' // PB fordærve f) ord (ø Vd' // PB fordømme v) ord (i 'Vrd // PB gernvordighed - ord (en+ Vrd // PB orden, ordensmagt + ord (en+ O:d // PB orden, ordensmagt b) orde (nde orE // PB ord (ene+ oR // PB ordene - ord (enen+ Vrd // PB ordenen + ord (enen+ O:d // PB ordenen t) ord (enen+ ord // PB tordenen _t) ord (++ ord // PB torden, tordne j) ord (en oV // PB fjorden jorden j) ord (an oRd // PB Jordan j) ord (i oRd // PB jordisk - ord (entlig+ 'Vrd // PB overordentlig - stressed - ord (ne+ Vrd // PB ordne - ord (nin 'Vrd // PB ordning, forordning - or (dre+ Vr // PB ordre, ordrebog + ord (entlig+ 'O:d // PB overordentlig - stressed + ord (ne+ O:d // PB ordne + ord (nin 'O:d // PB ordning, forordning + ordre (+ O:drV // PB ordre, ordrebog k) ord (reng ord // PB kordrenge _) ord (ret+ or // PB ordret - ord (retil+ Vrd // PB ordretilgang - ord (ruk Vrd' // PB fordrukken + ord (retil+ Ord // PB ordretilgang + ord (ruk Vd' // PB fordrukken ord (in+ Vrd // PB ordinær b) ord (el Vrd' // PB bordel - v) or (t O // PB vorte + v) or (t O: // PB vorte ordonnans Vrdon'&ns // PB ordonnans ordrup ordr0b // PB Ordrup - Danish town - C) ore (_ o:V // PB more, store +// C) ore (_ o:V // PB more, store b) ore oV // PB borerum m) orel or'&#l // PB morel _) orleans V:lens // PB New Orleans @@ -6657,256 +6946,261 @@ _transp) or (t 'V: // PB stressed - transport // PB no stress on initial 'for' - 1.550 words. // Secondary stress on the next syllable after a syllable. _f) or (@++ %V // PB fork'ølet, fordr'ev +// _f) or (mL11++ %V // PB formane, formaning, formene f) or (@ V, // PB s'ommerfork,ølet + _f) ore (g++ O:O // PB foregå, foregive // exceptions to initial 'for' below - 'for' means "front/fore" - _f) or (a_+ 'V // PB fora (plur. of 'forum') - _f) or (an_+ 'V // PB foran - _f) or (ude_+ 'V // PB forude - _f) or (ankørende+ 'V // PB forankørende - _f) or (annævnt+ 'V // PB forannævnt - _f) or (ansat+ 'V // PB foransat - _f) or (anstille+ 'V // PB foranstillet - _f) or (anstående+ 'V // PB foranstående - _f) or (ben_+ 'V // PB forben - _f) or (bens+ 'V // PB forbens - _f) or (benene+ 'V // PB forbenene - _f) or (behand+ 'V // PB forbehandle - _f) or (beho+ 'V // PB forbehold - _f) or (bered+ 'V // PB forberede - _f) or (bil+ 'V // PB forbillede - _f) or (bjerg+ 'V // PB forbjerg - _f) or (bogstav+ 'V // PB forbogstav - _f) or (bud_+ 'V // PB forbud - _f) or (buds+ 'V // PB forbudstiden - _f) or (bund+ 'V // PB forbund - _f) or (bøn+ 'V // PB forbøn - _f) or (censur+ 'V // PB forcensur - _f) or (danser+ 'V // PB fordanser - _f) or (del_+ 'V // PB fordel - _f) or (delen_+ 'V // PB fordelen - _f) or (dom+ 'V // PB fordom - _f) or (dring+ 'V // PB fordring, fordringdfri - _f) or (dæk_+ 'V // PB fordæk - _f) or (dæks+ 'V // PB fordæks - _f) or (dækkene+ 'V // PB fordækkene + _f) or (a_+ 'O: // PB fora (plur. of 'forum') + _f) or (an_+ 'O: // PB foran + _f) or (ude_+ 'O: // PB forude + _f) or (ankørende+ 'O: // PB forankørende + _f) or (annævnt+ 'O: // PB forannævnt + _f) or (ansat+ 'O: // PB foransat + _f) or (anstille+ 'O: // PB foranstillet + _f) or (anstående+ 'O: // PB foranstående + _f) or (ben_+ 'O: // PB forben + _f) or (bens+ 'O: // PB forbens + _f) or (benene+ 'O: // PB forbenene + _f) or (behand+ 'O: // PB forbehandle + _f) or (beho+ 'O: // PB forbehold + _f) or (bered+ 'O: // PB forberede + _f) or (bil+ 'O: // PB forbillede + _f) or (bjerg+ 'O: // PB forbjerg + _f) or (bogstav+ 'O: // PB forbogstav + _f) or (bud_+ 'O: // PB forbud + _f) or (buds+ 'O: // PB forbudstiden + _f) or (bund+ 'O: // PB forbund + _f) or (bøn+ 'O: // PB forbøn + _f) or (censur+ 'O: // PB forcensur + _f) or (danser+ 'O: // PB fordanser + _f) or (del_+ 'O: // PB fordel + _f) or (delen_+ 'O: // PB fordelen + _f) or (dom+ 'O: // PB fordom + _f) or (dring+ 'O: // PB fordring, fordringdfri + _f) or (dæk_+ 'O: // PB fordæk + _f) or (dæks+ 'O: // PB fordæks + _f) or (dækkene+ 'O: // PB fordækkene _f) or (dør+ 'OR // PB - _f) ore (++ '0:3 // PB foreberinge, foregribe + _f) ore (Cr++ '0:3 // PB foreberinge, foregribe _f) ore (l_+ or'&#l // PB _f) ore (lle+ or'&#l // PB foreller (fish) _f) ore (n+ V'e: // PB forene, forening genf) ore (n+ Ve: // PB genforene - f) ore (sC 0:3 // PB middagsforeslag + f) ore (sC+ 0:3 // PB forestiller _f) or (el_+ or // PB forel _f) or (et_+ 'o3 // PB foret _f) or (elsk+ V' // PB forelske - _f) orend (e+ 'V,en // PB forende + _f) orend (e+ 'O:,en // PB forende _f) orenkl (e+ V'enkl // PB forenkle _f) orenkl (ing V'enkl // PB forenkling _f) orensis (k or'&#nsis // PB forensisk _f) oretag (som %V3't&: // PB foretagsom _f) orev (ige V'e:v // PB forevige - _f) or (fader+ 'V // PB forfader - _f) or (far+ 'V // PB forfar - _f) or (fædr+ 'V // PB forfædre - _f) or (gårs+ Vr // PB - f) or (ter+ V // PB plur. - _f) or (fang+ V // PB forfang - _f) or (felt+ V // PB forfelt - _f) or (film+ V // PB forfilm - _f) or (fjor+ V // PB forfjor - _f) or (ford+ V // PB forfordele - _f) or (forfod+ V // PB forfod - _f) or (forstærk+ V // PB forforstærker - _f) or (forsøg+ V // PB forforsøg - _f) or (fra+ 'V // PB forfra + _f) or (fader+ 'O: // PB forfader + _f) or (far+ 'O: // PB forfar + _f) or (fædr+ 'O: // PB forfædre + _f) or (gårs+ O: // PB + f) or (ter+ O // PB plur. + _f) or (fang+ O // PB forfang + _f) or (felt+ O // PB forfelt + _f) or (film+ O // PB forfilm + _f) or (fjor+ O // PB forfjor + _f) or (ford+ O // PB forfordele + _f) or (forfod+ O // PB forfod + _f) or (forstærk+ O // PB forforstærker + _f) or (forsøg+ O // PB forforsøg + _f) or (fra+ 'O: // PB forfra _f) or (foryserum+ V // PB forfryserum - _f) or (fødder+ V // PB forfødder - _f) or (gast+ V // PB forgast - _f) or (gang+ 'V // PB forgang, forgangen - _f) or (gemak+ 'V // PB forgemak - _f) or (grund+ 'V // PB forgrund - _f) or (gænger+ 'V // PB forgænger - _f) or (gære+ 'V // PB forgære - _f) or (gård+ 'V // PB forgård - _f) or (hal+ 'V // PB forhal - f) or (halA++ %V // PB forhale, forhaling - _f) or (ham+ 'V // PB forhammer - _f) or (have+ 'V // PB forhave - _f) or (hen+ 'V // PB forhenværende - _f) or (histo+ 'V // PB forhistorie, forhistorisk - _f) or (hjul+ 'V // PB forhjul, forhjulstrukken - _f) or (hold 'V // PB forhold, forholdsvis + _f) or (fødder+ O // PB forfødder + _f) or (gast+ O // PB forgast + _f) or (gang+ 'O: // PB forgang, forgangen + _f) or (gemak+ 'O: // PB forgemak + _f) or (grund+ 'O: // PB forgrund + _f) or (gænger+ 'O: // PB forgænger + _f) or (gære+ 'O: // PB forgære + _f) or (gård+ 'O: // PB forgård + _f) or (hal+ 'O: // PB forhal + f) or (halA++ %O // PB forhale, forhaling + _f) or (ham+ 'O: // PB forhammer + _f) or (have+ 'O: // PB forhave + _f) or (hen+ 'O: // PB forhenværende + _f) or (histo+ 'O: // PB forhistorie, forhistorisk + _f) or (hjul+ 'O: // PB forhjul, forhjulstrukken + _f) or (hold+ 'O: // PB forhold, forholdsvis _f) or (holde %V // PB forholde sig til - _f) or (holdet+ 'V // PB forholdet - _f) or (hud+ 'V // PB forhud - _f) or (hus+ 'V // PB forhus - _f) or (hæng+ 'V // PB forhæng - _f) or (hånd+ 'V // PB forhånd - _f) or (hånds+ 'V // PB forhåndsindtryk - _f) or (ring_ V: // PB foring - _f) or (ringen V: // PB foringen - _f) or (kammer 'V // PB forkammer - _f) or (kant V // PB forkant - _f) or (karl+ 'V // PB forkarl - _f) or (klog+ 'V // PB forklog, forklogskab - _f) or (klædet+ 'V // PB forklædet - _f) or (kontor+ 'V // PB forkontor - _f) or (krop+ 'V // PB forkrop - _f) or (kvinde+ 'V // PB forkvinde - _f) or (kæmper+ 'V // PB forkæmper - _f) or (kærlighed 'V // PB forkærlighed - _f) or (køb+ 'V // PB forkøbet, forkøbsret - _f) or (kørselsret V // PB forkørselsret - _f) or (lag+ 'V // PB forlag - _f) or (lags+ 'V // PB forlagsret - _f) or (land+ 'V // PB forland - _f) or (lem+ 'V // PB forlem - _f) or (lover+ 'V // PB forlover - _f) or (lyd+ 'V // PB forlyd - _f) or (lydende+ V' - _f) or (lygte+ 'Vr // PB forlygte - _f) or (lys+ 'V // PB forlys + _f) or (holdet+ 'O: // PB forholdet + _f) or (hud+ 'O: // PB forhud + _f) or (hus+ 'O: // PB forhus + _f) or (hæng+ 'O: // PB forhæng + _f) or (hånd+ 'O: // PB forhånd + _f) or (hånds+ 'O: // PB forhåndsindtryk + _f) or (ring_ O: // PB foring + _f) or (ringen O: // PB foringen + _f) or (kammer 'O: // PB forkammer + _f) or (kant+ O': // PB forkant + _f) or (karl+ 'O: // PB forkarl + _f) or (klog+ 'O: // PB forklog, forklogskab + _f) or (klædet+ 'O: // PB forklædet + _f) or (kontor+ 'O: // PB forkontor + _f) or (krop+ 'O: // PB forkrop + _f) or (kvinde+ 'O: // PB forkvinde + _f) or (kæmper+ 'O: // PB forkæmper + _f) or (kærlighed 'O: // PB forkærlighed + _f) or (køb+ 'O: // PB forkøbet, forkøbsret + _f) or (kørselsret O // PB forkørselsret + _f) or (lag+ 'O: // PB forlag + _f) or (lags+ 'O: // PB forlagsret + _f) or (land+ 'O: // PB forland + _f) or (lem+ 'O: // PB forlem + _f) or (lover+ 'O: // PB forlover + _f) or (lyd+ 'O: // PB forlyd + _f) or (lydende+ O' + _f) or (lygte+ 'O: // PB forlygte + _f) or (lys+ 'O: // PB forlys _f) orlyst Vl'Wsd // PB forlyste, forlystelse - _f) or (lægger 'V // PB forlægger - _f) or (læns+ 'V // PB forlæns - _f) or (læse+ 'V // PB forlæse - _f) or (maldehyd+ 'V // PB formaldehyd - _f) or (mand+ 'V // PB formand, formandsskifte - _f) or (mænd+ 'V // PB formænd - _f) or (mbar+ 'V // PB formbar - _f) or (mbrød+ 'V // PB formbrød - _f) or (me++ 'V // PB forme, formel - _f) or (mle+ 'V // PB formlen - _f) or (melig+ 'V // PB formelig - _f) ormer (_+ 'VrmV // PB former - problem with "formér" - _f) or (mfast+ 'Vr // PB formfast - _f) or (mfri+ 'Vr // PB formfri - _f) or (fuldendt+ 'Vr // PB formfuldendt - _f) or (mgiv+ 'Vr // PB formgive - _f) or (middag+ 'Vr // PB formiddag - _f) or (mkage+ 'Vr // PB formkage - _f) or (mlære+ 'Vr // PB formglære - _f) or (mløs+ 'Vr // PB formløs - _f) or (mning+ 'Vr // PB formning - _f) or (mor+ 'Vr // PB formor - like forefather - _f) or (mødre+ 'Vr // PB formødre - _f) or (mpresse+ 'Vr // PB formpresse - _f) or (ms+ 'Vr // PB formsikker, formskære, formsprog, formstof - _f) ormssag+ (K 'Vrm?s,sa // PB formssag - _f) or (mt+ 'Vr // PB formtørre - _f) or (mue+ 'Vr // PB formue, formueskat - _f) or (mynder+ 'Vr // PB formynder, formynderisk - _f) or (mål+ 'Vr // PB formål, formålstjenelig - _f) or (navn+ 'Vr // PB fornavn - _f) or (nem_+ 'Vr // PB fornem - _f) or (nemt_+ 'Vr // PB fornemt - _f) or (omtale+ 'Vr // PB foromtale - _f) or (ord+ 'Vr // PB forord - _f) or (ordn or // PB forordning - _f) or (over+ 'Vr // PB forover - _f) or (panthaver+ 'Vr // PB forpanthaver - _f) or (parti+ 'Vr // PB forparti - _f) or (post+ 'Vr // PB forpost - _f) or (praktik+ 'Vr // PB forpraktik - _f) or (premiere+ 'Vr // PB forpremiere - _f) or (programmere+ 'Vr // PB forprogrammere - _f) or (prøve+ 'Vr // PB forprøve - _f) or (på+ 'Vr // PB forpå - _f) or (rang+ 'Vr // PB forrang - _f) or (rest+ 'Vr // PB forrest - _f) or (ret+ 'Vr // PB forret - _f) or (retni+ Vr // PB forretningsmand - _f) or (rider+ 'Vr // PB forrider - _f) or (rige+ 'Vr // PB forrige - _f) or (rude+ 'Vr // PB forrude - _f) or (råd_+ 'Vr // PB forråd - _f) or (slag+ 'Vr // PB forslag - _f) or (sanger+ 'Vr // PB forsanger - _f) or (sats+ 'Vr // PB forsats, forsatsrude - _f) or (side+ 'Vr // PB forside - _f) or (ske+ 'Vr // PB forske - _f) or (skn+ 'Vr // PB forskning - _f) or (skelli+ %Vr // PB forskellig - _f) or (sker+ 'Vr // PB forsker, forskerby - _f) or (skel_+ 'Vr // PB forskel - _f) or (skelsbehandl+ 'Vr // PB forskelsbehandle, -behandling - _f) or (skelsløs+ 'Vr // PB forskelsløs - _f) or (skol+ 'Vr // PB forskole, forskoling - _f) or (skrift+ 'Vr // PB forskrift - _f) or (skud+ 'Vr // PB forskud - _f) or (skyl+ 'Vr // PB forskyl - _f) or (skyldt+ V' // PB forskyldt - _f) or (skære+ 'Vr // PB forskære, -bræt - _f) or (skærm+ 'Vr // PB forskærm - _f) or (slag_+ 'Vr // PB forslag - _f) or (slags+ 'Vr // PB forslas, -stiller - _f) or (sæde+ 'Vr // PB - _f) or (læbe+ 'Vr // PB forlæbe - _f) or (smag+ 'Vr // PB forsmag - _f) or (sommer+ 'Vr // PB forsommer - _f) or (sorg+ 'Vr // PB forsorg - _f) or (spand+ 'Vr // PB forspand - _f) or (spil_+ 'Vr // PB forspil - _f) or (spillet+ 'Vr // PB forspillet - _f) or (spillene+ 'Vr // PB forspillene - _f) or (spir+ 'Vr // PB forspire - _f) or (spring+ 'Vr // PB forspring - _f) or (spændt+ 'Vr // PB forspændt - _f) or (stad+ 'Vr // PB forstad, forstadium - _f) or (stæder+ 'Vr - _f) or (stander+ 'Vr // PB forstander - _f) or (stavelse+ 'Vr // PB forstavelse - _f) or (stavn+ 'Vr // PB forstavn - _f) or (stbotanik+ 'Vr // PB forstbotanik - _f) or (stkandidat+ 'Vr // PB forstkandidat - _f) or (stlig+ 'Vr // PB forstlig - _f) or (stmand+ 'Vr // PB forstmand - _f) or (stmæssig+ 'Vr // PB forstmæssig - _f) or (studie+ 'Vr // PB forstudie - _f) or (studium+ 'Vr // PB forstudum - _f) or (stue+ 'Vr // PB forstue - _f) or (stvæsen+ 'Vr // PB forstvæsen - _f) or (stzoologi+ 'Vr // PB forstzoologi - _f) or (stævn+ 'Vr // PB forstævn - _f) or (svar_+ 'Vr // PB forsvar - _f) or (svarer+ 'Vr // PB forsvarer - _f) or (svars+ 'Vr // PB forsvars chef - _f) or (sæt+ 'Vr // PB forsæt - _f) or (så_+ 'Vr // PB forså - _f) ortaler+ 'Vrt&lV // PB fortaler - _f) or (tand+ 'Vr // PB fortand - _f) or (tands+ 'Vr // PB fortands - _f) or (tænder+ 'Vr // PB fortænder - _f) or (tegn_+ 'Vr // PB fortegn - _f) or (tegningsret+ 'Vr // PB fortegningsret - _f) or (tekst+ 'Vr // PB fortekst - _f) or (telt+ 'Vr // PB fortelt - _f) or (tfarende+ 'Vr // PB fortfarende + _f) or (lægger 'O: // PB forlægger + _f) or (læns+ 'O: // PB forlæns + _f) or (læse+ 'O: // PB forlæse + _f) or (maldehyd+ 'O: // PB formaldehyd + _f) or (mand+ 'O: // PB formand, formandsskifte + _f) or (mænd+ 'O: // PB formænd + _f) or (mbar+ 'O: // PB formbar + _f) or (mbrød+ 'O: // PB formbrød + _f) or (me++ 'O: // PB forme, formel + _f) or (mere++ V // PB formere + _f) or (meri++ V // PB formering + _f) or (mle+ 'O: // PB formlen + _f) or (melig+ 'O: // PB formelig + _f) ormer (_+ 'O::mV // PB former - problem with "formér" + _f) or (mfast+ 'O:: // PB formfast + _f) or (mfri+ 'O:: // PB formfri + _f) or (fuldendt+ 'O:: // PB formfuldendt + _f) or (mgiv+ 'O:: // PB formgive + _f) or (middag+ 'O:: // PB formiddag + _f) or (mkage+ 'O:: // PB formkage + _f) or (mlære+ 'O:: // PB formglære + _f) or (mløs+ 'O:: // PB formløs + _f) or (mning+ 'O:: // PB formning + _f) or (mor+ 'O:: // PB formor - like forefather + _f) or (mødre+ 'O:: // PB formødre + _f) or (mpresse+ 'O:: // PB formpresse + _f) or (ms+ 'O: // PB formsikker, formskære, formsprog, formstof + _f) ormssag (+ 'O:ms,s& // PB formssag + _f) or (mtø+ 'O: // PB formtørre + _f) or (mue+ 'O: // PB formue, formueskat + _f) or (mynder+ 'O: // PB formynder, formynderisk + _f) or (mål+ 'O: // PB formål, formålstjenelig + _f) or (navn+ 'O: // PB fornavn + _f) or (nem_+ 'O: // PB fornem + _f) or (nemt_+ 'O: // PB fornemt + _f) or (omtale+ 'O: // PB foromtale + _f) or (ord+ 'O: // PB forord + _f) or (ordn O // PB forordning + _f) or (over+ 'O: // PB forover + _f) or (panthaver+ 'O: // PB forpanthaver + _f) or (parti+ 'O: // PB forparti + _f) or (post+ 'O: // PB forpost + _f) or (praktik+ 'O: // PB forpraktik + _f) or (premiere+ 'O: // PB forpremiere + _f) or (programmere+ 'O: // PB forprogrammere + _f) or (prøve+ 'O: // PB forprøve + _f) or (på+ 'O: // PB forpå + _f) or (rang+ 'O: // PB forrang + _f) or (rest+ 'O: // PB forrest + _f) or (ret+ 'O: // PB forret + _f) or (rette+ V' // PB forrette + _f) or (retni+ V // PB forretningsmand + _f) or (rider+ 'O: // PB forrider + _f) or (rige+ 'O: // PB forrige + _f) or (rude+ 'O: // PB forrude + _f) or (råd_+ 'O: // PB forråd + _f) or (slag+ 'O: // PB forslag + _f) or (sanger+ 'O: // PB forsanger + _f) or (sats+ 'O: // PB forsats, forsatsrude + _f) or (side+ 'O: // PB forside + _f) or (ske+ 'O: // PB forske + _f) or (skn+ 'O: // PB forskning + _f) or (skelli+ %O // PB forskellig + _f) or (sker+ 'O: // PB forsker, forskerby + _f) or (skel_+ 'O: // PB forskel + _f) or (skelsbehandl+ 'O: // PB forskelsbehandle, -behandling + _f) or (skelsløs+ 'O: // PB forskelsløs + _f) or (skol+ 'O: // PB forskole, forskoling + _f) or (skrift+ 'O: // PB forskrift + _f) or (skud+ 'O: // PB forskud + _f) or (skyl+ 'O: // PB forskyl + _f) or (skyldt+ O' // PB forskyldt + _f) or (skære+ 'O: // PB forskære, -bræt + _f) or (skærm+ 'O: // PB forskærm + _f) or (slag_+ 'O: // PB forslag + _f) or (slags+ 'O: // PB forslas, -stiller + _f) or (sæde+ 'O: // PB + _f) or (læbe+ 'O: // PB forlæbe + _f) or (smag+ 'O: // PB forsmag + _f) or (sommer+ 'O: // PB forsommer + _f) or (sorg+ 'O: // PB forsorg + _f) or (spand+ 'O: // PB forspand + _f) or (spil_+ 'O: // PB forspil + _f) or (spillet+ 'O: // PB forspillet + _f) or (spillene+ 'O: // PB forspillene + _f) or (spir+ 'O: // PB forspire + _f) or (spring+ 'O: // PB forspring + _f) or (spændt+ 'O: // PB forspændt + _f) or (stad+ 'O: // PB forstad, forstadium + _f) or (stæder+ 'O: + _f) or (stander+ 'O: // PB forstander + _f) or (stavelse+ 'O: // PB forstavelse + _f) or (stavn+ 'O: // PB forstavn + _f) or (stbotanik+ 'O: // PB forstbotanik + _f) or (stkandidat+ 'O: // PB forstkandidat + _f) or (stlig+ 'O: // PB forstlig + _f) or (stmand+ 'O: // PB forstmand + _f) or (stmæssig+ 'O: // PB forstmæssig + _f) or (studie+ 'O: // PB forstudie + _f) or (studium+ 'O: // PB forstudum + _f) or (stue+ 'O: // PB forstue + _f) or (stvæsen+ 'O: // PB forstvæsen + _f) or (stzoologi+ 'O: // PB forstzoologi + _f) or (stævn+ 'O: // PB forstævn + _f) or (svar_+ 'O: // PB forsvar + _en_f) or (svarer+ 'O: // PB forsvarer - noun + _f) or (svars+ 'O: // PB forsvarschef + _f) or (sæt+ 'O: // PB forsæt + _f) or (så_+ 'O: // PB forså + _f) ortaler+ 'O:t&lV // PB fortaler + _f) or (tand+ 'O: // PB fortand + _f) or (tands+ 'O: // PB fortands + _f) or (tænder+ 'O: // PB fortænder + _f) or (tegn_+ 'O: // PB fortegn + _f) or (tegningsret+ 'O: // PB fortegningsret + _f) or (tekst+ 'O: // PB fortekst + _f) or (telt+ 'O: // PB fortelt + _f) or (tfarende+ 'O: // PB fortfarende _f) or (tid+ 'O: // PB fortid - _f) or (til+ 'Vr // PB fortil - _f) or (tløbende+ 'Vr // PB fortløbende - _f) or (tog+ 'Vr // PB fortog - _f) or (tov+ 'Vr // PB fortov - _f) or (trappe+ 'Vr // PB fortrappe - _f) or (trin_+ 'Vr // PB fortrin - _f) or (trins+ 'Vr // PB fortrinsret - _f) or (trop+ 'Vr // PB fortrop - _f) or (tryk+ 'Vr // PB fortryk - _f) or (tsætte+ 'Vr // PB fortsætte - _f) or (tunge+ 'Vr // PB fortunge - _f) or (tæppe+ 'Vr // PB fortæppe - _f) or (ud+ 'Vr // PB ud, forud, forudsætte - _f) oruden (_+ or'uD-n // PB foruden - _f) or (valg+ 'Vr // PB forvalg - _f) or (varm+ 'Vr // PB forvarme, forvarmning - _f) or (vars+ 'Vr // PB forvarsle, forvarsling - _f) or (vask_+ 'Vr // PB forvask - _f) or (vejen+ 'Vr // PB forvejen - _f) or (værelse+ 'Vr // PB forværelse - _f) or (åd+ 'Vr // PB foråd - _f) or (år+ 'Vr // PB forår - prof) or (ma 'Vr // PB stressed + _f) or (til+ 'O: // PB fortil + _f) or (tløbende+ 'O: // PB fortløbende + _f) or (tog+ 'O: // PB fortog + _f) or (tov+ 'O: // PB fortov + _f) or (trappe+ 'O: // PB fortrappe + _f) or (trin_+ 'O: // PB fortrin + _f) or (trins+ 'O: // PB fortrinsret + _f) or (trop+ 'O: // PB fortrop + _f) or (tryk+ 'O: // PB fortryk + _f) ort (sætte+ 'O:d // PB fortsætte + _f) or (tunge+ 'O: // PB fortunge + _f) or (tæppe+ 'O: // PB fortæppe + _f) or (ud++ 'O: // PB ud, forud, forudsætte + _f) oruden (_+ O:'uD@-n // PB foruden + _f) or (valg+ 'O: // PB forvalg + _f) or (varm+ 'O: // PB forvarme, forvarmning + _f) or (vars+ 'O: // PB forvarsle, forvarsling + _f) or (vask_+ 'O: // PB forvask + _f) or (vejen+ 'O: // PB forvejen + _f) or (værelse+ 'O: // PB forværelse + _f) or (åd+ 'O: // PB foråd + _f) or (år+ 'O: // PB forår + prof) or (ma 'O: // PB stressed .group p @@ -6991,8 +7285,92 @@ _transp) or (t 'V: // PB stressed - transport quarter kwOtV // PB .group r - r R - rr R + r r + rr r +// PB verb and noun ending + rre (_ 3-V // PB tørre, herre + rrer (_ 3-V // PB tørrer, herrer + rrer (ne_ 3-V // PB tørrerne, herrerne + A) re (_++ V // PB hore, store - silent r + A) re (n_ 3-V // PB frisøren, fyren + A) re (ns_ 3-V // PB frisørens, fyrens + C) re (_ rV // PB after consonant: ad the r - sejre, venstre, ældre + A) res (_ Vs + C) rer (_++ rV // PB beundrer + @) rer (_$p_alt+++ ''rEr // PB stressed - operer + @) rer (e_$p_alt+++ ''rE // PB stressed - operere, opererer + @) rer (es_$p_alt+++ r''E // PB stressed - opereres + C) ret (_++ rVD // PB ændret + A) rer (_++ V // PB horer + A) ret (_++ VD // PB horet + A) rerne (_++ Vn@- // PB horerne + A) rerne (s_++ Vn@- // PB horernes + A) rene (_ Vn@- // PB hærene + A) rene (s_ Vn@- // PB hærenes + æ) re (+ V // PB ærefrygt, kæreste + +// PB "ret" exceptions - not a verb or noun ending + _) ret (_++ r&#t // PB + skue) ret (++ r&#t // PB + klage) ret (++ r&#t // PB + købe) ret (++ r&#t // PB +skatte) ret (++ r&#t // PB + lige) ret (++ r&#t // PB + møde) ret (++ r&#t // PB +påtale) ret (++ r&#t // PB + råde) ret (++ r&#t // PB + skole) ret (++ r&#t // PB +straffe) ret (++ r&#t // PB +sædvane) ret (++ r&#t // PB + tale) ret (++ r&#t // PB + veto) ret (++ r&#t // PB +borger) ret r&#t // PB + ind) ret (++ r&#t // PB + regel) ret (++ r&#t // PB + hen) ret (_ r&#t // PB + _ord) ret (++ r&#t // PB ordret oversættelse +menneske) ret (++ r&#t // PB + fiske) ret (++ r&#t // PB + liv) ret (++ r&#t // PB +færdig) ret (++ r&#t // PB +stemme) ret (++ r&#t // PB + arve) ret (++ r&#t // PB + bygge) ret (++ r&#t // PB + _laza) ret (++ '&#t // PB + bytte) ret (++ r&#t // PB +dagpenge) ret (++ r&#t // PB + ene) ret (++ r&#t // PB + rett (++++ r?&#t // henrette, rettroende - only one t + s) ret (++ &#t // PB rigsret +højeste) ret (++ &#t // PB +familie) ret (++ r&#t // PB + by) ret (++ r&#t // PB + lands) ret (++ r&#t // PB + marga) ret (++ &#t // PB name + naza) ret (++ &#t // PB name + under) ret (++ r&#t // PB +første) ret (++ r&#t // PB + gryde) ret (++ r&#t // PB + _tabu) ret (++ '&#t // PB + u) ret (_++ 3D // PB +ret_og_u) ret (+ r&#t // PB + gør_u) ret (++ r&#t // PB +gøre_u) ret (++ r&#t // PB +e_mig_u) ret (++ r&#t //PB gjorde mig uret +e_dig_u) ret (++ r&#t //PB gjorde dig uret +e_os_u) ret (++ r&#t //PB gjorde os uret +e_dem_u) ret (++ r&#t //PB gjorde dem uret +t_mig_u) ret (++ r&#t //PB gjort mig uret +t_dig_u) ret (++ r&#t //PB gjort dig uret +t_dem_u) ret (++ r&#t //PB gjort dem uret +t_jer_u) ret (++ r&#t //PB gjort jer uret +t_os_u) ret (++ r&#t //PB gjort os uret +gjort_u) ret (++ r&#t //PB gjort uret +gøre_u) ret (++ r&#t //PB gøre uret + en_u) ret (++ r&#t // PB begå en uret + _u) ret (_mod_++ r&#t // PB begå uret mod + dig_u) ret (++ r&#t // PB har alle andre end dig uret + _) rhode RWwd // PB Rhodes rheu (ma RVj // PB rheumatoid rickshaw rekSV: // PB rickshaw @@ -7008,7 +7386,7 @@ _transp) or (t 'V: // PB stressed - transport ramirez _^_ES // PB name reece ri:s // PB name roquefort rVkf'V: // PB cheese - roger rVdZV // PB + roger rVdZV // PB name russell rVs@-l // PB name _) robie rVbi // PB name resolution REsoluS'on // PB @@ -7021,23 +7399,24 @@ virtual_) reality ri'&liti // PB r (K r // not followed by a vowel hve) r r // PB hver b) r r // bror -// Cd) r (e_ r // PB andre -// Ad) r (e_ R // PB andre se) r (_ r // PB ser he) r (_ r // PB her je) re (s V // PB jeres de) re (s V // PB deres - @) re (_ rV // PB "re" ending a word - være, sejre + kø) re V // PB køretøj + ho) re V // PB horeunge + smø) re V // PB smørefedt hav) re rV // PB havregryn + bekym) ret rVD // PB bekymret _ent) re (_ R'e // PB entre bu) rd (eK rd æ) r (er_N // silent r - skærer æ) re (_N V // silent r - skære læ) re V // PB lærerigt sæ) reg (en rej // PB særegenhed - g) re (_ rV // PB yngre +// g) re (_ rV // PB yngre sa) rd (el rd // PB sardel - ga) rd (e rd // PB garde + ga) rde rd@- // PB garde ve) rd (eKK rd hå) rd // PB silent rd - hård hå) rd (e : // PB hårde @@ -7056,7 +7435,7 @@ transpo) r (t //PB transport home_) run RVn // PB richelieu riSlj'W // PB name reality ri'&liti // PB - rushmore rVSmO: // PB + rushmore rVSmO: // PB name // PB words ending with -ri in da_list have a stressed "i" // The stress is kept in compounds where a word is added after the word. @@ -7070,10 +7449,12 @@ transpo) r (t //PB transport ss s s (sh s // PB lysshow sc (e s // PB scene + ssi (o S // PB depression + fa) sc s // PB fascinere di) sc (ip s' // PB disciple fransi) sc (o =sk // PB - taba) sc (o =sk // PB - ma) sc (ara sk' // PB + taba) sc (o =sk // PB Tabasco + ma) sc (ara sk' // PB maskara di) sc (ount sk' // PB sc (rap sk // PB scrapbog s (cigar s // PB majscigaret @@ -7091,6 +7472,7 @@ fransi) sc (o =sk // PB sully sVli // PB name spielberg spilbW:g // PB name sotheby sVD3bi // PB name + shelagh Si:l& // PB name // PB/JD s suffix - $alt words in da_list // 2-3.000 words end with s, so this cannot be a general suffix. @@ -7099,7 +7481,6 @@ fransi) sc (o =sk // PB abce) s s // PB not a suffix rece) s s // PB not a suffix -// proce) s s // PB not a suffix exce) s s // PB not a suffix kommi) s (_ = // PB not a suffix, silent s, stressed i kommi) s (e // PB not a suffix, silens s - kommissen @@ -7107,9 +7488,7 @@ fransi) sc (o =sk // PB anderlede) s s // PB not a suffix interferen) s s // PB not a suffix eksisten) s s // PB -//kohæren) s s // PB residen) s s // PB -// tilpa) s s pu) sh S // PB pusher mo) sh (e S // PB name @@ -7130,6 +7509,7 @@ franci) sc (o sk // PB Francisco si (on S // PB changed from "s (ion S" - division s (j s sch S // PB changed from [s(ch] - gullasch + salg) s s // PB salgschef sh (erif S // PB su) sh (i S // PB ha) sh S // PB @@ -7165,7 +7545,7 @@ franci) sc (o sk // PB Francisco _) steve sti:v // PB name _) steven sti:v@n // PB name sheila Si:l& // PB name - shor (t SV // PB shorts + shor (t SO // PB shorts _) stone sdoun // PB namde - Stone empire_) state (_ stEjt // PB _) sir (_ sW: // PB Sir Arthur @@ -7258,6 +7638,7 @@ tvang_) sig (_ saj // PB tiltvang sig adgang // PB use [sV] instead of [sO] er_) så (_ sV // PB du virker så bekendt + _) så (_ham+ sO // PB vidner så ham es_) så (_ sV // PB du føles så skrøbelig _) så (_fik_ sV // PB så fik du en idé r_) så (_bange sV // PB jeg er/var så bange @@ -7270,6 +7651,7 @@ vil_de_) så (_ sV // PB vil De så gøre det? vil_i_) så (_ sV // PB vil I så gøre det? vil_) så (_ sV // PB jo, du vil så blive_) så (_ sV // PB jeg kan blive så vred + _dig_) så (_ sV // PB hvorfor giftede du dig så? _) så (_havde_ sV // PB _) så (_bliver_ sV // PB _) så (_blev_ sV // PB @@ -7279,6 +7661,7 @@ blive_) så (_ sV // PB jeg kan blive så vred _) så (_gå_ sV // PB _) så (_her_ sV // PB _) så (_lad_ sV // PB + _) så (_lang_ sV // PB ikke så lang tid _) så (_nær_ sV // PB _) så (_skete_ sV // PB _) så (_skal_ sV // PB @@ -7287,8 +7670,6 @@ blive_) så (_ sV // PB jeg kan blive så vred _) så (_kom_ sV // PB _) så (_kommer_ sV // PB _) så (_tager_ sV // PB - _) så (_CACer_ sV // PB så kører TEST - _) så (_god_ sV // PB _) så (_gik_ sV // PB _) så (_hold_ sV // PB _) så (_gøre_ sV // PB @@ -7308,6 +7689,7 @@ _ville_de_) så (_ sV // PB _ville_i_) så (_ sV // PB _ville_du_) så (_ sV // PB og_) så (_videre sV // PB + _for_) så sV // PB _) så (_vi_må sV // PB _) så (_i_må sV // PB _) så (_de_må sV // PB @@ -7347,6 +7729,10 @@ kompromi) s ' // PB stress added .group t t t tt t + t (er_ d // PB kryster [kR'ysdV] + t (en_ d // PB femten - final ten: d@-n + tt (en d // PB attentat, atten - final tten: d@-n + Ce) t (_ d // PB final -et => [@-d] spærret - TEST _) tj tS // PB tja, tjald, atju, tjek _) t (_ te: // the letter T _) t (_shirt t'i:% // PB T-shirt @@ -7362,8 +7748,8 @@ kompromi) s ' // PB stress added e) tt (al t|t // PB ettal tt (øj t|t // PB ballettøjet teress (ant tr3s // PB interessant - in) teresse t3r'as@ // PB interesse - in) teresser t3r'asV // PB interesse + _in) teresse t3r'as@ // PB interesse + in) teresser t3r'asV // PB interesser in) teresseret tr3s'er3D // PB interesseret in) teresserer tr3s'erV // PB interesserer in) teressere tr3s'erV // PB interessere @@ -7380,6 +7766,7 @@ kompromi) s ' // PB stress added third TW:d // PB Third Street thunder TVndV // PB tredivtedel tr&fd@del // PB + tyve ty?u // PB 20 tredvtedel tr&fd@del // PB trenchcoat tr'EnSk,oud // PB tennessee tEn@si // PB @@ -7406,8 +7793,13 @@ world_) trade trEjd // PB _) trevor t*EvV // PB name _) tucson tu:sVn // PB US city torquay tO:ki // PB name + tudor tjudV // PB name _ar) t (_deco // PB silent t + // PB final -te D@- + te (_ d@- // PB smerte, hjerte + _) te (_ te // PB tea + // PB final -tek - stressed e _apo) tek t'ek _biblio) tek t'ek @@ -7477,7 +7869,7 @@ meningi) ti (s =ti lek) ti (e S ak) ti (e S // PB aktie &) ti (on+ S // station, dispotion - bas) ti (on ti // PB + bas) ti (on dj // PB ti (øs+ S // tendentiøs pa) ti (ent S // PB patient kvo) ti (en S // PB kvotient @@ -7487,16 +7879,29 @@ meningi) ti (s =ti u u // General rule: Normal vs. glottal u -// PB glottal u followed by consonant - C) u (C ?u // hus, mus -// PB normal u followed by consonant + vowel - C) u (CA u // huse, muse +// PB short u followed by double consonant + u (C%+ ?u // PB blusse + sk) u (L02% ?O // PB skuffe, skubbe + f) u (L06% ?O // PB fuppede + r) u (L06% ?O // PB siruppen + C) u (kk ?O // PB sukker, lukker + C) u (gg ?O // PB hugge + r) u (mmy ?V // PB card game + u (ds ?u // PB pludselig + h) utton ?Vt@n // PB name -// PB general rule: [O] after d/l - L03) u (f O // PB luft, duft +// l/d + u + f: O + L03) u (f ?O // PB luft, duft + + u (se u: // PB muse, huse + u (set ?u // PB huset - "hus" made short by ph_danish + + ur (gt o3- // PB spurgt - schwa TEST + ure (_ u3-V // PB ure, mure - schwa TEST + urer (_ u3-V // PB ure, murer - schwa TEST // PB general rule: [O] after consonant followed by k/g - C) u (L01t O // frugt, fugt, lugt + C) u (L01t ?O // frugt, fugt, lugt, lugte j) u (L01L04 u // Jugoslavien gl) u (kose y // PB C) u (L01L11 u // halleluja @@ -7511,24 +7916,24 @@ meningi) ti (s =ti k) u (k u // PB b) u (gse u // PB bugsere gl) u (g u // PB glugger, glughul - røgl) u (gt O // PB + røgl) u (gt ?O // PB fn) u (g u // PB snefnug u (gl+ u // PB fuglene, uglerne - br) u (gt O // PB + br) u (gt ?O // PB sl) ug u // slugt, sluge - silent g s) u (g u // PB sugerør, suggestiv - l) u (k O // PB sluk, pluk, lukke, fluks + l) u (k ?0 // PB sluk, pluk, lukke, fluks l) u (krL11 u // PB lukrativ - u (ks O // PB juks, buks + u (ks ?0 // PB juks, buks l) ukaf Og'& // PB sygelukaf p) urple W:p-@l // PB Purple Heart d) u (dley V // PB name // PB general rule: [0] after l/d followed by ns - L03) u (ns 0 // PB luns, dunst + L03) u (ns ?0 // PB luns, dunst // PB general rule: followed by ng/nk: [O] - u (ng+ O // PB lunge, unge + u (ng++ O // PB lunge, unge, hungre u (nk O // PB sunket, prunk j) u (nktur++ O // PB sp) u (nde O // PB spundet @@ -7539,7 +7944,7 @@ meningi) ti (s =ti L06) u (nkt O // PB punkt // PB general rule: [O] followed by nd - u (nd O // PB grund, rund, underligt, undtage + u (nd+ O // PB grund, rund, underligt, undtage b) u (nt O // PB buntmager p) u (nd u // PB pund t) u (ndå u // PB tundåse @@ -7553,6 +7958,7 @@ meningi) ti (s =ti tr) u (L06 u // PB strube, trup gr) u (L06 u // PB gruble skr) u (ple u // PB skrupler + skr) u (pel u // PB skrupelløs abr) u (pt 'u // PB abrupt m) u (L01 0 // PB mug, mukke m) ug (_ud u // PB @@ -7570,7 +7976,7 @@ meningi) ti (s =ti // PB remove u in order to make the -ig/elig rule (group i) work with u + -ig list words // e.g. u+erværdig [uErv'Erdi] will keep its stress on the next to last syllable. - _) u (@@+P1 u + _) u (@@+P1 u: _) u (for 'u // PB uforskyldt, uforfalsket _) uud 'u|'uD // PB uudforsket // PB exceptions - u isn't a prefix @@ -7579,6 +7985,7 @@ meningi) ti (s =ti _) u (ng+ O // PB ungdommelig u (gle+ u // ugle u (lv+ u // PB ulvene + _) ubeset (_ ubesed // PB _p) u (b_ V // PB p) u (bb V // PB pubben, pubber u (hyre+ u @@ -7593,15 +8000,17 @@ meningi) ti (s =ti u (ni++ u // uniform, universitet t) u (ning+ ju // PB t) u (ne ju // PB + prod) u (ceren ju // PB _st) u (art ju // PB name - u (den u // udenfor +// u (den u // udenfor g) u (den+ ?u // PB u is shorter in "guden" than in "gud" (glottal stop) u (ge++ u // ugerne, sluge uger (+ uV // PB sluger, slugere + s) uge (rør u3 // PB silent g _) u (r++ u // ur, urrem, uret - _) u (retfæ++P1 u // uretfærdig - prefix + _) u (retfæ++P1 u: // uretfærdig - prefix _) u (ds+ u // udsætte - u (de++ u // PB uden, udenfor, udeblev +// u (de++ u // PB uden, udenfor, udeblev et) u (de+ 'y // PB stressed u (topi u // PB uskyldig usg'yldi // PB @@ -7650,12 +8059,15 @@ meningi) ti (s =ti // PB final -ut in da_list - stressed u &) ut ($p_alt 'ut // rekrut - &) ut (t$p_alt 'u // rekrutter - avoid double t + &) ut (t$p_alt '?u // rekrutter - avoid double t // PB short u - glottal stop - h) u (d ?u - st) u (d ?u - t) u (d ?u + h) u (dK ?u + h) u (den ?u + st) u (dK ?u + st) u (den ?u + t) u (dK ?u + t) u (den ?u // PB final -sur dress) ur 'ur @@ -7670,7 +8082,7 @@ meningi) ti (s =ti // PB most of the words with ud-: [uD] - udpege - _) ud (@@+P2 ''uD + _) ud (@@+P2 ''?uD _) ude (@@+P3 ''uD@ // exceptions for ud-: [ud] _) ud (elt+P2 'ud // udelt @@ -7678,14 +8090,14 @@ meningi) ti (s =ti _) ud (rikkelig+P2 ud _) ud (røj+P2 'ud _) ud (uelig+ ud - _) ud (y+P2 'ud // udyd, udygtig, udyr + _) 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) - u (nL08 O // PB kunst + u (nL08+ O // PB kunst br) unch VnS // PB b) u (ffer V // PB buffer ketch) u (p V // PB @@ -7694,9 +8106,10 @@ meningi) ti (s =ti st) u (nt V // PB stuntman _) d) u (ncan V // PB name b) urg (er Wg // PB - u (mK O // dum + u (mK+ O // dum n) u (mlock V // PB h) umphrey Vmfri // PB name + _b) urns W:ns // PB name h) umbug OmbOg // PB _) usa (_ u:|es|'& // PB _) usa's (_ u:|es|'&s // PB @@ -7744,17 +8157,20 @@ stand_) u (p V // PB stand-up-komiker r) usty Vsti // PB name fr) u (s u // PB frustrerende _pr) u (st u // PB pruste - ue (_ u // PB due, vindue, statue - r) ue (C u: // PB skruenøgle TEST + vind) ue u // PB + vind) uer uV // PB + vind) uet u@D // PB + ue (_ u: // PB due, statue + skr) ue (C u: // PB skruenøgle TEST fond) ue 'y // PB ostefondue infl) ue (nza u'E // PB stressed aven) ue 'y // PB alb) ue u: // PB albuerum - st) ue u: // PB stuearrest + h) ue u: // PB tophue, hue + st) ue u:@- // PB stuearrest st) ue (_ u@ // PB st) ue (n_ u@ // PB d) ue (s u: // PB vinduesstørrelse - um) u (lig 'u: // PB stressed u in 'umulig' _kalk) u (n 'u // PB stressed u _konvol) u (t 'u // PB stressed _årh) u (ndrede 'u // PB stressed @@ -7762,8 +8178,8 @@ centrif) u (g 'u // PB stressed kæng) u (ru 'u_ // PB stressed l) ug (e u: h) u (lt u // PB hult - adjective "et hult træ" - h) u (le u: // PB hule - adjective and noun - hj) u (lp O // PB hjulpet + h) u (le u // PB hule - adjective and noun + hj) u (lp ?O // PB hjulpet - lp shortens the vowel hond) u (ra 'u: // PB Honduras u (lje 'u // PB patrulje, badulje _laC) u (ne 'u: // PB lagune, lakune - stressed @@ -7819,7 +8235,7 @@ hovedk) u (ls u // PB s) u (pra u // PB latin s) u (pple u // PB suppleant s) u (bs u // PB substitut - h) u (n u // PB hunkøn + h) u (n+ ?u // PB hunkøn, hund h) u (nter V // PB headh) u (nt V // PB h) u (rtig O // PB hurtigtog @@ -7844,17 +8260,20 @@ mudderh) u (l O // PB h) u (lle O // PB hulledame h) u (g O // PB hugge, hugorm + h) u (go_ u // PB name Cr) u (k O // sprukne, fordrukken, foretrukne, trukket, krukket TEST p) u (f O // PB f) u (n+ 0 // PB funktion, karpunkel p) u (lv 0 // PB pulver _r) u (b_ O // PB rub _n) u (l 0 // PB nul - _r) u (bbe O // PB rubbe, rubbet - k) u (ffert O - _g) uid (et ajd // PB guidet - g) uider ajdV // PB guider - g) uide ajd // PB noun: guide - problem with verb "at guide" + n) u (levende u // PB + _r) u (bbe ?O // PB rubbe, rubbet + k) u (ffert ?O + _g) uid (et aId // PB guidet + g) uider aIdV // PB guider + g) uide a:jd // PB noun: guide - problem with verb "at guide" + g) uiden aId@-n // PB guiden at_g) uid (e ajd // PB at guide vil_g) uid (e ajd // PB vil guide aug) u (st 'O PB stressed - the month - the name is in da_list with $capital @@ -7862,12 +8281,14 @@ mudderh) u (l O // PB g) ulv Ol // PB gulv - silent v g) ulv (e Olv // PB gulve sm) u (C O // PB smukkere, smurt + rasm) u (s u // PB Rasmus - name m) u (sik u // PB middagsmusik sL09) u (t u // PB snut, smutte sL09) u (CL11 u // PB snude sm) u (L03+ u // PB smule, smuld, smuds l) u (krere u // PB L09) u (f O // PB fornuft + L09) u (ff ?O // PB muffe m) uffin Vfen // PB m) u (ft u // PB mufti kam) u (flage u // PB @@ -7895,8 +8316,8 @@ _instr) u (ks 'u // PB stressed proced) u (re 'y proven) u 'y _nat) u (rel_+ y' // PB naturel - _kost) u (me 'y // PB - kost) u (me y // PB + _kost) ume 'ym@- // PB + kost) ume ym@- // PB n) u (ance y // PB s) u (rrel Y // PB surreel s) u (rrea y // PB surrrealistisk @@ -7936,7 +8357,12 @@ proven) u 'y .group v v v vv v + v (_ w // PB væv + i) v (_ w // PB stativ + ra) v (C w // PB gravkammer li) vv wv // PB livvagt, livvidde + snæ) v (+ w // PB snæver, snævre + dri) v (C w // PB drivtryk L09o) v (A v // PB nova renovation pro) v (ence v // PB Provence in France _) von (_ fVn // PB von in German names @@ -7947,10 +8373,13 @@ proven) u 'y la) v (ement @ // PB lavement ve (lse v3 // PB øvelse, stavelse, fornøjelse ø) v (en w // PB røven -// &A) v w // PB fiktiv, nævne + dø) v w // PB døvstum + le) v (_ w // PB elev + mø) v (e+ w_|// PB møve &A) v (_A v // PB gav ordre &A) v (A v // PB fiktive v (n w // PB jævn, levne + tvi) v (l u // PB &r) v v al) v (e v // PB halve el) v (C @@ -8040,18 +8469,22 @@ udeble) v w // PB .group y y y + y (u j // PB Yussef -// PB general rule: [y] after consonant + r before sp/st/sk - Cr) y (L08 Y // PB kryster +// PB Short y followed by two consonants + y (tt++ ?y // PB lytte, bytte, rytter + r) y (lle++ ?y // PB trylleri, fortryllende + y (gge++ ?y // PB tygge, bygge + y (kke++ ?y // PB tykke, samtykke + y (ld ?y // PB beskyldte, skyld, skylde - ld works as a double consonant // PB general rule: [W] before (some) velars y (nk W // PB ynk, ynkelig - y (kk+ W // smykke, lykke - l) y (kø W // PB lykønske - l) y (ksalig W // PB - t) y (L01%e y // PB tykke, tygge - l) y (n_ y // PB lyn, kuglelyn - _l) y (n y // PB lynkarriere + y (kk++++ ?W // smykke, lykke, stykker + l) y (kø ?W // PB lykønske + l) y (ksalig ?W // PB + l) y (n_ ?y // PB lyn, kuglelyn + _l) y (n ?y // PB lynkarriere l) yng (limt yng // PB l) yng WN // PB sm) y (kn W // PB udsmykning @@ -8059,39 +8492,49 @@ udeble) v w // PB r) y (ge+ y // PB ryge, ryger pr) ygelknabe ygElknAb3 // PB st) y (k+ W // PB stykke - ydm) yg yj // PB + ydm) yg y // PB yng WN // PB yngre, dynge, tynge, synge yng (a Wng // PB laryngal - _n) y (n_ W // PB "nyn en melodi" - n) y (nne W // PB + _n) y (n_ ?W // PB "nyn en melodi" + n) y (nne ?W // PB -//PB general rule: [W] before nd - y (nd+ W // PB ynde, begynde, kyndig, udtynde, skynde - s) yndi (k Wndi // PB syndikat +//PB general rule: [?W] before nd - short followed by 2 consonants + y (nd+ ?W // PB ynde, begynde, kyndig, udtynde, skynde + s) yndi (k ?Wndi // PB syndikat // PB general rule: consonant + y + sp/st/sk: [?y] - glottal - C) y (L08+ ?y // PB kysk + C) y (L08+ y // PB kysk + C) y (se+ y // PB kyse + l) y (set+ ?y // PB + c) y (kel ?y // PB short y l) y (stgård W // PB kr) y (bb+ ?y // PB krybbe - kr) y (s+ ?y // PB krystal, kryster - kr) y (L01%+ W // PB krykke - r) y (C+ W // PB ryste, bryllup, tryg, krympe, krymmel - str) y (C ?y // PB stryknin + kr) y (s+ y // PB krystal, kryster + r) y (L01%++ ?W // PB krykke, ryggen + r) y (C+ ?W // PB ryste, bryllup, tryg, krympe, krymmel - short W + tr) y (l++ y // PB tryl + str) y (C y // PB stryknin _harr) y i // PB dr) y (p W // PB - r) y (Ce+ y // PB tryne + r) y (Ce++ y // PB tryne, pryde + tr) y (de ?y // PB fortryde r) ydell ajd'El/2 // PB name - r) y (sk+ ?y // PB brysk + r) y (sk+ y // PB brysk mar) y (s i // PB - r) y (L06+ y // PB rype, kryptere, kryb - r) y (lle y // PB trylleri - r) y (t+ ?y // PB rytme, rytter - br) y (n ?y // PB øjenbryn - gr) y (n ?y // PB + r) y (L06+ y // PB kryptere, kryb + r) y (L06A+ y // PB krybe + r) y (t+ y // PB rytme, rytter + br) y (n y // PB øjenbryn + gr) y (n y // PB gr) y (nt W // PB p) y (nt W // PB - r) y (d+ y // PB forbrydelse, bryde, bryd, fryd - fr) y (s+ ?y // PB forfrysning + r) y (de++ y // PB bryde + forbr) y (d++ ?y // PB forbrydelse, forbryder + r) y (den++ ?y // PB gryden - short y TEST + r) y (d_++ y // PB fryd, ryd +// Short glottal y in both "kryds" and "krydse/r" + r) y (dC++ ?y // PB krydser, rydde + fr) y (s+ y // PB forfrysning // PB exceptions // PB problem with lyst - blond = light coloured; and lyst = would like to, feel like @@ -8134,58 +8577,64 @@ virkel) y (st W // PB r) yg (_en y // PB "ryg en cigar" r) yg (_end_ Wg // PB "mere tryg end nu" str) yg yj // PB stryge - r) yg (ning y // PB silent g + r) yg (ning y: // PB silent g pr) yg (l y // PB tr) yg (le y // PB trygle + _r) y (_ ?y // PB short glottal y + _r) y (et_ ?y // PB short glottal y part) y i // PB - str) yge y:@ // PB strygetøj + Amm) y ?i // PB rummy, dummy, grammy + str) yge y@- // PB strygetøj + str) yger yV // PB stryger karr) y (+ i // PB lib) y i // PB Libyen _) yves i:v // PB Yves (French name) fl) y (tn W // PB flytning m) y (nte 'W // PB mynte, pebermynte (stressed) - afl) y (t ?y // PB aflytning - L08) y (t W // PB spyt, skyts - sk) y (ti ?y // PB Skytien, skytisk - sk) y (ter ?y // PB skyter + afl) y (tt ?y // PB aflytning + L08) y (tt+ ?W // PB spyt, skyts, beskytte + sk) y (ti y // PB Skytien, skytisk + sk) y (ter y // PB skyter s) yv yw // PB sk) y (ll W // PB skylle k) y (lling+ ?y // PB lørdagskylling - sk) y (l_ W // PB skyl + _rek) y (l 'y // PB stressed + sk) y (l_ ?W // PB skyl sk) y (lni W // PB skylning _molek) y (le 'y // PB stressed _lat) y (rus 'y // PB stressed - f) yrre W:V // PB fyrre - f) yrre (tr Y:V // PB fyrretræ - f) yrre (k Y:V // PB fyrrekogle - n) y (t Y // PB nyt - udn) y (t W // PB udnytte - n) y (tt W // PB nytte - ben) y (t W // PB benyt + eg) y (pt 'y // PB Egypten - stressed + f) yrre ?W:_|V // PB fyrre + f) yrre (tr YV // PB fyrretræ + f) yrre (k YV // PB fyrrekogle + n) y (t y // PB nyt + n) y (tt+ ?W // PB nytte + ben) y (t ?W // PB benyt n) y (k_ W // PB nyk - n) y (ker W // PB nykker - kn) y (tt W: // PB tilknytte - kn) y (t y // PB knyt + n) y (kker ?W // PB nykker + kn) y (tt ?y // PB tilknytte + kn) y (t ?y // PB knyt k) y (s+ W // PB kys, kyst + k) y (se+ y // PB kyse, kyser sk) y (s+ y // PB skysovs, skyskraber k) y (sk+ y // PB kyskhed - k) yss Ws // PB kysse - k) y (se+ y: // PB kyse - s) y (ndrom y // PB - s) y (nkr y // PB synkron - s) y (nt y // PB syntes + k) yss ?Ws // PB kysse + s) ynd (rom ?ynd // PB + s) y (nkr ?y // PB synkron + s) y (nt ?y // PB syntes s) ynthesizer enTesajsV // PB s) y (nkroc W // PB synkrocyklotron - s) y (tten W // PB + s) y (tten ?W // PB fl) y (t_ W // PB flyt - fl) y (tt W // PB flytte - afl) y (tt y // PB + fl) y (tt ?W // PB flytte + afl) y (t y // PB fl) y (tbar W // PB whisk) y i // PB whisky cit) y i // PB ick) y i // PB tricky, Nicky, Vicky - lonn) y i //PB name - happ) y i // PB happy end, happy hour + lonn) y e // PB name + scott) y e // PB name + happ) y ?i // PB happy end, happy hour s) yracuse irVkjus // PB name yatzy j&tsi // PB y (onn j // PB bayonne, mayonnaise @@ -8225,6 +8674,7 @@ brookl) y (n i // PB shell) y i // PB name jack) y i // PB name luc) y i // PB + all) y (son I // PB name fift) y i // PB sherr) y i // PB lill) y i // PB name @@ -8252,22 +8702,23 @@ amnest) y i // PB yoyo joj'o // PB _) yen jEn // PB currency kan) y (le 'Y // PB stressed - _kab) y (s 'Y // PB stressed - _kah) y (t 'Y // PB stressed - _par) y (k 'W // PB stressed + _kab) y (s '?y // PB stressed + _kah) y (t '?y // PB stressed + _par) y (k '?W // PB stressed _as) y (l 'y // PB stressed - _rev) y 'y // PB stressed + _rev) y '?y // PB stressed pol) y (est i' // PB polyester -pseudon) y (m 'y // PB stressed -_parapl) y 'y // PB stressed +pseudon) y (m '?y // PB stressed +_parapl) y '?y // PB stressed _stereot) y (p 'y // PB stressed - _enz) y (m 'y // PB stressed - _vin) y (l 'y // PB stressed + _enz) y (m '?y // PB stressed + _vin) y (l '?y // PB stressed ca) yenne j'En3 // PB stressed + volap) y 'y // PB volapyk d) y (_ i d) y (s_ i // PB Kennedys - d) y (p W // PB dyppe - d) y (k W // PB dykker + d) y (p ?W // PB dyppe + d) y (k ?W // PB dykker _s) ykes ajgs // PB name _) ypres i:pR-3 // PB French town _w) ya (tt aj3 // PB name @@ -8291,59 +8742,68 @@ _stereot) y (p 'y // PB stressed .group æ æ E -// PB normal æ followed by one consonant and a vowel - æ (CA E // PB læse, blæse - experimental -// PB glottal æ followed by two consonants and a vowel - æ (C%A ?E // PB læsse - experimental -// PB glottal æ followed by one consonant and without a vowel - æ (CK ?E // PB læs, blæs - experimental - + +// PB glottal æ followed by double consonant + æ (C%+ ?E // PB læsse + v) æ (dde+ ?E // vædde + æ (gypt E' // PB - ærre &r3 // PB spærreballon - desv) ærre '&r3 // PB stressed - r) æ (C%A &# // PB brække - experimental + ærre ?E3-V // PB spærreballon + desv) ærre 'E3-V // PB stressed + r) æ (C%e+ ?&# // PB brække, rædde - experimental r) æ (CA E: // PB ræbe - experimental kæled) æ (gge 'E // PB stressed +// PB problem with "læste" long verb vs. short noun - "skomagerens læste" +_han_l) æ (ste E: +_hun_l) æ (ste E: + _vi_l) æ (ste E: + _de_l) æ (ste E: + // PB nouns ending with -ær in da_list - stressed last syllable &) ær ($p_alt ''Er // elementær // PB general rule &# after r - r) æ &# // PB very broad - suver) æ (n '?E // PB stressed - kr) æ (_ ?E // PB + r) æ (+ &# // PB frækt - very broad + suver) æ (n 'E // PB stressed + kr) æ (_ E? // PB r) æ (t+ &# // PB åndedrættet spr) æ (C+ &# // PB sprængt - pr) æ (C+ ?E // PB prætendere, præsentere, prækvalificere - rør) æg ?Eg // PB - pr) æ (gn ?E // PB prægnans, prægnant - for) æ (dle ?E // PB - æ (l+ ?E // PB forældet, ræling, ældre, forældre + pr) æ (C+ E // PB prætendere, præsentere, prækvalificere + rør) æg Eg // PB + pr) æ (gn E // PB prægnans, prægnant + for) æ (dle ?E // PB + æ (ld+ ?E // PB forældet, ældre, forældre + æ (lpe+ ?E // PB hjælpe - lp = double consonant? r) æ (s E // PB kræsen, ræsson - r) æ (CL04 ?E // PB prærie, præcis + r) æ (CL04 E // PB prærie, præcis L08r) æ (C &# // PB skræk, skrælle, sprælle gr) æ (s &# // PB græsplæne pr) æ (st_ &# // PB pr) æ (ster &# // PB pr) æ (sten &# // PB pr) æ (sterne &# // PB + pr) æ (stin &# // PB præstinde pr) æ (sta E // PB præstation // PB general rule E after tr - tr) æ E // PB juletræ + tr) æ (+ ?E // PB juletræ tr) æg (_ Ej // PB tr) æg (e_ Ej // PB - r) æ (L02 E // PB TEST r + æ + labial - dræbe, præparat + r) æ (L02+ E // PB TEST r + æ + labial - dræb, præparat + r) æv (+ ?Ew // PB ræv, kræv + r) æ (L02e+ E // PB dræbe tr) æ (n+ E // PB træning, træn dr) æ (n+ E // PB dræning, dræn tr) æ (ng+ &# // PB trænge r) æ (L02% &# // PB TEST r + æ + double labial - skræppe - r) æ (L02t &# // PB TEST r + æ + labial + t - dræbt + r) æ (L02t+ &# // PB TEST r + æ + labial + t - dræbt, kræft r) æ (m &# // PB fugleskræmsel - tr) æ (C &# // PB træværk + tr) æ (C+ &# // PB træværk tr) æg (hed Ej // PB + r) æ (d+ &# // PB fortræd, ræd _portr) æ (t '&# // PB stressed // PB general rule r + æ + consonant + e: E @@ -8379,12 +8839,11 @@ _pythagor) æ (er 'E pr) æ (stere E // PB spr) æ (kk &# // PB sprække sp) æ (ne E: // PB opposed to "spænde" with a short æ -// r) æ (dd &# // PB skrædder, brædder, ræddike _migr) æ (ne 'E // PB stressed _dom) æ (ne 'E // PB stressed f) æ (re 'E: // PB affære, atmosfære, sfære - gev) æ (r 'E // PB gevær - besv) æ (r_ 'E // PB besvær + gev) ær 'E3- // PB gevær, geværet + besv) ær (_ 'E3- // PB besvær afh) æ (ngig 'E: // PB stressed _omst) æ (nd ''E // PB stressed - omstændighed _pal) æ 'E // PB stressed @@ -8405,58 +8864,67 @@ _jubil) æ 'E // PB jubilæet ævl Eul // PB majest) æ (t 'E // PB stressed æ ærinde ERn@ // PB + sj) æ (l ?E // PB sjæl + sj) æ (leC E // PB sjælefred + sj) æ (len ?E // PB sjælen, sjælens .group ø -// røveren [V] faldt på røven [W#] og skød [W] en møgkælling [Vj] +// røveren [V] faldt på røven [W#] og skød [?W] en møgkælling [Vj] ø W - ø (de W: //PB øde - ø (dd W // PB fødder, rødder + +// Glottal (short) ø - double consonant + ø (C% ?W // PB tørre, fødder + r) ø (mme ?W# // PB rømme, strømme + ø (rnene ?W // PB børnene, tjørnene - TEST + _chauff) ø (r 'W // PB stressed in 'chauffør' _milj) ø 'W // PB stressed - miljø obsk) ø (n 'W: // PB stressed _nev) ø 'W // PB stressed _am) ø (be 'W // PB stressed h) ø (j V - ø (je V // PB øje - øre W:V // PB VERY BROAD - snørebånd - øre (jse Wra // PB sørejse - i) øre (faldende 'W:V // PB stressed + ø (je W# // PB øje + øre WV // PB snørebånd, gøren + ører (n WV // PB ørerne + ører (_ WV // PB kører + i) øre (faldende 'WV // PB stressed s) øre (dni WrE // PB søredningstjeneste øjer W#jV // PB bøjer ø (jn W# // PB øjne - l) øg 'Vj // løgn, løg - kl) øg (t Wg // PB kløgtig + l) øg 'Vj // PB løgn, løg + kl) øg (t ?Wg // PB kløgtig gl) øgg Wg // PB gløgg g) øg (l Vj // PB gøgler l) ø (s W - C) ø (j+ W# // PB søjle, bøjle, sprøjte - _hall) ø (j 'W# //& PB stressed + C) ø (j+ V // PB søjle, bøjle, sprøjte + _hall) ø (j 'W# // PB stressed burg) ø (js 'W# // PB burgøjser, burgøjsisk - stressed oberstl) ø (jtnant 'W# // PB stressed - L09) ø (g V // PB m => L09 (m + n) - møg, smøg + L09) ø (g+ V // PB m => L09 (m + n) - møg, smøg, nøgen n) øg (tern Wg // PB sm) øg (_sig Wj // PB "katten smøg sig om benet" - _n) ø (d@ 'W: // PB nød- stressed - nødsituation + _n) ø (d@ 'W // PB nød- stressed - nødsituation _n) ødt (_ Wd // PB nødt r) ø (+ W // brød - r) ø (L09 W# // PB grøn, rømme, strømme + fr) ø (+ ?W // PB frø, frøer - short even if followed by [V] + r) ø (L09 W# // PB grøn, strøm r) ø (L09e W // PB skrøne - dr) ø (n W // PB drøn - r) ø (mer W: // PB strømere - s) ø_ W: - L08) ø (g W // PB skøge + dr) ø (n ?W // PB drøn + dr) ø (ne W // PB drøne + r) ø (mer ?W // PB strømere + L08) ø (ge W // PB skøge sp) øg (en Vj // PB sp) øg (_ Vj // PB spøg = joke - s) ø (g W // PB søgte + s) ø (g ?W // PB søgte sp) ør (g W:r // PB spørge sp) ørger (_ Wr // PB sp) ør (gs Wr // PB spørgsmål - r) ø (g W# // PB røg + r) ø (g+ W# // PB røg r) ø (gte W // PB misrøgte r) ø (gelse W // PB for) ø (g W // PB forøge - for) øg (_ W:? // PB forøg - øre_ W:V // PB køre + for) øg (_ ?W // PB forøg +// øre_ W:V // PB køre r) ø (v W# // PB røv ber) ø (ve W // PB bedr) ø (v W // PB bedrøvede @@ -8471,7 +8939,7 @@ bonder) ø (v W# // PB bonderøve _) øg (_ Wj // PB 'øg' noun and verb d) øg (n Vj øj+ V:j // PB changet from [Oj] - velg) ø (renhed 'W // PB stressed ø + velg) øre (nhed 'WV // PB stressed ø _man) ø (vre 'W // PB stressed im) ø (dekom 'W: // PB imødekomme syd) ø (st 'W // PB stressed - sydøst @@ -8483,14 +8951,36 @@ bonder) ø (v W# // PB bonderøve .group ør //PB (mostley French -eur) nouns ending with -ør - stressed ø - around 150 words - &) ør ($p_alt ''Wr // hønnør, frisør + &) ør ($p_alt ''?W3- // hønnør, frisør + &) ør (en$p_alt ''?WV // hønnøren, frisøren .group å å O // PB changed from O:? - ovenp) å (_ 'O // PB stressed + + å (K O // PB lås, ås + år (@ O: // PB dårlig, årsag + g) år O // PB går, overgår + _) år (_ O // PB år + C) år (_ O // PB sår, kår, skår +// f) år (_ O // PB + år (s O // PB årstid + s) år (C O: // PB sårbsr + åre O:?O // Pb åre, årelang, båre, båren + året O:?OD // PB året, håret + n) å (et ?O // PB short glottal o + @n) å (et O // PB opnået + + ovenp) å (_ '?O // PB stressed (originally 2 words "oven på") + undg) åe (lig '?O // PB stressed + opn) åe (lig '?O // PB stressed + forst) åe (lig '?O // PB stressed +uimodst) åe (lig '?O // PB stressed + påst) åe (lig '?O // PB stressed + // PB råd ("advice") - r) å (d+ O // PB råd (advice, not rot) + r) å (d+ O // PB råd ("advice", not "rot") r) å (dn+ V // PB rådne + r) å (dyr V // PB tr) ådne (t ODnE // PB r) å (dd+ V // PB rådden tr) å (dt+ V // PB overtrådt @@ -8506,10 +8996,12 @@ bonder) ø (v W# // PB bonderøve r) å (dsp V // PB rådspørge, rådspurgte r) å (sejl V // PB - g) ård O: // PB gårdmand, bondegård - silent d - g) årde O:-3 // PB - ården OVn // PB gården - h) årde V:3 // PB + g) ård V: // PB gårdmand, bondegård - silent d + g) årde V:3 // PB + ården V:Vn // PB gården + h) år O // PB hår, hård + h) år (dt O: + h) årde V3 // PB h) årdest V:r@st // PB p) å (ske O // PB påske s) å O // PB så @@ -8528,19 +9020,17 @@ bonder) ø (v W# // PB bonderøve _var_s) å (_ V // PB jeg var så glad jas) å (_ 'V // PB jaså alts) å V // PN altså - hvorn) år 'O? // PB hvornår - stressed + hvorn) år 'O // PB hvornår - stressed uimodst) å (elig 'O // PB stressed - forh) åbentlig 'ObEntli // PB stressed - h) år V:? // PB hår, hård bl) å (@ V // PB blåbær, blågrå -// PB General rule [V] followed by t TEST - å (t V // PB blåt - g) å (tur O // PB +// PB General rule [?V] followed by t + å (t ?V // PB blåt + g) å (tur ?O // PB å (nd V // PB hånd, ånd, bånd l) å (r V - p) å (s V // PB påstand + p) å (st V // PB påstand gåp) å (mod 'O // PB stressed sl) å (s V // PB slås tændingsl) å (s O // PB @@ -8552,35 +9042,36 @@ spørgsm) å (l O // PB spørgsmålet m) å (ling++ O // PP meningsmåling modersm) å (l O // PB slagsm) å (l O // PB - m) å (lløs+ V // PB + m) å (lløs+ ?V // PB m) å (ltid+ V // PB s) å (d V // PB sådan s) å (t V // PB undersåt skr) å (p V // PB skråplan stj) å V // PB stjålet - L08r) å (t V // PB skråt - m) å (t V // PB måtte - v) å (dt V // PB - _p) å V // PB påmontere - t) å (lmo V // PB tålmodig - d) å (dyr V // PB dådyr - t) å (negl V // PB - t) å (spids V // PB - _p) åse Vse // PB påse - r) å (t V // PB gråt - gr) å (@ V // PB gråand, grågrøn, gråsprængt + L08r) å (t ?V // PB skråt + m) å (t ?V // PB måtte + v) å (dt ?V // PB + _p) å ?V // PB påmontere + t) å (lmo ?V // PB tålmodig + d) å (dyr ?V // PB dådyr + t) å (negl ?V // PB + t) å (spids ?V // PB + _p) åse ?Vse // PB påse + r) å (t ?V // PB gråt + gr) å (@ ?V // PB gråand, grågrøn, gråsprængt gr) å (d O // PB gråd, grådig gr) å (ne O // PB - r) å (bt V // PB råbte - r) å (lam V // PB - r) å (material V // PB - str) å (mand V // PB - str) å (mænd V // PB - str) å (forkort V // PB stråforkorter - str) å (hat V // PB - str) å (død V // PB - år V: // PB år, står - åre V:3 // PB tåre + r) å (bt ?V // PB råbte + r) å (lam ?V // PB + r) å (material ?V // PB + str) å (mand ?V // PB + str) å (mænd ?V // PB + str) å (forkort ?V // PB stråforkorter + str) å (hat ?V // PB + str) å (død ?V // PB +// år ?V // PB år, står, dårlig + st) år V // PB forstår +// åre V:3 // PB tåre årer V:V- // PB sårer å (lti V // PB måltid diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index c82db939..02f7fa4a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -53,18 +53,19 @@ p r s S t T v w x z -Dictionary da_dict 2013-01-30 +Dictionary da_dict 2013-03-06 -& &# 0 3 ?& ?e ?E ?i -?O ?u ?W ?y @ @- a A -aI e E i o O u V +& &# 0 3 ?& ?&# ?0 ?a +?A ?e ?E ?i ?o ?O ?u ?V +?W ?W# ?y @ @- a A aI +e E i I o O u V W W# y Y -* - : ? b B d D -dZ f g h j J k l -l/2 l/3 m n N p r R -R3 s S t T tS v w -x z Z +* - 3- : ; ? b B +d D dZ f g h j J +k l l/2 l/3 m n N p +r R R3 s S t T tS +v w x z Z Dictionary hu_dict 2013-02-25 @@ -378,7 +379,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-06 +Dictionary pt_dict 2013-03-07 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -539,7 +540,7 @@ n^ p p` r s S t t` tS tS` v w x z Z -Dictionary ml_dict 2013-02-28 +Dictionary ml_dict 2013-03-06 @ a a# a: aI aU e E e: i I i: o o: r- u diff --git a/dictsource/en_list b/dictsource/en_list index 106e12f9..37a89107 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -3678,6 +3678,7 @@ Disney dIzni Dolce d0ltSeI Dvorak d@-vo@Zak Emory Em3ri +Fleming flEmIN Folger foUldZ3 Genghis dZENgIs Gibson gIbs@n diff --git a/dictsource/pt_list b/dictsource/pt_list index 3d8a3d0b..792df1d7 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -730,7 +730,6 @@ concerto $alt2 $noun concordo $alt conforto $alt $verb consolo $alt2 $noun -contivermos $alt controle $alt2 $noun controlo $alt2 $noun coreia $alt @@ -741,12 +740,8 @@ corto $alt corveta $alt2 corvos $alt coto $alt2 -couberdes $alt -coubermos $alt cratera $alt crede $alt2 -der $alt -derdes $alt desapego $alt2 $noun descabelo $alt descordo $alt @@ -779,9 +774,6 @@ envelope $alt envolto $alt2 enxerto $alt2 $noun epopeia $alt -erga $alt2 -ergam $alt2 -ergo $alt2 eritreia $alt erro $alt2 $noun erros $alt2 @@ -799,8 +791,6 @@ espiroqueta $alt2 espoleta $alt2 esposa $alt2 esqueleto $alt2 -estiverdes $alt -estivermos $alt estrela $alt2 estrofe $alt estorno $alt $verb @@ -818,8 +808,6 @@ fera $alt ferozes $alt fezes $alt ?1 fixe fiSy -fizerdes $alt -fizermos $alt foda $alt2 $verb folheto $alt2 folga $alt @@ -857,8 +845,6 @@ grozo $alt $verb hemorroida $alt hoje $alt2 horrores $alt2 -houverdes $alt -houvermos $alt ideia $alt insonoro $alt interesse $alt2 $noun @@ -869,9 +855,6 @@ lebre $alt lopes $alt maior $alt maleta $alt2 -mantiverdes $alt -mantiveres $alt -mantivermos $alt marcelo $alt marmelo $alt marreta $alt2 @@ -892,7 +875,6 @@ minueto $alt2 miolo $alt2 miolos $alt moeda $alt -modos $alt molho $alt2 $noun monera $alt morcego $alt2 @@ -913,15 +895,13 @@ naquele $alt2 $nounf nervo $alt2 novos $alt obstetra $alt -obtivera $alt -obtivermos $alt odisseia $alt onu $1 olho $alt2 $noun -osso $alt2 -ossos $alt opereta $alt2 ordens $alt +osso $alt2 +ossos $alt ostra $alt2 ovos $alt pachorra $alt2 @@ -937,8 +917,6 @@ pastora $alt2 pedra $alt pelego $alt2 pelo $alt $verb -pesque $alt -pesquem $alt peso $alt $verb piloto $alt2 $noun pintora $alt2 @@ -957,15 +935,9 @@ poxa p'oS& preço $alt2 primavera $alt provo $alt -puder $alt -puderdes $alt -pudermos $alt -puserdes $alt quarteto $alt2 queda $alt quinteto $alt2 -quiserdes $alt -quisermos $alt recomeço $alt2 $noun recordo $alt recorto $alt @@ -1006,8 +978,6 @@ sopro $alt2 $noun soro $alt2 sorvete $alt2 sossego $alt2 $noun -souberdes $alt -soubermos $alt suborno $alt $verb sufoco $alt2 $noun sufocos $alt2 @@ -1017,8 +987,6 @@ tapete $alt2 tempero $alt2 $noun teta $alt2 tetra $alt -tiverdes $alt -tivermos $alt tocha $alt toga $alt topo $alt $verb @@ -1039,7 +1007,6 @@ valeta $alt2 vanessa $alt2 velozes $alt verme $alt -vierem $alt violeta $alt2 violoncelo $alt voga $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index a40fdb92..66d631df 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -19,8 +19,8 @@ .L02 e em .L03 a am o .L04 a am e em o ue uem -.L05 r ra ram re rem rdes -.L06 ra ram ste re rem +.L05 r ra ram re rem rde rmo +.L06 ra ram ste re rem rmo .L07 sse ssem ste @@ -345,13 +345,18 @@ sf) e (ra_ E // esfera, biosfera //sort + _d) e (L05_ E + _vi) e (L05_ E fiz) e (L05_ E + pus) e (L05_ E / com- im- de- tiv) e (L05_ E // es- _com) e (L05_ e + _pud) e (L05_ E _coub) e (L05_ E _exag) e (L05_ E _houv) e (L05_ E _perd) e (L05_ e + _quis) e (L05_ E _soub) e (L05_ E _rend) e (L06_ e _vend) e (L06_ e @@ -369,6 +374,7 @@ respond) e (L06_ e // cor- _tem) e (L07_ e colh) e (L07_ e // & es- corr) e (L07_ e // per- con- in- so- dis- + nasc) e (L07_ e / re- torc) e (L07_ e // con- venc) e (L07_ e // con- vert) e (L07_ e // in- re- con- @@ -384,11 +390,14 @@ respond) e (L06_ e // cor- _aborrec) e (L07_ e _adoec) e (L07_ e _adormec) e (L07_ e +_agradec) e (L07_ e _amanhec) e (L07_ e _anoitec) e (L07_ e _arrepend) e (L07_ e +_cresc) e (L07_ e _defend) e (L07_ e _depend) e (L07_ e +_emagrec) e (L07_ e _enlouquec) e (L07_ e _entristec) e (L07_ e _envaidec) e (L07_ e @@ -416,14 +425,13 @@ respond) e (L07_ e // cor- _p) e (quL02_ E _s) e (quL02_ E l) e (que_ E - _sug) e (rL02_ E _imp) e (rL03_ E _sev) e (rL03_ E _reit) e (rL03_ E _sinc) e (rL03_ E - _g) e (rL04_ E + g) e (rL04_ E / su- refri- + qu) e (rL04_ E / re- _op) e (rL04_ E - _qu) e (rL04_ E _alt) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E @@ -434,6 +442,7 @@ respond) e (L07_ e // cor- _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 @@ -445,6 +454,7 @@ respond) e (L07_ e // cor- _cr) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E + _p) e (squL02_ E _l) e (ssL02_ e _esp) e (ssL03_ e _c) e (stL03_ e @@ -464,6 +474,7 @@ _obsol) e (tL03_ e _embel) e (zL04_ E _acont) e (çL01_ e _arref) e (çL01_ e +_emagr) e (çL03 par) e (çL03_ e // a- re- com- rea- desa- _ado) e (çL03_ e _aqu) e (çL03_ e @@ -478,6 +489,7 @@ _arref) e (çL01_ e _ofer) e (çL03_ e abast) e (çL03_ e // re- _aborr) e (çL03_ e +_agrad) e (çL03_ e _amanh) e (çL03_ e _anoit) e (çL03_ e _enfraqu) e (çL03_ e @@ -803,6 +815,7 @@ _desabr) o (chL04_ O _c) o (pL03_ O _ens) o (pL04_ O _s) o (prL04_ O + _) o (ptL04_ O _enf) o (rquL02_ O c) o (rrL01_ o // escorra, incorra, corra, recorra _m) o (rrL01_ o @@ -1095,4 +1108,3 @@ _desabr) o (chL04_ O __) - (_D m'enUs A_) - (_D _ C_) - (_D _ - diff --git a/phsource/compile_report b/phsource/compile_report index 7f15008c..554907e8 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -64,7 +64,7 @@ consonants 10 118 id 15 127 sq 33 127 hy 23 119 - da 36 131 + da 46 139 ka 20 114 rw 15 132 pa 15 152 @@ -341,37 +341,46 @@ j2/j2u [;] base j2/xj2 [;] base j/_j [j] base [j] zh + [j] da j/j_ [j] base [j] de [j] zh + [j] da j/j@ [j] base [j] de [j/] fr [j] zh + [j] da j/ja [j] base [j] de [j/] fr [j] zh + [j] da j/je [j] base [j] de [j/] fr [j] zh + [j] da j/ji [j] base [j] de [j/] fr [j] zh + [j] da j/jo [j] base [j] de [j/] fr [j] zh + [j] da j/_j_short [j] de j/ju [j] base [j] de [j/] fr [j] zh + [j] da j/xj [j] base [j] de [j] zh + [j] da klatt/b [b] base [b] fr klatt/bh [B] base @@ -433,7 +442,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [¨\-] base +l/l@ [¨-] base [l#] base [l] fr [l/2] fr @@ -467,7 +476,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨\-] base +l/la [¨-] base [l#] base [l] fr [l/2] fr @@ -475,7 +484,7 @@ l/la [ [K] tn l/l_a [l/3] base [l/] fr -l/le [¨\-] base +l/le [¨-] base [l#] base [l] fr [l/2] fr @@ -487,7 +496,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨\-] base +l/li [¨-] base [l#] base [l] fr [l/2] fr @@ -501,7 +510,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨\-] base +l/lo [¨-] base [l#] base [l/2] fr [K] nso @@ -512,7 +521,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨\-] base +l/lu [¨-] base [l#] base [l] fr [l/2] fr @@ -712,6 +721,7 @@ r3/@tap2 [**] base [*] ko r3/@tap_rfx [r.] base r/a_ [r] da + [3-] da r/aa [R] da r/r [r] base [r-] en @@ -1497,6 +1507,7 @@ vowel/@ [@] base [U#] ga vowel/@- [@-] base [r*] hr + [@-] da vowel/& [a] en-rp [&] fi [&] et @@ -1507,6 +1518,7 @@ vowel/& [a] en-rp [ja#] ru [&] sv [&#] da + [?&#] da [&] az [a] fa vowel/0 [0] en @@ -1611,6 +1623,7 @@ vowel/a_2 [a] base2 [a] ro [a] el [a] da + [?a] da [a] rw vowel/a#_2 [a] kn [a] ml @@ -1640,6 +1653,7 @@ vowel/a_3 [a] en-sc [A] zh [a] sq [A] da + [?A] da [a:] si vowel/a#_3 [a#] en [a#] en-n @@ -2133,6 +2147,7 @@ vowel/o_2 [o:] cy [o:] no [o] vi [o] da + [?o] da vowel/o-_2 [V] en-n [V] en-wm vowel/o_3 [oU] en-sc @@ -2218,6 +2233,7 @@ vowel/oo_2 [0] en-sc [O] cy [o] cs [0] da + [?0] da [O] ak [@] ko vowel/oo_3 [O] af @@ -2388,6 +2404,7 @@ vowel/V [3] en-sc [@] bg [@] vi [W#] da + [?W#] da vowel/V_2 [V] en [a] af [V] fr @@ -2402,6 +2419,7 @@ vowel/V_3 [V] en-rp [V] pa vowel/V_4 [V] en-sc [V] da + [?V] da vowel/V_6 [V] en-us [a#] lv vowel/y [y] base2 diff --git a/phsource/ph_danish b/phsource/ph_danish index c1c3cc8d..42217af9 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -2,22 +2,72 @@ phoneme @ vowel starttype #@ endtype #@ unstressed - length 110 + length 60 FMT(vowel/@_3) endphoneme +phoneme @- // very short schwa + vowel starttype #@ endtype #@ + unstressed nonsyllabic + ipa ə + IF nextPhW(*) OR nextPhW(r) THEN + ipa NULL // @-* is used to make 'r' + ENDIF + length 40 + FMT(vowel/@-) +endphoneme + // ToDo: change [@] to [a#] if adjacent to [r] or [R] phoneme 3 vowel starttype #a endtype #a unstressed - length 110 + length 40 FMT(vowel/a#_3) endphoneme +// PB sort of schwa [ɐ] (0250+032F) +// "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d] +phoneme 3- // used for 'r' after a vowel (to create a diphthong) + liquid + lengthmod 7 + ipa ɐ̯ + FMT(r/a_) +endphoneme + phoneme i vowel starttype #i endtype #i length 150 - IfNextVowelAppend(;) +// IfNextVowelAppend(;) +IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN + glstop + length 90 +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 +ENDIF +// "siden" +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN + length 150 +ENDIF +// "lise" +IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN + length 150 +ENDIF +// PB "Bishop" +IF nextPhW(S) AND next2PhW(V) THEN + length 90 +ENDIF +// "pjækkeri", "røveri" +IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 90 +ENDIF +// "vilje" +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 90 +ENDIF FMT(vowel/i_4) endphoneme @@ -25,7 +75,7 @@ endphoneme // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i - length 95 + length 90 IfNextVowelAppend(;) FMT(vowel/i_4) endphoneme @@ -41,6 +91,42 @@ endphoneme phoneme e vowel starttype #e endtype #e 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 +// "delte", "mante", "evig" [evi] +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN + length 150 +ENDIF +// "prinsen" - TEST +IF nextPhW(n) AND next2PhW(s) THEN + length 90 +ENDIF +// "slesk", "sleske" short vowel +IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN + length 90 + ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN + length 90 +// "skriften" - very broad: short before 2 consonants + ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN + length 90 +ENDIF +// PB "ring", "ringe" +IF nextPhW(N) THEN + length 90 +ENDIF +// PB "enig", "enige", "evig" +IF nextPhW(isNotVowel) AND next2PhW(i) THEN + length 150 +ENDIF +// "labyrinter" , "labyrinten" - short followed by 2 consonants +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 60 +ENDIF FMT(vowel/e) endphoneme @@ -48,13 +134,44 @@ endphoneme // "skille" vs. "skele", "pille" vs. "pile" phoneme ?e vowel starttype #e endtype #e - length 95 + length 90 FMT(vowel/e) endphoneme phoneme E vowel starttype #e endtype #e length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +// example? +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 50 +ENDIF +// "værelse", "breve" +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN + length 150 +ENDIF +// "fest", "feste" short vowel +IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN + length 90 + ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN + length 90 +// PB knægten + ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN + length 90 +// "femten", "tænker" - very broad: short before 2 consonants + ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN + length 90 +// PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li] + ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN + length 130 +ENDIF +// "ære", "kærester", "ærefrygt" - longer E +IF nextPhW(V) THEN + length 180 +ENDIF FMT(vowel/e_mid2) endphoneme @@ -62,21 +179,57 @@ endphoneme // "læsse" vs. "læse" phoneme ?E vowel starttype #e endtype #e - length 95 + length 90 +// PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] +// Changed now [f'?E3-V] but it won't do any harm +IF nextPhW(V) THEN + length 120 +ENDIF FMT(vowel/e_mid2) endphoneme phoneme & vowel starttype #e endtype #e length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +// PB "sable", "sabler", "anede", "David" +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN + length 150 +ENDIF +// "stadig" [st&Di] +IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN + length 180 +// "stadigt" [st&Dit] + ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN + length 180 +// "latin" [l&t'in] + ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN + length 90 +ENDIF +// "ae", "aer", "dagen" vowel + vowel: extra length +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 240 +ENDIF +// "Alfie", "alfer" - short before 2 consonants +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 90 +ENDIF +// "Omaha" +IF thisPh(isWordEnd) THEN + length 90 +ENDIF FMT(vowel/ee_2) endphoneme // PB Experimental glottal a // e.g. the last a in "staldkarl" +// "sale" vs. "sal" phoneme ?& vowel starttype #e endtype #e - length 95 + length 90 FMT(vowel/ee_2) endphoneme @@ -84,44 +237,150 @@ endphoneme 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 FMT(vowel/&) endphoneme +// PB short &# +// "revl" vs. "tremme" +phoneme ?&# + vowel starttype #e endtype #e + length 90 + FMT(vowel/&) +endphoneme + phoneme a vowel starttype #a endtype #a length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) 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 vowel starttype #a endtype #a length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN + length 150 +ENDIF +// "far", "bastard" - a bit longer followed by [r] +IF nextPhW(r) THEN + length 120 +ENDIF + FMT(vowel/a_3) +endphoneme + +// PB glottal a +// "drab" vs. "drabelig" +phoneme ?A + vowel starttype #a endtype #a + length 90 +// "straffeattest", "straffe" - a bit longer after R +IF prevPhW(R) AND nextPhW(isNotVowel) THEN + length 120 +ENDIF FMT(vowel/a_3) endphoneme phoneme u vowel starttype #u endtype #u length 150 +// Short vowel followed by consonant and NOT consonant + 3 or V or @ +// "blus" vs. "bluse" and "bluser" + IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 + ENDIF +// "hue", "suge", "uge" +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 150 +ENDIF +// extra length followed by 3 or V or @ +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 240 +ENDIF +// "umulig" +IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN + length 180 +ENDIF FMT(vowel/u_bck) endphoneme // PB glottal u -// "gud" vs. "guden" - [guD] [g?D@n] +// "tude" vs. "tuden" - [tuD3] [t?uD@n] phoneme ?u vowel starttype #u endtype #u - length 95 + length 90 FMT(vowel/u_bck) endphoneme phoneme o vowel starttype #o endtype #o length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +// "tro" +IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 90 +ENDIF +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN + length 150 +ENDIF +// "modig" - long vowel after consonant + [i] +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN + length 150 +ENDIF + FMT(vowel/o_2) +endphoneme + +// PB Short o +// "patron" vs. "kone" +phoneme ?o + vowel starttype #o endtype #o + length 95 FMT(vowel/o_2) endphoneme phoneme O vowel starttype #o endtype #o length 150 +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +// PB "gået" +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN + length 150 +ENDIF +// "rådig" +IF nextVowel(i) AND nextVowel(isFinalVowel) THEN + length 180 +ENDIF FMT(vowel/o_5) endphoneme @@ -129,46 +388,151 @@ endphoneme // "toget" vs. "tåget" phoneme ?O vowel starttype #o endtype #o - length 95 + length 90 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 +// PB "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 + FMT(vowel/V_4) +endphoneme + +// PB Glottal (short) å +// "forstår" vs. "kåre" +phoneme ?V + vowel starttype #@ endtype #@ + length 100 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 FMT(vowel/oo_2) endphoneme +// ?B short 0 "sukker" +phoneme ?0 + vowel starttype #o endtype #o + length 90 + FMT(vowel/oo_2) +endphoneme phoneme y vowel starttype #i endtype #i +// experiment: changed to short from 150 length 150 +// Short vowel followed by consonant and NOT consonant + 3 or V +// "lyd" vs. "lyde" and "lyder" +IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN + glstop + length 90 +ENDIF +// "syg" [sy] +IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 90 +ENDIF +// "skyd" +IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN + length 90 +ENDIF +// "dydig" [dyDi] +IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN + length 150 +ENDIF +// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN + length 220 +ENDIF +// PB "kryster" - short y +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 80 +ENDIF +// PB "gryden" FMT(vowel/y) endphoneme -// PB glottal y +// PB Short y // "kylling" vs. "kyle", "krybbe" vs. "krybe" phoneme ?y vowel starttype #i endtype #i - length 95 + length 70 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 +ENDIF FMT(vowel/yy) endphoneme phoneme W vowel starttype #@ endtype #@ - length 150 + length 160 +// Shorter vowel when followed by consonant +IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN + glstop + length 90 +ENDIF +// "kløe" vowel + vowel: extra length +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN + length 220 +ENDIF +// "klø" short W when word ends with W +IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN + length 90 +ENDIF +// røde" W + 1 consonant + 3 or W or @ +IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN + length 160 +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 +ENDIF FMT(vowel/oe) endphoneme @@ -176,7 +540,7 @@ endphoneme // "prøv" vs. "prøve" phoneme ?W vowel starttype #@ endtype #@ - length 80 + length 95 FMT(vowel/oe) endphoneme @@ -184,12 +548,38 @@ endphoneme phoneme W# vowel starttype #@ endtype #@ 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 +ENDIF FMT(vowel/V) endphoneme +// PB short W# +// "rømme" +phoneme ?W# + vowel starttype #@ endtype #@ + length 90 + FMT(vowel/V) +endphoneme + phoneme aI vowel starttype #a endtype #i - length 250 + length 300 +IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN + glstop + length 150 +ENDIF +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN + length 300 +ENDIF +// PB "drej" vs. "dreje" +IF thisPh(isWordEnd) THEN + length 140 +ENDIF FMT(vdiph/ai) endphoneme @@ -209,25 +599,24 @@ phoneme v // approximant, not fricative voicingswitch f endphoneme - +// PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ] phoneme r // used for 'r' after a vowel (to create a diphthong) liquid lengthmod 7 - IF nextPhW(isVowel) THEN + ipa ɐ̯ + IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN ChangePhoneme(R) ENDIF FMT(r/a_) endphoneme phoneme R - lengthmod 7 + lengthmod 6 liquid ipa ʁ FMT(r/aa) endphoneme - - // don't weaken consonants at end of word or before a stop phoneme s @@ -243,11 +632,10 @@ phoneme s WAV(ufric/s) endphoneme - phoneme p vls blb stop voicingswitch b - lengthmod 2 + lengthmod 7 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 @@ -265,12 +653,10 @@ phoneme p WAV(ustop/p) endphoneme - - phoneme t vls alv stop voicingswitch d - lengthmod 2 + lengthmod 7 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 @@ -280,3 +666,28 @@ phoneme t WAV(ustop/t, 90) endphoneme +phoneme j + liquid palatal + lengthmod 7 + + IF nextPhW(isVowel) THEN + NextVowelStarts + VowelStart(j/j@) + VowelStart(j/ja) + VowelStart(j/je,-60) + VowelStart(j/ji) + VowelStart(j/jo) + VowelStart(j/ju) + EndSwitch +Vowelout len=70 + VowelEnding(j/xj, -30) + + IF prevPh(isPause) THEN + FMT(j/_j) + ENDIF + ELSE + // no vowel follows + Vowelout len=70 + FMT(j/j_) + ENDIF +endphoneme \ No newline at end of file diff --git a/platforms/windows/espeakedit/src/speech.h b/platforms/windows/espeakedit/src/speech.h index a3e9b203..26e835bf 100755 --- a/platforms/windows/espeakedit/src/speech.h +++ b/platforms/windows/espeakedit/src/speech.h @@ -28,8 +28,6 @@ //#define SPECT_EDITOR #define INCLUDE_KLATT #define INCLUDE_MBROLA -#define INCLUDE_SONIC -#define _ESPEAKEDIT #include #define PLATFORM_WINDOWS @@ -63,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); -#define N_PATH_HOME 120 +#define N_PATH_HOME 230 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/platforms/windows/espeakedit/src_copy/speech.h b/platforms/windows/espeakedit/src_copy/speech.h index a3e9b203..26e835bf 100755 --- a/platforms/windows/espeakedit/src_copy/speech.h +++ b/platforms/windows/espeakedit/src_copy/speech.h @@ -28,8 +28,6 @@ //#define SPECT_EDITOR #define INCLUDE_KLATT #define INCLUDE_MBROLA -#define INCLUDE_SONIC -#define _ESPEAKEDIT #include #define PLATFORM_WINDOWS @@ -63,7 +61,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); -#define N_PATH_HOME 120 +#define N_PATH_HOME 230 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/platforms/windows/windows_cmd/src/speech.h b/platforms/windows/windows_cmd/src/speech.h index 12532e1d..7e0179aa 100755 --- a/platforms/windows/windows_cmd/src/speech.h +++ b/platforms/windows/windows_cmd/src/speech.h @@ -36,8 +36,6 @@ #define NO_VARIADIC_MACROS #define INCLUDE_KLATT #define INCLUDE_MBROLA -#define INCLUDE_SONIC - // will look for espeak_data directory here, and also in user's home directory #define PATH_ESPEAK_DATA "/usr/share/espeak-data" @@ -45,6 +43,11 @@ typedef unsigned short USHORT; typedef unsigned char UCHAR; typedef double DOUBLEX; +#ifdef __WIN64__ +typedef uint64_t long64; // use this for conversion between pointers and integers +#else +typedef unsigned long long64; +#endif @@ -57,7 +60,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); -#define N_PATH_HOME 220 +#define N_PATH_HOME 230 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/platforms/windows/windows_dll/src/speech.h b/platforms/windows/windows_dll/src/speech.h index b7188e54..5015e288 100755 --- a/platforms/windows/windows_dll/src/speech.h +++ b/platforms/windows/windows_dll/src/speech.h @@ -39,8 +39,6 @@ #define LIBRARY #define INCLUDE_KLATT #define INCLUDE_MBROLA -#define INCLUDE_SONIC - // will look for espeak_data directory here, and also in user's home directory #define PATH_ESPEAK_DATA "/usr/share/espeak-data" @@ -48,6 +46,11 @@ typedef unsigned short USHORT; typedef unsigned char UCHAR; typedef double DOUBLEX; +#ifdef __WIN64__ +typedef uint64_t long64; // use this for conversion between pointers and integers +#else +typedef unsigned long long64; +#endif @@ -60,7 +63,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); -#define N_PATH_HOME 120 +#define N_PATH_HOME 230 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/platforms/windows/windows_sapi/src/speech.h b/platforms/windows/windows_sapi/src/speech.h index 0df7a00f..97184e68 100755 --- a/platforms/windows/windows_sapi/src/speech.h +++ b/platforms/windows/windows_sapi/src/speech.h @@ -41,8 +41,6 @@ //#define USE_NANOSLEEP #define INCLUDE_KLATT #define INCLUDE_MBROLA -#define INCLUDE_SONIC - // will look for espeak_data directory here, and also in user's home directory #define PATH_ESPEAK_DATA "/usr/share/espeak-data" @@ -50,6 +48,11 @@ typedef unsigned short USHORT; typedef unsigned char UCHAR; typedef double DOUBLEX; +#ifdef __WIN64__ +typedef uint64_t long64; // use this for conversion between pointers and integers +#else +typedef unsigned long long64; +#endif @@ -62,7 +65,7 @@ int LookupMnem(MNEM_TAB *table, const char *string); -#define N_PATH_HOME 220 +#define N_PATH_HOME 230 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 30079784..ef80088d 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -310,6 +310,11 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) p++; // skip over the zero which terminates the list for this hash value } + if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) + { + fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); + } + return(0); } // end of LoadDictionary diff --git a/src/speech.h b/src/speech.h index d4d4cb7d..876028bf 100644 --- a/src/speech.h +++ b/src/speech.h @@ -76,9 +76,9 @@ int LookupMnem(MNEM_TAB *table, const char *string); #ifdef PLATFORM_WINDOWS -#define N_PATH_HOME 220 +#define N_PATH_HOME 230 #else -#define N_PATH_HOME 150 +#define N_PATH_HOME 160 #endif extern char path_home[N_PATH_HOME]; // this is the espeak-data directory diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 9959794f..d28bb8de 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.42 06.Mar.13"; +const char *version_string = "1.46.43 07.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 4f66bb59..82b1bd82 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -217,6 +217,7 @@ static const char transpose_map_latin[] = { tr->charset_a0 = charsets[1]; // ISO-8859-1, this is for when the input is not utf8 dictionary_name[0] = 0; tr->dict_condition=0; + tr->dict_min_size = 0; tr->data_dictrules = NULL; // language_1 translation rules file tr->data_dictlist = NULL; // language_2 dictionary lookup file @@ -436,7 +437,7 @@ Translator *SelectTranslator(const char *name) int name2 = 0; Translator *tr; - static const short stress_lengths_equal[8] = {250, 250, 250, 250, 0, 0, 250, 250}; + static const short stress_lengths_equal[8] = {230, 230, 230, 230, 0, 0, 230, 230}; static const unsigned char stress_amps_equal[8] = {18,18, 18,18, 18,18, 18,18 }; static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 190, 240}; @@ -445,7 +446,7 @@ Translator *SelectTranslator(const char *name) static const unsigned char stress_amps_sk[8] = {17,16, 20,20, 20,22, 22,21 }; static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; - static const short stress_lengths_ta[8] = {240, 240, 250, 250, 0, 0, 270, 270}; + static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; // convert name string into a word of up to 4 characters, for the switch() diff --git a/src/translate.h b/src/translate.h index 5e3fa336..cae09816 100644 --- a/src/translate.h +++ b/src/translate.h @@ -555,6 +555,7 @@ typedef struct unsigned char stress_amps_r[8]; short stress_lengths[8]; int dict_condition; // conditional apply some pronunciation rules and dict.lookups + int dict_min_size; const unsigned short *charset_a0; // unicodes for characters 0xa0 to oxff const wchar_t *char_plus_apostrophe; // single chars + apostrophe treated as words const wchar_t *punct_within_word; // allow these punctuation characters within words diff --git a/src/transldlg.cpp b/src/transldlg.cpp index a71fa1ff..e79700d9 100644 --- a/src/transldlg.cpp +++ b/src/transldlg.cpp @@ -354,7 +354,7 @@ void TranslDlg::ReadVoice(int variant) wxString filename; char *p; char vname[40]; - char fname[sizeof(path_home)+10]; + char fname[sizeof(path_home)+30]; if(variant) { diff --git a/src/voice.h b/src/voice.h index 1007f5b4..2346dfb7 100644 --- a/src/voice.h +++ b/src/voice.h @@ -25,7 +25,7 @@ typedef struct { int phoneme_tab_ix; // phoneme table number int pitch_base; // Hz<<12 int pitch_range; // standard = 0x1000 - + int speedf1; int speedf2; int speedf3; diff --git a/src/voices.cpp b/src/voices.cpp index db43a34e..eea62a1a 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -106,6 +106,7 @@ enum { V_KLATT, V_FAST, V_SPEED, + V_DICTMIN, // these need a phoneme table to have been specified V_REPLACE, @@ -154,6 +155,7 @@ static MNEM_TAB keyword_tab[] = { {"klatt", V_KLATT}, {"fast_test2", V_FAST}, {"speed", V_SPEED}, + {"dict_min", V_DICTMIN}, // these just set a value in langopts.param[] {"l_dieresis", 0x100+LOPT_DIERESES}, @@ -552,9 +554,10 @@ voice_t *LoadVoice(const char *vname, int control) char phonemes_name[40]; char option_name[40]; const char *language_type; - char buf[200]; + char buf[sizeof(path_home)+30]; char path_voices[sizeof(path_home)+12]; + int dict_min = 0; int stress_amps[8]; int stress_lengths[8]; int stress_add[8]; @@ -965,6 +968,10 @@ voice_t *LoadVoice(const char *vname, int control) SetSpeed(3); break; + case V_DICTMIN: + sscanf(p,"%d",&dict_min); + break; + default: if((key & 0xff00) == 0x100) { @@ -1007,6 +1014,7 @@ voice_t *LoadVoice(const char *vname, int control) } voice->phoneme_tab_ix = ix; new_translator->phoneme_tab_ix = ix; + new_translator->dict_min_size = dict_min; LoadDictionary(new_translator, new_dictionary, control & 4); if(dictionary_name[0]==0) return(NULL); // no dictionary loaded @@ -1031,6 +1039,7 @@ voice_t *LoadVoice(const char *vname, int control) translator = new_translator; } + // relative lengths of different stress syllables for(ix=0; ix Date: Thu, 7 Mar 2013 10:58:31 +0000 Subject: [PATCH 12/24] 1.46.43 (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/voices/asia/zh | 2 ++ espeak-data/voices/asia/zh-yue | 1 + espeak-data/voices/europe/ru | 1 + platforms/windows/espeakedit/src/speech.h | 2 +- platforms/windows/espeakedit/src_copy/speech.h | 2 +- platforms/windows/make_espeak.iss | 10 +++++++++- 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/espeak-data/voices/asia/zh b/espeak-data/voices/asia/zh index 03edde41..559a6403 100644 --- a/espeak-data/voices/asia/zh +++ b/espeak-data/voices/asia/zh @@ -4,6 +4,8 @@ gender male words 1 pitch 80 118 +dict_min 100000 + //for some dialects //[en]: replace ng with n diff --git a/espeak-data/voices/asia/zh-yue b/espeak-data/voices/asia/zh-yue index 0269a98a..8e2b8a7e 100644 --- a/espeak-data/voices/asia/zh-yue +++ b/espeak-data/voices/asia/zh-yue @@ -12,3 +12,4 @@ gender male dictrules 1 words 1 +dict_min 10000 diff --git a/espeak-data/voices/europe/ru b/espeak-data/voices/europe/ru index 6be1017b..4136ab21 100644 --- a/espeak-data/voices/europe/ru +++ b/espeak-data/voices/europe/ru @@ -4,3 +4,4 @@ gender male replace 03 a a# +dict_min 20000 diff --git a/platforms/windows/espeakedit/src/speech.h b/platforms/windows/espeakedit/src/speech.h index 87fb470e..26e835bf 100644 --- a/platforms/windows/espeakedit/src/speech.h +++ b/platforms/windows/espeakedit/src/speech.h @@ -35,7 +35,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -#define USE_PORTAUDIO +//#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/espeakedit/src_copy/speech.h b/platforms/windows/espeakedit/src_copy/speech.h index 87fb470e..26e835bf 100644 --- a/platforms/windows/espeakedit/src_copy/speech.h +++ b/platforms/windows/espeakedit/src_copy/speech.h @@ -35,7 +35,7 @@ #define mkdir(p1,p2) mkdir(p1) #define PATHSEP '\\' -#define USE_PORTAUDIO +//#define USE_PORTAUDIO //#define USE_NANOSLEEP #define NO_VARIADIC_MACROS #define __cdecl diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 24368b09..53bc3866 100644 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.31 +AppVerName=eSpeak version 1.46.42 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -18,6 +18,11 @@ Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}" [InstallDelete] Type: files; Name: "{app}\espeak.dll" +Type: files; Name: "{app}\espeak-data\voices\*" +Type: filesandordirs; Name: "{app}\espeak-data\voices\en" +Type: filesandordirs; Name: "{app}\espeak-data\voices\asia" +Type: filesandordirs; Name: "{app}\espeak-data\voices\europe" +Type: filesandordirs; Name: "{app}\espeak-data\voices\other" Type: filesandordirs; Name: "{app}\espeak-data\voices\test" Type: filesandordirs; Name: "{app}\docs" @@ -161,6 +166,7 @@ begin $41: Result := 'sw'; //$44: Result := 'tt'; $49: Result := 'ta'; + $46: Result := 'pa'; $4b: Result := 'kn'; //$50: Result := 'mn'; $52: Result := 'cy'; @@ -208,6 +214,7 @@ begin 'an': value := $40a; // Aragon, use code for Spanish 'az': value := $42c; 'bg': value := $402; + 'bn': value := $445; 'bs': value := $41a; // should be $141a but Jaws crashes on startup 'ca': value := $403; 'cs': value := $405; @@ -247,6 +254,7 @@ begin 'ne': value := $461; 'nl': value := $413; 'no': value := $414; + 'pa': value := $446; 'pl': value := $415; 'pt': value := $416; 'ro': value := $418; From ad8798cf221fba48fdec2738ebccad435a8dfffc Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 8 Mar 2013 20:40:02 +0000 Subject: [PATCH 13/24] [1.46.44] Added language: ga (Irish). Languages changes: en-us, eo, hu, pt, ta, vi git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@310 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 41 ++-- dictsource/en_list | 1 + dictsource/en_rules | 4 +- dictsource/eo_rules | 321 +++++++++++++-------------- dictsource/ga_list | 245 +++++++++++++++++++++ dictsource/ga_rules | 430 +++++++++++++++++++++++++++++++++++++ dictsource/hu_rules | 78 ++++++- dictsource/ka_rules | 16 +- dictsource/pt_list | 4 +- dictsource/pt_rules | 10 +- dictsource/ta_rules | 6 + dictsource/vi_rules | 299 +++++++++++++++++++++----- phsource/compile_report | 54 +++-- phsource/j/je | Bin 1654 -> 1654 bytes phsource/ph_danish | 2 +- phsource/ph_georgian | 45 ++-- phsource/ph_irish | 239 +++++++++++++++++++++ phsource/ph_malayalam | 15 -- phsource/ph_vietnam_hue | 49 +++++ phsource/r/aa | Bin 5632 -> 5632 bytes phsource/ustop/k_asp_a.wav | Bin 0 -> 4394 bytes phsource/ustop/k_asp_e.wav | Bin 0 -> 3822 bytes phsource/ustop/k_asp_u.wav | Bin 0 -> 4224 bytes phsource/ustop/k_ejc.wav | Bin 0 -> 3972 bytes phsource/vwl_en_us/oor | Bin 2481 -> 3169 bytes src/dictionary.cpp | 27 +-- src/numbers.cpp | 59 +++-- src/phonemelist.cpp | 2 +- src/setlengths.cpp | 2 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 54 ++--- src/translate.cpp | 73 +++++-- src/translate.h | 47 ++-- src/voices.cpp | 69 +++--- 34 files changed, 1778 insertions(+), 416 deletions(-) create mode 100755 dictsource/ga_list create mode 100755 dictsource/ga_rules create mode 100755 phsource/ph_irish create mode 100644 phsource/ph_vietnam_hue create mode 100755 phsource/ustop/k_asp_a.wav create mode 100755 phsource/ustop/k_asp_e.wav create mode 100755 phsource/ustop/k_asp_u.wav create mode 100644 phsource/ustop/k_ejc.wav diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 02f7fa4a..af156f6d 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -68,7 +68,7 @@ r R R3 s S t T tS v w x z Z -Dictionary hu_dict 2013-02-25 +Dictionary hu_dict 2013-03-08 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -104,7 +104,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-06 +Dictionary en_dict 2013-03-08 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -121,7 +121,7 @@ t T t2 tS v w x z Z z# -Dictionary eo_dict 2013-01-24 +Dictionary eo_dict 2013-03-08 @- a aI aU e eI eU i o oI u uI @@ -206,7 +206,7 @@ q r r. s S s. t T t. th th. v w x z -Dictionary ta_dict 2013-03-05 +Dictionary ta_dict 2013-03-08 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -379,7 +379,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-07 +Dictionary pt_dict 2013-03-08 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -491,7 +491,7 @@ p Q r R s S t tS v w z Z -Dictionary vi_dict 2013-02-16 +Dictionary vi_dict 2013-03-08 @ @: @:I @:U @I @U a a: a:I a:U aI aU e E eU EU @@ -603,17 +603,17 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2013-03-03 +Dictionary ur_dict 2013-03-08 @ a a: aI aU e E e: i I i: O o: U u: V -: b bh c ch d D d. -dh dh. f g gh h H j -J Jh k kh l m n N -p ph Q q r R r. s -S s. t T t. th th. v -w x z Z z. +: ; b bh c ch d D +d. dh dh. f g gh h H +j J Jh k kh l m n +N p ph Q q r R r. +s S s. t T t. th th. +v w x z Z z. Dictionary bg_dict 2012-07-15 @@ -734,7 +734,7 @@ s s. S; t t. th th. tS v w z -Dictionary ka_dict 2013-02-01 +Dictionary ka_dict 2013-03-08 @ @- a e i o u @@ -884,3 +884,16 @@ d. dh dh. g gh h H j J Jh k kh l m n N n. n^ p ph r r. s S s. t t. th th. v w z + + +Dictionary ga_dict 2013-03-08 + +0 0# @ a a# A: aI aI# +aU aU# e E E# e: i I +i: i@ o O O# o: u U +U# u1 u: u@ + +: ; b c C d d[ dZ +f g h j k l m n +p Q Q" r R s S t +t[ tS v w x X z Z diff --git a/dictsource/en_list b/dictsource/en_list index 37a89107..6b276019 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -127,6 +127,7 @@ _, k0m@ _- h,aIf@n ?3 _- daS _. d0t +?3_. pi@rI@d _: koUl@n _; sEmIk'oUl@n _< lEsDan diff --git a/dictsource/en_rules b/dictsource/en_rules index 7e92b8fd..2a40b577 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -3679,8 +3679,8 @@ legged lEgId // Ab) le @L C) le (ton_ @L - Ab) ler (_ l@ - Ab) le (C_ l@ + Ab) ler (_ l3 + Ab) le (B_ l@ Ab) led (_ @Ld &) lem (ent @Lm &p) lem (ent lIm diff --git a/dictsource/eo_rules b/dictsource/eo_rules index 2b439efa..ea28016d 100644 --- a/dictsource/eo_rules +++ b/dictsource/eo_rules @@ -13,214 +13,215 @@ .group a - _) a(_ a - a a - aj aI - aŭ aU + _) a (_ a + a a + aj aI + aŭ aU .group b - _) b(_ bo - b b - -.group c - _) c(_ tso - _) ch(_ tSo - c ts - ch (K tS // foreign words - K) ch tS // foreign words - - -.group d - _) d(_ do - d d + _) b (_ bo + b b - _) d (-ro dokt'o - _) d (-rino d,okto +.group c + _) c (_ tso + _) ch (_ tSo + c ts + ch (K tS // foreign words + K) ch tS // foreign words + + +.group d + _) d (_ do + d d + + _) d (-ro dokt'o + _) d (-rino d,okto .group e - _) e(_ e - e e - ej eI - eŭ eU - + _) e (_ e + e e + ej eI + eŭ eU + .group f - _) f(_ fo - f f + _) f (_ fo + f f + + _) f (-ino fR%aUl + _) f (-lo fRaU - _) f (-ino fR%aUl - _) f (-lo fRaU - .group g - _) g(_ go - g g - gh (K dZ - + _) g (_ go + g g + gh (K dZ + .group h - _) h(_ ho - h h - hh x - - + _) h (_ ho + h h + hh x + + .group i - _) i(_ i - i i + _) i (_ i + i i + - .group j - _) j(_ jo - j j - jh (C Z - + _) j (_ jo + j j + jh (C Z + .group k - _) k(_ ko - k k + _) k (_ ko + k k + + _) k (-do kamaR'a + _) k (-dino k'amaRa + _) k (-ino k'amaRad - _) k (-do kamaR'a - _) k (-dino k'amaRa - _) k (-ino k'amaRad - .group l - _) l(_ lo - l l - ll (_ l + _) l (_ lo + l l + ll (_ l .group m - _) m(_ mo - m m - + _) m (_ mo + m m + .group n - _) n(_ no - n n - n (_S1 n + _) n (_ no + n n + n (_S1 n + + _) n (-ro num'e - _) n (-ro num'e - .group o - _) o(_ o - o o - oj oI - -) o (_ %o - -) oj (_ %oI - -) on (_ %on - -X) o (_ %o // d-ro etc - -X) oj (_ %oI - -X) on (_ %on - + _) o (_ o + o o + oj oI + -) o (_ %o + -) oj (_ %oI + -) on (_ %on + -X) o (_ %o // d-ro etc + -X) oj (_ %oI + -X) on (_ %on + .group p - _) p(_ po - p p - ph (K f // foreign words - K) ph f // foreign words - + _) p (_ po + p p + ph (K f // foreign words + K) ph f // foreign words + .group q - _) q(_ kwo - q k - qu kv - + _) q (_ kwo + q k + qu kv + .group r - _) r(_ Ro - r R - A) r (A R - K) r (A @-* - rr RR + _) r (_ Ro + r R + A) r (A R + K) r (A @-* + rr RR .group s - _) s(_ so - _) sh(_ So - s s - sh (K S // foreign words - K) sh S // foreign words + _) s (_ so + _) sh (_ So + s s + sh (K S // foreign words + K) sh S // foreign words - _) s (-ino s,injoR - _) s (-ro sinj'o + _) s (-ino s,injoR + _) s (-ro sinj'o + + _) s (-ano s'am,ide + _) s (-anino s'am,ide + + _) s (-ta_ s'ank - _) s (-ano s'am,ide - _) s (-anino s'am,ide - _) s (-ta_ s'ank - - .group t - _) t(_ to - t t - th (K T // foreign words - K) th T // foreign words + _) t (_ to + t t + th (K T // foreign words + K) th T // foreign words + + -) ta (_ t%a // s-ta = sankta - -) ta (_ t%a // s-ta = sankta - .group u - _) u(_ u - u u - uj uI - - + _) u (_ u + u u + uj uI + + .group v - _) v(_ vo - v v - + _) v (_ vo + v v + .group w - _) w(_ du'oblav,o - w w - K) wh w // foreign words - + _) w (_ du'oblav,o + w w + K) wh w // foreign words + .group x - _) x(_ ikso - x ks - _) x z // foreign words - + _) x (_ ikso + x ks + _) x z // foreign words + .group y - _) y(_ ipsilono - y j - K) y (K i - - + _) y (_ ipsilono + y j + K) y (K i + + .group z - _) z(_ zo - z z - - + _) z (_ zo + z z + + .group - _) ĉ (_ tSo - ĉ tS + _) ĉ (_ tSo + ĉ tS - _) ĝ (_ dZo - ĝ dZ + _) ĝ (_ dZo + ĝ dZ - _) ĥ (_ xo - ĥ x + _) ĥ (_ xo + ĥ x - _) ĵ (_ Zo - ĵ Z + _) ĵ (_ Zo + ĵ Z - _) ŝ (_ So - ŝ S + _) ŝ (_ So + ŝ S - _) ŭ (_ wo - ŭ w + _) ŭ (_ wo + ŭ w - - ' - + plus_ - _) ++ (_ plusplus + C) ' (_ = // word end in apostrophe, stress the last vowel - . punkto - . (. _: - \.) . +' + + plus_ + _) ++ (_ plusplus + + . punkto + . (. _: + \.) . - £ pundo - £ (_D _pundoI_: - __) - (_D minus_ - D_) - (_D st@-*ek'eto_ - A_) - (_D _ - C_) - (_D _ - --) - - - minus_ - - (_a - $ dolaRo - $ (_D _dolaRoI_: + £ pundo + £ (_D _pundoI_: + __) - (_D minus_ + D_) - (_D st@-*ek'eto_ + A_) - (_D _ + C_) - (_D _ + --) - + - minus_ + - (_a + $ dolaRo + $ (_D _dolaRoI_: diff --git a/dictsource/ga_list b/dictsource/ga_list new file mode 100755 index 00000000..b888abdf --- /dev/null +++ b/dictsource/ga_list @@ -0,0 +1,245 @@ +// Irish Gaeilge dictionary +// written by Ronan McGuirk +// January 2013 +// version 2.5 +// This file is UTF8 encoded + +// letters +// letter names, as they are spoken as a single character in text +// precede by _ to distinguish from pronunciation as a language word + +_a eI +b bi: +c si: +d di: +e i: +f Ef +g dZi: +h eItS +_i aI +j dZeI +k keI +l El +m Em +n En +_o oU +p pi: +q kju: +r ar +s Es +t ti: +u ju: +v vi: +w d'O#b@lju: +x Eks +y waI +z zEd +_á eI||f0d[@ +_é i:||f0d[@ +_ó o:||f0d[@ +_ú ju:||f0d[@ + +_#32 spA:s + + +// accent names + +// names of symbols +ª_. pO#nk +_, k0m@ +_; semI +_: ko:l0n +_! Skre:@x +_? kESt +_' u:sx0m@ +. pO#nk +% f@i:nge:@d[ + + +// numbers +_0 @nA:idZ +_1 @h'e:n +_2 @d['o: +_3 @tSR'i: +_4 @k'ah@r +_5 @ku:Ig +_6 @S'e: +_7 @S0xt[ +_8 @h'0xt[ +_9 @n@@'i: +_1X @dZ'E +_11 e:@nde:@g +_12 d[o:je:@g +_13 tr'i:de:@g +_14 kah@rde:@g +_15 ku:igde:@g +_16 Se:de:@g +_17 S0xtde:@g +_18 O#xtde:@g +_19 ni:de:@g +_20 fICe +_2X fiCE +_3X trO#x@ +_31 trO#x@he:@n + _40 d[0C@d + _4X d[0C@d@ + _41 d[0C@dahe:@n + _5X k@e:@g@ + _51 k@e:@g@he:@n +_6X Sask@ +_61 Sask@he:@n +_7X S0xto: +_71 S0xt[o:he:@n +_8X O#Xto: +_81 O#xt[o:he:@n +_9X no:x@ +_91 no:x@he:@n +_0C ke:@d[ +_1C0 ke:@d[ // exactly one hundred +_1C ke:@d[ +_101 ke:@d[@he:@n +_2C ga:Ce:@d[ +_3C tri:Ce:@d[ +_4C kEr@ke:@d[ +_5C ku:igce:@d[ +_6C Se:ke:@d[ +_7C S0xtge:@d[ +_8C O#xtg'e:@d[ +_9C ni:ge:@d[ +_0M1 mi:lE +_1M1 m'i:lE +_2M1 gA:vi:lE +_2001 gA:vi:lEs@he:@n +_2002 gA:vi:lEs@d['o: +_2003 gA:vi:lEs@tr'i: +_2004 gA:vi:lEs@kah@r +_2005 gA:vi:lEs@ku:ig +_0M2 mIlu:n +_1M2 'milu:n +_2M2 d[A:vIlu:n +_3M2 tri:vilu:n +_4M2 kEr@milu:n +_0M4 _bilu:n +_1M4 'bilu:n +_2M4 gA:vilu:n +_3M4 tri:vilu:n +_4M4 kEr@vilu:n + +_0and Is +_dpt pO#nk +//_roman Rom'ano + +//delete + + +// words +a @ +abhaile @w'0l;E +ach 0x $u +ag Eg $verbf $u +anall @n'aUl +aige @g'E +air Er +acu 0k'U +ar Er $u +arsa @rs@ +agaibh 0g@Iv +agus 0g@s +amach @m'0x +amárach @m'A:r@x +amuigh @mu1'I +amháin @w'A:in +am aUm +an @n +anois @nIS +anonn @naUn +ann aUn +anseo @nS'O +aodh e: +aodha e: +aon e:@n +(ar ais) Er'aS +arís @r'i:S +as 0s +atá @t['A: $u +baill bu1'i:l +bhaill vu1'i:l +beidh bEg +bhfuil w'Il +bhuel w'El +ceithre kEr@ +cathair k'0h@r +chathair x'0h@r +clainne kl'InE +chlainne xl'InE +chun xUn $u +crainn kri:n +de dE $u+ +des dEs $u + +dhaoibh ji:v +di dI $u+ +do dO# $u +domhnach d[aUn@x +domhnaigh d[aUnig +eile 'El@ +euro ju:ro: +faic f@ak + faide f@Id[E +faigh faIg + feadh fag +fear f'ar +gcathair g0h@r +gan g0n $u + gheall jaUl + (go raibh maith) g@r@m0h + (go raibh míle) g@r@mi:l@ +gur gUr $u +i I $u +in In $u +ina In@ $u +ins Ins $u + inniu Inj'u:v + irish _^_EN + is 'Is $u + (is ea) IS'a + isteach IstS'0x + iúl ju:l + laoghaire li:@r@ +le lE $u + leí le:i: +(maigh eo) mu1'i:||'o: +(muigheo) mu1'i:||'o: +mhuigh vu1'i: +(mhaigh eo) vu1'i:||'o: +maith m'0 +mhaith w'0 + mbeadh m;O#X +mo mO# $u +mura mUr@ $u +ná nA: $u + nigh ni: + níorbh ni:rv + nó nu: $u + nollag n@l@g + nolaig nO#lig +Oirghiall 'Err@X@l +orthu O#rhu +os o:s +rabh raU +raibh rEv +réamhrá r'e:@vr,a: +réidh re: +samhain saUIn + san s@n + seo S@_ + tabhair t'u:@r + (tiocfaidh ár lá) tSO#ki:|'A:r|l'A: + + // temporary fix for NO#DA punctuation +dot pO#nk +comma k0m@ +dash flESki:n +tick u:@sx0m@ +space spA:s + \ No newline at end of file diff --git a/dictsource/ga_rules b/dictsource/ga_rules new file mode 100755 index 00000000..04b8ddc2 --- /dev/null +++ b/dictsource/ga_rules @@ -0,0 +1,430 @@ +// translation rules for Irish Gaeilge +// This file is UTF-8 encoded +// written by Ronan McGuirk January 2013 +// Version 2.5B + + + +.L01 e i é í // slender vowels +.L02 c ch d g gh n s // following ea gets ; sounds +.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid +.L04 b bh mb // for words like beag +.L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a +.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h +.L07 b c g ch bh gh mb +.L08 lc ll nt bhse // for words like cailc +.L09 cl cr chr f +.L10 c ch p ph gl ghl +.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai +.L12 á é ó eo ua // when followed by i +.L13 oc omb +.L14 río dún gnío // followed with mh +.L15 c ch f m d dh g gc gh mh // aoi following +.L16 b c bh ch gr ghr // for inn word ending +.L17 l le li niste nn +.L18 n nt nte neann neadh ntear nim nfear nfinn +.L19 na nea ra rea la llea arga // word endings with silent dh +.L20 eo eoir eá eabh io iu iú // slender m +.L21 ll nn ndán nntán +.L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine +.L23 ea eo i +.L24 b mb bh g gh p ph bp m mh +.group a + a 0# + a (_ @ + adh (a aI // words like radharc + adh (C aI + abht aU#t[ + amhr aUr // words like amhras + K) amhl aUl + abhra aUr@ // words like slabhra + aghaidh aIg + t) abhair u:@r + th) abhair u:@r + t) abhar u:@r + th) abhar u:@r + _) an (sL01 @n + _) an (- 0n // an prefix + é) a @ // words like féach + X) a (nn_ aU# + X) a (ll_ aU# + abha aU@ + am (pla aUm + ama(_ aU#m@ + athair 'ah@r + _) amh aU +agha aI@ + agh (d aI + agh (s aI + _) ath 0h + + ai (m_ @ + aí i: + aoi @i: + _) aoi i: + ath) aoi (r 'i:@ + r) aoi (nín 'e:@ + aoicht (_ 'i:@xt[ + C) ao (C @e:@ + _L24) ao (C w'e:@ + C) ao (th_ @e: + b) ao (++ we:@ + b) ao (th_++ we: + ao @e + _) ao e: + ae e: + amhna (_ aUn@ + +.group á + á A: + @) á ,A: + ádh A: + áthair (_ A:h@r + áthar A:h@r + ái (p A: + áinig A:nIg + ái 'A:i +.group ai + ai a# + L04) ai (L17 0# + aile (_ '0l;E // words like baile + Xc) ai (l '0# + ch) ai (l '0# + m) ai (n 0# + c) ai (th 0# + ch) ai (th 0# + ai (d 0# + p) ai (l 0# + @) ai (L11_ I + ai (L08+ aI# + c) ai (l_ I + ai (msi 'aI // words like aimsir + _L04) ai (L18_++ u1'I//words like bain + c) ai (t_ u1'I + s) ai (bh E + aighre aIr@ + X) aigh 'aI + aigh aI# L04) aill (_ wi:l + aing (_ Ing +.group b + b b // broad + L01) b b; // slender + b (L22 bj //slender + bh v // broad + bh (_ vv + bh (L22 vj // slender + L01) bh v + _) bhf v /urú broad + _) bhf (L22 v; // urú slender + _) bp b //urú broad + _) bp (L01 b; // urú slender + a) bh (a U// for example cabhair + ear) bha u: // words like Cearbhall + bhfaigh v'aI + +.group c + c k + c (L01 k; // slender + ch x + ch (L01 C; + ch (é+ C; + ch (ei+ x; + _) cabhr k'aUr + _) chabhr x'aUr + +.group d + d d[ // broad + L01) d dZ // slender + d (L22 dZ //slender + d (L01 d; //slender + i) d (i dZ + dh Q // broad + dh (ui Q //broad + dh (ao Q //broad + dh (L01 j // slender + _) dt d[ //broad urú + _) dt (L01 dZ // slender urú + _) d' (@P2 d + i) dh (_ g + a) dh (_ X + o) dh (_ X + L19) dh (_ // silent dh at wrd end + Va) dh (_+ + deartháir dr@h'A:r + dheartháir gr@h'A:r + deirfiúr d;r@f'u:r + dheirfiúr g;r@f'u:r + +.group e + e E# + eá A: + ei E + eidh (C aI + r) ei (m aI + eighea aI + eighea aI + eigh aI + + + eo o: + eogh o: + d) eo (ch O# + _) eo (ch O# + s) eo (_ @ + +.group é + é 'e: + éi 'e: + _) éi (rig aI // words like éirigh + _) éi (rí aI // words like éirí + _) éireoidh aIro:Ig + éacs e:@ks +.group ea + ea a# + X) ea (L21_ aU + ea (ltaine aU + g) ea (ll aU +X) ea (ch 0 + _L04) ea (g @ + _L04) ea (dh_ @ + _L04) eagn @gn + L04) eaga (_ @g@ + eaghl aIl + eabhra aUr@ // words like Feabhra + eanbhean 'an@v,an + eadhb aIb + +.group f + f f // broad + f (L22 f; // slender + fh //silent + fh (éin_ h + fh (L22 ; //slender + @) f (L06_ h + +.group g + g g // broad + g (L01 g; // slender + _) gh Q" + _) gh (L01 Q"j + _) gc g // urú broad + _) gc (L01 g; // urú slender + i) gh (_ g + @C) gh (@ X + _) gn g@n + gh(n X@ + gheobh j'o: + gabh gaU +.group h + h h // silent + +.group i + i I + _) i I + ia i@ + ia (tha i: + io O# + _) io (nadh u:// words like ionadh + _pr) io (n u: + L16) inn (_ i:n + iai i:i + impeall i:mp@l + io (s I //words like fios and liosta + L12) i i // non syllabic short i after long vowel + iú u: + m) i (d_ i: // verb ending + +.group k + k k + +.group l + l l // broad + L01) l ( l; // slender + l (L23 l; //slender + ll l + ll (L23 l; + l (g l@ + l (b l@ +.group m + m m // broad + m (L20 m; //slender + mh v + mh (L20 v; // slender + _) mb m //urú + _) mb (L22 m; // urú slender + _) m (n m@// words like mná + L14) mh v + _) mh (n v@ + léir) mheas vas + r) m @m // words like gorm + +.group n + n n // broad + n (L01 n; // slender + _) nd n // urú + _) nd (L01 n; // urú slender + nn n + nn (L01 n; // slender + n (b n@ + n (m n@ + n (bh n@ n(ch n@ + c) n @n + ch) n @n +.group o + o O# + _) o 'O + C) o (cht_ 'O + orn (_ 'Or@n + + _C) omh o: + _CC) omh o: + omha o:@ + omhai o:@ + o (ll_ aU + C) o (nn_ aU + r) o (nn_ O# + C) ogh aU + omhan(_ aU@n + omhain (_ aUIn + odha aU + opaic @pIk + C) odh (_ o: + odl (a O#l + oí i: + +.group ó + ó 'o: + ómhai o:@ + +.group oi + oi O + _L15) oi (+ @'I + _) oi (b I + oi (de I + h) oi (b I + _) oi (r I + r) oi I + l) oi (n I + f) oi (lC aI + l) oi (g I + fh) oi (lC aI + s) oi (ls aI# + c) oi (c aI# + oi (nnío @ + oi (mis @ + ois (++ O#S + oill w'i:l + _) oi (leá 'I + oidh aI + oir (_ 'ERR + oigh (ea aI +.group p + p p // broad + ph f //broad + p (L22 p; //slender + ph (L20 f; // slender + +.group q + q k + qu k + +.group r + r r // broad + L01) r R // slender + _) r (L01 R + L12i) r (e_ Z + L12i) r (t_ Z + rr R + rg r@g +L01) rg R@g // slender + r (bh r@ + ríomh ri:@v + s) r (A R + _) ramh raU + +.group s + s s // broad + L01) s S // slender + s (L01 S // slender + s (cL01 S + s (CCL01 S // slender + s (pCé s // broad + sh h + sh (CL01 h + sh (L01 h; + s (lL01 S + +.group t + t t[ // broad + L01) t c // slender + t (í++n tS //slender + t (eo++ tS + t (L01 c // slender + L01C) t tS //slender after consonant + t (CL01 tS // slender with following consonant before vowels + th h + th (L01 h; + L01C) th h + _) ts t[ //eclipsis broad + _) ts (L01 t; // eclipsis slender + L01) th h + taine (_ t[In%E + ao) th (_ + thne (_ h@nE + A) th (_ // silent th at word end + +.group u + u U# + ua u@ + uai u@ + uai (g ui + uai (d ui + uá u:'A: + ui I + uinn (_ 'i:n + uinti U#'i:ntI + _b) uí wi: + _bh) uí wi: + g) uí wi: + umh u: + L03) ui @I + _d) u (l_ O# + g) ui (gh_ @i: + gh) ui (gh_ @i: + uí i: + uachai 'ux@ +.group ú + ú u: + únmh u:nv + + úi (r u: + +.group j + j dZ + +.group q + q k + qu (A kw + +.group v + v v + +.group w + w w + +.group x + x ks + _) x z + +.group y + y (A j + _A) y j + y i + +.group z + z z + +.group + í 'i: + + diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 0596e36c..53de3bc1 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -173,6 +173,8 @@ nyargon) c (cs ts udvaron) c (ser ts pere) c (cs ts licen) ccs ts|tS + nyol) c (csat ts + pokró) c (sá ts .group ch anar) ch (i h @@ -452,6 +454,11 @@ szomszé) d (sor d herná) d (sz d szaba) d (szent d for) d (jános d + egye) d (szám d +shetlan) d (szige d + szaba) d (szem d + _tren) dsz (e d|s + vakon) d (sz d .group dz fogó) dz (kod ts @@ -502,6 +509,7 @@ kapáló) dz z gyűrű) dz (ik z burkoló) dz z + .group e e E 000_-) el (_ REl // double R for 1000-el @@ -630,6 +638,12 @@ szentsé) g (gy g világossá) g (gy g vilá) g (gy g virá) g (gy g +csilla) g (gy g +édessé) g (gy g + ge) g (gyár g + han) g (gy g +hazugsá) g (gy g + tőze) g (gy g .group gy gy J @@ -1005,7 +1019,8 @@ szivárvá) ny (játsz n^ utá) n (nyom n verse) ny (játék n^ _elle) n (jav n -vagyo) n (jog n + vagyo) n (jog n + nny (elv n|n^ .group o o o @@ -1064,7 +1079,7 @@ vagyo) n (jog n s S s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme s-) sz //but not need spokening second sz phoneme -dns-) sz s + dns-) sz s föld) s (ánc S ?1 hel) s (inki z ki) s (ebb SS @@ -1146,6 +1161,7 @@ _tetszé) s S ki) s (sziget S ki) s (szőlő S körö) s (szeg S +kolbászo) s S .group ss ssz ss2 @@ -1640,9 +1656,47 @@ _kemene) ssz Ss _szamo) ssz Ss _szilvá) ssz Ss _vámo) ssz Ss -keresé) ssz Ss -cipő) ssz Ss -szorongá) ssz Ss +keresé) ssz Ss + cipő) ssz Ss +szorongá) ssz Ss +alkalmazá) ssz Ss + kezdé) ssz Ss + edzé) ssz Ss + egye) ssz (ám Ss +felsorolá) ssz Ss + ssz (ürk Ss + ssz (őke Ss +formán) ssz (int Ss + hami) ssz (ín Ss + mászá) ssz (erű Ss + hárma) ssz Ss + hívá) ssz Ss +hivatkozá) ssz Ss + leve) ssz Ss + _hú) ssz (öv Ss +ismétlé) ssz Ss + járá) ssz Ss +kattintá) ssz Ss + _ki) ssz (öv Ss +közlekedé) ssz Ss + laká) ssz Ss + légzé) ssz Ss + _le) ssz (ab Ss +meglepeté) ssz Ss + nyila) ssz Ss +pszichológu) ssz Ss + ráko) ssz Ss + ritmu) ssz Ss + rúzso) ssz Ss + stílu) ssz Ss + víru) ssz Ss +szállodá) ssz Ss + taxi) ssz Ss + ugrá) ssz Ss +üstökö) ssz Ss +visszaélé) ssz Ss + esé) ssz (erű Ss + webe) ssz Ss .group sz sz s @@ -1699,6 +1753,10 @@ fáklyá) sz (ene Sz para) szts (üte st|S para) sztsz (ag st|s para) szts (uhan st|S + sz (avar S|z + pénze) sz (k s +ellenállá) sz (ón Sz + ré) sz (árás Sz .group t t t @@ -1842,7 +1900,7 @@ szögle) t (szob t vizi) t (szob t zár) t (szék t szé) t (szortír t -_robo) t (szoftve t + _robo) t (szoftve t .group tj C) tj c @@ -1929,7 +1987,7 @@ természe) tj (og tj _tisztele) tj (el tj zené) tj (átsz tj szen) tj (akab tj -közérze) tj (aví tj +közérze) tj (aví tj .group ts ts (_S2 tS //general rule with word end of ts letters @@ -2144,8 +2202,8 @@ felira) ts (áv t|S pö) tsz (en ts: _á) tsz (orult t|s leme) tsz (vén ts -_cha) tsz (ob t|s -robo) ts (of t|S + _cha) tsz (ob t|s + robo) ts (of t|S .group tt tt t: @@ -2411,6 +2469,8 @@ csatlako) z (tok s tí) z (sáv z _tí) z (shill z topá) z z + dör) zsz (ör Z|z + raj) z (sabl z .group $ dolla:R2 diff --git a/dictsource/ka_rules b/dictsource/ka_rules index 729321d4..d1f35a70 100755 --- a/dictsource/ka_rules +++ b/dictsource/ka_rules @@ -139,14 +139,14 @@ ჺ // For cyrillic characters (U+0400 to U+04FF) use Russian voice -.group 0xd0 - 0xd0 _^_RU -.group 0xd1 - 0xd1 _^_RU -.group 0xd2 - 0xd2 _^_RU -.group 0xd3 - 0xd3 _^_RU +//.group 0xd0 +// 0xd0 _^_RU +//.group 0xd1 +// 0xd1 _^_RU +//.group 0xd2 +// 0xd2 _^_RU +//.group 0xd3 +// 0xd3 _^_RU .group $ dolari diff --git a/dictsource/pt_list b/dictsource/pt_list index 792df1d7..2638dd55 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -651,7 +651,6 @@ antonieta $alt2 apego $alt2 $noun apelo $alt $verb aposto $alt $verb -apreço $alt2 aperto $alt2 $noun apoio $alt $verb aprovo $alt @@ -713,6 +712,7 @@ choro $alt2 $noun chovesse $alt2 chupeta $alt2 clamores $alt2 +clero $alt coco $alt2 cofre $alt cogumelo $alt @@ -910,6 +910,7 @@ palacete $alt2 palheta $alt2 panfleto $alt2 pangeia $alt +panqueca p,&~Nk'Ek& pantera $alt paralelo $alt parede $alt2 @@ -932,7 +933,6 @@ portos $alt pose $alt2 povos $alt poxa p'oS& -preço $alt2 primavera $alt provo $alt quarteto $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 66d631df..b30bdb2c 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -1,4 +1,5 @@ // translation rules Brazilian +// translation rules Brazilian // This file is UTF-8 encoded // Options @@ -365,6 +366,8 @@ _compreend) e (L06_ e _entend) e (L06_ e _estend) e (L06_ e respond) e (L06_ e // cor- +_enraivec) e (L07_ e +_espairec) e (L07_ e bat) e (L07_ e // re- com- ced) e (L07_ e // pro- con- su- met) e (L07_ e // co- pro- arre- re- intro- compro- sub- @@ -416,7 +419,9 @@ entend) e (L07_ e preend) e (L07_ e // sur- com- respond) e (L07_ e // cor- qu) e (brL04_ E + acel) e (rL04_ E / des- _hosp) e (dL03_ E + _in) e (ptL03_ E _gr) e (gL03_ e _n) e (grL03_ e _estr) ei (L03_ EI @@ -449,6 +454,7 @@ respond) e (L07_ e // cor- _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e +_enraiv) e (çL03_ e _p) e (sL01_ E _d) e (scL02_ E _cr) e (scL02_ E @@ -485,8 +491,10 @@ _emagr) e (çL03 conh) e (çL03_ e // re- _esqu) e (çL03_ e _forn) e (çL03_ e - _obed) e (çL03_ e + obed) e (çL03_ e / des- _ofer) e (çL03_ e + pr) e (çL03_ e / a- +_espair) e (çL03_ e abast) e (çL03_ e // re- _aborr) e (çL03_ e _agrad) e (çL03_ e diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 09a0695d..fbf38c5c 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -1015,6 +1015,7 @@ _தணிகா) ச (ல tSV _) ச (வான tSV _) ச (ாக்கட்டி tS _) சாக்ப (ீL04 tSa:kp + _) சாக்லெட் tSa:klet. _) சாக்லேட் tSa:kle:t. _) சா (ட்டர்ஜி tSe: _) ச (ாணக்கிய tS @@ -1048,12 +1049,14 @@ _தணிகா) ச (ல tSV ஆ) ச (ாரங்கள tS ஆ) ச (ாரத் tS ஆ) ச (ாரம tS + _சிவா) ச (ாரி tS _ரங்கா) ச (ாரி tS _வரதா) ச (ாரி tS _வேதா) ச (ாரி tS _கிருஷ்ணமா) ச (ாரி tS _தேசிகா) ச (ாரி tS _பட்டா) ச (ாரி tS +_மத்வா) ச (ாரி tS அனந்தா) ச (ாரி tS அன்னமா) ச (ாரி tS ஆ) ச (ாரிய_ tS @@ -2406,6 +2409,7 @@ _சி) த்ரலேக (ா trVle:k _) ப (ட்டக்ஸ bV _) ப (ட்டன bV _) ப (ட்டன_ pV + _) ப (ட்டாசாரி bV _) ப (தில bV _) பத்த (ிரகாளி bVdd _) பத்திரப் (_ bVttirVp @@ -2814,6 +2818,7 @@ _விளையாடு_) ப (ாம்பே p _) ப (ிடில f _) ப (ிட்சு b _) ப (ிட்டடி b + _) பிந்தி (ரன்வாலே bind _) ப (ினாமி b _) ப (ினிஷ f _) ப (ின்_லேடன b @@ -3744,6 +3749,7 @@ _ஞானப்) பிரக (ா prVk _மL06ாப்) பி (ரப p வீண்) பி (ரமை b துஷ்) பி (ரயோக p + _சொற்) பி (ரயோக p L03ந்தப்) பி (ரளய p _சொற்) பி (ரவாக p எக்ஸ்) பிர (ஸ pre diff --git a/dictsource/vi_rules b/dictsource/vi_rules index fa8ef8d3..7c7c4769 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -77,28 +77,42 @@ ỵ ỵ //================================ // Consonants //================================ +.L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve +.L02 n + .group b b b _) b _b +//b($w_alt2 _^_EN .group c c g //k c (_ kh ch c // try [tS;] [tS] [c] - - + ce (_ _^_EN + _) cl _^_EN + + + .group d d J^ // try [z] [J] [dZ] [dZ;] [J^] + d (_ _^_EN + + .group đ đ d _) đ _d + + .group f - f f - - + //f f + _) f _^_EN + f (_ _^_EN + + .group g g Q // try [g] [Q] gh Q // or [g] [Q] @@ -107,7 +121,7 @@ ỵ ỵ //g (í J^ //g (ỉ J^ //g (ĩ J^ - //g (ị J^ + //g (ị J^ gi J^ ?1 giết J^'iE3g giết J^'iE3t[ @@ -115,25 +129,35 @@ ỵ ỵ ?1 giệt J^'iE6g giệt J^'iE6t[ giệc J^'iE6kh + _) gol _^_EN + _) gat _^_EN + ght (_ _^_EN + .group h h h - - + + .group j j Z .group k k k - k (_ kh + //k (_ kh kh x - + k (_ _^_EN + + .group l l l + l (_ _^_EN + le (_ _^_EN + .group m m m + .group n n n @@ -141,49 +165,75 @@ ỵ ỵ ng N ngh N nh n^ + nd (_ _^_EN + .group ñ ñ n^ - + + .group p p p ph f - + + .group q q k q (_ kh qu w //kw + .group r r z. // try [z] [z.] [r] [z;] + r (_ _^_EN + rm (_ _^_EN + .group s s s. // try [s.] [s] [S] + _) sh _^_EN + s (_ _^_EN + st (_ _^_EN + se (_ _^_EN + .group t t t[ ?1 t (_ g th t tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] + ts (_ _^_EN + te (_ _^_EN + th (_ _^_EN + tt (_ _^_EN + .group v v v - + ve (_ _^_EN + + .group w w w - + _) w _^_EN + w (_ _^_EN + + .group x x s + x (_ _^_EN + .group z z z + z (_ _^_EN - - - + //================================ // Vowels //================================ + + .group a a a: @@ -211,92 +261,122 @@ ỵ ỵ aủ aU4 aũ aU5 aụ aU6 + a (L01 _^_EN + ai (L02 _^_EN + .group à à a:2 ài a:I2 ày aI2 ào a:U2 àu aU2 - + + .group á á a:3 ái a:I3 áy aI3 áo a:U3 áu aU3 - + + .group ả ả a:4 ải a:I4 ảy aI4 ảo a:U4 ảu aU4 - + + .group ã ã a:5 ãi a:I5 ãy aI5 ão a:U5 ãu aU5 - + + .group ạ ạ a:6 ại a:I6 ạy aI6 ạo a:U6 ạu aU6 - + + //================================ .group ă ă a + + .group ằ ằ a2 + + .group ắ ắ a3 + + .group ẳ ẳ a4 + + .group ẵ ẵ a5 + + .group ặ ặ a6 - + + //================================= .group â â @ ây @I - âu @U1 + âu @U1 + + .group ầ ầ @2 ầy @I2 ầu @U2 + + .group ấ ấ @3 ấy @I3 ấu @U3 + + .group ẩ ẩ @4 ẩy @I4 ẩu @U4 + + .group ẫ ẫ @5 ẫy @I5 ẫu @U5 + + .group ậ ậ @6 ậy @I6 ậu @U6 - + + //=========================== .group e e E @@ -306,56 +386,78 @@ ỵ ỵ eỏ EU4 eỗ EU5 eọ EU6 + e (L01 _^_EN + ey (_ _^_EN + .group è è E2 èo EU2 + + .group é é E3 éo EU3 + + .group ẻ ẻ E4 ẻo EU4 + + .group ẽ ẽ E5 ẽo EU5 + + .group ẹ ẹ E6 ẹo EU6 - + + //============================ .group ê ê e êu eU1 + + .group ề ề e2 ều eU2 + + .group ế ế e3 ếu eU3 + + .group ể ể e4 ểu eU4 + + .group ễ ễ e5 ễu eU5 + + .group ệ ệ e6 ệu eU6 - - + //============================ + .group i i i i (A j @@ -383,40 +485,46 @@ ỵ ỵ iểu iU4 iễu iU5 iệu iU6 + i (L01 _^_EN + .group ì ì i2 ì (A j2 ìa i@2 ìu iU2 - + + .group í í i3 í (A j3 ía i@3 íu iU3 - + + .group ỉ ỉ i4 ỉ (A j4 ỉa i@4 ỉu iU4 - + + .group ĩ ĩ i5 ĩ (A j5 ĩa i@5 ĩu iU5 - + + .group ị ị i6 ị (A j6 ịa i@6 ịu iU6 - - - + + //========================= + .group o o O oa o@ // modify oa sound example: hoa,khoa // o (A w @@ -428,13 +536,17 @@ ỵ ỵ oị OI6 ong O# oe o& // Adding oe sound example: lóe sáng,toét mắt - + o (L01 _^_EN + + .group ò ò O2 òi OI2 òa o@2 //ò (A w2 òng O#2 òe o&2 + + .group ó ó O3 @@ -442,6 +554,8 @@ ỵ ỵ óa o@3 //ó (A w3 óng O#3 óe o&3 + + .group ỏ ỏ O4 @@ -449,6 +563,8 @@ ỵ ỵ ỏa o@4 //ỏ (A w4 ỏng O#4 ỏe o&4 + + .group õ õ O5 @@ -456,6 +572,8 @@ ỵ ỵ õa o@5 //õ (A w5 õng O#5 õe o&5 + + .group ọ ọ O6 @@ -463,75 +581,98 @@ ỵ ỵ ọa o@6 //ọ (A w6 ọng O#6 ọe o&6 - + + //============================= + .group ô ô o ôi oI ông o# // ông sound - + + .group ồ ồ o2 ồi oI2 ồng o#2 + + .group ố ố o3 ối oI3 ống o#3 + + .group ổ ổ o4 ổi oI4 ổng o#4 + + .group ỗ ỗ o5 ỗi oI5 ỗng o#5 + + .group ộ ộ o6 ội oI6 ộng o#6 - - - + + + //============================= + .group ơ ơ @: ơi @:I ơu @:U + + .group ờ ờ @:2 ời @:I2 ờu @:U2 + + .group ớ ớ @:3 ới @:I3 ớu @:U3 + + .group ở ở @:4 ởi @:I4 ởu @:U4 + + .group ỡ ỡ @:5 ỡi @:I5 ỡu @:U5 + + .group ợ ợ @:6 ợi @:I6 ợu @:U6 - - + + //============================= + .group u u u u (A w @@ -561,12 +702,19 @@ ỵ ỵ uỗi u@j5 uội u@j6 //ung u# + u (L01 _^_EN + ui (L01 _^_EN + ua (L01 _^_EN + + .group ù ù u2 ù (A w2 ùi uI2 ùa u@2 //ùng u#2 + + .group ú ú u3 @@ -574,6 +722,8 @@ ỵ ỵ úi uI3 úa u@3 //úng u#3 + + .group ủ ủ u4 @@ -581,6 +731,8 @@ ỵ ỵ ủi uI4 ủa u@4 //ủng u#4 + + .group ũ ũ u5 @@ -588,6 +740,8 @@ ỵ ỵ ũi uI5 ũa u@5 //ũng u#5 + + .group ụ ụ u6 @@ -595,8 +749,10 @@ ỵ ỵ ụi uI6 ụa u@6 //ụng u#6 - + + //============================= + .group ư ư y ưi yI @@ -620,38 +776,49 @@ ỵ ỵ ưởu y@w4 ưỡu y@w5 ượu y@w6 + + .group ừ ừ y2 ừi yI2 ừa y@2 ừu yw2 + + .group ứ ứ y3 ứi yI3 ứa y@3 ứu yw3 + + .group ử ử y4 ửi yI4 ửa y@4 ửu yw4 + + .group ữ ữ y5 ữi yI5 ữa y@5 ữu yw5 + + .group ự ự y6 ựi yI6 ựa y@6 ựu yw6 - - + + +//============================= .group y y i @@ -669,35 +836,49 @@ ỵ ỵ yễ i@5 yệ i@6 // yêu i@U + + .group ỳ ỳ i2 ỳ (A j2 ỳa i@2 + + .group ý ý i3 ý (A j3 ýa i@3 + + .group ỷ ỷ i4 ỷ (A j4 ỷa i@4 + + .group ỹ ỹ i5 ỹ (A j5 ỹa i@5 + + .group ỵ ỵ i6 ỵ (A j6 ỵa i@6 + + +//============================= .group 0xce // Greek letters // 0xce is the first byte of the utf-8 code for these characters - + + α a:1n_|f'a:1 ά a:1n_|f'a:1 β b'e1_|t['a:1 @@ -717,9 +898,12 @@ ỵ ỵ ν nw'i1 ξ s'i7 ο o1_|m'i1_|kz.'O7n + + .group 0xcf // Greek letters - + + π p'i1 ρ z.'o1 σ s'i3c_|m'a:1 @@ -733,26 +917,29 @@ ỵ ỵ ω o1_|m'e1_|Q'a:7 ώ o1_|m'e1_|Q'a:7 ό o1_|m'i1_|kz.'O7n - + + + + .group % f'@2n||cr'am ! _:c'@3m_|t'a:7n_: - ! (\! + ! (\! // : koUl@n D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 $ d'o||l'a != x'o#_|_b'a2N_ >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N - - + + __) - (_D cr'y2 A_) - (_D _ C_) - (_D _ - - + . c'@3m_ . (. _: - \.) . - + \.) . + + diff --git a/phsource/compile_report b/phsource/compile_report index 554907e8..fa7f3990 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -65,7 +65,7 @@ consonants 10 118 sq 33 127 hy 23 119 da 46 139 - ka 20 114 + ka 20 115 rw 15 132 pa 15 152 prs 8 113 @@ -85,7 +85,7 @@ consonants 10 118 bo 10 154 kk 20 118 fa 9 112 - ga 21 127 + ga 29 133 tt 23 120 ko 15 116 kl 18 119 @@ -332,13 +332,21 @@ h/hu [h] base h/hu_fi [h] fi [h] mt j2/_j2 [;] base + [;] ga j2/j2@ [;] base + [;] ga j2/j2a [;] base + [;] ga j2/j2e [;] base + [;] ga j2/j2i [;] base + [;] ga j2/j2o [;] base + [;] ga j2/j2u [;] base + [;] ga j2/xj2 [;] base + [;] ga j/_j [j] base [j] zh [j] da @@ -442,7 +450,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [¨-] base +l/l@ [¨\7] base [l#] base [l] fr [l/2] fr @@ -476,7 +484,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨-] base +l/la [¨\7] base [l#] base [l] fr [l/2] fr @@ -484,7 +492,7 @@ l/la [ [K] tn l/l_a [l/3] base [l/] fr -l/le [¨-] base +l/le [¨\7] base [l#] base [l] fr [l/2] fr @@ -496,7 +504,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨-] base +l/li [¨\7] base [l#] base [l] fr [l/2] fr @@ -510,7 +518,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨-] base +l/lo [¨\7] base [l#] base [l/2] fr [K] nso @@ -521,7 +529,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨-] base +l/lu [¨\7] base [l#] base [l] fr [l/2] fr @@ -841,6 +849,7 @@ ufric/tlh [K] nso ufric/x [x] base ufric/x2 [x2] af [x] ku + [Q2] ka [X] kk ufric/x_hr [x] base [x] hr @@ -849,6 +858,7 @@ ufric/x_sr [h#] sr [x#] sr ufric/xx [X] base [Q"] base + [Q] ka ustop/c [c] base ustop/k [k] base [k] fr @@ -862,9 +872,12 @@ ustop/k_ [k] base ustop/k_asp [kh] consonants [gh] hi [kh] zh + [k#] ka [kh] tn ustop/k_asp2 [kh2] ml - [k#] ka +ustop/k_asp_a [k#] ka +ustop/k_asp_e [k#] ka +ustop/k_asp_u [k#] ka ustop/k_ejc [k`] am ustop/ki [k] base [k] base2 @@ -887,7 +900,6 @@ ustop/kl [k] base [k] lv [k] el [k] zhy - [k#] ka [kh] tn ustop/kr [k] base [k] base2 @@ -953,8 +965,6 @@ ustop/p_unasp_ [p-] consonants [p] vi [p] sq ustop/q [q] base -ustop/q2 [q] ka -ustop/q2_i [q] ka ustop/q_u [q] base ustop/t [t] base [t] en-us @@ -1179,6 +1189,7 @@ vdiph/ai [aI] base2 [aI] hy [aI] da [aI] te + [aI] ga [aI] kl vdiph/ai_2 [aI] en [aI] cy @@ -1213,6 +1224,8 @@ vdiph/au_4 [aU] base2 [aU] lt [aU] sk [aU] id + [aU] ga + [aU#] ga vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en @@ -1266,7 +1279,6 @@ vdiph/eu_2 [eu] fi vdiph/@i [Yi] et [@I] vi [@:I] vi - [@I] ga vdiph/&i [&i] fi [&i] et [aI] hi @@ -1422,6 +1434,8 @@ voc/dh_ [D] base voc/j [J^] base voc/Q [Q] base [Q^] base + [Q] ka + [Q2] ka voc/Q_ [Q] base [Q^] base [Q] nl @@ -1500,11 +1514,7 @@ vowel/@ [@] base [@] wo [@:] wo [@] te - [@] ga - [E#] ga - [I#] ga - [O#] ga - [U#] ga + [@/] ga vowel/@- [@-] base [r*] hr [@-] da @@ -1654,6 +1664,7 @@ vowel/a_3 [a] en-sc [a] sq [A] da [?A] da + [a] ka [a:] si vowel/a#_3 [a#] en [a#] en-n @@ -1733,6 +1744,7 @@ vowel/aa_8 [0] en-us [A1] et [A] nl [a:] is + [0] ga [A] tt [a] ko vowel/aa_9 [a] fi @@ -2081,6 +2093,7 @@ vowel/ii_6 [I] en-wm [i] wo vowel/ii_7 [i] en [i] sq + [i] ga vowel/ii_8 [i] kk vowel/ii_final [i] en-us [i] en-rp @@ -2246,7 +2259,6 @@ vowel/oo_4 [O] base2 [O] it [O] an [O] pa - [O] ga vowel/oo_5 [O] pl [O] is [O] sq @@ -2290,6 +2302,7 @@ vowel/u [u] base [u] ak [u:] wo [u] bo + [u1] ga [u] tt vowel/u# [u:] en-sc [Y] tr @@ -2420,6 +2433,7 @@ vowel/V_3 [V] en-rp vowel/V_4 [V] en-sc [V] da [?V] da + [O] ga vowel/V_6 [V] en-us [a#] lv vowel/y [y] base2 @@ -2477,9 +2491,11 @@ vowel/yy_4 [y] de [yI] is [y] hy vwl_af/@ [@] af + [@] ga vwl_af/I [I] af vwl_af/r@ [@] af [I] af + [@] ga vwl_de/uu_@ [UR] de vwl_en/aI@ [aI@] en [aI@] en-n diff --git a/phsource/j/je b/phsource/j/je index f746cb1e870d2da95b5307f62723297e576d75a1..83fd3f04760023301cf5ab9efb0bc14f2b2ed2b1 100644 GIT binary patch delta 129 zcmeyy^NnXiG&2+Pht09f+Zl5kxF0ZPFh(*kFn}-vgDI1PpbXOk#wZ{ggc%qfurWyT zFh5}I0kT1ufgyqOfXD;J2aGI?3=AO5z_5a+K?qsIh{K5wWHPdv12PPg8(F^s04mNI A?*IS* delta 129 zcmeyy^NnXiG&2*+iOsRh+Zl6raX(at3luIe}aUCJ|9`18MC6MyP}>(E{{O#1j)B2| X=>a2%2NBUwhKNjjqO@6u?+QBryU8{y diff --git a/phsource/ustop/k_asp_a.wav b/phsource/ustop/k_asp_a.wav new file mode 100755 index 0000000000000000000000000000000000000000..61c483c6c720bc35113b893a0893643f9a908895 GIT binary patch literal 4394 zcmWMqXMC1L9^CfSw+09oy3zuKP~_;5ssVyIAP9=UL1-dPq-zkc1kex=PMSs_f`Ow* zlO|H5g0usviUjYZ7%6$%)3@CF+i$!3X=mm?Gn>~hJG)^D0I&2M`r?GCvz`e90AO-8 z916e-I{`o-494Zp%IC?0AHZ6$1v~&<;7s@uoCNb=6}SpEg2A8`NCyhgzyVPz9*D-k z59$LMoDdb_koZbyqPjT3v-mc)h0SO8+`-l=YpXq+4h5@l1Fe^DqW_G3T%D<$!*#?J zw~bX|&9PS6_gulM;gRxTrJq(uOVxVGw@_THq!T^EHm#k`c6TtJ1@53%htK-1eF?i@DP(a=*5SJ>UBk)l<*QGt|W@@ts$1z*0V* zl~dDAv2I%{yguSGC;_$c9ciGln0yFpf!mb3mbodOVML7M&WG+kdI~L+251Y^0%g2% zhoqn|`_V~vOPsdOA-5lW2Y!naBqptwZzvn3TDS&yz}C{Y+)MUDr-wI(uNG;rE&d$; zn*^mU$cL8kdDQRbSv~BqbI|M0dxBATvivu-p4wQsDZNX|&|J}uWzp5NCR@n!#8)s( zT9I4iGC4$s5QI8_uo%wg@*?^fyDl1mn)ovWrI~VbYL9(S%HHR!0y}?Ou9sS6` z)?KG5dj(#{lANi&qAk-eD9iA4n90}JcdZ(cy2fcc)vGNAu^4!Qo`W}GYcZ9lqdRmF z+syaE^YV0QA?yV=(g(Dzz0Jt5?t3qIv-u8wAAhS|*Lnnio*L+-MWyLrF)L>s=pJ_y z8!k*(OI{?EtA*MM^}1XRv%pUKocYgK>-c43xV@M*5W8S^LX-<~TeYKnh4jUv$3o_>kLhrkK-_3enwI85z-1Q7Xi12^)$XO zdZ8-&5vlquHqxETnv%1M=8p&4hL8G&1zz^QA$8-0-gztJ>~QKht-u-lm;RUUQ|)1} zj+6`fIBSd%#)#N{qtJXpkBb?&K&q>+RKHTn$z15M5$nf$4s7LR}iBl0xc$?oMO(=~JG_i+x}Ww)R-{@pNgF z{<0>KpOm+yujsE{rM=B-i6?MuKnDc4;meJ5!<(>p>NOSpt-a?%(L5`eEt131z-Yi;RPNui`214Y!{^}`vlA2nL z{}4g%lyNZDHS$BWTOwrqN}GYbWVO^P$>?tI4ROJa8xM^a%>t{;*<;sb4s1&on)^#H=V2YKzF70I{QT&ljcjCbxH4`XKNpji-2>3o%IyAi8IkX!o~|fSOUL6 zb4YLUoU|6+W5006DRgtZ2i{~xA zNbxNz2_|y-{onuu%eii`T)Sa1`(BJ#kX(fkq?iBR9vbk2-;Or3vaX zRSuM>3B5?g_;)eM{mt2EbuxyVYt6l04RH~CLS`$wl@@9PG7m3-0#xITodPG=qrsHt;>H1M2cjy4U-hEfjuq zkt~p>s3+8>azp7j&g8?XWM7O~vDnj|Rr_Lv)(X*zbky4i76+@RT=ZY^ts3d`2_8y8K7}B76fK!K0MHDwq3Wn-5{* zomtjyYl4%-3*jB9xn3*ua;Pvg*>_s*Nlf0~-4x#v+Ys#^4aBpJLH3{YI2=V9D&w@P z%2Cn@)e|3iU7dDj%lPux&e$~bjI)T&0ZY(s9GAW&>!q!7FX?^x1-X@cPPwg4(y!>Z z^=v&;*-pj)KdtW^j<<^zNB$lO#c!CCJOXy%wQ_&0)VExluh&-)*$aPR#dL^!+uh;q za(mKy{2Bh{%8?=Au8}{mh1XZH|1xoKyT^G@FGo%+HwqH0(++Qjxo~s+{*L} z5ytDK#!`uNMyjK3m)pp1;sQR1PP2#D$R1}Gd60D!cVKlq9~HwacFp~}lWQ$Cv*LGR zjbk+Nl6#W>i;PomX|?rF)Ze8$((kY@FGzYoBQwXGW&Fe1>hz~QKpD!Aa^=PHC9)9u z_(*!ld1w{e$@$Mbu@R3`QZ%4*?TnhIye?0I&N1f_O@nL6C+b$;mO%4hsqbwi6St=SF|%VYS8cB9TXig&V@{)a zXqQ}Duk_(STYaE13~lC1k~ltVbg-Iv6Zji=pqdu!k`k!CsG2`~MZb<8(HwJibpDg- zkH3EWzvyH88i*^E{@E$Zsy(VUEnMM$Pw9mIOHVqF?Tb!tH^sY5U*_jQ5NDIA_%*PL zo^l&ISDhc6Pn=w*)O%Yr#`Wa_)zXO8P`(9+&^+rz?5oJl$j10>bGg?7Jd}0>XpQZ) zUafn)c4p0ip=q+mm)o=Bb)%Q7>PE7odt)<=8_rAo4{!jEMml~5-4F+9u3PCmc6;** zyhe>_rcy!1qCa2`c$MvSp10mL)+DaQQ;mK}{2PKnGW1UijSS`ag_a|?z&_z~!ihGK zys9ga<%#dD=h+@OP448cADWbMIT+K&$*HI_8|St&dnH1N1xAjO&R3%nWvPC|x76R< z*G(HOr=bG=og1;TjqLb4@vi13N6-PF7=JBqP-m%eWv)CH{|_t>ABlvRBR2D~Yz$pN zKVsWiDj&=$X(7wxKZ!Z;3_J)2paBS=nV=VliT)rW+@z{oiu$|>ot2#S1++Pv# zrP2c&#{KbN@KCXP`^<@$HH~mQH`XFP%;0t@|DF7#b@ONWvyxsgTHX!I=@u(!yq@^d=wh96 zChq2ZLapCGE{y- zj$;*_O(x=d-k+?H+bn~=>g{y*Ice@!UW^8*>@B1-!3I)a$yS@_mhYY)_*2!vq?YL8 z3^7U)7tA(Ry3sVT)g*3Hz7md=I%omk1pk=8a{;OkR++R~64ES*Ld;s&Z4$pkOCmQS zcBD(RUmRF(vFAucE%LPr&J8z6xfx0g6l*P{$zY+EZ$B|vVn)1He3jAD+3g*r1Ncq& zx}+-`l)o#@q#`(2yeS^T{WyWA;D6%_{9W&uU2e3F_lW;youX;t zf=IwGq(9UJzQVxu;5Of3xe0ua6}ek%WbH9atd4Fcc1$co735Pnrkq!SHbha#Qn86{ zai=8H&o(v&Y(y&wR<>$KeSY6xN@x5dk2rIToY<&ne(cZqI&+y<1?Q+o{jI`(rKF{3 zfid!TpeNf@1 zLqH~Y8GIy;@qGRkm&6W`i>Bb@(*T!k^&UA_>>uo|&a>_z?=!X*Ou%o-x7Cle`|4YA z4RqPdH(Ev;M10ZAc$qbt)`AmAv9eSD-S?e7U2Q3yhG*Gs=a6|X(JL{`_}E(KCYS&_ z&?%gkY)!Z19nw{@9xp*FlEr%>Je<_pRM1CE5I?i|-WPUFb4cR1_?ASOS?P4(Ls1L) zPYnmg2Rnq$1yo;q#e?@e%ixhcPxe029&f4|V6^k*z_7B;e>OC`+QJ%tOC3<{n7@(y znrQFjCpJZjs#aBHMAye3n2p?PG+XpVqog^Cp;Gmcf|R}TU3riEv(%O3ph2JupGk{d zztca7-#q7vbH~YaW;*S>hN2iJmhx}m1!~bql9{p*YzOziF6bL{0?mWph+%vUk8(TN z?@sfOxGTmd|11uIv!Z}6Va?co8Dmv!Ez@`#UcpQGK>js5o>aI>+tco}D4Bu_okdQ5 YGV|uJK1_I}uI^fH75yWbsppCR1Hi>p(f|Me literal 0 HcmV?d00001 diff --git a/phsource/ustop/k_asp_e.wav b/phsource/ustop/k_asp_e.wav new file mode 100755 index 0000000000000000000000000000000000000000..1fcef3aa03422626d88e00d5b51f535f39859af1 GIT binary patch literal 3822 zcmWMpd3a6N7GG=ab8Zq^4HY$%swNdvAFWyQ49{4lB?+wT#~_4arFx!-q(v-kRqt9Q4~oo`nF=-a+er}sxq zs2vFaXkT^u0Ce0AKoAMThD;c8*na1%RDwrR9%jlW87&ndQyRfR=?~db7v7a=@SdEK za}Pp)Rlaxf@yYN8l?$KlS^js*E&lFd@8Y10ekQeI%&XnYP*ot_c7-l?MVPtv^a!Y`H^Nn`P! zIEKfBq_j{s3`9nxJ3ce7kjMO#Hu|Q@37l5F;jW&{6Y&_g6_ozCQ@w+;xxY@;bzw92 zG|gcz_He$YX#Uvb@@yD`DKG^~DH~su0v+N>bU@9<6p8sXPDP0-o4?5gv%xe ztNI`DVbxnTQnehHyNA%LZJwqfDqEt=OT1QYb2FI$9cYxw!Zf~VB6*{{17q=H`VQ;E zQeLD#89y&f|!#MBL(#xf@^@o(|9(Low*wE(rG`ss}FO2!6$k$BX!8 z;9MXLc0iHOr8P|lSgqQHuXMVp%XARRAW2Vv_uL#jOOK?Y`M^2s?tv3 zNa-X?!8|bc{Fu^R!C06^UqJ&uKeSZ8ZbbiScG7Y8EokFKgd(`Q^N6}a4|yJP z(GxM%?3wzK4`*2$n_R zOB0ENpQtefa1Tu44cw5w=1x>iy{J}UWllA($pB2H5_nd2@fyzN*}N2f!!z_0gzJ8K znK>ct=sI43^KxCHVWz3hfD5sWyl?h%5H{eCQp0rQqhR=$evUI?6^3AcVK3_mFF<=K;TfDS@$g^stq$qB0@wji zYIC&2$d7zgvZWS{Vs7SldeLEVvLUFgp?X%MCMs5xpm{w8Uh$q6uw zYN!vCQUy@JOZb4C#Hn=7Ix5HpUIl|-E-j>C^1L4AJ;x7m9?hgnQeRK>qWweMn~td) zw3c)2lj8Vo_yM~*JDg`!IyB|>GD@zQS+K=22Up7l{+(x;N4g!>QvacWQp=vQoXvpK7*Cz)5GI<@mLc_|Ii=%c2~aEO zV_N8$#>b7c5*C@cdOA#!^RkTAQvr>U3Wj7CG;%69XVf=J%iku$Jb^6t3&q$4e&w?= zm$P7vGu;VyM`LRfc-Bgc2Yj+!#m?Tri1^9znt=_YDAL-?J75N^%pgPD0ep0Y`u#s1&i>-gQ=iUC% z&~UG>iIQmi#mRCD@roYjU-OzvnsX+wKWwwJ#j3D{sfqdS(D37dLh6VWa36e66VyKE zoZALtwnqBgZ`~t1;3H&NAnvVWGU5B5N2(AK6 zaD~+3Q+_#~udX;{bQ!M649LMsD#h90u28!yw{W`I0^ENbFxa+^3m%0%7HyW|(kZOT?}Q92*j z;PnVDuksu-U%#Wr>nPLJR5Z=?2!EHKV%k|Pm6i={?wm%KLopnc6bfUe0Yo*bd#oH4P@v|mEEGSDd8nyi^J*$Cb`|+9nRbC z)9y59IjzT1%z=e`(QoLj3-$G{>kmx}{@i~zlvDO~u$%Sc{@jAknb{_RUz0!iPyUQs z^YgM>GI6+b)Lr2|ar&zTRD~w0oq@Yy1-1iJSFyMkQXvwT(lG+6g1Iu!ob=Cz9*0)w zo+idL^|yrH@P_yY^fBGc%rGyR&rLrbZ4vDR=}hu~3(PD0f~4SPb;F{27Y10TE72k` zs(zqZ;Fjuy#Jx>jt^`NvMfEx@g*H-EBIO2uC37W(qwVBxnq;YjBOw~nWUQH^Q_U@C z?W}dOR6G{RN_h+NpeF67{wfCtz$|%=Lzch8p)byZX#QR&nyHduHTE&ovC5dMvux6z z!&mUEjIiBu4aaj$j)H$%A5KD&O6IDb!kuA|{l^mQ37e$>l()%LWE;t0ET$3E8^ho; z*$hFcVYOK3H}fa?{me2Mh_j@dUg%%*Z*eE<6KyGyR^u!fXy5l&iK-r@U?ms=`7#RH z&|sQI3+?W((@tv@Jy0=j11FJkr3a_UBCKnXjdD)Qo8HorekD~xHCSOBY}127UfGIZ zhX1NOL#}FtV{I=grjRODN1anniTVj+VF66QCTgoXNpaK+8p0m;Dwc=>luDUY zi{fnSp9Lr7D97+{^Qk##s+h)Rsky+V(gg3|DEsLd{>z-1Z4o-QfFv64z^AFS^k)J+l^@w7w|_G`*pAehDk-+RQBt!+zty=ZTGr*hKBME z-CW-@?_-?GcK)yoFE!)+ByWc|-%Noil%nR-R;&plB$-j_+bt$ZZFHJChv;KyX2$so z?XGbHI?_AT3!d;#`jNj{-{MlZVEsE6+u3Hbh1+tPP2U|{SISFu`Iju?>88M+;g9m4 zvaNT&oz_n2D!sTiXPP*^C+on#L%0L=xx0HS3X$xe{l}LD-F* zu>}^(`)s(pJg_^^WA4e@O|Efyx7>jQ%l)P%#SiFHrnSwvH>d-2=O}aA&oozLCB|U7 R{A$MQn>x?r@k*Es{|B^0hRy&0 literal 0 HcmV?d00001 diff --git a/phsource/ustop/k_asp_u.wav b/phsource/ustop/k_asp_u.wav new file mode 100755 index 0000000000000000000000000000000000000000..7f12b18b06811861a4826f08b7f6f817c7e4bf01 GIT binary patch literal 4224 zcmWMp33N?Y_uu=Rd*90>hKQ;C2QgO%LJg&~#(ZCCl$g~RA!v-PY7t{-QK_LCv$QBd z#8AXsb1XhX%|l`qQ-lof-Fwd7|Fh0|YrVDZd-v|U_ix%=|I?wv_hkTje%_;f{5KP- znXiE6MD_q^w*^2z8HgJ+VNk5O5R7TC0Ae5-I+#-f&hTPB$EWxP@8W%2%*~-0ybqs4 zPk0x~!DW8U3#nCM+?&ot5yiDR3YS^iLh6JR2OkV97Z4dRSpLt6D$aYmsN_M(nUXpF zNJjgHx0Cm_H!twFz;m7}Fi+1?likMt)y1WKgWa`s8Jc30^~h7+JKD2Emc~N=(YL2w zEqvDO<@T0eJDODyu>}lD{rG^Avlo#l!Z%^U;w?ReGC7YZaJwXidz6z`s zd@U$B@E7khIgszVEBs-;t$6jmgC(QzD>S*{wYqbvs@p*b=Dw{?I~-Yw6o+HIH{Yt{he6nm~Wmh&~2$(@k-1V z1y(K3J*%y3BsRiVP=)rX?JAOj`8H?3UXg6Iwv(+)nIlSz)^LQvb(&hB`s=AWnMy%* ztRX_h1^iY7h*A*FBlRjhR}a-)bwAp}dtnxy#M5FgX5ee6$2RxX7gU7)M?KYNXdV}v zi9f-+*jH>siPi8SKcyJZ29ku#claLmhYl9xRQS zuz?5gGp@>G=>najIXnpxc{3E_ef&-|!mshU*lB9afpxeN6R;1Q;~4l0V=>4eaTp|E zB5dUdxCjqmKAfZ9=@WlRNyWl9Z^DYo7oBjH>1goSl|2;$7Y3~hxa&c?l4u4!^`~xS z_n_*hPmu+=m}a@wB|FtVZfDAukV~EPWz|t7xSy*%dIf(E+hL68Dx<6qt;sS(z7e}c zgqSIgVkUoumo9$sqI}-#7v9$`3Ld?=RdNLTl?n;X z34R_bLl=g$_WY=mR2iDAYWdKgrD|CH1D<&Q3>q2QvGmR0D^@-u-Ex@4h7luDX#w)_F*g1v#0?Qt@~`J!Za@xRxiCMWK)3f z$0cL^L3#_Gm80z^^0jCwf_RC#?h7dHUwo)IspPN|Mmxns@7{o% zz-fUi18WA1@;rutruGn>tyZXfO2BRQQhT4LqPM(vyoY2xjNuUYnLAJ{-PSf{s40DQ!Fr=b_EBBwQz+0rJK4G4O73V zKlHDNfQ2V`?k_<;}eM%|s3>e=);pQbqIVV+xFOyoBdN?YAMPLy-h_q+cG z_p#fK<8Y{`>Y3?jZdbKKWnDbRi}XIXpIV|n)KBRM3=rwoec8m0mI3zrm`G#YY0f!+ zZ8t&vmv3N<=}Ee^Sx%7o_%9q&m(^~kf}8EMQLm`Gm}rl)n%mm?Lqu9FaSi{68qzW~ zP94x^)hsTDyLhnpNYodXL}x4mIS`7ki8zzIw463m7kUS#Ljg81y}kp9_#3R}`*cO` z)>kNzlA!|D5;-zj)V8w4aB1U7@tixs7T(DjTpyP3c8J9ToKICD7CykQA(LnE*JiG{ z^q3ryFo(T798xd|Q}GAf&ZGGRRX3WhRY(0?FXv&0%pB!=L30nFw*TP^an;ea!t;ZPB^RJeW)P4yI#I@hv>(RG7}wXs+6*x9Dj+ zj8AhL^oc_Gj+G`IW2JetRyS5X+-uIaZj4^4SAm16Vx5?c-LRYS%V+9$RZrJaO{pnO z;Bb5eCt(t96ZgbhOn?JaUw`Br@@??-@%MH2sq6HJn~L5tS(KHlMWpnBPq%XGyK~)l zlvmHCxj5CjY_+rRd;ZU}*#22|#?f?McXy|`%hX@SL672XtR#Mu3G$3&`6u>4!9nT^ zH_C17R@5Wuds>Z+WheU!?|#pEd%UO&h5DurqYrc%_2voYzsd5J_zSy>syH7Tz*Wws zcGORYE7Xqx{9Z&{$Pf=hroaDQD zxgMrsRG#tJ5Uzu#(T|^rII%z=wq%!*$TqGwLSHqNEHwTy4kJtr&E;XyUAzlla$Rky zZ*-(yz~^9`nffRhCQf6r2**8;Pb0Y=bs$G4@oKn@O~ocWDk{lXaYyulWjv4CGeSI6 zfonV&>Ou#cfDy(qS3nFm)N830U!nJ?g04?qt_ySFGkMusV_gAlt&UU`O;khFKK`as__%Tkx)-V7kVkit2mBn~5UsOX0zf%{kXsV1bT%80V@CVg3S)ddR;W!wK z{X~rD2HSNd_0TPGGu>EslwL{gU>f`*XIn9LlAU4jDzQ8qqQ%^wc2EYlqeXlX>fkBS z+d3v~IZ*6@1Q-Hc$ROH{_h0bm`HwndTt^+(efcazh_&zHZ@jP;R$e9RFPXv*8}8I9M8$>7ypHl2}Q+4cS^Q6 zGbszY$br_s_8fb&<%&;m0PG;C%c@wlPA78@*o)uDC-NWJN9KvmVy?)8eH5#cbeyh0 zxwz;NK4@$h8i9EQeQI76tMK!`xRe+bDli5ii=EkSS5;a24DWt|5%?`=end}os=DJuJ7t~soJ;-)rPts_FP39(C^7GrMf>?W_>68{ z!&Z0)8;Oa=SqGZyUEm5O=-Rrqe%Iv1=XyAQ2pix8HWZtUYiICt+G{wofYwt0H)eqA za0=r@6_dQf@UD5QhtSvLhY@0&IYqb#L$MdM;l3te+|$QtzTx3(*aDZJIgW)ZyqtFG z2ksh!(tPJvH^;U0V`_+1nsPu2JrsEgah7TLk7 zXs25HHdcPs{RGe0L4TwMU<1b#Y>Z?dy4iV-Rwqvd52M~b-JSN zX}Hjj+e2e)DQ3$|tD!yA_FErW@5}R;0V$kH{U}Xm>2!TZXX}G{lWt}{Q*<=lqph@v z{JKbM-I+$1jwc&T4dC~n4Gs})%YdL6D-LODBLJ zDpI8h2n3}UDPe;M(gGxegaiVanfISPe)E0F%$xWAd+)jDo^z*r$Hc^xNTAoNNgalc znovCofYGaF643q!z(EuS5125Zx9)idz0d*e@o!ATSI9+WCn6*@vTOM?UzZ!%nflW_O$oIVIlSS-}{rYVhd_GTN~|b)`_2;FU~JtJUQlUd>(KxwJ^El^VN4G+D$L9}P?#FEB(^2CL}Z}Sb z?zEv=CDmzFm`jf#U(=T@61_Wa4;;sR7q!SQR@e*ioUly1J)+w z|KfkgGXvWSm*>{w|H||UCNU&DJp2!Dnb7DGKYAP;{ zs~(5>LVP`6TZ*D}dkcRGvg2{zrf(2pOzRx_5{rdtl{po=sH`%#qVmvKb z_34Vo9Rq)r=vsEJH#HDi(1V4}=I}P$UUb!e*7I@%yz%TD80M5Lfv5w%xZ;VA`W8*M z0bhOJMz(banF!}JGfg4s-VE#sb~a~x6PpP?ry9x(wN3YM{NnOWYpz6W@LC*4lA z*tzNr@kU^Qd(kBLMmP`LxBa8tQb_fj@T6h78R?#KTjPQmjMsR`M%warG}G;D#30G~ z>>r3Q>8xb>;IM5<*M7|o&U_PxOt!>p=#Fe$#~Ji9(P(LAndNw$V_B0Uc$8I@&1@5G zk};jbZEyEYmc(q{WfPX}DpJLQF-Doo`3k8+_HgU{3OmzU#^Ptb$gsOyX^uVl&ttALC;?*9;{sF%}G4=!J03{LO^6k#ssFqw5#|EKtr>Ab`>{Dlp0R022y z!}ylEv4*XY$0f|?YW*F9@rZ}Eo_D?K4Up_ zVkQ&t63+7`XK}H*Q%V|ofb-ae>-d0oR8@O^&2gNDQ5c3rEU+uMkVQPr*8GZxc$Hld z3J=P16<-$W#mr_|)e6L-sWQLBEa7pD&2ftZd6EZMTL{LgTRVA;$Mq=!clo2(bd;NP zXAIgQ0h2kA5qJ~h&=31{@)mxi_s_VK8y`R-|l}Ky`ehr{*9I_t+43boV_rQQR-ow=?S19>!soJ|9K{ z{K_=^gk~6tA&NCjSBK&V+o^_W7=tx<%;#{Kjd2Mxl*P-!zd63e8(5(`^O&mqTcZi` zITlsST3v4^ZWrkO8Ca%@`skT6%u=LRbYeg?XQQTglO`p_jA0E`x(6A;=X=I0$HsW7?hRIchfqb>r>isdF#_Mwt9*JW$NTDE zZ~TTv*d$C>FbQK(OV|(9MEf~e%)7#5q@bx_p>ZxQMani8+j8Q$7@< z8>(wNr7`<-)=zv}XPi}rjWvlA6zL#`Fen!EQ`|?26pnRl#5_HDKztma>L0R&PA=jy zE?{+(#mk!NNn+kKVRKv)S)V_!t+HRJ37McwxAR-g@e}URvtMv8FEdKL+@UM`bk;LX zPftb35ywyQBWXtsb)z1hXx_$3xpqhet}0qFo9b#Qe85kXeS*+G&*@yM3g5*-^?kkh zhpEOr!MH%S|Civ0$njY3L{C#^A$Hm>?w&wmaAn}4t?MlF_VBfLC|;el@7aIYV|I~U zhW#eptkIN4NYh?dKSpDrxrog|e~ayB=ej-Y9=nJZADO1kX>(n?*lS<2Z`&AF#8sr3 z4^16&UbEPOomA5!4pBxc#Gjv~rK6O8JMk-ke_{|P*sS0zw>;NjsX1b%n0V74b)+V4rvTAnuoxlnt^7u`24*Pc|p46)134Z-y0%@9hC1pc4njy zt7VRvPUe5`;!mm50Jai8YANz2)4?ppXgm^jnbOVQIa>%e0i`7K)PKKFUMpVL&~z>m z%Gbq@-^H74Qn5N%jd5nYS)!gS6e}pDeiN@_y5@Vbl;U};5>wcno8tTe_g)H4eaj*855 zcLh%bqwOZvHJhCuJqw*7*l72<%iI(<-3?BveVz4^+7hmFjd(hq#b3WC)l{e?iNOMlQF^1diBioCG@~UR0w7D%+Z6@uU z!gwKGU7GCE#7|~jb{9+9XcEq_0zN`TY5Po}S4OH@(ljz7k)f`9XJds~ru&HF(VUOBD>?igoh#Ez*@8(y3_m=!jIiySVnEW+p`r`=|W5 zw|0crZIQdmO|gsdqM2+m%y3hL+KjW~w3YlMm7HcSn@gI&656GzbGW#$SNlh%FpHFa zEn_{^kthr=pqA-u28bDJdC;B_Zz^IxzDK;7U~b_mJ4#RgVjp?!2jWO6IZBLF`;O+K zk@An0b7{+y4=+^@`e>4h_yx|1*&S5lL^!e z$CcS6eV3)4M9GP#sG>z^XJX7)e62}8q#YmhkWu#*sdLvFcMPUUAub$_@jKCYOD<)Fv4 z(GC-C9vtQ{P8I9&rGuejcO`MYoqY42W;H{IU*~P@6lLV?gH`!0IqoXy)DvB6ta)3d zr>86SLt14;Mats;v<;o$eR1rbu-+=asV5Fzl-q;}|7*%^m$WKZcl^B*?dLhEVTQg< zQEoS+Y?=DBP46zr{Wqz$9QjLz{OYE7drbG`D*7>L-3eXI)wk(-w_SZYryb(7Tx^Zv LKIC`0x{dz_>VfxF literal 0 HcmV?d00001 diff --git a/phsource/vwl_en_us/oor b/phsource/vwl_en_us/oor index bb0e81d21cf9e779f094fcab9cb480b58298931c..3d6ca31ed749a85aca4d0dd35127b379c97795e6 100644 GIT binary patch literal 3169 zcmchZ&2Lmy7{;IZxXkU$v@`vhPCGNDbowz>m?}gxKzS5AZ2MU^xPzEgX2xAtiUY(zc0%V{ld z^KRv+GVDpwI@LwX(6dU@?K!1{lIp-p^W4v_agAwGWv%0!5l$?D4ycbeInDg>*79ra zKL*~fLHK8b_(Eu)LIaxxd7zF;pGnD2qZgu06?Q~}fh}z+oQzqDNpxfbO7(Tk;xeta5 z@G=Zno3xuXn{^c3#%ZIVMVOpm?uW$;D|=x$WIqf0-Sl3@ZqO|JcQJROMTVAV*92dh z;Ec6SgA)65e6yc-eVX~RslzWLA<;qnJ4Kuscnxe;(W}vLBRa%%GdfhS(V^kKh^`+)ibsk!Tj~>U$AUv(bZ#QZeEAP}(dRP?@Q>&<3wI24e&Z8}I((>^8 zgnaxz3F~PWA8D;25)zCS3u%-YKuJ4c9eSFgW)Gvppi^iF9WGAB>zx05s;+~#5E{fo z1G9K&=CS{dhnv&k+IW~=bsY}qguc;BaQrb!%)$4BUjbz%zAJdS0j2yc5mEnt6$E$s8azG;fEcxH9c|$xkf%mQR{_ z>CKcn+L5!JYRgL%|4`vn%+@sW(zMU*(2|AhPu+N4xCE$DDm&*@R_kz0t9B5%g==`lRn za{CyH^uoTWVEM;x1XHue-498g(=?yiVq*veD#XEhXAQBt#8<5{u&-H6T>3kVfWZ4{ zBvhg~Hn9iWl&~GO$kK|6sTOHgOfgldn2OPO)T$-xFu0;(n)X*#OjUnn#Z>i!Rjrt| zar4fTlTI_gj}qIdjLc7qaBBB$7IrOT>d#|3A!3{C9c zv{<~37E;-1k-d%<*H*96N-d<-)nYT%&=GyYJ+X_rX-W6N%qYB+;KN$pag>_cBnm-RX1xT|rt7OAkDU6a1-gR(iC+R8HTU?kPHm>7*`|2QP IrRh2PKXGw{Bme*a delta 1009 zcmb`G&npCB9LAq{XW7?oi}E9x^>a$2n301V6cH)J#z79+;xGp;a@d1xDLHM?dvPHL zKT3YABy!NYNiJ@ZG;aF`IOCm}eRrg-xtPPePj6G-&+~kr`KY<5ppz4W15=ZOu`Sx0 zeEiM;up~?32cG#`Bm0gXmw{2@-p_};Z_KdJGvBFFp@F#K=|sJ!HPzLfh+!7TSi=I& zv5#&TP*_yDG_%OiSMo}1f_Z|fFX_u6$jVSYrB6p|p~i@yw8FzVZP52fhKl>f=u1H8 zM12cqcj-0N)htCGlZA)L@E@lC8m3dfVZGe!BJQz)Io#q7Q_!KJiM0i6!zdAk<9Wjl zL#;4e>1){VWneo+XVM-UEmo4txGCNx)qJP?At;;9Z8jZ1Sv03dict_min_size > 0) && (size < tr->dict_min_size)) + if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size)) { fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); } @@ -1040,7 +1040,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * { if(vowel_stress[ix] == 4) { - if(tr->langopts.stress_flags & 0x20000) + if(tr->langopts.stress_flags & S_PRIORITY_STRESS) vowel_stress[ix] = 1; else vowel_stress[ix] = 3; @@ -1208,12 +1208,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); if((max_stress < 0) && dictionary_flags) { - if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) - { - // lang=fr: don't stress monosyllables except at end-of-clause - vowel_stress[1] = 0; - dictionary_flags[0] |= FLAG_STRESS_END2; - } max_stress = 0; } @@ -2652,6 +2646,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c if((match1.points == 0) && ((option_sayas & 0x10) == 0)) { n = utf8_in(&letter,p-1)-1; + if(tr->letter_bits_offset > 0) { // not a Latin alphabet, switch to the default Latin alphabet language @@ -2720,11 +2715,19 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c p += (wc_bytes-1); } - if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset)) + if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) { - // switch to the nominated language for this alphabet - sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); - return(0); + if(tr->langopts.alt_alphabet == alphabet->offset) + { + sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); + return(0); + } + if(alphabet->flags & AL_WORDS) + { + // switch to the nominated language for this alphabet + sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); + return(0); + } } } } diff --git a/src/numbers.cpp b/src/numbers.cpp index ecd5d288..e60be3ad 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -596,6 +596,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) ALPHABET *alphabet; int language; int phontab_1; + int alphabet_name_switch; + char *ph_alphabet_end; char capital[20]; char ph_buf[80]; char ph_buf2[80]; @@ -631,6 +633,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } + alphabet_name_switch = 0; alphabet = AlphabetFromChar(letter); if(alphabet != current_alphabet) { @@ -638,38 +641,49 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) current_alphabet = alphabet; if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) { - phontab_1 = tr->phoneme_tab_ix; - ph_buf2[0] = 0; - if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice + if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) { - // Can't find the local name for this alphabet, use the English name - ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 - Lookup(translator2, alphabet->name, ph_buf2); + // don't say the alphabet name } else - if(translator != tr) { phontab_1 = tr->phoneme_tab_ix; - strcpy(ph_buf2, ph_alphabet); - ph_alphabet[2] = translator->phoneme_tab_ix; - } + ph_buf2[0] = 0; + if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice + { + // Can't find the local name for this alphabet, use the English name + ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 + Lookup(translator2, alphabet->name, ph_buf2); + } + else + if(translator != tr) + { + phontab_1 = tr->phoneme_tab_ix; + strcpy(ph_buf2, ph_alphabet); + ph_alphabet[2] = translator->phoneme_tab_ix; + } - if(ph_buf2[0] != 0) - { - // we used a different language for the alphabet name (now in ph_buf2) - ph_alphabet[0] = phonPAUSE; - ph_alphabet[1] = phonSWITCH; - strcpy(&ph_alphabet[3], ph_buf2); - len = strlen(ph_buf2) + 3; - ph_alphabet[len] = phonSWITCH; - ph_alphabet[len+1] = phontab_1; - ph_alphabet[len+2] = 0; + if(ph_buf2[0] != 0) + { + // we used a different language for the alphabet name (now in ph_buf2) + ph_alphabet[0] = phonPAUSE; + ph_alphabet[1] = phonSWITCH; + strcpy(&ph_alphabet[3], ph_buf2); + len = strlen(ph_buf2) + 3; + ph_alphabet[len] = phonSWITCH; + ph_alphabet[len+1] = phontab_1; + ph_alphabet[len+2] = 0; + + ph_alphabet_end = &ph_alphabet[len]; + alphabet_name_switch = ph_alphabet[2]; + } } } } // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number + if(ph_buf[0] == 0) { if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) @@ -702,6 +716,11 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) ph_buf[len+2] = 0; } } + + if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0)) + { + ph_alphabet_end[0]= 0; + } } if(ph_buf[0] == 0) diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 0449a116..8c33fdd5 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -428,7 +428,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' // stress. But not for the last phoneme of a stressed word - if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) + if((tr->langopts.stress_flags & S_NO_DIM) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) { // An unstressed final vowel of a stressed word unstress_count=1; // try again for next syllable diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 4dffac0e..392faa2b 100644 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -892,7 +892,7 @@ if(stress <= 1) { // this is the last syllable in the clause, lengthen it - more for short vowels len = (p->ph->std_length * 2); - if(tr->langopts.stress_flags & 0x40000) + if(tr->langopts.stress_flags & S_EO_CLAUSE1) len=200; // don't lengthen short vowels more than long vowels at end-of-clause length_mod = length_mod * (256 + (280 - len)/3)/256; } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index d28bb8de..d9747299 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.43 07.Mar.13"; +const char *version_string = "1.46.44 08.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 82b1bd82..2819e5d1 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -478,7 +478,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->letter_bits_offset = OFFSET_ETHIOPIC; tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x0024; // don't use secondary stress + tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.numbers = NUM_OMIT_1_HUNDRED; @@ -550,7 +550,7 @@ Translator *SelectTranslator(const char *name) // tr->langopts.intonation_group = 4; // 'diminished' is an unstressed final syllable - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels @@ -651,7 +651,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished + tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels @@ -681,7 +681,7 @@ Translator *SelectTranslator(const char *name) // tr->langopts.word_gap = 1; tr->langopts.vowel_pause = 2; tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; // tr->langopts.unstressed_wd1 = 3; tr->langopts.unstressed_wd2 = 2; @@ -989,7 +989,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x10 | 0x20000; + tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; tr->langopts.vowel_pause = 1; tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd2 = 2; @@ -1023,8 +1023,9 @@ SetLengthMods(tr,3); // all equal case L('k','a'): // Georgian { // character codes offset by 0x1080 - static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0}; - static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0}; + static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; + static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, + 0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); memset(tr->letter_bits,0,sizeof(tr->letter_bits)); SetLetterBits(tr,LETTERGP_A,ka_vowels); @@ -1037,6 +1038,9 @@ SetLengthMods(tr,3); // all equal // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.max_initial_consonants = 7; tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; + + tr->langopts.alt_alphabet = OFFSET_CYRILLIC; + tr->langopts.alt_alphabet_lang = "ru"; } break; @@ -1111,7 +1115,7 @@ SetLengthMods(tr,3); // all equal { tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x20; + tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_DIERESES] = 1; @@ -1124,7 +1128,7 @@ SetLengthMods(tr,3); // all equal { tr->charset_a0 = charsets[4]; // ISO-8859-4 tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x20; + tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_DIERESES] = 1; @@ -1211,7 +1215,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_om,stress_amps_om); tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x16 + 0x80000; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000; } break; @@ -1224,7 +1228,7 @@ SetLengthMods(tr,3); // all equal tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished + tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; @@ -1243,7 +1247,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable - tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; SetLetterVowel(tr,'y'); @@ -1261,7 +1265,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x100 + 0x6; + tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY; tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; @@ -1276,7 +1280,7 @@ SetLengthMods(tr,3); // all equal case L('r','w'): // Kiryarwanda { tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x16; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; @@ -1293,7 +1297,7 @@ SetLengthMods(tr,3); // all equal tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x16; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; tr->langopts.spelling_stress = 1; @@ -1322,7 +1326,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.spelling_stress = 1; tr->letter_bits_offset = OFFSET_SINHALA; @@ -1345,7 +1349,7 @@ SetLengthMods(tr,3); // all equal case L('s','l'): // Slovenian tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary - tr->langopts.stress_flags = 0x20; + tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test @@ -1362,7 +1366,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x16 + 0x100; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C; SetLetterVowel(tr,'y'); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.accents = 2; // "capital" after letter name @@ -1394,7 +1398,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.vowel_pause = 1; tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 @@ -1411,7 +1415,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable + tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable tr->langopts.spelling_stress = 1; tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 @@ -1457,7 +1461,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_th,stress_amps_th); tr->langopts.stress_rule = 0; // stress on final syllable of a "word" - tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) + tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() 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) @@ -1476,7 +1480,7 @@ SetLengthMods(tr,3); // all equal tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable - tr->langopts.stress_flags = 0x20; //no automatic secondary stress + tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress tr->langopts.param[LOPT_SUFFIX] = 1; if(name2 == L('a','z')) @@ -1496,7 +1500,7 @@ SetLengthMods(tr,3); // all equal SetCyrillicLetters(tr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable - tr->langopts.stress_flags = 0x20; //no automatic secondary stress + tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; } break; @@ -1561,7 +1565,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" - tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) + tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) tr->langopts.vowel_pause = 0; tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable @@ -1618,7 +1622,7 @@ static void Translator_Russian(Translator *tr) tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; tr->langopts.param[LOPT_REDUCE] = 2; tr->langopts.stress_rule = 5; - tr->langopts.stress_flags = 0x0020; // waas 0x1010 + tr->langopts.stress_flags = S_NO_AUTO_2; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands diff --git a/src/translate.cpp b/src/translate.cpp index 16cc4347..9feb592d 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -2074,17 +2074,29 @@ return(FLAG_SPELLWORD); if(switch_phonemes >= 0) { - // this word uses a different phoneme table - if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) - { - //previous phoneme is also a phonSWITCH, just change its phoneme table number - n_ph_list2--; - } + if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) + { + // the new word starts with a phoneme table switch, so there's no need to switch before it. + if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) + { + //previous phoneme is also a phonSWITCH, delete it + n_ph_list2--; + } + } else { - SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); + // this word uses a different phoneme table + if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) + { + //previous phoneme is also a phonSWITCH, just change its phoneme table number + n_ph_list2--; + } + else + { + SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); + } + ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number } - ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number } // remove initial pause from a word if it follows a hyphen @@ -2484,6 +2496,34 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, } +static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL}; + +int UpperCaseInWord(Translator *tr, char *word, int c) +{//===================================================== + int ix; + int len; + const char *p; + + if(tr->translator_name == L('g','a')) + { + // Irish + for(ix=0; ; ix++) + { + if((p = UCase_ga[ix]) == NULL) + break; + + len = strlen(p); + if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) + { + if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) + return(1); + } + } + } + return(0); +} + + void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) {//========================================================================================================== int ix; @@ -2910,10 +2950,19 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre { if(iswlower(prev_in)) { - c = ' '; // lower case followed by upper case, treat as new word - space_inserted = 1; - prev_in_save = c; -// next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set + // lower case followed by upper case in a word + if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) + { + // convert to lower case and continue + c = towlower(c); + } + else + { + c = ' '; // lower case followed by upper case, treat as new word + space_inserted = 1; + prev_in_save = c; + // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set + } } else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) diff --git a/src/translate.h b/src/translate.h index cae09816..89c9e58e 100644 --- a/src/translate.h +++ b/src/translate.h @@ -372,35 +372,53 @@ typedef struct { #define S_NO_DIM 0x02 #define S_FINAL_DIM 0x04 -#define S_FINAL_NO_2 0x10 -#define S_NO_AUTO_2 0x20 -#define S_2_TO_HEAVY 0x40 -#define S_FIRST_PRIMARY 0x80 -#define S_2_SYL_2 0x1000 -#define S_INITIAL_2 0x2000 -#define S_NO_AUTO_DIM 0x10000 -#define S_HYPEN_UNSTRESS 0x100000 -#define S_NO_EOC_LENGTHEN 0x200000 -// bit0=don't stress monosyllables, except at end of clause +#define S_FINAL_DIM_ONLY 0x06 // bit1=don't set diminished stress, // bit2=mark unstressed final syllables as diminished + // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words + +#define S_FINAL_NO_2 0x10 // bit4=don't allow secondary stress on last syllable + +#define S_NO_AUTO_2 0x20 // bit5-don't use automatic secondary stress + +#define S_2_TO_HEAVY 0x40 // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish + +#define S_FIRST_PRIMARY 0x80 // bit7=if more than one primary stress, make the subsequent primaries to secondary stress + +#define S_FINAL_STRESS_C 0x100 // bit8=stress last syllable if it doesn't end in a vowel + +#define S_FINAL_SPANISH 0x200 // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish + +#define S_2_SYL_2 0x1000 // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress + +#define S_INITIAL_2 0x2000 // bit13= If there is only one syllable before the primary stress, give it a secondary stress -// bit15= Give stress to the first unstressed syllable -// bit16= Don't diminish consecutive syllables within a word. + +#define S_PRIORITY_STRESS 0x20000 // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" + +#define S_EO_CLAUSE1 0x40000 // bit18= don't lengthen short vowels more than long vowels at end-of-clause -// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel + + +#define S_HYPEN_UNSTRESS 0x100000 // bit20= hyphenated words, 2nd part is unstressed + +#define S_NO_EOC_LENGTHEN 0x200000 // bit21= don't lengthen vowels at end-of-clause +// bit15= Give stress to the first unstressed syllable +// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel + + int stress_flags; int unstressed_wd1; // stress for $u word of 1 syllable int unstressed_wd2; // stress for $u word of >1 syllable @@ -518,6 +536,8 @@ typedef struct { int listx; // compile *_listx after *list const unsigned int *replace_chars; // characters to be substitutes const char *ascii_language; // switch to this language for Latin characters + int alt_alphabet; // offset for another language to recognize + const char *alt_alphabet_lang; // language for the alt_alphabet int max_lengthmod; int lengthen_tonic; // lengthen the tonic syllable int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character @@ -680,6 +700,7 @@ void InitText(int flags); void InitText2(void); int IsDigit(unsigned int c); int IsAlpha(unsigned int c); +int IsVowel(Translator *tr, int c); int isspace2(unsigned int c); int towlower2(unsigned int c); void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); diff --git a/src/voices.cpp b/src/voices.cpp index eea62a1a..5c5ad948 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -61,7 +61,7 @@ int formant_rate[9]; // values adjusted for actual sample rate #define DEFAULT_LANGUAGE_PRIORITY 5 -#define N_VOICES_LIST 200 +#define N_VOICES_LIST 250 static int n_voices_list = 0; static espeak_VOICE *voices_list[N_VOICES_LIST]; static int len_path_voices; @@ -578,10 +578,8 @@ voice_t *LoadVoice(const char *vname, int control) static const char *voices_europe = "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; - strcpy(voicename,vname); - if(voicename[0]==0) - strcpy(voicename,"default"); + strncpy0(voicename, vname, sizeof(voicename)); if(control & 0x10) { strcpy(buf,vname); @@ -590,6 +588,9 @@ voice_t *LoadVoice(const char *vname, int control) } else { + if(voicename[0]==0) + strcpy(voicename,"default"); + sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory @@ -1634,30 +1635,35 @@ static void GetVoices(const char *path) return; do { - sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); + if(n_voices_list >= (N_VOICES_LIST-2)) + break; // voices list is full - ftype = GetFileLength(fname); - - if((ftype == -2) && (FindFileData.cFileName[0] != '.')) + if(FindFileData.cFileName[0] != '.') { - // a sub-sirectory - GetVoices(fname); - } - else - if(ftype > 0) - { - // a regular line, add it to the voices list - if((f_voice = fopen(fname,"r")) == NULL) - continue; + sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); + ftype = GetFileLength(fname); - // pass voice file name within the voices directory - voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); - fclose(f_voice); + if(ftype == -2) + { + // a sub-sirectory + GetVoices(fname); + } + else + if(ftype > 0) + { + // a regular line, add it to the voices list + if((f_voice = fopen(fname,"r")) == NULL) + continue; - if(voice_data != NULL) - { - voices_list[n_voices_list++] = voice_data; - } + // pass voice file name within the voices directory + voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); + fclose(f_voice); + + if(voice_data != NULL) + { + voices_list[n_voices_list++] = voice_data; + } + } } } while(FindNextFileA(hFind, &FindFileData) != 0); FindClose(hFind); @@ -1674,11 +1680,14 @@ static void GetVoices(const char *path) if(n_voices_list >= (N_VOICES_LIST-2)) break; // voices list is full + if(ent->d_name[0] == '.') + continue; + sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); ftype = GetFileLength(fname); - if((ftype == -2) && (ent->d_name[0] != '.')) + if(ftype == -2) { // a sub-sirectory GetVoices(fname); @@ -1710,15 +1719,23 @@ static void GetVoices(const char *path) espeak_ERROR SetVoiceByName(const char *name) {//========================================= espeak_VOICE *v; + int ix; espeak_VOICE voice_selector; char *variant_name; static char buf[60]; strncpy0(buf,name,sizeof(buf)); + variant_name = ExtractVoiceVariantName(buf, 0, 1); + for(ix=0; ;ix++) + { + // convert voice name to lower case (ascii) + if((buf[ix] = tolower(buf[ix])) == 0) + break; + } + memset(&voice_selector,0,sizeof(voice_selector)); -// voice_selector.name = buf; voice_selector.name = (char *)name; // include variant name in voice stack ?? // first check for a voice with this filename From 280f0a1c29c94a1098b19d0efeaf74ae30f5d03f Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Fri, 8 Mar 2013 21:37:32 +0000 Subject: [PATCH 14/24] 1.46.44 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/ga_list | 0 dictsource/ga_rules | 0 dictsource/ur_list | 123 ++++++++++++++++++++++++++++++++++- dictsource/ur_rules | 13 +++- espeak-data/voices/europe/ga | 5 ++ espeak-data/voices/other/eo | 2 + phsource/ph_malayalam | 15 +++++ phsource/ustop/k_asp_a.wav | Bin phsource/ustop/k_asp_e.wav | Bin phsource/ustop/k_asp_u.wav | Bin phsource/vwl_en_us/ai3 | Bin 26951 -> 26951 bytes 11 files changed, 153 insertions(+), 5 deletions(-) mode change 100755 => 100644 dictsource/ga_list mode change 100755 => 100644 dictsource/ga_rules create mode 100644 espeak-data/voices/europe/ga mode change 100755 => 100644 phsource/ustop/k_asp_a.wav mode change 100755 => 100644 phsource/ustop/k_asp_e.wav mode change 100755 => 100644 phsource/ustop/k_asp_u.wav diff --git a/dictsource/ga_list b/dictsource/ga_list old mode 100755 new mode 100644 diff --git a/dictsource/ga_rules b/dictsource/ga_rules old mode 100755 new mode 100644 diff --git a/dictsource/ur_list b/dictsource/ur_list index 0155778b..da4e5c87 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -80,7 +80,7 @@ _24 caUb'i:s _25 pacc'i:s _26 chabb'i:s _27 sat:a:'i:s -_28 stha:'i:s +_28 ,ath.a:j'i:s _29 Unt'i:s _30 t'i:s _31 ikVt'i:s @@ -167,11 +167,25 @@ _dpt _ISaRI'Ia_ یہ jE $u کہ kE $u وہ wo: $u -پ $u +آپ $u تم tUm $u ہم Ham $u اس Is $u ان In $u +جس J'Is $u +جسے J'Ise: +کس k'Is +کسی k'Isi: +کسے k'Ise: +اسی 'Isi: +اسے 'Ise: +مجھ m'UJh +مجھے m'UJhe: +تجھے t'UJhe: +جن J'In +جنھیں J,InH'e:n +انھوں ,UnH'o:n +انھیں ,InH'e:n // unstressed prepositions کا $u @@ -184,6 +198,111 @@ _dpt _ISaRI'Ia_ // unstressed verbs ہے $u ہیں $u +تھا $u +تھی $u +تھے $u // Pronunciation exceptions پاکستان p'a:k'i:st'a:n +سندھ s'Indh +کچھ k'Uch +لنکس l'Ink,s +لفظ l'afz. +سرچ s'aRc +وقت v'aqt +مبصرین m,Ubas.IR'i:n +متحدہ mUt'aHIda +جبکہ J,abk'e:H +مسلح m,Usal'aH +متفق mUt'afIq +سابق s'a:bIq +برسر b,aRs'aR +اعلان e:l'a:n +سنئیے sUn'i:;e: +کلنگ k'IlIn,g +انتقال ,Intaq'a:l +انتقام ,Intaq'a:m +انتخاب ,Intax'a:b +چیف c'i:f +جسٹس J'ast.,Is +شکایت S,Ika:j'at +شکست SIk'ast +منزل m'anz,Il +شعر S'e:R +فعل f'e:l +خصوصی xUs.'u:s.i: +خصوصیت x,Us.u:s.i:;'at +دنیا dUn'i:;a: +مختلف m,Uxt'alIf +قوانین q,ava:n'i:n +ختم x'atm +بزرگ b'UzUR,g +بزرگوں b,UzURg'o:n +شامل S'a:mIl +شمولیت S,Umu:li:;'at +بہت b'aHUt +دن d'In +دنوں dIn'o:n +مصر m'Is.R +مصری m'Is.R,i: +انتظام ,IntIz.'a:m +مختصر m,Uxtas.'aR +پھر ph'IR +پھرا ph'IRa: +منتخب m,Unt'ax@b +منتقل m,Unt'aqIl +نیا n'aja: +سرخی s'URx,i: +صفحہ s.'afH,a: +خالص x'a:lIs. +باہر 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 +شدت SId'at +بالخصوص b,IlxUs.'u:s. +اردو 'URd,u: +احتجاجی 'e:Hte:J,a:Ji: +احتجاج 'e:HtIJ,a:J +بدھ b'Udh +تجزیے t,aJz'i:;e: +دوست d'o:st +زندگی z,Ind'agi: +دل d'Il +شعری S'e:Ri: +شہر S'e:HIR +اعزاز e:z'a:z +صرف s.'IRf +طبی t'Ibi: +طب t'Ib +مقرر m,UqaR'aR +تقرری taq'aRUR,i: +تقرر taq'aRUR +مناسب mUn'a:sIb +مناسبت m,Una:sIb'at +اول 'avval +جارحیت J,a:RIHi:;'at +متحد mUt'aHId +محبت m,UHab'at +محمد m,UHam'ad +مکمل m,Ukam'al +مل m'Il +ملے m'Ile: +ملی m'Ili: +گزشتہ gUz'aSta +رشتہ R'ISta +اخر 'a:xIR +آنکھ 'a:nkh +شکار SIk'a:R +جلد J'ald +مواد mav'a:d +مطابق mUt'a:bIq +حاصل H'a:s.Il +شدہ S'Ud,a +بغیر baQ'e:R +امیدوار Um'i:dva:R +لکھ l'Ikh +لکھئیے l'Ikhj,e: diff --git a/dictsource/ur_rules b/dictsource/ur_rules index 4ad23d60..0ea19cba 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -51,8 +51,9 @@ _) ا (L01 // Acts like Consonants if followed by a vowel but is silent. _) ا a _) او u: -_) ای i: +_) ای e: ائ a:j + اہ(_ a:H .group آ آ a: @@ -78,7 +79,8 @@ _) ای i: ی (_ i: _) ی jV یع(_ i: - + @) ی i: + یں(_ e:n .group ے // yeh barree ے e: @@ -141,10 +143,11 @@ _) ای i: .group ح ح HV ح (L01 H - + ح (_ H .group خ خ xV خ (L01 x + خت(_ xt .group د د dV @@ -239,6 +242,10 @@ _) ای i: .group ن ن nV ن (L01 n + @) ن (گ n + @) ن (د n + @) ن (ب n + @) ن (س n .group ں ں n // this should nasalize the vowel diff --git a/espeak-data/voices/europe/ga b/espeak-data/voices/europe/ga new file mode 100644 index 00000000..5a158638 --- /dev/null +++ b/espeak-data/voices/europe/ga @@ -0,0 +1,5 @@ +name Irish Gaeilge +language ga + + + diff --git a/espeak-data/voices/other/eo b/espeak-data/voices/other/eo index 36a4bff6..be18c0a7 100644 --- a/espeak-data/voices/other/eo +++ b/espeak-data/voices/other/eo @@ -1,3 +1,5 @@ name esperanto language eo gender male + +apostrophe 2 diff --git a/phsource/ph_malayalam b/phsource/ph_malayalam index bfcc104d..562f8f13 100644 --- a/phsource/ph_malayalam +++ b/phsource/ph_malayalam @@ -144,3 +144,18 @@ phoneme d# // 'rr' sounds like English 'd' endphoneme +phoneme kh2 + vls vel stop + lengthmod 2 + voicingswitch g + Vowelin f1=0 f2=2300 200 300 f3=-150 80 + Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 + IF nextPh(isPause2) THEN + WAV(ustop/k_asp2, 50) + ENDIF + IF nextPh(l) THEN + WAV(ustop/kl) + ENDIF + WAV(ustop/k_asp2, 90) +endphoneme + diff --git a/phsource/ustop/k_asp_a.wav b/phsource/ustop/k_asp_a.wav old mode 100755 new mode 100644 diff --git a/phsource/ustop/k_asp_e.wav b/phsource/ustop/k_asp_e.wav old mode 100755 new mode 100644 diff --git a/phsource/ustop/k_asp_u.wav b/phsource/ustop/k_asp_u.wav old mode 100755 new mode 100644 diff --git a/phsource/vwl_en_us/ai3 b/phsource/vwl_en_us/ai3 index c7d0250c19c2b9e352fa5877a8c410758461528d..fdce05138ce63f943df2e2bd580c523b2195d92c 100644 GIT binary patch delta 963 zcmZ{iO=uHA9L3-KCyBe7>?SqRLnNt2Lk>d4LaB$AC4L-~5Vgg&fr>o{dJ&~T1i?hm zQl*L-F9i?9Q=rA7dnlgtWc&aL#Sat@F|8%GAQj`mo3q<>Hyh|-c89k+%UAOY7YL0O?>(e9haS1<5@p3War0IaYTOSu+0$@c_-25U4imLtF)LER9<#sV(4M_Z+2+)#@5V!QO4N5^?y<7+Vg zg~n%lFB+%tOb8isXFR3=`4LH$g%o|kUxv0Yy=3ba$Tx#;UTi%}J1q+rq#4|hG{uQ9 zr~F25K=V7w=TMqw)xv&xi7hpGNJd`p?`{uKkXuQ{6GAa9tY#)SGvm%5wtk?SBhxzX)nUc6u=`%n07P!Mno= zT>zVstt8{Sg<=Ay2Ly1{n2+M>;O4v=^*wtIH)@aXbqi`t{=nR*AC(Srqw4A)Z$<5s zY*dS@Pcp`1W7N5!63^ce9!s>>D*raSii$YCovK#(9lj|{i}@X=A*=io@+DT;1UOaq ts6o#`f3s3k-{7GFIOziCI}>7l7n{1zoiXRPSsKe3^Sij7WoV?^{}0`X(jx!> delta 819 zcma))O-K}B7{~wbGqcN#?ab_2X0YHIYwIFHQ51HOVWTcFXeqf0TM2sT5`s&5$`v9i zwx}kEZXP3}uQ}8yk81@H(g%izWf2kW5^kM+-`Qbj=H|e2czz6je$Vr~l@(T5VaCwl z*)zjK7miB+#;=)gjmzqhL;I?%%47zJ0?gzG-d9j+B}MGTze6R7$Ukw1!+}G9T+}4lbea?UQL4+ahPm(?A#87t zw9Gw)slI5cerHRF5n2bEs(sN<_{deuP1Th8gFR46dX3dQjh}ia^=PHoI$QUMV~j`> zhN=4UK)*7RH03{mC)2OYws(Mn2*{?pIB`{9=buYl5by=>vztN?zF=qcnGl38cu~E< t1p!~M&xp%C8sH1ojL(=bfS};@qcce$Xj7aNf*~|r%%%l#1rvo+v0dVEv&8@a From ceab35f7dafc6760e1c6705c813f2062d9252f03 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Fri, 8 Mar 2013 21:46:47 +0000 Subject: [PATCH 15/24] autotools: build the 'ga' dictionary --- Makefile.am | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile.am b/Makefile.am index 55500b15..cfc97d0c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -146,6 +146,7 @@ dictionaries: \ espeak-data/fa_dict \ espeak-data/fi_dict \ espeak-data/fr_dict \ + espeak-data/ga_dict \ espeak-data/grc_dict \ espeak-data/hbs_dict \ espeak-data/hi_dict \ @@ -330,6 +331,12 @@ dictsource/fr_extra: espeak-data/fr_dict: src/espeak espeak-data/phontab dictsource/fr_list dictsource/fr_rules dictsource/fr_extra cd dictsource && ../src/espeak --compile=fr && cd .. +ga: espeak-data/ga_dict +dictsource/ga_extra: + touch dictsource/ga_extra +espeak-data/ga_dict: src/espeak espeak-data/phontab dictsource/ga_list dictsource/ga_rules dictsource/ga_extra + cd dictsource && ../src/espeak --compile=ga && cd .. + grc: espeak-data/grc_dict dictsource/grc_extra: touch dictsource/grc_extra From 6691b67f02cb366cf6acba439b4f8cfef8331610 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 10 Mar 2013 13:58:09 +0000 Subject: [PATCH 16/24] [1.46.45] Indian languages, rename aspirated phonemes with # instead of h (eg. [t#] not [th]). git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@311 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/de_list | 1 + dictsource/dict_phonemes | 139 +++--- dictsource/en_list | 44 +- dictsource/en_rules | 6 +- dictsource/hi_list | 89 ++-- dictsource/hi_rules | 40 +- dictsource/hu_list | 7 +- dictsource/hu_rules | 8 + dictsource/kn_list | 194 ++++---- dictsource/kn_rules | 40 +- dictsource/ml_list | 6 +- dictsource/ml_rules | 42 +- dictsource/ne_list | 100 ++--- dictsource/ne_rules | 238 +++++----- dictsource/pt_list | 2 + dictsource/pt_rules | 17 +- dictsource/ta_list | 1 + dictsource/te_list | 38 +- dictsource/te_rules | 40 +- phsource/compile_report | 198 +++++---- phsource/ph_english_n | 3 +- phsource/ph_english_us | 1 + phsource/ph_hindi | 38 +- phsource/ph_malayalam | 2 +- phsource/phonemes | 26 +- src/compiledict.cpp | 202 ++++----- src/dictionary.cpp | 573 ++++++++++++------------ src/numbers.cpp | 808 +++++++++++++++++----------------- src/phonemelist.cpp | 26 +- src/readclause.cpp | 27 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 87 ++-- src/translate.cpp | 924 +++++++++++++++++++-------------------- src/translate.h | 12 +- src/voices.cpp | 365 ++++++++-------- 35 files changed, 2174 insertions(+), 2172 deletions(-) diff --git a/dictsource/de_list b/dictsource/de_list index f20a80e8..56d91fe4 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -97,6 +97,7 @@ x Iks _ar aR'AbIS _cyr ky:R'IlIS _he hEbr'E:IS +_zh Ci:n'e:zIS // Numbers diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index af156f6d..4b4b295b 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -68,7 +68,7 @@ r R R3 s S t T tS v w x z Z -Dictionary hu_dict 2013-03-08 +Dictionary hu_dict 2013-03-10 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -80,7 +80,7 @@ S s2 t t2 tS ts v w z Z -Dictionary de_dict 2013-02-25 +Dictionary de_dict 2013-03-10 3 @ @- a A A: aI aU A~ E E2 E: e: EI i I @@ -104,7 +104,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-08 +Dictionary en_dict 2013-03-10 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -191,22 +191,22 @@ N n^ p r R R2 s S t tS ts tS; v x z Z -Dictionary hi_dict 2013-03-01 +Dictionary hi_dict 2013-03-09 @ @- @2 a a: aI aU a~ e E e: E: E~ i I i: l- o O o: O: O~ o~ r- u U u: u~ V -#X1 #X2 - : b bh c ch -d d. dh dh. f g gh h -H j J Jh k kh l l. -m n N n. n^ p ph Q +#X1 #X2 - : b b# c c# +d d# d. d.# f g g# h +H j J J# k k# l l. +m n N n. n^ p p# Q q r r. s S s. t T -t. th th. v w x z +t# t. t.# v w x z -Dictionary ta_dict 2013-03-08 +Dictionary ta_dict 2013-03-10 a a: aI aU e E e: i I i: o o: u U u2 u: @@ -216,7 +216,7 @@ U: V V# d. dZ f g h H j k l l. m n N n. n^ p Q r R s S s. t T -t. th tS v w z z. +t. tS v w z z. Dictionary hy_dict 2008-12-22 @@ -379,7 +379,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-08 +Dictionary pt_dict 2013-03-10 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -540,21 +540,21 @@ n^ p p` r s S t t` tS tS` v w x z Z -Dictionary ml_dict 2013-03-06 +Dictionary ml_dict 2013-03-10 @ a a# a: aI aU e E e: i I i: o o: r- u u: V y -#X1 #X2 : ; b bh c ch -d d# d. dh dh. dZ f g -gh h j J Jh k kh l -l. m n N n. n^ p ph +#X1 #X2 : ; b b# c c# +d d# d. d.# d2 dZ f g +g# h j J J# k k# l +l. m n N n. n^ p p# r R r. R2 s s. S; t -t. th th. tS v w z +t# t. t.# tS v w z -Dictionary ne_dict 2013-01-10 +Dictionary ne_dict 2013-03-09 @ @/ @2 @3 a a: aI aU a~ e E e: E: eI e~ E~ @@ -562,25 +562,25 @@ i I i: i~ o O o: O: O~ o~ u U u: u~ V VI VU V~ -- : ; b bh c ch d -d. dh dh. f g gh h H -j J Jh k kh l l. m -n N n. n^ p ph Q q -r r. s S s. t t. th -th. v w x z +- : ; b b# c c# d +d# d. d.# f g g# h H +j J J# k k# l l. m +n N n. n^ p p# Q q +r r. s S s. t t# t. +t.# v w x z -Dictionary pa_dict 2013-03-01 +Dictionary pa_dict 2013-03-09 @ a a~ e E e~ E~ i I i~ I~ o O O~ o~ r- u U U~ u~ V V~ -: ; b bh c ch d d. -dh dh. f g gh h H j -J Jh k kh l l. m n -N n. n^ p ph Q R R2 -s S t t. th th. v x +: ; b b# c c# d d# +d. d.# f g g# h H j +J J# k k# l l. m n +N n. n^ p p# Q R R2 +s S t t# t. t.# v x z @@ -603,16 +603,16 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2013-03-08 +Dictionary ur_dict 2013-03-09 @ a a: aI aU e E e: i I i: O o: U u: V -: ; b bh c ch d D -d. dh dh. f g gh h H -j J Jh k kh l m n -N p ph Q q r R r. -s S s. t T t. th th. +: ; b b# c c# d D +d# d. d.# f g g# h H +j J J# k k# l m n +N p p# Q q r R r. +s S s. t T t# t. t.# v w x z Z z. @@ -682,30 +682,30 @@ q R R2 s s2 t v w x z -Dictionary dv_dict 2011-01-08 +Dictionary dv_dict 2013-03-09 @ @2 a a: aI e e: E: E~ i I i: o O o: O: O~ u U u: V -: ? b c ch d D d. -dZ f g h j k kh l +: ? b c c# d D d. +dZ f g h j k k# l l. m n N n. n^ p Q q r R s S s. t T -t. th th. tS v w x z +t# t. t.# tS v w x z Z -Dictionary kn_dict 2011-12-05 +Dictionary kn_dict 2013-03-09 a a: aI aU e E e: i I i: o o: r- u u: -#X1 #X2 : b bh c ch d -d. dh dh. dZ f g gh h -j J Jh k kh l l. m -n N n. n^ p ph r s -S s. S; t t. th th. tS +#X1 #X2 : b b# c c# d +d# d. d.# dZ f g g# h +j J J# k k# l l. m +n N n. n^ p p# r s +S s. S; t t# t. t.# tS v w z @@ -721,16 +721,16 @@ R R3 s S t T tS ts v w x X z -Dictionary te_dict 2011-12-05 +Dictionary te_dict 2013-03-09 a a: aI aU e E e: i i: l- o o: r- u u: V -#X1 #X2 : ; b bh c ch -d d. dh dh. dZ f g gh -h j J Jh k kh l l. -m n N n. n^ p ph r -s s. S; t t. th th. tS +#X1 #X2 : ; b b# c c# +d d# d. d.# dZ f g g# +h j J J# k k# l l. +m n N n. n^ p p# r +s s. S; t t# t. t.# tS v w z @@ -750,11 +750,10 @@ Dictionary si_dict 2013-01-18 & &: @ a a: aI aU e e: i i: o o: u u: -b bh d d. dh dZ f g -gh h j k kh l l. m -m# n N n# N# n. n.# n^ -n^# p ph r s S s. t -t. th tS v w +b d d. dZ f g h j +k l l. m m# n N n# +N# n. n.# n^ n^# p r s +S s. t t. tS v w Dictionary et_dict 2012-06-12 @@ -782,16 +781,16 @@ q r s S t tS v w x z Z -Dictionary bo_dict 2011-12-05 +Dictionary bo_dict 2013-03-09 a a: e e: i i: l- o o: r- u u: -: ? b bh c ch d d. -dh dh. dz dzh g gh H j -J k kh l m n N n. -n^ p ph r s S s. t -t. th th. ts tsh w z Z +: ? b b# c c# d d# +d. d.# dz dz# g g# H j +J k k# l m n N n. +n^ p p# r s S s. t +t# t. t.# ts ts# w z Z Dictionary kk_dict 2011-12-07 @@ -872,18 +871,18 @@ R R2 s S t T t# tS w x -Dictionary bn_dict 2013-02-28 +Dictionary bn_dict 2013-03-09 @ a a: aI a~ e E e: E: E~ i I i: i~ o O o: O: O~ o~ r- u U u: u~ V -#X1 #X2 : b bh c ch d -d. dh dh. g gh h H j -J Jh k kh l m n N -n. n^ p ph r r. s S -s. t t. th th. v w z +#X1 #X2 : b b# c c# d +d# d. d.# g g# h H j +J J# k k# l m n N +n. n^ p p# r r. s S +s. t t# t. t.# v w z Dictionary ga_dict 2013-03-08 diff --git a/dictsource/en_list b/dictsource/en_list index 6b276019..54507487 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -127,7 +127,7 @@ _, k0m@ _- h,aIf@n ?3 _- daS _. d0t -?3_. pi@rI@d +?3_.p pi@rI@d _: koUl@n _; sEmIk'oUl@n _< lEsDan @@ -276,7 +276,8 @@ _my mj'A:nmA@ _ka dZ'O@dZ@n _ko k3r'i@n _eth i:TI'0pIk - +_ja dZ'ap@ni:z +_zh tS'aIni:z // Cyrillic letters а a @@ -385,6 +386,18 @@ _eth i:TI'0pIk ר ReS_ ש Sin_ ת tav_ +ְ SvA: +ֱ E +ֲ a +ֳ o +ִ i: +ֵ E +ֶ E +ַ a +ָ a +ֹ o +ֻ u +ּ d'agES // phonetic modifiers @@ -4184,19 +4197,22 @@ like laIk $strend2 // General American -?3 agile adZ@L -?3 docile doUs@L -?3 facile fas@L -?3 fertile f3:t@L -?3 fragile fradZ@L -?3 futile fju:t@L -?3 hostile h0st@L -?3 mobile moUb@L +agile $alt2 +docile $alt2 +ductile $alt2 +facile $alt2 +fertile $alt2 +fragile $alt2 +futile $alt2 +hostile $alt2 +mobile $alt2 ?3 missile mIs@L -?3 projectile pr@dZEkt@L -?3 puerile pjU@r@L -?3 sterile stEr@L -?3 virile vIr@L +projectile $alt2 +puerile $alt2 +senile $alt2 +sterile $alt2 +tensile $alt2 +virile $alt2 ?3 volatile v0la#t@L diff --git a/dictsource/en_rules b/dictsource/en_rules index 2a40b577..e5ee4f9e 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -1275,7 +1275,7 @@ _) be (gg bE _) belarus bEl@r'u:s _) be (lC bE - _) be (lli bI2 + _) be (llig bI2 _) be (sC bI2 _) be (stia bE _) be (tB bE @@ -2681,7 +2681,7 @@ for (see f%O@ for (ward f'o@ // straightforward ft (en f - &) ful (_S3 f@L + &) ful (_S3i f@L &) fully (_S5 f@li &) fulness (_S7 f@Ln@s @@ -2921,6 +2921,7 @@ 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 @@ -4401,6 +4402,7 @@ os (al_ 'oUz _l) os (e u:z ose (_ oUz + c) ose (_ oUs purp) ose @s _r) os (e# oUz c) os (ec oUs diff --git a/dictsource/hi_list b/dictsource/hi_list index 43663a6e..e28b4e50 100755 --- a/dictsource/hi_list +++ b/dictsource/hi_list @@ -8,9 +8,9 @@ _2 d'o: _3 t'i:n _4 c:'a:r: _5 'pa~c -_6 ch'@2 +_6 c#'@2 _7 s'a:t -_8 'a:th. +_8 'a:t.# _9 n'O: ?3 _9 n'aU @@ -18,11 +18,11 @@ _10 d'Vs _11 gj'a:r-ah _12 b'a:rah _13 t'e:r@2h -_14 ch'O:d@2h +_14 c#'O:d@2h _15 p'Vndr@2h _16 s'o:l@2h _17 sVtr@2h -_18 a:th:arah +_18 a:t#:arah _19 Unn'Is _20 b'i:s @@ -31,9 +31,9 @@ _22 b'a:Is _23 t'ue:Is _24 c'O:bIs _25 p@c:'Is -_26 ch@bb'i:rs +_26 c#@bb'i:rs _27 s@t:'a:Is -_28 ath:'a:Is +_28 at#:'a:Is _29 ,Unt'Is _30 t'i:s @@ -42,7 +42,7 @@ _32 b'at:'I'S _33 tE~t'Is // E~ ? _34 cO~t'Is _35 pE~t'Is -_36 chaT'tIs +_36 c#aT'tIs _37 sE~t'Is _38 art'Is _39 Unta:l'Is @@ -53,7 +53,7 @@ _42 baIa:l'Is _43 tE~ta:l'Is _44 cO:wa:l'Is _45 paI'nta:l'Is -_46 chhIja:l'Is +_46 c#hIja:l'Is _47 sE~ta:l'Is _48 arta:l'Is _49 'Un^ca:s @@ -63,32 +63,32 @@ _51 Ikj'a:wVn _52 b'a:wVn _53 t'IrpVn _54 c'Ou:wVn -_55 p'achpVn -_56 chh@p:'Vn +_55 p'ac#pVn +_56 c#h@p:'Vn _57 santa:'w@n -_58 ath:a:'w@n -_59 Uns'Vth +_58 at#:a:'w@n +_59 Uns'Vt# -_60 s'a:th. -_61 'Iks@th. -_62 b'a:s@th. -_63 t'Irs@th. -_64 cO:'s@th. -_65 paI's@th. -_66 ch'Ija:s@th. -_67 s'Vrs@th. -_68 ars@th. +_60 s'a:t.# +_61 'Iks@t.# +_62 b'a:s@t.# +_63 t'Irs@t.# +_64 cO:'s@t.# +_65 paI's@t.# +_66 c#'Ija:s@t.# +_67 s'Vrs@t.# +_68 ars@t.# _69 Un@h,at:'Vr: _70 sat:'Vr: -_71 Ikhat:'Vr: +_71 Ik#at:'Vr: _72 b@hat:'Vr: _73 tIhat:'Vr: _74 cO:hat:'Vr: -_75 pach,at:'Vr: -_76 chIhat:'Vr: +_75 pac#,at:'Vr: +_76 c#Ihat:'Vr: _77 s@t@hat:'Vr: -_78 athhat:'Vr: +_78 at#hat:'Vr: _79 ,Un^Ia:s'i: _80 ,Vss'i: @@ -97,9 +97,9 @@ _82 baIa:s'i _83 tIra:s'i _84 cO:ra:s'i _85 pI'ca:s'i -_86 chIja:s'i +_86 c#Ija:s'i _87 sVt:a:s'i -_88 ath:a:s'i +_88 at#:a:s'i _89 nVwa:s'i _90 nVb:'e: @@ -108,50 +108,50 @@ _92 b'a:n@we: _93 tIr'a:n@we: _94 cO:r'a:m@we: _95 p@c'a:n@we: -_96 chIj'a:n@we: +_96 c#Ij'a:n@we: _97 s@t:'a:n@we: -_98 ath:'a:n@we: +_98 at#:'a:n@we: _99 nIn^j'a:n@we: _0C s'O: _0M1 h@J,a:r -_0M2 l'a:kh +_0M2 l'a:k# _0M3 k@ro:r.V _0M4 'Vr@b -_0M5 kh'Vr@b +_0M5 k#'Vr@b _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? // Single consonants क k@ क़ q@ -ख kh@ +ख k#@ ख़ x@ ग g@ ग़ Q@ -घ gh@ +घ g#@ ङ N@ च c@ -छ ch@ +छ c#@ ज J@ ज़ z@ -झ Jh@ +झ J#@ ञ n^@ ट t.@ -ठ th.@ +ठ t.#@ ड d.@ ड़ r.@ -ढ dh.@ +ढ d.#@ ण n.@ // retroflex n.@ त t@ -थ th@ +थ t#@ द d@ -ध dh@ +ध d#@ न n@ प p@ -फ ph@ +फ p#@ फ़ f@ ब b@ -भ bh@ +भ b#@ म m@ य j@ र r@ @@ -194,6 +194,13 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? ॣ #X2l-: ॐ #X1o~m +_?? Vks.@r +_a ej +_b bi: +_c si: +_d di: +_e i: +_f Ef // Punctuation । dVn.d.V diff --git a/dictsource/hi_rules b/dictsource/hi_rules index b8cd8e16..ffbd8801 100755 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -172,8 +172,8 @@ क़ (B q .group ख - ख khV - ख (B kh + ख k#V + ख (B k# ख़ xV ख़ (B x @@ -184,8 +184,8 @@ ग़ (B Q .group घ - घ ghV - घ (B gh + घ g#V + घ (B g# .group ङ ङ NV @@ -198,8 +198,8 @@ च (्य c: .group छ - छ chV - छ (B ch + छ c#V + छ (B c# .group ज ज JV @@ -208,8 +208,8 @@ ज़ (B z .group झ - झ JhV - झ (B Jh + झ J#V + झ (B J# .group ञ ञ n^V @@ -222,8 +222,8 @@ ट (्य t.: .group ठ - ठ th.V - ठ (B th. + ठ t.#V + ठ (B t.# .group ड ड d.V @@ -233,8 +233,8 @@ ड़ (B r. .group ढ - ढ dh.V - ढ (B dh. + ढ d.#V + ढ (B d.# ढ़ r.hV // nukta (should retroflex flap) ढ़ (B r.h // nukta @@ -249,16 +249,16 @@ त (्य t: .group थ - थ thV - थ (B th + थ t#V + थ (B t# .group द द dV द (B d .group ध - ध dhV - ध (B dh + ध d#V + ध (B d# .group न न nV @@ -276,8 +276,8 @@ प (्य p: .group फ - फ phV - फ (B ph + फ p#V + फ (B p# फ़ fV फ़ (B f @@ -286,8 +286,8 @@ ब (B b .group भ - भ bhV - भ (B bh + भ b#V + भ (B b# .group म म mV diff --git a/dictsource/hu_list b/dictsource/hu_list index fe8aa7ab..e7b22828 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -409,7 +409,7 @@ _tld tildE // characters _#9 tAb -_#32 so:kYz +_#32 s'o:kYz _cap n'AJ_| _?? kAR2AktEr||ko:d // unknown characters (change this) @@ -5382,7 +5382,7 @@ _¤ pe:nznEmjEl ® bEjEJzEt: ™ ve:djEJ _` tompA -_  so:kYz +_  s'o:kYz _« bElSY:|bAl|ide:zY:jEl _» bElSY:|jobb|ide:zY:jEl _­ la:JkYtY:jEl @@ -5423,8 +5423,9 @@ _¡ AlSo:indEks // Alphabets _ar 'AR2Ab -_cry ts'iR2ill +_cyr ts'iR2ill _he h'e:bER2 +_zh k'i:nAi // Main Exceptions List diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 53de3bc1..350cb7e9 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -459,6 +459,7 @@ shetlan) d (szige d szaba) d (szem d _tren) dsz (e d|s vakon) d (sz d +vé) d (jeggy d .group dz fogó) dz (kod ts @@ -1021,6 +1022,8 @@ szivárvá) ny (játsz n^ _elle) n (jav n vagyo) n (jog n nny (elv n|n^ +haszo) n (jár n +boszorká) ny (jelet n^ .group o o o @@ -1162,6 +1165,7 @@ _tetszé) s S ki) s (szőlő S körö) s (szeg S kolbászo) s S +feldolgozá) s S .group ss ssz ss2 @@ -1757,6 +1761,7 @@ fáklyá) sz (ene Sz pénze) sz (k s ellenállá) sz (ón Sz ré) sz (árás Sz +_te) szts (or st|S .group t t t @@ -1988,6 +1993,7 @@ _tisztele) tj (el tj zené) tj (átsz tj szen) tj (akab tj közérze) tj (aví tj +ké) tj (átszm tj .group ts ts (_S2 tS //general rule with word end of ts letters @@ -2204,6 +2210,8 @@ felira) ts (áv t|S leme) tsz (vén ts _cha) tsz (ob t|s robo) ts (of t|S +merényle) ts (or t|S + .group tt tt t: diff --git a/dictsource/kn_list b/dictsource/kn_list index 11760945..7d3ffb92 100755 --- a/dictsource/kn_list +++ b/dictsource/kn_list @@ -39,29 +39,29 @@ _?? aks.ara // 'unknown character' // letter names ಕ್ ik -ಖ್ ikh +ಖ್ ik# ಗ್ ig -ಘ್ igh +ಘ್ ig# ಙ್ iN ಚ್ ic -ಛ್ ich +ಛ್ ic# ಜ್ iJ -ಝ್ iJh +ಝ್ iJ# ಞ್ in^ ಟ್ it. -ಠ್ ith. +ಠ್ it.# ಡ್ id. -ಢ್ idh. +ಢ್ id.# ಣ್ in. ತ್ it -ಥ್ ith +ಥ್ it# ದ್ id -ಧ್ id. +ಧ್ id# ನ್ in ಪ್ ip -ಫ್ iph +ಫ್ ip# ಬ್ ib -ಭ್ ibh +ಭ್ ib# ಮ್ im ಯ್ ij ರ್ ir @@ -101,17 +101,17 @@ U+ccd vattu // symbols % pratis.ata -! a:scharjachinhe +! a:sc#arjac#inhe _? aks.ara . pu:rn.avira:ma , alpavira:ma ¼ ka:lu -½ ardha +½ ard#a ¾ mukka:lu -(1 / 2) ardha +(1 / 2) ard#a (1 / 4) ka:lu (3 / 4) mukka:lu -÷ bha:ga:ka:ra +÷ b#a:ga:ka:ra & mattu @@ -125,8 +125,8 @@ _5 'aIdu _6 'a:ru _7 'e:l.u _8 'ent.u -_9 'ombath:u -_1X h'ath:u +_9 'ombat#:u +_1X h'at#:u _11 hann'ondu _12 han:erad.u _13 hadim'u:ru @@ -135,93 +135,93 @@ _15 hadinaIdu _16 hadina:ru _17 hadin'e:l.u _18 hadin'ent.u -_19 ha'th:'ombath:u +_19 ha't#:'ombat#:u -_2X Ip:ath:u -_21 'Ip:a'th:ondu -_22 Ip:a'th:erad.u -_23 Ip:a'th:m'u:ru -_24 Ip:a'th:n'a:lku -_25 Ip:a'th:'aIdu -_26 Ip:a'th:a:ru -_27 Ip:a'th:e:l.u -_28 Ip:a'th:ent.u -_29 Ip:a'th:ombath:u +_2X Ip:at#:u +_21 'Ip:a't#:ondu +_22 Ip:a't#:erad.u +_23 Ip:a't#:m'u:ru +_24 Ip:a't#:n'a:lku +_25 Ip:a't#:'aIdu +_26 Ip:a't#:a:ru +_27 Ip:a't#:e:l.u +_28 Ip:a't#:ent.u +_29 Ip:a't#:ombat#:u -_3X m'ovath:u -_31 m'ovath:ondu -_32 m'ovatherad.u -_33 m'ovathm'u:ru -_34 m'ovathn'a:lku -_35 m'ovath'aIdu -_36 m'ovatha:ru -_37 m'ovathe:l.u -_38 m'ovathent.u -_39 m'ovathombath:u +_3X m'ovat#:u +_31 m'ovat#:ondu +_32 m'ovat#erad.u +_33 m'ovat#m'u:ru +_34 m'ovat#n'a:lku +_35 m'ovat#'aIdu +_36 m'ovat#a:ru +_37 m'ovat#e:l.u +_38 m'ovat#ent.u +_39 m'ovat#ombat#:u -_4X n'alavath:u -_41 n'alavath:ondu -_42 n'alavatherad.u -_43 n'alavathm'u:ru -_44 n'alavathn'a:lku -_45 n'alavathaIdu -_46 n'alavatha:ru -_47 n'alavathe:l.u -_48 n'alavathent.u -_49 n'alavathombath:u +_4X n'alavat#:u +_41 n'alavat#:ondu +_42 n'alavat#erad.u +_43 n'alavat#m'u:ru +_44 n'alavat#n'a:lku +_45 n'alavat#aIdu +_46 n'alavat#a:ru +_47 n'alavat#e:l.u +_48 n'alavat#ent.u +_49 n'alavat#ombat#:u -_5X 'aIvath:u -_51 aIvath:ondu -_52 aIvatherad.u -_53 aIvathm'u:ru -_54 aIvathn'a:lku -_55 aIvath'aIdu -_56 aIvatha:ru -_57 aIvathe:l.u -_58 aIvathent.u -_59 aIvathombath:u -_6X 'aravath:u -_61 aravath:ondu -_62 aravatherad.u -_63 aravathm'u:ru -_64 aravathn'a:lku -_65 aravathaIdu -_66 aravatha:ru -_67 aravathe:l.u -_68 aravathent.u -_69 aravathombath:u +_5X 'aIvat#:u +_51 aIvat#:ondu +_52 aIvat#erad.u +_53 aIvat#m'u:ru +_54 aIvat#n'a:lku +_55 aIvat#'aIdu +_56 aIvat#a:ru +_57 aIvat#e:l.u +_58 aIvat#ent.u +_59 aIvat#ombat#:u +_6X 'aravat#:u +_61 aravat#:ondu +_62 aravat#erad.u +_63 aravat#m'u:ru +_64 aravat#n'a:lku +_65 aravat#aIdu +_66 aravat#a:ru +_67 aravat#e:l.u +_68 aravat#ent.u +_69 aravat#ombat#:u -_7X 'Ep:ath:u -_71 Ep:ath:ondu -_72 Ep:atherad.u -_73 Ep:athm'u:ru -_74 Ep:athn'a:lku -_75 Ep:athaIdu -_76 Ep:atha:ru -_77 Ep:athe:l.u -_78 Ep:athent.u -_79 Ep:athombath:u -_8X 'Embath:u -_81 Embath:ondu -_82 Embatherad.u -_83 Embathm'u:ru -_84 Embathn'a:lku -_85 EmbathaIdu -_86 Embatha:ru -_87 Embathe:l.u -_88 Embathent.u -_89 Embathombath:u +_7X 'Ep:at#:u +_71 Ep:at#:ondu +_72 Ep:at#erad.u +_73 Ep:at#m'u:ru +_74 Ep:at#n'a:lku +_75 Ep:at#aIdu +_76 Ep:at#a:ru +_77 Ep:at#e:l.u +_78 Ep:at#ent.u +_79 Ep:at#ombat#:u +_8X 'Embat#:u +_81 Embat#:ondu +_82 Embat#erad.u +_83 Embat#m'u:ru +_84 Embat#n'a:lku +_85 Embat#aIdu +_86 Embat#a:ru +_87 Embat#e:l.u +_88 Embat#ent.u +_89 Embat#ombat#:u -_9X th'ombath:u -_91 th'ombath:ondu -_92 th'ombath:erad.u -_93 th'ombathm'u:ru -_94 th'ombathn'a:lku -_95 th'ombathaIdu -_96 th'ombatha:ru -_97 th'ombathe:l.u -_98 th'ombathent.u -_99 th'ombathombath:u +_9X t#'ombat#:u +_91 t#'ombat#:ondu +_92 t#'ombat#:erad.u +_93 t#'ombat#m'u:ru +_94 t#'ombat#n'a:lku +_95 t#'ombat#aIdu +_96 t#'ombat#a:ru +_97 t#'ombat#e:l.u +_98 t#'ombat#ent.u +_99 t#'ombat#ombat#:u _0C0 n'u:ru _1C0 nu:ru diff --git a/dictsource/kn_rules b/dictsource/kn_rules index f8cd483f..25c21c57 100644 --- a/dictsource/kn_rules +++ b/dictsource/kn_rules @@ -24,16 +24,16 @@ ಕ (B k .group ಖ - ಖ kha - ಖ (B kh + ಖ k#a + ಖ (B k# .group ಗ ಗ ga ಗ (B g .group ಘ - ಘ gha - ಘ (B gh + ಘ g#a + ಘ (B g# .group ಙ ಙ Na @@ -44,8 +44,8 @@ ಚ (B c .group ಛ - ಛ cha - ಛ (B ch + ಛ c#a + ಛ (B c# .group ಜ ಜ Ja @@ -54,8 +54,8 @@ ಜ಼ (B z .group ಝ - ಝ Jha - ಝ (B Jh + ಝ J#a + ಝ (B J# .group ಞ ಞ n^a @@ -66,16 +66,16 @@ ಟ (B t. .group ಠ - ಠ th.a - ಠ (B th. + ಠ t.#a + ಠ (B t.# .group ಡ ಡ d.a ಡ (B d. .group ಢ - ಢ dh.a - ಢ (B dh. + ಢ d.#a + ಢ (B d.# .group ಣ ಣ n.a @@ -86,16 +86,16 @@ ತ (B t .group ಥ - ಥ tha - ಥ (B th + ಥ t#a + ಥ (B t# .group ದ ದ da ದ (B d .group ಧ - ಧ dha - ಧ (B dh + ಧ d#a + ಧ (B d# .group ನ ನ na @@ -106,8 +106,8 @@ ಪ (B p .group ಫ - ಫ pha - ಫ (B ph + ಫ p#a + ಫ (B p# ಫ಼ fa // nukta ಫ಼ (B f @@ -116,8 +116,8 @@ ಬ (B b .group ಭ - ಭ bha - ಭ (B bh + ಭ b#a + ಭ (B b# .group ಮ ಮ ma diff --git a/dictsource/ml_list b/dictsource/ml_list index da527242..586ad83e 100644 --- a/dictsource/ml_list +++ b/dictsource/ml_list @@ -8,8 +8,8 @@ U+d02 'a#m U+d03 visarg@m U+d3d avagraha -U+d4d chandraka:r@m -U+d4e chil.acharam // ?? +U+d4d c#andraka:r@m +U+d4e c#il.ac#aram // ?? ൺ _'yn. // chillu consonants ൻ _in @@ -79,7 +79,7 @@ z zEd & samuccaj@m _. bindu _, aNkuS;@m -_; ro:dhini +_; ro:d#ini _? co:dj@cihn@m _! a:S;c@rjacihn@m diff --git a/dictsource/ml_rules b/dictsource/ml_rules index 49c0d321..3094aba9 100644 --- a/dictsource/ml_rules +++ b/dictsource/ml_rules @@ -36,16 +36,16 @@ ക്ക (B k: .group ഖ - ഖ kha - ഖ (B kh + ഖ k#a + ഖ (B k# .group ഗ ഗ ga ഗ (B g .group ഘ - ഘ gha - ഘ (B gh + ഘ g#a + ഘ (B g# .group ങ ങ Na @@ -56,16 +56,16 @@ ച (B c .group ഛ - ഛ cha - ഛ (B ch + ഛ c#a + ഛ (B c# .group ജ ജ Ja ജ (B J .group ഝ - ഝ Jha - ഝ (B Jh + ഝ J#a + ഝ (B J# .group ഞ ഞ n^a @@ -81,16 +81,16 @@ ട്ട (B t.: .group ഠ - ഠ th.a - ഠ (B th. + ഠ t.#a + ഠ (B t.# .group ഡ ഡ d.a ഡ (B d. .group ഢ - ഢ dh.a - ഢ (B dh. + ഢ d.#a + ഢ (B d.# .group ണ ണ n.a @@ -106,16 +106,16 @@ ത്ത (B t: .group ഥ - ഥ tha - ഥ (B th + ഥ t#a + ഥ (B t# .group ദ ദ da ദ (B d .group ധ - ധ dha - ധ (B dh + ധ d#a + ധ (B d# .group ന ന na @@ -131,8 +131,8 @@ പ്പ (B p: .group ഫ - ഫ pha - ഫ (B p + ഫ p#a + ഫ (B p# _പ്രൊ) ഫ (സര് fa @@ -142,8 +142,8 @@ ബ (B b .group ഭ - ഭ bha - ഭ (B bh + ഭ b#a + ഭ (B b# .group മ മ ma @@ -160,7 +160,7 @@ .group റ റ R2a റ (B R2 - ന്) റ d# + ന്) റ d2 റ്റ t.t. // ?? R2R2 = t.t. .group ല diff --git a/dictsource/ne_list b/dictsource/ne_list index 8649eb69..301edb57 100644 --- a/dictsource/ne_list +++ b/dictsource/ne_list @@ -30,20 +30,20 @@ _2 d'u:,i: _3 t'i:n _4 c'a:r: _5 p'a:nc -_6 ch'@2 +_6 c#'@2 _7 s'a:t -_8 'a:th. +_8 'a:t.# _9 n'V'u: _10 d'Vs -_11 e:'gh'a:r'V +_11 e:'g#'a:r'V _12 b'a:r@2 _13 t'e:hr@ -_14 ch'O:d@2 +_14 c#'O:d@2 _15 p'Vndr@2 _16 s'o:r@2 _17 s'Vtr@2 -_18 a'th.'a:r@2 +_18 a't.#'a:r@2 _19 U:nn'a:i's _20 b'i:s @@ -52,9 +52,9 @@ _22 b'a:Is _23 t'e:Is _24 c'O:b'Is _25 p@c:'Is -_26 ch@b'b'i:s +_26 c#@b'b'i:s _27 s@t:'a:Is -_28 ath:'a:Is +_28 at#:'a:Is _29 U:n'Vnt'Is _30 t'i:s @@ -63,7 +63,7 @@ _32 b'at:'Is _33 t'e:t't'i:s _34 cO~,t'I:s _35 pE~t'Is -_36 ch@:t't'I:s +_36 c#@:t't'I:s _37 sE~t'Is _38 art'Is _39 U:n'an'c'a:l'i:s @@ -74,9 +74,9 @@ _42 baIa:l'Is _43 t'ri:c'a:l'i:s _44 cO:wa:l'Is _45 paI'nta:l'Is -_46 chhIja:l'Is +_46 c#hIja:l'Is _47 s@'d.cta:l'Is -_48 a'th.'c'a:l'Is +_48 a't.#'c'a:l'Is _49 U'n'an'c'a:s : _50 p@c'a:s @@ -85,20 +85,20 @@ _52 b'a:wVn'n:'V _53 t'rI:p'an'nV _54 c'Ou:wVn'nV _55 p'ac'pVn'nV -_56 chh@p:'Vn'nV +_56 c#h@p:'Vn'nV _57 s'Vn't:'a:w@n'n':V -_58 a'nth:'a:w@n'n':V -_59 U'n'Vn's'a:th.i: +_58 a'nt#:'a:w@n'n':V +_59 U'n'Vn's'a:t.#i: -_60 s'a:th.i: -_61 e:k'as@th.'th.i: -_62 b'E:s@th.':th.'i: -_63 t'r'i:,s@th.'th.'i: -_64 c'O:s@th.'th.'i: -_65 p'E~'s@th.'th.'i: -_66 ch'E's@th.'th.'i: -_67 s'Vt's@th.'th.'i: -_68 a'th.,s@th.'th.'i: +_60 s'a:t.#i: +_61 e:k'as@t.#'t.#i: +_62 b'E:s@t.#':t.#'i: +_63 t'r'i:,s@t.#'t.#'i: +_64 c'O:s@t.#'t.#'i: +_65 p'E~'s@t.#'t.#'i: +_66 c#'E's@t.#'t.#'i: +_67 s'Vt's@t.#'t.#'i: +_68 a't.#,s@t.#'t.#'i: _69 U:n'an's'Vtt'ar'i: _70 s'at't@r'i:: @@ -106,10 +106,10 @@ _71 e:k'ah'at:'Vr: _72 b@h'att'Vr: _73 tIjatt:'Vr: _74 cO:hat:'Vr: -_75 pach,at:'Vr: -_76 ch@'j'ah'at't'Vr: +_75 pac#,at:'Vr: +_76 c#@'j'ah'at't'Vr: _77 s@t@hatt:'Vr: -_78 athhatt:'Vr: +_78 at#hatt:'Vr: _79 U'n'a:s'i: _80 a's's'i: @@ -118,9 +118,9 @@ _82 baIa:s'i: _83 trIj'a:s'i: _84 cO:ra:s'i: _85 p'ac'a:s'i: -_86 ch@j'a:s'i: +_86 c#@j'a:s'i: _87 s'V:t'a:s'i: -_88 a'th.:a:s'i: +_88 a't.#:a:s'i: _89 u:n'a:n'ab'b'e: _90 n@b'b'e: @@ -129,24 +129,24 @@ _92 b'aj'a:n@b'b'e: _93 trIj'a:n@b'b'e: _94 cO:r'a:n@b'b'e: _95 p@n'c'a:n@b'b'e: -_96 ch@j'a:n@b'b'e: +_96 c#@j'a:n@b'b'e: _97 s@n't:'a:n@b'b'e: -_98 a'n'th.'a:n@b'b'e: +_98 a'n't.#'a:n@b'b'e: _99 U:n'n'a:nsh@je: _0C s'aj@ _0M1 h@z'a:r@ -_0M2 l'a:kh@ +_0M2 l'a:k#@ _0M3 k'a'ro:d.@ _0M4 'Vr@b -_0M5 kh'Vr@b'V +_0M5 k#'Vr@b'V _0M6 n'i:l' _0M7 p'Vd'm@ -_0M8 sh'an,kh@ -_0M9 m'ah'a:,sh'ankh@ -_0M10 p@r'a:rrd:dh@ +_0M8 sh'an,k#@ +_0M9 m'ah'a:,sh'ank#@ +_0M10 p@r'a:rrd:d#@ -_dpt _th'o:plo_ +_dpt _t#'o:plo_ // Symbols in Nepali @@ -157,34 +157,34 @@ _dpt _th'o:plo_ // Single consonants क k@ क़ q@ -ख kh@ +ख k#@ ख़ x@ ग g@ ग़ Q@ -घ gh@ +घ g#@ ङ N@ च c@ -छ ch@ +छ c#@ ज J@ ज़ z@ -झ Jh@ +झ J#@ ञ n^@ ट t.@ -ठ th.@ +ठ t.#@ ड d.@ ड़ r.@ -ढ dh.@ +ढ d.#@ ण n.@ // retroflex n.@ त t@ -थ th@ +थ t#@ द d@ -ध dh@ +ध d#@ न n@ प p@ -फ ph@ +फ p#@ फ़ f@ ब b@ -भ bh@ +भ b#@ म m@ य j@ र r@ @@ -222,17 +222,17 @@ _dpt _th'o:plo_ पो $u $pause हो $u $brk के k'e,: $brk -दुःख d'u,,kh@ -सुख s'u=kh@ +दुःख d'u,,k#@ +सुख s'u=k#@ जव J'Vv@ राष्ट्रिय r'a:S,t.rI:j@2 $2 सित s'it@ होइन h'oi:n@2 - भएन bh'Vj'en@2 + भएन b#'Vj'en@2 गएन g'Vj'en@2 - खाएन khaj'en@2 + खाएन k#aj'en@2 दिएन d'ij'en@2 -छुन ch'un'@ +छुन c#'un'@ बाट b'a:t.@ अथवा $pause वा $pause diff --git a/dictsource/ne_rules b/dictsource/ne_rules index 078afbbe..6f36f225 100644 --- a/dictsource/ne_rules +++ b/dictsource/ne_rules @@ -572,13 +572,13 @@ .group ख - ख khV - ख (B kh -?1 ख (_ kh - ्) ख (_ kh@/ - ख (्ख kh, - खँ khV~' - खॅ khV~' + ख k#V + ख (B k# +?1 ख (_ k# + ्) ख (_ k#@/ + ख (्ख k#, + खँ k#V~' + खॅ k#V~' .group ग ग gV @@ -590,13 +590,13 @@ गॅ gV~' .group घ - घ ghV - घ (B gh -?1 घ (_ gh - घ (्घ gh, - ्) घ (_ gh@/ - घँ ghV~' - घॅ ghV~' + घ g#V + घ (B g# +?1 घ (_ g# + घ (्घ g#, + ्) घ (_ g#@/ + घँ g#V~' + घॅ g#V~' .group ङ // Phoneme adjustment suggested @@ -616,12 +616,12 @@ चॅ cV~' .group छ - छ chV - छ (B ch - ्) छ (C ch@ - छ (_ ch@ - छँ chV~' - छॅ chV~' + छ c#V + छ (B c# + ्) छ (C c#@ + छ (_ c#@ + छँ c#V~' + छॅ c#V~' .group ज ज JV @@ -633,12 +633,12 @@ ्) ज (_ J@/ .group झ // Phoneme adjustment suggested. - झ JhV - झ (B Jh - झँ JhV~' - झॅ JhV~' + झ J#V + झ (B J# + झँ J#V~' + झॅ J#V~' झ (्झ J, - झ (_ Jh + झ (_ J# .group ञ // Phoneme adjustment suggested ञ n^V @@ -659,13 +659,13 @@ ट (्य t.: .group ठ - ठ th.V - ठ (B th. - ठँ t.hV~' - ठॅ t.hV~' - ठ (्ठ th., - ्) ठ (_ th.@/ -?1 ठ (_ t.h + ठ t.#V + ठ (B t.# + ठँ t.#V~' + ठॅ t.#V~' + ठ (्ठ t.#, + ्) ठ (_ t.#@/ +?1 ठ (_ t.# .group ड ड d.V @@ -682,14 +682,14 @@ ड़ॅ d.:V~' .group ढ - ढ dh.V - ढ (B dh. - ढँ d.hV~' - ढॅ d.hV~' - ्) ढ (_ dh.@/ -?1 ढ (_ d.h - ढ़ d.hV: // nukta - ढ़ (B d.h // nukta + ढ d.#V + ढ (B d.# + ढँ d.#V~' + ढॅ d.#V~' + ्) ढ (_ d.#@/ +?1 ढ (_ d.# + ढ़ d.#V: // nukta + ढ़ (B d.# // nukta .group ण ण n.V // Phoneme adjustment suggested @@ -709,13 +709,13 @@ ?1 त (_ t, .group थ - थ thV - थँ thV~' - थॅ thV~' - थ (B th - ्) थ (_ th@/ - थ (्य th, -?1 थ (_ th + थ t#V + थँ t#V~' + थॅ t#V~' + थ (B t# + ्) थ (_ t#@/ + थ (्य t#, +?1 थ (_ t# .group द द dV @@ -729,12 +729,12 @@ ्) द (_ d@/ .group ध - ध dhV - धँ dhV~' - धॅ dhV~' - ध (B dh -?1 ध (_ dh - ्) ध (_ dh@/ + ध d#V + धँ d#V~' + धॅ d#V~' + ध (B d# +?1 ध (_ d# + ्) ध (_ d#@/ .group न न nV @@ -763,13 +763,13 @@ ्) प (_ p@/ .group फ - फ phV - फँ phV~' - फॅ phV~' - फ (B ph - फ (्न ph: -?1 फ (_ ph - ्) फ (_ ph@/ + फ p#V + फँ p#V~' + फॅ p#V~' + फ (B p# + फ (्न p#: +?1 फ (_ p# + ्) फ (_ p#@/ .group ब ब bV @@ -781,12 +781,12 @@ ्) ब (_ b@/ .group भ - भ bhV - भँ bhV~' - भॅ bhV~' - भ (B bh -?1 भ (_ bh - भ (्य bh, + भ b#V + भँ b#V~' + भॅ b#V~' + भ (B b# +?1 भ (_ b# + भ (्य b#, ्) भ (_ bh@/ .group म @@ -1064,65 +1064,65 @@ .group [ [ l'eftbr'ak'et - [ (_A th'ul'ok'osht.@2suru - [ (_C th'ul'ok'osht.@2suru - [ (_० th'ul'ok'osht.@2suru - [ (_१ th'ul'ok'osht.@2suru - [ (_२ th'ul'ok'osht.@2suru - [ (_३ th'ul'ok'osht.@2suru - [ (_४ th'ul'ok'osht.@2suru - [ (_५ th'ul'ok'osht.@2suru - [ (_६ th'ul'ok'osht.@2suru - [ (_७ th'ul'ok'osht.@2suru - [ (_८ th'ul'ok'osht.@2suru - [ (_९ th'ul'ok'osht.@2suru + [ (_A t#'ul'ok'osht.@2suru + [ (_C t#'ul'ok'osht.@2suru + [ (_० t#'ul'ok'osht.@2suru + [ (_१ t#'ul'ok'osht.@2suru + [ (_२ t#'ul'ok'osht.@2suru + [ (_३ t#'ul'ok'osht.@2suru + [ (_४ t#'ul'ok'osht.@2suru + [ (_५ t#'ul'ok'osht.@2suru + [ (_६ t#'ul'ok'osht.@2suru + [ (_७ t#'ul'ok'osht.@2suru + [ (_८ t#'ul'ok'osht.@2suru + [ (_९ t#'ul'ok'osht.@2suru .group ] ] r'aitbr'ak'et - A_) ] th'ul'ok'osht.@2b'Vnd@2 - C_) ] th'ul'ok'osht.@2b'Vnd@2 - ०_) ] th'ul'ok'osht.@2b'Vnd@2 - १_) ] th'ul'ok'osht.@2b'Vnd@2 - २_) ] th'ul'ok'osht.@2b'Vnd@2 - ३_) ] th'ul'ok'osht.@2b'Vnd@2 - ४_) ] th'ul'ok'osht.@2b'Vnd@2 - ५_) ] th'ul'ok'osht.@2b'Vnd@2 - ६_) ] th'ul'ok'osht.@2b'Vnd@2 - ७_) ] th'ul'ok'osht.@2b'Vnd@2 - ८_) ] th'ul'ok'osht.@2b'Vnd@2 - ९_) ] th'ul'ok'osht.@2b'Vnd@2 + A_) ] t#'ul'ok'osht.@2b'Vnd@2 + C_) ] t#'ul'ok'osht.@2b'Vnd@2 + ०_) ] t#'ul'ok'osht.@2b'Vnd@2 + १_) ] t#'ul'ok'osht.@2b'Vnd@2 + २_) ] t#'ul'ok'osht.@2b'Vnd@2 + ३_) ] t#'ul'ok'osht.@2b'Vnd@2 + ४_) ] t#'ul'ok'osht.@2b'Vnd@2 + ५_) ] t#'ul'ok'osht.@2b'Vnd@2 + ६_) ] t#'ul'ok'osht.@2b'Vnd@2 + ७_) ] t#'ul'ok'osht.@2b'Vnd@2 + ८_) ] t#'ul'ok'osht.@2b'Vnd@2 + ९_) ] t#'ul'ok'osht.@2b'Vnd@2 .group { { l'eftbr'eIs - { (_A b'a:Ng'ek'oshth.@2suru - { (_C b'a:Ng'ek'oshth.@2suru - { (_० b'a:Ng'ek'oshth.@2suru - { (_१ b'a:Ng'ek'oshth.@2suru - { (_२ b'a:Ng'ek'oshth.@2suru - { (_३ b'a:Ng'ek'oshth.@2suru - { (_४ b'a:Ng'ek'oshth.@2suru - { (_५ b'a:Ng'ek'oshth.@2suru - { (_६ b'a:Ng'ek'oshth.@2suru - { (_७ b'a:Ng'ek'oshth.@2suru - { (_८ b'a:Ng'ek'oshth.@2suru - { (_९ b'a:Ng'ek'oshth.@2suru + { (_A b'a:Ng'ek'osht.#@2suru + { (_C b'a:Ng'ek'osht.#@2suru + { (_० b'a:Ng'ek'osht.#@2suru + { (_१ b'a:Ng'ek'osht.#@2suru + { (_२ b'a:Ng'ek'osht.#@2suru + { (_३ b'a:Ng'ek'osht.#@2suru + { (_४ b'a:Ng'ek'osht.#@2suru + { (_५ b'a:Ng'ek'osht.#@2suru + { (_६ b'a:Ng'ek'osht.#@2suru + { (_७ b'a:Ng'ek'osht.#@2suru + { (_८ b'a:Ng'ek'osht.#@2suru + { (_९ b'a:Ng'ek'osht.#@2suru .group } } r'aItbr'eIs - A_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - C_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ०_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - १_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - २_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ३_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ४_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ५_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ६_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ७_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ८_) } b'a:Ng'ek'oshth.@2b'Vnd@2 - ९_) } b'a:Ng'ek'oshth.@2b'Vnd@2 + A_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + C_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ०_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + १_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + २_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ३_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ४_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ५_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ६_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ७_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ८_) } b'a:Ng'ek'osht.#@2b'Vnd@2 + ९_) } b'a:Ng'ek'osht.#@2b'Vnd@2 @@ -1132,19 +1132,19 @@ // Special Symbols with special meanings .group । pur',n.@,w'ir'a:m // Fullstop of Devanagari - ॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice. + ॥ d'i:rg#@,w'ir'a:m // Double Fullstop - means Read sentence twice. ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). ॰ saNks.e:p@s'u:c@k@ - $ dOlV + $ dOlV % prVtish'vt // Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! ़ n'u'k't'a: // Name of symbol. ॑ Ud'Vtt,@ - ॓ Ud:dh@r,@n.@a:r'Vmbh@ - ॔ ,Ud:dh@r,@n.@'Vnt@ - ॽ k,@n.th.@w'Ira:m + ॓ Ud:d#@r,@n.@a:r'Vmb#@ + ॔ ,Ud:d#@r,@n.@'Vnt@ + ॽ k,@n.t.#@w'Ira:m ॒ a'n'ud'Vtt,@ diff --git a/dictsource/pt_list b/dictsource/pt_list index 2638dd55..471eb01c 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -45,6 +45,7 @@ _tld tS'iU _ar 'a*aby _cyr si*'ilikU _he eb*'aIkU +_zh Sin'es // character names @@ -828,6 +829,7 @@ galileia $alt gameta $alt2 geleia $alt gelo $alt $verb +genebra $alt germe $alt gesso $alt2 golpe $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index b30bdb2c..e7b36766 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -361,10 +361,8 @@ _soub) e (L05_ E _rend) e (L06_ e _vend) e (L06_ e -_atend) e (L06_ e + tend) e (L06_ e / a- con- en- es- _compreend) e (L06_ e -_entend) e (L06_ e -_estend) e (L06_ e respond) e (L06_ e // cor- _enraivec) e (L07_ e _espairec) e (L07_ e @@ -383,6 +381,8 @@ _espairec) e (L07_ e vert) e (L07_ e // in- re- con- _eleg) e (L07_ e _ergu) e (L07_ e +_escond) e (L06_ e + _mord) e (L06_ e _mord) e (L07_ e _morr) e (L07_ e _perd) e (L07_ e @@ -396,9 +396,12 @@ _adormec) e (L07_ e _agradec) e (L07_ e _amanhec) e (L07_ e _anoitec) e (L07_ e +_arrepend) e (L06_ e _arrepend) e (L07_ e _cresc) e (L07_ e +_defend) e (L06_ e _defend) e (L07_ e +_depend) e (L06_ e _depend) e (L07_ e _emagrec) e (L07_ e _enlouquec) e (L07_ e @@ -410,17 +413,19 @@ _escond) e (L07_ e _escurec) e (L07_ e _esquec) e (L07_ e _interromp) e (L07_ e -_obedec) e (L07_ e +obedec) e (L07_ e / des- +_suspend) e (L07_ e _perec) e (L07_ e _rejuvenec) e (L07_ e aprend) e (L07_ e // re- conhec) e (L07_ e // & re- des- -entend) e (L07_ e + tend) e (L07_ e / en- con- a- es- preend) e (L07_ e // sur- com- respond) e (L07_ e // cor- qu) e (brL04_ E acel) e (rL04_ E / des- _hosp) e (dL03_ E +_amort) e (çL03_ e _in) e (ptL03_ E _gr) e (gL03_ e _n) e (grL03_ e @@ -486,7 +491,7 @@ _emagr) e (çL03 _aqu) e (çL03_ e _car) e (çL03_ e _mer) e (çL03_ e - _pad) e (çL03_ e // com- + pad) e (çL03_ e // com- _per) e (çL03_ e conh) e (çL03_ e // re- _esqu) e (çL03_ e diff --git a/dictsource/ta_list b/dictsource/ta_list index 03a308a2..0e285130 100644 --- a/dictsource/ta_list +++ b/dictsource/ta_list @@ -117,6 +117,7 @@ U+bf9 ru:ba:j _ar arVbU _cyr sirillik _he ;ebire:jVm +_zh tS'i:nV // abbreviations diff --git a/dictsource/te_list b/dictsource/te_list index 2e4daf58..fa2ebd0c 100644 --- a/dictsource/te_list +++ b/dictsource/te_list @@ -50,20 +50,20 @@ _1X padi _11 padakond.u _12 pannemd.u _13 padamu:d.u: -_14 padhna:lugu +_14 pad#na:lugu _15 padihe:nu _16 padaha:ru _17 padihe:d.u -_18 paddhenimidi +_18 padd#enimidi _19 pamdommadi _2X iravaI _3X muppaI -_4X nalubhaI -_5X ja:bhaI +_4X nalub#aI +_5X ja:b#aI _6X aravaI -_7X d.ebhbaI -_8X jenabhaI -_9X tombhaI +_7X d.eb#baI +_8X jenab#aI +_9X tomb#aI _0C vandala _0C0 vandalu _1C okavanda @@ -92,8 +92,8 @@ _?? aks.aram // 'unknown character' _, ka:ma: _; semi:ko:lan _: ko:lan -_! a:S;carja:rthaka -_? praS;na:rthaka +_! a:S;carja:rt#aka +_? praS;na:rt#aka _- haIfan __ amd.ar||sko:r @@ -114,29 +114,29 @@ U+c4d vottu // consonants with virama క్ ik -ఖ్ ikh +ఖ్ ik# గ్ ig -ఘ్ igh +ఘ్ ig# ఙ్ iN చ్ ic -ఛ్ ich +ఛ్ ic# జ్ iJ -ఝ్ iJh +ఝ్ iJ# ఞ్ in^ ట్ it. -ఠ్ ith. +ఠ్ it.# డ్ id. -ఢ్ idh. +ఢ్ id.# ణ్ in. త్ it -థ్ ith +థ్ it# ద్ id -ధ్ idh +ధ్ id# న్ in ప్ ip -ఫ్ iph +ఫ్ ip# బ్ ib -భ్ ibh +భ్ ib# మ్ im య్ ij ర్ ir diff --git a/dictsource/te_rules b/dictsource/te_rules index 4b18cdb5..2ceb5476 100644 --- a/dictsource/te_rules +++ b/dictsource/te_rules @@ -24,16 +24,16 @@ క (B k .group ఖ - ఖ kha - ఖ (B kh + ఖ k#a + ఖ (B k# .group గ గ ga గ (B g .group ఘ - ఘ gha - ఘ (B gh + ఘ g#a + ఘ (B g# .group ఙ ఙ Na @@ -44,16 +44,16 @@ చ (B c .group ఛ - ఛ cha - ఛ (B ch + ఛ c#a + ఛ (B c# .group జ జ Ja జ (B J .group ఝ - ఝ Jha - ఝ (B Jh + ఝ J#a + ఝ (B J# .group ఞ ఞ n^a @@ -64,16 +64,16 @@ ట (B t. .group ఠ - ఠ th.a - ఠ (B th. + ఠ t.#a + ఠ (B t.# .group డ డ d.a డ (B d. .group ఢ - ఢ dh.a - ఢ (B dh. + ఢ d.#a + ఢ (B d.# .group ణ ణ n.a @@ -84,16 +84,16 @@ త (B t .group థ - థ tha - థ (B th + థ t#a + థ (B t# .group ద ద da ద (B d .group ధ - ధ dha - ధ (B dh + ధ d#a + ధ (B d# .group న న na @@ -104,16 +104,16 @@ ప (B p .group ఫ - ఫ pha - ఫ (B ph + ఫ p#a + ఫ (B p# .group బ బ ba బ (B b .group భ - భ bha - భ (B bh + భ b#a + భ (B b# .group మ మ ma diff --git a/phsource/compile_report b/phsource/compile_report index fa7f3990..98f7e983 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -13,6 +13,7 @@ consonants 10 118 en-wi 30 156 af 39 138 cy 29 134 + ga 29 133 de 41 141 eo 13 116 jbo 2 116 @@ -21,17 +22,18 @@ consonants 10 118 et 40 135 fr 64 146 fr-ca 11 146 - hi 57 150 - bn 5 150 - ne 18 158 - ur 6 150 - ta 23 154 - kn 17 150 - ml 22 154 + nl 35 130 + hi 57 149 + bn 5 149 + ne 18 157 + ur 6 149 + pa 15 151 + ta 23 153 + kn 17 149 + ml 21 152 hu 25 124 lt 44 139 lv 29 127 - nl 35 130 pl 22 122 sk 28 137 cs 7 137 @@ -66,8 +68,8 @@ consonants 10 118 hy 23 119 da 46 139 ka 20 115 + fa 9 112 rw 15 132 - pa 15 152 prs 8 113 sl 10 137 gd 6 109 @@ -77,15 +79,13 @@ consonants 10 118 ak 8 111 am 15 114 wo 18 120 - dv 14 150 - te 16 150 - si 24 156 + dv 14 149 + te 16 149 + si 24 155 tn 27 121 mt 32 129 - bo 10 154 + bo 10 153 kk 20 118 - fa 9 112 - ga 29 133 tt 23 120 ko 15 116 kl 18 119 @@ -98,7 +98,7 @@ b/b_ [b] base [b] fr b/b@ [b] base b/b@2 [b] base - [bh] hi + [b#] hi b/ba [b] base b/be [b] base b/bi [b] base @@ -108,7 +108,7 @@ b/br [b] fr b/bu [b] base b/xb [b] base [b] fr - [bh] hi + [b#] hi b/xbr [b] fr d/d [d] base [d[] base @@ -152,7 +152,7 @@ d/dr [*] base [d^] et [d] fr [d.] hi - [dh.] hi + [d.#] hi [d] kn [d] hu [d] lt @@ -176,7 +176,7 @@ d/xd [d] base [d] et [d] fr [z] fr - [dh] hi + [d#] hi [d] kn [d] hu [d] lt @@ -186,17 +186,17 @@ d/xd [d] base [d] sq [d] mt [dz] bo - [dzh] bo -d/xd3 [dh] hi + [dz#] bo +d/xd3 [d#] hi d/xd_pzd [d^] et [d;] lt [d;] pl d/xdr [d] fr [d.] hi - [dh.] hi + [d.#] hi d/xdz [dz] consonants [dz] bo - [dzh] bo + [dz#] bo d/x_tap [t#] en [*] pt dzh/dzh [dZ] base @@ -231,7 +231,7 @@ dzh/xdzh [dZ] base [dZ;] ru [dZ;] sq dzh/xdz_pzd [J] base - [Jh] hi + [J#] hi [J] tr [J] ku envelope/i_risefall [11] zh @@ -239,10 +239,10 @@ envelope/i_risefall2 [+2] rw envelope/p_214 [5] vi [5] vi-hue [214] zh -envelope/p_512 [6] vi +envelope/p_512 [+] pa + [6] vi [4] vi-hue [6] vi-hue - [+] pa envelope/p_fall [2] vi [7] vi [2] vi-hue @@ -273,7 +273,7 @@ envelope/vi_5amp [5] vi envelope/vi_6amp [6] vi [2] vi-hue [6] vi-hue -g2/xg [gh] hi +g2/xg [g#] hi g/g [g] base [g-] en [g] cy @@ -450,7 +450,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [¨\7] base +l/l@ [¨\0] base [l#] base [l] fr [l/2] fr @@ -484,7 +484,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨\7] base +l/la [¨\0] base [l#] base [l] fr [l/2] fr @@ -492,7 +492,7 @@ l/la [ [K] tn l/l_a [l/3] base [l/] fr -l/le [¨\7] base +l/le [¨\0] base [l#] base [l] fr [l/2] fr @@ -504,7 +504,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨\7] base +l/li [¨\0] base [l#] base [l] fr [l/2] fr @@ -518,7 +518,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨\7] base +l/lo [¨\0] base [l#] base [l/2] fr [K] nso @@ -529,7 +529,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨\7] base +l/lu [¨\0] base [l#] base [l] fr [l/2] fr @@ -870,11 +870,10 @@ ustop/k_ [k] base [k] el [k] sq ustop/k_asp [kh] consonants - [gh] hi + [g#] hi [kh] zh [k#] ka [kh] tn -ustop/k_asp2 [kh2] ml ustop/k_asp_a [k#] ka ustop/k_asp_e [k#] ka ustop/k_asp_u [k#] ka @@ -896,7 +895,6 @@ ustop/kl [k] base [k] base2 [k] et [k] fr - [kh2] ml [k] lv [k] el [k] zhy @@ -928,7 +926,7 @@ ustop/p_ [p] base [p] fr [ph] tn ustop/p_asp [ph] consonants - [bh] hi + [b#] hi [ph] zh [ph] tn ustop/percus02 [#X2] hi @@ -968,8 +966,8 @@ ustop/q [q] base ustop/q_u [q] base ustop/t [t] base [t] en-us - [dh.] hi - [th.] hi + [d.#] hi + [t.#] hi [t] zhy [t] da ustop/t_ [t] base @@ -985,8 +983,8 @@ ustop/t_dnt [t] base [t] base2 [t] en-us [t] et - [dh] hi - [th] hi + [d#] hi + [t#] hi [t] hu [t] lt [t] pl @@ -1011,14 +1009,14 @@ ustop/ts [ts] consonants [z] zhy [tsh] zh [ts] tn - [tsh] bo - [dzh] bo + [ts#] bo + [dz#] bo ustop/ts_ [ts] consonants [dz] consonants [ts] lv [ts] tn - [tsh] bo - [dzh] bo + [ts#] bo + [dz#] bo ustop/ts2 [ts] lv [ts] hy [ts] ka @@ -1044,7 +1042,7 @@ ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_sr [tS] sr ustop/tsh_unasp [tS`] am ustop/ts_pzd [tS;] base - [Jh] hi + [J#] hi [tS;] lt [tS;] ru [dZ;] sq @@ -1085,8 +1083,8 @@ vdiph2/ei_4 [ei] zh vdiph2/eo [eo] ro vdiph2/e_u [e[u] ro vdiph2/i@ [i@] en-n - [i@] hy [i@] ga + [i@] hy vdiph2/i@_2 [i@] en-wm vdiph2/ie [i@] en-wi [ie] fi @@ -1176,6 +1174,7 @@ vdiph/ae [E:] fr-ca vdiph/ae_2 [aI] en-n vdiph/ai [aI] base2 [aI] en-wi + [aI] ga [aI] eo [aI] kn [aI] ml @@ -1189,7 +1188,6 @@ vdiph/ai [aI] base2 [aI] hy [aI] da [aI] te - [aI] ga [aI] kl vdiph/ai_2 [aI] en [aI] cy @@ -1220,18 +1218,18 @@ vdiph/au_2 [au] zhy vdiph/au_3 [aU] en-rp vdiph/au_4 [aU] base2 [aU] cy + [aU] ga + [aU#] ga [aU] eo [aU] lt [aU] sk [aU] id - [aU] ga - [aU#] ga vdiph/ee-e [E:] hi vdiph/eei [EI] base2 [eI] en [EI] de - [eI] ne [EI] nl + [eI] ne [EI] vi [eI] hy [eI] prs @@ -1240,8 +1238,8 @@ vdiph/eei_2 [eI] eo [ei] lt [ei] lv [eI] id - [ei] mt [eI] fa + [ei] mt vdiph/eei_3 [eI] lt [eI] sk [eI] ku @@ -1268,9 +1266,9 @@ vdiph/ei [eI] base2 vdiph/eu [eU] base2 [eU] cy [eU] eo + [eU] nl [eU] ne [eU] lt - [eU] nl [eU] sk [eU] pt [eU] vi @@ -1335,9 +1333,9 @@ vdiph/ou_4 [o:] nl vdiph/@u [u:] en-wm [@:U] vi vdiph/@u_2 [oU] en-rp -vdiph/@u_3 [@U] ro +vdiph/@u_3 [@U] ga + [@U] ro [@U] vi - [@U] ga vdiph/@u_en [oU] en [@U] id vdiph/ui [uI] base2 @@ -1413,8 +1411,8 @@ vnasal/o_n [o~] hi vnasal/o_n2 [o~] af vnasal/o_n4 [O~] fr vnasal/oo_n2 [O~] en - [O~] hi [O~] nl + [O~] hi [o] zh vnasal/oo_n3 [O~] pl vnasal/&u_n [O#] vi @@ -1485,7 +1483,7 @@ voc/z_ [z] base [z;] ro [z] sq [dz] bo - [dzh] bo + [dz#] bo voc/zh [Z] base [z.] base [R^] sk @@ -1507,6 +1505,7 @@ vowel/@ [@] base [@5] en [@] en-rp [V] cy + [@/] ga [@] kn [@] hy [@] ka @@ -1514,7 +1513,6 @@ vowel/@ [@] base [@] wo [@:] wo [@] te - [@/] ga vowel/@- [@-] base [r*] hr [@-] da @@ -1529,8 +1527,8 @@ vowel/& [a] en-rp [&] sv [&#] da [?&#] da - [&] az [a] fa + [&] az vowel/0 [0] en [O] hi [O] pt @@ -1596,9 +1594,9 @@ vowel/a [a] base [aa] en-wm [a] cy [a] de + [a:] nl [a] ta [a:] hu - [a:] nl [a] pl [a] sk [a:] sk @@ -1635,10 +1633,10 @@ vowel/a_2 [a] base2 [a] da [?a] da [a] rw -vowel/a#_2 [a] kn - [a] ml - [A] nl +vowel/a#_2 [A] nl [a:] nl + [a] kn + [a] ml [a#] pl [&] hr [a] sv @@ -1670,6 +1668,7 @@ vowel/a#_3 [a#] en [a#] en-n [a#] en-us [a#] en-wm + [a#] ga [3] de [a] hi [a] ml @@ -1685,10 +1684,9 @@ vowel/a#_3 [a#] en [a] sq [a/] sq [3] da - [a#] ga -vowel/a_4 [a] es +vowel/a_4 [a] ga + [a] es [a] el - [a] ga vowel/a#_4 [a:] nl [a] bg [a/] it @@ -1725,9 +1723,9 @@ vowel/aa# [O] en-us vowel/aa_2 [A:] en [A@] en [A:] cy + [A:] ga [A] zh [A@] tn - [A:] ga vowel/aa_3 [A:] af [A] sq [A] prs @@ -1741,10 +1739,10 @@ vowel/aa_6 [A] de [A:] de vowel/aa_8 [0] en-us [A:] en-us + [0] ga [A1] et [A] nl [a:] is - [0] ga [A] tt [a] ko vowel/aa_9 [a] fi @@ -1761,9 +1759,9 @@ vowel/@_bck [@] hi [V] ne [@/] ne [@] ur + [@] pa [@] bg [@] zh - [@] pa vowel/e [e] base [e] base2 [e:] en @@ -1773,6 +1771,7 @@ vowel/e [e] base [eI] en-wi [e:] af [e:] cy + [e:] ga [e] ne [e] ta [e:] ta @@ -1799,22 +1798,21 @@ vowel/e [e] base [e] dv [e:] dv [e:] te - [e:] ga [E] kl vowel/e# [I] en-sc [e] et [E] kl -vowel/e_2 [eI] en-sc +vowel/e_2 [i] en-n + [eI] en-sc [e:] de [e] hi [e:] hi + [e] pa [e] it [e:] sv [e:] no - [e] pa [e] sl -vowel/e_3 [i] en-n - [e:] hu +vowel/e_3 [e:] hu [e] ku vowel/e_5 [i] en-sc vowel/e_6 [e] ht @@ -1844,11 +1842,11 @@ vowel/ee_1 [E] base2 [e] zhy vowel/ee_2 [E] cy [E2] nl + [E] pa [E] zh [E#] ku [&] da [?&] da - [E] pa [&] kk vowel/ee#_2 [E1] et [E-] sv @@ -1871,6 +1869,7 @@ vowel/ee_6 [&] sk [&] si [&:] si vowel/e_mid [E] en-rp + [E] ga [E] fr [E-] fr [E~] fr @@ -1902,7 +1901,6 @@ vowel/e_mid [E] en-rp [E] sl [E] ht [e] si - [E] ga vowel/e_mid2 [E] af [E] de [E2] de @@ -1923,6 +1921,7 @@ vowel/e_mid2 [E] af [e] sq [E] da [?E] da + [e] fa [e] nso [e] az [e] am @@ -1930,7 +1929,6 @@ vowel/e_mid2 [E] af [e:] si [e] mt [e] bo - [e] fa vowel/@_fnt [@] en-wi [@2] en-wi [@2] hr @@ -1946,6 +1944,7 @@ vowel/i [i] base [i] en-wm [i] en-wi [i:] cy + [i:] ga [i] eo [i] ne [i:] ta @@ -1963,6 +1962,7 @@ vowel/i [i] base [i] sw [i] hy [i] ka + [i] fa [i] rw [i#] rw [i] prs @@ -1973,8 +1973,6 @@ vowel/i [i] base [i:] te [i:] si [i] bo - [i] fa - [i:] ga [i] tt [i] kl vowel/i# [y:] cy @@ -2037,8 +2035,8 @@ vowel/ii [I] en-n [I] de [I:] de [I] fr-ca - [I] ml [I] nl + [I] ml [I] is [I:] is [i] zhy @@ -2054,21 +2052,21 @@ vowel/ii# [I#] en-us [I] kk [e] tt vowel/ii_2 [I] en + [I] ga [i] zh [I] da [I] mt - [I] ga vowel/ii#_2 [y] pl [y] am vowel/ii_3 [I] cy [I] fi [I1] et [I] hi + [I] pa [i] sk [I] hr [I] sv [I] no - [I] pa [i] sl vowel/ii#_3 [I2] en-us vowel/ii_4 [I2] en @@ -2092,8 +2090,8 @@ vowel/ii_6 [I] en-wm [I] sq [i] wo vowel/ii_7 [i] en - [i] sq [i] ga + [i] sq vowel/ii_8 [i] kk vowel/ii_final [i] en-us [i] en-rp @@ -2109,23 +2107,25 @@ vowel/@_low [@] en-rp [@/] ne [@] ur [@2] ur + [@] pa + [V] pa [@] ml [@] ro [a#] no [@] id - [@] pa - [V] pa [@] si vowel/@_low2 [@2] en-us vowel/o [o] base2 [o:] en [oU] en-n [oU] en-wi + [o:] ga [o:] de [o] eo [o:] et [o] fr [o] hi + [o:] pa [o] ta [o:] ta [o] kn @@ -2143,14 +2143,12 @@ vowel/o [o] base2 [o] hy [o] rw [o#] rw - [o:] pa [o] ak [o] wo [o:] wo [o] te [o:] te [o] bo - [o:] ga [o] kl vowel/o_2 [o:] cy [o:] hi @@ -2192,10 +2190,10 @@ vowel/o_mid [U@] en-rp [o] hu [o] bg [o] tr + [o] fa [o] az [o] dv [o:] dv - [o] fa [o] tt vowel/o_mid2 [O] fr [O] ht @@ -2256,9 +2254,9 @@ vowel/oo_4 [O] base2 [3:] en-wi [O1] et [O:] hi + [O] pa [O] it [O] an - [O] pa vowel/oo_5 [O] pl [O] is [O] sq @@ -2285,6 +2283,7 @@ vowelr/V_r [IR] en vowel/u [u] base [u:] en-wi [u:] cy + [u1] ga [u:] de [u] eo [u] ml @@ -2302,7 +2301,6 @@ vowel/u [u] base [u] ak [u:] wo [u] bo - [u1] ga [u] tt vowel/u# [u:] en-sc [Y] tr @@ -2344,13 +2342,15 @@ vowel/u#_7 [@] tr [@] az vowel/u_bck [u] base2 [U] cy + [u:] ga [u] fi [u] fr-ca + [u] nl [u:] hi [u] ne + [u] pa [u:] hu [u:] lt - [u] nl [u] pl [u:] sk [u] hr @@ -2372,25 +2372,23 @@ vowel/u_bck [u] base2 [u] ka [u] rw [u#] rw - [u] pa [u] mt - [u:] ga [u] ko vowel/u_bck2 [u] et [u] fr [u:] fr [u:] la [u] es - [u] ht [u] fa + [u] ht [u] kl vowel/u_bck3 [u:] et [u] kk vowel/uu [U] en [U] en-n [U] en-wm - [U] tn [U] ga + [U] tn vowel/uu# [U] ku vowel/uu_2 [U] base2 [U] de @@ -2406,13 +2404,13 @@ vowel/uu_4 [U] fi vowel/uu_bck [U] en-wi [U] fr-ca [U] hi + [U] pa [u] kn [u:] kn [u] hu [U] pt [U] no [u] zhy - [U] pa vowel/V [3] en-sc [@] bg [@] vi @@ -2427,13 +2425,13 @@ vowel/V_2 [V] en [V] ku vowel/V_3 [V] en-rp [V] hi + [V] pa [V] ta [a] bg - [V] pa vowel/V_4 [V] en-sc + [O] ga [V] da [?V] da - [O] ga vowel/V_6 [V] en-us [a#] lv vowel/y [y] base2 @@ -2443,8 +2441,8 @@ vowel/y [y] base2 [y:] et [y] fr [y-] fr - [y:] hu [y] nl + [y:] hu [y] la [yu] zhy [y] sq @@ -2460,8 +2458,8 @@ vowel/y# [Y] base2 [Y] et [Y:] et [Y] fr - [Y:] hu [8] nl + [Y:] hu [Y] ro [oe] zhy [W] tr diff --git a/phsource/ph_english_n b/phsource/ph_english_n index bd3bd128..0bf6b8e0 100644 --- a/phsource/ph_english_n +++ b/phsource/ph_english_n @@ -58,8 +58,7 @@ endphoneme phoneme i // optional variant of [I] for end of words vowel starttype #i endtype #i length 150 - IfNextVowelAppend(;) - FMT(vowel/e_3) + FMT(vowel/e_2) endphoneme diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 662689c7..746ff73f 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -97,6 +97,7 @@ phoneme I# vowel starttype #i endtype #i unstressed length 160 + ipa ᵻ // FMT(vowel/@_fnt) FMT(vowel/ii#) endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 0ca2925c..02272d61 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -294,7 +294,7 @@ phoneme p endphoneme -phoneme ph +phoneme p# import_phoneme consonants/ph endphoneme @@ -304,10 +304,10 @@ phoneme b // this is [b] endphoneme -phoneme bh +phoneme b# vcd blb stop lengthmod 5 - voicingswitch ph + voicingswitch p# Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 @@ -330,7 +330,7 @@ phoneme t // dental variant of /t/ endphoneme -phoneme th // dental variant of /t/ +phoneme t# // dental variant of /t/ vls dnt stop lengthmod 2 voicingswitch d @@ -349,10 +349,10 @@ phoneme d // dental variant of /d/ endphoneme -phoneme dh +phoneme d# vcd dnt stop lengthmod 5 - voicingswitch th + voicingswitch t# Vowelin f1=0 f2=1500 -300 300 f3=-100 80 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 @@ -379,11 +379,11 @@ phoneme t. WAV(ustop/t_short) endphoneme -phoneme th. +phoneme t.# vls rfx stop lengthmod 2 - ipa ʈh - voicingswitch dh. + ipa ʈU+02B0 + voicingswitch d.# Vowelin f1=0 f2=1800 -300 300 f3=-400 80 Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 // WAV(ustop/th_rfx) @@ -410,11 +410,11 @@ phoneme d. endphoneme -phoneme dh. +phoneme d.# vcd rfx stop lengthmod 5 - ipa ɖh - voicingswitch th. + ipa ɖU+02B0 + voicingswitch t.# Vowelin f1=1 f2=1800 -300 300 f3=-400 80 Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 @@ -439,7 +439,7 @@ phoneme c endphoneme -phoneme ch +phoneme c# CALL base/tS; ipa ch endphoneme @@ -450,10 +450,10 @@ phoneme J endphoneme -phoneme Jh +phoneme J# vcd pal afr sibilant lengthmod 5 - voicingswitch ch + voicingswitch c# Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 @@ -477,9 +477,9 @@ phoneme k voicingswitch g endphoneme -phoneme kh +phoneme k# import_phoneme consonants/kh - voicingswitch gh + voicingswitch g# endphoneme @@ -489,10 +489,10 @@ phoneme g endphoneme -phoneme gh +phoneme g# vcd dnt stop lengthmod 5 - voicingswitch kh + voicingswitch k# Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 diff --git a/phsource/ph_malayalam b/phsource/ph_malayalam index bfcc104d..47b677d3 100644 --- a/phsource/ph_malayalam +++ b/phsource/ph_malayalam @@ -139,7 +139,7 @@ phoneme R import_phoneme base/R2 endphoneme -phoneme d# // 'rr' sounds like English 'd' +phoneme d2 // 'rr' sounds like English 'd' import_phoneme base/d endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index cfc8da01..96bbb958 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1690,6 +1690,9 @@ include ph_afrikaans phonemetable cy base include ph_welsh +phonemetable ga base +include ph_irish + phonemetable de base include ph_german @@ -1714,6 +1717,9 @@ include ph_french phonemetable fr-ca fr include ph_french_ca +phonemetable nl base +include ph_dutch + phonemetable hi base include ph_hindi @@ -1727,6 +1733,9 @@ include ph_nepali phonemetable ur hi include ph_urdu +phonemetable pa hi +include ph_punjabi + phonemetable ta hi include ph_tamil @@ -1737,6 +1746,7 @@ phonemetable ml hi include ph_malayalam + phonemetable hu base include ph_hungarian @@ -1747,9 +1757,6 @@ include ph_lithuanian phonemetable lv base include ph_latvian -phonemetable nl base -include ph_dutch - phonemetable pl base include ph_polish @@ -1854,6 +1861,9 @@ include ph_danish phonemetable ka base include ph_georgian +phonemetable fa base +include ph_farsi + //************************************************************************************** // The following lines are experimental, for future additions. @@ -1872,9 +1882,6 @@ include ph_kinyarwanda //phonemetable mn base //include ph_mongolian -phonemetable pa hi -include ph_punjabi - phonemetable prs base include ph_dari @@ -1924,12 +1931,6 @@ include ph_tibetan phonemetable kk base include ph_kazakh -phonemetable fa base -include ph_farsi - -phonemetable ga base -include ph_irish - phonemetable tt base include ph_tatar @@ -1939,3 +1940,4 @@ include ph_korean phonemetable kl base include ph_greenlandic + diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 10427913..f360a084 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -67,7 +67,8 @@ MNEM_TAB mnem_rules[] = { {"p_alt5", 0x25}, {"p_alt6", 0x26}, {"p_alt", 0x21}, - {NULL, -1} }; + {NULL, -1} +}; MNEM_TAB mnem_flags[] = { // these in the first group put a value in bits0-3 of dictionary_flags @@ -182,13 +183,13 @@ const char *LookupMnemName(MNEM_TAB *table, const int value) //========================================================== /* Lookup a mnemonic string in a table, return its name */ { - while(table->mnem != NULL) - { - if(table->value==value) - return(table->mnem); - table++; - } - return(""); /* not found */ + while(table->mnem != NULL) + { + if(table->value==value) + return(table->mnem); + table++; + } + return(""); /* not found */ } /* end of LookupMnemValue */ @@ -200,27 +201,27 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len) int len; int total = 0; - buf[0] = 0; + buf[0] = 0; if((stress = flags[0] & 0xf) != 0) { - sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40)); - total = strlen(buf); - buf += total; + sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40)); + total = strlen(buf); + buf += total; } - for(ix=8; ix<64; ix++) - { - if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20))))) - { - name = LookupMnemName(mnem_flags, ix); - len = strlen(name) + 1; - total += len; - if(total >= buf_len) - continue; - sprintf(buf, " %s", name); - buf += len; - } - } + for(ix=8; ix<64; ix++) + { + if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20))))) + { + name = LookupMnemName(mnem_flags, ix); + len = strlen(name) + 1; + total += len; + if(total >= buf_len) + continue; + sprintf(buf, " %s", name); + buf += len; + } + } } @@ -228,12 +229,12 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len) char *DecodeRule(const char *group_chars, int group_length, char *rule, int control) {//================================================================================= -/* Convert compiled match template to ascii */ + /* Convert compiled match template to ascii */ - unsigned char rb; + unsigned char rb; unsigned char c; char *p; - int ix; + int ix; int match_type; int finished=0; int value; @@ -243,18 +244,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont int condition_num=0; int at_start = 0; const char *name; - char buf[60]; - char buf_pre[60]; + char buf[60]; + char buf_pre[60]; char suffix[20]; static char output[60]; - static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', - '&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'}; + static char symbols[] = + {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', + '&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W' + }; static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; match_type = 0; - buf_pre[0] = 0; + buf_pre[0] = 0; for(ix=0; ixtranslator_name,word,phonetic,decoded_phonemes); -} + } } else { @@ -694,8 +686,7 @@ static char nullstring[] = {0}; ix = utf8_out(wc, word); word[ix] = 0; } - else - if(word[0] != '_') + else if(word[0] != '_') { // convert to lower case, and note if the word is all-capitals int c2; @@ -1082,8 +1073,7 @@ static void copy_rule_string(char *string, int &state) fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum); error_count++; } - else - if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0)) + else if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0)) { fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c); error_count++; @@ -1162,9 +1152,9 @@ static void copy_rule_string(char *string, int &state) case 'a': sxflags |= SUFX_A; break; - case 'm': - sxflags |= SUFX_M; - break; + case 'm': + sxflags |= SUFX_M; + break; default: if(isdigit(c)) value = (value*10) + (c - '0'); @@ -1376,11 +1366,11 @@ int __cdecl string_sorter(char **a, char **b) char *pa, *pb; int ix; - if((ix = strcmp(pa = *a,pb = *b)) != 0) - return(ix); + if((ix = strcmp(pa = *a,pb = *b)) != 0) + return(ix); pa += (strlen(pa)+1); pb += (strlen(pb)+1); - return(strcmp(pa,pb)); + return(strcmp(pa,pb)); } /* end of string_sorter */ @@ -1471,12 +1461,12 @@ static void print_rule_group(FILE *f_out, int n_rules, char **rules, char *name) if(rule_pre[0] != 0) { p = buf; - for(ix=strlen(rule_pre)-1;ix>=0;ix--) + for(ix=strlen(rule_pre)-1; ix>=0; ix--) *p++ = rule_pre[ix]; sprintf(p,") "); spaces -= strlen(buf); for(ix=0; ix 0x20) // not space or zero-byte - { - p += utf8_in(&c,p); - replace1 += (c << ix); - ix += 16; - } - while(isspace2(*p)) p++; - ix = 0; - while((unsigned char)(*p) > 0x20) - { - p += utf8_in(&c,p); - replace2 += (c << ix); - ix += 16; - } - if(replace1 != 0) - { - Write4Bytes(f_out,replace1); // write as little-endian - Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() - } + p = buf; + replace1 = 0; + replace2 = 0; + while(isspace2(*p)) p++; + ix = 0; + while((unsigned char)(*p) > 0x20) // not space or zero-byte + { + p += utf8_in(&c,p); + replace1 += (c << ix); + ix += 16; } - break; + while(isspace2(*p)) p++; + ix = 0; + while((unsigned char)(*p) > 0x20) + { + p += utf8_in(&c,p); + replace2 += (c << ix); + ix += 16; + } + if(replace1 != 0) + { + Write4Bytes(f_out,replace1); // write as little-endian + Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() + } + } + break; } } fclose(f_temp); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 2f54247f..89e389a4 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -48,50 +48,51 @@ static const unsigned short diereses_list[7] = {0xe4,0xeb,0xef,0xf6,0xfc,0xff,0} // used for checking for vowels (up to 0x259=schwa) #define N_REMOVE_ACCENT 0x25e static unsigned char remove_accent[N_REMOVE_ACCENT] = { -'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0c0 -'d','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s', // 0d0 -'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0e0 -'d','n','o','o','o','o','o', 0 ,'o','u','u','u','u','y','t','y', // 0f0 + 'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0c0 + 'd','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s', // 0d0 + 'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0e0 + 'd','n','o','o','o','o','o', 0 ,'o','u','u','u','u','y','t','y', // 0f0 -'a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d', // 100 -'d','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g', // 110 -'g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i', // 120 -'i','i','i','i','j','j','k','k','k','l','l','l','l','l','l','l', // 130 -'l','l','l','n','n','n','n','n','n','n','n','n','o','o','o','o', // 140 -'o','o','o','o','r','r','r','r','r','r','s','s','s','s','s','s', // 150 -'s','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u', // 160 -'u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s', // 170 -'b','b','b','b', 0, 0, 'o','c','c','d','d','d','d','d','e','e', // 180 -'e','f','f','g','g','h','i','i','k','k','l','l','m','n','n','o', // 190 -'o','o','o','o','p','p','y', 0, 0, 's','s','t','t','t','t','u', // 1a0 -'u','u','v','y','y','z','z','z','z','z','z','z', 0, 0, 0, 'w', // 1b0 -'t','t','t','k','d','d','d','l','l','l','n','n','n','a','a','i', // 1c0 -'i','o','o','u','u','u','u','u','u','u','u','u','u','e','a','a', // 1d0 -'a','a','a','a','g','g','g','g','k','k','o','o','o','o','z','z', // 1e0 -'j','d','d','d','g','g','w','w','n','n','a','a','a','a','o','o', // 1f0 + 'a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d', // 100 + 'd','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g', // 110 + 'g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i', // 120 + 'i','i','i','i','j','j','k','k','k','l','l','l','l','l','l','l', // 130 + 'l','l','l','n','n','n','n','n','n','n','n','n','o','o','o','o', // 140 + 'o','o','o','o','r','r','r','r','r','r','s','s','s','s','s','s', // 150 + 's','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u', // 160 + 'u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s', // 170 + 'b','b','b','b', 0, 0, 'o','c','c','d','d','d','d','d','e','e', // 180 + 'e','f','f','g','g','h','i','i','k','k','l','l','m','n','n','o', // 190 + 'o','o','o','o','p','p','y', 0, 0, 's','s','t','t','t','t','u', // 1a0 + 'u','u','v','y','y','z','z','z','z','z','z','z', 0, 0, 0, 'w', // 1b0 + 't','t','t','k','d','d','d','l','l','l','n','n','n','a','a','i', // 1c0 + 'i','o','o','u','u','u','u','u','u','u','u','u','u','e','a','a', // 1d0 + 'a','a','a','a','g','g','g','g','k','k','o','o','o','o','z','z', // 1e0 + 'j','d','d','d','g','g','w','w','n','n','a','a','a','a','o','o', // 1f0 -'a','a','a','a','e','e','e','e','i','i','i','i','o','o','o','o', // 200 -'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h', // 210 -'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o', // 220 -'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s', // 230 -'z', 0, 0, 'b','u','v','e','e','j','j','q','q','r','r','y','y', // 240 -'a','a','a','b','o','c','d','d','e','e','e','e','e','e' }; + 'a','a','a','a','e','e','e','e','i','i','i','i','o','o','o','o', // 200 + 'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h', // 210 + 'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o', // 220 + 'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s', // 230 + 'z', 0, 0, 'b','u','v','e','e','j','j','q','q','r','r','y','y', // 240 + 'a','a','a','b','o','c','d','d','e','e','e','e','e','e' +}; void strncpy0(char *to,const char *from, int size) -{//=============================================== - // strcpy with limit, ensures a zero terminator +{//=================================================== +// strcpy with limit, ensures a zero terminator strncpy(to,from,size); to[size-1] = 0; } int Reverse4Bytes(int word) -{//======================== - // reverse the order of bytes from little-endian to big-endian +{//========================== +// reverse the order of bytes from little-endian to big-endian #ifdef ARCH_BIG int ix; int word2 = 0; @@ -109,7 +110,7 @@ int Reverse4Bytes(int word) int LookupMnem(MNEM_TAB *table, const char *string) -{//================================================ +{//================================================== while(table->mnem != NULL) { if(strcmp(string,table->mnem)==0) @@ -128,9 +129,9 @@ int LookupMnem(MNEM_TAB *table, const char *string) static void InitGroups(Translator *tr) {//=================================== -/* Called after dictionary 1 is loaded, to set up table of entry points for translation rule chains - for single-letters and two-letter combinations -*/ +// Called after dictionary 1 is loaded, to set up table of entry points for translation rule chains +// for single-letters and two-letter combinations + int ix; char *p; @@ -203,13 +204,11 @@ static void InitGroups(Translator *tr) { tr->groups1[c] = p; } - else - if(len == 0) + else if(len == 0) { tr->groups1[0] = p; } - else - if(c == 1) + else if(c == 1) { // index by offset from letter base tr->groups3[c2 - 1] = p; @@ -287,7 +286,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) } if((Reverse4Bytes(pw[0]) != N_HASH_DICT) || - (length <= 0) || (length > 0x8000000)) + (length <= 0) || (length > 0x8000000)) { fprintf(stderr,"Bad data: '%s' (%x length=%x)\n",fname,Reverse4Bytes(pw[0]),length); return(2); @@ -312,7 +311,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size)) { - fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); + fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); } return(0); @@ -325,18 +324,18 @@ int HashDictionary(const char *string) This is used to access the dictionary_2 word-lookup dictionary */ { - int c; + int c; int chars=0; - int hash=0; + int hash=0; - while((c = (*string++ & 0xff)) != 0) - { - hash = hash * 8 + c; - hash = (hash & 0x3ff) ^ (hash >> 8); /* exclusive or */ + while((c = (*string++ & 0xff)) != 0) + { + hash = hash * 8 + c; + hash = (hash & 0x3ff) ^ (hash >> 8); /* exclusive or */ chars++; - } + } - return((hash+chars) & 0x3ff); // a 10 bit hash code + return((hash+chars) & 0x3ff); // a 10 bit hash code } // end of HashDictionary @@ -387,7 +386,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone if((c = p[1]) == '|') { // treat double || as a word-break symbol, drop through - // to the default case with c = '|' + // to the default case with c = '|' } else { @@ -412,11 +411,11 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone mnemonic_word = phoneme_tab[ix]->mnemonic; while(((c = p[count]) > ' ') && (count < 4) && - (c == ((mnemonic_word >> (count*8)) & 0xff))) + (c == ((mnemonic_word >> (count*8)) & 0xff))) count++; if((count > max) && - ((count == 4) || (((mnemonic_word >> (count*8)) & 0xff)==0))) + ((count == 4) || (((mnemonic_word >> (count*8)) & 0xff)==0))) { max = count; max_ph = phoneme_tab[ix]->code; @@ -474,16 +473,15 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone void DecodePhonemes(const char *inptr, char *outptr) -//================================================== +{//================================================== // Translate from internal phoneme codes into phoneme mnemonics -{ unsigned char phcode; unsigned char c; unsigned int mnem; PHONEME_TAB *ph; static const char *stress_chars = "==,,'* "; -sprintf(outptr,"* "); + sprintf(outptr,"* "); while((phcode = *inptr++) > 0) { if(phcode == 255) @@ -520,12 +518,12 @@ sprintf(outptr,"* "); // using Kirschenbaum to IPA translation, ascii 0x20 to 0x7f unsigned short ipa1[96] = { -0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, -0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, -0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, -0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, -0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, -0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f + 0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, + 0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, + 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, + 0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, + 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, + 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f }; @@ -568,28 +566,28 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int InterpretPhoneme(NULL, 0, plist, &phdata, NULL); } - p = phdata.ipa_string; - if(*p == 0x20) - { - // indicates no name for this phoneme - *phon_out = 0; - return(phon_out); - } - if((*p != 0) && ((*p & 0xff) < 0x20)) - { - // name starts with a flags byte - if(flags != NULL) - *flags = *p; - p++; - } + p = phdata.ipa_string; + if(*p == 0x20) + { + // indicates no name for this phoneme + *phon_out = 0; + return(phon_out); + } + if((*p != 0) && ((*p & 0xff) < 0x20)) + { + // name starts with a flags byte + if(flags != NULL) + *flags = *p; + p++; + } len = strlen(p); if(len > 0) { - strcpy(phon_out, p); - phon_out += len; - *phon_out = 0; - return(phon_out); + strcpy(phon_out, p); + phon_out += len; + *phon_out = 0; + return(phon_out); } } @@ -633,9 +631,9 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) {//========================================================================= -/* Can be called after a clause has been translated into phonemes, in order - to display the clause in phoneme mnemonic form. -*/ + /* Can be called after a clause has been translated into phonemes, in order + to display the clause in phoneme mnemonic form. + */ int ix; unsigned int len; @@ -689,22 +687,22 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) } } - flags = 0; + flags = 0; WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); count = 0; for(p=phon_buf2; *p != 0;) { - p += utf8_in(&c, p); - if(use_ipa > 1) - { - // look for non-inital alphabetic character, but not diacritic, superscript etc. - if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) - { - buf += utf8_out(char_tie[use_ipa-2], buf); - } - } - buf += utf8_out(c, buf); - count++; + p += utf8_in(&c, p); + if(use_ipa > 1) + { + // look for non-inital alphabetic character, but not diacritic, superscript etc. + if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) + { + buf += utf8_out(char_tie[use_ipa-2], buf); + } + } + buf += utf8_out(c, buf); + count++; } if(plist->ph->code != phonSWITCH) @@ -755,7 +753,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) static int IsLetterGroup(Translator *tr, char *word, int group, int pre) {//===================================================================== - // match the word against a list of utf-8 strings +// match the word against a list of utf-8 strings char *p; char *w; int len=0; @@ -810,7 +808,7 @@ static int IsLetter(Translator *tr, int letter, int group) if(tr->letter_bits_offset > 0) { if(((letter2 = (letter - tr->letter_bits_offset)) > 0) && (letter2 < 0x100)) - letter = letter2; + letter = letter2; else return(0); } @@ -854,11 +852,11 @@ static int Unpronouncable2(Translator *tr, char *word) int Unpronouncable(Translator *tr, char *word, int posn) {//===================================================== -/* Determines whether a word in 'unpronouncable', i.e. whether it should - be spoken as individual letters. + /* Determines whether a word in 'unpronouncable', i.e. whether it should + be spoken as individual letters. - This function may be language specific. This is a generic version. -*/ + This function may be language specific. This is a generic version. + */ int c; int c1=0; @@ -916,7 +914,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) if(vowel_posn > (tr->langopts.max_initial_consonants+1)) return(1); // no vowel, or no vowel in first few letters -return(0); + return(0); } /* end of Unpronounceable */ @@ -1008,8 +1006,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * count++; stress = -1; } - else - if(phcode == phonSYLLABIC) + else if(phcode == phonSYLLABIC) { // previous consonant phoneme is syllablic vowel_stress[count] = (char)stress; @@ -1063,7 +1060,8 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * static char stress_phonemes[] = {phonSTRESS_D, phonSTRESS_U, phonSTRESS_2, phonSTRESS_3, - phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC}; + phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC + }; void ChangeWordStress(Translator *tr, char *word, int new_stress) @@ -1127,8 +1125,8 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, 'output' is used for input and output 'dictionary_flags' has bits 0-3 position of stressed vowel (if > 0) - or unstressed (if == 7) or syllables 1 and 2 (if == 6) - bits 8... dictionary flags + or unstressed (if == 7) or syllables 1 and 2 (if == 6) + bits 8... dictionary flags If 'tonic' is set (>= 0), replace highest stress by this value. @@ -1151,7 +1149,6 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int final_ph; int final_ph2; int mnem; - int mnem2; int post_tonic; // currently not used int opt_length; int done; @@ -1242,6 +1239,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, } } + switch(tr->langopts.stress_rule) { case 8: @@ -1285,19 +1283,18 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { stressed_syllable = vowel_count - 2; - if(stressflags & 0x300) + if(stressflags & (S_FINAL_SPANISH | S_FINAL_STRESS_C)) { // LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's' if(phoneme_tab[final_ph]->type != phVOWEL) { - if(stressflags & 0x100) + if(stressflags & S_FINAL_STRESS_C) { stressed_syllable = vowel_count - 1; } else { mnem = phoneme_tab[final_ph]->mnemonic; - mnem2 = phoneme_tab[final_ph2]->mnemonic; if(tr->translator_name == L('a','n')) { @@ -1310,8 +1307,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { // -ns stress remains on penultimate syllable } - else - if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL)) + else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL)) { stressed_syllable = vowel_count - 1; } @@ -1319,7 +1315,8 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, } } } - if(stressflags & 0x80000) + + if(stressflags & S_FINAL_LONG) { // stress on last syllable if it has a long vowel, but previous syllable has a short vowel if(vowel_length[vowel_count - 1] > vowel_length[vowel_count - 2]) @@ -1352,7 +1349,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, } break; - case 3: + case 3: // stress on last vowel if(stressed_syllable == 0) { @@ -1403,8 +1400,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { if(phoneme_tab[final_ph]->type == phVOWEL) stressed_syllable = guess_ru_v[vowel_count]; - else - if(phoneme_tab[final_ph]->type == phSTOP) + else if(phoneme_tab[final_ph]->type == phSTOP) stressed_syllable = guess_ru_t[vowel_count]; else stressed_syllable = guess_ru[vowel_count]; @@ -1440,8 +1436,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, // the only double=heavy syllable is the final syllable, so stress this stressed_syllable = vowel_count-1; } - else - if(max_weight <= 0) + else if(max_weight <= 0) { // all syllables, exclusing the last, are light. Stress the first syllable stressed_syllable = 1; @@ -1482,12 +1477,12 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, for(ix=1; ix < vowel_count; ix++) { if(vowel_stress[ix] == 4) - vowel_stress[ix] = 3; // change marked stress (consonant clusters) to secondary (except the last) + vowel_stress[ix] = 3; // change marked stress (consonant clusters) to secondary (except the last) if(vowel_length[ix] > 0) { - long_vowel = ix; - vowel_stress[ix] = 3; // give secondary stress to all long vowels + long_vowel = ix; + vowel_stress[ix] = 3; // give secondary stress to all long vowels } } @@ -1496,14 +1491,14 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { // no marked stress, choose the last long vowel if(long_vowel > 0) - stressed_syllable = long_vowel; + stressed_syllable = long_vowel; else { - // no long vowels or consonant clusters - if(vowel_count > 4) - stressed_syllable = vowel_count - 3; - else - stressed_syllable = vowel_count - 1; + // no long vowels or consonant clusters + if(vowel_count > 4) + stressed_syllable = vowel_count - 3; + else + stressed_syllable = vowel_count - 1; } } vowel_stress[stressed_syllable] = 4; @@ -1520,7 +1515,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, if(unstressed_word == 0) { - if((stressflags & 0x1000) && (vowel_count == 3)) + if((stressflags & S_2_SYL_2) && (vowel_count == 3)) { // Two syllable word, if one syllable has primary stress, then give the other secondary stress if(vowel_stress[1] == 4) @@ -1529,7 +1524,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, vowel_stress[1] = 3; } - if((stressflags & 0x2000) && (vowel_stress[1] < 0)) + if((stressflags & S_INITIAL_2) && (vowel_stress[1] < 0)) { // If there is only one syllable before the primary stress, give it a secondary stress if((vowel_count > 3) && (vowel_stress[2] >= 4)) @@ -1545,26 +1540,24 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { if(vowel_stress[v] < 0) { - if((stressflags & 0x10) && (stress < 4) && (v == vowel_count-1)) + if((stressflags & S_FINAL_NO_2) && (stress < 4) && (v == vowel_count-1)) { // flag: don't give secondary stress to final vowel } - else - if((stressflags & 0x8000) && (done == 0)) + else if((stressflags & 0x8000) && (done == 0)) { vowel_stress[v] = (char)stress; done =1; stress = 3; /* use secondary stress for remaining syllables */ } - else - if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2)))) + else if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2)))) { /* trochaic: give stress to vowel surrounded by unstressed vowels */ - if((stress == 3) && (stressflags & 0x20)) + if((stress == 3) && (stressflags & S_NO_AUTO_2)) continue; // don't use secondary stress - if((v > 1) && (stressflags & 0x40) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0)) + if((v > 1) && (stressflags & S_2_TO_HEAVY) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0)) { // don't put secondary stress on a light syllable which is followed by a heavy syllable continue; @@ -1582,8 +1575,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { if(first_primary == 0) first_primary = v; - else - if(stressflags & S_FIRST_PRIMARY) + else if(stressflags & S_FIRST_PRIMARY) { // reduce primary stresses after the first to secondary vowel_stress[v] = 3; @@ -1640,19 +1632,19 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, } else #endif - if((tr->langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) - { - // word starts with a vowel + if((tr->langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) + { + // word starts with a vowel - if((tr->langopts.vowel_pause & 0x20) && (vowel_stress[1] >= 4)) - { + if((tr->langopts.vowel_pause & 0x20) && (vowel_stress[1] >= 4)) + { *output++ = phonPAUSE_NOLINK; // not to be replaced by link + } + else + { + *output++ = phonPAUSE_VSHORT; // break, but no pause + } } - else - { - *output++ = phonPAUSE_VSHORT; // break, but no pause - } - } } p = phonetic; @@ -1669,8 +1661,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, { tr->prev_last_stress = 0; } - else - if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC)) + else if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC)) { // a vowel, or a consonant followed by a syllabic consonant marker @@ -1682,19 +1673,17 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, if(v_stress <= 1) { - if((v > 1) && (max_stress >= 2) && (stressflags & 4) && (v == (vowel_count-1))) + if((v > 1) && (max_stress >= 2) && (stressflags & S_FINAL_DIM) && (v == (vowel_count-1))) { // option: mark unstressed final syllable as diminished v_stress = 0; } - else - if((stressflags & 2) || (v == 1) || (v == (vowel_count-1))) + else if((stressflags & S_NO_DIM) || (v == 1) || (v == (vowel_count-1))) { // first or last syllable, or option 'don't set diminished stress' v_stress = 1; } - else - if((v == (vowel_count-2)) && (vowel_stress[vowel_count-1] <= 1)) + else if((v == (vowel_count-2)) && (vowel_stress[vowel_count-1] <= 1)) { // penultimate syllable, followed by an unstressed final syllable v_stress = 1; @@ -1702,7 +1691,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, else { // unstressed syllable within a word - if((vowel_stress[v-1] < 0) || ((stressflags & 0x10000) == 0)) + if((vowel_stress[v-1] < 0) || ((stressflags & S_MID_DIM) == 0)) { v_stress = 0; /* change to 0 (diminished stress) */ vowel_stress[v] = v_stress; @@ -1730,8 +1719,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, if(v != max_stress_posn) shorten = 1; } - else - if(v_stress < 4) + else if(v_stress < 4) { // only allow lengthen indicator if stress >= 4. shorten = 1; @@ -1807,7 +1795,7 @@ void AppendPhonemes(Translator *tr, char *string, int size, const char *ph) if(phoneme_tab[c]->type == phVOWEL) { if(((phoneme_tab[c]->phflags & phUNSTRESSED) == 0) && - (unstress_mark == 0)) + (unstress_mark == 0)) { tr->word_stressed_count++; } @@ -2075,8 +2063,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ add_points = (20-distance_right); post_ptr += letter_xbytes; } - else - if(tr->langopts.tone_numbers) + else if(tr->langopts.tone_numbers) { // also match if there is no digit add_points = (20-distance_right); @@ -2109,8 +2096,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ { match.end_type = SUFX_UNPRON; // $unpron } - else - if((command & 0xf0) == 0x10) + else if((command & 0xf0) == 0x10) { // $w_alt if(dict_flags & (1 << (BITNUM_FLAG_ALT + (command & 0xf)))) @@ -2118,8 +2104,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ else failed = 1; } - else - if((command & 0xf0) == 0x20) + else if((command & 0xf0) == 0x20) { // $p_alt // make a copy of the word up to the post-match characters @@ -2145,72 +2130,72 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ break; case RULE_SYLLABLE: - { - /* more than specified number of vowel letters to the right */ - char *p = post_ptr + letter_xbytes; - int vowel_count=0; + { + /* more than specified number of vowel letters to the right */ + char *p = post_ptr + letter_xbytes; + int vowel_count=0; - syllable_count = 1; - while(*rule == RULE_SYLLABLE) - { - rule++; - syllable_count+=1; /* number of syllables to match */ - } - vowel = 0; - while(letter_w != RULE_SPACE) - { - if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2)) - { - // this is counting vowels which are separated by non-vowel letters - vowel_count++; - } - vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2); - p += utf8_in(&letter_w,p); - } - if(syllable_count <= vowel_count) - add_points = (18+syllable_count-distance_right); - else - failed = 1; + syllable_count = 1; + while(*rule == RULE_SYLLABLE) + { + rule++; + syllable_count+=1; /* number of syllables to match */ } - break; + vowel = 0; + while(letter_w != RULE_SPACE) + { + if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2)) + { + // this is counting vowels which are separated by non-vowel letters + vowel_count++; + } + vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2); + p += utf8_in(&letter_w,p); + } + if(syllable_count <= vowel_count) + add_points = (18+syllable_count-distance_right); + else + failed = 1; + } + break; case RULE_NOVOWELS: + { + char *p = post_ptr + letter_xbytes; + while(letter_w != RULE_SPACE) { - char *p = post_ptr + letter_xbytes; - while(letter_w != RULE_SPACE) + if(IsLetter(tr, letter_w,LETTERGP_VOWEL2)) { - if(IsLetter(tr, letter_w,LETTERGP_VOWEL2)) - { - failed = 1; - break; - } - p += utf8_in(&letter_w,p); + failed = 1; + break; } - if(!failed) - add_points = (19-distance_right); + p += utf8_in(&letter_w,p); } - break; + if(!failed) + add_points = (19-distance_right); + } + break; case RULE_SKIPCHARS: + { + // Used for lang=Tamil, used to match on the next word after an unknown word ending + // only look until the end of the word (including the end-of-word marker) + // Jx means 'skip characters until x', where 'x' may be '_' for 'end of word' + char *p = post_ptr + letter_xbytes; + char *p2 = p; + int rule_w; // skip characters until this + utf8_in(&rule_w,rule); + while((letter_w != rule_w) && (letter_w != RULE_SPACE)) { - // Used for lang=Tamil, used to match on the next word after an unknown word ending - // only look until the end of the word (including the end-of-word marker) - // Jx means 'skip characters until x', where 'x' may be '_' for 'end of word' - char *p = post_ptr + letter_xbytes; - char *p2 = p; - int rule_w; // skip characters until this - utf8_in(&rule_w,rule); - while((letter_w != rule_w) && (letter_w != RULE_SPACE)) - { - p2 = p; - p += utf8_in(&letter_w,p); - } - if(letter_w == rule_w) - { - post_ptr = p2; - } + p2 = p; + p += utf8_in(&letter_w,p); } - break; + if(letter_w == rule_w) + { + post_ptr = p2; + } + } + break; case RULE_INC_SCORE: add_points = 20; // force an increase in points @@ -2229,20 +2214,20 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ break; case RULE_ENDING: - { - int end_type; - // next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length - end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f); + { + int end_type; + // next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length + end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f); - if((tr->word_vowel_count == 0) && !(end_type & SUFX_P) && (tr->langopts.param[LOPT_SUFFIX] & 1)) - failed = 1; // don't match a suffix rule if there are no previous syllables (needed for lang=tr). - else - { - match.end_type = end_type; - rule += 3; - } + if((tr->word_vowel_count == 0) && !(end_type & SUFX_P) && (tr->langopts.param[LOPT_SUFFIX] & 1)) + failed = 1; // don't match a suffix rule if there are no previous syllables (needed for lang=tr). + else + { + match.end_type = end_type; + rule += 3; } - break; + } + break; case RULE_NO_SUFFIX: if(word_flags & FLAG_SUFFIX_REMOVED) @@ -2364,21 +2349,21 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ break; case RULE_NOVOWELS: + { + char *p = pre_ptr - letter_xbytes - 1; + while(letter_w != RULE_SPACE) { - char *p = pre_ptr - letter_xbytes - 1; - while(letter_w != RULE_SPACE) + if(IsLetter(tr, letter_w,LETTERGP_VOWEL2)) { - if(IsLetter(tr, letter_w,LETTERGP_VOWEL2)) - { - failed = 1; - break; - } - p -= utf8_in2(&letter_w,p,1); + failed = 1; + break; } - if(!failed) - add_points = 3; + p -= utf8_in2(&letter_w,p,1); } - break; + if(!failed) + add_points = 3; + } + break; case RULE_IFVERB: if(tr->expect_verb) @@ -2499,8 +2484,8 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, char *end_phonemes, int word_flags, unsigned int *dict_flags) {//===================================================================================================================================== -/* Translate a word bounded by space characters - Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */ + /* Translate a word bounded by space characters + Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */ unsigned char c, c2; unsigned int c12; @@ -2573,8 +2558,8 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c if(IsDigit(wc) && ((tr->langopts.tone_numbers == 0) || !any_alpha)) { // lookup the number in *_list not *_rules - char string[8]; - char buf[40]; + char string[8]; + char buf[40]; string[0] = '_'; memcpy(&string[1],p,wc_bytes); string[1+wc_bytes] = 0; @@ -2704,30 +2689,20 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c continue; // start again at the beginning of the word } } - else - if((letter >= 0x3200) && (letter < 0xa700) && (end_phonemes != NULL)) - { - // ideograms - // outside the range of the accent table, speak the unknown symbol sound - Lookup(tr, "_??", ph_buf); - match1.phonemes = ph_buf; - match1.points = 1; - p += (wc_bytes-1); - } if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) { - if(tr->langopts.alt_alphabet == alphabet->offset) - { - sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); - return(0); - } - if(alphabet->flags & AL_WORDS) - { - // switch to the nominated language for this alphabet - sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); - return(0); - } + if(tr->langopts.alt_alphabet == alphabet->offset) + { + sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); + return(0); + } + if(alphabet->flags & AL_WORDS) + { + // switch to the nominated language for this alphabet + sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); + return(0); + } } } } @@ -2738,8 +2713,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c { // combining accent inside a word, ignore } - else - if(IsAlpha(wc)) + else if(IsAlpha(wc)) { if((any_alpha > 1) || (p[wc_bytes-1] > ' ')) { @@ -2778,8 +2752,8 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c #ifdef deleted // ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST - if((match1.end_type & SUFX_UNPRON) && !(word_flags & FLAG_SUFFIX_REMOVED)) - return(match1.end_type); + if((match1.end_type & SUFX_UNPRON) && !(word_flags & FLAG_SUFFIX_REMOVED)) + return(match1.end_type); #endif if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0)) @@ -2824,7 +2798,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags) {//======================================================================== - // apply after the translation is complete +// apply after the translation is complete int ix; int len; char *p; @@ -2888,7 +2862,7 @@ int TransposeAlphabet(Translator *tr, char *text) const short *pairs_list; char buf[N_WORD_BYTES]; - p2 = buf; + p2 = buf; offset = tr->transpose_min - 1; min = tr->transpose_min; max = tr->transpose_max; @@ -2972,7 +2946,7 @@ int TransposeAlphabet(Translator *tr, char *text) } else { - return(strlen(text)); + return(strlen(text)); } } // end of TransposeAlphabet @@ -2980,7 +2954,7 @@ int TransposeAlphabet(Translator *tr, char *text) static const char *LookupDict2(Translator *tr, const char *word, const char *word2, - char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab) + char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab) //===================================================================================== /* Find an entry in the word_dict file for a specified word. Returns NULL if no match, else returns 'word_end' @@ -3096,8 +3070,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor condition_failed = 1; } } - else - if(flag > 80) + else if(flag > 80) { // flags 81 to 90 match more than one word // This comes after the other flags @@ -3132,16 +3105,14 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor p = next; word_end = word2 + n_chars; } - else - if(flag > 64) + else if(flag > 64) { // stressed syllable information, put in bits 0-3 dictionary_flags = (dictionary_flags & ~0xf) | (flag & 0xf); if((flag & 0xc) == 0xc) dictionary_flags |= FLAG_STRESS_END; } - else - if(flag >= 32) + else if(flag >= 32) { dictionary_flags2 |= (1L << (flag-32)); } @@ -3234,8 +3205,8 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor // OK, we are expecting a verb if((tr->translator_name == L('e','n')) && (tr->prev_dict_flags[0] & FLAG_ALT6_TRANS) && (end_flags & FLAG_SUFX_S)) { - // lang=en, don't use verb form after 'to' if the word has 's' suffix - continue; + // lang=en, don't use verb form after 'to' if the word has 's' suffix + continue; } } else @@ -3280,7 +3251,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor { if(option_phonemes == 2) { - print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); + print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); fprintf(f_trans,"Flags: %s %s\n", word1, dict_flags_buf); } return(0); // no phoneme translation found here, only flags. So use rules @@ -3316,7 +3287,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor { fprintf(f_trans,"Found: '%s",word1); } - print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); + print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); fprintf(f_trans,"' [%s] %s\n", ph_decoded,dict_flags_buf); } } @@ -3324,7 +3295,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor ix = utf8_in(&c, word); if((word[ix] == 0) && !IsAlpha(c)) { - flags[0] |= FLAG_MAX3; + flags[0] |= FLAG_MAX3; } return(word_end); @@ -3443,8 +3414,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f word[length-1] = 0; found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab); } - else - if((end_flags & SUFX_D) && (word[length-1] == word[length-2])) + else if((end_flags & SUFX_D) && (word[length-1] == word[length-2])) { // try removing a double letter word[length-1] = 0; @@ -3523,7 +3493,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) {//======================================================================== /* Removes a standard suffix from a word, once it has been indicated by the dictionary rules. end_type: bits 0-6 number of letters - bits 8-14 suffix flags + bits 8-14 suffix flags word_copy: make a copy of the original word This routine is language specific. In English it deals with reversing y->i and e-dropping @@ -3540,11 +3510,13 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) // these lists are language specific, but are only relevent if the 'e' suffix flag is used static const char *add_e_exceptions[] = { - "ion", NULL }; + "ion", NULL + }; static const char *add_e_additions[] = { // "c", "rs", "ir", "ur", "ath", "ns", "lu", NULL }; - "c", "rs", "ir", "ur", "ath", "ns", "u", NULL }; + "c", "rs", "ir", "ur", "ath", "ns", "u", NULL + }; for(word_end = word; *word_end != ' '; word_end++) { @@ -3556,12 +3528,12 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) if(word_copy != NULL) { - memcpy(word_copy,word,i); - word_copy[i] = 0; + memcpy(word_copy,word,i); + word_copy[i] = 0; } // look for multibyte characters to increase the number of bytes to remove - for(len_ending = i = (end_type & 0x3f); i>0 ;i--) // num.of characters of the suffix + for(len_ending = i = (end_type & 0x3f); i>0 ; i--) // num.of characters of the suffix { word_end--; while((*word_end & 0xc0) == 0x80) @@ -3604,8 +3576,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) word_end[2] = ' '; } } - else - if(tr->translator_name == L('e','n')) + else if(tr->translator_name == L('e','n')) { // add 'e' to end of stem if(IsLetter(tr, word_end[-1],LETTERGP_VOWEL2) && IsLetter(tr, word_end[0],1)) @@ -3636,8 +3607,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) } } } - else - if(tr->langopts.suffix_add_e != 0) + else if(tr->langopts.suffix_add_e != 0) { end_flags |= FLAG_SUFX_E_ADDED; } @@ -3646,10 +3616,10 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) { utf8_out(tr->langopts.suffix_add_e, &word_end[1]); - if(option_phonemes == 2) - { - fprintf(f_trans,"add e\n"); - } + if(option_phonemes == 2) + { + fprintf(f_trans,"add e\n"); + } } } @@ -3668,3 +3638,4 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) } /* end of RemoveEnding */ + diff --git a/src/numbers.cpp b/src/numbers.cpp index e60be3ad..493e69a7 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -72,36 +72,36 @@ static int number_control; typedef struct { -const char *name; -int flags; + const char *name; + int flags; } ACCENTS; // these are tokens to look up in the *_list file. static ACCENTS accents_tab[] = { -{"_lig", 1}, -{"_smc", 1}, // smallcap -{"_tur", 1}, // turned -{"_rev", 1}, // reversed -{"_crl", 0}, // curl + {"_lig", 1}, + {"_smc", 1}, // smallcap + {"_tur", 1}, // turned + {"_rev", 1}, // reversed + {"_crl", 0}, // curl -{"_acu", 0}, // acute -{"_brv", 0}, // breve -{"_hac", 0}, // caron/hacek -{"_ced", 0}, // cedilla -{"_cir", 0}, // circumflex -{"_dia", 0}, // diaeresis -{"_ac2", 0}, // double acute -{"_dot", 0}, // dot -{"_grv", 0}, // grave -{"_mcn", 0}, // macron -{"_ogo", 0}, // ogonek -{"_rng", 0}, // ring -{"_stk", 0}, // stroke -{"_tld", 0}, // tilde + {"_acu", 0}, // acute + {"_brv", 0}, // breve + {"_hac", 0}, // caron/hacek + {"_ced", 0}, // cedilla + {"_cir", 0}, // circumflex + {"_dia", 0}, // diaeresis + {"_ac2", 0}, // double acute + {"_dot", 0}, // dot + {"_grv", 0}, // grave + {"_mcn", 0}, // macron + {"_ogo", 0}, // ogonek + {"_rng", 0}, // ring + {"_stk", 0}, // stroke + {"_tld", 0}, // tilde -{"_bar", 0}, // bar -{"_rfx", 0}, // retroflex -{"_hok", 0}, // hook + {"_bar", 0}, // bar + {"_rfx", 0}, // retroflex + {"_hok", 0}, // hook }; @@ -127,270 +127,271 @@ static ACCENTS accents_tab[] = { static const short non_ascii_tab[] = { - 0, 0x3b1, 0x259, 0x25b, 0x3b3, 0x3b9, 0x153, 0x3c9, -0x3c6, 0x283, 0x3c5, 0x292, 0x294, 0x27e }; + 0, 0x3b1, 0x259, 0x25b, 0x3b3, 0x3b9, 0x153, 0x3c9, + 0x3c6, 0x283, 0x3c5, 0x292, 0x294, 0x27e +}; // characters U+00e0 to U+017f static const unsigned short letter_accents_0e0[] = { -LETTER('a',M_GRAVE,0), // U+00e0 -LETTER('a',M_ACUTE,0), -LETTER('a',M_CIRCUMFLEX,0), -LETTER('a',M_TILDE,0), -LETTER('a',M_DIAERESIS,0), -LETTER('a',M_RING,0), -LIGATURE('a','e',0), -LETTER('c',M_CEDILLA,0), -LETTER('e',M_GRAVE,0), -LETTER('e',M_ACUTE,0), -LETTER('e',M_CIRCUMFLEX,0), -LETTER('e',M_DIAERESIS,0), -LETTER('i',M_GRAVE,0), -LETTER('i',M_ACUTE,0), -LETTER('i',M_CIRCUMFLEX,0), -LETTER('i',M_DIAERESIS,0), -LETTER('d',M_NAME,0), // eth // U+00f0 -LETTER('n',M_TILDE,0), -LETTER('o',M_GRAVE,0), -LETTER('o',M_ACUTE,0), -LETTER('o',M_CIRCUMFLEX,0), -LETTER('o',M_TILDE,0), -LETTER('o',M_DIAERESIS,0), -0, // division sign -LETTER('o',M_STROKE,0), -LETTER('u',M_GRAVE,0), -LETTER('u',M_ACUTE,0), -LETTER('u',M_CIRCUMFLEX,0), -LETTER('u',M_DIAERESIS,0), -LETTER('y',M_ACUTE,0), -LETTER('t',M_NAME,0), // thorn -LETTER('y',M_DIAERESIS,0), -CAPITAL, // U+0100 -LETTER('a',M_MACRON,0), -CAPITAL, -LETTER('a',M_BREVE,0), -CAPITAL, -LETTER('a',M_OGONEK,0), -CAPITAL, -LETTER('c',M_ACUTE,0), -CAPITAL, -LETTER('c',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('c',M_DOT_ABOVE,0), -CAPITAL, -LETTER('c',M_CARON,0), -CAPITAL, -LETTER('d',M_CARON,0), -CAPITAL, // U+0110 -LETTER('d',M_STROKE,0), -CAPITAL, -LETTER('e',M_MACRON,0), -CAPITAL, -LETTER('e',M_BREVE,0), -CAPITAL, -LETTER('e',M_DOT_ABOVE,0), -CAPITAL, -LETTER('e',M_OGONEK,0), -CAPITAL, -LETTER('e',M_CARON,0), -CAPITAL, -LETTER('g',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('g',M_BREVE,0), -CAPITAL, // U+0120 -LETTER('g',M_DOT_ABOVE,0), -CAPITAL, -LETTER('g',M_CEDILLA,0), -CAPITAL, -LETTER('h',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('h',M_STROKE,0), -CAPITAL, -LETTER('i',M_TILDE,0), -CAPITAL, -LETTER('i',M_MACRON,0), -CAPITAL, -LETTER('i',M_BREVE,0), -CAPITAL, -LETTER('i',M_OGONEK,0), -CAPITAL, // U+0130 -LETTER('i',M_NAME,0), // dotless i -CAPITAL, -LIGATURE('i','j',0), -CAPITAL, -LETTER('j',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('k',M_CEDILLA,0), -LETTER('k',M_NAME,0), // kra -CAPITAL, -LETTER('l',M_ACUTE,0), -CAPITAL, -LETTER('l',M_CEDILLA,0), -CAPITAL, -LETTER('l',M_CARON,0), -CAPITAL, -LETTER('l',M_MIDDLE_DOT,0), // U+0140 -CAPITAL, -LETTER('l',M_STROKE,0), -CAPITAL, -LETTER('n',M_ACUTE,0), -CAPITAL, -LETTER('n',M_CEDILLA,0), -CAPITAL, -LETTER('n',M_CARON,0), -LETTER('n',M_NAME,0), // apostrophe n -CAPITAL, -LETTER('n',M_NAME,0), // eng -CAPITAL, -LETTER('o',M_MACRON,0), -CAPITAL, -LETTER('o',M_BREVE,0), -CAPITAL, // U+0150 -LETTER('o',M_DOUBLE_ACUTE,0), -CAPITAL, -LIGATURE('o','e',0), -CAPITAL, -LETTER('r',M_ACUTE,0), -CAPITAL, -LETTER('r',M_CEDILLA,0), -CAPITAL, -LETTER('r',M_CARON,0), -CAPITAL, -LETTER('s',M_ACUTE,0), -CAPITAL, -LETTER('s',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('s',M_CEDILLA,0), -CAPITAL, // U+0160 -LETTER('s',M_CARON,0), -CAPITAL, -LETTER('t',M_CEDILLA,0), -CAPITAL, -LETTER('t',M_CARON,0), -CAPITAL, -LETTER('t',M_STROKE,0), -CAPITAL, -LETTER('u',M_TILDE,0), -CAPITAL, -LETTER('u',M_MACRON,0), -CAPITAL, -LETTER('u',M_BREVE,0), -CAPITAL, -LETTER('u',M_RING,0), -CAPITAL, // U+0170 -LETTER('u',M_DOUBLE_ACUTE,0), -CAPITAL, -LETTER('u',M_OGONEK,0), -CAPITAL, -LETTER('w',M_CIRCUMFLEX,0), -CAPITAL, -LETTER('y',M_CIRCUMFLEX,0), -CAPITAL, // Y-DIAERESIS -CAPITAL, -LETTER('z',M_ACUTE,0), -CAPITAL, -LETTER('z',M_DOT_ABOVE,0), -CAPITAL, -LETTER('z',M_CARON,0), -LETTER('s',M_NAME,0), // long-s // U+17f + LETTER('a',M_GRAVE,0), // U+00e0 + LETTER('a',M_ACUTE,0), + LETTER('a',M_CIRCUMFLEX,0), + LETTER('a',M_TILDE,0), + LETTER('a',M_DIAERESIS,0), + LETTER('a',M_RING,0), + LIGATURE('a','e',0), + LETTER('c',M_CEDILLA,0), + LETTER('e',M_GRAVE,0), + LETTER('e',M_ACUTE,0), + LETTER('e',M_CIRCUMFLEX,0), + LETTER('e',M_DIAERESIS,0), + LETTER('i',M_GRAVE,0), + LETTER('i',M_ACUTE,0), + LETTER('i',M_CIRCUMFLEX,0), + LETTER('i',M_DIAERESIS,0), + LETTER('d',M_NAME,0), // eth // U+00f0 + LETTER('n',M_TILDE,0), + LETTER('o',M_GRAVE,0), + LETTER('o',M_ACUTE,0), + LETTER('o',M_CIRCUMFLEX,0), + LETTER('o',M_TILDE,0), + LETTER('o',M_DIAERESIS,0), + 0, // division sign + LETTER('o',M_STROKE,0), + LETTER('u',M_GRAVE,0), + LETTER('u',M_ACUTE,0), + LETTER('u',M_CIRCUMFLEX,0), + LETTER('u',M_DIAERESIS,0), + LETTER('y',M_ACUTE,0), + LETTER('t',M_NAME,0), // thorn + LETTER('y',M_DIAERESIS,0), + CAPITAL, // U+0100 + LETTER('a',M_MACRON,0), + CAPITAL, + LETTER('a',M_BREVE,0), + CAPITAL, + LETTER('a',M_OGONEK,0), + CAPITAL, + LETTER('c',M_ACUTE,0), + CAPITAL, + LETTER('c',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('c',M_DOT_ABOVE,0), + CAPITAL, + LETTER('c',M_CARON,0), + CAPITAL, + LETTER('d',M_CARON,0), + CAPITAL, // U+0110 + LETTER('d',M_STROKE,0), + CAPITAL, + LETTER('e',M_MACRON,0), + CAPITAL, + LETTER('e',M_BREVE,0), + CAPITAL, + LETTER('e',M_DOT_ABOVE,0), + CAPITAL, + LETTER('e',M_OGONEK,0), + CAPITAL, + LETTER('e',M_CARON,0), + CAPITAL, + LETTER('g',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('g',M_BREVE,0), + CAPITAL, // U+0120 + LETTER('g',M_DOT_ABOVE,0), + CAPITAL, + LETTER('g',M_CEDILLA,0), + CAPITAL, + LETTER('h',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('h',M_STROKE,0), + CAPITAL, + LETTER('i',M_TILDE,0), + CAPITAL, + LETTER('i',M_MACRON,0), + CAPITAL, + LETTER('i',M_BREVE,0), + CAPITAL, + LETTER('i',M_OGONEK,0), + CAPITAL, // U+0130 + LETTER('i',M_NAME,0), // dotless i + CAPITAL, + LIGATURE('i','j',0), + CAPITAL, + LETTER('j',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('k',M_CEDILLA,0), + LETTER('k',M_NAME,0), // kra + CAPITAL, + LETTER('l',M_ACUTE,0), + CAPITAL, + LETTER('l',M_CEDILLA,0), + CAPITAL, + LETTER('l',M_CARON,0), + CAPITAL, + LETTER('l',M_MIDDLE_DOT,0), // U+0140 + CAPITAL, + LETTER('l',M_STROKE,0), + CAPITAL, + LETTER('n',M_ACUTE,0), + CAPITAL, + LETTER('n',M_CEDILLA,0), + CAPITAL, + LETTER('n',M_CARON,0), + LETTER('n',M_NAME,0), // apostrophe n + CAPITAL, + LETTER('n',M_NAME,0), // eng + CAPITAL, + LETTER('o',M_MACRON,0), + CAPITAL, + LETTER('o',M_BREVE,0), + CAPITAL, // U+0150 + LETTER('o',M_DOUBLE_ACUTE,0), + CAPITAL, + LIGATURE('o','e',0), + CAPITAL, + LETTER('r',M_ACUTE,0), + CAPITAL, + LETTER('r',M_CEDILLA,0), + CAPITAL, + LETTER('r',M_CARON,0), + CAPITAL, + LETTER('s',M_ACUTE,0), + CAPITAL, + LETTER('s',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('s',M_CEDILLA,0), + CAPITAL, // U+0160 + LETTER('s',M_CARON,0), + CAPITAL, + LETTER('t',M_CEDILLA,0), + CAPITAL, + LETTER('t',M_CARON,0), + CAPITAL, + LETTER('t',M_STROKE,0), + CAPITAL, + LETTER('u',M_TILDE,0), + CAPITAL, + LETTER('u',M_MACRON,0), + CAPITAL, + LETTER('u',M_BREVE,0), + CAPITAL, + LETTER('u',M_RING,0), + CAPITAL, // U+0170 + LETTER('u',M_DOUBLE_ACUTE,0), + CAPITAL, + LETTER('u',M_OGONEK,0), + CAPITAL, + LETTER('w',M_CIRCUMFLEX,0), + CAPITAL, + LETTER('y',M_CIRCUMFLEX,0), + CAPITAL, // Y-DIAERESIS + CAPITAL, + LETTER('z',M_ACUTE,0), + CAPITAL, + LETTER('z',M_DOT_ABOVE,0), + CAPITAL, + LETTER('z',M_CARON,0), + LETTER('s',M_NAME,0), // long-s // U+17f }; // characters U+0250 to U+029F static const unsigned short letter_accents_250[] = { -LETTER('a',M_TURNED,0), // U+250 -LETTER(L_ALPHA,0,0), -LETTER(L_ALPHA,M_TURNED,0), -LETTER('b',M_IMPLOSIVE,0), -0, // open-o -LETTER('c',M_CURL,0), -LETTER('d',M_RETROFLEX,0), -LETTER('d',M_IMPLOSIVE,0), -LETTER('e',M_REVERSED,0), // U+258 -0, // schwa -LETTER(L_SCHWA,M_HOOK,0), -0, // open-e -LETTER(L_OPEN_E,M_REVERSED,0), -LETTER(L_OPEN_E,M_HOOK,M_REVERSED), -0,//LETTER(L_OPEN_E,M_CLOSED,M_REVERSED), -LETTER('j',M_BAR,0), -LETTER('g',M_IMPLOSIVE,0), // U+260 -LETTER('g',0,0), -LETTER('g',M_SMALLCAP,0), -LETTER(L_GAMMA,0,0), -0, // ramshorn -LETTER('h',M_TURNED,0), -LETTER('h',M_HOOK,0), -0,//LETTER(L_HENG,M_HOOK,0), -LETTER('i',M_BAR,0), // U+268 -LETTER(L_IOTA,0,0), -LETTER('i',M_SMALLCAP,0), -LETTER('l',M_TILDE,0), -LETTER('l',M_BAR,0), -LETTER('l',M_RETROFLEX,0), -LIGATURE('l','z',0), -LETTER('m',M_TURNED,0), -0,//LETTER('m',M_TURNED,M_LEG), // U+270 -LETTER('m',M_HOOK,0), -0,//LETTER('n',M_LEFTHOOK,0), -LETTER('n',M_RETROFLEX,0), -LETTER('n',M_SMALLCAP,0), -LETTER('o',M_BAR,0), -LIGATURE('o','e',M_SMALLCAP), -0,//LETTER(L_OMEGA,M_CLOSED,0), -LETTER(L_PHI,0,0), // U+278 -LETTER('r',M_TURNED,0), -0,//LETTER('r',M_TURNED,M_LEG), -LETTER('r',M_RETROFLEX,M_TURNED), -0,//LETTER('r',M_LEG,0), -LETTER('r',M_RETROFLEX,0), -0, // r-tap -LETTER(L_RTAP,M_REVERSED,0), -LETTER('r',M_SMALLCAP,0), // U+280 -LETTER('r',M_TURNED,M_SMALLCAP), -LETTER('s',M_RETROFLEX,0), -0, // esh -0,//LETTER('j',M_BAR,L_IMPLOSIVE), -LETTER(L_ESH,M_REVERSED,0), -LETTER(L_ESH,M_CURL,0), -LETTER('t',M_TURNED,0), -LETTER('t',M_RETROFLEX,0), // U+288 -LETTER('u',M_BAR,0), -LETTER(L_UPSILON,0,0), -LETTER('v',M_HOOK,0), -LETTER('v',M_TURNED,0), -LETTER('w',M_TURNED,0), -LETTER('y',M_TURNED,0), -LETTER('y',M_SMALLCAP,0), -LETTER('z',M_RETROFLEX,0), // U+290 -LETTER('z',M_CURL,0), -0, // ezh -LETTER(L_EZH,M_CURL,0), -0, // glottal stop -LETTER(L_GLOTTAL,M_REVERSED,0), -LETTER(L_GLOTTAL,M_TURNED,0), -0,//LETTER('c',M_LONG,0), -0, // bilabial click // U+298 -LETTER('b',M_SMALLCAP,0), -0,//LETTER(L_OPEN_E,M_CLOSED,0), -LETTER('g',M_IMPLOSIVE,M_SMALLCAP), -LETTER('h',M_SMALLCAP,0), -LETTER('j',M_CURL,0), -LETTER('k',M_TURNED,0), -LETTER('l',M_SMALLCAP,0), -LETTER('q',M_HOOK,0), // U+2a0 -LETTER(L_GLOTTAL,M_STROKE,0), -LETTER(L_GLOTTAL,M_STROKE,M_REVERSED), -LIGATURE('d','z',0), -0, // dezh -LIGATURE('d','z',M_CURL), -LIGATURE('t','s',0), -0, // tesh -LIGATURE('t','s',M_CURL), + LETTER('a',M_TURNED,0), // U+250 + LETTER(L_ALPHA,0,0), + LETTER(L_ALPHA,M_TURNED,0), + LETTER('b',M_IMPLOSIVE,0), + 0, // open-o + LETTER('c',M_CURL,0), + LETTER('d',M_RETROFLEX,0), + LETTER('d',M_IMPLOSIVE,0), + LETTER('e',M_REVERSED,0), // U+258 + 0, // schwa + LETTER(L_SCHWA,M_HOOK,0), + 0, // open-e + LETTER(L_OPEN_E,M_REVERSED,0), + LETTER(L_OPEN_E,M_HOOK,M_REVERSED), + 0,//LETTER(L_OPEN_E,M_CLOSED,M_REVERSED), + LETTER('j',M_BAR,0), + LETTER('g',M_IMPLOSIVE,0), // U+260 + LETTER('g',0,0), + LETTER('g',M_SMALLCAP,0), + LETTER(L_GAMMA,0,0), + 0, // ramshorn + LETTER('h',M_TURNED,0), + LETTER('h',M_HOOK,0), + 0,//LETTER(L_HENG,M_HOOK,0), + LETTER('i',M_BAR,0), // U+268 + LETTER(L_IOTA,0,0), + LETTER('i',M_SMALLCAP,0), + LETTER('l',M_TILDE,0), + LETTER('l',M_BAR,0), + LETTER('l',M_RETROFLEX,0), + LIGATURE('l','z',0), + LETTER('m',M_TURNED,0), + 0,//LETTER('m',M_TURNED,M_LEG), // U+270 + LETTER('m',M_HOOK,0), + 0,//LETTER('n',M_LEFTHOOK,0), + LETTER('n',M_RETROFLEX,0), + LETTER('n',M_SMALLCAP,0), + LETTER('o',M_BAR,0), + LIGATURE('o','e',M_SMALLCAP), + 0,//LETTER(L_OMEGA,M_CLOSED,0), + LETTER(L_PHI,0,0), // U+278 + LETTER('r',M_TURNED,0), + 0,//LETTER('r',M_TURNED,M_LEG), + LETTER('r',M_RETROFLEX,M_TURNED), + 0,//LETTER('r',M_LEG,0), + LETTER('r',M_RETROFLEX,0), + 0, // r-tap + LETTER(L_RTAP,M_REVERSED,0), + LETTER('r',M_SMALLCAP,0), // U+280 + LETTER('r',M_TURNED,M_SMALLCAP), + LETTER('s',M_RETROFLEX,0), + 0, // esh + 0,//LETTER('j',M_BAR,L_IMPLOSIVE), + LETTER(L_ESH,M_REVERSED,0), + LETTER(L_ESH,M_CURL,0), + LETTER('t',M_TURNED,0), + LETTER('t',M_RETROFLEX,0), // U+288 + LETTER('u',M_BAR,0), + LETTER(L_UPSILON,0,0), + LETTER('v',M_HOOK,0), + LETTER('v',M_TURNED,0), + LETTER('w',M_TURNED,0), + LETTER('y',M_TURNED,0), + LETTER('y',M_SMALLCAP,0), + LETTER('z',M_RETROFLEX,0), // U+290 + LETTER('z',M_CURL,0), + 0, // ezh + LETTER(L_EZH,M_CURL,0), + 0, // glottal stop + LETTER(L_GLOTTAL,M_REVERSED,0), + LETTER(L_GLOTTAL,M_TURNED,0), + 0,//LETTER('c',M_LONG,0), + 0, // bilabial click // U+298 + LETTER('b',M_SMALLCAP,0), + 0,//LETTER(L_OPEN_E,M_CLOSED,0), + LETTER('g',M_IMPLOSIVE,M_SMALLCAP), + LETTER('h',M_SMALLCAP,0), + LETTER('j',M_CURL,0), + LETTER('k',M_TURNED,0), + LETTER('l',M_SMALLCAP,0), + LETTER('q',M_HOOK,0), // U+2a0 + LETTER(L_GLOTTAL,M_STROKE,0), + LETTER(L_GLOTTAL,M_STROKE,M_REVERSED), + LIGATURE('d','z',0), + 0, // dezh + LIGATURE('d','z',M_CURL), + LIGATURE('t','s',0), + 0, // tesh + LIGATURE('t','s',M_CURL), }; static int LookupLetter2(Translator *tr, unsigned int letter, char *ph_buf) -{//======================================================================== +{ //======================================================================== int len; char single_letter[10]; @@ -431,8 +432,7 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf) { accent_data = letter_accents_0e0[letter - 0xe0]; } - else - if((letter >= 0x250) && (letter <= 0x2a8)) + else if((letter >= 0x250) && (letter <= 0x2a8)) { accent_data = letter_accents_250[letter - 0x250]; } @@ -485,8 +485,7 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf) { if(accent1 == 0) strcpy(ph_buf, ph_letter1); - else - if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1)) + else if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1)) sprintf(ph_buf,"%s%c%c%s", ph_accent1, phonPAUSE_VSHORT, phonSTRESS_P, ph_letter1); else sprintf(ph_buf,"%c%s%c%s%c", phonSTRESS_2, ph_letter1, phonPAUSE_VSHORT, ph_accent1, phonPAUSE_VSHORT); @@ -595,18 +594,19 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) char *pbuf; ALPHABET *alphabet; int language; - int phontab_1; - int alphabet_name_switch; - char *ph_alphabet_end; + int phontab_1; + int speak_letter_number; char capital[20]; char ph_buf[80]; char ph_buf2[80]; char ph_alphabet[80]; char hexbuf[6]; + static char pause_string[] = {phonPAUSE, 0}; ph_buf[0] = 0; ph_alphabet[0] = 0; capital[0] = 0; + phontab_1 = translator->phoneme_tab_ix; n_bytes = utf8_in(&letter,word); @@ -633,94 +633,83 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } - alphabet_name_switch = 0; - alphabet = AlphabetFromChar(letter); - if(alphabet != current_alphabet) - { - // speak the name of the alphabet - current_alphabet = alphabet; - if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) - { - if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) - { - // don't say the alphabet name - } - else - { - phontab_1 = tr->phoneme_tab_ix; - ph_buf2[0] = 0; - if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice - { - // Can't find the local name for this alphabet, use the English name - ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 - Lookup(translator2, alphabet->name, ph_buf2); - } - else - if(translator != tr) - { - phontab_1 = tr->phoneme_tab_ix; - strcpy(ph_buf2, ph_alphabet); - ph_alphabet[2] = translator->phoneme_tab_ix; - } + alphabet = AlphabetFromChar(letter); + if(alphabet != current_alphabet) + { + // speak the name of the alphabet + current_alphabet = alphabet; + if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) + { + if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) + { + // don't say the alphabet name + } + else + { + ph_buf2[0] = 0; + if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice + { + // Can't find the local name for this alphabet, use the English name + ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 + Lookup(translator2, alphabet->name, ph_buf2); + } + else if(translator != tr) + { + phontab_1 = tr->phoneme_tab_ix; + strcpy(ph_buf2, ph_alphabet); + ph_alphabet[2] = translator->phoneme_tab_ix; + } - if(ph_buf2[0] != 0) - { - // we used a different language for the alphabet name (now in ph_buf2) - ph_alphabet[0] = phonPAUSE; - ph_alphabet[1] = phonSWITCH; - strcpy(&ph_alphabet[3], ph_buf2); - len = strlen(ph_buf2) + 3; - ph_alphabet[len] = phonSWITCH; - ph_alphabet[len+1] = phontab_1; - ph_alphabet[len+2] = 0; - - ph_alphabet_end = &ph_alphabet[len]; - alphabet_name_switch = ph_alphabet[2]; - } - } - } - } + if(ph_buf2[0] != 0) + { + // we used a different language for the alphabet name (now in ph_buf2) + ph_alphabet[0] = phonPAUSE; + ph_alphabet[1] = phonSWITCH; + strcpy(&ph_alphabet[3], ph_buf2); + len = strlen(ph_buf2) + 3; + ph_alphabet[len] = phonSWITCH; + ph_alphabet[len+1] = phontab_1; + ph_alphabet[len+2] = 0; + } + } + } + } // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number if(ph_buf[0] == 0) { - if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) - language = alphabet->language; - else - language = L('e','n'); + if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) + language = alphabet->language; + else + language = L('e','n'); - if(language != tr->translator_name) - { - // 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(language != tr->translator_name) + { + // 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(ph_buf[3] == phonSWITCH) - { - // another level of language change - ph_buf[2] = SetTranslator2(&ph_buf[4]); - LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); - } + if(ph_buf[3] == phonSWITCH) + { + // another level of language change + ph_buf[2] = SetTranslator2(&ph_buf[4]); + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + } - SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table + SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table - if(ph_buf[3] != 0) - { - ph_buf[0] = phonPAUSE; - ph_buf[1] = phonSWITCH; - len = strlen(&ph_buf[3]) + 3; - ph_buf[len] = phonSWITCH; // switch back - ph_buf[len+1] = tr->phoneme_tab_ix; - ph_buf[len+2] = 0; - } - } - - if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0)) - { - ph_alphabet_end[0]= 0; - } + if(ph_buf[3] != 0) + { + ph_buf[0] = phonPAUSE; + ph_buf[1] = phonSWITCH; + len = strlen(&ph_buf[3]) + 3; + ph_buf[len] = phonSWITCH; // switch back + ph_buf[len+1] = tr->phoneme_tab_ix; + ph_buf[len+2] = 0; + } + } } if(ph_buf[0] == 0) @@ -729,7 +718,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if((letter >= 0x2800) && (letter <= 0x28ff)) { // braille dots symbol - Lookup(tr, "_braille", ph_buf); + Lookup(translator, "_braille", ph_buf); if(ph_buf[0] == 0) { EncodePhonemes("br'e:l", ph_buf, NULL); @@ -743,7 +732,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(letter & (1 << ix)) { *pbuf++ = phonPAUSE_VSHORT; - LookupLetter(tr, '1'+ix, 0, pbuf, 1); + LookupLetter(translator, '1'+ix, 0, pbuf, 1); pbuf += strlen(pbuf); } } @@ -753,12 +742,29 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(ph_buf[0]== 0) { if(iswalpha(letter)) - Lookup(tr, "_?A", ph_buf); + Lookup(translator, "_?A", ph_buf); if((ph_buf[0]==0) && !iswspace(letter)) - Lookup(tr, "_??", ph_buf); + Lookup(translator, "_??", ph_buf); - if(ph_buf[0] != 0) + speak_letter_number = 1; + if(ph_buf[0] == 0) + { + EncodePhonemes("l'et@", ph_buf, NULL); + if(translator->letter_bits_offset != 0) + speak_letter_number = 0; // non-latin alphabet, no _?? entry, may not be able to speak hexadecimal + } + + if(!(control & 2) && (alphabet != NULL) && (alphabet->flags & AL_NOT_CODE)) + { + // don't speak the character code number + speak_letter_number = 0; + } + + if((ph_alphabet[0] != 0) && speak_letter_number) + ph_buf[0] = 0; // don't speak "letter" if we speak alphabet name + + if(speak_letter_number) { // speak the hexadecimal number of the character code sprintf(hexbuf,"%x",letter); @@ -767,8 +773,9 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) { pbuf += strlen(pbuf); *pbuf++ = phonPAUSE_VSHORT; - LookupLetter(tr, *p2, 0, pbuf, 1); + LookupLetter(translator, *p2, 0, pbuf, 1); } + strcat(pbuf, pause_string); } } } @@ -831,8 +838,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) } } } - else - if(c == 0xff) + else if(c == 0xff) { if((control < 2) || (ix==0)) continue; // don't insert pauses @@ -878,7 +884,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB { // ordinal number is indicated by dot after the number // but not if the next word starts with an upper-case letter - // (c2 == 0) is for cases such as, "2.," + // (c2 == 0) is for cases such as, "2.," ordinal = 2; if(word_end[0] == '.') word_end[0] = ' '; @@ -892,8 +898,8 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL); } -if((tr->prev_dict_flags[0] & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) - ordinal = 0; // TEST 09.02.10 + if((tr->prev_dict_flags[0] & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2))) + ordinal = 0; // TEST 09.02.10 if(nextflags & FLAG_ALT_TRANS) ordinal = 0; @@ -991,8 +997,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) subtract = prev; value -= subtract; } - else - if(value >= subtract) + else if(value >= subtract) return(0); else acc += prev; @@ -1276,8 +1281,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out sprintf(string,"_%df",value); found = Lookup(tr, string, ph_digits); } - else - if(is_ordinal) + else if(is_ordinal) { strcpy(ph_ordinal, ph_ordinal2); @@ -1345,7 +1349,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out { if((is_ordinal) && - ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) + ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) { sprintf(string,"_%dX%c", tens, ord_type); if(Lookup(tr, string, ph_tens) != 0) @@ -1410,8 +1414,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out sprintf(string,"_%de",units); found = Lookup(tr, string, ph_digits); } - else - if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0)) + else if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0)) { // followed by hundreds or thousands (or tens) sprintf(string,"_%da",units); @@ -1482,8 +1485,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out } } } - else - if(tr->langopts.numbers & NUM_SINGLE_STRESS) + else if(tr->langopts.numbers & NUM_SINGLE_STRESS) { // only one primary stress found = 0; @@ -1567,8 +1569,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null // speak numbers such as 1984 as years: nineteen-eighty-four // ph_100[0] = 0; // don't say "hundred", we also need to surpess "and" } - else - if(hundreds >= 10) + else if(hundreds >= 10) { ph_digits[0] = 0; @@ -1614,7 +1615,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null found = 0; if((ordinal) - && ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) + && ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) { // ordinal number sprintf(string, "_%dCo", hundreds); @@ -1636,7 +1637,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null { if((!found) && (tensunits == 0)) { - // is there a special pronunciation for exactly n00 ? + // is there a special pronunciation for exactly n00 ? sprintf(string,"_%dC0",hundreds); found = Lookup(tr, string, ph_digits); } @@ -1767,7 +1768,6 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int thousands_inc = 0; int prev_thousands = 0; int ordinal = 0; - int dot_ordinal; int this_value; int decimal_count; int max_decimal_count; @@ -1806,8 +1806,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { prev_thousands = 1; } - else - if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE)) + else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE)) { // thousands groups can be separated by spaces if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && isdigit(word[-2])) @@ -1827,7 +1826,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { // don't check for ordinal if the number has a leading zero if((ordinal = CheckDotOrdinal(tr, word, &word[ix], wtab, 0)) != 0) - dot_ordinal = 1; + { +// dot_ordinal = 1; + } } if((word[ix] == '.') && !isdigit(word[ix+1]) && !isdigit(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE)) @@ -1859,8 +1860,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned { ordinal = 2; } - else - if(!isdigit(suffix[0])) // not _#9 (tab) + else if(!isdigit(suffix[0])) // not _#9 (tab) { sprintf(string,"_#%s",suffix); if(Lookup(tr, string, ph_ordinal2)) @@ -1905,8 +1905,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned if((tr->langopts.numbers & NUM_ALLOW_SPACE) && (word[n_digits] == ' ')) thousands_inc = 1; - else - if(word[n_digits] == tr->langopts.thousands_sep) + else if(word[n_digits] == tr->langopts.thousands_sep) thousands_inc = 2; suffix_ix = n_digits+2; @@ -1959,8 +1958,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned Lookup(tr, "_dpt", ph_append); decimal_point = 0x100; } - else - if(suppress_null == 0) + else if(suppress_null == 0) { if(thousands_inc > 0) { @@ -1978,16 +1976,16 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned } else - if(speak_missing_thousands == 1) - { - // speak this thousandplex if there was no word for the previous thousandplex - sprintf(string,"_0M%d",thousandplex+1); - if(Lookup(tr, string, buf1)==0) + if(speak_missing_thousands == 1) { - sprintf(string,"_0M%d",thousandplex); - Lookup(tr, string, ph_append); + // speak this thousandplex if there was no word for the previous thousandplex + sprintf(string,"_0M%d",thousandplex+1); + if(Lookup(tr, string, buf1)==0) + { + sprintf(string,"_0M%d",thousandplex); + Lookup(tr, string, ph_append); + } } - } if((ph_append[0] == 0) && (word[n_digits] == '.') && (thousandplex == 0)) { @@ -2114,9 +2112,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned // Romanian decimal fractions if((decimal_count <= 4) && (word[n_digits] != '0')) { - LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0); - strcat(ph_out,buf1); - n_digits += decimal_count; + LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0); + strcat(ph_out,buf1); + n_digits += decimal_count; } break; diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 8c33fdd5..42a90bfd 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 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 * @@ -133,7 +133,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) PHONEME_LIST2 *plist2; WORD_PH_DATA worddata; - memset(&worddata, 0, sizeof(worddata)); + memset(&worddata, 0, sizeof(worddata)); plist2 = ph_list2; phlist = phoneme_list; end_sourceix = plist2[n_ph_list2-1].sourceix; @@ -142,7 +142,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) max_stress = 0; for(j = n_ph_list2-3; j>=0; j--) { - // start with the last phoneme (before the terminating pauses) and move forwards + // start with the last phoneme (before the terminating pauses) and move backwards if((plist2[j].stresslevel & 0x7f) > max_stress) max_stress = plist2[j].stresslevel & 0x7f; if(plist2[j].sourceix != 0) @@ -204,21 +204,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { voicing = 1; } - else - if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants + else if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants { plist2[j].phcode = ph->end_type; // change to voiced equivalent } } - else - if((type==phVSTOP) || type==(phVFRICATIVE)) + else if((type==phVSTOP) || type==(phVFRICATIVE)) { if((voicing==0) && (regression & 0xf)) { voicing = 2; } - else - if((voicing==1) && (ph->end_type != 0)) + else if((voicing==1) && (ph->end_type != 0)) { plist2[j].phcode = ph->end_type; // change to unvoiced equivalent } @@ -331,6 +328,9 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) if(plist3->phcode == phonSWITCH) { + if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) + continue; // next phoneme is also a phonSWITCH, so ignore + // change phoneme table SelectPhonemeTable(plist3->tone_ph); switched_language ^= SFLAG_SWITCHED_LANG; @@ -580,18 +580,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) phlist[ix].newword = 2; // end of clause phlist[ix].phcode = phonPAUSE; - phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes + phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes phlist[ix].length = post_pause; // length of the pause, depends on the punctuation phlist[ix].sourceix = end_sourceix; phlist[ix].synthflags = 0; - phlist[ix++].ph = phoneme_tab[phonPAUSE]; + phlist[ix++].ph = phoneme_tab[phonPAUSE]; phlist[ix].phcode = phonPAUSE; - phlist[ix].type = phPAUSE; + phlist[ix].type = phPAUSE; phlist[ix].length = 0; phlist[ix].sourceix=0; phlist[ix].synthflags = 0; - phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT]; + phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT]; n_phoneme_list = ix; } // end of MakePhonemeList diff --git a/src/readclause.cpp b/src/readclause.cpp index c6bc34e2..785356ed 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -842,14 +842,13 @@ static int LoadSoundFile2(const char *fname) static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause) -{//========================================================================================================== +{//============================================================================================================= // announce punctuation names // c1: the punctuation character // c2: the following character int punct_count; - const char *punctname; - int found = 0; + const char *punctname = NULL; int soundicon; int attributes; int short_pause; @@ -858,6 +857,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output int bufix1; char buf[200]; char buf2[80]; + char ph_buf[30]; c2 = *c2_ptr; buf[0] = 0; @@ -867,12 +867,24 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output // add an embedded command to play the soundicon sprintf(buf,"\001%dI ",soundicon); UngetC(c2); - found = 1; } else - if((punctname = LookupCharName(tr, c1, 0)) != NULL) { - found = 1; + if((c1 == '.') && (end_clause) && (c2 != '.')) + { + if(LookupSpecial(tr, "_.p", ph_buf)) + { + punctname = ph_buf; // use word for 'period' instead of 'dot' + } + } + if(punctname == NULL) + { + punctname = LookupCharName(tr, c1, 0); + } + + if(punctname == NULL) + return(-1); + if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) { punct_count=1; @@ -932,9 +944,6 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output } } - if(found == 0) - return(-1); - bufix1 = *bufix; len = strlen(buf); strcpy(&output[*bufix],buf); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index d9747299..eccb1e06 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.44 08.Mar.13"; +const char *version_string = "1.46.45 10.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 2819e5d1..c3bbcada 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -79,7 +79,7 @@ ALPHABET alphabets [] = { {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS}, {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, - {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 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}, {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS}, @@ -94,24 +94,26 @@ ALPHABET alphabets [] = { {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, + {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, + {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, {NULL, 0, 0, 0, 0, 0} }; ALPHABET *AlphabetFromChar(int c) {//=============================== - // Find the alphabet from a character. - ALPHABET *alphabet = alphabets; + // Find the alphabet from a character. + ALPHABET *alphabet = alphabets; - while(alphabet->name != NULL) - { - if((c >= alphabet->range_min) && (c <= alphabet->range_max)) - { - return(alphabet); - } - alphabet++; - } - return(NULL); + while(alphabet->name != NULL) + { + if((c >= alphabet->range_min) && (c <= alphabet->range_max)) + { + return(alphabet); + } + alphabet++; + } + return(NULL); } @@ -514,7 +516,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable + tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->letter_bits_offset = OFFSET_BENGALI; SetIndicLetters(tr); // call this after setting OFFSET_BENGALI SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama @@ -601,7 +603,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->letter_bits_offset = OFFSET_THAANA; tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable + tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 tr->langopts.numbers = 1; @@ -705,7 +707,7 @@ Translator *SelectTranslator(const char *name) // stress last syllable if it doesn't end in vowel or "s" or "n" // 'diminished' is an unstressed final syllable - tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels @@ -715,18 +717,20 @@ Translator *SelectTranslator(const char *name) if(name2 == L('c','a')) { + // stress last syllable unless word ends with a vowel tr->punct_within_word = ca_punct_within_word; - tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel + tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; } else if(name2 == L('a','n')) { - tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; } else if(name2 == L_pap) { - tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel + // stress last syllable unless word ends with a vowel + tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2; } else { @@ -786,7 +790,7 @@ Translator *SelectTranslator(const char *name) SetupTranslator(tr,stress_lengths_fi,stress_amps_fi); tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY; // move secondary stress from light to a following heavy syllable tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.long_stop = 130; @@ -802,7 +806,7 @@ Translator *SelectTranslator(const char *name) { SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable - tr->langopts.stress_flags = 0x0024; // don't use secondary stress + tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.accents = 2; // Say "Capital" after the letter. @@ -812,12 +816,12 @@ Translator *SelectTranslator(const char *name) } break; - case L('g','a'): // irish - { - tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.numbers = 1; - } - break; + case L('g','a'): // irish + { + tr->langopts.stress_rule = STRESSPOSN_1L; + tr->langopts.numbers = 1; + } + break; case L('h','i'): // Hindi case L('n','e'): // Nepali @@ -831,7 +835,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable - tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable + tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi tr->letter_bits_offset = OFFSET_DEVANAGARI; @@ -875,7 +879,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10; + tr->langopts.stress_flags = S_FINAL_NO_2; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; tr->langopts.spelling_stress = 1; @@ -894,7 +898,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); case L('h','t'): // Haitian Creole // memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths)); tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable - tr->langopts.stress_flags = 0x0024; // don't use secondary stress + tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4; break; @@ -909,7 +913,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal); tr->langopts.vowel_pause = 0x20; tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x8036 | S_HYPEN_UNSTRESS; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS; tr->langopts.unstressed_wd1 = 2; tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? ! @@ -942,7 +946,7 @@ SetLengthMods(tr,3); // all equal SetLetterBits(tr,LETTERGP_C,hy_consonants); tr->langopts.max_initial_consonants = 6; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; -// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words + // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words } break; @@ -954,7 +958,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_id,stress_amps_id); tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; tr->langopts.accents = 2; // "capital" after letter name } break; @@ -966,7 +970,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_is,NULL); tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10; + tr->langopts.stress_flags = S_FINAL_NO_2; tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels tr->langopts.param[LOPT_REDUCE] = 2; @@ -989,7 +993,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; + tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS; tr->langopts.vowel_pause = 1; tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd2 = 2; @@ -1024,8 +1028,9 @@ SetLengthMods(tr,3); // all equal { // character codes offset by 0x1080 static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; - static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, - 0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; + static const char ka_consonants[] = + {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x41,0x42,0x44, + 0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); memset(tr->letter_bits,0,sizeof(tr->letter_bits)); SetLetterBits(tr,LETTERGP_A,ka_vowels); @@ -1149,7 +1154,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.spelling_stress = 1; tr->charset_a0 = charsets[4]; // ISO-8859-4 tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT; - tr->langopts.stress_flags = 0x16 + 0x40000; + tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1; } break; @@ -1496,14 +1501,14 @@ SetLengthMods(tr,3); // all equal break; case L('t','t'): // Tatar - { + { SetCyrillicLetters(tr); SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; - } - break; + } + break; case L('u','k'): // Ukrainian { @@ -1513,10 +1518,12 @@ SetLengthMods(tr,3); // all equal break; case L('u','r'): // Urdu + { tr->letter_bits_offset = OFFSET_ARABIC; tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.numbers = NUM_SWAP_TENS; tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi + } break; case L('v','i'): // Vietnamese diff --git a/src/translate.cpp b/src/translate.cpp index 9feb592d..e071efb9 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -91,7 +91,7 @@ PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes -wchar_t option_punctlist[N_PUNCTLIST]={0}; +wchar_t option_punctlist[N_PUNCTLIST]= {0}; char ctrl_embedded = '\001'; // to allow an alternative CTRL for embedded commands int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar, 4=16bit @@ -113,11 +113,12 @@ REPLACE_PHONEMES replace_phonemes[N_REPLACE_PHONEMES]; // brackets, also 0x2014 to 0x021f which don't need to be in this list static const unsigned short brackets[] = { -'(',')','[',']','{','}','<','>','"','\'','`', -0xab,0xbb, // double angle brackets -0x300a,0x300b, // double angle brackets (ideograph) -0xe000+'<', // private usage area -0}; + '(',')','[',']','{','}','<','>','"','\'','`', + 0xab,0xbb, // double angle brackets + 0x300a,0x300b, // double angle brackets (ideograph) + 0xe000+'<', // private usage area + 0 +}; // other characters which break a word, but don't produce a pause static const unsigned short breaks[] = {'_', 0}; @@ -129,153 +130,153 @@ static const unsigned short breaks[] = {'_', 0}; // Translate character codes 0xA0 to 0xFF into their unicode values // ISO_8859_1 is set as default static const unsigned short ISO_8859_1[0x60] = { - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0 - 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8 - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0 - 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8 - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 - 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, // d8 - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 - 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, // f8 + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0 + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8 + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0 + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8 + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, // d8 + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, // f8 }; static const unsigned short ISO_8859_2[0x60] = { - 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, // a0 - 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, // a8 - 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, // b0 - 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, // b8 - 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, // c0 - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, // c8 - 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, // d0 - 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, // d8 - 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, // e0 - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, // e8 - 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, // f0 - 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, // f8 + 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, // a0 + 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, // a8 + 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, // b0 + 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, // b8 + 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, // c0 + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, // c8 + 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, // d0 + 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, // d8 + 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, // e0 + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, // e8 + 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, // f0 + 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, // f8 }; static const unsigned short ISO_8859_3[0x60] = { - 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, // a0 - 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, // a8 - 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, // b0 - 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, // b8 - 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, // c0 - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 - 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, // d0 - 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, // d8 - 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, // e0 - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 - 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, // f0 - 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, // f8 + 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, // a0 + 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, // a8 + 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, // b0 + 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, // b8 + 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, // c0 + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 + 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, // d0 + 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, // d8 + 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, // e0 + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 + 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, // f0 + 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, // f8 }; static const unsigned short ISO_8859_4[0x60] = { - 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, // a0 - 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, // a8 - 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, // b0 - 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, // b8 - 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, // c0 - 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, // c8 - 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 - 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, // d8 - 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, // e0 - 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, // e8 - 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 - 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, // f8 + 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, // a0 + 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, // a8 + 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, // b0 + 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, // b8 + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, // c0 + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, // c8 + 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, // d8 + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, // e0 + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, // e8 + 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, // f8 }; static const unsigned short ISO_8859_5[0x60] = { - 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, // a0 Cyrillic - 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, // a8 - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, // b0 - 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, // b8 - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, // c0 - 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, // c8 - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, // d0 - 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, // d8 - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, // e0 - 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, // e8 - 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, // f0 - 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, // f8 + 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, // a0 Cyrillic + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, // a8 + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, // b0 + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, // b8 + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, // c0 + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, // c8 + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, // d0 + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, // d8 + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, // e0 + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, // e8 + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, // f0 + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, // f8 }; static const unsigned short ISO_8859_7[0x60] = { - 0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7, // a0 Greek - 0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, // a8 - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, // b0 - 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, // b8 - 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, // c0 - 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, // c8 - 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, // d0 - 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, // d8 - 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, // e0 - 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, // e8 - 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, // f0 - 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, // f8 + 0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7, // a0 Greek + 0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, // a8 + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, // b0 + 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, // b8 + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, // c0 + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, // c8 + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, // d0 + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, // d8 + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, // e0 + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, // e8 + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, // f0 + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, // f8 }; static const unsigned short ISO_8859_9[0x60] = { - 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0 - 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8 - 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0 - 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8 - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 - 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, // d8 - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 - 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, // f8 + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0 + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8 + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0 + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8 + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0 + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, // d8 + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0 + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, // f8 }; static const unsigned short ISO_8859_14[0x60] = { - 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, // a0 Welsh - 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, // a8 - 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, // b0 - 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, // b8 - 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 - 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 - 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, // d0 - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, // d8 - 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 - 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 - 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, // f0 - 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, // f8 + 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, // a0 Welsh + 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, // a8 + 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, // b0 + 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, // b8 + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0 + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8 + 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, // d0 + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, // d8 + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0 + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8 + 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, // f0 + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, // f8 }; static const unsigned short KOI8_R[0x60] = { - 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, // a0 Russian - 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, // a8 - 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, // b0 - 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, // b8 - 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, // c0 - 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, // c8 - 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, // d0 - 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, // d8 - 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, // e0 - 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, // e8 - 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, // f0 - 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, // f8 + 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, // a0 Russian + 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, // a8 + 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, // b0 + 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, // b8 + 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, // c0 + 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, // c8 + 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, // d0 + 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, // d8 + 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, // e0 + 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, // e8 + 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, // f0 + 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, // f8 }; static const unsigned short ISCII[0x60] = { - 0x0020, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, // a0 - 0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, // a8 - 0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, // b0 - 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, // b8 - 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, // c0 - 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, // c8 - 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, // d0 - 0x0939, 0x0020, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, // d8 - 0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, // e0 - 0x094d, 0x093c, 0x0964, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, // e8 - 0x0020, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, // f0 - 0x0037, 0x0038, 0x0039, 0x20, 0x20, 0x20, 0x20, 0x20, // f8 + 0x0020, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, // a0 + 0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, // a8 + 0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, // b0 + 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, // b8 + 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, // c0 + 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, // c8 + 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, // d0 + 0x0939, 0x0020, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, // d8 + 0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, // e0 + 0x094d, 0x093c, 0x0964, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, // e8 + 0x0020, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, // f0 + 0x0037, 0x0038, 0x0039, 0x20, 0x20, 0x20, 0x20, 0x20, // f8 }; const unsigned short *charsets[N_CHARSETS] = { @@ -298,7 +299,8 @@ const unsigned short *charsets[N_CHARSETS] = { ISO_8859_1, ISO_8859_1, KOI8_R, // 18 - ISCII }; + ISCII +}; // Tables of the relative lengths of vowels, depending on the // type of the two phonemes that follow @@ -306,7 +308,7 @@ const unsigned short *charsets[N_CHARSETS] = { // use this table if vowel is not the last in the word static unsigned char length_mods_en[100] = { -/* a , t s n d z r N <- next */ + /* a , t s n d z r N <- next */ 100,120,100,105,100,110,110,100, 95, 100, /* a <- next2 */ 105,120,105,110,125,130,135,115,125, 100, /* , */ 105,120, 75,100, 75,105,120, 85, 75, 100, /* t */ @@ -316,11 +318,12 @@ static unsigned char length_mods_en[100] = { 105,120,100,105,105,122,125,110,105, 100, /* z */ 105,120,100,105,105,122,125,110,105, 100, /* r */ 105,120, 95,105,100,115,120,110,100, 100, /* N */ - 100,120,100,100,100,100,100,100,100, 100 }; // SPARE + 100,120,100,100,100,100,100,100,100, 100 +}; // SPARE // as above, but for the last syllable in a word static unsigned char length_mods_en0[100] = { -/* a , t s n d z r N <- next */ + /* a , t s n d z r N <- next */ 100,150,100,105,110,115,110,110,110, 100, /* a <- next2 */ 105,150,105,110,125,135,140,115,135, 100, /* , */ 105,150, 90,105, 90,122,135,100, 90, 100, /* t */ @@ -330,11 +333,12 @@ static unsigned char length_mods_en0[100] = { 105,150,100,105,110,122,125,115,110, 100, /* z */ 105,150,100,105,105,122,135,120,105, 100, /* r */ 105,150,100,105,105,115,135,110,105, 100, /* N */ - 100,100,100,100,100,100,100,100,100, 100 }; // SPARE + 100,100,100,100,100,100,100,100,100, 100 +}; // SPARE static unsigned char length_mods_equal[100] = { -/* a , t s n d z r N <- next */ + /* a , t s n d z r N <- next */ 110,120,100,110,110,110,110,110,110, 110, /* a <- next2 */ 110,120,100,110,110,110,110,110,110, 110, /* , */ 110,120,100,110,100,110,110,110,100, 110, /* t */ @@ -344,17 +348,18 @@ static unsigned char length_mods_equal[100] = { 110,120,100,110,110,110,110,110,110, 110, /* z */ 110,120,100,110,110,110,110,110,110, 110, /* r */ 110,120,100,110,110,110,110,110,110, 110, /* N */ - 110,120,100,110,110,110,110,110,110, 110 }; // SPARE + 110,120,100,110,110,110,110,110,110, 110 +}; // SPARE static unsigned char *length_mod_tabs[6] = { - length_mods_en, - length_mods_en, // 1 - length_mods_en0, // 2 - length_mods_equal, // 3 - length_mods_equal, // 4 - length_mods_equal // 5 - }; + length_mods_en, + length_mods_en, // 1 + length_mods_en0, // 2 + length_mods_equal, // 3 + length_mods_equal, // 4 + length_mods_equal // 5 +}; void SetLengthMods(Translator *tr, int value) @@ -374,8 +379,9 @@ int IsAlpha(unsigned int c) // Replacement for iswalph() which also checks for some in-word symbols static const unsigned short extra_indic_alphas[] = { - 0xa70,0xa71, // Gurmukhi: tippi, addak - 0 }; + 0xa70,0xa71, // Gurmukhi: tippi, addak + 0 + }; if(iswalpha(c)) return(1); @@ -393,6 +399,9 @@ int IsAlpha(unsigned int c) return(0); } + if((c >= 0x5b0) && (c <= 0x5c2)) + return(1); // Hebrew vowel marks + if(c == 0x0605) return(1); @@ -516,8 +525,7 @@ int utf8_out(unsigned int c, char *buf) } if(c < 0x0800) n_bytes = 1; - else - if(c < 0x10000) + else if(c < 0x10000) n_bytes = 2; else n_bytes = 3; @@ -573,11 +581,9 @@ int utf8_in2(int *c, const char *buf, int backwards) { if((c1 & 0xe0) == 0xc0) n_bytes = 1; - else - if((c1 & 0xf0) == 0xe0) + else if((c1 & 0xf0) == 0xe0) n_bytes = 2; - else - if((c1 & 0xf8) == 0xf0) + else if((c1 & 0xf8) == 0xf0) n_bytes = 3; c1 &= mask[n_bytes]; @@ -669,19 +675,17 @@ static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab) nbytes = utf8_in(&wc, word); if((word[nbytes] == ' ') && IsAlpha(wc)) { - if(word[nbytes+1] == '.') + if(word[nbytes+1] == '.') { if(word[nbytes+2] == ' ') ok = 1; - else - if(word[nbytes+2] =='\'') + else if(word[nbytes+2] =='\'') { nbytes += 2; // delete the final dot (eg. u.s.a.'s) ok = 2; } } - else - if((count > 0) && (word[nbytes] == ' ')) + else if((count > 0) && (word[nbytes] == ' ')) ok = 2; } @@ -825,7 +829,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt int prefix_stress; char *wordx; char phonemes[N_WORD_PHONEMES]; - char phonemes2[N_WORD_PHONEMES]; + char phonemes2[N_WORD_PHONEMES]; char prefix_phonemes[N_WORD_PHONEMES]; char unpron_phonemes[N_WORD_PHONEMES]; char end_phonemes[N_WORD_PHONEMES]; @@ -835,7 +839,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt int word_copy_length; char prefix_chars[0x3f + 2]; int found=0; - int end_flags; + int end_flags; char c_temp; // save a character byte while we temporarily replace it with space int first_char; int last_char = 0; @@ -875,7 +879,6 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt unpron_phonemes[0] = 0; prefix_phonemes[0] = 0; end_phonemes[0] = 0; - current_alphabet = NULL; if(tr->data_dictlist == NULL) { @@ -906,8 +909,8 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) { - // retranslating a 1-character word using a different language, say its name - spell_word = 1; + // retranslating a 1-character word using a different language, say its name + spell_word = 1; } if(option_sayas == SAYAS_KEY) @@ -943,8 +946,8 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt if(dictionary_flags[0] & FLAG_TEXTMODE) { - if(word_out != NULL) - strcpy(word_out, word1); + if(word_out != NULL) + strcpy(word_out, word1); first_char = word1[0]; stress_bits = dictionary_flags[0] & 0x7f; @@ -960,8 +963,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt } } } - else - if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS)) + else if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS)) { // grouped words, but no translation. Join the words with hyphens. wordx = word1; @@ -1000,11 +1002,11 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt return(0); } -if((wmark > 0) && (wmark < 8)) -{ - // the stressed syllable has been specified in the text (TESTING) - dictionary_flags[0] = (dictionary_flags[0] & ~0xf) | wmark; -} + if((wmark > 0) && (wmark < 8)) + { + // the stressed syllable has been specified in the text (TESTING) + dictionary_flags[0] = (dictionary_flags[0] & ~0xf) | wmark; + } if(!found && (dictionary_flags[0] & FLAG_ABBREV)) { @@ -1050,9 +1052,8 @@ if((wmark > 0) && (wmark < 8)) // emphasize words which are in capitals emphasize_allcaps = FLAG_EMPHASIZED; } - else - if(!found && !(dictionary_flags[0] & FLAG_SKIPWORDS) && (word_length<4) && (tr->clause_lower_count > 3) - && (tr->clause_upper_count <= tr->clause_lower_count)) + else if(!found && !(dictionary_flags[0] & FLAG_SKIPWORDS) && (word_length<4) && (tr->clause_lower_count > 3) + && (tr->clause_upper_count <= tr->clause_lower_count)) { // An upper case word in a lower case clause. This could be an abbreviation. spell_word = 1; @@ -1073,10 +1074,9 @@ if((wmark > 0) && (wmark < 8)) return(0); } strcpy(word_phonemes, phonemes); - return(0); // ?? + return(dictionary_flags[0] & FLAG_SKIPWORDS); // ?? } - else - if(found == 0) + else if(found == 0) { int posn; int non_initial; @@ -1111,7 +1111,7 @@ if((wmark > 0) && (wmark < 8)) if(strcmp(&unpron_phonemes[1],"en")==0) return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules return(0); - } + } #ifdef deleted p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars. @@ -1152,10 +1152,10 @@ if((wmark > 0) && (wmark < 8)) // ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST if(end_type & SUFX_UNPRON) { - phonemes[0] = 0; // discard and retranslate as individual letters - SpeakIndividualLetters(tr, wordx, phonemes, 0); - strcpy(word_phonemes, phonemes); - return(0); + phonemes[0] = 0; // discard and retranslate as individual letters + SpeakIndividualLetters(tr, wordx, phonemes, 0); + strcpy(word_phonemes, phonemes); + return(0); } #endif @@ -1310,110 +1310,110 @@ if(end_type & SUFX_UNPRON) if((end_type != 0) && !(end_type & SUFX_P)) { - end_type1 = end_type; - strcpy(phonemes2,phonemes); + end_type1 = end_type; + strcpy(phonemes2,phonemes); // The word has a standard ending, re-translate without this ending end_flags = RemoveEnding(tr, wordx, end_type, word_copy); - more_suffixes = 1; + more_suffixes = 1; - while(more_suffixes) - { - more_suffixes = 0; - phonemes[0] = 0; + while(more_suffixes) + { + more_suffixes = 0; + phonemes[0] = 0; - if(prefix_phonemes[0] != 0) - { - // lookup the stem without the prefix removed - wordx[-1] = c_temp; - found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, end_flags, wtab); // include prefix, but not suffix - wordx[-1] = ' '; - if(phonemes[0] == phonSWITCH) - { - // change to another language in order to translate this word - memcpy(wordx,word_copy,strlen(word_copy)); - strcpy(word_phonemes,phonemes); - return(0); - } - if(dictionary_flags[0]==0) - { - dictionary_flags[0] = dictionary_flags2[0]; - dictionary_flags[1] = dictionary_flags2[1]; - } - if(found) - prefix_phonemes[0] = 0; // matched whole word, don't need prefix now + if(prefix_phonemes[0] != 0) + { + // lookup the stem without the prefix removed + wordx[-1] = c_temp; + found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, end_flags, wtab); // include prefix, but not suffix + wordx[-1] = ' '; + if(phonemes[0] == phonSWITCH) + { + // change to another language in order to translate this word + memcpy(wordx,word_copy,strlen(word_copy)); + strcpy(word_phonemes,phonemes); + return(0); + } + if(dictionary_flags[0]==0) + { + dictionary_flags[0] = dictionary_flags2[0]; + dictionary_flags[1] = dictionary_flags2[1]; + } + if(found) + prefix_phonemes[0] = 0; // matched whole word, don't need prefix now - if((found==0) && (dictionary_flags2[0] != 0)) - prefix_flags = 1; - } - if(found == 0) - { - found = LookupDictList(tr, &wordx, phonemes, dictionary_flags2, end_flags, wtab); // without prefix and suffix - if(phonemes[0] == phonSWITCH) - { - // change to another language in order to translate this word - memcpy(wordx,word_copy,strlen(word_copy)); - strcpy(word_phonemes,phonemes); - return(0); - } + if((found==0) && (dictionary_flags2[0] != 0)) + prefix_flags = 1; + } + if(found == 0) + { + found = LookupDictList(tr, &wordx, phonemes, dictionary_flags2, end_flags, wtab); // without prefix and suffix + if(phonemes[0] == phonSWITCH) + { + // change to another language in order to translate this word + memcpy(wordx,word_copy,strlen(word_copy)); + strcpy(word_phonemes,phonemes); + return(0); + } - if(dictionary_flags2[0] & FLAG_ABBREV) - { - // Removing the suffix leaves a word which should be spoken as individual letters - // Not yet implemented - } - if(dictionary_flags[0]==0) - { - dictionary_flags[0] = dictionary_flags2[0]; - dictionary_flags[1] = dictionary_flags2[1]; - } - } - if(found == 0) - { - if(end_type & SUFX_Q) - { - // don't retranslate, use the original lookup result - strcpy(phonemes,phonemes2); - } - else - { - if(end_flags & FLAG_SUFX) - wflags |= FLAG_SUFFIX_REMOVED; - if(end_type & SUFX_A) - wflags |= FLAG_SUFFIX_VOWEL; + if(dictionary_flags2[0] & FLAG_ABBREV) + { + // Removing the suffix leaves a word which should be spoken as individual letters + // Not yet implemented + } + if(dictionary_flags[0]==0) + { + dictionary_flags[0] = dictionary_flags2[0]; + dictionary_flags[1] = dictionary_flags2[1]; + } + } + if(found == 0) + { + if(end_type & SUFX_Q) + { + // don't retranslate, use the original lookup result + strcpy(phonemes,phonemes2); + } + else + { + if(end_flags & FLAG_SUFX) + wflags |= FLAG_SUFFIX_REMOVED; + if(end_type & SUFX_A) + wflags |= FLAG_SUFFIX_VOWEL; - if(end_type & SUFX_M) - { - // allow more suffixes before this suffix - strcpy(end_phonemes2, end_phonemes); - end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags, dictionary_flags); - strcat(end_phonemes, end_phonemes2); // add the phonemes for the previous suffixes after this one + if(end_type & SUFX_M) + { + // allow more suffixes before this suffix + strcpy(end_phonemes2, end_phonemes); + end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags, dictionary_flags); + strcat(end_phonemes, end_phonemes2); // add the phonemes for the previous suffixes after this one - if((end_type != 0) && !(end_type & SUFX_P)) - { - // there is another suffix - end_flags = RemoveEnding(tr, wordx, end_type, NULL); - more_suffixes = 1; - } - } - else - { - // don't remove any previous suffix - TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL, wflags, dictionary_flags); - end_type = 0; - } + if((end_type != 0) && !(end_type & SUFX_P)) + { + // there is another suffix + end_flags = RemoveEnding(tr, wordx, end_type, NULL); + more_suffixes = 1; + } + } + else + { + // don't remove any previous suffix + TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL, wflags, dictionary_flags); + end_type = 0; + } - if(phonemes[0] == phonSWITCH) - { - // change to another language in order to translate this word - strcpy(word_phonemes,phonemes); - memcpy(wordx,word_copy,strlen(word_copy)); - wordx[-1] = c_temp; - return(0); - } - } - } - } + if(phonemes[0] == phonSWITCH) + { + // change to another language in order to translate this word + strcpy(word_phonemes,phonemes); + memcpy(wordx,word_copy,strlen(word_copy)); + wordx[-1] = c_temp; + return(0); + } + } + } + } if((end_type1 & SUFX_T) == 0) @@ -1437,8 +1437,7 @@ if(end_type & SUFX_UNPRON) // s or 's suffix, append [s], [z] or [Iz] depending on previous letter if(last_char == 'f') TranslateRules(tr, &word_ss[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL); - else - if((last_char==0) || (strchr_w("hsx",last_char)==NULL)) + else if((last_char==0) || (strchr_w("hsx",last_char)==NULL)) TranslateRules(tr, &word_zz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL); else TranslateRules(tr, &word_iz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL); @@ -1545,8 +1544,7 @@ if(end_type & SUFX_UNPRON) { ChangeWordStress(tr,word_phonemes,3); } - else - if(wflags & FLAG_EMPHASIZED2) + else if(wflags & FLAG_EMPHASIZED2) { // A word is indicated in the source text as stressed // Give it stress level 6 (for the intonation module) @@ -1555,14 +1553,12 @@ if(end_type & SUFX_UNPRON) if(wflags & FLAG_EMPHASIZED) dictionary_flags[0] |= FLAG_PAUSE1; // precede by short pause } - else - if(wtab[dictionary_skipwords].flags & FLAG_LAST_WORD) + else if(wtab[dictionary_skipwords].flags & FLAG_LAST_WORD) { // the word has attribute to stress or unstress when at end of clause if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2)) ChangeWordStress(tr,word_phonemes,4); - else - if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words)) + else if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words)) ChangeWordStress(tr,word_phonemes,3); } @@ -1583,16 +1579,14 @@ if(end_type & SUFX_UNPRON) tr->expect_verb = 0; tr->expect_noun = 0; } - else - if(dictionary_flags[1] & FLAG_VERBF) + else if(dictionary_flags[1] & FLAG_VERBF) { /* expect a verb in the next word */ tr->expect_verb = 2; tr->expect_verb_s = 0; /* verb won't have -s suffix */ tr->expect_noun = 0; } - else - if(dictionary_flags[1] & FLAG_VERBSF) + else if(dictionary_flags[1] & FLAG_VERBSF) { // expect a verb, must have a -s suffix tr->expect_verb = 0; @@ -1600,8 +1594,7 @@ if(end_type & SUFX_UNPRON) tr->expect_past = 0; tr->expect_noun = 0; } - else - if(dictionary_flags[1] & FLAG_NOUNF) + else if(dictionary_flags[1] & FLAG_NOUNF) { /* not expecting a verb next */ tr->expect_noun = 2; @@ -1872,7 +1865,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++; word_copy_len = ix; - word_replaced[2] = 0; + word_replaced[2] = 0; flags = TranslateWord(translator, word, next_pause, wtab, &word_replaced[2]); if(flags & FLAG_SPELLWORD) @@ -1953,38 +1946,44 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa } } - if(p[0] == phonSWITCH) + if(p[0]==phonSWITCH) { - // this word uses a different language - memcpy(word, word_copy, word_copy_len); - - new_language = (char *)(&p[1]); - if(new_language[0]==0) - new_language = "en"; - + int switch_attempt; strcpy(old_dictionary_name, dictionary_name); - switch_phonemes = SetTranslator2(new_language); - - if(switch_phonemes >= 0) + for(switch_attempt=0; switch_attempt < 2; switch_attempt++) { - // re-translate the word using the new translator - wtab[0].flags |= FLAG_TRANSLATOR2; - if(word_replaced[2] != 0) + // this word uses a different language + memcpy(word, word_copy, word_copy_len); + + new_language = (char *)(&p[1]); + if(new_language[0]==0) + new_language = "en"; + + switch_phonemes = SetTranslator2(new_language); + + if(switch_phonemes >= 0) { - word_replaced[0] = 0; // byte before the start of the word - word_replaced[1] = ' '; - flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL); - } - else - flags = TranslateWord(translator2, word, next_pause, wtab, NULL); -// strcpy((char *)p,translator2->word_phonemes); - if(p[0] == phonSWITCH) - { - // the second translator doesn't want to process this word -// switch_phonemes = -1; -return(FLAG_SPELLWORD); + // re-translate the word using the new translator + wtab[0].flags |= FLAG_TRANSLATOR2; + if(word_replaced[2] != 0) + { + word_replaced[0] = 0; // byte before the start of the word + word_replaced[1] = ' '; + flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL); + } + else + flags = TranslateWord(translator2, word, next_pause, wtab, &word_replaced[2]); } + + if(p[0] != phonSWITCH) + break; } + + // strcpy((char *)p,translator2->word_phonemes); + + if(p[0] == phonSWITCH) + return(FLAG_SPELLWORD); + if(switch_phonemes < 0) { // language code is not recognised or 2nd translator won't translate it @@ -2074,29 +2073,29 @@ return(FLAG_SPELLWORD); if(switch_phonemes >= 0) { - if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) - { - // the new word starts with a phoneme table switch, so there's no need to switch before it. - if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) - { - //previous phoneme is also a phonSWITCH, delete it - n_ph_list2--; - } - } - else - { - // this word uses a different phoneme table - if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) - { - //previous phoneme is also a phonSWITCH, just change its phoneme table number - n_ph_list2--; - } - else - { - SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); - } - ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number - } + if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) + { + // the new word starts with a phoneme table switch, so there's no need to switch before it. + if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) + { + //previous phoneme is also a phonSWITCH, delete it + n_ph_list2--; + } + } + else + { + // this word uses a different phoneme table + if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) + { + //previous phoneme is also a phonSWITCH, just change its phoneme table number + n_ph_list2--; + } + else + { + SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); + } + ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number + } } // remove initial pause from a word if it follows a hyphen @@ -2124,11 +2123,10 @@ return(FLAG_SPELLWORD); ph_list2[n_ph_list2].sourceix = 0; ph_list2[n_ph_list2].synthflags = embedded_flag; ph_list2[n_ph_list2++].tone_ph = *p; - SelectPhonemeTable(*p); - p++; + SelectPhonemeTable(*p); + p++; } - else - if(ph->type == phSTRESS) + else if(ph->type == phSTRESS) { // don't add stress phonemes codes to the list, but give their stress // value to the next vowel phoneme @@ -2148,29 +2146,25 @@ return(FLAG_SPELLWORD); } } } - else - if(ph_code == phonSYLLABIC) + else if(ph_code == phonSYLLABIC) { // mark the previous phoneme as a syllabic consonant prev_vowel = n_ph_list2-1; ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE; ph_list2[prev_vowel].stresslevel = next_stress; } - else - if(ph_code == phonLENGTHEN) + else if(ph_code == phonLENGTHEN) { ph_list2[n_ph_list2-1].synthflags |= SFLAG_LENGTHEN; } - else - if(ph_code == phonEND_WORD) + else if(ph_code == phonEND_WORD) { // a || symbol in a phoneme string was used to indicate a word boundary // Don't add this phoneme to the list, but make sure the next phoneme has // a newword indication srcix = source_ix+1; } - else - if(ph_code == phonX1) + else if(ph_code == phonX1) { // a language specific action if(tr->langopts.param[LOPT_IT_DOUBLING]) @@ -2219,7 +2213,7 @@ return(FLAG_SPELLWORD); if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING]) { if(((tr->prev_dict_flags[0] & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || - (tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2))) + (tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2))) { // italian, double the initial consonant if the previous word ends with a // stressed vowel, or is marked with a flag @@ -2299,8 +2293,7 @@ static int EmbeddedCommand(unsigned int &source_index) sign = 0x40; source_index++; } - else - if(c == '-') + else if(c == '-') { sign = 0x60; source_index++; @@ -2425,19 +2418,20 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, int next2; static const unsigned char hangul_compatibility[0x34] = { - 0, 0x00,0x01,0xaa,0x02,0xac,0xad,0x03, - 0x04,0x05,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4, - 0xb6,0x06,0x07,0x08,0xb9,0x09,0x0a,0xbc, - 0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x61, - 0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69, - 0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71, - 0x72,0x73,0x74,0x75 }; + 0, 0x00,0x01,0xaa,0x02,0xac,0xad,0x03, + 0x04,0x05,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4, + 0xb6,0x06,0x07,0x08,0xb9,0x09,0x0a,0xbc, + 0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x61, + 0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69, + 0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71, + 0x72,0x73,0x74,0x75 + }; switch(tr->translator_name) { case L('a','f'): case L('n','l'): - // look for 'n and replace by a special character (unicode: schwa) + // look for 'n and replace by a special character (unicode: schwa) if(!iswalpha(prev_in)) @@ -2484,8 +2478,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, } return(c); } - else - if(((code = c - 0x3130) >= 0) && (code < 0x34)) + else if(((code = c - 0x3130) >= 0) && (code < 0x34)) { // Hangul compatibility jamo return(hangul_compatibility[code] + 0x1100); @@ -2500,27 +2493,27 @@ static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA"," int UpperCaseInWord(Translator *tr, char *word, int c) {//===================================================== - int ix; - int len; - const char *p; + int ix; + int len; + const char *p; - if(tr->translator_name == L('g','a')) - { - // Irish - for(ix=0; ; ix++) - { - if((p = UCase_ga[ix]) == NULL) - break; + if(tr->translator_name == L('g','a')) + { + // Irish + for(ix=0; ; ix++) + { + if((p = UCase_ga[ix]) == NULL) + break; - len = strlen(p); - if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) - { - if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) - return(1); - } - } - } - return(0); + len = strlen(p); + if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) + { + if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) + return(1); + } + } + } + return(0); } @@ -2600,7 +2593,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t fprintf(f_logespeak,"ENDCLAUSE\n"); fflush(f_logespeak); } -p = source; + p = source; charix[charix_top+1] = 0; charix[charix_top+2] = 0x7fff; @@ -2706,8 +2699,7 @@ p = source; prev_in = prev_in_save; prev_in_save = 0; } - else - if(source_index > 0) + else if(source_index > 0) { utf8_in2(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; } @@ -2773,8 +2765,7 @@ p = source; c = ' '; } } - else - if((option_sayas2 & 0xf0) == SAYAS_DIGITS) + else if((option_sayas2 & 0xf0) == SAYAS_DIGITS) { if(iswdigit(c)) { @@ -2797,8 +2788,7 @@ p = source; } } } - else - if((option_sayas2 & 0x10) == 0) + else if((option_sayas2 & 0x10) == 0) { // speak as words @@ -2922,7 +2912,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre if(tr->letter_bits_offset > 0) { if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) || - ((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250))) + ((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250))) { // Don't mix native and Latin characters in the same word // Break into separate words @@ -2950,22 +2940,21 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre { if(iswlower(prev_in)) { - // lower case followed by upper case in a word - if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) - { - // convert to lower case and continue - c = towlower(c); - } - else - { - c = ' '; // lower case followed by upper case, treat as new word - space_inserted = 1; - prev_in_save = c; - // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set - } + // lower case followed by upper case in a word + if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) + { + // convert to lower case and continue + c = towlower(c); + } + else + { + c = ' '; // lower case followed by upper case, treat as new word + space_inserted = 1; + prev_in_save = c; + // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set + } } - else - if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) + else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) { int next2_in; utf8_in(&next2_in,&source[source_index + next_in_nbytes]); @@ -2999,8 +2988,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre all_upper_case = 0; } } - else - if(c=='-') + else if(c=='-') { if(!IsSpace(prev_in) && IsAlpha(next_in)) { @@ -3019,31 +3007,27 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre c = ' '; } } - else - if((prev_in==' ') && (next_in==' ')) + else if((prev_in==' ') && (next_in==' ')) { // ' - ' dash between two spaces, treat as pause c = ' '; pre_pause_add = 4; } - else - if(next_in=='-') + else if(next_in=='-') { // double hyphen, treat as pause source_index++; c = ' '; pre_pause_add = 4; } - else - if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) + else if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) { // insert extra space between a word + space + hyphen, to distinguish 'a -2' from 'a-2' sbuf[ix++] = ' '; words[word_count].start++; } } - else - if(c == '.') + else if(c == '.') { if(prev_out == '.') { @@ -3051,8 +3035,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre c = ' '; space_inserted = 1; } - else - if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in)) + else if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in)) { // dot after a word, with space following, probably an abbreviation words[word_count-1].flags |= FLAG_HAS_DOT; @@ -3061,26 +3044,22 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre c = ' '; // remove the dot if it's followed by a space or hyphen, so that it's not pronounced } } - else - if(c == '\'') + else if(c == '\'') { if(((prev_in == '.') || iswalnum(prev_in)) && IsAlpha(next_in)) { // between two letters, or in an abbreviation (eg. u.s.a.'s). Consider the apostrophe as part of the word single_quoted = 0; } - else - if((tr->langopts.param[LOPT_APOSTROPHE] & 1) && IsAlpha(next_in)) + else if((tr->langopts.param[LOPT_APOSTROPHE] & 1) && IsAlpha(next_in)) { single_quoted = 0; // apostrophe at start of word is part of the word } - else - if((tr->langopts.param[LOPT_APOSTROPHE] & 2) && IsAlpha(prev_in)) + else if((tr->langopts.param[LOPT_APOSTROPHE] & 2) && IsAlpha(prev_in)) { single_quoted = 0; // apostrophe at end of word is part of the word } - else - if((wcschr(tr->char_plus_apostrophe,prev_in) != 0) && (prev_out2 == ' ')) + else if((wcschr(tr->char_plus_apostrophe,prev_in) != 0) && (prev_out2 == ' ')) { // consider single character plus apostrophe as a word single_quoted = 0; @@ -3111,44 +3090,41 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre else #ifdef deleted // Brackets are now recognised in TranslateRules() - if(IsBracket(c)) - { - pre_pause_add = 4; - c = ' '; - } - else + if(IsBracket(c)) + { + pre_pause_add = 4; + c = ' '; + } + else #endif - if(lookupwchar(breaks,c) != 0) - { - c = ' '; // various characters to treat as space - } - else - if(iswdigit(c)) - { - if(tr->langopts.tone_numbers && IsAlpha(prev_out) && !IsDigit(next_in)) - { - } - else - if((prev_out != ' ') && !iswdigit(prev_out)) - { - if((prev_out != tr->langopts.decimal_sep) || ((decimal_sep_count > 0) && (tr->langopts.decimal_sep == ','))) + if(lookupwchar(breaks,c) != 0) { - c = ' '; - space_inserted = 1; + c = ' '; // various characters to treat as space } - else + else if(iswdigit(c)) { - decimal_sep_count = 1; + if(tr->langopts.tone_numbers && IsAlpha(prev_out) && !IsDigit(next_in)) + { + } + else if((prev_out != ' ') && !iswdigit(prev_out)) + { + if((prev_out != tr->langopts.decimal_sep) || ((decimal_sep_count > 0) && (tr->langopts.decimal_sep == ','))) + { + c = ' '; + space_inserted = 1; + } + else + { + decimal_sep_count = 1; + } + } + else if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) + { + // insert extra space between a word and a number, to distinguish 'a 2' from 'a2' + sbuf[ix++] = ' '; + words[word_count].start++; + } } - } - else - if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in)) - { - // insert extra space between a word and a number, to distinguish 'a 2' from 'a2' - sbuf[ix++] = ' '; - words[word_count].start++; - } - } } if(IsSpace(c)) @@ -3295,6 +3271,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre if(skipping_text) continue; + current_alphabet = NULL; // digits should have been converted to Latin alphabet ('0' to '9') word = pw = &sbuf[words[ix].start]; @@ -3309,9 +3286,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre { *pn++ = *pw++; } - else - if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') - && iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' ')) // don't allow only 1 or 2 digits in the final part + else if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') + && iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' ')) // don't allow only 1 or 2 digits in the final part { pw += 2; ix++; // skip "word" @@ -3358,20 +3334,20 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre } *pn++ = ' '; - if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0) - { - if(tr->langopts.break_numbers & (1 << (nx-1))) - { - // the next group only has 1 digits, make it three - *pn++ = '0'; - *pn++ = '0'; - } - if(tr->langopts.break_numbers & (1 << (nx-2))) - { - // the next group only has 2 digits (eg. Indian languages), make it three - *pn++ = '0'; - } - } + if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0) + { + if(tr->langopts.break_numbers & (1 << (nx-1))) + { + // the next group only has 1 digits, make it three + *pn++ = '0'; + *pn++ = '0'; + } + if(tr->langopts.break_numbers & (1 << (nx-2))) + { + // the next group only has 2 digits (eg. Indian languages), make it three + *pn++ = '0'; + } + } } } pw--; @@ -3379,7 +3355,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre for(j=1; j<=nw; j++) { - num_wtab[j].flags &= ~(FLAG_MULTIPLE_SPACES | FLAG_EMBEDDED); // don't use these flags for subsequent parts when splitting a number + num_wtab[j].flags &= ~(FLAG_MULTIPLE_SPACES | FLAG_EMBEDDED); // don't use these flags for subsequent parts when splitting a number } // include the next few characters, in case there are an ordinal indicator or other suffix diff --git a/src/translate.h b/src/translate.h index 89c9e58e..a34667e3 100644 --- a/src/translate.h +++ b/src/translate.h @@ -275,7 +275,8 @@ extern ALPHABET *current_alphabet; // alphabet flags #define AL_DONT_NAME 0x01 // don't speak the alphabet name #define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters -#define AL_WORDS 0x04 // use the language to speak words +#define AL_WORDS 0x04 // use the language to speak words +#define AL_NOT_CODE 0x08 // don't speak the character code #define N_LOPTS 21 @@ -402,12 +403,18 @@ typedef struct { #define S_INITIAL_2 0x2000 // bit13= If there is only one syllable before the primary stress, give it a secondary stress +#define S_MID_DIM 0x10000 +// bit 16= Set (not first or last) syllables to diminished stress + #define S_PRIORITY_STRESS 0x20000 // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" #define S_EO_CLAUSE1 0x40000 // bit18= don't lengthen short vowels more than long vowels at end-of-clause +#define S_FINAL_LONG 0x80000 +// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel + #define S_HYPEN_UNSTRESS 0x100000 // bit20= hyphenated words, 2nd part is unstressed @@ -416,7 +423,6 @@ typedef struct { // bit21= don't lengthen vowels at end-of-clause // bit15= Give stress to the first unstressed syllable -// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel int stress_flags; @@ -566,7 +572,7 @@ typedef struct const char *transpose_map; char dictionary_name[40]; - char phon_out[400]; + char phon_out[500]; char phonemes_repeat[20]; int phonemes_repeat_count; int phoneme_tab_ix; diff --git a/src/voices.cpp b/src/voices.cpp index 5c5ad948..606dc6a0 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2010 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 * @@ -47,7 +47,8 @@ MNEM_TAB genders [] = { {"unknown", 0}, {"male", 1}, {"female", 2}, - {NULL, 0 }}; + {NULL, 0 } +}; int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; //int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0}; @@ -98,6 +99,7 @@ enum { V_STRESSADD, V_DICTRULES, V_STRESSRULE, + V_STRESSOPT, V_CHARSET, V_NUMBERS, V_OPTION, @@ -118,7 +120,8 @@ enum { static MNEM_TAB options_tab[] = { {"reduce_t", LOPT_REDUCE_T}, {"bracket", LOPT_BRACKET_PAUSE}, - {NULL, -1} }; + {NULL, -1} +}; static MNEM_TAB keyword_tab[] = { {"name", V_NAME}, @@ -128,7 +131,7 @@ static MNEM_TAB keyword_tab[] = { {"formant", V_FORMANT}, {"pitch", V_PITCH}, {"phonemes", V_PHONEMES}, - {"translator", V_TRANSLATOR}, + {"translator", V_TRANSLATOR}, {"dictionary", V_DICTIONARY}, {"stressLength", V_STRESSLENGTH}, {"stressAmp", V_STRESSAMP}, @@ -137,6 +140,7 @@ static MNEM_TAB keyword_tab[] = { {"tunes", V_TUNES}, {"dictrules", V_DICTRULES}, {"stressrule", V_STRESSRULE}, + {"stressopt", V_STRESSOPT}, {"charset", V_CHARSET}, {"replace", V_REPLACE}, {"words", V_WORDGAP}, @@ -166,7 +170,8 @@ static MNEM_TAB keyword_tab[] = { {"l_sonorant_min", 0x100+LOPT_SONORANT_MIN}, {"l_length_mods", 0x100+LOPT_LENGTH_MODS}, {"apostrophe", 0x100+LOPT_APOSTROPHE}, - {NULL, 0} }; + {NULL, 0} +}; #define N_VOICE_VARIANTS 12 const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0}; @@ -260,9 +265,9 @@ void ReadTonePoints(char *string, int *tone_pts) tone_pts[ix] = -1; sscanf(string,"%d %d %d %d %d %d %d %d %d %d", - &tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3], - &tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7], - &tone_pts[8],&tone_pts[9]); + &tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3], + &tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7], + &tone_pts[8],&tone_pts[9]); } @@ -316,8 +321,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea while(isspace(*p)) p++; strncpy0(vname,p,sizeof(vname)); } - else - if(memcmp(linebuf,"language",8)==0) + else if(memcmp(linebuf,"language",8)==0) { priority = DEFAULT_LANGUAGE_PRIORITY; vlanguage[0] = 0; @@ -334,13 +338,11 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea n_languages++; } } - else - if(memcmp(linebuf,"gender",6)==0) + else if(memcmp(linebuf,"gender",6)==0) { sscanf(&linebuf[6],"%s %d",vgender,&age); } - else - if(memcmp(linebuf,"variants",8)==0) + else if(memcmp(linebuf,"variants",8)==0) { sscanf(&linebuf[8],"%d",&n_variants); } @@ -443,7 +445,7 @@ void VoiceReset(int tone_only) // Adjustment of harmonic amplitudes, steps of 8Hz // value of 128 means no change // memset(voice->tone_adjust,128,sizeof(voice->tone_adjust)); -SetToneAdjust(voice,tone_points); + SetToneAdjust(voice,tone_points); // default values of speed factors voice->speedf1 = 256; @@ -517,7 +519,7 @@ static int Read8Numbers(char *data_in,int *data) // Read 8 integer numbers memset(data, 0, 8+sizeof(int)); return(sscanf(data_in,"%d %d %d %d %d %d %d %d", - &data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7])); + &data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7])); } @@ -557,7 +559,7 @@ voice_t *LoadVoice(const char *vname, int control) char buf[sizeof(path_home)+30]; char path_voices[sizeof(path_home)+12]; - int dict_min = 0; + int dict_min = 0; int stress_amps[8]; int stress_lengths[8]; int stress_add[8]; @@ -572,11 +574,11 @@ voice_t *LoadVoice(const char *vname, int control) static char voice_name[40]; // voice name for current_voice_selected static char voice_languages[100]; // list of languages and priorities for current_voice_selected - // which directory to look for a named voice - static const char *voices_asia = - "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; - static const char *voices_europe = - "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; + // which directory to look for a named voice + static const char *voices_asia = + "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; + static const char *voices_europe = + "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; strncpy0(voicename, vname, sizeof(voicename)); @@ -588,38 +590,37 @@ voice_t *LoadVoice(const char *vname, int control) } else { - if(voicename[0]==0) - strcpy(voicename,"default"); + if(voicename[0]==0) + strcpy(voicename,"default"); sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory if(GetFileLength(buf) <= 0) { - // then look in the appropriate subdirectory - if((voicename[0]=='m') && (voicename[1]=='b')) - { - voice_dir = "mb"; // mbrola voices - } - else - { - sprintf(name2, "%s ", voicename); - if(strstr(voices_europe, voicename) != NULL) - voice_dir = "europe"; - else - if(strstr(voices_asia, voicename) != NULL) - voice_dir = "asia"; - else - voice_dir = "other"; + // then look in the appropriate subdirectory + if((voicename[0]=='m') && (voicename[1]=='b')) + { + voice_dir = "mb"; // mbrola voices + } + else + { + sprintf(name2, "%s ", voicename); + if(strstr(voices_europe, voicename) != NULL) + voice_dir = "europe"; + else if(strstr(voices_asia, voicename) != NULL) + voice_dir = "asia"; + else + voice_dir = "other"; - sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename); + sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename); - if(GetFileLength(buf) <= 0) - { - // if not found, look in "test" sub-directory - sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); - } - } + if(GetFileLength(buf) <= 0) + { + // if not found, look in "test" sub-directory + sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename); + } + } } } @@ -685,48 +686,48 @@ voice_t *LoadVoice(const char *vname, int control) switch(key) { case V_LANGUAGE: + { + unsigned int len; + int priority; + + if(tone_only) + break; + + priority = DEFAULT_LANGUAGE_PRIORITY; + language_name[0] = 0; + + sscanf(p,"%s %d",language_name,&priority); + if(strcmp(language_name,"variant") == 0) + break; + + len = strlen(language_name) + 2; + // check for space in languages[] + if(len < (sizeof(voice_languages)-langix-1)) { - unsigned int len; - int priority; + voice_languages[langix] = priority; - if(tone_only) - break; - - priority = DEFAULT_LANGUAGE_PRIORITY; - language_name[0] = 0; - - sscanf(p,"%s %d",language_name,&priority); - if(strcmp(language_name,"variant") == 0) - break; - - len = strlen(language_name) + 2; - // check for space in languages[] - if(len < (sizeof(voice_languages)-langix-1)) - { - voice_languages[langix] = priority; - - strcpy(&voice_languages[langix+1],language_name); - langix += len; - } - - // only act on the first language line - if(language_set == 0) - { - language_type = strtok(language_name,"-"); - language_set = 1; - strcpy(translator_name,language_type); - strcpy(new_dictionary,language_type); - strcpy(phonemes_name,language_type); - SelectPhonemeTableName(phonemes_name); - - if(new_translator != NULL) - DeleteTranslator(new_translator); - - new_translator = SelectTranslator(translator_name); - langopts = &new_translator->langopts; - } + strcpy(&voice_languages[langix+1],language_name); + langix += len; } - break; + + // only act on the first language line + if(language_set == 0) + { + language_type = strtok(language_name,"-"); + language_set = 1; + strcpy(translator_name,language_type); + strcpy(new_dictionary,language_type); + strcpy(phonemes_name,language_type); + SelectPhonemeTableName(phonemes_name); + + if(new_translator != NULL) + DeleteTranslator(new_translator); + + new_translator = SelectTranslator(translator_name); + langopts = &new_translator->langopts; + } + } + break; case V_NAME: if(tone_only == 0) @@ -737,14 +738,14 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_GENDER: - { - int age = 0; - char vgender[80]; - sscanf(p,"%s %d",vgender,&age); - current_voice_selected.gender = LookupMnem(genders,vgender); - current_voice_selected.age = age; - } - break; + { + int age = 0; + char vgender[80]; + sscanf(p,"%s %d",vgender,&age); + current_voice_selected.gender = LookupMnem(genders,vgender); + current_voice_selected.age = age; + } + break; case V_TRANSLATOR: if(tone_only) break; @@ -752,7 +753,7 @@ voice_t *LoadVoice(const char *vname, int control) sscanf(p,"%s",translator_name); if(new_translator != NULL) - DeleteTranslator(new_translator); + DeleteTranslator(new_translator); new_translator = SelectTranslator(translator_name); langopts = &new_translator->langopts; @@ -771,16 +772,16 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_PITCH: - { - double factor; - // default is pitch 82 118 - n = sscanf(p,"%d %d",&pitch1,&pitch2); - voice->pitch_base = (pitch1 - 9) << 12; - voice->pitch_range = (pitch2 - pitch1) * 108; - factor = double(pitch1 - 82)/82; - voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch - } - break; + { + double factor; + // default is pitch 82 118 + n = sscanf(p,"%d %d",&pitch1,&pitch2); + voice->pitch_base = (pitch1 - 9) << 12; + voice->pitch_range = (pitch2 - pitch1) * 108; + factor = double(pitch1 - 82)/82; + voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch + } + break; case V_STRESSLENGTH: // stressLength stress_lengths_set = Read8Numbers(p,stress_lengths); @@ -817,7 +818,8 @@ voice_t *LoadVoice(const char *vname, int control) case V_DICTRULES: // conditional dictionary rules and list entries case V_NUMBERS: - // expect a list of numbers + case V_STRESSOPT: + // expect a list of numbers while(*p != 0) { while(isspace(*p)) p++; @@ -825,16 +827,22 @@ voice_t *LoadVoice(const char *vname, int control) if((n = atoi(p)) > 0) { p++; - if((key==V_DICTRULES) && (n < 32)) - conditional_rules |= (1 << n); + if(n < 32) + { + if(key==V_DICTRULES) + conditional_rules |= (1 << n); + else if(key==V_NUMBERS) + langopts->numbers |= (1 << n); + else if(key==V_STRESSOPT) + langopts->stress_flags |= (1 << n); + } else - if((key==V_NUMBERS) && (n < 32)) - langopts->numbers |= (1 << n); - else - if((key==V_NUMBERS) && (n < 64)) - langopts->numbers |= (1 << (n-32)); - else - fprintf(stderr,"Bad option number %d\n", n); + { + if((key==V_NUMBERS) && (n < 64)) + langopts->numbers |= (1 << (n-32)); + else + fprintf(stderr,"Bad option number %d\n", n); + } } while(isalnum(*p)) p++; } @@ -856,9 +864,9 @@ voice_t *LoadVoice(const char *vname, int control) case V_STRESSRULE: sscanf(p,"%d %d %d %d",&langopts->stress_rule, - &langopts->stress_flags, - &langopts->unstressed_wd1, - &langopts->unstressed_wd2); + &langopts->stress_flags, + &langopts->unstressed_wd1, + &langopts->unstressed_wd2); break; case V_CHARSET: @@ -909,12 +917,12 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_TONE: - { - int tone_data[12]; - ReadTonePoints(p,tone_data); - SetToneAdjust(voice,tone_data); - } - break; + { + int tone_data[12]; + ReadTonePoints(p,tone_data); + SetToneAdjust(voice,tone_data); + } + break; case V_VOICING: if(sscanf(p,"%d",&value)==1) @@ -922,16 +930,16 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_BREATH: - voice->breath[0] = Read8Numbers(p,&voice->breath[1]); - for(ix=1; ix<8; ix++) - { - if(ix % 2) - voice->breath[ix] = -voice->breath[ix]; - } + voice->breath[0] = Read8Numbers(p,&voice->breath[1]); + for(ix=1; ix<8; ix++) + { + if(ix % 2) + voice->breath[ix] = -voice->breath[ix]; + } break; case V_BREATHW: - voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); + voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]); break; case V_CONSONANTS: @@ -943,20 +951,20 @@ voice_t *LoadVoice(const char *vname, int control) break; case V_MBROLA: - { - int srate = 16000; - char name[40]; - char phtrans[40]; + { + int srate = 16000; + char name[40]; + char phtrans[40]; - phtrans[0] = 0; - sscanf(p,"%s %s %d",name,phtrans,&srate); - if(LoadMbrolaTable(name,phtrans,srate) != EE_OK) - { - fprintf(stderr,"mbrola voice not found\n"); - } - voice->samplerate = srate; + phtrans[0] = 0; + sscanf(p,"%s %s %d",name,phtrans,&srate); + if(LoadMbrolaTable(name,phtrans,srate) != EE_OK) + { + fprintf(stderr,"mbrola voice not found\n"); } - break; + voice->samplerate = srate; + } + break; case V_KLATT: voice->klattv[0] = 1; // default source: IMPULSIVE @@ -969,9 +977,9 @@ voice_t *LoadVoice(const char *vname, int control) SetSpeed(3); break; - case V_DICTMIN: + case V_DICTMIN: sscanf(p,"%d",&dict_min); - break; + break; default: if((key & 0xff00) == 0x100) @@ -1015,7 +1023,7 @@ voice_t *LoadVoice(const char *vname, int control) } voice->phoneme_tab_ix = ix; new_translator->phoneme_tab_ix = ix; - new_translator->dict_min_size = dict_min; + new_translator->dict_min_size = dict_min; LoadDictionary(new_translator, new_dictionary, control & 4); if(dictionary_name[0]==0) return(NULL); // no dictionary loaded @@ -1255,15 +1263,14 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s // match on voice name score += 500; } - else - if(strcmp(voice_spec->name,voice->identifier)==0) + else if(strcmp(voice_spec->name,voice->identifier)==0) { score += 400; } } if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) && - ((voice->gender == 1) || (voice->gender == 2))) + ((voice->gender == 1) || (voice->gender == 2))) { if(voice_spec->gender == voice->gender) score += 50; @@ -1395,8 +1402,7 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2) { match_fname = ix; // matching identifier, use this if no matching name } - else - if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) + else if(strcmp(last_part,&id[strlen(id)-last_part_len])==0) { match_fname2 = ix; } @@ -1493,8 +1499,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) gender = 0; if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13))) gender = 2; - else - if(voice_select2.gender == 1) + else if(voice_select2.gender == 1) gender = 1; #define AGE_OLD 60 @@ -1625,8 +1630,8 @@ static void GetVoices(const char *path) } #else #ifdef PLATFORM_WINDOWS - WIN32_FIND_DATAA FindFileData; - HANDLE hFind = INVALID_HANDLE_VALUE; + WIN32_FIND_DATAA FindFileData; + HANDLE hFind = INVALID_HANDLE_VALUE; #undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string sprintf(fname,"%s\\*",path); @@ -1640,30 +1645,29 @@ static void GetVoices(const char *path) if(FindFileData.cFileName[0] != '.') { - sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); - ftype = GetFileLength(fname); + sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); + ftype = GetFileLength(fname); - if(ftype == -2) - { - // a sub-sirectory - GetVoices(fname); - } - else - if(ftype > 0) - { - // a regular line, add it to the voices list - if((f_voice = fopen(fname,"r")) == NULL) - continue; + if(ftype == -2) + { + // a sub-sirectory + GetVoices(fname); + } + else if(ftype > 0) + { + // a regular line, add it to the voices list + if((f_voice = fopen(fname,"r")) == NULL) + continue; - // pass voice file name within the voices directory - voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); - fclose(f_voice); + // pass voice file name within the voices directory + voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); + fclose(f_voice); - if(voice_data != NULL) - { - voices_list[n_voices_list++] = voice_data; - } - } + if(voice_data != NULL) + { + voices_list[n_voices_list++] = voice_data; + } + } } } while(FindNextFileA(hFind, &FindFileData) != 0); FindClose(hFind); @@ -1680,8 +1684,8 @@ static void GetVoices(const char *path) if(n_voices_list >= (N_VOICES_LIST-2)) break; // voices list is full - if(ent->d_name[0] == '.') - continue; + if(ent->d_name[0] == '.') + continue; sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); @@ -1692,8 +1696,7 @@ static void GetVoices(const char *path) // a sub-sirectory GetVoices(fname); } - else - if(ftype > 0) + else if(ftype > 0) { // a regular line, add it to the voices list if((f_voice = fopen(fname,"r")) == NULL) @@ -1728,7 +1731,7 @@ espeak_ERROR SetVoiceByName(const char *name) variant_name = ExtractVoiceVariantName(buf, 0, 1); - for(ix=0; ;ix++) + for(ix=0; ; ix++) { // convert voice name to lower case (ascii) if((buf[ix] = tolower(buf[ix])) == 0) @@ -1833,7 +1836,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) // sort the voices list qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), - (int (__cdecl *)(const void *,const void *))VoiceNameSorter); + (int (__cdecl *)(const void *,const void *))VoiceNameSorter); if(voice_spec) From 9ef3750d3937b8d19e52303bde8955778d2b3dab Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 10 Mar 2013 14:21:51 +0000 Subject: [PATCH 17/24] 1.46.45 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/bn_list | 56 +++--- dictsource/bn_rules | 73 +++---- dictsource/bo_rules | 130 ++++++------- dictsource/dv_list | 60 +++--- dictsource/pa_list | 409 +++++++++++++++++++++++----------------- dictsource/pa_rules | 90 ++++----- dictsource/ur_list | 86 ++++----- dictsource/ur_rules | 44 ++--- phsource/ph_malayalam | 15 -- phsource/ph_s_gaelic | 2 +- phsource/ph_tibetan | 4 +- phsource/ustop/q2.wav | Bin 5392 -> 0 bytes phsource/ustop/q2_i.wav | Bin 6606 -> 0 bytes 13 files changed, 514 insertions(+), 455 deletions(-) delete mode 100644 phsource/ustop/q2.wav delete mode 100644 phsource/ustop/q2_i.wav diff --git a/dictsource/bn_list b/dictsource/bn_list index 065d77c3..cedd2668 100644 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -9,20 +9,20 @@ _2 d:UI _3 t'i:n _4 c'a:@'r _5 ,pa~c -_6 ch'O:j +_6 c#'O:j _7 S'a:t -_8 'a:th. +_8 'a:t.# _9 n'O:j _10 d'O:S _11 a'g'a:rO: _12 b'a:rO: _13 t'a:rO: -_14 ch:O:d'dO: +_14 c#:O:d'dO: _15 p'O:n'e:rO: _16 S'o:lO: _17 SO:t'e:rO: -_18 a:th'e:rO: +_18 a:t#'e:rO: _19 U'n'IS _20 kU:'ri @@ -31,9 +31,9 @@ _22 b'a:IS _23 t'e:IS _24 c'O:b'bIS _25 pa~O:c'IS -_26 ch'a:'bb'IS +_26 c#'a:'bb'IS _27 Sa:ta:S -_28 ath'a:S +_28 at#'a:S _29 Unt'rIs _30 t'i:rIS @@ -42,7 +42,7 @@ _32 bat:'rIS _33 tE't'rIS _34 ca~o:u:t'rIS _35 pa~O:it'rIS -_36 cha'trIS +_36 c#a'trIS _37 Sa~it'rIS _38 at'tr'IS _39 U'nO:cO:l'IS @@ -53,7 +53,7 @@ _42 bi'al'lIS _43 te:ta:l'lIS _44 cu:a:l'lIS _45 paI'nta:l'lIS -_46 che:co:l'lIS +_46 c#e:co:l'lIS _47 Sat'co:l'lIs _48 at'co:l'lIS _49 Uno:pan'ca:S @@ -64,18 +64,18 @@ _52 ba:h@n'no: _53 t'Ip'pan'no: _54 cu:wan'no: _55 po:n'ca:n'no: -_56 chh@p:'an'no: +_56 c#h@p:'an'no: _57 Sa:ta:n'no: -_58 ath'a:n'no: -_59 Uno:s'ath +_58 at#'a:n'no: +_59 Uno:s'at# -_60 s'a:th. +_60 s'a:t.# _61 e:k'so:t'tI _62 ba:so:t'tI _63 te:so:t'tI _64 ca~o:u:so:t'tI _65 pa~I'so:t'tI -_66 che:so:t'tI +_66 c#e:so:t'tI _67 Sat'so:t'tI _68 atso:t'ti _69 ,Uno:Sat'to:r @@ -85,8 +85,8 @@ _71 e:kat'to:r _72 ba:hat'to:r _73 tIat'to:r _74 cu:at'to:r -_75 pa~chat'to:r -_76 chI'at:to:r +_75 pa~c#at'to:r +_76 c#I'at:to:r _77 Sa:t@'t:o:r _78 atat'to:r _79 ,Uno:a:Si: @@ -97,7 +97,7 @@ _82 bI'ra:Si: _83 tIra:Si: _84 cu:ra:Si: _85 pa~ca:Si: -_86 chIa:Si: +_86 c#Ia:Si: _87 Sa:ta:Si: _88 O:sto:a:Si: _89 Uno:no:b'bo:I @@ -108,43 +108,43 @@ _92 bIra:no:b'bo:I _93 tIr'a:no:b'bo:I _94 cu:r'a:no:b'bo:I _95 pa~ca:no:b'bo:I -_96 chIa:no:b'bo:I +_96 c#Ia:no:b'bo:I _97 S@ta:no:b'bo:I _98 ata:no:b'bo:I _99 nIra:no:b'bo:I _0C SO: _0M1 h@z'a:r -_0M2 l'a:kh +_0M2 l'a:k# _0M3 ko:tI _0M4 o:r'bu:d _dpt d@so:mIk // Single consonants ক k@ -খ kh@ +খ k#@ গ g@ -ঘ gh@ +ঘ g#@ ঙ N'g চ c@ -ছ ch@ +ছ c#@ জ J@ -ঝ Jh@ +ঝ J#@ ঞ n^@ ট t.@ -ঠ th.@ +ঠ t.#@ ড d.@ -ঢ dh.@ +ঢ d.#@ ণ n.@ // retroflex n.@ ত t@ -থ th@ +থ t#@ দ d@ -ধ dh@ +ধ d#@ ন n@ প p@ -ফ ph@ +ফ p#@ ব b@ -ভ bh@ +ভ b#@ ম m@ য় O:j য J@ diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 2a356171..862261c0 100644 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -128,12 +128,12 @@ .group ক ক k@ ক (B k - ক্য (्য kja: - ক্ষ kh'@ + ক্য (्য kja: + ক্ষ k#'@ .group খ - খ khV - খ (B kh@ + খ k#V + খ (B k#@ .group গ গ gV @@ -141,8 +141,8 @@ ঈ)গ (ল g@ .group ঘ - ঘ ghV - ঘ (B gh + ঘ g#V + ঘ (B g# .group ঙ ঙ N'g @@ -152,66 +152,67 @@ .group চ চ cV চ (B c - ্য) চ্য c'j@ + ্য) চ্য c'j@ .group ছ - ছ chV - ছ (B ch@ + ছ c#V + ছ (B c#@ .group জ জ J@ - জ (B J@ - ্) জ zV - জ (B J@ + জ (B J@ + ্) জ zV + জ (B J@ .group ঝ - ঝ Jh@ - ঝ (B Jh@ + ঝ J#@ + ঝ (B J#@ .group ঞ ঞ n^V ঞ্ (B n^ - + + .group ট - ট tV - ট (B tV - ট (्য় t.j@ + ট t.V + ট (B t.V + ট (्য় t.j@ .group ঠ - ঠ thV - ঠ (B th. + ঠ t.#V + ঠ (B t.# .group ড ড d.V ড (B d. .group ঢ - ঢ dh.V - ঢ (B dh. + ঢ d.#V + ঢ (B d.# .group ণ ণ n.V // (temporary) same as dental [n] ণ (B n. - ণ্ম n.m + ণ্ম n.m .group ত ত t@ - ত (B t@ + ত (B t@ .group থ - থ th@ - থ (B th. - ক) থ (ন th@ + থ t#@ + থ (B t# + ক) থ (ন t#@ .group দ দ d@ - দ (B d. + দ (B d ব) দ (ল d@ .group ধ - ধ dh@ - ধ (B dh. - সা) ধ (ন dh@ + ধ d#@ + ধ (B d# + সা) ধ (ন d#@ .group ন ন n@ @@ -229,9 +230,9 @@ প্য (्য p: .group ফ - ফ ph@ - ফ (B ph@ - ফ ph@ + ফ p#@ + ফ (B p#@ + ফ p#@ .group ব @@ -239,8 +240,8 @@ ব (B b@ .group ভ - ভ bh@ - ভ (B bh@ + ভ b#@ + ভ (B b#@ .group ম ম mV diff --git a/dictsource/bo_rules b/dictsource/bo_rules index 5a0efa1a..3dd786ea 100644 --- a/dictsource/bo_rules +++ b/dictsource/bo_rules @@ -21,9 +21,9 @@ @) ཀ (_ k .group ཁ - ཁ kha - ཁ (B kh - @) ཁ (_ kh + ཁ k#a + ཁ (B k# + @) ཁ (_ k# .group ག ག ga @@ -31,9 +31,9 @@ @) ག (_ g .group གྷ - གྷ gha - གྷ (B gh - @) གྷ (_ gh + གྷ g#a + གྷ (B g# + @) གྷ (_ g# .group ང ང Na @@ -46,9 +46,9 @@ @) ཅ (_ c .group ཆ - ཆ cha - ཆ (B ch - @) ཆ (_ ch + ཆ c#a + ཆ (B c# + @) ཆ (_ c# .group ཇ ཇ Ja @@ -66,9 +66,9 @@ @) ཊ (_ t. .group ཋ - ཋ th.a - ཋ (B th. - @) ཋ (_ th. + ཋ t.#a + ཋ (B t.# + @) ཋ (_ t.# .group ཌ ཌ d.a @@ -76,9 +76,9 @@ @) ཌ (_ d. .group ཌྷ - ཌྷ dh.a - ཌྷ (B dh. - @) ཌྷ (_ dh. + ཌྷ d.#a + ཌྷ (B d.# + @) ཌྷ (_ d.# .group ཎ ཎ n.a @@ -91,9 +91,9 @@ @) ཏ (_ t .group ཐ - ཐ tha - ཐ (B th - @) ཐ (_ th + ཐ t#a + ཐ (B t# + @) ཐ (_ t# .group ད ད da @@ -101,9 +101,9 @@ @) ད (_ d .group དྷ - དྷ dha - དྷ (B dh - @) དྷ (_ dh + དྷ d#a + དྷ (B d# + @) དྷ (_ d# .group ན ན na @@ -116,9 +116,9 @@ @) པ (_ p .group ཕ - ཕ pha - ཕ (B ph - @) ཕ (_ ph + ཕ p#a + ཕ (B p# + @) ཕ (_ p# .group བ བ ba @@ -126,9 +126,9 @@ @) བ (_ b .group བྷ - བྷ bha - བྷ (B bh - @) བྷ (_ bh + བྷ b#a + བྷ (B b# + @) བྷ (_ b# .group མ མ ma @@ -141,9 +141,9 @@ @) ཙ (_ ts .group ཚ - ཚ tsha - ཚ (B tsh - @) ཚ (_ tsh + ཚ ts#a + ཚ (B ts# + @) ཚ (_ ts# .group ཛ ཛ dza @@ -151,9 +151,9 @@ @) ཛ (_ dz .group ཛྷ - ཛྷ dzha - ཛྷ (B dzh - @) ཛྷ (_ dzh + ཛྷ dz#a + ཛྷ (B dz# + @) ཛྷ (_ dz# .group ཝ ཝ wa @@ -245,16 +245,16 @@ ྐ (B k @) ྐ (_ k - ྑ kha - ྑ (B kh - @) ྑ (_ kh + ྑ k#a + ྑ (B k# + @) ྑ (_ k# ྒ ga ྒ (B g @) ྒ (_ g - ྒྷ gha - @) ྒྷ (_ gh + ྒྷ g#a + @) ྒྷ (_ g# ྔ Na ྔ (B N @@ -264,9 +264,9 @@ ྕ (B c @) ྕ (_ c - ྖ cha - ྖ (B ch - @) ྖ (_ ch + ྖ c#a + ྖ (B c# + @) ྖ (_ c# ྗ Ja ྗ (B J @@ -280,17 +280,17 @@ ྚ (B t. @) ྚ (_ t. - ྛ th.a - ྛ (B th. - @) ྛ (_ th. + ྛ t.#a + ྛ (B t.# + @) ྛ (_ t.# ྜ d.a ྜ (B d. @) ྜ (_ d. - ྜྷ dh.a - ྜྷ (B dh. - @) ྜྷ (_ dh. + ྜྷ d.#a + ྜྷ (B d.# + @) ྜྷ (_ d.# ྞ n.a ྞ (B n. @@ -300,17 +300,17 @@ ྟ (B t @) ྟ (_ t - ྠ tha - ྠ (B th - @) ྠ (_ th + ྠ t#a + ྠ (B t# + @) ྠ (_ t# ྡ da ྡ (B d @) ྡ (_ d - ྡྷ dha - ྡྷ (B dh - @) ྡྷ (_ dh + ྡྷ d#a + ྡྷ (B d# + @) ྡྷ (_ d# ྣ na ྣ (B n @@ -320,17 +320,17 @@ ྤ (B p @) ྤ (_ p - ྥ pha - ྥ (B ph - @) ྥ (_ ph + ྥ p#a + ྥ (B p# + @) ྥ (_ p# ྦ ba ྦ (B b @) ྦ (_ b - ྦྷ bha - ྦྷ (B bh - @) ྦྷ (_ bh + ྦྷ b#a + ྦྷ (B b# + @) ྦྷ (_ b# ྨ ma ྨ (B m @@ -340,17 +340,17 @@ ྩ (B ts @) ྩ (_ ts - ྪ tsha - ྪ (B tsh - @) ྪ (_ tsh + ྪ ts#a + ྪ (B ts# + @) ྪ (_ ts# ྫ dza ྫ (B dz @) ྫ (_ dz - ྫྷ dzha - ྫྷ (B dzh - @) ྫྷ (_ dzh + ྫྷ dz#a + ྫྷ (B dz# + @) ྫྷ (_ dz# ྭ wa ྭ (B w diff --git a/dictsource/dv_list b/dictsource/dv_list index d66a7f05..4ce2ae63 100644 --- a/dictsource/dv_list +++ b/dictsource/dv_list @@ -8,10 +8,10 @@ _0 s'umeI _1 e'keI _2 d'eI _3 tineI -_4 ha'tha'reI +_4 ha't#a'reI _5 fa'heI _6 ha'eI -_7 ha'theI +_7 ha't#eI _8 a'SeI _9 n'uaeI _10 d'ihaeI @@ -19,11 +19,11 @@ _10 d'ihaeI _11 e'gj'a:r@1 //egaara _12 b'ar@2 //baara _13 t'E:r@2 //theyra -_14 ch'O:d@2 //saada (d like in _2) +_14 c#'O:d@2 //saada (d like in _2) _15 p'Vndr@2 //fanara _16 s'o:l@2 //soalha lh like in ޅ _17 s'Vt:r@2 //sathaara -_18 Vth.:'a:r@2 //ashaara +_18 Vt.#:'a:r@2 //ashaara _19 Unn'Is //navaara _20 b'i:s //vihi (we he) @@ -32,9 +32,9 @@ _22 b'a:Is //baa wees _23 t'e:Is //tei wees _24 c'O:bIs sav wees _25 p@c:'Is //fansavees -_26 ch@bb'i:rs // sabbees +_26 c#@bb'i:rs // sabbees _27 s@t:'a:Is // sathawees -_28 ath:'a:Is // asha wees +_28 at#:'a:Is // asha wees _29 Unt'Is // ona thirees _30 t'i:s // thirees @@ -43,7 +43,7 @@ _32 bat:'Is // eg. 32 = thirees (30) eke (1) _33 tE~t'Is // E~ ? _34 cO~t'Is _35 pE~t'Is -_36 chaT'tIs +_36 c#aT'tIs _37 sE~t'Is _38 art'Is _39 Unta:l'Is @@ -54,7 +54,7 @@ _42 baIa:l'Is _43 tE~ta:l'Is _44 cO:wa:l'Is _45 paI'nta:l'Is -_46 chhIja:l'Is +_46 c#hIja:l'Is _47 sE~ta:l'Is _48 arta:l'Is _49 'Un^ca:s @@ -64,32 +64,32 @@ _51 Ikj'a:wVn _52 b'a:wVn _53 t'IrpVn _54 c'Ou:wVn -_55 p'achpVn -_56 chh@p:'Vn +_55 p'ac#pVn +_56 c#h@p:'Vn _57 sVt:'a:w@n -_58 ath:'a:w@n -_59 Uns'Vth +_58 at#:'a:w@n +_59 Uns'Vt# -_60 s'a:th. //fas dho (ދ) lhas -_61 'Iks@th. -_62 b'a:s@th. -_63 t'Irs@th. -_64 c'O~s@th. -_65 paIns@th. -_66 ch'Ija:s@th. -_67 s'Vrs@th. -_68 ars@th. +_60 s'a:t.# //fas dho (ދ) lhas +_61 'Iks@t.# +_62 b'a:s@t.# +_63 t'Irs@t.# +_64 c'O~s@t.# +_65 paIns@t.# +_66 c#'Ija:s@t.# +_67 s'Vrs@t.# +_68 ars@t.# _69 Un@h,at:'Vr: _70 sat:'Vr: // hai dhiha -_71 Ikhat:'Vr: +_71 Ik#at:'Vr: _72 b@hat:'Vr: _73 tIhat:'Vr: _74 cO:hat:'Vr: -_75 pach,at:'Vr: -_76 chIhat:'Vr: +_75 pac#,at:'Vr: +_76 c#Ihat:'Vr: _77 s@t@hat:'Vr: -_78 athhat:'Vr: +_78 at#hat:'Vr: _79 ,Un^Ia:s'i: _80 ,Vss'i: // addiha @@ -98,9 +98,9 @@ _82 baIa:s'i: _83 tIra:s'i: _84 cO:ra:s'i: _85 pI'ca:s'i: -_86 chIja:s'i: +_86 c#Ija:s'i: _87 sVt:a:s'i: -_88 ath:a:s'i: +_88 at#:a:s'i: _89 nVwa:s'i: _90 nVb:'e: nuvadhiha @@ -109,12 +109,12 @@ _92 b'a:n@we: _93 tIr'a:n@we: _94 cO:r'a:m@we: _95 p@c'a:n@we: -_96 chIj'a:n@we: +_96 c#Ij'a:n@we: _97 s@t:'a:n@we: -_98 ath:'a:n@we: +_98 at#:'a:n@we: _99 nIn^j'a:n@we: -_0C sa'theIka //satheyka (th like them) +_0C sa't#eIka //satheyka (th like them) _0M1 h@z'a:r (haas) _0M2 l'a:kh // lakka _0M3 cr'ore //curoadu diff --git a/dictsource/pa_list b/dictsource/pa_list index e8ce7beb..4c5e41f6 100644 --- a/dictsource/pa_list +++ b/dictsource/pa_list @@ -1,168 +1,241 @@ - -// This file is UTF8 encoded -// Punjabi/Gurmukhi - - -// Numbers -_0 z'iRo -_1 'Ik: -_2 d'o -_3 t'I~n -_4 c'aR -_5 p'VnJ -_6 ch'e -_7 s'Vt: -_8 'Vth.: -_9 n'O~ - -_10 d'Vs -_11 gI'aRa~ -_12 b'aRa~ -_13 t'eRa~ -_14 c'Oda~ -_15 p'Vnd@Ra~ -_16 s'ol.a~ -_17 s@t'aRa~ -_18 Vth.'aRa~ -_19 'Unni - -_20 v'iH -_21 Ik:i -_22 b'ai -_23 t'ei -_24 c'Ovi -_25 p'Vc:i -_26 ch'Vb:i -_27 s@t'ai -_28 Vth.'ai -_29 Un'Vt:i - -_30 t'iH -_31 Ik'Vt:i -_32 b'Vt:i -_33 t'et:i -_34 c'ONti -_35 p'ENti -_36 ch'Vt:i -_37 s'ENti - -_38 Vth.'Vt:i -_39 U~Nt'ali - -_40 c'ali -_41 Ik@t'ali -_42 be'ali -_43 t@R@t'ali -_44 cUt'ali -_45 p@nt'ali -_46 chI'ali -_47 s@nt'ali -_48 ,@R2@t'ali -_49 Un'VnJa - -_50 p@nJ'aH -_51 ,@k@v'VnJa -_52 b@v'VnJa -_53 t,@R@v'VnJa -_54 cUR'VnJa -_55 p,@c@v'VnJa -_56 ch@p'VnJa -_57 s,@t@v'VnJa -_58 ,@th.@v'VnJa -_59 Un.'ath. - -_60 s'Vth.: -_61 Ik'aH@t. -_62 b'aH@t. -_63 t@R'e~H@t. -_64 c'O~H@t. -_65 p'E~H@t. -_66 che'aH@t. -_67 s@t'aH@t. -_68 ,@th.'aH@t. -_69 Un.'Vt:@R - -_70 s'Vt:@R -_71 Ik'Vt:@R -_72 b@H'Vt:@R -_73 t@H'et:@R -_74 cOH'Vt:@R -_75 p@J'Vt:@R -_76 chIH'Vt:@R -_77 s@t'Vt:@R -_78 Vth.'Vt:@R -_79 Un.'asi - -_80 'Vssi -_81 ,IkI;'asi -_82 bI;'asi -_83 t,@RI;'asi -_84 cUR'asi -_85 p@c'asi -_86 chI;'asi -_87 s@t'asi -_88 Vth.'asi -_89 Un'an@v,e~ - -_90 n'Vb:e -_91 Ik'an@v,e~ -_92 b'an@v,e~ -_93 t@R'a~n@v,e~ -_94 cUR'an@v,e~ -_95 p@c'an@v,e~ -_96 chI'an@ve~ -_97 s@t'an@ve~ -_98 Vth.'an@ve~ -_99 n@R2'I~n@v,e~ - -_0C s'O -_0M1 H@J'aR -_0M2 l'Vkh: // 100,000 -_0M3 k'VRoR // 10,000,000 -_0M4 'VR@b // 1,000,000,000 -_0M5 kh'VR@b // 100,000,000,000 - -_dpt _dOth // ?? - - -// character names -ਂ bInd'i -ੰ tIpp'i -ੱ VddVk -ਃ visaRg -੍ hVlVnt - -ਅ 'ERV -ੲ 'IRI -ੳ 'URV -_ਆ 'ERV||kVnn'a -_ਇ 'IRI||sIh'aRi -_ਈ 'IRI||bIh'aRi -_ਉ 'URV||'OnkaR -_ਊ 'URV||dUl'EnkaR -_ਏ 'IRI||l'avam -_ਐ 'ERV||dUl'avam -_ਓ 'URV||hoR'a -_ਔ 'ERV||kVnOR'a - -ਾ kVnn'a -ਿ sIh'aRi -ੀ bIh'aRi -ੁ OnkaR -ੂ dUl'EnkaR -ੇ l'ava~ -ੈ d@l'ava~ -ੋ hoR'a -ੌ kVn'ORa - -। d.'Vnd.i -ਸਰਕਾਰ sR@k'aR - ਸਰਕਾਰੀ sR@k'aRi - -$textmode -ਸੋਫਟਵਿਅਰ software -ਈਮੇਲ email -ਕੀਬੋਰਡ keyboard -ਬੋਰਡ board -$phonememode - +// This file is UTF8 encoded +// Punjabi/Gurmukhi + +// Numbers +_0 z'iRo +_1 'Ik: +_2 d'o +_3 t'I~n +_4 c'aR +_5 p'VnJ +_6 c#'e +_7 s'Vt: +_8 'Vt.#: +_9 n'O~ +_10 d'Vs +_11 gI'aRa~ +_12 b'aRa~ +_13 t'eRa~ +_14 c'Oda~ +_15 p'Vnd@Ra~ +_16 s'ol.a~ +_17 s@t'aRa~ +_18 Vt.#'aRa~ +_19 'Unni +_20 v'iH +_21 Ik:i +_22 b'ai +_23 t'ei +_24 c'Ovi +_25 p'Vc:i +_26 c#'Vb:i +_27 s@t'ai +_28 Vt.#'ai +_29 Un'Vt:i +_30 t'iH +_31 Ik'Vt:i +_32 b'Vt:i +_33 t'et:i +_34 c'ONti +_35 p'ENti +_36 c#'Vt:i +_37 s'ENti +_38 Vt.#'Vt:i +_39 U~Nt'ali +_40 c'ali +_41 Ik@t'ali +_42 be'ali +_43 t@R@t'ali +_44 cUt'ali +_45 p@nt'ali +_46 c#I'ali +_47 s@nt'ali +_48 ,@R2@t'ali +_49 Un'VnJa +_50 p@nJ'aH +_51 ,@k@v'VnJa +_52 b@v'VnJa +_53 t,@R@v'VnJa +_54 cUR'VnJa +_55 p,@c@v'VnJa +_56 c#@p'VnJa +_57 s,@t@v'VnJa +_58 ,@t.#@v'VnJa +_59 Un.'at.# +_60 s'Vt.#: +_61 Ik'aH@t. +_62 b'aH@t. +_63 t@R'e~H@t. +_64 c'O~H@t. +_65 p'E~H@t. +_66 c#e'aH@t. +_67 s@t'aH@t. +_68 ,@t.#'aH@t. +_69 Un.'Vt:@R +_70 s'Vt:@R +_71 Ik'Vt:@R +_72 b@H'Vt:@R +_73 t@H'et:@R +_74 cOH'Vt:@R +_75 p@J'Vt:@R +_76 c#IH'Vt:@R +_77 s@t'Vt:@R +_78 Vt.#'Vt:@R +_79 Un.'asi +_80 'Vssi +_81 ,IkI;'asi +_82 bI;'asi +_83 t,@RI;'asi +_84 cUR'asi +_85 p@c'asi +_86 c#I;'asi +_87 s@t'asi +_88 Vt.#'asi +_89 Un'an@v,e~ +_90 n'Vb:e +_91 Ik'an@v,e~ +_92 b'an@v,e~ +_93 t@R'a~n@v,e~ +_94 cUR'an@v,e~ +_95 p@c'an@v,e~ +_96 c#I'an@ve~ +_97 s@t'an@ve~ +_98 Vt.#'an@ve~ +_99 n@R2'I~n@v,e~ + +_0C s'O +_0M1 H@J'aR +_0M2 l'Vk#: // 100,000 +_0M3 k'VRoR // 10,000,000 +_0M4 'VR@b // 1,000,000,000 +_0M5 k#'VR@b // 100,000,000,000 + +_dpt _dOt# // ?? + + +// character names +ਂ bInd'i +ੰ tIpp'i +ੱ VddVk +ਃ visaRg +੍ hVlVnt + +ਅ 'ERV +ੲ 'IRI +ੳ 'URV +_ਆ 'ERV||kVnn'a +_ਇ 'IRI||sIh'aRi +_ਈ 'IRI||bIh'aRi +_ਉ 'URV||'OnkaR +_ਊ 'URV||dUl'EnkaR +_ਏ 'IRI||l'avam +_ਐ 'ERV||dUl'avam +_ਓ 'URV||hoR'a +_ਔ 'ERV||kVnOR'a + +ਾ kVnn'a +ਿ sIh'aRi +ੀ bIh'aRi +ੁ OnkaR +ੂ dUl'EnkaR +ੇ l'ava~ +ੈ d@l'ava~ +ੋ hoR'a +ੌ kVn'ORa + + + +// Punctuation +। d.'Vnd.i + +// Pronouns +// ਪੁਰਖਵਾਚੀ ਪੜਨਾਂਵ +ਮੈਂ $u // main: I +ਮੈਨੂੰ $u +ਮੇਰਾ $u +ਮੇਰੀ $u +ਮੇਰੇ $u + +ਅਸੀਂ $u // we +ਸਾਨੂੰ $u +ਸਾਡਾ $u +ਸਾਡੀ $u +ਸਾਡੇ $u + + +ਆਪ $u // you(formal) +ਆਪਨੂੰ $u +ਆਪਦਾ $u +ਆਪਦੀ $u +ਆਪਦੇ $u + +ਤੂੰ $u // you (informal) +ਤੂਸੀਂ $u // you(formal) +ਤੁਹਾਨੂੰ $u +ਤੁਹਾਡਾ $u +ਤੁਹਾਡੀ $u +ਤੁਹਾਡੇ $u + +ਤੂੰ $u // you (informal) +ਤੈਨੂੰ $u +ਤੇਰਾ $u + +ਇਹ $u // he/she/it +ਇਸਤੋਂ $u +ਇਸਦਾ $u + +ਇਹ $u // they +ਇਨ੍ਹਾਂਨੂੰ $u +ਇਨ੍ਹਾਂਦਾ $u + +ਉਹ $u // he/she/it +ਉਸਤੋਂ $u +ਉਸਦਾ $u +ਉਸਦੀ $u +ਉਸਦੇ $u + +ਉਹ $u // they +ਉਨ੍ਹਾਂਨੂੰ $u // unhannu: them +ਉਨ੍ਹਾਂਦਾ $u +ਉਨ੍ਹਾਂਦੀ $u +ਉਨ੍ਹਾਂਦੇ $u + + + +// Prepositions/Postpositions +ਦਾ $u // dā: of, possessive particle +ਦੀ $u // dī +ਦੇ $u // de + +ਨੂੰ $u // nu: to +ਤੱਕ $u // tak: until, for(time) +ਬਿਨਾ $u $pause // without (preposition) +ਵਿਚ $u // in +ਵਿੱਚ $u // in +ਤੋਂ $u // ton: from, with, by + + + +// Verbs +ਹਾਂ $u // to be +ਹੋ $u +ਹੈ $u +ਹੈਂ $u +ਹਨ $u + +ਸੀ $u // si: past aux +ਸਨ $u // san: past aux + +ਰਹਾ $u // rahā: continuous +ਰਹੇ $u // rahe +ਰਹੀ $u // rahī + + + +$textmode +ਸੋਫਟਵਿਅਰ software +ਈਮੇਲ email +ਕੀਬੋਰਡ keyboard +ਬੋਰਡ board +$phonememode + diff --git a/dictsource/pa_rules b/dictsource/pa_rules index cfab4d6b..04b7cc58 100644 --- a/dictsource/pa_rules +++ b/dictsource/pa_rules @@ -176,12 +176,12 @@ ੱ) ਕ (_ k: .group ਖ - ਖ khV - ਖ (B kh - @) ਖ (_ kh - ੱ) ਖ kh:V - ੱ) ਖ (B kh: - ੱ) ਖ (_ kh: + ਖ k#V + ਖ (B k# + @) ਖ (_ k# + ੱ) ਖ k#:V + ੱ) ਖ (B k#: + ੱ) ਖ (_ k#: .group ਗ ਗ gV @@ -192,9 +192,9 @@ ੱ) ਗ (_ g: .group ਘ - ਘ ghV - ਘ (B gh - @) ਘ (_ gh + ਘ g#V + ਘ (B g# + @) ਘ (_ g# _) ਘ k+V // high tone _) ਘ (B k+ @@ -215,12 +215,12 @@ ੱ) ਚ (_ c: .group ਛ - ਛ chV - ਛ (B ch - @) ਛ (_ ch - ੱ) ਛ ch:V - ੱ) ਛ (B ch: - ੱ) ਛ (_ ch: + ਛ c#V + ਛ (B c# + @) ਛ (_ c# + ੱ) ਛ c#:V + ੱ) ਛ (B c#: + ੱ) ਛ (_ c#: .group ਜ ਜ JV @@ -231,9 +231,9 @@ ੱ) ਜ (_ J: .group ਝ - ਝ JhV - ਝ (B Jh - @) ਝ (_ Jh + ਝ J#V + ਝ (B J# + @) ਝ (_ J# _) ਝ c+V _) ਝ (B c+ @@ -254,12 +254,12 @@ ੱ) ਟ (_ t.: .group ਠ - ਠ th.V - ਠ (B th. - @) ਠ (_ th. - ੱ) ਠ th.:V - ੱ) ਠ (B th.: - ੱ) ਠ (_ th.: + ਠ t.#V + ਠ (B t.# + @) ਠ (_ t.# + ੱ) ਠ t.#:V + ੱ) ਠ (B t.#: + ੱ) ਠ (_ t.#: .group ਡ ਡ d.V @@ -270,9 +270,9 @@ ੱ) ਡ (_ d.: .group ਢ - ਢ dh.V - ਢ (B dh. - @) ਢ (_ dh. + ਢ d.#V + ਢ (B d.# + @) ਢ (_ d.# _) ਢ t.+V _) ਢ (B t. @@ -293,12 +293,12 @@ ੱ) ਤ (_ t: .group ਥ - ਥ thV - ਥ (B th - @) ਥ (_ th - ੱ) ਥ th:V - ੱ) ਥ (B th: - ੱ) ਥ (_ th: + ਥ t#V + ਥ (B t# + @) ਥ (_ t# + ੱ) ਥ t#:V + ੱ) ਥ (B t#: + ੱ) ਥ (_ t#: .group ਦ ਦ dV @@ -309,9 +309,9 @@ ੱ) ਦ (_ d: .group ਧ - ਧ dhV - ਧ (B dh - @) ਧ (_ dh + ਧ d#V + ਧ (B d# + @) ਧ (_ d# _) ਧ t+V _) ਧ (B t+ @@ -332,12 +332,12 @@ ੱ) ਪ (_ p: .group ਫ - ਫ phV - ਫ (B ph - @) ਫ (_ ph - ੱ) ਫ ph:V - ੱ) ਫ (B ph: - ੱ) ਫ (_ ph: + ਫ p#V + ਫ (B p# + @) ਫ (_ p# + ੱ) ਫ p#:V + ੱ) ਫ (B p#: + ੱ) ਫ (_ p#: .group ਬ ਬ bV @@ -348,9 +348,9 @@ ੱ) ਬ (_ b: .group ਭ - ਭ bhV - ਭ (B bh - @) ਭ (_ bh + ਭ b#V + ਭ (B b# + @) ਭ (_ b# _) ਭ p+V _) ਭ (B p+ diff --git a/dictsource/ur_list b/dictsource/ur_list index da4e5c87..1190e7d5 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -38,11 +38,11 @@ ن nu:n و va:O ہ He: -ں ghUnna -ﮨ cho:ti:||He: +ں g#Unna +ﮨ c#o:ti:||He: ھ dO||caSmi:||He: ء HamzaH -ی cho:t.i:||je: +ی c#o:t.i:||je: ے bar.i:||je: ئ h'amza @@ -58,9 +58,9 @@ _2 'do: _3 t'i:n _4 c'a:R _5 p'a:Nc -_6 ch'eh +_6 c#'eh _7 s'a:t -_8 'a:th +_8 'a:t# _9 n'aU _10 d'as _11 gj'a:RaH @@ -70,7 +70,7 @@ _14 c'aUdaH _15 p'andRaH _16 s'o:laH _17 s'atRaH -_18 ath'a:RaH +_18 at#'a:RaH _19 'Unni:s _20 b'i:s _21 Ikk'i:s @@ -78,9 +78,9 @@ _22 ba:'i:s _23 te:'i:s _24 caUb'i:s _25 pacc'i:s -_26 chabb'i:s +_26 c#abb'i:s _27 sat:a:'i:s -_28 ,ath.a:j'i:s +_28 ,at.#a:j'i:s _29 Unt'i:s _30 t'i:s _31 ikVt'i:s @@ -88,7 +88,7 @@ _32 bat:'i:s _33 t'aINt'i:s _34 caUNt'i:s _35 paINt'i:s -_36 chat:'i:s +_36 c#at:'i:s _37 saINt'i:s _38 aRt'i:s _39 Unta:l'i:s @@ -98,7 +98,7 @@ _42 baja:l'i:s _43 te:Nta:l'i:s _44 cava:l'i:s _45 paINta:l'i:s -_46 chIja:l'i:s +_46 c#Ija:l'i:s _47 saINta:l'i:s _48 aRta:l'i:s _49 Unc'a:s @@ -108,29 +108,29 @@ _52 b'a:van _53 t'IRpan _54 c'aUvan _55 p'acpan -_56 ch'appan +_56 c#'appan _57 sat:'a:van -_58 ath'a:van -_59 Uns'ath -_60 s'a:th -_61 'Iksath -_62 b'a:sath -_63 t'IRsath -_64 c'aUsath -_65 p'aINsath -_66 chIj'a:sath -_67 s'aRsath -_68 'aRsath +_58 at#'a:van +_59 Uns'at# +_60 s'a:t# +_61 'Iksat# +_62 b'a:sat# +_63 t'IRsat# +_64 c'aUsat# +_65 p'aINsat# +_66 c#Ij'a:sat# +_67 s'aRsat# +_68 'aRsat# _69 UnH,at:'aR _70 sat:'aR _71 IkHat:'aR _72 baHat:'aR _73 tIHat:'aR _74 caUHat:'aR -_75 pachat:'aR -_76 chIHat:'aR -_77 sathat:'aR -_78 athHat:'aR +_75 pac#at:'aR +_76 c#IHat:'aR +_77 sat#at:'aR +_78 at#Hat:'aR _79 Unna:s'i: _80 ass'i: _81 Ika:s'i: @@ -138,9 +138,9 @@ _82 baja:s'i: _83 tIRa:s'i: _84 caURa:s'i: _85 paca:s'i: -_86 chIja:s'i: +_86 c#Ija:s'i: _87 sat:a:s'i: -_88 atha:s'i: +_88 at#a:s'i: _89 nava:s'i: _90 navv'e: _91 Ikj'a:nve: @@ -148,17 +148,17 @@ _92 b'a:nve: _93 tIT'a:nve: _94 caUR'a:nve: _95 pac'a:nve: -_96 chIj'a:nve: +_96 c#Ij'a:nve: _97 sat:'a:nve: -_98 ath:'a:nve: +_98 at#:'a:nve: _99 nInj'a:nve: _0C s'aU _0M1 Haz'a:R -_0M2 l'a:kh +_0M2 l'a:k# _0M3 kaR'o:R _0M4 'aRab -_0M5 'khaRab +_0M5 'k#aRab _dpt _ISaRI'Ia_ @@ -179,9 +179,9 @@ _dpt _ISaRI'Ia_ کسے k'Ise: اسی 'Isi: اسے 'Ise: -مجھ m'UJh -مجھے m'UJhe: -تجھے t'UJhe: +مجھ m'UJ# +مجھے m'UJ#e: +تجھے t'UJ#e: جن J'In جنھیں J,InH'e:n انھوں ,UnH'o:n @@ -204,8 +204,8 @@ _dpt _ISaRI'Ia_ // Pronunciation exceptions پاکستان p'a:k'i:st'a:n -سندھ s'Indh -کچھ k'Uch +سندھ s'Ind# +کچھ k'Uc# لنکس l'Ink,s لفظ l'afz. سرچ s'aRc @@ -247,8 +247,8 @@ _dpt _ISaRI'Ia_ مصری m'Is.R,i: انتظام ,IntIz.'a:m مختصر m,Uxtas.'aR -پھر ph'IR -پھرا ph'IRa: +پھر p#'IR +پھرا p#'IRa: منتخب m,Unt'ax@b منتقل m,Unt'aqIl نیا n'aja: @@ -267,7 +267,7 @@ _dpt _ISaRI'Ia_ اردو 'URd,u: احتجاجی 'e:Hte:J,a:Ji: احتجاج 'e:HtIJ,a:J -بدھ b'Udh +بدھ b'Ud# تجزیے t,aJz'i:;e: دوست d'o:st زندگی z,Ind'agi: @@ -295,7 +295,7 @@ _dpt _ISaRI'Ia_ گزشتہ gUz'aSta رشتہ R'ISta اخر 'a:xIR -آنکھ 'a:nkh +آنکھ 'a:nk# شکار SIk'a:R جلد J'ald مواد mav'a:d @@ -304,5 +304,5 @@ _dpt _ISaRI'Ia_ شدہ S'Ud,a بغیر baQ'e:R امیدوار Um'i:dva:R -لکھ l'Ikh -لکھئیے l'Ikhj,e: +لکھ l'Ik# +لکھئیے l'Ik#j,e: diff --git a/dictsource/ur_rules b/dictsource/ur_rules index 0ea19cba..0159a8e9 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -100,28 +100,28 @@ _) ای e: .group ب ب bV - بھ bhV - بھ (L01 bh + بھ b#V + بھ (L01 b# ب (L01 b .group پ پ pV - پھ phV + پھ p#V پ (L01 p - پھ (L01 ph + پھ (L01 p# .group ت ت tV - تھ thV + تھ t#V ت (L01 t - تھ (L01 th + تھ (L01 t# .group ٹ ٹ t.V - ٹھ th.V + ٹھ t.#V ٹ (L01 t. - ٹھ (L01 th. + ٹھ (L01 t.# .group ث ث sV @@ -129,16 +129,16 @@ _) ای e: .group ج ج JV - جھ JhV + جھ J#V ج (L01 J - جھ (L01 Jh + جھ (L01 J# .group چ چ cV - چھ chV + چھ c#V چ (L01 c - چھ (L01 ch + چھ (L01 c# .group ح ح HV @@ -151,15 +151,15 @@ _) ای e: .group د د dV - دھ dhV + دھ d#V د (L01 d - دھ (L01 dh + دھ (L01 d# .group ڈ ڈ d.V - ڈھ dh.V + ڈھ d.#V ڈ (L01 d. - ڈھ (L01 dh. + ڈھ (L01 d.# .group ذ ذ DV @@ -199,9 +199,9 @@ _) ای e: .group ط ط tV - طھ thV + طھ t#V ط (L01 t - طھ (L01 th + طھ (L01 t# .group ظ ظ z.V @@ -221,15 +221,15 @@ _) ای e: .group ک ک kV - کھ khV + کھ k#V ک (L01 k - کھ (L01 kh + کھ (L01 k# .group گ گ gV - گھ ghV + گھ g#V گ (L01 g - گھ (L01 gh + گھ (L01 g# .group ل ل lV diff --git a/phsource/ph_malayalam b/phsource/ph_malayalam index 9e77a1bb..47b677d3 100644 --- a/phsource/ph_malayalam +++ b/phsource/ph_malayalam @@ -144,18 +144,3 @@ phoneme d2 // 'rr' sounds like English 'd' endphoneme -phoneme kh2 - vls vel stop - lengthmod 2 - voicingswitch g - Vowelin f1=0 f2=2300 200 300 f3=-150 80 - Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 - IF nextPh(isPause2) THEN - WAV(ustop/k_asp2, 50) - ENDIF - IF nextPh(l) THEN - WAV(ustop/kl) - ENDIF - WAV(ustop/k_asp2, 90) -endphoneme - diff --git a/phsource/ph_s_gaelic b/phsource/ph_s_gaelic index 9f7b4fd4..8bb22d56 100644 --- a/phsource/ph_s_gaelic +++ b/phsource/ph_s_gaelic @@ -9,7 +9,7 @@ phoneme b endphoneme phoneme t - import_phoneme hi/th + import_phoneme hi/t# endphoneme phoneme d diff --git a/phsource/ph_tibetan b/phsource/ph_tibetan index 19281910..ab1bbedd 100644 --- a/phsource/ph_tibetan +++ b/phsource/ph_tibetan @@ -63,7 +63,7 @@ phoneme dz FMT(d/xdz) addWav(ustop/ts2, 140) endphoneme -phoneme tsh +phoneme ts# vls alv afr sibilant voicingswitch dz lengthmod 2 @@ -76,7 +76,7 @@ phoneme tsh endphoneme -phoneme dzh +phoneme dz# vcd alv afr sibilant voicingswitch ts lengthmod 5 diff --git a/phsource/ustop/q2.wav b/phsource/ustop/q2.wav deleted file mode 100644 index 7584f6c7224477d2ca9d9147faf750cb55881b0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5392 zcmWky2Yim#_doaEXS^ek5V2#Ws1TdPrV=8k#wayn)C{evO(?ahv`UR=snl+5eqxj& zRuF2hv=uWXn)$A0+AC1Zu-9r~;dz38X|-`ZTjDGi{5+^c zKS@tw89uNF`d5||l=%!VZX#>pGTE+7b3D_-)oElj+V%zWM-bE<(jgXT6kG}Dc?UbD+J;Loy}H4 z!yp=|?sGEd19}j2)_|S0!N1SA6u4njw5x~+Y(bVQ)3j98RzGJ`;41oYqCMFtF}}4T z?7!^OSeeAri^^CvO8J~kr$53%v5dE{@0%m7>-H5MgA2&N^en5WOjK$rN695JR~TZQ zy_(OqC-PC^3WksrI+UGa4_On|mIjfvxK$+a`aIii!q4$g%*R^fE}2f((>64NoCgJ} zU_Eh@&*Axej_82(U@S4oIl7HLrbFqUD<9mQ;%05wT7pEeVij8@)=K+dTNlI7fD95T{S!`~lF?*0 zJjA_17fX31sXGpb@G*wRd(l5#B&+irZ5&hdK6;+kLhVAc@IC&yIorS0UlwrMis(Zo zDlhcg&N}We*H?~ct)3E2+roT7d5XQjzQcQCJSn5Alup`1HAfwx)^aR!990jBC^K97 zxr zLf%uJiH(m{mm72VzvH;OL@m#^=5n#cc~0mGtnPH*(DTHo`f5i~DxaZ?1Zd zSoJ)a%NtuC8ejS>&t2aWJDv1nWz40$bDVMYbUkwP*Aw((jw0t(ZN6RIx86L;!f~a! z8yD$Q*>t7E86DI>xkSz~hDrRMeauYsY34t8hTpYwX^yg&#VC~>0Ww?|JX9nG7Wp3= zivnqZNj4YpxQo*~&8Ftj^XobC_>(NyFkyV+M@G9{ez!?0D`T z8Fa!mOFcs4uz{5^h_JLSvxdV2 zi})a+fr}JFG^s+{vB}C+1=Qh+LBAt2p)17U7CXUAF_+j|ct`%V*v9tj_tjo-h<_t8 zVJS=#?^(G>h~YX2+@*hKrYt;&bmB=sh}PO_PwEx?QZ2ycpYhZ!^(ReP(K7w##0 z3Rj`XbFA?9Ko9zcHsuFU(VFO7JEQe-3B8u~3p=bVRKAnZsJ^mDcZF6Di*#0H>m7;C z5Np5p7i+Oq$$Qr5E&2%)zt-a&bCls)MJGaYejLB&rM?Vbgn2A5Bv20DLB7z~I(>}X z(QCGxmhoTgm3E}D-9O8mXl=JsN`zuYUZl$?&{1?*1&kt&{hLi zd^3#%}z8gy&aZ8xdRMba<+( zot@~pRb07bQDN00tr)x?7?WX}zBTmM%3G>*D}PWe6S>xUyC5*nv$OECqK2h?12yrS zV|d7s(5B^5-6xzk9FdOE>Kt5aT{rFpdiXo||2EwuLqF-xbf-JVIdfeLU0G@xwl^pE zs(XWc>jI_5AuEo*z}GCt5$o>jYNBsYCec#Nvx@@NeDl3;eP0K*nIG~X(n#5^ZO}i} zt7tovWZD^=;)1m-(9gTaqXssb4}BGi4!xV}TSuO=FtL_jVV9hF+8m6sNAhv}Xa8W& zLthh~A%=-Mq?a=@BsZj5@RZ=E72Xg3Bh+%lD$NzAatU_Ym(7ptGh&6zkojaDTcADG z!*oqXv?AhwZ}VK zmL?RZ6#Ve&kC(&V&MtgerkR5s6`p^c!>j58o` z$#`vSwZ7r=z{&2gboNwftgKRALMr)%XYx+Q@8;q_v31;q^DMhM<_kjmLrXdp=F;sjo_+$6Bo-%O0}&$b$~-?Fdx-?x%eRO_ zJOUn|j|7vQBpOaZb#TL6oQx^BT5J$oL;gk0&rg)PYFaiQI=! zx<=n|3(oAHf^5G%NYx8^tb7|}%PZ$?VUb~=!?XBrz#yU{767r6(a zBoF?LF_51iU$cJnLz1L6cP|Y(={&Cu(Yrb}>-*?&tRP%? zSp0yAWEA-cf95x3pL9-qDs%84Hj!N>*$@R^K)9@sPqOZcO1`ust&8G>=xt^CI{7a6 z^Nh9TI=c;8xE;@9Q<|W3XOUzHUc#+d4eN;VBGcYuF?)vCFA=Xob<&d^Rq84C=mk=n zoRW2TZCR^7upe3htB}`22ke6!l11ZLXBMZF(MHq-_wcA_Afma(bL>5KYhGIiLgRi*@Eq}2{2&hDYH*Ovq&huM-;hVpOLm5@B%(7#o>(gO zi_dW?=%gFjL&nnt_5q7xyJh{-hs2X>&<|!{BDTZZvV+Wms$>^&(%ICa*>oIzA}ix{ zvd8=uL+~q6Ulj1hcHhzqdE{L`YY53M%_=A;9m21(LyE3FV;j{p{V?n_mYJi(ul7ju zH|vH)t%2fS$brS|Ki4(aSS3sL5hG|LKRAD4~)E?0eEt z;&dWj=QHgI)^mF%DX;uR-trFOZy3tzuz92eHV!IelD##P> zMCOvyB#umlELnqAfDq<{H0aoG^xJL$Hs$Ii6%F8f_ zR00$q!w$NPg%KU1VH%kO4e&Sa6hC4DRKRg!3Z8`&(v|EW14ttAKsL0M{rG0t&$mZg zq~i#vLb{WhWEj+dYj_=7%btEHj^;mFM=h67WJmv0TovnZI*cQ2$x-qe8pCy-D?7cP zFa{s;Cw!@>1RA`C)}$qUNHmfTzr#}5e^rBb!Y9IHhki~pkSKaA<0wxcTJ@D+Rx2gx0h3D+?QCQ0_-EKbBBI0xtBS{YeB zg)uM>>%dbuMD~(5@DZ$qWiSkiu`gc1ySM}Qi4FKMG?pHyD^WItJe0OKf=cqc6?~7e z@TIgl0bAlu90}8)qg=Tgop7WhH@mCL`rTUO5TC_WU;)XzsvJTASmmk9wd{jklu-c3ouL0od9!T7;%&S za9Y~68bY84-V!^-Bx|LoX<^QP$4W#{kPH12se@f(SaL*bmKE?gt$Xq zvJBRrej&SQ%HF^m9%uh$rkOL$E7nAt+a7M=J4)64>X+(hb+PJKf|MwFQ~Lh^@6OYB zClM~Xh%LCD)L^rjtcTe}R)ZZNTVR09r)z9tH@Dx}UHJySQevYPc}{N9_N+NOO6$>| z$T(<&$9WvD$`kl1evhw`TuQRUNfVkuThcgclds5MkSp`R4)KA==at1_iM!1hBe{T! zq$&M~&Z2AR1JaMA%6Kspe-LxUG_gs3&IuJ8z)$ceP>JKlB#e9w72rN5%V^zKB#Bj$ zVc8&K>UxQpF>ni_WL#Cr3pgudNSfrbe#X%fnP1}s{86$uVG>uXAWwR<5_u`3L8kPV z0&C@r0TP+_MUE&HG1wkImGT~82Iingu2CgEcH$nqCdW=p$1Eu+2W!jdwp1cvqeSKn zxxbAt9^zn-M4<}#lIM7W_hshG!*}==|CTG?VkDFYkL1Qm@io4}8~>kUrL@hs1^oaS3_;?jw!F>P<&4`>)?10wzp)U7ly9I*Y9ex$S4#W;^_emU z9L06GQQnYDDeWAdl-hIUUhm7@ypbMR4=dpp=q*{hM!@lXDLV>=%Kro8IrNj(f zcFd9&_bR|J!m7J43KSrJQ@M)@l2Pm; z=Z%vb&uCa7_cl$Q^hkNKt-%3Rp}w>`4C=^Fd*~sbPn1^uAf@erGtv*g!Vbw%4wJIF eN=;wDY-wSN)H_b6L;3fYGN)JV1vO z01m-0a@h1?ztNZ{DDVYl;2V68*YPbrz;{@TAMiH5!qb?AnRpIw;#0ha293(55lFqC zLm$`+aA6&Jhc3I+gGpuc{#L@`PLgP^*g*riSA+V9H(%Ek;;zvcH~ce|I(Ar zQk6lJV1@m%hO=g0}taP@{N*>L;~lb8ix;$m?{G?f3yp~&z!*2ab~RX)Tk zxE(HHW3XWw7Ree=3mP&8FIYG`%!Al3aDwn0j*P{#_DWObF+b0z^IZ5FGp)vAh3p4$ z%mjt+SNgJ(@Iki5acmxB$|2HEE|SALH- z*+{;S<)I};iq%$gYnoMG9*4i#aGt};@@eb>u9hh3VGN`~1PkI5l@Mhv+ac4%ZJ7Zr z_)C78f3JL_#;Fac-Jhwf7;1AJ|FlM#d!V9rjvazk{Fr9&W+K+ADRZm<(Nt`dO`)nb zLEEN0lBY$WxNAyZsP3>H!3kEL{RlOAI^@b<%@yK3mQ>;tU2gKIh5g)%;VJ~tn#ks(&ePJv?g`U8ER;S;;%T$1b(C0X09oQCrFwLB!Gu<#4zFe}HH^3r~asnQ|( z>kW(Md%Cb#rLwiwI)MLbF{)dn>x+$FtqpiZ#N$?Q5zc>*j)mbJ*&OG|uceM1SvniV z-}1eDBtNM9p=FQD&%up2U9hN3ESlrd~Go5BY3?d$;`!`AUCa0sTDON~Ch zYO)zGtKC(D_;T0@o8)?{lTqIclUJ}V96=L*WLtOxlGrhM&Wh7-d5iP|GG2+&`Vw!e zu%F?D3>7uaHD+zO3;VIIu!5ClKQV!4V?29hn%k^>`&cJ%q*NxpJ>ro31N{0UOuxu`G%EfpR216&NQjVjPF7AxqR2ovrm^vRTp`YjtI5$~ayQ9-s=% z!w{vsFXlZ=h}LElwx zBWot>WV=Or(Mes$z7}qCGJdN(gG8YTVTJ4EeGbps;*0K%u*tu3z%2h;vW>aa*V$91 zu$5DWWb(5~Be*_Nr%{1se~1LR_v4T;KnZI_zM z3ZMi##V&oa>hdu(!Y}1kbQ5={;vo2e9p|yo2`1~63-{z-G~2_0qQOOXjOqSkT|TB+ z&x!p#@t$X?dy~G|dTpkNe@O54X^Ct++=Dl)y@)nLeV44cFkSgeQ?)y`3F=zyPu`8k zN>e7wT2O_*QNFj^9S8jO+7Ihb@@jZ;)l!bOypr-x+vbms$CzR{toqgg?}DNzbG6#k zIoRe@Cz7Ofa)2b3G=!T{D7 zzBImZC+I1##&%6z&8x#-%qMP%k5(a$;`3O0_CLN=J&e zdPPQB{mq(2J9CoNjgL`6?8mgmbjxK*6x4(x=2u1uvV1-HMJ-2tt~TJcV2O3g@c3q# zbH!z{9=~u8d%}~*4h73!@su1RN{Kj`qDnRmkrzK_-8Hz;LF|&n zvX+!GSl-2fRv3AOaqJ!+#_z#<=*X8Snd~AS79HdX+$NjIaH|={fwgEwsg~1xEU|dgHvh_q2IWZn7QMZaV7lrAkY4yDufLrH6}Hb)##@g19#yeiI%}SD$Q-zcuD0n4^TQ_xU6lo zF(W*ez0JgZS7C5)P=?YG6|;wLXu-^niA6zHgtE#J;A-y|=eP)4b>`mg$@Go1s(_{) zS8A~J@(>@SRaf7LK}L6RM;+qGwbfK3)MQ(hwn6Db8~T|eV54K3Ex_1T^uh2rIyru} z>Uc_;C)i6&G9r8vL~H(vH^XbzfKU1Z56xt~h8YiE@i-QOl`#oyGSR%D?-3#J2R65^ z!Cn468|QO+`(li8SRE(Iik%q3SKw50w&`WvFr7upD97*cP)ie4l|YI`s#quV3g#e4 zcU@O1tC6@)4b~nRjr0qijcl4YZ8h=TS3c9`sTIxZ=6PJEIn`HC8~wGT_CK{I*ccb$ z42Uw`nU#c48fdBNB-PLM$dRYU;VXTPxxv_DP7+>r*jCZ8#Xepgq$hX=xsR|S$Rgwm zZ0Qb7n`~@Y_eL~G2PKf@fq*DhIv)CCGT-mt)}c} z`{fa62{YMBvxza=mn*m1MBwS*WLIYXudmWF8yB6?6U_n2ZAcPR^caluzi<1^sO|lq zdBPbOFx4KTZGs+rr7yuKW!_?6;ZOJnOU5)mmvgSOi}$VZqfc7@7C(U6_GkVn_ADix zZDT2-ztPxTFTZ@zF}X1CYDj6v_tAjdx5=J{oP9RUG+@x zzBg>*sW!pZ-tSxc&svK7Twm$2+!@9K@q~Qu9Qy!u1WYm}`R;lS8UdDzH`L18zqUVA zhw*p_wi3O=ym!qOYH#&xTMN70m8BNQO0ombL&JSAFTzt=JsA)g*xPm4c81+I(%j+R zxfZbJe4w)1*3sc_U&AVhcScF`fZ0&|jBS+@>K3&RKL(d&X|cdeGV6+Jkk1@E3+|%} z{+7qYch&~$wwNT}<1Y}-Ho#F#lFOvOoIqm#MzdbDZYy>R_E3~lmIYJ9`Hp&?P}KYZIf^#nIYKXQ zAEK=E6neh49}8s8ZN7fEj|JNwdV-2yd)6y{jzI0UGF!QKvKBf5$W)qLfF{gExqo}(>b!D<(LCO3Hx6vyW}iks@|{I&=#ZIlX8P8Qfz3;!!KZ@|1Q4Y3d@i5)RxE8j$)cQ+1Cfx@@Sc6tn$7x zhd_*6CQ_{>)>Y#}QNqVs-d^_LutBAR0$M5OWOEaJ-+M+{%b4Byng8OF2Z^tr61+AWXT-k41Ym0>8p4mnF^p@KEfYGIrOBO5BKFoU6$r|FUZi&>kD5Oy$Rg0rkDf0i&-D_7iFFG!U(~^ zkcr2PMP?h(jqhf2*kLK)1_ZE0B2hdSdsrAh%)($FE6*$PWc;2!PTrM&WHs4Jc8OKx z1(Y8y0t?bu9_ztkDc9M=O0feZ=bkfY^2vIB`KEHf6&t$fT^Z z3_A_YSO)BcZg3gi!UWcx?WS>OiB)Ie0tom3xx_CQ3t|Y2B@j#dz&5 z>*?5!iAHzl?7*nN$?6VM%MbJZA$0AucAf2D)fF!j#PlTFbZ047Pe;DCl{{gvcF2~m zlvkI+D1J-*!XB-~vz9EM&jhcpWpOL-d?VF-R~zO(Ae z?lQ(S^*-VyK84%(7ev5tOcFl|e{oYhka@V0Bz~E_VW(g%?w3zx9EK4~DzNXUbphK- zb4;0t6{)IGmh4gm7Qx2BW4wf&=%y247#xNg>O{ZB!{4 z2K#Y0#bIxaJ0I(P=pj?^vMHO#|m)Z8ii^mR$*&!3b~0+vwNr z3c?))Y>YK2zlBV}Jvd4~fW4hLfo}T?(bRBTJ+!{8lI3UqvAg%4mC* zIHr834)9y0MDoda98}iA$}5ceFfVTaYvtF-`KR1$w6k>MCoj|Iu>`-SeovJ>qQGh* z3n{0cB3JOKwg9y=dxTHP5xgdUh4Y{`JD^nHP1p`XySk_^a%4k3NUg6# z!!D|nl)`QpjO3@WJC4B(q?7OEMv6W<%3+jqZkON6HdqDQNy;;2No<0H#6+=7Mng8< zl$)u(aFMD=$#R9vmv`_E>|(3f1gdN;1cNNg1*$U4WnMT*9tl}pUYRU}N(}DF9?<+K z$bw^JO;Sv~IvCoJ}XJN>!OM z>=LxVwYU}YmWaej8vEghN%#kn7|KNFsUvixsgt-SMDof_t$$bjB+3y67dH z_>ih=r?8J~E*gnHMH|_NGT`G%Qy zA%Hw&A`5|m@~l_@$ZoTR@&|ENuDH}MQVu;17ysDb0L z9aSR^p-Pp7r!X57NMTc16TSkzfNy1I{D@_F8b3mwyd4x^9_8SE@EPj{Cvh3};Hms4 zHb)vF4EDoq_Lsa2*D;l)QARnM;)3@0ubeOIQf;sRi_nW*paYCYC$xqJq+jJpA2?eL zr{O!&sP@ncMiSan(GTb08GJ&uM-$_rIc4}E@Bz2ua$G_+$Y)fWOsBsa6n&(Te$2<| zIF_)#M=e|ND79R}*_ce&Y@#~AYTQYYM-Jh8?!OsMh^5-(W=NqZCXwQm&a~@r@)m7K zdxn$74X4UNXR29_pEl*mXIzDHe#s@LZK?%T&FcHs^2xD znT;s289;WW1D&QDVG~W`atM7jQZdavK#L{;eLO6!x(U4BzPrWs0#|SV`Vi2`Af=C+O z8NQ|!KBK2lsxIo7OSko-8HGg+2CN{2dl0^(iAjA((;3M`Czj`vbTq1Gzao}gq`L7Rn2Kld4lyQ$R=-9Z@==xR z81+3N6tiix3SPqP8P$y>2W; z`ma*${vn}WOqi?imZXtMyKbc&Q%M3>h*$S$zn!>&(78dUcu9!dqE_Q)lNHlbIa+Bwtb)7nFIlKnFq!b12y-Bb5M4yS7tq^)Auy1*Ih1gYC2R+hCe|VS zDNXtqK-}~vR{2v+Ba$@glOBK4p_23*NN2l3sGg@?^XNT<9SX6Ku&@)aEjn)qji^Cu z)g_sIl4xy`izg1zUT1&0h~)EBme*a From 8238f8b09b34b55401b56fe3977ae94b1586fe1d Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 11 Mar 2013 21:28:06 +0000 Subject: [PATCH 18/24] [1.46.46] Fix: SAPI5 version, pitch not reset correctly after indicating capital letter. Language changes: ga, nl, pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@312 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/bg_list | 4 + dictsource/dict_phonemes | 10 +- dictsource/ga_list | 15 +- dictsource/ga_rules | 776 +++++++++++++++++++++------------------ dictsource/hu_list | 1 + dictsource/hu_rules | 1 + dictsource/nl_list | 8 +- dictsource/nl_rules | 16 +- dictsource/pt_list | 28 +- dictsource/pt_rules | 71 ++-- phsource/compile_report | 27 +- phsource/n/_n | Bin 642 -> 814 bytes phsource/n/_nr | Bin 643 -> 815 bytes phsource/n/n@ | Bin 1310 -> 1654 bytes phsource/n/na | Bin 1324 -> 1668 bytes phsource/n/ne | Bin 1328 -> 1672 bytes phsource/n/ni | Bin 1292 -> 1636 bytes phsource/n/no | Bin 1248 -> 1592 bytes phsource/n/nr@ | Bin 1655 -> 1655 bytes phsource/n/nra | Bin 1669 -> 1669 bytes phsource/n/nre | Bin 1673 -> 1673 bytes phsource/n/nri | Bin 1637 -> 1637 bytes phsource/n/nro | Bin 1593 -> 1593 bytes phsource/n/nru | Bin 1667 -> 1667 bytes phsource/n/nu | Bin 1322 -> 1666 bytes phsource/ph_consonants | 17 + phsource/ph_georgian | 4 +- phsource/ph_hindi | 2 +- phsource/ph_portugal | 2 - phsource/ph_pt_brazil | 16 + phsource/phonemes | 13 +- src/numbers.cpp | 92 ++--- src/phonemelist.cpp | 38 +- src/prosodydisplay.cpp | 8 +- src/synthdata.cpp | 8 +- src/synthesize.cpp | 1 - src/synthesize.h | 3 +- src/tr_languages.cpp | 1 + src/translate.cpp | 2 +- src/translate.h | 1 + src/voices.cpp | 14 +- src/wavegen.cpp | 33 +- 42 files changed, 697 insertions(+), 515 deletions(-) diff --git a/dictsource/bg_list b/dictsource/bg_list index 132080a0..a2311072 100755 --- a/dictsource/bg_list +++ b/dictsource/bg_list @@ -48,6 +48,10 @@ _у u v _^_EN // not Roman number x _^_EN // not Roman number +_?? znak +_?A b'ukva + + // symbols % prots'ent $max3 + plus $max3 diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 4b4b295b..1b1cbc41 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -68,7 +68,7 @@ r R R3 s S t T tS v w x z Z -Dictionary hu_dict 2013-03-10 +Dictionary hu_dict 2013-03-11 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -331,7 +331,7 @@ k l m n p R s S t tS v w x -Dictionary nl_dict 2013-03-05 +Dictionary nl_dict 2013-03-11 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -379,7 +379,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-10 +Dictionary pt_dict 2013-03-11 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -616,7 +616,7 @@ s S s. t T t# t. t.# v w x z Z z. -Dictionary bg_dict 2012-07-15 +Dictionary bg_dict 2013-03-11 @ a e i o u @@ -885,7 +885,7 @@ n. n^ p p# r r. s S s. t t# t. t.# v w z -Dictionary ga_dict 2013-03-08 +Dictionary ga_dict 2013-03-11 0 0# @ a a# A: aI aI# aU aU# e E E# e: i I diff --git a/dictsource/ga_list b/dictsource/ga_list index b888abdf..c1e3da64 100755 --- a/dictsource/ga_list +++ b/dictsource/ga_list @@ -9,25 +9,26 @@ // precede by _ to distinguish from pronunciation as a language word _a eI -b bi: +b bi: $atend +?1 bh v // eclipsis c si: -d di: +d di: $atend e i: f Ef -g dZi: -h eItS +g dZi: $atend +h eItS $atend _i aI j dZeI k keI l El -m Em -n En +m Em $atend +n En $atend _o oU p pi: q kju: r ar s Es -t ti: +t ti: $atend u ju: v vi: w d'O#b@lju: diff --git a/dictsource/ga_rules b/dictsource/ga_rules index 04b8ddc2..af166ccb 100755 --- a/dictsource/ga_rules +++ b/dictsource/ga_rules @@ -1,430 +1,492 @@ -// translation rules for Irish Gaeilge + +// translation rules for Irish Gaeilge // This file is UTF-8 encoded // written by Ronan McGuirk January 2013 // Version 2.5B - +// Conditional rules +// ?1 allow eclipsis as 2 separate words .L01 e i é í // slender vowels .L02 c ch d g gh n s // following ea gets ; sounds -.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid +.L03 b bh mb c ch f m mh dh // used for words likemuir or cuid .L04 b bh mb // for words like beag .L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a .L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h -.L07 b c g ch bh gh mb +.L07 b c g ch bh gh mb .L08 lc ll nt bhse // for words like cailc .L09 cl cr chr f -.L10 c ch p ph gl ghl -.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai +.L10 c ch p ph gl ghl +.L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai .L12 á é ó eo ua // when followed by i -.L13 oc omb +.L13 oc omb .L14 río dún gnío // followed with mh .L15 c ch f m d dh g gc gh mh // aoi following .L16 b c bh ch gr ghr // for inn word ending -.L17 l le li niste nn -.L18 n nt nte neann neadh ntear nim nfear nfinn -.L19 na nea ra rea la llea arga // word endings with silent dh +.L17 l le li niste nn +.L18 n nt nte neann neadh ntear nim nfear nfinn +.L19 na nea ra rea la llea arga // word endings with silent dh .L20 eo eoir eá eabh io iu iú // slender m .L21 ll nn ndán nntán .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine -.L23 ea eo i +.L23 ea eo i .L24 b mb bh g gh p ph bp m mh + .group a - a 0# - a (_ @ - adh (a aI // words like radharc - adh (C aI - abht aU#t[ - amhr aUr // words like amhras - K) amhl aUl - abhra aUr@ // words like slabhra - aghaidh aIg - t) abhair u:@r - th) abhair u:@r - t) abhar u:@r - th) abhar u:@r - _) an (sL01 @n - _) an (- 0n // an prefix - é) a @ // words like féach - X) a (nn_ aU# - X) a (ll_ aU# - abha aU@ - am (pla aUm - ama(_ aU#m@ - athair 'ah@r - _) amh aU -agha aI@ - agh (d aI - agh (s aI - _) ath 0h + a 0# + a (_ @ + adh (a aI // words like radharc + adh (C aI + abht aU#t[ + amhr aUr // words like amhras + K) amhl aUl + abhra aUr@ // words like slabhra + aghaidh aIg + t) abhair u:@r + th) abhair u:@r + t) abhar u:@r + th) abhar u:@r + _) an (sL01 @n + _) an (- 0n // an prefix + é) a @ // words like féach + X) a (nn_ aU# + X) a (ll_ aU# + abha aU@ + am (pla aUm + ama (_ aU#m@ + athair 'ah@r + _) amh aU + agha aI@ + agh (d aI + agh (s aI + _) ath 0h - ai (m_ @ - aí i: - aoi @i: - _) aoi i: - ath) aoi (r 'i:@ - r) aoi (nín 'e:@ - aoicht (_ 'i:@xt[ - C) ao (C @e:@ - _L24) ao (C w'e:@ - C) ao (th_ @e: - b) ao (++ we:@ - b) ao (th_++ we: - ao @e - _) ao e: - ae e: - amhna (_ aUn@ + ai (m_ @ + aí i: + aoi @i: + _) aoi i: + ath) aoi (r 'i:@ + r) aoi (nín 'e:@ + aoicht (_ 'i:@xt[ + C) ao (C @e:@ + _L24) ao (C w'e:@ + C) ao (th_ @e: + b) ao (++ we:@ + b) ao (th_++ we: + ao @e + _) ao e: + ae e: + amhna (_ aUn@ + .group á - á A: - @) á ,A: - ádh A: - áthair (_ A:h@r - áthar A:h@r - ái (p A: - áinig A:nIg - ái 'A:i + á A: + @) á ,A: + ádh A: + áthair (_ A:h@r + áthar A:h@r + ái (p A: + áinig A:nIg + ái 'A:i + + .group ai - ai a# - L04) ai (L17 0# - aile (_ '0l;E // words like baile - Xc) ai (l '0# - ch) ai (l '0# - m) ai (n 0# - c) ai (th 0# - ch) ai (th 0# - ai (d 0# - p) ai (l 0# - @) ai (L11_ I - ai (L08+ aI# - c) ai (l_ I - ai (msi 'aI // words like aimsir - _L04) ai (L18_++ u1'I//words like bain - c) ai (t_ u1'I - s) ai (bh E - aighre aIr@ - X) aigh 'aI - aigh aI# L04) aill (_ wi:l - aing (_ Ing + ai a# + L04) ai (L17 0# + aile (_ '0l;E // words like baile + Xc) ai (l '0# + ch) ai (l '0# + m) ai (n 0# + c) ai (th 0# + ch) ai (th 0# + ai (d 0# + p) ai (l 0# + @) ai (L11_ I + ai (L08+ aI# + c) ai (l_ I + ai (msi 'aI // words like aimsir + _L04) ai (L18_++ u1'I//words like bain + c) ai (t_ u1'I + s) ai (bh E + aighre aIr@ + X) aigh 'aI + aigh aI# L04) aill (_ wi:l + aing (_ Ing + + .group b - b b // broad - L01) b b; // slender - b (L22 bj //slender - bh v // broad - bh (_ vv - bh (L22 vj // slender - L01) bh v - _) bhf v /urú broad - _) bhf (L22 v; // urú slender - _) bp b //urú broad - _) bp (L01 b; // urú slender - a) bh (a U// for example cabhair - ear) bha u: // words like Cearbhall - bhfaigh v'aI + b b // broad + L01) b b; // slender + b (L22 bj //slender + bh v // broad + bh (_ vv + bh (L22 vj // slender + L01) bh v +?1 _m_) b (@ + _) bhf v // urú broad + _) bhf (L22 v; // urú slender + _) bp b // urú broad + _) bp (L01 b; // urú slender +?1 _) bh (_f v // urú broad +?1 _) bh (_fL22 v; // urú slender +?1 _) b (_p b // urú broad +?1 _) b (_pL01 b; // urú slender + a) bh (a U // for example cabhair + ear) bha u: // words like Cearbhall + bhfaigh v'aI + .group c - c k - c (L01 k; // slender - ch x - ch (L01 C; - ch (é+ C; - ch (ei+ x; - _) cabhr k'aUr - _) chabhr x'aUr + c k + c (L01 k; // slender + ch x + ch (L01 C; + ch (é+ C; + ch (ei+ x; +?1 _g_) c (@ +?1 _g_) c (L01 + _) cabhr k'aUr + _) chabhr x'aUr + .group d - d d[ // broad - L01) d dZ // slender - d (L22 dZ //slender - d (L01 d; //slender - i) d (i dZ - dh Q // broad - dh (ui Q //broad - dh (ao Q //broad - dh (L01 j // slender - _) dt d[ //broad urú - _) dt (L01 dZ // slender urú - _) d' (@P2 d - i) dh (_ g - a) dh (_ X - o) dh (_ X - L19) dh (_ // silent dh at wrd end - Va) dh (_+ - deartháir dr@h'A:r - dheartháir gr@h'A:r - deirfiúr d;r@f'u:r - dheirfiúr g;r@f'u:r + d d[ // broad + L01) d dZ // slender + d (L22 dZ // slender + d (L01 d; // slender + i) d (i dZ +?1 _n_) d (@ + dh Q // broad + dh (ui Q // broad + dh (ao Q // broad + dh (L01 j // slender + _) dt d[ // broad urú + _) dt (L01 dZ // slender urú +?1 _) d (_t d[ +?1 _) d (_tL01 dZ + _) d' (@P2 d + i) dh (_ g + a) dh (_ X + o) dh (_ X + L19) dh (_ // silent dh at wrd end + Va) dh (_+ + deartháir dr@h'A:r + dheartháir gr@h'A:r + deirfiúr d;r@f'u:r + dheirfiúr g;r@f'u:r + .group e - e E# - eá A: - ei E - eidh (C aI - r) ei (m aI - eighea aI - eighea aI - eigh aI - - - eo o: - eogh o: - d) eo (ch O# - _) eo (ch O# - s) eo (_ @ + e E# + eá A: + ei E + eidh (C aI + r) ei (m aI + eighea aI + eighea aI + eigh aI + eo o: + eogh o: + d) eo (ch O# + _) eo (ch O# + s) eo (_ @ + + .group é - é 'e: - éi 'e: - _) éi (rig aI // words like éirigh - _) éi (rí aI // words like éirí - _) éireoidh aIro:Ig - éacs e:@ks + é 'e: + éi 'e: + _) éi (rig aI // words like éirigh + _) éi (rí aI // words like éirí + _) éireoidh aIro:Ig + éacs e:@ks + + .group ea - ea a# - X) ea (L21_ aU - ea (ltaine aU - g) ea (ll aU -X) ea (ch 0 - _L04) ea (g @ - _L04) ea (dh_ @ - _L04) eagn @gn - L04) eaga (_ @g@ - eaghl aIl - eabhra aUr@ // words like Feabhra - eanbhean 'an@v,an - eadhb aIb + ea a# + X) ea (L21_ aU + ea (ltaine aU + g) ea (ll aU + X) ea (ch 0 + _L04) ea (g @ + _L04) ea (dh_ @ + _L04) eagn @gn + L04) eaga (_ @g@ + eaghl aIl + eabhra aUr@ // words like Feabhra + eanbhean 'an@v,an + eadhb aIb + .group f - f f // broad - f (L22 f; // slender - fh //silent - fh (éin_ h - fh (L22 ; //slender - @) f (L06_ h + f f // broad + f (L22 f; // slender + fh // silent + fh (éin_ h + fh (L22 ; // slender + @) f (L06_ h +?1 _bh_) f (@ +?1 _bh_) f (L22 ; + .group g - g g // broad - g (L01 g; // slender - _) gh Q" - _) gh (L01 Q"j - _) gc g // urú broad - _) gc (L01 g; // urú slender - i) gh (_ g - @C) gh (@ X - _) gn g@n - gh(n X@ - gheobh j'o: - gabh gaU + g g // broad + g (L01 g; // slender +?1 _n_) g (@ + _) gh Q" + _) gh (L01 Q"j + _) gc g // urú broad + _) gc (L01 g; // urú slender +?1 _) g (_c g // urú broad +?1 _) g (_cL01 g; // urú slender + i) gh (_ g + @C) gh (@ X + _) gn g@n + gh (n X@ + gheobh j'o: + gabh gaU + + .group h - h h // silent + h h // silent + .group i - i I - _) i I - ia i@ - ia (tha i: - io O# - _) io (nadh u:// words like ionadh - _pr) io (n u: - L16) inn (_ i:n - iai i:i - impeall i:mp@l - io (s I //words like fios and liosta - L12) i i // non syllabic short i after long vowel - iú u: - m) i (d_ i: // verb ending - -.group k - k k + i I + _) i I + ia i@ + ia (tha i: + io O# + _) io (nadh u:// words like ionadh + _pr) io (n u: + L16) inn (_ i:n + iai i:i + impeall i:mp@l + io (s I //words like fios and liosta + L12) i i // non syllabic short i after long vowel + iú u: + m) i (d_ i: // verb ending + +.group í + í 'i: + + .group l - l l // broad - L01) l ( l; // slender - l (L23 l; //slender - ll l - ll (L23 l; - l (g l@ - l (b l@ + l l // broad + L01) l l; // slender + l (L23 l; //slender + ll l + ll (L23 l; + l (g l@ + l (b l@ + + .group m - m m // broad - m (L20 m; //slender - mh v - mh (L20 v; // slender - _) mb m //urú - _) mb (L22 m; // urú slender - _) m (n m@// words like mná - L14) mh v - _) mh (n v@ - léir) mheas vas - r) m @m // words like gorm + m m // broad + m (L20 m; //slender + mh v + mh (L20 v; // slender + _) mb m // urú + _) mb (L22 m; // urú slender +?1 _) m (_b m // urú +?1 _) m (_bL22 m; // urú slender + _) m (n m@// words like mná + L14) mh v + _) mh (n v@ + léir) mheas vas + r) m @m // words like gorm + .group n - n n // broad - n (L01 n; // slender - _) nd n // urú - _) nd (L01 n; // urú slender - nn n - nn (L01 n; // slender - n (b n@ - n (m n@ - n (bh n@ n(ch n@ - c) n @n - ch) n @n + n n // broad + n (L01 n; // slender +?1 _) n (_L01 n; + _) nd n // urú + _) nd (L01 n; // urú slender + _) ng n + _) ng (L01 n; +?1 _) n (_d n // urú +?1 _) n (_dL01 n; // urú slender +?1 _) n (_g n +?1 _) n (_gL01 n; + nn n + nn (L01 n; // slender + n (b n@ + n (m n@ + n (bh n@ + n (ch n@ + c) n @n + ch) n @n + + .group o - o O# - _) o 'O - C) o (cht_ 'O - orn (_ 'Or@n + o O# + _) o 'O + C) o (cht_ 'O + orn (_ 'Or@n - _C) omh o: - _CC) omh o: - omha o:@ - omhai o:@ - o (ll_ aU - C) o (nn_ aU - r) o (nn_ O# - C) ogh aU - omhan(_ aU@n - omhain (_ aUIn - odha aU - opaic @pIk - C) odh (_ o: - odl (a O#l - oí i: + _C) omh o: + _CC) omh o: + omha o:@ + omhai o:@ + o (ll_ aU + C) o (nn_ aU + r) o (nn_ O# + C) ogh aU + omhan (_ aU@n + omhain (_ aUIn + odha aU + opaic @pIk + C) odh (_ o: + odl (a O#l + oí i: + .group ó - ó 'o: - ómhai o:@ + ó 'o: + ómhai o:@ + .group oi - oi O - _L15) oi (+ @'I - _) oi (b I - oi (de I - h) oi (b I - _) oi (r I - r) oi I - l) oi (n I - f) oi (lC aI - l) oi (g I - fh) oi (lC aI - s) oi (ls aI# - c) oi (c aI# - oi (nnío @ - oi (mis @ - ois (++ O#S - oill w'i:l - _) oi (leá 'I - oidh aI - oir (_ 'ERR - oigh (ea aI -.group p - p p // broad - ph f //broad - p (L22 p; //slender - ph (L20 f; // slender + oi O + _L15) oi (+ @'I + _) oi (b I + oi (de I + h) oi (b I + _) oi (r I + r) oi I + l) oi (n I + f) oi (lC aI + l) oi (g I + fh) oi (lC aI + s) oi (ls aI# + c) oi (c aI# + oi (nnío @ + oi (mis @ + ois (++ O#S + oill w'i:l + _) oi (leá 'I + oidh aI + oir (_ 'ERR + oigh (ea aI + + +.group p + p p // broad + ph f // broad + p (L22 p; // slender + ph (L20 f; // slender +?1 _b_) p (@ -.group q - q k - qu k .group r - r r // broad - L01) r R // slender - _) r (L01 R - L12i) r (e_ Z - L12i) r (t_ Z - rr R - rg r@g -L01) rg R@g // slender - r (bh r@ - ríomh ri:@v - s) r (A R - _) ramh raU + r r // broad + L01) r R // slender + _) r (L01 R + L12i) r (e_ Z + L12i) r (t_ Z + rr R + rg r@g + L01) rg R@g // slender + r (bh r@ + ríomh ri:@v + s) r (A R + _) ramh raU + .group s - s s // broad - L01) s S // slender - s (L01 S // slender - s (cL01 S - s (CCL01 S // slender - s (pCé s // broad - sh h - sh (CL01 h - sh (L01 h; - s (lL01 S + s s // broad + L01) s S // slender + s (L01 S // slender + s (cL01 S + s (CCL01 S // slender + s (pCé s // broad +?1 _t_) s (@ + sh h + sh (CL01 h + sh (L01 h; + s (lL01 S + .group t - t t[ // broad - L01) t c // slender - t (í++n tS //slender - t (eo++ tS - t (L01 c // slender - L01C) t tS //slender after consonant - t (CL01 tS // slender with following consonant before vowels - th h - th (L01 h; - L01C) th h - _) ts t[ //eclipsis broad - _) ts (L01 t; // eclipsis slender - L01) th h - taine (_ t[In%E - ao) th (_ - thne (_ h@nE - A) th (_ // silent th at word end + t t[ // broad + L01) t c // slender + t (í++n tS // slender + t (eo++ tS + t (L01 c // slender +?1 _) t (_L01 c + L01C) t tS // slender after consonant + t (CL01 tS // slender with following consonant before vowels +?1 _d_) t (@ + th h + th (L01 h; + L01C) th h + _) ts t[ // eclipsis broad + _) ts (L01 t; // eclipsis slender +?1 _) t (_s t[ // eclipsis broad +?1 _) t (_sL01 t; // eclipsis slender + L01) th h + taine (_ t[In%E + ao) th (_ + thne (_ h@nE + A) th (_ // silent th at word end + .group u - u U# - ua u@ - uai u@ - uai (g ui - uai (d ui - uá u:'A: - ui I - uinn (_ 'i:n - uinti U#'i:ntI - _b) uí wi: - _bh) uí wi: - g) uí wi: - umh u: - L03) ui @I - _d) u (l_ O# - g) ui (gh_ @i: - gh) ui (gh_ @i: - uí i: - uachai 'ux@ -.group ú - ú u: - únmh u:nv + u U# + ua u@ + uai u@ + uai (g ui + uai (d ui + uá u:'A: + ui I + uinn (_ 'i:n + uinti U#'i:ntI + _b) uí wi: + _bh) uí wi: + g) uí wi: + umh u: + L03) ui @I + _d) u (l_ O# + g) ui (gh_ @i: + gh) ui (gh_ @i: + uí i: + uachai 'ux@ - úi (r u: - + +.group ú + ú u: + únmh u:nv + + úi (r u: + + +// words which contain j k q v w x y z, speak as English .group j - j dZ - + j _^_EN + +.group k + k _^_EN + .group q - q k - qu (A kw + q _^_EN .group v - v v - + v _^_EN + .group w - w w - + w _^_EN + .group x - x ks - _) x z - + x _^_EN + .group y - y (A j - _A) y j - y i - + y _^_EN + .group z - z z + z _^_EN + + -.group - í 'i: - diff --git a/dictsource/hu_list b/dictsource/hu_list index e7b22828..8d020ce0 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -5419,6 +5419,7 @@ _″ duplA|ApostR2o:f ≠ nEmEJEnlY: _ˇ lEfEle:n^i:l _¡ AlSo:indEks +_braille bR2Ail:E // Alphabets diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 350cb7e9..0079efab 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -1166,6 +1166,7 @@ _tetszé) s S körö) s (szeg S kolbászo) s S feldolgozá) s S +_ki) s (szín S .group ss ssz ss2 diff --git a/dictsource/nl_list b/dictsource/nl_list index 4bca6835..26c5dfa1 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -1399,6 +1399,7 @@ vondel $alt accessoire aksEsw'ar@ accessoires aksEsw'ar@s actiepunt Aksip8nt +adhesie Ath'e:zi agenda $2 aldus Ald'8s alles Al@s @@ -1409,7 +1410,6 @@ armand _^_FR augustus VUQ'8st8s bacterie bAkt'I:ri banengids $alt3 -bascule $2 beha be:_h'a: beige bEZ@ benard b@nArt @@ -1438,15 +1438,16 @@ chassis SAs'i chat tSEt check tSEk chiffon Sif'On +cohesie $2 contour ko:nt'ur controle $2 coureur ku:r'Y:r crèches krES@s damascering damA;s'e:rIN december $2 +desillusie dEsIlyzi dieet $2 diesel diz@l -discipline $3 //discussie $2 divers div'Ers diftongering dIft,ON'e:rIN @@ -1456,7 +1457,9 @@ eensgelijks e:nsQ@l'EIks elfstedentocht ,Elf'ste:d@ntoQt embouchuur A~buS'yr // embouchure enorm $2 +erosie e:r'o:zi eucharistie $4 +explosie $2 februari fe:bry'a:ri fiche fiS@ franchise frA'Si:z@ @@ -1474,6 +1477,7 @@ ingevolge $3 ingrediënt $4 ingenieur Inzj@nj'Y:r informatie $3 +invasie $2 januari $3 kadaster $2 mangat $alt3 diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 655f8a62..288abacc 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -254,12 +254,14 @@ @) es (_S2qd 'Es // double the previous vowel @) es (_$w_alt2S1 s // just remove 's' KAC) es (_S2e @s + es (ie_ e:z @) essen (_S5qd 'Es@n @) eres (_S4qd @r'Es @) eressen (_S7sq @r'Es@n @) etten (_S3 @n @) es (_$p_alt @s // for wors which end on [@] with multiple on 's'. - + @) esisch 'e:zis + euille @'y eum (_$w_alt 'e:8m @mus) eum (_ ,e:8m // compounds @@ -370,6 +372,7 @@ m) ie (_ 'i p) ie (_ 'i ss) ie (_ =i + s) ië (_ =i@ ieus (_ ij'Y:s ieuze (_ ij'Y:z@ ieuzer (_ ij'Y:z@r @@ -393,6 +396,9 @@ ie (CtjeX_ 'i ie (ren_ 'i ie (rd_ 'i + iën (_ 'i@n + CAns) ie (_ =i + CAss) ie (_ =i @) ig (_S2dq =@x @) ige (_S3dq =@Q@ @) igen (_ =@Q@n @@ -409,6 +415,9 @@ &) iko (_ =iko: _) in (C@P2 'In // _) in (gP2 'In + _) in (do In + ine (_ 'in@ + ines (_ 'in@s io (nage iO io (de_ i'o: iodes (_ i'o:d@s @@ -532,7 +541,6 @@ _) inn (@P2 'I // ?? inneren pl) oi (t v#A c) oi (ffu v#A pr) o (gram o: - _) on (@P2 %On oo (X 'o: oon 'o:n // in compounds, eg. telefoongesprek oo (C_ 'o: @@ -555,6 +563,7 @@ _) inn (@P2 'I // ?? inneren .group on + _) on (@P2 %On _) onaan (@P5 On'a:n _) onder (@P5 'Ond@r _) onge (@P4 ,OnQ@ @@ -579,6 +588,7 @@ _) inn (@P2 'I // ?? inneren + .group p p p p) p @@ -653,6 +663,7 @@ _) inn (@P2 'I // ?? inneren @) si (o S A) si (o Z @) ssi (o S + CAr) sie (_ =zi _) standaard (@P9 st'Anda:rt @) straat (_S6 stra:t @@ -727,6 +738,7 @@ _) inn (@P2 'I // ?? inneren uw (_ yU _) uit (@P3 'Wyt + uul (_ 'yl // from -ule us (_ 8s u (sie_ 'y @) ute (_ 'yt diff --git a/dictsource/pt_list b/dictsource/pt_list index 471eb01c..8a8c5724 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -319,18 +319,19 @@ umas $u $nounf // pronouns eu $u+ $verbf -tu $u+ -você vose $u2+ -ele 'ely $u+ -ela $u+ -nós $u+ -vós $u+ -vocês $u2+ -eles $u+ -elas $u+ +tu $u+ $verbf +você vose $u2+ $verbf +ele 'ely $u+ $verbf +ela $u+ $verbf +nós $u+ $verbf +vós $u+ $verbf +vocês $u2+ $verbf +eles $u+ $verbf +elas $u+ $verbf me $u // reflexive -te $u +me $u $verbf +te $u $verbf nos $u $nounf la $u lo $u @@ -743,9 +744,12 @@ corvos $alt coto $alt2 cratera $alt crede $alt2 +decore $alt desapego $alt2 $noun descabelo $alt descordo $alt +desemprego $alt2 +desemprego $alt $verb desespero $alt2 $noun desfecho $alt2 desprezo $alt2 $noun @@ -854,6 +858,7 @@ jogo $alt2 $noun joguete $alt2 lambreta $alt2 lebre $alt +leste $alt2 $verb lopes $alt maior $alt maleta $alt2 @@ -918,6 +923,7 @@ paralelo $alt parede $alt2 pastora $alt2 pedra $alt +pela $alt $verb pelego $alt2 pelo $alt $verb peso $alt $verb @@ -986,7 +992,9 @@ sufocos $alt2 suporto $alt suor swOr tapete $alt2 +temores $alt2 tempero $alt2 $noun +terrores $alt2 teta $alt2 tetra $alt tocha $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index e7b36766..97606389 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -359,30 +359,36 @@ _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E + tend) e (L06_ e / a- con- en- es- + _mord) e (L06_ e _rend) e (L06_ e _vend) e (L06_ e - tend) e (L06_ e / a- con- en- es- -_compreend) e (L06_ e + prend) e (L06_ e / a- rea- des- desa- +_arrepend) e (L06_ e +_defend) e (L06_ e +_depend) e (L06_ e +_escond) e (L06_ e +preend) e (L06_ e / com- a- re- sur- respond) e (L06_ e // cor- -_enraivec) e (L07_ e -_espairec) e (L07_ e bat) e (L07_ e // re- com- ced) e (L07_ e // pro- con- su- met) e (L07_ e // co- pro- arre- re- intro- compro- sub- + mov) e (L07_ e / re- co- viv) e (L07_ e // re- _beb) e (L07_ e _com) e (L07_ e _tem) e (L07_ e colh) e (L07_ e // & es- corr) e (L07_ e // per- con- in- so- dis- + ench) e (L07_ e / pre- nasc) e (L07_ e / re- + tend) e (L07_ e / en- con- a- es- torc) e (L07_ e // con- venc) e (L07_ e // con- vert) e (L07_ e // in- re- con- + volv) e (L07_ e de- en- re- _eleg) e (L07_ e _ergu) e (L07_ e -_escond) e (L06_ e - _mord) e (L06_ e _mord) e (L07_ e _morr) e (L07_ e _perd) e (L07_ e @@ -390,48 +396,54 @@ _escond) e (L06_ e merec) e (L07_ e // des- padec) e (L07_ e // com- parec) e (L07_ e // a- rea- com- desa- + prend) e (L07_ e // a- rea- des- + screv) e (L07_ e / e- in- ree- pre- de- +_abastec) e (L07_ e _aborrec) e (L07_ e +_absolv) e (L07_ e _adoec) e (L07_ e _adormec) e (L07_ e _agradec) e (L07_ e _amanhec) e (L07_ e +_amolec) e (L07_ e _anoitec) e (L07_ e -_arrepend) e (L06_ e _arrepend) e (L07_ e _cresc) e (L07_ e -_defend) e (L06_ e _defend) e (L07_ e -_depend) e (L06_ e _depend) e (L07_ e +_desguarnec) e (L07_ e _emagrec) e (L07_ e +_endurec) e (L07_ e _enlouquec) e (L07_ e +_enraivec) e (L07_ e _entristec) e (L07_ e _envaidec) e (L07_ e _envelhec) e (L07_ e _esclarec) e (L07_ e _escond) e (L07_ e _escurec) e (L07_ e +_espairec) e (L07_ e _esquec) e (L07_ e _interromp) e (L07_ e -obedec) e (L07_ e / des- -_suspend) e (L07_ e _perec) e (L07_ e _rejuvenec) e (L07_ e -aprend) e (L07_ e // re- +_resolv) e (L07_ e +_suspend) e (L07_ e conhec) e (L07_ e // & re- des- - tend) e (L07_ e / en- con- a- es- +estabelec) e (L07_ e / re- +favorec) e (L07_ e / des- +obedec) e (L07_ e / des- preend) e (L07_ e // sur- com- +proteg) e (L07_ e / des- respond) e (L07_ e // cor- qu) e (brL04_ E - acel) e (rL04_ E / des- _hosp) e (dL03_ E -_amort) e (çL03_ e - _in) e (ptL03_ E _gr) e (gL03_ e _n) e (grL03_ e _estr) ei (L03_ EI _inv) e (jL04_ E _dec) e (pL04_ E + _in) e (ptL03_ E _p) e (quL02_ E _s) e (quL02_ E l) e (que_ E @@ -446,6 +458,7 @@ _amort) e (çL03_ e _sup) e (rL04_ E _tol) e (rL04_ E _ven) e (rL04_ E + acel) e (rL04_ E / des- _coop) e (rL04_ E _temp) e (rL04_ E _v) e (rbL03_ E @@ -459,12 +472,12 @@ _amort) e (çL03_ e _bez) e (rrL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e -_enraiv) e (çL03_ e _p) e (sL01_ E _d) e (scL02_ E _cr) e (scL02_ E _p) e (scL03_ E _m) e (sclL04 E + _d) e (spL02_ E _p) e (squL02_ E _l) e (ssL02_ e _esp) e (ssL03_ e @@ -486,35 +499,39 @@ _embel) e (zL04_ E _acont) e (çL01_ e _arref) e (çL01_ e _emagr) e (çL03 + pr) e (çL03_ e / a- + mer) e (çL03_ e / des- + pad) e (çL03_ e // com- par) e (çL03_ e // a- re- com- rea- desa- _ado) e (çL03_ e _aqu) e (çL03_ e _car) e (çL03_ e - _mer) e (çL03_ e - pad) e (çL03_ e // com- - _per) e (çL03_ e + _per) e (çL03_ e_ conh) e (çL03_ e // re- + obed) e (çL03_ e / des- _esqu) e (çL03_ e _forn) e (çL03_ e - obed) e (çL03_ e / des- _ofer) e (çL03_ e - pr) e (çL03_ e / a- -_espair) e (çL03_ e abast) e (çL03_ e // re- _aborr) e (çL03_ e _agrad) e (çL03_ e _amanh) e (çL03_ e +_amort) e (çL03_ e _anoit) e (çL03_ e +_desguarnec) e (çL03_ e _enfraqu) e (çL03_ e _enlouqu) e (çL03_ e +_enraiv) e (çL03_ e _enriqu) e (çL03_ e _entrist) e (çL03_ e _envaid) e (çL03_ e _envelh) e (çL03_ e _esclar) e (çL03_ e +_espair) e (çL03_ e _estrem) e (çL03_ e _fortal) e (çL03_ e _rejuven) e (çL03_ e +estabel) e (çL03_ e / re- //endsort @@ -811,8 +828,9 @@ _rejuven) e (çL03_ e _deb) o (chL04_ O _desabr) o (chL04_ O _s) o (frL02_ O + r) o (gL04_ O / inter- _j) o (gL04_ O - _r) o (gL04_ O + _af) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O _ap) oi (L01_ OI @@ -822,6 +840,7 @@ _desabr) o (chL04_ 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 @@ -835,6 +854,8 @@ _desabr) o (chL04_ O _r) o (snL04_ O _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. + _ad) o (çL03_ O + _end) o (çL03_ O //endsort .group ô @@ -909,7 +930,7 @@ _desabr) o (chL04_ O r (C *@- A) r (A * A) r (_A * - rr x + rr rx XC) r (A R C) r (A * //?1 C) r (A r diff --git a/phsource/compile_report b/phsource/compile_report index 98f7e983..220f0353 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -2,7 +2,7 @@ 88 phoneme tables new total base 109 109 -consonants 10 118 +consonants 11 119 base2 26 125 en 54 156 en-n 33 156 @@ -48,8 +48,8 @@ consonants 10 118 es-la 1 125 ca 11 127 an 4 125 - pt 29 140 - pt-pt 20 140 + pt 32 143 + pt-pt 20 143 ro 36 148 el 10 125 grc 12 129 @@ -450,7 +450,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [¨\0] base +l/l@ [¨ì,] base [l#] base [l] fr [l/2] fr @@ -484,7 +484,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨\0] base +l/la [¨ì,] base [l#] base [l] fr [l/2] fr @@ -492,7 +492,7 @@ l/la [ [K] tn l/l_a [l/3] base [l/] fr -l/le [¨\0] base +l/le [¨ì,] base [l#] base [l] fr [l/2] fr @@ -504,7 +504,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨\0] base +l/li [¨ì,] base [l#] base [l] fr [l/2] fr @@ -518,7 +518,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨\0] base +l/lo [¨ì,] base [l#] base [l/2] fr [K] nso @@ -529,7 +529,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨\0] base +l/lu [¨ì,] base [l#] base [l] fr [l/2] fr @@ -869,13 +869,16 @@ ustop/k_ [k] base [k] lv [k] el [k] sq -ustop/k_asp [kh] consonants +ustop/k_asp [k#] consonants + [kh] consonants [g#] hi [kh] zh [k#] ka [kh] tn -ustop/k_asp_a [k#] ka -ustop/k_asp_e [k#] ka +ustop/k_asp_a [k#] consonants + [k#] ka +ustop/k_asp_e [k#] consonants + [k#] ka ustop/k_asp_u [k#] ka ustop/k_ejc [k`] am ustop/ki [k] base diff --git a/phsource/n/_n b/phsource/n/_n index 04cabf4d12061d91e91c6782117861cfc5d9a915..dfe7244bcba465ae64c0e3fe91617912d13e0a23 100644 GIT binary patch literal 814 zcmd^+y-ve06oro+J8@`2nOKUtWT_Zg5uy@etw8NkmM$GSF)(#t$OEwP0+C?k5jylW z*zy1sVqjt8T&L7gcP4C|d#}IyBg-D&TwhJbw`Ur_>|SF|-(ExezHZLLsM;n18^N?X zHYoF2Eiq-C2zXRw`iT>L$5;eB#A~}yuj+}h2-u`$RI6GU1&DyR9DAhd?$@9PEnQ#i z5CO|Ru+l3X$e?JGb1Cv`@Eh!W9~U@9fn#LoP#F$!gf4P=N86!2plx=7)RWj#N9#y3 zM6eJRBjMKch9sdZBg1?`IZrJ+49~I8NoO-hYGsN{Fy3E&zdV2Vn}&DaT^xap2*dCF M)n62@`p19q19;_AO8@`> literal 642 zcmWFzaCHs|b`4}=U|_J$V`4}F(#XJp_2vNx-+_4nR01L9$G`&B@rGdq?*qmPu!GUciqKXOI?Qf~l#HV_?|BvXXo)euw#q7Q)M1)9KPRP-rG za3_$2ATYSj?3Lbu#<81!X7-zz&EC!MfTqM9l^` zu9g(unB=7yb1p;$cZSvn+x9|Y6+9>N_}V;~dx=$W<0nyRO5+Tu;5g?OnRakLYuLgn z`IHV7jJq(iGh35h(Ik6X6jtv$Sotpd>`<^tMq8Az&ITQF@m_3OY)fplQ`Q1W0`+3O zkc@~JWeKTlE8Yo7MX^Lq@~OxN8cT25PxdRtKO3EC8BG*Xg10X~j zDMjAwA{o)rv7?=N^F8gzp5=V{_P(4h41iU!)hH-#&m{W!4*kR&u13vfuvmL~!Y->+ z>2;-$T+q|flo9MkeJas^4!Tlwd3tHBzcP>pj&9A%K5*1WKWC5!-Ny(+U9OQr(55z=bOe9{s zc+kW@pa+j0j9xJzhC~h|8WRuR_7C8|!DylfecoxyZp)QUX6Bt|-kG-VZ=apGc7F86 z#PzBU;DK*oj&tm2xSnoRlQ>DK~?y zxrkvLL#l0S$cDR=!Cy(?Tm2WG?39f{DO3e;O$xL(Y^7a&)&`ptx z$NS|z2T>}kK^=x~eE9uEg}&L;CL>gUK5aS?Xqyp-Wc1f|MXP9`Lkugh3#@18kkv$B zw^EsLDs)=ZGtb?=SgTUYuQ6k%95R4$+`%cjxQEs|hB6M}0ID31;wBzbALF`A9=+sN z<@zBGlj0F_tTGzm`32@p;Vh2h3@+jXvrCF$rcryTzr*J~u4uTh=sEGAcuyQ*H}>L; zgrKLMiX8SZiZfHxZhrsB-%rmzH#mH(sUR}=W>b@QRMRoQCf=u{Ug6v8lK#sJwD|}d z*BUF{(xY#$cZvCooC@DwUz7EFLM5G=>uk-b<-hHqV+Jvc8Jy;SdBmDd(H)mr-*H^Q zUA)2?8O`DXIaE-PyzYVPN2Sz*xZm0yT`wI6pARFoD=S>>pS& z7?&`D*l#$uF+X5@0A{b@m4mYv@FT<-q(zuuYAWOy81^vj0h^V0Y5^VLHZJ2 zSEw?iFc>nJ0$rlQAPR(n3~USnlb16cu2*1;;(WmP0pwi;FbZJ z2@*fT`G6bdf*4*MV7NiV+xZpPVeAFcCxD_5actqB&fv`u&0xb2#URcg&0xWx!Jy5c z$zU|up5=J`2Zl|2Fuk5k-vl2pW`OPGXY-JYV1mTO2F?s2n3@Yb2=xMdDO@n|1q4FD ekRhHShQSUP7Ue+u!x1jU8W zWx;I`SK_iDNQKgkZrq9JLI~or3k5f77yjqY#F=EN&Eed8?tjl2hWT>N=!v1hQ==n2 zI)I6B16R2Rf2HuJ1@~Ms=DZ7EJBDDz5-LqqZ4&31Ck{+$mFPDV^b3r|f!pRnxU4FDx(c^HCL;_9REv_-HHdogoh$_WYs>Ri!5=RJOh-M-})43Z|BJ?mLgZB}- zrPMGh44zGOCzbAVBv+myPcYP8{Q0@~MZIY$yg2K=aw+5m@U^qduhF~zatZi17Dly^ zMT0V%s5B_ZS5}ZkD@M?d?bwFRMFES%^^$6s8x1}l1S4e z7LrM%xH>eOJcY1OjqxO0qcr#X3)_f_qv}pbi%X_t*<=#;?k#2(e=RT2-xE^E;(4^uaD`WzFxDkKt*jpqB%klC_uZMmif}^~!hWy;-l6 zTBb;Jr8;F34&n^f;RyDj1$!8ElT#OVu!C;m2~Pvq%9}N0l0kv-5N=@{edtAzSw+^3 zp^Q7Yg3~yR10>zc=k#DBJ21@(n^aSZoa0dvdXCqHQAIDJ&O*^;BHbC`jj&C?WWKF3 zvV4=`?{|;f+2hmj@No0BdO~0EN_|5%c8;9aGPi?_T3L~0&j}6bohav2l6zXIDSmI6ozg$T aLVC!gNq;424(p`T4Z{lF2aFXAAW*}&jPnD73=@dW!~TIagK-HXi2a6h z8}kFk2VnLZUO6~>0Y5^VL0W_frlvxUfng8R9*vXTa9%QgEmT^2_)B*d{lKC1}24e=8eS@`!PlgG?7UBBCg|JPD z8^->~cZChcc95(Ah8HBnu!Y8C1C}TCPZ)N=HFq*^5t;(E;17$9qzuy(aPYn1^bv*` zw1;PvAcSqrp~;uV2NQRYMnnlV%hVWr7H}6gM-tXSdOpRW?H8VY6 z0C==uVxDXI39O%CybsK^>OrDSBAu}T4y{GCqF&M$ z12!5enMg&-RDc-p!9$(0?AOPj1VgfZGeZnmY6n)0RU=V)y3)#!1nH+|+u2#$F^oQR zp#^#5Xn7RS2p=9-hjWgz%Q+rdG-$=vs>9i#l1By>M6;3QFu0mjvNVgH$@47D(W=D^ zlY3jANoIVH#L6vlgQ?e%zkk;E>o*OoFU#>O2brpaM4MxLLhqwyv6*7=R)x+IB9*XM zu|qRbWg}tH>;_cQEJ81+WAWLqSE5qLoZVtk#!U>Nmo)Z~K!LwXm=sXt*u&LFE1J0G zSRq%R`P7^B-qF>QO1eC?w3gFRQuUaKkg(_r3#qZN5o)4K)iYehBqrt-GZZBzY4hBo z*&L!|F!Jx)kM$~}uu^4Yeu^D3+Scw+nXjrqhYH4 z6D8@F(5vvCv_eMNS|ut4jMyzk-MENp9Kbj_NT8F|ZzGj5x$LEP47c%s9aZK@iE|ri z4r2l*aGq4Vagd`IM-edp9Q`tm;57F>?RxfR8qc1N z$umcK)#n}3x$-Y5(i$Li+wNce1`pWm}Ip9{vgFG|uw&+T8W zQr9$}D=nfVeC~R0nrfAk#VMy&iArm`$fuJ%bPWTT;;%W3F;;$%l|GKMIK!IH;x*pk z9!_!BMjnG0#Z$au&JD(n;X1A|W&tnokp2WNao>kSB-G2CPV}&%Ev&vvIt5lf{^m)~ ei6Y-Z7fN@NbdGe3^h$g#F~X+EJL2Kd_wXM<__`hd delta 552 zcmaKpu}cC`9LK-!)I85Sujo+h%oHOkq#_!kD1wqgN)#I#8ziFH!MHWt;+DuIC<39u zDUckbDQIY`^-WF|H}nVe?jBE<@WF!*k1xOP=e>8OwG_Er%;k*9|*)Jq+wLBNct;8*Pm8;;Lg<#K53HLIT0%LyO)y@VkZGFhp{9y^6 z`OhVRLu_J!*~FnU55MOWv76F|l_H-CB^B?k1*xuNN!H`$*smsL8p=gja969dJnw4j z=Rv{Ltc`S-#WqTqK^`gAo`!)b#E`I${O^{7Ec+Agup#Aj!Ixvbn3!)Udr`qB+Rdck hm5HJ(n3``R9n$O_4zP+MPBDjlEMpDpShBwZjX!1vacBSl diff --git a/phsource/n/ni b/phsource/n/ni index 561b331fd60e0c59f55d39812f7a23f322d50f7b..c71c81209fd32926dc8e469447d768c4de24dd89 100644 GIT binary patch literal 1636 zcmb`HJxo(k6vzMX@jm+X`q~2JqfLomLn9TH#KcIjPmDTgz@nldCd7{*8U`mM3>`FT z;=o|y;6fs!lOeJ&bZ~IM&1l@}ECYiRF8Y13_g}oYYs^U;Ld5 z7{d_^Ad3Xz> zh*C|SFu1prO-?rBh_6JE2!@&~yKle6)J;8eYqfc0Pv6C;PFnyUDBb9TwHn;uzOE!w(x+Mz8;PHEC}lz&_?j&dj5lWKN2if4*@m(i1K zLN`e+X~vg$4l27phMy<~p82`fgy9(=BUOHXxi+i_c;=^uS_B4Po1*G7*@BmBXzPJjYek#Otc94&M)H|y zJs)7w5&Mu0=X=I!Ri3%;8QG^a7OCat)yua3MlEgp&#P6&ExxMDIK{m7@V_~TK2piD zI{H{6LpVw*W4MIJcz}DP_Z+YB0uQO&R)n774Hj{cbjEQVcX5WK$|O@{lnluxnDcgK oUMj1DT%>AJv}94MPm?1I7vl5U61c;P}8G!vtdUuzz69U|hloV!z?s z#{7Ws0hqmpR}RW%VOYSA5ND7UVS=ftkYixj!?Xu%j)pRXEyrNXpv9ofAjZJMzzxJa z415d%4E&R28D}%UpSyMPZbnIa*hS8ZRwj}T{& zzJ%8;sthR%h76`a_oy(40-+!S8_+GnlUFh=Wj=J_>Eu9WkX!z6!NO$;<1$ViXjoLS z>+obSP67KZfNLHP!Yv^6kT819@5T;eH%KSob&Cc=B7+-4D1#NyE$j@!3`z_#3{ngd zlkHjdXPjYh;CsNh1r!Ag6BsjumO$N*$RQ&X!32pX5w2}wFuP)S5$tyUO+dXM_tGD7{;G(c4l{WcXno1S98;r{s?L)l@J6<4%%AT9}=~!Ye60&qaq|aOwh6J zox+1q2SW(yqhb~!Q&-<D8r(OLRX~tlwi~< zMN3eTy9vd)w$Id>oG2&BnI?0olg!koj%>cNKkEPOTVI3P3;2n}T7pPB&-#ev7l35? zRYYb&I=4w;K_2vy)#8#uIB0a-P22-0B# zhwqNxr1ZIdvau#8L3dHq5C794V_4vOJYbIuU_X1M7sEJ($CyS1Jyg2LYGm-Xy`TO@z3?Vc?U*$hzf$kHE8YvX z^Sm{#tZaSD@yAih6eST;!VcTb3vM E1OL3b@c;k- delta 508 zcmdnN^MI2hIKb68B-k}@B8Nl$9fl^}2aGz53_!4iaUI(hAPHi(vL`S-V3c73u|>Gr zfb0igaT8vUID{=La01AJuo)yp;Nlf>3=Dgi_JH+jC_~sP451804EhWz3~~%&Kqw4^ zf((L_Wf_lV++koqasvZ9%nd(TXR*NCaD?*!kPWdbhi47ku3kO_yFtPVE{@F&lNT_p zV_sGFYjPm7Wc?qo$1}j5dce4e?*r81LaZx*j)8dm2xkK)%+e=3QE;{&H~;_u diff --git a/phsource/n/nr@ b/phsource/n/nr@ index caade63e375f9746189e214adffba1702dd3fe40..896f33ece68635db9a9fe14d00b81e2bd50fde68 100644 GIT binary patch delta 556 zcmey)^POjce@p}K1I7x5NCpNlW?-mcWZ?S1Aj1>|6airdhHGpGSTh)xF!li1Ak4r} zz|p|`fbjt%3nK#q2s1FO;9)=$S-{W0vT?NmBZdVPL|8C`NDC&ej+s1}X;1wYkQ;!& zf%V7(FoPisNQFa~Kym}a0d6}cWN#i}Jixbv5!ss(YzO!bp?Fh;vw;KMo9H53{0{67 z%uvF@K>7eUEWQ9k280FU2qG4M&I86BaxCoOVc0*ueRLL53*`C<4L^3>B;gSTh)xF!li1Ak4sU zgtLM90pkNk7DfgJ5N2Tb!p*>fDzb*RfqCO<14b%Y@PL~E&B`^r3``SO$4s8gw5NXa z_wyiEFgUOtc>rcGgaN4(2op$3Ff#ByVElmOO(CWRZXHG)Mua!-upZ!+VS0e#O$IJh zPs#A0ivV50_J9v1EEY`ME4 zsE}h|^kdq?1mZzNG?axI{U+xzsZKUzxmWK8b0>oW(4lF}_m~kO-@(ivo5Qq%sR^hC z67m|X3=&Hir!Y+eia6 delta 473 zcmZqWZRMTdAH%@&fU$xhl7Rt?85kZgHgJAmkYS1fihwW!Lj~&r)(plaj6Fa$2s1Do z;cQ@j!1#cXg^_^)gc%sVa5J!=imc&nVBWaefRUyaOk5o^c{0m9#6i*l7zhs-zf3&j zI@yrr9+ESjFzfwOCd5h2#prr_B{9&X^xsnI6=KfLs9v zVvG(vH<*yU^oWsxzkw0iOF!8fct4?diGizu8^cSSs3H;k4eY2QAEXa3fkeJ207Kym zI3z0M7#RJS_Ar5X5D^V!RYt$bc}%L4%~_t+J1{bEUtpGDLWH;nlY@u=(*>jumtk)Z ztzn8_LWDR2*8yQvt21~V_)$gp`5n-_@IdAOI93pDsgRU&fVddRd0t?V$%RZxldrRG F0svAUV-^4a delta 508 zcmeC=?c|-{AH%@&fU$xhl7Rt?85kZgHgJAmkYS1fihwW!!yVQGtQm|;7<+(h5N2RF z!r8$5fbjt%3nK#q2s1Fq@G!8Timc&nVBWY|kFkCO1IUUGC{`Tcr~q1ou)=}u08qOO z6T*r&oDOIPVza^l%^44*4*;F@fbk2^Q6S8~P%-h0_2kJ+59(7uJTOpTJizsUF@q7| zX9uPRE*(Z4BnPczJHQJv2;m?RE(dOq2(q6WfaV~Jtl@QFM-_P>?Eq8(bkM{@u9MAK yp4EQ^I&h$h;0TTDteXHjC}Rx( diff --git a/phsource/n/nri b/phsource/n/nri index 0a086bc1239958be844e9e454679dc1279ea357b..76afa2b8a511f448ac7146fd5c1757f2a30ce35b 100644 GIT binary patch delta 534 zcmaFL^OR?Te@p}K1I7x5NCpNlW?-mcWZ?S1Aj1>|6airdhHGpGSTh)xF!li1Ak4r} zz|p|`fbjt%3nK#q2s1D|;bA}#VPROn&%m;AwE-hp7N~F%vY=`^$byNhVWBA zaswC~U|`@eU_$m#9peEZ14d*IO<_O4vjoLM3|t4e_?Y;ZP&~wi>cvd{26j{t11Sfv zr@trw!{7@z94h1(82y;`FoAdw5e;QwM!(5e9 Rebe7Q@|6airdhHGpGSTh)xF!li1Ak4r} zz|p|`fbjt%3nK#q2s1D=@Gzi>EZ}Eg*|^${kt_>TIEk}h;_8^m3z?482ZP)I2Gk&L0}3avWFyD9rzESc<2Ua0|%;y%6J&iL>TxFu%fE*mxj3VivlnVzJSA_ zLXLsak7*ARhzAkTP!?wNn_R=BI$4wDRQ&;l2F?vk^Oz9ft--_~Zo!1?yclK%Ng1FB zBD_<$4gg~bIlPx}JD`ZH|DV8jfE`uMd}#)-gAs12kd$L!0x3cWX(+3KMJCrXDNSC> G+5-UoF=3+s delta 473 zcmdnVvy*3ne+&c91I7x5NCpNlW?*>0*ueRLL53*`C<4L^3>B;gSTh)xF!li1Ak4sU zgtLM90pkNk7DfgJ5N2Tb!p*>fDzb*RfqCOBPS#{O zRnNodAb?@Hm<}+c5SDLZJ|GdngdCc0I1d1IA%`XhPlGVB$ol{Hco~3BMpn}x=>QJ# TFTn5zVPHH>JYzk1Eo%<|Z(Muc}9I3!sQa5f-$$ARMthXX5ychE%g_!-zy)tr!mc=?M0Fa*AU zL!m;>fzgj?4-<$75z$Zvifra%;byGgz`($C3_MPy?5H9N(hN)>kuMVuxlT4_c~<{~!9wr>&?@Axd?%8DWH~cKE!#U0WXl;Cd^l%` tqZ&MgM@$k~#DT+!PY7r-!Z{8c3ewxaG4KT#`XCI9rHN;(CtqgW008dlU7Y{` diff --git a/phsource/n/nu b/phsource/n/nu index f52d3f13ac211a67ff4ba35f5dbfa0afdff35c0a..53f8c563a7caff3266570bd6a36497058afe427a 100644 GIT binary patch literal 1666 zcmcJP&1(};6vfX>C&|ntGn2&FYEx^VwbuI4+NxAq$<(T#R;^S@RRk5Q6`_J46jTVh zb)&ct5mc_q_@CH}{Q=9v(h3 zcDh#wFn!y=6|Ui*ANgK>^o>syud0nAykh|cC(veamU&{pU9Dg(p+!GOUktbvEk>ra zS?wWxF<`+eGz40p85$r4d~i^w44E&zwK>Q_mtD);AqLE}0`vO3UQ;^T!peXosb6Qs zsjhuEgl=^3&@@s=z<~#szDqB|XOEVEg&1d(nu#bP96DDEaq2Qm*vfBU#9++k8s*R# zGni-cImT5~@x`<0$q6Qht`s>};_|kb+HWDh^5V^i`nP`M>&4RF_8Z=n|9?#z=X)vy z=T;YhH9TguB6&=NcqC%K^MDcjk;mNX|K^d!B@AH?_L9mbG+_fROA;wEv9X?hGnqJ~ zk>r}jI>ubqEyZYp)l4h%sJGB$q?ut*by-(oC|Qy#JcOG~FHEGwyTm2RXeq~Hwh*`Y zZrK^T)hI zw7Gix8j{TQI1A%OMLVg~(sz;n`R(JlqTxrr_{s@QHLae{5A>%3(x}~Kfwq{L3h`;c zz35^l%m)~;o;B6i{z;;7V_5OcgKnB9*X}#t%w<2T`>u9#{mot0gPZK0<9N*4daU?% zQs`mb+vyMBC?4PuM#!L>@nKxYYqa77P9cwD7{vwN%CGn|i5r;a_d3YE`+3@Ko{(i` u6DyqIxiX~pBBYUIAK6r;%MxWq(rH34!x3jjlF=-CS^Cjq@5DH#6t`a@!@wK> delta 560 zcmZqTUB$%_9N_9466_i{k;9?>4MPm?1I7vl5U62n;QYWK!vtdUuzz69U|hloV!z?s z#{7Ws0hqmpR}RW{{7#=Xb6UhLxnHg%?-ig4>_u-r+4r5Q@5tD?l x9XOo$gn)WMapu6GAdQG8Y;j}2kPi$GZ-z+>X24j{W6)+$VK87&pZt<_CIIUUdCC9) diff --git a/phsource/ph_consonants b/phsource/ph_consonants index 97e98991..378729fb 100644 --- a/phsource/ph_consonants +++ b/phsource/ph_consonants @@ -120,6 +120,23 @@ phoneme kh WAV(ustop/k_asp, 90) endphoneme +phoneme k# + vls vel stop + lengthmod 2 + voicingswitch g + Vowelin f1=1 f2=1400 -100 100 f3=-150 80 + Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 + 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 phoneme s2 // second part of a long [s:] vls alv frc sibilant diff --git a/phsource/ph_georgian b/phsource/ph_georgian index e9719c79..51a1de5b 100755 --- a/phsource/ph_georgian +++ b/phsource/ph_georgian @@ -77,9 +77,9 @@ phoneme k# IF nextPhW(#e) OR nextPhW(#i) THEN WAV(ustop/k_asp_e, 40) ELIF nextPhW(#o) OR nextPhW(#u) THEN - WAV(ustop/k_asp_u, 50) + WAV(ustop/k_asp_u, 30) ELSE - WAV(ustop/k_asp_a, 45) + WAV(ustop/k_asp_a, 35) ENDIF endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 02272d61..d9e9d610 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -478,7 +478,7 @@ phoneme k endphoneme phoneme k# - import_phoneme consonants/kh + import_phoneme consonants/k# voicingswitch g# endphoneme diff --git a/phsource/ph_portugal b/phsource/ph_portugal index 8a4f7335..19386fe7 100644 --- a/phsource/ph_portugal +++ b/phsource/ph_portugal @@ -157,5 +157,3 @@ phoneme s# // This is [s] for Brazil, [S] for Portugal ipa ʃ endphoneme - - diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index 1803f379..cc5ff8ae 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -218,3 +218,19 @@ phoneme * endphoneme + +// testing +phoneme x2 + import_phoneme af/x2 +endphoneme + +phoneme x3 + import_phoneme base/x +endphoneme + +phoneme R1 + import_phoneme base/R +endphoneme + + + diff --git a/phsource/phonemes b/phsource/phonemes index 96bbb958..86c6cbec 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -731,7 +731,7 @@ endphoneme phoneme n vcd alv nasal - Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk + Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk lengthmod 4 IF KlattSynth THEN @@ -762,8 +762,8 @@ phoneme n. vcd rfx nasal ipa ɳ starttype n endtype n - Vowelin f1=2 f2=1200 -300 250 f3=-500 80 rms=20 colr=2 - Vowelout f1=2 f2=1200 -300 250 f3=-500 80 rms=20 brk colr=2 + Vowelin f1=2 f2=1700 -300 300 f3=-500 80 rms=20 colr=2 + Vowelout f1=2 f2=1700 -300 300 f3=-500 80 rms=20 brk colr=2 lengthmod 4 IF KlattSynth THEN @@ -1610,9 +1610,9 @@ phoneme x Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 IF nextPh(isPause) THEN - WAV(ufric/x, 120) + WAV(ufric/x, 110) ENDIF - WAV(ufric/x_hr, 25) + WAV(ufric/x_hr, 20) endphoneme @@ -1624,7 +1624,7 @@ phoneme X IF nextPh(isPause) THEN WAV(ufric/xx, 70) ENDIF - WAV(ufric/xx) + WAV(ufric/xx,80) endphoneme @@ -1940,4 +1940,3 @@ include ph_korean phonemetable kl base include ph_greenlandic - diff --git a/src/numbers.cpp b/src/numbers.cpp index 493e69a7..2a0d688f 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -578,6 +578,7 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b } // end of LookupLetter +static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'Ef"}; // using phonemes available to all languages int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) {//========================================================================= @@ -593,6 +594,8 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) char *p2; char *pbuf; ALPHABET *alphabet; + int al_offset; + int al_flags; int language; int phontab_1; int speak_letter_number; @@ -633,14 +636,21 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } - alphabet = AlphabetFromChar(letter); + al_offset = 0; + al_flags = 0; + if((alphabet = AlphabetFromChar(letter)) != NULL) + { + al_offset = alphabet->offset; + al_flags = alphabet->flags; + } + if(alphabet != current_alphabet) { // speak the name of the alphabet current_alphabet = alphabet; - if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) + if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset)) { - if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) + if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet)) { // don't say the alphabet name } @@ -680,7 +690,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(ph_buf[0] == 0) { - if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) + if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) language = alphabet->language; else language = L('e','n'); @@ -715,49 +725,27 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(ph_buf[0] == 0) { // character name not found - if((letter >= 0x2800) && (letter <= 0x28ff)) - { - // braille dots symbol - Lookup(translator, "_braille", ph_buf); - if(ph_buf[0] == 0) - { - EncodePhonemes("br'e:l", ph_buf, NULL); - } - - if(ph_buf[0] != 0) - { - pbuf = ph_buf + strlen(ph_buf); - for(ix=0; ix<8; ix++) - { - if(letter & (1 << ix)) - { - *pbuf++ = phonPAUSE_VSHORT; - LookupLetter(translator, '1'+ix, 0, pbuf, 1); - pbuf += strlen(pbuf); - } - } - } - } if(ph_buf[0]== 0) { - if(iswalpha(letter)) - Lookup(translator, "_?A", ph_buf); - - if((ph_buf[0]==0) && !iswspace(letter)) - Lookup(translator, "_??", ph_buf); - speak_letter_number = 1; - if(ph_buf[0] == 0) + if(!(al_flags & AL_NO_SYMBOL)) { - EncodePhonemes("l'et@", ph_buf, NULL); - if(translator->letter_bits_offset != 0) - speak_letter_number = 0; // non-latin alphabet, no _?? entry, may not be able to speak hexadecimal + if(iswalpha(letter)) + Lookup(translator, "_?A", ph_buf); + + if((ph_buf[0]==0) && !iswspace(letter)) + Lookup(translator, "_??", ph_buf); + + if(ph_buf[0] == 0) + { + EncodePhonemes("l'et@", ph_buf, NULL); + } } - if(!(control & 2) && (alphabet != NULL) && (alphabet->flags & AL_NOT_CODE)) + if(!(control & 2) && (al_flags & AL_NOT_CODE)) { - // don't speak the character code number + // don't speak the character code number, unless we want full details of this character speak_letter_number = 0; } @@ -766,14 +754,36 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) if(speak_letter_number) { - // speak the hexadecimal number of the character code - sprintf(hexbuf,"%x",letter); + if(al_offset == 0x2800) + { + // braille dots symbol, list the numbered dots + p2 = hexbuf; + for(ix=0; ix<8; ix++) + { + if(letter & (1 << ix)) + { + *p2++ = '1'+ix; + } + } + *p2 = 0; + } + else + { + // speak the hexadecimal number of the character code + sprintf(hexbuf,"%x",letter); + } + pbuf = ph_buf; for(p2 = hexbuf; *p2 != 0; p2++) { pbuf += strlen(pbuf); *pbuf++ = phonPAUSE_VSHORT; LookupLetter(translator, *p2, 0, pbuf, 1); + if(((pbuf[0] == 0) || (pbuf[0]==phonSWITCH)) && (*p2 >= 'a')) + { + // This language has no translation for 'a' to 'f', speak English names using base phonemes + EncodePhonemes(hex_letters[*p2 - 'a'], pbuf, NULL); + } } strcat(pbuf, pause_string); } diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 42a90bfd..fa1d0439 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -47,7 +47,6 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) int replace_flags; int n_plist_out = 0; int word_end; - int switched_language = 0; PHONEME_LIST2 *plist2; PHONEME_TAB *next=NULL; @@ -55,11 +54,8 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) { plist2 = &ph_list2[ix]; - if(plist2->phcode == phonSWITCH) - switched_language ^= 1; - // don't do any substitution if the language has been temporarily changed - if(switched_language == 0) + if(!(plist2->synthflags & SFLAG_SWITCHED_LANG)) { if(ix < (n_ph_list2 -1)) next = phoneme_tab[ph_list2[ix+1].phcode]; @@ -81,6 +77,9 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) if((replace_flags & 2) && ((plist2->stresslevel & 0x7) > 3)) continue; // this replacement doesn't occur in stressed syllables + if((replace_flags & 4) && (plist2->sourceix == 0)) + continue; // this replacement only occurs at the start of a word + // substitute the replacement phoneme plist2->phcode = replace_phonemes[k].new_ph; if((plist2->stresslevel > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED)) @@ -117,7 +116,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) PHONEME_TAB *next, *next2; int unstress_count = 0; int word_stress = 0; - int switched_language = 0; + int current_phoneme_tab; int max_stress; int voicing; int regression; @@ -166,6 +165,20 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) } } + // look for switch of phoneme tables + current_phoneme_tab = tr->phoneme_tab_ix; + for(j = 0; j < n_ph_list2; j++) + { + if(plist2[j].phcode == phonSWITCH) + { + current_phoneme_tab = plist2[j].tone_ph; + } + if(current_phoneme_tab != tr->phoneme_tab_ix) + { + plist2[j].synthflags |= SFLAG_SWITCHED_LANG; + } + } + if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0) { // set consonant clusters to all voiced or all unvoiced @@ -180,10 +193,12 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) if(ph == NULL) continue; - if(ph->code == phonSWITCH) - switched_language ^= 1; - if(switched_language) + if(plist2[j].synthflags & SFLAG_SWITCHED_LANG) + { + stop_propagation = 0; + voicing = 0; continue; + } type = ph->type; @@ -295,8 +310,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) ph = phoneme_tab[phonPAUSE]; ph_list3[0].ph = ph; - switched_language = 0; - for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++) { plist3 = &ph_list3[j]; @@ -333,7 +346,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) // change phoneme table SelectPhonemeTable(plist3->tone_ph); - switched_language ^= SFLAG_SWITCHED_LANG; } next = phoneme_tab[plist3[1].phcode]; // the phoneme after this one plist3[1].ph = next; @@ -534,7 +546,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) 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 | switched_language; + phlist[ix].synthflags = plist3->synthflags; phlist[ix].stresslevel = plist3->stresslevel & 0xf; phlist[ix].wordstress = plist3->wordstress; phlist[ix].tone_ph = plist3->tone_ph; diff --git a/src/prosodydisplay.cpp b/src/prosodydisplay.cpp index 4bb49ec1..16fa32a4 100644 --- a/src/prosodydisplay.cpp +++ b/src/prosodydisplay.cpp @@ -224,6 +224,7 @@ void ProsodyDisplay::SelectPh(int index) const char *name = "?"; char buf[120]; char len_string[20]; + char param_string[20]; if(index < 0) return; @@ -245,11 +246,14 @@ void ProsodyDisplay::SelectPh(int index) y1 = p->pitch1; y2 = p->pitch2; len_string[0] = 0; + param_string[0] = 0; if(p->std_length > 0) sprintf(len_string," Length %d", p->std_length*2); + if(p->sound_param != 0) + sprintf(param_string,", %d", p->sound_param); - sprintf(buf,"Stress %s%d Amp %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x [%s%s]", - emphasized,p->stresslevel&0x7,p->amp, p->length,y1,y2,name,p->ph->phflags, LookupManifest(p->phontab_addr), len_string); + sprintf(buf,"Stress %s%d Amp %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x (%s%s)%s", + emphasized,p->stresslevel&0x7,p->amp, p->length,y1,y2,name,p->ph->phflags, LookupManifest(p->phontab_addr), param_string, len_string); wxLogStatus(wxString(buf,wxConvLocal)); } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index eccb1e06..97e68999 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.45 10.Mar.13"; +const char *version_string = "1.46.46 11.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; @@ -1225,9 +1225,15 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_ #ifdef _ESPEAKEDIT plist->std_length = phdata->pd_param[i_SET_LENGTH]; if(phdata->sound_addr[0] != 0) + { plist->phontab_addr = phdata->sound_addr[0]; // FMT address + plist->sound_param = phdata->sound_param[0]; + } else + { plist->phontab_addr = phdata->sound_addr[1]; // WAV address + plist->sound_param = phdata->sound_param[1]; + } #endif } // end of InterpretPhoneme diff --git a/src/synthesize.cpp b/src/synthesize.cpp index 0928c08d..b83af8de 100644 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -1869,7 +1869,6 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) n_phoneme_list = 0; WcmdqStop(); - embedded_value[EMBED_T] = 0; return(0); } diff --git a/src/synthesize.h b/src/synthesize.h index b56edfe6..85ab68c2 100644 --- a/src/synthesize.h +++ b/src/synthesize.h @@ -56,7 +56,7 @@ #define EMBED_A 3 // amplitude/volume #define EMBED_R 4 // pitch range/expression #define EMBED_H 5 // echo/reverberation -#define EMBED_T 6 // different tone for announcing punctuation +#define EMBED_T 6 // different tone for announcing punctuation (not used) #define EMBED_I 7 // sound icon #define EMBED_S2 8 // speed (used in synthesize) #define EMBED_Y 9 // say-as commands @@ -223,6 +223,7 @@ typedef struct { #ifdef _ESPEAKEDIT unsigned char std_length; unsigned int phontab_addr; + int sound_param; #endif } PHONEME_LIST; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index c3bbcada..f890aee9 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -94,6 +94,7 @@ ALPHABET alphabets [] = { {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS}, {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, {"_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}, {NULL, 0, 0, 0, 0, 0} diff --git a/src/translate.cpp b/src/translate.cpp index e071efb9..d9832653 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -2489,7 +2489,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, } -static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL}; +static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","nd","ng","ts","tA","nA",NULL}; int UpperCaseInWord(Translator *tr, char *word, int c) {//===================================================== diff --git a/src/translate.h b/src/translate.h index a34667e3..22129304 100644 --- a/src/translate.h +++ b/src/translate.h @@ -277,6 +277,7 @@ extern ALPHABET *current_alphabet; #define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters #define AL_WORDS 0x04 // use the language to speak words #define AL_NOT_CODE 0x08 // don't speak the character code +#define AL_NO_SYMBOL 0x10 // don't repeat "symbol" or "character" #define N_LOPTS 21 diff --git a/src/voices.cpp b/src/voices.cpp index 606dc6a0..b1b9223f 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -192,6 +192,12 @@ static char *fgets_strip(char *buf, int size, FILE *f_in) if(fgets(buf,size,f_in) == NULL) return(NULL); + if(buf[0] == '#') + { + buf[0] = 0; + return(buf); + } + len = strlen(buf); while((--len > 0) && isspace(buf[len])) buf[len] = 0; @@ -389,8 +395,10 @@ void VoiceReset(int tone_only) // Set voice to the default values int pk; - static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; - static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128}; +// static unsigned char default_heights[N_PEAKS] = {140,128,120,110,90,90,128,128,128}; // changed for v.1.47 +// static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128}; + static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128}; // previous version + static unsigned char default_widths[N_PEAKS] = {140,128,128,160,171,171,128,128,128}; static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; @@ -411,7 +419,7 @@ void VoiceReset(int tone_only) voice->n_harmonic_peaks = 5; voice->peak_shape = 0; voice->voicing = 64; - voice->consonant_amp = 100; + voice->consonant_amp = 85; // change to 85 for v.1.47 was 100 voice->consonant_ampv = 100; voice->samplerate = samplerate_native; memset(voice->klattv,0,sizeof(voice->klattv)); diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 1f34cd22..32756be8 100644 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * 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 * @@ -244,7 +244,7 @@ static unsigned char wavemult[N_WAVEMULT] = { 105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14, 11, 8, 5, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - + // set from y = pow(2,x) * 128, x=-1 to 1 unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = { @@ -592,7 +592,7 @@ static PaError Pa_OpenDefaultStream2( PaStream** stream, hostApiOutputParameters.device = Pa_GetDefaultOutputDevice(); if( hostApiOutputParameters.device == paNoDevice ) - return paDeviceUnavailable; + return paDeviceUnavailable; hostApiOutputParameters.channelCount = outputChannelCount; hostApiOutputParameters.sampleFormat = sampleFormat; @@ -834,15 +834,6 @@ static void WavegenSetEcho(void) amp = embedded_value[EMBED_H]; delay = 130; } -#ifdef deleted - if(embedded_value[EMBED_T] > 0) - { - // announcing punctuation, add a small echo -// This seems unpopular - amp = embedded_value[EMBED_T] * 8; - delay = 60; - } -#endif if(delay == 0) amp = 0; @@ -854,7 +845,7 @@ static void WavegenSetEcho(void) if(amp > 20) echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud. - // echo_amp units are 1/256ths of the amplitude of the original sound. + // echo_amp units are 1/256ths of the amplitude of the original sound. echo_amp = amp; // compensate (partially) for increase in amplitude due to echo general_amplitude = GetAmplitude(); @@ -1559,7 +1550,7 @@ static int SetWithRange0(int value, int max) static void SetPitchFormants() {//=========================== int ix; - int factor; + int factor = 256; int pitch_value; // adjust formants to give better results for a different voice pitch @@ -1570,11 +1561,13 @@ static void SetPitchFormants() { // only adjust if the pitch is higher than normal factor = 256 + (25 * (pitch_value - 50))/50; - for(ix=0; ix<=5; ix++) - { - wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; - } } + + for(ix=0; ix<=5; ix++) + { + wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256; + } + factor = embedded_value[EMBED_T]*3; wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256; wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256; @@ -1755,7 +1748,7 @@ if(option_log_frames) fprintf(f_log,"%3dmS %3d %3d %4d %4d (%3d %3d %3d %3d) to %3d %3d %4d %4d (%3d %3d %3d %3d)\n",length*1000/samplerate, fr1->ffreq[0],fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3], fr1->fheight[0],fr1->fheight[1],fr1->fheight[2],fr1->fheight[3], fr2->ffreq[0],fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3], fr2->fheight[0],fr2->fheight[1],fr2->fheight[2],fr2->fheight[3] ); - + fclose(f_log); f_log=NULL; } @@ -2036,7 +2029,7 @@ static int SpeedUp(short *outbuf, int length_in, int length_out, int end_of_text { sonicSetSpeed(sonicSpeedupStream, sonicSpeed); } - + sonicWriteShortToStream(sonicSpeedupStream, outbuf, length_in); } From 5f27ee1f93cf6808e2b8a79dfa1382d25bd3ed5c Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 11 Mar 2013 22:16:51 +0000 Subject: [PATCH 19/24] 1.46.46 (from http://espeak.sourceforge.net/test/latest.html) --- espeak-data/voices/{test => asia}/pa | 0 phsource/envelopes.png | Bin 20195 -> 20187 bytes 2 files changed, 0 insertions(+), 0 deletions(-) rename espeak-data/voices/{test => asia}/pa (100%) diff --git a/espeak-data/voices/test/pa b/espeak-data/voices/asia/pa similarity index 100% rename from espeak-data/voices/test/pa rename to espeak-data/voices/asia/pa diff --git a/phsource/envelopes.png b/phsource/envelopes.png index b5bc5213cf8a8d43f9fb66484b6053819a0ab45f..5876f8bc5888a16ccf3b1d8a3d7080e9a9eff474 100644 GIT binary patch delta 16042 zcmb7r2Ut_h*6ySTp+`Wv6qTZ&fFQjD5DOqh`~;*$5Jf=&rAgbNi&Tw*3Q`sHvrtq( zT0#?05fGIq(gf*93%%V5{@-`bfBtj+d+&Z=b~1Zr&1802>wVX|`|qPV@1v6HkXU@S z4C~luywxsl7N+p09r|`I*RxCQ_RUs>K4xQaVOh(rk2Msvw3M#a z$MPfVvl%HVDfteS%lwqZNV#`RPgQAVf@{$#RAZ*0mJE;c=XcXj8QqIhdLh61M%ZI@ zxr35^@80t2Y|E2B|J2abG(P2Auouxl#T@)`+seV_#aRxC2bGm;<&#yG()|-9J@Hu&}?I+2DIc+mDGjvJw!-=B7Q@z!7brHLc`b~Cg z`;OmPe%RO7=c%Tpt}YmVC{avTFP$-~TP`*?A53(XxY?=ZeSTsk?^sn)SU9apSvt1= z?k7rosrSf7r53H6jTtJ>H@)ECwdPdSk&$RFv70ZQ!^sLqgqc$-BktW3@*#ha5kZFR zBz;1IgM$O-$J?qd>A>ZE6ECd0^0lR`yu7_ddT9Y-{y zmzTQAxu4 zN&O>QqGCcq7cO1;QuVyJsHkZC^E(vb7r7vaBvWw znfm_e!otG&dEWq?rdQ17yg$hmN7YZ#=bEl|xo_XT9i9Zy#GW#rC$C?t^RoV|u>Z4X zeZBl*z2YG!ZWRUOXUP6?bJ6kiF_Z+!pWq))f|p#&(lyPmM1*V;en zw4iuspB5g+&d#oU;DAkm(-*3(1Z`&cbyBvBir|5xH?8y0YS*8GYxjk$kIy^%?K>%a zr&SmzJ_|k0cW1Utz^^s`X{NDkMdd|Kg6(M(UKt$yaNHAMIY{BWJU|cA%WKF)Xa#Ee z(~M)Qvb#YT6Y0uBM%~nV62J+8OM;AcROwo@xGPXQa|ZSW9_*ZeB>$piei4lc3#x0grluahU4wGg2qep~up zw8JCYweiChu_*fdyhFL~MQ?9qq4?yK6ft<)Ro2~>wK{a@kW(S;xqW$ASy}O=E_i|M zbF4CAMUGT=TnUHMddG+em&0THn{r&wuK0c#c;JCx*kKX)}@0ed{^!NRz zGGTk_``-Nr)kIW0&u1Emc|414L$pK_J15}X<|69iGSDCuRHd9emg*S(+XksD~AOEVPUYiv4v5FHoCCpaH~Z87EVsiOP$4ggM%+Ss1BXf3)GG+ zHH@N)Qt>0TcC>9Hx=m+_N=izqszSaNxl|JiC=^HgOK(cDq~UMsnS}S)W8{R<5I4M~ z^|Q=fHa8jGd#S0G@}8rgb}yfKx4yPAG&FR8kJi-{{G%>r^ZriL6`z=s`@tuOM%{We z+?Ge9Y|G9}^n#Z!27@_v?3kflNBY#sYuSP`ZN#)nywp+du|L2(`|1g;59rpNE0r1* zlad6NMP~gXuFPAAFqv_`9o|3k!u%^U$ZY=l;CVmLr^UhKGp2L*MjT-p+V7``-Yi33m1lH2m|z`EgNj+q1~2;(@Mp$~}rIumpv z0aZ>#ESMEVnl2S!>~5$DF?Ncj!ojQvitt!%JN!zRE)`|$6h#!4dC{aAwX^iySP-D@ z&e$1W8DNa@Qq7<7?X`LcV|N!T2s==@A{f?ygg#@WgVN)$A;B&zk?|#>%}N3k66s3f zz=BA>q7Obqw{?&}8hZ|97q-_#AoxBWA+;0fY+)b`ljDfR_F@IrvL!&(X}WO)@Q-X$ z#iDz;4)qXlBx!-*S_z;-q#p|dq_9qMtyQTHhGAo#fi>BnjMc7Wo=EIPH)ZuWW zr?4VP?-rvZBeRSuCTV6;TePIQ5^OX)@Dd&|#}8p))ebcYSj8JZ$*9`lz-TM6$Odw_ zn11Yr2Luul;Q=CdIqc4C`IRw-H8lZ6q*w2sXN9f!UKj&`U}9J>qrB$AC=-ssvVi3Y z!_+ftegqs6b8o!PuwpyN1g)eh$wDih)r+u-x^*XPhVhGIfwt229AF%H#yHRm>f!8| z8)W2Qm0Dakqw0t;V-n2mjByiEG~of<4#w}n{fvf(#l=$s_K0vQ*>M3WJK8{a<6G-| z0E}_u>b;`mN>LngSFD>oT6K%!)|i7~)#78X@K$$cRG%v|g+!kuazZ>b~eLB__$ zdRDKIjdd92IDcFQ6ut$}bY`aU#?H^5Kg(J@A0HmRbN6l*&rrGD^OByBau{m_XB3=o zmwLra=Ht@Zr352ZLyNa>-@3l{`}O_m`qGfBtgO{j>*?=TTAGU78xy(xUy>(vM0O5r ztWRz@1kZh@tdvtMd4Ix?!~2fizK+(`)<6Gv0>jPhLUMq-C$yzmi?lh2m9IROadQTkBV_4sC^x^7AQIXQi~)ruu3bQJ7tBUf#&a z*RM8-4LLGz?<$@9_U+pzw$?~jIkGxh2Du@o+i21J;lp#A7gGKEm-e|wd8)a8T?liJ zU3l5h?*(J9lJcid<5nl`=rsv#S?;lx8=MQs%gsGwGapb{Xf0RyD9G5eybGRz^n`}~ zmy!XYX+uM{54+0!7Ut&8JE}HJn3PMvFttTz#of?wi+$htABNzEwHEeN$)&Co$GstU zkLI4kbWe!OqD!Xs174qUJx<3m2Q=D}=fVoe!ItC6>Ma z^5vvWvWv~7^XJvQhm+py;rJ(KVY|$6^+$}f&gv9W8yOkdS>gfx1ouAa=of z|K0J4iD#P_!A3z~d~(up^>RA++ije<&?ISo<;s;T^G7gVEGpX1%i7%B{Fq%@-N&s3#=S?lct4WA5i`VEs0Zl}NN=_aGhN1_kiu`du<0WxQR2~85bO=5lvmcPn^ zJu9L6_X9Fbk>stWjJEu$4Ka!!>F6Skq|ZcDOGjrWp#-i`7~P_J4**s{Ld+s3JY=pc zjU`B6WWug6TJYALN0~PQ@5^Ta?|zb`x;kt~Vj5zGEgFyBVssX)V}-pkxfS6Nu$6Hf zXG(_$#O1J4m^0$y*d!J~+!oY86gw6P1uw-h4YIb&J8EoKMK0Q|*IUbMMYpnXsBxoZ zNHZn65+4E#sS5t=<^o!KJO!}k>}Pu6BiO%@ioz2fC!sp-pjvi^8?et*yRSabpZ8KR<-74un}h-XFedhBpcZb$9v9gFR;zQ+7zyAY zfiVyVRTAOc5&)4VFc}(v525VWN#{b-nDPa9u_!ejp;i`@8lQt=D<%<@#-7NU90Ag} z1YHRro4}+Fy{dRPJC1O$kq`;$BH3|hP_0BA1B7eTe6gKiF_gq14i>kzIq1G|293Ku z<)ES0X1R$%gS`nY07d;Mk_JClirht^Nl1;F90m*OJx!Q!;QA1W9S?3@AA_Ypcsu*l zNt^<=pU0mDfT)!qL;yrqhwc;b!As=ZC%R1>D5Nwi!OAV2XGwsnq4FNaD4*SLL(?km zjKPxcoFf5}c9ftvC}5Kk?7dAa;E(M&76GUUa&EBgF`L;-I}j}eEKSY5;XKoFuE80q9n*uRJ*Dn5$|6ZPmEIsB_!)2b zfqlx?6>t1T{(EUnpF-z0G_kRMHQWXW)JWiQ94JyN9{jZ<6IG-T&ud{iM^j9zMkrjp zm$MWVES6jO70>^TOCHKq7f~o+FiR}``Geg~5_ao{XiKw0wx>=R*`R%m?3AWn=<)wM zpJG92{|^Xdt^0a5L@MXq-Q{|?krQleY|NY@kN#wAqobpztgX!{^&{USBZ@xh&{?NO3@3_Qto;v*aC%OUok9>o2GGV)R03G5@9v+^XySgd^7ifjf zqbX6*5cf|$$%-Z67?bE+QQ5Awuxn1ie#Xb8!JY=gemw~ppRIOwfImXVPd z4q=swxi7Yk!E=8sN6rSjDM1otmhTt)Nce@-nh{;m#0Cb^xip8nS+BvESP>{zC;CsZY7Qm%ZIQnw?uIW|LQ7Fxx#UI zz2wD<*|`o!-QZ<-&Vf64g|2{kGa^Gk37Zow+ z#)k2>JU%hZ>P!k{d~~!dc*Pfnp3$`s{(oaO%`zW`+)gk&6Z%<6A0%Ivl=%7iy(^L< z8w*MyA@}d!&j_Bk(Gs=dmAr9;ccC5B+APd$oe;lkGCx26rK3aMwpdPpeSTqK=&AXd z$DZ3W3_d{jw$X@P&G+wiGQ592Wo+z``p^lDZZW;DVVH6GD+SqDU9EV7E-x=POH;d1 zrK6soy0?ep>c-lFu&}VUXbag)=j!wiLu8`UiD?|Q|3TuzEi{UWt@&6efk-4~K7Rc8 z+SoUqZq^$gmNjp^;IG+r)Txq{$S0MmvzT^c=&xht)sqlHgdvC zF2y4X(?DF8;Y0zY_jwuOfLPDjZZ}A#Bng% z6+~(0W%Me7JIyD#uD*}}3O6pQuI>>*huVzmu3=H6qosF3!T^=M!bDdO5Y-ZLVIKuP z$9A(RIlMsqpqbxbIG}>>7Z?9f!-gH7)`WcsF{SCSPbP1L8SG=O%*^O&E^=;jhi!m6 z1enW6AJeTK1DRrZ@;>JcKxS;M3S-#nk7*jv1oftf7Grdka|{!i)zj@}crdWDhR%Zp z>MZ*igQ$2hrqU?>iBUIlFcpqSknClAxpjxp8pnwum8K%Fc3?yrNAL_|SlUqw8;Hvx zCb|rCGy>64A91;zfsvLWMhYb^!xgX~E?>DES$q1+7|89cxT^GPIIZ9hq8xV&HeAn= zvZZ)U$P+ihqB1bwf&|~B}N(ZSuZ&#a9N^1@WB3p#l_51LR>I!Ry z1i%?OBF~BTM4KROQvxK!!@tpX2bQYnzGxh6AntH_nIjYi0-iKyaV%BPeK8)Mr*z^n zN3=E&gO%J^qMtypr36@kSPP(NyqpWqLYb?5BSuQt=fQkft!S(SD5nl9g#udbuu=rD zt{GN}1`urNa>o=n@MlSYC#Roy$l|CP0>KQ&i%^F<`Ope%+XGm0JZy1Pe_HnyEJ}bS zr)4|Ve2>VeCkKj`t22<903xgByHDdu4zzAfZggwdL}kAO1XlrB;y_=4j^e|QR}eqHSiyMZDGa(!2n0`8Ncmi5e}32ilkBBL(B!Wu#+ zPk~AXzPj-eO|{TbbNB@cDw*}pFpyK$DjtFYGPj+0+~R!j_02p1m~Wp*qkdM{CAT4ZI(gw z`eK7_a%q15SRPjBQ~Bj-J%x*;6wSrerP;lE_inNO32BQKtyz5ALb5DqAL1<)VEn3lixg(icEwWhLarg(0s0RX)kY#KifpPV7JWuz$;$ zBma>!|5wf&Q(1jIyOjr0PhDMIMRJF8+TOf*1KFtfjE?`!(YfU-(6HKXn!d-k|1*X& zm@|$@8W}l{1gwvbKW*r@;Qjgjt`dYm^!L!WrfUbP1hO1BaA1_$_CFawKdW|ldxlkX+{0G|y&d5pf#a^xKe*Ad1O>(7!haBI#k_fuT zxNkX63|4!4V#9f3I$FJ@rG)wyBD7kWPmGJxS{Z+_ZQHidD2e|4U#0i2uQW+#yeuw$ z?oe5lmDQJ%sPoa`G<;&AmvS8~FtmcxwddilO|HmY?)mWHLx&@>MjvTknV)EX9r5kk zDIYg&9UTW-+b0eLZN$k*ze{Pru6LmanVen9ZhJKE^UC80JlP1c0TC40=wa2`ylwpJ z7QflYC-(UC)kHE_f(`6T3Gm{)2_;*GY`%3Hl0e^?H(vYLT!s#>o~niJz$|lD2;n9s zCg_c}$v+*}My*Ephet;4-eYVU5Kh7{!CrWzdCXRdh)yugQDVVk59a15RdC8_B=et zay|Qfb91DA7QFc3W-g`GlK9u7?ilz8DccqfMm_%EUP>-uqm9Jh*IGF*P_)7B-qMSdsV?rwGFA2Lp3cJDnRvQPzCKN5~z zU%h=q85AF<-?%zW;fZ6SN*P_XJB56dug^gdpVyspF+8-zYXUW&9BXUZGsTs!U=XS)Fgi2u(RZ(k znSe1@W(#5Nx^5t@3=9hfc?9GF*hx&8;>p45*L=9b+Q9IcpLvtk%W`-jlBCV*S4)2( z-iWh4fW|^%8q*C(sul$t1XB|oe{!<~Y{LFj$2a*aV;Xy+#LD8BtHqU*QABAFG3Tg$ zx&jUt=Dd#ZOVh;AS*X*B86i&5FhPR9xji?7whMrhiKwXqhAn<0^?do|uEy z`39)PQ?~a#a|C|mp17WKEY=j}&;;0v9N2bF`-pj6!5!=)G!8D_3#qY(xg45+U%Qz< zJDjEM53gmGJQNU!?0~}+Y%^8ei0FYouz({ZFT-;?OaiG;=jaGeH=HFfstpEI{A4Qf zBMvquWkVnv#$@eD9n4UZf}b*FKCnQOZ0gRlW+Hrmkd?*<*M`sYJv=VYIF9FJ45_4k ze%35a2%64JbjAQBHFx-RJ8W67OPU$3N>*CQl5_$WY}q=n3a6qFwi8j^IG6-KlC%!O z5kk4ud}hreSb=z|HC#}0EVIXYj4NCsb8#5(ZB>9niN{}q-!l{YVMiM52=uQtGAfQn zH0y5Ff(;_11K>Ig>}VW>VIV8V1D`v_&CGP#p~H>Ay(ouFiOmf4j0A;L7S~j zH#mrleaj6F00|MY5L_;O5b1RYb0=gQT1H^fEYS%DktC<76}n8WE(R?l>IZwgkRaXk z^j3=)X<mc14BsF;R% z;eZPlMrT`e^C5yBAAc~^p7`pm-?NQ{jdjNzH)PJ+Bh`b$*j?N){}lxN{P`0;{d8_~`tsZuM2wG5Tz3$^ZFE3c`Fp9CfinxeZgq9lSiW*# zE}+t3G8Dr+I5hN`EltDc&$6aGbZZ>in$$NZuZj zPCPi(sh(H*Rux?S#^;rNnfJ)ubLloSPB8LX z>Oj^y-n==a{SLChoTFo79^Dm3&2)nn3vzQ0ak!90&8_2KH8eC_xx{rs z3|XD-*;wn5CO4%y9>C9oFUAxDezU7uq9u&X;JdeP8+&wY4>grdjv&teDKXfRv9US? zr|M7{@JGM2zV_^Ur3_^KYE`}v4rMKO<-v%qu!?&rR33axS?@$NH8r6ZpKH%Eo9rwx z8{)p;=Jxs7+~T7D#f#4ZP;;v>F)ThUNmoL9kd4Zgq1Zz?5avIoP$+g-&P@*q;N)Ac!|e!Sny&Tr`}d%+FVFn7bW~Knba$uEvW_D1_GP>uDVp8>vPQS3@X0lU5m=r!KSn z8^YH-qY1)p%JR7Rhb_K-ei>?BJANl4<69Jzl*qwV>tbmZc#_NI?!@sPR*TkiHcaSH zxaH>N?s)EI<}Vv@U?!gRTn4-JW}0x_)m=uNjgUC*hwPhTaJvOCM>z8Ss(qa1gLWO$ z!I??|(Ac{qvlT^h9=VzTA*#|yP!xWX&{9iU=fAc|ipeML0C*uZIJ}$QrMO9!EksEG z&uc%r1!Dk}<$8#t0vbS6*6XmF!WRZe9+K{4jJd1pbQ00+iDd`cu70^-V8 zP<(b?x_2iikY`(8$Dl!K(O^D&&K2x@w?5B>2Azd7@{TZD$sfD%OL)^@!Pc>jacM{e zBE*@)9x(NZexkb+#~=}rDG?NKX5S@1pZm@Z;iY`sq9qjG*Se+WnBC0T@hBZ!X>s z$sU5tB#G&HUdC_`91{_j?uH)`d>oT_I3_oPmoA6D2n2!GTRK@kgXs_6E#+v>_jK|P z2N+@Oxbl%s&UVBZV4N<~=;Y%LEQc`JUfpyucMoeQQ(a%Moy`&A_o zAx{-%GhM~eu1r_z<23EHI%gDs*~LO9!2@^oH?^=h@Xnn=;MadOOD279y>i#xjAtZ>QopfZ&& z7jbl{5ARL;#N=sa&7wQY{vIvv@7s8J(c+x*#z-sd#+0ioog4_ZaYma&W;|oE#S%Vp zM&o|%>F*tSy{jBc=(7k7opSyZzUEAF_dj8-VL~yT|Au)q^(fPI@%6U4TohhwkBmsj zNy7pUn8j$t=w@WYYzV8ME443V_aY8~`HQa#YmzX>$|`8S$RZF1vm!T?@UtgVBRYUg z+kX5|@~NmvAam|q()zv3*-P86nBqv69hgkZ_7?w41CQwJA6xohQh2{98_7s)dsS3S z{wp7Fjw$KG`U+MvKeaz*asT!0OdmMMAQhxdC?3Z=7@uuUnhiAEvDK2YTh$e^8{SJ! zjq4Y(;_QX)9HfJfE?lm=DJkJzLukl_Ncd{~PDX(D*B0gQq_+taUM`{_`LwJUGTXa0 zEWW>j|61XZUEJ(UHu;gICc4;~j546vKch(9Oqez7M=e4P{ok8hPip-ezF+ z=KR*}2@B%2KSUuJDXM=2hgDTouwuZLW3KZj`N*zI-%F=oWUM_c zFV|do0!2k`U!FFVPI#Ytn4YVPjXxlNL``Jhk5j~3^K+5ggHz;deTP5An zhyPs+@OKJ$#QE0jY7pD^%0NFyN5`tq*85q&Xg;#`q-7|Ftfua+rE&ZA?ZJ`kyZFW560WuJEFGFUn>Oqe5lDW zmpMp2pdm+2XB8&D!U!Y(npce|)A{-&Yb#Z3eJUDiwEVTwp?nKUwEmQxs%92bR#q*!M}lt|VQ0b5VwsTO)}Bn5)St7zFyOB zO6t?NvYj0bo_yUSfK9^WX`=G>?-nSthI*LB1NM5ltQGiV;Vu@ag;Us$Ze-)Q22h?{ z4Z05z0ytH`#7Fd>{ibq4^XbM)a{@aVoN;w_enNi+cOM=X5e1T? z4x>4vfLc_4#zzTY5Bu(6@R1qTi&znFnI2~B$j9T~cpTV>;r9;9DQsi*OT>N~2W zW=iO0&Wty_&lIF0&Jr*_K+rPWNMV~T$dA-RP8RRTh{n8{l zO}~%%g_H8co!M?^@hN`Qq!?twB_-Y15MOGtpRTAJg>UlZ^Nx3QSGvAEcu*zx)E+6rZ(T-}XX zt8YK)@2BRQt@n2wh0m^4%IZ5xW6`Sa#;h)kz&9>_V@2!o8d@;&JQXu6T|#b^K+qwxVBT%>{nTI$6)5hHtG!;RZD|3Z&;zcNFh^iPOx!4EFV~ zVaXP5sN(tf z`|;gkrps-w?Vf-1NDy@XbN@(Qd;_RAXZ$S7Nsj_1v`o6QkiwbSmfcu$Zf5080Bf$n ztW4w;MR?)K*Xo|W)yqhR#ML;%6C8#B_Bv+_3B=VwGH}%rMRz_{QmRqAQ8t$30>Z;IY>|M|EO__^}Ixug(N4fe`VJZbyGM4$O9xdH(&i(g(_ zn#w94@m~;^ky93k%XefUkV9qFg^6xwk=E^-F)bq$hp{qa*Y8EI#>2;lnBZW{!5vRK z^t??g+2R5eX`eE<*8fz)aYPfyNwN}1ZD1(D^#dYr?&Z-`G~U3yd2$Z)uoXeHTsJU# z+V1?V?A9?zDnc3g$rY(bjz52rJ;m=w&$044dwajk$uYS3U_6mC*YZx~+CI8L)JSA| zbmw%rk>cO5xiOJhyJy(4K0g25Pa`R^chk3b%%*!q(UJ_6E%M)Fwo&PmmtS{Z9okOm zp#&|>K6A5<=mcoY*a+%deQmzTquSPGB)2UCnuujnYo$8{`1Kbx6`Nf*7)+w zGM>ZC;-g2nNc}`n?T-$U`i+rn{H|cs_0MRHQ5SfvPlha%!%Xij=#ySvT*_E?rRNb9 zN`sazQ+hVK11HZ1$(Ox{BAb9NhEAur_~YcTw?jAwQS)4mJ zG?q^ZS*DK!ugs6w=|e1E_E1brEdSZFKjbshbrlt}ehFUQH?=ZJk&b{bCZs*dJJ4&r2f{_7hR~Ap-U=NYzy1V z>3}m9+kNyV?fLtgw&A!J>mU!=G;??GieT978P0+bIO9O{eEjy7qg zraxi66^ux{5zNWyW!Vw+IyqoMVU0FmFJxgnTR949#DNK7>Plh=Lg{V<%$FC+z+~fQ zE2;h|8{`UkgbHqML#d5VH1iQK$%Q}q+wL#SpJmHLx!n;4Dyt6(7(N9>Xknz4^z}U} zX!qb%ChoCBQ|ZD88^@gns1;p1OTb7e?gv_3=l3WRnQGD0_WRIQloCv^F76FyigO`= zJ0Y=ID9mjkkek7xOuY3&SA?I^!pdoG0`sk!nVP8YY?6Bx@wk?G8Z&2vk(D)|4bV7* zWNvhWsU0a7vqF!{tqFj`tMkzf7{hnl32!p=N-iKSnf|VsYIkAgwnbjq9BcNbZ)Zr5 zodG6trZ@Vhf-8*8bVawbM-N5PHv^bn6B^5K1Q2247!HLhWezzg!4eT_je^Q64ye4+ zCt#MKk~uRp4NoGp5>$SNUD+=d_ffUeIX#3<|4!1&Qg(LlzQq|$s6nbj%{8#%JCrl^ zL6|;<7meo^5{FsiLzsV=bT8pIFw-Un!sp_2*;^fIFv<>7-+Aw`hN5+Z=4 za5X6BYCM(%dkjeGV;Dm0Dil;@d-}r9$%DPHe)z{HM)|W5mb}!fu)R!NEdo26D@Y$8 zflPsf^U&Olv^F@*5A{sgTe7bbmJffF!IG)B1eR}lU&1n~uMn1pemrN?_dj9O_dkMV zZtp`_p6$zqrBpTtO&yA{29NXBe<+9IvXccD;Z)?DTHx^34N-9Tf?Hjp2p_zn0q(E` zuRiV~Dg7)i5D;snS~w*DG3F|4FW|iL2%tb9J6ALw(6*3aXWF&7XamR~)&HoKzyjYh zHn5rd+k3SV72NFeF4b;tXc$u0-DO5MF_R0hRDJJ%g46)0Jhfs_kk*?R3iV&Tw* ztz-<`d4@5NxXn#j5zf?C$HBOJcZJOg+IzT#|5Q9>N9>#IY$^78VIl>u||A=7L&$+3%Hh#dPcYMVl2w%r4&r0bd=%YUnpEr(xq`}fB? z%5N-pSXx>#_*Dp)&z(EBwMR%!U)Kl5CjT~QBrmC0A<YNJg%YETHDeM=!%03Ux z+E)eL4e=p|<1|h?7ESzLeCON5=yLdCOL;lWxwvIoBm>|VpO zqrPIIZOr7{s#*FkugqwMkloev9pBWv*sA}lhmx`G7~oVJ#o$!|)j~-?6+zq}P zcVlffW1|AfdErkVv^6jqlE6DDG;wv-L(Kkj@p8H%OhyE)&2^Y%=u~?2=-fAc1f6FI z9lqBC7h-hFr&(z!sZZJlAGU-*nU+q5{K}&3267LI=SFKH*%&&I*E83%KYji@x3GY~ zd@ro;^q@4WFN{V)U+3oLwgKg51Gd_KY)wSr!$bLyFln=N_e+PG6j=<>Ke# zyVO&4e|GVp_Vhm}cAF|6W2+zG#5(ir`ixWmjbLA|mmd<$`Nykntv8MDq^7b(>O(pK zf&VZ;f9aBGC23i%70OvYpNqb{@4r&vU&qM(Q9o^Fp(21%SlHG-t+g~j=9hQ)gv{#x z)>ms>@TgikJO6!1lW#}F`}gk$Y|StkTlAR>i5n+zbLWk;VfuhdC0JULA3wQ8K8oa4 zPr+RH^3bld=oe;DGADz2U^T zD#5hn0^0dN=!o7@GqS>nhn86;esaBZp zSklN4?l8yHR%lbRLYb-uZJK(uk-DI%E6wX1G!57TL#sfoFp)<5*fmv&JpjlN+d;vS zpFrm??6?3N3b`@lU=pEMWP-I7N&1EJv>+&{--6y?No4BXe4}AzO5;L1X z=cetbEzq|08|r-$)S@j{I~_W(X&c3`Z6Z*_BXaoP4e~=iKY&Ul@Ow=hcrnW;PxJ7ti;Zr-&vrHZiLyC`Q0TDO%Q)6#`wu<4sT3B zAi#g)Vsr^R(!)aJ0{XV>&>H@F84pzyU=2$aU9j-0032PJUt*UC=L-i8pyE087qcV5 ax2{`7n3_3pGp_)^?Wm#Y!RPwKu>S+l?SiBL delta 16152 zcmcJ0cUY6nw(q16LXUuSDK=060g)mtbWx;O5Jey;3MdMQBK-|r6h(F%jsGumQ zv;fjXsnSF`(yR19;7nd%LYz1rf$+DH7p?8j$(yPH=EIG!N^sNjyj4HNX2~AT`_e( zuhU)o2JH%!DpipU-=jy_Cf8T>ZX=-9(kk&L<9eE`uO1ds;=hfa4>%osgZ}_biWYB9Z0(AX_D~pSZ z$}T<6GQ~7~El-?CvvHu1RJ5fdmu}`c^)?S&dni%fpBr!#bBgA9#X4eRaL)6`wSulG z*?s%cx}P7dwS4|miZY`jyuyWhb|kB!?=$)ejkT;TalPQn+}bmLeG+ zAMeuracg9Cbyd~(uCCT}`?vb0lonN0h3FDZ)tq?u?3Cgp{U6(PNnE7c3wE-TcNUWE z6*{}RtZZ#dojc!<$*+qbDYNSs!lv@hJ)&K&4WNCr+H$(*91eXzNo))#Ud5ybk+=jiNqz zZzXH!8YB-$1C2Mm*%fOx=##knnw6U5?U99L_PJ`Z10(q+( zEk6W&327=&#gh0UH2DeSIXRk$Hb4x@N8OoG0+_UhJy^575t{7;BJANLgF69Dx7e{} z0udz@;-FZLc0U+Ihc?}k!=^B$&3NL)l_N^T2}JmYW&|pi91X1lf=LTZyS;&cUs<>? zFc7;Piy|#(@3MdmHR4AYW$h}XC5VEdj#fk^2*NQpkn3k*kJN2qltJxgcI4{~CxTV1yec3>YeUMTpNF6<^eII6LgGfeOm zGvJYR{zdt|Z9npb%O$iTJ}~yS-u5!mgT=GAvyE4UPYYp617089cNRf5p|*Q>+JOGY zu{J^J*@_Eb*F7V7fr~e8C=&3zHy-PTank1^kxw?93PT%@YZkO$_wWClpoNsAr>Cc6 z|0qQ^;~bLYo&3nQcYVnA3SL7s568#HAMZQuapT69FJBsY=B;JhyIe}GZEcfFOgr8> zQN9OJ?y#s^3Z9dVc`9}B;zh+_wOiBbo9pwBA3xq_@xpWZ!-)MEr6EHW^|Sv;8~;K! zmyw(j+ITO$yLZo>>m&8s4jIeFT%p`EJcP8rzlM9VPvhf`;J5kt9=C4Qy%D)*AS^8G z7VlH|WKYj^C}y+g7sEiDTRlanv12hDkZeu+D9_3G7ercoWm zXrk%2wzeZtdZv+)k?pOmS^TlFu_>9mjLw$&7ccFFI(w=!&v5NyXHBHo(DO?U4(%__ zAQZPaUw$QB6_NZ&AMN}~pYMZn@4KP0wzjY^*zow0Vt)@!cai3s_b!Gy?TxfgagU{R zw9UzqUGKZ6^|ou9RuBHA#9uZ~cNebFXm4}k2R$;nA3S{c&>`6`|LN1fSFTHcYzJ=A zqUe`a1=Dr=OO1DO*V-R9e{^y$<*X_n`%@`lCFl3IW|F+SCn;{KyO6e$SNZT0W9z@V zL0`){ISzl8QZ;d0Ciqh(tGI3V^Sf@NTs>u6C?V!MtF5aW)HT)f-fb}6 zr6e5aUFxoWI^?4fAR0Jv?yxvPKtRCp^5wk)AD4m)baF3t+uq5fJlSZzz9ny;QPjf; zYS*4qp1|_@a~a!a?>edb>R7e?v5|AmJxn{R{`vv zz z)6BvJU=R5=qaQ2j4Lb;Y=oOR#fqIA)mlg z57&^@JcYh_diF=`z*D6i$!vJ4o@f7;jadQeInR?McRZD~hMG?x-+U0jApx=_Fjj8; znk2lST$n?E<#FC!BAkOx+d~P!$Fq_wfhDoQYO6XvpG{rm5*pRPrjQ%EPlPkihPmb{ zGC%w^nD9e8qr4?0LVx>1lH7AQ)Fg*-h^}~Hh4#a&S!sgUtQroQD0OX2s4hq-+lQ+v zzW_G+%mV@lAm>4V1hj4sw8IHx9`T^3&>j+T`qVt4NziF_)X9ms&>#90r&+uZ*G7zREX_MTVSjlqIScOniCj#S=+ zWki`1&T}7DAiPky75WdNh8*HRj%mNkA5iDYA#D7StOO8SH!LU)as#g(AOg}h;Y(yd zy`29Upn$LvTnrrj0^6yg73|QBVWP0l9+B&~TRF2Ex*>+q2jSR^7hcL+L@{K)Gqca( ze!AnHpwK`w_7N5`2F^F2b`yx;_Y37{MXL)yT(qjqU46oZJ|y|!S!k<0XSGw*AH zEV5&AeRW<&MkZYvrMByp;7Vu8zceb(d&d%Q^~|l&>tgo1T)zC#pH5@BC#+-(9YY zmJvFda$i(~)>jr39?oJEHQiI}Gua`(c=S|7MMb}>=k@CfLia?q{LlG3wm%cS(`jvK zN~rzo*m!F;gcn&S_tL-c+j#c3p0-VlixU(T-B=lnj9GUA`$8i(wtxIYqtW7(U7B0C z#57-IWto?@P%^c&5z(oMOFM$0-PNL(E_@2*5bp7wcnQtmUV8az$vZ)a5WLuKg)V3x z^zUB~i>w~>D1>&$J2=IECgPMi?=HT(Ud26GS$obz7u!Gs)RKoS=t?}ib9Bs8-NfoC ze~p)a2@`yc!kiq_wU4UT99{`OmHI51?A!eP`$zA^@zBemp^=)j!)sRYD3qhz%?18a zCb~mKCLl>4tPf*s0hb1-dF>!KnDJv;i zoIZWU_H=1|eSL%GnzU%-zB^HecivfZBKN=WS-njO(B@%sw|KsxOnIWc6EXcT*;|VE z``cUy=8G)XvYo1D=8HF_qrXmexj-o1OGkt4N|$wi)XPnWLBW0rtmb9FO%(l$fp z`65wVPEM{7qQy@)r&wG<4m;4deePtli`x0xhDnZ%@>S3QHTsaQ#N4yYecxd`xxB54 zfiyfANMp5pNhP{YxdI8eAcydV0kYt5iz$Q==flP%Jv`aLQ@fQ1%ED-Hw9~#Kr(A+y zS$&PsZ&?-kyQ)ZPF`X3vUoK^b6?H;gP?In0zm+q9D!r8K9|)*B&lziJ0}{?ABN-|V z5ktltfx9_llAe6{i1YKAYV)ucOe?MLMMTirSu2TfQi|R=Q#i?twI>r!l6rz+%$2%- z;CB^x;dk|jl93EmU1MZR%*VG9ps~{K_p&4>6NUtm5oZ#ti1B$035|U#W0H9AYl|I? z1x-%C#=$P}cooK0>u&K6Yc51gI`wmKQl@Nl~L;G$xc;PAClRE?h{a2Pp^<5l*|PiS>kQU;IVA5_u zPzOlcEyU>ph>pa<^(=GlHWJ9Kxvd3Tv7~JgCD3N>BQ0EIL&b)0YCw!6gC(gu&!`51 zh~TCXPPEik&YSN;!JV+FVvIPsoa8ejhbQiLp4rBNax7cwnS&^Zz1WNZBm}$z!Uc%5 z_a_9r?ZUZ1J~H=!0>Mrr1Uo!{(>VoSgd@8#>(255PA97C5(nt=%q172sY;^KRhocZ zL+;aVSat;8M3F|zLceeTT`naD3*fn|?pjs@a*LU#1$aRIGBs-eLtPRTNr`2&RZB@j zjH43K1A$QA;j^edDKU}#w?IcvkT{~i04Zkvc!+z@zX%bU_%Hf+mavK!r!iy>ex-Hs zHwtb0Ajn38R0%*3`gfJr_J?@*)01#Bn2XZf;n*PUwkr~^6!gvCXodF@Gi1+|ZftD4 zyV8C+CxUh={>1^ylnBCk4@{^qvTYj&7R_Y+voTc{SsxTT`lEer@dTP<-1@_cc&rk& zZkzAM`f7A^bl|J&kcDta^2+!$bN7P2gX;(X6&Z3Rh^ighms9lS(pRCFy4I#9`2z>i zY!?36juK54aUX617c2Fg1;=YMA&>ChOg40p~!` zLHp^dvA;)EsgP-?Sy)iiKs-F!2InA<82%EMpReRS46S5Cl14lw35`SgM#H~vkT$Y#*DLXq|WISk=X5Q-%ff zk$?!tbK+$IM1k20`aiAguJ*fHHdLnQt>Q>?=l-&OA9GGOb6!`7hWuTT&CIuNkEH8t za+LY*{eA;1)N@Be+Q)qL`kwvO1k()7{uO z+hi!_l#{E3B?b7lQ7r3^IKaQJEwE?>dTMsM8(8% zUcNlFKP5>^UOshN@Ve~m+Dz&4s&A9y$+eH)m7hVkqO^1qq86hQ>BoEh*Irir7%5ym zx%cr$*Zy(_EJx7a3FJ=24EQHjSq)0pf9@~*`0-kA3AEVd{jP?FhO~z#mikXh@p{8Q zg+Vb`J>(}38XCG}irEtT;!+)vMVb1fM z`6IpUsq>Pct@1g%b3L!6%`?Jh5r#HtHbe~1+r^;RY)(gNw2Chh^(H6r)X2; zX}%_z!r=qv316>jr7vGFkCx4{WRg)O;Mv*P6%QVaE4GL(vyw1=>aMilum16=lt-+R zQB=n(;Htg(f^U`?QE+aiM!gYx+kqsO5t)uT*&z~D5x65~&N57|zQw37-#VK-tIJFR z#*O#&P1#}P@;DvoP6zsZF_}WIe21eYG z>NcrL|CG-dBA%b}a1Ad2F6H^alXLw#9FLsegdKg+^vq<}EpQEyf%7z$ z{csj_D|BxN1L1nxU$mzJ-tM}{N6KB`8+PDITTI_`l2cH^ecm*d8Mqus z@7DyR+sj|I+zjAYViRNnwK38vqj#=D#Gj$on0kc8K(h$JT)NHH^EgNMVWa%tW) zfuAt|&&*gdF5&H}qzMNU-B|q^MHUpvUzM!qgd;7ZD2!7vtM6Lpsb(fN0>|tAa4Q03 z595*Thv7G(=u@}?ktN~ds-zARcyR0mJWr{>AmvTHxA2Ih9zeefF926U9vFOr4UN@v zaHcby2_*D}7!5nihm-N5a6~ze20VxBTi_2z03o>M@B?%#>UkqMmH}PO;*mhmY$qxH z9lBr-P#m{$D0}XF6iRs$3poZ7=DZ2?&sOmra5T~8EozGb!2^mRE9skylT96<3>jX2z%-Awx?HOJY}3CXcoE*%hPfQ=f|qg{w!?UTthbZKRo>C?JJV|4K#Q7r+wVN zy^JTne*IcnTAC?YGf9k~Oevj4!a_q8Uu9qQ@K}0XEqYYT(7N`9Eka+cx+ml0L4+S&{neiYuC>CAI@7xRxK>xqBMvI=R^7g~}bnjah-R4risBT{Q)WoC0@hEi)^ zpCg3#0Tb!HsdqEgMI*bWAoPXK)R0TEOqzZ7GG$6-8}b*c`gftRkp^UA9v*CtP4ORd zJgG@u!*LB-o9ex%If8+7v}*H0GKa7d+^5Uf(aovS#Kgp$(hb^JOXl)aSEf75yLa!# z+q`{!i}Ld=ipky^pFRbDbg212ohjYy8JX8lGoP9m{?^-TYh|?-Q@V~^tc}ka^0s{O zdg!<~*!S~&+L)H4X_E7`Yb7wGs4gldEPTbqrNN77u{1{3niY!m>kHWX1?3(vKr@k-F82+&}JNN{akq`u_pLo7`Ed98DY46N(wkfmBhhT~q zb{{fdWVzlq0+kpCdLER9d+PE8w;%w|fg-2z(xwFVyI!Mo}sn~#ZDP^2)#e|`%?0Emg8sbjHVU4FKO2!~g7G?c^PJQZ3jtbYoqh~Pr& z0V*>^6UT!B%wN_BmRR87Fpe0C@AwT(tPZU4%x-~ELndSsg(4q2Gv5xiYsbTj$Qm<> zJY~5WlLH^`RwB!Azi>+(w-=Em9u(PHZZ)j{51a#9lYI>soSl~EeL$A~jr4OXJs9A) zOahQXSBD`MCRIY)O8|0q6b4*=;gCFrz*_oJ_U}jg0!Af$p<+xj`2C-7c%-YyD^El6 zt3LjMFetQeRK1(}OjkBSGShH`Ov1WB4Ko(BeMRVhhF* ziCW%5yc}fn_Z{n$$#zsDcyvEzOj6YruZuBby^mxh5Bcm8;2^rKJn?@zXMtA)Ap_TF zEIn*kgMK$!xCg@pGD$GeI&&Sm9wei66Rjq9JQRy*Z!x{WSo8tUOpED)7Ty5!pbXVw z%IeK`TZzn0R=G$sN;M7IdneEurE-a89Ro>SF^_dH(~Brk7Ez*uI7ui|zg5?f2on*nWClgpU*k}rajy>ORM1a&og)%E9j zuQzWvig2F6v?TM?X^>gNbTi5uEP`av;!a_@*jta?X6MgEStIC_+2>T^iu`!lhCES8 zeXrEE3|mQ`Dbz{NlV*zRKUmMV0KDi{UQVs-?H$T6YA_m*Y})iY`k>h7TFT1^Km<9* zZg9g0W(d2~I+nf67CfpEyzP~J47x>+90hN?AC;-N1s>%cIE)-?^eVWoDv2ek?#D=W z^L1S}LBL6G+}Ox04E_pcG7-}wIc+OGwSPZEK7cvwu;~|=*#31+&sVUL6XOte6NaNj z#jTc5$Cp+w)vOk8e|S5qm-j8CBtH7e+avGHs$@Bgw|j%JH_UGz_12ZWcZb|z89^=S zPx2pJ((~oR6E9ZV-eJyV{~H;A{996B*8c`Uu!rrFiLZi?9Fu zeE4aNKx;(OOGEsnQNw7o=xMMS>YxcAlk ze_*HoB{@CzGsd?5gV6T^54eH47-YYTv-A2_7k`TJ?y(opZiGLAdUHAfLCTaLs z_^>SKLDam{XklSx#nbwnbs{9S!dbk}Mm<}cXupzk+}5@ij{Eg8ls5ItXeYPwwI3^; z4gPK2-HG(p&d$z*SK91Dy5UDU&Mu5otlN*j~EPIx^qXvSY^%Xegca^_jZ24;4+RnvPh_2a1DyKCXbamsZR0 zXm)dl+bd*A9f5$j!)e90BvI{F5)50z%o!N2&`dUM;J$qM@@`4Vu`$>RDWGiI;|-ew zclX0qMT+v;M;wfN4dJH>&S%)6mcuXM$`6bO|ngNKa>wUqWmmA|gNXuf~7W?9A5w zHG?{I=ny0h)J02gA`=$w?(R~&Pe-(1Z1x{Rv)^%=YoYtJdN4!h<^xGw)V2Y?IOE+u zK0Xr@6EQMYeC)WjwKe|I1WEGW@dO`&|EJ+w9qZ)D)~k*9J}zXXB3i~uUDVXty1Oih zxpnJGUl5m&kkF57%g`h1^_~A3h_3lC46|6AUnBeUw2=|H|Dp>%9yuiVi(d$urhFA2 z3FD}pZQ0;{`5ADiKgda2atReH|D-KK?df$O+sn>O;ZpNO=IuAN_3c#qB71%oDQ|Nv z{4!W(YN($Xwk&pdiN^o&-XLAljIf04Zq*#!=2Fv(IBf5I!td=K%!)%1cc%twgE(IO zem6;~YvKn^9E#lPypRSY=)k^N)cnS!PniJ##-hu#d4yCLU4Ly z@IGuX`8XmDWI9+>k|epqb8VOl53CuUr2TS}S70QMk^gs24AA=m?yHZSP{+<{z(_h6#X9J>=} zapAy{?r;lJArp>@O&^7D&q4?6e#*i72$j)$euc+KW%&5!lH8eb(`A*xh8yn8UBVOg zk)E`A)GaKJ3ii$Yr&8nEThgVDsEA~YmeSx{o!Fb0sCUUfxRbqD}P>(TjnsfRw0Ie#!FmMCcSTJY9fl8 zHJ&=B747F=^>e>X(aL=CW>Ha*FVuRaE0z0U<_W2|%%4vT+k*3~{Tr+cu{ml)al5n> z((5^R&vuj64wE*Lkqs}HV(5T4I2c`F&)1g}e|Wg)*XMm#+FnQmzbz<0AR{+!UqoN( zfg*VL(6tMMG*Y%g10x#j`dxNhOq4!mbMk81mjoAB}qJ zx8`wgV)!kL^T9YNjJa(LE0-GWrqBwuKs4e#9OtlLD+(3V^PHSguld~?^x1yhC=X}3 z{{ZarV$5J7qb$X2i!ee<$bKf9o0H=L$zPa~DEaX4516yzptW}9)~#E#)t#H7eJ!S1 z^f6Q9kf!FV;-RN@49&A`=D*V%cOX9F2DMMvX}y-x!;9XT85#Cxmb{B!TS|{`H|IQ+ zy3;jfvXgt^hPr5`OcUFXx>hgx)=W=#dwZsz^;HC+PuRkcdUr4g-7FKF2zuiKi} zG4QVxJ*&p2hUM6fk@+b|*8k3rOuXXcG`H%j8uP&I<&!5*YHN+WY4wR}@TVD%`8Hp= zGH@5R`ey6l!>b43@ACEQ*YEAE78VxK#onDb9BxB$EO}#0YhzF=$)Dz=ahFN9iPI!W zz4ONpUuf<<)isrr+Io6S8YC(8s+!23i8C+L(sqb&Ru9fu6%L`r!PdD^ZYB-<_)RxMF32-`Pt+yp>OW2 zaQS!W)Ros7MNm7K`)sm$`rHd8xm0Cv{wyY4T5jZ~{B(+~T`3`Lb}3&KTxHrc5HJ@4 zl6!_vZ*KxB1`ioNI#uw_X1b>$;52K_)JZ}0S!ape4aAYJ;Cy8XLcm{ezRc1Qs9fxj ztVl)mJ$xv3?>3IChC`I3gg{AOg`2ixo-zT1ZF#!p-OGaJd9tI3dZ*i^d86d<-h zp)-h_f97%M>)#4`{R>M<{5#)VG}T!AmYMADowunpgkpOrh6Jxi${xG@R4Q*qr58oy zU66kTfj)_pl9g5a?NoE^1Fn=xD~XPQ$+RuIjLsLc_DMlVePT&?d+f|8HK~J{RONW~ z!1V3UsQ14631oB1+-@;S-$C;zC3yrY`mZnp@JtQ{9FT3>N8P1w9&z^MZ&%qs<|VIe z461_EXSzF4Vj?==)gRT*4tgkgBPwHtBiBD1DOJ4`k@fjmvXUrkW+eAUW??43v>xdtLt;u!p5?zwI*4luKx)h7a7HdxSdtdSfD2?AR=LL>)(1fJn< zS`Y-eHGvG<5D-zVk0DBc6CEF**=dmgc^!EuV+4mKZ7)1X9%~2%UoIx&Uc~vY{jfc%<3Z*${Vr6f!@PoP*c)77=jJ42vsb0jx-JCH}hrrT^fe6EEZF+P8k&R|anZ z%`BsesBU7`75@+6OlWnV{Av4}R2OCC#w$rD5Y3hB0dYkUbO2@Upae3*gicl6EGAYK z@2YzvcJ%kJ*50cK-{Rzp#tn@ZXG|1(yI{>H47B;|&J2k~8KGNid|)YR1EHE3Fyn`>7bMd}@D zA2*Rf2hFa~bEcw3 z9lA110P=@e8%9546A~uJ$B%4Al{ZxP>+b%ptq?akHT5zl$2Q;jjGVya%uMD8MZK%( ze*|YRjBHc{##Iy8p4E;0d3j-pW?xq@3`t*q$bVN4di|=EgudnT&0z#aM>#k+t`+z| zL*r7iy1Vw!FQZMb@h}ZwHEG-1G%rN)j{7U+$iDWEt!a%hUuGGY##2Jt@7YeH^MwjW zk8gOWeDbYBdv|Dn#I>*p_YO`ZIciCX)t=-&iD?wrk{HIbB%*K-6Hs;1F>? zQ1bTV*ZZjFGgEfO+pCBek4uF>v8StIzaq(MiIr+3yutpt*S|J&@eVbzLkcjPYQ0JbZU zUv7c272vR}x)W)5tEVeohKze*cMWvR#-KSYsh{A4bY0A)1N-0v^G0%(F$;tl(uyR} zK@37&h(~e6eyRbpH!`yt$%5=`!1UHxz#&i%vs3yD*oEYxQ795kCKShh@-m3^-wh4c zolVzs>zeyii1IMueu_Meb>08yd7rMhde;Rp6~bO?I~0j>LD?}y&l^L%doDi&cjWcL z1t2olB__(nD{~77BDn599tRAh1`HtfIP#Q6X(Mrqx?ou3%A6Yq2k++~vFM7FfWX{M z&l_?gN&L-R3`UrIz)muS2kk1Yn8J*9RZz^`iS2WBBnqQlH5F4(C_IW|Cp(P!+-@YZqVTL7W_aQ`N3u95 zOGRPD50wcMf%px~Z=*ye1l&U70bh70K$FGr9gK3zOB5Ew1z!dzBIkf28Hg)u3lYJC z7(C2HZ5&vENv_gmo$$NmlOQN5k@FJzPvIgBzg4VJNiF^n?gE~C7yL>hs~ zrm^tunA!|XhP5oqhg-?LtpS&Z$*@XfKt1l^V>t;Uh2n^azByjvEz0|e#3YK$5wETm z49L5N;doNSR2mu!Cgs&dU|uZ0F?>JLjy5q)36RTwmn-Zych3;J=L%;SBY`%CDM#=E z7lZR>O!Jk?g0J*LZqOVhiUFqV$VoCFYvEubF8Oq*JuF>zF_Lmw#F`Hr)^ad{h}605 z2r4(vYyQ#{TVw4l`OS1=5ITE^f>PQ};bIX)zG#6GUOJr)Q+8TQSjJC(C`m6L_$5#M zeeX>?p{I3w>vj@Fk@ATmrXha&+=Z#a_y$A0p z`$K4BdhD3r#_9;fq)=h&`(DY#)4!$aA=~FZ@5^~{CNBem+~Q(7RH$hqJUTu8Yg3S) zyI241unQQ@_F^6*%8C4MF6Q~w=EG>qFu2QA1(na~p3 z3mJpj_r_Hr^YrHjhJIj1i)0^No0FXQJJ=iCSb^Ksp7;l4LO>d^t#7TfX`S5khbIbo zSs0VP=IFRGnijdxyZ+yoLrmhZT%nVF@qSx7OM7b=U)Q4#q?6|Y*EJ^BK zZ$5ljg`Db~r?0c~i{fIxIk=5cik*TAl0Ugv>sImWg_ogWH3MF0dM}K^u)5Z2ttosp z$t2H#3NEd4mX_}!O;JC{v-rscS?hu+M~qyi)ixRHaIU~Dy5W4t=<{Mmx|4hIjOA^D0wk$iG&o==Ly$LsZYA+8bI&3k zi-rk$$BrG#cy-)lH$4tl(aUN#o=kBSt=AMZiP||)y2o}$dhF)uQwhOH9=QJ5f8fV+ zwWMBo9o(VUTqz5M)e&kPf@wkQ(VsLypBkfoRuI zaR{Se=C-;9a4_%o)ZH9xIDPnp8z#j?ozH`IDo|N`K!V^w7yO39uE*i|K|W2DW$iif zg|0YEo<)gmz0D2oBP)wMf1o5d1LSBS+#}`z^UEN1V*r0$WoQ=K;a%5#F(%NGyWky^ z`@VqL2kn-e*Qfzpf%3FVuHzNwGpA5;^kKK5it~m{2%e zqLw%GkMJ6{xVL5A(sa^r%b&9M_Bb2pky)Bg)TxS$1Fd{=*{v|cz@{>Qvei)ETK8AtRsGV~mPwoXc(eRA}CZ7$o%#f6vsfY~}v8~}62lR%FOU0dA z$<}D<0$ZgfN5?Jzb~|r@q$m1KtqIu=&a~@HMODG^Ow~oGXjlj2UL(`t4HR7lMLG04 zNu#v@Cw%@Omoul1>ulPczuk!FKvS})5(NA`ZP2loLm?RV zUDMb*@Z`Ca%#Zw*u~m>EW1s#EHkTQsZslP-=~hnt`6R-4veKW#vcj|HQabJUdkV6Z z0Nbe{fgWh+el1`O7nFZ*{uRhwWu6}W!9wB!I#!2(^G3i4Zx3__hTIs9hirD=_b4^g zOSq*z@cs9eqLty8GI_;6$6RNI+g33yNd!wk{H+M%Bb`QjCfsZ7{>gR$VF!<<$po3b* jh35z(Qry%e_|`V{lxKfUKK$?$z>kr>iQX$6QsDmqs93Wu From 790c9a1754580214bc8a04381a7b6f3a8be6098a Mon Sep 17 00:00:00 2001 From: jonsd Date: Wed, 13 Mar 2013 15:35:29 +0000 Subject: [PATCH 20/24] [1.46.47] Fix bug in SAPI5 version: speed suddenly changes to very slow when speaking a word which contains foreign characters. Language changes: da, fa, hu, pt, ur. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@313 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/da_list | 35 +- dictsource/da_rules | 14783 +++++++++-------- dictsource/dict_phonemes | 24 +- dictsource/en_list | 15 +- dictsource/en_rules | 6 +- dictsource/fa_list | 1665 +- dictsource/fa_rules | 43 +- dictsource/hu_list | 4 +- dictsource/hu_rules | 4 +- dictsource/pt_list | 88 +- dictsource/pt_rules | 54 +- phsource/compile_report | 35 +- phsource/ph_danish | 396 +- phsource/ph_german | 52 +- platforms/windows/make_espeak.iss | 13 +- platforms/windows/windows_sapi/ttsengobj.cpp | 2 +- src/Makefile.espeakedit | 8 +- src/numbers.cpp | 3 +- src/phonemelist.cpp | 2 +- src/speech.h | 2 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 12 +- src/translate.cpp | 11 +- src/translate.h | 2 +- 24 files changed, 9490 insertions(+), 7771 deletions(-) diff --git a/dictsource/da_list b/dictsource/da_list index 737be652..7f7f18a5 100755 --- a/dictsource/da_list +++ b/dictsource/da_list @@ -67,7 +67,7 @@ _? spWrgsmVlstajn _! udRVbstejn _- binnesdrai __ b'Onsdrai -& Vw +& _Vw £ pun? € euro © kVpirajt @@ -117,8 +117,8 @@ _6X t*'Es // PB changed from e to E _7X h&lfj'&rs // PV a changed to & _8X f'irs _9X h&lf'Ems // PB a changed to & -_0C h'un*@:D -_1C ed||h'unR@:D // PB added 'et hundrede' +_0C h'un*VD +_1C ed||h'unRV:D // PB added 'et hundrede' _0M1 t'u:s@-n _1M1 ed||t'u:s@-n // PB added 'et' to tusind _1M2 'e:n||milij'o:n @@ -177,8 +177,8 @@ for fordi fVd'i $pause // because - PB: changed stress når nVr $pause // while der dEr $u+ $u // PB changed from [dA] -hvor v'Vr // where -hvorfor vVf'V // why - final r deleted +hvor v'O // where +hvorfor v?Of'?V // why - final r deleted // prepositions på pO $u @@ -187,16 +187,16 @@ fra $u+ // from ved $u+ // at om $u+ $brk // about, within med $u+ // with -af &_| // PB changed from [a?] to [&] - sound too short in a sentence +af & // PB changed from [a?] to [&] - sound too short in a sentence // Also removed $u from 'af' and other words. They disappeared. -ad &: // PB added 'ad' +ad & // PB added 'ad' ad &D $atend $sentence // PB "Det må ikke skille os ad." -at &: $u // PB changed from [at] to [&:] +at & $u // PB changed from [at] to [&:] hos // at - PB: removed [$u+] som sVm $u // which / that - PB: removed [$u+] // pronouns -jeg jai $u+ // I +jeg jaj $u+ // I du du $u de $u han $u @@ -272,11 +272,11 @@ q ku r Er s es //t te: mooved to da_rules because of clash with T-shirt -u u? +u u v ve w d'Vbeltve: x Eks -y Y? +y y z sEt ø W @@ -7196,6 +7196,7 @@ suffler $alt suggerer $alt sulfoner $alt summere $alt +opsummere $alt superviser $alt suppler $alt supponer $alt @@ -7303,7 +7304,7 @@ valuter $alt vandaliser $alt varedeklarer $alt varier $alt -vatter $alt +vattere $alt vegeter $alt ventilere $alt verbaliser $alt @@ -11142,7 +11143,7 @@ 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 -ligesom lisVm // PB +ligesom l?isVm // PB bliver blir // PB konfirmand kVnferm'&nd // PB konfirmander kVnferm'&nd3 // PB @@ -11286,12 +11287,12 @@ 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 -(en legende) en||leg'End@ -legenden leg'End@n +(en legende) en||leg'End@- +legenden leg'End@-n legender leg'EndV legenders leg'EndVs -legenderne leg'EndVn3 -legenderne leg'EndVn3s +legenderne leg'EndVn@- +legendernes leg'EndVn@-s // PB verb "forsyne" noun "forsyn" - stress problem (et forsyn) ed||f'Vrsyn (forsynet har) f'Vrsyn@d||hAr diff --git a/dictsource/da_rules b/dictsource/da_rules index 7081c264..abc1516b 100755 --- a/dictsource/da_rules +++ b/dictsource/da_rules @@ -2,8 +2,8 @@ // This file is UTF8 encoded // Spelling-to-phoneme rules for Danish -// Rules and comments marked //PB -// have been made by Peter Bjarkov pbj1234@hotmail.com + +// Peter Bjarkov pbj1234@hotmail.com // Most of the rules are commented with at least one word // which shuld use that particular rule. @@ -22,9 +22,9 @@ .L02 p b f v m // fortungekonsonanter experimental .L03 l d -// PB fortungevokaler - front vowels +// fortungevokaler - front vowels .L04 u y i ø o -// PB bagtungevokaler - not finished, not used yet +// bagtungevokaler - not finished, not used yet .L05 a æ å // pande, bande - pege, bege - passe, basse .L06 p b @@ -36,676 +36,645 @@ .group a - a & // PB changed from [a?] - h) al (fback a // PB - aaron ArVn // PB name - zol) a '& // PB name - m) ary &ri // PB name - vin) ai (gre 'E // PB stressed - _gymn) a (st '& // PB stressed - _gymn) a (sti & // PB avoid secondary stress in gymnastik - stigm) a (ta '& // PB stressed - arm) ad (a '&:d // PB stressed - avondale _^_en //PB + a & // changed from [a?] + h) al (fback a // + aaron ArVn // name + zol) a '& // name + m) ary &ri // name + vin) ai (gre 'E // stressed + _gymn) a (st '& // stressed + _gymn) a (sti & // avoid secondary stress in gymnastik + stigm) a (ta '& // stressed + arm) ad (a '&:d // stressed + avondale _^_en -// PB Short vowel before double consonant - r) a (C%++ ?A // PB trappe - a (C%+ ?& // PB pladder, basser, masser - a (ld+ ?& // PB kalde, falde - TEST ld = double consonant? - C) a (L06% ?a // PB tapper, tappen, lapper, lappen - v) a (cc ?a // PB vaccinere - a (ffald+ a // PB - s) a (bbat ?& // PB - grim) a (sse '?& // PB stressed - _c) annes &:n: // PB French city - a (cc+ a // accent - b) accarat akar'a // PB - st) a (ccato & // PB +// Short vowel before double consonant + r) a (C%++ ?A // trappe + a (C%+ ?& // pladder, basser, masser + a (ld+ ?& // kalde, falde - TEST ld = double consonant? + C) a (L06% ?A // tapper, tappen, lapper, lappen + v) a (cc ?A // vaccinere + a (ffald+ A // + s) a (bbat ?& // + grim) a (sse '?& // stressed + _c) annes &:n: // French city + a (cc+ A // accent + b) accarat AkAr'A // + st) a (ccato & // -// PB Short followed by 2 consonants = 1 phoneme: lg=>[l], ds=>[s] - a (lg ?& // PB valg, valget, alge - TEST - a (ls ?& // PB hals, halsen - a (ds ?& // PB plads - a (nd ?& // PB manden +// Short followed by 2 consonants = 1 phoneme: lg=>[l], ds=>[s] + a (lg ?& // valg, valget, alge - TEST + a (ls ?& // hals, halsen + a (ds ?& // plads + a (nd ?& // manden + d) an (dy &:n // dandy + br) an (dy &:n // brandy -// PB short & - more specific rule(s) needed +// short & - more specific rule(s) needed pl) a (n ?& // plan pl) a (ner ?& // planer pl) a (nen ?& // planen - C) a (rL04 a // PB karismatisk - t) abernak abVn'ak // PB tabernakel, tabernakler - mil) a (no '&: // PB stressed - n) a (bo &: // PB + t) abernak abVn'ak // tabernakel, tabernakler + mil) a (no '&: // stressed + n) a (bo &: // - past) a & // PB tandpastareklame + past) a & // tandpastareklame - r) a (CK+ A // PB drab, Rasmus, rask - r) a (CA+ A // PB drabelig - r) a (dio++ A: // PB shortend too much by ph_danish - br) ady Ejdi // PB name - br) adbury &db@-re // PB name - a (dress+ & // PB afsenderadresse - _der) af (_ ,& // PB - a (nstreng++ & // PB overanstrengelse - a (ntal+ & // PB meterantal - a (ttach+ & // PB militærattache - hvor) af =,& // PB - a (nlæg+ & // PB militæranlæg - oreg) a (no '&: // PB stressed - laud) a (num '& // PB stressed - w) a (ter O // PB - w) ade Ejd // PB Wade, waders - arapahoe &r'&p&hOw // PB + r) a (CK+ A // drab, Rasmus, rask + r) a (CA+ A // drabelig, brase + r) a (len+ ?A // gralen TEST + r) a (le+ A // morale, prale + r) a (dio++ A: // shortend too much by ph_danish + br) ady Ejdi // name + br) adbury &db@-re // name + a (dress+ & // afsenderadresse + _der) af (_ ,& // + a (nstreng++ & // overanstrengelse + a (ntal+ & // meterantal + a (ttach+ & // militærattache + hvor) af =,& // + a (nlæg+ & // militæranlæg + oreg) a (no '&: // stressed + laud) a (num '& // stressed + w) a (ter O // + w) ade Ejd // Wade, waders + arapahoe &r'&p&hOw // -// PB amm => [a] - a (mm++ ?a // PB kammerat, amme +// 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 -// PB k/c + ame => [&] - L10) a (me+ & // PB kamel, kamera, Camelot +// amm => [A] + a (mm++ ?A // kammerat, amme - s) a (me & // PB person from Lapland - s) a (mer ?& // plur. +// k/c + ame => [&] + L10) a (me+ & // kamel, kamera, Camelot - au (_revoir %o // PB au revoir - au (_pair %o // PB au pair-pige - a (lt ?& // PB alt, overalt, altid - short - w) a (lt O // PB name - vr) a (lt A // PB vralte - aserbajdsjan &sVb&S'&n // PB - opst) a (ndelse '& // PB stressed + s) a (me+ & // person from Lapland + s) a (mer+ ?& // plur. -// PB general rule: [A] after r - r) a (_ A // PB jura, zebra - tr) a A // PB kontraordre - r) aer (_ AV // PB fakturaer, zebraer - fr) a A // PB bagfra - fr) aiche 'ES // PB cremefraiche - laur) a A // PB name - r) a (en A // PB rivieraen - Cr) a (n A // PB transport - br) a (C A // PB Abraham - _br) ando &ndOw // PB M sAu + s) ag (C+ Au // sagfører + s) ag (s_+ &j // for den sags skyld + s) ag (sma++ &j // sagsmappe + s) ag (san++ &j // sagsanlæg + s) ag (som++ &j // sagsomkostninger + s) ag (sbehandl++ &j // sagsbehandler +snakkes) ag (lig '& // + s) ag (sø Au // sagsøge + + sl) a (ng+ & // + sl) a (nge+ A // + livsl) a (ng+ A // livslang + skav) a (nk 'A // + a (nklag++ & // anklage + ang (re AN // angre + _) ang (eC AN // anger, angelsaksisk + _) ang (ol Ang // Angola + ang (ina Ang // + ang (iogr Ang // angiografi + ang (reb &ng // angreb ang (ri+ &ng // angribe - _) angela &ndZ@l& // PB name + _) angela &ndZ@l& // name a (gt A // agt - l) a (gt+ A // PB lagt - avoid [au] - forl) a (gt_ ''A // PB stressed - _bat) a (lje '& // PB stressed - alfie &lfi // PB name + l) a (gt+ A // lagt - avoid [au] + forl) a (gt_ ''A // stressed + _bat) a (lje '& // stressed + alfie &lfi // name -// PB general rule: [A] before vn +// general rule: [A] before vn a (vn+ A // favn, savn, avner - gn) a (vne & // PB + gn) a (vne & // -// PB general rule: [a] after kl before consonant - kl) a (L06 a // PB klap + // general rule: consonant + a + c/k: [A] + C) a (L10 A // makværk, Jacob + l) acrosse &kr'Vs // game + tax) a & // taxachauffør + f) a (cL11 & // facade + att) ache &S'e // + C) a (L10L04 & // pacifist - maybe not a valid rule c = s here + k) atakomb &t&k'omb // + C) a (L10e A // race + _p) alace &l&s // Buckingham Palace + L08) a (L10L04 & // stakit + pl) a (ka & // plakat + pl) a (ce & // placere + st) a (ka & // stakat + k) a (ka++ A // kakadue -// PB general rule: consonant + a + c/k: [a] - C) a (L10 a // PB makværk, Jacob - l) acrosse &kr'Vs // PB game - tax) a & // PB taxachauffør - f) a (cL11 & // PB facade - att) ache &S'e // PB - C) a (L10L04 & // PB pacifist - maybe not a valid rule c = s here - k) atakomb &t&k'omb // PB - C) a (L10e a // PB race - _p) alace &l&s // PB Buckingham Palace - L08) a (L10L04 & // PB stakit - pl) a (ka & // PB plakat - pl) a (ce & // PB placere - st) a (ka & // PB stakat - - a (k%o+ ?& // PB akkord, akkompagnerer - a (k%u+ ?A // PB akkurat - a (kvA+ & // PB akvarium - a (ppetit a // PB appetit - a (bnorm a // PB - abdo (m Abd'o // PB abdomen - stressed - _) a (bC A // PB Abdul, abdicere - s) a (bl & // PB nedsable - t) a (blet & // PB sprittabletter - a (bb & // PB abbedi - a (bra & // PB Abraham - a (bru & // PB abrupt - h) a (cienda _^_es // PB - l) a (kr %& // PB lakrids - e) a & // PB Korea, azalea - b) ayer aIV // PB bayersk, Bayern - _b) ay (_ Ej // PB Thunder Bay - ayatollah aI&t'Vl& // PB - b) ayreuth aIR'Vjt // PB German town - m) anhattan &nh'&t@n // PB -bloody_m) ary &ri // PB - gu) ay aI // PB Paraguay - a (mp %A // PB ampul - _) aage Ou3 // PB name - _) a (men_ A // PB - _) amager AmAr // PB Amager - _) amy Ejmi // PB name - g) aux 'o // PB Margaux - a (ppar+ a // PB apparat - a (ppelsin+ a // PB appelsin - ae (ro E // PB aerobic, aerosol - _st) a (ll O // PB about airplane "stall" - t) alk (show Ok // PB - r) a (cerbil E // PB - r) a (cercyk E // PB - r) a (cerbane E // PB - r) a (cervogn E // PB - r) a (cerkør E // PB + a (k%o+ ?& // akkord, akkompagnerer + a (k%u+ ?A // akkurat + a (kvA+ & // akvarium + a (ppetit ?A // appetit + a (bnorm A // + abdo (m Abd'o // abdomen - stressed + _) a (bC A // Abdul, abdicere + s) a (ble &: // nedsable + t) a (blet & // sprittabletter + a (bb & // abbedi + a (bra & // Abraham + a (bru & // abrupt + h) a (cienda _^_es // + l) a (kr %& // lakrids + e) a & // Korea, azalea + b) ayer aIV // bayersk, Bayern + _b) ay (_ Ej // Thunder Bay + ayatollah aI&t'Vl& // + b) ayreuth aIR'Vjt // German town + m) anhattan &nh'&t@n // +bloody_m) ary &ri // + gu) ay aI // Paraguay + a (mp %A // ampul + _) aage O:?u@- // name + _) a (men_ A // + _) amager AmAr // Amager + _) amy Ejmi // name + g) aux 'o // Margaux + a (ppar+ A // apparat + a (ppelsin+ A // appelsin + ae (ro E // aerobic, aerosol + _st) a (ll O // about airplane "stall" + t) alk (show Ok // + r) a (cerbil E // + r) a (cercyk E // + r) a (cerbane E // + r) a (cervogn E // + r) a (cerkør E // _okt) a (v '& // stressed _konk) a (v '& // stressed - _det) a (lje '& // PB stressed - nev) ad (a '&d // PB - _pol) a (k 'a // PB stressed polak - _kos) a (k 'a // PB stressed - kosak -_milli) a (r 'A // PB stressed - milliard -_trilli) a (r 'A // PB stressed - trilliard - _sejl) ad (s '& // PB stressed - silent d - sejl) ad (s & // PB unstressed - silent d - _sah) a (ra 'A // PB stressed -metast) a (se '& // PB stressed - pic) a (sso '& // PB stressed -supped) a (s '& // PB stressed - _o) a (se '& // PB stressed - salam) a (nder '& // PB stressed -_propag) a (nd '& // PB stressed - propaganda - bals) a (mi '& // PB stressed - balsamico - _fas) a (n '& // PB stressed -_entusi) a (s '& // PB stressed - entusiast - bah) a (ma '& PB stressed - L08) av (C Au // stavn - s) av (C Au // PB savklinge - st) av (nin &v // PB stavning - bogst) av &v // PB bogstavrim - not [Au] - h) av (_ & // PB hav - problem with the noun "hav" [hAu] -iske_h) av Au // PB Kaspiske hav, Karibiske Hav - @h) av (_ Au // PB flammehav - h) av (C Au // PB havbund, havre -københ) av (n 'Aw // PB - h) av (over Au // PB havoverfladen - h) av (is Au // PB -himmel_og_h) av Au // PB "sea/ocean" not "have" = "garden" - øde_h) av Au // PB Det Røde Hav -åbne_h) av Au // PB det åbne hav -åbent_h) av Au // PB på åbent hav - h) av (aborr Au // PB havaborre - h) av (ud Au // PB havudsigt - h) ag (l Au // PB - ag (n+ Au // PB agn, Agnes - r) ag (na+ Au // PB ragnarok - ag (new &g // PB name - champ) agne '&nj@- // PB champagne - _kamp) agne '&nj@- // PB stressed - ag (nos %ag // PB agnostiker - hav) a (nna '& // PB Havanna - h) a (ck+ & // PB hacke - color) ado 'Ado // PB US state - _) av (_ Au // PB av - _f) akultet &kult'et // PB fakultet - f) akultet &kultet // PB idrætsfakultet - _) absolution AbsoluS'on // PB - absolution AbsoluSon // PB - _) attribution &tRibuS'on // PB - attribution &tRibuSon // PB - C) a (x+ a // PB fax, taxa + _det) a (lje '& // stressed + nev) ad (a '&d // + _pol) a (k 'A // stressed polak + _kos) a (k 'A // stressed - kosak +_milli) a (r 'A // stressed - milliard +_trilli) a (r 'A // stressed - trilliard + _sejl) ad (s '& // stressed - silent d + sejl) ad (s & // unstressed - silent d + _sah) a (ra 'A // stressed +metast) a (se '& // stressed + pic) a (sso '& // stressed +supped) a (s '& // stressed + _o) a (se '& // stressed + salam) a (nder '& // stressed +_propag) a (nd '& // stressed - propaganda + bals) a (mi '& // stressed - balsamico + _fas) a (n '& // stressed +_entusi) a (s '& // stressed - entusiast + bah) a (ma '& // stressed + L08) av (C A?u // stavn + 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 + @h) av (_ A?u // flammehav + h) av (C A?u // havbund, havre +københ) av (n 'Aw // + h) av (over A?u // havoverfladen + h) av (is A?u // +himmel_og_h) av A?u // "sea/ocean" not "have" = "garden" + øde_h) av A?u // Det Røde Hav +åbne_h) av A?u // det åbne hav +åbent_h) av A?u // på åbent hav + h) av (aborr A?u // havaborre + h) av (ud A?u // havudsigt + h) ag (l A?u // + ag (n+ A?u // agn, Agnes + r) ag (na+ A?u // ragnarok + ag (new &g // name + champ) agne '&nj@- // champagne + _kamp) agne '&nj@- // stressed + ag (nos %Ag // agnostiker + hav) a (nna '& // Havanna + h) a (ck+ & // hacke + color) ado 'Ado // US state + _) av (_ Au // av + _f) akultet &kult'et // fakultet + f) akultet &kultet // idrætsfakultet + _) absolution AbsoluS'on // + absolution AbsoluSon // + _) attribution &tRibuS'on // + attribution &tRibuSon // + C) a (x+ A // fax, taxa m) a (ka & // PN makaber - klim) a & // PB klimarelateret - klim) a (ks a // PB - C) a (ck a // PB tackle - sn) a (ck & // PB - bl) a (ck & // PB blackout - s) a (x a // PB saxofon - @l) a (g &j // PB nederlag - _v) ag (_ &j // PB - _v) ag (e_ &j // PB -lidt_v) ag (t &j // PB - gr) ape Eb // PB grapefrugt - astaire &sd'E:r // PB name - albuquerque &l/2b3kWki // PB US city - l) arge AdZ // PB - a (merikan a // PB amerikansk - aids Eids // PB - air E:3- // PB airbag, fair - n) ai (robi aI' // PB - _k) airo aIro // PB Kairo - c) ai (ro aI // PB - det) ai (l 'aI // PB detailhandel - _sin) ai aI // PB Sinai - cl) aire E:r // PB name - aubrey O:bri // PB name - audrey O:dRi // PB name - agency EjdZ@nsi // PB - ambrose &mbR0us // PB -ginger_) ale Ejl // PB - playm) ate Ejt // PB - appeal &p'il // PB sexappeal - _d) ave _^_en // PB name - _w) aco Ejkow // PB US city + klim) a & // klimarelateret + klim) a (ks A // + C) a (ck A // tackle + sn) a (ck & // + bl) a (ck & // blackout +// s) a (x A // saxofon + @l) a (g &j // nederlag + _v) ag (_ &j // + _v) ag (e_ &j // +lidt_v) ag (t &j // + gr) ape Eb // grapefrugt + astaire &sd'E:r // name + albuquerque &l/2b3kWki // US city + l) arge AdZ // + a (merikan A // amerikansk + aids Eids // + air E:3- // airbag, fair + n) ai (robi aI' // + _k) airo aIro // Kairo + c) ai (ro aI // + det) ai (l 'aI // detailhandel + _sin) ai aI // Sinai + cl) aire E:r // name + aubrey O:bri // name + audrey O:dRi // name + agency EjdZ@nsi // + ambrose &mbR0us // +ginger_) ale Ejl // + playm) ate Ejt // + appeal &p'il // sexappeal + _d) ave _^_en // name + _w) aco Ejkow // US city r) aw (+ O // OB Rawlins - l) awrence 0r@ns // PB name - b) ach ax // PB name - _) ahab Ejh&b // PB name - _) allie (_ &li // PB name - C) ayes Ejs // PB name Hayes - en_l) a (ser Ej // PB - l) a (serst Ej // PB laserstråle - l) a (serpr Ej // PB laserprinter - l) a (seren Ej // PB - l) a (sernes Ej // PB - m) ay (a aI // PB - _indi) a (na '& // PB stressed - U.S. state + l) awrence 0r@ns // name + b) ach Ax // name + _) ahab Ejh&b // name + _) allie (_ &li // name + C) ayes Ejs // name Hayes + en_l) a (ser Ej // + l) a (serst Ej // laserstråle + l) a (serpr Ej // laserprinter + l) a (seren Ej // + l) a (sernes Ej // + m) ay (a aI // + _indi) a (na '& // stressed - U.S. state -// PB stressed a in final -al in $alt words in da_list +// stressed a in final -al in $alt words in da_list &) al ($p_alt+ ''&l // fatal, monumental, krystalklar, regional - &) al (ist$p_alt+ &l // PB specialist - &) al (e_$p_alt+ ''&l // PB anale - &r) al (e_$p_alt+ 'Al // PB liberale + &) al (ist$p_alt+ &l // specialist + &) 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 - &) al (ism$p_alt+ &l' // PB socialisme + &) al (ism$p_alt+ &l' // socialisme // exception - no stress because of stressed -ion - r) a (l@@+ A // PB centralisation NEEDS MORE WORK - an) al (fabet =&l // PB - an) al (y+ &l' // PB analytiker - form) aldehyd &ld@-h'yD // PB + r) a (l@@+ A // centralisation NEEDS MORE WORK + an) al (fabet =&l // + an) al (y+ &l' // analytiker + form) aldehyd &ld@-h'yD // -// PB words in da_list with final -ance - stressed a +// words in da_list with final -ance - stressed a &) ance ($p_alt 'ANs@ // balance, romance &) ance (r$p_alt 'ANsV // nuancer voy) ance ($p_alt ''ANs // clairvoyance &) anche ($p_alt 'ANs@ // revanche - &) ance (+ ANs@ // PB unstressed after a syllable - ferieromance - &) ance (re+ ANse // PB afbalancere - &) ance (re$p_alt ANs'e // PB avancere + &) ance (+ ANs@ // unstressed after a syllable - ferieromance + &) ance (re+ ANse // afbalancere + &) ance (re$p_alt ANs'e // avancere -// PB stressed "a" in words with -ant in da_list +// stressed "a" in words with -ant in da_list &) ant ($p_alt ''&nt // interessant &r) ant ($p_alt 'Ant // [A] after "r" - kurant &r) ans ($p_alt 'Ans // tolerans &) ans ($p_alt '&ns // varians -// PB stressed a in final -at - words in da_list +// 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 @@ -714,14 +683,14 @@ ginger_) ale Ejl // PB &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 // PB clash with "obligat" in da_list - oblig) atio (n &S'o // PB statsobligation +_oblig) atio (n &S'o // clash with "obligat" in da_list + oblig) atio (n &S'o // statsobligation -// PB (stressed a in final -ar - words in da_list +// (stressed a in final -ar - words in da_list &) ar ($p_alt+ ''A // antikvar, dinar &) ar (iat$p_alt ''A // antikvariat -// PB nouns with final -ade in da_list - stressed a +// nouns with final -ade in da_list - stressed a &) ade ($p_alt '&:D@ // hystade &) ade (r$p_alt '&:DV // hystader &) ader (e$p_alt &d'er // barrikaderede - er(e) words in da_list @@ -730,7 +699,7 @@ _oblig) atio (n &S'o // PB clash with "obligat" in da_list &r) ader (e$p_alt Ad'er // paraderede - er(e) words in da_list &) adent ($p_alt &d'ent // don't spoil the -ent rule - dekad'ent -// PB nouns with final -an in da_list - stressed a +// nouns with final -an in da_list - stressed a // alt2 is used in order not to stress -ner words in da_list // where "er" has been removed eg. J'apan which becomes jap'ansk, jap'aner &) an ($p_alt2+ '&n // leguan, velan @@ -739,26 +708,26 @@ _oblig) atio (n &S'o // PB clash with "obligat" in da_list &r) an (i$p_alt2+ An' // tyrani &r) an (ne$p_alt2+ 'A // tyrannen - one n -// PB final -abel in da_list - stressed a - &) ab (el$p_alt '&b // aimabel - &r) ab (el$p_alt 'Ab // kurabel +// final -abel in da_list - stressed a + &) ab (el$p_alt '?&b // aimabel + &r) ab (el$p_alt '?Ab // kurabel &) ab (le$p_alt '&b // konstabler -// PB nouns with final -agtig in da_list - stressed a - &) agtig ($p_alt+ 'agti // tyvagtig +// nouns with final -agtig in da_list - stressed a + &) agtig ($p_alt+ 'Agti // tyvagtig -// PB nouns with final -gram in da_list - stressed a - &gr) am ($p_alt+ 'am // program - &gr) am (m$p_alt+ '?a // programmet - only one m +// nouns with final -gram in da_list - stressed a + &gr) am ($p_alt+ 'Am // program + &gr) am (m$p_alt+ '?A // programmet - only one m - erf) a (r 'A // PB erfaren, erfaring - erst) a (tning '& // PB - åbenb) a (ring 'A // PB - bef) a (ring *A // PB - besp) a (ring 'A // PB - forv) a (ring 'A PB + erf) a (r 'A // erfaren, erfaring + erst) a (tning '& + åbenb) a (ring 'A + bef) a (ring *A + besp) a (ring 'A + forv) a (ring 'A -// PB final -na - stressed previous syllable +// final -na - stressed previous syllable _aren) a =& _bandan) a =& _angin) a =& @@ -788,443 +757,430 @@ _retsin) a =& _tsarin) a =& _zarin) a =& -// PB a few words with -akt - stressed a -_abstr) a (kt 'a - _eks) a (kt 'a -_ekstr) a (kt 'a - _int) a (kt 'a -_katar) a (kt 'a - _komp) a (kt 'a - _kont) a (kt 'a -_kontr) a (kt 'a +// a few words with -akt - stressed a +_abstr) a (kt 'A + _eks) a (kt 'A +_ekstr) a (kt 'A + _int) a (kt 'A +_katar) a (kt 'A + _komp) a (kt 'A + _kont) a (kt 'A +_kontr) a (kt 'A - v) a (nlig '& // PB usædvanlig - stressed a - pal) ad (s '& // PB palads - stressed a, silent d - kart) a (go '&: // PB Kartago - stressed a - komm) a (nd '& // PB kommando - stressed - bogot) a '& // PB - kast) a (nje '& // PB stressed + v) a (nlig '& // usædvanlig - stressed a + pal) ad (s '& // palads - stressed a, silent d + kart) a (go '&: // Kartago - stressed a + komm) a (nd '& // kommando - stressed + bogot) a '& // + kast) a (nje '& // stressed foranst) a (lt '& // PN stressed - foranstaltning - org) a (s '& // PB orgasme - stressed -_psyki) a (t ''& // PB psykiater - stressed + org) a (s '& // orgasme - stressed +_psyki) a (t ''& // psykiater - stressed _bratisl) a (v '& // PM Bratislava -skandin) a (v '& // PB skandinav -jugosl) a (v '& // PB jugoslav -_vatik) a (n '& // PB Vatikanet - _prim) a (l '& // PB stressed - primalterapi - lumb) a (go '& // PB stressed - lumbago - _kapt) a (jn 'a // PB kaptajn - tilsk) a (de '& // PB tilskadekommne - al) a (sk '& // PB Alaska -_radio) a (kti 'A // PB stressed - radioaktiv -_impres) a (rio 'A // PB stressed - _rab) arber 'AbV // PB stressed - _ar) a (ber 'A // PB stressed - eng) a (ng 'a // PB stressed -_karav) a (ne '& // PB stressed -_chimp) a (n '& // PB stressed - chimpanse - pastr) a (mi 'A // PB stressed - _bar) a (k 'A // PB stressed - _kak) a (o '& // PB stressed - _can) a (dier '& // PB stressed - a (sme '& // PB orgasme, entusiasme - bl) a (d & // PB blad - h) a (n & // PB han - a (nsk ?& // PB dansk, danske - short vowel - a (ndsk ?& // PB handske - h) a (ndl ?& // PB handle - tj) a (_ &: // PB - j) avert aurt // PB javert - l) ave (ment &@ // PB lavement - l) ave (_ &v@ // PB lave - l) aver (_ &vV // PB laver - sl) ave &v@- // PB slavearbejde - sl) aver &vV // PB - sl) averi &vVr'i // PB - _enkl) a (ve+ '& // PB stressed - _enkl) aver '&vV // PB stressed - pal) a (ver+ '& PB stressed - also [aw] -kanonl) avet &vet // PB exception - French origin - freel) ance A:Ns // PB - kl) aver (_ &v'er // PB klaver - g) a (v &: // PB gav, opgave - g) avflab awfl&b // PB - g) av (tyv au // PB - b) a (jer a // PB - b) aby (+ eibi // PB baby - _) a (nder a // PB anderledes - _) anderson &ndVsVn // PB name - _) angie &ndZi // PB name - _) a (ndet & // PB andet - _) a (nden & // PB anden - t) a (bt a // PB tabte - l) a (b_+ a // PB suge på labben - fl) a (b_+ & // PB - l) a (bb a // PB labben - l) a (be & // PB laber - L08) a (bL11 &: // PB skabe - _) a (bs A // PB absolut, abstrakt, absurd - a (bc A // PB abces - ai (mabel E // PB aimabel - mir) abel Ab'El // PB mirabel(le) - p) ace eis // PB motorpace, pacemaker - pacem) a (k ei // PB pacemaker -interf) a (ce ei // PB interface -// L08) a (d &: // PB stadig - busk) ad (s '& // PB - _) a (e_ & // PB ae - a (fC+ a // PB af = au and exceptions in the f group - vodk) a & // PB vodkaflaske - a (ffære+ & // PB - st) a (ffage & // PB - a (ffutage & // PB - aftershave aftVSEjv // PB - gir) a (f 'A // PB - ri) a (m A // PB Miriam - sof) a & // PB sofafjeder - _) a (ffekt+ & // PB affekt - a (fsted+ & // PB afstedkomme - col) a & // PB colaflaske - C) a (ft A // PB haft, saft - af (tal Aw // PB frokostaftale - sl) a (L06 a // PB slap -// a (iK a - mount) ai (n e // PB mountain - cockt) ail Ejl // PB - cont) ai (n 'Ej // PB container - cr) aw V // PB Crawford - d) ay Ej // PB holyday, Holliday - h) a (sting Ej // PB Hasting -cornfl) akes Ejgs // PB - w) al (k V: // PB walkie-talkie, walkman - w) all V:l // PB WQall street - n) aise 'E:s@ // PB mayonnaise - br) ai (s E // PB braisere - k) ai (n &|'i: // PB kokain - _k) ai (n aI // PB name Kain - ld) a (k & // PB baldakin - mir) a (k 'A // PB mirakel - stressed a - t) a (lA & // PB tale - t) a (p a // PB tap - kat) a (pult &' // PB - t) a (pL11 & // PB tapet, tapas - _et) a (pe 'a // PB - t) a (pi & // PB tapir - _) aha (_ ah'a // PB - p) a (pi+ & // PB papir - replace with: p) a (CL04 ?? - p) a (pri+ a // PB paprika -// L09) a (l &: // PB male -guatem) a (l '& PB - m) alaj &l'aI // PB stressed - L09) a (ld & // PB knald - _) a (ldrig+ a // PB aldrig - a (lde & // PB alder - aldetha &ld'iT& // PB name - skr) a (l a // PB skrald -rappenskr) a (lde 'a // PB stressed - over) a (lt '& // PB stressed a in 'overalt' - _eks) a (m+ '& // PB stressed - eksamen, eksaminere -parmes) a (n '& // PB stressed - ekst) a (s '& // PB ekstase - stressed - &eks) a (m & // PB - sh) a (mL11 & // PB shaman - sh) ah & // PB silent h - sh) ahen &@-n // PB - sp) a (m &: // PB - isl) a (m 'a: // PB islam - isl) a (mi & // PB islamist - hav) a (na '& // PB stressed - j) a (men & // PB exception jamen = ja men - ch) a (n a // PB chance - v) a (j a // PB svajende, vaje -// PB general rule: [&] after p/b/d before n - L06) a (n & // PB tand, tante, band, spand, spade - L06) a (nd ?& // PB bande - ban) a (n '& // PB banan -kontrab) ande '&nd@- // PB - hvord) a (n '& // PB stressed a in 'hvordan' - g) a (ngster+ & // PB - m) anche (t ANS'E // PB manchet - hin) a (n '& // PB stressed - hinanden - _ap) a (ch '& // PB apache - pil) a (tus '& // PB Pontius Pilatus - L06) a (nk A // PB bank - sp) a (nking &: // PB - an (cien aN - a (ndre A // PB andre - t) a (nd & // PB tandrensning - _) andrea &ndr'e& // PB name - andrew &ndru // PB name - v) a (ndr A // PB vandre - v) a (ndrør & // PB - a (pote a // PB apotek - n) apoleon &p'oljVn // PB name -// L06) a (nk a // PB banke - eng) a (ng 'a // PB stressed - h) a (L01 a // PB hank, hang, bank - h) a (j a // PB haj -restaur) ant 'AN // PB added stress - l) a (p+ a // PB slap, lap - h) a (p a // PB haps - l) a (pL04+ & // PB volapyk - h) a (ppA ?& // PB happy end, happening - j) a (pp a // PB jappe - j) a (ps a // PB japser - t) a (nk A // PB tankstation - mj) a (v A // PB - kålr) a (bi 'A // PB kålrabi - stressed a - au (++ aw // PB auto, autoritet - aubergin oberS'i:n // PB - vagin) a & // PB vaginaudvider - l) aurie Ori // PB name -astron) au (t 'aw // PB stressed - _f) aux o // PB faux pas - g) auguin og'&N // PB Gauguin - au (_naturel o // PB - s) au (tere O // PB - firm) a & // PB firmaudfordring - m) aureen OR'i:n // PB name -_dinos) aur 'auV // PB stressed -_dinos) aurer 'aurV // PB stressed - ch) au (vin o // PB chauvinist - _p) au (l O // PB name - _biss) au 'a:w // PB Guinea-Bissau - s) au (ce O: // PB sauce, bearnaisesauce +skandin) a (v '& // skandinav +jugosl) a (v '& // jugoslav +_vatik) a (n '& // Vatikanet + _prim) a (l '& // stressed - primalterapi + lumb) a (go '& // stressed - lumbago + _kapt) a (jn 'a // kaptajn + tilsk) a (de '& // tilskadekommne + al) a (sk '& // Alaska +_radio) a (kti 'A // stressed - radioaktiv +_impres) a (rio 'A // stressed + _rab) arber 'AbV // stressed + _ar) a (ber 'A // stressed + eng) a (ng 'A // stressed +_karav) a (ne '& // stressed +_chimp) a (n '& // stressed - chimpanse + pastr) a (mi 'A // stressed + _bar) a (k 'A // stressed + _kak) a (o '& // stressed + _can) a (dier '& // stressed + a (sme '& // orgasme, entusiasme + bl) a (d & // blad + h) a (n & // han + a (nsk ?& // dansk, danske - short vowel + a (ndsk ?& // handske + h) a (ndl ?& // handle + tj) a (_ &: // + j) avert A?uVd // javert + l) ave (ment &@ // lavement + l) ave (_ &v@ // lave + l) aver (_ &vV // laver + sl) ave &v@- // slavearbejde + sl) aver &vV // + sl) averi &vVr'i // + _enkl) a (ve+ '& // stressed + _enkl) aver '&vV // stressed + pal) a (ver+ '& // stressed - also [aw] +kanonl) avet &vEd // exception - French origin + freel) ance A:Ns // + kl) aver (_ &v'er // klaver + g) a (v &: // gav, opgave + g) avflab awfl&b // + g) av (tyv a?u // + b) a (jer A // + b) aby (+ Ejbi // baby + _) a (nder A // anderledes + _) anderson &ndVsVn // name + _) angie &ndZi // name + _) a (ndet & // andet + _) a (nden & // anden + t) a (bt A // tabte + l) a (b_+ A // lab + fl) a (b_+ & // + l) a (bb ?A // labben + l) a (be & // laber + L08) a (bL11 &: // skabe + _) a (bs A // absolut, abstrakt, absurd + a (bc A // abces + ai (mabel E // aimabel + mir) abel Ab'El // mirabel(le) + p) ace Eis // motorpace, pacemaker + pacem) a (k Ei // pacemaker +interf) a (ce Ei // interface + busk) ad (s '& // + _) a (e_ & // ae + a (fC+ A // [Af] = [au] and exceptions in the f group + st) af (f & // staffet, staffeli + k) aff (e+ ?Af // skaffe, kaffe + vodk) a & // vodkaflaske + a (ffære+ & // + st) a (ffage & // + a (ffutage & // + aftershave aftVSEjv // + gir) a (f 'A // + ri) a (m A // Miriam + sof) a & // sofafjeder + _) a (ffekt+ & // affekt + a (fsted+ & // afstedkomme + col) a & // colaflaske + C) a (ft A // haft, saft + af (tal Aw // frokostaftale + sl) a (L06 A // slap + mount) ai (n e // mountain + cockt) ail Ejl // + cont) ai (n 'Ej // container + cr) aw V // Crawford + d) ay Ej // holyday, Holliday + h) a (sting Ej // Hasting +cornfl) akes Ejgs // + w) al (k V: // walkie-talkie, walkman + w) all V:l // WQall street + n) aise 'E:s@- // mayonnaise + br) ai (s E // braisere + k) ai (n &|'i: // kokain + _k) ai (n aI // name Kain + ld) a (k & // baldakin + mir) a (k 'A // mirakel - stressed a + t) a (lA & // tale + t) a (p A // tap + kat) a (pult &' // + t) a (pL11 & // tapet, tapas + _et) a (pe 'A // + t) a (pi & // tapir + _) aha (_ Ah'A // + p) a (pi+ & // papir - replace with: p) a (CL04 ?? + p) a (pri+ A // paprika +guatem) a (l '& + m) alaj &l'aI // stressed + L09) a (ld & // knald + _) a (ldrig+ A // aldrig + a (lde & // alder + aldetha &ld'iT& // name + skr) a (l A // skrald +rappenskr) a (lde 'A // stressed + over) a (lt '& // stressed a in 'overalt' + _eks) a (m+ '& // stressed - eksamen, eksaminere +parmes) a (n '& // stressed + ekst) a (s '& // ekstase - stressed + &eks) a (m & // + sh) a (mL11 & // shaman + sh) ah & // silent h + sh) ahen &@-n // + sp) a (m &: // + isl) a (m 'A: // islam + isl) a (mi & // islamist + hav) a (na '& // 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+ & // + m) anche (t ANS'E // manchet + hin) a (n '& // stressed - hinanden + _ap) a (ch '& // apache + pil) a (tus '& // Pontius Pilatus + 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 + h) a (ppA ?& // happy end, happening + 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 + l) aurie Ori // name +astron) au (t 'Aw // stressed + _f) aux o // faux pas + g) auguin og'&N // Gauguin + au (_naturel o // + s) au (tere O // + firm) a & // firmaudfordring + m) aureen OR'i:n // name +_dinos) aur 'A?uV // stressed +_dinos) aurer 'W?urV // stressed + ch) au (vin o // chauvinist + _p) au (l O // name + _biss) au 'A:w // Guinea-Bissau + s) au (ce O: // sauce, bearnaisesauce ch) au (f o rest) au (r o - s) au (terne o // PB wine - @h) av_ Au // PB ildhav -[Au] = [&v] followed by syllable: ['ilh&:v@D] - en_k) ar (l ?& // PB "sikke en karl" - @k) ar (l ?& // PB bøssekarl, forkarl - k) ar (lene & // PB - afrik) aa (n A: // PB afrikaaner - action &kSj@n // PB actionfilm + s) au (terne o // wine + @h) av_ A?u // ildhav -[Au] = [&v] followed by syllable: ['ilh&:v@D] + en_k) ar (l ?& // "sikke en karl" + @k) ar (l ?& // bøssekarl, forkarl + k) ar (lene & // + afrik) aa (n A: // afrikaaner + action &kSj@n // actionfilm aircondition E:rkVndi:S@n akkordeon &k'V:deVn attention at'EnS@n - athen &t'en // PB Athen - andrews &ndRu:s // PB - angeles &ndZ3lEs // PB - arrow &Rou // PB - abilene &bili:n // PB - _) abby &bi // PB name - avery Ejvri // PB name - r) andolph &ndVlf // PB name - sp) alding Old,eN // PB name - r) a (oul A' // PB name - alejandro _^_es // PB name - arkansas Ak@nsO: // PB - s) ally ?&li // PB - sar) ah A // PB name - th) a (nks & // PB thanksgiving - all (_right Ol // PB - str) abads Ab'&s // PB stressed a, silent d -disput) a (ts '& // PB stressed -amsterd) a (m 'a // PB + athen &t'en // Athen + andrews &ndRu:s // + angeles &ndZ3lEs // + arrow &Rou // + abilene &bili:n // + _) abby &bi // name + avery Ejvri // name + r) andolph &ndVlf // name + sp) alding Old,eN // name + r) a (oul A' // name + alejandro _^_es // name + arkansas Ak@nsO: // + s) ally ?&li // + sar) ah A // name + th) a (nks & // thanksgiving + all (_right Ol // + str) abads Ab'&s // stressed a, silent d +disput) a (ts '& // stressed +amsterd) a (m 'A // seb) a (stian '& // PN stressed - _te) a (ter '& // PB stressed - byz) a (ns_ '& // PB stressed -_domin) a (n '& // PB stressed - dominans - top) a (s '& // PB stressed - sm) a (ck & // PB - aw (K aw - ay (K Ej // PB a changed to E - p) ayne Ejn // PB name - bookm) a (ker Ej // PB - _v) agas Ejg@s // PB Las Vegas - b) acon (+ EjkVn // PB - taleb) a (n '& // PB - sm) aragd ar'Awd // PB gem stone - _klo) a (k+ 'A: // PB -volleyb) all O:l // PB -dovenl) ar (s & // PB - st) ation (car EjS3n // PB - avantgarde &vANg'ard3 // PB - -.group af - - k) aff (e af // retskaffen - l) aff (e af // blaffe, plaffe - t) aff (e af // taffel - st) aff (e &f // PB staffeli - _p) af af // -// 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 + _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 + p) ayne Ejn // name + bookm) a (ker Ej // + _v) agas Ejg@s // Las Vegas + b) acon (+ EjkVn // + taleb) a (n '& // + sm) aragd Ar'Awd // gem stone + _klo) a (k+ 'A: // +volleyb) all O:l // +dovenl) ar (s & // + st) ation (car EjS@-n // + avantgarde &vANg'Ad@- // .group ag -// PB (French) nouns with final -age and with $alt flag in da_list +// (French) nouns with final -age and with $alt flag in da_list // stressed a, "age" pronounced [aS@] &) age ($p_alt+++ '&:S@ // ravage, bagage &) age (r$p_alt++ '&:SV // reportager, plamager &r) age ($p_alt++ 'A:S@ // [A] after "r" - garage &) age (re$p_alt+ &S'e@ // not for the "age" words - gagere hjertemass) age &:S@- // hjertemassage - et) age (+ &:S@- // PB stueetage - t) aget (+ &@D // PB kirketaget - [@-] is too short here - t) age (lse &@- // PB tilfangetagelse - foret) age & // PB - bet) age &@- // PB betaget - varet) age & // PB + et) age (+ &:S@- // stueetage + t) aget (+ &@D // kirketaget - [@-] is too short here + t) age (lse &@- // tilfangetagelse + foret) age & // + bet) age &@- // betaget + varet) age & // -//PB general rule: "ag" words silent g - d) ag (_ &j // PB dag - d) ag (e+ & // PB dage - d) ag (s_ & // PB en dags tid - d) ag (l@+ Au // PB daglejer - d) ag (insti Au // PB daginstitution - @d) ag (_++ & // PB dommedag - sd) ag (+ & // PB fødselsdagsgave, fødselsdagsbarn - d) ag (og+ &g // PB pædagog - _j) ag (_ &j // PB - j) ag (e+ &: // PB jage - j) ag (uar ag // PB - j) ag (t ag // PB jagt - b) ag (h+ Au // PB baghold - b) ag (l Au // baglader, baglæns - b) ag (L01 Au // bagklog, baggård - b) ag (f Au // bagflikke - b) ag (b Au // bagbutik - b) ag (rud Au // PB bagrude - b) ag (d Au // bagdør - b) ag (v Au // bagvendt, bagværk - b) ag (trap Au // PB bagtrappe - b) ag (An Au // Bagindien, baginder - b) agend (e AuEn // PB bagende "rear end" - problem with "bagende varm" - b) agend (e_varm &j3n // PB - b) agend (e_sol &j3n // PB - b) agend (e_hed &j3n // PB - b) ag (k Au // bagklog, bagkrop - b) ag (m Au // bagmand - b) ag (p Au // PB bagparti - b) ag (s Au // PB bagside - b) ag (t@ Au // PB bagtøj - s) ag (sø Au // PB sagsøge - b) ag (te Ag // PB nybagte - _L06) ag (_ &j // PB bag - single word -hjemmeb) ag (_ &j // PB +// general rule: "ag" words silent g + d) ag (_ &j // dag + d) ag (e++ &: // dage + d) ag (s_ & // en dags tid + d) ag (l@+ Aw // daglejer + d) ag (insti Aw // daginstitution + @d) ag (_++ & // dommedag + sd) ag (+ & // fødselsdagsgave, fødselsdagsbarn + d) ag (og+ &g // pædagog + _j) ag (_ &j // + j) ag (e+ &: // jage + j) ag (uar Ag // + j) ag (t Ag // jagt + b) ag (h+ Aw // baghold + b) ag (l Aw // baglader, baglæns + b) ag (L01 Aw // bagklog, baggård + b) ag (f Aw // bagflikke + b) ag (b Aw // bagbutik + b) ag (rud Aw // bagrude + b) ag (d Aw // bagdør + b) ag (v Aw // bagvendt, bagværk + b) ag (trap Aw // bagtrappe + b) ag (An Aw // Bagindien, baginder + b) agend (e AwEn // bagende "rear end" - problem with "bagende varm" + b) agend (e_varm &j3n // + b) agend (e_sol &j3n // + b) agend (e_hed &j3n // + b) ag (k Aw // bagklog, bagkrop + b) ag (m Aw // bagmand + b) ag (p Aw // bagparti + b) ag (s Aw // bagside + b) ag (t@ Aw // bagtøj + s) ag (sø Aw // sagsøge + b) ag (te Ag // nybagte + _L06) ag (_ &j // bag - single word +hjemmeb) ag (_ &j // b) ag (fr &, // bagfra - b) ag (i &, // PB bagi - b) ag (ved &_: // PB bagved - b) ag (efter &j // PB bagefter - b) ag (på &, // PB bagpå - b) ag (over &_: // PB bagover - b) ag (til &, // PB bagtil - b) ag (ud &_: // PB bagud - b) ag (udgang Au // PB bagudgang - p) age (++ &:S@ // PB page, pagehår - band) age &:S@ // PB gipsbandage - sC) ag (+ &j // PB slag, slaget, Skagen, smag, forslagskasse - st) agn AuN // PB stagnere - sp) ag (at &g // PB - sk) ag (ler Aw // PB - kast) agn (et &nj' // PB kastagnetter - sl) ag (C@ au // PB slagskib - sl) ag (_kort aw // PB "et slag kort" + b) ag (i &, // bagi + b) ag (ved &_: // bagved + b) ag (efter &j // bagefter + b) ag (på &, // bagpå + b) ag (over &_: // bagover + b) ag (til &, // bagtil + b) ag (ud &_: // bagud + b) ag (udgang Au // bagudgang + p) age (++ &:S@- // page, pagehår + band) age &:S@- // gipsbandage + sC) ag (+ &j // slag, slaget, Skagen, smag, forslagskasse + st) agn AwN // stagnere + sp) ag (at &g // + sk) ag (ler Aw // + kast) agn (et &nj' // kastagnetter + sl) ag (C@ Aw // slagskib + sl) ag (_kort Aw // "et slag kort" l) ag (re+ &j // PO overskudslagre - pell) ag (ra &g // PB - sl) agg (e ?ak // PB slagger - C) ag (t+ ag // PB venskabspagt, smagte, sagt - b) ag (tal aw // PB bagtalt - sl) ag (ne &j // PB rædselsslagne + pell) ag (ra &g // + sl) agg (e ?Ak // slagger + C) ag (t+ Ag // venskabspagt, smagte, sagt + b) ag (tal Aw // bagtalt + sl) ag (ne &j // rædselsslagne l) ag (_ &j // lag - forl) ag %&j // PB forlagsvirksomhed - opsl) ag &j // PB - f) ag (@ au // PB fagsnak, ufaglært, fagarbejde - f) ag (ter ag // PB - l) ag (C au // PB flagstang, lagkage - fl) ag (afbrænd au // PB flagafbrænding - gall) agh 3g // PB name - _sl) ag (s_ ?ag // PB slags - _sl) ag (sen ?ag // PB slagsen -gennemsl) ag (+ &j // PB gennemslagskraft - sl) ag (sværd au // PB - pl) ag &j // PB plagsom - pl) ag (i &g // PB plagiere, plagiat - fl) ag (rant &g // PB flagrante delicto - l) ag (re &j // PB oplagres - fl) ag (re au // PB - esl) ag (lA Au // PB beslaglægge - sl) ag (te+ ag // PB slagter - sl) ag (tn+ ag // PB slagtning - sv) ag (t &j // PB svagt, åndssvagt -sikkerhedsv) ag (t ag // PB -åndssv) ag &j // PB -evnesv) ag &j // PB -parkeringsv) ag (t ag // PB - æresv) ag (t ag // PB -butiksv) ag (t ag // PB -hospitalsv) ag (t ag // PB -// m) ag (t ag // PB verdensmagt - sl) ag (smål Au // slagsmål - sl) ag (tilf Au // PB slagtilfælde - sl) ag (side Au // PB slagside - sp) ag (ett &g' // PB spagetti - sp) agh (ett &g' // PB spaghetti - sp) ag (num Au // PB - r) ag (e+ Au // PB drage, rage - C) age (++ &:j@- // PB bage, kage - C) age (nK++ &j@- // PB sagen, kagen - b) ag (efter++ &j // PB - age (lig '&j@- // PB uindtagelig, behagelig - stressed - arm) aged &g'Ed // PB Armageddon - arm) agedd &g'Ed // PB Harmagedon - mut) age (n &g'e // PB stressed - affut) age &:S@ // PB missilaffutage -// bag) age &:S3 // PB håndbagage - _b) ag (el+ Ejg // PB - age (rn &jV // PB "acorn" - _) age (_ &j@- // PB "age med heste" - _) ager (_ &jV // PB "field" - ager (høn &jV // PB agerhøne/høns - l) ag (n &j // PB lagner - sl) ag (ni+ &j // PB rådslagning - ass) age &S@ // PB rygmassage - plant) age &S@ // PB citronplantage - on) age &S@ // PB kontraspionage - C) ager (+ &jV // PB bagerst, kager - b) age (rul &j@ // PB bagerulle - b) ag (eri+ &j // PB bager'i - et) ager &SV // PB treetagers - foret) ager Ar // PB - g) age (_+ &:S@ // PB - fl) ager (mus AuV // PB - l) agde &:@- // PB lagde - g) ager (e+ &S'e // PB gagere - r) age (++++ Aw@- // PB rage, fremragende, uddragene - _) age (nt++ &g'E // PB agent, agenten - stressed - age (nt++ &gE // PB superagenten, dobbeltagent, forsikringsagent -rædselssl) age (n &j@ // PB rædselsslagent - suffr) age (tte AS'E // PB suffragette - stressed - r) ager (+++ AwV // PB rager - tr) agedie Ag'eDj@ // PB - _t) ager (_ Ar // PB tager [t'Ar] - iagtt) ager (_ &jV // PB iagttager - noun - t) ag (_ &j // PB tag - t) ag (C aw // PB tagvindue - ag (ning &j // PB gidseltagning - ag (tig ag // PB rustagtig - art) agnan &NAN // PB d'Artagnan - t) ag (ne &j // PB tilfangetagne - t) ag (fat & // PB - t) agetes &g'et3s // PB - t) ag (selv &' // PB tagselvbord - t) agg (e &g // PB - t) ag (liatelle _^_it // PB -// s) ag (t+ ag // PB sagt - _s) ag (te_ &j // PB - s) ag (n Au // PB sagn - rans) ag (n &j // PB ransagning - las) agn (e '&nj // PB - bret) agn (e '&n; // PB - s) agd (e+ &: // PB sagde - tilb) ag (e '&:; // PB stressed a in 'tilbage' + forl) ag %&j // forlagsvirksomhed + opsl) ag &j // + f) ag (@ A?u // fagsnak, ufaglært, fagarbejde + f) ag (ter Ag // + l) ag (C A?u // flagstang, lagkage + fl) ag (afbrænd A?u // flagafbrænding + gall) agh 3g // name + _sl) ag (s_ ?Ag // slags + _sl) ag (sen ?Ag // slagsen +gennemsl) ag (+ &j // gennemslagskraft + sl) ag (sværd A?u // + pl) ag &j // plagsom + pl) ag (i &g // plagiere, plagiat + fl) ag (rant &g // flagrante delicto + l) ag (re &j // oplagres + fl) ag (re+ A?u // + esl) ag (lA A?u // beslaglægge + sl) ag (te+ Ag // slagter + sl) ag (tn+ Ag // slagtning + sv) ag (t &j // svagt, åndssvagt +sikkerhedsv) ag (t Ag // +åndssv) ag &j // +evnesv) ag &j // +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 + sp) ag (ett &g' // spagetti + 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 + _t) age (_+ &j@- // tage + cart) age (na &g'e: // name + b) ag (efter++ &j // + age (lig '&j@- // uindtagelig, behagelig - stressed + arm) aged &g'Ed // Armageddon + 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" + _) ager (_ &jV // "field" + ager (høn &jV // agerhøne/høns + l) ag (n &j // lagner + sl) ag (ni+ &j // rådslagning + ass) age &S@- // rygmassage + plant) age &S@- // citronplantage + on) age &S@- // kontraspionage + C) ager (++ &jV // bagerst, kager, opdager + b) age (rul &j@- // bagerulle + b) ag (eri+ &j // bager'i + et) ager &SV // treetagers + foret) ager Ar // + g) age (_+ &:S@- // + fl) ager (mus A?uV // + l) agde &:@- // lagde + g) ager (e+ &S'e // gagere + r) age (++++ Aw@- // rage, fremragende, uddragene + _) age (nt++ &g'E // agent, agenten - stressed + age (nt++ &gE // superagenten, dobbeltagent, forsikringsagent +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] + iagtt) ager (_ &jV // iagttager - noun + t) ag (_ &j // tag + t) ag (C Aw // tagvindue + ag (ning &j // gidseltagning + ag (tig Ag // rustagtig + art) agnan &NAN // d'Artagnan + t) ag (ne &j // tilfangetagne + t) ag (fat & // + t) agetes &g'et3s // + t) ag (selv &' // tagselvbord + t) agg (e &g // + t) ag (liatelle _^_it // + _s) ag (te_ &j // + s) ag (n A?u // sagn + rans) ag (n &j // ransagning + las) agn (e '&nj // + bret) agn (e '&n; // + s) agd (e+ &: // sagde + tilb) ag (e '&:; // stressed a in 'tilbage' .group al - // PB final -ale - stressed a + // final -ale - stressed a _bienn) al '&l -_differenti) ale '&l@ +_differenti) ale '&l@- _fin) al (e '&l _forh) al (e '&l _form) al (e '&l @@ -1249,100 +1205,99 @@ _speci) ale (_ '&l@ _timb) al (e '&l _trienn) al (e '&l _urin) al ''&l - seksu) al '&l // PB seksualliv + seksu) al '&l // seksualliv sped) al (sk '&l .group b b b - b (_ p // PB klub - [b] almost disappears bb b - ko) bb (er w // PB - pe) b (re w // PB - kø) b (ma // PB købmand - silent b - kø) b (mæ // PB købmænd - silent b - beagle bi:g@l //PB beagle - dog - braille braI: // PB - bouill (on bulj // PB - bloody blVdi // PB - bonsoir _^_fr // PB - byron _^_en // PB name - _) beat b'i:t // PB beat - music - bea (tri be&' // PB Beatrice - beaujolais boSjol'E // PB wine, district - bebop bi:bVp // PB music - babylon b&bylVn // PB - babylon (isk b&bylon // PB - babylon (er b&byl'on // PB babylonerne - stressed - backgammon b&g'&m3n // PB - baryton baitVn // PB - brintion brendjo:n // PB - bonkammerat b'VNkam@rAt // PB - brown _^_EN // PB name - birmingham bWmiN@m // PB city - bingham beN3m // PB name - bellevue bEl@v'y // PB - _) backup b&k'Vb // PB - bourgogne burg'Vnj@ // PB - pe) b (er w // PB peber - _) buffet byf'e // PB - @) buffet byf'e // PB - _) balkon b&lk'VN // PB - balkon b&lkVN // PB + ko) bb (er w // + pe) b (re w // + kø) b (ma // købmand - silent b + kø) b (mæ // købmænd - silent b + beagle bi:g@l // beagle - dog + braille braI: // + bouill (on bulj // + bloody blVdi // + bonsoir _^_fr // + byron _^_en // name + _) beat b'i:t // beat - music + bea (tri be&' // Beatrice + beaujolais boSjol'E // wine, district + bebop bi:bVp // music + babylon b&bylVn // + babylon (isk b&bylon // + babylon (er b&byl'on // babylonerne - stressed + backgammon b&g'&m3n // + baryton baitVn // + brintion brendjo:n // + bonkammerat b'VNkam@rAt // + brown _^_EN // name + birmingham bWmiN@m // city + bingham beN3m // name + bellevue bEl@v'y // + _) backup b&k'Vb // + bourgogne burg'Vnj@ // + pe) b (er w // peber + _) buffet byf'e // + @) buffet byf'e // + _) balkon b&lk'VN // + balkon b&lkVN // &) bassin b&s'EN // svømmebassin - basketball bAsgetbO:l // PB - baseball bejsBO:l/2 // PB - butterfly bVtVflaI // PB - beach bi:tS // PB Beach Boys - _) blake blEjk // PB name - _) bligh blaI: // PB name - burton bWtVn // PB name - bugsy bVgsi // PB name - baltimore bOltimV: // PB US city - burgh bW:g // PB Pittsburgh - bike baIk // PB mountainbike, bikermiljø - _) buic bjuik // PB car brand - t_) bone bOwn // PB T-bone-steak - bernie bWni // PB name - beverly bEvVli // PB - bei (rut baI // PB - fris) bee bi // PB - burgess bWdZes // PB name - borough bVrV // PB Peterborough - buffalo bVf3lOw // PB - barbie bArbi // PB name - billie bil/2i // PB name - bovary bovar'?i // PB name - bodyguard bVdigA:d // PB - bodystocking bVdistVkeN // PB - broad brOd // PB Broadway - boudoir budw'A: // PB - bouillabaisse bujab'Es // PB - board bO:d // PB keyboard - _) bruce bRu:s // PB name - business besnEs // PB - beijing bEjdZ'eN // PB - bui (lding be // PB - browser bRAwsV // PB - _) butte (_ bju:t // PB city in Montana + basketball bAsgetbO:l // + baseball bejsBO:l/2 // + butterfly bVtVflaI // + beach bi:tS // Beach Boys + _) blake blEjk // name + _) bligh blaI: // name + burton bWtVn // name + bugsy bVgsi // name + baltimore bOltimV: // US city + burgh bW:g // Pittsburgh + bike baIk // mountainbike, bikermiljø + _) buic bjuik // car brand + t_) bone bOwn // T-bone-steak + bernie bWni // name + beverly bEvVli // + bei (rut baI // + fris) bee bi // + burgess bWdZes // name + borough bVrV // Peterborough + buffalo bVf3lOw // + barbie bArbi // name + billie bil/2i // name + bovary bovar'?i // name + bodyguard bVdigA:d // + bodystocking bVdistVkeN // + broad brOd // Broadway + boudoir budw'A: // + bouillabaisse bujab'Es // + board bO:d // keyboard + _) bruce bRu:s // name + business besnEs // + beijing bEjdZ'eN // + bui (lding be // + browser bRAwsV // + _) butte (_ bju:t // city in Montana .group be -// PB words beginning with "be" with stress on the second syllable (850) +// words beginning with "be" with stress on the second syllable (850) // They have secondary stress on the second syllable with a preceeding syllable - _) be (@ b%e // PB besta'and + _) be (@ b%?e // besta'and -// PB exceptions to the "be" rule +// exceptions to the "be" rule _) be (dste b?E // bedstefar, bedstemor _) be (dring bE _) be (nmel be _) be (gge b?E _) be (narbejde be _) be (nbrud be - _) be (nbræk bE + _) be (nbræk be _) be (nbbuk be _) be (nchmark bE _) be (nedder be - _) be (nende bE + _) be (nende be _) be (net be _) be (nfisk be _) be (nfedt be @@ -1368,7 +1323,7 @@ _trienn) al (e '&l _) beg (mand baI _) beg (ning baI _) be (jds bE - _) be (jle ba + _) be (jle bA _) be (lgi bE _) be (rb bE _) be (rgen_ bE @@ -1380,26 +1335,26 @@ _trienn) al (e '&l _) be (taversion be _) be (tel be _) be (tl be - _) be (ta be // PB betablokker - _) be (tal %be // PB betale, betalt - _) beige bE:S // PB colour + _) be (ta be // betablokker + _) be (tal %be // betale, betalt + _) beige bE:S // colour _) be (lla bEE _) beech bitS - _) beau %bo // PB Beaulieu, Beaumont - beethoven betov@-n // PB name - berkeley bWkl/2i // PB + _) beau %bo // Beaulieu, Beaumont + beethoven betov@-n // name + berkeley bWkl/2i // .group c c k - fran) cs k // PB French currency - silent s - c (e s // PB chance - s) cene en@- // PB forførelsescene - s) cener enV // PB forførelsescener + fran) cs k // French currency - silent s + c (e s // chance + s) cene en@- // forførelsescene + s) cener enV // forførelsescener -// PB nouns in da_list with final -ce - stress on previous syllable - &) ce (_$p_alt =s@ // ekspeditrice - &) ce (n$p_alt =s@ // ekspeditricen +// nouns in da_list with final -ce - stress on previous syllable + &) ce (_$p_alt =s@- // ekspeditrice + &) ce (n$p_alt =s@- // ekspeditricen &) ce (r$p_alt =sV // ekspeditricer &) cer ($p_alt =s''er // placér &) cer (e$p_alt =s''e // placere @@ -1409,347 +1364,347 @@ _trienn) al (e '&l &) cere ($p_alt =s''eV // annoncerede &) cér (_ s'er // annoncér &) cør (_ s'Wr // annoncør -diskvalifi) cer ser // PB - produ) ceren =sVVn // PB +diskvalifi) cer ser // + produ) ceren =sVVn // - c (y s // PB s followed by y - cykel - cyper kypV // PB Cypern - curler kWlV // PB - _) clarence kl&R@ns // PB name - _) capone k&p'Own // PB name - A) c (e s // PB race, procent -cadilla) c k // PB Cadilacen - _offi) ce (r s'e // PB officer - offi) ce (r se // PB sprogofficer - ce (rt s'E // PB koncert - corn (f kV:n // PB cornflakes + c (y s // s followed by y - cykel + cyper kypV // Cypern + curler kWlV // + _) clarence kl&R@-ns // name + _) capone k&p'Own // name + A) c (e s // race, procent +cadilla) c k // Cadilacen + _offi) ce (r s'e // officer + offi) ce (r se // sprogofficer + ce (rt s'E // koncert + corn (f kV:n // cornflakes c (i s -frederi) c (ia =ks // PB - _pa) c (ino tS' // PB name - scor) c (ese tS' // PB name - ch (loe k // PB Chloe +frederi) c (ia =ks // + _pa) c (ino tS' // name + scor) c (ese tS' // name + ch (loe k // Chloe c (k - c (ølibat s // PB - ch (+ S // PB check, chokolade - ch (i tS // PB chili - ch (eese tS // PB cheeseburger - _ma) ch (_ k // PB sound barrier - chaplin tS&plin // PB name - challenge tS&lendZ // PB - chelsea tSElsi // PB - cheyenne SaI'En // PB - maso) ch (is k // PB sadomasochisme, masochist - wi) ch tS // PB sandwich - chicago Sik'AgOw // PB - child tSaIld // PB Fairchild - chopin SopEN // PB name - ch (ip tSj // PB mikrochip - te) ch (no k //& PB + c (ølibat s // + ch (+ S // check, chokolade + ch (i tS // chili + ch (eese tS // cheeseburger + _ma) ch (_ k // sound barrier + chaplin tS&plin // name + challenge tS&lendZ // + chelsea tSElsi // + cheyenne SaI'En // + maso) ch (is k // sadomasochisme, masochist + wi) ch tS // sandwich + chicago Sik'AgOw // + child tSaIld // Fairchild + chopin SopEN // name + ch (ip tSj // mikrochip + te) ch (no k // mi) ch (a k S ch (r k c (ha S - r) ch S // PB march - chaucer tSO:sV // PB name - s) c (ha // PB no extra S in 'schalburtage' + r) ch S // march + chaucer tSO:sV // name + s) c (ha // no extra S in 'schalburtage' cigaret sig3r'&#t cigarett sig3r'&#t - cc ks // PB accent - ro) cc (o k // PB name - pu) ccini S'ini // PB name - rebe) cc (a =k // PB name - so) cc (er k // PB European football - sta) cc (ato k' // PB - pi) cc (o k // PB piccolo - cappu) cc (ino tSj' // PB + cc ks // accent + ro) cc (o k // name + pu) ccini S'ini // name + rebe) cc (a =k // name + so) cc (er k // European football + sta) cc (ato k' // + pi) cc (o k // piccolo + cappu) cc (ino tSj' // fa) c (ad s fa) c (on s - ceylon saIl/2Vn // PB - cornichon kVrniS'VN // PB - charlie tSAli // PB - charles tSA:ls // PB - cynthia senTi& // PB name - c (æsar s // PB - cordelia kVd'ili-& // PB - ni) ch (ol k // PB Nicholas - computer kVmpj'u:tV // PB - cha (t tj& // PB chatte - ch (ateau S // PB - chianti kj'&nti // PB - chokeren (_ SOwkVr@n // PB - callgirl kVlgW:l // PB + ceylon saIl/2Vn // + cornichon kVrniS'VN // + charlie tSAli // + charles tSA:ls // + cynthia senTi& // name + c (æsar s // + cordelia kVd'ili-& // + ni) ch (ol k // Nicholas + computer kVmpj'u:tV // + cha (t tj& // chatte + ch (ateau S // + chianti kj'&nti // + chokeren (_ SOwkVr@n // + callgirl kVlgW:l // cowboy kaubOj - _) custer kVstV // PB name - _) ciao (_ tSjAw // PB - claude klO:d // PB name - claudette klOd'et // PB name - churchill tSW:Sil // PB - cambridge kejmbRidZ // PB - canterbury k&ntVbri // PB - connecticut kVn'etikVd // PB - carlisle kAlaIl // PB - china tjaIn& // PB - _) cape (_town kEjp // PB name - _) chuck tSVk // PB name - cleveland kli:vl&n // PB - croissant kroas'AN // PB - _) cartier kartj'e // PB - clair (voy klEr // PB clairvoyance - co (nrad kV // PB name - country kVntri // PB - chagall S&g'&l // PB name - _ali) ce s // PB - connie kVni // PB - chablis S&bl'i // PB - creme kr?Em // PB - creme (n kr?Em@ // PB - catering kEit@riN // PB -piccadilly_) circus sWk@s // PB - coleridge kOwlridZ // PB - colada kol'AD& // PB - creek kri:k // PB - camembert kamANb'Er // PB - crazy kREjsi // PB Crazy Horse - cincinnati sensin'&ti // PB - chihuahua tSiw'awa // PB - connor kVnV // PB name - creasy krisi // PB name - c (ello Sj // PB - c (ellofan s // PB - cutler kVtlV // PB name - cajun kEdZ3n // PB English pronunciation - courtney kO:tni // PB -north_) carolina k&rol'aIn& // PB - _) cathy k&Ti // PB name - _) cagney k&gni // PB name - cottage kVtidZ // PB + _) custer kVstV // name + _) ciao (_ tSjAw // + claude klO:d // name + claudette klOd'et // name + churchill tSW:Sil // + cambridge kejmbRidZ // + canterbury k&ntVbri // + connecticut kVn'etikVd // + carlisle kAlaIl // + china tjaIn& // + _) cape (_town kEjp // name + _) chuck tSVk // name + cleveland kli:vl&n // + croissant kroas'AN // + _) cartier kArtj'e // + clair (voy klEr // clairvoyance + co (nrad kV // name + country kVntri // + chagall S&g'&l // name + _ali) ce s // + connie kVni // + chablis S&bl'i // + creme kr?Em // + creme (n kr?Em@ // + catering kEit@riN // +piccadilly_) circus sWk@s // + coleridge kOwlridZ // + colada kol'AD& // + creek kri:k // + camembert kAmANb'Er // + crazy kREjsi // Crazy Horse + cincinnati sensin'&ti // + chihuahua tSiw'awa // + connor kVnV // name + creasy krisi // name + c (ello Sj // + c (ellofan s // + cutler kVtlV // name + cajun kEdZ3n // English pronunciation + courtney kO:tni // +north_) carolina k&rol'aIn& // + _) cathy k&Ti // name + _) cagney k&gni // name + cottage kVtidZ // cheryl SErel/2 - cohen kOu@n // PB name - cieux sj'W // PB Bonacieux - _) cardin kArd'&N // PB name - cézanne ses'&n // PB Cézanne - cézannen ses'&n3n // PB Cézannen - cockney kVkni // PB - clerk klA:k // PB Clerkenwell - carmine kA:maIn // PB name + cohen kOu@-n // name + cieux sj'W // Bonacieux + _) cardin kArd'&N // name + cézanne ses'&n // Cézanne + cézannen ses'&n@-n // Cézannen + cockney kVkni // + clerk klA:k // Clerkenwell + carmine kA:maIn // name .group d d d - A) de (_ D@-_| // PB hade, lade - ski) de D@- // PB skidefuld - ba) de D@- // PB badeforhæng - ga) de D@- // PB gadebetjent - væ) dde (+ D@- // PB væddeløb - orki) de d'e // PB stressed - d (i d // PB redigere, hindi - ly) d D // PB lydisolering - drome) d (ar d // PB - floy) d d // PB name - mel) d (ing // PB - A) d (ig D // PB stadig - vene) d (ig d // PB - d (øm d // PB idømme - i) d (ol d // PB - u) d (i D // PB - hou) di (ni d'i // PB name - _pro) du (kt d'O // PB produkt - _pro) du (ktiv du // PB produktiv - bo) d (ega d // PB - d (us d // PB fidus - d (ok d // PB paradoks, tørdok - a) de (Cr D@- // PB badedragt - not tested - y) de D@- // PB brydehold - y) der DV // PB yderligere - gry) de (ret D@- // PB gryderet - sy) de (ng DE // PB sydengland - by) de (l de // PB bydel - indby) de D@- // PB indbydelse - by) d (elig D // PB modbydelig - y) der (_ DV // PB betyder - @) d (elt d // PB udelt, tildelt - æ) de (l+ D@- // PB ædelt - mo) d (em d // PB - d (onna d // PB madonna - dil) d (o d // PB -tourne) dos d'o // PB - re) dund (ant dOnd // PB - _) dorset dO:sEt // PB name - _) drysdale dRaIsdEjl // PB name - dreyfus drEf'?ys // PB name + 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 + orki) de d'e // stressed + d (i d // redigere, hindi + ly) d D // lydisolering + drome) d (ar d // + floy) d d // name + mel) d (ing // + A) d (ig D // stadig + 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 // + d (us d // fidus + d (ok d // paradoks, tørdok + a) de (Cr D@- // badedragt - not tested + y) de D@- // brydehold + y) der DV // yderligere + gry) de (ret D@- // gryderet + sy) de (ng DE // sydengland + by) de (l de // bydel + indby) de D@- // indbydelse + by) d (elig D // modbydelig + y) der (_ DV // betyder + @) d (elt d // udelt, tildelt + æ) de (l+ D@- // ædelt + mo) d (em d // + d (onna d // madonna + dil) d (o d // +tourne) dos d'o // + re) dund (ant dOnd // + _) dorset dO:sEt // name + _) drysdale dRaIsdEjl // name + dreyfus drEf'?ys // name -// PB general rule: silent d in final ærd - ær) d (_ // PB færd, sværd - svær) d (et // PB sværdet - lær) d (_ d // PB højlærd +// general rule: silent d in final ærd + ær) d (_ // færd, sværd + svær) d (et // sværdet + lær) d (_ d // højlærd -// PB general rule: silent d after l - l) d // PB hold, skjold +// general rule: silent d after l + l) d // hold, skjold d (om d // PN trældom - d (ronning d // PB Snedronningen - d (ufte d // PB lavendelduftende - el) dorado dor'Ado // PB - vel) d (rej d // PB veldrejede - _hil) d (a d // PB name - _mil) dred drEd // PB name - imel) d (a =d // PB name - _) degas _^_fr // PB name - bull) d (o d // PB bulldozer -formal) d (e d // PB formaldehyd - d (åse d // PB øldåse - d (rys d // PB kaneldrys - sol) d (æk d // PB - bil) d (æk d // PB -radial) d (æk d // PB - d (emens d // PB senilodemens -turtel) d (ue d // PB - l) d (ug d // PB meldug - d (ør d // PB bildør - gul) d // PB guldøreringe - d (ele d // PB tildele - a) de (l D@- // PB adelen - morta) de (l d'E // PB stressed - ba) d (e D // PB badelegetøj - d (rev d // PB soldrevne - sal) d (o d // PB - C) d (etA d // PB metaldetektor - ol) d (ing d // PB holdingfirma, olding - d (ag d // PB gammeldags - al) d (rig d // PB aldrig - il) d (ring d // PB skildring - kil) d (re d // PB skildre - l) d (ig d // PB skyldig - bal) de l@- // PB silent d - balde - l) d (akin d // PB keep d in "baldakin" - hel) d (i d // PB keep d in "heldig" - mo) d (ern d // PB moderne, moderniteter + d (ronning d // Snedronningen + d (ufte d // lavendelduftende + el) dorado dor'Ado // + vel) d (rej d // veldrejede + _hil) d (a d // name + _mil) dred drEd // name + imel) d (a =d // name + _) degas _^_fr // name + bull) d (o d // bulldozer +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 // + l) d (ug d // meldug + d (ør d // bildør + gul) d // guldøreringe + d (ele d // tildele + a) de (l D@- // adelen + morta) de (l d'E // stressed + ba) d (e D // badelegetøj + d (rev d // soldrevne + sal) d (o d // + C) d (etA d // metaldetektor + ol) d (ing d // holdingfirma, olding + d (ag d // gammeldags + al) d (rig d // aldrig + il) d (ring d // skildring + kil) d (re d // skildre + l) d (ig d // skyldig + bal) de l@- // silent d - balde + l) d (akin d // keep d in "baldakin" + hel) d (i d // keep d in "heldig" + mo) d (ern d // moderne, moderniteter fær) d // silent d in færd, færdsel - vær) d (s // PB værdsætte - silent d - fær) d (eC d // PB færdes, færden - fær) dig di // PB keep d in "færdig" - @) d (yr d // PB keep d in "muldyr" - o) dds ds // PB odds + vær) d (s // værdsætte - silent d + fær) d (eC d // færdes, færden + fær) dig di // keep d in "færdig" + @) d (yr d // keep d in "muldyr" + o) dds ds // odds bol) d d - hva) d // PB silent d in 'hvad' - _tur) d (e // PB silent d - or) d (e // PB silent d in mordet, bordet, gjorden, ordet + hva) d // silent d in 'hvad' + _tur) d (e // silent d + or) d (e // silent d in mordet, bordet, gjorden, ordet or) d (er d // morder, mordere - rekor) d d // PB exception - pronounce d in 'rekord' - akor) d d // PB exception - pronounce d in 'akord' - hjor) d d // PB exception - pronounce d in 'hjord' -stikor) d // PB exception - silent d in 'stikord' - d' d //PB d'Aviano - e.g. French and Italian names - woo) d t // PB Hollywood ([d] sounds like [D] - dawson dV:s3n // PB name - dwight dwaIt // PB name - _) doreen d0r'in // PB name - daumier _^_fr // PB name + rekor) d d // exception - pronounce d in 'rekord' + akor) d d // exception - pronounce d in 'akord' + hjor) d d // exception - pronounce d in 'hjord' +stikor) d // exception - silent d in 'stikord' + d' d // d'Aviano - e.g. French and Italian names + woo) d t // Hollywood ([d] sounds like [D] + dawson dV:s?Vn // name + dwight dwaIt // name + _) doreen d0r'in // name + daumier _^_fr // name // general rule: [D] after vowel and before consonant A) d (C D // adkomst -// PB final d: D - A) d (_ D // PB lad +// final d: D + A) d (_ D // lad // exceptions - fe) dt (@ t // PB fedtet, fedtsyl - ski) dt t // PB - tu) ds (e s // PB silent d - bi) d (sk // PB silent d - _ma) d (sen // PB silent d - spre) dt t // PB spredtes - sta) ds (_ s // PB flitterstads - stru) ds s // PB - i) d (ti+ D // PB hidtil - bu) d (apest d // PB - d (rama d // PB melodramatisk - æ) d (ru d // PB - pe) d (ro d // PB name - e) d (gar d // PB name - bu) ddh d // PB buddhist - y) ds s // PB kryds - pi) ds s // PB spids - hi) ds s // PB hidse - kra) ds s // PB kradse - spa) ds (er s // PB spadsere - ri) ds s // PB ridse - A) ds (æt Ds // PB hidsætte - _u) d (++ D // PB udse - A) ds (el s // PB fødsel, brændsel, bidsel - ræ) d (sel D // PB - ned) d (s D // PB nedsmelte - ø) d (s++ D // PB dødscelle, nødspor, ødsel, nødstilfælde + fe) dt (@ t // fedtet, fedtsyl + ski) dt t // + tu) ds (e s // silent d + bi) d (sk // silent d + _ma) d (sen // silent d + spre) dt t // spredtes + sta) ds (_ s // flitterstads + stru) ds s // + i) d (ti+ D // hidtil + bu) d (apest d // + d (rama d // melodramatisk + æ) d (ru d // + pe) d (ro d // name + e) d (gar d // name + bu) ddh d // buddhist + y) ds s // kryds + pi) ds s // spids + hi) ds s // hidse + kra) ds s // kradse + spa) ds (er s // spadsere + ri) ds s // ridse + A) ds (æt Ds // hidsætte + _u) d (++ D // udse + A) ds (el s // fødsel, brændsel, bidsel + ræ) d (sel D // + ned) d (s D // nedsmelte + ø) d (s++ D // dødscelle, nødspor, ødsel, nødstilfælde fø) d (s++ // fødsel - ø) d (sel++ // PB silent d - gi) d (s+ // PB silend d - gidsel - kre) d (s // PB silent d - kredsløb - ø) d (t // PB silent d - mødtes - svær) d // PB silent d - sværdfisk - vær) d (i d // PB bemærkelsesværdigt - hi) ds (e s // PB ophidse - pla) ds s // PB - pu) ds s // PB pudse - stu) ds s // PB studs, studse - smu) ds s // PB - dø) d (+ D // PB dødtræt - lfre) ds s // PB tilfreds - fjer) di (ng e // PB silent d - forfjerding (1/4 of an animal ) + ø) d (sel++ // silent d + kre) d (s // silent d - kredsløb + ø) d (t // silent d - mødtes + svær) d // silent d - sværdfisk + vær) d (i d // bemærkelsesværdigt + hi) ds (e s // ophidse + pla) ds s // + pu) ds s // pudse + stu) ds s // studs, studse + smu) ds s // + dø) d (+ D // dødtræt + lfre) ds s // tilfreds + fjer) di (ng e // silent d - forfjerding (1/4 of an animal ) -// PB general rule: silent d before st - d (st++ // PB silent d - sidste, mindst - mo) d (st+ D // PB modstand, modstå - u) d (styr+ D // PB - bu) d (s++ D // PB forbudstiden - gla) dstone dst0wn // PB name - y) d (stat+ D // PB sydstaterne - fre) d (s D // PB fredstid +// general rule: silent d before st + d (st++ // silent d - sidste, mindst + mo) d (st+ D // modstand, modstå + u) d (styr+ D // + bu) d (s++ D // forbudstiden + gla) dstone dst0wn // name + y) d (stat+ D // sydstaterne + fre) d (s D // fredstid -// PB general rule: [D] after a vowel +// general rule: [D] after a vowel A) d (A D - ste) d D // PB sted - aci) d (ose d // PB - ø) d (em_ d // PB ødem - ø) d (emer_ d // PB ødemer - ø) d (emet_ d // PB ødemet - A) dd D // PB skuddene - _i) d (e d // PB - _i) d (é d // PB - evi) d (en d // PB evident - bi) d (e D // PB bider - ri) de D@- // PB rideskole - si) de D@- // PB sidemand - vi) d (er D // PB videre - ti) d (e D // PB tider - salva) dor d'O: // PB El Salvador - via) du (kt d'O // PB - bermu) d (a d // PB name - ju) dæ (a d'E: // PB name - ju) d (as d // PB name - a) d (am d // PB name - d (oll d // PB babydoll - d (obl d // PB tidoble - a) d (opter d // PB adoptere - me) d (alj d // PB medalje + ste) d D // sted + aci) d (ose d // + ø) d (em_ d // ødem + ø) d (emer_ d // ødemer + ø) d (emet_ d // ødemet + A) dd D // skuddene + _i) d (e d // + _i) d (é d // + evi) d (en d // evident + bi) d (e D // bider + ri) de D@- // rideskole + si) de D@- // sidemand + vi) d (er D // videre + ti) d (e D // tider + salva) dor d'O: // El Salvador + via) du (kt d'O // + bermu) d (a d // name + ju) dæ (a d'E: // name + ju) d (as d // name + a) d (am d // name + d (oll d // babydoll + d (obl d // tidoble + a) d (opter d // adoptere + me) d (alj d // medalje -// PB general rule: dd between two vowels: [D] - A) dd (A+ D // PB redder +// general rule: dd between two vowels: [D] + A) dd (A+ D // redder - gu) dd (++ Dd // PB guddommelig, guddatter - lu) dd (ov Dd // PB luddovne - u) dd (ann Dd // PB veluddannet - ly) dd (æmp Dd // PB lyddæmper - sku) dd (u+ Dd // PB skudduel - me) dd (el Dd // PB meddeleren, meddelsom - u) dd (ø+ Dd // PB - blø) dd (yr Dd // PB - spi) d (steg D // PB spidstege - ne) d (st D // PB nedstemme, nedstirre - ti) ds (nok s' // PB silent d - tidsnok - hår) d // PB silend d - hård, hårdere - stri) d (s D // PB but not silent d in e.g. 'stridsvogn' - u) dt (+ t // PB brudt - plu) dsel s@-l/2 // PB silentg d - pludselig [pl'usli] + gu) dd (++ Dd // guddommelig, guddatter + lu) dd (ov Dd // luddovne + u) dd (ann Dd // veluddannet + ly) dd (æmp Dd // lyddæmper + sku) dd (u+ Dd // skudduel + me) dd (el Dd // meddeleren, meddelsom + u) dd (ø+ Dd // + blø) dd (yr Dd // + spi) d (steg D // spidstege + ne) d (st D // nedstemme, nedstirre + ti) ds (nok s' // silent d - tidsnok + hår) d // silend d - hård, hårdere + stri) d (s D // but not silent d in e.g. 'stridsvogn' + u) dt (+ t // brudt + plu) dsel s@-l/2 // silentg d - pludselig [pl'usli] in) d (C ir) d (_ d pæ) d (a d @@ -1758,17 +1713,15 @@ stikor) d // PB exception - silent d in 'stikord' å) d (an d kandi) d (at 'd mi) dd (a d - nø) dde (+ D@- // PB jordnøddesmør - an) d (e // PB manden, anden - silent d - _fan) de (me // PB fandeme - skip de, only this word - gær) de V // PB silent d - si) d (ent d // PB præsident + nø) dde (+ D@- // jordnøddesmør + an) d (e // manden, anden - silent d + _fan) de (me // fandeme - skip de, only this word + gær) de V // silent d + si) d (ent d // præsident mo) d (el d or) d (el d or) d (en d -// gui) de (n de - ver) den d@-n // PB verdenskrig -// gui) der dV + ver) den d@-n // verdenskrig klu) d (ere d // konkludere A) d (es D bu) d (get @@ -1776,1084 +1729,1096 @@ stikor) d // PB exception - silent d in 'stikord' An) d (rA d ma) d (ras d An) d (re d - bu) ddh (ist d // PB silent h - buddhist - _a) d (r d // PB adresse, adrenalin - hon) d (ura d // PB Honduras + bu) ddh (ist d // silent h - buddhist + _a) d (r d // adresse, adrenalin + hon) d (ura d // Honduras ti) d (s+ D // tidstabel - ti) d (sel // PB silent d - A) d (t_++ // PB silent d - forbudt, skudt, ladt, godt, vådt - A) d (te++ // PB silent d vådte, vådtet - A) d (te_++ // PB silent d - beskidte, godte - A) d (ter_++ // PB silent d - godter - i) d (t // PB skridtet, skoleridtet - fo) d (C++ D // PB fodtøj - fjer) d (e // PB silent d - fjerde - L09A) d (ta D // PB modtage, medtage, nedtage + ti) d (sel // silent d + A) d (t_++ // silent d - forbudt, skudt, ladt, godt, vådt + A) d (te++ // silent d vådte, vådtet + A) d (te_++ // silent d - beskidte, godte + A) d (ter_++ // silent d - godter + i) d (t // skridtet, skoleridtet + fo) d (C++ D // fodtøj + fjer) d (e // silent d - fjerde + L09A) d (ta D // modtage, medtage, nedtage in) d (u d - pro) ducer (_ dj'usV // PB - pro) ducer (assistent dj'usV // PB + pro) ducer (_ dj'usV // + pro) ducer (assistent dj'usV // in) d (uC d mo) d (ul d' - pen) d (ul d' // PB pendul - dendron d'endrVn // // PB filodendron - doubleton dVb@ltVn // PB from bridge (card game) - double dVb@l // PB mixed double - deuce dZu:s // PB - _) dav (_ dAw // PB dav - _) davs (_ dAws // PB davs - detente det'A:Nt // PB - doughnut downVd // PB - _) doc (_ dVk // PB Doc - name - dodge dVdZ // PB city - daiquiri d&k@ri // PB drink - _) duke dZu:k // PB Duke - name - _) drive (- dRAIv // PB drive-in - _) dean di:n // PB name - dubois dybw'A // PB name - dorothy _^_en // PB name - debbie dEbi // PB name - download dawnlowd // PB - down dawn // PB Downs syndrom - detroit detr'Vjt // PB US city - daryl d&r3l/2 // PB name - drisco _^_en // PB name Driscoll - dutch dVtS // PB name - darlene dAl'in // PB name - doubtfire dawdfaIV // PB name (movie) - dickie deki // PB name - dicky deki // PB name - dewey djui // PB name + pen) d (ul d' // pendul + dendron d'endrVn // // filodendron + doubleton dVb@ltVn // from bridge (card game) + double dVb@l // mixed double + deuce dZu:s // + _) dav (_ dAw // dav + _) davs (_ dAws // davs + detente det'A:Nt // + doughnut downVd // + _) doc (_ dVk // Doc - name + dodge dVdZ // city + daiquiri d&k@ri // drink + _) duke dZu:k // Duke - name + _) drive (- dRAIv // drive-in + _) dean di:n // name + dubois dybw'A // name + dorothy _^_en // name + debbie dEbi // name + download dAwnlowd // + down dAwn // Downs syndrom + detroit detr'Vjt // US city + daryl d&r3l/2 // name + drisco _^_en // name Driscoll + dutch dVtS // name + darlene dAl'in // name + doubtfire dAwdfaIV // name (movie) + dickie deki // name + dicky deki // name + dewey djui // name -.group é // added by PB +.group é é '?e // idé, entré .group e - e e // PB e: => e + e e // e: => e -// PB short (glottal) e before double consonant - e (C% ?e // PB leddet - e (nn ?E // PB denne, henne - e (L02%+ ?E // PB modemmet - C) e (rr ?E // PB herre - C) e (ll% ?E // PB celle - e (ks ?E // PB heks +// short (glottal) e before double consonant + e (C% ?e // leddet + l) e (L07% ?E // lettede + e (nn ?E // denne, henne + e (L02%+ ?E // modemmet, slemme + C) e (rr ?E // herre + C) e (ll% ?E // celle + e (ks ?E // heks + ek (t ?Eg // kontakt + _konf) ek (t '?Eg // stressed -// PB Short e followed by st, st, sk - made short in ph_danish - C) e (L08 E // PB fest, fester, hest, heste - sl) e (sk e // PB slesk, sleske - m) e (st e // PB - ån) e (C @- // PB månestråle +// Short e followed by st, st, sk - made short in ph_danish + C) e (L08 E // fest, fester, hest, heste + sl) e (sk e // slesk, sleske + m) e (st e // + nærm) e @- // nærmeste + ån) e (C @- // månestråle + rav) e @- // travesko + skad) e @- // skadestue + hyld) e (s @- // hyldest // exceptions - cyk) e (lløb @- // PB - sku) e @- // PB skuespil - menn) e @- // PB menneske - æl) e @- // PB sjælefred - r) e (v E // PB brev - år) e (+ @- // PB årevis - r) e (Ce+ E // PB breve - str) ee (t i: // PB street - _d) e (m_ E // PB - f) e (m E // PB femten - e (dith e: // PB name + cyk) e (lløb @- // + sku) e (@ @- // skuespil + menn) e @- // menneske + æl) e (@ @- // sjælefred + ill) e (@ @- // lillebror + r) e (v E // brev + år) e (@+ @- // årevis + Ass) e (@ @- // klasseværelse + r) e (Ce+ E // breve + str) ee (t i: // street + _d) e (m_ E // + f) e (m E // femten + e (dith e: // name -// PB E after r - r) e E // PB reaktion - VERY BROAD - @r) es (_ Vs // PB koncentreres TEST -// @r) et (_+ Vd // PB koncentreret TEST +// E after r + r) e E // reaktion - VERY BROAD + @r) es (_ Vs // koncentreres TEST +// @r) et (_+ Vd // koncentreret TEST -// PB E before n - VERY BROAD - e (nK ?E // PB send, end, men - e (ns e // PB ensrette - _) e (n_ e // PB - b) e (n e // PB - ov) e (n @- // PB ovenpå - os) e (n @- // PB rosenknop - sjæld) e (n @- // PB sjældent - _) e (ne e // PB ene, eneste - e (net_ @ // PB bækkenet - gen) e (ral @- // PB - _s) e (n_ e // PB sen - _s) e (nt_ e // PB sent - _l) e (n_ e // PB len +// E before n - VERY BROAD + e (nK ?E // send, end, men + e (ns e // ensrette + _) e (n_ e // + b) e (n e // + ov) e (n @- // ovenpå + os) e (n @- // rosenknop + sjæld) e (n @- // sjældent + _) e (ne e // ene, eneste + e (net_ @- // bækkenet + gen) e (ral @- // + _s) e (n_ e // sen + _s) e (nt_ e // sent + _l) e (n_ e // len + _m) e (nt e // ment, mente -// PB e followed by ne - VERY BROAD - e (ne_ e // PB sene, mene +// e followed by ne - VERY BROAD + e (ne_ e // sene, mene -// PB e followed by ner - VERY BROAD - e (ner_ e // PB scene, mener +// e followed by ner - VERY BROAD + e (ner_ e // scene, mener -// PB stress on second syllable after initial "be" in .group be +// stress on second syllable after initial "be" in .group be // Secondary stress after a syllable - &b) e (s@ e, // PB hv'alrosbest,and - &Ab) er V // PB fibersprængning - b) e (ret+ e // PB stemmeberettiget - ib) er (ia+ 'er // PB Iberia, Liberia - rob) er (ta 'Er // PB - forb) e e // PB forberede - b) e (rig e // PB våbenberiget - b) e (rg+ E // PB herberg - fab) ergé ErS'e // PB name - bomb) e (r@ @- // PB bomberydder - dobb) e (l // PB - reb) e (kka 'E // PB name + &b) e (s@ e, // hv'alrosbest,and + &Ab) er V // fibersprængning + b) e (ret+ e // stemmeberettiget + ib) er (ia+ 'er // Iberia, Liberia + rob) er (ta 'Er // + forb) e e // forberede + b) e (rig e // våbenberiget + b) e (rg+ E // herberg + fab) ergé ErS'e // name + bomb) e (r@ @- // bomberydder + dobb) e (l // + reb) e (kka 'E // name - l) e (fl ?E // PB lefle - p) e (ng ?E // PB penge - e (fter E // PB efter, efterse - leg) e @- // PB legeværelse - leg) e (nd E // PB legende (myth, not playing) - dag) e @- // PB dagevis - op) e (r @- // PB operere, opera -_halvf) e (ms 'E // PB stressed - d) e (pr e // PB depressiv -_emfys) e (m 'e // PB stressed - kn) e (b e // PB - kn) eb (re Eu // PB "knebre med næbbet" - C) e (L02a e // PB tema - ød) e (+ @- // PB ødemark - herr) e @- // PB herremand - bed) e @- // PB bedemand -_still) e (ben ='e // PB - fr) e (m &# // PB fremad - _eks) e (mpel 'E // PB stressed - entr) e (pr V // PB entreprise - spar) e @- // PB sparebøsse - ordr) e @- // PB ordrebog - r) e (L02s &# // PB revse, krebs - TEST - br) ev (+ Ew // PB brevstemt - br) eve E:w@- // PB breve - Cr) evet Ew@-D // PB brevet, skrevet - L03) e (L02i e // PB akademiker - åd) e (++ @- // PB gådefuld - åd) er (++ V // PB gåder - nd) e @- // PB yndefuld - nd) er V // PB inder - andr) e V // PB vandrefalk, andres - r) e (nsning &# // PB tandrensning - tub) er (ku E3 // PB tuberkulose + 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) + dag) e @- // dagevis + op) e (r @- // operere, opera +_halvf) e (ms 'E // stressed + d) e (pr e // depressiv +_emfys) e (m 'e // stressed + kn) e (b e // + kn) eb (re Eu // "knebre med næbbet" + C) e (L02a e // tema + ød) e (+ @- // ødemark + herr) e @- // herremand + bed) e @- // bedemand +_still) e (ben ='e // + fr) e (m &# // fremad + _eks) e (mpel 'E // stressed + entr) e (pr V // entreprise + spar) e @- // sparebøsse + 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 + L03) e (L02i e // akademiker + åd) e (++ @- // gådefuld + åd) er (++ V // gåder + nd) e @- // yndefuld + ind) er V // inder + andr) e V // vandrefalk, andres + r) e (nsning &# // tandrensning + tub) er (ku E3- // tuberkulose - kol) e (C @- // PB skolebog - pol) e (re+ e // PB finpolere - kol) e (st E // PB kolesterol - t) e (d E // PB sted - TEST - st) ed (fa e // PB stedfar - st) ed (mo e // PB stedmor - st) ed (sø e // PB stedsøm - st) ed (da e // PB steddatter - e (dt e // PB fedtet - gaz) e (lle '?E // PB stressed - van) e (ssa '?E // PB stressed - ard) e (nner '?E // PB Ardennerne - stressed - _konf) e (tti '?E // PB stressed - kass) e (tte '?E // PB stresed - h) e (dd ?e // PB hedde - m) e (dalje e // PB medalje - v) e (de @- // PB helvedes - tol) ed (o 'ed // PB toledostål - val) e (ncia 'E // PB - mal) er V // PB maler - end) er V // PB afsenderadresse - mål) er V // PB måleraflæser - mal) e (ri V // PB - val) e (ri++ @- // PB kavaleri - perl) e @- // PB - aml) e @- // PB samlestykke + kol) e (C @- // skolebog + pol) e (re+ e // finpolere + kol) e (st E // kolesterol + t) e (d E // sted - TEST + st) ed (fa e // stedfar + st) ed (mo e // stedmor + st) ed (sø e // stedsøm + st) ed (da e // steddatter + e (dt e // fedtet + gaz) e (lle '?E // stressed + van) e (ssa '?E // stressed + ard) e (nner '?E // Ardennerne - stressed + _konf) e (tti '?E // stressed + kass) e (tte '?E // stresed + h) e (dd ?e // hedde + m) e (dalje e // medalje + v) e (de @- // helvedes + tol) ed (o 'ed // toledostål + val) e (ncia 'E // + mal) er V // maler + end) er V // afsenderadresse + mål) er V // måleraflæser + mal) e (ri V // + val) e (ri++ @- // kavaleri + perl) e @- // + aml) e @- // samlestykke kons) e (kv @- // PN inkonsekvens - l) e (ve e // PB samlever - _dil) e (mma 'E // PB - ll) e (de // PB silent e - billede + l) e (ve e // samlever + _dil) e (mma 'E // + ll) e (de // silent e - billede ll) e (det @- // billedet - CAs) e (ner // PB silent e - væsener (also spelled "væsner") - midl) er V // PB midlertidig - elleve Elv@- // PB - ellever ElvV // PB elleverne - _koll) e (ga 'e // PB stressed - _koll) eg (e 'ej // PB stressed kolleger - strat) eg (_ 'ej // PB strateg - _sem) e (ster 'E // PB stressed -_borgm) e (st 'E // PB borgmester - stressed -_kompl) e (ks 'E // PB stressed - _grot) e (s 'E // PB stressed - grotesk - _pres) e (nning 'E // PB stressed -philad) elphi (a 'Elfj // PB stressed - _inc) e (st 'E // PB stressed - sankt) e (lmsild 'E // PB stressed -banglad) esh 'ES // PB stressed - _p) errier eri'e // PB brand name - eddike Edk@- // PB + CAs) e (ner // silent e - væsener (also spelled "væsner") + midl) er V // midlertidig + elleve Elv@- // + ellever ElvV // elleverne + _koll) e (ga 'e // stressed + _koll) eg (e 'ej // stressed kolleger + strat) eg (_ 'ej // strateg + _sem) e (ster 'E // stressed +_borgm) e (st 'E // borgmester - stressed +_kompl) e (ks 'E // stressed + _grot) e (s 'E // stressed - grotesk + _pres) e (nning 'E // stressed +philad) elphi (a 'Elfj // stressed + _inc) e (st 'E // stressed + sankt) e (lmsild 'E // stressed +banglad) esh 'ES // stressed + _p) errier eri'e // brand name + eddike Edk@- // -// PB general rule: [E] after l before t/k - l) e (L07 E // PB lektor, let - udsl) e (t++ E // PB familieudslettelse, udslet (not [uDsl@D]) - varsl) et @-D // PB - ål) e (C @- // PB strålekrans +// general rule: [E] after l before t/k + l) e (t E // let + l) e (k E // lektor + udsl) e (t++ E // familieudslettelse, udslet (not [uDsl@D]) + varsl) et @-D // + ål) e (C @- // strålekrans -// PB general rule: E before l - e (lC E // PB heldig, held og lykke, helvede +// general rule: E before l + e (lC E // heldig, held og lykke, helvede -// PB E before r + consonant - e (rC E // PB hjerte, smerte TEST +// general rule: E before m + e (m E // slem, slemt, hjem - short in ph_danish + genn) e (m @- // igennem -// PB general rule: [E] after r before consonant - r) e (d E // PB rede, fred - r) e (C% ?E // PB short e before double consonant - redde - r) e (sse ?&# // PB afsenderadresse - L02r) e (C% ?&# // PB labial + r - fremmed - aggr) e (ssor ?&# // PB - L07r) e (mm ?&# // PB tremme - ekstr) e (m 'e // PB stressed - r) e (vl &# // PB trevl, revle - dr) e (des_ V // PB ændredes, undredes - TEST - fr) eddie Edi // PB name - fr) eddy Edi // PB name - tr) e (mile e // PB tremilegrænse +// E before r + consonant + e (rCe E // hjerte, smerte TEST - r) ee (l e|E // PB reelle - r) ey Ej // PB greyhound - ndr) e (A V // PB mindreårig - gr) e (l &# // PB grel - stor) e V // PB storebror - str) eg aI // PB streg, stregkode - tr) eg (en_ aI // PB stregen - tr) eg (er_ aI // PB streger - tr) eg (e_ aI // PB understrege - tr) eg (es_ aI // PB streges - tr) eg (ede_ aI // PB understregede - overj) eg aI // PB -himstr) eg (ims Vg // PB avoid aI - sj) eg aI // PB fremtidsjeg - tuar) eg Eg // PB - r) e (ndt a // PB røvrendt - r) e (nte &# // PB - r) e (st &# // PB restlager - r) e (stau e // PB restaurere - klatr) e V // PB - r) e (vn &# // PB revne - leder) e (vne E // PB - dr) e (vn E // PB overdrevne - skr) e (v e // PB skrevne - r) e (kto &# // PB rektor - &or) e (pl V // PB boreplatform - ur) e (ne @ // PB murene -// r) e (s_ V // PB forhindres - _tr) e (s E // PB tres (60) - opr) e (v E // PB oprevet - pr) e (m E // PB premiere - spr) e (d E // PB spredt + _d) er (@+ E3- // derinde -// PB general rule: [&#] after pr followed by double consonant TEST - pr) e (C%+ ?&# // PB presse - pr) e (s+ ?&# // PB - pr) e (st+ 3 // PB tapreste - pr) e (sserende E' // PB - pr) estige (_ Est'iS // PB - depr) e (ss E // PB depressiv +// compound with eiding -er + another word + @C) er (C@ V // hypermoderne - TEST -//PB general rule: [&#] after r before ns/ms - r) e (L09s &# //PB rensetøj - r) e (nsku E // PB exception ren = clean - renskure - r) e (nskr E // PB renskrive, renskrevet +// general rule: [E] after r before consonant + r) e (d E // rede, fred + r) e (C% ?E // short e before double consonant - redde + r) e (sse ?&# // afsenderadresse + L02r) e (C% ?&# // labial + r - fremmed + aggr) e (ssor ?&# // + L07r) e (mm ?&# // tremme + ekstr) e (m 'e // stressed + r) e (vl ?&# // trevl, revle + dr) e (des_ V // ændredes, undredes - TEST + fr) eddie Edi // name + fr) eddy Edi // name + tr) e (mile e // tremilegrænse -//PB general rule: [&#] after r before m - r) e (m &# //PB rem, frem + r) ee (l e|E // reelle + r) ey Ej // greyhound + ndr) e (A V // mindreårig + gr) e (l &# // grel + stor) e V // storebror + str) eg aI // streg, stregkode + tr) eg (en_ aI // stregen + tr) eg (er_ aI // streger + tr) eg (e_ aI // understrege + tr) eg (es_ aI // streges + tr) eg (ede_ aI // understregede + overj) eg aI // +himstr) eg (ims Vg // avoid aI + sj) eg aI // fremtidsjeg + tuar) eg Eg // + r) e (ndt a // røvrendt + r) e (nte &# // + r) e (st &# // restlager + r) e (stau e // restaurere + klatr) e V // + r) e (vn &# // revne + leder) e (vne E // + dr) e (vn E // overdrevne + skr) e (v e // skrevne + r) e (kto &# // rektor + &or) e (pl V // boreplatform + ur) e (ne @- // murene + _tr) e (s E // tres (60) + opr) e (v E // oprevet + pr) e (m E // premiere + spr) e (d E // spredt -//PB general rule: [e] after r before m + front vowel - r) e (mL04 e // PB remoulade, remisse - ældr) e (+ 3 // PB forældremyndighed - fr) e (mov &# // PB fremover +// general rule: [&#] after pr followed by double consonant TEST + pr) e (C%+ ?&# // presse + pr) e (s+ ?&# // + pr) e (sserende E' // + pr) estige (_ Est'iS // + depr) e (ss E // depressiv -//PB general rule: [&#] after r before ng - r) e (ng ?&# //PB streng, dreng - mar) e (ng '&# // PB stressed - marengs - r) e (ngø E // PB rengøre +// general rule: [&#] after r before ns/ms + r) e (L09s &# // rensetøj + r) e (nsku E // exception ren = clean - renskure + r) e (nskr E // renskrive, renskrevet -//PB general rule: [&#] after r before t - r) e (t+ &# //PB ret, efterretning - ber) e (t++ &# // PB beret, indberet -karryr) e (t+ &# // PB - forr) e (t++ &# // PB forret - opr) e (t++ &# // PB -kriminalr) e (t &# // PB - gr) e (t E // PB Greta +// general rule: [&#] after r before m + r) e (m &# // rem, frem -// PB exceptions (re = prefix e.g. reanimate) - r) e (tab e // PB retablere - r) e (tard e // PB retarderet - r) e (tention e // PB - r) e (ti e // PB retirere - r) e (tor e // PB retorik - r) e (tou e // PB retouchere - r) e (tran e // PB retreansmittere - r) e (tro e // PB retospekt - r) e (træ %?E // PB retræte - stressed æ - r) e (tsina e // PB - r) e (tur e // PB returnere +// general rule: [e] after r before m + front vowel + r) e (mL04 e // remoulade, remisse + ældr) e (+ @- // forældremyndighed + fr) e (mov &# // fremover - forr) e (tning+ '&# PB stressed - teor) e (t e // PB teoretisk - _tr) e (t e // PB tretal - kr) e (ta e // PB Kreta +// general rule: [&#] after r before ng + r) e (ng ?&# // streng, dreng + mar) e (ng '&# // stressed - marengs + r) e (ngø E // rengøre + +// general rule: [&#] after r before t + r) e (t+ &# // ret, efterretning + ber) e (t++ &# // beret, indberet +karryr) e (t+ &# // + forr) e (t++ &# // forret + opr) e (t++ &# // +kriminalr) e (t &# // + gr) e (t E // Greta + +// exceptions (re = prefix e.g. reanimate) + r) e (tab e // retablere + r) e (tard e // retarderet + r) e (tention e // + r) e (ti e // retirere + r) e (tor e // retorik + r) e (tou e // retouchere + r) e (tran e // retreansmittere + r) e (tro e // retospekt + r) e (træ %?E // retræte - stressed æ + r) e (tsina e // + r) e (tur e // returnere + + forr) e (tning+ '&# // stressed + teor) e (t e // teoretisk + _tr) e (t e // tretal + kr) e (ta e // Kreta fr) e (l &# // frelse - yr) e (+ @ // PB myretue, dyrehold - r) e (nse &# // PB nyrenset - r) e (h 3 // PB general rule: [3] after r before h - fårehyrde, varehus - _tr) e (+ e // PB treholdsskift - r) e (habil e // PB rehabilitering - r) e (nd_ &# // PB - r) e (nde &# // PB -stikir) e (nddreng '&# // PB - @n) e (d 3 // PB general rule: [3] after @+n before d - måned - men) e (d e // PB - n) e (dslag e // PB lynnedslag - n) e (dgang e // PB - n) e (dsæt e // PB nedsætte - n) e (dstig e // PB nedstigning - m) e (di+ e // PB medicin - rn) e (d+ ,e // PB derned - forn) eden 'eD3n // PB - an) e (r @ // PB anerkende + yr) e (@+ @- // myretue, dyrehold + r) e (nse &# // nyrenset + r) e (h @- // general rule: [@-] after r before h - fårehyrde, varehus + _tr) e (+ e // treholdsskift + r) e (habil e // rehabilitering + r) e (nd_ &# // + r) e (nde &# // +stikir) e (nddreng '&# // + @n) e (d @- // general rule: [3] after @+n before d - måned + men) e (d e // + n) e (dslag e // lynnedslag + n) e (dgang e // + n) e (dsæt e // nedsætte + n) e (dstig e // nedstigning + m) e (di+ e // medicin + rn) e (d+ ,e // derned + forn) eden 'eD@-n // + an) e (r @- // anerkende L09) e (de e // nede, nederlag - arkim) e (des 'e // PB name - mus) e (um 'E // PB stressed - mus) e (et 'E // PB stressed + 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 -heavy_m) etal Et3l // PB + n) etop Ed\,Vb // +heavy_m) etal Et@-l // L09) e (l E // mellem - L06) e (rl E // PB perle - rob) e (rto 'E // PB name - r) e (re 3 // PB operere - sup) er V // PB superagenten - sup) er (lativ 'Er // PB stressed -// @) es (_N @-s // elskes, skabes - _arl) es _^_fr // PB French town - _m) e (l_ e // PB - ed) e (r @ // nederlag + mell) e (m @- // mellem + L06) e (rl E // perle + rob) e (rto 'E // name + r) e (re E // operere + sup) er V // superagenten + sup) er (lativ 'Er // stressed + _arl) es _^_fr // French town + _m) e (l_ e // + ed) er V // nederlag tr) e (ma E' // trema - s) e (dd E // PB seddel - s) ek (sten aI // PB seksten, sekstende + s) e (dd ?E // seddel + s) ek (sten aI // seksten, sekstende ell) er V // ellers - fr) edag Ed& // PB fredag - not [d&j) - nov) e (mber 'e // PB - dec) e (mber 'e // PB - sept) e (mber 'e // PB - eus Wws // PB for Greek names - Zeus, Achilleus - m) euse W:z // PB French river - st) ew ju // PB Stewart - tel) e @- // PB tele - ele) eg (+ aI // PB gætteleg - del) eg (A @g // PB delegation - tel) eg (r 3g // PB telegram - l) eg (iti eg // PB legitim - l) eg (an++ @-g // PB elegant - tel) e (x E // PB - afl) e (v @ // PB aflevere - ri) e 3 // PB ferie - bri) e (f // PB briefing - silent e - _a) e (_ 3 // PB ae - hav) e 3 // PB - god) e @ // PB - kod) e @ // PB kodeord - pl) e (men 3 // PB supplement - øbl) e (m 3 // PB møblement - hvab) e (har_ @- // PB hvabehar - v) ek (s Eg // PB veksle - r) eau o // PB bureaukratiske - _m) ead (_ i:d // PB name - Lake Mead - eer 'eV // PB ideer, cafeer, veer - k) eefe 'i:f // PB name - sh) ee (la i: // PB name - _r) eed (K i:d // PB name - toup) e 'e // PB stressed - fr) ee i: // PB Freeman - w) ee (k i: // PB Newsweek - g) ee (k i: // PB - k) ee (per i: // PB - ee (jer @a // PB hundeejer - gr) ee (n i: // PB evergreen - kathl) ee (n 'i: // PB name - gr) ea (t Ej // PB English word - sw) ea (ter E // PB - sw) ea (tre E // PB - easy isi // PB - h) ead Ed // PB overhead - ch) eese i:s // PB cheeseburger - h) ea (l i: // PB healer - _n) eal i:l/2 // PB name - fr) ee (lan i: // PB freelance - b) ee (d ee // PB beedige - _en) e @- // PB ene, eneste - en) e (m E // PB pærenem - en) e (rgi E // PB - br) e (L09 &# // PB bremse - br) enda End& // PB name - sn) e (K+ e // PB sne, snebold, nysne - frosn) e @- // PB fastfrosne - lAsn) e (+ @- // PB lysne, løsne - lAsn) er (+ V // PB lysner, løsner - visn) e (+ @- // PB visne - visn) er (+ V // PB visner - gisn) e (+ @- // PB gisne - _isn) e (+ @- // PB isne - voksn) e @- // PB - sn) eg (l aI // PB - _sn) e (r_ e // PB det sner - _sn) ee (de_ e@- // PB det sneede - sn) e (rp E // PB snerpet - sn) e (rre &# // PB snerre - sn) edker ekV e // PB silent d - snedker -papmach) e e // PB - _s) e (_++ ?e // PB se - e (mball A // PB emballere, emballage - dir) e (kt &# // PB direkte, direktør - n) eu Wu // PB neuron, neutral - n) e (unge @- // PB ørneunge + fr) edag Ed& // fredag - not [d&j) + nov) e (mber 'e // + dec) e (mber 'e // + sept) e (mber 'e // + eus Wws // for Greek names - Zeus, Achilleus + m) euse W:z // French river + st) ew ju // Stewart + tel) e @- // tele + ele) eg (+ aI // gætteleg + del) eg (A @-g // delegation + tel) eg (r @-g // telegram + l) eg (iti eg // legitim + l) eg (an++ @-g // elegant + tel) e (x E // + afl) e (v @- // aflevere + bri) e (f // briefing - silent e + hav) e @- // havesyg + e (ment @- // supplement, møblement + hvab) e (har_ @- // hvabehar + v) ek (s Eg // veksle + r) eau o // bureaukratiske + _m) ead (_ i:d // name - Lake Mead + eer 'eV // ideer, cafeer, veer + k) eefe 'i:f // name + sh) ee (la i: // name + _r) eed (K i:d // name + toup) e 'e // stressed + fr) ee i: // Freeman + w) ee (k i: // Newsweek + g) ee (k i: // + k) ee (per i: // + ee (jer @-A // hundeejer + gr) ee (n i: // evergreen + kathl) ee (n 'i: // name + gr) ea (t Ej // English word + sw) ea (ter E // + sw) ea (tre E // + easy isi // + h) ead Ed // overhead + ch) eese i:s // cheeseburger + h) ea (l i: // healer + _n) eal i:l/2 // name + fr) ee (lan i: // freelance + b) ee (d ee // beedige + _en) e @- // ene, eneste + en) e (m E // pærenem + en) e (rgi+ E // + br) e (L09 &# // bremse + br) enda End& // name + sn) e (K+ e // sne, snebold, nysne + frosn) e @- // fastfrosne + lAsn) e (+ @- // lysne, løsne + lAsn) er (+ V // lysner, løsner + visn) e (+ @- // visne + visn) er (+ V // visner + gisn) e (+ @- // gisne + _isn) e (+ @- // isne + voksn) e @- // + sn) eg (l aI // + _sn) e (r_ e // det sner + _sn) ee (de_ e@- // det sneede + sn) e (rp E // snerpet + sn) e (rre &# // snerre + sn) edker ekV e // silent d - snedker +papmach) e e // + _s) e (_++ ?e // se + e (mball A // emballere, emballage + dir) e (kt &# // direkte, direktør + n) eu Wu // neuron, neutral + n) e (unge @- // ørneunge ed) e (- @- g) e (js aI - _ni) e // PB changed from [ni)e] to[_ni)e] - niende, nier, niendedel - _ni) e (ce 'E: // PB exception from the rule above (_ni)e) - _fl) ee (ce+ i: // PB fleece, fleecejakka - material for clothing - fleec) e // PB fleece - skip the final e -freelanc) e // PB freelance - skip the final e -freelanc) e (r V // PB the word 'freelancer' -hospic) e (_ // PB hospice - skip the final e -hospic) et @-D // PB - penc) e // PB pence - skip the e -interfac) e // PB interface - skip the final e - sauc) e // PB sauce, bearnaisesauce - juic) e // PB juice - skip the e -servic) e (fag // PB servicefag -servic) e (med // PB servicemedarbejder -servic) e (sektor // PB servicesektor -servic) e (station // PB servicestation -servic) e (ydelse // PB serviceydelse -softic) e // PB softice -motorpac) e // PB motorpace - skip the e - s) e (rviceeftersyn '@ // PB serviceeftersyn -motorpac) e (n @ // PB motorpacen - pac) e (maker // PB pacemaker - skip the e -provenc) e // PB Provence - skip the e - prov) e (nce 'A: // PB Provence - bl) eg aI // PB bleg - e (gsot a // PB blegsot - e (gfi a // PB blegfis - bl) egem (id aI@m // PB blegemiddel, blegemidler - eg (rød aI // PB blegrød - _b) eg (_ aI // PB - æbl) e (grød 3 // PB æblegrød - bobl) e 3 // PB boblegummi - nothing to do with "bleg" - _) egen (@ ej@n // PB egenrådig, egennyttig - eg (enbeskyd+ aI // PB egenbeskydning - _r) e (sten_ &# // PB resten - nyr) e (+ V // PB nyresten + _ni) e // changed from [ni)e] to[_ni)e] - niende, nier, niendedel + _ni) e (ce 'E: // exception from the rule above (_ni)e) + _fl) ee (ce+ i: // fleece, fleecejakka - material for clothing + fleec) e // fleece - skip the final e +freelanc) e // freelance - skip the final e +freelanc) e (r V // the word 'freelancer' +hospic) e (_ // hospice - skip the final e +hospic) et @-D // + penc) e // pence - skip the e +interfac) e // interface - skip the final e + sauc) e // sauce, bearnaisesauce + juic) e // juice - skip the e +softic) e // softice +motorpac) e // motorpace - skip the e +motorpac) e (n @- // motorpacen + pac) e (maker // pacemaker - skip the e +provenc) e // Provence - skip the e + prov) e (nce 'A: // Provence + bl) eg aI // bleg + e (gsot a // blegsot + e (gfi a // blegfis + bl) egem (id aI@m // blegemiddel, blegemidler + eg (rød aI // blegrød + _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 (enbeskyd+ aI // egenbeskydning + _r) e (sten_ &# // resten + nyr) e (+ V // nyresten r) e (staurant E - e (gansigt &# // PB blegansigt -_kongr) e (s '&# // PB kongres - stressed but not after a syllable - _regr) e (s '&# // PB regres - _regr) e (ssiv &# // PB regressiv - kongr) e (s &# // PB lægekongres - _rødb) e (de 'e // PB stressed e in 'rødbede' -_aller) e (de_ E // PB allerede - otherwise the E is changed by another rule - _im) e (ns+ 'e // PB stressed - _magn) e (t 'e // PB stressed - _refl) e (ks 'E // PB stressed - divan) e (ser 'e // PB stressed - lar) e (do 'e // PB - l) ew (is u: // PB name - p) eabody ibVdi // PB name - exchange _^_en // PB - eagle i:g@l // PB - p) ea (co i: // PB Peacock - _p) ea (k_ i: // PB - dr) ea (m i: // PB English - _d) ee (p i: // PB Deep Throat - _p) each i:tS // PB - _) eton i:t@n // PB university + e (gansigt &# // blegansigt +_kongr) e (s '&# // kongres - stressed but not after a syllable + _regr) e (s '&# // regres + _regr) e (ssiv &# // regressiv + kongr) e (s &# // lægekongres + _rødb) e (de 'e // stressed e in 'rødbede' +_aller) e (de_ E // allerede - otherwise the E is changed by another rule + _im) e (ns+ 'e // stressed + _magn) e (t 'e // stressed + _refl) e (ks 'E // stressed + divan) e (ser 'e // stressed + lar) e (do 'e // + l) ew (is u: // name + p) eabody ibVdi // name + exchange _^_en // + eagle i:g@-l // + p) ea (co i: // Peacock + _p) ea (k_ i: // + dr) ea (m i: // English + _d) ee (p i: // Deep Throat + _p) each i:tS // + _) eton i:t@-n // university -// PB final -em - stressed e - &) em (_$p_alt+ 'em // PB problem - &) em (et$p_alt+ 'em // PB problemet - &) em (er$p_alt+ 'em // PB problemer - &) em (s$p_alt+ 'em // PB problems +// final -em - stressed e + &) em (_$p_alt+ 'em // problem + &) em (et$p_alt+ 'em // problemet + &) em (er$p_alt+ 'em // problemer + &) em (s$p_alt+ 'em // problems // various exceptions - el) e (ndig ?E // PB møgelendig - steressed with $alt rule - leb) e (ndig 'E // PB steressed with $alt rule - _ball) e (t@ 'E // PB balletdanser -_en_ball) e (t 'E // PB -_vor_ball) e (t 'E // PB -_vores_ball) e (t 'E // PB -_jeres_ball) e (t 'E // PB -_deres_ball) e (t 'E // PB -_hans_ball) e (t 'E // PB -_hendes_ball) e (t 'E // PB - _r) e (ndyr+ e // PB rendyrke + el) e (ndig ?E // møgelendig - steressed with $alt rule + leb) e (ndig 'E // steressed with $alt rule + _ball) e (t@ 'E // balletdanser +_en_ball) e (t 'E // +_vor_ball) e (t 'E // +_vores_ball) e (t 'E // +_jeres_ball) e (t 'E // +_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 // PB - murst) e (n e // PB -bautast) e (n // PB -meterst) e (n ?e // PB kilometersten +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 // PB + h) e (nde+ ?e // carst) e (n @- karst) e (n @- - hest) e (n+ @- // PB hestene - serv) e @- // PB reservehjul - off) e (n 3 // PB offentliggøre - tr) edive &#Dv@ // PB tredive - tr) ediver &#DvV // PB trediverne - tr) edivete &#Dft@ // PB tredivete - entente ANt'ANt // PB - prof) essionel 'eSonel // PB - eisenhower aIs@nhAuV // PB + hest) e (n+ @- // hestene + serv) e @- // reservehjul + off) e (n @- // offentliggøre + tr) edive &#Dv@ // tredive + tr) ediver &#DvV // trediverne + tr) edivete &#Dft@ // tredivete + entente ANt'ANt // + prof) essionel 'eSonel // + eisenhower aIs@nhAuV // st) ei (nK aI // -stein in German names - _h) ei (l_ aI // PB heil Hitler - s) ei (smol aI // PB seismolog - t) eint EN // PB - eiger aIgV // PB Eiger mountain - sp) eed i:d // PB speedbåd - t) ech Ek // PB hightech -stoneh) enge EndZ // PB - pal) e (rmo 'E // PB - w) ee i: // PB Sweeney, weekend, tweed - tw) eed i:d // PB - _h) ei (di aI // PB name - _d) ei (dre i: // PB name - trap) ez 'Ets // PB stressed - l) eague i:g // PB Champions League - _m) e (d E // PB med, medgift + _h) ei (l_ aI // heil Hitler + s) ei (smol aI // seismolog + t) eint EN // + eiger aIgV // Eiger mountain + sp) eed i:d // speedbåd + t) ech Ek // hightech +stoneh) enge EndZ // + pal) e (rmo 'E // + w) ee i: // Sweeney, weekend, tweed + tw) eed i:d // + _h) ei (di aI // name + _d) ei (dre i: // name + trap) ez 'Ets // stressed + l) eague i:g // Champions League + _m) e (d E // med, medgift -// PB Words ending with e - general rule - @) e (_+ @-_! // PB husleje, vække - @) e (s_ @- // PB føles - s) e (_+ @_! // PB galakse, skose - @r) e (_+ ?V // PB tørre - nerv) e (C @- // PB nervesammenbrud - urg) ere (_++ VV // PB burgere - r) e (re_ E // PB operere - k) e (@ @- // PB vækkeur TEST - studi) e (@ @- // PB studiegruppe - studi) er V // PB - klog) e @- // PB klogeste - næs) e (@ @- // PB næseblod - dans) e (@ @- // PB dansebal - ås) e @- // PB dåse, gåsehud, Åse - ån) e (@ @- // PB låneansøgning - ev) e (@ @- // PB levevis - hest) e (@ @- // PB hestehår - nt) e (@ @- // PB plantesaft - rn) e (@ @- // PB børnebog - mm) e (@ @- // PB dømmekraft - ab) e (@ @- // PB abekat - øl) e (@+ @- // PB køleskab - Aff) e (@ @- // PB straffeattest - Alj) e (@ @- // PB patruljevogn - Avn) e (@ @- // PB navneordbog - yv) e (@ @- // PB flyveplads - @iker) e (_N V // PB fabrikere - @iker) et (_ VD // PB fabrikeret -groupi) e // PB silent e - _jani) e // PB name - silent e - _arti) e // PB name - silent e - ud) e (@+ @- // PB studehandel, brudepige - øj) e (@ @- // PB øjeblik - ukk) e @ // PB smukkeste - ol) e @- // PB tolerant TEST - ul) e (@ @- // PB juleaften, gulerod - is) e (@ @- // PB spisetid, fisefornem - im) e (@ @- // PB timevis - åb) e (n @- // PB åbenbart - Arr) e (@ @- // PB tørresnor - TEST -konsul) e (nt E // PB sikkerhedskonsulent - afs) e (_ e // PB afse - afs) e (t_+ e // PB afset - tils) e e // PB tilset -foruds) e e // PB - godes) e e // PB tilgodese -efters) e e // PB - _) e (_speak i // PB eSpeak - capital s makes the e one word - _) e (_mail i // PB e-mail - hjemv) e e // PB - hjemv) ej aI // PB - _uds) e (_+ e // PB udse - _uds) e (r_+ e // PB udser - puds) er (+ V // PB - turn) e 'e // PB - kup) e (+ 'e // PB stressed - stud) e (re 'e // PB studerende - joyc) e // PB name - silent e - joyc) e (s 3 // PB name - keep the e +// Words ending with e - general rule + @) e (_+ @-_! // husleje, vække + @) e (s_ @- // føles + s) e (_+ @_! // galakse, skose + @r) e (_+ ?V // tørre + nerv) e (C @- // nervesammenbrud + urg) ere (_++ VV // burgere + r) e (re_ E // operere + kk) e (@ @- // vækkeur TEST + studi) e (@ @- // studiegruppe + studi) er V // + Catt) e (@ @- // skatteår + klog) e @- // klogeste + vi) e (@ @- // vievand + næs) e (@ @- // næseblod + dans) e (@ @- // dansebal + ås) e @- // dåse, gåsehud, Åse + ån) e (@ @- // låneansøgning + ev) e (@ @- // levevis + arn) e (@ @- // barnebarn + kam) e (ra @- // + ull) e (@ @- // rullebræt + od) e (@ @- // modetøj + hest) e (@ @- // hestehår + nt) e (@ @- // plantesaft + ørn) e (@ @- // børnebog + mm) e (@ @- // dømmekraft + ab) e (@ @- // abekat + øl) e (@+ @- // køleskab + Aff) e (@ @- // straffeattest + Alj) e (@ @- // patruljevogn + Avn) e (@ @- // navneordbog + yv) e (@ @- // flyveplads + App) e (@ @- // tæppeforretning + @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 + øj) e (@ @- // øjeblik + ukk) e @ // smukkeste + ol) e @- // tolerant TEST + ul) e (@ @- // juleaften, gulerod + is) e (@ @- // spisetid, fisefornem + im) e (@ @- // timevis + åb) e (n @- // åbenbart + Arr) e (@ @- // tørresnor - TEST +konsul) e (nt E // sikkerhedskonsulent + afs) e (_ e // afse + afs) e (t_+ e // afset + tils) e e // tilset +foruds) e e // + godes) e e // tilgodese +efters) e e // + _) e (_speak i // eSpeak - capital s makes the e one word + _) e (_mail i // e-mail + hjemv) e e // + hjemv) ej aI // + _uds) e (_+ e // udse + _uds) e (r_+ e // udser + puds) er (+ V // + turn) e 'e // + kup) e (+ 'e // stressed + stud) e (re 'e // studerende + joyc) e // name - silent e + joyc) e (s @- // name - keep the e -// PB Words ending with -te - t) e (_ @ - _ist) e e // PB iste (cold tea) - urtet) e e // PB herbal tea -kamillet) e e // PB -middagst) e e // PB eftermiddagste - komit) e 'e // PB - komit) ee (n 'e@- // PB -variet) e 'e // PB +// Words ending with -te + t) e (_ @- + _ist) e e // iste (cold tea) + urtet) e e // herbal tea +kamillet) e e // +middagst) e e // eftermiddagste + komit) e 'e // + komit) ee (n 'e@- // +variet) e 'e // -// PB Words ending with -se or -ce - s) e (_ @ - c) e (_ @ - c) e (rin @- // PB nitroglycerin +// Words ending with -se or -ce + s) e (_ @- + c) e (_ @- + c) e (rin @- // nitroglycerin overs) e (_ e overs) e (s_ e - _ans) e (++ e // PB avoid [V] in "anser" and [@] in "anse" -velans) e (t e // PB + _ans) e (++ e // avoid [V] in "anser" and [@] in "anse" +velans) e (t e // -// PB Words ending with -ske (and ste, spe) - L08) e (_ @ // PB påske, forske +// Words ending with -ske (and ste, spe) + L08) e (_ @- // påske, forske // exceptions to the -ske rule mosk) e 'e // moske, moskeen, moskeer - måsk) e (_ 'e // PB måske - _sk) e (_ e // PB ske - _sp) e (_ e // PB in spe - _sk) e (er e // PB skeer -dessertsk) e e // PB dessertske -fugesk) e e // PB fugeske -grydesk) e e // PB grydeske -grødsk) e e // PB grødske - hulsk) e e // PB hulske - kansk) e e // PB kanske - mursk) e e // PB murske -målesk) e e // PB måleske -strøsk) e e // PB strøske -støbesk) e e // PB støbeske -dessertsk) e e // PB -strøsk) e e // PB -spisesk) e e // PB -sølvsk) e e // PB -potagesk) e e // PB -suppesk) e e // PB -morgent) e e // PB - tesk) e e // PB teske - borts) e (+ e // PB - gourm) e 'e // PB gourmet - _rod) e (o 'e // PB stressed + måsk) e (_ 'e // måske + _sk) e (_ e // ske + _sp) e (_ e // in spe + _sk) e (er e // skeer +dessertsk) e e // dessertske +fugesk) e e // fugeske +grydesk) e e // grydeske +grødsk) e e // grødske + hulsk) e e // hulske + kansk) e e // kanske + mursk) e e // murske +målesk) e e // måleske +strøsk) e e // strøske +støbesk) e e // støbeske +dessertsk) e e // +strøsk) e e // +spisesk) e e // +sølvsk) e e // +potagesk) e e // +suppesk) e e // +morgent) e e // + tesk) e e // teske + borts) e (+ e // + gourm) e 'e // gourmet + _rod) e (o 'e // stressed -// PB stressed e in words with -ekt - konfekt - _aff) e (kt 'E -_arkit) e (kt 'E - _asp) e (kt 'E - _def) e (kt 'E - _desp) e (kt 'E - _dial) e (kt 'E - _eff) e (kt_ 'E -_idiol) e (kt 'E - _ins) e (kt 'E -_intell) e (kt 'E - _koll) e (kt_ 'E - _koll) e (kte 'E kollekten - _konf) e (kt 'E - _korr) e (kt '&# - _obj) e (kt 'E - obj) e (ktiv E - _perf) e (kt 'E - _proj) e (kt 'E - _proj) e (ktil E -_prosp) e (kt 'E - _præf) e (kt 'E - _resp) e (kt 'E - resp) e (ktabel E -_sociol) e (kt 'E - _subj) e (kt 'E - _susp) e (kt 'E +// stressed e in words with -ekt - konfekt + _aff) eg (t 'E +_arkit) eg (t 'E + _asp) eg (t 'E + _def) eg (t 'E + _desp) eg (t 'E + _dial) eg (t 'E + _eff) eg (t_ 'E +_idiol) eg (t 'E + _ins) eg (t 'E +_intell) eg (t 'E + _koll) eg (t_ 'E + _koll) eg (te 'E kollekten + _konf) eg (t 'E + _korr) eg (t '&# + _obj) eg (t 'E + obj) eg (tiv E + _perf) eg (t 'E + _proj) eg (t 'E + _proj) eg (til E +_prosp) eg (t 'E + _præf) eg (t 'E + _resp) ek (t 'Eg + resp) eg (tabel E +_sociol) eg (t 'E + _subj) eg (t 'E + _susp) eg (t 'E - // PB stressed e in words with -cept - konfekt + // stressed e in words with -cept - konfekt _rec) e (pt 'E _konc) e (pt 'E _acc) e (pt 'E -// PB stressed e in a few words inding with -est +// 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 - _prot) e (ster @ // PB protesterede + _prot) e (ster @- // protesterede _reg) e (st 'e - // PB stressed e in some words with final -ente/-ende + // stressed e in some words with final -ente/-ende _testam) e (nte 'e _divid) e (nte 'e _regim) e (nte 'e _sakram) e (nte 'e -// PB words with final -ende +// words with final -ende &) ende (_++ @-n@- // troende // exceptions to the -ende rule k) end (e_+++ E-n // genkende, kende, anerkende - _erk) end (e_++ 'En // PB erkende + _erk) end (e_++ 'En // erkende k) ender (_ E-nV // genkender, kender, anerkender - sv) ende (_ E-n@- // PB not a -ende suffix - svende - henv) ende (_ E-n@- // PB - henv) ender (_ E-nV // PB - anv) ende (_ E-n@- // PB - anv) ender (_ E-nV // PB - fuld) ende E-n@- // PB - ops) ende E_n@- // PB - røvr) ende (_ a-n@- // PB røvrende - røvr) ender (_ a-nV // PB røvrender - omv) ende (+ E-n@- // PB omvende - omv) ender (+ E-nV // PB omvender - v) ende (tta End'E // PB stressed - lav) ende (l 'En3 // PB satressed - fj) ende e-n@- // PB dødsfjende - fj) ender e-nV // PB dødsfjender + henv) ende (_ E-n@- // + henv) ender (_ E-nV // + sv) ende (++ En@- // følgesvende + anv) ende (_ E-n@- // + anv) ender (_ E-nV // + fuld) ende E-n@- // + ops) ende E_n@- // + røvr) ende (_ a-n@- // røvrende + røvr) ender (_ a-nV // røvrender + omv) ende (+ E-n@- // omvende + omv) ender (+ E-nV // omvender + v) ende (tta End'E // stressed + lav) ende (l 'En@- // satressed + fj) ende e-n@- // dødsfjende + fj) ender e-nV // dødsfjender - L08) e (gt e // PB stegt - L08) eg aI // PB steg, spegepølse - fisk) eg 3g // PB tunfiskegryde - torsk) eg 3g // PB torskegilde + L08) e (gt e // stegt + L08) eg aI // steg, spegepølse + fisk) eg @-g // tunfiskegryde + torsk) eg @-g // torskegilde _st) eg (_ e // steg - verb, problem with noun = "roast" - eg (angs 3g // PB førstegangsforbrydere. - best) eg (_ 'e // PB besteg - best) eg (et_ 'e // PB besteget -overst) eg ej // PB - st) eg (å @-g // PB præstegård - eg (affel @-g // PB fiskegaffel - _sk) eg (affel eg // PB skegaffel - rel) eg (ion @-g // PB - n) egl aIl // PB negl - r) egel Ejl // PB regel - r) egl Ejl // PB regler - k) eg (le aI // PB keglebane - h) eg (le aI // PB gennemhegle - br) ea (k Ej // PB breakdance - res) e (rve 'e // PB reserve - stressed - res) erver (_en Erv'er // PB reserver en plads + eg (angs @-g // førstegangsforbrydere. + best) eg (_ 'e // besteg + best) eg (et_ 'e // besteget +overst) eg ej // + st) eg (å @-g // præstegård + eg (affel @-g // fiskegaffel + _sk) eg (affel eg // skegaffel + rel) eg (ion @-g // + n) egl aIl // negl + r) egel Ejl // regel + r) egl Ejl // regler + k) eg (le aI // keglebane + h) eg (le aI // gennemhegle + br) ea (k Ej // breakdance + res) e (rve 'e // reserve - stressed + res) erver (_en Erv'er // reserver en plads m) eg (a eg // mega, omega - _) eget (_ a:j@D // PB eget - r) eg (er Eg // PB e=> E - eg (n aI // PB regn, tegning, lege - _v) eg (_ ej // PB - _v) eg (et_ ej // PB - skr) eg aI // PB -underl) eg ej // PB underlegen - p) eg aI // PB pegefinger - eg (å+ @-g // PB oppegående - eg (rund @-g // PB klippegrund - p) eg (asus eg // PB - p) egmatit Egm&t'it // PB - s) eg (l aI // PB segl, forsegle - t) eg (l aI // PB teglværk - p) eggy Egi // PB name - ll) ey i // PB volley - _) ege (_ e:j@- // PB added _ - ege(træer) - _) ege (træ e:j@- // PB added _ - egetræe - _) ege (løv e:j@- // PB - _) ege (blad e:j@- // PB - L06) eg (e aI // PB p) changed to L06 to include b - l) ege (me Ej-@- // PB fornedrelseslegeme + _) eget (_ aI@-D // eget + r) eg (er Eg // e=> E + eg (n aI // regn, tegning, lege + _v) eg (_ ej // + _v) eg (et_ ej // + skr) eg aI // +underl) eg ej // underlegen + p) eg aI // pegefinger + eg (å+ @-g // oppegående + eg (rund @-g // klippegrund + p) eg (asus eg // + p) egmatit Egm&t'it // + s) eg (l aI // segl, forsegle + t) eg (l aI // teglværk + p) eggy Egi // name + ll) ey i // volley + _) ege (_ e:j@- // added _ - ege(træer) + _) ege (træ e:j@- // added _ - egetræe + _) 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) eg (e+ aI // PM julelege, blege - coll) ege idZ // PB - l) eg (ere eg // PB legere, priviligeret - l) egende (_børn aI@-n@- // PB - l) egende (_let aI@-n@- // PB - l) eg (enda eg // PB legendarisk - _l) egende (_ eg'End3 // PB "myth" -selskabsl) eg aI // PB - l) eg (er eg // PB delegere - eg (evinst+ eg // PB spillegevinst - overl) eg Ej // PB overlegen + coll) ege idZ // + l) eg (ere i-g // priviligeret + l) egende (_børn aI@-n@- // + l) egende (_let aI@-n@- // + l) eg (enda eg // legendarisk + _l) egende (_ eg'End@- // "myth" +selskabsl) eg aI // + eg (evinst+ @-g // spillegevinst + overl) eg Ej // overlegen r) ej (s aI engag (e aNg&S // engagere _) en (tre aN - en (tré aN // PB - c) en (t En // PB koncentrere + en (tré aN // + c) en (t En // koncentrere c) en (tA En -// c) en (tC en p) en (sion aN r) en (ce AN // reference - br) e (d E // PB seinebred, flodbred - br) edd Ed // PB bredde - _tr) e (tten a // tretten + br) e (d E // seinebred, flodbred + br) edd Ed // bredde _tr) e (d E // tredje - ej (+++ aI // PB changed from ai to aj - nej, arbejde - eje (n++ aj@- // PB ejendom - e (job+ 3 // PB ønskejob - e (jæger+ 3 // PB skalpejæger - dr) ej (+ aI // PB fordrejet - ykk) e (C @- // PB lykkejæger - skørt) e (C @- // PB skørtejæger - hygi) ej (ne 'aI // PB stressed - ej (aku ej // PB ejakulere - gal) ej 'aI // PB stressed - ejer (C aIV // PB grundejerforening - mælk) e 3 // PB mælkejunge - m) ejern 3jErn // PB stemmejern - v) ejern 3jErn // PB rivejern - ej (agt 3j // PB menneskejagt - e (jul+ @- // PB lillejuleaften - _pleb) ej (er 'aI // PB stressed - nd) ej (ob 3dZ // PB mandejob, kvindejob - m) ej (ob 3dZ // PB drømmejob - lort) e @- // PB lortejob - avoid "aj" - lus) e (++ @- // PB væggelusejæger - lus) er (+ V // PB bluser - syg) e (++ @- // PB sygejournal - avoid [s'yaj,urn&:l] - v) ej (r_+ E // PB gråvejr - v) ej (ret_+ E // PB gråvejret - _v) ej (rC+ E // PB vejrsituationen - v) ejr (e_ aIR // PB vejre - v) ejr (er_ aIR // PB vejrer + ej (+++ Aj // changed from ai to aj - nej, arbejde + eje (n++ aI@- // ejendom + e (job+ @- // ønskejob + e (jæger+ @- // skalpejæger + dr) ej (+ aI // fordrejet + ykk) e (C @- // lykkejæger + skørt) e (C @- // skørtejæger + hygi) ej (ne 'aI // stressed + ej (aku ej // ejakulere + gal) ej 'aI // stressed + ejer (C aIV // grundejerforening + mælk) e @- // mælkejunge + m) ejern @-jErn // stemmejern + v) ejern @-jErn // rivejern + ej (agt++ @-j // menneskejagt + e (jul+ @- // lillejuleaften + _pleb) ej (er 'aI // stressed + nd) ej (ob @-dZ // mandejob, kvindejob + m) ej (ob @-dZ // drømmejob + lort) e @- // lortejob - avoid "aj" + lus) e (++ @- // væggelusejæger + lus) er (+ V // bluser + syg) e (++ @- // sygejournal - avoid [s'yaj,urn&:l] + v) ej (r_+ E // gråvejr + v) ej (ret_+ E // gråvejret + _v) ej (rC+ E // vejrsituationen + v) ejr (e_ aIR // vejre + v) ejr (er_ aIR // vejrer _offic) e (_ // office (officepakke) -// fl) e (de+ e // PB aflede -// ov) edet (_ @-D@-d // PB hovedet -// dl) edet (+ eD@-t // PB håndledet -// r) edet (_ ED3d // PB helbredet - st) edet (_ ED@-t // PB værkstedet + st) edet (_ ED@-t // værkstedet Ad) en (@ @-n // udenlandsk, udenad - Ad) en (t en // PB identificere - sir) ene (+ 'En@- // PB - gr) ene (+ En@- // PB grene - rr) ed @-D // PB lærred, ørred - rr) ed (A @-d // PB herredømme - fingr) ene Vn@ // PB - _st) evie ivi // PB name + Ad) en (ti en // identificere + 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 - nog) et (_ D // PB noget + nog) et (_ D // noget styr) e (n 'e // styren - diskr) e (t+ 'e // PB stressed - ork) ester 'estV // PB stressed e in 'orkester' - borgm) e (ster 'e // PB stressed - prot) e (se 'e // PB stressed - forur) e (ne 'e // PB stressed - forurene -_terap) eut 'Wwd // PB stressed - terap) eut Wwd // PB synsterapeut - _torp) e (do 'e // PB stressed - _cel) e (ber 'e // PB stressed -_parent) e (s 'e // PB stressed - _kat) e (der 'e // PB stressed - ekst) e (rn 'E // PB stressed - int) e (rn+ 'E // PB stressed - bod) e (ga 'e // PB stressed -halvfj) e (rds '& // PB stressed - _konc) e (rn 'E // PB - merc) e (des 'e // PB car -vietnam) e (ser 'e // PB stressed - _ant) e (nne 'E // PB stressed - _el) e (v 'e // PB stressed - el) e (v e // PB kostelev, skoleelev - el) e (vat 3 // PB elevator - sydv) e (st 'E // PB stressed - nordv) e (st 'E // PB - musk) e (t+ 'E // PB stressed - all) e (gro 'e // PB stressed - _id) e 'e // PB ide, ideen - id) ee (l e'E // PB ideelle, ideelt -havann) e (ser 'e // PB stressed - _malt) e (s 'e // PB malteser + 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 // + 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 + el) e (vat @- // elevator + 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 -// PB a few words with final -es - stressed e +// a few words with final -es - stressed e abc) e (s 'E cypr) e (s '&# rec) e (s 'E exc) e (s 'E proc) e (s 'E - k) ea (ton i: // PB name - ompet) en (ce aN - ress) en (timent aN // PB ressentiment + k) ea (ton i: // name + ompet) en (ce AN + ress) en (timent AN // ressentiment m) edie 'edj3 // medie, kommedie m) edier 'edjV // medier, kommedier - inds) e e // PB indse - linds) ey i // PB name - inds) e (r_ e // PB indser - rak) e (t+ E // PB bremseraket - _rak) e (t+ 'E // PB raket - _rak) e (tt+ '?E // PB raketten - etagere et&S'E:R // PB - espeak ispi:k // PB - eindhoven ajnh'o:f@n // PB - einstein ajnstajn - eyeliner ajlajnV // PB - _) edie (_ idi // PB name - k) ey i // PB jockey - eiffel aIf3l // PB Eiffeltårnet - eileen aIl'i:n // PB name - ecstacy Est&si // PB - s) ei (s aI // PB seismograf - rev) eill (e 'Elj // PB - ef) eu Vj // PB plant - _) earl W:l/2 // PB Earl - _) earp W:b // PB name - _) east i:sd // PB Eastwood - ecstasy Est&si // PB -stript) ease i:s // PB - l) ea (se i // PB - l) ea (sing i // PB - eu (ro Ww // PB Europa, euro - eau 'o // PB bureau, niveau - eau (kti @au // PB pladeauktion - eau (to @au // PB hæveautomat - empire (_state EmpaI3 // PB - _t) e (_ e // PB te - kin) e (s 'e // PB kineser - d) e (s_ @ // PB mødes - _d) e (s_ e // PB des = desto, jo - var) e 3 // PB vareprøve, varevogn TEST - _) eddie Edi // PB name - C) ey (_ i // PB names with final ey - TEST - harv) ey i // PB name - disn) ey i // PB name + inds) e e // indse + linds) ey i // name + inds) e (r_ e // indser + rak) e (t+ E // bremseraket + _rak) e (t+ 'E // raket + _rak) e (tt+ '?E // raketten + etagere et&S'E:R // + espeak ispi:k // + eindhoven Ajnh'o:f@-n // + einstein AjnstAjn + eyeliner AjlAjnV // + _) edie (_ idi // name + k) ey i // jockey + eiffel aIf@-l // Eiffeltårnet + eileen aIl'i:n // name + ecstacy Est&si // + s) ei (s aI // seismograf + rev) eill (e 'Elj // + ef) eu Vj // plant + _) earl W:l/2 // Earl + _) earp W:b // name + _) east i:sd // Eastwood + ecstasy Est&si // +stript) ease i:s // + l) ea (se i // + l) ea (sing i // + eu (ro Ww // Europa, euro + eau 'o // bureau, niveau + eau (kti @Au // pladeauktion + eau (to @Au // hæveautomat + empire (_state EmpaI3 // + _t) e (_ e // te + kin) e (s 'e // kineser + d) e (s_ @- // mødes + _d) e (s_ e // des = desto, jo + var) e @- // vareprøve, varevogn TEST + _) eddie Edi // name + C) ey (_ i // names with final ey - TEST + harv) ey i // name + disn) ey i // name _barn) ey i // PN name - jess) e i // PB name - m) ey (er aI // PB name - sylv) e (ster 'E // PB name -magdal) e (n 'e // PB Magdalena - name - ebay ibEj // PB eBay - budap) e (st 'E // PB stressed - h) ei (del aI // PB Heidelberg - r) eaux O // PB Devereaux - eugene judZ'i:n // PB name - _ir) e (ne++ 'E // PB name - e (legi++ e // PB elegi, relegion - ven) e (dig 'e // PB - t) ea (m i: // PB teamwork - h) eart A:d // PB Ourple Heart - _d) e (_la_ 3 // PB creme de la creme - _d) e (_gaulle 3 // PB name - _d) e (_ i // PB -venstr) e V // PB venstreorienterede - e (venty E: // PB eventyr + jess) e i // name + m) ey (er aI // name + sylv) e (ster 'E // name +magdal) e (n 'e // Magdalena - name + ebay ibEj // eBay + budap) e (st 'E // stressed + h) ei (del aI // Heidelberg + r) eaux O // Devereaux + eugene judZ'i:n // name + _ir) e (ne++ 'E // name + e (legi++ e // elegi, relegion + ven) e (dig 'e // + t) ea (m i: // teamwork + h) eart A:d // Ourple Heart + _d) e (_la_ W // creme de la creme + _d) e (_gaulle @- // name + _d) e (_ i_! // +venstr) e V // venstreorienterede + e (venty E: // eventyr -// PB plural suffix -ene +// plural suffix -ene @) ene (_ @-n@- // benene, pengene @) enes (_ @-n@-s // benenes @r) ene (_ Vn@- // brødrene @r) enes (_S4 Vn@-s // brødrenes @gg) ene (_S4 @-n@- // væggene - tj) ene (++ En@- // PB betjene - tj) ener (+ EnV // PB - forl) ene 'en@- // PB stressed - ur) ene (_tanker 'en@- // PB - marl) ene 'en@- // PB name - _hel) ene 'en@- // PB name -at_form) ene 'en@- // PB + tj) ene (++ En@- // betjene + tj) ener (+ EnV // + forl) ene 'en@- // stressed + ur) ene (_tanker 'en@- // + marl) ene 'en@- // name + _hel) ene 'en@- // name +at_form) ene 'en@- // -// PB stressed e in nouns with final -esse in da_list - &) esse ($p_alt ''?Es3 // finesse +// stressed e in nouns with final -esse in da_list + &) esse ($p_alt ''?Es@- // finesse &) esse (r$p_alt ''?EsV // finesser - &r) esse ($p_alt '&#s3 // adresse + &r) esse ($p_alt '&#s@- // adresse &r) esse (r$p_alt '&#sV // adresser @r) esse (re$p_alt &#s'e // adresseret &ch) esse ($p_alt ''Es // duchesse -// PB stressed e in nouns with final -ese in da_list - &) ese ($p_alt 'es3 // hypotese +// stressed e in nouns with final -ese in da_list + &) ese ($p_alt 'es@- // hypotese &) ese (r$p_alt 'esV // hypoteser - &r) ese ($p_alt 'Es3 // parese + &r) ese ($p_alt 'Es@- // parese &r) ese (r$p_alt 'EsV // pareser .group el -// PB GENERAL RULE FOR WORDS ENDING WITH -EL - 1.182 words +// GENERAL RULE FOR WORDS ENDING WITH -EL - 1.182 words @) el (_ @-l // fødsel @) el (s @-l // fødselsdag, fødselstal + @) el (se @-l // forstoppelse @) el (Ar @-l // fødselar @) el (t_ @-l // ædelt - @r) el (_+ &#l // PB multikulturel - t) el (t_ el // PB ilttelt + @r) el (_+ &#l // multikulturel + t) el (t_ el // ilttelt + jub) el @-l // jubelidiot - p) el (s El // PB rævepels -// PB exceptions to the -el rule -// PB final -el in da_list - stressed e + p) el (s El // rævepels +// exceptions to the -el rule +// final -el in da_list - stressed e &) el ($p_alt+++ ''El // model &) el (t$p_alt ''El // kommercielt &r) el ($p_alt++ ''&#l // multikulturel &) el (l$p_alt+++ ''?E // modellen, hotellet - only one l &r) el (l$p_alt+++ ''&# // kulturelle - only one l &) elet ($p_alt @l'Et // kotelet - korn) el (evator el // PB not [korn'El3v,&tV] - _app) el (sin El // PB -person) el El // PB -dysfunktion) el El // PB - _s) elv (e ?Elv // PB selve, selveste - _s) elv El // PB selv, selvkørende - silent d - _s) elv (om_ El // PB selvom - silent d - isab) el El // PB name - marc) el 'El // PB name - form) el (t 'El // PB - form) el (l 'El // PB formelle - m) el (on el // PB vandmelon -venezu) el (a 'el // PB - hall) el (uja 'el // PB stressed - t) el (e el // PB sangtelegram - @hot) el ?El // PB møghotel -ration) el El // PB -krimin) el El // PB småkriminel - ti) el El // PB vækstpotentiel - el (iksir el // PB ungdomseliksir + korn) el (evator el // not [korn'El3v,&tV] + _app) el (sin El // +person) el El // +dysfunktion) el El // + _s) elv (e ?Elv // selve, selveste + _s) elv El // selv, selvkørende - silent d + _s) elv (om_ El // selvom - silent d + isab) el El // name + marc) el 'El // name + form) el (t 'El // + form) el (l 'El // formelle + m) el (on el // vandmelon +venezu) el (a 'el // + hall) el (uja 'el // stressed + t) el (e el // sangtelegram + @hot) el ?El // møghotel +ration) el El // +krimin) el El // småkriminel + ti) el El // vækstpotentiel + el (iksir el // ungdomseliksir -// PB final -elig in da_list - stress on previous syllable - &) elig ($p_alt =3li // PB jomfruelig - &s) elig ($p_alt '3li // PB foruselig +// final -elig in da_list - stress on previous syllable + &) elig ($p_alt =@-li // jomfruelig + &s) elig ($p_alt '@-li // foruselig -// PB final -elig without stress on previous syllable - C) el (ig+ @-l // PB kedelig, drabelig, fredelig - r) el (igi+ El // PB +// final -elig without stress on previous syllable + C) el (ig+ @-l // kedelig, drabelig, fredelig + r) el (igi+ El // _) el (C El // elkedel - _) ell El // PB eller -muskat) el ''El // PB - el (sk+ ?El // PB naturelsker -intellektu) el El // // PB - _pan) el 'el // PB - pan) el el // PB - sk) el (_ El // PB vandskel + _) ell El // eller +muskat) el ''El // + el (sk+ ?El // naturelsker +intellektu) el El // // + _pan) el 'el // + pan) el el // + sk) el (_ El // vandskel orsk) el el // forskel - rsk) el @l // tærskel - flosk) el @l // PB + rsk) el @-l // tærskel + flosk) el @-l // grænsesk) el el marksk) el el - h) el (ikopt El // PB kamphelikopter - &p) el (s_ El // PB fåreskindspels - &) el (ev el // PB mønsterelev - evang) el el // PB evangelie - d) el (t+ el // PB tildelt - @f) el (t El // PB oliefelt - lob) el (ia 'el // PB - d) el (e+ el // PB dele - særd) el (es 'el // PB særdeleshed - stressed - bind) ele (d @-le // PB bindeledder - kvind) el (A @-l // PB kvindelejr - djæv) el @-l // PB Djævelen - d) eler (+ elV // PB deler -bestandd) el el // PB - halvd) el el // PB -landsd) el el // PB - medd) el el // PB meddelsom, meddele -nederd) el el // PB - d) el (ing el // PB -_offici) el (+ 'el // PB officiel + h) el (ikopt El // kamphelikopter + &p) el (s_ El // fåreskindspels + &) el (ev el // mønsterelev + evang) el el // evangelie + d) el (t+ el // tildelt + @f) el (t El // oliefelt + lob) el (ia 'el // + d) el (e+ el // dele + særd) el (es 'el // særdeleshed - stressed + bind) ele (d @-le // bindeledder + kvind) el (A @-l // kvindelejr + djæv) el @-l // Djævelen + d) eler (+ elV // deler +bestandd) el el // + halvd) el el // +landsd) el el // + medd) el el // meddelsom, meddele +nederd) el el // + d) el (ing el // +_offici) el (+ 'el // officiel verbi) el 'El // adverbiel - mod) el El // PB fotomodel + mod) el El // fotomodel u) el (_+ 'El // aktuel, seksuel, visuel u) el (t_++ ''el // aktuelt, seksuelt, visuelt - _samu) el El // PB name - unds) el (ig 'el // PB + _samu) el El // name + unds) el (ig 'el // gennemsku) el (ig =el and) el el // andel - and) el (se @l // PB forbandelse - hand) el @l // handel - spani) el @l // PB cockerspaniel + and) el (se @-l // forbandelse + hand) el @-l // handel + spani) el @-l // cockerspaniel dani) el El // Daniel ford) el el // fordel - h) el (t+ el // PB tøffelhelt - h) el (st El // PB allerhelst - r) el (at el // PB relateret - public r) elation il'EjS@n + h) el (t+ el // tøffelhelt + h) el (st El // allerhelst + r) el (at el // relateret +public_r) elation il'EjS@-n t) el (ef el // telefon ed) el (+ el // femtedel - words where "del" means 'part of' - led) el (se @l // PB ledelse - ked) el (+ @l // grukedel - doesn't mean 'part of' + led) el (se @-l // ledelse + ked) el (+ @-l // grukedel - doesn't mean 'part of' benm) el el // benmel uform) el El // uformel + gabri) el El // name hvedem) el el brillest) el El servantest) el El @@ -2867,12 +2832,12 @@ underst) el (+ El icha) el l // Michael ika) el l // Mikael brøkd) el el - bagd) el el // PB + bagd) el el // byd) el el _for) el '&#l // forel - fish - _for) el (ig @l // foreligge - _for) el (æg 3l // forelægge - for) el (s 'El // PB forelsket + _for) el (ig @-l // foreligge + _for) el (æg @-l // forelægge + for) el (s 'El // forelsket citad) el 'el ejend) el el ent) el El // eksperimentel @@ -2918,167 +2883,162 @@ stikked) el el såv) el 'El _tab) el 'El tab) el El -respektab) el @l // PB -irritab) el @-l // PB +respektab) el @-l // +irritab) el @-l // tarant) el 'el univers) el 'el -_frikad) el (l 'El // PB stressed - frikadelle -frikad) el (l El // PB +_frikad) el (l 'El // stressed - frikadelle +frikad) el (l El // verdensd) el el - @) el (øs+++ @l // PB mageløs, kasteløs - jul) eleg @laI // PB juleleg - dr) el (+ Vl // PB ældre, forældreløs - alleh) elg (ens 'Elj // PB stressed - allehelgensdag - elliot EljVt // PB name + @) el (øs+++ @-l // mageløs, kasteløs + jul) eleg @-laI // juleleg + dr) el (+ Vl // ældre, forældreløs + alleh) elg (ens 'Elj // stressed - allehelgensdag + elliot EljVt // name .group en -// PB noun suffix -en (perlen - the pearl), -ens (perlens - the pearl's) +// noun suffix -en (perlen - the pearl), -ens (perlens - the pearl's) // not a suffix any more - too many exceptions - &) en (_N @-n // PB brien - kier) en (_N @-n // PB bankieren - avoid the r generated by [V] + &) en (_N @-n // brien + d) en (t_ @-n // beredent + kier) en (_N @-n // bankieren - avoid the r generated by [V] // &r) en (_N Vn // frisøren - &) ens (_+ @-ns // PB ungdommens + &) ens (_+ @-ns // ungdommens // &r) ens (_ Vns // frisørens // exceptions - aft) en @-n // PB avoid [Au] when aft(en) is translated - _ag) en (t 'en // PB agent - fænom) en 'en // PB stressed - _gem) en 'en // PB stressed - _form) en (e 'en // PB formene - stressed - ag) en (t en // PB agent - _ad) en (_ 'en // PB stressed - &g) en (st en // PB genstand - &g) en (kend en // PB genkende + aft) en @-n // avoid [Au] when aft(en) is translated + _ag) en (t 'en // agent + fænom) en 'en // stressed + _gem) 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 - _ur) en (_ en // PB uren hud -//kuglep) en En // PB -afløbsr) en (s &#n // PB + _ur) en (_ en // uren hud +//kuglep) en En // +afløbsr) en (s &#n // ord) en @-n anci) enn EN // anciennitet -_persi) enn 'En // PB - _pol) en (ta 'En // PB stressed - en (tusias AN // PB entusiasme - en (dos AN // PB endossement, endosere - en (_gros AN // PB en gros - dep) en En // PB fyldepen -kuglep) en En // PB - filtp) en En // PB -sportsgr) en En // PB sportsgren +_persi) enn 'En // + _pol) en (ta 'En // stressed + en (tusias AN // entusiasme + en (dos AN // endossement, endosere + en (_gros AN // en gros + dep) en En // fyldepen +kuglep) en En // + filtp) en En // +sportsgr) en En // sportsgren oliegr) en En - app) en (diks 'En // PB stressed - susp) en (sion en // PB suspension -retskaff) en @n - sid) en @n // PB not a suffix - siden + app) en (diks 'En // stressed + 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 // PB uskyldsren -ædelst) en en // PB +skyldsr) en en // uskyldsren +ædelst) en en // _præsid) en (t 'en // præsidentfrue - @sv) en (_ en // PB barndomsven -bøssev) en En // PB -pennev) en En // PB - dyrev) en En // PB -metalp) en En // PB - v) en (sk+ en // PB venskab - dov) en (++ @n // PB dovenskab - kob) en en // PB koben - øgleb) en en // PB nøgleben - læb) en (++ @n // PB overlæben - kæb) en @n (++ // PB -// stab) en (+ @n // PB generalstaben -elfenb) en (+ en // PB elfenbensbande -// skab) en (+ @-n // PB ondskaben, morskaben -// _åb) en (_+ @n // PB åben -// _åb) en (t_+ @n // PB åbent -// våb) en (++ @n // PB våben -// bb) en (_++ @n // PB klubben - bomb) en (+ @n // PB - ribb) en (++ en // PB ribbenssteg - gribb) en (e+ @n // PB gribbene + @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 + kob) en en // koben + øgleb) en en // nøgleben + læb) en (++ @-n // overlæben + kæb) en @-n (++ // +elfenb) en (+ en // elfenbensbande + bomb) en (+ @-n // + ribb) en (++ en // ribbenssteg + gribb) en (e+ @-n // gribbene -// PB sten = "stone" -gravst) en en // PB -nyrest) en en // PB -bautast) en en // PB - brost) en en // PB -byggest) en en // PB -drypst) en en // PB - dækst) en en // PB -fedtst) en en // PB -flintest) en en // PB -flintst) en en // PB -galdest) en en // PB -grundst) en en // PB - gråst) en en // PB -hinkest) en en // PB -hjørnest) en en // PB - holst) en en // PB -kalkst) en en // PB -kampest) en en // PB -kantst) en en // PB -kedelst) en en // PB -kværnst) en en // PB -kvaderst) en en // PB - limst) en en // PB -marmorst) en en // PB -meteorst) en en // PB -mindest) en en // PB -molerst) en en // PB -munkest) en en // PB - murst) en en // PB -møllest) en en // PB -månest) en en // PB -pimpst) en en // PB -prøvest) en en // PB -rendest) en en // PB -ranglest) en en // PB -rhinst) en en // PB -rokkest) en en // PB -rullest) en en // PB -runest) en en // PB -sandst) en en // PB -skorst) en en // PB -slibest) en en // PB -smutst) en en // PB -slutst) en en // PB -smykkest) en en // PB - småst) en en // PB -sveskest) en en // PB - tagst) en en // PB -tandst) en en // PB -teglst) en en // PB -trappest) en en // PB -trædest) en en // PB - tufst) en en // PB -tungst) en en // PB - vinst) en en // PB -ædelst) en en // PB - øjest) en en // PB - st) en (gulv en // PB - tj) en (st En // PB fortjenstmedalje - m) en (s+ En // PB menstruation - g) en (st en // PB genstand - g) en (sk en // PB genskabe - t) en (å @n // PB TEST - femtenårig - st) en (A en // PB stenograf - småst) en en // PB -eksist) en (s 'en // PB eksistens -_resid) en (s 'en // PB residens - resid) en (s en // PB residens -_acetyl) en 'en // PB - mæc) en 'en // PB -_influ) en (za 'En // PB -skizofr) en 'En // PB - til) end (ebr 'En // PB tilendebringe -_en_syr) en 'en // PB problem with "syren" = "the acid" - syr) en (en_ 'en // PB syrenen - syr) en (er_ 'en // PB syrener - syr) en (edsættende 3n // PB syrenedsættende +// 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 // + st) en (gulv en // + tj) en (st En // fortjenstmedalje + m) en (s+ En // menstruation + 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 // +_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 - s) en (sib AN // PB sensibel - _rev) en (che 'An // PB stressed - rev) en (che An // PB not stressed after a syllable + s) en (sib AN // sensibel + _rev) en (che 'An // stressed + rev) en (che An // not stressed after a syllable -// PB $alt words with final -ent in da_list - stressed e +// $alt words with final -ent in da_list - stressed e &) ent ($p_alt++ 'ent // student &es) ent ($p_alt+ 'AN // present (gift) &cc) ent ($p_alt+ 'AN // accent @@ -3086,963 +3046,969 @@ _en_syr) en 'en // PB problem with "syren" = "the acid" &) ent (ur$p_alt+ ent' // agentur - stressed u &) ent (alsk$p_alt+ ent' // + "alsk" - stressed a - orientalsk // exceptions - acc) ent (+ AN // PB - ev) ent (A++ @-nt // PB eventyr, eventuel - v) enti (on+ enSj // PB konvention - engros ANgr'o // PB engroshandler -// PB $alt words with final -enser in da_list - stressed e - &) enser ($p_alt ''EnsV // PB palæstinenser - &p) enser (_$p_alt Ens'er // PB kompenser - &) enser (e$p_alt Ens'er // PB kondensere - &g) ense ($p_alt g''EnsV // PB ålborgenser + acc) ent (+ AN // + ev) ent (A++ @-nt // eventyr, eventuel + v) enti (on+ enSj // konvention + engros ANgr'o // engroshandler +// $alt words with final -enser in da_list - stressed e + &) enser ($p_alt ''EnsV // palæstinenser + &p) enser (_$p_alt Ens'er // kompenser + &) enser (e$p_alt Ens'er // kondensere + &g) ense ($p_alt g''EnsV // ålborgenser - // PB $alt words with final -ent in da_list - stressed e + // $alt words with final -ent in da_list - stressed e @) ens ($p_alt+ 'ens // frekvens @r) ens ($p_alt+ '&#ns // kohærens - kv) ens ens // PB inkonsekvens + kv) ens ens // inkonsekvens -// PB $alt words with final -ence in da_list - stressed e - &) ence ($p_alt ''ANs@ // PB kadence - &) ence (r$p_alt ''ANsV // PB referencer - emin) ence ($p_alt 'Ens@ // PB exception -excell) ence ($p_alt 'Ens@ // PB exception +// $alt words with final -ence in da_list - stressed e + &) ence ($p_alt ''ANs-@ // kadence + &) ence (r$p_alt ''ANsV // referencer + emin) ence ($p_alt 'Ens-@ // exception +excell) ence ($p_alt 'Ens-@ // exception // common affix -ender - &) ender (_ EnV // anliggender, foretagender - &r) ender (_ anV // røvrender - _kal) ender 'EnV // PB - bart) ender EndV // PB + &) ender (_ En?V // anliggender, foretagender + &r) ender (_ an?V // røvrender + _kal) ender 'En?V // + bart) ender End?V // .group er - C) er (_ V // PB final "er": V after consonant - handler- TEST - _p) er (_ Er // PB per - t) er (et_ V // PB final "er": V after t - centeret - r) ere (_ VV // PB general rule: plural ending - murere - relat) ere eV // PB arbejdsrelaeret - oper) ere EV // PB hasteoperere -diskut) ere eV // PB omdiskuteret + C) er (_ ?V // final "er": V after consonant - handler- TEST + _p) er (_ Er // per + t) er (et_ ?V // final "er": V after t - centeret + r) ere (_ V?V // general rule: plural ending - murere + relat) ere e?V // arbejdsrelaeret + oper) ere ?EV // hasteoperere +diskut) ere e?V // omdiskuteret -// PB -ri words in da_list preceeded by e: stressed i - @) eri ($p_alt++ Vr'i // røveri, bedrageri - @) eri (sk$p_alt =Vri // røverisk, bedragerisk -infant) eri ($p_alt 3r''i // infanteri - vask) eri ($p_alt 3r''i // vaskeriet +// -ri words in da_list preceeded by e: stressed i + @) eri ($p_alt++ ?Vr'i // røveri, bedrageri + @) eri (sk$p_alt =?Vri // røverisk, bedragerisk +infant) eri ($p_alt @-r''i // infanteri + vask) eri ($p_alt @-r''i // vaskeriet st) eri (sk$p_alt 'eri // hysterisk - @røv) eri Vri // PB bankrøveri + @røv) eri ?Vri // bankrøveri -// PB noun suffix -er (perler - pearls), -ers (perlers - pearls') -erne (perlerne - the pearls), -ernes (perlernes - the pearls') +// noun suffix -er (perler - pearls), -ers (perlers - pearls') -erne (perlerne - the pearls), -ernes (perlernes - the pearls') // Also verb suffix (hun elsker - she loves) - not to mention Peter // NB suffix takes away the stres from "italiener/italienere" and since // it isn't possible to mark the rule "not for $alt words" -er and -ere a not suffixes any more. - @) er (_N V // elsker - @) ere (_+ VV // elskere - @) eres (_ V3Vs // elskeres - @) eren (_ Vr@-n // elskeren - @) erens (_ Vr3ns // elskerens - @) ers (_ Vs // elskers - @) erne (_++ Vn@- // elskerne - @) ernes (_ Vn@-s // elskernes - @) erste (_ Vsd@- // midterste - @) ert (_ Vd // lummert, slubbert - @) ert (s_ Vt // PB Alberts - slamb) ert Vd // slamberter - @) er (sC V // PB Petersborg, tiggerske - TEST - f) ers (k Ers // PB dåseferskner - @) ers (tat Ers // PB skadeserstatning + @) er (_N ?V // elsker + @) ere (_+ ?VV // elskere + @) eres (_ ?V@-Vs // elskeres + @) eren (_ ?Vr@-n // elskeren + @) erens (_ ?Vr@-ns // elskerens + @) ers (_ ?Vs // elskers + @) erne (_++ ?Vn@- // elskerne + @) ernes (_ ?Vn@-s // elskernes + @) erste (_ ?Vsd@- // midterste + @) ert (_ ?Vd // lummert, slubbert + @) ert (s_ ?Vt // Alberts + slamb) ert ?Vd // slamberter + @) er (sC V // Petersborg, tiggerske - TEST + f) ers (k Ers // dåseferskner + @) ers (tat Ers // skadeserstatning - wien) er V // PB wienerbrød - od) er V // PB moderinstinkt -sortep) er er // PB -vigtigp) er er // PB - beh) er (sk Er // PB beherske - _t) er (_ er // PB "de ter sig underligt" + wien) er V // wienerbrød + od) er V // moderinstinkt +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 // PB Gerta - xavi) er 'e // PB name - ys) er V // PB gyserafdeling - dans) er V // PB danserinde - rom) er V // PB romertal -genfotograf) er (e er // PB røntgenfotografere - fing) erne (m VnE // PB fingernem - @d) erne (++ Vn@ // let the nd rule kick in - inderne + _g) er (ta+ er // Gerta + xavi) er 'e // name + gys) er V // gyserafdeling + lys) er (ød @-R // lyserød + dans) er V // danserinde + rom) er V // romertal +genfotograf) er (e er // røntgenfotografere + fing) erne (m VnE // fingernem + @d) erne (++ Vn-@ // let the nd rule kick in - inderne g) er (n++ Er // gerning reag) ere (_ eV // overreagere _reag) ere (_ 'eV // reagere vurd) ere (_ eV // overvurdere - tr) ere (+ EV // indregistrere -@dramatis) ere er@- // PB overdramatisere -opsumm) ere er3 // PB -_overs) er er // PB - fj) er (_ er // PB falkefjer - ov) ere (ns++ V'e // PB uoverensstemmelse, overens - stressed + tr) ere (++ EV // indregistrere +@dramatis) ere eV // overdramatisere +_overs) er er // + fj) er (_ er // falkefjer + ov) ere (ns++ V'e // uoverensstemmelse, overens - stressed g) er (+ V // unger, borgerkrig - g) er (t er // PB Gert/Gerd - g) er (rig Er // PB gerrig - g) er (da Er // PB name - g) er (harK Er // PB Gerhard, Gerhart - g) er (e+ eV // PB overreagerede, omarrangere - gg) ere (+ 3V // PB indbyggere - sug) er (e V // PB blodsugere - læng) ere 3V // PB - borg) er (e V // PB - g) er (ani er // PB geranium - g) er (mans er // PB germansk - aflev) er er // PB aflevere - mm) er (et V // PB nummeret - nysg) er (ri er // PB nysgerrig -revolv) er (+ V // PB - int) er (@ V // PB interaktiv - smugl) er V // PB smuglergods - smugl) ere 3V // PB smuglere - _int) er (n_++ 'Er // PB intern - _int) er (ne_++ 'Er // PB interne - int) erne (t+ VnE // PB - skid) er Vr // PB - ønst) er (+ V // PB mønsterelev - st) er (i er // PB ministerium - st) er (eo er // PB stereoanlæg - st) er (ol Er // PB kolesterol - st) er (ling er // PB sterling - ist) er V // PB minister - TEST - s) er (vicestation W // PB - s) ervicemindet Wvismajnd@D - s) er (vicemed W // PB servicemedarbejder -kundes) ervice Wvis // PB - s) er (vicen W // PB - v) ernon (++ Wn3n // PB name - t) er (a+ er // PB synsterapeut - met) er (+ V // PB materantal - dent) er V // PB studentereksamen - _all) er V // PB allersidst - pill) er V // PB spiller, piller - brus) er V // PB bruseranvendelse - brus) ere 3V // PB brusere - eft) er V // PB efteruddanne - s) er (v+ Er // PB reservat, servo - s) er (t+ Er // PB dessertere - _kons) er (vativ 'Er // PB stressed - _præs) er (vativ 'Er // PB - _kons) er (ves 'Er // PB stressed - bas) ere eV // PB behovbaseret - tn) er V // PB partnerskab - all) er (g er // PB allergisk - j) er (n+++++ E3_ // jern, stjerne - talj) er (K+++ V // PB detaljer - trulj) er (n+++ V // PB patruljerne - linj) er (+++ V // PB telefonlinjer - lej) er V // PB sygeplejerske - bunk) er V // PB not a -er suffix -alexand) er =dV // PB Alexander + g) er (t er // Gert/Gerd + g) er (rig Er // gerrig + g) er (da Er // name + g) er (harK Er // Gerhard, Gerhart + g) er (e+ eV // overreagerede, omarrangere + gg) ere (+ @-V // indbyggere + sug) er (e V // blodsugere + læng) ere V?V // + borg) er (e V // + g) er (ani er // geranium + g) er (mans er // germansk + aflev) er er // aflevere + mm) er (et V // nummeret + nysg) er (ri er // nysgerrig +revolv) er (+ V // + int) er (@ V // interaktiv + smugl) er V // smuglergods + smugl) ere V?V // smuglere + _int) er (n_++ 'Er // intern + _int) er (ne_++ 'Er // interne + int) erne (t+ VnE // + skid) er Vr // + ønst) er (+ V // mønsterelev + st) er (i er // ministerium + ast) er (i -@R // madkasteri + st) er (eo er // stereoanlæg + st) er (ol Er // kolesterol + st) er (ling er // sterling + ist) er V // minister - TEST + s) ervicemindet WvismAjnd@-D +kundes) ervice Wvis // + s) er (vicen W // + v) ernon (++ Wn@-n // name + t) er (a+ er // synsterapeut + met) er (+ V // materantal + dent) er V // studentereksamen + _all) er V // allersidst + pill) er V // spiller, piller + brus) er V // bruseranvendelse + eft) er V // efteruddanne + s) er (v+ Er // reservat, servo + s) ervice (fag Wvis // servicefag + s) ervice (med Wvis // servicemedarbejder + s) ervice (sektor Wvis // servicesektor + s) ervice (station Wvis // servicestation + s) ervice (ydelse Wvis // serviceydelse + s) ervice (eftersyn+ 'Wvis // serviceeftersyn + s) er (t+ Er // dessertere + _kons) er (vativ 'Er // stressed + _præs) er (vativ 'Er // + _kons) er (ves 'Er // stressed + bas) ere eV // behovbaseret + tn) er V // partnerskab + all) er (g er // allergisk + j) er (n+++++ E3- // jern, stjerne + talj) er (K+++ V // detaljer + trulj) er (n+++ V // patruljerne + linj) er (+++ V // telefonlinjer + lej) er V // sygeplejerske + bunk) er V // not a -er suffix +alexand) er =dV // Alexander report) er (+ V // PN not a suffix - scept) er V // PB scepteret - kvart) er er // PB nabokvarter -_kvart) er 'er // PB kvarter, kvarterarrest - fin) er er // PB krydsfiner - _fin) er 'er // PB finerplade -delfin) er V // PB -_karakt) er 'er // PB karakter - mort) er 'er // PB morterild -karakt) er er // PB topkarakter - _klav) er (++ 'er // PB stressed -_kaval) er 'er // PB stressed - _tall) er (k 'Er // PB tallerken -_perif) er 'er // PB stressed - perif) er er // PB not stressed after a syllable - klav) er (++ er // PB after a syllable - værtshusklaver - _univ) er (s+ 'Er // PB stressed - univ) er Er // PB after a syllable - skoleunivers - flatt) er (ende 'er // PB - _rivi) er (a 'er // PB stressed - pass) er (sed 'er // PB passersedlen - park) er (_bil 'er // PB "parker bilen" verb, not noun = "parks" - pass) er (_gaden 'er // PB - n) er (_+ V // PB italiener - _sn) er (_ er // PB "det sner" - "it snows" - up) er (C V // PB superfølsom - @d) er (C V // PB hæderlig - TOO BROAD? - Amm) er (C V // PB sommerhilsen, tømmerflåde - r) er (C V // PB frimurerloge - komm) er (ciel er // PB - &nf) eren (c @rAN // PB konference, konferencier - &nf) er (er@ @r // PB konferere - vid) ere 3V // PB viderekomne + scept) er V // scepteret + kvart) er er // nabokvarter +_kvart) er 'er // kvarter, kvarterarrest + fin) er er // krydsfiner + _fin) er 'er // finerplade +delfin) er V // +_karakt) er 'er // karakter + mort) er 'er // morterild +karakt) er er // topkarakter + _klav) er (++ 'er // stressed +_kaval) er 'er // stressed + _tall) er (k 'Er // tallerken +_perif) er 'er // stressed + perif) er er // not stressed after a syllable + klav) er (++ er // after a syllable - værtshusklaver + _univ) er (s+ 'Er // stressed + univ) er Er // after a syllable - skoleunivers + flatt) er (ende 'er // + _rivi) er (a 'er // stressed + pass) er (sed 'er // passersedlen + park) er (_bil 'er // "parker bilen" verb, not noun = "parks" + pass) er (_gaden 'er // + n) er (_+ V // italiener + _sn) er (_ er // "det sner" - "it snows" + up) er (C V // superfølsom + @d) er (C V // hæderlig - TOO BROAD? + Amm) er (C V // sommerhilsen, tømmerflåde + r) er (C V // frimurerloge + komm) er (ciel er // + &nf) eren (c @-rAN // konference, konferencier + &nf) er (er@ @-r // konferere + vid) ere VV // viderekomne // not a -erne suffix - _mod) erne (++ 'ern@ - mod) erne (++ ern@ + _mod) erne (++ 'Ern@- + mod) erne (++ Ern@- mod) ern (i+ Ern // PM moderniteter - _cist) erne (+ 'ern@ - cist) erne (+ ern@ -fascist) erne (+ Vn@ // exception to "&cist) erne" - _kas) erne (+ 'ern@ - _kas) erner (+ 'ernV - kas) erne (+ ern@ - _lant) erne (+ 'Ern@ -toplant) erne (++ Ern@ - plant) erne (++ Vn@ - _luc) erne (+ 'ern@ - luc) erne (+ ern@ - _saut) erne (+ 'ern - saut) erne (+ ern - _tav) erne (+ 'ern@ - tav) erne (+ ern@ - stav) erne (+ Vn@ // PB bogstaverne + _cist) erne (+ 'Ern@- + cist) erne (+ Ern@- +fascist) erne (+ Vn@- // exception to "&cist) erne" + _kas) erne (+ 'Ern@- + _kas) erner (+ 'ErnV + kas) erne (+ Ern@- + _lant) erne (+ 'Ern@- +toplant) erne (++ Ern@- + plant) erne (++ Vn@- + _luc) erne (+ 'Ern@- + luc) erne (+ Ern@- + _saut) erne (+ 'Ern + saut) erne (+ Ern + _tav) erne (+ 'Ern@- + tav) erne (+ Ern@- + stav) erne (+ Vn@- // bogstaverne // Exceptions to the suffix rules // Words ending with -ere - stressed e - around 1.600 words in list file - @) ere (_$p_alt+++ ''e:V // PB stressed - manipulere, protestere (not parfum'ereklame) - @) ere (r$p_alt++ ''e:V // PB stressed - generer, kasserer - @) ere (re$p_alt+++ ''e:V // PB stressed - polerere - @) ere (ren$p_alt++ ''e:V // PB stressed - kassereren - @) ere (t$p_alt++ ''e:V // PB motiveret - @) ere (re$p_alt++ 3r'e // PB stressed - generere - @) ere (de$p_alt++ ''e:V // PB stressed - appellerede - @) ere (s_$p_alt++ ''e:V // PB stressed - pensioneres - @i) ere (n_$p_alt++ ''e:V // PB stressed - karrieren - @) er ($p_alt+++ ''er // PB stressed - repeter, kurer - @) er (er$p_alt+++ ''e // PB stressed - adopterer - @) er (e_$p_alt+++ ''e // PB stressed - acceptere - @r) er (e_$p_alt+++ ''E3- // PB stressed - reparere - @r) er (er_$p_alt+++ ''E3- // PB stressed - reparerer - @) er (_$p_alt++ ''er // PB stressed - repeter - ion) er (_$p_alt++ V // PB unstressed - missioner, kommissioner - @) er (et$p_alt++++ ''er // PB stressed - orienteret - &ik) er (_$p_alt++ =V // PB stressed - politiker - &ik) er (s_$p_alt++ =V // PB stressed - politikers + @) ere (_$p_alt+++ ''e:V // stressed - manipulere, protestere (not parfum'ereklame) + @) ere (r$p_alt++ ''e:V // stressed - generer, kasserer + @) ere (re$p_alt+++ ''e:V // stressed - polerere + @) ere (ren$p_alt++ ''e:V // stressed - kassereren + @) ere (t$p_alt++ ''e:V // motiveret + @n) ere (re$p_alt+++ @-r'e // stressed - generere + @) ere (de$p_alt++ ''e:V // stressed - appellerede + @) ere (s_$p_alt++ ''e:V // stressed - pensioneres + @i) ere (n_$p_alt++ ''e:V // stressed - karrieren + @) er ($p_alt+++ ''er // stressed - repeter, kurer + @) er (er$p_alt+++ ''e // stressed - adopterer + @) er (e_$p_alt+++ ''e // stressed - acceptere + @r) er (e_$p_alt+++ ''E3- // stressed - reparere + @r) er (er_$p_alt+++ ''E3- // stressed - reparerer + @) er (_$p_alt++ ''er // stressed - repeter + ion) er (_$p_alt++ V // unstressed - missioner, kommissioner + @) er (et$p_alt++++ ''er // stressed - orienteret + &ik) er (_$p_alt++ =V // stressed - politiker + &ik) er (s_$p_alt++ =V // stressed - politikers // exceptions fing) er (en VR // fingeren - clsashes with 'fing'ere' - _barb) er (+ '?er // PB barber - _barb) er (e+ 'er // PB barberen - lev) er (eg+ @r // PB leveregel + _barb) er (+ '?er // barber + _barb) er (e+ 'er // barberen + lev) er (eg+ @-r // leveregel fabrik) ere (+++++++'?eV - brod) er (en Vr // PB - lev) er (en+ Vr // PB the liver - _not) er (_det 'er // PB - _not) er (_den 'er // PB -report) er (en+ 3r // PB clash with "reportere" = "rapportere" -report) er (e+ 3r // PB clash with "reportere" = "rapportere" - @cit) er (e er // PB fejlcitere -orient) eret er3D // PB venstreorienteret - _kap) er (s++ V // PB + brod) er (en Vr // + lev) er (en+ Vr // the liver + _not) er (_det 'er // + _not) er (_den 'er // +report) er (en+ @-r // clash with "reportere" = "rapportere" +report) er (e+ @-r // clash with "reportere" = "rapportere" + @cit) er (e er // fejlcitere +orient) eret er@-D // venstreorienteret + _kap) er (s++ V // -// PB stressed e in words with -ering (1.100) in da_ list - likvidering +// stressed e in words with -ering (1.100) in da_ list - likvidering &) ering ($p_alt++ ''e3-eN - @C) ering (++ ,e3-eN // PB lydisolering, hjertetatovering + @C) ering (++ ,e3-eN // lydisolering, hjertetatovering -// PB final -eret: stressed e ['er3D] - &) eret ($p_alt++ ''er3D // PB detaljeret, pikeret +// final -eret: stressed e ['er3D] + &) eret ($p_alt++ ''er@-D // detaljeret, pikeret -// PB stressed e in finial -ert -affekt) ert 'ert - blas) ert 'ert +// stressed e in finial -ert +affekt) ert 'e3-t + blas) ert 'e3-t born) ert 'ert dess) ert 'Ert -diskontinu) ert 'ert +diskontinu) ert 'e3-t eksp) ert 'Ert ethv) ert 'Ert - fork) ert 'ert - gen) ert (+ 'ert - in) ert 'ert + fork) ert 'e3-t + gen) ert (+ 'e3-t + in) ert 'e3-t introv) ert 'Ert konc) ert 'Ert -kontinu) ert 'ert +kontinu) ert 'e3-t kuv) ert (++ 'Ert -reform) ert ''ert -reserv) ert 'ert +reform) ert ''e3-t +reserv) ert 'e3-t // fire stavelser, den sidste -tiv, tryk på anden - alt) er (nativ 'ER // PB stressed LOOK FOR MORE + alt) er (nativ 'ER // stressed LOOK FOR MORE - ff) er (At V // PB probably way too broad - offeret - c) er (e+ er // PB velkvalificeret - v) er (et er // PB kultiverret - bl) er (e er // PB genetablere - desp) er (at 3R // PB desperat - alt) eret @-r@-D // PB - d) er (fra er // PB derfra - urd) er (et er // PB vurderet - udd) er V // PB mudderet - v) er (C+++ Er // PB vers, verden, kontroversiel - salv) er (++ V // PB kvaksalverbutik - snæv) er (++ V // PB snæversynet - ov) er (++++ V // PB overbevisende, sover, ovenover, overfald - farv) er (s+ V // PB -_kontrov) er (s 'Er // PB kontrovers - yv) er (+ V // PB flyver - flyv) er (ute 3r // PB flyverute - øv) er (st++ V // PB øverst, røver - perv) er (s+ 'Er // PB stressed e - pervers - &t) er (C V // PB teatervidenskab - isot) er (m 'Er // PB - t) er (rier Er // PB - t) er (ni+ Er // PB fraternisere - t) er (ror &#r // PB antiterrorgruppe - Cav) er (_+ V // PB laver, saver - @grav) er (e er // PB indgravere -guldgrav) er (e V // PB + ff) er (At V // probably way too broad - offeret + c) er (e+ er // velkvalificeret + v) er (et er // kultiverret + bl) er (e er // genetablere + desp) er (at 3R // desperat + alt) eret @-r@-D // + d) er (fra er // derfra + urd) er (et er // vurderet + udd) er V // mudderet + v) er (C+++ Er // vers, verden, kontroversiel + salv) er (++ V // kvaksalverbutik + snæv) er (++ V // snæversynet + ov) er (++++ V // overbevisende, sover, ovenover, overfald + farv) er (s+ V // +_kontrov) er (s 'Er // kontrovers + yv) er (+ V // flyver + flyv) er (ute @-r // flyverute + øv) er (st++ V // øverst, røver + perv) er (s+ 'Er // stressed e - pervers + &t) er (C V // teatervidenskab + isot) er (m 'Er // + t) er (rier Er // + t) er (ni+ Er // fraternisere + t) error ?&3-V // antiterrorgruppe [ˈtæɐ̯ʌ] + t) erro (rist ?&3-O // terrorist [tæɐ̯ɒˈʁisd] + Cav) er (_+ V // laver, saver + @grav) er (e er // indgravere +guldgrav) er (e V // lev) er (C++ V // levertran, leverplet led) er (@ V // lederkursus - pans) er V // PB panserdivision - kryst) er (@ V // PB kryst*er*agtig - _myst) er (iu 'er // PB mysterium - hust) er (i er // PB not stressed after a syllable - overhysterisk - @st) er (ie 'er // PB ministeriet - _sk) er (_ ?er // PB sker - _s) er (_ er // PB ser - _h) er (_ er // PB her - h) er (s++ Er // PB herse, herske - h) er (li+ Er // PB herlig - hv) er (+ Er // PB hver - enhv) er 'Er // PB stressed - fork) er (t+ er // PB forkert - Cik) er (+ V // PB epileptiker, optiker - kk) er (+ V // PB rykker - kuff) er (t V // PB kuffert - Amm) er (a @-r // PB kammerater - f) er (ni Er // PB fernis - _fall) er (+ 'er // PB falleret - _kass) er (er 'er // PB kasserer - inf) er (no 'Er // PB inferno - tt) er (C V // PB lattermild - _int) er (n_++ 'Er // PB stressed - int) er (nat V // PB international - t) er (min Er // PB terminal - t) er (p Er // PB terpentin, terpe - t) er (mo Er // PB termometer - t) er (r E // PB terror - t) er (rass a // PB - _) er (C er' // PB er + consonant: stress on next syllable - er'hverv - _) er (go er // PB not stress on next in "ergo..." - er (fari Er // PB ministererfaring - _) ernie W:ni // PB name - am) er (ika_ 'er // PB Amerika - sv) er (ige Er // PB - ærg) err Er // PB ærgerrig - offic) er 'er // PB officer - stressed e - cafet) er (i 'er // PB cafeteria - n) er (v Er // PB nerve, nervøs - _gen) er (t Er // PB genert - _man) erer 'eV // PB - _L06) er Er // PB per, person -L06L06) er V // PB klipper - fisk) er V // PB fisker, fiskerby - elsk) er ?V // PB elskerinde - und) er V // PB under - hund) er 3r // PB hunderæd - umm) er V // PB hummer - pok) er V // PB pokerspil - _) er (_ &r // PB er - L09) er (ne_ V // PB kameraerne - juvel) er (en 'er // PB juveleren - juvel) erer ''eV // PB juvelerer - _man) erer 'eV // PB - man) erer eV // PB - _l) er (_++ er // PB ler - v) er (r_ er // PB levere - man) er (_ 'er // PB hundemaner - oman) er (+ V // PB narkomaner, romaner -fremman) er V // PB -der_man) er (_ V // PB der er intet land, der maner ... - orman) er (_ V // PB formaner + pans) er V // panserdivision + kryst) er (@ V // kryst*er*agtig + _myst) er (iu 'er // mysterium + hust) er (i er // not stressed after a syllable - overhysterisk + @st) er (ie 'er // ministeriet + _sk) er (_ ?er // sker + _s) er (_ er // ser + _h) er (_ er // her + h) er (s++ Er // herse, herske + h) er (li+ Er // herlig + hv) er (+ Er // hver + enhv) er 'Er // stressed + fork) er (t+ er // forkert + Cik) er (+ V // epileptiker, optiker + kk) er (+ V // rykker + kuff) er (t V // kuffert + Amm) er (a @-r // kammerater + f) er (ni Er // fernis + _fall) er (+ 'er // falleret + _kass) er (er 'er // kasserer + inf) er (no 'Er // inferno + tt) er (C V // lattermild + _int) er (n_++ 'Er // stressed + int) er (nat V // international + t) er (min Er // terminal + t) er (p Er // terpentin, terpe + 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 (fari Er // ministererfaring + _) ernie W:ni // name + am) er (ika_ 'er // Amerika + sv) er (ige Er // + ærg) err Er // ærgerrig + offic) er 'er // officer - stressed e + cafet) er (i 'er // cafeteria + n) er (v Er // nerve, nervøs + _gen) er (t Er // genert + _man) erer 'eV // + _L06) er Er // per, person +L06L06) er V // klipper + fisk) er V // fisker, fiskerby + elsk) er ?V // elskerinde + und) er V // under + hund) er 3r // hunderæd + umm) er V // hummer + pok) er V // pokerspil + _) er (_ &r // er + L09) er (ne_ V // kameraerne + juvel) er (en 'er // juveleren + juvel) erer ''eV // juvelerer + _man) erer 'eV // + man) erer eV // + _l) er (_++ er // ler + v) er (r_ er // levere + man) er (_ 'er // hundemaner + oman) er (+ V // narkomaner, romaner +fremman) er V // +der_man) er (_ V // der er intet land, der maner ... + orman) er (_ V // formaner th) er_ V // Luther - gt) er V // PB agter - øl) er (+ V // PB brøler, køler - t) erræn &r'&N // PB terræn - _g) er (ne_+ Er // PB gerne - j) er (g E3- // PB bjerg - @m) er (sk V // PB romersk - ob) er (st V // PB - rooms) ervice Wvis // PB - d) erby A:bi // PB - polt) er (ab V // PB polterabend - alt) er V // PB altervin - d) er (byg V // PB underbygge - _all) erede (_ 3rED@ - alb) er (tA 'Er // PB Alberta, Alberte - f) ergie W:gi // PB name + gt) er V // agter + øl) er (+ V // brøler, køler + t) erræn &r'&N // terræn + _g) er (ne_+ Er // gerne + j) er (g E3- // bjerg + @m) er (sk V // romersk + ob) er (st V // + rooms) ervice Wvis // + d) erby A:bi // + polt) er (ab V // polterabend + alt) er V // altervin + d) er (byg V // underbygge + _all) erede (_ @-rED@- + alb) er (tA 'Er // Alberta, Alberte + f) ergie W:gi // name .group ed -// PB verb suffix - ede (elskede - lovede) +// verb suffix - ede (elskede - lovede) // not treated as a suffix any more - too many exceptions - @) ede (_ @-D@- // PB elskede - &r) ede (_ VD@- // PB pikerede, spekulerede - &r) ede (s_ VD@- // PB placeredes + @) ede (_ @-D@- // elskede + &r) ede (_ VD@- // pikerede, spekulerede + &r) ede (s_ VD@- // placeredes - hov) ed @'D // PB hoved - mm) ed @-D // PB fremmed - afst) ed (kom 'eD // PB afstedkomme - opf) ede (++ eD@- // PB opfede - f) eder (_+ eDV // PB - h) ede (+ eD@- // PB glohede - sm) ede eD3 // PB guldsmede -velocip) ed (e 'eD // PB stressed - h) eder (+ eDV // PB muligheder - vildr) ede (_+ ED@- // PB vildrede - ørner) ede ED@- // PB - err) ede (+ ED@- // PB forbryderrede, røverrede - bortl) ede eD@ // PB - spr) ede (_+ ED@- // PB adsprede - ber) ede (_+ ED@- // PB berede - _br) ede (_+ ED@- // PB brede - helbr) ede ED@- // PB - _fr) ede (_+ ED@- // PB frede - vr) ede (_+ ED@- // PB vrede - ugler) ede (_+ ED@- // PB fuglerede -hvepser) ede (_+ ED@- // PB hvepserede -elskovsr) ede ED@- // PB -rotter) ede (_+ ED@- // PB rotterede - emb) ede (_+ eD@- // PB embede - emb) ede (t_+ eD@- // PB embedet - tilb) ede eD@- // PB - tilb) eder eDV // PB - hundr) ed (+ @:D // PB hundred - dern) ed (e eD // PB dernede - hern) ed (e eD // PB dernede - dødk) ede (+ eD@- // PB dødkede - forsk) ede @D@- // PB uudforskede - psyk) ede (lisk @d'e // PB psykedelisk -// PB compounds with "lede" - afl) ede (+ eD@- // PB aflede - bortl) ede (+ eD@- // PB - forl) ede (+ eD@- // PB - henl) ede (+ eD@- // PB henlede - livsl) ede (+ eD@- // PB - indl) ede (+ eD@- // PB - indl) eder (+ eDV // PB - misl) ede (+ eD@- // PB - misl) eder (+ eDV // PB - opl) ede (+ eD@- // PB - retl) ede (+ eD@- // PB - udl) ede (+ eD@- // PB - vejl) ede (+ eD@- // PB - vildl) ede (+ eD@- // PB - vildl) eder (+ eDV // PB - afl) eder (+ eDV // PB afleder - bortl) eder (+ eDV // PB - forl) eder (+ eDV // PB - henl) eder (+ eDV // PB henleder - livsl) eder (+ eDV // PB - opl) eder (+ eDV // PB - retl) eder (+ eDV // PB - udl) eder (+ eDV // PB - vejl) eder (+ eDV // PB + hov) ed @-'D // hoved + mm) ed @-D // fremmed + afst) ed (kom 'eD // afstedkomme + opf) ede (++ eD@- // opfede + f) eder (_+ eDV // + h) ede (+ eD@- // glohede + sm) ede eD@- // guldsmede +velocip) ed (e 'eD // stressed + h) eder (+ eDV // muligheder + vildr) ede (_+ ED@- // vildrede + ørner) ede ED@- // + err) ede (+ ED@- // forbryderrede, røverrede + bortl) ede eD@- // + spr) ede (_+ ED@- // adsprede + ber) ede (_+ ED@- // berede + _br) ede (_+ ED@- // brede + helbr) ede ED@- // + _fr) ede (_+ ED@- // frede + vr) ede (_+ ED@- // vrede + ugler) ede (_+ ED@- // fuglerede +hvepser) ede (_+ ED@- // hvepserede +elskovsr) ede ED@- // +rotter) ede (_+ ED@- // rotterede + emb) ede (_+ eD@- // embede + emb) ede (t_+ eD@- // embedet + tilb) ede eD@- // + tilb) eder eDV // + hundr) ed (+ VD // hundred + dern) ed (e eD // dernede + hern) ed (e eD // dernede + dødk) ede (+ eD@- // dødkede + forsk) ede @-D@- // uudforskede + psyk) ede (lisk @-d'e // psykedelisk +// compounds with "lede" + afl) ede (+ eD@- // aflede + bortl) ede (+ eD@- // + forl) ede (+ eD@- // + forl) ede (n+ ?eD@- // forlerden dag + henl) ede (+ eD@- // henlede + livsl) ede (+ eD@- // + indl) ede (+ eD@- // + indl) eder (+ eDV // + misl) ede (+ eD@- // + misl) eder (+ eDV // + opl) ede (+ eD@- // + retl) ede (+ eD@- // + udl) ede (+ eD@- // + vejl) ede (+ eD@- // + vildl) ede (+ eD@- // + vildl) eder (+ eDV // + afl) eder (+ eDV // afleder + bortl) eder (+ eDV // + forl) eder (+ eDV // + henl) eder (+ eDV // henleder + livsl) eder (+ eDV // + opl) eder (+ eDV // + retl) eder (+ eDV // + udl) eder (+ eDV // + vejl) eder (+ eDV // .group et -// PB verb suffix -et (har elsket - has loved) +// verb suffix -et (har elsket - has loved) // not treated as a suffix any more - @) et (_+ @-D // PB elsket - @r) et (_+ VD // PB placeret - @) ets (_+ @-Ds // PB målets - noun ending + @) et (_+ @-D // elsket + @r) et (_+ VD // placeret + @) ets (_+ @-Ds // målets - noun ending - int) et @-D // PB tilintetgøre + int) et @-D // tilintetgøre + staff) et 'Et // stressed // PB exceptions: not a 'et suffix - en_du) et (_ 'Et // PB -synge_du) et (_ 'Et // PB -sunget_du) et (_ 'Et // PB -synger_du) et (_ 'Et // PB -sang_du) et (_ 'Et // PB - @du) et (_ 'Et // PB - @sekr) et Et // PB sædsekret - starl) et Et // PB young actor - konkr) et 'Et // PB stressed - harri) et 3t // PB name -michel) et 'E // PB Name - silent t - sorb) et 'E // PB hindbærsorbet - dekr) et (+ 'et // PB stressed - klos) et 'Et // PB kloset stressed - klos) ett 'Et // PB klosettet stressed -en_blank) et 'Et // PB en blanket, den blanket - noun - problem with verb "blanke/blanket" -en_son) et 'Et // PB poem - piru) et 'Et // PB - pinc) et 'Et // PB stressed - son) ett (e 'Et // PB sonetten, sonetter - vindu) et (_ @-D // PB -jazzball) et Et // PB - viol) et Et // PB ultraviolet - tabl) et ?Et // PB jodtablet - tabl) ett ?Et // PB jodtabletter - omel) et Et // PB spinatomelet -leverpl) et Et // PB - _sk) et et // PB sket -gennems) et et // PB - _inds) et (_ et // PB - _us) et (_ et // PB - pærel) et (+ Et // PB pærelet - _toil) et 'Et // PB - toil) et Et // PB dyretoilet - toil) ett Et // PB herretoilettet - one t - spl) et (+ Et // PB skønhedsplet -guldpl) et Et // PB -sølvpl) et Et // PB - Apl) et (+ Et // PB kaffeplet - pl) ett (+ Et // PB kaffepletter - _geb) et (+ 'et // PB - _sekr) et (+ 'Et // PB stressed - sekr) et (ær 3t // PB - _ask) et 'et // PB asketisk - _s) et (_+ et // PB set - tils) et et // PB - overs) et et // PB -_ildes) et et // PB + en_du) et (_ 'Et // +synge_du) et (_ 'Et // +sunget_du) et (_ 'Et // +synger_du) et (_ 'Et // +sang_du) et (_ 'Et // + @du) et (_ 'Et // + @sekr) et Et // sædsekret + starl) et Et // young actor + konkr) et 'Et // stressed + harri) et @-t // name +michel) et 'E // Name - silent t + sorb) et 'E // hindbærsorbet + dekr) et (+ 'et // stressed + klos) et 'Et // kloset stressed + klos) ett 'Et // klosettet stressed +en_blank) et 'Et // en blanket, den blanket - noun - problem with verb "blanke/blanket" +en_son) et 'Et // poem + piru) et 'Et // + pinc) et 'Et // stressed + son) ett (e 'Et // sonetten, sonetter + vindu) et (_ @-D // +jazzball) et Et // + viol) et Et // ultraviolet + tabl) et ?Et // jodtablet + tabl) ett ?Et // jodtabletter + omel) et Et // spinatomelet +leverpl) et Et // + _sk) et et // sket +gennems) et et // + _inds) et (_ et // + _us) et (_ et // + pærel) et (+ Et // pærelet + _toil) et 'Et // + toil) et Et // dyretoilet + toil) ett Et // herretoilettet - one t + spl) et (+ Et // skønhedsplet +guldpl) et Et // +sølvpl) et Et // + Apl) et (+ Et // kaffeplet + pl) ett (+ Et // kaffepletter + _geb) et (+ 'et // + _sekr) et (+ 'Et // stressed + sekr) et (ær @-t // + _ask) et 'et // asketisk + _s) et (_+ et // set + tils) et et // + overs) et et // +_ildes) et et // it) et (_+ 'et // aktivitet it) et (s_+ 'et // aktivitet, aktivitetsniveau - kar) et (++ 'Et // PB stressed - _kad) et (+ 'Et // PB stressed - _viol) et (+ ''Et // PB stressed - staf) et 'Et // PB stressed - _brik) et 'Et // PB - brik) et Et // PB -skampl) et Et // PB - _toil) et 'Et // PB toilet, toilette - _kok) et 'Et // PB stressed - koketteri, koket -_kvint) et 'Et // PB -_kvart) et 'Et // PB -_et_kors) et 'Et // PB a corset [kVs'Et] vs the cross [kVrs@d] - kvint) et Et // PB - kvart) et Et // PB -_tromp) et 'et // PB stressed - tromp) et et // PB - _tap) et 'et // PB - tap) et et // PB -klarin) et Et // PB -_klarin) et 'Et // PB -marion) et 'Et // PB -marion) ett 'Et // PB -_servi) et 'Et // PB -_servi) ett 'Et // PB - servi) et et // PB - _prof) et 'et // PB stressed - prof) et et // PB dommedagsprofet - prof) et (i 3t // PB - _plan) et 'et // PB -_pubert) et 'et // PB stressed - meg) et (+ et // PB not a suffix - &m) eter 'etV // PB kilometer, kometer, taxameter - stressed - ændr) et (+ VD // PB + kar) et (++ 'Et // stressed + _kad) et (+ 'Et // stressed + _viol) et (+ ''Et // stressed + staf) et 'Et // stressed + _brik) et 'Et // + brik) et Et // +skampl) et Et // + _toil) et 'Et // toilet, toilette + _kok) et 'Et // stressed - koketteri, koket +_kvint) et 'Et // +_kvart) et 'Et // +_et_kors) et 'Et // a corset [kVs'Et] vs the cross [kVrs@d] + kvint) et Et // + kvart) et Et // +_tromp) et 'et // stressed + tromp) et et // + _tap) et 'et // + tap) et et // +klarin) et Et // +_klarin) et 'Et // +marion) et 'Et // +marion) ett 'Et // +_servi) et 'Et // +_servi) ett 'Et // + servi) et et // + _prof) et 'et // stressed + prof) et et // dommedagsprofet + prof) et (i @-t // + _plan) et 'et // +_pubert) et 'et // stressed + meg) et (+ et // not a suffix + &m) eter 'etV // kilometer, kometer, taxameter - stressed + ændr) et (+ VD // av) et (_+ @-D // havet, lavet - avoid [Au] tag) et @-D - amul) et 'Et // PB -_alfab) et 'et // PB - alfab) et et // PB avoid [@D] - _bill) et 'Et // PB stressed - _park) et 'Et // PB stressed - bill) et Et // PB - bill) ett Et // PB - _tib) et 'et // PB - tib) et et // PB - _bill) ett 'Et // PB stressed - only one t - _kask) et 'et // PB stressed - _kask) ett 'et // PB stressed - only one t -_bajon) et 'Et // PB stressed -_bajon) ett 'Et // PB only one t - bajon) et Et // PB - eln) et (+ Et // PB - hårn) et Et // PB -fisken) et Et // PB -kamuflagen) et Et // PB -kamuflagen) ett Et // PB - _bass) et Et // PB dog + amul) et 'Et // +_alfab) et 'et // + alfab) et et // avoid [@D] + _bill) et 'Et // stressed + _park) et 'Et // stressed + bill) 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 +_bajon) et 'Et // stressed +_bajon) ett 'Et // only one t + bajon) et Et // + eln) et (+ Et // + hårn) et Et // +fisken) et Et // +kamuflagen) et Et // +kamuflagen) ett Et // + _bass) et Et // dog - // PB final -ette stressed e + // final -ette stressed e _bagu) ette 'Et - _brun) ette 'Et@ - _bur) ette 'Et@ -_chemis) ette 'Et@ -_courg) ette 'Et@ - _cuv) ette 'Et@ - _disk) ette 'Et@ - _etik) ette ''Et@ // PB etiket - _etik) et ''Et // PB etiket + _brun) ette 'Et@- + _bur) ette 'Et@- +_chemis) ette 'Et@- +_courg) ette 'Et@- + _cuv) ette 'Et@- + _disk) ette 'Et@- + _etik) ette ''Et@- // etiket + _etik) et ''Et // etiket _georg) ette 'Et -_jambor) ette 'Et@ - _kok) ette 'Et@ -_marquis) ette 'Et@ - _mus) ette 'Et@ -_novell) ette 'Et@ - _palm) ette 'Et@ - _pian) ette 'Et@ - _pip) ette 'Et@ - _plak) ette 'Et@ - _rein) ette 'Et@ - _roul) ette 'Et@ -_soubr) ette '&t@ -_statu) ette 'Et@ +_jambor) ette 'Et@- + _kok) ette 'Et@- +_marquis) ette 'Et@- + _mus) ette 'Et@- +_novell) ette 'Et@- + _palm) ette 'Et@- + _pian) ette 'Et@- + _pip) ette 'Et@- + _plak) ette 'Et@- + _rein) ette 'Et@- + _roul) ette 'Et@- +_soubr) ette '&t@- +_statu) ette 'Et@- _statu) etter 'EtV -_suffrag) ette 'Et@ - _toil) ette 'Et@ -_vinaigr) ette '&t@ - _yl) ette 'Et@ -_niL10ol) ette 'Et@ // PB Nicolette +_suffrag) ette 'Et@- + _toil) ette 'Et@- +_vinaigr) ette '&t@- + _yl) ette 'Et@- +_nicol) ette 'Et@- // Nicolette // stressed e in nouns with -itet - vulgaritet, universitet - 304 words in da_list - &it) et ($p_alt+ ''et + &it) et ($p_alt+ ''?et // universitet - r) et (øj+ @t // PB køretøj - _budg) et 'Et - for) et_ t // PB no e - handled under group o - 'fore' - _r) et+ &#t //PB ret - _fals) et 'Et // PB stressed + r) et (øj+ @-t // køretøj + _budg) et '?Et + for) et_ t // no e - handled under group o - 'fore' + _r) et+ ?&#t // ret + _fals) et '?Et // stressed .group f f f ff f // _) for (&@P3 f%V // stressed second syllable after initial "for" - _) fore (_ f'o@-V // PB only the word 'fore' - _) forer (_ f'o@-V // PB only the word 'forer' - _) fore (de_ f'o@-V // PB only the word 'forede' + _) 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 // PB + _) fe (_ fe // -// PB General rule, most words with af- plus vowel: [f] => [w] - a) f (A w // PB afart, afprøve -// PB exceptions to the 'a)f(A' rule below - ca) fe f'e // PB cafe, bogcafe - ca) fé f'e // PB café - a) f (asi f // PB afasi - a) f (atisk f // PB afatisk - a) f (or f // PB aforisme, aforistisk - f (olk f // PB mafiafolk +// 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é + a) f (asi f // afasi + a) f (atisk f // afatisk + a) f (or f // aforisme, aforistisk + f (olk f // mafiafolk -// PB one sylable plus "færdig" - stressed æ +// one sylable plus "færdig" - stressed æ @) færdig f'Erdi // bluf'ærdig @@) færdig fErdi $1 // f'ingerfærdig -// PB General rule, most words with af- plus consonant: f => w +// General rule, most words with af- plus consonant: f => w a) f (C w -// PB exceptions to the 'a)f (C' rule below - a) ff (ine f // PB raffineret, raffinement - ja) ff (a f // PB - a) ff (abel f // PB affabel - a) ff (ekt f // PB affekt , affekteret - a) ff (icere f // PB afficere - a) ff (irm f // PB affirmere, affirmation, affirmativ - a) ff (initet f // PB affinitet - a) ff (ære f // PB affære - a) ff (age f // PB staffage - a) ff (utage f // PB - ra) ff (e f // PB straffe - ra) f (le f // PB rafle - gira) f f // PB girafskind - ra) f (fr f // PB straffri - ra) f (for f // PB strafforfølge - a) ff (el f // PB vaffel, taffel - a) f (ro f // PB afroasiat, afroamerikaner, afrohår etc. - la) f (re f // PB blafre - @) fobi fob'i // PB xenofobi, hydrofobi - @) f (laske f // PB colaflaske - f (jeder f // PB sofafjeder +// exceptions to the 'a)f (C' rule below + a) ff (ine f // raffineret, raffinement + ja) ff (a f // + a) ff (abel f // affabel + a) ff (ekt f // affekt , affekteret + a) ff (icere f // afficere + a) ff (irm f // affirmere, affirmation, affirmativ + a) ff (initet f // affinitet + a) ff (ære f // affære + a) ff (age f // staffage + a) ff (utage f // + ra) ff (e f // straffe + ra) f (le f // rafle + gira) f f // girafskind + ra) f (fr f // straffri + ra) f (for f // strafforfølge + a) ff (el f // vaffel, taffel + a) f (ro f // afroasiat, afroamerikaner, afrohår etc. + la) f (re f // blafre + @) fobi fob'i // xenofobi, hydrofobi + @) f (laske f // colaflaske + f (jeder f // sofafjeder a) f (it f a) f (on f a) f (rik f a) f (sted // afstedkomme a) f (ten f a) f (tes_ f - Ca) f (t f // PB haft - a) f (tryk w // PB fingeraftryk + Ca) f (t f // haft + a) f (tryk w // fingeraftryk Ca) f (A f - va) f (l f // PB vafler - ga) f (l f // PB gafler - da) f (n f // PB dafnie - ska) f f // PB retskafne + va) f (l f // vafler + ga) f (l f // gafler + da) f (n f // dafnie + ska) f f // retskafne gra) f (A f ra) f (ik f - stra) f f // PB strafpoint - fire fi@-V // PB fire (4) - fireog fi:V // PB fireogtyve (24) + stra) f f // strafpoint + fire fi@-V // fire (4) + fireog fi:V // fireogtyve (24) sa) f (ar f sta) f (e f - fettuccine fetuTS'i:n@ // PB pasta - firenze fiR'&ns@ // PB Italian city - flush flVS // PB - freud frVjt // PB Freud - field fi:l/2d // PB - françois frANs'wa // PB name - francesca fRanS'Esk& // PB - _) fbi Efbi'aj // PB - frankie fr&nki // PB name - farao fArAo // PB name - fouquet fuk'e // PB name - fontaine fONt'E:n // PB - finlay fenli // PB name - es_) frites frit // PB pommes frites - _) four (_ fO: // PB - fiction _^_en // PB science fiction + fettuccine fetuTS'i:n@ // pasta + firenze fiR'&ns@ // Italian city + flush flVS // + freud frVjt // Freud + field fi:l/2d // + françois frANs'wa // name + francesca fRAnS'Esk& // + _) fbi Efbi'Aj // + frankie fr&nki // name + farao fArAo // name + fouquet fuk'e // name + fontaine fONt'E:n // + finlay fenli // name + es_) frites frit // pommes frites + _) four (_ fO: // + fiction _^_en // science fiction .group g g g gg (e g // lægge - i) gg g // PB lediggang - o) gg g // PB jogging - gh (ana g // PB Ghana - gh (etto g // PB ghetto - af) gh (a g // PB afghansk - a) gg (res g // PB aggresiv - only one g - ru) g // PB rug, rugmel - uru) g (uay g // PB Uruguay - fru) g (t g // PB - æ) g (ernA j // PB lægerne - al) g (e j // PB alge - g (enstand+ g // PB metalgenstand - o) g (ernA // PB nekrologerne - sti) gmata gm'&:t& // PB stressed - a) g (ave 'g // PB agave - _a) g (ar 'g // PB agar, agar-agar - ser) gent 'sj&nt // PB sergent - gjorde gjo:V // PB gjorde - ki) g k // PB kig, udkig - ki) g (host // PB kighoste - silent g + i) gg g // lediggang + o) gg g // jogging + gh (ana g // Ghana + gh (etto g // ghetto + af) gh (a g // afghansk + a) gg (res g // aggresiv - only one g + ru) g // rug, rugmel + uru) g (uay g // Uruguay + fru) g (t g // + æ) g (ernA j // lægerne + al) g (e j // alge + g (enstand+ g // metalgenstand + o) g (ernA // nekrologerne + sti) gmata gm'&:t& // stressed + a) g (ave 'g // agave + _a) g (ar 'g // agar, agar-agar + ser) gent 'sj&nt // sergent + gjorde gjo:V // gjorde + ki) g k // kig, udkig + ki) g (host // kighoste - silent g ka) g (e @ // kage ba) g (e @ // bage - ba) g (i || // PB bagi - ba) g (in w // PB bagindisk - bra) g w // PB brag, bragende - bra) g (t g // PB bragte + ba) g (i || // bagi + ba) g (in w // bagindisk + bra) g w // brag, bragende + bra) g (t g // bragte æble) grød grWD a) g (urk g' - al) geriet Sj3r'i@d // PB Algeriet - al) gerier Sj'iV // PB algerier - al) gier S'ir // PB + al) geriet Sj3r'i@d // Algeriet + al) gerier Sj'iV // algerier + al) gier S'ir // al) gerisk Sj'i:rsg - g (iro S // PB - guinea gin'e& // PB - gui (nnes ge // PB - guard gA:d // PB - gerry dZEri // PB name - re) ggie dZi // PB name + g (iro S // + guinea gin'e& // + gui (nnes ge // + guard gA:d // + gerry dZEri // name + re) ggie dZi // name ødi) g (t_ // nødigt - smi) g j // PB smigre + smi) g j // smigre i) g (i g - e) g (entl j // PB egentlig - l) g (s j - øl) g (e j // PB bølge, selvfølgelig - A) g (n j // PB tegn, regne - pa) gn (on Nj // PB kompagnon - kampa) gn Nj // PB valgkampagnen - pa) gn (er Nj // PB akkompagnerer - pa) gn (i n' // PB kompagniskab - mu) g (n g // PB mugne - hu) g (ning g // PB halshugning - ty) g (ning g // PB - si) gn (er N // PB signere - velsi) gn jn // PB velsigner - a) g (nos g // PB diagnose - sky) g (ni g // PB afskygning - i) gn (o nj // PB ignorere - æ) g (n+ g // PB udlægning, prægnant - impræ) gn (e nj // PB imprægnere - by) g (n g // PB bygning - ble) g (sot j // PB blegsot - ble) g (ansigt j // PB blegansigt + e) g (entl j // egentlig + l) g (s // udsalgsfeber - silent g + øl) g (e j // bølge, selvfølgelig + A) g (n j // tegn, regne + pa) gn (on Nj // kompagnon + kampa) gn Nj // valgkampagnen + pa) gn (er Nj // akkompagnerer + pa) gn (i n' // kompagniskab + mu) g (n g // mugne + hu) g (ning g // halshugning + ty) g (ning g // + si) gn (er N // signere + velsi) gn jn // velsigner + a) g (nos g // diagnose + sky) g (ni g // afskygning + i) gn (o nj // ignorere + æ) g (n+ g // udlægning, prægnant + impræ) gn (e nj // imprægnere + by) g (n g // bygning + ble) g (sot j // blegsot + ble) g (ansigt j // blegansigt ble) g (fi j - e) g (enskab j // PB - e) ge (r jV // PB eger, egern - @) ger ($p_alt g'er // PB delegere - L08e) g j // PB steg, spegepølse - g (ård++ g // PB præstegård - val) g (år j // PB - L08e) g (t g // PB stegt + e) g (enskab j // + e) ge (r jV // eger, egern + @) ger ($p_alt g'er // delegere + L08e) g j // steg, spegepølse + g (ård++ g // præstegård + val) g (år j // + L08e) g (t g // stegt æ) g (e j - læ) g (folk j // PB - læ) g (m j // PB lægmand, lægmænd - læ) g (dom j // PB lægdommer - læ) g (søs j // PB lægsøster - æl) g (e j // PB sælge vælge + læ) g (folk j // + læ) g (m j // lægmand, lægmænd + læ) g (dom j // lægdommer + læ) g (søs j // lægsøster + æl) g (e j // sælge vælge y) g (e // syge, ryge, myge l) g (_ j // valg, elg - val) g // PB valgaften, valgkamp - l) g (et_ j // PB valget - l) g (en_ j // PB elgen - el) g (e_ j // PB elge, Helge - el) g (ene_ j // PB elgene - el) g (enes_ j // PB elgenes - _e) g (_ j // PB - kvæ) g j // PB - l) g (C // PB bælgmørkt, bælgplante, forfulgt - g (ruL06 g // PB kulgrube, kontrolgruppe + val) g // valgaften, valgkamp + l) g (et_ j // valget + l) g (en_ j // elgen + el) g (e_ j // elge, Helge + el) g (ene_ j // elgene + el) g (enes_ j // elgenes + _e) g (_ j // + kvæ) g j // + l) g (C // bælgmørkt, bælgplante, forfulgt + g (ruL06 g // kulgrube, kontrolgruppe g (rundlag g // PN kapitalgrundlag - g (las g // PB spejlglas - pil) g (rim g // PB - g (rib g // PB ådselgribbe - g (ran g // PB ædelgran - g (ross g // PB ølgrossist - ø) g j // PB deleted (_ - rø) g (ter g // PB røgterdreng - sø) g (ang g // PB - g (le j // PB mægler, besegle - goo) gle g-@l // PB name - guillaumin _^_fr // PB name - gachet _^_fr // PB name dr. Gachet - gur) g (le // PB silent g - g (lem g // PB glemt - _) g (led g // PB gled - val) g (t // PB silent g - valgt - spur) gt d // PB silent g - spurgt - sy) g // PB silent g -sygdom - sa) g j // PB frisag - sa) g (o g // PB sagogryn, heksagon - vra) g w // PB skibsvrag - spur) gte t@ // PB silent g - spurgte + g (las g // spejlglas + pil) g (rim g // + g (rib g // ådselgribbe + g (ran g // ædelgran + g (ross g // ølgrossist + ø) g j // deleted (_ + rø) g (ter g // røgterdreng + sø) g (ang g // + g (le j // mægler, besegle + goo) gle g-@l // name + guillaumin _^_fr // name + gachet _^_fr // name dr. Gachet + gur) g (le // silent g + g (lem g // glemt + _) g (led g // gled + val) g (t // silent g - valgt + spur) gt d // silent g - spurgt + sy) g // silent g -sygdom + sa) g j // frisag + sa) g (o g // sagogryn, heksagon + vra) g w // skibsvrag + spur) gte t@ // silent g - spurgte n) gæ gE - aspar) ges =s // PB - _) grunge (_ grVndZ // PB + aspar) ges =s // + _) grunge (_ grVndZ // _mar) ge dZ // POB name - gottfried gVtfr'it // PB name + gottfried gVtfr'it // name -// PB general rule: consonant + o + g + e: [w] - Co) g w // PB tog, toge - g (lycerin g // PB nitroglycerin -// no) g @ // PB noget +// general rule: consonant + o + g + e: [w] + Co) g w // tog, toge + g (lycerin g // nitroglycerin +// no) g @ // noget // o=>w exceptions // "tog" = "took", not "train" - problem with "de tog" = they took/those trains -_han_to) g // PB silent g -_hun_to) g // PB silent g -_vi_to) g // PB silent g - _i_to) g // PB silent g - pro) g (r g // PB program - østro) gen g'en // PB - nitro) gen g'en // PB - ero) gen g'en // PB - mono) ga (m g'& // PB - g (yro g // PB autogyro - vo) g (t g // PB bevogtning - vo) g (te g // PB bevogte - surro) g (at g // PB - to) g (a g // PB exception toga - to) g (o g // PB exception Togo - to) g (t g // PB exception togt - ro) g (an g // PB arrogance - ro) g (es g // PB progesteron +_han_to) g // silent g +_hun_to) g // silent g +_vi_to) g // silent g + _i_to) g // silent g + pro) g (r g // program + østro) gen g'en // + nitro) gen g'en // + ero) gen g'en // + mono) ga (m g'& // + g (yro g // autogyro + vo) g (t g // bevogtning + vo) g (te g // bevogte + surro) g (at g // + to) g (a g // exception toga + to) g (o g // exception Togo + to) g (t g // exception togt + ro) g (an g // arrogance + ro) g (es g // progesteron o) g (raf g // autograf - bo) g (ota g // PB - _bo) g (art g // PB name - _bo) g (ey g // PB nickname + bo) g (ota g // + _bo) g (art g // name + _bo) g (ey g // nickname - r) g (_ w // PB kirurg, herberg - _pra) g w // PB Prag (city), pragmatisk - pra) g (t g // PB pragtfuld + r) g (_ w // kirurg, herberg + _pra) g w // Prag (city), pragmatisk + pra) g (t g // pragtfuld r) g (et_ w // herberget - r) gerne (_ wVn3 // PB herbergerne - r) gernes (_ wVn3s // PB herbergerne - r) gen (_ @n // PB kirurgen - mar) gen w@n // PB fejlmargen - r) gen (s_ @n // PB kirurgens - jær) g (e w // PB bjærge - r) g (er_ u // PB herberger - u) ge :@- // PB uge, ugevis, bruge - su) g // PB silent g - sugerør, sug - u) g (ene S // PB ugenert - gener (_ham Sen'er // PB try to solve "gener" = bother and "gener" = genes - gener (_hende Sen'er // PB - gener (_dem Sen'er // PB - gener (_deres Sen'er // PB - u) g (enn g // PB ugennemskuelig - u) g (enL01 g // PB ugengældt, ugenkendelig + r) gerne (_ wVn3 // herbergerne + r) gernes (_ wVn3s // herbergerne + r) gen (_ @n // kirurgen + mar) gen w@n // fejlmargen + r) gen (s_ @n // kirurgens + jær) g (e w // bjærge + r) g (er_ u // herberger + u) ge :@- // uge, ugevis, bruge + su) g // silent g - sugerør, sug + u) g (ene S // ugenert + gener (_ham Sen'er // try to solve "gener" = bother and "gener" = genes + gener (_hende Sen'er // + gener (_dem Sen'er // + gener (_deres Sen'er // + u) g (enn g // ugennemskuelig + u) g (enL01 g // ugengældt, ugenkendelig u) g (l // silent g - uglegylp, smugler - en_du) g // PB table cloth, not dew [dug] -teltdu) g // PB silent g -damaskdu) g // PB silent g -flagdu) g // PB silent g -kammerdu) g // PB silent g -lysedu) g // PB silent g -olmerdu) g // PB silent g -sejldu) g // PB silent g -voksdu) g // PB silent g -svededu) g // PB silent g - hertu) g // PB silent g - ø) ge (+++ j@- // PB bøgetræ, øge, døgenigt, høgen - ø) ger (++ jV // PB bøger - mø) ge (len :je // PB møgelendig - beha) g j // PB ubehag + en_du) g // table cloth, not dew [dug] +teltdu) g // silent g +damaskdu) g // silent g +flagdu) g // silent g +kammerdu) g // silent g +lysedu) g // silent g +olmerdu) g // silent g +sejldu) g // silent g +voksdu) g // silent g +svededu) g // silent g + hertu) g // silent g + ø) ge (+++ j@- // bøgetræ, øge, døgenigt, høgen + ø) ger (++ jV // bøger + mø) ge (len :je // møgelendig + beha) g j // ubehag ø) g (n j g (iv+ g // avoid letter "g" pronounced with phoneme S - dra) g (en w // PB dragen, uopdragen + dra) g (en w // dragen, uopdragen ha) g (l u in) ge (niør Se - la) g (n j // PB lagnet - la) gr (e jR // PB lagre + la) g (n j // lagnet + la) gr (e jR // lagre la) g (t g dra) g w // foredrag, bidragyder - dra) g (on g // PB exception - dra) g (t g // PB flyverdragt - ra) g (e : // PB changed from w - præ) g j // PB præg, prægning, udpræget - præ) g (tig g // PB exception + dra) g (on g // exception + dra) g (t g // flyverdragt + ra) g (e : // changed from w + præ) g j // præg, prægning, udpræget + præ) g (tig g // exception præ) g (na g // PN prægnans lA) g (a g - ba) g (tal u // PB l added to post - bagtale - da) g (C w // PB changed from u - daglejer - anda) g (t g // PB + ba) g (tal u // l added to post - bagtale + da) g (C w // changed from u - daglejer + anda) g (t g // da) g (s_ j - dda) g (s :? // PB middagstid - re) g (ime S // PB voldsregime - re) g (iment g // PB regiment + dda) g (s :? // middagstid + re) g (ime S // voldsregime + re) g (iment g // regiment re) g (iA g _re) g (ist g' // register - sa) g (s : // PB ' => : - va) g (n w // PB u => w - gti) g (ere // PB vigtigere + sa) g (s : // ' => : + va) g (n w // u => w + gti) g (ere // vigtigere jer) g (A w jer) g (C w bo) g (st k - A) g (t_ g // PB søgt, bagt, frugt - g (te_ g // PB søgte, bagte - l) g (te_ // PB silent g - fulgte + A) g (t_ g // søgt, bagt, frugt + g (te_ g // søgte, bagte + l) g (te_ // silent g - fulgte vå) g (n u - å) g (e w // PB tåge, Åge, våge + å) g (e w // tåge, Åge, våge go) g = // stress on previous syllable, no g - pædagog lo) g = // stress on previous syllable, no g - psykolog - go) g (ik g // PB pædagogik - gogo gOwg'Ow // PB - orlo) g w // PB - ær) ger (lig w@ // PB - o) g (ram g // PB hologram, monogram - gerald dZEr3l/2 // PB - geraldine dZEr3l/2di:n // PB - fitz) gerald dZ'Er3l/2 // PB - gonzales _^_ES // PB gin - _) gi (n dZe // PB Gino - _) gi (nL04 dZi // PB - _) gi (na dZi // PB name - _) ginger dZendZV // PB ginger ale - _) guy (_ ga:j // PB Guy - name - _) guy (s_ ga:j // PB Guys - name - ginsberg gensbW:g // PB name - geronimo dZer'VnimO:u // PB - grady grEjdi // PB name - gertie gWti n // PB name - graham (_ _^_en // PB name - grahams (_ _^_en // PB name - guthrie gVTRi // PB name - gaulle gO:l // PB de Gaulle - g (igolo dZ // PB - gouda gAwd& // PB cheese - guirland girl'&nd // PB guirlander - _) grande (_ grand3 // PB italian - gele sjel'e // PB gele - gelé sjel'e // PB gelé - guire gw'aIV // PB - gobelin gob@l'EN // PB - graffiti grAf'iti // PB - en_) gros gro // PB - gustav gOstaw // PB name + go) g (ik g // pædagogik + gogo gOwg'Ow // + orlo) g w // + o) g (ram g // hologram, monogram + gerald dZEr3l/2 // + geraldine dZEr3l/2di:n // + fitz) gerald dZ'Er3l/2 // + gonzales _^_ES // gin + _) gi (n dZe // Gino + _) gi (nL04 dZi // + _) gi (na dZi // name + _) ginger dZendZV // ginger ale + _) guy (_ ga:j // Guy - name + _) guy (s_ ga:j // Guys - name + ginsberg gensbW:g // name + geronimo dZer'VnimO:u // + grady grEjdi // name + gertie gWti n // name + graham (_ _^_en // name + grahams (_ _^_en // name + guthrie gVTRi // name + gaulle gO:l // de Gaulle + g (igolo dZ // + gouda gAwd& // cheese + guirland girl'&nd // guirlander + _) grande (_ grand3 // italian + gele sjel'e // gele + gelé sjel'e // gelé + guire gw'aIV // + gobelin gob@l'EN // + graffiti grAf'iti // + en_) gros gro // + gustav gOstaw // name -// PB final -gi in da_list - stressed i +// final -gi in da_list - stressed i @) gi ($p_alt g''i // pædagogi, analogi @C) gi ($p_alt g''i // pædagogi, analogi &) gi (sk$p_alt =gi // pædagogisk _lo) gi (_ S'i // logi _lo) gi (e S'i // logi - natlo) gi Si // PB - re) gi ($p_alt+ S'i // PB regibemærkning - re) gi (men$p_alt+ gi // PB regimentet - re) gi (s$p_alt+ gi // PB registrere -// re) gi (ster g'i // PB - re) gi (on+ gi // PB regional + natlo) gi Si // + re) gi ($p_alt+ S'i // regibemærkning + re) gi (men$p_alt+ gi // regimentet + re) gi (s$p_alt+ gi // registrere +// re) gi (ster g'i // + re) gi (on+ gi // regional lo) g (a g lo) gg (e g @@ -4050,54 +4016,54 @@ svededu) g // PB silent g lo) g (o =g blo) g (s =g _lo) g (_ g - lo) g (fil g // PB + lo) g (fil g // _lo) g (g g - ør) g u // PB changed from w - spørge - ør) ge (+ w@ // PB spørgeleg - avoid "gele" = [Sel'e] - ør) g (s // PB silent g - spørgsmål - å) g u // PB åg, åge + ør) g u // changed from w - spørge + ør) ge (+ w@ // spørgeleg - avoid "gele" = [Sel'e] + ør) g (s // silent g - spørgsmål + å) g u // åg, åge g (røn g // PN blågrøn - ne) g (_ j // PB neg, juleneg - sne) g j // PB sneget - ve) g (en j // PB undvegen - ne) ger (++ V // PB neger - ne) gre V // PB + ne) g (_ j // neg, juleneg + sne) g j // sneget + ve) g (en j // undvegen + ne) ger (++ V // neger + ne) gre V // te) g (ori g // kategori - gear gir // PB gear, bakgear - goddag god'& // PB - godnat gon'&t // PB - godaften go'aftn // PB - godmorgen gom'V:n // PB - grace _^_EN // PB Grace - name - gentleman dZEnt@-lm&n // PB - gentlemen dZEnt@-lm?En // PB - george _^_EN // PB - georgie _^_en // PB name - georgien ge'O:gi3n // PB - geneve Sen'E:v // PB - genève Sen'E:v // PB - _) gudskelov (_ gusg@lVu // PB - georgia dZV:dZj& // PB - gibraltar SibRalt'A // PB - _) gates (_ gEjts // PB name - _) gable gEjb@l // PB name - gendarm S&nd'arm // PB - _) gary g&ri // PB name - guillotine gijut'i:n@ // PB - _) gerard SeR'A: // PB name - giuseppe dZis'Ep@ // PB name - _) giants dZaj&nts // PB name - gloucester glVstV // PB - bour) geoisi ZwAs'i // PB - bour) geois Zw'A // PB - grandprix grANpr'i // PB - guernsey gW:nsi // PB - gulfstream gVlfstri:m // PB - geoff dZEf // PB name + gear gir // gear, bakgear + goddag god'& // + godnat gon'&t // + godaften go'aftn // + godmorgen gom'V:n // + grace _^_EN // Grace - name + gentleman dZEnt@-lm&n // + gentlemen dZEnt@-lm?En // + george _^_EN // + georgie _^_en // name + georgien ge'O:gi3n // + geneve Sen'E:v // + genève Sen'E:v // + _) gudskelov (_ gusg@lVu // + georgia dZV:dZj& // + gibraltar SibRalt'A // + _) gates (_ gEjts // name + _) gable gEjb@l // name + gendarm S&nd'arm // + _) gary g&ri // name + guillotine gijut'i:n@ // + _) gerard SeR'A: // name + giuseppe dZis'Ep@ // name + _) giants dZaI&nts // name + gloucester glVstV // + bour) geoisi ZwAs'i // + bour) geois Zw'A // + grandprix grANpr'i // + guernsey gW:nsi // + gulfstream gVlfstri:m // + geoff dZEf // name .group ge -// PB words with final -gere: [S] +// words with final -gere: [S] arran) ge (re S'e banda) ge (re S'e chan) ge (re S'e @@ -4116,41 +4082,41 @@ indran) ge (re S'e ran) ge (re S'e udran) ge (re S'e ur) ge (re S'e -_korte) ge =S3 // PB - korte) ge S3 // PB - _mane) ge =S3 // PB stress on previous syllable - mane) ge S3 // PB for compounds - cirkusmanege +_korte) ge =S3 // + korte) ge S3 // + _mane) ge =S3 // stress on previous syllable + mane) ge S3 // for compounds - cirkusmanege _lo) ge (_ S3 // loge _lo) ger (_ SV // loger - lo) ge (n S3 // PB logen -frimurerlo) ge S3 // PB - ykolo) ge (n 3 // PB børnepsykologen -proktolo) ge (n 3 // PB - lo) ge (bro S3 // PB logebror/logebroder - halo) ge (n g'e // PB stressed - lo) ge (mø Se // PB logemøde + lo) ge (n S3 // logen +frimurerlo) ge S3 // + ykolo) ge (n 3 // børnepsykologen +proktolo) ge (n 3 // + lo) ge (bro S3 // logebror/logebroder + halo) ge (n g'e // stressed + lo) ge (mø Se // logemøde _) ge (ne_ Se // gene _) ge (nere Se // genere - gener (_mig Sen'er // PB gener mig ikke - genere (_mig Sen'eV // PB genere mig - _) ge (nerere_ ge // PB + gener (_mig Sen'er // gener mig ikke + genere (_mig Sen'eV // genere mig + _) ge (nerere_ ge // ge (nerøs Se // generøs ge (nert Se // genert _) ge (never Se // genever - germain ZErm'&N // PB Saint-Germain (pronounced by a Dane) - _) generel gen@r'&#l // PB stress added - _a) ge (re g'e // PB agere - ge (nial ge // PB - ge (ni Se // PB - ge (ninvest gE // PB geninvestere - ge (nital ge // PB - ge (nitiv ge // PB - ge (nius // PB - geni (nd gene // PB genindspille, genindkalde (not [gen'i]) - ger (ning gEr // PB + germain ZErm'&N // Saint-Germain (pronounced by a Dane) + _) generel gen@r'&#l // stress added + _a) ge (re g'e // agere + ge (nial ge // + ge (ni Se // + ge (ninvest gE // geninvestere + ge (nital ge // + ge (nitiv ge // + ge (nius // + geni (nd gene // genindspille, genindkalde (not [gen'i]) + ger (ning gEr // bud) ge (t S'E - // PB stressed second syllable in words with initial ge + // stressed second syllable in words with initial ge ge (bet ge' ge (bis ge' ge (bommerlig ge' @@ -4199,7 +4165,7 @@ proktolo) ge (n 3 // PB ge (vind ge' ge (vinst ge' ge (vir ge' - føl) ge j3 // PB følgevirkning + føl) ge j3 // følgevirkning ge (vækst ge' ge (vær ge' @@ -4210,68 +4176,77 @@ proktolo) ge (n 3 // PB hv v A) h (K t) h (en h - w) h (isky // PB whisky - silent h - _r) h (in // PB Rhinen - silent h - sil) hue (t u'E // PB silent h, stressed e - bo) heme (_ 'E:m // PB boheme - bo) hem (e 'E:m // PB bohemer - hotline hVtla:jn // PB - honey hVni // PB - heat hi:t // PB - _) herb (_ hW:b // PB name - _) hercule Erk'yl // PB name - highhat hA:jh&d // PB - housecoat hAuskowd // PB - hitech hajtek // PB - homer hom'er // PB Homer - Greek - hawaii h&w'a:ji // PB - heather hEDV // PB - houston hju:sdVn // PB - hawk hV:k // PB Black Hawk - hugh hju: // PB name - hudson hVdsVn // PB name - hillary hel@*e // PB name - holly hVli // Pb hollywood - heim haIm // PB part of a German name - alzheimerpatient - hawthorne hO:Ton // PB name - _) hyde hajd // PB dr Jekyll and mr. Hyde - home hOwm // PB homebanking, home run - humveer hVmvi:V // PB - humvee hVmvi: // PB - w) h (it // PB Whitman - g) ho (st ow // PB - _) hunt (_ hVnt // PB name - howard hawVd // PB name - _) haig hEjg // PB name - _) huges (_ hju:s // PB name - huckleberry hVk@lbEri // PB name - hipokrates hip'okratEs // PB name - hierogly (f hirofl'y // PB - heavy hEvi // PB - _) hearst hWst // PB name - _) haag (_ h&j // PB Dutch city + w) h (isky // whisky - silent h + _r) h (in // Rhinen - silent h + sil) hue (t u'E // silent h, stressed e + bo) heme (_ 'E:m // boheme + bo) hem (e 'E:m // bohemer + hotline hVtla:jn // + honey hVni // + heat hi:t // + _) herb (_ hW:b // name + _) hercule Erk'yl // name + highhat hA:jh&d // + housecoat hAuskowd // + hitech haItek // + homer hom'er // Homer - Greek + hawaii h&w'a:ji // + heather hEDV // + houston hju:sdVn // + hawk hV:k // Black Hawk + hugh hju: // name + hudson hVdsVn // name + hillary hIl@*e // name + holly h?Vli // Pb hollywood + heim haIm // part of a German name - alzheimerpatient + hawthorne hO:Ton // name + _) hyde haId // dr Jekyll and mr. Hyde + home hOwm // homebanking, home run + humveer hVmvi:V // + humvee hVmvi: // + w) h (it // Whitman + g) ho (st ow // + _) hunt (_ hVnt // name + howard hawVd // name + _) haig hEjg // name + _) huges (_ hju:s // name + huckleberry hVk@lbEri // name + hipokrates hip'okratEs // name + hierogly (f hirofl'y // + heavy hEvi // + _) hearst hWst // name + _) haag (_ h&j // Dutch city .group i i i // Short i followed by double consonant - i (C% ?i // PB svirret, fisse - i (dt ?i // PB skridt, skridtet - short i before dt - br) i (te ?i // PB person from GB + i (C% ?i // svirret, fisse + 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 - d) i (kt+ i // PB diktere - t) i (l+ e // PB tilknytte, stille -dansk_st) i (l+ i // PB -engelsk_st) i (l+ i // PB - indst) i (l e // PB indstille - h) i (ls ?i // PB hils, hilsen - short i - skr) i (der ?i // PB short i - general rule? - b) i (l ?i // PB bil, bilen + d) i (kt+ i // diktere + t) i (l+ e // tilknytte, stille +dansk_st) i (l+ i // +engelsk_st) i (l+ i // + indst) i (l e // indstille + +// short i - general rules? + h) i (ls ?i // hils, hilsen - short i + skr) i (der ?i // short i - general rule? + b) i (l ?i // bil, bilen + f) i (l ?i // fil, filen + v) i (dere ?i // + t) i (d ?i // tid + l) i (ter ?i // + t) i (t ?i // titel // exceptions - dr) i (nk e // PB + dr) i (nk e // -// PB "lide" - "like" versus "suffer" +// "lide" - "like" versus "suffer" l) ide (_dig i l) ide (_mig i l) ide (_jer i @@ -4282,349 +4257,353 @@ engelsk_st) i (l+ i // PB l) ide (_jeres i l) ide (_vores i -// PB general rule: initial in- : [e] - _) i (n+ e // PB instinkt, ineffektiv - i (ns e // PB bladinsekt, musikinstrument - i (nter e // PB fritidsinteresse - h) i (n i // PB hinsides - i (nfant e // PB marineinfanteri - f) i (nsky ?i // PB finskytte, finskydning - i (nc ?e // PB pincet - _) insider ensajdV // PB - _) inside (information ensajd // PB - _) i (ni i // PB initiativ - i (nu i // PB inuit - p) i (nsel i // PB - p) i (nsler i // PB - sixt) i (nsk 'i // PB +// 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 + 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 // -// PB general rule: [e] before double consonant - L03) i (L01%+ ?e // PB ligge, dikke - i (ggør++ i // PB legemliggøre - i (ggjo++ i // PB legemliggjort/gjorde - r) i (L01% e // PB drikke, prikke - L08) i (ll++ ?e // PB skille, stille, spille - st) illads il'&s // PB - bast) ille 'ilj3 // PB - sp) i (l e // PB lotterispil - sp) ilop il'Vp // PB stressed - L09) i (L03%a+ e // PB middag - L02) i (pp e // PB svippe, vippe - L09) i (pp e // PB nippe, knippe, knippel, snippe - s) i (pp e // PB sippe -mississ) i (ppi 'i // PB stressed - musl) i (n_ 'i // PB stressed +// general rule: [e] before double consonant + L03) i (L01%+ ?e // ligge, dikke + i (ggør++ i // legemliggøre + i (ggjo++ i // legemliggjort/gjorde + r) i (L01% e // drikke, prikke + L08) i (ll++ ?e // skille, stille, spille + st) illads il'&s // + 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 +mississ) i (ppi 'i // stressed + musl) i (n_ 'i // stressed - v) i (ss e // PB visse - vr) i (ss e // PB vrisse - v) i (sh e // PB uvished - n) i (sse e // PB - pen) i (s i // PB penissen - vildn) i (s i // PB - p) i (sse e // PB - n) i (p e // PB nips, niptang - kn) ip (tang iw // PB kniptang - i (kke+ ?e // PB ikke, sikkerhed, sikkert - ch) i (k+ i // PB chikke - sk) i (k+ i // PB skikkelse - L06) i (lle ?e // PB billede, piller - b) i (lle_+ ?i // PB insect - b) i (ller_+ ?i // PB insect - b) i (llen_+ ?i // PB insect - b) i (llet+ i // PB - traf) i (k i // PB juletrafikken - tekn) i (k i // PB salgsteknikken - but) i (k i // PB videobutikken + 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 + 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 - // PB general rule: [i] after k, [e] followed by n/m - k) i (C++ ?i // PB kikke, kikkert, kirke, kiosk - k) i (Ce++ i // PB skide - k) i (L09++ e // PB kind, skinke, skimme, skimte - k) i (L09L11++ i // PB kime - k) i (mning+ i // PB - bik) i (ni ?i // PB - sk) i (mo+ ?i // PB eskimo + // general rule: [i] after k, [e] followed by n/m + k) i (C++ ?i // kikke, kikkert, kirke, kiosk + k) i (Ce++ i // skide + 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 -// PB General rule j in "udie" - ud) i (e j // PB studie, audiens +// General rule j in "udie" + ud) i (e j // studie, audiens // general rule: [e] between l and nt - l) i (nt e // PB flint, klint, splint + l) i (nt e // flint, klint, splint // general rule: [e] between h and m - h) i (m+ ?e // PB himlen - h) iroshi (ma iroS'i // PB - h) imalaya ?em&l'aj& // PB stressed + h) i (m+ ?e // himlen + h) iroshi (ma iroS'i // + h) imalaya ?em&l'aI& // stressed // general rule: [e] before mp - i (mp e // PB imperium, impuls - impromptu _^_fr // PB + i (mp e // imperium, impuls + impromptu _^_fr // - fr) i (g i // PB frigav, frigid, frigøre + fr) i (g i // frigav, frigid, frigøre l) i (nk e // flink, link, blink - hell) ig ij // PB helligånd - r) ig (C i // PB rigdom - silent g - r) ig (ning eg // PB - r) igg eg // PB boreriggen - ig (ruppe ig // PB smuglerigruppe - fr) ig (jo ig // PB frigjorde + hell) ig ij // helligånd + r) ig (C i // rigdom - silent g + r) ig (ning eg // + r) igg eg // boreriggen + ig (ruppe ig // smuglerigruppe + fr) ig (jo ig // frigjorde f) i (kCL04 i // fiktiv - f) i (ks e // PB fikse, fiks - f) i (kserbad i' // PB - f) i (kservæske i' // PB - f) i (kserbilled i' // PB - f) i (ksering i' // PB - f) i (ksere i' // PB - _f) i (k_ e // PB + f) i (ks e // fikse, fiks + f) i (kserbad i' // + f) i (kservæske i' // + f) i (kserbilled i' // + f) i (ksering i' // + f) i (ksere i' // + _f) i (k_ e // s) i (nk++ e // sinke, sinkadus - L07) i (fte e // PB stifte, stifter, vifte TEST - _v) i (ft_ e // PB - kv) i (L07++ i // PB kvit, kvittere, kvik, kvikt - v) i (ste+ i // PB afviste, viste - sk) i (Ct i // PB skift, beskidt - k) i (ste+ i // PB + L07) i (fte e // stifte, stifter, vifte TEST + _v) i (ft_ e // + kv) i (L07++ i // kvit, kvittere, kvik, kvikt + v) i (ste+ i // afviste, viste + sk) i (Ct i // skift, beskidt + k) i (ste+ i // v) i (L01C++ e // vikle, forvikle, afvikle, svigt - v) i (nglas++ i // PB - v) i (nstok i // PB - t) i (ka+ i // PB distika, Vatikanet - v) i (g e // PB vinge - v) i (L01a i // PB vikar - v) i (L10i i // PB viking - v) i (ck i // PB Vicki, Vicky - v) i (ktL04++ i // PB Viktor, viktualiehandel - t) ig (+ i // PB stig, stige, artig - _t) ight ajt // PB tight (English) - st) ig (ma ig // PB - _t) i (g_+ e // PB - t) i (gg+ e // PB tigge, tigger - pl) i (gt+ e // PB pligt - pl) i (L01L11+ i // PB komplikation - s) i (L01L07 ?e // PB sigte, sigt, udsigt - l) ig (C ij // PB lighus - fil) ig (ran ig // PB - l) igi igj // PB relegiøs, religion - _n) i (L10 e // PB nikke, nik, Nick - n) i (kL04 i // PB nikotin - n) i (che i // PB + 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 + v) i (ktL04++ i // Viktor, viktualiehandel + t) ig (+ i // stig, stige, artig + _t) ight aIt // tight (English) + st) ig (ma ig // + _t) i (g_+ e // + t) i (gg+ e // tigge, tigger + pl) i (gt+ e // pligt + pl) i (L01L11+ i // komplikation + s) i (L01L07 ?e // sigte, sigt, udsigt + l) ig (C ij // lighus + fil) ig (ran ig // + l) igi igj // relegiøs, religion + _n) i (L10 e // nikke, nik, Nick + n) i (kL04 i // nikotin + n) i (che i // - k) ikset (_ egs@D // PB - f) i (nkul i // PB finkulturel + k) ikset (_ egs@D // + f) i (nkul i // finkulturel -// PB miscellaneous - sv) i (L09C e // PB svimle, svimmel, svindle, svind, sving - sv) i (ns i // PB svins, svinsk (not [svensk]) - L02) i (p e // PB vip, svip, fipskæg -spirrev) i (p 'i // PB stressed - sylf) i (de 'i // PB stressed - L02) i (L06e i // PB Bibelen, pibe - L02) i (L06re i // PB fibre - C) i (mL06 e // PB simpel, vimpel - sl) i (m i // PB slimprøve - p) ibe (tøj iw // PB - p) i (p+ i // PB pipfugl - b) i (p+ i // PB bipper, biperson - v) i (b+ i // PB vibrere - C) i (mC e // PB fims, gesims, vimse, bims, dims, bimle - l) i (mni+ i // PB limning -himstreg) i (ms 'e // PB stressed - sk) i (n+ ?e // PB skin, skinne, skinke - kn) i (p e // PB kniplen - Cr) i (mC e // PB vrimle, strimle - pr) i (m+ i // PB primtal, primus - L06r) i (nt e // PB brint, print - kor) i (nt e // PB korinterne - str) i (nt e // PB strinte - s) i (dde ?e // PB sidde - s) i (dning e // PB eftersidning -læbest) i (ft e // PB -tegnest) i (ft e // PB - limst) i (ft e // PB -blyantsst) i (ft e // PB -blyantst) i (ft e // PB -slagst) i (ft e // PB -blækst) i (ft e // PB - bes) i (dde ?i // PB våbenbesiddelse - Cr) i (ll ?e // PB drille, brille - tr) i (ll ?i // PB trille -eskadr) ille 'ilj3 // PB -espadr) ille 'ilj3 // PB - kvadr) ille 'ilj3 // PB - _dr) i (l e // PB dril, drilagtig - L01r) i (ll ?i // PB kriller, grill - jun) i (or j // PB - b) i (tter ?e // PB - b) i (tre e // PB - m) iav jaw // PB - _rad) i (se 'i // PB stressed - tils) i (de 'i // PB tilsidesætte - stressed - _kal) i (ber 'i // PB - tob) i (as '?i // PB name - stressed - ros) i (ta 'i // PB name +// miscellaneous + sv) i (L09C ?e // svimle, svimmel, svindle, svind, sving + sv) i (ns i // svins, svinsk (not [svensk]) + L02) i (p ?e // vip, svip, fipskæg +spirrev) i (p 'i // stressed + sylf) i (de 'i // stressed + L02) i (L06e i // pibe + L02) i (L06re i // fibre + b) i (bel ?i // + 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 + v) i (b+ i // vibrere + C) i (mC e // fims, gesims, vimse, bims, dims, bimle + l) i (mni+ i // limning +himstreg) i (ms 'e // stressed + sk) i (n+ ?e // skin, skinne, skinke + 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 + s) i (dde ?e // sidde + s) i (dning e // eftersidning +læbest) i (ft e // +tegnest) i (ft e // + limst) i (ft e // +blyantsst) i (ft e // +blyantst) i (ft e // +slagst) i (ft e // +blækst) i (ft e // + bes) i (dde ?i // våbenbesiddelse + Cr) i (ll ?e // drille, brille + tr) i (ll ?i // trille +eskadr) ille 'ilj3 // +espadr) ille 'ilj3 // + kvadr) ille 'ilj3 // + _dr) i (l e // dril, drilagtig + L01r) i (ll ?i // kriller, grill + jun) i (or j // + b) i (tter ?e // + b) i (tre e // + m) iav jaw // + _rad) i (se 'i // stressed + tils) i (de 'i // tilsidesætte - stressed + _kal) i (ber 'i // + tob) i (as '?i // name - stressed + ros) i (ta 'i // name -// PB [e] after gr - exception - gr) i (m e // PB grimrian - C) i (ng+ e // PB dressing, ising, ping, ring - len) i (n i // PB Leningrad - v) ing (ummi ing // PB - gr) i (mL11 i: // PB grime, grimasse +// [e] after gr - exception + gr) i (m e // grimrian + C) i (ng+ e // dressing, ising, ping, ring + len) i (n i // Leningrad + v) ing (ummi ing // + gr) i (mL11 i: // grime, grimasse - l) inge (ri l&NSe // PB + l) inge (ri l&NSe // -// PB general rule: [e] before nd/nk/ng - i (nd+ e // PB ind, find, vind - i (nde+ ?e // PB inde, finde, vinde - er) i (ndr ?e // PB erindring, erindre - i (nne+ ?e // PB finne - lets) i (ndig '?e // PB stressed - f) i (nland ?e // PB - h) i (nd ?e // PB hindre - C) i (nke ?e // PB spinkel, vinkel, forsinke - v) i (nk ?e // PB - v) i (nkort i // PB - f) i (nkæm i // PB finkæmme +// general rule: [e] before nd/nk/ng + i (nd+ e // ind, find, vind + i (nde+ ?e // inde, finde, vinde + er) i (ndr ?e // erindring, erindre + i (nne+ ?e // finne + lets) i (ndig '?e // stressed + f) i (nland ?e // + h) i (nd ?e // hindre + C) i (nke ?e // spinkel, vinkel, forsinke + v) i (nk ?e // + v) i (nkort i // + f) i (nkæm i // finkæmme // exceptions - v) i (ndrik+ // PB vindrikker - v) i (nkæld+ i // PB vinkælder - v) i (ngård+ i // PB vingård - f) ind (el ?ind // PB findele - f) ind (eløn ?en // PB - ind (else+ ?en // PB opfindelse, forbindelse - f) ind (yrk ?ind // PB findyrke - _vest) i (ndi 'e // PB vestindisk + v) i (ndrik+ // vindrikker + v) i (nkæld+ i // vinkælder + v) i (ngård+ i // vingård + f) ind (el ?ind // findele + f) ind (eløn ?en // + ind (else+ ?en // opfindelse, forbindelse + f) ind (yrk ?ind // findyrke + _vest) i (ndi 'e // vestindisk - // PB general rule: [e] before nn - i (nn e // PB linning, finne, fortinne + // general rule: [e] before nn + i (nn e // linning, finne, fortinne // exceptions - c) i (nn i // PB cinnober - t) i (nnitus i // PB + c) i (nn ?i // cinnober + t) i (nnitus ?i // -// PB general rule: [e] after sp/st/sk/r before k/l +// general rule: [e] after sp/st/sk/r before k/l t) i (L01+ e // ting, folketing, stik, joystick - part) i i // PB skyggepartikler - polit) i (k i // PB miljøpolitikken - art) i (k i // PB trosartikel - sk) i (l++ ?e // PB skildpadde, skilt - sk) i (løb++ i // PB skiløber - sk) i (lift+ i // PB - @sk) i (ld++ i // PB ungdomskilde, forsyningskilde - sp) i (ds e // PB spids - L08l) i (L07 ?e // PB splitte - l) i (v++ i // PB pensionistliv - t) i (ds+ ?i // PB livstidsdom - r) i (f e // PB skrifte, rift, drift - tar) i (f 'i // PB - fr) i (f+ i // PB frifundet - _fr) ites (_ it // PB pommes frites - sher) i (f 'i // PB sheriffen + part) i i // skyggepartikler + polit) i (k ?i // miljøpolitikken + art) i (k ?i // trosartikel + sk) i (l++ ?e // skildpadde, skilt + sk) i (løb++ ?i // skiløber + sk) i (lift+ ?i // + @sk) i (ld++ ?i // ungdomskilde, forsyningskilde + sp) i (ds ?e // spids + L08l) i (L07 ?e // splitte + l) iv (K++ ?iw // pensionistliv, livret + _bl) iv (e_ i // blive - silent v, long i + r) i (f ?e // skrifte, rift, drift + tar) i (f '?i // + fr) i (f+ ?i // frifundet + _fr) ites (_ ?it // pommes frites + sher) i (f '?i // sheriffen // greneral rule: [e] between r and c/k - [i] followerd by front vowel - r) i (L10 e // PB drik, skiderik - r) i (L10L11 i // PB Erika - fr) ikadelle ek&d'El3 // PB - fr) ikadeller ek&d'ElV // PB -_ventr) i (k 'i // PB ventrikel, ventrikler - r) i (ce i // PB servitrice - r) i (L10L04 i // PB frikendt, briket - r) i (L10CL04 i // PB friktion - fr) i (kvarter i // PB - fr) i (ken i // PB frikende + r) i (L10 e // drik, skiderik + r) i (L10L11 i // Erika + fr) ikadelle ek&d'El3 // + fr) ikadeller ek&d'ElV // +_ventr) i (k 'i // ventrikel, ventrikler + r) i (ce i // servitrice + r) i (L10L04 ?i // frikendt, briket + r) i (L10CL04 ?i // friktion + fr) i (kvarter ?i // + fr) i (ken ?i // frikende // general rule: [e] between consonant and st/sp/sk - l) i (L08+ ?e // PB list - l) i (sk i // PB cyklisk - @cykl) i (st i // PB røvcyklist - obel) i (sk 'i // PB stressed - r) i (L08+ ?e // PB riste, frisk, brist, vrist, Kristus, dristig - r) i (L08L04+ i // PB aristokrat - dr) i (stig e // PB - r) i (stik+ i // PB karakteristik - fr) i (stad i // PB - fr) i (spark i // PB - kr) i (sti_ ?e // PB Kristi genkomst - kr) i (stus ?e // PB - L10r) i (stin i' // PB Christine, Kristine - tr) i (L08+ i // PB trist - pr) i (s i // PB - fr) i (sted i // PB - fr) i (stede_ ?e // PB - fr) i (stedes_ ?e // PB - gr) i (L08+ i // PB grisk - &r) i (sk i // PB historisk TEST -infanter) i i // PB marineinfanterist - f) i (L08+ e // PB fisketur - graf) i (sk i // PB - forl) i (s i // PB forliste - konf) i (sker i // PB - _kl) i (ster i // PB klister - kl) i (str i // PB klistret - v) i (sk+ ?e // PB hviske - bev) i (s i // PB beviskæde - høv) i (sk i // PB - m) i (ste ?e // PB miste - _m) i (st_ ?e // PB - m) i (stanke i // PB - m) istelten ?istElten // PB - bil) i (s i // PB spritbilist + l) i (L08+ ?e // list + 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 (s+ ?i // riskager + r) i (L08L04+ ?i // aristokrat + dr) i (stig ?e // + r) i (stik+ ?i // karakteristik + fr) i (stad ?i // + fr) i (spark ?i // + kr) i (sti_ ?e // Kristi genkomst + kr) i (stus ?e // + L10r) i (stin i' // Christine, Kristine + tr) i (L08+ ?i // trist + pr) i (s ?i // + fr) i (sted ?i // + fr) i (stede_ ?e // + fr) i (stedes_ ?e // + gr) i (L08+ ?i // grisk + &r) i (sk ?i // historisk TEST +infanter) i i // marineinfanterist + f) i (L08+ ?e // fisketur + graf) i (sk ?i // + forl) i (s ?i // forliste + konf) i (sker ?i // + _kl) i (ster ?i // klister + kl) i (str ?i // klistret + v) i (sk+ ?e // hviske + Av) isk (_ ?isg // slavbisk + bev) i (s ?i: // beviskæde + høv) i (sk ?i // + m) i (ste ?e // miste + _m) i (st_ ?e // + m) i (stanke i // + m) istelten ?istElten // + bil) i (s ?i // spritbilist -// PB "vist" exceptions -ganske_v) i (st_ e // PB - jov) i (st e // PB - jav) i (st e // PB - L07v) i (st+ e // PB kvist, tvist - bortv) i (s i // PB bortvist +// "vist" exceptions +ganske_v) i (st_ ?e // + jov) i (st ?e // + jav) i (st ?e // + L07v) i (st+ ?e // kvist, tvist + bortv) i (s ?i // bortvist har_v) i (st_mig i // PM - _v) i (st_ e // PB "vist" = probably/might/maybe - problem with verb "vise/vist" - v) i (stnok e // PB - _v) i (st_sig i // PB verb - _v) i (st_den_til i // PB verb - v) i (s_grad e // PB "til en vis grad" - avoid [i] + _v) i (st_ ?e // "vist" = probably/might/maybe - problem with verb "vise/vist" + v) i (stnok ?e // + _v) i (st_sig i // verb + _v) i (st_den_til i // verb + v) i (s_grad ?e // "til en vis grad" - avoid [i] -// PB general rule: [e] after consonant + l followed by p - Cl) i (p e // PB slip, klip, glip - Cl) i (pp ?e // PB slippe, klipppe, glippe +// general rule: [e] after consonant + l followed by p + Cl) i (p e // slip, klip, glip + Cl) i (pp ?e // slippe, klipppe, glippe - _l) i (dt_+ e // PB problem with verb "lide" - _l) i (dt_skade i // PB - _l) i (dt_nederlag i // PB - _l) i (dt_overlast i // PB - _l) i (dt_under i // PB + _l) i (dt_+ e // problem with verb "lide" + _l) i (dt_skade i // + _l) i (dt_nederlag i // + _l) i (dt_overlast i // + _l) i (dt_under i // -// PB general rule: d/l + i + k = [e] - L03) i (k+ e // PB blik, øjeblik, dik - L03) i (kL04+ i // PB helikopter, publikum - L03) i (L10a i // PB handikap - L03) i (ke i // PB klike - L06) i (k+ ?e // PB pik, vatpik, bikse - b) i (kube i // PB - b) i (kini i // PB - L06) i (ke i // PB pikikerede, piké - _sp) ike ajk // PB Spike Jones - name -// d) i (kt i // PB diktat, diktatur, diktum - l) i (kv+ i // PB likvid - pl) i (k i // PB replik, duplik - publ) i i // PB folkerepublik - harp) i (ks i // PB +// general rule: d/l + i + k = [e] + L03) i (k+ e // blik, øjeblik, dik + L03) i (kL04+ i // helikopter, publikum + L03) i (L10a i // handikap + L03) i (ke i // klike + L06) i (k+ ?e // pik, vatpik, bikse + b) i (kube i // + b) i (kini i // + L06) i (ke i // pikikerede, piké + _sp) ike aIk // Spike Jones - name +// d) i (kt i // diktat, diktatur, diktum + l) i (kv+ i // likvid + pl) i (k i // replik, duplik + publ) i i // folkerepublik + harp) i (ks i // - // PB words with final -id in da_list - stressed i + // words with final -id in da_list - stressed i &) id ($p_alt ''iD // hybrid -// PB nouns with final -itum in da_list - stress on previous syllable - @) itum ($p_alt =itOm // PB depositum - @) itum (m$p_alt =itO // PB depositummet - only one m +// nouns with final -itum in da_list - stress on previous syllable + @) itum ($p_alt =itOm // depositum + @) itum (m$p_alt =itO // depositummet - only one m -// PB words with final -isk: stress on previous syllable (1.250 words in da_list) +// words with final -isk: stress on previous syllable (1.250 words in da_list) &) isk (_$p_alt =isg // canadisk &) isk (e$p_alt =isg // canadiske &) isk (t$p_alt =isg // canadiskt -// PB country names in da_list with final -ien - stress on previous syllable +// 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 -austral) ier =jV // PB +austral) ier =jV // -// PB words with final -ik in da_list - stressed i +// words with final -ik in da_list - stressed i @) ik ($p_alt+++ ''ik // romantik @) ik (et$p_alt+++ ik // etiket @r) ik (k$p_alt++++ ''?e // fabrikker @@ -4641,51 +4620,52 @@ austral) ier =jV // PB &) ik (k$p_alt+ ''?i // antikke, trafikken - only one k &r) ik (k$p_alt ''e // fabrikker - only one k @) ik (ant$p_alt+ ik' // praktikant, musikant - C) ik (er+ ik // PB mimiker, spastiker, musiker - C) ik (aner++ ik // PB republikaner - mus) i (k i // PB folkemusik + C) ik (er+ ik // mimiker, spastiker, musiker + C) ik (aner++ ik // republikaner + mus) i (k i // folkemusik -// PB words with final -ti in da_list - stressed i +// words with final -ti in da_list - stressed i &t) i ($p_alt+ ''i // politi, parti, profeti -// PB words with final -isme in da_list (348) - stressed i +// words with final -isme in da_list (348) - stressed i &) isme ($p_alt ''ism@ // kommunisme, egoisme &) isme (r$p_alt 'ismV // organismer -// PB words with final -inde in da_list - stressed i +// words with final -inde in da_list - stressed i &) inde ($p_alt 'en@ // malerinde &) inde (r$p_alt 'enV // malerinder -// PB put stress on the syllable before final 'ium' - words in da_list +// put stress on the syllable before final 'ium' - words in da_list &) ium ($p_alt =iOm // territorium &) ium (m$p_alt =iO // plutoniummet - only one m &r) i (um$p_alt ==i &r) i (et$p_alt 'i // infirmeriet -// PB put stress on the syllable before final 'ie' - words in da_list - &) ie ($p_alt =i@- // valkyrie, kalorie +// put stress on the syllable before final 'ie' - words in da_list + &) ie ($p_alt =j@- // valkyrie, kalorie &) ie (liv$p_alt =j@- // familieliv &) ie (r$p_alt =jV // familier &s) ie ($p_alt =j@- // gymnasiereform &r) ie (l$p_alt i'E // materiel &) ie (re$p_alt =i''e // injuriere, injurierende - kalor) i (us =i // PB + kalor) i (us =i // -// PB stressed i in words with final -mi in da_list +// stressed i in words with final -mi in da_list &m) i ($p_alt 'i // økonomi, kemi - only one stress-marker because of 'kemikalier' - &k) i ($p_alt 'i // PB anarki + &k) i ($p_alt 'i // anarki &m) i (sk$p_alt =i // stress on the previous syllable - økonomisk -// PB ie=>j@- TEST - er) ie j@- // PB serie, ferie - er) ier jV // PB serier, ferier - ie (re j'E // PB karriere TEST - ierer j'EV // PB karrierer TEST - or) ie (nt_ i'E // PB Den nære Orient - or) ie (nten_ i'E // PB Orienten - or) ie (ntens_ i'E // PB Orientens +// ie=>j@- TEST + 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 + or) ie (nt_ i'E // Den nære Orient + or) ie (nten_ i'E // Orienten + or) ie (ntens_ i'E // Orientens -// PB French words with final -ier +// French words with final -ier atel) ier j'e bank) ier j'e barbad) ier j'e @@ -4708,184 +4688,188 @@ particul) ier j'e spal) ier j'e // various exceptions - _) idel (_ i:D@l // PB idel - israel isrA:l // PB Israel - israeler isrA'elV // PB israelsk - israelsk isrA'elsk // PB - _d) israel (i isrA'el // PB name - irving WveN // PB name - smok) i (ng e // PB - sen) ior jV // PB + _) idel (_ i:D@l // idel + israel isrA:l // Israel + israeler isrA'elV // israelsk + israelsk isrA'elsk // + _d) israel (i isrA'el // name + irving WveN // name + smok) i (ng e // + sen) ior jV // iew j'u - _t) i (n e // PB tinfolie - t) i (nL11 i // PB Tina, Tine - b) ingo engo // PB - _m) id (t ?e // PB midt - silent d - i (mpo e // PB imponerende -special) i (st i // PB stålspecialist - gev) i (nst e // PB - f) i (nte_ e // PB - r) idge idZ // PB Coleridge, bridge - br) idget idZit // PB name - r) isik (e esik // PB risikere - r) isiko isiko // PB risiko - gl) i (m e // PB glimt, glimrende - l) i (nned e // PB - klin) i (k i // PB fødeklinik - unstressed after syllable - @t) i (k_++ i // PB ferieromantik, finanspolitik - best) i (k++ e // PB bestikke - bist) i (k++ e // PB -knivst) i (k e // PB -spadest) i (k e // PB -myggest) i (k e // PB -nålest) i (k+ e // PB - plast) i (L10 i // PB plastik/c -tændst) i (k+ e // PB -gudhjælpem) ig =aj // PB - i (owa aj // PB US state - t) i (ming aj // PB - n) i (tten e // PB the number 19 - problem with noun "nitte" - kl) i (k_ e // PB museklik - f) i (x e // PB fixe - L09) i (ks e // PB mikse, niks - L09) i (x e // PB Nixon - m) i (kstur i // PB - m) i (kler e // PB skvatmikler - p) i (lr e // PB pilrådden - l) i (ns e // PB linse - l) i (lla e // PB - t) ime (out ajm // PB - r) i (ley aj // PB name - s) i (d_ e // PB sid - s) i (lk e // PB silke - sl) i (k e // PB slik - impoten empotEn // PB impotens -_en_st) i (l_ i // PB stil - noun - _st) i (l_over_hende i // PB "der er stil over hende" - _st) i (l_over_ham i // PB - _st) i (l_over_deC i // PB "stil over" det/dem/deres - er_st) i (l_over_ i // PB "der er stil over" -var_st) i (l_over_ i // PB "der var stil over" -mere_st) i (l_over_ i // PB "der er mere stil over" -har_st) i (l_ i // PB -havde_st) i (l_ i // PB - best) i (l e // PB bestille - st) i (l_ham e // PB verb - stil ham om - st) i (l_op_ e // PB verb - ant) i i // PB antilope - sp) i (ld ?i // PB spilde - L08) i (le++ i // PB spile, stile - k) i (mse e // PB kimse - v) i (l_+ e // PB vil - hv) i (l+ i // PB hvil - nashv) ille el/2 // PB US city - hv) i (lk+ e // PB hvilken - v) ind (rue ind // PB - v) i (nter ?e // PB - v) i (ntre ?e // PB - v) id (st e // PB vidst - e and silent d - uv) i (s e // PB - v) i (st_ikke e // PB -// t) i (l e // PB til -projekt) i (l i // PB blyprojektiler - art) ille (ri il@ // PB artilleri - st) i (lfuld i // PB -// PB stil = "style" not the verb 'stil' = "put, place" -_min_st) i (l_ ?i // PB -_sin_st) i (l_ ?i // PB -_din_st) i (l_ ?i // PB -_jeres_st) i (l_ ?i // PB -_deres_st) i (l_ ?i // PB -_hans_st) i (l_ ?i // PB -_hendes_st) i (l_ ?i // PB -_med_st) i (l_ ?i // PB -_ny_st) i (l_ ?i // PB -_skifte_st) i (l_ ?i // PB -_skift_st) i (l_ ?i // PB -_skifter_st) i (l_ ?i // PB -_dansk_st) i (l ?i // PB - st) i (l_over ?i // PB "der er stil over ham" - _st) i (l_dem ?e // PB "stil dem derhenne" - _st) i (l_jer ?e // PB - _st) i (l_den ?e // PB - _st) i (l_mig ?e // PB - _st) i (l_os ?e // PB - _st) i (l_vores ?e // PB - Ast) i (l_ ?i // PB fægtestil, rokokkostil - st) i (lart i // PB -forest) i (l e // PB -livsst) i (l ?i // PB - st) i (lling++ e // PB livsstilling - vent) i (l ?i // PB slangeventil - ju) i (ce // PB juice - skip the i - soft) i (ce aj // PB softice - s) i (kC e // PB sikre - p) is (_ ?es // PB pis - L08) is (+ is // PB spis - l) igh (ter aj // PB -luksusl) i (ner aj // PB - n) ij (megen aj // PB Nijmegen - v) ie (tnam jE // PB - v) ie (t_cong jE // PB - hipp) ie i // PB silent e - p) ie (destal ?i // PB silent e - pav) ill (o ilj // PB pavillon - br) ill (ere ilj / PB brillere - d) i (sk e // PB købmandsdisk - d) i (skrepans i // PB - d) i (skva ?i // PB diskvalificere - d) i (skrimi ?i // PB diskriminere - d) i (skett ?i // PB diskette - d) i (sko ?i // PB diskotek, diskodans - d) i (sL10a ?i // PB diskant - ind) i (sk ?i // PB - jord) i (sk i // PB - tw) i (st e // PB - d) i (sku ?i // PB diskutere - d) i (skret ?i // PB - kr) i (cket e // PB - d) i (ngo e // PB - konf) i (skere ?i // PB + _t) i (n e // tinfolie + t) i (nL11 i // Tina, Tine + b) ingo engo // + _m) id (t ?e // midt - silent d + i (mpo e // imponerende +special) i (st i // stålspecialist + gev) i (nst e // + f) i (nte_ e // + r) idge idZ // Coleridge, bridge + br) idget idZit // name + r) isik (e esik // risikere + r) isiko isiko // risiko + gl) i (m e // glimt, glimrende + l) i (nned e // + klin) i (k i // fødeklinik - unstressed after syllable + @t) i (k_++ i // ferieromantik, finanspolitik + best) i (k++ e // bestikke + bist) i (k++ e // +knivst) i (k e // +spadest) i (k e // +myggest) i (k e // +nålest) i (k+ e // + plast) i (L10 i // plastik/c +tændst) i (k+ e // +gudhjælpem) ig =aI // + i (owa aI // US state + t) i (ming aI // + n) i (tten e // the number 19 - problem with noun "nitte" + kl) i (k_ e // museklik + f) i (x e // fixe + L09) i (ks e // mikse, niks + L09) i (x e // Nixon + m) i (kstur i // + m) i (kler e // skvatmikler + p) i (lr e // pilrådden + l) i (ns e // linse + l) i (lla e // + t) ime (out aIm // + r) i (ley aI // name + s) i (d_ e // sid + s) i (den_ ?i // siden + s) i (lk e // silke + sl) i (k e // slik + impoten empotEn // impotens +_en_st) i (l_ i // stil - noun + _st) i (l_over_hende i // "der er stil over hende" + _st) i (l_over_ham i // + _st) i (l_over_deC i // "stil over" det/dem/deres + er_st) i (l_over_ i // "der er stil over" +var_st) i (l_over_ i // "der var stil over" +mere_st) i (l_over_ i // "der er mere stil over" +har_st) i (l_ i // +havde_st) i (l_ i // + best) i (l e // bestille + st) i (l_ham e // verb - stil ham om + st) i (l_op_ e // verb + ant) i i // antilope + sp) i (ld ?i // spilde + L08) i (le++ i // spile, stile + k) i (mse e // kimse + v) i (l_+ e // vil + hv) i (l+ i // hvil + nashv) ille el/2 // US city + hv) i (lk+ e // hvilken + v) ind (rue ind // + v) i (nter ?e // + v) i (ntre ?e // + v) id (st e // vidst - e and silent d + uv) i (s e // + v) i (st_ikke e // +// t) i (l e // til +projekt) i (l i // blyprojektiler + art) ille (ri il@ // artilleri + st) i (lfuld i // +// stil = "style" not the verb 'stil' = "put, place" +_min_st) i (l_ ?i // +_sin_st) i (l_ ?i // +_din_st) i (l_ ?i // +_jeres_st) i (l_ ?i // +_deres_st) i (l_ ?i // +_hans_st) i (l_ ?i // +_hendes_st) i (l_ ?i // +_med_st) i (l_ ?i // +_ny_st) i (l_ ?i // +_skifte_st) i (l_ ?i // +_skift_st) i (l_ ?i // +_skifter_st) i (l_ ?i // +_dansk_st) i (l ?i // +_have_st) i (l ?i // +_havde_st) i (l ?i // +_har_st) i (l ?i // + st) i (l_over ?i // "der er stil over ham" + _st) i (l_dem ?e // "stil dem derhenne" + _st) i (l_jer ?e // + _st) i (l_den ?e // + _st) i (l_mig ?e // + _st) i (l_os ?e // + _st) i (l_vores ?e // + Ast) i (l_ ?i // fægtestil, rokokkostil + st) i (lart i // +forest) i (l e // +livsst) i (l ?i // + st) i (lling++ e // livsstilling + vent) i (l ?i // slangeventil + ju) i (ce // juice - skip the i + soft) i (ce aI // softice + s) i (kC e // sikre + p) is (_ ?es // pis + L08) is (+ is // spis + l) igh (ter aI // +luksusl) i (ner aI // + n) ij (megen aI // Nijmegen + v) ie (tnam jE // + v) ie (t_cong jE // + hipp) ie i // silent e + p) ie (destal ?i // silent e + pav) ill (o ilj // pavillon + br) ill (ere ilj // brillere + d) i (sk e // købmandsdisk + d) i (skrepans i // + d) i (skva ?i // diskvalificere + d) i (skrimi ?i // diskriminere + d) i (skett ?i // diskette + d) i (sko ?i // diskotek, diskodans + d) i (sL10a ?i // diskant + ind) i (sk ?i // + jord) i (sk i // + tw) i (st e // + d) i (sku ?i // diskutere + d) i (skret ?i // + kr) i (cket e // + d) i (ngo e // + konf) i (skere ?i // pr) i (n e // prins, princip, print - d) ie (sel ?i // PB dieselolie - k) io (sk jV // PB kiosk - _suz) ie i // PB name - _ann) ie i // PB name - _robb) ie i // PB name -_melan) ie i // PB name - d) ie (trich i // PB name - h) igh aj // PB high school - cl) ive ajv // PB name - gr) imes ajms // PB name - bl) ithe a:jD // PB name -new_york_t) imes ajms // PB - or) ion 'iVn // PB - lou) is i // PB name - silent s - lou) is (a 'is // PB - lou) isiana isj'&n& // PB US state - lou) is (e 'is // PB - lou) ie i // PB - lesl) ie i // PB name - ronn) ie i // PB name - el) i (as 'i // PB name - idaho ajd&h'ow // PB - ivanhoe ajv@nh'ow // PB name - long_) island ajl@nd // PB -amnesty_) international intVn'&Son&l // PB - v) irtual (_reality '3tSu-@l/2 // PB - p) inup en'Vp // PB - w) ire ajV // PB + d) ie (sel ?i // dieselolie + k) io (sk jV // kiosk + _suz) ie i // name + _ann) ie i // name + _robb) ie i // name +_melan) ie i // name + d) ie (trich i // name + h) igh aI // high school + cl) ive aIv // name + gr) imes aIms // name + bl) ithe a:jD // name +new_york_t) imes aIms // + or) ion 'iVn // + lou) is i // name - silent s + lou) is (a 'is // + lou) isiana isj'&n& // US state + lou) is (e 'is // + lou) ie i // + lesl) ie i // name + ronn) ie i // name + el) i (as 'i // name + idaho aid&h'ow // + ivanhoe aIv@nh'ow // name + long_) island aIl@nd // +amnesty_) international intVn'&Son&l // + v) irtual (_reality '3tSu-@l/2 // + p) inup en'Vp // + w) ire aIV // fl) ir (t W: -// PB stressed i in words with final -il in da_list +// stressed i in words with final -il in da_list &) il ($p_alt++++ 'il // pædofil, ventil - only one stress marker because of "ventilation" &past) il ($p_alt++++ 'el // pastil - pap) illot (+ il'Vt // PB + pap) illot (+ il'Vt // -// PB final -iker in da_list: stressed previous syllable +// final -iker in da_list: stressed previous syllable &) iker ($p_alt++ =ikV // akademiker, teoretiker - &) iker (et$p_alt++ =ik''e // PB fabrikeret - &br) iker (e$p_alt++ =ik''e // PB fabrikere + &) iker (et$p_alt++ =ik''e // fabrikeret + &br) iker (e$p_alt++ =ik''e // fabrikere &) iker (er$p_alt+ ik'e // kommunikerer &m) iker (e$p_alt++ =ikV // polemikere(n) &t) iker (e$p_alt+ =ikV // fanatikere @@ -4895,22 +4879,22 @@ amnesty_) international intVn'&Son&l // PB &kar) iker (e$p_alt+ ik'er // karikere (verb) &tr) iker (e$p_alt+ =ikV // elektriker - k) i (et+ 'i // PB Tyrkiet - bol) i (via 'i // PB stressed - kas) i (no 'i: // PB stressed -prosod) i 'i // PB prosodi, prosodien -_melod) i 'i // PB melodi -_parod) i 'i // PB parodi -_perfid) i 'i // PB perfidi -_rapsod) i 'i // PB rapsodi - værd) i 'i // PB - værd) ig i // PB -_abbed) i 'i // PB -_ortopæd) i 'i // PB ortopædi - swah) i (li 'i // PB stressed i -_hæmor) i (d 'i // PB hæmorider - _mil) i (ts 'i // PB stressed - henr) i (vende 'i PB stressed + k) i (et+ 'i // Tyrkiet + bol) i (via 'i // stressed + kas) i (no 'i: // stressed +prosod) i 'i // prosodi, prosodien +_melod) i 'i // melodi +_parod) i 'i // parodi +_perfid) i 'i // perfidi +_rapsod) i 'i // rapsodi + værd) i 'i // + værd) ig i // +_abbed) i 'i // +_ortopæd) i 'i // ortopædi + swah) i (li 'i // stressed i +_hæmor) i (d 'i // hæmorider + _mil) i (ts 'i // stressed + henr) i (vende 'i // stressed // stressed final i _akromegal) i 'i @@ -4929,7 +4913,7 @@ _staffel) i 'i _suffl) i 'i _zoofil) i 'i - // PB stressed final -pi + // stressed final -pi _autotyp) i 'i _bronkoskop) i 'i _daguerreotyp) i 'i @@ -4952,190 +4936,190 @@ _teleskop) i 'i _terap) i 'i _utop) i 'i -// PB stressed i in words with final -si in da_list +// stressed i in words with final -si in da_list &s) i ($p_alt 'i // fantasi, afasi -// v) i (sk e // PB viskelæder - _t) i (ske_ e // PB hviske og tiske - v) i (sne e // PB +// 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 // PB rigtigt - short vowel - override ph_danish -offentl) ig i // PB + r) i (gti ?e // rigtigt - short vowel - override ph_danish +offentl) ig i // as) i (e j t) i (øs s) i (on j - s) i (ar j' // PB passiar - c) i (a j // PB specialitet + s) i (ar j' // passiar + c) i (a j // specialitet des) ign ain - s) ign (al in // PB lyssignal + s) ign (al in // lyssignal ingen) i (ør - ant) igone 'igon@ // PB Antigone - Greek name + ant) igone 'igon@ // Antigone - Greek name image imidZ - _) institution enstituS'on // PB - institution enstituSon // PB + _) institution enstituS'on // + institution enstituSon // -// PB stressed i -mussol) i (ni 'i // PB - _præc) i (s 'i // PB stressed - _konc) i (s 'i // PB stressed - _av) i (s 'i // PB stressed -_krucif) i (ks 'i // PB stressed - _grav) i (d 'i // PB stressed +// stressed i +mussol) i (ni 'i // + _præc) i (s 'i // stressed + _konc) i (s 'i // stressed + _av) i (s 'i // stressed +_krucif) i (ks 'i // stressed + _grav) i (d 'i // stressed _test) i (kel 'i // PM stressed _test) i (kl 'i // PM plur. stressed -_molev) i (t 'i // PB stressed - molevitten -_marskand) i (s 'i // PB stressed - marskandiser -_princ) i (p 'i // PB stressed - _cyl) i (nd 'e // PB cylinder - stressed - fil) i (st 'i // PB filister - _el) i (te ''i // PB stressed - elitesoldat - _salv) ie 'i: // PB stressed - sort) ie (_ 'i // PB stressed, silent e - sort) i (e 'i // PB stressed sortien - _ol) i (ven 'i // PB stressed - _ol) i (via 'i PB name - stressed - _int) i (m 'i // PB -_legit) i (m 'i // PB stressed -_algor) i (tme 'i // PB stressed - _utop) i 'i // PB stressed -brintover) i (lte 'i // PB stressed - kam) i (lle 'i // PB stressed - mar) i (a 'i // PB stressed - dom) ing (o 'eng // PB stressed Santa Domingo - _rem) i (s 'i // PB stressed - remis, remise -kampan) i (le 'i // PB stressed -_ekspert) i (se ''i // PB -_entrepr) i (se 'i // PB - _mark) i (se 'i // PB -_muffed) i (se 'i // PB - _repr) i (se 'i // PB -_astero) i (de 'i // PB - rem) is (_ 'i // PB silent s (chess) - _mess) i (as 'i // PB - _mart) i (ni 'i // PB cocktail - _alb) i (no 'i // PB stressed - nuskr) i (pt 'E // PB stressed - manuskript - L10am) i (lla 'i // PB Camilla, Kamilla - _alib) i 'i // PB alibi - _fob) i 'i // PB fobi -_konfl) i (kt 'i // PB stressed - _pap) i (r 'i // PB stressed - _tap) i (r 'i // PB stressed - _vels) i (gn 'i // PB stressed - _part) i (sk 'i // PB stressed - tah) i (ti 'i // PB - _just) i (ts 'i // PB - im) i (dlertid 'i // PB - _kul) i (ss 'i // PB kulisse - _abs) i (nt 'e // PB stressed - _musl) i (m 'i // PB stressed - _mag) i (_ 'i // PB magi - stressed i - _mag) i (en_ 'i // PB magien - stressed i -_polit) i 'i // PB politi, politik - stressed i - _civ) i (l 'i // PB stressed - civil - all) igevel 'i@vEl // PB stressed i - alligevel - _band) i (t 'i // PB bandit - _vedl) ige 'i@ // PB vedligeholde -dispon) i (bel 'i // PB stressed - eksig) i (bel 'i // PB stressed - fleks) i (bel 'i // PB stressed - fung) i (bel 'i // PB stressed - horr) i (bel 'i // PB stressed -irrevers) i (bel 'i // PB stressed -kompat) i (bel 'i // PB stressed - _inst) i (nkt 'e // PB -konvert) i (bel 'i // PB stressed - pen) i (bel 'i // PB stressed -perfekt) i (bel 'i // PB stressed - plaus) i (bel 'i // PB stressed -revers) i (bel 'i // PB stressed - sens) i (bel 'i // PB stressed -suggest) i (bel 'i // PB stressed - vis) i (bel 'i // PB stressed -_pyram) i (d 'i // PB pyramide - _medl) i (denhed 'i // PB medlidenhed - stressed - _omkr) i (ng ''e // PB stressed e in 'omkring' -_tyver) i 'i // PB stressed - kn) i (v i // PB kniv - _min) i (ster 'i // PB minister - stressed i - _mag) i (ster 'i // PB magister- stressed - _re) i (ster 'i // PB register - stressed ii -_distr) i (kt 'e // PB stressed - am) i (go 'i // PB amigo - magas) i 'i // PB magasin - _kap) i (tel 'i // PB stressed - _kap) i (tl 'i // PB kapitlet - stressed - _mask) i (n 'i // PB stressed - maskinskrive - asp) i (c 'i // PB aspic - only this word -_krokod) i (ll 'i // PB stressed - _sol) i (d 'i // PB solid - labyr) i (nt 'e // PB stressed - par) i (s 'i // PB - wal) i (s 'i // PB waliser -portug) i (s 'i // PB portugiser - kirg) i (s 'i // PB kirgiser - ryk) i (nd 'e // PB stressed - _art) i (k 'i // PB stressed - artikkel -_franc) i (sco 'i // PB -benzedr) i (n 'i // PB -_ekserc) i (ts 'i // PB - madr) i (d 'i // PB stressed - aspir) i (n 'i // PB stressed -ampicill) i (n 'i // PB stressed -valent) i (no ''i // PB name - _sus) ie i // PB name -michel) in EN // PB Michelinguide - houd) i (ni 'i // PB name - _) iron (_ ajVn // PB +_molev) i (t 'i // stressed - molevitten +_marskand) i (s 'i // stressed - marskandiser +_princ) i (p 'i // stressed + _cyl) i (nd 'e // cylinder - stressed + fil) i (st 'i // filister + _el) i (te ''i // stressed - elitesoldat + _salv) ie 'i: // stressed + sort) ie (_ 'i // stressed, silent e + sort) i (e 'i // stressed sortien + _ol) i (ven 'i // stressed + _ol) i (via 'i // name - stressed + _int) i (m 'i // +_legit) i (m 'i // stressed +_algor) i (tme 'i // stressed + _utop) i 'i // stressed +brintover) i (lte 'i // stressed + kam) i (lle 'i // stressed + mar) i (a 'i // stressed + dom) ing (o 'eng // stressed Santa Domingo + _rem) i (s 'i // stressed - remis, remise +kampan) i (le 'i // stressed +_ekspert) i (se ''i // +_entrepr) i (se 'i // + _mark) i (se 'i // +_muffed) i (se 'i // + _repr) i (se 'i // +_astero) i (de 'i // + rem) is (_ 'i // silent s (chess) + _mess) i (as 'i // + _mart) i (ni 'i // cocktail + _alb) i (no 'i // stressed + nuskr) i (pt 'E // stressed - manuskript + L10am) i (lla 'i // Camilla, Kamilla + _alib) i 'i // alibi + _fob) i 'i // fobi +_konfl) i (kt 'i // stressed + _pap) i (r 'i // stressed + _tap) i (r 'i // stressed + _vels) i (gn 'i // stressed + _part) i (sk 'i // stressed + tah) i (ti 'i // + _just) i (ts 'i // + im) i (dlertid 'i // + _kul) i (ss 'i // kulisse + _abs) i (nt 'e // stressed + _musl) i (m 'i // stressed + _mag) i (_ 'i // magi - stressed i + _mag) i (en_ 'i // magien - stressed i +_polit) i 'i // politi, politik - stressed i + _civ) i (l 'i // stressed - civil + all) igevel 'i@vEl // stressed i - alligevel + _band) i (t 'i // bandit + _vedl) ige 'i@ // vedligeholde +dispon) i (bel 'i // stressed + eksig) i (bel 'i // stressed + fleks) i (bel 'i // stressed + fung) i (bel 'i // stressed + horr) i (bel 'i // stressed +irrevers) i (bel 'i // stressed +kompat) i (bel 'i // stressed + _inst) i (nkt 'e // +konvert) i (bel 'i // stressed + pen) i (bel 'i // stressed +perfekt) i (bel 'i // stressed + plaus) i (bel 'i // stressed +revers) i (bel 'i // stressed + sens) i (bel 'i // stressed +suggest) i (bel 'i // stressed + vis) i (bel 'i // stressed +_pyram) i (d 'i // pyramide + _medl) i (denhed 'i // medlidenhed - stressed + _omkr) i (ng ''e // stressed e in 'omkring' +_tyver) i 'i // stressed + kn) i (v i // kniv + _min) i (ster 'i // minister - stressed i + _mag) i (ster 'i // magister- stressed + _re) i (ster 'i // register - stressed ii +_distr) i (kt 'e // stressed + am) i (go 'i // amigo + magas) i 'i // magasin + _kap) i (tel 'i // stressed + _kap) i (tl 'i // kapitlet - stressed + _mask) i (n 'i // stressed - maskinskrive + asp) i (c 'i // aspic - only this word +_krokod) i (ll 'i // stressed + _sol) i (d 'i // solid + labyr) i (nt 'e // stressed + par) i (s 'i // + wal) i (s 'i // waliser +portug) i (s 'i // portugiser + kirg) i (s 'i // kirgiser + ryk) i (nd 'e // stressed + _art) i (k 'i // stressed - artikkel +_franc) i (sco 'i // +benzedr) i (n 'i // +_ekserc) i (ts 'i // + madr) i (d 'i // stressed + aspir) i (n 'i // stressed +ampicill) i (n 'i // stressed +valent) i (no ''i // name + _sus) ie i // name +michel) in EN // Michelinguide + houd) i (ni 'i // name + _) iron (_ aIVn // .group ig -// PB general rule: final -ig [i] - silent g +// general rule: final -ig [i] - silent g ig (_ i // dejlig, rig - @) igt (_ it // PB dejligt + @) igt (_ it // dejligt // exceptions - ops) ig (t+ eg // PB opsigt - pl) ig (t+ eg // PB tavshedspligt - sv) ig (t+ ?eg // PB strømsvigt - _b) ig (_ eg // PB Big Ben + ops) ig (t+ eg // opsigt + pl) ig (t+ eg // tavshedspligt + sv) ig (t+ ?eg // strømsvigt + _b) ig (_ eg // Big Ben trods) ig i puds) ig i hids) ig i smuds) ig i - stad) ig i // PB stadigvæk - ns) ig (t+ eg // PB ansigt - døgen) igt ikt // PB + stad) ig i // stadigvæk + ns) ig (t+ eg // ansigt + døgen) igt ikt // puds) ig (t i // pudsigt - ds) ig (t+ eg // PB indsigt, udsigt - _d) ig (t eg // PB - d) ig (te eg // PB kærlighedsdigte -helted) ig (t eg // PB - eddad) ig (t eg // PB -haikud) ig (t eg // PB -prosad) ig (t eg // PB -smæded) ig (t eg // PB -skæmted) ig (t eg // PB - opd) ig (t eg // PB - sn) ig ij // PB snigangreb - fatt) ig i // PB fattigdom - udk) ig ig // PB - p) ig (_ ik // PB - _l) ig (_stille ek // PB problem: lig = "dead body" and lig = the verb "lie" - _l) ig (_pænt ek // PB - _l) ig (_ordentligt ek // PB - _l) ig (_godt ek // PB - _l) ig (_roligt ek // PB - l) ight ajt // PB - m) ighty ajti // PB - fr) igea (r igi // PB frigear - ig (hed+ i // PB vittighed, evighed - _k) ig (_ ig // PB kig - l) ig (ram ig // PB milligram - l) ig (a++ ig // PB liga, obligat - ig (s i // PB silent g -rigsret - n) igger egV // PB nigger + ds) ig (t+ eg // indsigt, udsigt + _d) ig (t eg // + d) ig (te eg // kærlighedsdigte +helted) ig (t eg // + eddad) ig (t eg // +haikud) ig (t eg // +prosad) ig (t eg // +smæded) ig (t eg // +skæmted) ig (t eg // + opd) ig (t eg // + sn) ig ij // snigangreb + fatt) ig i // fattigdom + udk) ig ig // + p) ig (_ ik // + _l) ig (_stille ek // problem: lig = "dead body" and lig = the verb "lie" + _l) ig (_pænt ek // + _l) ig (_ordentligt ek // + _l) ig (_godt ek // + _l) ig (_roligt ek // + l) ight aIt // + m) ighty aIti // + fr) igea (r igi // frigear + ig (hed+ i // vittighed, evighed + _k) ig (_ ig // kig + l) ig (ram ig // milligram + l) ig (a++ ig // liga, obligat + ig (s i // silent g -rigsret + n) igger egV // nigger -// PB stress on previous syllable - around 400 words in da_list +// stress on previous syllable - around 400 words in da_list // -ig words with the prefix be- are handled by group b - the be- rule. // To keep the list short a large number of u- words were weeded out, // therefore u- is removed in group u before the word is translated @@ -5143,84 +5127,84 @@ skæmted) ig (t eg // PB // Any other syllable before the word reverts to normal stress &) ig ($p_alt++ =i // velærværdig, gudvelbehagelig - ige (++ i@- // PB pige, pigen, stige, sige, lige, berolige - iget (+ i@-D // PB beroliget - volt) ige 'i:S // PB - s) ige (++ i@- // PB sigende - iger (++ iV // PB piger, afskediger + ige (++ i@- // pige, pigen, stige, sige, lige, berolige + iget (+ i@-D // beroliget + volt) ige 'i:S // + s) ige (++ i@- // sigende + iger (++ iV // piger, afskediger _s) iger (_ i:r - p) igen (+ i@-n // PB pigen -gensid) ig i // PB - n) ige (ri ige // PB nigerianer - dir) ig (ent ig // PB - er) ige (re ig'e // PB erigeret - _n) iger (_ igV // PB Niger (river) -privil) ige ig'e // PB priviligeret - n) igeria ig'eRi& // PB - dil) igen (ce iS'AN // PB diligence + p) igen (+ i@-n // pigen +gensid) ig i // + n) ige (ri ige // nigerianer + dir) ig (ent ig // + er) ige (re ig'e // erigeret + _n) iger (_ igV // Niger (river) +privil) ige ig'e // priviligeret + n) igeria ig'eRi& // + dil) igen (ce iS'AN // diligence kr) igs is -// rol) ige iE // PB rolige, beroligende - rol) iger iV // PB beroliger - værd) ig (enstand 'ig // PB værdigenstand - yd) ig i // PB tvetydigt, lydig -behænd) ig i // PB silent g - sned) ig i // PB silent g - ld) ig i // PB heldig +// rol) ige iE // rolige, beroligende + rol) iger iV // beroliger + værd) ig (enstand 'ig // værdigenstand + yd) ig i // tvetydigt, lydig +behænd) ig i // silent g + sned) ig i // silent g + ld) ig i // heldig -// PB stressed e after -ig - red) ige (r ig'e // PB redigere - rr) ige (r ig'e // PB korrigere - nav) ige (r ig'e // PB navigere - dir) ige (r ig'e // PB dirigere -intell) ige (n ig'e // PB intelligent - ige (n_+ ig'E // PB igen, igennem, herigennem - ige (nn+ ig'E // PB igennem, herigennem - f) igen i@-n // PB fruit - sn) ige (+ i@- // PB - bol) ig (+ i // PB boligen - intr) ig (+ 'i // PB intrigen, intriger - silent g - d) ige (nde i@- // PB nedværdigende - v) ige (n i@- // PB vigen, mundvigen - st) ige (+ i@- // PB rangstigen - l) ig (ene i@- // PB ligene - l) igg (e++ ?eg // PB - kr) ige (n i@- // PB +// stressed e after -ig + red) ige (r ig'e // redigere + rr) ige (r ig'e // korrigere + nav) ige (r ig'e // navigere + dir) ige (r ig'e // dirigere +intell) ige (n ig'e // intelligent + ige (n_+ ig'E // igen, igennem, herigennem + ige (nn+ ig'?E // igennem, herigennem + f) igen i@-n // fruit + sn) ige (+ i@- // + bol) ig (+ i // boligen + intr) ig (+ 'i // intrigen, intriger - silent g + d) ige (nde i@- // nedværdigende + v) ige (n i@- // vigen, mundvigen + st) ige (+ i@- // rangstigen + l) ig (ene i@- // ligene + l) igg (e++ ?eg // + kr) ige (n i@- // .group in -// PB words ending with "ine" in da_list with $alt - stressed i +// words ending with "ine" in da_list with $alt - stressed i &) ine ($p_alt 'in3 // lavine &) ine (tryk$p_alt 'in@ // kabinetryk &) ine (r$p_alt 'inV // maskiner &) ine (re$p_alt in'e // vaccinere -// PB not the same word as "kabine" +// not the same word as "kabine" kab) ine (t in'E // kabinet -// PB words ending with "in" in da_list with $alt - stressed i +// words ending with "in" in da_list with $alt - stressed i @) in ($p_alt+ '?in // baldakin, bekkasin, appelsin &) in (ar$p_alt in' // disciplinarmiddel &ass) in ($p_alt 'EN // bassin &at) in ($p_alt 'EN // satin &lat) in ($p_alt '?in // latin -byzant) in '?in // PB byzantinsk - vel) in (formeret en // PB - ind (hold en // PB klorindhold +byzant) in '?in // byzantinsk + vel) in (formeret en // + ind (hold en // klorindhold .group is -// PB words ending with -ist in da_list with $alt - stressed i +// words ending with -ist in da_list with $alt - stressed i &) ist ($p_alt+++ ''ist // bassist, specialist &) ist (ik$p_alt ist' // journalistik &) istike (re istik'e // sofistikeret, sofistikerede .group it -// PB words with final -it - stressed i - &) it ($p_alt '?it //PB bakelit - &) it (an$p_alt it' //PB samaritan - &) ition ($p_alt iS'on //PB definition - &) it (t$p_alt '?i //PB avoid double t - bakelitten [ b,ak@l'it@-n] +// words with final -it - stressed i + &) it ($p_alt '?it // bakelit + &) 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 - // PB stressed final -iv + // stressed final -iv _abort) iv 'iv _adapt) iv 'iv _adhæs) iv 'iv @@ -5246,552 +5230,555 @@ _perspekt) iv 'iv _regulat) iv 'iv _sport) iv 'iv _stat) iv 'iw +_adopt) iv 'iw .group j j j j (aw dZ - fi) j (i dZ // PB + fi) j (i dZ // ja (ck dZ& - _) jarvis dZA:ves // PB name - jitterbug dZidVbVg // PB - jingle dZeng3l // PB - jewel dZu:l // PB - jihad dZih'&t // PB - j (ennifer dZ // PB name - jenny dZEni // PB name - janey dZEjni // PB name - jennie dZEni // PB name - joy dZVj // PB joystick - _) josh dZVS // PB name - ja (mal dZ& // PB name - jerry dZeri // PB - jekyll dZek@-l // PB name dr. Jekyll - junction dZVnkS@n // PB - jamie dZEjmi // PB name - jerome Ser'om // PB name - French version - jacques Zak // PB name - French version - _) jolene dZOwl'i:n // PB name - joule dZu:l // PB - jambalaya dZAmb&l'aj& // PB - _) jake dZEjk // PB name + _) jarvis dZA:ves // name + jitterbug dZidVbVg // + jingle dZeng3l // + jewel dZu:l // + jihad dZih'&t // + j (ennifer dZ // name + jenny dZEni // name + janey dZEjni // name + jennie dZEni // name + joy dZVj // joystick + _) josh dZVS // name + ja (mal dZ& // name + jerry dZeri // + jekyll dZek@-l // name dr. Jekyll + junction dZVnkS@n // + jamie dZEjmi // name + jerome Ser'om // name - French version + jacques Zak // name - French version + _) jolene dZOwl'i:n // name + joule dZu:l // + jambalaya dZAmb&l'aI& // + _) jake dZEjk // name _) jakel j&k@l // PM mester Jakel - _) jill dZIl // PB name + _) jill dZIl // name j (ob dZ john dZVn - johnny dZVni // PB name + johnny dZVni // name joe dZ0w - jackie dZ&ki // PB - jones dZ0wns // PB - junkie dZVnki // PB - j (unk dZ // PB junkaktie - j (unkt j // PB junktur, konjunktion - jo (ckey dZV // PB - _) ji (m_ dZI // PB - _) ji (ms_ dZI // PB - jimmy dZImi // PB - jimmie dZImi // PB - _) j (eff dZ // PB - j (azz dZ // PB - nava) j (o h // PB - _) je (t dZE // PB jetfly - firma) je (t dZE // PB - jumbo) je (t dZE // PB - ø) j (et j // PB øjet, overtøjet - j (ungl dZ // PB jungle - _) jersey (_ dZW:si // PB New Jersey - _) jersey (s_ dZW:si // PB New Jerseys - jersey (k jErsi // PB jerseyko - jeep dZi:b // PB Jeep (American car) - _) juan Su'AN // PB don juan - joke dZWwk // PB joke, joker - derh) j (emme 'j // PB stressed j - en) j (ambe S // PB enjambement + jackie dZ&ki // + jones dZ0wns // + junkie dZVnki // + j (unk dZ // junkaktie + j (unkt j // junktur, konjunktion + jo (ckey dZV // + _) ji (m_ dZI // + _) ji (ms_ dZI // + jimmy dZImi // + jimmie dZImi // + _) j (eff dZ // + j (azz dZ // + nava) j (o h // + _) je (t dZE // jetfly + firma) je (t dZE // + jumbo) je (t dZE // + ø) j (et j // øjet, overtøjet + j (ungl dZ // jungle + _) jersey (_ dZW:si // New Jersey + _) jersey (s_ dZW:si // New Jerseys + jersey (k jErsi // jerseyko + jeep dZi:b // Jeep (American car) + _) juan Su'AN // don juan + joke dZWwk // joke, joker + derh) j (emme 'j // stressed j + en) j (ambe S // enjambement ro) j (ekt S // projekt a) j (ou S' // ajour - j (asmin S // PB - j (ongl S // PB jonglør - j (ournal S // PB journal - ma) j (or j' // PB major - j (uice dZ //PB juice - juke (boks dZu:k // PB jukeboks - _) jer (_ jEr // PB jer - er swallowed by other rules - jamsession dj&:ms'eSj@n // PB - jardiniere SjArdinj'E:r // PB jardiniere - jeton Sjet'VN // PB - jargon SjArg'VN // PB - janeiro Sen'Ero // PB - jugere SyS'eV // PB - _) jalousi S&lus'i // PB jalousi - @) jalousi S&lusi // PB magtjalousi - jamaica S&m'ajk& // PB - joint dZVjnt // PB - _) james dZEjms // PB - jay dZEj // PB name - jess dZEs // PB Jess - jessie dZEsi // PB Jessie - jean dZi:n // PB Jean, jeans - jeanne dZi:n // PB name (English) - jea (nette S&' // PB name (Danish) - nin) j (a dZ // PB - jeanne (_d' %S&:n // PB Jeanne D'Arc - jeanot S&n'o // PB name - jaubert Sob'Er // PB name - jehova jeh'ov& // PB + j (asmin S // + j (ongl S // jonglør + j (ournal S // journal + ma) j (or j' // major + j (uice dZ // juice + juke (boks dZu:k // jukeboks + _) jer (_ jEr // jer - er swallowed by other rules + jamsession dj&:ms'eSj@n // + jardiniere SjArdinj'E:r // jardiniere + jeton Sjet'VN // + jargon SjArg'VN // + janeiro Sen'Ero // + jugere SyS'eV // + _) jalousi S&lus'i // jalousi + @) jalousi S&lusi // magtjalousi + jamaica S&m'aIk& // + joint dZVjnt // + _) james dZEjms // + jay dZEj // name + jess dZEs // Jess + jessie dZEsi // Jessie + jean dZi:n // Jean, jeans + jeanne dZi:n // name (English) + jea (nette S&' // name (Danish) + nin) j (a dZ // + jeanne (_d' %S&:n // Jeanne D'Arc + jeanot S&n'o // name + jaubert Sob'Er // name + jehova jeh'ov& // .group k k k - kk g // PB bækkenet [b'?Eg@n@-D] - kanterel kant@r'&#l // PB - kumquat kVmkwVd // PB - kakerla (k kak@l'a // PB - &) kvarter kvarter // PB kommandokvarter - klos (_hold klVs // PB på klos hold + kk g // bækkenet [b'?Eg@n@-D] + s) k g // skrive + kanterel kant@r'&#l // + kumquat kVmkwVd // + kakerla (k kak@l'a // + &) kvarter kvarter // kommandokvarter + klos (_hold klVs // på klos hold _spe) k (takk ' // silent k, stresssed a - spektakkel _spe) k (takl ' // silent k, stressed a - spektakler spe) k (takk // silent k - spektakkel spe) k (takl // silent k - spektakler &) k k // after stressed vowel - _) kate (_ kEjt // PB name - karaoke k&r&'ouki // PB - krysantemum krYs'&nt@mOm // PB - krysantemumm krYs'&nt@mOm // PB - kontinuum kVnt'inuOm // PB - knight nAjt // PB name - knox nVgs // PB Fort Knox - knock nVk // PB knockout - the_) kid ked // PB Billy the Kid - keith ki:T // PB name - kilimanjaro kilim&ndZ'Aro // PB - _) kermit kW:met // PB Muppet name + _) kate (_ kEjt // name + karaoke k&r&'ouki // + krysantemum krYs'&nt@mOm // + krysantemumm krYs'&nt@mOm // + kontinuum kVnt'inuOm // + knight nAjt // name + knox nVgs // Fort Knox + knock nVk // knockout + the_) kid ked // Billy the Kid + keith ki:T // name + kilimanjaro kilim&ndZ'Aro // + _) kermit kW:met // Muppet name -.group l // PB l changed to l/3 in ph_danish +.group l // l changed to l/3 in ph_danish l l ll l - _a) llende lj'End3 // PB name - a) lli (er lj // PB allieret - a) li (e lj // PB italiener TEST + _a) llende lj'End3 // name + a) lli (er lj // allieret + a) li (e lj // italiener TEST -// PB nouns in da_list with final -log - stressed o +// nouns in da_list with final -log - stressed o // A lot of these can have a stressed i added (-gi rule in group g) &) log ($p_alt l'o // nekrolog (silent g) // not a silent g followed by i &) log (i$p_alt log' // mytologi &) log (isk$p_alt l'o // psykologisk -// PB nouns in da_list with final -let - stressed e +// nouns in da_list with final -let - stressed e &) let ($p_alt l'?Et // amulet &) lett ($p_alt l'?Et // amuletter &) let (t$p_alt l'?E // avoid double t - toilettet -cabrio) let l'E // PB silent t -fiskefi) let le // PB silent t -søtungefi) let le // PB silent t -oksefi) let le // PB silent t -stegsfi) let le // PB silent t - tykstegsfilet -spættefi) let le // PB silent t - rødspættefilet -skrubbefi) let le // PB silent t -svinefi) let le // PB silent t -lammefi) let le // PB silent t -kyllingefi) let le // PB silent t -dyrefi) let le // PB silent t -hjortefi) let le // PB silent t -hestefi) let le // PB silent t +cabrio) let l'E // silent t +fiskefi) let le // silent t +søtungefi) let le // silent t +oksefi) let le // silent t +stegsfi) let le // silent t - tykstegsfilet +spættefi) let le // silent t - rødspættefilet +skrubbefi) let le // silent t +svinefi) let le // silent t +lammefi) let le // silent t +kyllingefi) let le // silent t +dyrefi) let le // silent t +hjortefi) let le // silent t +hestefi) let le // silent t - s) l l/2 // PB add a bit more to l after s - f) l l/2 // PB add a bit more to l after f - b) l l/2 // PB add a bit more to l after b - &) ld (er l // PB silent d - anmelder - sø) lv l // PB silent v - to) lv l // PB silent v - se) lv l // PB selv, selvfølgelig, selvhjælp - se) lve lv3 // PB selve, selvet +// s) l l/2 // add a bit more to l after s +// f) l l/2 // add a bit more to l after f +// b) l l/2 // add a bit more to l after b + &) ld (er l // silent d - anmelder + sø) lv l // silent v + to) lv l // silent v + se) lv l // selv, selvfølgelig, selvhjælp + se) lve lv3 // selve, selvet bo) ld ld so) ld (at ld - leg (_ laI // PB leg, kysseleg, ligbleg - leger (_ lajV // PB leger - lege (ring leg'e // PB stressed - _o) leg lEg // PB name - læg (præd lEj // PB lægprædikant - k) læg lEj // PB - legem (C lEj@m // PB legemsdel - lotion l3uSjn // PB håndlotion - lorraine loRE:n // PB name - lizzie lisi // PB name - larry l/2&*i // PB name - leavenworth lEv@nwW:3T // PB - labour lEjbV // PB British party - bi) llard liard // PB game - he) lg (e lj // PB Helge, helgen - lincoln lenkVl/2n // PB name - _) lee (_ li: // PB the name Lee - mar) lee (n l'i: // PB name - _) leed (s li:d // PB city - @) levere leveV // PB - ley li // PB volley - long (_island lVN // PB - little led@l // PB Little Big Horn - lounge lawndZ // PB British word - _) lady lEjdi // PB - jern) lady lEjdi // PB - g) ladys l&dis // PB name - mac_) leod l'awd // PB MacLeod - name - lucky lVki // PB Lucky Strike - _) lake (_ lEjk // PB Salt Lake - lloyd lVjd // PB name - limoges lim'o:Z // PB - livingstone leveNst,3:wn // PB name - leicester lEstV // PB name - ludlow lVdlow // PB name - lautrec lotr'Ek // PB name - _) lionel lae3nEl // PB name - _marp) le @l // PB name - skiff) le @l // PB skifflegruppe + leg (_ laI // leg, kysseleg, ligbleg + leger (_ laIV // leger + lege (ring leg'e // stressed + _o) leg lEg // name + læg (præd lEj // lægprædikant + k) læg lEj // + legem (C lEj@m // legemsdel + lotion l3uSjn // håndlotion + lorraine loRE:n // name + lizzie lisi // name + larry l/2&*i // name + leavenworth lEv@nwW:3T // + labour lEjbV // British party + bi) llard liard // game + he) lg (e lj // Helge, helgen + lincoln lenkVl/2n // name + _) lee (_ li: // the name Lee + mar) lee (n l'i: // name + _) leed (s li:d // city + @) levere leveV // + ley li // volley + long (_island lVN // + little led@l // Little Big Horn + lounge lawndZ // British word + _) lady lEjdi // + jern) lady lEjdi // + g) ladys l&dis // name + mac_) leod l'awd // MacLeod - name + lucky lVki // Lucky Strike + _) lake (_ lEjk // Salt Lake + lloyd lVjd // name + limoges lim'o:Z // + livingstone leveNst,3:wn // name + leicester lEstV // name + ludlow lVdlow // name + lautrec lotr'Ek // name + _) lionel lae3nEl // name + _marp) le @l // name + skiff) le @l // skifflegruppe .group m - m m // PB m? -> m + m m // m? -> m mm m - o) mm (øble m||m // PB ommøblere - melle) mm m|m // PB mellemmåltid - mm (assage m|m // PB lemmassage + o) mm (øble m||m // ommøblere + melle) mm m|m // mellemmåltid + mm (assage m|m // lemmassage // m (A m - gour) mand %mAN // PB gourmand - _gour) mand m''AN // PB gourment - _) mannequin m&n@-k'EN // PB - mannequin m&n@-kEN // PB - _) mere (_ mer // PB mere - matine m&tin'e // PB - _) meget (_ ma:j@D // PB meget - _) megen (_ ma:j@n // PB megen - _) medea med'E:& // PB Medea - montgomery mVndg'Vmri // PB - mareridt mA:@rit // PB - _) mc (C@ m&k // PB McDonald - musketer musget'er // PB musketer - milkshake melkSEjk // PB - _) mike (_ majk // PB Mike - _) mike (s_ majk // PB Mikes - mail mEjl // PB - e_) mail %mEjl // PB don't put stress on "mail" + gour) mand %mAN // gourmand + _gour) mand m''AN // gourment + _) mannequin m&n@-k'EN // + mannequin m&n@-kEN // + _) mere (_ mer // mere + matine m&tin'e // + _) meget (_ ma:j@D // meget + _) megen (_ ma:j@n // megen + _) medea med'E:& // Medea + montgomery mVndg'Vmri // + mareridt mA:@rit // + _) mc (C@ m&k // McDonald + musketer musget'er // musketer + milkshake melkSEjk // + _) mike (_ maIk // Mike + _) mike (s_ maIk // Mikes + mail mEjl // + e_) mail %mEjl // don't put stress on "mail" montre mO:ntrV - mayday mEjdE:j // PB - miami m&j'&:mi // PB - milwaukee melw'Oki // PB - machete m&S'Ed // PB - miguel _^_ES // PB - madero _^_ES // PB - money mVni // PB - makeu (p mEjk'V // PB - _) matild m&t'ild // PB Matilde, Matilda - madagaskar m&d&g'&sk& // PB - marilyn m&rilen // PB - _) maine mEjn // PB US state - murdoch mWdVk // PB name - melbourne mEl/2bWn // PB city - monroe mVnr'Ow // PB name - matthew m&Tju // PB name - murphy mWfi // PB name - murray mVri // PB name - molyneux mVlinju: // PB name - michelle miS'El // PB name - murphey mWfi // PB name - maurice mor'is // PB name - maupassant mop&s'AN // PB name - murph mWf // PB nickname - marjorie mAdZOri // PB name - montpellier _^_fr // PB - mpson msVn // PB Thompson + mayday mEjdE:j // + miami maI'&mi // + milwaukee melw'Oki // + machete m&S'Ed // + miguel _^_ES // + madero _^_ES // + money mVni // + makeu (p mEjk'V // + _) matild m&t'ild // Matilde, Matilda + madagaskar m&d&g'&sk& // + marilyn m&rilen // + _) maine mEjn // US state + murdoch mWdVk // name + melbourne mEl/2bWn // city + monroe mVnr'Ow // name + matthew m&Tju // name + murphy mWfi // name + murray mVri // name + molyneux mVlinju: // name + michelle miS'El // name + murphey mWfi // name + maurice mor'is // name + maupassant mop&s'AN // name + murph mWf // nickname + marjorie mAdZOri // name + montpellier _^_fr // + mpson msVn // Thompson marseille maRs'E:j - musical mju:sik3l // PB - mahogni m&h'oni // PB - manager m&nedZV // PB - moulin mul'&N // PB Moulin Rouge - _) mouse maws // PB Mickey Mouse - makaroni mak3r'Vni // PB - midnight mednajt // PB -single_) malt mOlt // PB whisky - massachusetts m&s&tj'usEts // PB - _) muppet mVpet // PB - mother mVDV // PB + musical mju:sik3l // + mahogni m&h'oni // + manager m&nedZV // + moulin mul'&N // Moulin Rouge + _) mouse maws // Mickey Mouse + makaroni mak3r'Vni // + midnight mednaIt // +single_) malt mOlt // whisky + massachusetts m&s&tj'usEts // + _) muppet mVpet // + mother mVDV // .group me -// PB General rule for words with -ment - &) ment m'ent // PB element, segment +// General rule for words with -ment + &) ment m'ent // element, segment -// PB exceptions for the -ment rule (French words) -arrange) ment mAN // PB arrangement -avance) ment mAN // PB avancement -avertisse) ment mAN // PB avertissement -change) ment mAN // PB changement -departe) ment mAN // PB departement -deplace) ment mAN // PB deplacement -detache) ment mAN // PB detachement -divertisse) ment mAN // PB divertissement -engage) ment mAN // PB engagement -enjambe) ment mAN // PB enjambement -etablisse) ment mAN // PB etablisseement -guverne) ment mAN // PB guvernement +// exceptions for the -ment rule (French words) +arrange) ment mAN // arrangement +avance) ment mAN // avancement +avertisse) ment mAN // avertissement +change) ment mAN // changement +departe) ment mAN // departement +deplace) ment mAN // deplacement +detache) ment mAN // detachement +divertisse) ment mAN // divertissement +engage) ment mAN // engagement +enjambe) ment mAN // enjambement +etablisse) ment mAN // etablisseement +guverne) ment mAN // guvernement gour) met me kompli) ment mAN - regle) ment mAN // PB reglement - regle) mente (ret ment'e // PB reglementeret -abonne) ment mAN // PB reglement -instru) mentel mentel // PB instrument -katonne) ment mAN // PB katonnement -klasse) ment mAN // PB klassement -konnosse) ment mAN // PB konnossement - lave) ment mAN // PB lavement - møble) ment mAN // PB møblement -nivelle) ment mAN // PB nivellement - posse) ment mAN // PB possement -raffine) ment mAN // PB raffinement -ressenti) ment mAN // PB ressentiment -ræsonne) ment mAN // PB ræsonnement -signale) ment mAN // PB signalement - sorti) ment mAN // PB sortiment -supple) ment mAN // PB supplement -tempera) ment mAN // PB temperament -trakte) ment mAN // PB traktement -bombarde) ment mAN // PB bombardement -_arrange) ment m'AN // PB arrangement -_avance) ment m'AN // PB avancement -_avertisse) ment m'AN // PB avertissement -_change) ment m'AN // PB changement -_departe) ment m'AN // PB departement -_deplace) ment m'AN // PB deplacement -_detache) ment m'AN // PB detachement -_divertisse) ment m'AN // PB divertissement -_engage) ment m'AN // PB engagement -_enjambe) ment m'AN // PB enjambement -_etablisse) ment m'AN // PB etablisseement -_guverne) ment m'AN // PB guvernement + regle) ment mAN // reglement + regle) mente (ret ment'e // reglementeret +abonne) ment mAN // reglement +instru) mentel mentel // instrument +katonne) ment mAN // katonnement +klasse) ment mAN // klassement +konnosse) ment mAN // konnossement + lave) ment mAN // lavement + møble) ment mAN // møblement +nivelle) ment mAN // nivellement + posse) ment mAN // possement +raffine) ment mAN // raffinement +ressenti) ment mAN // ressentiment +ræsonne) ment mAN // ræsonnement +signale) ment mAN // signalement + sorti) ment mAN // sortiment +supple) ment mAN // supplement +tempera) ment mAN // temperament +trakte) ment mAN // traktement +bombarde) ment mAN // bombardement +_arrange) ment m'AN // arrangement +_avance) ment m'AN // avancement +_avertisse) ment m'AN // avertissement +_change) ment m'AN // changement +_departe) ment m'AN // departement +_deplace) ment m'AN // deplacement +_detache) ment m'AN // detachement +_divertisse) ment m'AN // divertissement +_engage) ment m'AN // engagement +_enjambe) ment m'AN // enjambement +_etablisse) ment m'AN // etablisseement +_guverne) ment m'AN // guvernement _gour) met m'e _kompli) ment m'AN -endosse) ment m'AN // PB -_regle) ment m'AN // PB reglement -_regle) mente (re ment'e // PB reglementeret, reglementerede -_abonne) ment m'AN // PB reglement -_instru) mentel ment'el // PB instrument -_katonne) ment m'AN // PB katonnement -_klasse) ment m'AN // PB klassement -_kanosse) ment m'AN // PB kanossement - _lave) ment m'AN // PB lavement -_møble) ment m'AN // PB møblement -_nivelle) ment m'AN // PB nivellement -_posse) ment m'AN // PB possement -_raffine) ment m'AN // PB raffinement -_ressenti) ment m'AN // PB ressentiment -_ræsonne) ment m''AN // PB ræsonnement -_signale) ment m''AN // PB signalement -_sorti) ment m'AN // PB sortiment -_supple) ment m'AN // PB supplement -_tempera) ment m'AN // PB temperament -_trakte) ment m'AN // PB traktement -_bombarde) ment m'AN // PB bombardement - men (tusias mAN // PB filmentusiast +endosse) ment m'AN // +_regle) ment m'AN // reglement +_regle) mente (re ment'e // reglementeret, reglementerede +_abonne) ment m'AN // reglement +_instru) mentel ment'el // instrument +_katonne) ment m'AN // katonnement +_klasse) ment m'AN // klassement +_kanosse) ment m'AN // kanossement + _lave) ment m'AN // lavement +_møble) ment m'AN // møblement +_nivelle) ment m'AN // nivellement +_posse) ment m'AN // possement +_raffine) ment m'AN // raffinement +_ressenti) ment m'AN // ressentiment +_ræsonne) ment m''AN // ræsonnement +_signale) ment m''AN // signalement +_sorti) ment m'AN // sortiment +_supple) ment m'AN // supplement +_tempera) ment m'AN // temperament +_trakte) ment m'AN // traktement +_bombarde) ment m'AN // bombardement + men (tusias mAN // filmentusiast .group n n n -// PB words with final -ni in da_list - stressed i +// words with final -ni in da_list - stressed i &) ni ($p_alt+ 'ni // ironi &n) ni ($p_alt+ ''i // tyranni - only one n &) ni (sk$p_alt+ =ni // ironisk - stress on pervious syllable before sk -_harmo) nika =nik& // PB stressed o - biki) ni =ni // PB - ma) ni (o+ =ni // PB maniodepressiv +_harmo) nika =nik& // stressed o + biki) ni =ni // + ma) ni (o+ =ni // maniodepressiv -// PB nouns with final -ner ("er" has been removed) in da_list +// nouns with final -ner ("er" has been removed) in da_list // stressed previous syllable &) n (er$p_alt+ =n // italiener, amerikaner &) n (sk$p_alt =n // italiensk, amerikansk &) n (istan$p_alt =n // Afghanistan -ceremo) n (i n /// PB not a -ner word +ceremo) n (i n /// not a -ner word -// PB General rule: N after ko before k - ko) n (k N // PB konkurrence, konkret +// General rule: N after ko before k + ko) n (k N // konkurrence, konkret -// PB general rule: nk = [N] +// general rule: nk = [N] nk (t N // adjunkt, sankt - nk (tio nk // PB funktionel + nk (tio nk // funktionel ka) n_ // silent n - kan - ræso) nn n // PB ræsonnement - A) nn n // PB venner, denne - gra) n n // PB grannål 2 * n - @) nien =ni@-n // PB Albanien, Rumænien - stress on previous syllable - @) nier =niV // PB armenier - stress on previous syllable + 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 newton nj'u:t@n - nylon najlVn + nylon naIlVn neglige negliS'e nightingale _^_EN - _) nag (_ n&:j // PB nag - nougat nug'& // PB - _) naiv n&'iv // PB naiv - @) naiv n&iv // PB bundnaiv - new nju // PB newton, New York - newzealand njus'el&n // PB - neil ni:l // PB name Neil, O'Neil - nostradamus nVstrAd'&mus // PB name - _) nicole nik'Vl // PB name - _) nicol (ette nikol // PB - _) neville nEvel/2 // PB name - _) nellie nEli // PB name - _) nightengale najt@-ngEjl // PB name - _) niagara naj'&g3ra // PB - _) nigel najdZ3l // PB name - _) noreen nOwr'i:n // PB name - _) norwich nVritS // PB city + _) nag (_ n&:j // nag + nougat nug'& // + _) naiv n&'iv // naiv + @) naiv n&iv // bundnaiv + new nju // newton, New York + newzealand njus'el&n // + neil ni:l // name Neil, O'Neil + nostradamus nVstrAd'&mus // name + _) nicole nik'Vl // name + _) nicol (ette nikol // + _) neville nEvel/2 // name + _) nellie nEli // name + _) nightengale naIt@-ngEjl // name + _) niagara naI'&g3ra // + _) nigel naIdZ3l // name + _) noreen nOwr'i:n // name + _) norwich nVritS // city .group nd -// PB general rule: nd = [n] after a vowel +// general rule: nd = [n] after a vowel A) nd n // ond, onde, sunde // exceptions - a) nd (ere_ nd // PB ekspandere - e) nd (ere_ nd // PB prætendere - A) nd (erer_ nd // PB ekspanderer, prætenderer - æ) nd (ere+ n // PB englændere -happy_e) nd (_ nd // PB happy end - en_ru) nd (e nd // PB en runde -ste_ru) nd (e nd // PB første runde -james_bo) nd nd // PB James Bond - we) nd (y nd // PB name - gwe) nd (a nd // PB name - pa) nd (ora nd' // PB name - ama) nd (a =nd // PB name - a) nd (esbj nd // PB Andesbjergene - li) nd (y nd // PB name - va) nd (erbilt nd // PB name - _i) nd (y nd // PB name - Indy = Indiana Jones -chippe) ndale ndEjl // PB - a) nd (alus nd // PB Andalusien - i) nd (one nd // PB Indonesien - i) nd (oeu nd // PB indoeuropæer - inte) nd (ant nd // PB -glissa) nd (o =nd // PB - ma) nd (arin nd // PB - li) nd (a nd // PB - va) nd (al nd // PB - ke) nd (is nd // PB - pa) nd (a nd // PB - ro) nd (el nd // PB rondel + a) nd (ere_ nd // ekspandere + e) nd (ere_ nd // prætendere + A) nd (erer_ nd // ekspanderer, prætenderer + æ) nd (ere+ n // englændere +happy_e) nd (_ nd // happy end + en_ru) nd (e nd // en runde +ste_ru) nd (e nd // første runde +james_bo) nd nd // James Bond + we) nd (y nd // name + gwe) nd (a nd // name + pa) nd (ora nd' // name + ama) nd (a =nd // name + a) nd (esbj nd // Andesbjergene + li) nd (y nd // name + va) nd (erbilt nd // name + _i) nd (y nd // name - Indy = Indiana Jones +chippe) ndale ndEjl // + a) nd (alus nd // Andalusien + i) nd (one nd // Indonesien + i) nd (oeu nd // indoeuropæer + inte) nd (ant nd // +glissa) nd (o =nd // + ma) nd (arin nd // + tre) nd (y nd // + li) nd (a nd // + va) nd (al nd // + ke) nd (is nd // + pa) nd (a nd // + ro) nd (el nd // rondel salama) nd nd // salamander - mu) nd (ering nd // PB - ska) nd (inav nd // PB - ge) nd (an nd // PB gendanne - fu) nd (a nd // PB fundament - o) nd (i nd // PB aircondition - me) nd (oza nd' // PB name - ci) nd (y nd // PB name - nd (ag nd // PB morgendagen - lege) nd (arisk nd // PB - komma) nd nd // PB kommandant - _bo) nd (_ nd // PB - ba) nd (age nd // PB bandage - ska) nd (a nd // PB skandale, skandaløs - ga) nd (a nd // PB propaganda - sa) nd (al nd // PB + mu) nd (ering nd // + ska) nd (inav nd // + ge) nd (an nd // gendanne + fu) nd (a nd // fundament + o) nd (i nd // aircondition + me) nd (oza nd' // name + ci) nd (y nd // name + nd (ag nd // morgendagen + lege) nd (arisk nd // + komma) nd nd // kommandant + _bo) nd (_ nd // + ba) nd (age nd // bandage + ska) nd (a nd // skandale, skandaløs + ga) nd (a nd // propaganda + sa) nd (al nd // A) nd (rin nd // ændring - sru) nd (e nd // PB æresrunde, forhandlingsrunde - ko) nd (ens nd // PB kondenseret - ha) nd (i nd // PB handicap, handikap - a) nd (y nd // PB name - A) ndn n // PB endnu -> [enu] - only one n - a) nd (el nd // PB andel, sandeltræ - ma) ndel n@l // PB - _ma) nde (la nd'e // PB name - vera) nd (a nd // PB - pa) nd (elok n // PB - e) nd (okri nd // PB endokrin - e) nd (oskop nd // PB endoskop - e) nd (ogen nd // PB endogen - e) nd (os nd // PB endossement - pe) nd (ul nd' // PB - norma) nd (i nd' // PB Normandiet - sa) nde (lig n3 // PB - A) nd (re nd // PB mindre, andre - _i) nd (++ n // PB indret, indregistrere - i) nd (ivid nd // PB individualist - ply) nd (r n // PB plyndre, plyndring - sta) nd (+ n // PB opstandelse - ba) nd (emedlem nd // PB - nd (åse nd // PB tundåse - eje) nd (el nd // PB - fi) nd (el nd // PB findele - nd (else n // PB opfindelse - fi) nd (eløn n // PB - e) nd (e+ n // PB endeløs - iske) nd (erun =nd // PB name - pe) nd (ergast nd // PB name - he) nd (erson nd // PB name - te) nd (en nd // PB tronprætendent - we) nd (el nd // PB name - mira) nd (a nd // PB name - ko) nd (emnere nd // PB - ko) nd (olere nd // PB - fe) nd (er nd // PB - nea) nd (er =nd // PB neandertal - vi) nd (e n // PB kvinde, overvindelig - vi) nd (rik nd // PB vindrikker - e) nd (elig n // PB endelig - ferna) nd (o =nd // PB name - ve) ndig ndi // PB udvendig - å) nd (eli n // PB åndelig - nd (ig nd // PB behændig - nd (yr nd // PB dovendyr - ha) nd (el n // PB - y) ndig ndi // PB - a) nd (re nd // PB andre - nd (ida nd // PB kandidat - ste) nd nd // PB stendynge, stendige - ke) nd (el n // PB kendelse - pe) nd (i nd // PB appendiks - spe) nd (er nd // PB spendere - nd (ør nd // PB køkkendør - svi) nd (el n // PB - nd (om nd // PB ejendom, kondom - la) nd n // PB landområde - ko) nd (ol nd // PB kondolance - te) nd (ens nd // PB - nd (ød nd // PB stendød - fu) nd (er nd // PB fundere - u) nd (ne nd // PB bundne - bi) nd (e n // PB forbindelse - mi) nd (e n // PB mindelund - misu) nde (lig n // PB silent de - misundelig - ble) nd (e nd // PB blender - ba) nd (it nd // PB bandit - ve) nde (l n // PB anvendelig - mi) nde (li n // PB almindelig - ele) nd (ig nd // PB - nødve) nd (ig nd // PB - vi) nd (u nd // PB vindue - i) nd (oki nd // PB Indokina - i) nd (u nd // PB industri - evi) nde (li n@ // PB evindelig - y) nd (el n // PB begyndelse - ba) nd (el n // PB forbandelse - gru) ndig ndi // PB grundig - my) ndig ndi // PB myndighed + sru) nd (e nd // æresrunde, forhandlingsrunde + ko) nd (ens nd // kondenseret + ha) nd (i nd // handicap, handikap + a) nd (y nd // name + A) ndn n // endnu -> [enu] - only one n + a) nd (el nd // andel, sandeltræ + ma) ndel n@l // + _ma) nde (la nd'e // name + vera) nd (a nd // + pa) nd (elok n // + e) nd (okri nd // endokrin + e) nd (oskop nd // endoskop + e) nd (ogen nd // endogen + e) nd (os nd // endossement + pe) nd (ul nd' // + norma) nd (i nd' // Normandiet + sa) nde (lig n3 // + A) nd (re nd // mindre, andre + _i) nd (++ n // indret, indregistrere + i) nd (ivid nd // individualist + ply) nd (r n // plyndre, plyndring + sta) nd (+ n // opstandelse + 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øn n // + e) nd (e+ n // endeløs + iske) nd (erun =nd // name + pe) nd (ergast nd // name + he) nd (erson nd // name + te) nd (en nd // tronprætendent + we) nd (el nd // name + mira) nd (a nd // name + ko) nd (emnere nd // + ko) nd (olere nd // + fe) nd (er nd // + nea) nd (er =nd // neandertal + vi) nd (e n // kvinde, overvindelig + vi) nd (rik nd // vindrikker + e) nd (elig n // endelig + ferna) nd (o =nd // name + ve) ndig ndi // udvendig + å) nd (eli n // åndelig + nd (ig nd // behændig + nd (yr nd // dovendyr + ha) nd (el n // + y) ndig ndi // + a) nd (re nd // andre + nd (ida nd // kandidat + ste) nd nd // stendynge, stendige + ke) nd (el n // kendelse + pe) nd (i nd // appendiks + spe) nd (er nd // spendere + nd (ør nd // køkkendør + svi) nd (el n // + nd (om nd // ejendom, kondom + la) nd n // landområde + ko) nd (ol nd // kondolance + te) nd (ens nd // + nd (ød nd // stendød + fu) nd (er nd // fundere + u) nd (ne nd // bundne + bi) nd (e n // forbindelse + mi) nd (e n // mindelund + misu) nde (lig n // silent de - misundelig + ble) nd (e nd // blender + ba) nd (it nd // bandit + ve) nde (l n // anvendelig + mi) nde (li n // almindelig + ele) nd (ig nd // + nødve) nd (ig nd // + vi) nd (u nd // vindue + i) nd (oki nd // Indokina + i) nd (u nd // industri + evi) nde (li n@ // evindelig + y) nd (el n // begyndelse + ba) nd (el n // forbandelse + gru) ndig ndi // grundig + my) ndig ndi // myndighed mma) nd (o nd // kommando - mma) nd (er nd // PB kommandere - nd (ent nd // PB prætendent - u) nd (re nd // PB beundre - du) nd (re n // PB dundre - hu) nd (+ n // PB hundrede - hu) nd (yr nd // PB hundyr - hu) nd (jævel nd // PB - va) nd (re nd // PB vandretur - ma) nd (ag nd // PB - sø) nd (ag nd // PB + mma) nd (er nd // kommandere + nd (ent nd // prætendent + u) nd (re nd // beundre + du) nd (re n // dundre + hu) nd (+ n // hundrede + hu) nd (yr nd // hundyr + hu) nd (jævel nd // + va) nd (re nd // vandretur + ma) nd (ag nd // + sø) nd (ag nd // _i) nd (er_+ nd // inder - i) nd (erst+ n // PB - i) nd (erkreds+ n // PB -marska) nd nd // PB marskandiser - _bagi) nd nd // PB Bagindien + i) nd (erst+ n // + i) nd (erkreds+ n // +marska) nd nd // marskandiser + _bagi) nd nd // Bagindien adde) nd nd dimitte) nd nd divide) nd nd @@ -5800,98 +5787,98 @@ divide) nd nd revalide) nd nd subtrahe) nd nd -// PB general rule: nd = [nd] after a vowel before a +// general rule: nd = [nd] after a vowel before a A) nd (at nd // mandat - kvi) nd n // PB kvindagtig - va) nd (af n // PB vandafvisende - la) nd (ar n // PB landarbejder - hå) nd (ar n // PB håndarbejde + kvi) nd n // kvindagtig + va) nd (af n // vandafvisende + la) nd (ar n // landarbejder + hå) nd (ar n // håndarbejde -// PB takes away the d in 'bander' = 'gangs' - n => n? +// takes away the d in 'bander' = 'gangs' - n => n? // Neither 'bander' = swears nor 'bander' = gangs is correct // but a sentence like 'bander bander' (gangs swear) is understandable ba) nd (er n? - ba) nd (ens nd // PB - ba) nd (erne nd // PB -_en_ba) nde nd@- // PB -_den_ba) nde nd@- // PB - ba) nde (kri nd@- // PB -krig, -kriminalitet, -kriger - ba) nde (uvæsen nd@- // PB - ba) nde (ro nd@-' // PB banderole - ba) nde (leder+ nd@- // PB - ba) nde (medlem nd@- // PB - ba) nde (opgør nd@- // PB - ba) nde (vold nd@- // PB -tyveba) nde nd@- // PB -røverba) nde nd@- // PB -bjørneba) nde nd@- // PB -min_ba) nde nd@- // PB -din_ba) nde nd@- // PB -hele_ba) nde nd@- // PB hele banden -res_ba) nde nd@- // PB vores/jeres/deres bande - s_ba) nde nd@- // PB Johns bande - forba) nd (er n // PB -jeg_ba) nd (er n // PB - du_ba) nd (er n // PB - _i_ba) nd (er n // PB -_vi_ba) nd (er n // PB -_de_ba) nd (er n // PB -_man_ba) nd (er n // PB - sta) nd (ar nd // PB standard - keep the d + ba) nd (ens nd // + ba) nd (erne nd // +_en_ba) nde nd@- // +_den_ba) nde nd@- // + ba) nde (kri nd@- // -krig, -kriminalitet, -kriger + ba) nde (uvæsen nd@- // + ba) nde (ro nd@-' // banderole + ba) nde (leder+ nd@- // + ba) nde (medlem nd@- // + ba) nde (opgør nd@- // + ba) nde (vold nd@- // +tyveba) nde nd@- // +røverba) nde nd@- // +bjørneba) nde nd@- // +min_ba) nde nd@- // +din_ba) nde nd@- // +hele_ba) nde nd@- // hele banden +res_ba) nde nd@- // vores/jeres/deres bande + s_ba) nde nd@- // Johns bande + forba) nd (er n // +jeg_ba) nd (er n // + du_ba) nd (er n // + _i_ba) nd (er n // +_vi_ba) nd (er n // +_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 // PB Indien, individ, indianer - ti) nd (in n // PB tinding - fi) nd (+ n // PB fejlfinding - i) nd (ig+ nd // PB spidsfindig, besindig - bi) nd (in n // PB forbinding - vi) nd (in n // PB udvinding + i) nd (i nd // Indien, individ, indianer + ti) nd (in n // tinding + fi) nd (+ n // fejlfinding + i) nd (ig+ nd // spidsfindig, besindig + bi) nd (in n // forbinding + vi) nd (in n // udvinding i) nd (imellem n // exception - i) nd (erl+ n // PB inderlig - ga) nd (ere nd // PB propagandere - ko) nd (i nd // PB konditori, kondicykel + i) nd (erl+ n // inderlig + ga) nd (ere nd // propagandere + ko) nd (i nd // konditori, kondicykel seku) nd nd .group ng ng N // general rule - ting, ring - ora) ng (u =Ng // PB stressed previous vowel - ng (ænger ng // PB søvngænger - kæ) ng (uru ng // PB - nger (rig ngEr // PB hævngerrig - morge) ng (ry ng // PB - la) ngu (st ng'u // PB languster - vi) ng (ård ng // PB vingård - pa) ng (æa ng' // PB Pangæa - ng (rad ng // PB Leningrad - flami) ng (o =ng // PB stressed i - ra) ng (ere NS // PB - ta) ng (ent ng // PB - he) ng (em ng // PB hengemt - ng (ulv ng // PB køkkengulv - nav) ng (iv ng // PB navngive - ge) ng (iv+ ng // PB gengive - ng (ymnast ng // PB lagengymnastik - re) ng (ør ng // PB rengøring - ng (æld ng // PB gengæld - ng (ud nd // PB ørkengud - a) ng (iv ng // PB selvangivelse - ng (evær ng // PB maskingevær - ng (las ng // PB vinglas - he) ng (iv ng // PB hengiven - i) ngeni (ø nSin // PB ingeniør - eva) ng (el ng // PB evangelie - allo) ng (e NS // PB - A) ng (o ng // PB bongo, Congo, Ringo - _a) ng (A ng // PB angå - a) ng (iogr Ng // PB angiografi - cha) ng (ement Nsj // PB changement - ora) ng (e =Nsj // PB orange - ora) ngea (de Nsj'& // PB orangeade - _ra) ng (er Nsj // PB rangere + ora) ng (u =Ng // stressed previous vowel + ng (ænger ng // søvngænger + kæ) ng (uru ng // + nger (rig ngEr // hævngerrig + morge) ng (ry ng // + la) ngu (st ng'u // languster + vi) ng (ård ng // vingård + pa) ng (æa ng' // Pangæa + ng (rad ng // Leningrad + flami) ng (o =ng // stressed i + ra) ng (ere NS // + ta) ng (ent ng // + he) ng (em ng // hengemt + ng (ulv ng // køkkengulv + nav) ng (iv ng // navngive + ge) ng (iv+ ng // gengive + ng (ymnast ng // lagengymnastik + re) ng (ør ng // rengøring + ng (æld ng // gengæld + ng (ud nd // ørkengud + a) ng (iv ng // selvangivelse + 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 + _a) ng (A ng // angå + a) ng (iogr Ng // angiografi + cha) ng (ement Nsj // changement + ora) ng (e =Nsj // orange + ora) ngea (de Nsj'& // orangeade + _ra) ng (er Nsj // rangere ng (a ng - fa) ng (arm N // PB fangarme + fa) ng (arm N // fangarme fi) nger NV - _fi) ng (ere ng // PB fingeret - fi) ng (eren+ N // PB + _fi) ng (ere ng // fingeret + fi) ng (eren+ N // fi) ng (re =N fu) ng (er Ng // fungere ti) ng (ent Ng @@ -5902,59 +5889,61 @@ _man_ba) nd (er n // PB o o -// PB Short o followed by double consonant - r) o (C%++ ?V // PB droppe, kroppe, skrotte - o (ld+ ?V // PB hold, holde - o (mm+ ?V // PB komme, omme +// Short o followed by double consonant + r) o (C%++ ?V // droppe, kroppe, skrotte + tr) os (sag+ os // + tr) os (skrift+ os // + o (ld+ ?V // hold, holde + o (mm+ ?V // komme, omme -_noget_r) o (s_ ?V // PB +_noget_r) o (s_ ?V // -// PB long o because of the a? +// long o because of the a? s) o (fa o: - oo u: // PB English words like 'pool' - C) oog oV // PB toogtyve - b) oogie ugi // PB boogie-woogie - w) oogie ugi // PB - w) oo u // PB Hollywood - oonagh un& // PB name - shamp) oo ?o // PB - nark) o o // PB narkoopgør - hall) o '?o // PB stressed - ky) o (to 'o // PB stressed - br) ooke uk // PB name - f) ood u:d // PB - fl) ood Vd // PB - bl) ood Vd // PB - fl) oor V: // PB - z) oo o: // PB zoologisk - kaz) oo 'u // PB - z) oo (m u: // PB - baz) oo 'u: // PB bazooka - m) oore V: // PB name - h) ood u:d // PB Robin Hood - dan) ois w'A // PB granddanois - g) oebbels Wb@ls // PB name - m) o (nste ?V // PB monster - t) o (rna ?V // PB tornado + oo u: // English words like 'pool' + C) oog oV // toogtyve + b) oogie ugi // boogie-woogie + w) oogie ugi // + w) oo u // Hollywood + oonagh un& // name + shamp) oo ?o // + nark) o o // narkoopgør + hall) o '?o // stressed + ky) o (to 'o // stressed + br) ooke uk // name + f) ood u:d // + fl) ood Vd // + bl) ood Vd // + fl) oor V: // + z) oo o: // zoologisk + kaz) oo 'u // + z) oo (m u: // + baz) oo 'u: // bazooka + m) oore V: // name + h) ood u:d // Robin Hood + dan) ois w'A // granddanois + g) oebbels Wb@ls // name + m) o (nste ?V // monster + 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 -// PB final -om in da_list - stressed o +// final -om in da_list - stressed o @) om ($p_alt+++ 'om // atom, diplom, syndrom - sark) om om // PB knoglesarkom + sark) om om // knoglesarkom -// PB final - ose - stressed o +// final - ose - stressed o &) ose ($p_alt+ 'o:s@ // hypnose &) ose+ (r$p_alt 'o:sV // hypnoser -// PB final -isk: long o (ph_danish shortens the o) - o (tisk o: // PB gotisk, laotisk +// final -isk: long o (ph_danish shortens the o) + o (tisk o: // gotisk, laotisk -// PB final -ode - stressed o +// final -ode - stressed o di) o (de 'o elektr) o (de 'o epis) o (de 'o @@ -5964,735 +5953,735 @@ elektr) o (de 'o pag) o (de 'o peri) o (de 'o -// PB general rule c/k + o + n + consonant = [V] - L10) o (nC V // PB konvoj, conga - L10) o (nCL11 0 // PB kontakt, koncert - sek) ond (løjtnant 'ond // PB -// PB general rule consonant + o + double consonant: [V] - C) o (L03%+ V // skodde, rolle, lodder - r) o (L03%a++ o // rollator - bl) od oD // PB bloddonor - h) o (lla+ V // PB Holland - C) o (rr V // PB korrekt - gon) o (rr o // PB gonnorré - L06) o (t V // PB pot -// L06) o (tL11 o // PB pote, botaniker - tr) o (ssætning o // PB - tr) o (ts V // PB trotskist - _r) oll (_+ Owl // PB rock and roll - _r) oll (ing_stone oul // PB Rolling Stone(s) - _r) olls (_ Owls // PB Rolls Royce - kn) o (tt V // PB knotten +// general rule c/k + o + n + consonant = [V] + L10) o (nC V // konvoj, conga + L10) o (nCL11 O // kontakt, koncert + sek) ond (løjtnant 'ond // +// general rule consonant + o + double consonant: [V] + C) o (L03%+ ?V // skodde, rolle, lodder + r) o (L03%a++ ?o // rollator + bl) od ?oD // bloddonor + h) o (lla+ ?V // Holland + C) o (rr ?V // korrekt + gon) o (rr o // gonnorré + L06) o (t ?V // pot + sab) o (t o // sabotør +// L06) o (tL11 o // pote, botaniker + tr) o (ssætning o // + tr) o (ts V // trotskist + _r) oll (_+ Owl // rock and roll + _r) oll (ing_stone oul // Rolling Stone(s) + _r) olls (_ Owls // Rolls Royce + kn) o (tt ?V // knotten - foxtr) o (t V // PB - ren) omme (+ om'e // PB - ren) ommé (+ om'e // PB - C) o (C%et_++ ?V // PB jokket, rosset - C) o (bber_++ V // PB snobber - gr) o (ssi+ o // PB grossist - fr) o (ss++ o // PB frosset, frossen - fr) otte (++ ot'e // PB frottehåndklæde - stressed - m) o (sse+++ ?O // PB mosset, rødmossede - k) ommers (_ om'Ers // PB stressed - ap) o (llo++ 'V // PB stressed - k) o (mmerciel++ ?o // PB kommerciel - n) o (nC V // PB nonsens - C) o (L09n V // PB velkomne, nonne + foxtr) o (t ?V // + ren) omme (+ ?om'e // + ren) ommé (+ ?om'e // + C) o (C%et_++ ?V // jokket, rosset + C) o (bber_++ ?V // snobber + gr) o (ssi+ ?o // grossist + fr) o (ss++ ?o // frosset, frossen + fr) otte (++ ?ot'e // frottehåndklæde - stressed + m) o (sse+++ ?O // mosset, rødmossede + k) ommers (_ om'?Ers // stressed + ap) o (llo++ '?V // stressed + k) o (mmerciel++ ?o // kommerciel + n) o (nC ?V // nonsens + C) o (L09n ?V // velkomne, nonne -// PB general rule k + o + double consonant + front vowel: [o] +// general rule k + o + double consonant + front vowel: [o] // Some people pronounce it [V] - k) o (C%L04++ o // PB korridor, korrupt, kollegium, kommode - L08) o (tt ?V // PB skotte, spotte -// r) o (tt+ V // PB rotte, skrotte + k) o (C%L04++ o // korridor, korrupt, kollegium, kommode + L08) o (tt ?V // skotte, spotte +// r) o (tt+ V // rotte, skrotte - k) o (mmentA+++ o // PB kommentar, kommentere - k) o (llekt_ o // PB could also be [V] - k) o (lleg+++ o // PB kolleger + k) o (mmentA+++ ?o // kommentar, kommentere + k) o (llekt_ ?o // could also be [V] + k) o (lleg+++ ?o // kolleger -// PB general rule o + b + l + a/e/LL04: [o] - o (bla+ o // PB oblat - o (blL04 o // PB obligation - k) o (bling V // PB +// general rule o + b + l + a/e/LL04: [o] + o (bla+ ?o // oblat + o (blL04 ?o // obligation + k) o (bling ?V // -// PB general rule k/g + o + m: [V] - L01) o (m V // PB kompliceret, komplet, brudgom, jomfru - L01) o (mL04 o // PB komite - L01) o (me o // PB komedie - k) o (mpag o // PB kompagni - k) o (ma o: // PB - _k) o (mpas o' // PB +// general rule k/g + o + m: [V] + L01) o (m V // kompliceret, komplet, brudgom, jomfru + L01) o (mL04 o // komite + L01) o (me o // komedie + k) o (mpag o // kompagni + k) o (ma o: // + _k) o (mpas o' // -// PB general rule p/b + l + o + n/M: [V] - L06l) o (L09 V // PB blond, blomst +// general rule p/b + l + o + n/M: [V] + L06l) o (L09 V // blond, blomst -// PB general rule: d/l + o + n/m: [V] - L03) o (L09 V // PB barndom, lom, domhus, don, dommer - l) o (L09CL04 o // PB colombianerne - TEST - l) o (nnA V // PB Lonny, Lonnie - fr) o (nt V // PB frontal - L03) o (L09L04 o // PB dominere - L03) o (L09L11 o // PB donere, donation, donator - ball) on VN // PB spærreballoner - @mel) o (n o // PB vandmelon - kl) o (n o // PB - cykl) o (n 'o PB stressed - shal) o (m 'o // PB stressed +// general rule: d/l + o + n/m: [V] + L03) o (L09 V // barndom, lom, domhus, don, dommer + l) o (L09CL04 o // colombianerne - TEST + l) o (nnA V // Lonny, Lonnie + fr) o (nt V // frontal + L03) o (L09L04 o // dominere + L03) o (L09L11 o // donere, donation, donator + ball) on VN // spærreballoner + @mel) o (n o // vandmelon + kl) o (n o // + cykl) o (n 'o // stressed + shal) o (m 'o // stressed -// PB general rule sp/st/sk + r + o + velars: V - L08r) o (L01 V // PB skrog - L08r) o (L01en o // PB østrogen V +// general rule sp/st/sk + r + o + velars: V + L08r) o (L01 V // skrog + L08r) o (L01en o // østrogen V -// PB general rule consonant + o + velars: V - C) o (L01+ V // PB fjong, jogge, knokle +// general rule consonant + o + velars: V + C) o (L01+ V // fjong, knokle + C) o (L01%+ ?V // sokker jogger - C) o (g+ O // PB bogmærke, bedrog, krog, tog (verb "took", noun "train") - C) o (gA+ O // PB toge + C) o (g+ O // bogmærke, bedrog, krog, tog (verb "took", noun "train") + C) o (gA+ O // toge n) oge (n o@- // PN nogensinde - d) og (+ Vw // PB dogme - d) og (e oS // PB doge - d) o (nkraft o // PB - et_dr) o (g V // PB et drog (noun) - arist) o (k o // PB aristokrat - s) okrates okratEs // PB name - k) ong (res Vng // PB - sm) og (_ Vg // PB smog - r) o (kL11+ o // PB provokere - v) o (kL11+ o // PB provokere - p) o (ker++ o // PB - C) o (L01a+ o // PB lokale - s) o (ja+ V // PB - h) og (an owg // PB name - fot) oge (n og'e // PB stressed - ep) o (ke 'o PB stressed - l) ogre VwrV // PB - g) o (kart+ Ow // PB - kr) o (ketC V // PB kroketbane, -spiller, -plæne - _kr) o (kett o' // PB kroketter - C) o (L01t V // PB kogt - b) o (L01L04 V // PB bongo - b) o (gorm o // PB + d) og (+ Vw // dogme + d) og (e oS // doge + d) o (nkraft o // + et_dr) o (g V // et drog (noun) + arist) o (k o // aristokrat + s) okrates okratEs // name + k) ong (res Vng // + sm) og (_ Vg // smog + r) o (kL11+ o // provokere + v) o (kL11+ o // provokere + p) o (ker++ o // + C) o (L01a+ o // lokale + s) o (ja+ V // + h) og (an owg // name + fot) oge (n og'e // stressed + ep) o (ke 'o // stressed + l) ogre VwrV // + g) o (kart+ Ow // + kr) o (ketC V // kroketbane, -spiller, -plæne + _kr) o (kett o' // kroketter + C) o (L01t V // kogt + b) o (L01L04 V // bongo + b) o (gorm o // jumb) o o // OB jumbojet - v) o (gt+ V // PB - kn) o (j o // PB knojern - parad) o (ks 'V // PB stressed -elektr) o =o // PB elektrokromatisk - L06r) o (j o // PB projektør - d) o (L01rL04 o // PB endokrin TEST - bl) og Vg // PB (we)blog - C) o (gg+ V // PB jogging - van_g) ogh Vk // PB name - j) o (L01%L11 ?V // PB jogge, jokke - l) o (L01%L11 ?V // PB logge, lokke - k) o (gt+ ?V // PB kogte - og (firs ?V // PB enogfirs - sl) o (g o // PB foreslog - dag) o (g ?o // PB pædagog - o (kaC o // PB pokal, advokat - l) o (kum o // PB + v) o (gt+ V // + kn) o (j o // knojern + parad) o (ks 'V // stressed +elektr) o =o // elektrokromatisk + L06r) o (j o // projektør + d) o (L01rL04 o // endokrin TEST + bl) og Vg // (we)blog + C) o (gg+ ?V // jogging + van_g) ogh Vk // name + j) o (L01%L11 ?V // jogge, jokke + l) o (L01%L11 ?V // logge, lokke + k) o (gt+ ?V // kogte + og (firs ?V // enogfirs + sl) o (g o // foreslog + dag) o (g ?o // pædagog + o (kaC o // pokal, advokat + l) o (kum o // -// PB general rule sp/st/sk + o + t: V -// L08) o (t V // PB spotte, skotte - L08r) o (t V // PB skrot - o (tL11++ o // PB skrote, blote, pote, botaniker - L08r) o (tL04 o // PB skrotum - _mask) o (t 'V // PB stressed - L08) o (tL04 o // PB followed by front vowel: o - skotøj - disk) o o // PB diskotek - kach) o (t 'V // PB +// general rule sp/st/sk + o + t: V +// L08) o (t V // spotte, skotte + L08r) o (t V // skrot + o (tL11++ o // skrote, blote, pote, botaniker + L08r) o (tL04 o // skrotum + _mask) o (t 'V // stressed + L08) o (tL04 o // followed by front vowel: o - skotøj + disk) o o // diskotek + kach) o (t 'V // -// PB general rule o + frontal consonant: [V] - o (L03K+ V // PB Olga, Volga, vold, vod, od, volt, polstre - s) o (d+ o // PB sod, løbesod - o (lsen o // PB name - k) o (d+ o // PB omkodning - gaj) o (l 'o // PB candy - symb) o (l o // PB sexsymbol - bornh) o (lm 'V // PB - L08) o (l+ o // PB skole, spole, spol - L08) o (len ?o // PB skolen - short o - t) o (lk V // PB mistolke - p) o (l ?o // PB nordpolen, politi - p) o (l_ o // PB - p) o (lsk o // PB polsk - p) o (lt V // PB polterabend - @) o (lsk 'o // PB katolsk, symbolsk -melank) o (lsk 'o // PB - wimp) ole Owl // PB name - st) o (d_ o // PB - L09) o (d+ o // PB mod +// general rule o + frontal consonant: [V] + o (L03K+ V // Olga, Volga, vold, vod, od, volt, polstre + s) o (d+ o // sod, løbesod + o (lsen o // name + k) o (d+ o // omkodning + gaj) o (l 'o // candy + 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 // + p) o (lsk o // polsk + p) o (lt V // polterabend + @) o (lsk 'o // katolsk, symbolsk +melank) o (lsk 'o // + wimp) ole Owl // name + st) o (d_ o // + L09) o (d+ o // mod l) o (L03+ o // forlod, blod, efterlod - j) o (d+ o // PB - j) odle Vdl3 // PB - jordl) o (d V // PB - l) o (dtræk V // PB lodtrækning -trukket_l) o (d V // PB -træk_l) o (d V // PB -trække_l) o (d V // PB -trækker_l) o (d V // PB -trækkes_l) o (d V // PB -trak_l) o (d // PB - r) o (d+ o // PB - br) o (d+ V // PB - _br) o (dy 0w // PB name - br) o (der o // PB + j) o (d+ o // + j) odle Vdl3 // + jordl) o (d V // + l) o (dtræk V // lodtrækning +trukket_l) o (d V // +træk_l) o (d V // +trække_l) o (d V // +trækker_l) o (d V // +trækkes_l) o (d V // +trak_l) o (d // + r) o (d+ o // + br) o (d+ V // + _br) o (dy 0w // name + br) o (der o // forl) o (ds V // PP - g) o (d+ o // PB - g) o (dt+ V // PB - sk) o (t V // PB Skotland - sk) o (tøj ?o // PB - g) odfather VdfADV // PB - b) o (d+ o // PB isbod - camb) o (dj 'o // PB Cambodja - b) ody Vdi // PB bodystocking - b) odybuilder VdibildV // PB bodybuilder - _k) o (d+ o // PB kodning - sk) o (d+ V // PB - k) o (de++ o // PB sikkerhedskode, tidskode - l) odret (+ VDr&#t // PB + g) o (d+ o // + g) o (dt+ V // + sk) o (t V // Skotland + sk) o (tøj ?o // + g) odfather VdfADV // + b) o (d+ o // isbod + camb) o (dj 'o // Cambodja + b) ody Vdi // bodystocking + b) odybuilder VdibildV // bodybuilder + _k) o (d+ o // kodning + sk) o (d+ V // + k) o (de++ o // sikkerhedskode, tidskode + l) odret (+ VDr&#t // -// PB general rule o + velar + front vovel: [o] - o (L01L04 o // PB okular - C) o (kL04+ o // PB kokosnød, dokument - rok) o (ko 'V // PB stressed - Cr) o (L01L04 O // PB frokost - ch) o (k+ V // PB - ch) o (ko+ o // PB chokolade - k) okon ok'VN // PB stressed +// general rule o + velar + front vovel: [o] + o (L01L04 o // okular + C) o (kL04+ o // kokosnød, dokument + rok) o (ko 'V // stressed + Cr) o (L01L04 O // frokost + ch) o (k+ V // + ch) o (ko+ o // chokolade + k) okon ok'VN // stressed -// PB general rule o + p/b/d + front vowel: [o] - o (L06L04+ o // PB topografi, utopi, opinion - o (pofre+ V // PB opofrelse - o (pildne+ V // PB +// general rule o + p/b/d + front vowel: [o] + o (L06L04+ o // topografi, utopi, opinion + o (pofre+ V // opofrelse + o (pildne+ V // -// PB general rule o + p/b: [V] - o (L06+ V // PB op, opdrage, obstruere -kommand) o o // PB kommandobroen - s) ophia of'i& // PB name - o (pposit o // PB opposition - o (L06L11+ o // PB oktober, global, Robert, oberst - o (pefter+ V // PB - o (parbejde+ V // PB - j) o (b@ V // PB jobannonce - o (pad+ V // PB - b) o (pæl o // PB - k) o (par V // PB koparret - L10) o (L06rL11 o // PB kobra - L02) o (L06le+ V // PB boble - L02) o (L06%e++ V // PB dobbel - C) o (L06L04++ o // PB monopol, mobil - p) o (pidol++ V // PB popidol - o (bbA+++ V // PB hobby, snobbet, snobbede - st) o (p++ V // PB stopur - k) o (bber O // PB - selv) o (p V // PB selvoptaget - _r) o (bin++ V // PB Robin Hood - _r) oby (n++ Vbe // PB name - pr) o (ble o // PB problem - r) o (L06L05+ o // PB europæer, propan - le) o (par o' // PB leopard - cle) o (patra 'o // PB - nark) o (C o // PB narkobranchen - mikr) o o // PB mikroprocessor - h) o (b+ o // PB menneskehob - Cn) o (L06++ o // PB knob, knop, knoppen - gal) o (C 'V // PB galoche, galop - stressed - dr) o (sche V // PB - o (che V // PB broche - gal) o (ppere o // PB - kykl) o (p 'o // PB +// general rule o + p/b: [V] + o (L06+ V // op, opdrage, obstruere +kommand) o o // kommandobroen + s) ophia of'i& // name + 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 + 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 + _r) o (bin++ V // Robin Hood + _r) oby (n++ Vbe // name + pr) o (ble o // problem + r) o (L06L05+ o // europæer, propan + le) o (par o' // leopard + 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 // -// PB general rule l + o + t: [V] - l) o (t V // PB blot, plot, kaskelot - _) kompl) o (t 'V // PB stressed - _) kaskel) o (t 'V // PB stressed - merl) ot 'o // PB grape - kal) o (t 'V // PB stressed - l) o (tus o: // PB - pil) o (t o // PB autopilot - kil) o (+ o // PB kiloton, kilovis - zel) o (t 'o PB stressed +// general rule l + o + t: [V] + l) o (t V // blot, plot, kaskelot + _) kompl) o (t 'V // stressed + _) kaskel) o (t 'V // stressed + merl) ot 'o // grape + kal) o (t 'V // stressed + l) o (tus o: // + pil) o (t o // autopilot + kil) o (+ o // kiloton, kilovis + zel) o (t 'o // stressed - Ca) o (s V // PB kaos Laos - L08) o (f V // PB stof - kask) o o // PB kaskoforsikring - tr) o (CL04 o // PB antropolog, tropisk, troperne - fortr) o (lig ?o // PB - _) o (mC ''V // PB omgang, omformulere - _) o (mar V // PB omarrangere, omarbejde - o (madresse V // PB omadressere - _) oman om'&n // PB Oman - stressed - o (ms V // PB pladeomslag - o (mråd V // PB katastrofeområde - o (mtale V // PB presseomtale - o (megn V // PB - o (mk V // PB deromkring - k) o (nC V // PB konfirmand, konfekt, konkurrence - C) o (sCL11+ V // PB fosfat, koster, moster, foster, floskel - fr) o (sne o // PB fastfrosne - tr) o (sretning o // PB - tr) o (sbekend o // PB trosbekendelse - tr) o (ssag o // PB - tr) o (sskift+ o // PB - fl) o (s V // PB floskler - kl) o (stre V // PB klostret - pr) o (s+ o // PB prospekt - m) o (ske o // PB - k) o (steskaft o // PB - k) o (steskab o // PB - k) osh (er+ oS // PB - kr) o (s o // PB krostue - kr) o (snak o // PB - hydr) o o // PB hydrostatisk - test) o (steron o // PB -rekogn) o (scere o // PB - tr) os (samfund os // PB - metr) o o // PB metrostation - tr) o (ld V // PB charmetrold - bek) o (st V // PB bekostning - o (sCL04 V // PB osmose - kosm) o (s V // PB kosmos - tjekk) o (slov o // PB Tjekkoslovakiet - heter) o o // PB heterosvin - sh) osh (one oS' // PB shoshoneindianere - o (stindi o // PB Ostindien - r) oscoe VskOw // PB Roscoe - name - k) o (stL04 o // PB kostume - Cr) o (sk+ o // PB troskab, kroskænk - n) o (s_ V // PB nos nu ikke i det - g) o (slav+ o // PB Jugoslavien - h) o (spit o // PB hospital - p) o (styr+ V' // PB - o (sko+ o // PB otoskop, mokroskopi - sk) o (sværte o // PB + Ca) o (s V // kaos Laos + L08) o (f V // stof + kask) o o // kaskoforsikring + tr) o (CL04 o // antropolog, tropisk, troperne + fortr) o (lig ?o // + _) o (mC ''V // omgang, omformulere + _) o (mar V // omarrangere, omarbejde + o (madresse V // omadressere + _) oman om'&n // Oman - stressed + o (ms V // pladeomslag + o (mråd V // katastrofeområde + o (mtale V // presseomtale + o (megn V // + o (mk V // deromkring + k) o (nC V // konfirmand, konfekt, konkurrence + C) o (sCL11+ V // fosfat, koster, moster, foster, floskel + fr) o (sne o // fastfrosne + tr) o (sretning o // + tr) o (sbekend o // trosbekendelse + fl) o (s V // floskler + kl) o (stre V // klostret + pr) o (sp+ o // prospekt + m) o (ske+ o // + k) o (steskaft o // + k) o (steskab o // + k) osh (er+ oS // + kr) o (s o // krostue + kr) o (snak o // + hydr) o o // hydrostatisk + test) o (steron o // +rekogn) o (scere o // + tr) os (samfund os // + metr) o o // metrostation + tr) o (ld V // charmetrold + bek) o (st V // bekostning + o (sCL04 V // osmose + kosm) o (s V // kosmos + tjekk) o (slov o // Tjekkoslovakiet + heter) o o // heterosvin + sh) osh (one oS' // shoshoneindianere + o (stindi o // Ostindien + r) oscoe VskOw // Roscoe - name + k) o (stL04 o // kostume + Cr) o (sk+ o // troskab, kroskænk + n) o (s_ V // nos nu ikke i det + g) o (slav+ o // Jugoslavien + h) o (spit o // hospital + p) o (styr+ V' // + o (sko+ o // otoskop, mokroskopi + sk) o (sværte o // -// PB general rule: consonant + o + m:[V] - C) o (m V // PB tomhændet, kedsomhed, tomt, udenoms - C) o (mL04 V // PB bomuld - salt) o (mor o // PB saltomortale - at) o (m o // PB iltatom - C) o (mL11 o // PB tomat - ar) o (ma 'o // PB stressed - h) o (L09L04+ o // PB homo, honorær - r) o (mCL05 o // PB brombær TEST - syndr) o (m o // PB stresssyndrom +// general rule: consonant + o + m:[V] + C) o (m V // tomhændet, kedsomhed, tomt, udenoms + C) o (mL04 V // bomuld + salt) o (mor o // saltomortale + at) o (m o // iltatom + C) o (mL11 o // tomat + ar) o (ma 'o // stressed + h) o (L09L04+ o // homo, honorær + r) o (mCL05 o // brombær TEST + syndr) o (m o // stresssyndrom r) o (mkage V // pb - Cr) o (mL04 o // PB promotor - tr) o (mme+ o // PB - fr) o (m V // PB - fr) o (ma o // PB fromage - tr) o (m o // PB trompet - on) o (m o // PB økonomi - n) o (mi o // PB nominere - _økon) o (m_ 'o // PB stressed - hæmat) o (m 'o // PB - c) omeback Vmb'&k // PB - _p) ommes (_ %Vm // PB pommes frites - _p) omme (_ %Vm // PB pomme frite(s) + Cr) o (mL04 o // promotor + tr) o (mme+ o // + fr) o (m V // + fr) o (ma o // fromage + tr) o (m o // trompet + on) o (m o // økonomi + n) o (mi o // nominere + _økon) o (m_ 'o // stressed + hæmat) o (m 'o // + c) omeback Vmb'&k // + _p) ommes (_ %Vm // pommes frites + _p) omme (_ %Vm // pomme frite(s) -// PB general rule: labial (+r) + o + st: [V] - L02) o (st V // PB opfostre, moster, post, frost - fr) o (st+ V // PB frost - br) o (sten o // PB +// general rule: labial (+r) + o + st: [V] + L02) ost Vsd // opfostre, moster, post, frost + fr) o (st+ V // frost + br) o (sten o // // exceptions - p) o (stmod O // PB postmoderne - p) o (stej+ %o // PB leverpostej - p) o (sttrau o // PB posttraumatisk - pr) o (sti o // PB prostitueret - nab) o (+ o // PB nabostat + p) o (stmod O // postmoderne + p) o (stej+ %o // leverpostej + p) o (sttrau o // posttraumatisk + pr) o (sti o // prostitueret + nab) o (+ o // nabostat - s) o (mal o' // PB Somalia - gn) o (m o // PB - kr) o (m o // PB krom - _l) o (s V // PB los - _p) o (t_ V // PB - fall) o (s V // PB - _kol) o (s 'V // PB kolos - stressed - kol) o (st o // PB kolostomi - st) o (mL04 o // PB stomi - kol) o (ssa o // PB kolossal - k) o (ntor o // PB - h) o (spice V // PB hospice - v) od (ka Vd // PB - o (ttawa V // PB - term) o (sta o // PB termostat - r) o (st+ o // PB rost, skamrost, prostitueret, roste - f) oged o:@D // PB silent g - bank) o (sp o // PB bankospil - k) o (sko o // PB bronkoskop - kok) o (s o // PB kokosnød - k) o (st_ o // PB kost (broom) Problem with kost = food -skrap_k) o (st V // PB - k) o (stskole V // PB - k) o (stplan V // PB - k) o (stråd V // PB - k) o (stvane V // PB - k) o (stpris V // PB - k) o (sttilskud V // PB -hverdagsk) o (st V // PB -sundhedsk) o (st V // PB - k) o (st_og_logi V // PB board and lodging - k) o (stbar V // PB -helsek) o (st V // PB - frok) o (st V // PB - omko (st VmkV // PB omkostninger, leveomkostninger - k) otele (t Vt@l'E // PB svinekotelet - boyk) o (t V // PB boycotte - h) o (st++ ?o // PB host - h) o (ste++ o // PB hoste - fC) o (t V // PB flot, fjot - fC) o (tL04 o // PB flotille + s) o (mal o' // Somalia + gn) o (m o // + kr) o (m o // krom + _l) o (s V // los + _p) o (t_ V // + fall) o (s V // + _kol) o (s 'V // kolos - stressed + kol) o (st o // kolostomi + st) o (mL04 o // stomi + kol) o (ssa o // kolossal + k) o (ntor o // + h) o (spice V // hospice + v) od (ka Vd // + o (ttawa V // + term) o (sta o // termostat + r) o (st+ o // rost, skamrost, prostitueret, roste + f) oged o:@D // silent g + bank) o (sp o // bankospil + k) o (sko o // bronkoskop + kok) o (s o // kokosnød + k) o (st_ o // kost (broom) Problem with kost = food +skrap_k) o (st V // + k) o (stskole V // + k) o (stplan V // + k) o (stråd V // + k) o (stvane V // + k) o (stpris V // + k) o (sttilskud V // +hverdagsk) o (st V // +sundhedsk) o (st V // + k) o (st_og_logi V // board and lodging + k) o (stbar V // +helsek) o (st V // + frok) o (st V // + omko (st VmkV // omkostninger, leveomkostninger + k) otele (t Vt@l'E // svinekotelet + boyk) o (t V // boycotte + h) o (st++ ?o // host + h) o (ste++ o // hoste + fC) o (t V // flot, fjot + fC) o (tL04 o // flotille - o (x V // PB oxyd - t) o (mas_ V // PB - th) o (mas_ V // PB - t) ow (er Au // PB Tower Bridge - mikr) oovn oVwn // PB - _) o' ou' // PB for Irish names - O'Grady - s) outh auT // PB South Pacific - _h) olmes (_ oums // PB name - s) oames oums // PB name - osborne Vsb,On // PB name - _b) o (nd_ V // PB Bond Street - k) oor (d oV:? // PB koordinat - _biot) o (p '?o // PB stressed - _isot) o (p '?o // PB stressed -antibi) o (tik '?o // PB antibiotika - lak) o (ta 'o // PB stressed - _morm) o (n '?o // PB stressed - _dæm) o (n '?o // PB stressed - _matr) o (ne 'o // PB stressed -_silik) o (ne 'o // PB stressed - _acet) o (ne 'o // PB stressed - _amaz) o (ne 'o // PB stressed - _calz) o (ne 'o // PB stressed -_chaper) o (ne 'o // PB stressed -_cicer) o (ne 'o // PB stressed - _anem) o (ne 'o // PB stressed - _sign) o (r 'o // PB signora -_anekd) o (t 'o // PB anekdote, anekdotisk -_abrik) o (s '?o // PB stressed -art_dec) o '?o // PB - o (pofre ?V // PB - f) o (nt ?V // PB døbefont, fontæne - ann) on (cA VN // PB annonce, annoncør - stressed by $alt list - radi) o ?o // PB radiobil - f) o (b o // PB fobi -_antil) o (pe 'o // PB stressed - _t) o (bak ?o' // PB tobak - vide) o ?o // PB videobånd - h) o (lding Ou // PB holdingselskab - br) occ (oli ?Vk // PB - ma) o (+ o // PB Mao, Maos maosko + o (x V // oxyd + t) o (mas_ V // + th) o (mas_ V // + t) ow (er Au // Tower Bridge + mikr) oovn oVwn // + _) o' ou' // for Irish names - O'Grady + s) outh auT // South Pacific + _h) olmes (_ oums // name + s) oames oums // name + osborne Vsb,On // name + _b) o (nd_ V // Bond Street + k) oor (d oV:? // koordinat + _biot) o (p '?o // stressed + _isot) o (p '?o // stressed +antibi) o (tik '?o // antibiotika + lak) o (ta 'o // stressed + _morm) o (n '?o // stressed + _dæm) o (n '?o // stressed + _matr) o (ne 'o // stressed +_silik) o (ne 'o // stressed + _acet) o (ne 'o // stressed + _amaz) o (ne 'o // stressed + _calz) o (ne 'o // stressed +_chaper) o (ne 'o // stressed +_cicer) o (ne 'o // stressed + _anem) o (ne 'o // stressed + _sign) o (r 'o // signora +_anekd) o (t 'o // anekdote, anekdotisk +_abrik) o (s '?o // stressed +art_dec) o '?o // + o (pofre ?V // + f) o (nt ?V // døbefont, fontæne + ann) on (cA VN // annonce, annoncør - stressed by $alt list + radi) o ?o // radiobil + f) o (b o // fobi +_antil) o (pe 'o // stressed + _t) o (bak ?o' // tobak + vide) o ?o // videobånd + h) o (lding Ou // holdingselskab + br) occ (oli ?Vk // + ma) o (+ o // Mao, Maos maosko - helik) opter '?VptV // PB stressed - helikopter - _eur) o (pa 'o // PB stressed -_eskim) o '?o // PB stressed - _resp) o (ns '?V // PB stressed - _dep) o (t '?o // PB stressed - al) o (ha '?o // PB stressed - dep) o (t '?o // PB - kont) o (r '?o // PB kontor - stressed -korrid) o (r '?o // PB -labrad) o (r '?V // PB - don) or V // PB - mete) o (r '?o // PB + helik) opter '?VptV // stressed - helikopter + _eur) o (pa 'o // stressed +_eskim) o '?o // stressed + _resp) o (ns '?V // stressed + _dep) o (t '?o // stressed + al) o (ha '?o // stressed + dep) o (t '?o // + kont) o (r '?o // kontor - stressed +korrid) o (r '?o // +labrad) o (r '?V // + don) or V // + mete) o (r '?o // matad) o (r '?o // PN - sam) o (a 'o // PB -katastr) ofe 'of3 // PB katastrofe -katastr) ofer 'ofV // PB katastrofer - lit) o (te 'o: // PB stressed - en) o (rm+ 'V // PB stressed - abn) o (rm 'V // PB stressed - def) o (rm 'V // PB stressed -klorof) o (rm 'V // PB stressed - konf) o (rm 'V // PB stressed - ref) o (rm 'V // PB stressed - unif) o (rm 'V // PB stressed - _rev) o (lv '?V // PB stressed - revolver - _kart) o (f '?V // PB stressed - kartofler - am) o (k '?V // PB amok - mon) o (k '?V // PB monokel - stressed - konv) oj '?Vj // PB stressed -mening) oko (k ok'?V // PB meningokokker - hypok) ond (er '?Vnd // PB - h) o (ck+ V // PB hockey -_horis) o (n '?V // PB horisont - _kan) o (n '?o // PB stressed - kan) o (n ?o // PB not stressed after a syllable - bistr) o 'o // PB stressed o in 'bistro' - trik) ot 'o // PB stressed, silent t - er) o (b 'o // PB erobre - stressed o - _er) o (t 'o // PB erot - stressed o - _pil) o (t 'o // PB stressed - pilot - _idi) o (t 'o // PB stressed -_patri) o (t 'o // PB stressed -_cypri) o (t 'o // PB stressed - _matr) o (s 'o // PB stressed -_metad) o (n 'o // PB stressed -_batalj) o (n 'o // PB stressed - ang) o (la 'o // PB stressed -pepper) o (ni 'o // PB stressed - _pr) ovi (ns ov'e // PB provins - stressed i - filos) o (f_ 'V // PB -_filos) o (fi_ o' // PB -_filos) o (fisk 'o //PB - mem) oire o'A: // PB memoire(r) - apr) opos op'o // PB silent s - nark) oti (k 'oti // PB narkotika, narkotisk - _ansj) o (s 'o // PB stressed - ul) o (v 'V // PB stressed o - ulovlig -_paran) oia 'Vj& // PB stressed - _huk) o (mme 'V // PB hukommelse - stressed - _kuj) o (n 'o // PB stressed - komp) o (st 'V // PB stressed - vagab) ond 'Ond // PB stressed - bard) ot 'o // PB Brigitte Bardot - _) oil (_ V:il/2 // PB - cr) oix w'a // PB Delacroix - d) o (nald V // PB name - c) o (ck V // PB cockerspaniel - terr) or Vr // PB terror - b) or (nholm Vr // PB - o (tto V // PB - o (ttende V // PB - r) o (ck V // PB - jackp) o (t V // PB - gr) oggy Vgi // PB groggy - gr) og Vg // PB grog - gr) ogg Vg // PB groggen - k) og (nit Vg // PB kognitiv - og (tredive V // PB fireogtredive - hvalr) o (s V // PB - _) obo ob'o // PB - org (+ O:w // PB sorg, morgen, Norge - org (el O:w // PB orgelet - org (i V:g // PB georgisk - org (ie Vg // PB - ge) org (ine og // PB - o (rga+ V // PB organ - r) or (g oR // PB rorgænger - ov (e+ Ow // PB over, oven, sove - h) o (vere o // PB - ren) ov (er ov // PB renovering - ov (n Ow // PB brændeovn - ov (re Ou // PB derovre - C) ov (+ Ow // PB sjov, lov, skov, plov, provst - j) ov (ist ov' // PB jovist - t) ov (ør ov // PB tatovør - n) ov (icA ov // PB novice, noviciat - sl) ov (ak ov' // PB - d) o (wning a // PB Downing Street - s) ovjet Vwj'Et // PB - kr) o (væ o // PB krovært - ov (erhead Ouv // PB overhead - at) ov (er ov // PB tatovere - k) ov (end ov // PB kovending - ov (ærn+ ov // PB autoværn - vuk) ov (ar ov // PB Vukovar - o (vej+ o // PB kommandovej - o (vi+ o // PB pseudovidenskabelig - tr) o (v+ o // PB troværdig, kontrovers - l) ov (_mig_ ow // PB from the verb "at love" - v) ov (e Ov // PB vove - o (fC V // PB ofte, kofte -torped) o o // PB torpedoflyene - offside Vfs'ajd // PB - sj) o (f o // PB sjofle - h) o (f V // PB hofleverandør - pr) o (f_ V // PB prof = professionel - skiz) o (fren o // PB - n) ov (a++ ov // PB nova, renovation - n) ov (em+ ov // PB november - n) ov (ell ov // PB novelle - bet) on VN // PB betonen - bet) o (ning 'o // PB stressed - bet) o (net o // PB - _m) o (rt V // PB mortadel - o (k V // PB general rule - okker, lok -artisk) o (k 'V // PB stressed - aut) o (+ o // PB autoklub - t) or (t V:? // PB tortur - t) o (t V // PB hårtot, tot, hottentot - t) o (tA o // PB total - em) o (+ o // PB demokrati - mem) o (riam 'o // PB stressed - o (ktob %o // PB stressed next syllable - oktober - sm) o (king o: // PB - j) o (rt V // PB hjort, pjort - kj) o (rt o // PB skjorte, kjortel - gj) o (rt o // PB - k) or (p V: // PB korps - k) or (pi or // PB korpige - k) or (prøve or // PB - g) od (tr oD // PB godtroende - g) od (tAg oD // PB godtage, godtog - d) o (g_+ V // PB dog - bulld) og V:g // PB - v) o (g V // PB vogn, vogte - sv) o (ger O // PB - _v) og (_ ow // PB "han vog den kullede greve" - C) ogn Vwn // PB sogn, vogn - bol) ognese oN'Es3 // PB - bast) ogne 'VNj3 // PB French - gasc) ogne 'VNj3 // PB French - rek) og (noscere V // PB - pr) ogn (o ogn // PB prognose - col) ogn (e l'VNj // PB - boul) ogn (e ''VNj // PB Bois de Boulogne - s) or =V // PB professor - s) orer ''o:V // PB professorer, processorer - _l) o (g_ V // PB log - l) o (gfil V // PB - l) o (gbog Vg // PB - l) ov (e+ ou // PB love - l) ov (en++ Ov // PB lovende - ov (ers++ Ow // PB tilovers, overstå - kontr) ov (ers ov // PB kontroversiel - pl) ov (++ Vw // PB sneplove - l) ondon VndVn // PB London - bl) ond Vnd //PB Keep the d - blondine, blonde - bl) ond (e Vn // PB den blonde pige - problem with noun [blVnd3] + sam) o (a 'o // +katastr) ofe 'of3 // katastrofe +katastr) ofer 'ofV // katastrofer + lit) o (te 'o: // stressed + en) o (rm+ 'V // stressed + abn) o (rm 'V // stressed + def) o (rm 'V // stressed +klorof) o (rm 'V // stressed + konf) o (rm 'V // stressed + ref) o (rm 'V // stressed + unif) o (rm 'V // stressed + _rev) o (lv '?V // stressed - revolver + _kart) o (f '?V // stressed - kartofler + am) o (k '?V // amok + mon) o (k '?V // monokel - stressed + konv) oj '?Vj // stressed +mening) oko (k ok'?V // meningokokker + hypok) ond (er '?Vnd // + h) o (ck+ V // hockey +_horis) o (n '?V // horisont + _kan) o (n '?o // stressed + kan) o (n ?o // not stressed after a syllable + bistr) o 'o // stressed o in 'bistro' + 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 + _idi) o (t 'o // stressed +_patri) o (t 'o // stressed +_cypri) o (t 'o // stressed + _matr) o (s 'o // stressed +_metad) o (n 'o // stressed +_batalj) o (n 'o // stressed + ang) o (la 'o // stressed +pepper) o (ni 'o // stressed + _pr) ovi (ns ov'e // provins - stressed i + filos) o (f_ 'V // +_filos) o (fi_ o' // +_filos) o (fisk 'o // + mem) oire o'A: // memoire(r) + apr) opos op'o // silent s + nark) oti (k 'oti // narkotika, narkotisk + _ansj) o (s 'o // stressed + ul) o (v 'V // stressed o - ulovlig +_paran) oia 'Vj& // stressed + _huk) o (mme 'V // hukommelse - stressed + _kuj) o (n 'o // stressed + komp) o (st 'V // stressed + vagab) ond 'Ond // stressed + bard) ot 'o // Brigitte Bardot + _) oil (_ V:il/2 // + cr) oix w'a // Delacroix + d) o (nald V // name + c) o (ck V // cockerspaniel +// terr) or Vr // terror + b) or (nholm Vr // + o (tto V // + o (ttende V // + r) o (ck V // + jackp) o (t V // + gr) oggy Vgi // groggy + gr) og Vg // grog + gr) ogg Vg // groggen + k) og (nit Vg // kognitiv + og (tredive V // fireogtredive + hvalr) o (s V // + _) obo ob'o // + org (+ Ow // sorg, morgen, Norge + org (el Ow // orgelet + org (i V:g // georgisk + org (ie Vg // + ge) org (ine og // + o (rga+ V // organ + r) or (g oR // rorgænger + ov (e+ Ow // over, oven, sove + h) o (vere o // + ren) ov (er ov // renovering + ov (n Ow // brændeovn + ov (re Ou // derovre + C) ov (+ Ow // sjov, lov, skov, plov, provst + j) ov (ist ov' // jovist + t) ov (ør ov // tatovør + n) ov (icA ov // novice, noviciat + sl) ov (ak ov' // + d) o (wning a // Downing Street + s) ovjet Vwj'Et // + kr) o (væ o // krovært + ov (erhead Ouv // overhead + at) ov (er ov // tatovere + k) ov (end ov // kovending + ov (ærn+ ov // autoværn + vuk) ov (ar ov // Vukovar + o (vej+ o // kommandovej + o (vi+ o // pseudovidenskabelig + tr) o (v+ o // troværdig, kontrovers + l) ov (_mig_ ow // from the verb "at love" + v) ov (e Ov // vove + o (fC V // ofte, kofte +torped) o o // torpedoflyene + offside Vfs'aId // + sj) o (f o // sjofle + h) o (f V // hofleverandør + pr) o (f_ V // prof = professionel + skiz) o (fren o // + n) ov (a++ ov // nova, renovation + n) ov (em+ ov // november + n) ov (ell ov // novelle + bet) on VN // betonen + bet) o (ning 'o // stressed + bet) o (net o // + _m) o (rt V // mortadel + o (k V // general rule - okker, lok +artisk) o (k 'V // stressed + aut) o (+ o // autoklub + t) or (t V:? // tortur + t) o (t V // hårtot, tot, hottentot + t) o (tA o // total + em) o (+ o // demokrati + mem) o (riam 'o // stressed + o (ktob %o // stressed next syllable - oktober + sm) o (king o: // + j) o (rt V // hjort, pjort + kj) o (rt o // skjorte, kjortel + gj) o (rt o // + k) or (p V: // korps + k) or (pi or // korpige + k) or (prøve or // + g) od (tr oD // godtroende + g) od (tAg oD // godtage, godtog + d) o (g_+ V // dog + bulld) og V:g // + v) o (g V // vogn, vogte + sv) o (ger O // + _v) og (_ ow // "han vog den kullede greve" + C) ogn Vwn // sogn, vogn + bol) ognese oN'Es3 // + bast) ogne 'VNj3 // French + gasc) ogne 'VNj3 // French + rek) og (noscere V // + pr) ogn (o ogn // prognose + col) ogn (e l'VNj // + boul) ogn (e ''VNj // Bois de Boulogne + s) or =V // professor + s) orer ''o:V // professorer, processorer + _l) o (g_ V // log + l) o (gfil V // + l) o (gbog Vg // + l) ov (e+ o?u // love, forlover + l) ov (en++ Ov // lovende + ov (ers++ Ow // tilovers, overstå + kontr) ov (ers ov // kontroversiel + pl) ov (++ Vw // sneplove + l) ondon VndVn // London + bl) ond Vnd // Keep the d - blondine, blonde + bl) ond (e Vn // den blonde pige - problem with noun [blVnd3] bl) ond (en_ Vnd // PN noun with d -_en_bl) ond (e_ Vnd // PB noun with d - bl) ond (er Vnd // PB noun with d, plur. - k) ors O:s // PB kors, korsage - k) or (stol o3- // PB - et_k) orset Os'Et // PB - k) orsett Os'Et // PB korsettet, korsetter - c) o (rs O // PB corsage - k) o (gl+ O // PB kogle, kogleri - _d) o (n_ V // PB don juan - pr) o (vA+ o // PB provokere - h) oved o:@-D // PB hoved - kn) o (tn V // PB knotne - tr) od (s V // PB silent d - trods - kl) od (s V // PB silent d - klods - g) od (s O // PB silent d - gods - tr) o (j+ V // PB trojka, Troja -perestr) o (jka 'V // PB stressed - tr) o (jan o // PB trojanerne - p) olish VliS // PB møbelpolish - tr) o (kl V // PB trokle - t) or (_ V // PB faktor, rotor - st) or (+ o3- // PB kæmpestor, historie - t) or (en V // PB faktoren - or (k++ O: // PB orke, morkel, stork +_en_bl) ond (e_ Vnd // noun with d + bl) ond (er Vnd // noun with d, plur. + k) ors O:s // kors, korsage + k) or (stol o3- // + et_k) orset Os'Et // + k) orsett Os'Et // korsettet, korsetter + c) o (rs O // corsage + k) o (gl+ O // kogle, kogleri + _d) o (n_ V // don juan + pr) o (vA+ o // provokere + h) oved o:@-D // hoved + kn) o (tn V // knotne + tr) od (s V // silent d - trods + kl) od (s V // silent d - klods + g) od (s O // silent d - gods + tr) o (j+ V // trojka, Troja +perestr) o (jka 'V // stressed + tr) o (jan o // trojanerne + p) olish VliS // møbelpolish + tr) o (kl V // trokle + t) or (_ V // faktor, rotor + st) or (+ o3- // kæmpestor, historie + t) or (en V // faktoren + or (k++ O: // orke, morkel, stork or (kester+ O - k) or (kåbe or // PB - _st) o (r_ o // PB stor - past) or V // PB - mot) or V // PB startmotor - t) or (s O // PB torsdag, torsk - t) or (ny V // PB tornyster - oy (+ 'Vj // PB destroyer, royal, loyal - v) oyeur VjW:r // PB - r) oyce Vjs // PB Rolls Royce - han) oi Vj // PB - _f) oyer O@j'e // PB - _f) oyeren O@j'e3n // PB - f) oyer O@je // PB - p) o (r O // PB porno - p) or (c V // PB porcelæn - m) oskva Vskv'& // PB - _im) o (d 'o // PB stressed - m) ontana Vnt'&n& // PB - m) o (nitor V // PB - _C) o (_ o // PB jo, ko, lo, so - f) o (d+ o // PB fodre - C) oe (de o: // PB boede, troede - betr) oe (de o@ // PB betroede midler - sk) oe (de o@ // PB - spr) og ow // PB sprog - t) o (gt+ V // PB togt - t) og (tur ow // PB - kl) og (+ Ow // PB klog, klogt - kn) og Vu // PB knogle - t) oi (l o& // PB toilet -repert) oire 'wA: // PB - f) o (rL04+ o // PB aforisme, eufori - ortod) o (ks 'V // PB - l) o (kA o // PB lokal - bl) o (k+ V // PB blokere - k) o (ka o // PB kokasse, kokain - s) o (pra o // PB sopran - oregonpine VregVn||pajn // PB - oklahoma okl&h'om& // PB - _ram) o (na 'o // PB name - b) o (ss V // PB + k) or (kåbe or // + _st) o (r_ o // stor + past) or V // + mot) or V // startmotor + t) or (s O // torsdag, torsk + 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'e3n // + f) oyer O@je // + p) o (r O // porno + p) or (c V // 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 + betr) oe (de o@ // betroede midler + sk) oe (de o@ // + spr) og ow // sprog + t) o (gt+ V // togt + t) og (tur ow // + kl) og (+ Ow // klog, klogt + kn) og Vu // knogle + t) oi (l o& // toilet +repert) oire 'wA: // + f) o (rL04+ o // aforisme, eufori + ortod) o (ks 'V // + l) o (kA o // lokal + bl) o (k+ V // blokere + k) o (ka o // kokasse, kokain + s) o (pra o // sopran + oregonpine VregVn||paIn // + oklahoma okl&h'om& // + _ram) o (na 'o // name + b) o (ss V // - p) oint (_ wEN // PB - p) ointene wEN@n3 // PB - p) ointe wENt@ // PB - p) ointer wENtV // PB - p) oint (ere Vjnt // PB -west_p) oint Vjnt // PB - c) ognac VNak // PB - b) o (m o // PB bombe, bom - b) o (mm++ o // PB bommen - b) ombay Vmb,Ej // PB - k) omet om'et // PB - komm) o (de 'o // PB stressed - L01) o (mman+ o // PB kommando - pomp) on VN // PB pompon - kup) on VN // PB tipskupon - tamp) on VN // PB vattampon - pl) o (m+ o // PB plombe, plombere - o (m_ V // PB alderdom VERY BROAD + p) oint (_ wEN // + p) ointene wEN@n3 // + p) ointe wENt@ // + p) ointer wENtV // + p) oint (ere Vjnt // +west_p) oint Vjnt // + c) ognac VNak // + b) o (m o // bombe, bom + b) o (mm++ o // bommen + b) ombay Vmb,Ej // + k) omet om'et // + komm) o (de 'o // stressed + L01) o (mman+ o // kommando + pomp) on VN // pompon + kup) on VN // tipskupon + tamp) on VN // vattampon + pl) o (m+ o // plombe, plombere + o (m_ V // alderdom VERY BROAD - o (sL11 o // PB rose, skose, pose, prosa - ou u // PB poussin, toupe - miss) ou (ri 'u: // PB stressed - f) ourth O:T // PB Fourth Street - ratat) ouille 'u:j // PB - harb) our V // PB - d) ouche u:S // PB - gr) ou (cho Aw // PB name - kont) o o // PB kontoudtog - b) ourne O:n // PB name - rag) out 'u // PB silent t - s) ou (l Ow // PB soulmusik - slowm) otion OuS-@n // PB - h) ouse Aws // PB -_black) out 'awd // PB blackout - _lay) out 'awd // PB layout - _lock) out 'awd // PB blackout - _drop) out awd // PB dropout - _hand) out awd // PB handout -_knock) out 'awd // PB knockout - _time) out 'awd // PB timeout - _work) out 'awd // PB workout -_astron) out awd // PB - outsider awdsajdV // PB - ohio ouh'ajo // PB -noblesse_) oblige _^_fr // PB noblesse oblige - d) oug Vg // PB Douglas - s) onny Vni // PB name - oprah Owpra // PB name - l) ou u // PB jalousi - vel) ou (r 'u // PB stressed - b) ourbon W:b@n // PB bourbon whisky - ough Vf // PB tough, rough - only 2 words - oun aun // PB discount, greyhound - calh) oun 'un // PB name - _b) o (nn_ V // PB German city + o (sL11 o: // rose, skose, pose, prosa + ou u // poussin, toupe + miss) ou (ri 'u: // stressed + f) ourth O:T // Fourth Street + ratat) ouille 'u:j // + harb) our V // + d) ouche u:S // + gr) ou (cho Aw // name + kont) o o // kontoudtog + b) ourne O:n // name + rag) out 'u // silent t + s) ou (l Ow // soulmusik + slowm) otion OuS-@n // + h) ouse Aws // +_black) out 'awd // blackout + _lay) out 'awd // layout + _lock) out 'awd // blackout + _drop) out awd // dropout + _hand) out awd // handout +_knock) out 'awd // knockout + _time) out 'awd // timeout + _work) out 'awd // workout +_astron) out awd // + outsider awdsaIdV // + ohio ouh'aIo // +noblesse_) oblige _^_fr // noblesse oblige + d) oug Vg // Douglas + s) onny Vni // name + oprah Owpra // name + l) ou u // jalousi + vel) ou (r 'u // stressed + b) ourbon W:b@n // bourbon whisky + ough Vf // tough, rough - only 2 words + oun aun // discount, greyhound + calh) oun 'un // name + _b) o (nn_ V // German city kl) ogere owVV - h) o (ng V // PB Hongkong - @s) o (n_ V // PB Patterson - names with final "son" - TEST - @s) o (ns_ V // PB Pattersons - names with final "sons" - TEST - Cpers) o (n o // PB privatperson - tor) o (nto 'V PB stressed - r) oastbeef Ousdbif // PB roastbeef - illin) ois V:j // PB - ink) og (nito 'Vk // PB - br) oth (er VD // PB - outlaw awtlO: // PB + h) o (ng V // Hongkong + @s) o (n_ V // Patterson - names with final "son" - TEST + @s) o (ns_ V // Pattersons - names with final "sons" - TEST + Cpers) o (n o // privatperson + tor) o (nto 'V // stressed + r) oastbeef Ousdbif // roastbeef + illin) ois V:j // + ink) og (nito 'Vk // + br) oth (er VD // + outlaw awtlO: // -// PB final -ol words in da_list - stressed o +// final -ol words in da_list - stressed o &) ol ($p_alt++ '?ol // parabol, symbol - mong) oliet ol'i@D // PB + mong) oliet ol'i@D // &s) ol ($p_alt+ 'Vl // konsol &s) ol (L04$p_alt+ 'ol // konsolidere &h) ol ($p_alt+ 'Vl // alkohol @@ -6705,43 +6694,43 @@ noblesse_) oblige _^_fr // PB noblesse oblige &tr) ol (e$p_alt 'ol // petroleum &tr) ol (lle$p_alt 'o // kontrollere &st) ol (+$p_alt 'ol // pistol - @id) ol ol // PB popidol + @id) ol ol // popidol - L08) o (lC+ ?V // PB stolt, stolpe - short - _g) oldie Ouldi // PB name - _g) olden (_ Ould-@n // PB Golden Delicious -// L01) o (ld V // PB kold, gold - ravi) o (li 'o // PB stressed o - rob) o (t++ 'V // PB - d) ollar VlV // PB dollar - only this word plus compounds like 'dollargrin' - s) o (l+ ?o // PB sol, soldat - s) o (llys++ o // PB -// o (ld_ V // PB nathold, skjold -// o (lde_ V // PB skjolde, solde - is) olde 'Vld3 // PB name - s) olgt Vlt // PB solgt - exception - kontr) o (l V // PB billetkontrol - kontr) o (ller %O // PB priskontrolleret - kontr) o (llør o // PB - sn) o (t V // PB snot - h) otdog VtdVg // PB - _h) o (t_ V // PB - or (l O: // PB orlov - _) orly (_ O*l'i // PB French airport - oscar VskA // PB - oswald _^_en // PB - oxford VgsfV:d // PB - oakland Wwkl@nd // PB - b) oar (ding O: // PB boardingpas - _) o (liver V // PB name - d) ono (van Vn3 // PB name - bl) ow '@w // PB blowjob - sp) o (nsor V // PB - _h) o (liday V // PB + 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 // +// o (ld_ V // nathold, skjold +// o (lde_ V // skjolde, solde + is) olde 'Vld3 // name + s) olgt Vlt // solgt - exception + kontr) o (l V // billetkontrol + kontr) o (ller %O // priskontrolleret + kontr) o (llør o // + sn) o (t V // snot + h) otdog VtdVg // + _h) o (t_ V // + or (l O: // orlov + _) orly (_ O*l'i // French airport + oscar VskA // + oswald _^_en // + oxford VgsfV:d // + oakland Wwkl@nd // + b) oar (ding O: // boardingpas + _) o (liver V // name + d) ono (van Vn3 // name + bl) ow '@w // blowjob + sp) o (nsor V // + _h) o (liday V // .group on -// PB stressed o in words ending with -ion/-on - around 750 $alt words in da_list +// 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 @@ -6758,17 +6747,17 @@ noblesse_) oblige _^_fr // PB noblesse oblige &el) on ($p_alt '?on // melon &) on (el$p_alt++ on // rationel -// PB exceptions to the -on rule (and other -on exception) +// exceptions to the -on rule (and other -on exception) stadi) on Vn ne) on Vn k) ong VN s) on (d Vn // sondere leksik) on Vn liban) on Vn // Libanon - h) on (d Vn // PB Honduras, Honda - _m) on (te_ Vn // PB Monte Carlo + h) on (d Vn // Honduras, Honda + _m) on (te_ Vn // Monte Carlo on (dL04 Vn // ondulere, pondus, gondol - p) on (t Vn // PB spontan, ponton + p) on (t Vn // spontan, ponton arg) on Vn dral) on Vn fre) on Vn @@ -6781,14 +6770,14 @@ dødvægtt) on Vn gall) on Vn bis) on Vn gibb) on Vn - sp) ond Vnd' // PB korrespondance, spondæ + sp) ond Vnd' // korrespondance, spondæ kol) on (_ Vn kol) onn 'Vn // kolonne - only one n, stressed - gn) on VN // PB champignon, kompagnon, chignon + gn) on VN // champignon, kompagnon, chignon _pavill) on 'VN pavill) on VN orl) on Vn -_maked) on 'on // PB makedoner +_maked) on 'on // makedoner perl) on Vn _sal) on 'VN sal) on VN @@ -6797,139 +6786,141 @@ _maked) on 'on // PB makedoner sæs) on VN // jagtsæson tefl) on Vn t) on (_ Vn // ton, kiloton - fot) on 'on // PB stressed - marat) on Vn // PB maratonløb - br) on VN // PB bronze, bronkitis - kart) on 'VN // PB mælkekarton - t) on (ic Vn // PB - t) on (s_ Vn // PB tons - t) on (sv Vn // PB tonsvis - megat) on Vn // PB - alf) on (s 'VN // PB alfons - f) ond Vnd // PB + fot) on 'on // stressed + marat) on Vn // maratonløb + br) on VN // bronze, bronkitis + kart) on 'VN // mælkekarton + t) on (ic Vn // + t) on (s_ Vn // tons + t) on (sv Vn // tonsvis + megat) on Vn // + alf) on (s 'VN // alfons + f) ond Vnd // _ball) on 'VN - perr) on 'VN // PB - alis) on Vn // PB name -robins) on Vn // PB name - m) onty Vnti // PB name - b) on (_ VN // PB kassebon - b) on (en_ VN // PB kassebonen - karb) on 'VN // PB stressed - karb) on (at on // PB lituimkarbonat - b) onjour VNZ'ur // PB - b) onbon VNbVn // PB - on (tol Vn // PB ontologi - monot) on 'on // PB monotont - monot) on (i on' // PB monotoni + perr) on 'VN // + alis) on Vn // name +robins) on Vn // name + m) onty Vnti // name + b) on (_ VN // kassebon + b) on (en_ VN // kassebonen + karb) on 'VN // stressed + karb) on (at on // lituimkarbonat + b) onjour VNZ'ur // + b) onbon VNbVn // + on (tol Vn // ontologi + monot) on 'on // monotont + monot) on (i on' // monotoni .group or - alv) or V // PB alvor -// or (L04+ or // PB favorit - or (ienter Vr // PB venstreorienterede - v) or (L11+ or // PB favorabel - v) or (_ O // PB - f) or (_ V // PB for - derf) or V // PB derfor - tayl) or V // PB name -helsingf) or (s 'V // PB stressed - f) or (en O // PB fagforening - _f) or (_vild_ %or // PB verb - sekt) or V // PB sektoren - k) or (t O: // PB kort - k) or (tA O: // PB korte - t) or (L06 O // PB torpedere - or (to Vr // PB ortodoks - m) orge O:@- // PB morgen - dek) or (_ 'V:r // PB dekor - rapp) or (t 'O: // PB rapport - f) or (t_ O: // PB fort - f) ort (sæt O:d // PB fortsæt - _komf) or (t 'O: // PB stressed - m) or (f O: // PB morfar - m) or (m O: // PB mormor, mormon - m) or (se O: // PB morse - hum) or V // PB - sp) or (t O: // PB sport - eksp) or (t 'O: // PB - s) or (t or // PB sort - st) or (t or // PB stort - sv) or (e+ or // PB svoret - _) or (i V // PB orientere - _) or (a or // PB orange - orm orm // PB - f) or (m_ O: // PB form - f) or (mC O: // PB formgive - f) or (me O: // PB forme - f) or (mere V // PB formere - _h) ormon Om'on // PB - n) or (m O // PB - st) or (m O: // PB - b) or (t O: // PB bortforklare - _ab) or 'O:d // PB stressed - or (al oR // PB oral - _esk) or (te 'V: // PB eskorte - _n) or (d or // PB nord, nordisk - n) or (sk O: // PB norsk - v) or (e+ O: // PB vores - hv) or ?O // PB hvorfra, hvorved - rek) or (d 'O: // PB exception - stressed o in 'rekord' - ak) or (d 'O: // PB exception - stressed o in 'akord' - s) or (te or // PB sorte - rep) or (ter 'V // PB stressed o - s) or (tA O // PB sortiment -_transp) or (t 'O: // PB stressed - transport - n) orth V:T // PB - rekt) or V // PB rektorforening + alv) or O // alvor +// or (L04+ or // favorit + or (ienter Vr // venstreorienterede + v) or (L11+ or // favorabel + v) or (_ O // + f) or (_ V // for + derf) or V // derfor + tayl) or V // name +helsingf) or (s 'V // stressed + f) or (en O // fagforening + _f) or (_vild_ %or // verb + sekt) or V // sektoren + k) or (t ?O: // kort + k) or (tA ?O: // korte + t) or (L06 O // torpedere + or (to O: // ortodoks, ortopæd + m) orge O:@- // morgen + dek) or (_ 'V:r // dekor + rapp) or (t 'O: // rapport + f) or (t_ O: // fort + f) ort (sæt O:d // fortsæt + _komf) or (t 'O: // stressed + m) or (f O: // morfar + m) or (m O: // mormor, mormon + m) or (se O: // morse + hum) or V // + hum) or (i OR // humorist + sp) or (t O: // sport + eksp) or (t 'O: // + s) or (t or // sort + st) or (t or // stort + sv) or (e+ or // svoret + _) or (i V // orientere + _) or (a or // orange + orm orm // + f) or (m_ O: // form + f) or (mC O: // formgive + f) or (me O: // forme + f) or (mere V // formere + _h) ormon Om'on // + n) or (m O: // normal - length 90 in ph_danish + st) or (m O: // + b) or (t O: // bortforklare + _ab) or 'O:d // stressed + or (al oR // oral + _esk) or (te 'V: // eskorte + _n) or (d or // nord, nordisk + n) or (sk O: // norsk + v) or (e+ O: // vores + hv) or ?O // hvorfra, hvorved + rek) or (d 'O: // exception - stressed o in 'rekord' + ak) or (d 'O: // exception - stressed o in 'akord' + s) or (te or // sorte + rep) or (ter 'V // stressed o + s) or (tA O // sortiment +_transp) or (t 'O: // stressed - transport + n) orth V:T // + rekt) or V // rektorforening -// PB when "ord" means 'word', the d isn't pronunced - ord (++ or // PB ord , forord -// PB Exceptions to the or rule - "ord" doesn't mean "word" - k) ord (el Vrd // PB kordel - v) ord (e Vrd // PB helliget vorde dit navn - h) ord (e O:d // PB - b) ordeaux oRd'o // PB - conc) ord (e 'V:d // PB Concorde - g) ord (on V:d // PB name - n) ordisk ordisg // PB - _l) ord (_ V:d // PB - _l) ord (er_ Vrd // PB - _akk) ord 'V:?d // PB stressed - hv) ord (an Vrd // PB hvordan - m) ord (er ord // PB morder - m) ord (et oR // PB mordet - f) ord (+ V:d // PB Fordbil - f) ord (æ Vd' // PB fordærve - f) ord (ø Vd' // PB fordømme - v) ord (i 'Vrd // PB gernvordighed - ord (en+ O:d // PB orden, ordensmagt - b) orde (nde orE // PB - ord (ene+ oR // PB ordene - ord (enen+ O:d // PB ordenen - t) ord (enen+ ord // PB tordenen - _t) ord (++ ord // PB torden, tordne - j) ord (en oV // PB fjorden jorden - j) ord (an oRd // PB Jordan - j) ord (i oRd // PB jordisk - ord (entlig+ 'O:d // PB overordentlig - stressed - ord (ne+ O:d // PB ordne - ord (nin 'O:d // PB ordning, forordning - ordre (+ O:drV // PB ordre, ordrebog - k) ord (reng ord // PB kordrenge - _) ord (ret+ or // PB ordret - ord (retil+ Ord // PB ordretilgang - ord (ruk Vd' // PB fordrukken - ord (in+ Vrd // PB ordinær - b) ord (el Vrd' // PB bordel - v) or (t O: // PB vorte - ordonnans Vrdon'&ns // PB ordonnans - ordrup ordr0b // PB Ordrup - Danish town -// C) ore (_ o:V // PB more, store - b) ore oV // PB borerum - m) orel or'&#l // PB morel - _) orleans V:lens // PB New Orleans +// when "ord" means 'word', the d isn't pronunced + ord (++ or // ord , forord + orde (_ o:V // komme til orde +// Exceptions to the or rule - "ord" doesn't mean "word" + k) ord (el Vrd // kordel + v) ord (e Vrd // helliget vorde dit navn + h) ord (e O:d // + b) ordeaux oRd'o // + conc) ord (e 'V:d // Concorde + g) ord (on V:d // name + n) ordisk ordisg // + _l) ord (_ V:d // + _l) ord (er_ Vrd // + _akk) ord 'V:?d // stressed + hv) ord (an Vrd // hvordan + m) ord (er ord // morder + m) ord (et oR // mordet + f) ord (+ V:d // Fordbil + f) ord (æ Vd' // fordærve + f) ord (ø Vd' // fordømme + v) ord (i 'Vrd // gernvordighed + ord (en+ O:d // orden, ordensmagt + b) orde (nde orE // + ord (ene+ oR // ordene + ord (enen+ O:d // ordenen + t) ord (enen+ ord // tordenen + _t) ord (++ ord // torden, tordne + j) ord (en oV // fjorden jorden + j) ord (an oRd // Jordan + j) ord (i oRd // jordisk + ord (entlig+ 'O:d // overordentlig - stressed + ord (ne+ O:d // ordne + ord (nin 'O:d // ordning, forordning + ordre (+ O:drV // ordre, ordrebog + k) ord (reng ord // kordrenge + _) ord (ret+ or // ordret + ord (retil+ Ord // ordretilgang + ord (ruk Vd' // fordrukken + ord (in+ Vrd // ordinær + b) ord (el Vrd' // bordel + v) or (t O: // vorte + ordonnans Vrdon'&ns // ordonnans + ordrup ordr0b // Ordrup - Danish town +// C) ore (_ o:V // more, store + b) ore oV // borerum + m) orel or'&#l // morel + _) orleans V:lens // New Orleans -// PB stress on previous syllable - '-tor_' (also -or) nouns in da_list +// stress on previous syllable - '-tor_' (also -or) nouns in da_list &) or ($p_alt+ ==V // karburator, rollator, multiplikator, junior &) or (i$p_alt+ V' // konditori &) or (er$p_alt ''o: // karburatorer, juniorer @@ -6939,505 +6930,515 @@ _transp) or (t 'O: // PB stressed - transport &t) or (ie$p_alt 'or // laboratoriet - conflict with -ium rule &t) orium ($p_alt+ 'oriOm // don't spoil the -ium rule - laboratorium &) or (isk$p_alt ''o // manipulatorisk - mot) or (er 'o // PB flymotorer - d) or ($p_alt+ 'or // PB kondor - n) or ($p_alt+ 'or // PB sonor + mot) or (er 'o // flymotorer + d) or ($p_alt+ 'or // kondor + n) or ($p_alt+ 'or // sonor -// PB no stress on initial 'for' - 1.550 words. +// no stress on initial 'for' - 1.550 words. // Secondary stress on the next syllable after a syllable. - _f) or (@++ %V // PB fork'ølet, fordr'ev -// _f) or (mL11++ %V // PB formane, formaning, formene - f) or (@ V, // PB s'ommerfork,ølet - _f) ore (g++ O:O // PB foregå, foregive + _f) or (@++ %V // fork'ølet, fordr'ev +// _f) or (mL11++ %V // formane, formaning, formene + f) or (@ V, // s'ommerfork,ølet + _f) ore (g++ O:O // foregå, foregive // exceptions to initial 'for' below - 'for' means "front/fore" - _f) or (a_+ 'O: // PB fora (plur. of 'forum') - _f) or (an_+ 'O: // PB foran - _f) or (ude_+ 'O: // PB forude - _f) or (ankørende+ 'O: // PB forankørende - _f) or (annævnt+ 'O: // PB forannævnt - _f) or (ansat+ 'O: // PB foransat - _f) or (anstille+ 'O: // PB foranstillet - _f) or (anstående+ 'O: // PB foranstående - _f) or (ben_+ 'O: // PB forben - _f) or (bens+ 'O: // PB forbens - _f) or (benene+ 'O: // PB forbenene - _f) or (behand+ 'O: // PB forbehandle - _f) or (beho+ 'O: // PB forbehold - _f) or (bered+ 'O: // PB forberede - _f) or (bil+ 'O: // PB forbillede - _f) or (bjerg+ 'O: // PB forbjerg - _f) or (bogstav+ 'O: // PB forbogstav - _f) or (bud_+ 'O: // PB forbud - _f) or (buds+ 'O: // PB forbudstiden - _f) or (bund+ 'O: // PB forbund - _f) or (bøn+ 'O: // PB forbøn - _f) or (censur+ 'O: // PB forcensur - _f) or (danser+ 'O: // PB fordanser - _f) or (del_+ 'O: // PB fordel - _f) or (delen_+ 'O: // PB fordelen - _f) or (dom+ 'O: // PB fordom - _f) or (dring+ 'O: // PB fordring, fordringdfri - _f) or (dæk_+ 'O: // PB fordæk - _f) or (dæks+ 'O: // PB fordæks - _f) or (dækkene+ 'O: // PB fordækkene - _f) or (dør+ 'OR // PB - _f) ore (Cr++ '0:3 // PB foreberinge, foregribe - _f) ore (l_+ or'&#l // PB - _f) ore (lle+ or'&#l // PB foreller (fish) - _f) ore (n+ V'e: // PB forene, forening - genf) ore (n+ Ve: // PB genforene - f) ore (sC+ 0:3 // PB forestiller - _f) or (el_+ or // PB forel - _f) or (et_+ 'o3 // PB foret - _f) or (elsk+ V' // PB forelske - _f) orend (e+ 'O:,en // PB forende - _f) orenkl (e+ V'enkl // PB forenkle - _f) orenkl (ing V'enkl // PB forenkling - _f) orensis (k or'&#nsis // PB forensisk - _f) oretag (som %V3't&: // PB foretagsom - _f) orev (ige V'e:v // PB forevige - _f) or (fader+ 'O: // PB forfader - _f) or (far+ 'O: // PB forfar - _f) or (fædr+ 'O: // PB forfædre - _f) or (gårs+ O: // PB - f) or (ter+ O // PB plur. - _f) or (fang+ O // PB forfang - _f) or (felt+ O // PB forfelt - _f) or (film+ O // PB forfilm - _f) or (fjor+ O // PB forfjor - _f) or (ford+ O // PB forfordele - _f) or (forfod+ O // PB forfod - _f) or (forstærk+ O // PB forforstærker - _f) or (forsøg+ O // PB forforsøg - _f) or (fra+ 'O: // PB forfra - _f) or (foryserum+ V // PB forfryserum - _f) or (fødder+ O // PB forfødder - _f) or (gast+ O // PB forgast - _f) or (gang+ 'O: // PB forgang, forgangen - _f) or (gemak+ 'O: // PB forgemak - _f) or (grund+ 'O: // PB forgrund - _f) or (gænger+ 'O: // PB forgænger - _f) or (gære+ 'O: // PB forgære - _f) or (gård+ 'O: // PB forgård - _f) or (hal+ 'O: // PB forhal - f) or (halA++ %O // PB forhale, forhaling - _f) or (ham+ 'O: // PB forhammer - _f) or (have+ 'O: // PB forhave - _f) or (hen+ 'O: // PB forhenværende - _f) or (histo+ 'O: // PB forhistorie, forhistorisk - _f) or (hjul+ 'O: // PB forhjul, forhjulstrukken - _f) or (hold+ 'O: // PB forhold, forholdsvis - _f) or (holde %V // PB forholde sig til - _f) or (holdet+ 'O: // PB forholdet - _f) or (hud+ 'O: // PB forhud - _f) or (hus+ 'O: // PB forhus - _f) or (hæng+ 'O: // PB forhæng - _f) or (hånd+ 'O: // PB forhånd - _f) or (hånds+ 'O: // PB forhåndsindtryk - _f) or (ring_ O: // PB foring - _f) or (ringen O: // PB foringen - _f) or (kammer 'O: // PB forkammer - _f) or (kant+ O': // PB forkant - _f) or (karl+ 'O: // PB forkarl - _f) or (klog+ 'O: // PB forklog, forklogskab - _f) or (klædet+ 'O: // PB forklædet - _f) or (kontor+ 'O: // PB forkontor - _f) or (krop+ 'O: // PB forkrop - _f) or (kvinde+ 'O: // PB forkvinde - _f) or (kæmper+ 'O: // PB forkæmper - _f) or (kærlighed 'O: // PB forkærlighed - _f) or (køb+ 'O: // PB forkøbet, forkøbsret - _f) or (kørselsret O // PB forkørselsret - _f) or (lag+ 'O: // PB forlag - _f) or (lags+ 'O: // PB forlagsret - _f) or (land+ 'O: // PB forland - _f) or (lem+ 'O: // PB forlem - _f) or (lover+ 'O: // PB forlover - _f) or (lyd+ 'O: // PB forlyd + _f) or (a_+ 'O: // fora (plur. of 'forum') + _f) or (an_+ 'O: // foran + _f) or (ude_+ 'O: // forude + _f) or (ankørende+ 'O: // forankørende + _f) or (annævnt+ 'O: // forannævnt + _f) or (ansat+ 'O: // foransat + _f) or (anstille+ 'O: // foranstillet + _f) or (anstående+ 'O: // foranstående + _f) or (ben_+ 'O: // forben + _f) or (bens+ 'O: // forbens + _f) or (benene+ 'O: // forbenene + _f) or (behand+ 'O: // forbehandle + _f) or (beho+ 'O: // forbehold + _f) or (bered+ 'O: // forberede + _f) or (bil+ 'O: // forbillede + _f) or (bjerg+ 'O: // forbjerg + _f) or (bogstav+ 'O: // forbogstav + _f) or (bud_+ 'O: // forbud + _f) or (buds+ 'O: // forbudstiden + _f) or (bund+ 'O: // forbund + _f) or (bøn+ 'O: // forbøn + _f) or (censur+ 'O: // forcensur + _f) or (danser+ 'O: // fordanser + _f) or (del_+ 'O: // fordel + _f) or (delen_+ 'O: // fordelen + _f) or (dom+ 'O: // fordom + _f) or (dring+ 'O: // fordring, fordringdfri + _f) or (dæk_+ 'O: // fordæk + _f) or (dæks+ 'O: // fordæks + _f) or (dækkene+ 'O: // fordækkene + _f) or (dør+ 'OR // + _f) ore (Cr++ '0:3 // foreberinge, foregribe + _f) ore (l_+ or'&#l // + _f) ore (lle+ or'&#l // foreller (fish) + _f) ore (n+ V'e: // forene, forening + genf) ore (n+ Ve: // genforene + f) ore (sC+ 0:3 // forestiller + _f) or (el_+ or // forel + _f) or (et_+ 'o3 // foret + _f) or (elsk+ V' // forelske + _f) orend (e+ 'O:,en // forende + _f) orenkl (e+ V'enkl // forenkle + _f) orenkl (ing V'enkl // forenkling + _f) orensis (k or'&#nsis // forensisk + _f) oretag (som %V3't&: // foretagsom + _f) orev (ige V'e:v // forevige + _f) or (fader+ 'O: // forfader + _f) or (far+ 'O: // forfar + _f) or (fædr+ 'O: // forfædre + _f) or (gårs+ O: // + f) or (ter+ O // plur. + _f) or (fang+ O // forfang + _f) or (felt+ O // forfelt + _f) or (film+ O // forfilm + _f) or (fjor+ O // forfjor + _f) or (ford+ O // forfordele + _f) or (forfod+ O // forfod + _f) or (forstærk+ O // forforstærker + _f) or (forsøg+ O // forforsøg + _f) or (fra+ 'O: // forfra + _f) or (foryserum+ V // forfryserum + _f) or (fødder+ O // forfødder + _f) or (gast+ O // forgast + _f) or (gang+ 'O: // forgang, forgangen + _f) or (gemak+ 'O: // forgemak + _f) or (grund+ 'O: // forgrund + _f) or (gænger+ 'O: // forgænger + _f) or (gære+ 'O: // forgære + _f) or (gård+ 'O: // forgård + _f) or (hal+ 'O: // forhal + f) or (halA++ %O // forhale, forhaling + _f) or (ham+ 'O: // forhammer + _f) or (have+ 'O: // forhave + _f) or (hen+ 'O: // forhenværende + _f) or (histo+ 'O: // forhistorie, forhistorisk + _f) or (hjul+ 'O: // forhjul, forhjulstrukken + _f) or (hold+ 'O: // forhold, forholdsvis + _f) or (holde %V // forholde sig til + _f) or (holdet+ 'O: // forholdet + _f) or (hud+ 'O: // forhud + _f) or (hus+ 'O: // forhus + _f) or (hæng+ 'O: // forhæng + _f) or (hånd+ 'O: // forhånd + _f) or (hånds+ 'O: // forhåndsindtryk + _f) or (ring_ O: // foring + _f) or (ringen O: // foringen + _f) or (kammer 'O: // forkammer + _f) or (kant+ O': // forkant + _f) or (karl+ 'O: // forkarl + _f) or (klog+ 'O: // forklog, forklogskab + _f) or (klædet+ 'O: // forklædet + _f) or (kontor+ 'O: // forkontor + _f) or (krop+ 'O: // forkrop + _f) or (kvinde+ 'O: // forkvinde + _f) or (kæmper+ 'O: // forkæmper + _f) or (kærlighed 'O: // forkærlighed + _f) or (køb+ 'O: // forkøbet, forkøbsret + _f) or (kørselsret O // forkørselsret + _f) or (lag+ 'O: // forlag + _f) or (lags+ 'O: // forlagsret + _f) or (land+ 'O: // forland + _f) or (lem+ 'O: // forlem + _f) or (lover+ '?O: // forlover + _f) or (lyd+ 'O: // forlyd _f) or (lydende+ O' - _f) or (lygte+ 'O: // PB forlygte - _f) or (lys+ 'O: // PB forlys - _f) orlyst Vl'Wsd // PB forlyste, forlystelse - _f) or (lægger 'O: // PB forlægger - _f) or (læns+ 'O: // PB forlæns - _f) or (læse+ 'O: // PB forlæse - _f) or (maldehyd+ 'O: // PB formaldehyd - _f) or (mand+ 'O: // PB formand, formandsskifte - _f) or (mænd+ 'O: // PB formænd - _f) or (mbar+ 'O: // PB formbar - _f) or (mbrød+ 'O: // PB formbrød - _f) or (me++ 'O: // PB forme, formel - _f) or (mere++ V // PB formere - _f) or (meri++ V // PB formering - _f) or (mle+ 'O: // PB formlen - _f) or (melig+ 'O: // PB formelig - _f) ormer (_+ 'O::mV // PB former - problem with "formér" - _f) or (mfast+ 'O:: // PB formfast - _f) or (mfri+ 'O:: // PB formfri - _f) or (fuldendt+ 'O:: // PB formfuldendt - _f) or (mgiv+ 'O:: // PB formgive - _f) or (middag+ 'O:: // PB formiddag - _f) or (mkage+ 'O:: // PB formkage - _f) or (mlære+ 'O:: // PB formglære - _f) or (mløs+ 'O:: // PB formløs - _f) or (mning+ 'O:: // PB formning - _f) or (mor+ 'O:: // PB formor - like forefather - _f) or (mødre+ 'O:: // PB formødre - _f) or (mpresse+ 'O:: // PB formpresse - _f) or (ms+ 'O: // PB formsikker, formskære, formsprog, formstof - _f) ormssag (+ 'O:ms,s& // PB formssag - _f) or (mtø+ 'O: // PB formtørre - _f) or (mue+ 'O: // PB formue, formueskat - _f) or (mynder+ 'O: // PB formynder, formynderisk - _f) or (mål+ 'O: // PB formål, formålstjenelig - _f) or (navn+ 'O: // PB fornavn - _f) or (nem_+ 'O: // PB fornem - _f) or (nemt_+ 'O: // PB fornemt - _f) or (omtale+ 'O: // PB foromtale - _f) or (ord+ 'O: // PB forord - _f) or (ordn O // PB forordning - _f) or (over+ 'O: // PB forover - _f) or (panthaver+ 'O: // PB forpanthaver - _f) or (parti+ 'O: // PB forparti - _f) or (post+ 'O: // PB forpost - _f) or (praktik+ 'O: // PB forpraktik - _f) or (premiere+ 'O: // PB forpremiere - _f) or (programmere+ 'O: // PB forprogrammere - _f) or (prøve+ 'O: // PB forprøve - _f) or (på+ 'O: // PB forpå - _f) or (rang+ 'O: // PB forrang - _f) or (rest+ 'O: // PB forrest - _f) or (ret+ 'O: // PB forret - _f) or (rette+ V' // PB forrette - _f) or (retni+ V // PB forretningsmand - _f) or (rider+ 'O: // PB forrider - _f) or (rige+ 'O: // PB forrige - _f) or (rude+ 'O: // PB forrude - _f) or (råd_+ 'O: // PB forråd - _f) or (slag+ 'O: // PB forslag - _f) or (sanger+ 'O: // PB forsanger - _f) or (sats+ 'O: // PB forsats, forsatsrude - _f) or (side+ 'O: // PB forside - _f) or (ske+ 'O: // PB forske - _f) or (skn+ 'O: // PB forskning - _f) or (skelli+ %O // PB forskellig - _f) or (sker+ 'O: // PB forsker, forskerby - _f) or (skel_+ 'O: // PB forskel - _f) or (skelsbehandl+ 'O: // PB forskelsbehandle, -behandling - _f) or (skelsløs+ 'O: // PB forskelsløs - _f) or (skol+ 'O: // PB forskole, forskoling - _f) or (skrift+ 'O: // PB forskrift - _f) or (skud+ 'O: // PB forskud - _f) or (skyl+ 'O: // PB forskyl - _f) or (skyldt+ O' // PB forskyldt - _f) or (skære+ 'O: // PB forskære, -bræt - _f) or (skærm+ 'O: // PB forskærm - _f) or (slag_+ 'O: // PB forslag - _f) or (slags+ 'O: // PB forslas, -stiller - _f) or (sæde+ 'O: // PB - _f) or (læbe+ 'O: // PB forlæbe - _f) or (smag+ 'O: // PB forsmag - _f) or (sommer+ 'O: // PB forsommer - _f) or (sorg+ 'O: // PB forsorg - _f) or (spand+ 'O: // PB forspand - _f) or (spil_+ 'O: // PB forspil - _f) or (spillet+ 'O: // PB forspillet - _f) or (spillene+ 'O: // PB forspillene - _f) or (spir+ 'O: // PB forspire - _f) or (spring+ 'O: // PB forspring - _f) or (spændt+ 'O: // PB forspændt - _f) or (stad+ 'O: // PB forstad, forstadium + _f) or (lygte+ '?O: // forlygte + _f) or (lys+ 'O: // forlys + _f) orlyst Vl'Wsd // forlyste, forlystelse + _f) or (lægger+ 'O: // forlægger + _f) or (læns+ 'O: // forlæns + _f) or (læse+ 'O: // forlæse + _f) or (maldehyd+ 'O: // formaldehyd + _f) or (mand+ 'O: // formand, formandsskifte + _f) or (mænd+ 'O: // formænd + _f) or (mbar+ 'O: // formbar + _f) or (mbrød+ 'O: // formbrød + _f) or (me++ 'O // forme + _f) or (mel++ '?O // formel + _f) or (mene++ V // formene + _f) or (mente++ V // formente + _f) or (mere++ V // formere + _f) or (meri++ V // formering + _f) or (mle+ 'O: // formlen + _f) or (melig+ 'O: // formelig + _f) ormer (_+ 'O::mV // former - problem with "formér" + _f) or (mfast+ 'O:: // formfast + _f) or (mfri+ 'O:: // formfri + _f) or (fuldendt+ 'O:: // formfuldendt + _f) or (mgiv+ 'O:: // formgive + _f) or (middag+ 'O:: // formiddag + _f) or (mkage+ 'O:: // formkage + _f) or (mlære+ 'O:: // formglære + _f) or (mløs+ 'O:: // formløs + _f) or (mning+ 'O:: // formning + _f) or (mor+ 'O:: // formor - like forefather + _f) or (mødre+ 'O:: // formødre + _f) or (mpresse+ 'O:: // formpresse + _f) or (ms+ 'O: // formsikker, formskære, formsprog, formstof + _f) ormssag (+ 'O:ms,s& // formssag + _f) or (mtø+ 'O: // formtørre + _f) or (mue+ 'O: // formue, formueskat + _f) or (mynder+ 'O: // formynder, formynderisk + _f) or (mål+ 'O: // formål, formålstjenelig + _f) or (navn+ 'O: // fornavn + _f) or (nem_+ 'O: // fornem + _f) or (nemt_+ 'O: // fornemt + _f) or (omtale+ 'O: // foromtale + _f) or (ord+ 'O: // forord + _f) or (ordn O // forordning + _f) or (over+ 'O: // forover + _f) or (panthaver+ 'O: // forpanthaver + _f) or (parti+ 'O: // forparti + _f) or (post+ 'O: // forpost + _f) or (praktik+ 'O: // forpraktik + _f) or (premiere+ 'O: // forpremiere + _f) or (programmere+ 'O: // forprogrammere + _f) or (prøve+ 'O: // forprøve + _f) or (på+ 'O: // forpå + _f) or (rang+ 'O: // forrang + _f) or (rest+ 'O: // forrest + _f) or (ret+ 'O: // forret + _f) or (rette+ V' // forrette + _f) or (retni+ V // forretningsmand + _f) or (rider+ 'O: // forrider + _f) or (rige+ 'O: // forrige + _f) or (rude+ 'O: // forrude + _f) or (råd_+ 'O: // forråd + _f) or (slag+ 'O: // forslag + _f) or (sanger+ 'O: // forsanger + _f) or (sats+ 'O: // forsats, forsatsrude + _f) or (side+ 'O: // forside + _f) or (ske+ 'O: // forske + _f) or (skn+ 'O: // forskning + _f) or (skelli+ %O // forskellig + _f) or (sker+ 'O: // forsker, forskerby + _f) or (skel_+ 'O: // forskel + _f) or (skelsbehandl+ 'O: // forskelsbehandle, -behandling + _f) or (skelsløs+ 'O: // forskelsløs + _f) or (skol+ 'O: // forskole, forskoling + _f) or (skrift+ 'O: // forskrift + _f) or (skud+ 'O: // forskud + _f) or (skyl+ 'O: // forskyl + _f) or (skyldt+ O' // forskyldt + _f) or (skære+ 'O: // forskære, -bræt + _f) or (skærm+ 'O: // forskærm + _f) or (slag_+ 'O: // forslag + _f) or (slags+ 'O: // forslas, -stiller + _f) or (sæde+ 'O: // + _f) or (læbe+ 'O: // forlæbe + _f) or (smag+ 'O: // forsmag + _f) or (sommer+ 'O: // forsommer + _f) or (sorg+ 'O: // forsorg + _f) or (spand+ 'O: // forspand + _f) or (spil_+ 'O: // forspil + _f) or (spillet+ 'O: // forspillet + _f) or (spillene+ 'O: // forspillene + _f) or (spir+ 'O: // forspire + _f) or (spring+ 'O: // forspring + _f) or (spændt+ 'O: // forspændt + _f) or (stad+ 'O: // forstad, forstadium _f) or (stæder+ 'O: - _f) or (stander+ 'O: // PB forstander - _f) or (stavelse+ 'O: // PB forstavelse - _f) or (stavn+ 'O: // PB forstavn - _f) or (stbotanik+ 'O: // PB forstbotanik - _f) or (stkandidat+ 'O: // PB forstkandidat - _f) or (stlig+ 'O: // PB forstlig - _f) or (stmand+ 'O: // PB forstmand - _f) or (stmæssig+ 'O: // PB forstmæssig - _f) or (studie+ 'O: // PB forstudie - _f) or (studium+ 'O: // PB forstudum - _f) or (stue+ 'O: // PB forstue - _f) or (stvæsen+ 'O: // PB forstvæsen - _f) or (stzoologi+ 'O: // PB forstzoologi - _f) or (stævn+ 'O: // PB forstævn - _f) or (svar_+ 'O: // PB forsvar - _en_f) or (svarer+ 'O: // PB forsvarer - noun - _f) or (svars+ 'O: // PB forsvarschef - _f) or (sæt+ 'O: // PB forsæt - _f) or (så_+ 'O: // PB forså - _f) ortaler+ 'O:t&lV // PB fortaler - _f) or (tand+ 'O: // PB fortand - _f) or (tands+ 'O: // PB fortands - _f) or (tænder+ 'O: // PB fortænder - _f) or (tegn_+ 'O: // PB fortegn - _f) or (tegningsret+ 'O: // PB fortegningsret - _f) or (tekst+ 'O: // PB fortekst - _f) or (telt+ 'O: // PB fortelt - _f) or (tfarende+ 'O: // PB fortfarende - _f) or (tid+ 'O: // PB fortid - _f) or (til+ 'O: // PB fortil - _f) or (tløbende+ 'O: // PB fortløbende - _f) or (tog+ 'O: // PB fortog - _f) or (tov+ 'O: // PB fortov - _f) or (trappe+ 'O: // PB fortrappe - _f) or (trin_+ 'O: // PB fortrin - _f) or (trins+ 'O: // PB fortrinsret - _f) or (trop+ 'O: // PB fortrop - _f) or (tryk+ 'O: // PB fortryk - _f) ort (sætte+ 'O:d // PB fortsætte - _f) or (tunge+ 'O: // PB fortunge - _f) or (tæppe+ 'O: // PB fortæppe - _f) or (ud++ 'O: // PB ud, forud, forudsætte - _f) oruden (_+ O:'uD@-n // PB foruden - _f) or (valg+ 'O: // PB forvalg - _f) or (varm+ 'O: // PB forvarme, forvarmning - _f) or (vars+ 'O: // PB forvarsle, forvarsling - _f) or (vask_+ 'O: // PB forvask - _f) or (vejen+ 'O: // PB forvejen - _f) or (værelse+ 'O: // PB forværelse - _f) or (åd+ 'O: // PB foråd - _f) or (år+ 'O: // PB forår - prof) or (ma 'O: // PB stressed + _f) or (stander+ 'O: // forstander + _f) or (stavelse+ 'O: // forstavelse + _f) or (stavn+ 'O: // forstavn + _f) or (stbotanik+ 'O: // forstbotanik + _f) or (stkandidat+ 'O: // forstkandidat + _f) or (stlig+ 'O: // forstlig + _f) or (stmand+ 'O: // forstmand + _f) or (stmæssig+ 'O: // forstmæssig + _f) or (studie+ 'O: // forstudie + _f) or (studium+ 'O: // forstudum + _f) or (stue+ 'O: // forstue + _f) or (stvæsen+ 'O: // forstvæsen + _f) or (stzoologi+ 'O: // forstzoologi + _f) or (stævn+ 'O: // forstævn + _f) or (svar_+ 'O: // forsvar + _en_f) or (svarer+ 'O: // forsvarer - noun + _f) or (svars+ 'O: // forsvarschef + _f) or (sæt+ 'O: // forsæt + _f) or (så_+ 'O: // forså + _f) ortaler+ 'O:t&lV // fortaler + _f) or (tand+ 'O: // fortand + _f) or (tands+ 'O: // fortands + _f) or (tænder+ 'O: // fortænder + _f) or (tegn_+ 'O: // fortegn + _f) or (tegningsret+ 'O: // fortegningsret + _f) or (tekst+ 'O: // fortekst + _f) or (telt+ 'O: // fortelt + _f) or (tfarende+ 'O: // fortfarende + _f) or (tid+ 'O: // fortid + _f) or (til+ 'O: // fortil + _f) or (tløbende+ 'O: // fortløbende + _f) or (tog+ 'O: // fortog + _f) or (tov+ 'O: // fortov + _f) or (trappe+ 'O: // fortrappe + _f) or (trin_+ 'O: // fortrin + _f) or (trins+ 'O: // fortrinsret + _f) or (trop+ 'O: // fortrop + _f) or (tryk+ 'O: // fortryk + _f) ort (sætte+ 'O:d // fortsætte + _f) or (tunge+ 'O: // fortunge + _f) or (tæppe+ 'O: // fortæppe + _f) or (ud++ 'O: // ud, forud, forudsætte + _f) oruden (_+ O:'uD@-n // foruden + _f) or (valg+ 'O: // forvalg + _f) or (varm+ 'O: // forvarme, forvarmning + _f) or (vars+ 'O: // forvarsle, forvarsling + _f) or (vask_+ 'O: // forvask + _f) or (vejen+ 'O: // forvejen + _f) or (værelse+ 'O: // forværelse + _f) or (åd+ 'O: // foråd + _f) or (år++ 'O: // forår + prof) or (ma 'O: // stressed .group p p p pp p to) pp (ost pp - _) på (P2 p'V // PB prefix - påtage, påmontere - _) på (ske p'O // PB not a prefix - påske - _) på (lide pV // PB pålidelig - _) på (vis pV // PB påvist - på (fund pV // PB reklamepåfund - på (virk pV // PB miljøpåvirkning - på (læg pV // PB håndspålæggelse - &) p (_ p // PB hjælp + _) på (P2 p'V // prefix - påtage, påmontere + _) på (ske p'O // not a prefix - påske + _) på (lide pV // pålidelig + _) på (vis pV // påvist + på (fund pV // reklamepåfund + på (virk pV // miljøpåvirkning + på (læg pV // håndspålæggelse + &) p (_ p // hjælp p (syk // psykolog [s,ykol'o] - sym) p (tom // PB silent p + sym) p (tom // silent p cam) pb (el b // silent p - Campbell - pipeline pajplajn // PB + pipeline paIplaIn // pitchpine peTSpa:jn // pb - praline pRAlin'e // PB - punchline pVnSlajn // PB - parfait pAf'E // PB - presbyterian prEsbytEri'&n // PB - protege prod@S'e // PB protege - protegé prod@S'e // PB protegé - _) passager p&s&sj'er // PB passager - peanut pi:nVd // PB - pseu sWw // PB pseudo - posthum pOsth'um // PB - _) pete (_ pi:t // PB name - _) petey pi:ti // PB name - paige pE:jdZ // BPB name - penelope pen'Elopi // PB - pony pVni // PB - peugeot pWS'o // PB car - _) pearl (_ pW:l // PB Pearl Harbor - pierre pjE:r // PB French name - perkins pWkens // PB name - pissoir pesw'A: // PB - peace pi:s // PB Greenpeace - paille (t p&j'E // PB stressed - pasadena p&s&d'in& // PB - perth pW:T // PB - pincenez pa:Nsn'e // PB - ra) phael f&'El // PB name - ral) ph f // PB name - picku (p pik'V // PB - peignoir pEnjw'A: // PB - palm (_beach pA:m // PB - paintball pEjntbO:l // PB - jose) ph f // PB - percy pWsi // PB name - _) piggy pigi // PB Miss Piggy - _) pétain pet'&N // PB name - _) poitier pwAtj'e // PB name - _) poirot pwAr'o // PB name - _) piaf pjAf // PB Edith Piaf - _) purvis p'3:ves // PB name + praline pRAlin'e // + punchline pVnSlaIn // + parfait pAf'E // + presbyterian prEsbytEri'&n // + protege prod@S'e // protege + protegé prod@S'e // protegé + _) passager p&s&sj'er // passager + peanut pi:nVd // + pseu sWw // pseudo + posthum pOsth'um // + _) pete (_ pi:t // name + _) petey pi:ti // name + paige pE:jdZ // name + penelope pen'Elopi // + pony pVni // + peugeot pWS'o // car + _) pearl (_ pW:l // Pearl Harbor + pierre pjE:r // French name + perkins pWkens // name + pissoir pesw'A: // + peace pi:s // Greenpeace + paille (t p&j'E // stressed + peru per'u // stressed + pasadena p&s&d'in& // + perth pW:T // + pincenez pa:Nsn'e // + ra) phael f&'El // name + ral) ph f // name + picku (p pik'V // + peignoir pEnjw'A: // + palm (_beach pA:m // + paintball pEjntbO:l // + jose) ph f // + percy pWsi // name + _) piggy pigi // Miss Piggy + _) pétain pet'&N // name + _) poitier pwAtj'e // name + _) poirot pwAr'o // name + _) piaf pjAf // Edith Piaf + _) purvis p'3:ves // name .group ph - ph (il f // PB spelling error - no dot in 'phil.' - phillippe fil'i:p // PB French name - phoe fi // PB Phoenix - philadelphia fil&d'Elfi& // PB + ph (il f // spelling error - no dot in 'phil.' + phillippe fil'i:p // French name + phoe fi // Phoenix + philadelphia fil&d'Elfi& // .group q q k - @) que =k // PB petanque, Monique - quez kE:s // PB Vasquez - quebec kvib'Ek // PB - bou) quet k''e // PB - queen kwi:n // PB - te) qu (ila 'k // PB tequila - qui (z kvi // PB - quiche kiS // PB - quijote kiS'Vt // PB name - quixote kiS'Vt // PB name - qu (isling kv // PB - quarter kwOtV // PB + @) que =k // petanque, Monique + quez kE:s // Vasquez + quebec kvib'Ek // + bou) quet k''e // + queen kwi:n // + te) qu (ila 'k // tequila + qui (z kvi // + quiche kiS // + quijote kiS'Vt // name + quixote kiS'Vt // name + qu (isling kv // + quarter kwOtV // .group r r r rr r -// PB verb and noun ending - rre (_ 3-V // PB tørre, herre - rrer (_ 3-V // PB tørrer, herrer - rrer (ne_ 3-V // PB tørrerne, herrerne - A) re (_++ V // PB hore, store - silent r - A) re (n_ 3-V // PB frisøren, fyren - A) re (ns_ 3-V // PB frisørens, fyrens - C) re (_ rV // PB after consonant: ad the r - sejre, venstre, ældre +// verb and noun ending + rre (_ 3-V // tørre, herre + rrer (_ 3-V // tørrer, herrer + rrer (ne_ 3-V // tørrerne, herrerne + A) re (_++ V // hore, store - silent r + 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 + C) re (st_ R?V // taprest + C) re (ste_ R?V // tapreste A) res (_ Vs - C) rer (_++ rV // PB beundrer - @) rer (_$p_alt+++ ''rEr // PB stressed - operer - @) rer (e_$p_alt+++ ''rE // PB stressed - operere, opererer - @) rer (es_$p_alt+++ r''E // PB stressed - opereres - C) ret (_++ rVD // PB ændret - A) rer (_++ V // PB horer - A) ret (_++ VD // PB horet - A) rerne (_++ Vn@- // PB horerne - A) rerne (s_++ Vn@- // PB horernes - A) rene (_ Vn@- // PB hærene - A) rene (s_ Vn@- // PB hærenes - æ) re (+ V // PB ærefrygt, kæreste + 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 + A) rer (_++ V // horer + A) ret (_++ 3-VD // horet, fyret + 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 -// PB "ret" exceptions - not a verb or noun ending - _) ret (_++ r&#t // PB - skue) ret (++ r&#t // PB - klage) ret (++ r&#t // PB - købe) ret (++ r&#t // PB -skatte) ret (++ r&#t // PB - lige) ret (++ r&#t // PB - møde) ret (++ r&#t // PB -påtale) ret (++ r&#t // PB - råde) ret (++ r&#t // PB - skole) ret (++ r&#t // PB -straffe) ret (++ r&#t // PB -sædvane) ret (++ r&#t // PB - tale) ret (++ r&#t // PB - veto) ret (++ r&#t // PB -borger) ret r&#t // PB - ind) ret (++ r&#t // PB - regel) ret (++ r&#t // PB - hen) ret (_ r&#t // PB - _ord) ret (++ r&#t // PB ordret oversættelse -menneske) ret (++ r&#t // PB - fiske) ret (++ r&#t // PB - liv) ret (++ r&#t // PB -færdig) ret (++ r&#t // PB -stemme) ret (++ r&#t // PB - arve) ret (++ r&#t // PB - bygge) ret (++ r&#t // PB - _laza) ret (++ '&#t // PB - bytte) ret (++ r&#t // PB -dagpenge) ret (++ r&#t // PB - ene) ret (++ r&#t // PB +// "ret" exceptions - not a verb or noun ending + _) ret (_++ r&#t // + skue) ret (++ r&#t // + klage) ret (++ r&#t // + købe) ret (++ r&#t // +skatte) ret (++ r&#t // + lige) ret (++ r&#t // + møde) ret (++ r&#t // +påtale) ret (++ r&#t // + råde) ret (++ r&#t // + skole) ret (++ r&#t // +straffe) ret (++ r&#t // +sædvane) ret (++ r&#t // + tale) ret (++ r&#t // + veto) ret (++ r&#t // +borger) ret r&#t // + ind) ret (++ r&#t // + regel) ret (++ r&#t // + hen) ret (_ r&#t // + _ord) ret (++ r&#t // ordret oversættelse +menneske) ret (++ r&#t // + fiske) ret (++ r&#t // + liv) ret (++ r&#t // +færdig) ret (++ r&#t // +stemme) ret (++ r&#t // + arve) ret (++ r&#t // + bygge) ret (++ r&#t // + _laza) ret (++ '&#t // + bytte) ret (++ r&#t // +dagpenge) ret (++ r&#t // + ene) ret (++ r&#t // rett (++++ r?&#t // henrette, rettroende - only one t - s) ret (++ &#t // PB rigsret -højeste) ret (++ &#t // PB -familie) ret (++ r&#t // PB - by) ret (++ r&#t // PB - lands) ret (++ r&#t // PB - marga) ret (++ &#t // PB name - naza) ret (++ &#t // PB name - under) ret (++ r&#t // PB -første) ret (++ r&#t // PB - gryde) ret (++ r&#t // PB - _tabu) ret (++ '&#t // PB - u) ret (_++ 3D // PB -ret_og_u) ret (+ r&#t // PB - gør_u) ret (++ r&#t // PB -gøre_u) ret (++ r&#t // PB -e_mig_u) ret (++ r&#t //PB gjorde mig uret -e_dig_u) ret (++ r&#t //PB gjorde dig uret -e_os_u) ret (++ r&#t //PB gjorde os uret -e_dem_u) ret (++ r&#t //PB gjorde dem uret -t_mig_u) ret (++ r&#t //PB gjort mig uret -t_dig_u) ret (++ r&#t //PB gjort dig uret -t_dem_u) ret (++ r&#t //PB gjort dem uret -t_jer_u) ret (++ r&#t //PB gjort jer uret -t_os_u) ret (++ r&#t //PB gjort os uret -gjort_u) ret (++ r&#t //PB gjort uret -gøre_u) ret (++ r&#t //PB gøre uret - en_u) ret (++ r&#t // PB begå en uret - _u) ret (_mod_++ r&#t // PB begå uret mod - dig_u) ret (++ r&#t // PB har alle andre end dig uret + s) ret (++ &#t // rigsret +højeste) ret (++ &#t // +familie) ret (++ r&#t // + by) ret (++ r&#t // + lands) ret (++ r&#t // + marga) ret (++ &#t // name + naza) ret (++ &#t // name + under) ret (++ r&#t // +første) ret (++ r&#t // + gryde) ret (++ r&#t // + _tabu) ret (++ '&#t // + u) ret (_++ 3D // +ret_og_u) ret (+ r&#t // + gør_u) ret (++ r&#t // +gøre_u) ret (++ r&#t // +e_mig_u) ret (++ r&#t // gjorde mig uret +e_dig_u) ret (++ r&#t // gjorde dig uret +e_os_u) ret (++ r&#t // gjorde os uret +e_dem_u) ret (++ r&#t // gjorde dem uret +t_mig_u) ret (++ r&#t // gjort mig uret +t_dig_u) ret (++ r&#t // gjort dig uret +t_dem_u) ret (++ r&#t // gjort dem uret +t_jer_u) ret (++ r&#t // gjort jer uret +t_os_u) ret (++ r&#t // gjort os uret +gjort_u) ret (++ r&#t // gjort uret +gøre_u) ret (++ r&#t // gøre uret + en_u) ret (++ r&#t // begå en uret + _u) ret (_mod_++ r&#t // begå uret mod + dig_u) ret (++ r&#t // har alle andre end dig uret - _) rhode RWwd // PB Rhodes - rheu (ma RVj // PB rheumatoid - rickshaw rekSV: // PB rickshaw - rickshawer rekSV:V // PB rickshawer - riverside rivVsajd // PB Riverside Drive - _) reservoir resErvo'a: // PB - reservoir resErvoa: // PB - recut rikVd // PB - reggae REgEj // PB - right R'ajt // PB all right - research ris'W:tS // PB - rioja ri'Vk& // PB wine - ramirez _^_ES // PB name - reece ri:s // PB name - roquefort rVkf'V: // PB cheese - roger rVdZV // PB name - russell rVs@-l // PB name - _) robie rVbi // PB name - resolution REsoluS'on // PB - _) road (_ rWwd // PB - rugby RVgbi // PB -virtual_) reality ri'&liti // PB - reagan REg&n // PB name - rodney rVdni // PB name - renoir r@nw'A: // PB name + _) rhode RWwd // Rhodes + rheu (ma RVj // rheumatoid + rickshaw rekSV: // rickshaw + rickshawer rekSV:V // rickshawer + riverside rivVsaId // Riverside Drive + _) reservoir resErvo'a: // + reservoir resErvoa: // + recut rikVd // + reggae REgEj // + right R'aIt // all right + research ris'W:tS // + rioja ri'Vk& // wine + ramirez _^_ES // name + reece ri:s // name + roquefort rVkf'V: // cheese + roger rVdZV // name + russell rVs@-l // name + _) robie rVbi // name + resolution REsoluS'on // + _) road (_ rWwd // + rugby RVgbi // +virtual_) reality ri'&liti // + reagan REg&n // name + rodney rVdni // name + renoir r@nw'A: // name r (K r // not followed by a vowel - hve) r r // PB hver - b) r r // bror - se) r (_ r // PB ser - he) r (_ r // PB her - je) re (s V // PB jeres - de) re (s V // PB deres - kø) re V // PB køretøj - ho) re V // PB horeunge - smø) re V // PB smørefedt - hav) re rV // PB havregryn - bekym) ret rVD // PB bekymret - _ent) re (_ R'e // PB entre + hve) r r // hver + b) r 3- // bror + se) r (_ r // ser + he) r (_ r // her + je) re (s V // jeres + de) re (s V // deres + kø) re V // køretøj + ho) re V // horeunge + smø) re V // smørefedt + hav) re rV // havregryn + bekym) ret rVD // bekymret + _ent) re (_ R'e // entre bu) rd (eK rd æ) r (er_N // silent r - skærer æ) re (_N V // silent r - skære - læ) re V // PB lærerigt - sæ) reg (en rej // PB særegenhed -// g) re (_ rV // PB yngre - sa) rd (el rd // PB sardel - ga) rde rd@- // PB garde + læ) re V // lærerigt + sæ) reg (en 3-ej // særegenhed + sæ) reg (ne 3-ej // særegne + æ) rgre 3-wRV // ærgre, ærgrelse + æ) rger 3-wV // ærgerlig + sa) rd (el rd // sardel + ga) rde rd@- // garde ve) rd (eKK rd - hå) rd // PB silent rd - hård - hå) rd (e : // PB hårde - y) rd (e_ rd // PB myrde, byrde + hå) rd // silent rd - hård + hå) rd (e : // hårde + y) rd (e_ rd // myrde, byrde o) rd (el++ rd - o) rd (en++ rd // PB exception - pronounce d in 'orden, ordentlig' + o) rd (en++ rd // exception - pronounce d in 'orden, ordentlig' o) rd (rin d - e) r (e_N // PB hellere - dia) re r'e // PB diare + e) r (e_N // hellere + dia) re r'e // diare diar) re r'e -transpo) r (t //PB transport - au_) revoir r@w'a:r // PB au revoir - rouge ru:S // PB - richie RitSi // PB name - rajah rAdZ& // PB - home_) run RVn // PB - richelieu riSlj'W // PB name - reality ri'&liti // PB - rushmore rVSmO: // PB name +transpo) r (t // transport + au_) revoir r@w'a:r // au revoir + rouge ru:S // + richie RitSi // name + rajah rAdZ& // + home_) run RVn // + richelieu riSlj'W // name + reality ri'&liti // + rushmore rVSmO: // name -// PB words ending with -ri in da_list have a stressed "i" +// words ending with -ri in da_list have a stressed "i" // The stress is kept in compounds where a word is added after the word. // If a word is added before the word, it reverts to normal stress // If -isk is added the previous syllable gets the stress @@ -7447,360 +7448,365 @@ transpo) r (t //PB transport .group s s s ss s - s (sh s // PB lysshow - sc (e s // PB scene - ssi (o S // PB depression - fa) sc s // PB fascinere - di) sc (ip s' // PB disciple -fransi) sc (o =sk // PB - taba) sc (o =sk // PB Tabasco - ma) sc (ara sk' // PB maskara - di) sc (ount sk' // PB - sc (rap sk // PB scrapbog - s (cigar s // PB majscigaret - sc (oo sk // PB scooter, scoop - _) sh S // PB shaman - _) shirley SWli // PB name - fi) sh (er S // PB - shot SVt // PB snapshot - shaw SO: // PB name - sc (or sk // PB score - me) sc (al sk // PB - sco (t skV // PB Scotland Yard - skateboard skEjtbO:d // PB - shaughnessy SOnEsi // PB name - sully sVli // PB name - spielberg spilbW:g // PB name - sotheby sVD3bi // PB name - shelagh Si:l& // PB name + s (sh s // lysshow + sc (e s // scene + ssi (o S // depression + fa) sc s // fascinere + di) sc (ip s' // disciple +fransi) sc (o =sk // + taba) sc (o =sk // Tabasco + ma) sc (ara sk' // maskara + di) sc (ount sk' // + sc (rap sk // scrapbog + s (cigar s // majscigaret + sc (oo sk // scooter, scoop + _) sh S // shaman + _) shirley SWli // name + fi) sh (er S // + shot SVt // snapshot + shaw SO: // name + sc (or sk // score + me) sc (al sk // + sco (t skV // Scotland Yard + skateboard skEjtbO:d // + shaughnessy SOnEsi // name + sully sVli // name + spielberg spilbW:g // name + sotheby sVD3bi // name + shelagh Si:l& // name -// PB/JD s suffix - $alt words in da_list +///JD s suffix - $alt words in da_list // 2-3.000 words end with s, so this cannot be a general suffix. // There would be too many exceptions. &) s (_$p_altS1 s - abce) s s // PB not a suffix - rece) s s // PB not a suffix - exce) s s // PB not a suffix - kommi) s (_ = // PB not a suffix, silent s, stressed i - kommi) s (e // PB not a suffix, silens s - kommissen - ky) s s // PB not a suffix -anderlede) s s // PB not a suffix -interferen) s s // PB not a suffix -eksisten) s s // PB -residen) s s // PB + abce) s s // not a suffix + rece) s s // not a suffix + exce) s s // not a suffix + kommi) s (_ = // not a suffix, silent s, stressed i + kommi) s (e // not a suffix, silens s - kommissen + ky) s s // not a suffix +anderlede) s s // not a suffix +interferen) s s // not a suffix +eksisten) s s // +residen) s s // - pu) sh S // PB pusher - mo) sh (e S // PB name - tri) sh S // PB name - mar) sh S // PB Marsha - na) sh S // PB name - bi) sh (op S // PB name/noun - pa) sh (a S // PB - e) scort sk'V:t // PB -franci) sc (o sk // PB Francisco - e) sc (obar sk // PB Spanish name - port_) said s&'id // PB city in Egypt - @@) som =sVm // PB stress on previous syllable - opmærksom - s (omkost+ s // PB Sundhedsomkostninger - kromo) som s'om // PB stressed + pu) sh S // pusher + mo) sh (e S // name + tri) sh S // name + mar) sh S // Marsha + na) sh S // name + bi) sh (op S // name/noun + pa) sh (a S // + e) scort sk'V:t // +franci) sc (o sk // Francisco + e) sc (obar sk // Spanish name + port_) said s&'id // city in Egypt + @@) som =sVm // stress on previous syllable - opmærksom + s (omkost+ s // Sundhedsomkostninger + kromo) som s'om // stressed s (A s s (ie s - si (on S // PB changed from "s (ion S" - division + si (on S // changed from "s (ion S" - division s (j s - sch S // PB changed from [s(ch] - gullasch - salg) s s // PB salgschef - sh (erif S // PB - su) sh (i S // PB - ha) sh S // PB - sch (ool sk // PB - sherman SW:m&n // PB Sherman kampvogn - schweiz svajts // PB - sioux su: // PB red indian - al) sace 's&s // PB Alsace (French region) - _) sion si:Vn // PB Sion, Sions kirke - _) substitution substituS'on // PB - substitution substituSon // PB - shine sjajn@ // PB - saloon s&l'u:n // PB - skyline skajlajn // PB - slimline slemlajn // PB - support sOp'Vrd // PB - sheik Sajk // PB - sicilien sis'ili@n // PB - Italian island - scene sen3 // PB - scener senV // PB - i) scene (s s'en@ // PB stressed 'e - iscenesætte - speak spi:k // PB eSpeak - siegfried _^_DE // PB - slovakiet slov&k'i@D // PB - show Sou // PB - sydney sidni // PB - shakespeare SEiksbi:r // PB - suther sVDV // PB Southerland - squash sgwVS // PB - sussex sVsEgs // PB - shire S@ // PB British towns with final -shire - seamus SEim@s // PB name - _) steve sti:v // PB name - _) steven sti:v@n // PB name - sheila Si:l& // PB name - shor (t SO // PB shorts - _) stone sdoun // PB namde - Stone -empire_) state (_ stEjt // PB - _) sir (_ sW: // PB Sir Arthur - sher (wood SW // PB Sherwood Forrest - surf sWf // PB windsurfing - la) sur sur // PB lasurfarve - _) sugar (_ SugV // PB Sugar Ray - savoir s&voa: // PB savoir-faire - sonya sVnj& // PB name - sophie sOufi // PB name - sightseeing sajtsi:eN // PB - spitfire spetfajV // PB - suffolk sVfVk // PB - screwdriver skRudrajvV // PB - sunday sVndi // PB Sunday Times - solsjenitsyn sVlsj@n'itsin // PB - sloane slOwn // PB name - swanee swVni // PB Swanee River - sweet swi:t // PB + sch S // changed from [s(ch] - gullasch + salg) s s // salgschef + sh (erif S // + su) sh (i S // + ha) sh S // + sch (ool sk // + sherman SW:m&n // Sherman kampvogn + schweiz svaIts // + sioux su: // red indian + al) sace 's&s // Alsace (French region) + _) sion si:Vn // Sion, Sions kirke + _) substitution substituS'on // + substitution substituSon // + shine sjaIn@ // + saloon s&l'u:n // + skyline skaIlaIn // + slimline slemlaIn // + support sOp'Vrd // + sheik SaIk // + sicilien sis'ili@n // - Italian island + scene sen3 // + scener senV // + i) scene (s s'en@ // stressed 'e - iscenesætte + speak spi:k // eSpeak + siegfried _^_DE // + slovakiet slov&k'i@D // + show Sou // + sydney sidni // + shakespeare SEiksbi:r // + suther sVDV // Southerland + squash sgwVS // + sussex sVsEgs // + shire S@ // British towns with final -shire + seamus SEim@s // name + _) steve sti:v // name + _) steven sti:v@n // name + sheila Si:l& // name + shor (t SO // shorts + _) stone sdoun // namde - Stone +empire_) state (_ stEjt // + _) sir (_ sW: // Sir Arthur + sher (wood SW // Sherwood Forrest + surf sWf // windsurfing + la) sur sur // lasurfarve + _) sugar (_ SugV // Sugar Ray + savoir s&voa: // savoir-faire + sonya sVnj& // name + sophie sOufi // name + sightseeing saItsi:eN // + spitfire spetfaIV // + suffolk sVfVk // + screwdriver skRudraIvV // + sunday sVndi // Sunday Times + solsjenitsyn sVlsj@n'itsin // + sloane slOwn // name + swanee swVni // Swanee River + sweet swi:t // - er_) sig (_til saj // PB avoid [si] - glæder sig [saj] til - et_) sig (_til saj // PB avoid [si] - glædet sig [saj] til - e_) sig (_til saj // PB avoid [si] - glæde sig [saj] til - bare_) sig (_til si // PB verb - er_) sig (_ saj // PB avoid [si] - vænner sig - sig (_undskyld+ si // PB eller sig undskyld - _) sig (_mig si // PB sig mig engang - e_) sig (_mig saj // PB nærme sig mig - et_) sig (_ saj // PB avoid [si] vænnet sig - e_) sig (_+ saj // PB avoid [si] vænne sig, kaldte sig - gøre_) sig (_det saj // PB gøre sig det besvær - år_) sig (_ saj // PB han får sig en tår - bød_) sig (_ saj // PB chancen bød sig - sig (_det si // PB sig det med blomster - bare_) sig (_ si // PB bare sig sanddheden - _af_) sig (_ saj // PB avoid [si] af sig selv - _med_) sig (_ saj // PB med sig havde han ... - _han_) sig (_ saj // PB avoid [si] sluttede han sig til - t_) sig (_ saj // PB holdt sig fra, opført sig - sat_) sig (_ saj // PB sat sig op mod - lod_) sig (_ saj // PB lod sig udskrive - gav_) sig (_ saj // PB gav sig til, overgav sig - _) sig (_selv saj // PB noget for sig selv - _) sig (_for saj // PB han holdt sig for sig selv - _) sig (_i_deC saj // PB Han fandt sig i det/dem - for_) sig (_ saj // PB se noget for sig - fra_) sig (_ saj // PB slå fra sig - til_) sig (_ saj // PB tage noget til sig - gav_) sig (_til saj // PB overgav sig til - An_) sig (_til saj // PB beslutter han/hun sig til - _de_) sig (_til saj // PB beslutter de sig til - stå_) sig (_ saj // PB stå sig godt med - den_) sig (_ saj // PB holder den sig flydende -er_folk_) sig (_ saj // PB hvordan morer folk sig - _) sig (_med saj // PB - slå_) sig (_ saj // PB - på_) sig (_ saj // PB - _i_) sig (_ saj // PB - slår_) sig (_ saj // PB - _) sig (_alene saj // PB klare sig alene - _) sig (_over saj // PB brokke sig over -vende_) sig (_ saj // PB -erklære_) sig (_ saj // PB -betro_) sig (_ saj // PB -betror_) sig (_ saj // PB - føle_) sig (_ saj // PB -hygge_) sig (_ saj // PB - skød_) sig (_ saj // PB - sneg_) sig (_ saj // PB - slog_) sig (_ saj // PB - tog_) sig (_ saj // PB - kom_) sig (_ saj // PB -tvang_) sig (_ saj // PB tiltvang sig adgang - brød_) sig (_ saj // PB - ør_) sig (_ saj // PB klør sig, gør sig - man_) sig (_ saj // PB føler man sig - hun_) sig (_ saj // PB gemmer hun sig - han_) sig (_ saj // PB - de_) sig (_ saj // PB - _) sig (_ud_ saj // PB rode sig ud i - _) sig (_af_ saj // PB tage sig af - _) sig (_på_ saj // PB slå sig på - _) sig (_ind_ saj // PB bilde sig ind - ak_) sig (_ saj // PB drak sig fuld - gik_) sig (_ saj // PB gik sig en tur - så_) sig (_om saj // PB så sig om/omkring - ser_) sig (_om saj // PB ser sig om/omkring - _) sig (_om saj // PB kjolen smøg sig om kroppen - red_) sig (_ saj // PB red sig en tur + er_) sig (_til saI // avoid [si] - glæder sig [saj] til + et_) sig (_til saI // avoid [si] - glædet sig [saI] til + e_) sig (_til saI // avoid [si] - glæde sig [saI] til + bare_) sig (_til si // verb + snor_) sig (_ saI // snor sig som en slange + er_) sig (_ saI // avoid [si] - vænner sig + sig (_undskyld+ si // eller sig undskyld + _) sig (_mig si // sig mig engang + e_) sig (_mig saI // nærme sig mig + et_) sig (_ saI // avoid [si] vænnet sig + e_) sig (_+ saI // avoid [si] vænne sig, kaldte sig + gøre_) sig (_det saI // gøre sig det besvær + år_) sig (_ saI // han får sig en tår + bød_) sig (_ saI // chancen bød sig + sig (_det si // sig det med blomster + bare_) sig (_ si // bare sig sanddheden + _af_) sig (_ saI // avoid [si] af sig selv + _med_) sig (_ saI // med sig havde han ... + _han_) sig (_ saI // avoid [si] sluttede han sig til + t_) sig (_ saI // holdt sig fra, opført sig + sat_) sig (_ saI // sat sig op mod + lod_) sig (_ saI // lod sig udskrive + gav_) sig (_ saI // gav sig til, overgav sig + _) sig (_selv saI // noget for sig selv + _) sig (_for saI // han holdt sig for sig selv + _) sig (_i_deC saI // Han fandt sig i det/dem + for_) sig (_ saI // se noget for sig + fra_) sig (_ saI // slå fra sig + til_) sig (_ saI // tage noget til sig + gå_) sig (_ saI // gå sig en tur + få_) sig (_ saI // få sig en lur + gav_) sig (_til saI // overgav sig til + An_) sig (_til saI // beslutter han/hun sig til + _de_) sig (_til saI // beslutter de sig til + stå_) sig (_ saI // stå sig godt med + den_) sig (_ saI // holder den sig flydende +er_folk_) sig (_ saI // hvordan morer folk sig + _) sig (_med saI // + slå_) sig (_ saI // + på_) sig (_ saI // + _i_) sig (_ saI // + slår_) sig (_ saI // + _) sig (_alene saI // klare sig alene + _) sig (_over saI // brokke sig over +vende_) sig (_ saI // +erklære_) sig (_ saI // +betro_) sig (_ saI // +betror_) sig (_ saI // + føle_) sig (_ saI // +hygge_) sig (_ saI // + skød_) sig (_ saI // + sneg_) sig (_ saI // + slog_) sig (_ saI // + tog_) sig (_ saI // + kom_) sig (_ saI // +tvang_) sig (_ saI // tiltvang sig adgang + brød_) sig (_ saI // + ør_) sig (_ saI // klør sig, gør sig + man_) sig (_ saI // føler man sig + hun_) sig (_ saI // gemmer hun sig + han_) sig (_ saI // + de_) sig (_ saI // + _) sig (_ud_ saI // rode sig ud i + _) sig (_af_ saI // tage sig af + _) sig (_på_ saI // slå sig på + _) sig (_ind_ saI // bilde sig ind + ak_) sig (_ saI // drak sig fuld + gik_) sig (_ saI // gik sig en tur + så_) sig (_om saI // så sig om/omkring + ser_) sig (_om saI // ser sig om/omkring + _) sig (_om saI // kjolen smøg sig om kroppen + red_) sig (_ saI // red sig en tur -// PB use [sV] instead of [sO] - er_) så (_ sV // PB du virker så bekendt - _) så (_ham+ sO // PB vidner så ham - es_) så (_ sV // PB du føles så skrøbelig - _) så (_fik_ sV // PB så fik du en idé - r_) så (_bange sV // PB jeg er/var så bange - re_) så (_ sV // PB være så dum - blev_) så (_ sV // PB det blev så slemt - med_) så (_ sV // PB med så kort varsel - hold_) så (_ sV // PB hold så op med det -vil_du_) så (_ sV // PB vil du så gøre det? -vil_de_) så (_ sV // PB vil De så gøre det? -vil_i_) så (_ sV // PB vil I så gøre det? - vil_) så (_ sV // PB jo, du vil så -blive_) så (_ sV // PB jeg kan blive så vred - _dig_) så (_ sV // PB hvorfor giftede du dig så? - _) så (_havde_ sV // PB - _) så (_bliver_ sV // PB - _) så (_blev_ sV // PB - _) så (_have_ sV // PB - _) så (_kan_ sV // PB - _) så (_går_ sV // PB - _) så (_gå_ sV // PB - _) så (_her_ sV // PB - _) så (_lad_ sV // PB - _) så (_lang_ sV // PB ikke så lang tid - _) så (_nær_ sV // PB - _) så (_skete_ sV // PB - _) så (_skal_ sV // PB - _) så (_ved_ sV // PB - _) så (_vi_kan_ sV // PB - _) så (_kom_ sV // PB - _) så (_kommer_ sV // PB - _) så (_tager_ sV // PB - _) så (_gik_ sV // PB - _) så (_hold_ sV // PB - _) så (_gøre_ sV // PB - _) så (_ville_ sV // PB - _) så (_sikker_ sV // PB - _) så (_besværlig sV // PB -_er_du_) så (_ sV // PB -_gør_han_) så (_ sV // PB -_vil_han_) så (_ sV // PB -_vil_hun_) så (_ sV // PB -_vil_de_) så (_ sV // PB -_vil_i_) så (_ sV // PB -_ville_du_) så (_ sV // PB -_ville_han_) så (_ sV // PB -_ville_hun_) så (_ sV // PB -_ville_de_) så (_ sV // PB -_ville_i_) så (_ sV // PB -_ville_du_) så (_ sV // PB - og_) så (_videre sV // PB - _for_) så sV // PB - _) så (_vi_må sV // PB - _) så (_i_må sV // PB - _) så (_de_må sV // PB - _) så (_hAn_må sV // PB - _) så (_den_må sV // PB +// use [sV] instead of [sO] + er_) så (_ sV // du virker så bekendt + _) så (_ham+ sO // vidner så ham + es_) så (_ sV // du føles så skrøbelig + _) så (_fik_ sV // så fik du en idé + r_) så (_bange sV // jeg er/var så bange + re_) så (_ sV // være så dum + blev_) så (_ sV // det blev så slemt + med_) så (_ sV // med så kort varsel + hold_) så (_ sV // hold så op med det +vil_du_) så (_ sV // vil du så gøre det? +vil_de_) så (_ sV // vil De så gøre det? +vil_i_) så (_ sV // vil I så gøre det? + vil_) så (_ sV // jo, du vil så +blive_) så (_ sV // jeg kan blive så vred + _dig_) så (_ sV // hvorfor giftede du dig så? + _) så (_havde_ sV // + _) så (_bliver_ sV // + _) så (_blev_ sV // + _) så (_have_ sV // + _) så (_kan_ sV // + _) så (_går_ sV // + _) så (_gå_ sV // + _) så (_her_ sV // + _) så (_lad_ sV // + _) så (_lang_ sV // ikke så lang tid + _) så (_nær_ sV // + _) så (_skete_ sV // + _) så (_skal_ sV // + _) så (_ved_ sV // + _) så (_vi_kan_ sV // + _) så (_kom_ sV // + _) så (_kommer_ sV // + _) så (_tager_ sV // + _) så (_gik_ sV // + _) så (_hold_ sV // + _) så (_gøre_ sV // + _) så (_ville_ sV // + _) så (_sikker_ sV // + _) så (_besværlig sV // +_er_du_) så (_ sV // +_gør_han_) så (_ sV // +_vil_han_) så (_ sV // +_vil_hun_) så (_ sV // +_vil_de_) så (_ sV // +_vil_i_) så (_ sV // +_ville_du_) så (_ sV // +_ville_han_) så (_ sV // +_ville_hun_) så (_ sV // +_ville_de_) så (_ sV // +_ville_i_) så (_ sV // +_ville_du_) så (_ sV // + og_) så (_videre sV // + _for_) så sV // + _) så (_vi_må sV // + _) så (_i_må sV // + _) så (_de_må sV // + _) så (_hAn_må sV // + _) så (_den_må sV // -kompromi) s ' // PB stress added +kompromi) s ' // stress added succe) s ' - shirt S3:t // PB T-shirt - steak stEjk // PB - smiley smajli // PB - straight sdrE:jt // PB - seattle si'&t@l // PB - _) sunset sVnsEt PB - stealth stElT // PB - sherlock SWlVk // PB name - _) sean (_ SO:n // PB name - _) seans (_ SO:ns // PB name - saint s'Ejnd // PB Saint Louis - seine sEn3 // PB Seinen, seinebred - sainte _^_fr // PB Sainte-Mère-Eglise - signore _^_it // PB - sidney sidni // PB city - soign so&N // PB soignere - stephen stiv@n // PB name - sullivan sVliv3n // PB name - special (_branch spEsj3l // PB Special Branch - scone skVn // PB - strike stRajk // PB - smythe smA:jD // PB name - shepherd SEp-Vd // PB name - smith smet // PB - name, Danish version - _) season sis@n // PB Four Seasons - _) seymour si:mO: // PB name - _) stacy stEjsi // PB name + shirt S3:t // T-shirt + steak stEjk // + smiley smaIli // + straight sdrE:jt // + seattle si'&t@l // + _) sunset sVnsEt // + stealth stElT // + sherlock SWlVk // name + _) sean (_ SO:n // name + _) seans (_ SO:ns // name + saint s'Ejnd // Saint Louis + seine sEn3 // Seinen, seinebred + sainte _^_fr // Sainte-Mère-Eglise + signore _^_it // + sidney sidni // city + soign so&N // soignere + stephen stiv@n // name + sullivan sVliv3n // name + special (_branch spEsj3l // Special Branch + scone skVn // + strike stRaIk // + smythe smA:jD // name + shepherd SEp-Vd // name + smith smet // - name, Danish version + _) season sis@n // Four Seasons + _) seymour si:mO: // name + _) stacy stEjsi // name .group t - t t - tt t - t (er_ d // PB kryster [kR'ysdV] - t (en_ d // PB femten - final ten: d@-n - tt (en d // PB attentat, atten - final tten: d@-n - Ce) t (_ d // PB final -et => [@-d] spærret - TEST - _) tj tS // PB tja, tjald, atju, tjek + t t // final t changed to d in ph_danish + tt d // atter + 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 + _) tj tS // tja, tjald, atju, tjek _) t (_ te: // the letter T - _) t (_shirt t'i:% // PB T-shirt - _) t (_bone t'i:% // PB T-bone - na) tt (øj tt, // PB - tombs tu:ms // PB Tombstone - toast tOwst// PB toasstbrød - twostep tu:stEp // PB dance - toastmaster tOwstm,A:stV // PB toastmaster - _) très (_ trE // PB French (very) - terry teri // PB - e) tt (id t|t // PB ettiden - e) tt (al t|t // PB ettal - tt (øj t|t // PB ballettøjet - teress (ant tr3s // PB interessant - _in) teresse t3r'as@ // PB interesse - in) teresser t3r'asV // PB interesser - in) teresseret tr3s'er3D // PB interesseret - in) teresserer tr3s'erV // PB interesserer - in) teressere tr3s'erV // PB interessere + _) t (_shirt t'i:% // T-shirt + _) t (_bone t'i:% // T-bone + na) tt (øj tt, // + tombs tu:ms // Tombstone + toast tOwst// // toasstbrød + twostep tu:stEp // dance + toastmaster tOwstm,A:stV // toastmaster + _) très (_ trE // French (very) + terry teri // + e) tt (id t|t // ettiden + e) tt (al t|t // ettal + tt (øj t|t // ballettøjet + teress (ant tr3s // interessant + _in) teresse t3r'as@ // interesse + in) teresser t3r'asV // interesser + in) teresseret tr3s'er3D // interesseret + in) teresserer tr3s'erV // interesserer + in) teressere tr3s'erV // interessere th th - throat Tr@wt // PB Deep Throat - _) th (eo t // PB name - ru) th t // PB name - _) tanguy _^_fr // PB name - ca) therine Tren // PB name - saman) th (a =T // PB name - mar) th (a T // PB name - lu) th (er t // PB name - thai taj // PB thai, Thailand - third TW:d // PB Third Street - thunder TVndV // PB - tredivtedel tr&fd@del // PB - tyve ty?u // PB 20 - tredvtedel tr&fd@del // PB - trenchcoat tr'EnSk,oud // PB - tennessee tEn@si // PB - teenage ti:nEdZ // PB - teenager ti:nEdZV // PB - _) tracy trEjsi // PB name - _) tracey trEjsi // PB name - tombstone tu:msdoun // PB name - town tAwn // PB - touchdown tVtSdawn // PB touchdown - _) tape (_ tEjp // PB gaffatape - _) tape (n_ tEjp3 // PB gaffatapen -world_) trade trEjd // PB - the_) times tajms // PB newspaper - tokyo tVkjo // PB - teak ti:k // PB - _) taj (_mahal t&S // PB - jani) tsh (ar S // PB - thackery T&k3ri // PB name - _) teach ti:tS // PB name - titanic tajt'&nik // PB name - timeshare tajmSE:r // PB - timothy tem0Ti // PB name - _) trevor t*EvV // PB name - _) tucson tu:sVn // PB US city - torquay tO:ki // PB name - tudor tjudV // PB name - _ar) t (_deco // PB silent t + throat Tr@wt // Deep Throat + _) th (eo t // name + ru) th t // name + _) tanguy _^_fr // name + ca) therine Tren // name + saman) th (a =T // name + mar) th (a T // name + lu) th (er t // name + thai taI // thai, Thailand + third TW:d // Third Street + thunder TVndV // + tredivtedel tr&fd@del // + tyve ty:?u@- // 20 + tredvtedel tr&fd@del // + trenchcoat tr'EnSk,oud // + tennessee tEn@si // + teenage ti:nEdZ // + teenager ti:nEdZV // + _) tracy trEjsi // name + _) tracey trEjsi // name + tombstone tu:msdoun // name + town tAwn // + touchdown tVtSdawn // touchdown + _) tape (_ tEjp // gaffatape + _) tape (n_ tEjp3 // gaffatapen +world_) trade trEjd // + the_) times taIms // newspaper + tokyo tVkjo // + teak ti:k // + _) taj (_mahal t&S // + jani) tsh (ar S // + thackery T&k3ri // name + _) teach ti:tS // name + titanic taIt'&nik // name + timeshare taImSE:r // + timothy tem0Ti // name + _) trevor t*EvV // name + _) tucson tu:sVn // US city + torquay tO:ki // name + tudor tjudV // name + _ar) t (_deco // silent t - // PB final -te D@- - te (_ d@- // PB smerte, hjerte - _) te (_ te // PB tea + // final -te D@- + te (_ d@- // smerte, hjerte -// PB final -tek - stressed e + nes) te (@ d@- // tjenestepige + _) te (_ te // tea + +// final -tek - stressed e _apo) tek t'ek _biblio) tek t'ek _char) tek t'ek @@ -7816,7 +7822,7 @@ _pinako) tek t'ek _video) tek t'ek .group ti -// PB words with unstressed initial "til" +// words with unstressed initial "til" til (freds tel' til (bage tel' til (forn tel' @@ -7854,7 +7860,7 @@ _video) tek t'ek til (synekomst tel' til (syneladende tel' -// PB final -tis - stress on previous syllable +// final -tis - stress on previous syllable appendici) ti (s =ti bronki) ti (s =ti celluli) ti (s =ti @@ -7867,168 +7873,168 @@ meningi) ti (s =ti pas) tis t'is raki) ti (s =ti lek) ti (e S - ak) ti (e S // PB aktie + ak) ti (e S // aktie &) ti (on+ S // station, dispotion - bas) ti (on dj // PB + bas) ti (on dj // ti (øs+ S // tendentiøs - pa) ti (ent S // PB patient - kvo) ti (en S // PB kvotient + pa) ti (ent S // patient + kvo) ti (en S // kvotient r) til (_ tel // PP hertil, dertil .group u u u // General rule: Normal vs. glottal u -// PB short u followed by double consonant - u (C%+ ?u // PB blusse - sk) u (L02% ?O // PB skuffe, skubbe - f) u (L06% ?O // PB fuppede - r) u (L06% ?O // PB siruppen - C) u (kk ?O // PB sukker, lukker - C) u (gg ?O // PB hugge - r) u (mmy ?V // PB card game - u (ds ?u // PB pludselig - h) utton ?Vt@n // PB name +// short u followed by double consonant + u (C%+ ?u // blusse + sk) u (L02% ?O // skuffe, skubbe + f) u (L06% ?O // fuppede + r) u (L06% ?O // siruppen + C) u (kk+ ?O // sukker, lukker + C) u (gg ?O // hugge + r) u (mmy ?V // card game + u (ds ?u // pludselig + h) utton ?Vt@n // name // l/d + u + f: O - L03) u (f ?O // PB luft, duft + L03) u (f ?O // luft, duft - u (se u: // PB muse, huse - u (set ?u // PB huset - "hus" made short by ph_danish + u (se u: // muse, huse + u (set ?u // huset - "hus" made short by ph_danish - ur (gt o3- // PB spurgt - schwa TEST - ure (_ u3-V // PB ure, mure - schwa TEST - urer (_ u3-V // PB ure, murer - schwa TEST + ur (gt o3- // spurgt - schwa TEST + ure (_ u3-V // ure, mure - schwa TEST + urer (_ u3-V // ure, murer - schwa TEST -// PB general rule: [O] after consonant followed by k/g +// general rule: [O] after consonant followed by k/g C) u (L01t ?O // frugt, fugt, lugt, lugte j) u (L01L04 u // Jugoslavien - gl) u (kose y // PB + gl) u (kose y // C) u (L01L11 u // halleluja - tr) u (ktL04 u // PB struktur + tr) u (ktL04 u // struktur C) u (L01e+ O // lunge - t) ucker VkV // PB name - h) u (je+ u // PB - p) u (ck+ u // PB - br) u (g u // PB - r) u (g u // PB rug, rugbrød - l) ugaf lOg'& // PB - k) u (k u // PB - b) u (gse u // PB bugsere - gl) u (g u // PB glugger, glughul - røgl) u (gt ?O // PB - fn) u (g u // PB snefnug - u (gl+ u // PB fuglene, uglerne - br) u (gt ?O // PB + t) ucker VkV // name + h) u (je+ u // + p) u (ck+ u // + br) u (g u // + r) u (g u // rug, rugbrød + l) ugaf lOg'& // + k) u (k u // + b) u (gse u // bugsere + gl) u (g u // glugger, glughul + røgl) u (gt ?O // + fn) u (g u // snefnug + u (gl+ u // fuglene, uglerne + br) u (gt ?O // sl) ug u // slugt, sluge - silent g - s) u (g u // PB sugerør, suggestiv - l) u (k ?0 // PB sluk, pluk, lukke, fluks - l) u (krL11 u // PB lukrativ - u (ks ?0 // PB juks, buks - l) ukaf Og'& // PB sygelukaf - p) urple W:p-@l // PB Purple Heart - d) u (dley V // PB name + s) u (g u // sugerør, suggestiv + l) u (k ?0 // 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 -// PB general rule: [0] after l/d followed by ns - L03) u (ns ?0 // PB luns, dunst +// general rule: [0] after l/d followed by ns + L03) u (ns ?0 // luns, dunst -// PB general rule: followed by ng/nk: [O] - u (ng++ O // PB lunge, unge, hungre - u (nk O // PB sunket, prunk - j) u (nktur++ O // PB - sp) u (nde O // PB spundet - j) u (nk V // PB junkaktie - hal) u (nk 'O // PB stressed - _f) u (nk V // PB funkmusik - _p) u (nk V // PB punker - L06) u (nkt O // PB punkt +// general rule: followed by ng/nk: [O] + u (ng++ O // lunge, unge, hungre + u (nk O // sunket, prunk + j) u (nktur++ O // + sp) u (nde O // spundet + j) u (nk V // junkaktie + hal) u (nk 'O // stressed + _f) u (nk V // funkmusik + _p) u (nk V // punker + L06) u (nkt O // punkt -// PB general rule: [O] followed by nd - u (nd+ O // PB grund, rund, underligt, undtage - b) u (nt O // PB buntmager - p) u (nd u // PB pund - t) u (ndå u // PB tundåse - rab) und (us 'Ond // PB stressed +// general rule: [O] followed by nd + u (nd+ ?O // grund, rund, underligt, undtage + b) u (nt ?O // buntmager + p) u (nd ?u // pund + t) u (ndå ?u // tundåse + rab) und (us '?Ond // stressed -// PB general rule: Consonant + r + u + p/b = [O] - Cr) u (L06 O // PB broad general rule - skrub - r) u (L06 O // PB sirup, rup - r) u (f O / PB rufferi - r) u (L06L04 u // PB rupi - tr) u (L06 u // PB strube, trup - gr) u (L06 u // PB gruble - skr) u (ple u // PB skrupler - skr) u (pel u // PB skrupelløs - abr) u (pt 'u // PB abrupt - m) u (L01 0 // PB mug, mukke - m) ug (_ud u // PB - m) ug (e_ud u // PB - sm) ug uw // PB i smug, smugkigge +// general rule: Consonant + r + u + p/b = [O] + Cr) u (L06 O // broad general rule - skrub + r) u (L06 O // sirup, rup + r) u (f O // rufferi + r) u (L06L04 u // rupi + tr) u (L06 u // strube, trup + gr) u (L06 u // gruble + skr) u (ple u // skrupler + skr) u (pel u // skrupelløs + abr) u (pt 'u // abrupt + m) u (L01 0 // mug, mukke + m) ug (_ud u // + m) ug (e_ud u // + sm) ug uw // i smug, smugkigge -// PB generak rule: b/d + u + k:_ O - b) u (k O // PB bukser, buk, duk - d) u (k O // PB duk, dukke, duks - p) u (kl O // PB pukle, puklet - p) u (kke O // PB pukkel +// generak rule: b/d + u + k:_ O + b) u (k O // bukser, buk, duk + d) u (k O // duk, dukke, duks + p) u (kl O // pukle, puklet + p) u (kke ?O // pukkel -// PB general rule: m/n + u + rre: [O] - L09) u (rre O // PB snurre, knurre, murre +// general rule: m/n + u + rre: [O] + L09) u (rre ?O // snurre, knurre, murre -// PB remove u in order to make the -ig/elig rule (group i) work with u + -ig list words +// 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 // PB uforskyldt, uforfalsket - _) uud 'u|'uD // PB uudforsket -// PB exceptions - u isn't a prefix - uppercut VpVkVt // PB + _) u (for 'u // uforskyldt, uforfalsket + _) uud 'u|'uD // uudforsket +// exceptions - u isn't a prefix + uppercut VpVkVt // _) u (nd+ O // underfuld, undtage - _) u (ng+ O // PB ungdommelig + _) u (ng+ O // ungdommelig u (gle+ u // ugle - u (lv+ u // PB ulvene - _) ubeset (_ ubesed // PB - _p) u (b_ V // PB - p) u (bb V // PB pubben, pubber + u (lv+ u // ulvene + _) ubeset (_ ubesed // + _p) u (b_ V // + p) u (bb V // pubben, pubber u (hyre+ u - u (enig+ u' // PB - uformel ufVm'el // PB - u (ltima u // PB ultimatum - u (ltra u // PB ultraviolet - u (denfor+ u // PB - u (dgrundelig+ u // PB - u (imodståelig u // PB - u (surp u // PB usurpator + u (enig+ u' // + uformel ufVm'el // + u (ltima u // ultimatum + u (ltra u // ultraviolet + u (denfor+ u // + u (dgrundelig+ u // + u (imodståelig u // + u (surp u // usurpator u (ni++ u // uniform, universitet - t) u (ning+ ju // PB - t) u (ne ju // PB - prod) u (ceren ju // PB - _st) u (art ju // PB name + t) u (ning+ ju // + t) u (ne ju // + prod) u (ceren ju // + _st) u (art ju // name // u (den u // udenfor - g) u (den+ ?u // PB u is shorter in "guden" than in "gud" (glottal stop) + g) u (den+ ?u // u is shorter in "guden" than in "gud" (glottal stop) u (ge++ u // ugerne, sluge - uger (+ uV // PB sluger, slugere - s) uge (rør u3 // PB silent g + uger (+ uV // sluger, slugere + s) uge (rør u3 // silent g _) u (r++ u // ur, urrem, uret _) u (retfæ++P1 u: // uretfærdig - prefix _) u (ds+ u // udsætte -// u (de++ u // PB uden, udenfor, udeblev - et) u (de+ 'y // PB stressed - u (topi u // PB - uskyldig usg'yldi // PB - d) u (blin V // PB city - st) u (kket O // PB - ukulele ukul'el3 // PB - acap) u (lco 'u // PB stressed - m) u (pperne V // PB +// u (de++ u // uden, udenfor, udeblev + et) u (de+ 'y // stressed + u (topi u // + uskyldig usg'yldi // + d) u (blin V // city + st) u (kket O // + ukulele ukul'el3 // + acap) u (lco 'u // stressed + m) u (pperne V // -// PB nouns with final -um in da_list - stress on previous syllable - &) um ($p_alt =Om // PB jubilæum +// nouns with final -um in da_list - stress on previous syllable + &) um ($p_alt =Om // jubilæum -// PB stressed -ure - $alt words (French) in da_list pronounced [y:V] +// stressed -ure - $alt words (French) in da_list pronounced [y:V] &) ure (+++$p_alt ''y:V // frisure - &) ure (re$p_alt+++ yr''e // PB manicurerede + &) ure (re$p_alt+++ yr''e // manicurerede &out) ure ($p_alt 'y:r // couture - without [V] because fashion people talk like that - &s) ure (re+++ ur''e // PB censurere -// PB -ure without stress after a syllable + &s) ure (re+++ ur''e // censurere +// -ure without stress after a syllable @) bord) ure y:V @) broch) ure y:V @) embouch) ure y:V @@ -8051,17 +8057,17 @@ meningi) ti (s =ti @) sinec) ure y:V @) tourn) ure y:V -// PB final -tur in da_list - stressed u +// final -tur in da_list - stressed u &t) ur ($p_alt ''ur // struktur &t) ur (el$p_alt ur' // strukturel &d) ur ($p_alt ''ur // trubadur - _komf) ur 'ur // PB + _komf) ur 'ur // -// PB final -ut in da_list - stressed u +// final -ut in da_list - stressed u &) ut ($p_alt 'ut // rekrut &) ut (t$p_alt '?u // rekrutter - avoid double t -// PB short u - glottal stop +// short u - glottal stop h) u (dK ?u h) u (den ?u st) u (dK ?u @@ -8069,7 +8075,7 @@ meningi) ti (s =ti t) u (dK ?u t) u (den ?u -// PB final -sur +// final -sur dress) ur 'ur cens) ur 'ur cæs) ur 'ur @@ -8081,7 +8087,7 @@ meningi) ti (s =ti tons) ur 'ur - // PB most of the words with ud-: [uD] - udpege + // most of the words with ud-: [uD] - udpege _) ud (@@+P2 ''?uD _) ude (@@+P3 ''uD@ // exceptions for ud-: [ud] @@ -8097,726 +8103,736 @@ meningi) ti (s =ti _) ud (en+ uD _) ud (kig uD // udkigspost (another rule overrides a silent g rule) - u (nL08+ O // PB kunst - br) unch VnS // PB - b) u (ffer V // PB buffer - ketch) u (p V // PB - cl) u (b V // PB - s) ui (te wi // PB - st) u (nt V // PB stuntman - _) d) u (ncan V // PB name - b) urg (er Wg // PB + u (nL08+ O // kunst + br) unch VnS // + b) u (ffer V // buffer + ketch) u (p V // + cl) u (b V // + s) ui (te wi // + st) u (nt V // stuntman + _) d) u (ncan V // name + b) urg (er Wg // u (mK+ O // dum - n) u (mlock V // PB - h) umphrey Vmfri // PB name - _b) urns W:ns // PB name - h) umbug OmbOg // PB - _) usa (_ u:|es|'& // PB - _) usa's (_ u:|es|'&s // PB - s) ur (fe 3: // PB surfe - s) urfer '3:fV // PB surfer - s) ur (fb 3: // PB surfbræt - p) u (nch O // PB - _sek) u (nd 'O // PB stressed - sek) u (ndæ O // PB sekundær - _glas) u (r 'u // PB stressed - _abs) u (rd 'u // PB stressed - _fig) u (r 'u // PB stressed - _harp) u (n 'u // PB stressed - _fid) u (s 'u // PB stressed - _rob) u (st 'u // PB stressed - chal) u (p 'u // PB stressed - _b) uket uk'Et // PB stressed - _bas) u (n 'u // PB stressed - andal) u (s 'u // PB stressed - andalusier - _konf) u (s 'u // PB stressed -_klaus) u (l 'u // PB stressed - _konk) u (rs 'u // PB stressed - jer) u (salem 'u // PB stressed -krused) u (lle 'u // PB stressed - _vol) u (me 'u // PB volumen - _) fakt) u (ra 'u // PB - _) prok) u (ra 'u // PB - _) angost) u (ra 'u // PB - col) u (mb 'O // PB Columbia, columbusæg - kent) ucky 'Vki // PB - calc) u (tta 'V // PB - f) u (ck++ V // PB -stand_) u (p V // PB stand-up-komiker - bl) u (fæ u // PB blufærdig - sm) u (gl u // PB smugling - sl) u (gt u // PB - b) ug (ta u // PB bugtaler - l) u (n_ u // PB lun - l) u (ne u // PB lune - l) u (nte 0 // PB lunte - j) u (nt 0 // PB junta + n) u (mlock V // + h) umphrey Vmfri // name + _b) urns W:ns // name + h) umbug OmbOg // + _) usa (_ u:|es|'& // + _) usa's (_ u:|es|'&s // + s) ur (fe 3: // surfe + s) urfer '3:fV // surfer + s) ur (fb 3: // surfbræt + p) u (nch O // + _sek) u (nd 'O // stressed + sek) u (ndæ O // sekundær + _glas) u (r 'u // stressed + _abs) u (rd 'u // stressed + _fig) u (r 'u // stressed + _harp) u (n 'u // stressed + _fid) u (s 'u // stressed + _rob) u (st 'u // stressed + chal) u (p 'u // stressed + _b) uket uk'Et // stressed + _bas) u (n 'u // stressed + andal) u (s 'u // stressed - andalusier + _konf) u (s 'u // stressed +_klaus) u (l 'u // stressed + _konk) u (rs 'u // stressed + jer) u (salem 'u // stressed +krused) u (lle 'u // stressed + _vol) u (me 'u // volumen + _) fakt) u (ra 'u // + _) prok) u (ra 'u // + _) angost) u (ra 'u // + col) u (mb 'O // Columbia, columbusæg + kent) ucky 'Vki // + calc) u (tta 'V // + f) u (ck++ V // +stand_) u (p V // stand-up-komiker + bl) u (fæ u // blufærdig + sm) u (gl u // smugling + sl) u (gt u // + b) ug (ta u // bugtaler + l) u (n_ u // lun + l) u (ne u // lune + l) u (nte 0 // lunte + j) u (nt 0 // junta l) u (kas u // Lukas - r) u (st O // PB udrustning, veludrustet - tr) u (st V // PB antitrust, hjernetrust - r) usty Vsti // PB name - fr) u (s u // PB frustrerende - _pr) u (st u // PB pruste - vind) ue u // PB - vind) uer uV // PB - vind) uet u@D // PB - ue (_ u: // PB due, statue - skr) ue (C u: // PB skruenøgle TEST - fond) ue 'y // PB ostefondue - infl) ue (nza u'E // PB stressed - aven) ue 'y // PB - alb) ue u: // PB albuerum - h) ue u: // PB tophue, hue - st) ue u:@- // PB stuearrest - st) ue (_ u@ // PB - st) ue (n_ u@ // PB - d) ue (s u: // PB vinduesstørrelse - _kalk) u (n 'u // PB stressed u -_konvol) u (t 'u // PB stressed - _årh) u (ndrede 'u // PB stressed -centrif) u (g 'u // PB stressed - kæng) u (ru 'u_ // PB stressed + r) u (st O // udrustning, veludrustet + tr) u (st V // antitrust, hjernetrust + r) usty Vsti // name + fr) u (s u // frustrerende + _pr) u (st u // pruste + vind) ue u // + vind) uer uV // + vind) uet u@D // + ue (_ u:u // due, statue + skr) ue (C u: // skruenøgle TEST + fond) ue 'y // ostefondue + infl) ue (nza u'E // stressed + aven) ue 'y // + alb) ue u: // albuerum + h) ue u: // tophue, hue + st) ue u:@- // stuearrest + st) ue (_ u@ // + st) ue (n_ u@ // + d) ue (s u: // vinduesstørrelse + _kalk) u (n 'u // stressed u +_konvol) u (t 'u // stressed + _årh) u (ndrede 'u // stressed +centrif) u (g 'u // stressed + kæng) u (ru 'u_ // stressed l) ug (e u: - h) u (lt u // PB hult - adjective "et hult træ" - h) u (le u // PB hule - adjective and noun - hj) u (lp ?O // PB hjulpet - lp shortens the vowel - hond) u (ra 'u: // PB Honduras - u (lje 'u // PB patrulje, badulje - _laC) u (ne 'u: // PB lagune, lakune - stressed - _komm) u (ne 'u: // PB kommune - stressed - _trib) u (ne 'y // PB stressed tribune - trib) u (ne y // PB unstressed after a syllable - _deb) ut 'y // PB stressed, silent t -vestib) u (l 'y // PB vestibule - fl) ute yt // PB - deb) ut y // PB unstressed after a syllable, silernt t - p) u (ré y // PB - _p) u (rere y // PB - d) u (chesse y // PB -tomatp) ure yre // PB -tomatp) uré yre // PB - j) u (ice u: // PB juice - L01n) u (L06 O // PB knubs, gnubbe, snuppe - _k) u (n_ 0 // PB kun - kl) u (ns 0 // PB - k) u (l O // PB kulmine - k) u (ld u // PB skuldre, kuld - k) u (ller ?u // PB - sk) u (lp u // PB skulptur - sk) u (lk ?u // PB skulke - k) u (lL05 u // PB okular - k) ulret ulRVD // PB - k) u (lL04 u // PB kulisse, kulørt -hovedk) u (ls u // PB - k) u (lde ?u // PB kulde - _k) u (llede ?u // PB den kullede greve - k) u (ldio O // PB kuldioxid - k) u (lilt O // PB kulilte - omk) u (ld 'u // PB - imp) u (ls '?u // PB stressed - imp) u (lsiv =u // PB - sk) u (ll ?u // PB skulle - k) u (Ce u // PB skule, kule - sk) u (te u // PB omdiskuteret - L08) u (f O // PB skuffe - st) u (b+ u // PB skægstubbe - sk) u (b O // PB skub, skubbe - sl) u (b O // PB slubbert - k) u (lt u // PB kultur - d) u (kti u // PB obduktion - ll) u (p V // PB bryllup - tr) u (ff O // PB truffet - t) u (nn 0 // PB tunnel - m) u (nt 0 // PB munter - sn) u (L06 0 // PB snup - sn) u (ble u // PB - s) u (L06% 0 // PB suppe - s) u (bli %u // PB sublim - s) u (pra u // PB latin - s) u (pple u // PB suppleant - s) u (bs u // PB substitut - h) u (n+ ?u // PB hunkøn, hund - h) u (nter V // PB - headh) u (nt V // PB - h) u (rtig O // PB hurtigtog - s) u (k 0 // PB suk, sukker - sl) u (p O // PB sluppet, løssluppen + h) u (lt u // hult - adjective "et hult træ" + h) u (le u // hule - adjective and noun + hj) u (lp ?O // hjulpet - lp shortens the vowel + hond) u (ra 'u: // Honduras + u (lje 'u // patrulje, badulje + _laC) u (ne 'u: // lagune, lakune - stressed + _komm) u (ne 'u: // kommune - stressed + _trib) u (ne 'y // stressed tribune + trib) u (ne y // unstressed after a syllable + _deb) ut 'y // stressed, silent t +vestib) u (l 'y // vestibule + fl) ute yt // + deb) ut y // unstressed after a syllable, silernt t + p) u (ré y // + _p) u (rere y // + d) u (chesse y // +tomatp) ure yre // +tomatp) uré yre // + j) u (ice u: // juice + L01n) u (L06 O // knubs, gnubbe, snuppe + _k) u (n_ 0 // kun + kl) u (ns 0 // + k) u (l O // kulmine + k) u (ld u // skuldre, kuld + k) u (ller ?u // + sk) u (lp u // skulptur + sk) u (lk ?u // skulke + k) u (lL05 u // okular + k) ulret ulRVD // + k) u (lL04 u // kulisse, kulørt +hovedk) u (ls u // + k) u (lde ?u // kulde + _k) u (llede ?u // den kullede greve + k) u (ldio O // kuldioxid + k) u (lilt O // kulilte + omk) u (ld 'u // + imp) u (ls '?u // stressed + imp) u (lsiv =u // + sk) u (ll ?u // skulle + k) u (Ce u // skule, kule + sk) u (te u // omdiskuteret + L08) u (f O // skuffe + st) u (b+ u // skægstubbe + sk) u (b O // skub, skubbe + sl) u (b O // slubbert + k) u (lt u // kultur + d) u (kti u // obduktion + ll) u (p V // bryllup + tr) u (ff O // truffet + t) u (nn 0 // tunnel + m) u (nt 0 // munter + sn) u (L06 0 // snup + sn) u (ble u // + s) u (L06% 0 // suppe + s) u (bli %u // sublim + s) u (pra u // latin + s) u (pple u // suppleant + s) u (bs u // substitut + h) u (n+ ?u // hunkøn, hund + h) u (nter V // + headh) u (nt V // + 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 // PB vugge - f) u (L06 0 // PB fup + v) u (g 0 // vugge + f) u (L06 0 // fup - h) u (l O // PB hul - noun - h) u (lkort O // PB - h) u (lL11 u // PB hula-hula - smuth) u (l O // PB smuthulmager -mudderh) u (l O // PB - h) u (lC u // PB hulke, hulbrystet - h) u (lsøm O // PB - knaph) u (l O // PB knaphulsblomst - h) u (ltang O // PB - h) u (lske O // PB - h) u (lbånd O // PB - h) u (ljern O // PB - h) u (lle O // PB hulledame + h) u (l O // hul - noun + h) u (lkort O // + h) u (lL11 u // hula-hula + smuth) u (l O // smuthulmager +mudderh) u (l O // + h) u (lC u // hulke, hulbrystet + h) u (lsøm O // + knaph) u (l O // knaphulsblomst + h) u (ltang O // + h) u (lske O // + h) u (lbånd O // + h) u (ljern O // + h) u (lle O // hulledame - h) u (g O // PB hugge, hugorm - h) u (go_ u // PB name + 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 // PB - f) u (n+ 0 // PB funktion, karpunkel - p) u (lv 0 // PB pulver - _r) u (b_ O // PB rub - _n) u (l 0 // PB nul - n) u (levende u // PB - _r) u (bbe ?O // PB rubbe, rubbet + p) u (f O // + f) u (n+ 0 // funktion, karpunkel + p) u (lv 0 // pulver + _r) u (b_ O // rub + _n) u (l 0 // nul + n) u (levende u // + _r) u (bbe ?O // rubbe, rubbet k) u (ffert ?O - _g) uid (et aId // PB guidet - g) uider aIdV // PB guider - g) uide a:jd // PB noun: guide - problem with verb "at guide" - g) uiden aId@-n // PB guiden - at_g) uid (e ajd // PB at guide - vil_g) uid (e ajd // PB vil guide - aug) u (st 'O PB stressed - the month - the name is in da_list with $capital - g) u (f O // PB guffe - g) ulv Ol // PB gulv - silent v - g) ulv (e Olv // PB gulve - sm) u (C O // PB smukkere, smurt - rasm) u (s u // PB Rasmus - name - m) u (sik u // PB middagsmusik - sL09) u (t u // PB snut, smutte - sL09) u (CL11 u // PB snude - sm) u (L03+ u // PB smule, smuld, smuds - l) u (krere u // PB - L09) u (f O // PB fornuft - L09) u (ff ?O // PB muffe - m) uffin Vfen // PB - m) u (ft u // PB mufti - kam) u (flage u // PB - val) u (ta 'u // PB stressed - _der) u (d 'u // PB stressed - derud -_instr) u (ks 'u // PB stressed - valp) u (rgis 'u // PB stressed valpurgisnat - gr) u (p u // PB gruppe + _g) uid (et aId // guidet + g) uider aIdV // guider + g) uide a:jd // noun: guide - problem with verb "at guide" + g) uiden aId@-n // guiden + 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) ulv Ol // gulv - silent v + g) ulv (e Olv // gulve + sm) u (C O // smukkere, smurt + rasm) u (s u // Rasmus - name + m) u (sik u // middagsmusik + sL09) u (t u // snut, smutte + sL09) u (CL11 u // snude + sm) u (L03+ u // smule, smuld, smuds + l) u (krere u // + L09) u (f O // fornuft + L09) u (ff ?O // muffe + m) uffin Vfen // + m) u (ft u // mufti + kam) u (flage u // + val) u (ta 'u // stressed + _der) u (d 'u // stressed - derud +_instr) u (ks 'u // stressed + valp) u (rgis 'u // stressed valpurgisnat + gr) u (p u // gruppe r) u (m O - tr) u (man u // PB name - _st) urgis WdZis // PB name - _m) u (llin V // PB name - rayb) urn W:n // PB name - r) u (me u // PB PB musikinstrument + tr) u (man u // name + _st) urgis WdZis // name + _m) u (llin V // name + rayb) urn W:n // name + r) u (me u // musikinstrument s) u (cc y - s) uccessor uks'EsV // PB - s) uccessorer uksEs'oV // PB + s) uccessor uks'EsV // + s) uccessorer uksEs'oV // b) u (dget y b) ureau yR'o _men) u 'y - men) u y // PB festmenu - men) uet u'Et // PB - parf) u (me 'y // PB - _b) u (ste_ y // PB + men) u y // festmenu + men) uet u'Et // + parf) u (me 'y // + _b) u (ste_ y // proced) u (re 'y proven) u 'y - _nat) u (rel_+ y' // PB naturel - _kost) ume 'ym@- // PB - kost) ume ym@- // PB - n) u (ance y // PB - s) u (rrel Y // PB surreel - s) u (rrea y // PB surrrealistisk - ref) u (ser y // PB refusere (about horse) - res) ume ym'e // PB - res) umé ym'e // PB - g) ui (tar i // PB guitar + _nat) u (rel_+ y' // naturel + _kost) ume 'ym@- // + kost) ume ym@- // + n) u (ance y // + s) u (rrel Y // surreel + s) u (rrea y // surrrealistisk + ref) u (ser y // refusere (about horse) + res) ume ym'e // + res) umé ym'e // + g) ui (tar i // guitar resso) u (rs 'u comp) u (ter ju - res) u (rs 'u // PB resurse (ressource) - g) ueri (lla ER'i // PB guerilla - b) u (nker 0 // PB bunker - minor problem: golf expression: [BVnkV] - br) uxelles ys'El // PB Bruxelles - b) udd (y Vd // PB name - l) ucienne ysj'En // PB name - g) uez =es // PB Rodriguez - united jun'ajted - h) urdle Wd@l // PB - h) urdlen Wdl3n // PB - utah 'ju:tA // PB US state - t) u (tor ju // PB - b) u (tler V // PB - b) ur (ma W: // PB - tamb) ur ur // PB tamburmajor - b) ur (mes W // PB burmesisk - b) u (ck V // PB name - _b) ur (t W: // PB name - p) ur (ser W: // PB - tr) u (ck V // PB - d) u (bbe V // PB - d) u (bbing V // PB - l) u (bbock V // PB - _d) u (stin V // PB name - _kibb) u (tz 'u // PB stressed - p) u (blic V // PB public relation + res) u (rs 'u // resurse (ressource) + g) ueri (lla ER'i // guerilla + b) u (nker 0 // bunker - minor problem: golf expression: [BVnkV] + br) uxelles ys'El // Bruxelles + b) udd (y Vd // name + l) ucienne ysj'En // name + g) uez =es // Rodriguez + united jun'aIted + h) urdle Wd@l // + h) urdlen Wdl3n // + utah 'ju:tA // US state + t) u (tor ju // + b) u (tler V // + b) ur (ma W: // + tamb) ur ur // tamburmajor + b) ur (mes W // burmesisk + b) u (ck V // name + _b) ur (t W: // name + p) ur (ser W: // + tr) u (ck V // + d) u (bbe V // + d) u (bbing V // + l) u (bbock V // + _d) u (stin V // name + _kibb) u (tz 'u // stressed + p) u (blic V // public relation .group v v v vv v - v (_ w // PB væv - i) v (_ w // PB stativ - ra) v (C w // PB gravkammer - li) vv wv // PB livvagt, livvidde - snæ) v (+ w // PB snæver, snævre - dri) v (C w // PB drivtryk - L09o) v (A v // PB nova renovation - pro) v (ence v // PB Provence in France - _) von (_ fVn // PB von in German names - v (an_gogh f // PB - virginia v@dZ'iNj& // PB - a) v (n w // PB [u] changed to [w] navn, navnebroder - sla) v (+ v // PB Jugoslavien - la) v (ement @ // PB lavement - ve (lse v3 // PB øvelse, stavelse, fornøjelse - ø) v (en w // PB røven - dø) v w // PB døvstum - le) v (_ w // PB elev - mø) v (e+ w_|// PB møve - &A) v (_A v // PB gav ordre - &A) v (A v // PB fiktive - v (n w // PB jævn, levne - tvi) v (l u // PB + v (_ w // væv +// rø) v w // røv, bonderøve + i) v (_ w // stativ + ra) v (C w // gravkammer + li) vv wv // livvagt, livvidde + snæ) v (+ w // snæver, snævre + dri) v (C w // drivtryk + hø) v (l w // plathøvl + L09o) v (A v // nova renovation + pro) v (ence v // Provence in France + _) von (_ fVn // von in German names + v (an_gogh f // + virginia v@dZ'iNj& // + a) v (n w // [u] changed to [w] navn, navnebroder + sla) v (+ v // Jugoslavien + la) v (ement @ // lavement + ve (lse v3 // øvelse, stavelse, fornøjelse + ø) v (en w // røven + dø) v w // døvstum + le) v (_ w // elev + mø) v (e+ w_|// // møve + &A) v (_A v // gav ordre + ti) v (A v // fiktive + v (n w // jævn, levne + tvi) v (l u // &r) v v - al) v (e v // PB halve + al) v (e v // halve el) v (C - ha) v (C u // PB havfisker - ha) v (overf u // PB havoverflade + ha) v (C u // havfisker + ha) v (overf u // havoverflade il) v (A v ur) v v hal) v - hal) vleg aj // PB - ble) v // PB silent v - blev -udeble) v w // PB - voliere vVli'E:r // PB - vince vens // PB name - verdun vErd'3N // PB - village veledZ // PB - vaughn vO:n // PB name - voila vwal'a // PB + hal) vleg aI // + ble) v (K // silent v - blev +udeble) v w // + voliere vVli'E:r // + vince vens // name + verdun vErd'3N // + village veledZ // + vaughn vO:n // name + voila vwal'a // .group w w w - w (att v // PB watt - ant) w (erpen v // PB - waffe vaf3 // PB Luftwaffe - wallace wVles // PB name - watson wVts@-n // PB name - wayne wEjn // PB name - wheel wil // PB Wheeler - w (olfram v // PB wolfram - w (olfgang v // PB name - w (ienerschnitzel v // PB wienerschnitzel - w (eltschmerz v // PB weltschmerz - w (eltervægt v // PB weltervægt - w (hist v // PB whist + w (att v // watt + ant) w (erpen v // + waffe vaf3 // Luftwaffe + wallace wVles // name + watson wVts@-n // name + wayne wEjn // name + wheel wil // Wheeler + w (olfram v // wolfram + w (olfgang v // name + w (ienerschnitzel v // wienerschnitzel + w (eltschmerz v // weltschmerz + w (eltervægt v // weltervægt + w (hist v // whist w (aders v // PP waders - w (adi v // PB wadi + w (adi v // wadi w (alis v // PP walisisk - w (assermannprøve v // PB wassermannprøve - wie (n vi // PB wienerbrød - w (erner v // PB name - wald vald // PB Waldheim - _) waldorf wOdVf // PB waldorfsalat - ku) wai (t v'aj // PB - weekend wi:gEnd // PB - wisconsin wesk'Vnsen // PB - washington wVSeNtVn // PB - wyoming waj'OwmeN // PB - wright _^_EN // PB - willie wili // PB - willy wili // PB - _) wild wAjld // PB - ware w&:r // PB software - warszawa varS'&:v& // PB - watergate wOtVgEjt // PB - _) world wWld // PB - wiesenthal vis@ntAl // PB name - w (essel v // PB name - weather wEDV // PB Fairweather - work wW:k // PB workout, teamwork - weaver wi:vV // PB name - _) wonder wVndV // PB name - wales wEjls // PB - s) wansea wVns,i // PB - worth wW:T // PB last part of a name - Wordsworth - word wWd // PB MS Word, Wordsworth - wanda wVnd& // PB name - widescreen wajdskri:n // PB - winnipeg wenipEg // PB - whitechapel waittS&p@l/2 // PB name + w (assermannprøve v // wassermannprøve + wie (n vi // wienerbrød + w (erner v // name + wald vald // Waldheim + _) waldorf wOdVf // waldorfsalat + ku) wai (t v'aI // + weekend wi:gEnd // + wisconsin wesk'Vnsen // + washington wVSeNtVn // + wyoming waI'OwmeN // + wright _^_EN // + willie wili // + willy wili // + _) wild waIld // + ware w&:r // software + warszawa varS'&:v& // + watergate wOtVgEjt // + _) world wWld // + wiesenthal vis@ntAl // name + w (essel v // name + weather wEDV // Fairweather + work wW:k // workout, teamwork + weaver wi:vV // name + _) wonder wVndV // name + wales wEjls // + s) wansea wVns,i // + worth wW:T // last part of a name - Wordsworth + word wWd // MS Word, Wordsworth + wanda wVnd& // name + widescreen waIdskri:n // + winnipeg wenipEg // + whitechapel waittS&p@l/2 // name .group x x gs - xc gs // PB excellence + xc gs // excellence _) x s n) x s - _o) xyde (re gsid'e // PB oxydere - _o) xide (re gsid'e // PB oxidere - _o) xyde (ri gsid'e // PB oxydering - _o) xide (ri gsid'e // PB oxidering - _o) xyd (_ gs'iD // PB oxyd - _o) xid (_ gs'iD // PB oxid - o) xygen gsig'en // PB - o) xal gs'&l // PB oxalsyre - xon gsVn // PB Nixon + _o) xyde (re gsid'e // oxydere + _o) xide (re gsid'e // oxidere + _o) xyde (ri gsid'e // oxydering + _o) xide (ri gsid'e // oxidering + _o) xyd (_ gs'iD // oxyd + _o) xid (_ gs'iD // oxid + o) xygen gsig'en // + o) xal gs'&l // oxalsyre + xon gsVn // Nixon .group y y y - y (u j // PB Yussef + y (u j // Yussef -// PB Short y followed by two consonants - y (tt++ ?y // PB lytte, bytte, rytter - r) y (lle++ ?y // PB trylleri, fortryllende - y (gge++ ?y // PB tygge, bygge - y (kke++ ?y // PB tykke, samtykke - y (ld ?y // PB beskyldte, skyld, skylde - ld works as a double consonant +// Short y followed by two consonants + y (tt++ ?y // lytte, bytte, rytter + r) y (lle++ ?y // trylleri, fortryllende + y (gge++ ?y // tygge, bygge + t) y (kke++ ?y // tykke, samtykke + d) y (sse ?y // dysse + pl) y (ss ?y // plysset +// y (CC ?y // beskyldte, skyld, skylde, gylpe, 2 consonants => short + h) y (ld ?y // hyldest -// PB general rule: [W] before (some) velars - y (nk W // PB ynk, ynkelig - y (kk++++ ?W // smykke, lykke, stykker - l) y (kø ?W // PB lykønske - l) y (ksalig ?W // PB - l) y (n_ ?y // PB lyn, kuglelyn - _l) y (n ?y // PB lynkarriere - l) yng (limt yng // PB - l) yng WN // PB - sm) y (kn W // PB udsmykning - l) y (gt W // PB lygte, flygte - r) y (ge+ y // PB ryge, ryger - pr) ygelknabe ygElknAb3 // PB - st) y (k+ W // PB stykke - ydm) yg y // PB - yng WN // PB yngre, dynge, tynge, synge - yng (a Wng // PB laryngal - _n) y (n_ ?W // PB "nyn en melodi" - n) y (nne ?W // PB +// general rule: [W] before (some) velars + y (nk W // ynk, ynkelig + m) y (kk++ ?W // smykke + l) y (kk++ ?W // lykke + st) y (kk++ ?W // stykke + l) y (kø ?W // lykønske + l) y (ksalig W // + l) y (n_ ?y // lyn, kuglelyn + _l) y (n ?y // lynkarriere + l) yng (limt yng // + l) yng WN // + sm) y (kn W // udsmykning + l) y (gt W // lygte, flygte + r) y (ge+ y // ryge, ryger + pr) ygelknabe ygElknAb3 // + st) y (k+ W // stykke + ydm) yg y // + yng WN // yngre, dynge, tynge, synge + yng (a Wng // laryngal + _n) y (n_ ?W // "nyn en melodi" + n) y (nne ?W // -//PB general rule: [?W] before nd - short followed by 2 consonants - y (nd+ ?W // PB ynde, begynde, kyndig, udtynde, skynde - s) yndi (k ?Wndi // PB syndikat +// general rule: [?W] before nd - short followed by 2 consonants + y (nd+ ?W // ynde, begynde, kyndig, udtynde, skynde + s) yndi (k ?Wndi // syndikat -// PB general rule: consonant + y + sp/st/sk: [?y] - glottal - C) y (L08+ y // PB kysk - C) y (se+ y // PB kyse - l) y (set+ ?y // PB - c) y (kel ?y // PB short y - l) y (stgård W // PB - kr) y (bb+ ?y // PB krybbe - kr) y (s+ y // PB krystal, kryster - r) y (L01%++ ?W // PB krykke, ryggen - r) y (C+ ?W // PB ryste, bryllup, tryg, krympe, krymmel - short W - tr) y (l++ y // PB tryl - str) y (C y // PB stryknin - _harr) y i // PB - dr) y (p W // PB - r) y (Ce++ y // PB tryne, pryde - tr) y (de ?y // PB fortryde - r) ydell ajd'El/2 // PB name - r) y (sk+ y // PB brysk - mar) y (s i // PB - r) y (L06+ y // PB kryptere, kryb - r) y (L06A+ y // PB krybe - r) y (t+ y // PB rytme, rytter - br) y (n y // PB øjenbryn - gr) y (n y // PB - gr) y (nt W // PB - p) y (nt W // PB - r) y (de++ y // PB bryde - forbr) y (d++ ?y // PB forbrydelse, forbryder - r) y (den++ ?y // PB gryden - short y TEST - r) y (d_++ y // PB fryd, ryd +// general rule: consonant + y + sp/st/sk: [?y] - glottal + 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 // + kr) y (bb+ ?y // krybbe + 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 + _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 (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 (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 (dC++ ?y // PB krydser, rydde - fr) y (s+ y // PB forfrysning + r) y (dC++ ?y // krydser, rydde + fr) y (s+ y // forfrysning -// PB exceptions -// PB problem with lyst - blond = light coloured; and lyst = would like to, feel like - l) y (st_til_ W // PB "jeg har lyst til" - "I would like" - l) y (ster W // PB "desires" - har_l) y (st W // PB - får_l) y (st W // PB -ikke_l) y (st W // PB -stor_l) y (st W // PB -skrivel) y (st W // PB - hævnl) y (st W // PB -kappel) y (st W // PB - livsl) y (st W // PB - lærel) y (st W // PB - madl) y (st W // PB -spørgel) y (st W // PB - ul) y (st W // PB -vandrel) y (st W // PB - vell) y (st W // PB - videl) y (st W // PB -virkel) y (st W // PB - ædel) y (st W // PB - øjenl) y (st W // PB -øjensl) y (st W // PB -ørensl) y (st W // PB - l) y (stig W // PB - l) y (stb W // PB lystbåd, lystbetonet - l) y (stelig W // PB - l) y (sten W // PB - l) y (stne W // PB - l) y (stfisk W // PB lystfisker - l) y (sthus W // PB - l) y (stløgn W // PB - l) y (stmord W // PB - l) y (stsejl W // PB lystsejlads - l) y (stspil W // PB - l) y (styacht W // PB +// exceptions +// problem with lyst - blond = light coloured; and lyst = would like to, feel like + l) y (st_til_ W // "jeg har lyst til" - "I would like" + l) y (ster W // "desires" + har_l) y (st W // + får_l) y (st W // +ikke_l) y (st W // +stor_l) y (st W // +skrivel) y (st W // + hævnl) y (st W // +kappel) y (st W // + livsl) y (st W // + lærel) y (st W // + madl) y (st W // +spørgel) y (st W // + ul) y (st W // +vandrel) y (st W // + vell) y (st W // + videl) y (st W // +virkel) y (st W // + ædel) y (st W // + øjenl) y (st W // +øjensl) y (st W // +ørensl) y (st W // + l) y (stig W // + l) y (stb W // lystbåd, lystbetonet + l) y (stelig W // + l) y (sten W // + l) y (stne W // + l) y (stfisk W // lystfisker + l) y (sthus W // + l) y (stløgn W // + l) y (stmord W // + l) y (stsejl W // lystsejlads + l) y (stspil W // + l) y (styacht W // - r) yg (_ @k // PB ryg (noun "back") - problem with "ryg" (verb) = "smoke" - r) yg (_en y // PB "ryg en cigar" - r) yg (_end_ Wg // PB "mere tryg end nu" - str) yg yj // PB stryge - r) yg (ning y: // PB silent g - pr) yg (l y // PB - tr) yg (le y // PB trygle - _r) y (_ ?y // PB short glottal y - _r) y (et_ ?y // PB short glottal y - part) y i // PB - Amm) y ?i // PB rummy, dummy, grammy - str) yge y@- // PB strygetøj - str) yger yV // PB stryger - karr) y (+ i // PB - lib) y i // PB Libyen - _) yves i:v // PB Yves (French name) - fl) y (tn W // PB flytning - m) y (nte 'W // PB mynte, pebermynte (stressed) - afl) y (tt ?y // PB aflytning - L08) y (tt+ ?W // PB spyt, skyts, beskytte - sk) y (ti y // PB Skytien, skytisk - sk) y (ter y // PB skyter - s) yv yw // PB - sk) y (ll W // PB skylle - k) y (lling+ ?y // PB lørdagskylling - _rek) y (l 'y // PB stressed - sk) y (l_ ?W // PB skyl - sk) y (lni W // PB skylning -_molek) y (le 'y // PB stressed - _lat) y (rus 'y // PB stressed - eg) y (pt 'y // PB Egypten - stressed - f) yrre ?W:_|V // PB fyrre - f) yrre (tr YV // PB fyrretræ - f) yrre (k YV // PB fyrrekogle - n) y (t y // PB nyt - n) y (tt+ ?W // PB nytte - ben) y (t ?W // PB benyt - n) y (k_ W // PB nyk - n) y (kker ?W // PB nykker - kn) y (tt ?y // PB tilknytte - kn) y (t ?y // PB knyt - k) y (s+ W // PB kys, kyst - k) y (se+ y // PB kyse, kyser - sk) y (s+ y // PB skysovs, skyskraber - k) y (sk+ y // PB kyskhed - k) yss ?Ws // PB kysse - s) ynd (rom ?ynd // PB - s) y (nkr ?y // PB synkron - s) y (nt ?y // PB syntes - s) ynthesizer enTesajsV // PB - s) y (nkroc W // PB synkrocyklotron - s) y (tten ?W // PB - fl) y (t_ W // PB flyt - fl) y (tt ?W // PB flytte - afl) y (t y // PB - fl) y (tbar W // PB - whisk) y i // PB whisky - cit) y i // PB - ick) y i // PB tricky, Nicky, Vicky - lonn) y e // PB name - scott) y e // PB name - happ) y ?i // PB happy end, happy hour - s) yracuse irVkjus // PB name - yatzy j&tsi // PB - y (onn j // PB bayonne, mayonnaise - y (ams j // PB - y (emen j // PB - yoel jo'El // PB name - l) y (mC W // PB lymfe - n) y (mf W // PB nymfe - k) y (mK W // PB bekymring - st) y (mper W // PB - d) y (L01t W // PB dygtig - l) y (nch W // PB lynchstemning - yacht jagd // PB lystyacht - york JV:k // PB - yankee j&nki // PB - yale jEjl/2 // PB - yorkshire _jOkS@ // PB - young jVN // PB - yard jard // PB - yuppie jupi // PB - yeager jEgV // PB name - ye (llow jE // PB Yellowstone - can) yon j3n // PB - cl) yde ajd // PB - b) ypass ajpa:s // PB - c) y (ber aj // PB cyberspace - st) y (list aj // PB - sk) y (light aj // PB -standb) y 'aj // PB - carl) yle ajl // PB name - b) yte ajt // PB megabyte - d) y (lan i // PB name - obb) y i // PB hobby, lobby - count) y i // PB -brookl) y (n i // PB - bill) y i // PB - shell) y i // PB name - jack) y i // PB name - luc) y i // PB - all) y (son I // PB name - fift) y i // PB - sherr) y i // PB - lill) y i // PB name - kitt) y i // PB name - bett) y i // PB name - donn) y i // PB name -trinit) y i // PB name - emil) y i // PB name - kell) y i // PB name - beck) y i // PB name - ronn) y i // PB name - carol) y (n i // PB name - melv) y (n i // PB name -_barnab) y i // PB name - nanc) y i // PB name -gregor) y i // PB name - _l) yndon endVn // PB name - penns) ylvania elv'Ejnj& // PB - t) yrone aIr'Own // PB name - y (asmin S // PB name - Danish version (should it be [dZ]?) -amnest) y i // PB - cand) yfloss iflVs // PB candyfloss - n) y (a j // PB Kenya, Tanya - y (oga j // PB - yoyo joj'o // PB - _) yen jEn // PB currency - kan) y (le 'Y // PB stressed - _kab) y (s '?y // PB stressed - _kah) y (t '?y // PB stressed - _par) y (k '?W // PB stressed - _as) y (l 'y // PB stressed - _rev) y '?y // PB stressed - pol) y (est i' // PB polyester -pseudon) y (m '?y // PB stressed -_parapl) y '?y // PB stressed -_stereot) y (p 'y // PB stressed - _enz) y (m '?y // PB stressed - _vin) y (l '?y // PB stressed - ca) yenne j'En3 // PB stressed - volap) y 'y // PB volapyk + r) yg (_ Wg // ryg (noun "back") - problem with "ryg" (verb) = "smoke" + r) yg (_en y // "ryg en cigar" + r) yg (_end_ Wg // "mere tryg end nu" + str) yg yj // stryge + r) yg (ning y: // silent g + pr) yg (l y // + tr) yg (le y // trygle + _r) y (_ ?y // short glottal y + _r) y (et_ ?y // short glottal y + h) y (p ?y // hyp, hypermoderne + part) y i // + Amm) y ?i // rummy, dummy, grammy + str) yge y@- // strygetøj + str) yger yV // stryger + karr) y (+ i // + lib) y i // Libyen + _) yves i:v // Yves (French name) + fl) y (tn W // flytning + m) y (nte 'W // mynte, pebermynte (stressed) + afl) y (tt ?y // aflytning + L08) y (tt+ ?W // spyt, skyts, beskytte + sk) y (ti y // Skytien, skytisk + sk) y (ter y // skyter + s) yv yw // + sk) y (ll ?W // skylle + k) y (lling+ ?y // lørdagskylling + _rek) y (l 'y // stressed + sk) y (l_ ?W // skyl + sk) y (lni W // skylning +_molek) y (le 'y // stressed + _lat) y (rus 'y // stressed + eg) y (pt 'y // Egypten - stressed + f) yrre ?W:_|V // fyrre + f) yrre (tr YV // fyrretræ + f) yrre (k YV // fyrrekogle + n) y (t y // nyt + n) y (tt+ ?W // nytte + ben) y (t ?W // benyt + n) y (k_ W // nyk + n) y (kker ?W // nykker + kn) y (tt ?y // tilknytte + kn) y (t ?y // knyt + k) y (s+ W // kys, kyst + k) y (se+ y // kyse, kyser + sk) y (s+ y // skysovs, skyskraber + k) y (sk+ y // kyskhed + k) yss ?Ws // kysse + s) ynd (rom ?ynd // + s) y (nkr ?y // synkron + s) y (nt ?y // syntes + s) ynthesizer enTesaIsV // + s) y (nkroc W // synkrocyklotron + s) y (tten ?W // + fl) y (t_ W // flyt + fl) y (tt ?W // flytte + afl) y (t y // + fl) y (tbar W // + whisk) y i // whisky + cit) y i // + ick) y i // tricky, Nicky, Vicky + lonn) y e // name + scott) y e // name + happ) y ?i // happy end, happy hour + s) yracuse irVkjus // name + yatzy j&tsi // + y (onn j // bayonne, mayonnaise + y (ams j // + y (emen j // + yoel jo'El // name + l) y (mC ?W // lymfe + n) y (mf ?W // nymfe + k) y (mK ?W // bekymring + st) y (mper ?W // + d) y (L01t ?W // dygtig + l) y (nch ?W // lynchstemning + yacht jagd // lystyacht + york JV:k // + yankee j&nki // + yale jEjl/2 // + yorkshire _jOkS@ // + young jVN // + yard jard // + yuppie jupi // + yeager jEgV // name + ye (llow jE // Yellowstone + can) yon j3n // + cl) yde aId // + b) ypass aIpa:s // + c) y (ber aI // cyberspace + st) y (list aI // + sk) y (light aI // +standb) y 'aI // + carl) yle aIl // name + b) yte aIt // megabyte + d) y (lan i // name + obb) y i // hobby, lobby + count) y i // +brookl) y (n i // + bill) y i // + shell) y i // name + jack) y i // name + luc) y i // + all) y (son I // name + fift) y i // + sherr) y i // + lill) y i // name + kitt) y i // name + bett) y i // name + donn) y i // name +trinit) y i // name + emil) y i // name + kell) y i // name + beck) y i // name + ronn) y i // name + carol) y (n i // name + melv) y (n i // name +_barnab) y i // name + nanc) y i // name +gregor) y i // name + _l) yndon endVn // name + penns) ylvania elv'Ejnj& // + t) yrone aIr'Own // name + y (asmin S // name - Danish version (should it be [dZ]?) +amnest) y i // + cand) yfloss iflVs // candyfloss + n) y (a j // Kenya, Tanya + y (oga j // + yoyo joj'o // + _) yen jEn // currency + kan) y (le 'Y // stressed + _kab) y (s '?y // stressed + _kah) y (t '?y // stressed + _par) y (k '?W // stressed + _as) y (l 'y // stressed + _rev) y '?y // stressed + pol) y (est i' // polyester +pseudon) y (m '?y // stressed +_parapl) y '?y // stressed +_stereot) y (p 'y // stressed + _enz) y (m '?y // stressed + _vin) y (l '?y // stressed + ca) yenne j'En3 // stressed + _vamp) yr 'y3- // stressed + volap) y 'y // volapyk d) y (_ i - d) y (s_ i // PB Kennedys - d) y (p ?W // PB dyppe - d) y (k ?W // PB dykker - _s) ykes ajgs // PB name - _) ypres i:pR-3 // PB French town - _w) ya (tt aj3 // PB name - _l) yle ajl // PB name - b) y (A y - penn) y i // PB coin - yokohama jokoh'&m& // PB - _) yates jEjts // PB name - _l) yon i'VN // PB French city + d) y (s_ i // Kennedys + d) y (p ?W // dyppe + d) y (k ?W // dykker + _s) ykes aIgs // name + _) ypres i:pR@- // French town + _w) ya (tt aI3 // name + _l) yle aIl // name + b) y (A ?y // byer + penn) y i // coin + yokohama jokoh'&m& // + _) yates jEjts // name + _l) yon i'VN // French city .group z z s zz s - pi) zz (a ts // PB - zombi sVmbi // PB - zombie sVmbi // PB - zea (lan se // PB New Zealand - _) che) z (_ // PB silent z + pi) zz (a ts // + zombi sVmbi // + zombie sVmbi // + zea (lan se // New Zealand + _) che) z (_ // silent z .group æ æ E -// PB glottal æ followed by double consonant - æ (C%+ ?E // PB læsse - v) æ (dde+ ?E // vædde +// glottal æ followed by double consonant + æ (C%+ ?E // læsse +// v) æ (dde+ ?E // vædde - æ (gypt E' // PB - ærre ?E3-V // PB spærreballon - desv) ærre 'E3-V // PB stressed - r) æ (C%e+ ?&# // PB brække, rædde - experimental - r) æ (CA E: // PB ræbe - experimental - kæled) æ (gge 'E // PB stressed + æ (gypt E' // + ærre ?E3-V // spærreballon + desv) ærre 'E3-V // stressed + r) æ (C%e+ ?&# // brække, rædde, træffe - experimental + r) æ (CA E: // ræbe - experimental + kæled) æ (gge 'E // stressed -// PB problem with "læste" long verb vs. short noun - "skomagerens læste" +// problem with "læste" long verb vs. short noun - "skomagerens læste" _han_l) æ (ste E: _hun_l) æ (ste E: _vi_l) æ (ste E: _de_l) æ (ste E: -// PB nouns ending with -ær in da_list - stressed last syllable +// nouns ending with -ær in da_list - stressed last syllable &) ær ($p_alt ''Er // elementær -// PB general rule &# after r - r) æ (+ &# // PB frækt - very broad - suver) æ (n 'E // PB stressed - kr) æ (_ E? // PB - r) æ (t+ &# // PB åndedrættet - spr) æ (C+ &# // PB sprængt - pr) æ (C+ E // PB prætendere, præsentere, prækvalificere - rør) æg Eg // PB - pr) æ (gn E // PB prægnans, prægnant - for) æ (dle ?E // PB - æ (ld+ ?E // PB forældet, ældre, forældre - æ (lpe+ ?E // PB hjælpe - lp = double consonant? - r) æ (s E // PB kræsen, ræsson - r) æ (CL04 E // PB prærie, præcis - L08r) æ (C &# // PB skræk, skrælle, sprælle - gr) æ (s &# // PB græsplæne - pr) æ (st_ &# // PB - pr) æ (ster &# // PB - pr) æ (sten &# // PB - pr) æ (sterne &# // PB - pr) æ (stin &# // PB præstinde - pr) æ (sta E // PB præstation +// general rule &# after r + r) æ (+ &# // frækt - very broad + suver) æ (n 'E // stressed + kr) æ (_ E? // + r) æ (t+ &# // åndedrættet + spr) æ (C+ &# // sprængt + pr) æ (C+ E // prætendere, præsentere, prækvalificere + rør) æg Eg // + pr) æ (gn E // prægnans, prægnant + for) æ (dle ?E // + æ (ld+ ?E // forældet, ældre, forældre + æ (lpe+ ?E // hjælpe - lp = double consonant? + r) æ (s E // kræsen, ræsson + r) æ (CL04 E // prærie, præcis + L08r) æ (C &# // skræk, skrælle, sprælle + gr) æ (s &# // græsplæne + pr) æ (st_ &# // + pr) æ (ster &# // + pr) æ (sten &# // + pr) æ (sterne &# // + pr) æ (stin &# // præstinde + pr) æ (sta E // præstation -// PB general rule E after tr - tr) æ (+ ?E // PB juletræ +// general rule E after tr + tr) æ (+ ?E // juletræ + tr) æ (e E // træet - tr) æg (_ Ej // PB - tr) æg (e_ Ej // PB - r) æ (L02+ E // PB TEST r + æ + labial - dræb, præparat - r) æv (+ ?Ew // PB ræv, kræv - r) æ (L02e+ E // PB dræbe - tr) æ (n+ E // PB træning, træn - dr) æ (n+ E // PB dræning, dræn - tr) æ (ng+ &# // PB trænge - r) æ (L02% &# // PB TEST r + æ + double labial - skræppe - r) æ (L02t+ &# // PB TEST r + æ + labial + t - dræbt, kræft - r) æ (m &# // PB fugleskræmsel - tr) æ (C+ &# // PB træværk - tr) æg (hed Ej // PB - r) æ (d+ &# // PB fortræd, ræd -_portr) æ (t '&# // PB stressed + tr) æg (_ Ej // + tr) æg (e_ Ej // + r) æ (L02+ E // TEST r + æ + labial - dræb, præparat + r) æv (+ ?Ew // ræv, kræv + r) æ (L02e+ E // dræbe + tr) æ (n+ E // træning, træn + dr) æ (n+ E // dræning, dræn + tr) æ (ng+ ?&# // trænge + r) æ (L02% ?&# // TEST r + æ + double labial - skræppe + r) æ (L02t+ ?&# // TEST r + æ + labial + t - dræbt, kræft + r) æ (m ?&# // fugleskræmsel + tr) æ (C+ ?&# // træværk + tr) æg (hed Ej // + r) æ (d+ ?&# // fortræd, ræd +_portr) æ (t '?&# // stressed -// PB general rule r + æ + consonant + e: E - tr) æ (Ce++ E: // PB træne, træde - rr) æ (Cer+ &# // PB forræderi - dr) æ (ber E // PB - _mor) æ (ne+ 'E // PB stressed - _tr) æ (ben++ &# // PB træben +// general rule r + æ + consonant + e: E + tr) æ (Ce++ E: // træne, træde + rr) æ (Cer+ &# // forræderi + dr) æ (ber E // + _mor) æ (ne+ 'E // stressed + _tr) æ (ben++ ?&# // træben -// PB general rule r + æ + d + e: &# - r) æ (de++ &# // PB græde +// general rule r + æ + d + e: &# + r) æ (de++ &# // græde -// PB final -æer: stressed æ +// final -æer: stressed æ _aram) æ (er 'E _athen) æ (er 'E _epikur) æ (er 'E @@ -8831,263 +8847,272 @@ _nazar) æ (er 'E _propyl) æ (er 'E _pythagor) æ (er 'E - æld (r+ Eld // PB forældre, ældre - k) æld (r El // PB kældre - pr) æ (k E // PB præke - pr) ædi ED // PB silent i - prædiken - pr) ædi (kant Edi // PB - pr) æ (stere E // PB - spr) æ (kk &# // PB sprække - sp) æ (ne E: // PB opposed to "spænde" with a short æ - _migr) æ (ne 'E // PB stressed - _dom) æ (ne 'E // PB stressed - f) æ (re 'E: // PB affære, atmosfære, sfære - gev) ær 'E3- // PB gevær, geværet - besv) ær (_ 'E3- // PB besvær - afh) æ (ngig 'E: // PB stressed - _omst) æ (nd ''E // PB stressed - omstændighed - _pal) æ 'E // PB stressed -_porcel) æ (n 'E // PB stressed - _pygm) æ 'E // PB stressed - trof) æ 'E // PB stressed - _fad) æ (se 'E // PB stressed - refr) æn '&N // PB stressed - _font) æ (ne 'E // PB stressed - _iv) æ (rksæt 'E // PB stressed - iværksætter -_karant) æ (ne 'E // PB stressed -_jubil) æ 'E // PB jubilæet - galil) æ 'E // PB Galilæa, galilæerne - t) æge E:j@ // PB tæge - t) æe (r E // PB tæer - C) ærge E:ru@ // PB sværge, færge, værge - v) ærger E:ruV // PB sværger - ævl Eul // PB -majest) æ (t 'E // PB stressed æ - ærinde ERn@ // PB - sj) æ (l ?E // PB sjæl - sj) æ (leC E // PB sjælefred - sj) æ (len ?E // PB sjælen, sjælens + æld (r+ Eld // forældre, ældre + k) æld (r El // kældre + pr) æ (k E // præke + pr) ædi ED // silent i - prædiken + pr) ædi (kant Edi // + pr) æ (stere E // + spr) æ (kk &# // sprække + sp) æ (ne E: // opposed to "spænde" with a short æ + _migr) æ (ne 'E // stressed + _dom) æ (ne 'E // stressed + f) æ (re 'E: // affære, atmosfære, sfære + gev) ær 'E3- // gevær, geværet + besv) ær (_ 'E3- // besvær + afh) æ (ngig 'E: // stressed + _omst) æ (nd ''E // stressed - omstændighed + _pal) æ 'E // stressed +_porcel) æ (n 'E // stressed + _pygm) æ 'E // stressed + trof) æ 'E // stressed + _fad) æ (se 'E // stressed + refr) æn '&N // stressed + _font) æ (ne 'E // stressed + ortop) æ (d 'E // stressed + _iv) æ (rksæt 'E // stressed - iværksætter +_karant) æ (ne 'E // stressed +_jubil) æ 'E // jubilæet + galil) æ 'E // Galilæa, galilæerne + t) æge E:j@ // tæge + t) æer E3- // tæer + C) ærge E:r?u@- // sværge, færge, værge + v) ærger E:r?uV // sværger + ævl Eul // +majest) æ (t 'E // stressed æ + ærinde ERn@ // + sj) æ (l ?E // sjæl + sj) æ (leC E // sjælefred + sj) æ (len ?E // sjælen, sjælens .group ø // røveren [V] faldt på røven [W#] og skød [?W] en møgkælling [Vj] ø W -// Glottal (short) ø - double consonant - ø (C% ?W // PB tørre, fødder - r) ø (mme ?W# // PB rømme, strømme - ø (rnene ?W // PB børnene, tjørnene - TEST +// Short ø - double consonant + ø (C%+ ?W // tørre, fødder, rødder + r) ø (mme ?W# // rømme, strømme + ø (rnene ?W // børnene, tjørnene - TEST + ø (ds ?W // ødsel, fødsel - short before 2 consonants + b) ø (n ?W // bønder -_chauff) ø (r 'W // PB stressed in 'chauffør' - _milj) ø 'W // PB stressed - miljø - obsk) ø (n 'W: // PB stressed - _nev) ø 'W // PB stressed - _am) ø (be 'W // PB stressed +_chauff) ø (r 'W // stressed in 'chauffør' + _milj) ø 'W // stressed - miljø + obsk) ø (n 'W: // stressed + _nev) ø 'W // stressed + _am) ø (be 'W // stressed h) ø (j V - ø (je W# // PB øje - øre WV // PB snørebånd, gøren - ører (n WV // PB ørerne - ører (_ WV // PB kører - i) øre (faldende 'WV // PB stressed - s) øre (dni WrE // PB søredningstjeneste - øjer W#jV // PB bøjer - ø (jn W# // PB øjne - l) øg 'Vj // PB løgn, løg - kl) øg (t ?Wg // PB kløgtig - gl) øgg Wg // PB gløgg - g) øg (l Vj // PB gøgler + ø (je W# // øje + øre WV // snørebånd, gøren + ører (n WV // ørerne + ører (_ WV // kører + i) øre (faldende 'WV // stressed + s) øre (dni WrE // søredningstjeneste + øjer W#jV // bøjer + ø (jn W# // øjne + l) øg 'Vj // løgn, løg + kl) øg (t ?Wg // kløgtig + gl) øgg Wg // gløgg + g) øg (l Vj // gøgler l) ø (s W - C) ø (j+ V // PB søjle, bøjle, sprøjte - _hall) ø (j 'W# // PB stressed - burg) ø (js 'W# // PB burgøjser, burgøjsisk - stressed -oberstl) ø (jtnant 'W# // PB stressed - L09) ø (g+ V // PB m => L09 (m + n) - møg, smøg, nøgen - n) øg (tern Wg // PB - sm) øg (_sig Wj // PB "katten smøg sig om benet" - _n) ø (d@ 'W // PB nød- stressed - nødsituation - _n) ødt (_ Wd // PB nødt - r) ø (+ W // brød - fr) ø (+ ?W // PB frø, frøer - short even if followed by [V] - r) ø (L09 W# // PB grøn, strøm - r) ø (L09e W // PB skrøne - dr) ø (n ?W // PB drøn - dr) ø (ne W // PB drøne - r) ø (mer ?W // PB strømere - L08) ø (ge W // PB skøge - sp) øg (en Vj // PB - sp) øg (_ Vj // PB spøg = joke - s) ø (g ?W // PB søgte - sp) ør (g W:r // PB spørge - sp) ørger (_ Wr // PB - sp) ør (gs Wr // PB spørgsmål - r) ø (g+ W# // PB røg - r) ø (gte W // PB misrøgte - r) ø (gelse W // PB - for) ø (g W // PB forøge - for) øg (_ ?W // PB forøg -// øre_ W:V // PB køre - r) ø (v W# // PB røv - ber) ø (ve W // PB - bedr) ø (v W // PB bedrøvede - r) ø (ver W // PB røveri - narr) ø (v W# // PB narrøve -bonder) ø (v W# // PB bonderøve - pr) ø (v ?W // PB glottal - pr) ø (vA W // PB - _r) ø (ven W# // PB - dr) ø (vet W // PB bedrøvet - k) ød WD // PB skød, kød - _) øg (_ Wj // PB 'øg' noun and verb + C) ø (j+ V // søjle, bøjle, sprøjte + _hall) ø (j 'W# // stressed + burg) ø (js 'W# // burgøjser, burgøjsisk - stressed +oberstl) ø (jtnant 'W# // stressed + L09) ø (g+ V // m => L09 (m + n) - møg, smøg, nøgen + n) øg (tern Wg // + sm) øg (_sig Wj // "katten smøg sig om benet" + _n) ø (d@ 'W // nød- stressed - nødsituation + _n) ødt (_ Wd // nødt + r) ø (d+ W // brød + fr) ø (+ ?W // frø, frøer - short even if followed by [V] + r) ø (L09 W# // grøn, strøm + r) ø (L09e W // skrøne + dr) ø (n ?W // drøn + dr) ø (ne W // drøne + d) ø (d ?W // død + 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) ør (g W:r // spørge + sp) ørger (_ Wr // + sp) ør (gs Wr // spørgsmål + r) ø (g+ ?W# // røg + r) ø (gte W // misrøgte + r) ø (gelse W // + for) ø (g W // forøge + for) øg (_ ?W // forøg +// øre_ W:V // køre + r) ø (v W# // røv + r) ø (ve W // røve + ber) ø (ve W // + bedr) ø (v W // bedrøvede + r) ø (ver W: // røver + r) ø (veri W // røveri + narr) ø (v W# // narrøve +bonder) ø (v W# // bonderøve + pr) ø (v ?W // short + pr) ø (vA W // + _r) ø (ven ?W# // + dr) ø (vet W // bedrøvet + k) ød ?WD // skød, kød + _) øg (_ ?Wj // 'øg' noun and verb d) øg (n Vj - øj+ V:j // PB changet from [Oj] - velg) øre (nhed 'WV // PB stressed ø - _man) ø (vre 'W // PB stressed - im) ø (dekom 'W: // PB imødekomme - syd) ø (st 'W // PB stressed - sydøst - nord) ø (st 'W // PB stressed - nordøst + øj+ V:j // changet from [Oj] + velg) øre (nhed 'WV // stressed ø + _man) ø (vre '?W // stressed + im) ø (dekom 'W: // imødekomme + syd) ø (st 'W // stressed - sydøst + nord) ø (st 'W // stressed - nordøst .group øs -//PB (mostley French -eux/-euse) adjectives ending with -øs in da_list - stressed ø +// (mostley French -eux/-euse) adjectives ending with -øs in da_list - stressed ø &) øs ($p_alt 'W:s // dubiøs .group ør -//PB (mostley French -eur) nouns ending with -ør - stressed ø - around 150 words +// (mostley French -eur) nouns ending with -ør - stressed ø - around 150 words &) ør ($p_alt ''?W3- // hønnør, frisør &) ør (en$p_alt ''?WV // hønnøren, frisøren .group å - å O // PB changed from O:? + å O // changed from O:? - å (K O // PB lås, ås - år (@ O: // PB dårlig, årsag - g) år O // PB går, overgår - _) år (_ O // PB år - C) år (_ O // PB sår, kår, skår -// f) år (_ O // PB - år (s O // PB årstid - s) år (C O: // PB sårbsr + å (C ?O // lås, ås, båd + år (@ O: // dårlig, årsag + @) år (_ O: // skatteår +// g) år O // går, overgår + _) år (_ O: // år + C) år (_ O: // sår, kår, skår, får + år (s O: // årstid + s) år (C O: // sårbsr åre O:?O // Pb åre, årelang, båre, båren - året O:?OD // PB året, håret - n) å (et ?O // PB short glottal o - @n) å (et O // PB opnået + året O:?OD // året, håret + n) å (et ?O // short glottal o + @n) å (et O // opnået - ovenp) å (_ '?O // PB stressed (originally 2 words "oven på") - undg) åe (lig '?O // PB stressed - opn) åe (lig '?O // PB stressed - forst) åe (lig '?O // PB stressed -uimodst) åe (lig '?O // PB stressed - påst) åe (lig '?O // PB stressed + ovenp) å (_ '?O // stressed (originally 2 words "oven på") + undg) åe (lig '?O // stressed + opn) åe (lig '?O // stressed + forst) åe (lig '?O // stressed +uimodst) åe (lig '?O // stressed + påst) åe (lig '?O // stressed -// PB råd ("advice") - r) å (d+ O // PB råd ("advice", not "rot") - r) å (dn+ V // PB rådne - r) å (dyr V // PB - tr) ådne (t ODnE // PB - r) å (dd+ V // PB rådden - tr) å (dt+ V // PB overtrådt - r) å (dg+ V // PB rådgive - r) å (df+ V // PB rådføre - r) å (dh+ V // PB rådhus - r) å (dvild V // PB - r) å (dsnar V // PB - r) å (dløs V // PB - tr) å (d+ O // PB trådløs - r) å (dmand V // PB - r) å (dsl V // PB rådslagning - r) å (dsp V // PB rådspørge, rådspurgte - r) å (sejl V // PB +// råd ("advice") + r) å (d+ O // råd ("advice", not "rot") + r) å (dn+ V // rådne + r) å (dyr V // + tr) ådne (t ODnE // + r) å (dd+ V // rådden + tr) å (dt+ V // overtrådt + r) å (dg+ V // rådgive + r) å (df+ V // rådføre + r) å (dh+ V // rådhus + r) å (dvild V // + r) å (dsnar V // + r) å (dløs V // + tr) å (d+ O // trådløs + r) å (dmand V // + r) å (dsl V // rådslagning + r) å (dsp V // rådspørge, rådspurgte + r) å (sejl V // - g) ård V: // PB gårdmand, bondegård - silent d - g) årde V:3 // PB - ården V:Vn // PB gården - h) år O // PB hår, hård + g) ård V: // gårdmand, bondegård - silent d + g) årde V:3 // + ården V:Vn // gården + h) år O // hår, hård h) år (dt O: - h) årde V3 // PB - h) årdest V:r@st // PB - p) å (ske O // PB påske - s) å O // PB så - s) å (vel V // PB - s) å (_snart V // PB - s) å (_få V // PB - s) å (kald V // PB såkaldt - s) å (mænd V // PB - sp) å (mand V // PB - sp) å (mænd V // PB - sp) å (kone V // PB - sp) å (kvinde V // PB - sp) å (dom V // PB - åd (s VD // PB ådsel, rådslagning - b) åd (+ OD // PB bådskur -_var_s) å (_ V // PB jeg var så glad - jas) å (_ 'V // PB jaså + h) årde V3 // + h) årdest V:r@st // + p) å (ske O // påske + s) å O // så + s) å (vel V // + s) å (_snart V // + s) å (_få V // + s) å (kald V // såkaldt + s) å (mænd V // + sp) å (mand V // + sp) å (mænd V // + sp) å (kone V // + sp) å (kvinde V // + sp) å (dom V // + åd (s VD // ådsel, rådslagning + b) åd (e+ OD // bådskur + b) åd (en+ ?OD // +_var_s) å (_ V // jeg var så glad + jas) å (_ 'V // jaså alts) å V // PN altså - hvorn) år 'O // PB hvornår - stressed -uimodst) å (elig 'O // PB stressed - bl) å (@ V // PB blåbær, blågrå + hvorn) år 'O // hvornår - stressed +uimodst) å (elig 'O // stressed + bl) å (@ V // blåbær, blågrå -// PB General rule [?V] followed by t - å (t ?V // PB blåt - g) å (tur ?O // PB +// General rule [?V] followed by t + å (t ?V // blåt + g) å (tur ?O // - å (nd V // PB hånd, ånd, bånd - l) å (r V - p) å (st V // PB påstand - gåp) å (mod 'O // PB stressed - sl) å (s V // PB slås -tændingsl) å (s O // PB - sl) å (brok V // PB - ansl) å O // PB anslås - sm) å (C@+ V // PB småkage, småfolk, smålig - m) å (de++ O // PB fremgangsmåde -spørgsm) å (l O // PB spørgsmålet + å (nd ?V // hånd, ånd, bånd + l) å (r ?V + p) å (st ?V // påstand + gåp) å (mod '?O // stressed + sl) å (s ?V // slås +tændingsl) å (s ?O // + sl) å (brok ?V // + ansl) å ?O // anslås + sm) å (C@+ ?V // småkage, småfolk, smålig + m) å (de++ O // fremgangsmåde +spørgsm) å (l ?O // spørgsmålet m) å (ling++ O // PP meningsmåling -modersm) å (l O // PB -slagsm) å (l O // PB - m) å (lløs+ ?V // PB - m) å (ltid+ V // PB - s) å (d V // PB sådan - s) å (t V // PB undersåt - skr) å (p V // PB skråplan - stj) å V // PB stjålet - L08r) å (t ?V // PB skråt - m) å (t ?V // PB måtte - v) å (dt ?V // PB - _p) å ?V // PB påmontere - t) å (lmo ?V // PB tålmodig - d) å (dyr ?V // PB dådyr - t) å (negl ?V // PB - t) å (spids ?V // PB - _p) åse ?Vse // PB påse - r) å (t ?V // PB gråt - gr) å (@ ?V // PB gråand, grågrøn, gråsprængt - gr) å (d O // PB gråd, grådig - gr) å (ne O // PB - r) å (bt ?V // PB råbte - r) å (lam ?V // PB - r) å (material ?V // PB - str) å (mand ?V // PB - str) å (mænd ?V // PB - str) å (forkort ?V // PB stråforkorter - str) å (hat ?V // PB - str) å (død ?V // PB -// år ?V // PB år, står, dårlig - st) år V // PB forstår -// åre V:3 // PB tåre - årer V:V- // PB sårer - å (lti V // PB måltid +modersm) å (l ?O // +slagsm) å (l ?O // + m) å (lløs+ ?V // + m) å (ltid+ ?V // + s) å (d ?V // sådan + s) å (t ?V // undersåt + skr) å (p ?V // skråplan + stj) å ?V // stjålet + L08r) å (t ?V // skråt + m) å (t ?V // måtte + v) å (dt ?V // + _p) å ?V // påmontere + t) å (lmo ?V // tålmodig + d) å (dyr ?V // dådyr + t) å (negl ?V // + t) å (spids ?V // + _p) åse ?Vse // påse + r) å (t ?V // gråt + gr) å (@ ?V // gråand, grågrøn, gråsprængt + gr) å (d O // gråd, grådig + gr) å (ne O // + r) å (bt ?V // råbte + r) å (lam ?V // + r) å (material ?V // + str) å (mand ?V // + str) å (mænd ?V // + str) å (forkort ?V // stråforkorter + str) å (hat ?V // + str) å (død ?V // +// år ?V // år, står, dårlig + st) år V // forstår +// åre V:3 // tåre + årer V:V- // sårer + å (lti ?V // måltid .group ' 's (_S2 s - 'en (_S3 @n // PB bh'en - 'er (_S3 %V // PB 60'er - 'ere (_S4 VrV // PB 60'ere - 'erne (_S5 %Vn@ // PB 60'erne -// 30_) 'erne (_S5 %Vn@ // PB 30'erne - 'ernes (_S6 %Vn@s // PB 60'ernes - 'et (_S3 @D // PB tv'et + 'en (_S3 @n // bh'en + 'er (_S3 %V // 60'er + 'ere (_S4 VrV // 60'ere + 'erne (_S5 %Vn@ // 60'erne +// 30_) 'erne (_S5 %Vn@ // 30'erne + 'ernes (_S6 %Vn@s // 60'ernes + 'et (_S3 @D // tv'et .group - $ dVlV // PB changed from [dVlar] - ñ _^_ES // PB mañana - ï i: // PB Thaïs + $ dVlV // changed from [dVlar] + ñ _^_ES // mañana + ï i: // Thaïs ç s - à & // PB à part + à & // à part diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 1b1cbc41..beb1caf9 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -53,12 +53,12 @@ p r s S t T v w x z -Dictionary da_dict 2013-03-06 +Dictionary da_dict 2013-03-13 -& &# 0 3 ?& ?&# ?0 ?a -?A ?e ?E ?i ?o ?O ?u ?V -?W ?W# ?y @ @- a A aI -e E i I o O u V +& &# 0 3 ?& ?&# ?0 ?A +?e ?E ?i ?o ?O ?u ?V ?W +?W# ?y @ @- a A aI e +E i I n- o O u V W W# y Y * - 3- : ; ? b B @@ -68,7 +68,7 @@ r R R3 s S t T tS v w x z Z -Dictionary hu_dict 2013-03-11 +Dictionary hu_dict 2013-03-12 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -104,7 +104,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-10 +Dictionary en_dict 2013-03-12 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -117,8 +117,8 @@ oU O~ u U u: U@ V VR d# dZ f g h j k l l# l/ m n N n^ p Q q Q" r R r- R2 s S -t T t2 tS v w x z -Z z# +t T t2 tS tS; v w x +z Z z# Dictionary eo_dict 2013-03-08 @@ -379,7 +379,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-11 +Dictionary pt_dict 2013-03-13 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -603,7 +603,7 @@ N n^ p q R s S S; t tS v w x z -Dictionary ur_dict 2013-03-09 +Dictionary ur_dict 2013-03-13 @ a a: aI aU e E e: i I i: O o: U u: V @@ -850,7 +850,7 @@ p p- ph q r R s t t- tS tS; w -Dictionary fa_dict 2013-02-13 +Dictionary fa_dict 2013-03-12 a A e i o u diff --git a/dictsource/en_list b/dictsource/en_list index 54507487..a6931de8 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -274,7 +274,7 @@ _lo l'aU _ti tI2b'Et@n _my mj'A:nmA@ _ka dZ'O@dZ@n -_ko k3r'i@n +_ko h'angul _eth i:TI'0pIk _ja dZ'ap@ni:z _zh tS'aIni:z @@ -308,11 +308,15 @@ _zh tS'aIni:z ш Sa щ StSa ъ jEr -ы _^_RU -ь jer +ы j'Eru +ь j'eri э E ю ju я ja +ћ tS;E +ђ djE +ќ kjE + // Arabic letters @@ -1020,6 +1024,7 @@ canine keInaIn canoe k@nu: canoes k@nu:z canon kan@n +?3 cantaloupe kant@loUp canton kant0n canvas kanv@s capita kapIt@ @@ -1192,6 +1197,8 @@ conger k0Ng3 congressional k@ngrES@n@L conker $1 conscience k0nS@ns +consort $1 +consort $verb constitute $1 construct $1 $onlys construct $verb @@ -2621,7 +2628,7 @@ sierra si:'e@r@ signage saInI2dZ signal sIgn@l // signaled signer saIn3 -signoff s,aIn'0f +signoff s'aIn0f signon s,aIn'0n signup saInVp sikh si:k diff --git a/dictsource/en_rules b/dictsource/en_rules index e5ee4f9e..f17077ed 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -387,6 +387,7 @@ _r) adio (@P5 r,eIdI%oU r) adi (oL10+ eIdI b) ad (os_ eId + _s) ado (ma ,eIdoU ad (iA eId s) ad (is eId _tr) ad (it a#d @@ -3382,6 +3383,7 @@ &) ion (_ =i@n ?8 &) ion (_ =IVn ll) ion i@n + ll) ion (_ =i@n n) ion =i@n v) io (l aI@ ione (_ 'aI@ni @@ -3572,7 +3574,6 @@ _l) iv (eB aIv XC) iv (el Iv _g) iv (e Iv - _l) iv (e Iv l) iv (er Iv r) iv (er Iv dr) iv (er aIv @@ -3753,8 +3754,7 @@ _) metall (ic m@tal metabo m@t'ab0 _) meta (llu m%Eta - _) mobile moUbaIl - mobile m@bi:l + &) mobile m@bi:l mono (ga m@n'0 mo (noto m@ _) mono m0noU diff --git a/dictsource/fa_list b/dictsource/fa_list index 849dcc03..8b1a413c 100755 --- a/dictsource/fa_list +++ b/dictsource/fa_list @@ -1,4 +1,4 @@ -// * Farsi Language fa (or Parsi or Persian) fa_list Version 3.0 + // * Farsi Language fa (or Parsi or Persian) fa_list Version 3.0 // * This file writen by Shadyar Khodayari 2013 //********* // * This program is free software; you can redistribute it and/or modify * @@ -68,6 +68,8 @@ _و 'vAv َ a ُ o ِ e: +ْ sAken +ٰ alefemaq1suRe: ّ taSdid ً 'an ٌ 'on @@ -267,32 +269,106 @@ $ dolAR کند kand $stem +// The list of unstressed words +من man $u+ +تو to $u+ +او u: $u+ +ما mA $u+ + +ام am $u+ +ات at $u+ +اش aS $u+ +مون mun $u+ +تون tun $u+ +شون Sun $u+ +ای i: $u+ +ایم i:m $u+ +اید i:d $u+ +اند and $u+ + +آن An $u+ +این i:n $u+ +جا dZA $u+ + +می mi $u+ +نمی nemi $u+ +به be: $u+ +بی bi $u+ +نه na $u+ +در daR $u+ +با bA $u+ +یا jA: $u+ +نا nA $u+ +تا tA: $u+ +از az $u+ +پر poR $u+ +چه tSe: $u+ +را RA $u+ +هر haR $u+ +بر baR $u+ +تر taR $u+ +ها hA $u+ + +چی tSi $u+ +گر gaR $u+ +کی kej $u+ +کس kas $u+ +خود xod $u+ + + // exceptional words, (out of rules) +آباء AbA آبت Abat +آبتل Abtal آبتین Abtin آبجو AbdZo: +آبدمزن Abdamzan +آبدنگ Abdang +آبرفت AbRoft +آبرفتگی AbRaftegi آبرو AbeRu آبزی Abzi +آبستره AbsteRe: +آبستن Abestan +آبسته Abaste +آبسر AbsoR +آبسرد AbesaRd +آبسنگ Absang آبسه Abse: +آبسکون Abeskun آبش AbaS آبشش AbSoS آبم Abam +آبونمان AbunmAn آبپز Ab'paz آبکش AbkeS آبگرم AbgaRm آبگوشت Ab_guSt آبیک Abjek +آتاترک AtAtoRk +آتاتورک AtAtoRk +آتروفی AtRofi +آتروپین AtRopin آتش AtaS آتشدان AtaSdAn آتشفشان AtaSfeSAn +آتشمار AtaSmAR آتشنشان AtaSneSAn +آتل Atel آتلیه Atelije: آتلیۀ Atelijeje آتن Aten آتنا AtenA +آثارالباقیه AsARolbAq1ije آجر AdZoR آجرپز AdZoRpaz +آخالسوز AxAlsuz آخر AxaR +آخرالامر AxaRolamR +آخرالزمان AxaRAzzamAn +آخرالنهر AxeRonnahR +آخرسر AxaRsaR +آخرعمری AxaReomRi آخرین AxaRin آخوند Axund آخیش AxejS @@ -302,112 +378,265 @@ $ dolAR آدم Adam آدما AdamA آدمبرفی AdambaRfi +آدنین Adenin آذر AzaR آذربایجان AzaRbAjedZAn +آذربرق AzaRbaRq1 +آذربو AzaRbu آذرخش AzaRaxS +آذردخت AzaRdoxt +آذرسهند AzaRsahand +آذرشب AzaRSab +آذرمیدخت AzaRmidoxt +آذرپرس AzaRpeRes +آذرگشنسب AzaRgoSnasb +آرابسک ARAbesk آرامش ARAmeS آرامپز ARAm'paz آرایش ARAjeS آرایی ARAi +آرترز ARteRoz +آرتروگرافی ARteRogeRAfi +آرترگرافی ARteRogeRAfi آرتمیس ARtemis آرد ARd +آردبیز ARdbiz آرزو 'ARezu آرشه ARSe: آرشۀ ARSeje +آرشیتکت ARSitekt +آرشیدوشس ARSiduSes +آرشیدوک ARSiduk +آرغ ARoq1 +آرم ARm +آرماتور ARmAtoR +آرماتوربند ARmAtoRband آرمان ARmAn آرمین ARmin آرنج ARendZ آروغ ARoq1 +آروماتیک ARomAtik آرپژ ARpeZ آرژانتین ARZAntin +آرکگن ARkegon +آرکیوزوییک ARkeozoik +آرکیوپتریکس ARkeopeteRiks +آرگون ARgon +آریتمی ARitmi آریل ARijel آرین ARijan آریو ARijo +آریوبرزن ARjubaRza +آزاددرخت AzAddeRaxt +آزادمجد AzAdmadZd +آزاربلندی AzARbolandi +آزتک Aztak +آزرد AzoRd آزرده AzoRde: +آزرم AzaRm +آزرمگین AzaRmgin آزمایش ?AzmAjeS آسانسر AsAnsoR آسایش AsAjeS آستان AstAn آستانه AstAne: +آسترومتری AstRometRi +آسترویید AsteRoid آستین Astin آسفالت AsfAlt آسم Asm آسمانخراش AsmAnxaRAS آسودگی Asudegi -آسوشیتد AsoSited -آسوشیتدپرس AsoSitedpeRes +آسوشیتد AsoSejted +آسوشیتدپرس AsoSejtedpeRes +آسیاسنگ AsijAsang +آسیاگشت AsijAgaS آشتی ASti آشفت ASoft آشپز ASpaz آصف Asef آغشت Aq1eSt +آفتومات AftomAt آفرودیت AfRodit آفرید AfaRid +آفریدگار AfaRidegAR آفریقا AfRiq1A آفرین AfaRin آفرینش AfaRineS آفند Afand +آقااحمدی Aq1Aahmadi +آقاصفری Aq1AsafaRi +آقاعمو Aq1Aamu +آقاملی Aq1Amali +آقامیری Aq1AmiRi +آقانباتی Aq1AnabAti +آلاگارسن AlAgARson +آلباتروس AlbAtRos +آلبالوپلو AlbAlupolo آلبرت AlbeRt آلبوم Albom آلترناتیو AlteRnAtiv آلتو Alto +آلتواستراتوس AltoesteRAtus +آلتوکومولوس Altokomolus +آلتیمتر AltimetR +آلدسترون AldosteRon +آلدیید Aldeid آلفرد AlfeRed +آلماتی AlmAti آلمان AlmAn آلمینیوم Alminijom آلن Alen +آله Ale +آلوتروپی AlotRopi +آلوزرد AluzaRd +آلومین Alomin +آلومینیمی Alominijomi +آلپ Alp +آلگرتو AlegReto +آلگوریسم AlgoRism +آلیوت Aleut +آما AmA +آماریلیس AmARilis آمازن AmAzon آمازون AmAzon آمبولانس AmbulAns +آمخته Amoxte آمد Amad +آمدورفت AmadoRaft +آمر AmeR +آمرانه AmeRAnes آمرز AmoRz آمرزش AmoRzeS +آمرف AmoRf +آمریت AmeRijat آمریکا AmRikA +آمفوتر AmfoteR +آمفی Amfi آمل Amol آمنه Amene: آموخت Amuxt آموزش AmuzeS +آمپرمتر AmpeRmetR +آمپلیفایر AmpelifAjeR +آمپیریسم AmpiRism +آمپیریسیسم AmpiRisism +آمیتوز Amitoz آمیخت Amixt +آمیغ Amiq1 +آمینواسید Aminoasid +آنابلیسم AnAbolisms آناتولی AnAtoli آناتومی AnAtomi +آناکوندا AnAkondA +آنتراسن AntRAsen +آنتراسیت AntRAsit +آنتراکت AnteRAkt +آنترروباکتریا AnteRobAkteRijA +آنتروپوزوییک AntRopozoik +آنتروپویید AntRopoid +آنتروپی AntRopi +آنتروکوک AntRokok +آنتروکیناز AntRokinAz +آنتریک AntiRik آنتن Anten +آنتوسیانین AntosijAnin آنتی Anti +آنتیموان AntimuAn آنجانب 'AndZAneb آنجلس AndZeles +آنجهان AndZahAn +آندانت AndAnt آندرانیک AndRAnik +آندوتوکسین Andotoksin +آندوسکپ Andoskop +آندومتر AndometR +آندوکربن AndokaRbon +آندوکرین AndokRin +آنرمال AnoRmAl +آنزیم ApoAnzim آنستکه Anastke +آنسفالیت AnsefAlit آنطور Anto:R آنفلوآنزا AnfeloAnzA آنقدر Anq1adR +آنقوت Anq1ut آنلاین AnlAjn آنند Anand +آنوفل Anofel +آنوقت Anvaq1t آنچنان AntSenAn +آنچنانکه AntSenAnkes +آنژ AnZ +آنژین AnZin +آنکادره AnkAdRe +آنکت Anket +آنکلاو AnkelAv آنکه Anke: +آنکولوژی AnkoloZi +آنگسترم AngestRom +آنگلوساکسن AngelosAkson +آنگلوساکسون AngelosAkson +آنگلوفوب Angelofob +آنگلوفیل Angelofil +آنگلیکان AngelikAn +آنگه Angah +آنیمیسم Animism +آنیون Anjon +آهارمهره AhARmohRe آهسته Aheste: آهستگی Ahestegi +آهنجش AhandZeS آهنگ Ahang آهنگی Ahangi +آهیخت Ahixt +آوانگارد AvAngARd آورد AvaRd آوریل AvRil +آوند Avand +آونگ Avang آویخت Avixt +آویش AviS +آوینیون Avinijon +آپاندیسیت ApAndisit آپدیت Ap_dejt +آپراکسی ApRAksi آپلود Aplod آپلون Apolon +آپلیکاتور AplikAtoR آپولن Apolon آپولون Apolon +آژاکس AZAks +آژنگ AZang +آژیدهاک AZidhAk آکادمی AkAdemi +آکادمیسین AkAdemisjAn آکادمیک AkAdemik آکاردن AkARdeon آکاردون AkARdeon آکاپلا AkApellA +آکتور AktoR +آکتورس AktoRes +آکتومیوزین Aktomijozin +آکتینومیست Atinomist +آکتیویته Aktivite +آکد Aked آکرد AkoRd آکسفورد AksfoRd +آکسنت Aksent آکمپانیمان AkompAnimAn +آکواریم AkvARijom آکواریوم AkvARijom آکورد AkoRd +آکومولاتور AkomulAtoR آکومپانیمان AkompAnimAn +آکپ Akep آگاممنن AgAmemnon آگاممنون AgAmemnon +آگامنون AgAmnun آگاه A:gAh +آگنتوزوییک Agnetozoik +آگه Agah آگهی Agahi آی Aj آیتم Ajtem @@ -419,6 +648,7 @@ $ dolAR آینه Ajene: آیه Aje: آیپدآیفون Ajpad +آیکن Ajkon آیکون Ajkon ائتلاف e?telAf ابابصیر abAbasiR @@ -662,6 +892,7 @@ $ dolAR ادرکنی adRekni ادریس edRis ادعا edde?A +ادعّا edde?A ادغام edq1Am ادقام edq1Am ادله adelle: @@ -816,7 +1047,6 @@ $ dolAR ازیریس oziRis اسارت esARat اساسا asAsan -اسام osAm اسانس esAns اسایه ?esA?e اسبات esbAt @@ -882,6 +1112,7 @@ $ dolAR استریل esteRil استریلیزاسیون esteRilizAsijon استریلیزه esteRilize: +استرینگ estRing استریو esteRijo استریکنین esteRiknin استسقا estesq1A @@ -1179,6 +1410,7 @@ $ dolAR افروخت afRuxt افروز ?afRuz افریقا efRiq1A +افزار afzAR افزاید afzAjad افزایش afzAjeS افساد efsAd @@ -1243,6 +1475,7 @@ $ dolAR الاغ olAq1 الاکلنگ allAkolang البته al'batte: +البتّه albatte: البرز alboRz البلاغه olbalAq1e: البها ol_bahA @@ -1450,6 +1683,12 @@ $ dolAR انترناسیونالیسم anteRnAsijonAlism انتها entehA انتهای entehAje +انتهایت entehAjat +انتهایتان entehAjetAn +انتهایش entehAjaS +انتهایشان entehAjeSAn +انتهایم entehAjam +انتهایمان entehAjemAn انتگرال an'tegRAl انجبین andZabin انجم andZom @@ -1537,6 +1776,7 @@ $ dolAR اهرمن ahReman اهم ahamm اهمال ehmAl +اهمّ aham اهمیت 'ahammi:,jat اهورامزدا ahuRAmazdA او u: @@ -1573,19 +1813,42 @@ $ dolAR اوستا avestA اوصاف osAf اوضاع o:zA? +اوغور oq1oR اوقات o:q1At +اوقاف ovq1Af اول 'avval +اولا avvalan اولاد o:lAd +اولاند olAnd +اولتراسوند olteRAsond +اولتراسونوگرافی ultRAnsonogeRAfi +اولتراسونیک oltRAsonik +اولتراویولت ultRAvijolet +اولتیماتوم oltimAtom +اولمپیا olampijA +اولوالعزم ololazm اولویت o:lavijat +اولیا olijA +اولیاء olijA اولین avvalin +اومانیست umAnist +اومانیسم umAnism اومد umad اونس ons اونور 'unvaR +اونوقت unvaq1t +اونیفورم onifoRm +اوهام o:hAm +اوورت uveRt +اوورتور oveRtuR +اوول ovul اوّلین avvalin اوپتیک optik اوپن open اوپک opek +اوکتاو oktAv اوکراین okRAjn +اوکرایینی okRAini اوی uj اویس ovejs اوین evin @@ -1604,6 +1867,7 @@ $ dolAR اپورتونیسم opoRtunism اپوزسیون opozesijon اپوزیسیون opozisijon +اپوس opus اپول epol اپک opek اپیدرم epideRm @@ -1644,6 +1908,7 @@ $ dolAR اکساینده oksAjAnde اکسایید oksAid اکسل eksel +اکسنت aksent اکسپرس ekspeRes اکسپرسیونیست ekspeRsijonist اکسپرسیونیسم ekspeRsijonism @@ -1676,79 +1941,191 @@ $ dolAR اگزیستانسیالیست egzistAnsijAlist اگزیستانسیالیسم egzistAnsijAlism ایاب ajjAb +ایادی ajAdi +ایار ajAR ایاز ajAz +ایاق ajAq1 ایام a:jj'jAm ایبوک ibuk +ایتام ajtAm ایدئال ideAl ایدئولوژی ide?oloZi ایدز ejdz ایدعال ideAl ایدهال ideAl +ایراندخت iRAndox ایرانسل iRAnsel +ایرباس ejRbAs +ایرتاکسی ejRtAksi ایرج iRadZ +ایروبیک ejRobik +ایرکاندیشن ejRkAndiSen +ایریدیم iRidijom +ایزابل izAbel ایزد izad +ایزوترم izoteRm +ایزوتروپ izoteRop +ایزوتونیک izotonik +ایزوتوپ izotop +ایزولاسیون izolAsjon +ایزوله izole +ایزوگام izogAm ایست i:st +ایسلند island ایسوس ejsus ایسی isA +ایضا ejzan +ایغور iq1uR ایفل ifel +ایلینیم ilinijom +ایلیوم ileom ایمان imAn +ایماژیسم imAZism ایمن imen +ایمونولوژی imonoloZi +ایمونوگلوبین imonogolobin ایمیل imejl +اینباکس inbAks اینتر inteR اینترانت inteRAnet +اینترفاکس inteRfAks +اینترمیلان inteRmilAn اینترنت 'inteR,net +اینترنشنال inteRnaSnAl +اینترنیوز inteRnijuz +اینترپل inteRpol +اینترپول inteRpol اینجا 'indZA اینجانب 'indZAneb اینحال ?inhAl +ایندکس indeks +ایندیم indijom اینروست 'inRust اینطور into:R اینقدر inq1adR +اینهمانی inhamAni اینور 'invaR اینچنین intSenin اینکه inke: ایوان ejvAn +ایوانوویچ ivAnovitS ایوب ajjub +ایوزین eozin +ایوژنی ijoZeni +ایّام AjjAm +ایگرگ igReg +باباشمل bAbASamal باباطاهر bAbAtAheR +بابانویل bAbAnoel +بابصیرت bAbasiRat +بابلسر bAbolsaR باتجربه bAtadZRobe: باتجربۀ bAtadZRobeje +باتدبیر bAtadbiR +باتربیت bAtaRbjat +باتری bAtRi +باتعصب bAtaassob باتقوا bAtaq1vA +باتلر bAtleR +باتوجه bAtavadZdZoh +باحجاب bAhedZAb +باحرارت bAhaRARat +باخبر bAxabaR باخت 'bAxt +باختر bAxtaR +باخترزمین bAxtaRzamin +بادآهنگ bAdAhang +بادبر bAdboR +بادبند bAdband +بادرفت bAdRoft +بادسوخته bAdsuxte بادمجان bAdemdZAn بادمجون bAdemdZun +بادنقش bAdnaq1S +بادنگاشت bAdnegASt +بادوام bAdavAm +باربند bARband +باربی bARbi +بارتز bARtez +باردان bARdAn +بارده bARdeh +باررنگ bAdRang بارسلون bARselon +بارسکپ bARoskop +بارفیکس bARfiks +باروبنه bARobone +بارکد bARkod بارکش bARkeS بارگذار bARgozAR بارگزار bARgozAR باریتن bARiton باریتون bARiton بازار bAzAR +بازارسیاه bAzARsijAh +بازجست bAzdZost +بازدم bAzdam بازده bAzdeh بازدید bAzdid بازرسان bAzRasAn بازرگان bAzaRgAn بازنشست bAzneSast بازو bAzu +بازپخت bAzpoxt بازپرس bAzpoRs بازگشت bAzgaSt +بازگفت bAzgoft بازی bAzi بازیکن bAzikon بازیگر bAzigaR +بازیگردانی bAzigaRdAni +بازیگوش bAziguS +بازیگوشانه bAziguSAne باسابقه bAsAbeq1e: باستانی bAstAni +باشتین bAStin باشد bASad باشکوه bASokuh باصفا bAsafA +باضافه beezAfe باطری bAtRi باطن bAten بافت bAft +باقرالعلوم bAq1eRololum باقلا bAq1elA +باقلاقاتق bAq1AlAq1Atoq1 +باقلاپلو bAq1AlApolo +باقلوا bAq1lavA بالا 'bAlA +بالابلند bAlAboland +بالاتفاق belettefAq1 +بالاجبار beledZbAR بالاخره belaxaRe: بالاخص bel?axas +بالاغیرتا bAlAq1ejRatan +بالجمله beldZomle +بالخصوص belxosus بالستیک bAlestik +بالشتک bAleStak +بالشکل bAlSekl +بالطبع bettab +بالعکس belaks بالغ bAleq1 +بالفرض belfaRz +بالفطره belfetRe +بالفعل belfe?l +بالفور belfovR بالقوه belq1ovve: +بالله bellAh +بالمره belmaRRe +بالمناصفه belmonAsefe بالن bAlon +بالنتیجه bennatidZe +بالنسبه bennesbe +بالنفسه bennafse +بالنگ bAlang +بالکان bAlkAn +بالکل belkol +بالکن bAlkon بامداد bAmdAd بامزه bAmaze: بامزۀ bAmazeje @@ -1762,27 +2139,36 @@ $ dolAR باهم bAham باهنر bAhonaR باور bAvaR +باوفا bAvafA باکتری bAkteRi +باکتریولوژی bAkteRijoloZ باکس bAks باگناه bAgonAh بایت bAjt باید 'bAjad +بایرمونیخ bAjeRmunix بایست bAjest بایستد be?istad بایستیم be?istim +بایسنقر bAjsonq1oR +بایقرا bAjq1aRA بباسیل babAsil ببخش bebaxS ببرد bebaRad ببرها babRhA ببرهای babRhAje ببرهایی babRhAi: -ببری bab +ببری bebaRi ببرید bebaRid ببین bebin بت bot بتر botR +بتهون bethoven +بتهوون bethoven بتوان betavAn +بتونه batune بجا bedZA +بجد bedZed بجز bedZoz بجنورد bodZnuRd بجو bedZu @@ -1790,43 +2176,122 @@ $ dolAR بحبوحه bohbuhe: بحران bohRAn بحرین bahRejn +بحق behaq1q1 بحمدالله behamdellAh +بحیرا bahiRA بخار bo:xAR +بخارا boxARA بخارپز boxARpaz بخت b'axt بخر bexaR بخرد bexaRad +بخشا baxSA +بخشاند baxSAnd +بخشانید baxSAnid بخشایش baxSAjeS +بخشاینده baxSAjAnde +بخشایید baxSAid بخشد baxSad بخشش baxSeS +بخشود baxSud +بخشودنی baxSudani +بخشوده baxSude +بخشودگی baxSudegi بخشیدن baxSidan بخشیده baxSide: +بخل boxl بخواند bexAnad بخور boxoR +بخوربخواب boxoRobexAb +بخوربخور boxoRboxoR +بخورونمیر boxoRonamiR +بخیل baxil +بخیلانه baxilAne بدان bedAn بدانها bedAnhA +بدایت bedAjat بدبخت bad_baxt +بدبو badbu +بدبینانه badbinAne +بدترکیب badtaRkib بدتری badtaRi +بدجنس baddZens +بدجوری baddZuRi بدحجاب badhedZAb +بدحساب badhesAb +بدخشان badaxSAn +بدخلق badxolq1 +بدخو badxu +بدخوراک badxoRAk +بدخوری badxoRi +بدرالزمان badRozzamAn +بدراه badRAh بدرستی bedoRosti بدرفتار badRaftAR +بدرقه badRaq1e بدرود bedRud +بدزبان badzabAn +بدسابقه badsAbeq1e +بدساخت badsAxt بدست bedast بدستور bedastuRe +بدسرشت badseReSt +بدسلیقه badsaliq1e +بدسلیقگی badsaliq1egi +بدسگالی badsegAli +بدسیرت badsiRat بدش badaS +بدشانس badSAns +بدشناخته badSenAxte +بدشنوا badSenavA +بدشکلی badSekli +بدشگون badSogun +بدصدا badsedA بدعت bed?at +بدعمل badamal +بدعنق badonoq1 +بدعهدی badahdi +بدغذا badq1azA +بدفرجام badfaRdZAm +بدفهمی badfahmi +بدقت bedeq1q1at +بدقدم badq1adam +بدقلب badq1alb +بدقلق badq1eleq1 +بدقواره badq1avARe +بدقولی badq1ovli بدل badal بدم bedam +بدمزه badmazze +بدمست badmast +بدمصب badmassab +بدمنصب badmansab +بدمنظر badmanzaR +بدمینتن badminton +بدمینتون badminton بدن badan بدنام badnAm +بدنما badnamA +بدنهاد badnahA بدهکار bedehkAR بدهی bedehi +بدوبدو bodobodo +بدوبیراه badobiRAh بدوی badvi +بدپیله badpile +بدپیلگی badpilegi +بدکاره badkARe +بدکارگی badkARegi +بدکردار badkeRdAR +بدگوهر badgovhaR بدیع badi? بدیل badil بدین be'din بدینوسیل bedinvasil بدیهی badihi +بذاق bozAq1 +بذرافشان bazRafSAn +بذرپاش bazRpAS برآرد baRARad برابر baRAbaR برات baRAt @@ -1834,31 +2299,52 @@ $ dolAR برادر baRAdaR برادرزن baRAdaRzan برادرشوهر baRAdaRSohaR +برادرکش baRAdaRkoS +براده boRAde برازجان boRAzdZAn براساس baRasAs براش baRAS براق ba'RRAq1 برام baRAm +برانداخت baRandAxt +برانداخته baRandAxte +براندازانه baRandAzAne +براندازنده baRandAzande برانکارد beRAnkARd +برانگیخت baRangixt +برانگیخته baRangixte +برانگیختگی baRangixtegi +برانگیز baRangiz +براهین baRAhin برای baRAje برایت baRAjat برایش baRAjaS برایم baRAjam بربر baRbaR +بربط baRbat +برتافت baRtAft برتری baRtaRi برج boRdZ برجا baRdZA برجست baRdZast برجسته baRdZaste: برجستۀ baRdZasteje +برجکوب beRendZkub +برحق baRhaq1q1 برخاست baRxAst برخط baRxat برخواست baRxAst برد boRd بردار baRdAR بردبار boRdbAR +بردسیر baRdsiR +بردگی baRdegi بررسی baRRasi برزخ baRzax +برزنگی baRzangi +برزو boRzu +برزوبالا boRzobAlA +برزویه boRzuje برزگر baRzegaR برزیل beRezil برس beRes @@ -1871,34 +2357,64 @@ $ dolAR برسد beResad برسه beRese برش boReS +برشتوک beReStuk برشتۀ beReSteje +برشمر baRSemoR +برشمرد baRSemoRd +برشکست baRSekast +برغو boRq1u +برفت beRaft برفروب baRfRub +برقرانی baRq1aRAni +برقراهه baRq1aRAhe +برقع boRq1a +برقو boRq1u برلیان beReliAn +برلین beRlin برم beRam برملا baRmalA +برمک baRmak برمی baRmi برن beRan برنا boRnA +برنارد beRnARd +برناردو beRnARdo برنامه baR'nAme: برنج beRendZ برند baRand برنده baRande: برندگان baRandegAn برنز boRonz +برنشسته baRneSaste +برنشیت boRonSit +برنگزیده baRnagozide برهان bo:R'hAn برهم baRham +برهماپوترا beRahmAputRA برهه boRhe: +برهوت baRahut برو boRo +بروبرو boRoboRo +بروبوم baRobum +بروبیا boRobijA بروج boRudZ بروجرد boRudZeRd بروجن boRudZen برود beRavad +برودت boRudat +برورو baRoRu بروزرسان beRuz_ResAn +بروزیافته boRuzjAfte بروسلی boRusli +بروشنی beRoSani +بروفه boRufe بروم beRavam برون boRun +برونبر buRunbaR بروند beRavand برونشیت beRonSit +برونهاگ buRunhAg +بروکراسی boRukRAsi بروکسل boRuksel بروی beRavi بروید beRavid @@ -1906,6 +2422,8 @@ $ dolAR برپا baRpA برکات baRakAt برکت baRekat +برکشید baRkeSid +برکن baRkan برکه beRke: برگ baRg برگزید baRgozid @@ -1914,32 +2432,60 @@ $ dolAR برگزیند baRgozinad برگشت baRgaSt بریان beRjAn +بریتانا beRitAnijA بریتانیا beRitAniA +بریتونی beRitoni بریتیش beRitiS برید boRid بریزد beRizad +بریزوبپاش beRizobepAS بریل beRejl بریون beRjun بز boz بزاز bazzAz +بزاق bozAq1 +بزبیاری bozbijARi +بزخو bozxu +بزدلانه bozdelAne +بزرو bozRov +بزرک bazRak بزرگ bo'zoRg بزرگان bozoRgAn بزرگتری 'bozoRgtaRi بزرگی bozoRgi +بزعم bezam +بزغاله bozq1Ale +بزغنج bozq1andZ +بزقند bozq1and +بزمال bozmAl +بزمجه bozmadZdZe +بزمرغ bozmoRq1 بزن bezan بزند bezanad +بزه bezeh +بزک bazak +بسامد basAmad +بساوش besAvoS +بساوید basAvid +بساک basAk بست 'bast +بستاب bastAb +بستان bostAn بستری bastaRi بستنی bastani +بستو bastu بستگانت bastegAnat بستگانتان bastegAnetAn بستگانش bastegAnaS بستگانشان bastegAneSAn بستگانم bastegAnam بستگانمان bastegAnemAn +بسد bossad بسر besaR بسطام bastAm +بسفر bosfoR بسم besme: +بسماللهالرحمنالرحیم besmellAheRRahmAneRRahim بسنده basande: بسوی besuje بسپار besepAR @@ -1951,11 +2497,13 @@ $ dolAR بسیج basidZ بش beS بشاش baSSAS +بشاورد baSAvaRd بشدت beSeddat بشر baSaR بشردوست baSaRdust بشردوستانه baSaRdustAne: بشردوستانۀ baSaRdustAneje +بشره baSaRe بشرویه boSRuje: بشقاب boSq1Ab بشقابپرنده boSq1AbpaRande: @@ -1970,56 +2518,131 @@ $ dolAR بشنویم beSenavim بشه beSe بشو beSo +بشوروبپوش beSuRobepuS بشوم beSavam بشوند beSavand بشوی beSavi بشویم beSavim بشّاش baSSAS +بشکن beSkan بشکه boSke: بشکۀ boSkeje بشیر baSiR بصر basaR +بصره basRe بصیر basiR +بطر botR بطری botRi +بطریرک batRiRak +بطلان botlAn +بطلمیوس batlamijus بطور betoRe +بطورکلی betovRekolli بطوری be'toRi +بطیی bati +بعثت besat +بعثه be?se بعدا ,b'a:?dan +بعداز badaz +بعدازظهر badazzohR بعضا 'ba?zan بعید ba?id +بعینه be?ejne: +بغاز boq1Az بغداد baq1dAd بغرنج boq1RandZ بغض boq1q1z بغل baq1al بفتا baftA بفرست befeRest +بق boq1 بقال baq1q1Al بقایا baq1AjA بقدر beq1adRe +بقراط boq1RAt +بقراطیان boq1RAtijAn +بقره baq1aRe +بقعه boq1e بقل baq1q1al +بقم baq1am +بقه boq1q1e +بقچه boq1tSe بلا belA +بلااثر belAasaR +بلااجرا belAedZRA +بلااستثناء belAestesnA +بلااستفاده belAestefAde +بلااشکال belAeSkAl +بلاانقطاع belAenq1etA بلاجهت belAdZahat بلاخره belaxaRe: +بلادرنگ belAdeRang +بلادن bellAdon +بلاذر balAzoR +بلازده balAzade +بلاعقب belAaq1ab +بلامرجح belAmoRadZdZah +بلامعارض belAmoARez بلانسبت balAnesbat +بلاکش balAkeS +بلبرینگ bolbiRing بلبل bolbol بلد balad +بلداجی boldAdZi بلدرچین bbeldeRtSin بلدوزر boldozeR +بلسان balsAn +بلسکی balsaki +بلشویزم bolSovizm +بلشویسم bolSovism +بلشویک bolSovik +بلعجب boladZab +بلعمی balami +بلعکس belaks +بلغا bolq1A بلغار bolq1AR +بلغور balq1uR +بلفاست belfAst +بلفضول bolfozul +بلقیس belq1ejs +بلم balam بلند 'boland +بلندقد bolandq1ad +بلندمدت bolandmoddat +بلندهمت bolandhemmat بلندپایه bolandpAje: +بلندپروازانه bolandpaRvAzAne +بلهوس bolhavas +بلهوسانه bolhavasAne +بلوا balvA +بلوار bolvAR بلور boluR +بلوردان buluRdAn +بلورلایه buluRlAje بلوز boluz بلوط balut بلوغ boluq1 +بلوف belof +بلومبرگ belombeRg +بلومتر bolometR +بلوند belond بلوچ balutS بلوک boluk بلژیک belZik بلکه 'balke: +بلگراد belgeRAd +بلیات balijat بلیارد beljARd بلیت belit +بلیز boliz +بلیغ baliq1 +بلیوار bolivAR +بلیون beljon +بماسبق bemAsabaq1 بماند bemAnad بمب bo:mb بمباران bombARAn +بمل bemol بمن beman بن bon بنا banA @@ -2028,18 +2651,53 @@ $ dolAR بنابه banAbe: بنادر banAdeR بنان banAn +بناگوشک banAguSak +بنج bondZ +بنجل bondZol +بنداب bandAb بنداز bendAz بندد bandad بندر bandaR +بندرامام bandaRemAm +بندرانزلی bandaRanzali +بندرترکمن bandaRtoRkaman +بندرعباس bandaRabbAs +بندرلنگه bandaRlenge +بندرپهلوی bandaRpahlavi +بندرگز bandaRgaz +بندزنی bandzani +بندفنگ bandfang +بندقیر bandq1iR +بندوبساط bandobasAt +بندپا bandpA +بندپایان bandpAjAn +بندپی bandepej +بندکشی bandkeSi +بندیل bandil +بندینک bandinak +بندیکتی benedikti بنر baneR بنز benz بنزئن benzin +بنزن banzan +بنزوات banzovAt +بنزوپیرن banzopiRen +بنزوین banzoaz بنزین benzin بنشست beneSast +بنشن bonSan +بنصر benseR بنفش banafS +بنلاد bonlAd بنّا bannA +بنچاق bontSAq1 +بنژامن banZAmen +بنژوین banZoen +بنکدار bonakdAR +بنگاب bangAb بنگال bangAl بنگاه bongA: +بنگدانه bangdAne بنگر bengaR بنگرد bengaRad بنگلادش banglAdeS @@ -2049,40 +2707,95 @@ $ dolAR بها bahA بهاءالله bahA_ollAh بهاالله bahA_olAh +بهابازار bahAbAzAR +بهابرگ bahAbaRg بهادر bahAdoR بهار bahAR +بهارآزادی bahAReAzAdi +بهارافشان bahARafSAn +بهاربند bahARband +بهارقلی bahARq1oli +بهارنارنج bahARnARendZ +بهامهر bahAmohR بهانه bahAne: +بهاییت bahAijat +بهبهان behbahAn بهت behet بهتر behtaR بهترون behtaRun بهترین behtaRin بهداشت behdASt +بهدین behdin بهرام bahRAm بهران bohRAn +بهرحال behaRhAl +بهرصورت behaRsuRat +بهرنگی behRangi بهرگیری bahRegiRi +بهزراعی behzeRAi بهش beheS بهشت beheSt +بهل behel بهلول boh'lul بهم beham بهمراه behamRAh بهمن bahman +بهمنشیر bahmanSiR +بهنجار behandZAR +بهنود behnud +بهنگام behengAm +بهکده behkade +بهیچوجه behitSvadZh +بواطن bevAten +بوالحسن bolhasan +بوالعجب boladZab +بوالفرج bolfaRadZ +بوالفضول bolfozul +بوالهوس bolhavas +بوالهوسانه bolhavasAne بوتاکس butAks بوجود bevodZud بوحشت bevahSat بوداپست budApest بودجه buddZe: +بودونبود budonabud +بورات boRAt +بوراکس boRAks +بورت buRet بورس buRs +بورژوا buRZuvA +بورژوازی buRZvAzi بوسیله bevasile: بوسیلۀ bevasileje +بوشمن buSman +بوشن buSan بوشهر buSehR +بوضوح bevozuh بوفالو bufAlo بوقت bevaq1t بوقلمون buq1alamun +بولشویسم bolSevism +بولشویک bolSevik +بولند bolond بولینگ boling +بومسانی bumsAni +بومهن bumehen +بونصر bunasR +بوکس boks +بوکسیت boksit +بوکله bukle +بوگندو bugandu +بویا bujA بویر bojeR +بویراحمد bojeRahmad +بوینگ buing +بویید buid +بيالايد bijAlAjad +بپا bepA بپر bepaR بپرداز bepaRdAz بپز bepaz +بچشم betSeSm بچه ba'tStSe: بچگی batStSegi بژ beZ @@ -2090,51 +2803,88 @@ $ dolAR بکارگیری bekARgiRi بکاه bekAh بکاهد bekAhad +بکتاش baktAS بکر bekR +بکرات bekaRRAt +بکرل bekRel بکس boks بکسل boksel +بکسوات boksovAt +بکسور boksoR بکش bekeS +بکل bekol بکن bokon بکند bokonad بگم begam بگو begu: +بگومگو begomagu +بگونیا begonijA بگوییم begui:m +بگیروببند begiRobeband بگین begin بیات bajAt +بیازماید bijAzmAjad +بیافکن biafkans +بیالای bijAlAj +بیامرز bijAmoRz +بیامرزد bijAmoRzad بیاموز bijAmuz بیاموزد bijAmuzad بیان bajAn +بیانگار bijangAR +بیانگارد bijangARad بیاور bijAvaR بیاید bijAjad بیت bejt بیتقوا bitaq1vA بیخبر bixabaR +بیخت bixt +بیدارشدگی bidARSodegi +بیدبلند bidboland +بیدخشت bidxeSt +بیدررو bidaRRov +بیدق bejdaq1 +بیدمشک bidmeSk +بیرجند biRdZand بیرحم biRahm +بیرشک biRaSk بیرق bejRaq1 بیروت bejRut +بیزنس biznes بیزه bejze: بیس bejs +بیسایو bisAo بیستم 'bistom +بیستون bisotun بیستکوئیت bistkui:t بیستکوییت bistkui:t بیسکویت biskuit بیسیک bejsik +بیسیکلت bisiklet بیشتری biStaRi بیشعور biSouR بیصبر bisabR بیصفا bisafA بیض bejz بیضا bejzA +بیضتین bejzatejAn +بیضوی bejzavi +بیعرفان bi_eRfAn +بیعمل bi?amal بیفت bijoft بیفتاد bijoftAd +بیفتک biftak +بیفروغ bifuRuq1 بیفزا bijafzA بیفکن bijafkan +بیلخ bilax بیلیارد 'biljARd بیلیاردم 'biljARdom بیلیون 'milju:n بیلیونم 'milju:nom بیمعرفت bima?Refat بین 'bejn +بینات bajenAt بینان binAn بینانه binAne: بینجام bijandZAm @@ -2144,57 +2894,115 @@ $ dolAR بینظم binazm بینم binam بینند binand +بیننده binande +بینوا binavA بینی bini بینید binid بینیم binim بینیی bini: بیهنر bihonaR بیو bijo +بیوتروریسم bijoteRoRism بیوه bive: بیوگرافی bijogeRAfi +بیکباره bejekbARe: بیکس bikas بیکسان bikasAn بیگ bejg +بیگم bejgom +بیگمان bigamAn بیگناه bigonAh تأثر ta?assoR تأثیر ta?siR -تأخیر taxiR +تأخیر ta?xiR تأسف ta?assof تئاتر teA:tR تئوری te?oRi +تئوریزه te_oRize +تئوریک te_oRik تائید ta?id +تابحال tAbehAl تابد tAbad تابستانه tAbestAne: تابستانۀ tAbestAneje تابستون tAbestun تابش tAbeS تابلو tAblo +تابو tAbo +تاتوره tAtuRe تاثر ta?assoR +تاثربرانگیز taassoRbaRangiz تاثیر ta?siR +تاجرنیا tAdZeRnij +تاجور tAdZvaR +تاحدودی tAhodudi +تاحدی tAhaddi تاخت tAxt +تاخر ta?axxoR +تاخوردگی tAxoRdegi تاخیر taxiR +تادب ta?addob +تادیه tadije +تارت tARt تارخ tARox +تارریس tARRis +تارزن tARzan +تارم tARom +تارمکان tARmekAn +تاروتنبور tARotambuR +تارومار tARomAR +تاروپود tARopud +تارک tARek تاریخدان tARixdAn تاسف ta?assof +تاسمانی tAsmAni تاسیس 'tas,is +تاشکند tASkand +تافت tAft +تافتون tAftun تالاسمی tAlAsemi +تالبوت tAlbot +تالش tAleS +تالم ta?allom +تالیف ta?lif +تامسون tAmson تامل ta?ammol +تامه tAmme تامین ta?min +تاندوم tAndom +تاندون tAndon تانک tAnk تانکر tAnkeR +تانگ tAng +تاهل taahhol تاول tAval +تاچر tAtSeR +تاکسی tAksi تاکسیدرمی tAksideRmi تاکنون tAkonun تاکید ta?kid +تایم tAjm +تایمر tAjmeR تایمز tAjmz تایپ tAjp تایید 'tai:d تاییپ 'tai:d +تباین tabAjon تبت tabbat +تبختر tabaxtoR +تبخیرکن tabxiRkon تبر 'tabaR تبرئه tabRa?e: +تبرا tabaRRA +تبرزد tabaRzad +تبرزین tabaRzin +تبرک tabaRRok +تبرید tabRid +تبریه tabRae تبسم tabassom تبصره tabsaRe: +تبع taba +تبعا tab?an تبعات taba?At تبعاتی taba?Ati تبعه tabaeje @@ -2204,179 +3012,435 @@ $ dolAR تبق 'tabaq1 تبلت tablet تبلور tabalvoR +تبه tabah +تبهکار tabahkAR +تبهکارانه tabahkARAne +تبهگن tabahgen تبّت tabbat تبیان tebjAn تبیعت tabi?at +تتا tetA +تتراسایکلین tetRAsAjkolin تتراکرد tetRAkoRd تتراکورد tetRAkoRd +تترون tetRon +تتماج totmAdZ +تتمه tatamme: تثبیت tasbit تجار todZdZAR تجارت tedZARat تجاری tedZARi +تجددمآبی tadZaddodmaAbi +تجدیدنظر tadZdidenazaR تجدیدنظرخواهی tadZdidenazaRxAhi +تجدیدنظرطلبانه tadZdidenazaRtalabAne تجربه tadZRobe تجربۀ 'tadZRobeje تجربی tadZRobi +تجری tadZaRRi تجریش tadZRiS تجسم tadZassom تجلی tadZalli +تجن tadZan +تجیر tadZiR تحت tahte +تحتانی tahtAni تحرک tahaRRok +تحری tahaRRi تحصن tahasson +تحف tohaf +تحفه tohfe +تحقیقا tahq1iq1an تحمت tohmat تحول tahavvol تحوّل tahavvol +تحکم tahakkom +تحیت tahijat +تحیر tahajjoR +تخاصم taxAsom تخت t'axt +تختان taxtAn +تختخواب taxtexAb +تخرمه texeRme +تخس toxs +تخلخل taxalxol تخم toxm +تخماق toxmAq1 +تخمبر toxmbaR +تخمدان toxmdAn +تخمراهه toxmRAhe: +تخمگانی toxmgAni تخمین taxmin +تخمینا taxminan تخیر taxajjoR تخیل taxa'jjol تدارک tadARok تدارکات tadARokAt تداوم tadAvom +تدریجا tadRidZan +تدهین tadhin تدین tadajjon تدیّن tadajjon +تذرو tazaRv +تذکار tezkAR +تذکاریه tezkARije تذکر tazakoR تذکره tazkaRe: تراب toRAb ترابری taRAbaRi +تراجم taRAdZom +تراخم taRAxom ترازو taRAzu تراس teRAs +تراست teRAst ترافیک teRAfik +تراموا teRAmvA +ترانزیت teRAnzit ترانزیستور teRAnzistoR +ترانس teRAns +ترانسفور teRAnsfoR ترانسفورماتور teRAnsfoRmAtoR +ترانسپورت teRAnspoRt تراوت taRAvat +تراورتن teRAveRtan +تراورس teRAveRs تراوش taRAvoS تراول teRAvel تراژدی teRAZedi +تراژدیک teRAZedik +تراژیک teRAZik +تراکافت taRAkAft تراکتور teRAktoR تراکم taRAkom تراکنش taRAkoneS +ترب toRob +تربانتین teRebAntin تربت toRbat +تربد toRbod +تربری taRboRi +تربچه toRobtSe: +تربیم teRbijom +ترترو teRteRu +ترجمان taRdZomAn ترجمه taRdZome: ترجمۀ taRdZomeje ترجیحا taRdZihan +ترحلوا taRhalvA ترحم taRahhom +تردماغ taRdamAq1 +تردیدافکن taRdidafkan ترسد taRsad ترش t'oRS +ترشا toRSA +ترشال toRSAl +ترشید toRSid +ترشیدگی toRSidegi +ترعه toR?e ترق taRaq1q1 +ترقوه taRq1ovve: ترلیون 'teRelju:n -ترلیونم 'ttRelju:nom +ترلیونم teReljunom ترم teRm ترمبن teRombon ترمبون teRombon +ترمتای toRomtAj ترمز toRmoz +ترموالکتریسیته teRmoelektiRisite +ترموالکتریک teRmoelektiRik +ترموتراپی teRmotoRApi +ترمودینامیک teRmodinAmik +ترموس teRmus +ترموست teRmoset +ترموستات teRmostAt +ترموسفر teRmosfeR +ترموسکپ teRmoskop +ترموسیفن teRmosifon +ترموشیمی teRmoSimi +ترموفیل teRmofil +ترمومتر teRmometR +ترموکوبل teRmokubl +ترموگراف teRmogeRAf +ترمویونیک teRmojonik ترمپت teRompet +ترمیت teRmit +ترمیستور teRmistoR ترمیم taRmim +ترمیناتور teRminAtoR ترمینال teRminAl +ترمینولژی teRminoloZi +ترن teRan +ترنتو toRento +ترنج toRandZ +ترنم taRannom +ترهات toRRahAt +تروتازه taRotAze +تروتازگی taRotAzegi +تروتسکیسم teRoteskism +تروتلیس taRotelis +تروتمیز taRotamiz ترور teRoR +تروریزم teRoRizm تروریست teRoRist تروریسم teRoRism +تروفرز taRofeRz +ترومبوز toRomboz +ترومبوسیت toRombosit +ترومبون toRombon +ترومن teRoman ترومپت teRompet +تروپوسفر teRoposfeR +تروپوپاز teRopopAz +تروچسب taRotSasb +تروکاژ tuRukAZ ترک 'taRk +ترکان toRkAn +ترکاند taRakAnd +ترکتازی toRktAzi +ترکستان toRkestAn +ترکش taRkeS +ترکمانچای toRkamAntSAj ترکمن toRkaman ترکی toRki +ترکید teRekid +ترکیدگی taRkidegi ترکیه toRkije: +تریا teRijA تریبون teRibun +تریتیم tiRitijom +تریج tiRidZ +ترید tiRid +تریشین tiRiSin +تریلر teRejleR +تریلوبیت teRilobit +تریلوبیتها teRilobithA +تریلژی teRiloZi تریلۀ tRijuleje تریلی teRejli تریلیون teRiljun ترین taRin تریو tRijo تریوله tRijule: +تریپسین teRipsin +تریپلکس tiRipleks +تریکو teRiko +تریکوباف teRikobAf +تز tez تزئین taz?in +تزاحم tazAhom +تزار tezAR +تزاریسم tezARism +تزاید tazAjod تزلزل tazalzol تست test +تستر tosteR +تستوسترون testosteRon +تسری tasaRRi +تسلا tasallA +تسلسل tasalsol +تسلی tasalli +تسنن tasannon +تسهیم tashim +تسوج tasudZ تسویه tasvije: تسویۀ tasvijeje +تشابه taSAboh +تشبه taSabboh تشبیه taS'bi:h تشت t'aSt -تشعش taSa?So +تشتت taSattot +تشر taSaR +تشعشع taSa?So? تشعشو taSa?So +تشفی taSaffi تشن teSn تشویش taSviS +تشویه taSvije: تشک to'Sak +تشیع taSajjo? +تصادفا tasAdofan +تصادم tasAdom تصدی tasaddi +تصریحا tasRihan تصور tasavvoR +تصوف tasavvof تصوّر tasavvoR +تضمن tazammon +تطور tatavvoR +تظلم tazallom +تعبدا ta?abbodan تعبیه ta?bijeh -تعجب taa:?'dZdZob -تعجّب taa:?'dZdZob +تعجب ta?adZdZob +تعجّب ta?adZdZob تعداد 'te?dAd +تعدی ta?addi +تعدیه ta?dije: تعرفه ta?Refe: تعفن ta?affon +تعلم ta?allom تعمدا ta?ammodan +تعمه to?me: تعهد ta?_ah_hod تعهّد ta?_ah_hod +تعیش ta?ajjoS +تعین ta?ajjon +تغابن taq1Abon +تغایر taq1AjoR تغیان toq1ijAn +تغیر taq1ajjoR تف tof +تفال tofAl تفاهم tafAhom تفاوت ta'fAvot +تفتان taftAn تفتیش taftiS +تفرش tafReS +تفرقه tafRaq1e: +تفصیلا tafsilan +تفقه tafaq1q1oh +تفلن teflon +تفلون teflon تفلیس teflis +تفنن tafannon تفنگ tofang تفنگی tofangi +تفهم tafahhom تفهیم tafhim +تفو tofu +تفوق tafavvoq1 +تفوه tafavvoh +تفک tofak تقارن taq1ARon +تقاویم taq1Avim تقدم taq1addom تقریبا taq1Riban تقلا taq1allA +تقه taq1q1e: تقوی taq1avi تقویت taq1vijat تقویم taq1vim تقّدم taq1addom +تقید taq1ajjod +تقیه taq1ije +تل tel تلاطم talAtom +تلالو tala?lo: +تلخکام takxkAm +تلسکوپ teleskop +تلسکپ teleskop تلف talaf +تلفاکس telefAks تلفن tele'fon +تلفنا telefonan +تلفکس telefaks تلقی talaq1q1i +تلمب tolomb تلمبه tolombe: +تلنگر talangoR +تلو telo: +تلواسه talvAse +تلوتلو telo:telo: +تلوریم teloRijom +تلون talavvon تلویحا talvihan تلویزیون telvizijon +تلپ telep تلکام telekAm تلکس teleks +تلکه talake: تلگراف telegRAf +تلگرافا telegRAfan +تلگرام telegRAm +تلیت telit +تلیسه talise +تلیله talile +تم tem +تماشاگرپسند tamASgaRpasand +تماشاگه tamASAgah تمام tamAm تماما tamAman +تمامدانه tamAmdAne +تمایز tamAjoz +تمایزدهندگی tamAjozdahandegi تمایل tamAjol تمبر tamR تمبک tombak +تمثال temsAl +تمجمج tamadZmodZ تمدن tamaddon تمدّن tamaddon تمرکز tamaRkoz +تمرگ tamaRg +تمرگید tamaRgid +تمساح temsAh تمسخر tamasxoR تمسک tamassok تمشک tameSk تملک tamallok تمنا tamannA +تمنیات tamannijAt +تمهید tamhid +تموج tamavvodZ +تمول tamavvol تموم tamum تمّنا tamannA تمپ temp +تمپو tempo +تمکن tamakkon تمیز tamiz +تمیستوکلس temistokels +تمیم tamim +تنب tonb +تنبان tonbAn تنبل tanbal تنبک tonbak تنبیه tanbih تنت tanat +تنخواه tanxAh تند tond +تنداب tondAb +تندتند tondtond +تندخو tondxu +تندذهن tondzehn تندر tondaR +تندرآسا tondaRAsA تندرست tandoRost تندرو tondRo +تندروان tondRovAn +تندزبان tondzabAn +تندمزه tondmazze: +تندوتند tondotond +تندپز tondpaz تندیس tandis تنش taneS +تنشید tanSid +تنعم tana??om تنفر tanaffoR تنفّر tanaffoR تنم tanam +تنندویان tanandujAn تنور tanuR تنوع tanavvo? +تنک tonok +تنکابن tonekAbon تنگاتنگ tangAtang +تنگراه tangRAh +تنگستن tangestan تنگنا tangnA +تنگوز tunguz تنید tanid تنیس tenis +تنیسور tenisoR +تنیک tonik ته tah تهاجم tahAdZom +تهجی tahadZdZi تهران tehRAn +تهرانسر tehRAnsaR تهرانپارس tehRAnpARs تهمت tohmat +تهمورث tahmuRes تهور tahavvoR +تهوع tahavvo? تهویه tahvije: تهویۀ tahvijeje تهی tohi @@ -2384,34 +3448,64 @@ $ dolAR تهیّه tahi:je: تو to توأم to:?am +توئیتر tu?iteR +تواب tavvAb +تواتر tavAtoR +توارث tavARos +توارد tavARod توازن tavAzon +تواضع tavAzo? توافق tavAfoq1 توالت tuAlet +توالد tavAlod توام to:?am توان 'tavAn توانا tavAnA تواند tavAnad توانست 'tavAnest +توبره tubRe: توبه to:be: توبیخ tobix +توتالیتار totAlitAR توتالیتاریستی totAlitARisti +توتالیتاریسم totAlitARism +توتالیتر totAliteR +توتستان tutestAn توجه 'tavadZdZoh توجّه 'tavadZdZoh توجیه todZih توحش tavahhoS توحید tohid توحین tohin +توخت tuxt +تودار tudAR +تودرتو tudaRtu توده tude: +تودهنی tudahani تودیع todi? تورات toRAt +تورب tuRb +توربالان tuRbAlAn +توربوترن tuRboteRan +توربوجت tuRbodZet +تورج tuRadZ +تورفتگی tuRaftegi تورم tavaRRom +تورنادو toRnAdo +تورنتو toRento +تورنسل toRnosol تورنمنت toRnoment توریسم tuRism +توزرد tuzaRd توزیع tozi? +توزین to:zin +توسری tusaRi توسط tavassote توسعه 'tose?e: توسن to:san توسّط tavassote +توسیط to:sit +توشک tuSak توصی tossij توصیف tosif توصیه 'to:sije: @@ -2419,35 +3513,78 @@ $ dolAR توضیح tozih توطئه to:te?e: توقیف 'toq1if +تولا tavallA +تولب tulab تولد 'tavallod +تولستوی tolstoj +تولوییدین toloidin تولّد 'tavallod +تولیت to:lijat تولید to'lid +تولیدمثل to:lidemesl +تولیم tulijom +تومن toman +تومور tumoR +توموگرافی tomogeRAfi تونال tonAl تونالیته tonAlite: تونالیتۀ tonAliteje +توندرا tondRA تونس tunes تونست tunest تونل tunel +تونگ tong توهم ta'vahhom +توهمزا tuhamzA توهین tohin تووالت tovAlet +توپر tupoR +توپوزی tupuzi +توپوش tupuS +توپولف topolof +توپولوژی topoloZi +توپولژی topoloZi +توپوگرافی topogeRAfi +توچال tovtSAl +توکار tukAR +توکسین toksin +توکوفرول tokofeRol توکیو tokijo +توگود tugo:d توی tuje تویسرکان tujseRkAn تویشنوند tuje +توییتر tui:teR +تپاند tapAnd تپش tapeS +تپق topoq1 تپل topol +تپنده tapande: تپه ta'ppe: تپید tapid تکان tekAn +تکاند tekAnd تکاور takAvaR تکدی takaddi تکرار tekRAR +تکرو takRo: +تکروان takRoAn +تکروند takRavand تکست tekst +تکش takeS +تکشکل takSekl تکفاندو tekfAndo تکلم takallom +تکمه tokme: +تکنسین teknesijan +تکنو tekno: تکنولوژی teknoloZi تکنولوژیک teknoloZik +تکنولژی teknoloZi +تکنولژیست teknoloZist +تکنولژیک teknoloZiki +تکنوکرات teknokeRAt +تکنوکراسی teknokeRAsi تکنیسین teknisijan تکنیک teknik تکه 'te?ke: @@ -2455,34 +3592,89 @@ $ dolAR تکون tekun تکّه 'tekke: تکّۀ 'tekkeje +تکپران takpaRAn تکۀ 'tekkeje +تکیاخته takjAxte: +تکیاختگان takjAxtegAn +تکید takid تکیلا tekilA +تکیه tekje: تگرگ tagaRg تگزاس tegzAs +تیاتر teAtR +تیتانیم titAnijom تیتر titR +تیرافکن tiRafkan تیررس tiRRas +تیروتخته tiRotaxte: +تیروکمان tiRokamAn +تیرویید tiRoi:d +تیرکمان tiRkamAn تیریبل tiRibl +تیزتک tiztak +تیزر tizeR +تیزرو tizRo: +تیزوبز tizoboz +تیزکن tizkon تیف tejf +تیفویید tifoi:d +تیلر tileR +تیمم tajmmom +تیمن tajmmon تیمور tejmuR +تیمورتاش tejmuRtAS +تیمول timol تیمپانی timpAni +تینر tineR +تیوب tijub +تیوری te_oRi +تیوریسین te_oRisijAn +تیوریک te_oRik +تیوزوفی te_ozofi +تیول tijul +تیولوژی te_oloZi تیونر tijuneR تیوپ tujup +تیوکراسی te_okeRAsi +تیپاکس tipAks تیکت tiket ثابت sAbet +ثارالله sARallAh +ثالثا sAlesan +ثامن sAmen +ثامنا sAmenan ثانوی sAnavi +ثانویه sAnavije ثانیا sAnijan +ثایب sA?eb +ثبات sobAt ثبت sabt +ثخذ saxez ثرم samaR ثروت seRvat ثریا soRajjA +ثعالب sa?Alab +ثعلب sa?lab +ثفل sofl +ثقل seq1l +ثقلین saq1alejn +ثقه seq1e ثلث sols ثمر samaR +ثمن saman +ثمود samud ثمیه somajje: +ثنوی sanavi +ثنویت sanavijat +ثوب so:b +ثور so:R جابجا dZAbedZA جادو dZAdu جادّۀ dZAddeje جادۀ dZAddeje جاروکش dZARukeS +جاسم dZAsem +جاسک dZAsk جانشین dZAneSin جانور dZAnevaR جانگولر dZAnguleR @@ -2515,6 +3707,7 @@ $ dolAR جرت dZeRet جرج dZoRdZ جردن dZoRdan +جرس dZaRas جرسقیل dZaRsaq1il جرش dZeReS جرقه dZaRaq1q1e: @@ -2555,6 +3748,7 @@ $ dolAR جلسات dZalasAt جلسقه dZelesq1e: جلسه dZalase: +جلف dZelf جلو dZolo جلوه dZelve: جلگه dZolge: @@ -2616,6 +3810,7 @@ $ dolAR حتی ,ha'ttA حجاب hedZAb حجت hodZdZat +حجّت hodZdZat حد hadd حداقل h,adde_aq1al حداکثر hadde_aksaR @@ -2730,6 +3925,8 @@ $ dolAR خبرگان xobRegAn خجالت xedZAlat خجسته xodZaste: +خجل xedZel +خجلت xedZlat خدا xodA خداحافظ xodAhAfez خداوند xodAvand @@ -2835,6 +4032,7 @@ $ dolAR خورشت xoReSt خورشید xoRSid خوشایند xoSAjand +خوشبختان xoSbaxtAn خوشحال xoSh'Al خوشنود xoSnud خوشه xuSe: @@ -2869,6 +4067,7 @@ $ dolAR داشبرد dASboRd داشبورد dASboRd داشت d'ASt +دامعان dAmq1An دامن dAman داند dAnad دانست dAnest @@ -3056,6 +4255,8 @@ $ dolAR دوزد duzad دوست d'u:st دوستار dustAR +دوستاش dustAS +دوستام dustAm دوستان dustAn دوستت dustat دوستش dustaS @@ -3080,9 +4281,11 @@ $ dolAR دوگانه dogAne: دوید david دویست devist +دپارتمان depARtemAn دچار dotSAR دژ deZ دکارت dekARt +دکان dokkan دکتر doktoR دکترا doktoRA دکتری doktoRi @@ -3093,6 +4296,7 @@ $ dolAR دکه dakke: دکور dekoR دکوراسیون dekoRAsijon +دکّان dokkan دکّه dakke: دکّۀ dakkeje دکۀ dakkeje @@ -3136,6 +4340,7 @@ $ dolAR ذوزنقه zuzanaq1e: ذوزنقۀ zuzanaq1eje ذوق zoq1 +ذکاوت zekAvat ذکر zekR ذیل zejl ذیلا zejlan @@ -3158,6 +4363,7 @@ $ dolAR راهبرد RAhboRd راهحل RAhehal راهرو RAhRo +راهور RAhvaR راهپله RAhpelle: راهپلّه RAhpelle: راهپلّۀ RAhpelleje @@ -3178,9 +4384,11 @@ $ dolAR رجب RadZab رجل RadZol رجیستر RedZisteR +رحلت Rehlat رحمان RahmAn رخ Rox رخام RoxAm +رختخواب RaxtexAb رخنه Rexne: ردیه Raddije: ردیۀ Raddijeje @@ -3194,6 +4402,8 @@ $ dolAR رزمناو RazmnAv رس Ros رسالت ResAlat +رساله ResAle: +رسالۀ ResAleje رسانه RasAne: رستران RestoRAn رستم Rostam @@ -3231,6 +4441,7 @@ $ dolAR رمال RammAl رمان RomAn رمانتیک RomAntik +رمد Ramad رمضان RamezAn رمق Ramaq1 رند Rend @@ -3390,6 +4601,7 @@ $ dolAR سانتریفیوژ sAntRifijuZ سانتیمتر sAntimetR ساندویچ sAndevitS +سانس sAns سانسیبل sAnsibl سانفرانسیسکو sAnfeRAnsisko: ساکت sAket @@ -3436,6 +4648,7 @@ $ dolAR سربلند saRboland سربند saRband سرت saRat +سرتاسر _saR_tAsaR سرخ 'soRx سرخپوست soRxpust سردرگم saRdaRgom @@ -3457,6 +4670,7 @@ $ dolAR سرمست saRmast سرمه soRme: سرمۀ soRmeje +سرناد seRenAd سرنخ saRnax سرنشین saRneSin سرنگون saRnegun @@ -3537,7 +4751,9 @@ $ dolAR سندرم sandRom سنسور sensoR سنش sennaS +سنفونی samfoni سنّتی sonnati +سنگال senegAl سنگر sangaR سنگفرش sangfaRS سنگنوشته sangneveSte: @@ -3545,6 +4761,7 @@ $ dolAR سنگین sangin سنی senni سنین senin +سه se: سهراب sohRAb سهیل sohejl سهیلا sohejlA @@ -3600,6 +4817,7 @@ $ dolAR سپهر sepehR سپید sepid سپیدار sepidAR +سکان sokkAn سکانس sekAns سکتور sektoR سکرین eskRin @@ -3654,6 +4872,7 @@ $ dolAR شازدۀ SAzdeje شاستی SAsti شاشبند SASband +شاقّه SAq1e: شانز SAnz شانزده 'SAnzdah شانس SAns @@ -3661,6 +4880,7 @@ $ dolAR شاه SA:h شاهدان SAhedAn شاهرخ SAhRox +شاهرود SAhRud شاپرک SApaRak شاگرد SAgeRd شاید 'SAjad @@ -3693,6 +4913,7 @@ $ dolAR شدیم Sodim شراکت SeRAkat شرب SoRb +شربت SaRbat شرت 'SoRt شرتکات SoRtkAt شرف SaRaf @@ -3817,6 +5038,7 @@ $ dolAR شیدا SejdA شیرجه SiRdZe: شیرجۀ SiRdZeje +شیرده SiRdeh شیطان SejtAn شیطنت Sejtanat شیطون Sejtun @@ -3861,6 +5083,7 @@ $ dolAR صفت se'fat صفحات safahAt صفر sefR +صفرم sefRom صفم 'sefRom صفوی safavi صلبیه solbije: @@ -3881,6 +5104,8 @@ $ dolAR صورت suRat صورتحساب suRat_hesAb صولت so:lat +صوم sevvom +صوّم sevvom صیاد sajjAd صید sejd صیقل sejq1al @@ -3916,12 +5141,14 @@ $ dolAR طرق toRoq1 طرقی taRaq1q1i طریق taRiq1e +طریقت taRiq1at طریقی taRiq1i طعمه to?me: طلب talab طلبان talabAn طلق telq1 طمع tama? +طهران tehRAn طور 'toR طوراب toR'Ab طی tejje @@ -3933,6 +5160,7 @@ $ dolAR ظهر zohR عاریه ?ARije عازم Azem +عالميان AlamijAn عالیجناب AlidZenAb عالیرتبه 'AliRotbe عباد ebAd @@ -4061,6 +5289,7 @@ $ dolAR غربت q1oRbat غرش q1oRReS غرض q1aRaz +غرغر q1oRq1oR غرفه q1oRfe: غرّش q1oRReS غزل q1azal @@ -4133,6 +5362,7 @@ $ dolAR فرماید faRmAjad فرمول foRmul فرنگ faRang +فرنگی faRangi فرنی fe'Reni فرهنگ faRhang فرهنگی faRhangi @@ -4212,14 +5442,17 @@ $ dolAR فونکسیونالیسم fonksijonAlism فونیک fonik فویل fojl +فيزيولوژي fizijoloZi فکاهی fokA:'hi: فکر 'fekR فیاض fajjAz فیبر fibR فیتوپلاینکتون fitopelAjnkton +فیزیولوژی fizijoloZi فیزیولوژیک fizijoloZik فیزیکدان fizikdAn فیسبوک fejsbuk +فیض fejz فیلارمونیک filARmonik فیلتر filteR فیلترشکن filteRSekan @@ -4312,6 +5545,7 @@ $ dolAR قلّک q1ollak قلک q1ollak قلی q1oli +قلیان q1aljAn قم q1om قمار q1omAR قمر q1amaR @@ -4346,6 +5580,7 @@ $ dolAR لاکتوز lAktoz لاکپشت lAkpoSt لایتناهی lAjatanAhi +لایسنس lAjsens لایک lAjk لباس 'lebAs لبت labat @@ -4369,6 +5604,7 @@ $ dolAR لرد loRd لزج lazedZ لزوما lozuman +لطافت letAfat لطف lotf لطفا lotfan لطمات latamAt @@ -4380,6 +5616,8 @@ $ dolAR لقمان loq1mAn لقمه loq1me: لقمۀ loq1meje +لله lellAh +للّه lellAh لمینیت laminejt لندن landan لندهور gandehuR @@ -4413,6 +5651,8 @@ $ dolAR لیلی lejli لینوکس linuks لینک 'link +مآب ma_Ab +مأسس mo?asses مأیوس ma?jus مؤثر ,mo'a?seR مؤسس mo?asses @@ -4421,6 +5661,7 @@ $ dolAR مؤمن mo?men مؤنث moannas مابقی mAbaq1i +مابین mAbejn ماجرا mAdZaRA ماحصل mAhasal مادر mAdaR @@ -4518,6 +5759,8 @@ $ dolAR متمسک motemassek متمم motammem متن matn +متناهیه motanAhije: +متناهیۀ motanAhijeje متنوع motenavve? متنوّع motenavve? متهم mottaham @@ -4531,6 +5774,7 @@ $ dolAR متولی motevalli متولیان motevallijAn متون motun +متوهم motevahhem متّحد mottahed متّصل mottasel متّفق mottafeq1 @@ -4544,6 +5788,7 @@ $ dolAR مثبت mosbat مثل mesl مثلا masalan +مثلاً masalan مثلث mosallas مجاب modZAb مجاز modZAz @@ -4717,6 +5962,7 @@ $ dolAR مرتضوی moRtazavi مرتضی moRtezA مرتفع moRtafa? +مرتکبان moRtakebAn مرجح moRadZah مرجع maRdZa? مرخص moRaxxas @@ -4780,6 +6026,7 @@ $ dolAR مسئلۀ mas?aleje مسابقات mosAbeq1At مسابقه mosAbeq1e: +مساحق mosAheq1 مساعد mosAed مسافر mosAfeR مسافرت mosAfeRat @@ -4793,6 +6040,7 @@ $ dolAR مستثنی mostasnA مستجاب mostadZAb مستحب mostahabb +مستحضر mostahzaR مستحق mostahaq1 مستحکم mostahkam مستخدم mostaxdem @@ -4800,6 +6048,7 @@ $ dolAR مستضعف mostaz?af مستطیل mostatil مستعار mosta?AR +مستفيض mostafiz مستقبل mostaq1bel مستقر mostaq1aR مستقل mostaq1el @@ -4843,6 +6092,7 @@ $ dolAR مشتری moStaRi مشتق 'moStaq1 مشخص moSaxxas +مشخصا moSaxxasan مشدد moSaddad مشرف moSRef مشرق maSReq1 @@ -4857,7 +6107,9 @@ $ dolAR مشکل 'moSkel مشکی meSki مشی maSj +مشیت maSijjat مشیمیه maSimije: +مشیّت maSijjat مصاحب mosAheb مصادره mosAdeRe: مصالحه mosAlehe: @@ -4970,6 +6222,7 @@ $ dolAR مغز maq1z مغناطیس meq1nAtis مغول moq1ol +مفت moft مفتاح meftAh مفرح mofaRRah مفرد mofRad @@ -4986,6 +6239,7 @@ $ dolAR مقایس moq1Ajes مقبره maq1baRe: مقبرۀ maq1baReje +مقتضا moq1tazA مقتضی moq1tazi مقدار meq1dAR مقداری meq1dARi @@ -5051,6 +6305,7 @@ $ dolAR ممکن momken ممیز momajjez منا monA +مناجات monAdZAt مناسب monAseb مناسبتی monAsebati مناظره monAzeRe: @@ -5059,6 +6314,7 @@ $ dolAR مناقصه monAq1ese: منبر manbaR منبع manba? +منت mennat منتاژ montAZ منتج montadZ منتخب montaxab @@ -5080,6 +6336,7 @@ $ dolAR منزل manzel منزله manzale: منزوی monzavi +منسجم monsadZem منش maneS منشأ manSa? منشاء manSa? @@ -5105,6 +6362,7 @@ $ dolAR منچستریونایتد mantSesteRjunAjted منکر monkeR منگل mongol +منگنز manganez منیر moniR منیزیم manjezijom منیژه maniZe: @@ -5144,6 +6402,7 @@ $ dolAR موبایل 'mobAjl موبد mubad موتور motoR +موتورسیکلت motoR_siklet موثر mo?asseR موثق movassaq1 موج mo:dZ @@ -5191,7 +6450,9 @@ $ dolAR مونتاژ montAZ مونث moannas موند mund +موهبت muhebat موهن mo:hen +موومان muvmAn موژه moZe: موکت moket موکل movakkel @@ -5199,6 +6460,7 @@ $ dolAR مّلاک mallAk مّلت mellat مّلیت mellijat +مپل mopol مچ motS مچاله motSAle: مچبند motSband @@ -5234,7 +6496,9 @@ $ dolAR مگر magaR مگس magas مگسکش magaskoS +میابد mijAbad میادین majAdin +میامی majAmej میان miAn میانبر mijAnboR میانجی mi:An'dZi: @@ -5259,6 +6523,7 @@ $ dolAR میرس miRes میرسد miResad میرسم miResam +میرغضب miRq1azab میرفت miRaft میرو miRav میروند miRavand @@ -5446,6 +6711,7 @@ $ dolAR نفسانی nafsAni نفسکش nafaskeS نفوذ nofuz +نفوس nofus نفی nafj نقاب neq1Ab نقاش naq1q1AS @@ -5474,7 +6740,6 @@ $ dolAR نمونه nemune: نمونۀ nemuneje نمک namak -نمی nemi نمیبرم nemibaRam نمیبریم nemibaRim نمیخرد nemixaRad @@ -5561,6 +6826,7 @@ $ dolAR نکتۀ 'nokkteje نکرد nakaRd نکشید nakeSid +نکشیده nakeSide: نکن nakon نکند nakonad نکو neku @@ -5584,9 +6850,16 @@ $ dolAR نیات nijjAt نیاز nijAz نیامد najAmad +نیانگارد najangAR +نیانگاردد najangARad نیاورد najAvaRd نیاکان nijAkAn +نیاید najAjad نیایش nijAjeS +نیایند najAjand +نیایی najAi: +نیایید najAi:d +نیاییم najAi:m نیت nijjat نیجریه nidZeRije: نیر najjeR @@ -5604,6 +6877,8 @@ $ dolAR نیوز nijuz نیومد najumad نیویورک nijojoRk +نیّت nijjat +نیچه nitSe: نیکمنش nikmaneS هاتمیل hAtmejl هارد hARd @@ -5614,6 +6889,12 @@ $ dolAR هاشم hASem هالوژن hAloZen های hAje +هایتان hAjetAn +هایتون hAjetun +هایشان hAjeSAn +هایشون hAjeSun +هایمان hAjemAn +هایمون hAjemun هایپر hAjpeR هایی hAi: هتل hotel @@ -5645,6 +6926,7 @@ $ dolAR هزارپا hezARpA هزراپا hezARpA هست hast +هشت haSt هشتاد 'haStAd هشتادم 'haStAdom هشتصد haStsad @@ -5654,6 +6936,7 @@ $ dolAR هشدار hoSdAR هشیار hoSjAR هف 'hef +هفت haft هفتاد 'haftAd هفتادم 'haftAdom هفتصد haftsad @@ -5682,6 +6965,7 @@ $ dolAR همزادپندار hamzAdpendAR همزمان hamzamAn همش hamaS +هموفونی homofoni هموفیلی hemofili همون hamun همگانی hamegAni @@ -5719,6 +7003,7 @@ $ dolAR هوش huS هوشنگ huSang هول ho:l +هولوگرام hologeRAm هوگو hogo هویت hovijjat هویدا hovejdA @@ -5737,6 +7022,7 @@ $ dolAR هیجده hidZdah هیلتون hilton هیپنوتیزم hipnotizm +هیچیک hitSjek هیکل hejkal واترپلو vAteRpolo واشنگتن vASangton @@ -5838,11 +7124,16 @@ $ dolAR پائین 'pAi:n پابرجا pAbaRdZA پابند pAband +پاترول pAtRol پاتریوت pAtRijot پاتوق pAtoq1 +پادتن pAdtan +پادو pAdo +پادکست pAdkast پارادوکس pARAdoks پارادوکسیکال pARAdoksikAl پارازیت pARAzit +پارالل pARAlel پارامتر pARAmetR پاراگراف pARAgeRAf پارت pARt @@ -5854,24 +7145,40 @@ $ dolAR پارچ pARtS پارک pARk پارکت pARket +پاستل pAstel پاسخ pAsox پاسپورت pAspoRt پاشنه pASne: پاشنۀ pASneje پافشاری pAfeSARi پالایش pAlAjeS +پالت pAlet پالتو pAlto +پالس pAls +پانتومیم pAntomim +پاند pAnd پانز pAnz پانزده 'pAnzdah +پانسمان pAnsemAn +پانسیون pAnsijon +پانسیونر pAnsijoneR پانصد pAnsad پانصدم pAnsadom +پانچ pAntS پاورقی pAvaRaq1i +پاورپوینت pAveRpojnt +پاورچین pAvaRtSin پاکباخته pAkbAxte: +پاکنه pAkne پایتخت pAjtaxt +پایستگی pAjestegi پتاس potAs پتاسیم potAsijom پتانسیل potAnsijel +پترزبورگ peteRzbuRg +پتروسیان petRosijAn پتروشیمی petRoSimi +پتک potk پخت poxt پخش paxS پدافندی padAfandi @@ -5879,8 +7186,16 @@ $ dolAR پدر pedaR پدرام pedRAm پدربزرگ pedaR_bozoRg +پدرتباری pedaRtabARi +پدرجد pedaRdZad +پدرخوانده pedaRxAnde پدرزن pedaRzan +پدرسوخته pedaRsuxte +پدرسوختگی pedaRsuxtegi پدرشوهر pedaRSohaR +پدرمرده pedaRmoRde +پدرکش pedaRkoS +پدرکشتگی pedaRkoStegi پدریتان pedaRijetAn پدریش pedaRijaS پدریشان pedaRijeSAn @@ -5888,18 +7203,44 @@ $ dolAR پدیا pedijA پذیرش paziReS پذیرفت paziRoft +پذیرفتنی paziRoftani پر poR +پراتیک peRAtik پرازیت pARAzit +پرانتز paRAntez پراکند paRAkand +پراگماتیک peRAgmAtik پراید peRAjd +پربارش poRbAReS +پربدهی poRbedehi +پربسته paRbaste +پربلا poRbalA +پربها poRbahA +پربیننده poRbinande: پرتاب paRtAb +پرتابل poRtAbl +پرتره poRtRe +پرتست poRotest +پرتستان poRotestAn +پرتعداد poRtedAd پرتغال poRteq1Al پرتقال poRteq1Al +پرتلالو poRtalalo پرتنش poRtaneS پرتو paRto +پرتوافشانی paRto_afSAni +پرتوافکن paRto_afkan +پرتودرمانی paRtodaRmAni +پرتوزا paRtozA +پرتپش poRtapeS +پرتکل poRotokol +پرحجم poRhadZm پرخاش paRxAS +پرخاشجویانه paRxASdZujAne +پرخفقان poRxafaq1An پرد paRad پرداخت paR'dAxt +پردار paRdAR پرداز paRdAz پردازد paRdAzad پردازش paRdAzeS @@ -5908,14 +7249,24 @@ $ dolAR پردازی paRdAzi پردازید paRdAzid پردازیم paRdAzim +پرداویز paRdAviz پرده paRde: +پردگی paRdegi پردۀ paRdeje +پردیزه paRdize پردیس paRdis پررفت poR_Raft پررو poRRu +پرریش poRRiS +پرز poRz +پرزخم poRzaxm +پرزدار poRzdAR +پرزنت peRezent پرزیدنت peRezident پرست paRast پرستار paRastAR +پرستش paRasteS +پرستشگر paRasteSgaR پرستو paRastu پرستیدم paRastidam پرستیدن paRasti:'dan @@ -5924,107 +7275,255 @@ $ dolAR پرستیدید paRastidid پرستیدیم paRastidim پرستیژ peRestiZ +پرسخن poRsoxan پرسد poRsad پرسش poRseS +پرسناژ peRsonAZ پرسنل peRsonel پرسه paRse: پرسها peReshA پرسهای peReshAje پرسهایی peReshAi: +پرسو poRsu پرسوجو po:Rso:'dZu: پرسپلیس peRspolis پرسپولیس peRspolis پرسپکتیو peRespektiv پرسید poRsid پرش paReS +پرشدگی poRSodegi پرشیا peRSijA پرشین peR'Sijan +پرطمطراق poRtamtaRAq1 +پرطنین poRtanin +پرعیار poRajAR +پرغصه poRq1osse +پرغوغا poRq1ovq1A +پرفراتور peRfoRAtoR پرفسورتلویزیون poRfosoR +پرفیریت poRfiRit +پرقدمت poRq1edmat +پرقند poRq1and +پرقیچی paRq1ejtSi +پرلاشز peRlASez +پرلتر poRoleteR +پرلن peRlon +پرلود peRlud +پرمایه poRmAje +پرمدعا poRmoddaA +پرمسیولیت poRmasulijat +پرمشقت poRmaSeq1q1at +پرمنفعت poRmanfeat +پرمنگنات peRmangenAt +پرمو poRmu پرند paRand پرنده paRande: +پرندگان paRandegAn پرنس peRans +پرنسس peRanses +پرنقش poRnaq1S +پرنمک poRnamak +پرنیرنگ poRnejRang +پره paRRe پرهام paRhAm +پرهون paRhun +پرهیبت poRhejbat +پرهیجان poRhajedZAn +پرهیخت paRhixt پرهیز paRhiz +پرو poRov پروا paRvA +پروار paRvAR +پرواربند paRvARband پرواز paRvAz پروانه paRvAne: پروتئین peRoto?in پروتون poRoton +پروتوپلاست poRotopelAst +پروتوپلاسم poRtopelAsm پروتکل poRotokol +پروتیین poRote?in پرور paRvaR پرورد paRvaRd پرورش paRvaReS +پروزن poRvazn +پروستات poRostAt +پروسترویکا poRostoRikA +پروستریکا poRostoRikA پروسه poRose: پروفایل peRofAjl +پروفرم poRofoRm پروفرما pRofoRmA پروفسور peRofesoR +پروندان paRvandAn پرونده paRvande: پروه paZuh +پروژسترون peRoZesteRon پروژه poRoZe: +پروژکتور poRoZektoR پروژۀ poRoZeje +پروکسید peRoksid +پروگرام poRogeRAm پرویز paRviz پروین paRvin +پرویندخت paRvindoxt +پرپروتیین poRpoRotein پرپست poRpoSt پرپشت poRpoSt +پرک paRak +پرکشش poRkeSeS +پرکلرین peRkoloRin پرکینز peRkinz پرگار paRgAR +پرگل poRgol پری paRi +پریاخته poRjAxte +پریدخت paRidoxt +پریدر paRidaR +پریرخ paRiRox +پریرو paRiRu پریروز paRiRuz پریز peRiz +پریسکوپ peRiskop +پریسکپ peRiskop +پریشان paRiSAn پریشب paRiSab +پریمتر peRimetR پریناز paRinAz پرینت pRint پرینتر pRinteR پریود peRijod +پریکارد peRikARd +پریکارپ peRikARp +پزتا pezetA +پزد pazad پزشک pezeSk +پزو pezo پزیرد paziRad +پسامدرنیسم pasAmodeRnism پسانداز pasandAz پست post پستان pestAn +پستانک pestAnak +پستر posteR پسته peste: پستون pestun +پستک pastak پستۀ pesteje +پستیژ postiZ پسر pesaR +پسرا pesaRA +پسراندر pesaRandaR +پسرانه pesaRAne +پسربرادر pesaRebaRAdaR +پسربچه pesaRbatStSe پسرخاله pesaRxAle: +پسرخوانده pesaRxAnde +پسرخواندگی pesaRxAndegi +پسرخواهر pesaRxAhaR پسردایی pesaRdAi: +پسرزا pesaRzA پسرعمه pesaRamme: پسرعمو pesaRa:mu +پسرفت pasRaft +پسرو pasRo: پسرکش pesaRkoS پسند pasand پسندید pasandid +پسندیدگی pasandidegi +پسورد pasvoRd +پسکامان paskAmAn +پسیخانی pesixAni پشت p'oSt پشتبام poStebAm پشتبند poStband پشتوان poStvAn +پشتگرم poStgaRm پشتیبان poStibAn +پشک peSk +پشکل peSkel +پشگ peSg پشگل peSgel پشیمان paSimAn +پطرزبورگ peteRzbuRg +پطرس petRos +پطروسیان petRosijAn پف pof پفک pofak پفیوز pofijuz پل pol +پلاتفورم pelAtfoRm +پلاتو pelAto +پلاتین pelAtin +پلاتینویید pelAtinoid +پلاروید polARojd +پلاریته polARite +پلاریزاسیون polARizAsijon +پلاریزه polARize پلاستیک pelAstik پلاسما pelAsmA +پلاسمودیوم pelAsmodijom +پلاسمولیز pelAsmoliz +پلاسنتا pelAsentA +پلاسید pelAsid +پلان pelAn +پلانتاریم pelAnetARijom +پلانو pelAno +پلانکتون pelAnkton پلاژ pelAZ پلاک pelAk +پلاکارت pelAkARt +پلاکارد pelAkARd +پلاکت pelAket +پلاگر pellAgaR +پلت palat +پلتیک poletik +پلس palas پلسک pelesk پلشت palaSt +پلم palam پلمب polomb +پلمپ polomp +پلنوم pelenom پلنگ 'palang پله pelle: پلو polo +پلوتارک polotARk +پلوتون poloton +پلوتونیوم polotonijom +پلوخورش poloxoReS +پلورالیزم poloRAlizm +پلورالیست poloRAlist +پلورالیسم poloRAlism +پلونیم polonijom +پلوپز polo:paz +پلوپونزی poloponzi +پلویمتر pelvimetR پلّه pelle: پلّۀ pelleje پلک pelk +پلکان pellekAn پلۀ pelleje پلیآف pelej?Af پلیر pelejeR پلیس polis +پلیمر polimeR +پلیمریزاسیون polimeRizAsijon پلیور poliveR +پلیپ polip +پلیکا polikA +پلیکان pelikAn پماد pomAd +پموفونیک homofonik پمپ pomp پمپاژ pompAZ +پنالتی penAlti +پنت pont +پنتان pentAn پنتاگون pentAgon +پنتوز pentoz +پنتوزان pentozAn +پنج pandZ پنجاهم 'pandZAhom پنجره pandZaRe: پنجرۀ pandZaReje @@ -6033,66 +7532,193 @@ $ dolAR پندار pendAR پندارد pendARad پنداشت pendASt +پندشنو pandSeno: +پندنیوش pandnijuS پنسیلوانیا pensilvAnijA +پنسیلوانین pensilvAnijAn +پنط pont پنل panel پنهان penhAn +پنوماتیک penomAtik +پنوموکوک penomokok پنچر pantSaR پنگئن panguan +پنگان pangAn پنگعن panguan پنگون panguan +پنگوین pangoan پهلوان pahlavAn +پهلوفنگ pahlufang پهلوی pahlavi +پهنانگر pahnAnegaR +پهنرفت pahnRaft +پواتیه poAtije +پوار povAR +پوتسدام putsdAm +پوخ pox پودر pudR +پوراحد puRahad +پوراحمد puRahmad +پوراردبیلی puRaRdebili +پوراستاد puRostAd +پوراسدالله puRasadollAh +پوراشرف puRaSRaf +پوراصل puRasl +پورباقری puRbAq1eRi +پوربهشتی puRbeheSti پورت poRt پورتال poRtAl +پورجواد puRdZavAd +پورحامدی puRhAmedi +پورحیدری puRhejdaRi +پوردهقان puRdehq1An +پورراجیان puRRAdZijAn +پوررنجبر puRRandZbaR +پورزمانی puRzamAni +پورسان puRsAn +پورسانت puRsAnt +پورسهراب puRsohRAb +پورشاسب puRSAsb +پورشیخ puRSejx +پورصادق puRsAdeq1 +پورصباغ puRsabbAq1 +پورعباس puRabbAs +پورعسکری puRaskaRi +پورفاطمی puRfAtemi +پورمراد puRmoRAd +پورمقدس puRmoq1addas +پورموسوی puRmusavi +پورمک puRmak +پورنجاتی puRnedZAti +پورنظری puRnazaRi +پورنوذری puRnozaRi +پورنوگرافی poRnogeRAfi پورنگ puRang +پورکاظمی puRkAzemi پوزئیدون poze?idon پوزش puzeS +پوزیترون pozitRon +پوزیتیویسم pozitivism +پوزید pozid +پوزیسیون pozisjon +پوزیشن poziSen پوستر posteR +پوشبرگ puSbaRg پوشش puSeS +پوشکره puSkoRe +پولاریزاسیون polARizAsijon +پولاریسم polARism پولو polo +پولونیم polonijom +پولکا polkA +پولکبالان pulakbAlAn +پولیستر polijesteR +پولیش poliS +پولیفونی polifoni +پولیفونیک polifonik +پولیمر polimeR +پولیور poliveR +پولیپ polip پوند pond +پونز punez +پوپلین poplin پوپیتر popitR +پوکر pokeR +پویش pujeS +پوینت pojAnt پّله pelle: پپسی pepsi پپسیکولا pepsikolA پپیتر popitR پژمان peZmAn +پژمر paZmoR +پژمرد paZmoRd پژمرده paZmoRde: پژمردۀ paZmoRdeje +پژواک peZvAk پژوه paZuh پژوهش paZuheS +پکاند pokAnd +پکانید pokAnid +پکتین pektin +پکر pakaR پکن pekan پکیج pakejdZ +پکید pokid پگاه pegAh پی pej پیام pajAm پیامبر pajAmbaR +پیامبرکش pajmbaRkoS پیامد pajAmad پیانو pijAno پیاپی pejApej پیت pejat +پیتزیکاتو pitsikAto +پیتسیکاتو pitsikAto +پیتون pejton +پیتکانتروپ pitekAnteRop +پیج pejdZ +پیجر pejdZeR پیدا pejdA پیداش pejdAS پیدام pejdAm +پیدایش pejdAjeS +پیرابند piRAband +پیراحمدی piRahmadi +پیراشکی piRASki +پیراقطبی piRAq1otbi +پیرایش piRAjeS +پیرایید piRAid پیرزن piRezan +پیرمرادیان piRmoRAdijAn +پیرموذن piRmo?azzen +پیرموسی piRmusA +پیرهن piRhan پیرو pejRo پیروان pejRovAn +پیرولیز piRolis +پیروپاتال piRopAtAl +پیروکسن piRoksen پیروی pejRavi +پیرچشم piRtSeSm +پیرکس piReks +پیزر pizoR +پیس pijes پیست pejst +پیستن piston +پیستون pistun +پیسوار pisvAR +پیشابدان piSAbdAn +پیشابراه piSAbRAh پیشامد piSAmad +پیشاپیش piSApiS پیشرفت piSRaft پیشرو piSRo: +پیشکش piSkeS پیغام pej'q1Am پیغمبر pejq1ambaR +پیلوت pilot +پیلور piloR پیما pejmA پیمان pejmAn +پیمود pejmud پینتبال pejntbAl +پینوکیو pinokijo پینگپونگ pingpong +پیه pih +پیواژه pejvAZe +پیوره pijoRe پیوست pejvast +پیوستار pejvastAR پیوند pejvand پیوندد pejvandad +پیونگ pijung +پیچازی pitSAzi +پیچش pitSeS +پیچه pitSe: پیک pejk +پیکاسو pikAso پیکان pejkAn پیکر pejkaR پیکلو pikolo @@ -6192,6 +7818,7 @@ $ dolAR کارت kARt کارتل kARtel کارتون kARton +کارد kARd کاردان kARdAn کارفرما 'kARfaRmA کارمزد kARmozd @@ -6279,6 +7906,8 @@ $ dolAR کرنش koRneS کرنل koRnel کره koRe: +کروات kRovAt +کرواتی kRovAti کرواسی koRovAsi کروب kaRRub کروی koRavi @@ -6362,6 +7991,9 @@ $ dolAR کلنگ kolang کله kalle: کلهر kalhoR +کلّ koll +کلّيّه kolijje: +کلّيّۀ kolijjeje کلک kalak کلکسیون koleksijon کلۀ kaleje @@ -6405,10 +8037,13 @@ $ dolAR کنایه kenAje: کنایۀ kenAjeje کنت kont +کنتاکی kentAki کنتر kontR کنتراست kontRAst +کنترباس kontRbAs کنترل ,'kontoRol کنترلر kontoRoleR +کنترپوان kontRpuAn کنترپون kontRpuan کنتس kontes کنتور kontoR @@ -6473,6 +8108,7 @@ $ dolAR کپر kapaR کپل kapal کپی ''kopi +کژدم kaZdom کی kej کیانوش kijAnuS کیبورد kiboRd @@ -6485,6 +8121,7 @@ $ dolAR کیهان kejhAn کیوان kejvAn کیوسک kijusk +کیومرس kijumaRs کیک kejk گارانتی gARAnti گارد gARd @@ -6523,6 +8160,7 @@ $ dolAR گربۀ goRbeje گرجستان goRdZestAn گرد gaRd +گردآور geRdAvaR گرداند gaRdAnd گردباد geRdbAd گردد gaRdad @@ -6585,6 +8223,7 @@ $ dolAR گفتوگو goft'ogu گفتگو goftogu گل gol +گلآلود gelAlud گلاب golAb گلالود gelAlud گلان golAn @@ -6672,6 +8311,7 @@ $ dolAR یاسمن jAsaman یاسمین jAsamin یافت 'jAft +یانگ jAng یاور jAvaR یبوست jobusat یتان jetAn @@ -6696,6 +8336,7 @@ $ dolAR یونس junes یونسکو junesko یونیسف junisef +یوهان juhAn یک je'k یکدیگر jekdigaR یکم 'jekom @@ -6703,7 +8344,7 @@ $ dolAR یکّه 'jekke: یکّۀ 'jekkeje یکپارچگی jekpARtSegi -یکپارچۀ jekpARtZeje +یکپارچۀ jekpARtSeje یکۀ 'jekkeje یکی jeki یکیش 'jekiS diff --git a/dictsource/fa_rules b/dictsource/fa_rules index c99ca859..c4a8125c 100755 --- a/dictsource/fa_rules +++ b/dictsource/fa_rules @@ -23,13 +23,15 @@ // Text to phoneme rules for Farsi -// replace Arabic character numbers with Latin character numbers +// replacing unknown characters and Arabic numbers with Farsi characters and Latin numbers .replace ٪ % ي ی ۍ ی ى ی ك ک + ە ه + ھ ه ٠ 0 ۰ 0 ۱ 1 @@ -59,12 +61,12 @@ .L01 آ ا ی ي و // short vowels (commonly unwritten ) -.L02 َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ +.L02 َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ // All consonants .L03 ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه ة ئ -// all Farsi characters without ا آ +// all Farsi characters without ا آ and Short vowels .L04 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ت ن م ک گ ۀ ظ ط ز ر ذ د ئ و ة ي ژ ؤ إ أ ء ؟ پ // Group one of consonants @@ -77,7 +79,7 @@ .L07 ن م ت ش ک مان تان شان ند نده ندۀ ندگی ندگان گی گان گانه گانۀ ستان ست // All vowels (long + Short) -.L08 آ ا ی ي و َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ +.L08 آ ا ی ي و َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ // all Farsi characters without short vowels .L09 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ا ت ن م ک گ ۀ آ ظ ط ز ر ذ د ئ و ة ي ژ پ ؤ إ أ ء ؟ ّ @@ -100,6 +102,9 @@ L09L04) آلود (_Sm4 Alud L09L04) آباد (_Sm4 AbAd L09L04) آفرین (_Sm5 AfaRin + L09L09) آموخته (_Sm6 Amuxte: + L09L09) آموختۀ (_Sm6 Amuxteje + L09L09) آگاه (_Sm4 AgAh .group ا @@ -108,7 +113,7 @@ -) ا (للّه_+ o _) ا (L02_ alef? _) ا (L02L09 - _) ا (L01 + _) ا (L01L03 _) ا 'a: _) ا (ع e ا 'A @@ -346,6 +351,8 @@ L09L09) بخت (_Sm3 baxt L09L09) باش (_Sm3 bAS L09L09) بزرگ (_Sm4 bozoRg + L09L09) باور (_Sm4 bAvaR + L09L09) برانگیز (_Sm baRangiz // arabic form of words (Babs) ب //فواعل eg. جوامع @@ -518,6 +525,7 @@ L09L09) پرداز (_Sm5 paRdAz L09L09) پندار (_Sm5 pendAR L09L09) پرست (_Sm4 paRast + L09L09) پناه (_Sm4 panAh // arabic form of words (Babs) پ //فواعل eg. جوامع @@ -1670,6 +1678,7 @@ L09L09) درد (_Sm3 daRd L09L09) دوش (_Sm3 duS L09L09) دهی (_Sm3 dehi + L09L09) دوست (_Sm4 dust // arabic form of words (Babs) د //فواعل eg. جوامع @@ -2473,6 +2482,7 @@ // suffixes س L09L01) ست (_+NSm2 st L09L03) ست (_+NSm2 ast + -) ست (_+NSm2 st // eg. "کجا‌ست" L09L03) ستان (_Sm4 estAn L09L01) ستان (_Sm4 stAn L09L09) سان (_Sm3 sAn @@ -2826,7 +2836,7 @@ // Prefixes ص _) صاحب (L04L09L09P4@ sAheb _) صاحب (آL09L09P4@ sAheb - _) صدر (L04L09L09P5@ sadr + _) صدر (L04L09L09P3@ sadr _) صدر (آL09L09P5@ sadr // Suffixes ص @@ -4663,6 +4673,7 @@ L09L01) مون (_Sm3 mun L09L09) مردان (_Sm5 maRdAn L09L09) منش (_Sm3 maneS + L09L09) مآب (_Sm3 maAb // arabic form of words (Babs) م //فواعل eg. جوامع @@ -5209,6 +5220,7 @@ // Plural pronoun ها L09L09) های (_NSm3 h'Aje L09L09) هایی (_NSm4 h'Ai: + L09L09) هائی (_NSm4 h'Ai: L09L09) هاست (_NSm4 h'Ast // Plural possessive pronouns for ها L09L09) هایم (_NSm4 hAjam @@ -5352,6 +5364,8 @@ _ا) ی (_+ i L01) ی (_ je L03) ی (_ i + ی (ٰ_ + ی (ٰL04 j _آ) ی (L03_ ja // Prefixes ی @@ -5439,6 +5453,7 @@ L09ع) یاتشان (_NSm6 ijjAteSAn L09L09) یزاسیون (_Sm7 isAsion L09L03) یافت (_Sm4 jAft + -) یست (_+NSm3 ist // eg. "فردا‌یست" // arabic form of words (Babs) ی //فواعل eg. جوامع @@ -5518,6 +5533,8 @@ .group ٔ + L04) ٔ + ا) ٔ a? ٔ // suffixes ٔ @@ -5530,6 +5547,7 @@ .group ئ + ئی i: ئ (L01 ? ئ (L02 ? L02) ئ ? @@ -5560,6 +5578,13 @@ //ة (L01 h ة t + +.group ٰ + ٰ (L04 A + ٰ (ا + ٰ (آ + + //short vowels that are not usually written: .group َ @@ -5583,6 +5608,12 @@ L09L09) ُ (_Sm1 o +.group ْ + ْ + // Suffixes "ْ" + L09L09) ْ (_Sm1 + + .group ً ً an // Suffixes "ً" diff --git a/dictsource/hu_list b/dictsource/hu_list index 8d020ce0..9ebe03be 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -411,7 +411,7 @@ _tld tildE _#9 tAb _#32 s'o:kYz _cap n'AJ_| -_?? kAR2AktEr||ko:d // unknown characters (change this) +_?? kAR2AktEr // unknown characters (change this) // Abbreviations @@ -5419,7 +5419,6 @@ _″ duplA|ApostR2o:f ≠ nEmEJEnlY: _ˇ lEfEle:n^i:l _¡ AlSo:indEks -_braille bR2Ail:E // Alphabets @@ -5427,6 +5426,7 @@ _ar 'AR2Ab _cyr ts'iR2ill _he h'e:bER2 _zh k'i:nAi +_braille bR2Ail:E // Main Exceptions List diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 0079efab..71c6573e 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -460,6 +460,7 @@ shetlan) d (szige d _tren) dsz (e d|s vakon) d (sz d vé) d (jeggy d +své) d (zseb d .group dz fogó) dz (kod ts @@ -1743,7 +1744,7 @@ fáklyá) sz (ene Sz para) szt (segg st azbe) szt (sisak st nyu) szt (süveg st - serté) szs (ír SZ + serté) szs (ír S|Z tá) szs (in SZ va) szs (ír SZ szs (ák SZ //All szsák part containing part need spokening single S and Z phoneme, for example kenyereszsák, pénzeszsák, krumpliszsák, cukroszsák words @@ -1763,6 +1764,7 @@ fáklyá) sz (ene Sz ellenállá) sz (ón Sz ré) sz (árás Sz _te) szts (or st|S +serté) szs (ir S|Z .group t t t diff --git a/dictsource/pt_list b/dictsource/pt_list index 8a8c5724..45e03d84 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -645,7 +645,7 @@ alcateia $alt alferes $alt algozes $alt alicerce $alt -almoço $alt $verb +almoço alt $verb amarelo $alt ameba $alt amores $alt2 @@ -665,7 +665,7 @@ aterro $alt2 $noun atmosfera $alt atrozes $alt autora $alt2 -avesso $alt2 +avesso $alt2 axé aSE baqueta $alt2 beco $alt2 @@ -674,6 +674,7 @@ besta $alt2 bilhete $alt2 boca $alt2 bochecha $alt2 +boio $alt bojo $alt2 boleia $alt bolero $alt @@ -690,7 +691,7 @@ cachorra $alt2 caderneta $alt2 camiseta $alt2 cantora $alt2 -capacete $alt2 +capacete $alt2 caractere $alt caramelo $alt careta $alt2 @@ -702,27 +703,27 @@ cateto $alt2 catorze $alt2 cebola $alt2 cefaleia $alt -cerca $alt -cerca $alt2 $noun +cerca $alt +cerca $alt2 $noun cerco $alt $verb chamego $alt2 chefe $alt -checam $alt +checam $alt cheque $alt chinelo $alt choro $alt2 $noun -chovesse $alt2 +chovesse $alt2 chupeta $alt2 clamores $alt2 clero $alt coco $alt2 cofre $alt -cogumelo $alt +cogumelo $alt coice $alt2 colabore $alt colete $alt2 -colchete $alt2 -colher $alt $noun +colchete $alt2 +colher $alt $noun colheres $alt $noun colmeia $alt colore $alt @@ -732,8 +733,8 @@ concerto $alt2 $noun concordo $alt conforto $alt $verb consolo $alt2 $noun -controle $alt2 $noun -controlo $alt2 $noun +controle $alt2 $noun +controlo $alt2 $noun coreia $alt corneta $alt2 cornos $alt @@ -789,7 +790,7 @@ escroto $alt2 esforço $alt $verb esforços $alt esgoto $alt2 $noun -esgotos $alt2 +esgotos $alt2 esperma $alt espeto $alt2 $noun espiroqueta $alt2 @@ -820,11 +821,11 @@ fogos $alt foguete $alt2 foice $alt2 forca $alt2 -força $alt2 $noun +força $alt2 $noun forças $alt2 -forço $alt -fordes $alt2 -fores $alt2 +forço $alt +fordes $alt2 +fores $alt2 forro $alt $verb fosse $alt2 frevo $alt2 @@ -833,7 +834,7 @@ galileia $alt gameta $alt2 geleia $alt gelo $alt $verb -genebra $alt +genebra $alt germe $alt gesso $alt2 golpe $alt @@ -841,33 +842,33 @@ gonorreia $alt gorda $alt2 gosto $alt $verb gota $alt2 -governo $alt2 $noun -gozo $alt $verb +governo $alt2 $noun +gozo $alt2 $noun graveto $alt2 grelha $alt groselha $alt grosso $alt2 grozo $alt $verb -hemorroida $alt +hemorroida $alt hoje $alt2 horrores $alt2 ideia $alt insonoro $alt -interesse $alt2 $noun -jogo $alt2 $noun +interesse $alt2 $noun +jogo $alt2 $noun joguete $alt2 lambreta $alt2 lebre $alt leste $alt2 $verb lopes $alt -maior $alt +maior $alt maleta $alt2 marcelo $alt marmelo $alt marreta $alt2 martelo $alt -melhor $alt -menor $alt +melhor $alt +menor $alt merda $alt megera $alt melo $alt @@ -880,7 +881,7 @@ mexi meS'i mexo m'eSU minueto $alt2 miolo $alt2 -miolos $alt +miolos $alt moeda $alt molho $alt2 $noun monera $alt @@ -889,7 +890,7 @@ morda $alt2 moreia $alt mortos $alt motora $alt2 -mulher $alt +mulher $alt mui mwi muito mw'iNtU // -s is included as a suffix muita mw'iNt& @@ -907,17 +908,17 @@ onu $1 olho $alt2 $noun opereta $alt2 ordens $alt -osso $alt2 -ossos $alt +osso $alt2 +ossos $alt ostra $alt2 ovos $alt pachorra $alt2 paexa paeSa palacete $alt2 palheta $alt2 -panfleto $alt2 +panfleto $alt2 pangeia $alt -panqueca p,&~Nk'Ek& +panqueca p,&~Nk'Ek& pantera $alt paralelo $alt parede $alt2 @@ -929,8 +930,9 @@ pelo $alt $verb peso $alt $verb piloto $alt2 $noun pintora $alt2 -pior $alt +pior $alt pirueta $alt2 +plaqueta $alt2 plateia $alt plebeia $alt polca $alt @@ -944,7 +946,7 @@ poxa p'oS& primavera $alt provo $alt quarteto $alt2 -queda $alt +queda $alt quinteto $alt2 recomeço $alt2 $noun recordo $alt @@ -959,7 +961,7 @@ reitora $alt2 relevo $alt2 $noun remorso $alt reprovo $alt -retorno $alt $verb +retorno $alt $verb rixa x'iS& rocha $alt rock $alt @@ -970,9 +972,9 @@ saleta $alt2 sarjeta $alt seborreia $alt seca $alt2 $noun -secas $alt2 +secas $alt2 seco $alt2 -seco $alt $verb +seco $alt $verb selo $alt $verb selvagem seUv'aZeIN sexteto $alt2 @@ -985,14 +987,14 @@ sogra $alt sopro $alt2 $noun soro $alt2 sorvete $alt2 -sossego $alt2 $noun +sossego $alt2 $noun suborno $alt $verb sufoco $alt2 $noun sufocos $alt2 suporto $alt suor swOr tapete $alt2 -temores $alt2 +temores $alt2 tempero $alt2 $noun terrores $alt2 teta $alt2 @@ -1001,8 +1003,8 @@ tocha $alt toga $alt topo $alt $verb torno $alt $verb -torre $alt2 $noun -torres $alt2 +torre $alt2 $noun +torres $alt2 tortos $alt traqueia $alt travesso $alt2 @@ -1012,13 +1014,13 @@ troco $alt2 $noun tropa $alt tropeço $alt2 $noun trombeta $alt2 -tumores $alt2 +tumores $alt2 valeta $alt2 vanessa $alt2 velozes $alt verme $alt violeta $alt2 -violoncelo $alt +violoncelo $alt voga $alt vozes $alt xarope $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 97606389..2b6c74a5 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -349,7 +349,7 @@ _d) e (L05_ E _vi) e (L05_ E fiz) e (L05_ E - pus) e (L05_ E / com- im- de- + pus) e (L05_ E // com- im- de- tiv) e (L05_ E // es- _com) e (L05_ e _pud) e (L05_ E @@ -359,34 +359,34 @@ _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E - tend) e (L06_ e / a- con- en- es- + tend) e (L06_ e // a- con- en- es- _mord) e (L06_ e _rend) e (L06_ e _vend) e (L06_ e - prend) e (L06_ e / a- rea- des- desa- + prend) e (L06_ e // a- rea- des- desa- _arrepend) e (L06_ e _defend) e (L06_ e _depend) e (L06_ e _escond) e (L06_ e -preend) e (L06_ e / com- a- re- sur- +preend) e (L06_ e // com- a- re- sur- respond) e (L06_ e // cor- bat) e (L07_ e // re- com- ced) e (L07_ e // pro- con- su- met) e (L07_ e // co- pro- arre- re- intro- compro- sub- - mov) e (L07_ e / re- co- + mov) e (L07_ e // re- co- viv) e (L07_ e // re- _beb) e (L07_ e _com) e (L07_ e _tem) e (L07_ e colh) e (L07_ e // & es- corr) e (L07_ e // per- con- in- so- dis- - ench) e (L07_ e / pre- - nasc) e (L07_ e / re- - tend) e (L07_ e / en- con- a- es- + ench) e (L07_ e // pre- + nasc) e (L07_ e // re- + tend) e (L07_ e // en- con- a- es- torc) e (L07_ e // con- venc) e (L07_ e // con- vert) e (L07_ e // in- re- con- - volv) e (L07_ e de- en- re- + volv) e (L07_ e // de- en- re- _eleg) e (L07_ e _ergu) e (L07_ e _mord) e (L07_ e @@ -397,7 +397,7 @@ respond) e (L06_ e // cor- padec) e (L07_ e // com- parec) e (L07_ e // a- rea- com- desa- prend) e (L07_ e // a- rea- des- - screv) e (L07_ e / e- in- ree- pre- de- + screv) e (L07_ e // e- in- ree- pre- de- _abastec) e (L07_ e _aborrec) e (L07_ e _absolv) e (L07_ e @@ -430,11 +430,11 @@ _rejuvenec) e (L07_ e _resolv) e (L07_ e _suspend) e (L07_ e conhec) e (L07_ e // & re- des- -estabelec) e (L07_ e / re- -favorec) e (L07_ e / des- -obedec) e (L07_ e / des- +estabelec) e (L07_ e // re- +favorec) e (L07_ e // des- +obedec) e (L07_ e // des- preend) e (L07_ e // sur- com- -proteg) e (L07_ e / des- +proteg) e (L07_ e // des- respond) e (L07_ e // cor- qu) e (brL04_ E _hosp) e (dL03_ E @@ -442,6 +442,8 @@ respond) e (L07_ e // cor- _n) e (grL03_ e _estr) ei (L03_ EI _inv) e (jL04_ E +proteg) e (l05_ e // des- + tr) e (pL04_ E // es- _dec) e (pL04_ E _in) e (ptL03_ E _p) e (quL02_ E @@ -451,14 +453,14 @@ respond) e (L07_ e // cor- _sev) e (rL03_ E _reit) e (rL03_ E _sinc) e (rL03_ E - g) e (rL04_ E / su- refri- - qu) e (rL04_ E / re- + g) e (rL04_ E // su- refri- + qu) e (rL04_ E // re- _op) e (rL04_ E _alt) e (rL04_ E _sup) e (rL04_ E _tol) e (rL04_ E _ven) e (rL04_ E - acel) e (rL04_ E / des- + acel) e (rL04_ E // des- _coop) e (rL04_ E _temp) e (rL04_ E _v) e (rbL03_ E @@ -494,13 +496,13 @@ _obsol) e (tL03_ e _d) e (vL03_ e scr) e (vL03_ e // e- in- pre- ree- de- _atr) e (vL03_ e - pr) e (zL04_ E / des- menos- + pr) e (zL04_ E // des- menos- _embel) e (zL04_ E _acont) e (çL01_ e _arref) e (çL01_ e _emagr) e (çL03 - pr) e (çL03_ e / a- - mer) e (çL03_ e / des- + pr) e (çL03_ e // a- + mer) e (çL03_ e // des- pad) e (çL03_ e // com- par) e (çL03_ e // a- re- com- rea- desa- _ado) e (çL03_ e @@ -508,7 +510,7 @@ _emagr) e (çL03 _car) e (çL03_ e _per) e (çL03_ e_ conh) e (çL03_ e // re- - obed) e (çL03_ e / des- + obed) e (çL03_ e // des- _esqu) e (çL03_ e _forn) e (çL03_ e _ofer) e (çL03_ e @@ -518,6 +520,7 @@ _agrad) e (çL03_ e _amanh) e (çL03_ e _amort) e (çL03_ e _anoit) e (çL03_ e +_desguarn) e (çL03_ e _desguarnec) e (çL03_ e _enfraqu) e (çL03_ e _enlouqu) e (çL03_ e @@ -531,7 +534,7 @@ _espair) e (çL03_ e _estrem) e (çL03_ e _fortal) e (çL03_ e _rejuven) e (çL03_ e -estabel) e (çL03_ e / re- +estabel) e (çL03_ e // re- //endsort @@ -828,17 +831,17 @@ estabel) e (çL03_ e / re- _deb) o (chL04_ O _desabr) o (chL04_ O _s) o (frL02_ O - r) o (gL04_ O / inter- + r) o (gL04_ O // inter- _j) o (gL04_ O _af) o (gL04_ O _adv) o (gL04_ O _ref) o (gL04_ O _ap) oi (L01_ OI _t) o (lL03_ o - c) o (lhL02_ O / es- en- re- + c) o (lhL02_ O // es- en- re- _t) o (lhL02_ O _m) o (lhL04_ O - env) o (lvL02_ O / des- + env) o (lvL02_ O // des- _abs) o (lvL02_ O _dev) o (lvL02_ O _res) o (lvL02_ O @@ -854,6 +857,7 @@ _desabr) o (chL04_ O _r) o (snL04_ O _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. + _g) o (zL04_ O _ad) o (çL03_ O _end) o (çL03_ O //endsort diff --git a/phsource/compile_report b/phsource/compile_report index 220f0353..2f62ec62 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -14,7 +14,7 @@ consonants 11 119 af 39 138 cy 29 134 ga 29 133 - de 41 141 + de 40 140 eo 13 116 jbo 2 116 nci 3 125 @@ -66,7 +66,7 @@ consonants 11 119 id 15 127 sq 33 127 hy 23 119 - da 46 139 + da 45 138 ka 20 115 fa 9 112 rw 15 132 @@ -448,9 +448,11 @@ l/l_ [l] base [l/] base [l/3] base [l/] fr + [l/3] da l/l_@ [l/3] base [l/] fr -l/l@ [¨ì,] base + [l/3] da +l/l@ [¨|8] base [l#] base [l] fr [l/2] fr @@ -484,7 +486,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨ì,] base +l/la [¨|8] base [l#] base [l] fr [l/2] fr @@ -492,7 +494,8 @@ l/la [ [K] tn l/l_a [l/3] base [l/] fr -l/le [¨ì,] base + [l/3] da +l/le [¨|8] base [l#] base [l] fr [l/2] fr @@ -500,11 +503,12 @@ l/le [ [K] tn l/l_e [l/3] base [l/] fr + [l/3] da l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨ì,] base +l/li [¨|8] base [l#] base [l] fr [l/2] fr @@ -514,22 +518,24 @@ l/li [ l/l_i [l/3] base [l/] fr [i] sq + [l/3] da ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨ì,] base +l/lo [¨|8] base [l#] base [l/2] fr [K] nso [K] tn l/l_o [l/3] base [l/] fr + [l/3] da l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨ì,] base +l/lu [¨|8] base [l#] base [l] fr [l/2] fr @@ -537,6 +543,7 @@ l/lu [ [K] tn l/l_u [l/3] base [l/] fr + [l/3] da l/l_vi [l] vi ll/xll [L] base l/l_y [l/] fr @@ -661,7 +668,6 @@ n/nu [n] base [n] fr [n#] is [n] zh -r/@_ [V#] de r2/r2@ [r-] en [r-] tn r2/r2a [r-] en @@ -708,9 +714,7 @@ r3/r_trill.wav [R2] base [r*] sr [r] ru r3/r_uvl [r"] base - [r2] de r3/r_uvl.wav [r"] base - [r2] de r3/rx [*] base [r/] base [r/] af @@ -770,8 +774,6 @@ r/ru [r] base r/tr [r] base r/trr [r/] base [r] ro -r/V_ [V#] de -r/V_2_ [V#] de r/xr [r] base [R3] base [r-] en @@ -1089,6 +1091,7 @@ vdiph2/i@ [i@] en-n [i@] ga [i@] hy vdiph2/i@_2 [i@] en-wm + [iR] de vdiph2/ie [i@] en-wi [ie] fi [ie] mt @@ -1633,8 +1636,6 @@ vowel/a_2 [a] base2 [a] pt-pt [a] ro [a] el - [a] da - [?a] da [a] rw vowel/a#_2 [A] nl [a:] nl @@ -1663,8 +1664,6 @@ vowel/a_3 [a] en-sc [a:] la [A] zh [a] sq - [A] da - [?A] da [a] ka [a:] si vowel/a#_3 [a#] en @@ -1712,6 +1711,8 @@ vowel/a_7 [a] fr [a] ht vowel/a_8 [a] en [a] sk + [A] da + [?A] da vowel/aa [a:] et [A] fr-ca [A] no diff --git a/phsource/ph_danish b/phsource/ph_danish index 5e9651b0..12a6aed7 100644 --- a/phsource/ph_danish +++ b/phsource/ph_danish @@ -1,3 +1,12 @@ +// PB General rules for vowels: +// Short vowels +// ACC: Short "pille" [p?el@-] +// AC[V]: Short "piler" [p?ilV] +// 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@-] +// AC[i]: Long "smidig" [smi:Di] phoneme @ vowel starttype #@ endtype #@ @@ -36,42 +45,42 @@ endphoneme phoneme i vowel starttype #i endtype #i - length 150 -// IfNextVowelAppend(;) -IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN - glstop - length 90 + length 90 //150 +// PB long vowel followed by consonant and certain vowels "gide" +IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN + length 150 +ENDIF +// "gider" TEST +IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN + length 90 +ENDIF +// PB long vowel followed by certain vowels - "pigen" [p'i@-n] +IF nextPhW(#@) OR nextPhW(#e) THEN + length 150 +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 90 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 -ENDIF -// "siden" -IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN - length 150 -ENDIF -// "lise" -IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN - length 150 -ENDIF -// PB "Bishop" -IF nextPhW(S) AND next2PhW(V) THEN - length 90 -ENDIF -// "pjækkeri", "røveri" -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN - length 90 -ENDIF -// "vilje" -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 90 ENDIF FMT(vowel/i_4) endphoneme -// PB Experimental glottal i +// PB short i // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i @@ -90,31 +99,11 @@ endphoneme phoneme e vowel starttype #e endtype #e - 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 90 //150 +// "delte", "mente" +IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) THEN length 150 ENDIF -// "delte", "mante", "evig" [evi] -IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN - length 150 -ENDIF -// "prinsen" - TEST -IF nextPhW(n) AND next2PhW(s) THEN - length 90 -ENDIF -// "slesk", "sleske" short vowel -IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN - length 90 - ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN - length 90 -// "skriften" - very broad: short before 2 consonants - ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN - length 90 -ENDIF // PB "ring", "ringe" IF nextPhW(N) THEN length 90 @@ -123,14 +112,18 @@ ENDIF IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 150 ENDIF -// "labyrinter" , "labyrinten" - short followed by 2 consonants +// 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 60 + length 90 ENDIF FMT(vowel/e) endphoneme -// PB glottal e +// PB short e // "skille" vs. "skele", "pille" vs. "pile" phoneme ?e vowel starttype #e endtype #e @@ -140,42 +133,43 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -// example? -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 50 -ENDIF + length 90 //150 // "værelse", "breve" IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN - length 150 +// length 150 ENDIF -// "fest", "feste" short vowel -IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN - length 90 - ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN - length 90 -// PB knægten - ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN - length 90 -// "femten", "tænker" - very broad: short before 2 consonants - ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN - length 90 -// PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li] - ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN - length 130 +// "ræve" +IF nextVowel(#@) OR nextVowel(#e) THEN + length 150 ENDIF // "ære", "kærester", "ærefrygt" - longer E IF nextPhW(V) THEN length 180 +ENDIF +// Only the letter "æ" - long +IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN + length 150 +ENDIF +// "stædig" [st'EDi] long +IF nextPhW(isNotVowel) AND next2PhW(i) THEN + length 150 +ENDIF +// "længe" - short - 2 consonants => 1 consonant +IF nextPhW(N) THEN + length 90 +ENDIF +// "værelse" [v'E3-Vls@_!] +IF nextPhW(3-) AND next2PhW(V) THEN + length 90 +ENDIF +// "mælkebøtte" - short followed by 2 consonants +IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN + length 90 ENDIF FMT(vowel/e_mid2) endphoneme -// PB Experimental glottal E +// PB short E // "læsse" vs. "læse" phoneme ?E vowel starttype #e endtype #e @@ -190,44 +184,42 @@ endphoneme phoneme & vowel starttype #e endtype #e - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -// PB "sable", "sabler", "anede", "David" -IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN + ipa a + length 90 //150 +// "same", "sale", "bade" - consonant + gooup #e or group #@: long +IF next2PhW(#@) OR next2PhW(#e) THEN length 150 ENDIF -// "stadig" [st&Di] -IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN - length 180 -// "stadigt" [st&Dit] - ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN - length 180 -// "latin" [l&t'in] - ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN - length 90 -ENDIF -// "ae", "aer", "dagen" vowel + vowel: extra length -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN +// ThisPh + gooup #e or group #@ +// "ae", "aer" vowel + vowel: extra length +IF nextPhW(#@) OR nextPhW(#e) THEN length 240 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 -ENDIF -// "Omaha" -IF thisPh(isWordEnd) THEN - length 90 ENDIF FMT(vowel/ee_2) endphoneme -// PB Experimental glottal a +// PB 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) @@ -237,7 +229,7 @@ endphoneme phoneme &# vowel starttype #e endtype #e length 120 - IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN +IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF @@ -255,76 +247,77 @@ phoneme ?&# FMT(vowel/&) endphoneme -phoneme a - vowel starttype #a endtype #a - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN - length 150 -ENDIF - FMT(vowel/a_2) -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 +// vowel starttype #a endtype #a +// length 90 +// FMT(vowel/a_2) +//endphoneme -phoneme A +phoneme A // PB changed to a_8 vowel starttype #a endtype #a - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN + 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) THEN +IF nextPhW(r) AND nextPhW(isWordEnd) THEN length 120 ENDIF - FMT(vowel/a_3) +// "bange" [bAN@-] - [N] = 2 consonants (ng) => short +IF nextPhW(N) THEN + length 90 +ENDIF + FMT(vowel/a_8) endphoneme -// PB glottal a +// PB short A // "drab" vs. "drabelig" phoneme ?A vowel starttype #a endtype #a length 90 -// "straffeattest", "straffe" - a bit longer after R -IF prevPhW(R) AND nextPhW(isNotVowel) THEN - length 120 +// "straffeattest", "straffe", "rapid" - a bit longer after R +IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN + length 110 ENDIF - FMT(vowel/a_3) + FMT(vowel/a_8) endphoneme phoneme u vowel starttype #u endtype #u - length 150 + length 90 //150 // Short vowel followed by consonant and NOT consonant + 3 or V or @ // "blus" vs. "bluse" and "bluser" IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 +// glstop +// length 90 ENDIF -// "hue", "suge", "uge" -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN +// "suge", "uge", bluse +IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN length 150 ENDIF // extra length followed by 3 or V or @ -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN - length 240 +IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN +// length 240 ENDIF // "umulig" 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 FMT(vowel/u_bck) endphoneme @@ -368,13 +361,13 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 150 -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 + length 90 // 150 +// PB "sove", "sover" - consonant + #e or #@: long +IF next2PhW(#@) OR next2PhW(#e) THEN + length 150 ENDIF -// PB "gået" -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN +// PB "gået" - ThisPh + #e or #@ +IF nextPhW(#e) OR nextPhW(#@) THEN length 150 ENDIF // "rådig" @@ -418,7 +411,7 @@ ENDIF FMT(vowel/V_4) endphoneme -// PB Glottal (short) å +// PB Short å // "forstår" vs. "kåre" phoneme ?V vowel starttype #@ endtype #@ @@ -448,35 +441,31 @@ endphoneme phoneme y vowel starttype #i endtype #i -// experiment: changed to short from 150 - length 150 -// Short vowel followed by consonant and NOT consonant + 3 or V -// "lyd" vs. "lyde" and "lyder" -IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN - glstop - length 90 +// Length changed to short since most vowels are short. +// It's probably easier only to make rules for long vowels. + length 90 //150 + +// PB long vowel followed by consonant and certain vowels +// "lyde", "lyder" +IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN + length 150 ENDIF -// "syg" [sy] -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN - length 90 -ENDIF -// "skyd" -IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN - length 90 +// Only this vowel (in this case [y]) +IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN + length 150 ENDIF // "dydig" [dyDi] -IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN +IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 150 ENDIF // "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN - length 220 +IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN + length 200 ENDIF -// PB "kryster" - short y -IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN - length 80 +// "tyve" +IF nextPhW(?u) AND next2PhW(@-) THEN + length 150 ENDIF -// PB "gryden" FMT(vowel/y) endphoneme @@ -484,7 +473,7 @@ endphoneme // "kylling" vs. "kyle", "krybbe" vs. "krybe" phoneme ?y vowel starttype #i endtype #i - length 70 + length 90 FMT(vowel/y) endphoneme @@ -503,24 +492,19 @@ endphoneme phoneme W vowel starttype #@ endtype #@ - length 160 -// Shorter vowel when followed by consonant -IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN - glstop - length 90 -ENDIF + length 99 //160 // "kløe" vowel + vowel: extra length -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN +IF nextPhW(#@) OR nextPhW(#e) THEN length 220 ENDIF -// "klø" short W when word ends with W -IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN - length 90 -ENDIF // røde" W + 1 consonant + 3 or W or @ -IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN +IF next2PhW(#@) OR next2PhW(#e) THEN length 160 ENDIF +// "røveri" TEST +IF next2PhW(V) OR next2PhW(?V) THEN + length 90 +ENDIF // PB "nødig", "nødigt", "kølige" IF nextVowel(i) THEN length 160 @@ -536,7 +520,7 @@ ENDIF FMT(vowel/oe) endphoneme -// PB glottal W +// PB short W // "prøv" vs. "prøve" phoneme ?W vowel starttype #@ endtype #@ @@ -547,12 +531,13 @@ endphoneme // PB added for the ø in "røv", "røg", "øje" instead of [V3] phoneme W# vowel starttype #@ endtype #@ - length 150 + length 90 //150 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop - length 90 +// length 90 ENDIF -IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN +// 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 ENDIF FMT(vowel/V) @@ -573,12 +558,17 @@ IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) glstop length 150 ENDIF +// "dreje" [dR'aI@-_!] IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN - length 300 + length 280 ENDIF // PB "drej" vs. "dreje" IF thisPh(isWordEnd) THEN length 140 +ENDIF +// "lejde" [l'aId@-_!], "lejder" [l'aIdV_!] +IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN + length 190 ENDIF FMT(vdiph/ai) endphoneme @@ -591,7 +581,31 @@ phoneme l liquid lengthmod 7 ChangePhoneme(l/3) - CALL base/l +// CALL base/l +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) + VowelEnding(l/l_e, -40) + VowelEnding(l/l_i, -70) + VowelEnding(l/l_o) + VowelEnding(l/l_u, -70) + EndSwitch + +// IF nextPh(isLiquid) THEN +// FMT(l/_l) +// ENDIF + + FMT(l/l_) endphoneme phoneme v // approximant, not fricative @@ -604,7 +618,7 @@ phoneme r // used for 'r' after a vowel (to create a diphthong) liquid lengthmod 7 ipa ɐ̯ - IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN + IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN ChangePhoneme(R) ENDIF FMT(r/a_) @@ -663,6 +677,10 @@ phoneme t IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN WAV(ustop/tr) ENDIF +// "respekt" [REsp'Egd] + IF thisPh(isWordEnd) THEN +// ChangePhoneme(d) + ENDIF WAV(ustop/t, 90) endphoneme @@ -674,7 +692,7 @@ phoneme j NextVowelStarts VowelStart(j/j@) VowelStart(j/ja) - VowelStart(j/je,-40) + VowelStart(j/je,-35) VowelStart(j/ji) VowelStart(j/jo) VowelStart(j/ju) diff --git a/phsource/ph_german b/phsource/ph_german index e034e565..1e1e1b73 100755 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -97,11 +97,8 @@ phoneme U length 135 ENDIF - IF nextPh(r) THEN - IF next2Ph(isVowel) THEN - ELSE - ChangePhoneme(UR) - ENDIF + IF nextPh(r) AND next2Ph(isNotVowel) THEN + ChangePhoneme(UR) ENDIF FMT(vowel/uu_2) endphoneme @@ -128,6 +125,10 @@ phoneme i: IF prevPh(w) THEN VowelStart(w/wi2) ENDIF + + IF nextPh(r) AND next2Ph(isNotVowel) THEN + ChangePhoneme(iR) + ENDIF FMT(vowel/i_2) endphoneme @@ -341,41 +342,12 @@ endphoneme -// This version of [r] was used in eSpeak 1.44, but received complaints -phoneme r2 // uvular trill or fricative - vcd uvl frc - ipa ʀ - lengthmod 6 - length 110 - IF nextPhW(isVowel) THEN - FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50) - ELSE - IF prevPh(isFlag1) THEN - ChangePhoneme(NULL) // 'r' is already included in the previous vowel - ELSE - ChangePhoneme(V#) - ENDIF - ENDIF -endphoneme - - - - -phoneme V# // used for 'r' after a vowel (to create a diphthong) - liquid - lengthmod 7 - IF nextPhW(isVowel) THEN - ChangePhoneme(r) - ENDIF - - ipa ɐ - IF prevPh(#a) OR prevPh(E) THEN - FMT(r/V_2_) - ENDIF - IF prevPh(#u) THEN - FMT(r/@_) - ENDIF - FMT(r/V_) +phoneme iR + vowel starttype #i endtype #@ + ipa iɐ + flag1 + length 180 + FMT(vdiph2/i@_2) endphoneme diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 53bc3866..938d61a4 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.46.42 +AppVerName=eSpeak version 1.46.47 AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). WindowVisible=yes @@ -149,29 +149,34 @@ begin $1c: Result := 'sq'; $1d: Result := 'sv'; $1f: Result := 'tr'; + //$20: Result := 'ur'; $21: Result := 'id'; $25: Result := 'et'; - //$26: Result := 'lv'; + $26: Result := 'lv'; $27: Result := 'lt'; + $29: Result := 'fa'; $2a: Result := 'vi'; $2b: Result := 'hy'; //$2c: Result := 'az'; //$2d: Result := 'eu'; $2f: Result := 'mk'; $36: Result := 'af'; + $37: Result := 'kn'; $39: Result := 'hi'; //$3a: Result := 'mt'; - //$3c: Result := 'ga'; + $3c: Result := 'ga'; //$3f: Result := 'kk'; $41: Result := 'sw'; //$44: Result := 'tt'; + $46: Result := 'pa'; $49: Result := 'ta'; $46: Result := 'pa'; $4b: Result := 'kn'; + $4c: Result := 'ml'; //$50: Result := 'mn'; $52: Result := 'cy'; //$5e: Result := 'am'; - //$61: Result := 'ne'; + $61: Result := 'ne'; //$87: Result := 'rw'; //$88: Result := 'wo'; end; diff --git a/platforms/windows/windows_sapi/ttsengobj.cpp b/platforms/windows/windows_sapi/ttsengobj.cpp index f79e6d61..a2d2b4cc 100755 --- a/platforms/windows/windows_sapi/ttsengobj.cpp +++ b/platforms/windows/windows_sapi/ttsengobj.cpp @@ -618,7 +618,7 @@ int CTTSEngObj::ProcessFragList(const SPVTEXTFRAG* pTextFragList, wchar_t *pW_st sprintf(&cmdbuf[len],"%c%dF",CTRL_EMBEDDED,emphasis); len += strlen(&cmdbuf[len]); } - if(sayas != gSayas) + if((sayas != gSayas) || (sayas != 0)) { sprintf(&cmdbuf[len],"%c%dY",CTRL_EMBEDDED,sayas); len += strlen(&cmdbuf[len]); diff --git a/src/Makefile.espeakedit b/src/Makefile.espeakedit index 281fbaf5..584f2c0a 100644 --- a/src/Makefile.espeakedit +++ b/src/Makefile.espeakedit @@ -10,17 +10,17 @@ SRCS= compiledata.cpp compiledict.cpp debug.cpp dictionary.cpp espeak_command.cp OBJS=$(patsubst %.cpp,%.o,$(SRCS)) -WX_LIBS = -pthread -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 \ - -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 +WX_LIBS = -pthread `wx-config --libs` LIBS=-lstdc++ -lportaudio +#LIBS=-lstdc++ /usr/lib/x86_64-linux-gnu/libportaudio.so.2 -CPPFLAGS = -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 +CPPFLAGS = -Wall -g -fexceptions `wx-config --cflags` -I/usr/include/wx-2.8 \ -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT -CXXFLAGS = -O2 -Wall -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 \ +CXXFLAGS = -O2 -Wall -fexceptions `wx-config --cflags` \ -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT all: espeakedit diff --git a/src/numbers.cpp b/src/numbers.cpp index 2a0d688f..f13eb747 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -586,6 +586,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) // return number of bytes used by the letter // control bit 0: a non-initial letter in a word // bit 1: say 'capital' +// bit 2: say character code for unknown letters int n_bytes; int letter; @@ -743,7 +744,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) } } - if(!(control & 2) && (al_flags & AL_NOT_CODE)) + if(!(control & 4) && (al_flags & AL_NOT_CODE)) { // don't speak the character code number, unless we want full details of this character speak_letter_number = 0; diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index fa1d0439..c4114d72 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -339,7 +339,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) ph = phoneme_tab[plist3->phcode]; plist3[0].ph = ph; - if(plist3->phcode == phonSWITCH) + if((plist3->phcode == phonSWITCH) && !(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ?? { if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) continue; // next phoneme is also a phonSWITCH, so ignore diff --git a/src/speech.h b/src/speech.h index 876028bf..23fc7242 100644 --- a/src/speech.h +++ b/src/speech.h @@ -51,7 +51,7 @@ #endif #ifdef _ESPEAKEDIT -//#define USE_PORTAUDIO +#define USE_PORTAUDIO #define USE_ASYNC #define LOG_FRAMES // write keyframe info to log-espeakedit #endif diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 97e68999..97cb1aa2 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.46 11.Mar.13"; +const char *version_string = "1.46.47 12.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index f890aee9..a2c68ca5 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -70,6 +70,7 @@ #define OFFSET_ETHIOPIC 0x1200 +// character ranges must be listed in ascending order ALPHABET alphabets [] = { {"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS}, {"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0}, @@ -97,6 +98,7 @@ ALPHABET alphabets [] = { {"_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}, {NULL, 0, 0, 0, 0, 0} }; @@ -108,9 +110,12 @@ ALPHABET *AlphabetFromChar(int c) while(alphabet->name != NULL) { - if((c >= alphabet->range_min) && (c <= alphabet->range_max)) + if(c <= alphabet->range_max) { - return(alphabet); + if(c >= alphabet->range_min) + return(alphabet); + else + break; } alphabet++; } @@ -827,6 +832,7 @@ Translator *SelectTranslator(const char *name) case L('h','i'): // Hindi case L('n','e'): // Nepali case L('p','a'): // Punjabi + case L('g','u'): // Gujarati { static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 }; @@ -1543,7 +1549,7 @@ SetLengthMods(tr,3); // all equal 0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3, // ơ 0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5, // u 0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1, // ư - 0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1e, 0 }; // y + 0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1ef5, 0 }; // y SetupTranslator(tr,stress_lengths_vi,stress_amps_vi); tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable diff --git a/src/translate.cpp b/src/translate.cpp index d9832653..069fc255 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -633,8 +633,10 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int capitals = 0; int non_initial = 0; - if (spell_word > 2) - capitals = 2; + if(spell_word > 2) + capitals = 2; // speak 'capital' + if(spell_word > 1) + capitals |= 4; // speak charater code for unknown letters while((*word != ' ') && (*word != 0)) { @@ -1109,7 +1111,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt // change to another language in order to translate this word strcpy(word_phonemes,unpron_phonemes); if(strcmp(&unpron_phonemes[1],"en")==0) - return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules + return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_ return(0); } @@ -1774,6 +1776,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa word_flags = wtab[0].flags; if(word_flags & FLAG_EMBEDDED) { + wtab[0].flags &= ~FLAG_EMBEDDED; // clear it in case we call TranslateWord2() again for the same word embedded_flag = SFLAG_EMBEDDED; Word_EmbeddedCmd(); @@ -2121,7 +2124,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa { ph_list2[n_ph_list2].phcode = ph_code; ph_list2[n_ph_list2].sourceix = 0; - ph_list2[n_ph_list2].synthflags = embedded_flag; + ph_list2[n_ph_list2].synthflags = 0; ph_list2[n_ph_list2++].tone_ph = *p; SelectPhonemeTable(*p); p++; diff --git a/src/translate.h b/src/translate.h index 22129304..e7460443 100644 --- a/src/translate.h +++ b/src/translate.h @@ -23,7 +23,7 @@ #define CTRL_EMBEDDED 0x01 // control character at the start of an embedded command #define REPLACED_E 'E' // 'e' replaced by silent e -#define N_WORD_PHONEMES 160 // max phonemes in a word +#define N_WORD_PHONEMES 200 // max phonemes in a word #define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word #define N_CLAUSE_WORDS 300 // max words in a clause #define N_RULE_GROUP2 120 // max num of two-letter rule chains From 82d47f803e8678a84ccaa567f76573ac2bd0c540 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Wed, 13 Mar 2013 16:30:43 +0000 Subject: [PATCH 21/24] 1.46.47 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/ur_list | 64 +++++++- dictsource/ur_rules | 145 ++++++++++++++++++ espeak-data/voices/europe/ga | 3 +- phsource/r/V_ | Bin 5632 -> 0 bytes phsource/r/V_2_ | Bin 5634 -> 0 bytes phsource/vdiph2/i@_3 | Bin 0 -> 9041 bytes platforms/windows/espeakedit/src/speech.h | 2 +- .../windows/espeakedit/src_copy/speech.h | 2 +- 8 files changed, 205 insertions(+), 11 deletions(-) delete mode 100644 phsource/r/V_ delete mode 100644 phsource/r/V_2_ create mode 100644 phsource/vdiph2/i@_3 diff --git a/dictsource/ur_list b/dictsource/ur_list index 1190e7d5..326ec13c 100644 --- a/dictsource/ur_list +++ b/dictsource/ur_list @@ -49,6 +49,8 @@ َ z@b@R ِ ze:R ُ pe:S +ّ t,aSd'i:d +ً d'o:zab'aR // The numbers @@ -220,9 +222,6 @@ _dpt _ISaRI'Ia_ اعلان e:l'a:n سنئیے sUn'i:;e: کلنگ k'IlIn,g -انتقال ,Intaq'a:l -انتقام ,Intaq'a:m -انتخاب ,Intax'a:b چیف c'i:f جسٹس J'ast.,Is شکایت S,Ika:j'at @@ -245,7 +244,6 @@ _dpt _ISaRI'Ia_ دنوں dIn'o:n مصر m'Is.R مصری m'Is.R,i: -انتظام ,IntIz.'a:m مختصر m,Uxtas.'aR پھر p#'IR پھرا p#'IRa: @@ -303,6 +301,58 @@ _dpt _ISaRI'Ia_ حاصل H'a:s.Il شدہ S'Ud,a بغیر baQ'e:R -امیدوار Um'i:dva:R -لکھ l'Ik# -لکھئیے l'Ik#j,e: +ممکن m'Umk,In +ممکنہ m'Unk,In,a +طرح taR'aH +الیکشن ,Ile:kS'an +ووٹنگ vo:t.'Ing +شواہد Sav'a:HId +محض me:He:z +حزب H'Izb +مخالف mUx'a:lIf +استعمال ,Iste:m'a:l +مخالفت m,Uxa:lIf'at +مخالفین m,Uxa:lIf'i:n +عشق 'ISq +عمدہ 'Umda +مارچ m'a:Rc +چرچ c'aRc +دہشت d'e:HS'at +وحشت v,e:HS'at +درست d'URUst +صحت s.e:H'at +فلم f'Ilm +فلمی f'Ilm,i: +مسلسل m,Usals'al +تسلسل tas'als,Ul +تشدد taS'adUd +پرتشدد p,URtaS'adUd +حجوم HUJ'u:m +پرحجوم p,URHUJ'u:m +تحفظ taH'afUz. +تحفظات t,aHafUz.'a:t +حفاظت H,Ifa:z.'at +ہمت HIm'at +سمیت sam'e:t +اگرچہ ,agaRc'e:H +بلکہ b,alk'e:H +حصہ H'Is.,a +حصے H'Is.e: +حصوں HIs.'o:n +حساب HIs'a:b +ہوئیں Hu:'i:n +ہوئی H'u:i: +ہوئے H'u:e: +اندسٹری ,Ind.'ast.Ri: +بخود b'axUd +تعین 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 diff --git a/dictsource/ur_rules b/dictsource/ur_rules index 0159a8e9..e128c6e2 100644 --- a/dictsource/ur_rules +++ b/dictsource/ur_rules @@ -15,6 +15,7 @@ ٧ 7 ٨ 8 ٩ 9 +ي ی @@ -54,6 +55,32 @@ _) او u: _) ای e: ائ a:j اہ(_ a:H + _) اتن 'Itn + _) اتر Ut'aR + _) اتر (L01 UtR + _) الٹ Ul'at. + _) الٹ (L01 Ult. + _) الجھ Ul'aJh + _) الجھ (L01 UlJh + _) ابھر Ubh'aR + _) ابھر (L01 UbhR + _) اچھل Uch'al + _) اچھل (L01 Uchl + _) اجڑ UJ'ar. + _) اجڑ (L01 UJr. + افتتاح ,ItIt'a:H + اسلام ,Isl'a:m + _) انسان Ins'a:n + _) انت 'Int,a + _) امید Um'i:d + اً(_ 'an + _) امکان ,Imk'a:n + _) افسر ,afs'aR + _) اتفاق ,ItIf'a:q + _) ابتدا 'Ibt,Ida: + _) ایمان i:m'a:n + _) اعت 'e:tI + _) اضاف Iz'a:f .group آ آ a: @@ -63,6 +90,7 @@ _) ای e: ع a: عا a: _) ع a + _) عیس 'i:s .group و @@ -72,6 +100,8 @@ _) ای e: و (L01 v _) و vV وع (_ u: + وّ vv + .group ی ی e: @@ -81,6 +111,8 @@ _) ای e: یع(_ i: @) ی i: یں(_ e:n + یّ jj + @) یت(_ j'at .group ے // yeh barree ے e: @@ -103,12 +135,31 @@ _) ای e: بھ b#V بھ (L01 b# ب (L01 b + بّ bbV + بّ (L01 bb + _) بگڑ bIg'ar. + _) بگڑ (L01 b'Igr. + _) بکھر bIkh'aR + _) بکھر (L01 b'IkhR + _) بچھڑ bIch'ar. + _) بچھڑ (L01 bIchr. + _) بجھ b'UJh + بھوک bh'u:k + بھیک bh'i:k + بھیگ bh'i:g + بھول bh'u:l + .group پ پ pV پھ p#V پ (L01 p پھ (L01 p# + پّ ppV + پّ (L01 pp + _) پھر ph'IR + پھول ph'u:l + _) پہل (L01 p'e:Hl .group ت @@ -116,22 +167,35 @@ _) ای e: تھ t#V ت (L01 t تھ (L01 t# + تّ ttV + تّ (L01 tt + .group ٹ ٹ t.V ٹھ t.#V ٹ (L01 t. ٹھ (L01 t.# + ٹّ t.t.V + ٹّ (L01 t.t. + .group ث ث sV ث (L01 s + ثّ ssV + ثّ (L01 ss + .group ج ج JV جھ J#V ج (L01 J جھ (L01 J# + جّ JJV + جّ (L01 JJ + _) جیت J'i:t + _) جوا J'ava: .group چ @@ -139,43 +203,71 @@ _) ای e: چھ c#V چ (L01 c چھ (L01 c# + چّ ccV + چّ (L01 cc + .group ح ح HV ح (L01 H ح (_ H + حّ HHV + حّ (L01 HH + + .group خ خ xV خ (L01 x خت(_ xt + خّ xxV + خّ (L01 xx + _) خوش x'US + _) خود x'Ud + _) خواہش xv'a:HIS + .group د د dV دھ d#V د (L01 d دھ (L01 d# + دّ ddV + دّ (L01 dd + .group ڈ ڈ d.V ڈھ d.#V ڈ (L01 d. ڈھ (L01 d.# + ڈّ d.d.V + ڈّ (L01 d.d. .group ذ ذ DV ذ (L01 D + ذّ DDV + ذّ (L01 DD .group ر ر RV ر (L01 R + رّ RRV + رّ (l01 RR .group ڑ ڑ r.V ڑ (L01 r. + ڑّ r.r.V + ڑّ (L01 r.r. + ڑھ r.hV + ڑھ (L01 r.h .group ز ز zV ز (L01 z + زّ zzV + زّ (L01 zz .group ژ ژ ZV @@ -184,60 +276,98 @@ _) ای e: .group س س sV س (L01 s + سّ ssV + سّ (L01 ss + _) سرخ s'URx + _) سن (L01 s'Un + _) سلجھ sUl'aJh + _) سلجھ (L01 sUlJh + _) سدھر sUdh'aR + _) سدھر (L01 sUdhR .group ش ش SV ش (L01 S + شّ SSV + شّ (L01 SS .group ص ص s.V ص (L01 s. + صّ ssV + صّ (L01 ss .group ض ض zV ض (L01 z + ضّ zzv + ضّ (L01 zz .group ط ط tV طھ t#V ط (L01 t طھ (L01 t# + طّ ttV + طّ (L01 tt .group ظ ظ z.V ظ (L01 z. + ظّ z.z.V + ظّ (L01 z.z. .group غ غ QV غ (L01 Q + غّ QQV + غّ (L01 QQ .group ف ف fV ف (L01 f + فّ ffV + فّ (L01 ff .group ق ق qV ق (L01 q + قّ qqV + قّ (L01 qq .group ک ک kV کھ k#V ک (L01 k کھ (L01 k# + کّ kkV + کّ (L01 kk + _) کتن k'Itn .group گ گ gV گھ g#V گ (L01 g گھ (L01 g# + گّ ggV + گّ (L01 gg + _) گرفت g'IRIft + _) گزر gUz'aR + _) گزر (L01 gUzR .group ل ل lV ل (L01 l + لّ llV + لّ (L01 ll + لکھ l'Ik# .group م م mV م (L01 m + مّ mmV + مّ (L01 mm + _) مشکل m'USk,Il .group ن ن nV @@ -246,6 +376,13 @@ _) ای e: @) ن (د n @) ن (ب n @) ن (س n + نّ nnV + نّ (L01 nn + _) نکل nIk'al + _) نکل (L01 nIkl + @) ن (چ n + _) نکال nIk'a:l + _) نگاہ nIg'a:H .group ں ں n // this should nasalize the vowel @@ -258,9 +395,17 @@ _) ای e: _) ہ Ha _) ہ (L01 H _) ہ (ند HI + ہّ HHV + ہّ (L01 HH ہ (_ a +.group ّ + ّ + +.group ً + ً + // Common symbols diff --git a/espeak-data/voices/europe/ga b/espeak-data/voices/europe/ga index 5a158638..27e5f8b9 100644 --- a/espeak-data/voices/europe/ga +++ b/espeak-data/voices/europe/ga @@ -1,5 +1,4 @@ name Irish Gaeilge language ga - - +dictrules 1 // fix for eclipsis diff --git a/phsource/r/V_ b/phsource/r/V_ deleted file mode 100644 index 349d2b7892f022eaa5b5b5d7bacb348e7f45183d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeI0d3e;+`p45ua*~r|lAI(n)5*+q)~-NlOFP}$>B_$E#Rd8U!3v^mqJp$V1!R$Z zQAGAd3MfSpC;~;ci&$lmMJ^PmVigNj@PZ({r&Iy)dG6z1zrReLBxk;7&3WeipX8> z|D4YQ){OP3>ysTxH~oJ9k%Y2@PZL!CB7gftDrr*En@N`vhx^;auZ%qyeWO`nWOR5@ zDDs)Sy*(egP3~u06;9-QKBU@F;5cV5vfs76V{2nG*sAmm`rG<^eIdRt(x>aA^p3h) zH|S7rryti>+RE%_9d75-t`+VI&r+}7H`wR(4fLjZDqSJY;f}+$41Irae~V)NQB$bt5%tJfrR56i0HI;+Fxv){DOcKqOIa2#-CI)>Q?+H&>g)`Z}}mP&K7xzg0rbX9v( zOVVo973x4WQoW{psJy78DWq})Ek)zeVDuy!gvOv5Xbswlj-X?x3hhOk&>~cVhN6C` zBg#TaC>psDLchu1$;ahA@7nS#dGsE71@%U)kP%&!H_PMXEV)72Dh-iL(k}67(Ig%) z78`Sn$XF{J5Y`D(g(4wWunIr$JNW7RAU>au=VSO(zAHbRf0N(9@8i$%*Lg)q6b1;B zg;m1)!fM=SppYbp!uR|a{3m=lzY(A1{Kx!OejPuR@5ej&i`)ioGWQZUkz34Fa3{GM z?mTyx+r-V|Ugb)-H*xK0PUPG06Z!4@6%e8+Vc0 z$F1aE;d*e9To88=R>8yYD|iJ$E{sd(+HsxmmB;09`CJ!n0QUknoqLyCgL};5Ugr96 zF&xdEhVR3v@LAXwc7h#XSJ)3e1&71Y_*j? z6xbh@z<1%tc+MJl0}>p?-GR06AbbZF!9>Wx%eY4cyOy274rTM%P*!EFY#RGAR>R;( zxDM`zN8kZi0Y8G<;ZaC(?eV%uzJOoN*YXjYHy-nZWPZToYj`2F_bJw1hYw49sIjpjOYPVV2Z6iV=QHuL75 zs8jdsFF-G=e6y)UHBzDRc$hF0k=7*Q`xitp|1DW&Xd+BFIgl7j5^5=CMH69y!DEC* z2dwernV=@ZjAj=TcUVHI4yq1n;>iqSVNf4|5FaQluhLJ$$&t`8~yi!d9wpTd?T{5zv-?pOIqtyA*H8*9K&OVLxb#XgAYdu#y^`70H&YsuYom`tkj@vKk(E7OLThj_{n);UV8FHX0GL#oc(b7S2 zkVuM4jTy%C!bG8&aGIaZ_r+FgA88A<_Sy+GPhGEAl_e+} zv8Yb|UapgWkWb1V$m8WaS(ML8?@Lppr=-?WGf9+w6!(g=!~!u=-u#3zLMWF*{xmmIx;Vld-FDoN>DG6=Qd!*?3f#i|ZZ}o)zW^mBP2ee}o%C4JOoL zp`Y+8KaxMp*|;e%6{f=%;4WB?t??SRsco^&SLwp4a`L53g`!J(_hg?>0|T}dKbNsUPW)957W2lIPesh3$}yv05FNnaOOSc zJj1YNmShhy&oU%46^LL4Ezt|91nQ>Yh9Q=kN0IaZdL8{W?k$2~-~cY*1I+oEw=ps6SHq$C?rFr^mY6&%tnonJ%V(6}PH2yu4DyBB#@%qqj(39xL zu@+7j&|7IIm;jCf7c-jqipgMCvlQ$Or^630QOaO3On`^jM0OlA2b9v!QB{U2!!bjN zVLN$-s3Ch$lj*r&4C7_zv4`2Cm}(0!qY~K5jbi}@0Q#t*JNbH0F}atVPx{F*WM4xz zWx+c$9DD;}nI235(}D3bHs&rk2P(ikygw1(EBa~r8!GeG{(?UD$Pu8I&V9M5L@mAd z{JVtdKn{L{FdmTk2w{rQzBpe3t<`>9wkge!=r?0X!!etdC6NH6_cTt{M%|}J*;hxa3UZ=_{7jto}JEN z_7E#!PF63-x5bghNZ}TD7*1znn78Sfh6=Kl8V)uxmFz}1jQfr2&#&T7^FWBjw)vV+ zCVVOUEU3n0e@*SM#-AK@GLOCJp* zv5j=Y-^G2<%nji_;J(FQUz)Gyj&Mu4=ePhTa%bRb%!@8C7OL<&b_JWtZekF&_9wt> zPy<4k7{<#8ECLdeT=U_jm2YE~xgV;iBmCMi`fx}=6 zE_DK4&=e5 zWLQltFceTP(HUSf_!*d)NTvm2WxfY1KsP{v3VIZ+)5|C$wc1c;SWdO3H`B-IHFOxA zL+vFUq>FlrZV%1?6Z0E*7i8Y9{jRi$EB6WWJ6`bPVIPJdV((W}A z_?k@a_}zzTB+OWvAl!z#h9)1TkuVV)K|JtJ8VRErA66O(vkAvd584n!L&IoWlk$hh za*r@X4EeyTX(SBskn+ELn12ZK4`Kcx%>OH4?vzHA-y=tWew%jQXGl}w&xA?5U;F1M z>50GiFu@=n`!GcCgD5G3UC)5iS)Nv z5xX;?ck&l$MS*2Glk#TeeV@}J>stDhl+eWbR+iW`(X*Rxk76UogtKA0d^5aHcy#v; zXS|mJEaXx{yf1McOg2xxhX0!qB!h|uh^UJ33l_Y=FXiVqBGl-=vnQ{4L=n5W3y*k zsL|Ce3@tuuHYutwa!ACS@RMOtVI`p_d>-Er??%r}cYAl4OLxt4I-HwA+J{_qEONAQ z+_7)9zhuv~tM+Q!YFnXAx1HA4>kIU^^fG;?z5|!C^)lhc`EK-WKJ^wYT9Oc(UfBPMO&+N(dyJ` zYJz%GsZj{Ejar7scwQ^lPHN}0DjdHp)~0CVv=Q1st+N)RLG7HnMV+aRRfnrDs`J!O z)N85_&plFm4WDDQ0xdxkv`cD*xxG$r$ z#o4ND$|VR+1uXaXMp9kc!st;r_v5-qqI;O zE#*n9R3Y{kuj2^xj!=U0Uq^BNstV`1M&hWmxA9YBnD~lVB|4;GxR*QV_jS6m?|X59{y?CDD4VFDZBZ$*$i4_7 z`yyqLq6iczMYb2Q$RdlpP@sxMEL6c41nKXVYOQ$A@4SEg{xUg9p84K2_ssLjeV$(3 zbFzB(>Jd#51kv}|=x1qS2)0@tK6>Ml_gV_r_UTGfUwW+V@*|pCc!?uet0U{k0r)w9 z*zY$TUj%W-?~Y#{R`LipIEOES2qJ^X8CaP?6tm^{YEmd%m-4F@XA$)xLG&m4lT8Xj zmuQ3tqMR)MUBOL>JC-Kp&f^gpm5BjQDj}YhN^)bR$4AH?M)R}A2!nUU>`0}v+U0n1 z24#KeGpB7z-jrxhxEB`}cRaQ<_VZXZZb@9Hcq(CP!n+CA;z!4|k69CSB;szX{LqNt zf1|Nb{SmHJIfu&@lrswJZP(J54g4xp`Q2`WM( z(LmG%WuOEUfm{fo-{kM*)AD|Ki@ZplD0i0~a-DQg+9a)#)=S%^&!m4z=cRhdD0h-) z%h%;jXeSC##wZ(<{Yr&Ws!UaSD;DK4`VhU2`k}T+kFLtwGj z!9t0!R@f%2!)=BL34$ox;7{;z4((|0ix96wuyZM{ECPd>obP#+(m;i-peg|K|Kg%ca7XCNx zDtC}u!@bV+=0Z6??kcQ;$KcoSCWKrNm&$eIy5cK`%i?mm?%ZJRWo{<-0kpp94E%|`%znx4XZNuC*ss_+ zR)I-y5G;Zpz)$g*HSjJZIEs4+YvB?2J}iLokb~E8i*j}YJBuC3=CXmT%9_~}_BE^q z!Le{7JOq!!!>}BF0(ZlckmNeyd69e`zmBivLxf?%2H{)5U!Sb+r0=MY(@Xku!eSv0 zuYq2m1P0$Ffflagl^w~O`Ga`f`r)@7#1-TBJBZix9A42fZXq|G>&7{_f5T!Z!MEA; zd;7!AJ@!8zy|VJ%CW~sMLgUerFccBrB;tEDQNby??{rOs2_}aS)nuWegxpQ$;?g|A zA3Q~b(1arBZs?i_GoD>WbcTgewO_Sg6HjL8^ZiZ;g#J&Zjhsc6h!xzQ3PEJBn`1~TtKNW%q@eFFAL^sbfyxIE0*v$PDv^@6TX+5&P&P`~Slsh52SEkWd zpUS1YnB>8n857?*{%pK0@nKR%>aO&d%rV*ixrcHyb7y3q$;eCVndBE&8TBCim$1)5 zyusChd%TN1b%og)Ce`KyOU$JD^KC;^#bDgc- zoYxmr6|%n7#)wT(MKO=!ZY5|*)})GrN3q`Mqu~of$)HeAt&?^1w;#3+umqah`Cl~s zVw&r}$b89?ZQE++9l6f#E{A)A`=-0zUE%KLe#_O>xjo>t?V1IepEiAGSgp-a-&4Lo zb~H_f@**ihIwB4gNpXcfO@CRKBD50D^KQ5N;dyupWEkZR}IKU>V#GFTvlS!f70VeSJMH z?+H_28|cRV@C$p6{gj=<_GcTIDa=hU5Ims2rcctR=;QQ0dJDal-b^2(AJEa@IWQmW z2A2U~;+fIRhs6Yh6t#dN>B00y`WxI@1pdGd zoWKiOgLse$I)iSY9f$-fctqFXvDVTBbS!P8RoYDR^f%OUY7(`Ox=KaTJ?IGhdp1=_ zZNdHZr{AHc(obV8n9iej(hl$jI0>B0c;;&+ja|o5uos*OKf**Qg@rH{9%bX%Nz6P@ zOutA~>8f<6bVa(|`j%>^T7nh!!BTtu_rOr7GXxkvez5?0t^83NnJ1UZNEbD z0J)HiBPWmpbeWV1ugqxhEr?=zGkHvBCXTT(kH95R4i@0`2?1ZzBj|6b^!tbM`agC* zAH8D!YfTol;_>spB}`{>*b{_tgY+i|Q}{Q+jMQHs{z{l4`PSbE)6noFVHz5qBuqoY ze@~cKJ=I~6v0GBwX7tOtk~KMNUgq$O6klfg%W11p$E8#zeUfl7&M&Sa&Xu?-Ww~!c z_WE{bI$ZAfRmXiDK5REXd$I39vN^s_G#~Ls*x}#JJTI7;78j7YnJtl zWuJwx7Fx}=Qd_uvlf7d=8^=rnR`;8mK zujSA4K#0P=`Ib;Bd?oxWsQN_xOZqDPV6m0tlA}>i*v+)Y^qwin^uDpi z5NTMd#b|fcDs{73sQT0&lp+Nv#i&7^AxF!1q~n+y^Q6(38*T|oq@QbG7gytcJIto=f50;7)U~`~v(f4Hnu9?F6@Q4)0lR zb0fGP;XC+C9|1$LkMzXf#e>ku4d*`MzQbQ%ny=@Mb1S$PIUgr-7vMU~i|#NAs_=Vu zHJi+CWf1oEXTV%g0|J;x#=-mtRDfcT0sO#0dIsH>4#Qp?LU*NK!`^>}ra&qv0Y89e zne$8+b~{VJwy*=tf?imMJ+=pXmwAuL#a{F!I0WiJ4pYh?HXnQCDt0>ChvnFv%rGW^ zIS=N5H1G{Ql)gZvQ|omZx;DBf9if{;CXrjnKDx8I2x=gePvufPwNuwe_cK{at|hON z-E~KG9jK#}4>RUAZ3p2X2p9ka958}VJhSc~AB+Qqpa|c412?!#&!aoj9=a8sPj91j zpbMUR8Tc1C26kYpEAW6;;05pnX3kSgF|&wS!K`GKGP9W?W(+fg>BD3*5sZnU@%zw> zjY(npF?|^ivjLM~9koc8N4-j?f$iXDU}Qp>aK_Bs0INYyK!I|49BrXjQhI8gu1>d# zYDaIUPt)t^AUcaWK-x(s^&H&^TmS~aPF3hiN3tJ(3_w$UWpAQBpcFktPV2?$Pgim`1{caCrCAyoYHdjHYj?G!kYjj+_3h zLlBLGX;S{!!!#0xAX@HW8VS=<`M;v1e+csrVg4b^|0`i07KfERCWnt+N;{ev(q#OV zFtN?0Cx}9hY>twi!Gt+M5{8K_qNH3Rg(f7gj(r?)%^=d)ML0?#_&@29t6$N$hiMTL z9gu7MO2n2*)V>5)w_Bc8QT(C{FIxL_0r<>*&wySGUf%KgI zZT(95Q|*C&7kin@64W=WO+-mle$1&jB9Tu%mvTS#YHHV%k%?c%I-;*cq_#GM#fKCI z-SifEQr-S8-r3r*H$Ze`I^*5zyxGA=Lw{`be7G7>9j*)iqSe%}{LtYc^McO?g#{G_ zp7FZ9!#!Kv_gtM^rA~`;fy3_D8qg`=mVJr6z5StWr|nf+woSEFTi03htrqKf%O=Yr z%X^km%U;VKY-L(X%}4#;FC5-Bd!cNB+7LuDt z7;}yJ#!1HMxP5^!!T76Tm*EvdlHnI^gVtTEQ)j5L>OG}KA=LJ2DemJXtxP+sUDB#> z{I*P+rcKhuXhXDaTBHWGOX?1FwmMNAt-hizP(M>|t6n_zSnVx*PSEnSSWVEbspaY- zb-dbFO;X*es6JBam8(jXvO}4z3{~P4UilUsL7$+FXc^9GO~x_gNHh+;i8ETIs2pdw zuA*O&K?zf0lt?8&A(RVf8=8g+&;WdnLi2E2M(KdFRlAgPO0{xQDO08?Pb*OhRIZ^4 zv=WuzY}qK>=UDUx?*DzX8Ta}nszHyC1=mVfGVmPScqdtdDsk|#QCc# zoaY*gqt1T%&-Fp#>tdB?mqy`MPWctNQob$!DqoX7mfw)O%3-om)^L8Vt=w78mtT^{ V$p3?5VUNtn_oZK?d(uzR{{nh-y8QqE diff --git a/phsource/vdiph2/i@_3 b/phsource/vdiph2/i@_3 new file mode 100644 index 0000000000000000000000000000000000000000..32266d60d1ec5c15ee3dad7e4fac937a409ee6a6 GIT binary patch literal 9041 zcmchddu$xl6~@nQy!QJ24t~XP{7CG)6Fbg3JKzvIkY^JT=l!HOfs}|O5J-Rp5lBl~ zs9Kc>D&&fYf&?W(6;u^%Ey^DOTD5ASsw!3TU#LO|_@hNYBDufsPS!KKn-;6J$kn}b z=giEm_xtX5&beo@X~T^@n>THoKf%ln9r7mHK_=mUUhJ~xpL;nkT)hz3da$IPxcBw5 zX30M7{>c;SW+xjhnr>-tnHsVz)lKeSdulRz?6o`XySBy3t6#o++dsSdRt~4R%6w)8Y|`#imk-*t{Y_r%lfltH?&>74t-_K*{o@h+8vX77 z^#kB>G!6BAakKvD4@0PLDDa;OP#-Ezw|qRZtTf$XmaO+JX{ftz4=n91;d}lY>V0+( z?Eo0hvKcnhTCEY}+rYgQ%Z?)S%eS@vC!#v4~?a))IQ5yQ2bbDzS<2YIsO|ac0IkhqM>_FzF_tA+YsfO<`~R z1^#bM$9_%pVra$Rk%j%iEbPx`U~iU<{oZlKei>`|7{6o^*mt--4b0nU9X8v#!Tx?b z1UK94gxzPigMGjC+AX%zcH0URAtq{Avz6dq0D|R~@R%1=!-#h!-__s&j2;qNE7XBx*@P8x& z|Kq*c_d2k2H`0-&6-&6)123-M**^Q;8$+9C-5(O__g=jVR-1lb|e00hppte z%o5z^`;SUidj-g9Wfw43fNdQdl!1O8wp@6~;aK8Y99w}~_m$kE^}4c-qJDxSfQHTkIzL23*`qUk?i_@LSD1QO^^#;9d`&6%Nx1 zIH}^i3O)+m3NLnkN!~{Oz8ZGqr5fFLN=en6IZyQE%fFwU!Gjk&*Zx_CZ4JuW$zAs$|e4^=b}5yP?9s~k>?y+@I0*wP(8SnB1cTZZc_N0z|n z|39&J9+|=2AgZ|A#@NQO$+Z@D*2#K5ZI9bs#DSym@g(>5!^Cbp(`n+u4q|gJ5uq7> zB>WV0ILl4)A2u( z6o;FxdZek?7U2EQkP97wiMv^G_Y()U5E-_ikz>p^*&v)go^^sr5qt&jwUM6QY)*V1zQ96H!@CwjW6<#IPAUHpObD98Uot}tSL4| zM&@#+l^Uqx2y9%81m4LkJ3eQ|hkIYoWMe^=cUqX`ofgDVMOtpOFh2I&XukE?eef}l z-`@%&Q(a!@Wl7Cfo3f@>Y@IN6 z!Uj>qemFU0KOk100RLSu@d)jk_^g{bUyDMTVbzZr%KNLqxDvF>Xo?z&=4Bu+PSkRk zD^}Fd{TN=wd@^0ER->F6J}+_kxx4l`4!qd!2Hhky1h!3B14fo{madS~Fmf&u&S1SP zMzS;5ub+`-*7resn)N*uHk3oP(6wt*7A4=&3?~QeDKOth{61ypiS~!!XB*56*kkq( zeryMQE7?>V_t(2Mu9fdc=Tfj2@;*OBoE4!EMRU!|U`o1@hZ9#t+&9U6v%XvLME);v z`SsmDbv$^nOMBfUGz7NISOZo(&eBAK_p3o9cdnSN_zWbA&c z6&2iO7vWd%t zC_k6aX$IG3kga0HSAu#4NSA|n1x=bLbzVxG)z$}!=^-f~BF9yx=l*{E#`7Qb?#O9N)HeySHiJh>-gVs45;OfD)1|F1AX^&k<*Y2(y#Kn>J9?H3L>C#9w zEXw0e=4t6iPic29|5rg*{wB=~Kl&TTgco~r&`m-^VB3l{(99j23FUyB3utB_axTQp zKk_o`AXQmAk+EpT8`sQh1zzZgy+gcT%qnffkJWON|C)?u+UT>nax0ndVepqPQ`-a! z8;D9b!`Csgvi)3H4`1Cp(THxuY#pQWT*Z99sY)f^q=0 zjUn=nFFUhAc%wbT>R(QNyM&Bv9`Q!Il~(u>)-&-_`|W%5okW%cME!e-F+Fwzo^BR< zlSMGJhtIf)NTfWW1#C+|Sl&oGMD4&;y;8jKy_I$)el{j+LJX=QX)~ipBqi18MMm2UW`PLkmnL}$wF|8RCGQP zR?$IJ)D=A%s`XyXQc-5L#jGH!*1LCHeOx}u(X&Q(O$H2!tNl}tbmghSZ<)+vK}pN;&>yREkH?4d_paHQl&-lMEe-+@3r^$J(}`@ zQir=LkBUaJD@#z5dZf4#tQy6bp48FTT;j?z$DVM^c(GT9-6S*wHdSH*o?hTAou?1s z>AgsD)Y~2HoCQw}X>UR@c{ z4$iYsNjqL{hRtWb6ebR#p-u3)7AAHxe*oXM7T#{)s;cyx@q;@YUn{t>5Ni`Lq=ly& z_?&WPiYdzE#DMR)RE1QGQ7$3$#Y6#&sbVt$t13Eiu9vu8&b$PhBA2f#Rhtu6p8wms zjvp`fN{A2-q6rEX>xtxGGy^(QxMQS+3dVk*-ly?Va%B3{{n6W!v5H=QG&i zd%lt_YN{>%-{aTUmim7@WBceVHL1aKb-`07-m8OS3k*#I;WqBoo2%Jyp-TUD)Rf>| zN*_wvP8IDi9DB~P2yPNEwH1%(5u;Ypx*T7P@G}dnXW$2$>DuS0ila}P{+LbOtaQvU+mKGYj9cHS&4 zT6M?!qE^@+dgs+0Kb@N-5;cr6)*U~~t0D26(hfOxaWXCI?vCG5>cztMbjQ7hA)X1U zo!zSIgx)La?;QJ^#x@x7Kz}PSXg<76geO&Zw0jk2U3j*&{8^CLKJ=UhNcjk-jVsrDuBIQnmnT- zlpm$^g!uK({kiINVm1fHem&=uel+a7JnSZ+A+V)u>;m@;gJO`KPlzfP5ASGSL}Ovb z%rZ50t;)|eB3Fa|U1{}c_w9jY>>6tZ?}g~5mw41kE?0p!Yz1-U2{WDLX7cb8WE0Zi zBF5z~cHHF}E8t}*oGyXK)v(o%H(bS?OI@Z??=lo+Das<7QCKbPDKA${^7p#R&$T!5 zvvvOsreBv(E~47C|87%CQ`A$`lD^~b03&c2GV zXUD);b_{zgE7wSlD`V5~a~_PXV^_2cw(9X?O|Eh$&gR0#8q{+DUOQ3SGI#H8cE|n1 zuSHy6%>DBiSD?aPeBwNgi&+D$dDi2auYF|xbpsM$*cUl=uh04KX|c}O?(|1y>cnTFG^uvLAuI5 zjd}RIz%QDe&6g$Y7mpSvGjjGxW#-=bq Date: Wed, 13 Mar 2013 18:28:50 +0000 Subject: [PATCH 22/24] [1.46.48] Language change: pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@314 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 2 +- dictsource/hu_rules | 23 ++++++++++++++--------- dictsource/pt_list | 4 +++- dictsource/pt_rules | 5 +++-- phsource/compile_report | 18 ++++++++---------- phsource/ph_portugal | 13 ------------- phsource/ph_pt_brazil | 22 +++------------------- src/phonemelist.cpp | 2 ++ src/synthdata.cpp | 2 +- 9 files changed, 35 insertions(+), 56 deletions(-) diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index beb1caf9..274de6d3 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -68,7 +68,7 @@ r R R3 s S t T tS v w x z Z -Dictionary hu_dict 2013-03-12 +Dictionary hu_dict 2013-03-13 a A a: e E e: i i: o o: u u: Y y y: Y: diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 71c6573e..d99e1978 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -459,8 +459,9 @@ shetlan) d (szige d szaba) d (szem d _tren) dsz (e d|s vakon) d (sz d -vé) d (jeggy d -své) d (zseb d + vé) d (jeggy d + své) d (zseb d + csalá) d (szer d .group dz fogó) dz (kod ts @@ -646,6 +647,7 @@ csilla) g (gy g han) g (gy g hazugsá) g (gy g tőze) g (gy g +doppin) g (gy g .group gy gy J @@ -1023,8 +1025,9 @@ szivárvá) ny (játsz n^ _elle) n (jav n vagyo) n (jog n nny (elv n|n^ -haszo) n (jár n + haszo) n (jár n boszorká) ny (jelet n^ + káno) n (jog n .group o o o @@ -1166,8 +1169,8 @@ _tetszé) s S ki) s (szőlő S körö) s (szeg S kolbászo) s S -feldolgozá) s S -_ki) s (szín S +feldolgozá) s S + _ki) s (szín S .group ss ssz ss2 @@ -1763,8 +1766,8 @@ fáklyá) sz (ene Sz pénze) sz (k s ellenállá) sz (ón Sz ré) sz (árás Sz -_te) szts (or st|S -serté) szs (ir S|Z + _te) szts (or st|S + serté) szs (ir S|Z .group t t t @@ -1909,6 +1912,8 @@ szögle) t (szob t zár) t (szék t szé) t (szortír t _robo) t (szoftve t + diva) t (cirk t + álla) t (cirk t .group tj C) tj c @@ -1996,7 +2001,7 @@ _tisztele) tj (el tj zené) tj (átsz tj szen) tj (akab tj közérze) tj (aví tj -ké) tj (átszm tj + ké) tj (átszm tj .group ts ts (_S2 tS //general rule with word end of ts letters @@ -2213,7 +2218,7 @@ felira) ts (áv t|S leme) tsz (vén ts _cha) tsz (ob t|s robo) ts (of t|S -merényle) ts (or t|S +merényle) ts (or t|S .group tt diff --git a/dictsource/pt_list b/dictsource/pt_list index 45e03d84..dcd1d75d 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -645,7 +645,7 @@ alcateia $alt alferes $alt algozes $alt alicerce $alt -almoço alt $verb +almoço $alt $verb amarelo $alt ameba $alt amores $alt2 @@ -859,6 +859,7 @@ jogo $alt2 $noun joguete $alt2 lambreta $alt2 lebre $alt +lembrete $alt2 leste $alt2 $verb lopes $alt maior $alt @@ -939,6 +940,7 @@ polca $alt porcos $alt porrete $alt2 porra $alt2 +porto $alt2 portos $alt pose $alt2 povos $alt diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 2b6c74a5..8ce4ba30 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -359,6 +359,7 @@ _perd) e (L05_ e _quis) e (L05_ E _soub) e (L05_ E +proteg) e (L05_ e // des- tend) e (L06_ e // a- con- en- es- _mord) e (L06_ e _rend) e (L06_ e @@ -442,7 +443,6 @@ respond) e (L07_ e // cor- _n) e (grL03_ e _estr) ei (L03_ EI _inv) e (jL04_ E -proteg) e (l05_ e // des- tr) e (pL04_ E // es- _dec) e (pL04_ E _in) e (ptL03_ E @@ -854,6 +854,7 @@ _desabr) o (chL04_ O _enf) o (rquL02_ O c) o (rrL01_ o // escorra, incorra, corra, recorra _m) o (rrL01_ o + p) o (rtL03_ O // im- trans- de- re- com- a- ex- _r) o (snL04_ O _c) o (spL02_ O p) ostos (_ Ost=Us# // dispostos etc. @@ -946,7 +947,7 @@ _desabr) o (chL04_ O .group s -?1 _) s (_W Es|; within an acronym [s]+[;] not [s;] phoneme +?1 _) s (_W Es|; // within an acronym [s]+[;] not [s;] phoneme ?1 _) s (_ Es ?2 _) s (_ 'Ese s s diff --git a/phsource/compile_report b/phsource/compile_report index 2f62ec62..33c2a042 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -48,8 +48,8 @@ consonants 11 119 es-la 1 125 ca 11 127 an 4 125 - pt 32 143 - pt-pt 20 143 + pt 29 140 + pt-pt 19 140 ro 36 148 el 10 125 grc 12 129 @@ -452,7 +452,7 @@ l/l_ [l] base l/l_@ [l/3] base [l/] fr [l/3] da -l/l@ [¨|8] base +l/l@ [¨\.] base [l#] base [l] fr [l/2] fr @@ -486,7 +486,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [¨|8] base +l/la [¨\.] base [l#] base [l] fr [l/2] fr @@ -495,7 +495,7 @@ l/la [ l/l_a [l/3] base [l/] fr [l/3] da -l/le [¨|8] base +l/le [¨\.] base [l#] base [l] fr [l/2] fr @@ -508,7 +508,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [¨|8] base +l/li [¨\.] base [l#] base [l] fr [l/2] fr @@ -523,7 +523,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [¨|8] base +l/lo [¨\.] base [l#] base [l/2] fr [K] nso @@ -535,7 +535,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [¨|8] base +l/lu [¨\.] base [l#] base [l] fr [l/2] fr @@ -721,7 +721,6 @@ r3/rx [*] base [r] et [r/] fr [R] fr-ca - [x] pt-pt [*;] ro [r#] is [r/] tn @@ -2553,7 +2552,6 @@ vwl_fr/r [r] fr vwl_fr/r_ [r/] fr vwl_fr/r_@ [r/] fr vwl_fr/r@ [] fr -vwl_fr/@R [x] pt-pt vwl_fr/r@2 [] fr vwl_fr/@R2 [R] fr-ca vwl_fr/ra [] fr diff --git a/phsource/ph_portugal b/phsource/ph_portugal index 19386fe7..a31660c4 100644 --- a/phsource/ph_portugal +++ b/phsource/ph_portugal @@ -134,19 +134,6 @@ endphoneme -phoneme x // [r] for Portugal - liquid - trill - ipa ʁ - lengthmod 7 - Vowelin f1=0 f2=1500 -400 400 f3=-400 80 - IF nextPh(isNotVowel) THEN - ChangePhoneme(r/) - ENDIF - FMT(vwl_fr/@R) addWav(r3/rx, 120) -endphoneme - - phoneme R // for Portugal this is same the as [r] import_phoneme pt/r endphoneme diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index cc5ff8ae..2d86b1c9 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -189,8 +189,9 @@ phoneme l endphoneme -phoneme x // (previously [R] from Slovak/Czech) - import_phoneme base/h +phoneme x + CALL base/h + ipa x endphoneme @@ -217,20 +218,3 @@ phoneme * FMT(d/tap2) addWav(x/d, 40) endphoneme - - -// testing -phoneme x2 - import_phoneme af/x2 -endphoneme - -phoneme x3 - import_phoneme base/x -endphoneme - -phoneme R1 - import_phoneme base/R -endphoneme - - - diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index c4114d72..1e39610f 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -197,6 +197,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) { stop_propagation = 0; voicing = 0; + if(regression & 0x100) + voicing = 1; // word-end devoicing continue; } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 97cb1aa2..056c1a78 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.47 12.Mar.13"; +const char *version_string = "1.46.48 13.Mar.13"; const int version_phdata = 0x014640; int option_device_number = -1; From fbe9539748fda97161ffa36337a1f10c93e36e03 Mon Sep 17 00:00:00 2001 From: jonsd Date: Thu, 14 Mar 2013 00:34:12 +0000 Subject: [PATCH 23/24] [1.46.49] Fix: character names sometimes not spoken correctly if they are from another language's dictionary. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@315 d46cf337-b52f-0410-862d-fd96e6ae7743 --- src/phonemelist.cpp | 9 ++++++--- src/readclause.cpp | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index 1e39610f..a0c3f9d4 100644 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -341,10 +341,13 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) ph = phoneme_tab[plist3->phcode]; plist3[0].ph = ph; - if((plist3->phcode == phonSWITCH) && !(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ?? + if(plist3->phcode == phonSWITCH) { - if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) - continue; // next phoneme is also a phonSWITCH, so ignore + if(!(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ?? + { + if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) + continue; // next phoneme is also a phonSWITCH, so ignore + } // change phoneme table SelectPhonemeTable(plist3->tone_ph); diff --git a/src/readclause.cpp b/src/readclause.cpp index 785356ed..b701d854 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -643,7 +643,7 @@ static const char *LookupCharName(Translator *tr, int c, int only) } } - if((only==0) && (phonemes[0] == 0) && (tr->translator_name != L('e','n'))) + if((only==0) && ((phonemes[0] == 0) || (phonemes[0] == phonSWITCH)) && (tr->translator_name != L('e','n'))) { // not found, try English SetTranslator2("en"); From d695786e5438f023a36eb5e91feb4df4e13bc19e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 14 Mar 2013 11:04:59 +0000 Subject: [PATCH 24/24] 1.46.49 (from http://espeak.sourceforge.net/test/latest.html) --- dictsource/hi_list | 2 +- dictsource/hi_rules | 2 +- docs/phonemes.html | 11 +++++---- docs/speak_lib.h | 56 ++++++++++++++++++++++++++------------------- 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/dictsource/hi_list b/dictsource/hi_list index e28b4e50..ee9eb364 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@ diff --git a/dictsource/hi_rules b/dictsource/hi_rules index ffbd8801..9144dc17 100644 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -346,7 +346,7 @@ स (B s .group ह - ह H + ह HV ह (B H diff --git a/docs/phonemes.html b/docs/phonemes.html index 0c3f80e4..c0ab5fc7 100644 --- a/docs/phonemes.html +++ b/docs/phonemes.html @@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to espeak -[p] -[b] +[p] +[b] [t] [d] @@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[@] -alphaschwa +alphaschwa
[3] betterrhotic schwa. In British English this is the same as [@], but it includes 'r' colouring in American and other rhotic accents. In these cases a separate [r] should not be included unless it is followed immediately by another vowel. @@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes [3:], [A@], [e@]
[a]trap
[aa]bathThis is [a] in some accents, [A:] in others. -
[a2]aboutThis may be [@] or may be a more open schwa. +
[a#]aboutThis may be [@] or may be a more open schwa.
[A:]palm
[A@]start

@@ -161,7 +161,8 @@ Other languages will have their own vowel definitions, eg:

- +

+ [:] can be used to lengthen a vowel, eg [e:] diff --git a/docs/speak_lib.h b/docs/speak_lib.h index 9ca01f59..8cf7f807 100644 --- a/docs/speak_lib.h +++ b/docs/speak_lib.h @@ -28,6 +28,12 @@ #include #include +#ifdef __WIN32__ +#define ESPEAK_API __declspec(dllexport) +#else +#define ESPEAK_API +#endif + #define ESPEAK_API_REVISION 6 /* Revision 2 @@ -157,11 +163,13 @@ typedef enum { EE_NOT_FOUND=2 } espeak_ERROR; +#define espeakINITIALIZE_PHONEME_EVENTS 0x0001 +#define espeakINITIALIZE_DONT_EXIT 0x8000 #ifdef __cplusplus extern "C" #endif -int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); +ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); /* Must be called before any synthesis functions are called. output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. @@ -169,8 +177,8 @@ int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *pat path: The directory which contains the espeak-data directory, or NULL for the default location. - options: bit 0: 1=allow espeakEVENT_PHONEME events. - + options: bit 0: 1=allow espeakEVENT_PHONEME events. + bit 15: 1=don't exit if espeak_data is not found (used for --help) Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). */ @@ -180,7 +188,7 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); #ifdef __cplusplus extern "C" #endif -void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); +ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); /* Must be called before any synthesis functions are called. This specifies a function in the calling program which is called when a buffer of speech sound data has been produced. @@ -208,7 +216,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); #ifdef __cplusplus extern "C" #endif -void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); +ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); /* This function may be called before synthesis functions are used, in order to deal with