| @@ -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 | |||
| @@ -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: | |||
| @@ -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 | |||
| 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@ | |||
| a 0# | |||
| a (_ @ | |||
| adh (a aI // words like radharc | |||
| adh (C aI | |||
| abht aU#t[ | |||
| amhr aUr // words like amhras | |||
| K) amhl aUl | |||
| abhra aUr@ // words like slabhra | |||
| aghaidh aIg | |||
| t) abhair u:@r | |||
| th) abhair u:@r | |||
| t) abhar u:@r | |||
| th) abhar u:@r | |||
| _) an (sL01 @n | |||
| _) an (- 0n // an prefix | |||
| é) a @ // words like féach | |||
| X) a (nn_ aU# | |||
| X) a (ll_ aU# | |||
| abha aU@ | |||
| am (pla aUm | |||
| ama (_ aU#m@ | |||
| athair 'ah@r | |||
| _) amh aU | |||
| agha aI@ | |||
| agh (d aI | |||
| agh (s aI | |||
| _) ath 0h | |||
| ai (m_ @ | |||
| aí i: | |||
| aoi @i: | |||
| _) aoi i: | |||
| ath) aoi (r 'i:@ | |||
| r) aoi (nín 'e:@ | |||
| aoicht (_ 'i:@xt[ | |||
| C) ao (C @e:@ | |||
| _L24) ao (C w'e:@ | |||
| C) ao (th_ @e: | |||
| b) ao (++ we:@ | |||
| b) ao (th_++ we: | |||
| ao @e | |||
| _) ao e: | |||
| ae e: | |||
| amhna (_ aUn@ | |||
| .group á | |||
| á A: | |||
| @) á ,A: | |||
| ádh A: | |||
| áthair (_ A:h@r | |||
| áthar A:h@r | |||
| ái (p A: | |||
| áinig A:nIg | |||
| ái 'A:i | |||
| á 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 | |||
| _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: | |||
| o O# | |||
| _) o 'O | |||
| C) o (cht_ 'O | |||
| orn (_ 'Or@n | |||
| _C) omh o: | |||
| _CC) omh o: | |||
| omha o:@ | |||
| omhai o:@ | |||
| o (ll_ aU | |||
| C) o (nn_ aU | |||
| r) o (nn_ O# | |||
| C) ogh aU | |||
| omhan (_ aU@n | |||
| omhain (_ aUIn | |||
| odha aU | |||
| opaic @pIk | |||
| C) odh (_ o: | |||
| odl (a O#l | |||
| oí i: | |||
| .group ó | |||
| ó 'o: | |||
| ómhai o:@ | |||
| ó '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 | |||
| 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 | |||
| 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@ | |||
| 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: | |||
| únmh u:nv | |||
| úi (r u: | |||
| ú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: | |||
| @@ -5419,6 +5419,7 @@ _″ duplA|ApostR2o:f | |||
| ≠ nEmEJEnlY: | |||
| _ˇ lEfEle:n^i:l | |||
| _¡ AlSo:indEks | |||
| _braille bR2Ail:E | |||
| // Alphabets | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -478,7 +478,7 @@ phoneme k | |||
| endphoneme | |||
| phoneme k# | |||
| import_phoneme consonants/kh | |||
| import_phoneme consonants/k# | |||
| voicingswitch g# | |||
| endphoneme | |||
| @@ -157,5 +157,3 @@ phoneme s# // This is [s] for Brazil, [S] for Portugal | |||
| ipa ʃ | |||
| endphoneme | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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); | |||
| } | |||
| @@ -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; | |||
| @@ -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)); | |||
| } | |||
| @@ -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 | |||
| @@ -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); | |||
| } | |||
| @@ -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; | |||
| @@ -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} | |||
| @@ -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) | |||
| {//===================================================== | |||
| @@ -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 | |||
| @@ -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)); | |||
| @@ -1,5 +1,5 @@ | |||
| /*************************************************************************** | |||
| * Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||
| * email: [email protected] * | |||
| * * | |||
| * 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); | |||
| } | |||