From 8238f8b09b34b55401b56fe3977ae94b1586fe1d Mon Sep 17 00:00:00 2001 From: jonsd Date: Mon, 11 Mar 2013 21:28:06 +0000 Subject: [PATCH] [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); }