diff --git a/dictsource/bg_list b/dictsource/bg_list index 132080a0..a2311072 100644 --- 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/ga_list b/dictsource/ga_list index b888abdf..c1e3da64 100644 --- 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 100644 --- 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 100644 --- 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 100644 --- 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 100644 --- 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/n/_n b/phsource/n/_n index 04cabf4d..dfe7244b 100644 Binary files a/phsource/n/_n and b/phsource/n/_n differ diff --git a/phsource/n/_nr b/phsource/n/_nr index c66889e0..672ace30 100644 Binary files a/phsource/n/_nr and b/phsource/n/_nr differ diff --git a/phsource/n/n@ b/phsource/n/n@ index 0f058bbe..24f9d627 100644 Binary files a/phsource/n/n@ and b/phsource/n/n@ differ diff --git a/phsource/n/na b/phsource/n/na index fa24b78e..dcf60727 100644 Binary files a/phsource/n/na and b/phsource/n/na differ diff --git a/phsource/n/ne b/phsource/n/ne index 86500b48..23a07eb6 100644 Binary files a/phsource/n/ne and b/phsource/n/ne differ diff --git a/phsource/n/ni b/phsource/n/ni index 561b331f..c71c8120 100644 Binary files a/phsource/n/ni and b/phsource/n/ni differ diff --git a/phsource/n/no b/phsource/n/no index 68e3c39d..cf3c7a1c 100644 Binary files a/phsource/n/no and b/phsource/n/no differ diff --git a/phsource/n/nr@ b/phsource/n/nr@ index caade63e..896f33ec 100644 Binary files a/phsource/n/nr@ and b/phsource/n/nr@ differ diff --git a/phsource/n/nra b/phsource/n/nra index d0b0861e..ef6649ea 100644 Binary files a/phsource/n/nra and b/phsource/n/nra differ diff --git a/phsource/n/nre b/phsource/n/nre index e43df7e7..98f75b24 100644 Binary files a/phsource/n/nre and b/phsource/n/nre differ diff --git a/phsource/n/nri b/phsource/n/nri index 0a086bc1..76afa2b8 100644 Binary files a/phsource/n/nri and b/phsource/n/nri differ diff --git a/phsource/n/nro b/phsource/n/nro index 1b0e6885..3e8b69e3 100644 Binary files a/phsource/n/nro and b/phsource/n/nro differ diff --git a/phsource/n/nru b/phsource/n/nru index 0a2577d3..cb54da92 100644 Binary files a/phsource/n/nru and b/phsource/n/nru differ diff --git a/phsource/n/nu b/phsource/n/nu index f52d3f13..53f8c563 100644 Binary files a/phsource/n/nu and b/phsource/n/nu differ 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 100644 --- 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); }