Reinstate language "az" (Azerbaijani) as a test voice. Language changes: ga, hy, pt, sk. Generate character names for subscript and superscript letters and digits. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@347 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -0,0 +1,110 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling to phoneme rules for Azerbaijani | |||
| // Numbers | |||
| _0 s@f'@R | |||
| _1 b'iR | |||
| _2 ic'i | |||
| _3 'ytS | |||
| _4 d'WRd | |||
| _5 b'eS | |||
| _6 alt'@ | |||
| _7 jedd'i | |||
| _8 s&Cc'iz | |||
| _9 dogg'uz | |||
| _1X 'on | |||
| _2X ijiRm'i | |||
| _3X ot'uz | |||
| _4X g'@Rx | |||
| _5X &ll'i | |||
| _6X altm'@S | |||
| _7X jetm'iS | |||
| _8X s&Cs'&n | |||
| _9X doxs'an | |||
| _0C j'yz | |||
| _0M1 m'in | |||
| _0M2 milj'on | |||
| _0M3 milj'aRd | |||
| _dpt _t,am_| // ?? | |||
| // Function words | |||
| // personal pronouns | |||
| mən $u+ | |||
| sən $u+ | |||
| o $u+ | |||
| biz $u+ | |||
| siz $u+ | |||
| onlar $u+ | |||
| // possessive pronouns | |||
| mənim $u+ | |||
| sənin $u+ | |||
| onun $u+ | |||
| bizim $u+ | |||
| sizin $u+ | |||
| onların $u+ | |||
| bu $u+ | |||
| // conjunctions | |||
| və $u+ | |||
| isə $u+ | |||
| də $u+ | |||
| həm $u+ | |||
| ya $u+ | |||
| da $u+ | |||
| // prepositions | |||
| aid $u+ // about | |||
| ilə $u+ // with, by, in | |||
| dair $u+ // about | |||
| // postpositions | |||
| ci $u | |||
| cı $u | |||
| cü $u | |||
| de $u | |||
| dir $u | |||
| li $u | |||
| in $u | |||
| nə $u | |||
| ya $u | |||
| yə $u | |||
| // Character names | |||
| b be | |||
| c dZe | |||
| ç tSe | |||
| _ə & | |||
| d de | |||
| f fe | |||
| g Je | |||
| ğ Qe | |||
| h he | |||
| x xe | |||
| j Ze | |||
| k ka | |||
| q ge | |||
| l el | |||
| m em | |||
| n en | |||
| _o o | |||
| p pe | |||
| r eR | |||
| s se | |||
| ş Se | |||
| t te | |||
| v ve | |||
| w dubElv'E | |||
| y je | |||
| z ze | |||
| * ulduz $text | |||
| % faiz $text | |||
| @@ -0,0 +1,137 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling to phoneme rules for Azerbaijani | |||
| // Stress rule: Right-most vowel, but stop before the vowel which is | |||
| // marked as unstressed [%]. | |||
| .L02 ı a o u // back vowels | |||
| .L03 i e ö ü | |||
| .group a | |||
| a a | |||
| ai (K aI | |||
| -) a (_ a | |||
| .group b | |||
| b b | |||
| .group c | |||
| c dZ | |||
| .group ç | |||
| ç tS | |||
| .group d | |||
| d d | |||
| -) dan (_ d%an | |||
| -) dən (_ d%&n | |||
| -) dək (_ d%&k | |||
| .group e | |||
| e e | |||
| .group ə | |||
| ə & | |||
| @) ə (_ %& | |||
| -) ə (_ %& | |||
| .group f | |||
| f f | |||
| .group g | |||
| g J | |||
| .group ğ | |||
| ğ Q | |||
| A) ğ : | |||
| a) ğa : | |||
| o) ğo : | |||
| u) ğu : | |||
| ö) ğö : | |||
| ü) ğü : | |||
| i) ğ j | |||
| e) ğ j | |||
| .group h | |||
| h h | |||
| .group x | |||
| x x | |||
| .group ı | |||
| ı @ | |||
| .group i | |||
| i i | |||
| @) iya (_ =i;a | |||
| .group j | |||
| j Z | |||
| .group k | |||
| k c | |||
| k (K C | |||
| .group q | |||
| q g | |||
| q (_ x | |||
| .group l | |||
| l l | |||
| l (L02 L | |||
| L02) l (K L | |||
| .group m | |||
| m m | |||
| .group n | |||
| n n | |||
| .group o | |||
| o o | |||
| .group ö | |||
| ö W | |||
| .group p | |||
| p p | |||
| .group r | |||
| r R | |||
| A) r (A * | |||
| ğ) r (A * | |||
| C) r (_ @-r | |||
| .group s | |||
| s s | |||
| .group ş | |||
| ş S | |||
| .group t | |||
| t t | |||
| L03) t (L03 ts | |||
| .group u | |||
| u u | |||
| .group ü | |||
| ü y | |||
| .group v | |||
| v v | |||
| .group w | |||
| w w | |||
| .group y | |||
| y j | |||
| .group z | |||
| z z | |||
| .group | |||
| ä & | |||
| @@ -9,15 +9,15 @@ _0 S'unjO | |||
| _1 '&k | |||
| _2 d'uj | |||
| _3 t'in | |||
| _4 tS'ar | |||
| _4 tSh'ar | |||
| _5 p'a~tS | |||
| _6 tSh'Oj | |||
| _6 tS#'Oj | |||
| _7 S'at | |||
| _8 'at.# | |||
| _9 n'Oj | |||
| _2a d'u // with hundreds etc. | |||
| _6a tSh'O | |||
| _6a tS#'O | |||
| _9a n'O | |||
| @@ -25,7 +25,7 @@ _10 d'OS | |||
| _11 '&garo | |||
| _12 b'arO | |||
| _13 t'erO | |||
| _14 tS'oddO | |||
| _14 tSh'oddO | |||
| _15 p'OnerO | |||
| _16 S'olO | |||
| _17 S'OterO | |||
| @@ -176,8 +176,8 @@ | |||
| .group ছ | |||
| ছ tS#V | |||
| ছ (B tS# | |||
| ছ tShV | |||
| ছ (B tSh | |||
| .group জ | |||
| @@ -63,6 +63,8 @@ _#32 l'e:rts'aIC@n | |||
| _?? zymb'o:l | |||
| _?A b'u:xstA:b@ | |||
| _cap gr'o:s | |||
| _sub 'Unt@R|3_!,IndEks|| | |||
| _sup 'o:b@R|3_!,IndEks|| | |||
| // accent names | |||
| @@ -36,6 +36,17 @@ Q r R R2 s S t T | |||
| t# tS w x | |||
| Dictionary az_dict 2013-04-25 | |||
| & @ @- a aI e E i | |||
| o u W y | |||
| * : ; b c C d dZ | |||
| f g h j J k l L | |||
| m n p Q r R s S | |||
| t tS ts v w x z Z | |||
| Dictionary bg_dict 2013-03-16 | |||
| @ a e i o u | |||
| @@ -47,7 +58,7 @@ s; t t; tS ts v x z | |||
| Z z; | |||
| Dictionary bn_dict 2013-04-18 | |||
| Dictionary bn_dict 2013-04-25 | |||
| & a a~ e e~ i i: i~ | |||
| l- o O o: O~ o~ r- u | |||
| @@ -113,7 +124,7 @@ r R R3 s S t T tS | |||
| v w x z Z | |||
| Dictionary de_dict 2013-03-10 | |||
| Dictionary de_dict 2013-04-25 | |||
| 3 @ @- a A A: aI aU | |||
| A~ E E2 E: e: EI i I | |||
| @@ -137,7 +148,7 @@ p Q r R s s; t T | |||
| ts v x z | |||
| Dictionary en_dict 2013-04-23 | |||
| Dictionary en_dict 2013-04-25 | |||
| 0 0# 3 3: @ @- @2 @5 | |||
| @L a a# A: A@ aa aI aI3 | |||
| @@ -225,7 +236,7 @@ p2 r r2 s S t t2 t3 | |||
| tS v z Z z2 z3 | |||
| Dictionary ga_dict 2013-03-20 | |||
| Dictionary ga_dict 2013-04-25 | |||
| 0 0# @ a a# A: aI aI# | |||
| aU aU# e E E# e: eI i | |||
| @@ -288,15 +299,16 @@ S s2 t t2 tS ts v w | |||
| z Z | |||
| Dictionary hy_dict 2008-12-22 | |||
| Dictionary hy_dict 2013-04-25 | |||
| @ a aI e eI i i@ o | |||
| u W y | |||
| ** b c d dZ dz f g | |||
| h j k k# l m n p | |||
| p# r R r" s S t t# | |||
| tS ts ts# v X z Z | |||
| * ** b c d dZ dz f | |||
| g h j k k# l m n | |||
| p p# r R r" R2 s S | |||
| t t# tS ts ts# v X z | |||
| Z | |||
| Dictionary id_dict 2011-02-21 | |||
| @@ -500,7 +512,7 @@ r r. s S s. t t# t. | |||
| t.# v w x z | |||
| Dictionary nl_dict 2013-04-23 | |||
| Dictionary nl_dict 2013-04-25 | |||
| 8 @ @- a A a: A~ e | |||
| E e# E2 e: EI eU i I | |||
| @@ -536,7 +548,7 @@ R s S t tS v w x | |||
| z Z | |||
| Dictionary pa_dict 2013-03-17 | |||
| Dictionary pa_dict 2013-04-24 | |||
| @ a a~ e E e~ E~ i | |||
| I i~ I~ o O o: O~ o~ | |||
| @@ -545,9 +557,9 @@ r- u U U~ u~ V V~ | |||
| : ; b b# c c# d d# | |||
| d. d.# f g g# h H j | |||
| J J# k k# l l. m n | |||
| N n. n^ p p# Q R r. | |||
| R2 s S t t# t. t.# v | |||
| x z | |||
| N n. n^ p p# Q r R | |||
| r. R2 s S t t# t. t.# | |||
| v x z | |||
| Dictionary pl_dict 2013-04-06 | |||
| @@ -562,7 +574,7 @@ S s; S; t t; tS ts tS; | |||
| ts; v w x z Z Z; | |||
| Dictionary pt_dict 2013-04-23 | |||
| Dictionary pt_dict 2013-04-25 | |||
| & &/ &U~ &~ @ @- a A | |||
| aI aU e E eI EI eU EU | |||
| @@ -616,17 +628,17 @@ n.# n^ n^# p p# r s S | |||
| s. t t# t. t.# tS v w | |||
| Dictionary sk_dict 2011-08-08 | |||
| Dictionary sk_dict 2013-04-25 | |||
| & @- a a: e e: i i: | |||
| l- l: o o: oU r- r: u | |||
| u: | |||
| * ; b d d; dZ dz f | |||
| g h j k l l^ m n | |||
| N n^ p r R R^ R^/ s | |||
| S t t; tS ts v w x | |||
| z Z | |||
| * ; b c d d; dZ dz | |||
| f g h j k l l^ m | |||
| n N n^ p r R R^ R^/ | |||
| s S t t; tS ts v w | |||
| x z Z | |||
| Dictionary sl_dict 2013-01-30 | |||
| @@ -701,7 +713,7 @@ s s. S; t t# t. t.# tS | |||
| v v# w z | |||
| Dictionary tr_dict 2013-04-20 | |||
| Dictionary tr_dict 2013-04-25 | |||
| @ a e E i I o O | |||
| u U W y Y | |||
| @@ -106,6 +106,8 @@ _hok h'Uk | |||
| // character names | |||
| _cap k,ap@-t@L | |||
| _sub s,VbskrIpt|| | |||
| _sup s,u:p3skrIpt|| | |||
| _?A l,Et3 | |||
| _?? sImb@L | |||
| _braille br'eIl | |||
| @@ -2857,6 +2859,7 @@ temperature tEmprI2tS3 | |||
| ?!3 temporary tEmpr@rI | |||
| ?3 template tEmpl@t | |||
| therefore $1 | |||
| thereof De@r'0v | |||
| thermos T3:m@s | |||
| thermostable $alt1 | |||
| thesis Ti:sIs | |||
| @@ -3454,6 +3457,7 @@ Ada eId@ $onlys | |||
| Andrea $2 | |||
| Adrian eIdri@n | |||
| Agatha aga#T@ | |||
| Angela andZ@l@ | |||
| Angelika $2 | |||
| Aggie agi | |||
| Agnes agn@s | |||
| @@ -3605,6 +3609,7 @@ Guinevere gwInI#vi@3 | |||
| Hadrian heIdri:@n | |||
| Hamish heImIS | |||
| Harriet hari@t | |||
| Harvey hA@vi | |||
| Heidi haIdi | |||
| Hecate hEk@teI | |||
| Hekate hEk@teI | |||
| @@ -3662,6 +3667,7 @@ Louise lu:w'i:z | |||
| Luigi lu:'i:dZi | |||
| Luis lu:Is | |||
| Lupe lu:peI | |||
| Luther lu:T3 | |||
| Madeleine mad@lI2n | |||
| Madeline mad@lI2n | |||
| Maeve meIv | |||
| @@ -3781,6 +3787,7 @@ Vanessa $alt3 | |||
| Wallace w0lI#s | |||
| Wally w0li | |||
| ?3 William wIlj@m | |||
| Yerevan jEr@v'an | |||
| Yves i:v | |||
| Yvonne $2 | |||
| Zoe zoUi | |||
| @@ -1,7 +1,9 @@ | |||
| // Irish Gaeilge dictionary | |||
| // written by Ronan McGuirk | |||
| // January 2013 | |||
| // version 2.5 | |||
| // 2013 | |||
| // version 2.6.1 | |||
| // Please send comments and suggestions to [email protected] | |||
| // This file is UTF8 encoded | |||
| // letters | |||
| @@ -47,7 +49,7 @@ _cap m'o:r | |||
| // accent names | |||
| // names of symbols | |||
| ª_. pO#nk | |||
| _. pO#nk | |||
| _, k0m@ | |||
| _; semI | |||
| _: ko:l0n | |||
| @@ -152,22 +154,26 @@ amárach @m'A:r@x | |||
| amuigh @mu1'I | |||
| amháin @w'A:in | |||
| am aUm | |||
| an @n | |||
| anaithnid '0nah@nIdZ | |||
| anois @nIS | |||
| anonn @naUn | |||
| ann aUn | |||
| anseo @nS'O | |||
| anuas a#n'u@s | |||
| aodh e: | |||
| aodha e: | |||
| aon e:@n | |||
| (ar ais) Er'aS | |||
| arís @r'i:S | |||
| as 0s | |||
| aschurtha '0sxUrh@ | |||
| atá @t['A: $u | |||
| baill bu1'i:l | |||
| bhaill vu1'i:l | |||
| beidh bEg | |||
| bhfuil w'Il | |||
| bheas v'e:@s | |||
| bhuel w'El | |||
| ceithre kEr@ | |||
| cathair k'0h@r | |||
| @@ -176,6 +182,7 @@ clainne kl'InE | |||
| chlainne xl'InE | |||
| chun xUn $u | |||
| crainn kri:n | |||
| chrainn xri:n | |||
| de dE $u+ | |||
| des dEs $u | |||
| @@ -184,6 +191,7 @@ di dI $u+ | |||
| do dO# $u | |||
| domhnach d[aUn@x | |||
| domhnaigh d[aUnig | |||
| dúghorm d['u:Q"Or@m | |||
| eile 'El@ | |||
| euro ju:ro: | |||
| faic f@ak | |||
| @@ -214,6 +222,7 @@ le lE $u | |||
| (muigheo) mu1'i:||'o: | |||
| mhuigh vu1'i: | |||
| (mhaigh eo) vu1'i:||'o: | |||
| mhama w'0m@ | |||
| maith m'0 | |||
| mhaith w'0 | |||
| mbeadh m;O#X | |||
| @@ -230,8 +239,10 @@ orthu O#rhu | |||
| os o:s | |||
| rabh raU | |||
| raibh rEv | |||
| raidió r'adi:o: | |||
| réamhrá r'e:@vr,a: | |||
| réidh re: | |||
| 's s | |||
| samhain saUIn | |||
| san s@n | |||
| seo S@_ | |||
| @@ -1,8 +1,10 @@ | |||
| // translation rules for Irish Gaeilge | |||
| // This file is UTF-8 encoded | |||
| // written by Ronan McGuirk January 2013 | |||
| // Version 2.5B | |||
| // written by Ronan McGuirk 2013 | |||
| // Version 2.6.1 | |||
| // Please send comments and suggestions to [email protected] | |||
| // Conditional rules | |||
| // ?1 allow eclipsis as 2 separate words | |||
| @@ -12,7 +14,7 @@ | |||
| .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 | |||
| .L06 aidh idh aí á eá eadh adh ad adsa 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 | |||
| @@ -21,14 +23,14 @@ | |||
| .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 | |||
| .L15 c ch f bhf 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 | |||
| .L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar | |||
| .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 | |||
| .L22 eadh eag eaga eagán eagáinín eo io iu iú eall eabh ealtaine eann | |||
| .L23 ea eo i | |||
| .L24 b mb bh g gh p ph bp m mh | |||
| @@ -40,14 +42,16 @@ | |||
| abht aU#t[ | |||
| amhr aUr // words like amhras | |||
| K) amhl aUl | |||
| abhra aUr@ // words like slabhra | |||
| abh (C aU // 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 (nA @ | |||
| _) an (_ @n | |||
| _) an (- '0n // an prefix | |||
| é) a @ // words like féach | |||
| X) a (nn_ aU# | |||
| X) a (ll_ aU# | |||
| @@ -77,8 +81,9 @@ | |||
| _) ao e: | |||
| ae e: | |||
| amhna (_ aUn@ | |||
| arraing arIng | |||
| _) ath (@@P3 ,0_ | |||
| .group á | |||
| á A: | |||
| @) á ,A: | |||
| @@ -89,7 +94,7 @@ | |||
| áinig A:nIg | |||
| ái 'A:i | |||
| .group ai | |||
| ai a# | |||
| L04) ai (L17 0# | |||
| @@ -99,6 +104,7 @@ | |||
| m) ai (n 0# | |||
| c) ai (th 0# | |||
| ch) ai (th 0# | |||
| ai (tín 0# | |||
| ai (d 0# | |||
| p) ai (l 0# | |||
| @) ai (L11_ I | |||
| @@ -112,8 +118,9 @@ | |||
| X) aigh 'aI | |||
| aigh aI# L04) aill (_ wi:l | |||
| aing (_ Ing | |||
| ai (llimh '0 // words like Gaillimh | |||
| .group b | |||
| b b // broad | |||
| L01) b b; // slender | |||
| @@ -122,7 +129,7 @@ | |||
| bh (_ vv | |||
| bh (L22 vj // slender | |||
| L01) bh v | |||
| ?1 _m_) b (@ | |||
| ?1 _m_) b (@ | |||
| _) bhf v // urú broad | |||
| _) bhf (L22 v; // urú slender | |||
| _) bp b // urú broad | |||
| @@ -134,8 +141,10 @@ | |||
| a) bh (a U // for example cabhair | |||
| ear) bha u: // words like Cearbhall | |||
| bhfaigh v'aI | |||
| _) beann (@ ba#n | |||
| _) bheann (@ va#n | |||
| _) bun (C@P3 b,Un | |||
| .group c | |||
| c k | |||
| c (L01 k; // slender | |||
| @@ -143,19 +152,20 @@ | |||
| ch (L01 C; | |||
| ch (é+ C; | |||
| ch (ei+ x; | |||
| ?1 _g_) c (@ | |||
| ?1 _g_) c (L01 | |||
| ?1 _g_) c (@ | |||
| ?1 _g_) c (L01 | |||
| _) cabhr k'aUr | |||
| _) chabhr x'aUr | |||
| _) ceann (C@P5 k;,aUn | |||
| _) cheann (C@P6 C;,aUn | |||
| .group d | |||
| d d[ // broad | |||
| L01) d dZ // slender | |||
| d (L22 dZ // slender | |||
| d (L01 d; // slender | |||
| i) d (i dZ | |||
| ?1 _n_) d (@ | |||
| ?1 _n_) d (@ | |||
| dh Q // broad | |||
| dh (ui Q // broad | |||
| dh (ao Q // broad | |||
| @@ -165,6 +175,11 @@ | |||
| ?1 _) d (_t d[ | |||
| ?1 _) d (_tL01 dZ | |||
| _) d' (@P2 d | |||
| _) d' d | |||
| _) d (_'fh d | |||
| d'fh (L01 d | |||
| i) dh (_ g | |||
| a) dh (_ X | |||
| o) dh (_ X | |||
| @@ -174,8 +189,9 @@ | |||
| dheartháir gr@h'A:r | |||
| deirfiúr d;r@f'u:r | |||
| dheirfiúr g;r@f'u:r | |||
| _) do (Ch@@P2 d[,U_ | |||
| _) dí (@@P2 d,i: | |||
| .group e | |||
| e E# | |||
| eá A: | |||
| @@ -184,29 +200,39 @@ | |||
| r) ei (m aI | |||
| eighea aI | |||
| eighea aI | |||
| s) ei (nn aI | |||
| sh) ei (nn aI | |||
| eigh aI | |||
| eo o: | |||
| eogh o: | |||
| eoi o: | |||
| eogha o: | |||
| eoghai o: | |||
| d) eo (ch O# | |||
| dh) eo (ch O# | |||
| _) eo (ch O# | |||
| s) eo (_ @ | |||
| .group é | |||
| é 'e: | |||
| éi 'e: | |||
| éa 'e: | |||
| _) éi (rig aI // words like éirigh | |||
| _h) éi (rí aI | |||
| _) éi (rí aI // words like éirí | |||
| _) éireoidh aIro:Ig | |||
| éacs e:@ks | |||
| .group ea | |||
| ea a# | |||
| eai a# | |||
| X) ea (L21_ aU | |||
| ea (ltaine aU | |||
| g) ea (ll aU | |||
| l) eamh (n aU | |||
| dr) ea (m aU | |||
| X) ea (ch 0 | |||
| _L04) ea (g @ | |||
| _L04) ea (dh_ @ | |||
| @@ -217,7 +243,7 @@ | |||
| eanbhean 'an@v,an | |||
| eadhb aIb | |||
| .group f | |||
| f f // broad | |||
| f (L22 f; // slender | |||
| @@ -225,14 +251,16 @@ | |||
| fh (éin_ h | |||
| fh (L22 ; // slender | |||
| @) f (L06_ h | |||
| ?1 _bh_) f (@ | |||
| ?1 _bh_) f (L22 ; | |||
| _) fo (C@@P2 f,U | |||
| _) fogh f'aU | |||
| ?1 _bh_) f (@ | |||
| ?1 _bh_) f (L22 ; | |||
| .group g | |||
| g g // broad | |||
| g (L01 g; // slender | |||
| ?1 _n_) g (@ | |||
| ?1 _n_) g (@ | |||
| _) gh Q" | |||
| _) gh (L01 Q"j | |||
| _) gc g // urú broad | |||
| @@ -245,19 +273,24 @@ | |||
| gh (n X@ | |||
| gheobh j'o: | |||
| gabh gaU | |||
| _) gearr (C@P5 g;,aR | |||
| _) ghearr (C@P6 Q"j,aR | |||
| .group h | |||
| h h // silent | |||
| .group i | |||
| i I | |||
| _) i I | |||
| ia i@ | |||
| ia (tha i: | |||
| io O# | |||
| io (dá I | |||
| _) io (nadh u:// words like ionadh | |||
| s) io (mb I | |||
| sh) io (mb I | |||
| _pr) io (n u: | |||
| L16) inn (_ i:n | |||
| iai i:i | |||
| @@ -266,12 +299,18 @@ | |||
| L12) i i // non syllabic short i after long vowel | |||
| iú u: | |||
| m) i (d_ i: // verb ending | |||
| _) in (@@P2 ,In_ | |||
| _) ionad (C@@P5 ,Ona#d[ | |||
| .group í | |||
| í 'i: | |||
| íomh 'i:v | |||
| íochn 'i:xn | |||
| í (_ i: | |||
| ín (_ i:n | |||
| ío i:@ | |||
| .group l | |||
| l l // broad | |||
| L01) l l; // slender | |||
| @@ -280,8 +319,9 @@ | |||
| ll (L23 l; | |||
| l (g l@ | |||
| l (b l@ | |||
| _) lorg (@@P4 l,Or@g | |||
| _) lán (C@@P3 l,A:n | |||
| .group m | |||
| m m // broad | |||
| m (L20 m; //slender | |||
| @@ -296,8 +336,8 @@ | |||
| _) mh (n v@ | |||
| léir) mheas vas | |||
| r) m @m // words like gorm | |||
| _) mear (@@P4 m,ar | |||
| .group n | |||
| n n // broad | |||
| n (L01 n; // slender | |||
| @@ -318,8 +358,8 @@ | |||
| n (ch n@ | |||
| c) n @n | |||
| ch) n @n | |||
| _) nasc (C@@ n,0sk | |||
| .group o | |||
| o O# | |||
| _) o 'O | |||
| @@ -342,12 +382,13 @@ | |||
| odl (a O#l | |||
| oí i: | |||
| .group ó | |||
| ó 'o: | |||
| ómhai o:@ | |||
| ói (p@ 'o: | |||
| .group oi | |||
| oi O | |||
| _L15) oi (+ @'I | |||
| @@ -369,15 +410,16 @@ | |||
| _) oi (leá 'I | |||
| oidh aI | |||
| oir (_ 'ERR | |||
| _sc) oi (r O | |||
| oigh (ea aI | |||
| .group p | |||
| p p // broad | |||
| ph f // broad | |||
| p (L22 p; // slender | |||
| ph (L20 f; // slender | |||
| ?1 _b_) p (@ | |||
| ?1 _b_) p (@ | |||
| .group r | |||
| @@ -388,13 +430,13 @@ | |||
| L12i) r (t_ Z | |||
| rr R | |||
| rg r@g | |||
| rgh rQ" | |||
| 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 | |||
| @@ -402,13 +444,14 @@ | |||
| s (cL01 S | |||
| s (CCL01 S // slender | |||
| s (pCé s // broad | |||
| ?1 _t_) s (@ | |||
| ?1 _t_) s (@ | |||
| sh h | |||
| sh (CL01 h | |||
| sh (L01 h; | |||
| s (lL01 S | |||
| _') s (_ s // 's in poems etc | |||
| _) sain (@P4 s,an | |||
| .group t | |||
| t t[ // broad | |||
| L01) t c // slender | |||
| @@ -418,7 +461,7 @@ | |||
| ?1 _) t (_L01 c | |||
| L01C) t tS // slender after consonant | |||
| t (CL01 tS // slender with following consonant before vowels | |||
| ?1 _d_) t (@ | |||
| ?1 _d_) t (@ | |||
| th h | |||
| th (L01 h; | |||
| L01C) th h | |||
| @@ -432,7 +475,7 @@ | |||
| thne (_ h@nE | |||
| A) th (_ // silent th at word end | |||
| .group u | |||
| u U# | |||
| ua u@ | |||
| @@ -441,11 +484,14 @@ | |||
| uai (d ui | |||
| uá u:'A: | |||
| ui I | |||
| ui (s U | |||
| ui (sce_ I | |||
| uinn (_ 'i:n | |||
| uinti U#'i:ntI | |||
| _b) uí wi: | |||
| _bh) uí wi: | |||
| g) uí wi: | |||
| gh) uí wi: | |||
| umh u: | |||
| L03) ui @I | |||
| _d) u (l_ O# | |||
| @@ -453,8 +499,9 @@ | |||
| gh) ui (gh_ @i: | |||
| uí i: | |||
| uachai 'ux@ | |||
| _) uimhir (C@P6 ,IvIR | |||
| .group ú | |||
| ú u: | |||
| únmh u:nv | |||
| @@ -2,6 +2,8 @@ | |||
| // This file is UTF8 encoded | |||
| // Spelling-to-phoneme words for Armenian | |||
| // ?1 West Armenian | |||
| // names of letters | |||
| _ա aIb | |||
| բ ben | |||
| @@ -20,7 +22,7 @@ _ը '@t# | |||
| կ ken | |||
| հ ho | |||
| ձ dza | |||
| ղ r"ad | |||
| ղ r"at | |||
| ճ ce | |||
| մ men | |||
| յ hi | |||
| @@ -30,15 +32,16 @@ _ը '@t# | |||
| չ tSa | |||
| պ pe | |||
| ջ dZe | |||
| ռ **a | |||
| ռ R2a | |||
| ս se | |||
| վ vev | |||
| տ tyn | |||
| ր re | |||
| ց tso | |||
| ց ts#o | |||
| ւ hyn | |||
| փ p#yr | |||
| ք k#e | |||
| և jev | |||
| _օ o | |||
| ֆ fe | |||
| @@ -52,6 +55,21 @@ d di | |||
| e e | |||
| f ef | |||
| // symbols | |||
| $ dolar | |||
| % տոկոս $text | |||
| * աստղանիշ $text | |||
| + գումարած $text | |||
| = հավասար $text | |||
| _՝ b'ut# | |||
| _՞ harts#ak'an | |||
| _՛ S'eSt | |||
| _։ verdZak'et // U+0589 | |||
| _: verdZak'et | |||
| _, storak'et | |||
| _. midZak'et | |||
| // numbers | |||
| @@ -82,5 +100,41 @@ _dpt _sto**ak'el_ | |||
| // function words | |||
| ես $u+ // pronouns | |||
| դու $u+ | |||
| եք $u+ | |||
| Դուք $u+ | |||
| նա $u+ | |||
| այն $u+ | |||
| մենք $u+ | |||
| նրանք $u+ | |||
| դուք $u+ | |||
| ենք $u+ | |||
| են $u+ | |||
| այդ $u+ | |||
| այս $u+ | |||
| դա $u+ | |||
| որ $u+ | |||
| էր $u+ | |||
| մի $u+ | |||
| է $u+ | |||
| հետ $u+ // prepositions | |||
| եվ $u+ // and | |||
| իսկ $u+ $brk // and, but | |||
| կամ $u+ // or | |||
| որը $u+ // which | |||
| կարող $u+ // can | |||
| // exceptions | |||
| ով ov | |||
| ովքեր ovk#er | |||
| @@ -2,8 +2,10 @@ | |||
| // (consonants are changed for Armenian-West in the voice file "hy-west") | |||
| // This file is UTF-8 encoded | |||
| // ?1 West Armenian | |||
| .L01 բ գ թ կ պ տ ք | |||
| .L02 ու այ իւ իյ ոյ // other vowel sounds | |||
| .L02 ու այ իւ իյ ոյ ա ե ը ի ո օ // vowel sounds | |||
| // ligature | |||
| .replace | |||
| @@ -12,7 +14,7 @@ | |||
| .group ա | |||
| ա a | |||
| այ aI | |||
| այ (K aI | |||
| այ (_ a | |||
| .group բ | |||
| @@ -41,7 +43,7 @@ | |||
| .group է | |||
| է e | |||
| էօ W | |||
| էյ eI | |||
| էյ (K eI | |||
| .group ը | |||
| ը @ | |||
| @@ -57,7 +59,7 @@ | |||
| ի i | |||
| իւ y | |||
| իւ (_ iv | |||
| իյ i@ | |||
| իյ (K i@ | |||
| .group լ | |||
| լ l | |||
| @@ -97,8 +99,9 @@ | |||
| L02) մ (_ m | |||
| .group յ | |||
| յ h // ?? [j] | |||
| _) յ h // ?? [j] | |||
| _) յ (C h@ | |||
| յ j | |||
| .group ն | |||
| ն n | |||
| @@ -133,8 +136,8 @@ | |||
| _) ջ (C dZ@ | |||
| .group ռ | |||
| ռ ** | |||
| _) ռ (C **@ | |||
| ռ R2 | |||
| _) ռ (C R2@ | |||
| .group ս | |||
| ս s | |||
| @@ -151,6 +154,7 @@ | |||
| .group ր | |||
| ր r | |||
| L02) ր (L02 * | |||
| _) ր (C r@ | |||
| C) ր (_ @r | |||
| L02) ր (_ r | |||
| @@ -178,7 +182,5 @@ | |||
| ֆ f | |||
| _) ֆ (C f@ | |||
| .group | |||
| $ dol@ | |||
| @@ -36,6 +36,8 @@ _s Es | |||
| _t te: | |||
| _cap h'o:fdlEt@r | |||
| _sub s'8pskrIpt|| | |||
| _sup s'yp@rskrIpt|| | |||
| _?A l'Et@r | |||
| _?? s'imbo:l | |||
| @@ -371,12 +371,12 @@ | |||
| ੱ) ਯ (_ j: | |||
| .group ਰ | |||
| ਰ RV | |||
| ਰ (B R | |||
| @) ਰ (_ R | |||
| ੱ) ਰ R:V | |||
| ੱ) ਰ (B R: | |||
| ੱ) ਰ (_ R: | |||
| ਰ rV | |||
| ਰ (B r | |||
| @) ਰ (_ r | |||
| ੱ) ਰ r:V | |||
| ੱ) ਰ (B r: | |||
| ੱ) ਰ (_ r: | |||
| .group ਲ | |||
| ਲ lV | |||
| @@ -69,6 +69,8 @@ v ve // not Roman numbers | |||
| x Sis# | |||
| _cap maI'uskulU | |||
| _sub ||subskR'itU | |||
| _sup ||sob*eskR'itU | |||
| _?A l'etR&_ | |||
| _?? s'imbolU_ | |||
| _#32 esp'asU | |||
| @@ -297,10 +299,10 @@ unts $abbrev | |||
| usb $abbrev | |||
| dr $dot | |||
| dra $dot | |||
| mr $dot | |||
| mrs $dot | |||
| dr dowtor $dot | |||
| dra dowt'o*& $dot | |||
| mr m'ister $dot | |||
| mrs m'irsys $dot | |||
| prof pR'Of $dot | |||
| profº pR,ofes'or | |||
| profª pR,ofes'o*& | |||
| @@ -642,6 +644,7 @@ jamais $u+ $verbf | |||
| abacaxi abakaSy | |||
| abordo $alt | |||
| aborto $alt $verb | |||
| absorta $alt2 | |||
| acerto $alt2 $noun | |||
| acertos $alt2 | |||
| acocho $alt2 $noun | |||
| @@ -847,7 +850,6 @@ enterro $alt2 $noun | |||
| entorto $alt | |||
| entroso $alt | |||
| envelope $alt | |||
| envolto $alt2 | |||
| enxaqueca $alt2 | |||
| enxerto $alt2 $noun | |||
| epopeia $alt | |||
| @@ -941,7 +943,6 @@ hoje $alt2 | |||
| horrores $alt2 | |||
| humores $alt2 | |||
| ideia $alt | |||
| imberbe $alt | |||
| interesse $alt2 | |||
| interesse $alt $verb | |||
| iodo $alt2 | |||
| @@ -960,6 +961,7 @@ lepra $alt | |||
| leste $alt2 $verb | |||
| ?2 lhe l^y | |||
| lingueta $alt2 | |||
| lisboeta $alt2 | |||
| lodo $alt2 | |||
| logro $alt | |||
| lopes $alt | |||
| @@ -985,7 +987,6 @@ modelo $alt $verb | |||
| moeda $alt | |||
| moem $alt | |||
| mofo $alt $verb | |||
| moleta $alt2 | |||
| molho $alt2 $noun | |||
| monera $alt | |||
| morcego $alt2 | |||
| @@ -994,6 +995,7 @@ moreia $alt | |||
| mortos $alt | |||
| motora $alt2 | |||
| mui mwi | |||
| muleta $alt2 | |||
| mureta $alt2 | |||
| mutreta $alt2 | |||
| namoro $alt2 $noun | |||
| @@ -1091,6 +1093,8 @@ risoto $alt2 | |||
| rock $alt | |||
| roem $alt | |||
| rola $alt2 $noun | |||
| roleta $alt2 | |||
| rolete $alt2 | |||
| rolo $alt2 $noun | |||
| rota $alt2 | |||
| rota $alt $noun | |||
| @@ -1148,6 +1152,7 @@ transtorno $alt $verb | |||
| traqueia $alt | |||
| travesso $alt2 | |||
| tremores $alt2 | |||
| treta $alt2 | |||
| trevo $alt2 | |||
| troco $alt2 $noun | |||
| tropa $alt | |||
| @@ -1243,6 +1248,7 @@ python p'aIT&~N | |||
| ?1 readme r'i:dmi: | |||
| ?1 sapi s,ap'i | |||
| ?1 scanner sk'En&r | |||
| sky sk'ay | |||
| shake S'eIk | |||
| ?1 shift S'ift | |||
| ?1 scroll sk:r'ol | |||
| @@ -1254,13 +1260,16 @@ símbolo s'imbolU | |||
| ?4 símbolo s'iNbolU | |||
| ?2 software s'Oftwe@- | |||
| ?1 space sp'eIsy | |||
| ?2 space sp'eIs | |||
| ?1 sporting sp'Ort,ing | |||
| tab t'aby | |||
| tablet t'ablet | |||
| ?1 telemóvel t,El,Em'OvEl | |||
| ?1 telemóveis t,El,Em'OveIs# | |||
| ?1 up &p | |||
| ?1 upload &pl'oud | |||
| update &pd'eIt | |||
| upgrade &pgR'eId | |||
| upload &pl'oud | |||
| ?2 web w'Eb | |||
| ?1 yahoo 'i,ah'u | |||
| ?2 yahoo iah'u | |||
| @@ -1275,7 +1284,7 @@ louis _^_FR | |||
| // foreign product names | |||
| ?1 access 'aks,Es | |||
| ?1 adobe &d'Oby | |||
| android &ndR'Oid | |||
| android &NdR'Oid | |||
| apple 'Epow | |||
| chrome kR'owmi | |||
| debian d'Ebj&~N | |||
| @@ -214,7 +214,7 @@ | |||
| i) e (r_ E | |||
| @s) e (r_ E | |||
| u) e (r_ E | |||
| qu) e (r_ E | |||
| ib) e (rL04_ E | |||
| d) e (rL04_ E | |||
| @@ -226,11 +226,10 @@ | |||
| @s) e (rL04_ E | |||
| sp) e (rL04_ E | |||
| f) e (rL02_ E | |||
| e (quL02_ E | |||
| e (rbL04_ E | |||
| e (rgL04_ E | |||
| e (rsL04_ E | |||
| @@ -240,6 +239,7 @@ | |||
| e (ssL04_ E | |||
| e (ss_ E // stress and english words | |||
| ?2 ection (_ 'EkS&~N | |||
| ?2 ee (n_ i | |||
| e (stL04_ E | |||
| e (strL04_ E | |||
| @@ -372,6 +372,7 @@ | |||
| tiv) e (L05_ E // es- | |||
| viv) e (L05_ e | |||
| _com) e (L05_ e | |||
| s_colh) e (res_ E | |||
| _cos) e (L05_ e | |||
| _pud) e (L05_ E | |||
| _coub) e (L05_ E | |||
| @@ -424,11 +425,13 @@ _corro) e (L07_ e | |||
| _interromp) e (L07_ e | |||
| _troux) e (L07_ E | |||
| _ens) e (bL03_ E | |||
| _enver) e (dL03_ E | |||
| _amanc) e (bL03_ E | |||
| qu) e (brL04_ E | |||
| _cel) e (brL04_ E | |||
| _boch) e (chL04_ e | |||
| _ex) e (crL04_ E | |||
| _on) e (rL04_ E | |||
| _ex) e (crL04_ E | |||
| _enr) e (dL01_ E | |||
| _v) e (dL03_ E | |||
| _arr) e (dL03_ E | |||
| @@ -472,14 +475,14 @@ _adult) e (rL04_ E | |||
| _persev) e (rL04_ E | |||
| _recup) e (rL04_ E | |||
| _refrig) e (rL04_ E | |||
| _v) e (rbL03_ E | |||
| _ex) e (rcL02_ E | |||
| _ex) e (rcL02_ E | |||
| _alic) e (rcL02_ E | |||
| _p) e (rdL02_ E | |||
| _l) e (rdL03_ E | |||
| _h) e (rdL04_ E | |||
| _des) e (rdL04_ E | |||
| _) e (rgL03_ e | |||
| _so) e (rgL03_ e | |||
| _re) e (rgL03_ e | |||
| _bez) e (rrL03_ e | |||
| v) e (rtL03_ e // con- re- in- | |||
| @@ -837,7 +840,7 @@ _entorp) e (çL03_ e | |||
| ?1 f) o (rmulá u // eg: formulário, formulários. | |||
| ?1 v) o (lt O | |||
| o (luem_ o | |||
| o (CCuem_ o | |||
| o (ssuem_ o | |||
| êC) o (CA_ o | |||
| êCC) o (CA_ o | |||
| ôC) o (CA_ o | |||
| @@ -852,7 +855,8 @@ _entorp) e (çL03_ e | |||
| óCC) o (CA_ o | |||
| úC) o (CA_ o | |||
| úCC) o (CA_ o | |||
| ?2 otion (_ 'owS&~N | |||
| //sort | |||
| _f) o (L05_ o | |||
| _pormen) o (L05_ O | |||
| @@ -862,6 +866,7 @@ _pormen) o (L05_ O | |||
| _esn) o (bL04_ O | |||
| _engl) o (bL04_ O | |||
| _sal) o (brL03_ o | |||
| _env) o (ltL03_ o | |||
| _) o (cL03_ o | |||
| _m) o (fL01_ O | |||
| _m) o (fL02_ O | |||
| @@ -1072,6 +1077,8 @@ _remem) o (rL04_ O | |||
| u (a u | |||
| g) u (a+ w | |||
| q) u (a+ w | |||
| u (eC u | |||
| u (ei u | |||
| r) u (_A u | |||
| u (L04_ 'u | |||
| @@ -1079,6 +1086,8 @@ _remem) o (rL04_ O | |||
| ui (_ 'uI | |||
| u (iu w | |||
| u (iCK u | |||
| u (éC u | |||
| u (íC u | |||
| uy uI | |||
| ul (K uw | |||
| u (lh+ u | |||
| @@ -1091,6 +1100,7 @@ _remem) o (rL04_ O | |||
| g) u (Y | |||
| _m) ui (tA_ 'wiN | |||
| ?2 ution (_ 'uS&~N | |||
| .group ú | |||
| @@ -69,6 +69,8 @@ _tld s_v'l-novkoU | |||
| // character names | |||
| _cap vel^ke: | |||
| _sub d,olni:||indeks|| | |||
| _sup h,oRni:||indeks|| | |||
| _?? simbol | |||
| _#9 t'ab | |||
| _#32 'medzeRa | |||
| @@ -76,7 +78,7 @@ _?A znak | |||
| * hviezda $max3 | |||
| + plus $max3 | |||
| = Rovna:sa $max3 | |||
| = Rovna:||sa $max3 | |||
| @ zavina:tS | |||
| & ampeRsand | |||
| # kRi:Zik $max3 | |||
| @@ -88,64 +90,88 @@ _' apostRof | |||
| _( za:tvoRka | |||
| _) zatvoRit; | |||
| _, tSiaRka | |||
| _- poml-tSka | |||
| __ podtSiaRknutie | |||
| _- spojovn^i:k | |||
| __ podtSiaRkovn^i:k | |||
| _. bodka | |||
| _/ lomeno | |||
| _/ lomka | |||
| _: dvojbodka | |||
| _; bodkotSiaRka | |||
| _< menSi: | |||
| _> vetSSi: | |||
| _> v&tSSi: | |||
| _? ota:zn^ik | |||
| _[ hRanata:||za:tvoRka | |||
| _\ opatSne:||lomeno | |||
| _\ opatSna:||lomka | |||
| _] hRanata:||zatvoRit; | |||
| _^ stRieZka | |||
| _^ voka:n^ | |||
| _` aktsent | |||
| _{ zloZena:||za:tvoRka | |||
| _| zvisla:||tSiaRa | |||
| _} zloZena:||zatvoRit; | |||
| _~ vl-novka | |||
| _ tvr-da:m'edzeRa // U+00A0 no-break-space | |||
| _¡ obra:t;eni:v'i:kRitSn^i:k | |||
| _¦ pReRuSena:'tSiaRa | |||
| _ª hoRni:indeks'a: | |||
| _« dvojita:lomena:||za:tvoRka | |||
| _ mekka:poml-tSka | |||
| _² nadRuhu: | |||
| _³ natRetju | |||
| _´ dl:Zen^ | |||
| _· bodka'vpRostRjedku | |||
| _¸ tsedila | |||
| _¹ napRvu: | |||
| _» dvojita:lomena:||zatvoRit; | |||
| _¿ obRa:t;eni:'ota:zn^ik | |||
| _– dl-ha:'poml-tSka | |||
| _‘ l^ava:'u:vodzovka | |||
| _’ prava:'u:vodzovka | |||
| _“ horne:'u:vodzovki | |||
| _” dolne:'u:vodzovki | |||
| _‡ dvojiti:kRi:Z | |||
| _• odRa:Zka | |||
| _‣ tRojuholni:kova:'odRa:Zka | |||
| _ tvr-da:||m'edzeRa // U+00A0 no-break-space | |||
| _¡ obra:t;eni:||v'i:kRitSn^i:k | |||
| _¦ pReRuSena:||tSiaRa | |||
| _¨ pRehla:ska | |||
| _« dvojita:||lomena:||za:tvoRka | |||
| _ Rozd;el^ovn^i:k | |||
| _´ dl:Zen^ | |||
| _· bodka||v||pRostRjedku | |||
| _¸ tsedila | |||
| _» dvojita:||lomena:||zatvoRit; | |||
| _¿ obRa:t;eni:||ota:zn^ik | |||
| _– poml-tSka | |||
| _‘ hoRne:||jednoduche:||u:vodzovki | |||
| _’ odsuvn^i:k | |||
| _“ hoRne:||u:vodzovki | |||
| _” dvojita:||hoRna:||opatSna:||u:vodzovka | |||
| _„ dolne:||u:vodzovki | |||
| _‚ dolne:||jednoduche:||u:vodzovki | |||
| _‡ dvojkRi:Z | |||
| _• odRa:Zka | |||
| _‣ odRa:Zka||tRojuholni:k | |||
| _⁃ odRa:Zka||v||tvaRe||poml-tSki | |||
| ‰ pRomile | |||
| € euRo | |||
| § paRagRaf | |||
| ÷ d;eleno | |||
| × kRa:t | |||
| ° stupn^ou | |||
| ¢ tsentou | |||
| £ libjeR | |||
| ¤ znatSkameni | |||
| ¢ tsent | |||
| £ libRa | |||
| ¤ mena | |||
| © kopiRajt | |||
| ® Registrovane: | |||
| ¥ jen | |||
| − mi:nus | |||
| ± plus'mi:nus | |||
| µ mu: | |||
| ¼ Stvr-tina | |||
| ± plus||mi:nus | |||
| µ mi: | |||
| ¼ Stvr-t;ina | |||
| ½ polovitsa | |||
| ¾ tri_Stvr-tini | |||
| ¬ logitske:not | |||
| æ a'e: | |||
| þ poml-tSkanad | |||
| ¾ tRi_||Stvr-t;ini | |||
| ¬ logitski:||za:poR | |||
| æ otvoRene:||e: | |||
| þ soRn | |||
| ¯ pRuh||nad | |||
| ð ed | |||
| ƒ floRe:n | |||
| _† kRi:Z | |||
| _≈ pRibliZn^e||sa||Rovna: | |||
| _≠ n^eRovna:||sa | |||
| _≤ menSi:||alebo||sa||Rovna: | |||
| _≥ v&tSSi:||alebo||sa||Rovna: | |||
| _√ dRuha:||odmotsn^ina | |||
| _∛ tRet;ia||odmotsn^ina | |||
| _∞ n^ekon^etSno | |||
| _■ tSieRni||StvoRets | |||
| _□ bieli||StvoRets | |||
| _◆ tSieRni||diamant | |||
| _○ bieli||kRuh | |||
| _● tSieRni||kRuh | |||
| _◦ odRa:Zka||v||tvaRe||bielej||bodki | |||
| _✓ zaSkr-tnutie | |||
| _✔ tutSne:||zaSkr-tnutie | |||
| _➔ Si:pka||vpravo | |||
| _➢ odRa:Zka||v||tvaRe||Si:pki | |||
| // Numbers | |||
| @@ -12,7 +12,6 @@ | |||
| .L01 ç f h k p q s ş t // unvoiced consonants | |||
| .L02 ı a o u // back vowels | |||
| .L03 i e ö ü î â ô û // not-back vowels | |||
| .replace | |||
| @@ -218,6 +217,7 @@ | |||
| .group r | |||
| r R | |||
| A) r (A * | |||
| ğ) r (A * | |||
| ra (_S2 %Ra | |||
| re (_S2 %Re | |||
| @@ -857,7 +857,7 @@ ufric/tl# [tl#] is | |||
| [tl#] kl | |||
| ufric/tlh [K] nso | |||
| [K] tn | |||
| ufric/x [x] base | |||
| ufric/x_ [x] base | |||
| ufric/x2 [x2] af | |||
| [x] ku | |||
| [Q2] ka | |||
| @@ -1013,7 +1013,6 @@ ustop/t_dnt [t] base | |||
| [t] hr | |||
| ustop/t_dnt2 [t] base2 | |||
| [d] kn | |||
| [t] es | |||
| ustop/t_hi [t[] base | |||
| [t] et | |||
| [t^] et | |||
| @@ -1595,6 +1594,7 @@ vowel/@_3 [@#] en | |||
| [@3] ur | |||
| [@] da | |||
| [@] am | |||
| vowel/&_3 [&] az | |||
| vowel/3_2 [3:] en-n | |||
| [@] zh | |||
| vowel/3_3 [3:] en-rp | |||
| @@ -1651,6 +1651,7 @@ vowel/a# [a] base2 | |||
| [&] sr | |||
| [a#] rw | |||
| [a/] rw | |||
| [a] az | |||
| [a] wo | |||
| [a] dv | |||
| [a:] dv | |||
| @@ -1751,7 +1752,6 @@ vowel/aa [a:] et | |||
| [A:] no | |||
| [aa] zhy | |||
| [a] hy | |||
| [a] az | |||
| vowel/aa# [O] en-us | |||
| [0] en-wi | |||
| [a2] fi | |||
| @@ -1785,6 +1785,7 @@ vowel/aa_9 [a] fi | |||
| [a:] hi | |||
| [a] ne | |||
| [a] pa | |||
| [a] az | |||
| [a] ak | |||
| [a] mt | |||
| [A] kk | |||
| @@ -2227,12 +2228,12 @@ vowel/o_mid [U@] en-rp | |||
| [o] bg | |||
| [o] tr | |||
| [o] fa | |||
| [o] az | |||
| [o] dv | |||
| [o:] dv | |||
| [o] tt | |||
| vowel/o_mid2 [O] fr | |||
| [O] ht | |||
| [o] az | |||
| vowel/oo [o] base | |||
| [O:] en-sc | |||
| [O] en-wi | |||
| @@ -2350,6 +2351,7 @@ vowel/u_2 [u1] fi | |||
| [u] is | |||
| [u] tr | |||
| [u] sl | |||
| [u] az | |||
| [u] am | |||
| [u] wo | |||
| vowel/u#_2 [u-] sv | |||
| @@ -2364,7 +2366,6 @@ vowel/u_5 [U1] et | |||
| [u] vi | |||
| [u] sw | |||
| [u] nso | |||
| [u] az | |||
| [u] tn | |||
| vowel/u#_5 [y] vi | |||
| vowel/u_6 [u] ta | |||
| @@ -0,0 +1,62 @@ | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 180 | |||
| FMT(vowel/ii_5) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 200 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype #e endtype #e | |||
| length 200 | |||
| IF thisPh(isWordEnd) THEN | |||
| FMT(vowel/&_3) | |||
| ENDIF | |||
| FMT(vowel/&) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #u endtype #u | |||
| length 200 | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 200 | |||
| FMT(vowel/y#_2) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 180 | |||
| FMT(vowel/u_2) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 200 | |||
| FMT(vowel/o_mid2) | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 200 | |||
| IF thisPh(isWordEnd) THEN | |||
| FMT(vowel/a#) | |||
| ENDIF | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| phoneme @ | |||
| vowel starttype #@ endtype #@ | |||
| ipa ɯ | |||
| length 180 | |||
| FMT(vowel/u#_7) | |||
| endphoneme | |||
| @@ -7,7 +7,7 @@ | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 180 | |||
| length 190 | |||
| IF thisPh(isDiminished) THEN | |||
| ChangePhoneme(a/) | |||
| FMT(vowel/a#) | |||
| @@ -18,28 +18,28 @@ endphoneme | |||
| phoneme a/ | |||
| vowel starttype #@ endtype #@ | |||
| length 180 | |||
| length 190 | |||
| FMT(vowel/a#) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/ee_1) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 150 | |||
| length 170 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| @@ -47,42 +47,42 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| length 180 | |||
| FMT(vowel/oo_4) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme U | |||
| vowel starttype #u endtype #u | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/uu_2) | |||
| endphoneme | |||
| phoneme y | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/y) | |||
| endphoneme | |||
| phoneme Y | |||
| vowel starttype #@ endtype #@ | |||
| length 160 | |||
| length 180 | |||
| FMT(vowel/y#) | |||
| endphoneme | |||
| @@ -111,22 +111,12 @@ phoneme D | |||
| ENDIF | |||
| endphoneme | |||
| phoneme t // dental variant of /t/ | |||
| vls dnt stop | |||
| voicingswitch d[ | |||
| lengthmod 2 | |||
| Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 | |||
| Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(ustop/t_dnt2, 35) | |||
| ENDIF | |||
| WAV(ustop/t_dnt2, 70) | |||
| phoneme t // dental variant of /t/ | |||
| import_phoneme base/t[ | |||
| endphoneme | |||
| phoneme s | |||
| vls alv frc sibilant | |||
| lengthmod 3 | |||
| @@ -634,7 +634,7 @@ endphoneme | |||
| phoneme j | |||
| liquid palatal | |||
| liquid palatal starttype #i | |||
| lengthmod 7 | |||
| IF nextPhW(isVowel) THEN | |||
| @@ -1610,7 +1610,7 @@ phoneme x | |||
| Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 | |||
| IF nextPh(isPause) THEN | |||
| WAV(ufric/x, 110) | |||
| WAV(ufric/x_, 60) | |||
| ENDIF | |||
| WAV(ufric/x_hr, 20) | |||
| endphoneme | |||
| @@ -700,9 +700,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
| ix = utf8_in(&c2,p); | |||
| if(c2 == 0) | |||
| break; | |||
| if(iswupper(c2)) | |||
| if(iswupper2(c2)) | |||
| { | |||
| utf8_out(towlower(c2),p); | |||
| utf8_out(towlower2(c2),p); | |||
| } | |||
| else | |||
| { | |||
| @@ -520,7 +520,7 @@ void DecodePhonemes(const char *inptr, char *outptr) | |||
| unsigned short ipa1[96] = { | |||
| 0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f, | |||
| 0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294, | |||
| 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254, | |||
| 0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254, | |||
| 0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f, | |||
| 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, | |||
| 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f | |||
| @@ -629,10 +629,13 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| {//========================================================================= | |||
| /* Can be called after a clause has been translated into phonemes, in order | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode) | |||
| {//=============================================================================== | |||
| /* Called after a clause has been translated into phonemes, in order | |||
| to display the clause in phoneme mnemonic form. | |||
| phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
| bit 4: 0=eSpeak phoneme names, 1=IPA | |||
| */ | |||
| int ix; | |||
| @@ -645,6 +648,8 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| char *buf; | |||
| int count; | |||
| int flags; | |||
| int use_ipa; | |||
| int use_tie; | |||
| int separate_phonemes = 0; | |||
| char phon_buf[30]; | |||
| char phon_buf2[30]; | |||
| @@ -653,15 +658,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| static const char *stress_chars = "==,,''"; | |||
| static const int char_tie[] = {0x0361, 0x200d}; // combining-double-inverted-breve, zero-width-joiner | |||
| if(use_ipa >= 4) | |||
| use_ipa = phoneme_mode & 0x10; | |||
| use_tie = phoneme_mode & 0x0f; | |||
| if(use_tie >= 3) | |||
| { | |||
| // separate individual phonemes with underscores | |||
| separate_phonemes = '_'; | |||
| if(use_ipa == 5) | |||
| use_ipa = 0; | |||
| else | |||
| use_ipa = 1; | |||
| use_tie = 0; | |||
| } | |||
| if(phon_out != NULL) | |||
| { | |||
| for(ix=1; ix<(n_phoneme_list-2); ix++) | |||
| @@ -669,13 +675,19 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| buf = phon_buf; | |||
| plist = &phoneme_list[ix]; | |||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
| if(plist->newword) | |||
| *buf++ = ' '; | |||
| else | |||
| { | |||
| if((separate_phonemes != 0) && (ix > 1)) | |||
| { | |||
| *buf++ = separate_phonemes; | |||
| utf8_in(&c, phon_buf2); | |||
| if((c < 0x2b0) || (c > 0x36f)) // not if the phoneme starts with a superscript letter | |||
| { | |||
| *buf++ = separate_phonemes; | |||
| } | |||
| } | |||
| } | |||
| @@ -707,17 +719,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa) | |||
| } | |||
| flags = 0; | |||
| WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags); | |||
| count = 0; | |||
| for(p=phon_buf2; *p != 0;) | |||
| { | |||
| p += utf8_in(&c, p); | |||
| if(use_ipa > 1) | |||
| if(use_tie > 0) | |||
| { | |||
| // look for non-inital alphabetic character, but not diacritic, superscript etc. | |||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c)) | |||
| if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c)) | |||
| { | |||
| buf += utf8_out(char_tie[use_ipa-2], buf); | |||
| buf += utf8_out(char_tie[use_tie-1], buf); | |||
| } | |||
| } | |||
| buf += utf8_out(c, buf); | |||
| @@ -923,7 +934,7 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
| break; | |||
| } | |||
| if((c != '\'') && !iswalpha(c)) | |||
| if((c != '\'') && !iswalpha2(c)) | |||
| return(0); | |||
| } | |||
| @@ -2102,7 +2113,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
| break; | |||
| case RULE_NONALPHA: | |||
| if(!iswalpha(letter_w)) | |||
| if(!iswalpha2(letter_w)) | |||
| { | |||
| add_points = (21-distance_right); | |||
| post_ptr += letter_xbytes; | |||
| @@ -2346,7 +2357,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
| break; | |||
| case RULE_NONALPHA: | |||
| if(!iswalpha(letter_w)) | |||
| if(!iswalpha2(letter_w)) | |||
| { | |||
| add_points = (21-distance_right); | |||
| pre_ptr -= letter_xbytes; | |||
| @@ -2663,7 +2674,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| if(tr->letter_bits_offset > 0) | |||
| { | |||
| // not a Latin alphabet, switch to the default Latin alphabet language | |||
| if((letter <= 0x241) && iswalpha(letter)) | |||
| if((letter <= 0x241) && iswalpha2(letter)) | |||
| { | |||
| sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | |||
| return(0); | |||
| @@ -632,7 +632,7 @@ void OnOptions2(int event_id) | |||
| case MENU_PATH0: | |||
| string = wxFileSelector(_T("Master phonemes file"),wxFileName(path_phfile).GetPath(), | |||
| _T(""),_T(""),_T("*"),wxOPEN); | |||
| _T("phonemes"),_T(""),_T("*"),wxOPEN); | |||
| if(!string.IsEmpty()) | |||
| { | |||
| path_phfile = string; | |||
| @@ -1564,8 +1564,8 @@ void CountWordFreq(wxString path, wcount **hashtab) | |||
| for(k=0; k<ix; ) | |||
| { | |||
| k += utf8_in(&wc,&buf[k]); | |||
| wc = towlower(wc); // convert to lower case | |||
| if(iswalpha(wc)) | |||
| wc = towlower2(wc); // convert to lower case | |||
| if(iswalpha2(wc)) | |||
| { | |||
| j += utf8_out(wc,&wbuf[j]); | |||
| n_chars++; | |||
| @@ -2324,13 +2324,28 @@ void Make_walpha_tab() | |||
| } | |||
| fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); | |||
| exceptions[ex] = 0; | |||
| exceptions[ex+1] = 0; | |||
| for(ix=0; ix<=ex; ix+=2) | |||
| for(ix=0; ix<ex; ix+=2) | |||
| { | |||
| fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]); | |||
| } | |||
| fprintf(f, "};\n"); | |||
| fprintf(f, "\t0,0 };\n"); | |||
| fprintf(f, "\nstatic const short wchar_toupper[] = {\n"); | |||
| for(ix=0x80; ix<=MAX_WALPHA; ix++) | |||
| { | |||
| if(iswlower(ix)) | |||
| { | |||
| c = towupper(ix); | |||
| value = ix - c; | |||
| if((value != 32) && (value != 1)) | |||
| { | |||
| fprintf(f,"\t0x%.3x, 0x%.3x,\n", ix, c); | |||
| } | |||
| } | |||
| } | |||
| fprintf(f, "\t0,0 };\n"); | |||
| fclose(f); | |||
| } | |||
| @@ -2351,6 +2366,7 @@ void TestTest(int control) | |||
| //CharsetToUnicode("ISO-8859-4"); | |||
| //CharsetToUnicode("ISCII"); | |||
| if(control==2) | |||
| { | |||
| return; | |||
| @@ -602,6 +602,77 @@ int NonAsciiNumber(int letter) | |||
| return(-1); | |||
| } | |||
| #define L_SUB 0x4000 // subscript | |||
| #define L_SUP 0x8000 // superscript | |||
| static const char *modifiers[] = {NULL, "_sub", "_sup", NULL}; | |||
| // this list must be in ascending order | |||
| static unsigned short derived_letters[] = { | |||
| 0x00aa, 'a'+L_SUP, | |||
| 0x00b2, '2'+L_SUP, | |||
| 0x00b3, '3'+L_SUP, | |||
| 0x00b9, '1'+L_SUP, | |||
| 0x00ba, 'o'+L_SUP, | |||
| 0x02b0, 'h'+L_SUP, | |||
| 0x02b1, 0x266+L_SUP, | |||
| 0x02b2, 'j'+L_SUP, | |||
| 0x02b3, 'r'+L_SUP, | |||
| 0x02b4, 0x279+L_SUP, | |||
| 0x02b5, 0x27b+L_SUP, | |||
| 0x02b6, 0x281+L_SUP, | |||
| 0x02b7, 'w'+L_SUP, | |||
| 0x02b8, 'y'+L_SUP, | |||
| 0x02c0, 0x294+L_SUP, | |||
| 0x02c1, 0x295+L_SUP, | |||
| 0x02e0, 0x263+L_SUP, | |||
| 0x02e1, 'l'+L_SUP, | |||
| 0x02e2, 's'+L_SUP, | |||
| 0x02e3, 'x'+L_SUP, | |||
| 0x2070, '0'+L_SUP, | |||
| 0x2071, 'i'+L_SUP, | |||
| 0x2074, '4'+L_SUP, | |||
| 0x2075, '5'+L_SUP, | |||
| 0x2076, '6'+L_SUP, | |||
| 0x2077, '7'+L_SUP, | |||
| 0x2078, '8'+L_SUP, | |||
| 0x2079, '9'+L_SUP, | |||
| 0x207a, '+'+L_SUP, | |||
| 0x207b, '-'+L_SUP, | |||
| 0x207c, '='+L_SUP, | |||
| 0x207d, '('+L_SUP, | |||
| 0x207e, ')'+L_SUP, | |||
| 0x207f, 'n'+L_SUP, | |||
| 0x2080, '0'+L_SUB, | |||
| 0x2081, '1'+L_SUB, | |||
| 0x2082, '2'+L_SUB, | |||
| 0x2083, '3'+L_SUB, | |||
| 0x2084, '4'+L_SUB, | |||
| 0x2085, '5'+L_SUB, | |||
| 0x2086, '6'+L_SUB, | |||
| 0x2087, '7'+L_SUB, | |||
| 0x2088, '8'+L_SUB, | |||
| 0x2089, '9'+L_SUB, | |||
| 0x208a, '+'+L_SUB, | |||
| 0x208b, '-'+L_SUB, | |||
| 0x208c, '='+L_SUB, | |||
| 0x208d, '('+L_SUB, | |||
| 0x208e, ')'+L_SUB, | |||
| 0x2090, 'a'+L_SUB, | |||
| 0x2091, 'e'+L_SUB, | |||
| 0x2092, 'o'+L_SUB, | |||
| 0x2093, 'x'+L_SUB, | |||
| 0x2094, 0x259+L_SUB, | |||
| 0x2095, 'h'+L_SUB, | |||
| 0x2096, 'k'+L_SUB, | |||
| 0x2097, 'l'+L_SUB, | |||
| 0x2098, 'm'+L_SUB, | |||
| 0x2099, 'n'+L_SUB, | |||
| 0x209a, 'p'+L_SUB, | |||
| 0x209b, 's'+L_SUB, | |||
| 0x209c, 't'+L_SUB, | |||
| 0,0}; | |||
| static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"}; // names, using phonemes available to all languages | |||
| @@ -617,8 +688,10 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| int letter; | |||
| int len; | |||
| int ix; | |||
| int c; | |||
| char *p2; | |||
| char *pbuf; | |||
| const char *modifier; | |||
| ALPHABET *alphabet; | |||
| int al_offset; | |||
| int al_flags; | |||
| @@ -626,7 +699,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| int number; | |||
| int phontab_1; | |||
| int speak_letter_number; | |||
| char capital[20]; | |||
| char capital[30]; | |||
| char ph_buf[80]; | |||
| char ph_buf2[80]; | |||
| char ph_alphabet[80]; | |||
| @@ -648,13 +721,42 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| if(control & 2) | |||
| { | |||
| // include CAPITAL information | |||
| if(iswupper(letter)) | |||
| if(iswupper2(letter)) | |||
| { | |||
| Lookup(tr, "_cap", capital); | |||
| } | |||
| } | |||
| letter = towlower2(letter); | |||
| // is this a subscript or superscript letter ? | |||
| for(ix=0; (c = derived_letters[ix]) != 0; ix+=2) | |||
| { | |||
| if(c > letter) | |||
| break; | |||
| if(c == letter) | |||
| { | |||
| c = derived_letters[ix+1]; | |||
| letter = c & 0x3fff; | |||
| if((modifier = modifiers[c >> 14]) != NULL) | |||
| { | |||
| Lookup(tr, modifier, capital); | |||
| if(capital[0] == 0) | |||
| { | |||
| capital[2] = SetTranslator2("en"); // overwrites previous contents of translator2 | |||
| Lookup(translator2, modifier, &capital[3]); | |||
| if(capital[3] != 0) | |||
| { | |||
| capital[0] = phonPAUSE; | |||
| capital[1] = phonSWITCH; | |||
| len = strlen(&capital[3]); | |||
| capital[len+3] = phonSWITCH; | |||
| capital[len+4] = phontab_1; | |||
| capital[len+5] = 0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1); | |||
| if(ph_buf[0] == phonSWITCH) | |||
| @@ -663,6 +765,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| return(0); | |||
| } | |||
| if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0)) | |||
| { | |||
| // convert a non-ascii number to 0-9 | |||
| @@ -794,7 +897,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| speak_letter_number = 1; | |||
| if(!(al_flags & AL_NO_SYMBOL)) | |||
| { | |||
| if(iswalpha(letter)) | |||
| if(iswalpha2(letter)) | |||
| Lookup(translator, "_?A", ph_buf); | |||
| if((ph_buf[0]==0) && !iswspace(letter)) | |||
| @@ -2244,8 +2347,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) | |||
| utf8_in(&next_char,p); | |||
| if(!iswalpha(next_char) && (thousands_exact==0)) | |||
| // if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| if(!iswalpha2(next_char) && (thousands_exact==0)) | |||
| // if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | |||
| } | |||
| @@ -260,8 +260,25 @@ static const short wchar_tolower[] = { | |||
| 0x23d, 0x19a, | |||
| 0x23e, 0x2c66, | |||
| 0x243, 0x180, | |||
| 0x000, 0x000, | |||
| }; | |||
| 0,0 }; | |||
| static const short wchar_toupper[] = { | |||
| 0x0b5, 0x39c, | |||
| 0x0df, 0x0df, | |||
| 0x0ff, 0x178, | |||
| 0x131, 0x049, | |||
| 0x17f, 0x053, | |||
| 0x180, 0x243, | |||
| 0x195, 0x1f6, | |||
| 0x19a, 0x23d, | |||
| 0x19e, 0x220, | |||
| 0x1bf, 0x1f7, | |||
| 0x1c6, 0x1c4, | |||
| 0x1c9, 0x1c7, | |||
| 0x1cc, 0x1ca, | |||
| 0x1dd, 0x18e, | |||
| 0x1f3, 0x1f1, | |||
| 0,0 }; | |||
| #ifdef NEED_WCHAR_FUNCTIONS | |||
| @@ -317,13 +334,17 @@ int towlower(int c) | |||
| int towupper(int c) | |||
| { | |||
| int ix; | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if(towlower(c-32) == c) | |||
| return(c-32); // yes, use it | |||
| if(towlower(c-1) == c) | |||
| return(c-1); | |||
| if(towlower(c-2) == c) | |||
| return(c-2); | |||
| for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_toupper[ix] == c) | |||
| return(wchar_toupper[ix+1]); | |||
| } | |||
| return(c); // no | |||
| } | |||
| @@ -417,6 +438,28 @@ int iswalpha2(int c) | |||
| return(walpha_tab[c-0x80]); | |||
| } | |||
| int iswlower2(int c) | |||
| { | |||
| if(c < 0x80) | |||
| return(islower(c)); | |||
| if(c > MAX_WALPHA) | |||
| return(iswlower(c)); | |||
| if(walpha_tab[c-0x80] == 0xff) | |||
| return(1); | |||
| return(0); | |||
| } | |||
| int iswupper2(int c) | |||
| { | |||
| int x; | |||
| if(c < 0x80) | |||
| return(isupper(c)); | |||
| if(c > MAX_WALPHA) | |||
| return(iswupper(c)); | |||
| if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe)) | |||
| return(1); | |||
| return(0); | |||
| } | |||
| int towlower2(unsigned int c) | |||
| { | |||
| @@ -426,7 +469,7 @@ int towlower2(unsigned int c) | |||
| // check for non-standard upper to lower case conversions | |||
| if(c == 'I') | |||
| { | |||
| if(translator->translator_name == L('t','r')) | |||
| if(translator->langopts.dotless_i) | |||
| { | |||
| c = 0x131; // I -> ı | |||
| } | |||
| @@ -453,6 +496,24 @@ int towlower2(unsigned int c) | |||
| return(c + x); // convert to lower case | |||
| } | |||
| int towupper2(unsigned int c) | |||
| { | |||
| int ix; | |||
| if(c > MAX_WALPHA) | |||
| return(towupper(c)); | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if(towlower2(c-32) == c) | |||
| return(c-32); // yes, use it | |||
| if(towlower2(c-1) == c) | |||
| return(c-1); | |||
| for(ix=0; wchar_toupper[ix] != 0; ix+=2) | |||
| { | |||
| if(wchar_toupper[ix] == c) | |||
| return(wchar_toupper[ix+1]); | |||
| } | |||
| return(c); // no | |||
| } | |||
| static int IsRomanU(unsigned int c) | |||
| {//================================ | |||
| @@ -2330,7 +2391,7 @@ f_input = f_in; // for GetC etc | |||
| c2 = ' '; | |||
| } | |||
| else | |||
| if((c2 == '/') || iswalpha(c2)) | |||
| if((c2 == '/') || iswalpha2(c2)) | |||
| { | |||
| // check for space in the output buffer for embedded commands produced by the SSML tag | |||
| if(ix > (n_buf - 20)) | |||
| @@ -2513,10 +2574,10 @@ f_input = f_in; // for GetC etc | |||
| } | |||
| } | |||
| if(iswupper(c1)) | |||
| if(iswupper2(c1)) | |||
| { | |||
| tr->clause_upper_count++; | |||
| if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev)) | |||
| if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev)) | |||
| { | |||
| char text_buf[40]; | |||
| char text_buf2[30]; | |||
| @@ -2533,7 +2594,7 @@ f_input = f_in; // for GetC etc | |||
| } | |||
| } | |||
| else | |||
| if(iswalpha(c1)) | |||
| if(iswalpha2(c1)) | |||
| tr->clause_lower_count++; | |||
| if(option_phoneme_input) | |||
| @@ -2602,8 +2663,8 @@ if(option_ssml) parag=1; | |||
| if(!iswspace(c1)) | |||
| { | |||
| if(!IsAlpha(c1) || !iswlower(c1)) | |||
| // if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
| if(!IsAlpha(c1) || !iswlower2(c1)) | |||
| // if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1))) | |||
| { | |||
| UngetC(c2); | |||
| ungot_char2 = c1; | |||
| @@ -2702,7 +2763,7 @@ if(option_ssml) parag=1; | |||
| if(nl_count==0) | |||
| { | |||
| if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next)))) | |||
| if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next)))) | |||
| { | |||
| // lang=hu, fix for ordinal numbers, eg: "december 2., szerda", ignore ',' after ordinal number | |||
| c1 = CHAR_COMMA_BREAK; | |||
| @@ -2721,7 +2782,7 @@ if(option_ssml) parag=1; | |||
| } | |||
| else | |||
| { | |||
| if (iswlower(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
| if (iswlower2(c_next) || (c_next=='-')) // hyphen is needed for lang-hu (eg. 2.-kal) | |||
| is_end_clause = 0; // only if followed by lower-case, (or if there is a XML tag) | |||
| } | |||
| } | |||
| @@ -2730,7 +2791,7 @@ if(option_ssml) parag=1; | |||
| { | |||
| is_end_clause = 0; // eg. u.s.a.'s | |||
| } | |||
| if(iswlower(c_next)) | |||
| if(iswlower2(c_next)) | |||
| { | |||
| // next word has no capital letter, this dot is probably from an abbreviation | |||
| // c1 = ' '; | |||
| @@ -1164,6 +1164,17 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream) | |||
| } // end of espeak_SetPhonemes | |||
| ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode) | |||
| {//============================================================================================================== | |||
| /* phoneme_mode bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator | |||
| bit 4: 0=eSpeak phoneme names, 1=IPA | |||
| */ | |||
| option_multibyte = textmode & 7; | |||
| TranslateClause(translator, NULL, text, NULL, NULL); | |||
| GetTranslatedPhonemeString(buffer, size, phonememode); | |||
| } | |||
| ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) | |||
| {//============================================================================= | |||
| ENTER("espeak_CompileDictionary"); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.47.07a 23.Apr.13"; | |||
| const char *version_string = "1.47.07b 25.Apr.13"; | |||
| const int version_phdata = 0x014701; | |||
| int option_device_number = -1; | |||
| @@ -1953,20 +1953,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| if((option_phonemes > 0) || (phoneme_callback != NULL)) | |||
| { | |||
| int use_ipa = 0; | |||
| int phoneme_mode = 0; | |||
| if(option_phonemes >= 3) | |||
| use_ipa = option_phonemes-2; // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ, 4=ipa with separators | |||
| phoneme_mode = 0x10 + option_phonemes-3; // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode); | |||
| if(option_phonemes > 0) | |||
| { | |||
| fprintf(f_trans,"%s\n",translator->phon_out); | |||
| if(!iswalpha(0x010d)) | |||
| { | |||
| // check that c-caron is recognized as an alphabetic character | |||
| fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n"); | |||
| } | |||
| } | |||
| if(phoneme_callback != NULL) | |||
| { | |||
| @@ -972,7 +972,7 @@ SetLengthMods(tr,3); // all equal | |||
| SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels); | |||
| SetLetterBits(tr,LETTERGP_C,hy_consonants); | |||
| tr->langopts.max_initial_consonants = 6; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED; | |||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| } | |||
| break; | |||
| @@ -1290,6 +1290,7 @@ SetLengthMods(tr,3); // all equal | |||
| ResetLetterBits(tr,0x2); | |||
| SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
| tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2 | |||
| tr->langopts.accents = 2; // 'capital' after letter name | |||
| } | |||
| break; | |||
| @@ -1521,6 +1522,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
| tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress | |||
| tr->langopts.dotless_i = 1; | |||
| tr->langopts.param[LOPT_SUFFIX] = 1; | |||
| if(name2 == L('a','z')) | |||
| @@ -624,7 +624,7 @@ int IsAllUpper(const char *word) | |||
| while((*word != 0) && !isspace2(*word)) | |||
| { | |||
| word += utf8_in(&c, word); | |||
| if(!iswupper(c)) | |||
| if(!iswupper2(c)) | |||
| return(0); | |||
| } | |||
| return(1); | |||
| @@ -1053,7 +1053,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| } | |||
| } | |||
| if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char)) | |||
| if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char)) | |||
| { | |||
| if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV)) | |||
| { | |||
| @@ -1632,7 +1632,7 @@ if(end_type & SUFX_UNPRON) | |||
| tr->expect_past--; | |||
| } | |||
| if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i')) | |||
| if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i')) | |||
| { | |||
| // English Specific !!!! | |||
| // any single letter before a dot is an abbreviation, except 'I' | |||
| @@ -1908,7 +1908,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| while(*p2 != ' ') p2++; | |||
| utf8_in(&c_word2, p2+1); // first character of the next word; | |||
| if(!iswalpha(c_word2)) | |||
| if(!iswalpha2(c_word2)) | |||
| { | |||
| ok =0; | |||
| } | |||
| @@ -2376,9 +2376,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| // there is a list of character codes to be substituted with alternative codes | |||
| if(iswupper(c_lower = c)) | |||
| if(iswupper2(c_lower = c)) | |||
| { | |||
| c_lower = towlower(c); | |||
| c_lower = towlower2(c); | |||
| upper_case = 1; | |||
| } | |||
| @@ -2392,7 +2392,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| new_c = replace_chars[ix+1]; | |||
| break; | |||
| } | |||
| if((word >> 16) == (unsigned int)towlower(next_in)) | |||
| if((word >> 16) == (unsigned int)towlower2(next_in)) | |||
| { | |||
| new_c = replace_chars[ix+1]; | |||
| ignore_next = 1; | |||
| @@ -2409,14 +2409,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| // there is a second character to be inserted | |||
| // don't convert the case of the second character unless the next letter is also upper case | |||
| c2 = new_c >> 16; | |||
| if(upper_case && iswupper(next_in)) | |||
| c2 = towupper(c2); | |||
| if(upper_case && iswupper2(next_in)) | |||
| c2 = towupper2(c2); | |||
| *insert = c2; | |||
| new_c &= 0xffff; | |||
| } | |||
| if(upper_case) | |||
| new_c = towupper(new_c); | |||
| new_c = towupper2(new_c); | |||
| *wordflags |= FLAG_CHAR_REPLACED; | |||
| return(new_c); | |||
| @@ -2480,7 +2480,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| // look for 'n and replace by a special character (unicode: schwa) | |||
| if(!iswalpha(prev_in)) | |||
| if(!iswalpha2(prev_in)) | |||
| { | |||
| utf8_in(&next2, &ptr[1]); | |||
| @@ -2910,7 +2910,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| else | |||
| { | |||
| if(iswupper(c)) | |||
| if(iswupper2(c)) | |||
| word_flags |= FLAG_FIRST_UPPER; | |||
| if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in)) | |||
| @@ -2939,7 +2939,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| } | |||
| if(iswupper(c)) | |||
| if(iswupper2(c)) | |||
| { | |||
| c = towlower2(c); | |||
| @@ -2954,7 +2954,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| } | |||
| else | |||
| { | |||
| if((iswlower(prev_in)) && (prev_in != 0xba)) // Windows thinks masc.ordinal (0xba) is lower-case | |||
| if(iswlower2(prev_in)) | |||
| { | |||
| // lower case followed by upper case in a word | |||
| if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) | |||
| @@ -2970,7 +2970,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| // next_word_flags |= FLAG_NOSPACE; // problem: prevents FLAG_HAS_DOT being set | |||
| } | |||
| } | |||
| else if((c != ' ') && iswupper(prev_in) && iswlower(next_in)) | |||
| else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in)) | |||
| { | |||
| int next2_in; | |||
| utf8_in(&next2_in,&source[source_index + next_in_nbytes]); | |||
| @@ -542,6 +542,7 @@ typedef struct { | |||
| char tone_numbers; | |||
| char ideographs; // treat as separate words | |||
| char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled) | |||
| char dotless_i; // uses letter U+0131 | |||
| int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
| int listx; // compile *_listx after *list | |||
| const unsigned int *replace_chars; // characters to be substitutes | |||
| @@ -715,8 +716,11 @@ int IsAlpha(unsigned int c); | |||
| int IsVowel(Translator *tr, int c); | |||
| int iswalpha2(int c); | |||
| int isspace2(unsigned int c); | |||
| int iswlower2(int c); | |||
| int iswupper2(int c); | |||
| int towlower2(unsigned int c); | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); | |||
| int towupper2(unsigned int c); | |||
| void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode); | |||
| const char *WordToString2(unsigned int word); | |||
| ALPHABET *AlphabetFromChar(int c); | |||
| ALPHABET *AlphabetFromName(const char *name); | |||
| @@ -460,7 +460,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event) | |||
| t_phonetic->SetDefaultStyle(style_phonetic_large); | |||
| translate_text = 3; | |||
| use_ipa = 1; | |||
| use_ipa = 0x10; | |||
| break; | |||
| case T_PROCESS: | |||
| @@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| // which directory to look for a named voice. List of voice names, must end in a space. | |||
| static const char *voices_asia = | |||
| "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; | |||
| "az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; | |||
| static const char *voices_europe = | |||
| "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||