Conflicts: dictsource/dict_phonemes phsource/compile_report phsource/ph_irishmaster
| _- h,aIf@n | _- h,aIf@n | ||||
| ?3 _- daS | ?3 _- daS | ||||
| _. d0t | _. d0t | ||||
| ?3_. pi@rI@d | |||||
| _: koUl@n | _: koUl@n | ||||
| _; sEmIk'oUl@n | _; sEmIk'oUl@n | ||||
| _< lEsDan | _< lEsDan |
| legged lEgId | legged lEgId | ||||
| // Ab) le @L | // Ab) le @L | ||||
| C) le (ton_ @L | C) le (ton_ @L | ||||
| Ab) ler (_ l@ | |||||
| Ab) le (C_ l@ | |||||
| Ab) ler (_ l3 | |||||
| Ab) le (B_ l@ | |||||
| Ab) led (_ @Ld | Ab) led (_ @Ld | ||||
| &) lem (ent @Lm | &) lem (ent @Lm | ||||
| &p) lem (ent lIm | &p) lem (ent lIm |
| .group a | .group a | ||||
| _) a(_ a | |||||
| a a | |||||
| aj aI | |||||
| aŭ aU | |||||
| _) a (_ a | |||||
| a a | |||||
| aj aI | |||||
| aŭ aU | |||||
| .group b | .group b | ||||
| _) b(_ bo | |||||
| b b | |||||
| _) b (_ bo | |||||
| b b | |||||
| .group c | .group c | ||||
| _) c(_ tso | |||||
| _) ch(_ tSo | |||||
| c ts | |||||
| ch (K tS // foreign words | |||||
| K) ch tS // foreign words | |||||
| _) c (_ tso | |||||
| _) ch (_ tSo | |||||
| c ts | |||||
| ch (K tS // foreign words | |||||
| K) ch tS // foreign words | |||||
| .group d | .group d | ||||
| _) d(_ do | |||||
| d d | |||||
| _) d (_ do | |||||
| d d | |||||
| _) d (-ro dokt'o | |||||
| _) d (-rino d,okto | |||||
| _) d (-ro dokt'o | |||||
| _) d (-rino d,okto | |||||
| .group e | .group e | ||||
| _) e(_ e | |||||
| e e | |||||
| ej eI | |||||
| eŭ eU | |||||
| _) e (_ e | |||||
| e e | |||||
| ej eI | |||||
| eŭ eU | |||||
| .group f | .group f | ||||
| _) f(_ fo | |||||
| f f | |||||
| _) f (_ fo | |||||
| f f | |||||
| _) f (-ino fR%aUl | |||||
| _) f (-lo fRaU | |||||
| _) f (-ino fR%aUl | |||||
| _) f (-lo fRaU | |||||
| .group g | .group g | ||||
| _) g(_ go | |||||
| g g | |||||
| gh (K dZ | |||||
| _) g (_ go | |||||
| g g | |||||
| gh (K dZ | |||||
| .group h | .group h | ||||
| _) h(_ ho | |||||
| h h | |||||
| hh x | |||||
| _) h (_ ho | |||||
| h h | |||||
| hh x | |||||
| .group i | .group i | ||||
| _) i(_ i | |||||
| i i | |||||
| _) i (_ i | |||||
| i i | |||||
| .group j | .group j | ||||
| _) j(_ jo | |||||
| j j | |||||
| jh (C Z | |||||
| _) j (_ jo | |||||
| j j | |||||
| jh (C Z | |||||
| .group k | .group k | ||||
| _) k(_ ko | |||||
| k k | |||||
| _) k (_ ko | |||||
| k k | |||||
| _) k (-do kamaR'a | |||||
| _) k (-dino k'amaRa | |||||
| _) k (-ino k'amaRad | |||||
| _) k (-do kamaR'a | |||||
| _) k (-dino k'amaRa | |||||
| _) k (-ino k'amaRad | |||||
| .group l | .group l | ||||
| _) l(_ lo | |||||
| l l | |||||
| ll (_ l | |||||
| _) l (_ lo | |||||
| l l | |||||
| ll (_ l | |||||
| .group m | .group m | ||||
| _) m(_ mo | |||||
| m m | |||||
| _) m (_ mo | |||||
| m m | |||||
| .group n | .group n | ||||
| _) n(_ no | |||||
| n n | |||||
| n (_S1 n | |||||
| _) n (_ no | |||||
| n n | |||||
| n (_S1 n | |||||
| _) n (-ro num'e | |||||
| _) n (-ro num'e | |||||
| .group o | .group o | ||||
| _) o(_ o | |||||
| o o | |||||
| oj oI | |||||
| -) o (_ %o | |||||
| -) oj (_ %oI | |||||
| -) on (_ %on | |||||
| -X) o (_ %o // d-ro etc | |||||
| -X) oj (_ %oI | |||||
| -X) on (_ %on | |||||
| _) o (_ o | |||||
| o o | |||||
| oj oI | |||||
| -) o (_ %o | |||||
| -) oj (_ %oI | |||||
| -) on (_ %on | |||||
| -X) o (_ %o // d-ro etc | |||||
| -X) oj (_ %oI | |||||
| -X) on (_ %on | |||||
| .group p | .group p | ||||
| _) p(_ po | |||||
| p p | |||||
| ph (K f // foreign words | |||||
| K) ph f // foreign words | |||||
| _) p (_ po | |||||
| p p | |||||
| ph (K f // foreign words | |||||
| K) ph f // foreign words | |||||
| .group q | .group q | ||||
| _) q(_ kwo | |||||
| q k | |||||
| qu kv | |||||
| _) q (_ kwo | |||||
| q k | |||||
| qu kv | |||||
| .group r | .group r | ||||
| _) r(_ Ro | |||||
| r R | |||||
| A) r (A R | |||||
| K) r (A @-* | |||||
| rr RR | |||||
| _) r (_ Ro | |||||
| r R | |||||
| A) r (A R | |||||
| K) r (A @-* | |||||
| rr RR | |||||
| .group s | .group s | ||||
| _) s(_ so | |||||
| _) sh(_ So | |||||
| s s | |||||
| sh (K S // foreign words | |||||
| K) sh S // foreign words | |||||
| _) s (_ so | |||||
| _) sh (_ So | |||||
| s s | |||||
| sh (K S // foreign words | |||||
| K) sh S // foreign words | |||||
| _) s (-ino s,injoR | |||||
| _) s (-ro sinj'o | |||||
| _) s (-ino s,injoR | |||||
| _) s (-ro sinj'o | |||||
| _) s (-ano s'am,ide | |||||
| _) s (-anino s'am,ide | |||||
| _) s (-ta_ s'ank | |||||
| _) s (-ano s'am,ide | |||||
| _) s (-anino s'am,ide | |||||
| _) s (-ta_ s'ank | |||||
| .group t | .group t | ||||
| _) t(_ to | |||||
| t t | |||||
| th (K T // foreign words | |||||
| K) th T // foreign words | |||||
| _) t (_ to | |||||
| t t | |||||
| th (K T // foreign words | |||||
| K) th T // foreign words | |||||
| -) ta (_ t%a // s-ta = sankta | |||||
| -) ta (_ t%a // s-ta = sankta | |||||
| .group u | .group u | ||||
| _) u(_ u | |||||
| u u | |||||
| uj uI | |||||
| _) u (_ u | |||||
| u u | |||||
| uj uI | |||||
| .group v | .group v | ||||
| _) v(_ vo | |||||
| v v | |||||
| _) v (_ vo | |||||
| v v | |||||
| .group w | .group w | ||||
| _) w(_ du'oblav,o | |||||
| w w | |||||
| K) wh w // foreign words | |||||
| _) w (_ du'oblav,o | |||||
| w w | |||||
| K) wh w // foreign words | |||||
| .group x | .group x | ||||
| _) x(_ ikso | |||||
| x ks | |||||
| _) x z // foreign words | |||||
| _) x (_ ikso | |||||
| x ks | |||||
| _) x z // foreign words | |||||
| .group y | .group y | ||||
| _) y(_ ipsilono | |||||
| y j | |||||
| K) y (K i | |||||
| _) y (_ ipsilono | |||||
| y j | |||||
| K) y (K i | |||||
| .group z | .group z | ||||
| _) z(_ zo | |||||
| z z | |||||
| _) z (_ zo | |||||
| z z | |||||
| .group | .group | ||||
| _) ĉ (_ tSo | |||||
| ĉ tS | |||||
| _) ĉ (_ tSo | |||||
| ĉ tS | |||||
| _) ĝ (_ dZo | |||||
| ĝ dZ | |||||
| _) ĝ (_ dZo | |||||
| ĝ dZ | |||||
| _) ĥ (_ xo | |||||
| ĥ x | |||||
| _) ĥ (_ xo | |||||
| ĥ x | |||||
| _) ĵ (_ Zo | |||||
| ĵ Z | |||||
| _) ĵ (_ Zo | |||||
| ĵ Z | |||||
| _) ŝ (_ So | |||||
| ŝ S | |||||
| _) ŝ (_ So | |||||
| ŝ S | |||||
| _) ŭ (_ wo | |||||
| ŭ w | |||||
| _) ŭ (_ wo | |||||
| ŭ w | |||||
| C) ' (_ = // word end in apostrophe, stress the last vowel | |||||
| ' | |||||
| + plus_ | |||||
| _) ++ (_ plusplus | |||||
| ' | |||||
| + plus_ | |||||
| _) ++ (_ plusplus | |||||
| . punkto | |||||
| . (. _: | |||||
| \.) . | |||||
| . punkto | |||||
| . (. _: | |||||
| \.) . | |||||
| £ pundo | |||||
| £ (_D _pundoI_: | |||||
| __) - (_D minus_ | |||||
| D_) - (_D st@-*ek'eto_ | |||||
| A_) - (_D _ | |||||
| C_) - (_D _ | |||||
| --) - | |||||
| - minus_ | |||||
| - (_a | |||||
| $ dolaRo | |||||
| $ (_D _dolaRoI_: | |||||
| £ pundo | |||||
| £ (_D _pundoI_: | |||||
| __) - (_D minus_ | |||||
| D_) - (_D st@-*ek'eto_ | |||||
| A_) - (_D _ | |||||
| C_) - (_D _ | |||||
| --) - | |||||
| - minus_ | |||||
| - (_a | |||||
| $ dolaRo | |||||
| $ (_D _dolaRoI_: | |||||
| // Irish Gaeilge dictionary | |||||
| // written by Ronan McGuirk | |||||
| // January 2013 | |||||
| // version 2.5 | |||||
| // This file is UTF8 encoded | |||||
| // letters | |||||
| // letter names, as they are spoken as a single character in text | |||||
| // precede by _ to distinguish from pronunciation as a language word | |||||
| _a eI | |||||
| b bi: | |||||
| c si: | |||||
| d di: | |||||
| e i: | |||||
| f Ef | |||||
| g dZi: | |||||
| h eItS | |||||
| _i aI | |||||
| j dZeI | |||||
| k keI | |||||
| l El | |||||
| m Em | |||||
| n En | |||||
| _o oU | |||||
| p pi: | |||||
| q kju: | |||||
| r ar | |||||
| s Es | |||||
| t ti: | |||||
| u ju: | |||||
| v vi: | |||||
| w d'O#b@lju: | |||||
| x Eks | |||||
| y waI | |||||
| z zEd | |||||
| _á eI||f0d[@ | |||||
| _é i:||f0d[@ | |||||
| _ó o:||f0d[@ | |||||
| _ú ju:||f0d[@ | |||||
| _#32 spA:s | |||||
| // accent names | |||||
| // names of symbols | |||||
| ª_. pO#nk | |||||
| _, k0m@ | |||||
| _; semI | |||||
| _: ko:l0n | |||||
| _! Skre:@x | |||||
| _? kESt | |||||
| _' u:sx0m@ | |||||
| . pO#nk | |||||
| % f@i:nge:@d[ | |||||
| // numbers | |||||
| _0 @nA:idZ | |||||
| _1 @h'e:n | |||||
| _2 @d['o: | |||||
| _3 @tSR'i: | |||||
| _4 @k'ah@r | |||||
| _5 @ku:Ig | |||||
| _6 @S'e: | |||||
| _7 @S0xt[ | |||||
| _8 @h'0xt[ | |||||
| _9 @n@@'i: | |||||
| _1X @dZ'E | |||||
| _11 e:@nde:@g | |||||
| _12 d[o:je:@g | |||||
| _13 tr'i:de:@g | |||||
| _14 kah@rde:@g | |||||
| _15 ku:igde:@g | |||||
| _16 Se:de:@g | |||||
| _17 S0xtde:@g | |||||
| _18 O#xtde:@g | |||||
| _19 ni:de:@g | |||||
| _20 fICe | |||||
| _2X fiCE | |||||
| _3X trO#x@ | |||||
| _31 trO#x@he:@n | |||||
| _40 d[0C@d | |||||
| _4X d[0C@d@ | |||||
| _41 d[0C@dahe:@n | |||||
| _5X k@e:@g@ | |||||
| _51 k@e:@g@he:@n | |||||
| _6X Sask@ | |||||
| _61 Sask@he:@n | |||||
| _7X S0xto: | |||||
| _71 S0xt[o:he:@n | |||||
| _8X O#Xto: | |||||
| _81 O#xt[o:he:@n | |||||
| _9X no:x@ | |||||
| _91 no:x@he:@n | |||||
| _0C ke:@d[ | |||||
| _1C0 ke:@d[ // exactly one hundred | |||||
| _1C ke:@d[ | |||||
| _101 ke:@d[@he:@n | |||||
| _2C ga:Ce:@d[ | |||||
| _3C tri:Ce:@d[ | |||||
| _4C kEr@ke:@d[ | |||||
| _5C ku:igce:@d[ | |||||
| _6C Se:ke:@d[ | |||||
| _7C S0xtge:@d[ | |||||
| _8C O#xtg'e:@d[ | |||||
| _9C ni:ge:@d[ | |||||
| _0M1 mi:lE | |||||
| _1M1 m'i:lE | |||||
| _2M1 gA:vi:lE | |||||
| _2001 gA:vi:lEs@he:@n | |||||
| _2002 gA:vi:lEs@d['o: | |||||
| _2003 gA:vi:lEs@tr'i: | |||||
| _2004 gA:vi:lEs@kah@r | |||||
| _2005 gA:vi:lEs@ku:ig | |||||
| _0M2 mIlu:n | |||||
| _1M2 'milu:n | |||||
| _2M2 d[A:vIlu:n | |||||
| _3M2 tri:vilu:n | |||||
| _4M2 kEr@milu:n | |||||
| _0M4 _bilu:n | |||||
| _1M4 'bilu:n | |||||
| _2M4 gA:vilu:n | |||||
| _3M4 tri:vilu:n | |||||
| _4M4 kEr@vilu:n | |||||
| _0and Is | |||||
| _dpt pO#nk | |||||
| //_roman Rom'ano | |||||
| //delete | |||||
| // words | |||||
| a @ | |||||
| abhaile @w'0l;E | |||||
| ach 0x $u | |||||
| ag Eg $verbf $u | |||||
| anall @n'aUl | |||||
| aige @g'E | |||||
| air Er | |||||
| acu 0k'U | |||||
| ar Er $u | |||||
| arsa @rs@ | |||||
| agaibh 0g@Iv | |||||
| agus 0g@s | |||||
| amach @m'0x | |||||
| amárach @m'A:r@x | |||||
| amuigh @mu1'I | |||||
| amháin @w'A:in | |||||
| am aUm | |||||
| an @n | |||||
| anois @nIS | |||||
| anonn @naUn | |||||
| ann aUn | |||||
| anseo @nS'O | |||||
| aodh e: | |||||
| aodha e: | |||||
| aon e:@n | |||||
| (ar ais) Er'aS | |||||
| arís @r'i:S | |||||
| as 0s | |||||
| atá @t['A: $u | |||||
| baill bu1'i:l | |||||
| bhaill vu1'i:l | |||||
| beidh bEg | |||||
| bhfuil w'Il | |||||
| bhuel w'El | |||||
| ceithre kEr@ | |||||
| cathair k'0h@r | |||||
| chathair x'0h@r | |||||
| clainne kl'InE | |||||
| chlainne xl'InE | |||||
| chun xUn $u | |||||
| crainn kri:n | |||||
| de dE $u+ | |||||
| des dEs $u | |||||
| dhaoibh ji:v | |||||
| di dI $u+ | |||||
| do dO# $u | |||||
| domhnach d[aUn@x | |||||
| domhnaigh d[aUnig | |||||
| eile 'El@ | |||||
| euro ju:ro: | |||||
| faic f@ak | |||||
| faide f@Id[E | |||||
| faigh faIg | |||||
| feadh fag | |||||
| fear f'ar | |||||
| gcathair g0h@r | |||||
| gan g0n $u | |||||
| gheall jaUl | |||||
| (go raibh maith) g@r@m0h | |||||
| (go raibh míle) g@r@mi:l@ | |||||
| gur gUr $u | |||||
| i I $u | |||||
| in In $u | |||||
| ina In@ $u | |||||
| ins Ins $u | |||||
| inniu Inj'u:v | |||||
| irish _^_EN | |||||
| is 'Is $u | |||||
| (is ea) IS'a | |||||
| isteach IstS'0x | |||||
| iúl ju:l | |||||
| laoghaire li:@r@ | |||||
| le lE $u | |||||
| leí le:i: | |||||
| (maigh eo) mu1'i:||'o: | |||||
| (muigheo) mu1'i:||'o: | |||||
| mhuigh vu1'i: | |||||
| (mhaigh eo) vu1'i:||'o: | |||||
| maith m'0 | |||||
| mhaith w'0 | |||||
| mbeadh m;O#X | |||||
| mo mO# $u | |||||
| mura mUr@ $u | |||||
| ná nA: $u | |||||
| nigh ni: | |||||
| níorbh ni:rv | |||||
| nó nu: $u | |||||
| nollag n@l@g | |||||
| nolaig nO#lig | |||||
| Oirghiall 'Err@X@l | |||||
| orthu O#rhu | |||||
| os o:s | |||||
| rabh raU | |||||
| raibh rEv | |||||
| réamhrá r'e:@vr,a: | |||||
| réidh re: | |||||
| samhain saUIn | |||||
| san s@n | |||||
| seo S@_ | |||||
| tabhair t'u:@r | |||||
| (tiocfaidh ár lá) tSO#ki:|'A:r|l'A: | |||||
| // temporary fix for NO#DA punctuation | |||||
| dot pO#nk | |||||
| comma k0m@ | |||||
| dash flESki:n | |||||
| tick u:@sx0m@ | |||||
| space spA:s | |||||
| // translation rules for Irish Gaeilge | |||||
| // This file is UTF-8 encoded | |||||
| // written by Ronan McGuirk January 2013 | |||||
| // Version 2.5B | |||||
| .L01 e i é í // slender vowels | |||||
| .L02 c ch d g gh n s // following ea gets ; sounds | |||||
| .L03 b bh mb c ch f m mh dh // used for words likemuir or cuid | |||||
| .L04 b bh mb // for words like beag | |||||
| .L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht chta nnach ntach llach d l ll // word endings where @ is to repleace ea or a | |||||
| .L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis ainn inn idís aidís éin // word endings where f changes to h | |||||
| .L07 b c g ch bh gh mb | |||||
| .L08 lc ll nt bhse // for words like cailc | |||||
| .L09 cl cr chr f | |||||
| .L10 c ch p ph gl ghl | |||||
| .L11 c dh gh the s nn nne nt tiúil tiúla tíochta theoir theora ste steach ll llí llín g gí mse // word endings preceded by ai | |||||
| .L12 á é ó eo ua // when followed by i | |||||
| .L13 oc omb | |||||
| .L14 río dún gnío // followed with mh | |||||
| .L15 c ch f m d dh g gc gh mh // aoi following | |||||
| .L16 b c bh ch gr ghr // for inn word ending | |||||
| .L17 l le li niste nn | |||||
| .L18 n nt nte neann neadh ntear nim nfear nfinn | |||||
| .L19 na nea ra rea la llea arga // word endings with silent dh | |||||
| .L20 eo eoir eá eabh io iu iú // slender m | |||||
| .L21 ll nn ndán nntán | |||||
| .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine | |||||
| .L23 ea eo i | |||||
| .L24 b mb bh g gh p ph bp m mh | |||||
| .group a | |||||
| a 0# | |||||
| a (_ @ | |||||
| adh (a aI // words like radharc | |||||
| adh (C aI | |||||
| abht aU#t[ | |||||
| amhr aUr // words like amhras | |||||
| K) amhl aUl | |||||
| abhra aUr@ // words like slabhra | |||||
| aghaidh aIg | |||||
| t) abhair u:@r | |||||
| th) abhair u:@r | |||||
| t) abhar u:@r | |||||
| th) abhar u:@r | |||||
| _) an (sL01 @n | |||||
| _) an (- 0n // an prefix | |||||
| é) a @ // words like féach | |||||
| X) a (nn_ aU# | |||||
| X) a (ll_ aU# | |||||
| abha aU@ | |||||
| am (pla aUm | |||||
| ama(_ aU#m@ | |||||
| athair 'ah@r | |||||
| _) amh aU | |||||
| agha aI@ | |||||
| agh (d aI | |||||
| agh (s aI | |||||
| _) ath 0h | |||||
| ai (m_ @ | |||||
| aí i: | |||||
| aoi @i: | |||||
| _) aoi i: | |||||
| ath) aoi (r 'i:@ | |||||
| r) aoi (nín 'e:@ | |||||
| aoicht (_ 'i:@xt[ | |||||
| C) ao (C @e:@ | |||||
| _L24) ao (C w'e:@ | |||||
| C) ao (th_ @e: | |||||
| b) ao (++ we:@ | |||||
| b) ao (th_++ we: | |||||
| ao @e | |||||
| _) ao e: | |||||
| ae e: | |||||
| amhna (_ aUn@ | |||||
| .group á | |||||
| á A: | |||||
| @) á ,A: | |||||
| ádh A: | |||||
| áthair (_ A:h@r | |||||
| áthar A:h@r | |||||
| ái (p A: | |||||
| áinig A:nIg | |||||
| ái 'A:i | |||||
| .group ai | |||||
| ai a# | |||||
| L04) ai (L17 0# | |||||
| aile (_ '0l;E // words like baile | |||||
| Xc) ai (l '0# | |||||
| ch) ai (l '0# | |||||
| m) ai (n 0# | |||||
| c) ai (th 0# | |||||
| ch) ai (th 0# | |||||
| ai (d 0# | |||||
| p) ai (l 0# | |||||
| @) ai (L11_ I | |||||
| ai (L08+ aI# | |||||
| c) ai (l_ I | |||||
| ai (msi 'aI // words like aimsir | |||||
| _L04) ai (L18_++ u1'I//words like bain | |||||
| c) ai (t_ u1'I | |||||
| s) ai (bh E | |||||
| aighre aIr@ | |||||
| X) aigh 'aI | |||||
| aigh aI# L04) aill (_ wi:l | |||||
| aing (_ Ing | |||||
| .group b | |||||
| b b // broad | |||||
| L01) b b; // slender | |||||
| b (L22 bj //slender | |||||
| bh v // broad | |||||
| bh (_ vv | |||||
| bh (L22 vj // slender | |||||
| L01) bh v | |||||
| _) bhf v /urú broad | |||||
| _) bhf (L22 v; // urú slender | |||||
| _) bp b //urú broad | |||||
| _) bp (L01 b; // urú slender | |||||
| a) bh (a U// for example cabhair | |||||
| ear) bha u: // words like Cearbhall | |||||
| bhfaigh v'aI | |||||
| .group c | |||||
| c k | |||||
| c (L01 k; // slender | |||||
| ch x | |||||
| ch (L01 C; | |||||
| ch (é+ C; | |||||
| ch (ei+ x; | |||||
| _) cabhr k'aUr | |||||
| _) chabhr x'aUr | |||||
| .group d | |||||
| d d[ // broad | |||||
| L01) d dZ // slender | |||||
| d (L22 dZ //slender | |||||
| d (L01 d; //slender | |||||
| i) d (i dZ | |||||
| dh Q // broad | |||||
| dh (ui Q //broad | |||||
| dh (ao Q //broad | |||||
| dh (L01 j // slender | |||||
| _) dt d[ //broad urú | |||||
| _) dt (L01 dZ // slender urú | |||||
| _) d' (@P2 d | |||||
| i) dh (_ g | |||||
| a) dh (_ X | |||||
| o) dh (_ X | |||||
| L19) dh (_ // silent dh at wrd end | |||||
| Va) dh (_+ | |||||
| deartháir dr@h'A:r | |||||
| dheartháir gr@h'A:r | |||||
| deirfiúr d;r@f'u:r | |||||
| dheirfiúr g;r@f'u:r | |||||
| .group e | |||||
| e E# | |||||
| eá A: | |||||
| ei E | |||||
| eidh (C aI | |||||
| r) ei (m aI | |||||
| eighea aI | |||||
| eighea aI | |||||
| eigh aI | |||||
| eo o: | |||||
| eogh o: | |||||
| d) eo (ch O# | |||||
| _) eo (ch O# | |||||
| s) eo (_ @ | |||||
| .group é | |||||
| é 'e: | |||||
| éi 'e: | |||||
| _) éi (rig aI // words like éirigh | |||||
| _) éi (rí aI // words like éirí | |||||
| _) éireoidh aIro:Ig | |||||
| éacs e:@ks | |||||
| .group ea | |||||
| ea a# | |||||
| X) ea (L21_ aU | |||||
| ea (ltaine aU | |||||
| g) ea (ll aU | |||||
| X) ea (ch 0 | |||||
| _L04) ea (g @ | |||||
| _L04) ea (dh_ @ | |||||
| _L04) eagn @gn | |||||
| L04) eaga (_ @g@ | |||||
| eaghl aIl | |||||
| eabhra aUr@ // words like Feabhra | |||||
| eanbhean 'an@v,an | |||||
| eadhb aIb | |||||
| .group f | |||||
| f f // broad | |||||
| f (L22 f; // slender | |||||
| fh //silent | |||||
| fh (éin_ h | |||||
| fh (L22 ; //slender | |||||
| @) f (L06_ h | |||||
| .group g | |||||
| g g // broad | |||||
| g (L01 g; // slender | |||||
| _) gh Q" | |||||
| _) gh (L01 Q"j | |||||
| _) gc g // urú broad | |||||
| _) gc (L01 g; // urú slender | |||||
| i) gh (_ g | |||||
| @C) gh (@ X | |||||
| _) gn g@n | |||||
| gh(n X@ | |||||
| gheobh j'o: | |||||
| gabh gaU | |||||
| .group h | |||||
| h h // silent | |||||
| .group i | |||||
| i I | |||||
| _) i I | |||||
| ia i@ | |||||
| ia (tha i: | |||||
| io O# | |||||
| _) io (nadh u:// words like ionadh | |||||
| _pr) io (n u: | |||||
| L16) inn (_ i:n | |||||
| iai i:i | |||||
| impeall i:mp@l | |||||
| io (s I //words like fios and liosta | |||||
| L12) i i // non syllabic short i after long vowel | |||||
| iú u: | |||||
| m) i (d_ i: // verb ending | |||||
| .group k | |||||
| k k | |||||
| .group l | |||||
| l l // broad | |||||
| L01) l ( l; // slender | |||||
| l (L23 l; //slender | |||||
| ll l | |||||
| ll (L23 l; | |||||
| l (g l@ | |||||
| l (b l@ | |||||
| .group m | |||||
| m m // broad | |||||
| m (L20 m; //slender | |||||
| mh v | |||||
| mh (L20 v; // slender | |||||
| _) mb m //urú | |||||
| _) mb (L22 m; // urú slender | |||||
| _) m (n m@// words like mná | |||||
| L14) mh v | |||||
| _) mh (n v@ | |||||
| léir) mheas vas | |||||
| r) m @m // words like gorm | |||||
| .group n | |||||
| n n // broad | |||||
| n (L01 n; // slender | |||||
| _) nd n // urú | |||||
| _) nd (L01 n; // urú slender | |||||
| nn n | |||||
| nn (L01 n; // slender | |||||
| n (b n@ | |||||
| n (m n@ | |||||
| n (bh n@ n(ch n@ | |||||
| c) n @n | |||||
| ch) n @n | |||||
| .group o | |||||
| o O# | |||||
| _) o 'O | |||||
| C) o (cht_ 'O | |||||
| orn (_ 'Or@n | |||||
| _C) omh o: | |||||
| _CC) omh o: | |||||
| omha o:@ | |||||
| omhai o:@ | |||||
| o (ll_ aU | |||||
| C) o (nn_ aU | |||||
| r) o (nn_ O# | |||||
| C) ogh aU | |||||
| omhan(_ aU@n | |||||
| omhain (_ aUIn | |||||
| odha aU | |||||
| opaic @pIk | |||||
| C) odh (_ o: | |||||
| odl (a O#l | |||||
| oí i: | |||||
| .group ó | |||||
| ó 'o: | |||||
| ómhai o:@ | |||||
| .group oi | |||||
| oi O | |||||
| _L15) oi (+ @'I | |||||
| _) oi (b I | |||||
| oi (de I | |||||
| h) oi (b I | |||||
| _) oi (r I | |||||
| r) oi I | |||||
| l) oi (n I | |||||
| f) oi (lC aI | |||||
| l) oi (g I | |||||
| fh) oi (lC aI | |||||
| s) oi (ls aI# | |||||
| c) oi (c aI# | |||||
| oi (nnío @ | |||||
| oi (mis @ | |||||
| ois (++ O#S | |||||
| oill w'i:l | |||||
| _) oi (leá 'I | |||||
| oidh aI | |||||
| oir (_ 'ERR | |||||
| oigh (ea aI | |||||
| .group p | |||||
| p p // broad | |||||
| ph f //broad | |||||
| p (L22 p; //slender | |||||
| ph (L20 f; // slender | |||||
| .group q | |||||
| q k | |||||
| qu k | |||||
| .group r | |||||
| r r // broad | |||||
| L01) r R // slender | |||||
| _) r (L01 R | |||||
| L12i) r (e_ Z | |||||
| L12i) r (t_ Z | |||||
| rr R | |||||
| rg r@g | |||||
| L01) rg R@g // slender | |||||
| r (bh r@ | |||||
| ríomh ri:@v | |||||
| s) r (A R | |||||
| _) ramh raU | |||||
| .group s | |||||
| s s // broad | |||||
| L01) s S // slender | |||||
| s (L01 S // slender | |||||
| s (cL01 S | |||||
| s (CCL01 S // slender | |||||
| s (pCé s // broad | |||||
| sh h | |||||
| sh (CL01 h | |||||
| sh (L01 h; | |||||
| s (lL01 S | |||||
| .group t | |||||
| t t[ // broad | |||||
| L01) t c // slender | |||||
| t (í++n tS //slender | |||||
| t (eo++ tS | |||||
| t (L01 c // slender | |||||
| L01C) t tS //slender after consonant | |||||
| t (CL01 tS // slender with following consonant before vowels | |||||
| th h | |||||
| th (L01 h; | |||||
| L01C) th h | |||||
| _) ts t[ //eclipsis broad | |||||
| _) ts (L01 t; // eclipsis slender | |||||
| L01) th h | |||||
| taine (_ t[In%E | |||||
| ao) th (_ | |||||
| thne (_ h@nE | |||||
| A) th (_ // silent th at word end | |||||
| .group u | |||||
| u U# | |||||
| ua u@ | |||||
| uai u@ | |||||
| uai (g ui | |||||
| uai (d ui | |||||
| uá u:'A: | |||||
| ui I | |||||
| uinn (_ 'i:n | |||||
| uinti U#'i:ntI | |||||
| _b) uí wi: | |||||
| _bh) uí wi: | |||||
| g) uí wi: | |||||
| umh u: | |||||
| L03) ui @I | |||||
| _d) u (l_ O# | |||||
| g) ui (gh_ @i: | |||||
| gh) ui (gh_ @i: | |||||
| uí i: | |||||
| uachai 'ux@ | |||||
| .group ú | |||||
| ú u: | |||||
| únmh u:nv | |||||
| úi (r u: | |||||
| .group j | |||||
| j dZ | |||||
| .group q | |||||
| q k | |||||
| qu (A kw | |||||
| .group v | |||||
| v v | |||||
| .group w | |||||
| w w | |||||
| .group x | |||||
| x ks | |||||
| _) x z | |||||
| .group y | |||||
| y (A j | |||||
| _A) y j | |||||
| y i | |||||
| .group z | |||||
| z z | |||||
| .group | |||||
| í 'i: | |||||
| udvaron) c (ser ts | udvaron) c (ser ts | ||||
| pere) c (cs ts | pere) c (cs ts | ||||
| licen) ccs ts|tS | licen) ccs ts|tS | ||||
| nyol) c (csat ts | |||||
| pokró) c (sá ts | |||||
| .group ch | .group ch | ||||
| anar) ch (i h | anar) ch (i h | ||||
| herná) d (sz d | herná) d (sz d | ||||
| szaba) d (szent d | szaba) d (szent d | ||||
| for) d (jános d | for) d (jános d | ||||
| egye) d (szám d | |||||
| shetlan) d (szige d | |||||
| szaba) d (szem d | |||||
| _tren) dsz (e d|s | |||||
| vakon) d (sz d | |||||
| .group dz | .group dz | ||||
| fogó) dz (kod ts | fogó) dz (kod ts | ||||
| gyűrű) dz (ik z | gyűrű) dz (ik z | ||||
| burkoló) dz z | burkoló) dz z | ||||
| .group e | .group e | ||||
| e E | e E | ||||
| 000_-) el (_ REl // double R for 1000-el | 000_-) el (_ REl // double R for 1000-el | ||||
| világossá) g (gy g | világossá) g (gy g | ||||
| vilá) g (gy g | vilá) g (gy g | ||||
| virá) g (gy g | virá) g (gy g | ||||
| csilla) g (gy g | |||||
| édessé) g (gy g | |||||
| ge) g (gyár g | |||||
| han) g (gy g | |||||
| hazugsá) g (gy g | |||||
| tőze) g (gy g | |||||
| .group gy | .group gy | ||||
| gy J | gy J | ||||
| utá) n (nyom n | utá) n (nyom n | ||||
| verse) ny (játék n^ | verse) ny (játék n^ | ||||
| _elle) n (jav n | _elle) n (jav n | ||||
| vagyo) n (jog n | |||||
| vagyo) n (jog n | |||||
| nny (elv n|n^ | |||||
| .group o | .group o | ||||
| o o | o o | ||||
| s S | s S | ||||
| s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme | s (-sz s: //if have the - character the next word part beginning with sz, always need spokening s: phoneme | ||||
| s-) sz //but not need spokening second sz phoneme | s-) sz //but not need spokening second sz phoneme | ||||
| dns-) sz s | |||||
| dns-) sz s | |||||
| föld) s (ánc S | föld) s (ánc S | ||||
| ?1 hel) s (inki z | ?1 hel) s (inki z | ||||
| ki) s (ebb SS | ki) s (ebb SS | ||||
| ki) s (sziget S | ki) s (sziget S | ||||
| ki) s (szőlő S | ki) s (szőlő S | ||||
| körö) s (szeg S | körö) s (szeg S | ||||
| kolbászo) s S | |||||
| .group ss | .group ss | ||||
| ssz ss2 | ssz ss2 | ||||
| _szamo) ssz Ss | _szamo) ssz Ss | ||||
| _szilvá) ssz Ss | _szilvá) ssz Ss | ||||
| _vámo) ssz Ss | _vámo) ssz Ss | ||||
| keresé) ssz Ss | |||||
| cipő) ssz Ss | |||||
| szorongá) ssz Ss | |||||
| keresé) ssz Ss | |||||
| cipő) ssz Ss | |||||
| szorongá) ssz Ss | |||||
| alkalmazá) ssz Ss | |||||
| kezdé) ssz Ss | |||||
| edzé) ssz Ss | |||||
| egye) ssz (ám Ss | |||||
| felsorolá) ssz Ss | |||||
| ssz (ürk Ss | |||||
| ssz (őke Ss | |||||
| formán) ssz (int Ss | |||||
| hami) ssz (ín Ss | |||||
| mászá) ssz (erű Ss | |||||
| hárma) ssz Ss | |||||
| hívá) ssz Ss | |||||
| hivatkozá) ssz Ss | |||||
| leve) ssz Ss | |||||
| _hú) ssz (öv Ss | |||||
| ismétlé) ssz Ss | |||||
| járá) ssz Ss | |||||
| kattintá) ssz Ss | |||||
| _ki) ssz (öv Ss | |||||
| közlekedé) ssz Ss | |||||
| laká) ssz Ss | |||||
| légzé) ssz Ss | |||||
| _le) ssz (ab Ss | |||||
| meglepeté) ssz Ss | |||||
| nyila) ssz Ss | |||||
| pszichológu) ssz Ss | |||||
| ráko) ssz Ss | |||||
| ritmu) ssz Ss | |||||
| rúzso) ssz Ss | |||||
| stílu) ssz Ss | |||||
| víru) ssz Ss | |||||
| szállodá) ssz Ss | |||||
| taxi) ssz Ss | |||||
| ugrá) ssz Ss | |||||
| üstökö) ssz Ss | |||||
| visszaélé) ssz Ss | |||||
| esé) ssz (erű Ss | |||||
| webe) ssz Ss | |||||
| .group sz | .group sz | ||||
| sz s | sz s | ||||
| para) szts (üte st|S | para) szts (üte st|S | ||||
| para) sztsz (ag st|s | para) sztsz (ag st|s | ||||
| para) szts (uhan st|S | para) szts (uhan st|S | ||||
| sz (avar S|z | |||||
| pénze) sz (k s | |||||
| ellenállá) sz (ón Sz | |||||
| ré) sz (árás Sz | |||||
| .group t | .group t | ||||
| t t | t t | ||||
| vizi) t (szob t | vizi) t (szob t | ||||
| zár) t (szék t | zár) t (szék t | ||||
| szé) t (szortír t | szé) t (szortír t | ||||
| _robo) t (szoftve t | |||||
| _robo) t (szoftve t | |||||
| .group tj | .group tj | ||||
| C) tj c | C) tj c | ||||
| _tisztele) tj (el tj | _tisztele) tj (el tj | ||||
| zené) tj (átsz tj | zené) tj (átsz tj | ||||
| szen) tj (akab tj | szen) tj (akab tj | ||||
| közérze) tj (aví tj | |||||
| közérze) tj (aví tj | |||||
| .group ts | .group ts | ||||
| ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters | ||||
| pö) tsz (en ts: | pö) tsz (en ts: | ||||
| _á) tsz (orult t|s | _á) tsz (orult t|s | ||||
| leme) tsz (vén ts | leme) tsz (vén ts | ||||
| _cha) tsz (ob t|s | |||||
| robo) ts (of t|S | |||||
| _cha) tsz (ob t|s | |||||
| robo) ts (of t|S | |||||
| .group tt | .group tt | ||||
| tt t: | tt t: | ||||
| tí) z (sáv z | tí) z (sáv z | ||||
| _tí) z (shill z | _tí) z (shill z | ||||
| topá) z z | topá) z z | ||||
| dör) zsz (ör Z|z | |||||
| raj) z (sabl z | |||||
| .group | .group | ||||
| $ dolla:R2 | $ dolla:R2 |
| ჺ | ჺ | ||||
| // For cyrillic characters (U+0400 to U+04FF) use Russian voice | // For cyrillic characters (U+0400 to U+04FF) use Russian voice | ||||
| .group 0xd0 | |||||
| 0xd0 _^_RU | |||||
| .group 0xd1 | |||||
| 0xd1 _^_RU | |||||
| .group 0xd2 | |||||
| 0xd2 _^_RU | |||||
| .group 0xd3 | |||||
| 0xd3 _^_RU | |||||
| //.group 0xd0 | |||||
| // 0xd0 _^_RU | |||||
| //.group 0xd1 | |||||
| // 0xd1 _^_RU | |||||
| //.group 0xd2 | |||||
| // 0xd2 _^_RU | |||||
| //.group 0xd3 | |||||
| // 0xd3 _^_RU | |||||
| .group | .group | ||||
| $ dolari | $ dolari |
| apego $alt2 $noun | apego $alt2 $noun | ||||
| apelo $alt $verb | apelo $alt $verb | ||||
| aposto $alt $verb | aposto $alt $verb | ||||
| apreço $alt2 | |||||
| aperto $alt2 $noun | aperto $alt2 $noun | ||||
| apoio $alt $verb | apoio $alt $verb | ||||
| aprovo $alt | aprovo $alt | ||||
| chovesse $alt2 | chovesse $alt2 | ||||
| chupeta $alt2 | chupeta $alt2 | ||||
| clamores $alt2 | clamores $alt2 | ||||
| clero $alt | |||||
| coco $alt2 | coco $alt2 | ||||
| cofre $alt | cofre $alt | ||||
| cogumelo $alt | cogumelo $alt | ||||
| palheta $alt2 | palheta $alt2 | ||||
| panfleto $alt2 | panfleto $alt2 | ||||
| pangeia $alt | pangeia $alt | ||||
| panqueca p,&~Nk'Ek& | |||||
| pantera $alt | pantera $alt | ||||
| paralelo $alt | paralelo $alt | ||||
| parede $alt2 | parede $alt2 | ||||
| pose $alt2 | pose $alt2 | ||||
| povos $alt | povos $alt | ||||
| poxa p'oS& | poxa p'oS& | ||||
| preço $alt2 | |||||
| primavera $alt | primavera $alt | ||||
| provo $alt | provo $alt | ||||
| quarteto $alt2 | quarteto $alt2 |
| // translation rules Brazilian | // translation rules Brazilian | ||||
| // translation rules Brazilian | |||||
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| // Options | // Options | ||||
| _entend) e (L06_ e | _entend) e (L06_ e | ||||
| _estend) e (L06_ e | _estend) e (L06_ e | ||||
| respond) e (L06_ e // cor- | respond) e (L06_ e // cor- | ||||
| _enraivec) e (L07_ e | |||||
| _espairec) e (L07_ e | |||||
| bat) e (L07_ e // re- com- | bat) e (L07_ e // re- com- | ||||
| ced) e (L07_ e // pro- con- su- | ced) e (L07_ e // pro- con- su- | ||||
| met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | ||||
| preend) e (L07_ e // sur- com- | preend) e (L07_ e // sur- com- | ||||
| respond) e (L07_ e // cor- | respond) e (L07_ e // cor- | ||||
| qu) e (brL04_ E | qu) e (brL04_ E | ||||
| acel) e (rL04_ E / des- | |||||
| _hosp) e (dL03_ E | _hosp) e (dL03_ E | ||||
| _in) e (ptL03_ E | |||||
| _gr) e (gL03_ e | _gr) e (gL03_ e | ||||
| _n) e (grL03_ e | _n) e (grL03_ e | ||||
| _estr) ei (L03_ EI | _estr) ei (L03_ EI | ||||
| _bez) e (rrL03_ e | _bez) e (rrL03_ e | ||||
| _inv) e (rtL03_ e | _inv) e (rtL03_ e | ||||
| _f) e (rvL03_ e | _f) e (rvL03_ e | ||||
| _enraiv) e (çL03_ e | |||||
| _p) e (sL01_ E | _p) e (sL01_ E | ||||
| _d) e (scL02_ E | _d) e (scL02_ E | ||||
| _cr) e (scL02_ E | _cr) e (scL02_ E | ||||
| conh) e (çL03_ e // re- | conh) e (çL03_ e // re- | ||||
| _esqu) e (çL03_ e | _esqu) e (çL03_ e | ||||
| _forn) e (çL03_ e | _forn) e (çL03_ e | ||||
| _obed) e (çL03_ e | |||||
| obed) e (çL03_ e / des- | |||||
| _ofer) e (çL03_ e | _ofer) e (çL03_ e | ||||
| pr) e (çL03_ e / a- | |||||
| _espair) e (çL03_ e | |||||
| abast) e (çL03_ e // re- | abast) e (çL03_ e // re- | ||||
| _aborr) e (çL03_ e | _aborr) e (çL03_ e | ||||
| _agrad) e (çL03_ e | _agrad) e (çL03_ e |
| _) ச (வான tSV | _) ச (வான tSV | ||||
| _) ச (ாக்கட்டி tS | _) ச (ாக்கட்டி tS | ||||
| _) சாக்ப (ீL04 tSa:kp | _) சாக்ப (ீL04 tSa:kp | ||||
| _) சாக்லெட் tSa:klet. | |||||
| _) சாக்லேட் tSa:kle:t. | _) சாக்லேட் tSa:kle:t. | ||||
| _) சா (ட்டர்ஜி tSe: | _) சா (ட்டர்ஜி tSe: | ||||
| _) ச (ாணக்கிய tS | _) ச (ாணக்கிய tS | ||||
| ஆ) ச (ாரங்கள tS | ஆ) ச (ாரங்கள tS | ||||
| ஆ) ச (ாரத் tS | ஆ) ச (ாரத் tS | ||||
| ஆ) ச (ாரம tS | ஆ) ச (ாரம tS | ||||
| _சிவா) ச (ாரி tS | |||||
| _ரங்கா) ச (ாரி tS | _ரங்கா) ச (ாரி tS | ||||
| _வரதா) ச (ாரி tS | _வரதா) ச (ாரி tS | ||||
| _வேதா) ச (ாரி tS | _வேதா) ச (ாரி tS | ||||
| _கிருஷ்ணமா) ச (ாரி tS | _கிருஷ்ணமா) ச (ாரி tS | ||||
| _தேசிகா) ச (ாரி tS | _தேசிகா) ச (ாரி tS | ||||
| _பட்டா) ச (ாரி tS | _பட்டா) ச (ாரி tS | ||||
| _மத்வா) ச (ாரி tS | |||||
| அனந்தா) ச (ாரி tS | அனந்தா) ச (ாரி tS | ||||
| அன்னமா) ச (ாரி tS | அன்னமா) ச (ாரி tS | ||||
| ஆ) ச (ாரிய_ tS | ஆ) ச (ாரிய_ tS | ||||
| _) ப (ட்டக்ஸ bV | _) ப (ட்டக்ஸ bV | ||||
| _) ப (ட்டன bV | _) ப (ட்டன bV | ||||
| _) ப (ட்டன_ pV | _) ப (ட்டன_ pV | ||||
| _) ப (ட்டாசாரி bV | |||||
| _) ப (தில bV | _) ப (தில bV | ||||
| _) பத்த (ிரகாளி bVdd | _) பத்த (ிரகாளி bVdd | ||||
| _) பத்திரப் (_ bVttirVp | _) பத்திரப் (_ bVttirVp | ||||
| _) ப (ிடில f | _) ப (ிடில f | ||||
| _) ப (ிட்சு b | _) ப (ிட்சு b | ||||
| _) ப (ிட்டடி b | _) ப (ிட்டடி b | ||||
| _) பிந்தி (ரன்வாலே bind | |||||
| _) ப (ினாமி b | _) ப (ினாமி b | ||||
| _) ப (ினிஷ f | _) ப (ினிஷ f | ||||
| _) ப (ின்_லேடன b | _) ப (ின்_லேடன b | ||||
| _மL06ாப்) பி (ரப p | _மL06ாப்) பி (ரப p | ||||
| வீண்) பி (ரமை b | வீண்) பி (ரமை b | ||||
| துஷ்) பி (ரயோக p | துஷ்) பி (ரயோக p | ||||
| _சொற்) பி (ரயோக p | |||||
| L03ந்தப்) பி (ரளய p | L03ந்தப்) பி (ரளய p | ||||
| _சொற்) பி (ரவாக p | _சொற்) பி (ரவாக p | ||||
| எக்ஸ்) பிர (ஸ pre | எக்ஸ்) பிர (ஸ pre |
| //================================ | //================================ | ||||
| // Consonants | // Consonants | ||||
| //================================ | //================================ | ||||
| .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve | |||||
| .L02 n | |||||
| .group b | .group b | ||||
| b b | b b | ||||
| _) b _b | _) b _b | ||||
| //b($w_alt2 _^_EN | |||||
| .group c | .group c | ||||
| c g //k | c g //k | ||||
| c (_ kh | c (_ kh | ||||
| ch c // try [tS;] [tS] [c] | ch c // try [tS;] [tS] [c] | ||||
| ce (_ _^_EN | |||||
| _) cl _^_EN | |||||
| .group d | .group d | ||||
| d J^ // try [z] [J] [dZ] [dZ;] [J^] | d J^ // try [z] [J] [dZ] [dZ;] [J^] | ||||
| d (_ _^_EN | |||||
| .group đ | .group đ | ||||
| đ d | đ d | ||||
| _) đ _d | _) đ _d | ||||
| .group f | .group f | ||||
| f f | |||||
| //f f | |||||
| _) f _^_EN | |||||
| f (_ _^_EN | |||||
| .group g | .group g | ||||
| g Q // try [g] [Q] | g Q // try [g] [Q] | ||||
| gh Q // or [g] [Q] | gh Q // or [g] [Q] | ||||
| //g (í J^ | //g (í J^ | ||||
| //g (ỉ J^ | //g (ỉ J^ | ||||
| //g (ĩ J^ | //g (ĩ J^ | ||||
| //g (ị J^ | |||||
| //g (ị J^ | |||||
| gi J^ | gi J^ | ||||
| ?1 giết J^'iE3g | ?1 giết J^'iE3g | ||||
| giết J^'iE3t[ | giết J^'iE3t[ | ||||
| ?1 giệt J^'iE6g | ?1 giệt J^'iE6g | ||||
| giệt J^'iE6t[ | giệt J^'iE6t[ | ||||
| giệc J^'iE6kh | giệc J^'iE6kh | ||||
| _) gol _^_EN | |||||
| _) gat _^_EN | |||||
| ght (_ _^_EN | |||||
| .group h | .group h | ||||
| h h | h h | ||||
| .group j | .group j | ||||
| j Z | j Z | ||||
| .group k | .group k | ||||
| k k | k k | ||||
| k (_ kh | |||||
| //k (_ kh | |||||
| kh x | kh x | ||||
| k (_ _^_EN | |||||
| .group l | .group l | ||||
| l l | l l | ||||
| l (_ _^_EN | |||||
| le (_ _^_EN | |||||
| .group m | .group m | ||||
| m m | m m | ||||
| .group n | .group n | ||||
| n n | n n | ||||
| ng N | ng N | ||||
| ngh N | ngh N | ||||
| nh n^ | nh n^ | ||||
| nd (_ _^_EN | |||||
| .group ñ | .group ñ | ||||
| ñ n^ | ñ n^ | ||||
| .group p | .group p | ||||
| p p | p p | ||||
| ph f | ph f | ||||
| .group q | .group q | ||||
| q k | q k | ||||
| q (_ kh | q (_ kh | ||||
| qu w //kw | qu w //kw | ||||
| .group r | .group r | ||||
| r z. // try [z] [z.] [r] [z;] | r z. // try [z] [z.] [r] [z;] | ||||
| r (_ _^_EN | |||||
| rm (_ _^_EN | |||||
| .group s | .group s | ||||
| s s. // try [s.] [s] [S] | s s. // try [s.] [s] [S] | ||||
| _) sh _^_EN | |||||
| s (_ _^_EN | |||||
| st (_ _^_EN | |||||
| se (_ _^_EN | |||||
| .group t | .group t | ||||
| t t[ | t t[ | ||||
| ?1 t (_ g | ?1 t (_ g | ||||
| th t | th t | ||||
| tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] | ||||
| ts (_ _^_EN | |||||
| te (_ _^_EN | |||||
| th (_ _^_EN | |||||
| tt (_ _^_EN | |||||
| .group v | .group v | ||||
| v v | v v | ||||
| ve (_ _^_EN | |||||
| .group w | .group w | ||||
| w w | w w | ||||
| _) w _^_EN | |||||
| w (_ _^_EN | |||||
| .group x | .group x | ||||
| x s | x s | ||||
| x (_ _^_EN | |||||
| .group z | .group z | ||||
| z z | z z | ||||
| z (_ _^_EN | |||||
| //================================ | //================================ | ||||
| // Vowels | // Vowels | ||||
| //================================ | //================================ | ||||
| .group a | .group a | ||||
| a a: | a a: | ||||
| aủ aU4 | aủ aU4 | ||||
| aũ aU5 | aũ aU5 | ||||
| aụ aU6 | aụ aU6 | ||||
| a (L01 _^_EN | |||||
| ai (L02 _^_EN | |||||
| .group à | .group à | ||||
| à a:2 | à a:2 | ||||
| ài a:I2 | ài a:I2 | ||||
| ày aI2 | ày aI2 | ||||
| ào a:U2 | ào a:U2 | ||||
| àu aU2 | àu aU2 | ||||
| .group á | .group á | ||||
| á a:3 | á a:3 | ||||
| ái a:I3 | ái a:I3 | ||||
| áy aI3 | áy aI3 | ||||
| áo a:U3 | áo a:U3 | ||||
| áu aU3 | áu aU3 | ||||
| .group ả | .group ả | ||||
| ả a:4 | ả a:4 | ||||
| ải a:I4 | ải a:I4 | ||||
| ảy aI4 | ảy aI4 | ||||
| ảo a:U4 | ảo a:U4 | ||||
| ảu aU4 | ảu aU4 | ||||
| .group ã | .group ã | ||||
| ã a:5 | ã a:5 | ||||
| ãi a:I5 | ãi a:I5 | ||||
| ãy aI5 | ãy aI5 | ||||
| ão a:U5 | ão a:U5 | ||||
| ãu aU5 | ãu aU5 | ||||
| .group ạ | .group ạ | ||||
| ạ a:6 | ạ a:6 | ||||
| ại a:I6 | ại a:I6 | ||||
| ạy aI6 | ạy aI6 | ||||
| ạo a:U6 | ạo a:U6 | ||||
| ạu aU6 | ạu aU6 | ||||
| //================================ | //================================ | ||||
| .group ă | .group ă | ||||
| ă a | ă a | ||||
| .group ằ | .group ằ | ||||
| ằ a2 | ằ a2 | ||||
| .group ắ | .group ắ | ||||
| ắ a3 | ắ a3 | ||||
| .group ẳ | .group ẳ | ||||
| ẳ a4 | ẳ a4 | ||||
| .group ẵ | .group ẵ | ||||
| ẵ a5 | ẵ a5 | ||||
| .group ặ | .group ặ | ||||
| ặ a6 | ặ a6 | ||||
| //================================= | //================================= | ||||
| .group â | .group â | ||||
| â @ | â @ | ||||
| ây @I | ây @I | ||||
| âu @U1 | |||||
| âu @U1 | |||||
| .group ầ | .group ầ | ||||
| ầ @2 | ầ @2 | ||||
| ầy @I2 | ầy @I2 | ||||
| ầu @U2 | ầu @U2 | ||||
| .group ấ | .group ấ | ||||
| ấ @3 | ấ @3 | ||||
| ấy @I3 | ấy @I3 | ||||
| ấu @U3 | ấu @U3 | ||||
| .group ẩ | .group ẩ | ||||
| ẩ @4 | ẩ @4 | ||||
| ẩy @I4 | ẩy @I4 | ||||
| ẩu @U4 | ẩu @U4 | ||||
| .group ẫ | .group ẫ | ||||
| ẫ @5 | ẫ @5 | ||||
| ẫy @I5 | ẫy @I5 | ||||
| ẫu @U5 | ẫu @U5 | ||||
| .group ậ | .group ậ | ||||
| ậ @6 | ậ @6 | ||||
| ậy @I6 | ậy @I6 | ||||
| ậu @U6 | ậu @U6 | ||||
| //=========================== | //=========================== | ||||
| .group e | .group e | ||||
| e E | e E | ||||
| eỏ EU4 | eỏ EU4 | ||||
| eỗ EU5 | eỗ EU5 | ||||
| eọ EU6 | eọ EU6 | ||||
| e (L01 _^_EN | |||||
| ey (_ _^_EN | |||||
| .group è | .group è | ||||
| è E2 | è E2 | ||||
| èo EU2 | èo EU2 | ||||
| .group é | .group é | ||||
| é E3 | é E3 | ||||
| éo EU3 | éo EU3 | ||||
| .group ẻ | .group ẻ | ||||
| ẻ E4 | ẻ E4 | ||||
| ẻo EU4 | ẻo EU4 | ||||
| .group ẽ | .group ẽ | ||||
| ẽ E5 | ẽ E5 | ||||
| ẽo EU5 | ẽo EU5 | ||||
| .group ẹ | .group ẹ | ||||
| ẹ E6 | ẹ E6 | ||||
| ẹo EU6 | ẹo EU6 | ||||
| //============================ | //============================ | ||||
| .group ê | .group ê | ||||
| ê e | ê e | ||||
| êu eU1 | êu eU1 | ||||
| .group ề | .group ề | ||||
| ề e2 | ề e2 | ||||
| ều eU2 | ều eU2 | ||||
| .group ế | .group ế | ||||
| ế e3 | ế e3 | ||||
| ếu eU3 | ếu eU3 | ||||
| .group ể | .group ể | ||||
| ể e4 | ể e4 | ||||
| ểu eU4 | ểu eU4 | ||||
| .group ễ | .group ễ | ||||
| ễ e5 | ễ e5 | ||||
| ễu eU5 | ễu eU5 | ||||
| .group ệ | .group ệ | ||||
| ệ e6 | ệ e6 | ||||
| ệu eU6 | ệu eU6 | ||||
| //============================ | //============================ | ||||
| .group i | .group i | ||||
| i i | i i | ||||
| i (A j | i (A j | ||||
| iểu iU4 | iểu iU4 | ||||
| iễu iU5 | iễu iU5 | ||||
| iệu iU6 | iệu iU6 | ||||
| i (L01 _^_EN | |||||
| .group ì | .group ì | ||||
| ì i2 | ì i2 | ||||
| ì (A j2 | ì (A j2 | ||||
| ìa i@2 | ìa i@2 | ||||
| ìu iU2 | ìu iU2 | ||||
| .group í | .group í | ||||
| í i3 | í i3 | ||||
| í (A j3 | í (A j3 | ||||
| ía i@3 | ía i@3 | ||||
| íu iU3 | íu iU3 | ||||
| .group ỉ | .group ỉ | ||||
| ỉ i4 | ỉ i4 | ||||
| ỉ (A j4 | ỉ (A j4 | ||||
| ỉa i@4 | ỉa i@4 | ||||
| ỉu iU4 | ỉu iU4 | ||||
| .group ĩ | .group ĩ | ||||
| ĩ i5 | ĩ i5 | ||||
| ĩ (A j5 | ĩ (A j5 | ||||
| ĩa i@5 | ĩa i@5 | ||||
| ĩu iU5 | ĩu iU5 | ||||
| .group ị | .group ị | ||||
| ị i6 | ị i6 | ||||
| ị (A j6 | ị (A j6 | ||||
| ịa i@6 | ịa i@6 | ||||
| ịu iU6 | ịu iU6 | ||||
| //========================= | //========================= | ||||
| .group o | .group o | ||||
| o O | o O | ||||
| oa o@ // modify oa sound example: hoa,khoa // o (A w | oa o@ // modify oa sound example: hoa,khoa // o (A w | ||||
| oị OI6 | oị OI6 | ||||
| ong O# | ong O# | ||||
| oe o& // Adding oe sound example: lóe sáng,toét mắt | oe o& // Adding oe sound example: lóe sáng,toét mắt | ||||
| o (L01 _^_EN | |||||
| .group ò | .group ò | ||||
| ò O2 | ò O2 | ||||
| òi OI2 | òi OI2 | ||||
| òa o@2 //ò (A w2 | òa o@2 //ò (A w2 | ||||
| òng O#2 | òng O#2 | ||||
| òe o&2 | òe o&2 | ||||
| .group ó | .group ó | ||||
| ó O3 | ó O3 | ||||
| óa o@3 //ó (A w3 | óa o@3 //ó (A w3 | ||||
| óng O#3 | óng O#3 | ||||
| óe o&3 | óe o&3 | ||||
| .group ỏ | .group ỏ | ||||
| ỏ O4 | ỏ O4 | ||||
| ỏa o@4 //ỏ (A w4 | ỏa o@4 //ỏ (A w4 | ||||
| ỏng O#4 | ỏng O#4 | ||||
| ỏe o&4 | ỏe o&4 | ||||
| .group õ | .group õ | ||||
| õ O5 | õ O5 | ||||
| õa o@5 //õ (A w5 | õa o@5 //õ (A w5 | ||||
| õng O#5 | õng O#5 | ||||
| õe o&5 | õe o&5 | ||||
| .group ọ | .group ọ | ||||
| ọ O6 | ọ O6 | ||||
| ọa o@6 //ọ (A w6 | ọa o@6 //ọ (A w6 | ||||
| ọng O#6 | ọng O#6 | ||||
| ọe o&6 | ọe o&6 | ||||
| //============================= | //============================= | ||||
| .group ô | .group ô | ||||
| ô o | ô o | ||||
| ôi oI | ôi oI | ||||
| ông o# // ông sound | ông o# // ông sound | ||||
| .group ồ | .group ồ | ||||
| ồ o2 | ồ o2 | ||||
| ồi oI2 | ồi oI2 | ||||
| ồng o#2 | ồng o#2 | ||||
| .group ố | .group ố | ||||
| ố o3 | ố o3 | ||||
| ối oI3 | ối oI3 | ||||
| ống o#3 | ống o#3 | ||||
| .group ổ | .group ổ | ||||
| ổ o4 | ổ o4 | ||||
| ổi oI4 | ổi oI4 | ||||
| ổng o#4 | ổng o#4 | ||||
| .group ỗ | .group ỗ | ||||
| ỗ o5 | ỗ o5 | ||||
| ỗi oI5 | ỗi oI5 | ||||
| ỗng o#5 | ỗng o#5 | ||||
| .group ộ | .group ộ | ||||
| ộ o6 | ộ o6 | ||||
| ội oI6 | ội oI6 | ||||
| ộng o#6 | ộng o#6 | ||||
| //============================= | //============================= | ||||
| .group ơ | .group ơ | ||||
| ơ @: | ơ @: | ||||
| ơi @:I | ơi @:I | ||||
| ơu @:U | ơu @:U | ||||
| .group ờ | .group ờ | ||||
| ờ @:2 | ờ @:2 | ||||
| ời @:I2 | ời @:I2 | ||||
| ờu @:U2 | ờu @:U2 | ||||
| .group ớ | .group ớ | ||||
| ớ @:3 | ớ @:3 | ||||
| ới @:I3 | ới @:I3 | ||||
| ớu @:U3 | ớu @:U3 | ||||
| .group ở | .group ở | ||||
| ở @:4 | ở @:4 | ||||
| ởi @:I4 | ởi @:I4 | ||||
| ởu @:U4 | ởu @:U4 | ||||
| .group ỡ | .group ỡ | ||||
| ỡ @:5 | ỡ @:5 | ||||
| ỡi @:I5 | ỡi @:I5 | ||||
| ỡu @:U5 | ỡu @:U5 | ||||
| .group ợ | .group ợ | ||||
| ợ @:6 | ợ @:6 | ||||
| ợi @:I6 | ợi @:I6 | ||||
| ợu @:U6 | ợu @:U6 | ||||
| //============================= | //============================= | ||||
| .group u | .group u | ||||
| u u | u u | ||||
| u (A w | u (A w | ||||
| uỗi u@j5 | uỗi u@j5 | ||||
| uội u@j6 | uội u@j6 | ||||
| //ung u# | //ung u# | ||||
| u (L01 _^_EN | |||||
| ui (L01 _^_EN | |||||
| ua (L01 _^_EN | |||||
| .group ù | .group ù | ||||
| ù u2 | ù u2 | ||||
| ù (A w2 | ù (A w2 | ||||
| ùi uI2 | ùi uI2 | ||||
| ùa u@2 | ùa u@2 | ||||
| //ùng u#2 | //ùng u#2 | ||||
| .group ú | .group ú | ||||
| ú u3 | ú u3 | ||||
| úi uI3 | úi uI3 | ||||
| úa u@3 | úa u@3 | ||||
| //úng u#3 | //úng u#3 | ||||
| .group ủ | .group ủ | ||||
| ủ u4 | ủ u4 | ||||
| ủi uI4 | ủi uI4 | ||||
| ủa u@4 | ủa u@4 | ||||
| //ủng u#4 | //ủng u#4 | ||||
| .group ũ | .group ũ | ||||
| ũ u5 | ũ u5 | ||||
| ũi uI5 | ũi uI5 | ||||
| ũa u@5 | ũa u@5 | ||||
| //ũng u#5 | //ũng u#5 | ||||
| .group ụ | .group ụ | ||||
| ụ u6 | ụ u6 | ||||
| ụi uI6 | ụi uI6 | ||||
| ụa u@6 | ụa u@6 | ||||
| //ụng u#6 | //ụng u#6 | ||||
| //============================= | //============================= | ||||
| .group ư | .group ư | ||||
| ư y | ư y | ||||
| ưi yI | ưi yI | ||||
| ưởu y@w4 | ưởu y@w4 | ||||
| ưỡu y@w5 | ưỡu y@w5 | ||||
| ượu y@w6 | ượu y@w6 | ||||
| .group ừ | .group ừ | ||||
| ừ y2 | ừ y2 | ||||
| ừi yI2 | ừi yI2 | ||||
| ừa y@2 | ừa y@2 | ||||
| ừu yw2 | ừu yw2 | ||||
| .group ứ | .group ứ | ||||
| ứ y3 | ứ y3 | ||||
| ứi yI3 | ứi yI3 | ||||
| ứa y@3 | ứa y@3 | ||||
| ứu yw3 | ứu yw3 | ||||
| .group ử | .group ử | ||||
| ử y4 | ử y4 | ||||
| ửi yI4 | ửi yI4 | ||||
| ửa y@4 | ửa y@4 | ||||
| ửu yw4 | ửu yw4 | ||||
| .group ữ | .group ữ | ||||
| ữ y5 | ữ y5 | ||||
| ữi yI5 | ữi yI5 | ||||
| ữa y@5 | ữa y@5 | ||||
| ữu yw5 | ữu yw5 | ||||
| .group ự | .group ự | ||||
| ự y6 | ự y6 | ||||
| ựi yI6 | ựi yI6 | ||||
| ựa y@6 | ựa y@6 | ||||
| ựu yw6 | ựu yw6 | ||||
| //============================= | |||||
| .group y | .group y | ||||
| y i | y i | ||||
| yễ i@5 | yễ i@5 | ||||
| yệ i@6 | yệ i@6 | ||||
| // yêu i@U | // yêu i@U | ||||
| .group ỳ | .group ỳ | ||||
| ỳ i2 | ỳ i2 | ||||
| ỳ (A j2 | ỳ (A j2 | ||||
| ỳa i@2 | ỳa i@2 | ||||
| .group ý | .group ý | ||||
| ý i3 | ý i3 | ||||
| ý (A j3 | ý (A j3 | ||||
| ýa i@3 | ýa i@3 | ||||
| .group ỷ | .group ỷ | ||||
| ỷ i4 | ỷ i4 | ||||
| ỷ (A j4 | ỷ (A j4 | ||||
| ỷa i@4 | ỷa i@4 | ||||
| .group ỹ | .group ỹ | ||||
| ỹ i5 | ỹ i5 | ||||
| ỹ (A j5 | ỹ (A j5 | ||||
| ỹa i@5 | ỹa i@5 | ||||
| .group ỵ | .group ỵ | ||||
| ỵ i6 | ỵ i6 | ||||
| ỵ (A j6 | ỵ (A j6 | ||||
| ỵa i@6 | ỵa i@6 | ||||
| //============================= | |||||
| .group 0xce // Greek letters | .group 0xce // Greek letters | ||||
| // 0xce is the first byte of the utf-8 code for these characters | // 0xce is the first byte of the utf-8 code for these characters | ||||
| α a:1n_|f'a:1 | α a:1n_|f'a:1 | ||||
| ά a:1n_|f'a:1 | ά a:1n_|f'a:1 | ||||
| β b'e1_|t['a:1 | β b'e1_|t['a:1 | ||||
| ν nw'i1 | ν nw'i1 | ||||
| ξ s'i7 | ξ s'i7 | ||||
| ο o1_|m'i1_|kz.'O7n | ο o1_|m'i1_|kz.'O7n | ||||
| .group 0xcf // Greek letters | .group 0xcf // Greek letters | ||||
| π p'i1 | π p'i1 | ||||
| ρ z.'o1 | ρ z.'o1 | ||||
| σ s'i3c_|m'a:1 | σ s'i3c_|m'a:1 | ||||
| ω o1_|m'e1_|Q'a:7 | ω o1_|m'e1_|Q'a:7 | ||||
| ώ o1_|m'e1_|Q'a:7 | ώ o1_|m'e1_|Q'a:7 | ||||
| ό o1_|m'i1_|kz.'O7n | ό o1_|m'i1_|kz.'O7n | ||||
| .group | .group | ||||
| % f'@2n||cr'am | % f'@2n||cr'am | ||||
| ! _:c'@3m_|t'a:7n_: | ! _:c'@3m_|t'a:7n_: | ||||
| ! (\! | |||||
| ! (\! | |||||
| // : koUl@n | // : koUl@n | ||||
| D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | D_) h (_DD_ D'@:2 // omit colon in time, eg: 2:30 | ||||
| $ d'o||l'a | $ d'o||l'a | ||||
| != x'o#_|_b'a2N_ | != x'o#_|_b'a2N_ | ||||
| >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N | ||||
| <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N | ||||
| __) - (_D cr'y2 | __) - (_D cr'y2 | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| . c'@3m_ | . c'@3m_ | ||||
| . (. _: | . (. _: | ||||
| \.) . | |||||
| \.) . | |||||
| NextVowelStarts | NextVowelStarts | ||||
| VowelStart(j/j@) | VowelStart(j/j@) | ||||
| VowelStart(j/ja) | VowelStart(j/ja) | ||||
| VowelStart(j/je,-60) | |||||
| VowelStart(j/je,-40) | |||||
| VowelStart(j/ji) | VowelStart(j/ji) | ||||
| VowelStart(j/jo) | VowelStart(j/jo) | ||||
| VowelStart(j/ju) | VowelStart(j/ju) |
| phoneme a | phoneme a | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 180 | length 180 | ||||
| FMT(vowel/a#_2) | |||||
| IF thisPh(isUnstressed) THEN | |||||
| FMT(vowel/a#_2) | |||||
| ENDIF | |||||
| FMT(vowel/a_3) | |||||
| endphoneme | endphoneme | ||||
| Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | Vowelin f1=1 f2=1400 -100 100 f3=-150 80 | ||||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | ||||
| IF nextPh(isPause2) THEN | IF nextPh(isPause2) THEN | ||||
| WAV(ustop/k_asp2, 40) | |||||
| WAV(ustop/k_asp, 40) | |||||
| ENDIF | ENDIF | ||||
| IF nextPh(l) THEN | |||||
| WAV(ustop/kl) | |||||
| 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) | |||||
| ELSE | |||||
| WAV(ustop/k_asp_a, 45) | |||||
| ENDIF | ENDIF | ||||
| WAV(ustop/k_asp2, 60) | |||||
| endphoneme | endphoneme | ||||
| import_phoneme consonants/k- | import_phoneme consonants/k- | ||||
| endphoneme | endphoneme | ||||
| phoneme q | |||||
| vls uvl stop | |||||
| lengthmod 2 | |||||
| Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 | |||||
| Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 | |||||
| IF nextPh(#i) THEN | |||||
| WAV(ustop/q2_i, 40) | |||||
| ENDIF | |||||
| WAV(ustop/q2, 48) | |||||
| endphoneme | |||||
| phoneme Q | phoneme Q | ||||
| import_phoneme base/r" | |||||
| vcd vel frc | |||||
| voicingswitch x | |||||
| lengthmod 6 | |||||
| Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| FMT(voc/Q) addWav(ufric/xx, 100) | |||||
| endphoneme | |||||
| phoneme Q2 | |||||
| vcd vel frc | |||||
| voicingswitch x | |||||
| lengthmod 6 | |||||
| Vowelin f1=2 f2=2300 200 400 f3=-100 80 | |||||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||||
| FMT(voc/Q) addWav(ufric/x2, 50) | |||||
| endphoneme | endphoneme | ||||
| phoneme r | phoneme r | ||||
| import_phoneme base/R | import_phoneme base/R | ||||
| endphoneme | endphoneme |
| // Version 2.4 January 2013 | |||||
| // short vowels | // short vowels | ||||
| phoneme @ | |||||
| vowel starttype #@ endtype #@ | |||||
| phoneme @ // Schwa, but always unstressed | |||||
| vowel starttype #@ endtype #@ | |||||
| unstressed | |||||
| length 100 | |||||
| IF nextPh(i:) THEN | |||||
| Length 70 | |||||
| FMT(vwl_af/r@) | |||||
| ENDIF | |||||
| IF nextPh(I) THEN | |||||
| Length 70 | |||||
| FMT(vwl_af/r@) | |||||
| ENDIF | |||||
| IF nextPh(e:) THEN | |||||
| Length 70 | |||||
| FMT(vwl_af/r@) | |||||
| ENDIF | |||||
| FMT(vwl_af/@) | |||||
| endphoneme | |||||
| phoneme @/ | |||||
| vowel starttype #@ endtype #@ | |||||
| length 120 | length 120 | ||||
| FMT(vowel/@) | FMT(vowel/@) | ||||
| endphoneme | endphoneme | ||||
| phoneme a | phoneme a | ||||
| vowel starttype #a endtype #a | vowel starttype #a endtype #a | ||||
| length 200 | |||||
| length 150 | |||||
| FMT(vowel/a_4) | FMT(vowel/a_4) | ||||
| endphoneme | endphoneme | ||||
| phoneme a# | phoneme a# | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| ipa ɐ | |||||
| length 120 | length 120 | ||||
| ChangeIfStressed(a) | ChangeIfStressed(a) | ||||
| FMT(vowel/a#_3) | FMT(vowel/a#_3) | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 120 | length 120 | ||||
| ChangeIfStressed(E) | ChangeIfStressed(E) | ||||
| FMT(vowel/@) | |||||
| ChangePhoneme(@/) | |||||
| endphoneme | endphoneme | ||||
| phoneme I | phoneme I | ||||
| vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
| length 120 | length 120 | ||||
| IfNextVowelAppend(;) | |||||
| FMT(vowel/ii_2) | FMT(vowel/ii_2) | ||||
| endphoneme | endphoneme | ||||
| phoneme I# | |||||
| vowel starttype #@ endtype #@ | |||||
| length 120 | |||||
| ChangeIfStressed(I) | |||||
| IfNextVowelAppend(;) | |||||
| FMT(vowel/@) | |||||
| phoneme i // non syllabic i for end of words | |||||
| vowel starttype #i endtype #i | |||||
| ipa iU+032F | |||||
| length 40 | |||||
| FMT(vowel/ii_7) | |||||
| endphoneme | endphoneme | ||||
| phoneme O | phoneme O | ||||
| vowel starttype #o endtype #o | |||||
| vowel starttype #a endtype #@ | |||||
| length 140 | length 140 | ||||
| FMT(vowel/oo_4) | |||||
| FMT(vowel/V_4) | |||||
| endphoneme | endphoneme | ||||
| phoneme O# | phoneme O# | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 120 | length 120 | ||||
| ChangeIfStressed(O) | ChangeIfStressed(O) | ||||
| FMT(vowel/@) | |||||
| ChangePhoneme(a#) | |||||
| endphoneme | endphoneme | ||||
| vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
| length 120 | length 120 | ||||
| ChangeIfStressed(U) | ChangeIfStressed(U) | ||||
| FMT(vowel/@) | |||||
| ChangePhoneme(@/) | |||||
| endphoneme | |||||
| phoneme u1 | |||||
| vowel starttype #u endtype #u | |||||
| ipa uU+0306 | |||||
| length 50 | |||||
| FMT(vowel/u) | |||||
| endphoneme | |||||
| phoneme 0 | |||||
| vowel starttype #a endtype #a | |||||
| length 180 | |||||
| ipa A | |||||
| FMT(vowel/aa_8) | |||||
| endphoneme | |||||
| phoneme 0# | |||||
| vowel starttype #@ endtype #@ | |||||
| length 120 | |||||
| ChangeIfStressed(0) | |||||
| ChangePhoneme(a#) | |||||
| endphoneme | |||||
| phoneme o: | |||||
| vowel starttype #o endtype #o | |||||
| length 190 | |||||
| FMT(vowel/o) | |||||
| endphoneme | endphoneme | ||||
| endphoneme | endphoneme | ||||
| phoneme o: | |||||
| vowel starttype #o endtype #o | |||||
| length 190 | |||||
| FMT(vowel/o) | |||||
| endphoneme | |||||
| phoneme u: | phoneme u: | ||||
| // Diphthongs | // Diphthongs | ||||
| phoneme @I | |||||
| vowel starttype #@ endtype #i | |||||
| length 240 | |||||
| FMT(vdiph/@i) | |||||
| endphoneme | |||||
| phoneme @U | phoneme @U | ||||
| vowel starttype #@ endtype #u | vowel starttype #@ endtype #u | ||||
| FMT(vdiph2/u@) | FMT(vdiph2/u@) | ||||
| endphoneme | endphoneme | ||||
| phoneme aI | |||||
| vowel starttype #a endtype #i | |||||
| length 250 | |||||
| FMT(vdiph/ai) | |||||
| endphoneme | |||||
| phoneme aI# | |||||
| vowel starttype #@ endtype #@ | |||||
| length 120 | |||||
| ChangeIfStressed(aI) | |||||
| ChangePhoneme(a#) | |||||
| endphoneme | |||||
| phoneme aU | |||||
| vowel starttype #a endtype #u | |||||
| length 270 | |||||
| FMT(vdiph/au_4) | |||||
| endphoneme | |||||
| phoneme aU# | |||||
| vowel starttype #@ endtype #@ | |||||
| length 120 | |||||
| ChangeIfStressed(aU) | |||||
| FMT(vdiph/au_4) | |||||
| endphoneme | |||||
| phoneme ; // linking j, used between (i) vowels and a following vowel | |||||
| // also to palatalize consonants | |||||
| liquid palatal | |||||
| lengthmod 0 | |||||
| IF prevPh(#i) THEN | |||||
| ipa NULL // linking after i vowel, don't show in ipa | |||||
| ENDIF | |||||
| NextVowelStarts | |||||
| VowelStart(j2/j2@) | |||||
| VowelStart(j2/j2a) | |||||
| VowelStart(j2/j2e) | |||||
| VowelStart(j2/j2i) | |||||
| VowelStart(j2/j2o) | |||||
| VowelStart(j2/j2u) | |||||
| EndSwitch | |||||
| IF prevPh(#i) THEN | |||||
| VowelEnding(j2/xj2, -40) | |||||
| ENDIF | |||||
| IF prevPh(isPause) THEN | |||||
| FMT(j2/_j2) | |||||
| ENDIF | |||||
| endphoneme | |||||
| endphoneme | endphoneme | ||||
| phoneme kh2 | |||||
| vls vel stop | |||||
| lengthmod 2 | |||||
| voicingswitch g | |||||
| Vowelin f1=0 f2=2300 200 300 f3=-150 80 | |||||
| Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 | |||||
| IF nextPh(isPause2) THEN | |||||
| WAV(ustop/k_asp2, 50) | |||||
| ENDIF | |||||
| IF nextPh(l) THEN | |||||
| WAV(ustop/kl) | |||||
| ENDIF | |||||
| WAV(ustop/k_asp2, 90) | |||||
| endphoneme | |||||
| p++; // skip over the zero which terminates the list for this hash value | p++; // skip over the zero which terminates the list for this hash value | ||||
| } | } | ||||
| if((tr->dict_min_size > 0) && (size < tr->dict_min_size)) | |||||
| if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size)) | |||||
| { | { | ||||
| fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | ||||
| } | } | ||||
| { | { | ||||
| if(vowel_stress[ix] == 4) | if(vowel_stress[ix] == 4) | ||||
| { | { | ||||
| if(tr->langopts.stress_flags & 0x20000) | |||||
| if(tr->langopts.stress_flags & S_PRIORITY_STRESS) | |||||
| vowel_stress[ix] = 1; | vowel_stress[ix] = 1; | ||||
| else | else | ||||
| vowel_stress[ix] = 3; | vowel_stress[ix] = 3; | ||||
| max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | ||||
| if((max_stress < 0) && dictionary_flags) | if((max_stress < 0) && dictionary_flags) | ||||
| { | { | ||||
| if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) | |||||
| { | |||||
| // lang=fr: don't stress monosyllables except at end-of-clause | |||||
| vowel_stress[1] = 0; | |||||
| dictionary_flags[0] |= FLAG_STRESS_END2; | |||||
| } | |||||
| max_stress = 0; | max_stress = 0; | ||||
| } | } | ||||
| if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | ||||
| { | { | ||||
| n = utf8_in(&letter,p-1)-1; | n = utf8_in(&letter,p-1)-1; | ||||
| if(tr->letter_bits_offset > 0) | if(tr->letter_bits_offset > 0) | ||||
| { | { | ||||
| // not a Latin alphabet, switch to the default Latin alphabet language | // not a Latin alphabet, switch to the default Latin alphabet language | ||||
| p += (wc_bytes-1); | p += (wc_bytes-1); | ||||
| } | } | ||||
| if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->flags & AL_WORDS) && (alphabet->offset != tr->letter_bits_offset)) | |||||
| if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) | |||||
| { | { | ||||
| // switch to the nominated language for this alphabet | |||||
| sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||||
| return(0); | |||||
| if(tr->langopts.alt_alphabet == alphabet->offset) | |||||
| { | |||||
| sprintf(phonemes,"%c%s",phonSWITCH, tr->langopts.alt_alphabet_lang); | |||||
| return(0); | |||||
| } | |||||
| if(alphabet->flags & AL_WORDS) | |||||
| { | |||||
| // switch to the nominated language for this alphabet | |||||
| sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); | |||||
| return(0); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } |
| ALPHABET *alphabet; | ALPHABET *alphabet; | ||||
| int language; | int language; | ||||
| int phontab_1; | int phontab_1; | ||||
| int alphabet_name_switch; | |||||
| char *ph_alphabet_end; | |||||
| char capital[20]; | char capital[20]; | ||||
| char ph_buf[80]; | char ph_buf[80]; | ||||
| char ph_buf2[80]; | char ph_buf2[80]; | ||||
| return(0); | return(0); | ||||
| } | } | ||||
| alphabet_name_switch = 0; | |||||
| alphabet = AlphabetFromChar(letter); | alphabet = AlphabetFromChar(letter); | ||||
| if(alphabet != current_alphabet) | if(alphabet != current_alphabet) | ||||
| { | { | ||||
| current_alphabet = alphabet; | current_alphabet = alphabet; | ||||
| if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) | if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME) && (alphabet->offset != translator->letter_bits_offset)) | ||||
| { | { | ||||
| phontab_1 = tr->phoneme_tab_ix; | |||||
| ph_buf2[0] = 0; | |||||
| if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||||
| if((alphabet->flags & AL_DONT_NAME) || (alphabet->offset == translator->langopts.alt_alphabet)) | |||||
| { | { | ||||
| // Can't find the local name for this alphabet, use the English name | |||||
| ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||||
| Lookup(translator2, alphabet->name, ph_buf2); | |||||
| // don't say the alphabet name | |||||
| } | } | ||||
| else | else | ||||
| if(translator != tr) | |||||
| { | { | ||||
| phontab_1 = tr->phoneme_tab_ix; | phontab_1 = tr->phoneme_tab_ix; | ||||
| strcpy(ph_buf2, ph_alphabet); | |||||
| ph_alphabet[2] = translator->phoneme_tab_ix; | |||||
| } | |||||
| if(ph_buf2[0] != 0) | |||||
| { | |||||
| // we used a different language for the alphabet name (now in ph_buf2) | |||||
| ph_alphabet[0] = phonPAUSE; | |||||
| ph_alphabet[1] = phonSWITCH; | |||||
| strcpy(&ph_alphabet[3], ph_buf2); | |||||
| len = strlen(ph_buf2) + 3; | |||||
| ph_alphabet[len] = phonSWITCH; | |||||
| ph_alphabet[len+1] = phontab_1; | |||||
| ph_alphabet[len+2] = 0; | |||||
| ph_buf2[0] = 0; | |||||
| if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice | |||||
| { | |||||
| // Can't find the local name for this alphabet, use the English name | |||||
| ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||||
| Lookup(translator2, alphabet->name, ph_buf2); | |||||
| } | |||||
| else | |||||
| if(translator != tr) | |||||
| { | |||||
| phontab_1 = tr->phoneme_tab_ix; | |||||
| strcpy(ph_buf2, ph_alphabet); | |||||
| ph_alphabet[2] = translator->phoneme_tab_ix; | |||||
| } | |||||
| if(ph_buf2[0] != 0) | |||||
| { | |||||
| // we used a different language for the alphabet name (now in ph_buf2) | |||||
| ph_alphabet[0] = phonPAUSE; | |||||
| ph_alphabet[1] = phonSWITCH; | |||||
| strcpy(&ph_alphabet[3], ph_buf2); | |||||
| len = strlen(ph_buf2) + 3; | |||||
| ph_alphabet[len] = phonSWITCH; | |||||
| ph_alphabet[len+1] = phontab_1; | |||||
| ph_alphabet[len+2] = 0; | |||||
| ph_alphabet_end = &ph_alphabet[len]; | |||||
| alphabet_name_switch = ph_alphabet[2]; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number | // caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number | ||||
| if(ph_buf[0] == 0) | if(ph_buf[0] == 0) | ||||
| { | { | ||||
| if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) | ||||
| ph_buf[len+2] = 0; | ph_buf[len+2] = 0; | ||||
| } | } | ||||
| } | } | ||||
| if((ph_buf[2] == alphabet_name_switch) && (capital[0] == 0)) | |||||
| { | |||||
| ph_alphabet_end[0]= 0; | |||||
| } | |||||
| } | } | ||||
| if(ph_buf[0] == 0) | if(ph_buf[0] == 0) |
| { | { | ||||
| // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished' | ||||
| // stress. But not for the last phoneme of a stressed word | // stress. But not for the last phoneme of a stressed word | ||||
| if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||||
| if((tr->langopts.stress_flags & S_NO_DIM) || ((word_stress > 3) && ((plist3+1)->sourceix!=0))) | |||||
| { | { | ||||
| // An unstressed final vowel of a stressed word | // An unstressed final vowel of a stressed word | ||||
| unstress_count=1; // try again for next syllable | unstress_count=1; // try again for next syllable |
| { | { | ||||
| // this is the last syllable in the clause, lengthen it - more for short vowels | // this is the last syllable in the clause, lengthen it - more for short vowels | ||||
| len = (p->ph->std_length * 2); | len = (p->ph->std_length * 2); | ||||
| if(tr->langopts.stress_flags & 0x40000) | |||||
| if(tr->langopts.stress_flags & S_EO_CLAUSE1) | |||||
| len=200; // don't lengthen short vowels more than long vowels at end-of-clause | len=200; // don't lengthen short vowels more than long vowels at end-of-clause | ||||
| length_mod = length_mod * (256 + (280 - len)/3)/256; | length_mod = length_mod * (256 + (280 - len)/3)/256; | ||||
| } | } |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.46.43 07.Mar.13"; | |||||
| const char *version_string = "1.46.44 08.Mar.13"; | |||||
| const int version_phdata = 0x014640; | const int version_phdata = 0x014640; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
| tr->letter_bits_offset = OFFSET_ETHIOPIC; | tr->letter_bits_offset = OFFSET_ETHIOPIC; | ||||
| tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
| tr->langopts.stress_flags = 0x0024; // don't use secondary stress | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress | |||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
| tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_OMIT_1_HUNDRED; | ||||
| // tr->langopts.intonation_group = 4; | // tr->langopts.intonation_group = 4; | ||||
| // 'diminished' is an unstressed final syllable | // 'diminished' is an unstressed final syllable | ||||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | ||||
| // tr->langopts.word_gap = 1; | // tr->langopts.word_gap = 1; | ||||
| tr->langopts.vowel_pause = 2; | tr->langopts.vowel_pause = 2; | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| // tr->langopts.unstressed_wd1 = 3; | // tr->langopts.unstressed_wd1 = 3; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x10 | 0x20000; | |||||
| tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS; | |||||
| tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
| tr->langopts.unstressed_wd1 = 2; | tr->langopts.unstressed_wd1 = 2; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| case L('k','a'): // Georgian | case L('k','a'): // Georgian | ||||
| { | { | ||||
| // character codes offset by 0x1080 | // character codes offset by 0x1080 | ||||
| static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0}; | |||||
| static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0}; | |||||
| static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0}; | |||||
| static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f, | |||||
| 0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0}; | |||||
| SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | ||||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | ||||
| SetLetterBits(tr,LETTERGP_A,ka_vowels); | SetLetterBits(tr,LETTERGP_A,ka_vowels); | ||||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
| tr->langopts.max_initial_consonants = 7; | tr->langopts.max_initial_consonants = 7; | ||||
| tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; | tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN; | ||||
| tr->langopts.alt_alphabet = OFFSET_CYRILLIC; | |||||
| tr->langopts.alt_alphabet_lang = "ru"; | |||||
| } | } | ||||
| break; | break; | ||||
| { | { | ||||
| tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x20; | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
| { | { | ||||
| tr->charset_a0 = charsets[4]; // ISO-8859-4 | tr->charset_a0 = charsets[4]; // ISO-8859-4 | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x20; | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
| SetupTranslator(tr,stress_lengths_om,stress_amps_om); | SetupTranslator(tr,stress_lengths_om,stress_amps_om); | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x16 + 0x80000; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000; | |||||
| } | } | ||||
| break; | break; | ||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // mark unstressed final syllables as diminished | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9; | ||||
| tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :) | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2; | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
| tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; | |||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | ||||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | ||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x100 + 0x6; | |||||
| tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY; | |||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN; | ||||
| case L('r','w'): // Kiryarwanda | case L('r','w'): // Kiryarwanda | ||||
| { | { | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x16; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED; | ||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
| tr->langopts.stress_flags = 0x16; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; | ||||
| tr->langopts.max_initial_consonants = 5; | tr->langopts.max_initial_consonants = 5; | ||||
| tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
| tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
| tr->letter_bits_offset = OFFSET_SINHALA; | tr->letter_bits_offset = OFFSET_SINHALA; | ||||
| case L('s','l'): // Slovenian | case L('s','l'): // Slovenian | ||||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | tr->charset_a0 = charsets[2]; // ISO-8859-2 | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | ||||
| tr->langopts.stress_flags = 0x20; | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | ||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word | ||||
| tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test | ||||
| SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x16 + 0x100; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C; | |||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; | ||||
| tr->langopts.accents = 2; // "capital" after letter name | tr->langopts.accents = 2; // "capital" after letter name | ||||
| tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
| tr->langopts.stress_rule = STRESSPOSN_2R; | tr->langopts.stress_rule = STRESSPOSN_2R; | ||||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||||
| tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; | ||||
| tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = STRESSPOSN_1L; | tr->langopts.stress_rule = STRESSPOSN_1L; | ||||
| tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY; // use 'diminished' for unstressed final syllable | |||||
| tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
| tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 | ||||
| SetupTranslator(tr,stress_lengths_th,stress_amps_th); | SetupTranslator(tr,stress_lengths_th,stress_amps_th); | ||||
| tr->langopts.stress_rule = 0; // stress on final syllable of a "word" | tr->langopts.stress_rule = 0; // stress on final syllable of a "word" | ||||
| tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||||
| tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) | |||||
| tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| // tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | // tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | ||||
| tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5 | ||||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | ||||
| tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||||
| tr->langopts.param[LOPT_SUFFIX] = 1; | tr->langopts.param[LOPT_SUFFIX] = 1; | ||||
| if(name2 == L('a','z')) | if(name2 == L('a','z')) | ||||
| SetCyrillicLetters(tr); | SetCyrillicLetters(tr); | ||||
| SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | SetupTranslator(tr,stress_lengths_fr,stress_amps_fr); | ||||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | ||||
| tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4; | ||||
| } | } | ||||
| break; | break; | ||||
| SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | SetupTranslator(tr,stress_lengths_zh,stress_amps_zh); | ||||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" | tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable of a "word" | ||||
| tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module) | |||||
| tr->langopts.stress_flags = S_NO_DIM; // don't automatically set diminished stress (may be set in the intonation module) | |||||
| tr->langopts.vowel_pause = 0; | tr->langopts.vowel_pause = 0; | ||||
| tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1; | ||||
| tr->langopts.param[LOPT_REDUCE] = 2; | tr->langopts.param[LOPT_REDUCE] = 2; | ||||
| tr->langopts.stress_rule = 5; | tr->langopts.stress_rule = 5; | ||||
| tr->langopts.stress_flags = 0x0020; // waas 0x1010 | |||||
| tr->langopts.stress_flags = S_NO_AUTO_2; | |||||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | ||||
| tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands | tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1; // variant numbers before thousands |
| if(switch_phonemes >= 0) | if(switch_phonemes >= 0) | ||||
| { | { | ||||
| // this word uses a different phoneme table | |||||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
| { | |||||
| //previous phoneme is also a phonSWITCH, just change its phoneme table number | |||||
| n_ph_list2--; | |||||
| } | |||||
| if((p[0] == phonPAUSE) && (p[1] == phonSWITCH)) | |||||
| { | |||||
| // the new word starts with a phoneme table switch, so there's no need to switch before it. | |||||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
| { | |||||
| //previous phoneme is also a phonSWITCH, delete it | |||||
| n_ph_list2--; | |||||
| } | |||||
| } | |||||
| else | else | ||||
| { | { | ||||
| SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||||
| // this word uses a different phoneme table | |||||
| if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) | |||||
| { | |||||
| //previous phoneme is also a phonSWITCH, just change its phoneme table number | |||||
| n_ph_list2--; | |||||
| } | |||||
| else | |||||
| { | |||||
| SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); | |||||
| } | |||||
| ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||||
| } | } | ||||
| ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number | |||||
| } | } | ||||
| // remove initial pause from a word if it follows a hyphen | // remove initial pause from a word if it follows a hyphen | ||||
| } | } | ||||
| static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","ng","ts","tA","nA",NULL}; | |||||
| int UpperCaseInWord(Translator *tr, char *word, int c) | |||||
| {//===================================================== | |||||
| int ix; | |||||
| int len; | |||||
| const char *p; | |||||
| if(tr->translator_name == L('g','a')) | |||||
| { | |||||
| // Irish | |||||
| for(ix=0; ; ix++) | |||||
| { | |||||
| if((p = UCase_ga[ix]) == NULL) | |||||
| break; | |||||
| len = strlen(p); | |||||
| if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0)) | |||||
| { | |||||
| if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c))) | |||||
| return(1); | |||||
| } | |||||
| } | |||||
| } | |||||
| return(0); | |||||
| } | |||||
| void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) | void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change) | ||||
| {//========================================================================================================== | {//========================================================================================================== | ||||
| int ix; | int ix; | ||||
| { | { | ||||
| if(iswlower(prev_in)) | if(iswlower(prev_in)) | ||||
| { | { | ||||
| c = ' '; // lower case followed by upper case, treat as new word | |||||
| space_inserted = 1; | |||||
| prev_in_save = c; | |||||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||||
| // lower case followed by upper case in a word | |||||
| if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||||
| { | |||||
| // convert to lower case and continue | |||||
| c = towlower(c); | |||||
| } | |||||
| else | |||||
| { | |||||
| c = ' '; // lower case followed by upper case, treat as new word | |||||
| space_inserted = 1; | |||||
| prev_in_save = c; | |||||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||||
| } | |||||
| } | } | ||||
| else | else | ||||
| if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) |
| #define S_NO_DIM 0x02 | #define S_NO_DIM 0x02 | ||||
| #define S_FINAL_DIM 0x04 | #define S_FINAL_DIM 0x04 | ||||
| #define S_FINAL_NO_2 0x10 | |||||
| #define S_NO_AUTO_2 0x20 | |||||
| #define S_2_TO_HEAVY 0x40 | |||||
| #define S_FIRST_PRIMARY 0x80 | |||||
| #define S_2_SYL_2 0x1000 | |||||
| #define S_INITIAL_2 0x2000 | |||||
| #define S_NO_AUTO_DIM 0x10000 | |||||
| #define S_HYPEN_UNSTRESS 0x100000 | |||||
| #define S_NO_EOC_LENGTHEN 0x200000 | |||||
| // bit0=don't stress monosyllables, except at end of clause | |||||
| #define S_FINAL_DIM_ONLY 0x06 | |||||
| // bit1=don't set diminished stress, | // bit1=don't set diminished stress, | ||||
| // bit2=mark unstressed final syllables as diminished | // bit2=mark unstressed final syllables as diminished | ||||
| // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words | // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words | ||||
| #define S_FINAL_NO_2 0x10 | |||||
| // bit4=don't allow secondary stress on last syllable | // bit4=don't allow secondary stress on last syllable | ||||
| #define S_NO_AUTO_2 0x20 | |||||
| // bit5-don't use automatic secondary stress | // bit5-don't use automatic secondary stress | ||||
| #define S_2_TO_HEAVY 0x40 | |||||
| // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish | ||||
| #define S_FIRST_PRIMARY 0x80 | |||||
| // bit7=if more than one primary stress, make the subsequent primaries to secondary stress | // bit7=if more than one primary stress, make the subsequent primaries to secondary stress | ||||
| #define S_FINAL_STRESS_C 0x100 | |||||
| // bit8=stress last syllable if it doesn't end in a vowel | // bit8=stress last syllable if it doesn't end in a vowel | ||||
| #define S_FINAL_SPANISH 0x200 | |||||
| // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | // bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish | ||||
| #define S_2_SYL_2 0x1000 | |||||
| // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress | // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress | ||||
| #define S_INITIAL_2 0x2000 | |||||
| // bit13= If there is only one syllable before the primary stress, give it a secondary stress | // bit13= If there is only one syllable before the primary stress, give it a secondary stress | ||||
| // bit15= Give stress to the first unstressed syllable | |||||
| // bit16= Don't diminish consecutive syllables within a word. | |||||
| #define S_PRIORITY_STRESS 0x20000 | |||||
| // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" | ||||
| #define S_EO_CLAUSE1 0x40000 | |||||
| // bit18= don't lengthen short vowels more than long vowels at end-of-clause | // bit18= don't lengthen short vowels more than long vowels at end-of-clause | ||||
| // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
| #define S_HYPEN_UNSTRESS 0x100000 | |||||
| // bit20= hyphenated words, 2nd part is unstressed | // bit20= hyphenated words, 2nd part is unstressed | ||||
| #define S_NO_EOC_LENGTHEN 0x200000 | |||||
| // bit21= don't lengthen vowels at end-of-clause | // bit21= don't lengthen vowels at end-of-clause | ||||
| // bit15= Give stress to the first unstressed syllable | |||||
| // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel | |||||
| int stress_flags; | int stress_flags; | ||||
| int unstressed_wd1; // stress for $u word of 1 syllable | int unstressed_wd1; // stress for $u word of 1 syllable | ||||
| int unstressed_wd2; // stress for $u word of >1 syllable | int unstressed_wd2; // stress for $u word of >1 syllable | ||||
| int listx; // compile *_listx after *list | int listx; // compile *_listx after *list | ||||
| const unsigned int *replace_chars; // characters to be substitutes | const unsigned int *replace_chars; // characters to be substitutes | ||||
| const char *ascii_language; // switch to this language for Latin characters | const char *ascii_language; // switch to this language for Latin characters | ||||
| int alt_alphabet; // offset for another language to recognize | |||||
| const char *alt_alphabet_lang; // language for the alt_alphabet | |||||
| int max_lengthmod; | int max_lengthmod; | ||||
| int lengthen_tonic; // lengthen the tonic syllable | int lengthen_tonic; // lengthen the tonic syllable | ||||
| int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | int suffix_add_e; // replace a suffix (which has the SUFX_E flag) with this character | ||||
| void InitText2(void); | void InitText2(void); | ||||
| int IsDigit(unsigned int c); | int IsDigit(unsigned int c); | ||||
| int IsAlpha(unsigned int c); | int IsAlpha(unsigned int c); | ||||
| int IsVowel(Translator *tr, int c); | |||||
| int isspace2(unsigned int c); | int isspace2(unsigned int c); | ||||
| int towlower2(unsigned int c); | int towlower2(unsigned int c); | ||||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); |
| #define DEFAULT_LANGUAGE_PRIORITY 5 | #define DEFAULT_LANGUAGE_PRIORITY 5 | ||||
| #define N_VOICES_LIST 200 | |||||
| #define N_VOICES_LIST 250 | |||||
| static int n_voices_list = 0; | static int n_voices_list = 0; | ||||
| static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
| static int len_path_voices; | static int len_path_voices; | ||||
| static const char *voices_europe = | static const char *voices_europe = | ||||
| "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | ||||
| strcpy(voicename,vname); | |||||
| if(voicename[0]==0) | |||||
| strcpy(voicename,"default"); | |||||
| strncpy0(voicename, vname, sizeof(voicename)); | |||||
| if(control & 0x10) | if(control & 0x10) | ||||
| { | { | ||||
| strcpy(buf,vname); | strcpy(buf,vname); | ||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| if(voicename[0]==0) | |||||
| strcpy(voicename,"default"); | |||||
| sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP); | ||||
| sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory | ||||
| return; | return; | ||||
| do { | do { | ||||
| sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
| ftype = GetFileLength(fname); | |||||
| if(n_voices_list >= (N_VOICES_LIST-2)) | |||||
| break; // voices list is full | |||||
| if((ftype == -2) && (FindFileData.cFileName[0] != '.')) | |||||
| { | |||||
| // a sub-sirectory | |||||
| GetVoices(fname); | |||||
| } | |||||
| else | |||||
| if(ftype > 0) | |||||
| if(FindFileData.cFileName[0] != '.') | |||||
| { | { | ||||
| // a regular line, add it to the voices list | |||||
| if((f_voice = fopen(fname,"r")) == NULL) | |||||
| continue; | |||||
| // pass voice file name within the voices directory | |||||
| voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
| fclose(f_voice); | |||||
| if(voice_data != NULL) | |||||
| { | |||||
| voices_list[n_voices_list++] = voice_data; | |||||
| } | |||||
| sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName); | |||||
| ftype = GetFileLength(fname); | |||||
| if(ftype == -2) | |||||
| { | |||||
| // a sub-sirectory | |||||
| GetVoices(fname); | |||||
| } | |||||
| else | |||||
| if(ftype > 0) | |||||
| { | |||||
| // a regular line, add it to the voices list | |||||
| if((f_voice = fopen(fname,"r")) == NULL) | |||||
| continue; | |||||
| // pass voice file name within the voices directory | |||||
| voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName); | |||||
| fclose(f_voice); | |||||
| if(voice_data != NULL) | |||||
| { | |||||
| voices_list[n_voices_list++] = voice_data; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } while(FindNextFileA(hFind, &FindFileData) != 0); | } while(FindNextFileA(hFind, &FindFileData) != 0); | ||||
| FindClose(hFind); | FindClose(hFind); | ||||
| if(n_voices_list >= (N_VOICES_LIST-2)) | if(n_voices_list >= (N_VOICES_LIST-2)) | ||||
| break; // voices list is full | break; // voices list is full | ||||
| if(ent->d_name[0] == '.') | |||||
| continue; | |||||
| sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name); | ||||
| ftype = GetFileLength(fname); | ftype = GetFileLength(fname); | ||||
| if((ftype == -2) && (ent->d_name[0] != '.')) | |||||
| if(ftype == -2) | |||||
| { | { | ||||
| // a sub-sirectory | // a sub-sirectory | ||||
| GetVoices(fname); | GetVoices(fname); | ||||
| espeak_ERROR SetVoiceByName(const char *name) | espeak_ERROR SetVoiceByName(const char *name) | ||||
| {//========================================= | {//========================================= | ||||
| espeak_VOICE *v; | espeak_VOICE *v; | ||||
| int ix; | |||||
| espeak_VOICE voice_selector; | espeak_VOICE voice_selector; | ||||
| char *variant_name; | char *variant_name; | ||||
| static char buf[60]; | static char buf[60]; | ||||
| strncpy0(buf,name,sizeof(buf)); | strncpy0(buf,name,sizeof(buf)); | ||||
| variant_name = ExtractVoiceVariantName(buf, 0, 1); | variant_name = ExtractVoiceVariantName(buf, 0, 1); | ||||
| for(ix=0; ;ix++) | |||||
| { | |||||
| // convert voice name to lower case (ascii) | |||||
| if((buf[ix] = tolower(buf[ix])) == 0) | |||||
| break; | |||||
| } | |||||
| memset(&voice_selector,0,sizeof(voice_selector)); | memset(&voice_selector,0,sizeof(voice_selector)); | ||||
| // voice_selector.name = buf; | |||||
| voice_selector.name = (char *)name; // include variant name in voice stack ?? | voice_selector.name = (char *)name; // include variant name in voice stack ?? | ||||
| // first check for a voice with this filename | // first check for a voice with this filename |