Added languages: fa (Farsi), an (Aragon). Changes to languages: pt, si, ne. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@297 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -0,0 +1,74 @@ | |||
| // Aragon translation rules | |||
| // This file is UTF-8 encoded | |||
| // letter names | |||
| b be | |||
| c Te | |||
| d de | |||
| f Efe | |||
| g xe | |||
| h atSe | |||
| j xOta | |||
| k ka | |||
| l Ele | |||
| m Eme | |||
| n Ene | |||
| ñ En^e | |||
| p pe | |||
| q ku | |||
| r E*e | |||
| s Ese | |||
| t te | |||
| u u | |||
| v uBe | |||
| w uBe||dOBle | |||
| x Ekis | |||
| y je | |||
| z Teta | |||
| // numbers | |||
| _0 T'ero | |||
| _1 'un | |||
| _2 d'os | |||
| _3 tr'es | |||
| _4 kw'atro | |||
| _5 T'inko | |||
| _6 s'eIs | |||
| _7 s'eIt# | |||
| _8 gw'eIto | |||
| _9 nw'eU | |||
| _1X d,eT | |||
| _10 dj'eT | |||
| _11 'onTe | |||
| _12 d'oTe | |||
| _13 tr'eTe | |||
| _14 kat'orTe | |||
| _15 k'inTe | |||
| _20 B'inte | |||
| _2X B,int | |||
| _3X tr'enta | |||
| _4X kwar'anta | |||
| _5X Tinkw'anta | |||
| _6X siks'anta | |||
| _7X set'anta | |||
| _8X gwit'anta | |||
| _9X noB'anta | |||
| _0C Tj'Entos | |||
| _1C Tj'En | |||
| _2C doTj'Entos | |||
| _3C tresTj'Entos | |||
| _6C seITj'Entos | |||
| _7C sjEteTj'Entos | |||
| _8C gwitoTj'Entos | |||
| _9C nowTj'Entos | |||
| _0M1 m'il | |||
| _0M2 mil^'ones | |||
| _0and i | |||
| _dpt kon | |||
| @@ -0,0 +1,206 @@ | |||
| // Aragon translation rules | |||
| // This file is UTF-8 encoded | |||
| .L01 l r y | |||
| .L03 f h j s y z r // allow [B] [D] [Q] before these consonants | |||
| .L04 b v f p // labials, nasals are [m] | |||
| .L05 g k // velars, nasals are [N] | |||
| .group a | |||
| a a | |||
| ai aI | |||
| ai (X 'aI | |||
| ay (K aI | |||
| ay (X 'aI | |||
| au aU | |||
| au (X 'aU | |||
| .group b | |||
| b b | |||
| _) b b // phoneme definition may change it to [B] | |||
| _) b (A b | |||
| b (A B | |||
| b (cY B | |||
| b (L03 B | |||
| m) b b | |||
| n) b b | |||
| b (iA b | |||
| b (uA b | |||
| .group c | |||
| c k | |||
| c (Y T // ce ci | |||
| cc kT | |||
| ch tS | |||
| .group d | |||
| d d | |||
| _) d d // phoneme definition may change it to [D] | |||
| _) d (A d | |||
| d (A D | |||
| d (cY D | |||
| d (L03 D | |||
| m) d d | |||
| n) d d | |||
| l) d d | |||
| r) d d | |||
| n) d (_ = // silent, but stress on last vowel | |||
| .group e | |||
| e e | |||
| ei eI | |||
| ei (X 'eI | |||
| ey (K eI | |||
| ey (X 'eI | |||
| eu eU | |||
| eu (X 'eU | |||
| i) e E | |||
| u) e E | |||
| y) e E | |||
| .group f | |||
| f f | |||
| .group g | |||
| g g | |||
| _) g g // phoneme definition may change it to [Q] | |||
| _) gh (A g // allow _gh in foreign words | |||
| _) gn (A n | |||
| _) g (A g | |||
| g (A Q | |||
| g (cY Q | |||
| g (L03 Q | |||
| m) g g | |||
| n) g g | |||
| g (Y+ x // ge gi | |||
| gu (A gw | |||
| gü gw | |||
| gu (e g | |||
| gu (i g | |||
| .group h | |||
| h // silent | |||
| .group i | |||
| i i | |||
| i (A j | |||
| A) ix S | |||
| .group j | |||
| j x | |||
| .group k | |||
| k k | |||
| .group l | |||
| l l | |||
| ll l^ | |||
| .group m | |||
| m m | |||
| .group n | |||
| n n | |||
| n (L04 m | |||
| n (_L04 m | |||
| ny n^ | |||
| .group ñ | |||
| ñ n^ | |||
| .group o | |||
| o o | |||
| oi oI | |||
| oi (X 'oI | |||
| oy (K oI | |||
| oy (X 'oI | |||
| ou ow | |||
| ou (X 'ow | |||
| i) o O | |||
| u) o O | |||
| y) o O | |||
| .group p | |||
| p p | |||
| .group q | |||
| qu (A kw | |||
| qü kw | |||
| qu (e k | |||
| qu (i k | |||
| .group r | |||
| r r | |||
| _) r R | |||
| rr RR2 | |||
| @) r (- = // followed by hyphen. Silent, but stress on last vowel | |||
| .group s | |||
| s s | |||
| .group t | |||
| t t | |||
| a) t (_ t# // becomes silent in a stressed syllable | |||
| u) t (_ t# | |||
| ei) t (_ t# | |||
| n) t (_ = // silent, but stress on last vowel | |||
| tz T | |||
| .group u | |||
| u u | |||
| u (A w | |||
| _) u (A gw | |||
| .group v | |||
| v B | |||
| .group w | |||
| w w | |||
| .group x | |||
| x ks | |||
| _) x S | |||
| .group y | |||
| y j | |||
| .group z | |||
| z T | |||
| .group | |||
| á ''a | |||
| é ''e | |||
| í ''i | |||
| ó ''o | |||
| ú ''u | |||
| @@ -102,7 +102,7 @@ p Q r R s s; t T | |||
| ts v x z | |||
| Dictionary en_dict 2013-01-15 | |||
| Dictionary en_dict 2013-01-18 | |||
| 0 3 3: @ @- @2 @5 @L | |||
| a a# A: A@ aa aI aI3 aI@ | |||
| @@ -203,7 +203,7 @@ q r r. s S s. t T | |||
| t. th th. v w x z | |||
| Dictionary ta_dict 2013-01-15 | |||
| Dictionary ta_dict 2013-01-18 | |||
| a a: aI aU e E e: i | |||
| I i: o o: u U u2 u: | |||
| @@ -376,7 +376,7 @@ S s; S; t t; tS ts tS; | |||
| ts; v w x z Z Z; | |||
| Dictionary pt_dict 2012-11-24 | |||
| Dictionary pt_dict 2013-01-17 | |||
| & &/ &U~ &~ @ @- a A | |||
| aI aU e E eI EI eU EU | |||
| @@ -466,7 +466,7 @@ p Q R s S t T tS | |||
| v w x z | |||
| Dictionary sl_dict 2013-01-15 | |||
| Dictionary sl_dict 2013-01-16 | |||
| @ @- a a: e E e: i | |||
| i: o O o: u u: y | |||
| @@ -474,7 +474,7 @@ i: o O o: u u: y | |||
| : b d dZ dz f g h | |||
| j k l l^ m n N n^ | |||
| p R R^ s S t tS ts | |||
| v w x z Z | |||
| v v# w x z Z | |||
| Dictionary tr_dict 2011-09-16 | |||
| @@ -501,7 +501,7 @@ p Q r s s. t t[ tS; | |||
| v w x z Z z. | |||
| Dictionary zh_dict 2010-09-13 | |||
| Dictionary zh_dict 2013-01-04 | |||
| @ @r a A ai Au E ei | |||
| i i. i[ iA iE io iou N- | |||
| @@ -550,7 +550,7 @@ r R r. R2 s s. S; t | |||
| t. th th. tS v w z | |||
| Dictionary ne_dict 2012-09-19 | |||
| Dictionary ne_dict 2013-01-10 | |||
| @ @/ @2 @3 a a: aI aU | |||
| a~ e E e: E: eI e~ E~ | |||
| @@ -741,7 +741,7 @@ t# tS ts ts# v w x z | |||
| Z | |||
| Dictionary si_dict 2012-11-05 | |||
| Dictionary si_dict 2013-01-18 | |||
| & &: @ a a: aI aU e | |||
| e: i i: o o: u u: | |||
| @@ -845,3 +845,24 @@ Dictionary ko_dict 2012-09-17 | |||
| j k k- kh l m n N | |||
| p p- ph q r R s t | |||
| t- tS tS; w | |||
| Dictionary fa_dict 2013-01-19 | |||
| a A e i o u | |||
| : ? b d dZ f g h | |||
| j k l m n p q r | |||
| R s S t tS v w x | |||
| z Z | |||
| Dictionary an_dict 2013-01-18 | |||
| a aI aU e E eI eU i | |||
| o O oI u | |||
| * b B d D f g j | |||
| k l l^ m n n^ p Q | |||
| r R R2 s S t T t# | |||
| tS w x | |||
| @@ -556,6 +556,7 @@ alternative O:lt'3:n@tIv | |||
| altogether ,O:lt@gED3 | |||
| always O:lweIz | |||
| aluminium aljUm'Ini@m | |||
| alzheimer altsaIm3 | |||
| amaryllis am@r'IlIs | |||
| amass a#mas | |||
| ambassador a#mbas@d3 | |||
| @@ -612,6 +613,7 @@ apache a#patSi | |||
| apneoa apni@ | |||
| apostle a#p0s@L | |||
| apron eIpr@n | |||
| apropos apr@p'oU | |||
| appal a#pO:l | |||
| apparatus ap@r'eIt@s | |||
| ?3 apparatus ap@r'at@s | |||
| @@ -1372,6 +1374,7 @@ henceforth hEnsfo@T | |||
| hercules h3:kjUli:z | |||
| heretical hI2rEtI2k@L | |||
| hereto hi@3'tu: | |||
| heretofore hi@3t@fo@ | |||
| hermaphrodite $2 | |||
| hermes h3:mi:z | |||
| herod hEr@d | |||
| @@ -826,7 +826,7 @@ | |||
| app (eti ap | |||
| app (le ap | |||
| app (lic ap | |||
| app (licab a#p | |||
| applicab a#plIk@b | |||
| app (reh ap | |||
| apres apreI | |||
| _) apprec (L02 a#pri:S | |||
| @@ -4821,6 +4821,7 @@ | |||
| _c) re (mat rI2 | |||
| rement rIm@nt | |||
| _) re (nC rE | |||
| re (nova rE | |||
| _) reper (t rEp3 | |||
| repe (tit rEp@ | |||
| repe (titiv rI2pE | |||
| @@ -1125,28 +1125,27 @@ | |||
| ९_) } b'a:Ng'ek'oshth.@2b'Vnd@2 | |||
| // .group ( // Deliminator, not possible | |||
| // .group ) // Deliminator, not possible | |||
| // .group . // Deliminator, not possible | |||
| // Special Symbols with special meanings | |||
| .group | |||
| । pur',n.@,w'ir'a:m // Fullstop of Devanagari | |||
| ॥ d'ob'b@2r@2,wir'a::mV // Double Fullstop - means Read sentence twice. | |||
| ॱ b'i:n=d'u: // Decimal of devanagari (dot [.] is mostly used!). | |||
| ॰ V,nsh@ // symbol for degree in Devanagari. | |||
| ॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice. | |||
| ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!). | |||
| ॰ saNks.e:p@s'u:c@k@ | |||
| $ dOlV | |||
| % prVtish'vt | |||
| // Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels! | |||
| ़ n'u'k't'a: // Name of symbol. | |||
| ॑ | |||
| ॓ | |||
| ॔ | |||
| ॽ | |||
| ॒ Vd'o:,r'ekh'a: // Name of symbol. | |||
| ॑ Ud'Vtt,@ | |||
| ॓ Ud:dh@r,@n.@a:r'Vmbh@ | |||
| ॔ ,Ud:dh@r,@n.@'Vnt@ | |||
| ॽ k,@n.th.@w'Ira:m | |||
| ॒ a'n'ud'Vtt,@ | |||
| // The Latin letter a-z are automatically translated into English. | |||
| @@ -666,7 +666,9 @@ apreço $alt2 | |||
| aperto $alt2 $noun | |||
| apoio $alt $verb | |||
| aprendeste $alt2 | |||
| aprovo $alt | |||
| arremesso $alt2 $noun | |||
| arroz $alt2 | |||
| assembleia $alt | |||
| atmosfera $alt | |||
| atrozes $alt | |||
| @@ -695,6 +697,7 @@ caractere $alt | |||
| careta $alt2 | |||
| carreta $alt2 | |||
| casebre $alt | |||
| castelo $alt | |||
| cateto $alt2 | |||
| catorze $alt2 | |||
| cefaleia $alt | |||
| @@ -704,6 +707,7 @@ chamego $alt2 | |||
| chefe $alt | |||
| chinelo $alt | |||
| choro $alt2 $noun | |||
| chupeta $alt2 | |||
| coco $alt2 | |||
| cofre $alt | |||
| colmeia $alt | |||
| @@ -721,6 +725,7 @@ cornos $alt | |||
| corpos $alt | |||
| correste $alt2 | |||
| corto $alt | |||
| corveta $alt2 | |||
| corvos $alt | |||
| coto $alt2 | |||
| couber $alt | |||
| @@ -733,6 +738,7 @@ cresce $alt | |||
| crescem $alt | |||
| der $alt | |||
| desapego $alt2 $noun | |||
| descabelo $alt | |||
| desce $alt | |||
| descem $alt | |||
| descordo $alt | |||
| @@ -756,6 +762,7 @@ engordo $alt | |||
| enumerem $alt | |||
| enredo $alt $verb | |||
| enterro $alt2 $noun | |||
| envelope $alt | |||
| envolto $alt2 | |||
| enxerto $alt2 $noun | |||
| epopeia $alt | |||
| @@ -769,9 +776,12 @@ esforços $alt | |||
| esperma $alt | |||
| espeto $alt2 $noun | |||
| espiroqueta $alt2 | |||
| espoleta $alt2 | |||
| esposa $alt2 | |||
| esqueleto $alt2 | |||
| estiverdes $alt | |||
| estiveres $alt | |||
| estrela $alt2 | |||
| estrofe $alt | |||
| etiqueta $alt2 | |||
| europa $alt | |||
| @@ -789,6 +799,7 @@ fezes $alt | |||
| folga $alt | |||
| fogos $alt | |||
| forca $alt2 | |||
| forças $alt2 | |||
| fores $alt2 | |||
| forro $alt $verb | |||
| fosse $alt2 | |||
| @@ -827,6 +838,7 @@ marreta $alt2 | |||
| martelo $alt | |||
| merda $alt | |||
| megera $alt | |||
| melo $alt | |||
| mentora $alt2 | |||
| metro $alt | |||
| mexa m'eS& | |||
| @@ -880,6 +892,7 @@ pesque $alt | |||
| pesquem $alt | |||
| peso $alt | |||
| peso $alt2 $noun | |||
| piloto $alt2 | |||
| pirueta $alt2 | |||
| plateia $alt | |||
| plebeia $alt | |||
| @@ -904,6 +917,7 @@ recorto $alt | |||
| rede $alt2 | |||
| reforços $alt | |||
| refresco $alt $verb | |||
| reitora $alt2 | |||
| remorso $alt | |||
| resolve $alt | |||
| resolvem $alt | |||
| @@ -911,6 +925,8 @@ rixa x'iS& | |||
| rogas $alt | |||
| saleta $alt2 | |||
| sarjeta $alt | |||
| severa $alt | |||
| severo $alt | |||
| seborreia $alt | |||
| seco $alt2 $noun | |||
| selo $alt $verb | |||
| @@ -941,6 +957,7 @@ tempero $alt $verb | |||
| teta $alt2 | |||
| tiver $alt | |||
| tiveres $alt | |||
| tocha $alt | |||
| toga $alt | |||
| torres $alt2 | |||
| tortos $alt | |||
| @@ -391,6 +391,12 @@ _reconh) e (çL03_ e | |||
| _sup) e (rL04_ E | |||
| _imp) e (rL03_ E | |||
| _temp) e (rL04_ E | |||
| _esp) e (ssL03_ e | |||
| _l) e (ssL02_ e | |||
| _perd) e (L05_ e | |||
| _rend) e (L06_ e | |||
| _atend) e (L06_ e | |||
| _pen) e (trL04_ E | |||
| //endsort | |||
| _exag) e (L05_ E | |||
| @@ -702,6 +708,10 @@ _reconh) e (çL03_ e | |||
| _m) o (rrL01_ o | |||
| p) ostos (_ Ost=Us# // dispostos etc. | |||
| _esn) o (bL04_ O | |||
| _esc) o (lhL02_ O | |||
| _rev) o (lvL02_ O | |||
| _desenv) o (lvL02_ O | |||
| _ ent) o (pL02_ O | |||
| //endsort | |||
| .group ô | |||
| @@ -938,8 +948,8 @@ _reconh) e (çL03_ e | |||
| _xi) x (A S | |||
| ?1 i) x (a_ S | |||
| ?1 i) x (as_ S | |||
| _trou) x (ér s | |||
| _pro) x (imi s | |||
| .group y | |||
| @@ -45,7 +45,7 @@ _dia 'umlawt | |||
| // numbers | |||
| _0 n'itS | |||
| _1 'ena | |||
| _1 'Ena | |||
| _2 dv#'a | |||
| _3 tR'i | |||
| _4 St'iRi | |||
| @@ -77,19 +77,19 @@ _0C sto | |||
| _0M1 t'isotS | |||
| _1M1 t'isotS | |||
| _1M2 'enmilij'on | |||
| _1M2 'Enmilij'on | |||
| _2M2 dv#'amilij'ona | |||
| _3M2 tR'ijemilij'oni | |||
| _4M2 St'iRijemilij'oni | |||
| _0M2 milij'onow | |||
| _1M3 'enamilij'aRda | |||
| _1M3 'Enamilij'aRda | |||
| _2M3 dv#'emilij'aRdi | |||
| _3M3 tR'imilij'aRde | |||
| _4M3 St'iRimilij'aRde | |||
| _0M3 milij'aRd | |||
| _1M4 'enbilij'on | |||
| _1M4 'Enbilij'on | |||
| _2M4 dv#'abilij'ona | |||
| _3M4 tR'ijebilij'oni | |||
| _4M4 St'iRijebilij'oni | |||
| @@ -26,6 +26,7 @@ | |||
| .group e | |||
| e e | |||
| e (_ E // ?? | |||
| _) e E | |||
| .group f | |||
| @@ -45,7 +46,6 @@ | |||
| .group i | |||
| i i | |||
| i (A j | |||
| i (r j | |||
| .group j | |||
| @@ -119,7 +119,6 @@ | |||
| .group u | |||
| u u | |||
| u (A w | |||
| u (r u | |||
| A) u (K w | |||
| @@ -116,7 +116,7 @@ | |||
| .L26 சிலிண்டர ஸ்டவ் கனெக் அடுப்ப | |||
| // words after சிரத்தை | |||
| .L27 _உண்ட _ஏற்பட _இல்ல யிரு யாக யி | |||
| .L27 _உண்ட _ஏற்பட _இல்ல யிரு யாக யி யுடன யை | |||
| // [aU] at start of word | |||
| .L28 ஔ ஒள // அவு | |||
| @@ -1087,9 +1087,7 @@ _தணிகா) ச (ல tSV | |||
| _மலே) ச (ிய s. | |||
| இந்தோனே) ச (ிய s. | |||
| _பக்தி_) சிரத் (தை srVd | |||
| _) சி (ரத்தைL27 s | |||
| _) சிரத்த (ையுடன srVdd | |||
| _) சிரத்த (ையை srVdd | |||
| _) சிரத்த (ைL27 srVdd | |||
| சி (ரம s | |||
| _) சி (ரார்த்த s | |||
| _) சிரிலங்க (ா srilVNk | |||
| @@ -2327,7 +2325,7 @@ _சி) த்ரலேக (ா trVle:k | |||
| _) ப (தில bV | |||
| _) பத்த (ிரகாளி bVdd | |||
| _) பத்திரப் (_ bVttirVp | |||
| _) ப (த்திரப்_பதி bV | |||
| _) பத்திரப் (_பதி pVttirVp | |||
| _) ப (த்திரப்பட bV | |||
| _) ப (த்திரமா bV | |||
| _) பத்த (ிரி_ bVdd | |||
| @@ -1,4 +1,4 @@ | |||
| 84 phoneme tables | |||
| 85 phoneme tables | |||
| new total | |||
| base 109 109 | |||
| consonants 10 118 | |||
| @@ -41,6 +41,7 @@ consonants 10 118 | |||
| es 15 125 | |||
| es-la 1 125 | |||
| ca 11 127 | |||
| an 4 125 | |||
| pt 29 140 | |||
| pt-pt 20 140 | |||
| ro 36 148 | |||
| @@ -418,7 +419,7 @@ l/l_ [l] base | |||
| [l/] fr | |||
| l/l_@ [l/3] base | |||
| [l/] fr | |||
| l/l@ [hæt] base | |||
| l/l@ [hÖv] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -452,7 +453,7 @@ l/L2_oL [l/2] base | |||
| l/L2_uL [l/2] base | |||
| l/l_3 [l/] de | |||
| l/l_4 [ll] sq | |||
| l/la [hæt] base | |||
| l/la [hÖv] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -460,7 +461,7 @@ l/la [h | |||
| [K] tn | |||
| l/l_a [l/3] base | |||
| [l/] fr | |||
| l/le [hæt] base | |||
| l/le [hÖv] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -472,7 +473,7 @@ l/L_eL_af [&] af | |||
| [&:] af | |||
| l/l_front [L] sq | |||
| l/l_front_ [l/4] sq | |||
| l/li [hæt] base | |||
| l/li [hÖv] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -486,7 +487,7 @@ ll/ll [L] base | |||
| ll/_ll [L] base | |||
| l/l_long [l] base | |||
| [l] fr | |||
| l/lo [hæt] base | |||
| l/lo [hÖv] base | |||
| [l#] base | |||
| [l/2] fr | |||
| [K] nso | |||
| @@ -497,7 +498,7 @@ l^/l_rfx [l.] base | |||
| [l;] lt | |||
| [l] ru | |||
| [l^] ru | |||
| l/lu [hæt] base | |||
| l/lu [hÖv] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -1774,6 +1775,7 @@ vowel/ee_1 [E] base2 | |||
| [e] lt | |||
| [E] pl | |||
| [E] la | |||
| [E] an | |||
| [E] grc | |||
| [E:] sv | |||
| [E:] no | |||
| @@ -2181,6 +2183,7 @@ vowel/oo_4 [O] base2 | |||
| [O1] et | |||
| [O:] hi | |||
| [O] it | |||
| [O] an | |||
| [O] pa | |||
| [O] ga | |||
| vowel/oo_5 [O] pl | |||
| @@ -0,0 +1,24 @@ | |||
| // based on Spanish | |||
| phoneme t# | |||
| vls dnt stop | |||
| IF NOT prevVowel(isStressed) THEN | |||
| ChangePhoneme(t) | |||
| ENDIF | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 170 | |||
| FMT(vowel/ee_1) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| FMT(vowel/oo_4) | |||
| endphoneme | |||
| @@ -0,0 +1,63 @@ | |||
| // Long Vowels | |||
| phoneme A | |||
| vowel starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/0_3) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/i) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/u_bck2) | |||
| endphoneme | |||
| // Short Vowels | |||
| phoneme a | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| FMT(vowel/&) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #i endtype #i | |||
| length 160 | |||
| FMT(vowel/o_mid) | |||
| endphoneme | |||
| // Diphthongs | |||
| phoneme eI | |||
| vowel starttype #i endtype #i | |||
| length 220 | |||
| FMT(vdiph/eei_2) | |||
| endphoneme | |||
| phoneme oU | |||
| vowel starttype #i endtype #i | |||
| length 220 | |||
| FMT(vdiph/ou_2) | |||
| endphoneme | |||
| @@ -0,0 +1,62 @@ | |||
| phoneme @ // Schwa, can be stressed | |||
| vowel starttype #@ endtype #@ | |||
| length 140 | |||
| FMT(vowel/@) | |||
| endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 140 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/ii_3) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 140 | |||
| FMT(vowel/u_2) | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 170 | |||
| FMT(vowel/a) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 160 | |||
| FMT(vowel/e_2) | |||
| endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 160 | |||
| FMT(vowel/e_mid) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 160 | |||
| FMT(vowel/o_8) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 170 | |||
| FMT(vowel/0_2) | |||
| endphoneme | |||
| phoneme v | |||
| import_phoneme base/v# | |||
| endphoneme | |||
| @@ -1781,6 +1781,9 @@ include ph_spanish_la | |||
| phonemetable ca es | |||
| include ph_catalan | |||
| phonemetable an es | |||
| include ph_aragon | |||
| phonemetable pt base2 | |||
| include ph_pt_brazil | |||
| @@ -2,7 +2,7 @@ | |||
| [Setup] | |||
| AppName=eSpeak | |||
| AppVerName=eSpeak version 1.46.28 | |||
| AppVerName=eSpeak version 1.46.31 | |||
| AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
| WindowVisible=yes | |||
| @@ -205,6 +205,7 @@ begin | |||
| case lang1 of | |||
| 'af': value := $436; | |||
| 'am': value := $45e; | |||
| 'an': value := $40a; // Aragon, use code for Spanish | |||
| 'az': value := $42c; | |||
| 'bg': value := $402; | |||
| 'bs': value := $41a; // should be $141a but Jaws crashes on startup | |||
| @@ -219,6 +220,7 @@ begin | |||
| 'es': value := $40a; | |||
| 'et': value := $425; | |||
| 'eu': value := $42d; | |||
| 'fa': value := $429; | |||
| 'fi': value := $40b; | |||
| 'fil': value := $464; | |||
| 'fr': value := $40c; | |||
| @@ -241,6 +243,7 @@ begin | |||
| 'ml': value := $44c; | |||
| 'mn': value := $450; | |||
| 'mt': value := $43a; | |||
| 'my': value := $455; | |||
| 'ne': value := $461; | |||
| 'nl': value := $413; | |||
| 'no': value := $414; | |||
| @@ -2863,6 +2863,7 @@ int TransposeAlphabet(Translator *tr, char *text) | |||
| int offset; | |||
| int min; | |||
| int max; | |||
| const char *map; | |||
| char *p = text; | |||
| char *p2 = text; | |||
| int all_alpha=1; | |||
| @@ -2874,20 +2875,39 @@ int TransposeAlphabet(Translator *tr, char *text) | |||
| offset = tr->transpose_min - 1; | |||
| min = tr->transpose_min; | |||
| max = tr->transpose_max; | |||
| map = tr->transpose_map; | |||
| pairs_start = max - min + 2; | |||
| do { | |||
| p += utf8_in(&c,p); | |||
| if((c >= min) && (c <= max)) | |||
| { | |||
| *p2++ = c - offset; | |||
| } | |||
| else | |||
| if(c != 0) | |||
| { | |||
| p2 += utf8_out(c,p2); | |||
| all_alpha=0; | |||
| if((c >= min) && (c <= max)) | |||
| { | |||
| if(map == NULL) | |||
| { | |||
| *p2++ = c - offset; | |||
| } | |||
| else | |||
| { | |||
| // get the code from the transpose map | |||
| if(map[c - min] > 0) | |||
| { | |||
| *p2++ = map[c - min]; | |||
| } | |||
| else | |||
| { | |||
| p2 += utf8_out(c,p2); | |||
| all_alpha=0; | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| p2 += utf8_out(c,p2); | |||
| all_alpha=0; | |||
| } | |||
| } | |||
| } while (c != 0); | |||
| *p2 = 0; | |||
| @@ -35,8 +35,8 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.46.30 15.Jan.13"; | |||
| const int version_phdata = 0x014624; | |||
| const char *version_string = "1.46.31 19.Jan.13"; | |||
| const int version_phdata = 0x014631; | |||
| int option_device_number = -1; | |||
| FILE *f_logespeak = NULL; | |||
| @@ -136,6 +136,29 @@ static Translator* NewTranslator(void) | |||
| static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words | |||
| static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0}; | |||
| // Translates character codes in the range transpose_min to transpose_max to | |||
| // a number in the range 1 to 63. 0 indicates there is no translation. | |||
| // Used up to 57 (max of 63) | |||
| static const char transpose_map_latin[] = { | |||
| 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0x60 | |||
| 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, // 0x70 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x80 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x90 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xa0 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xb0 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xc0 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xd0 | |||
| 27, 28, 29, 0, 0, 30, 31, 32, 33, 34, 35, 36, 0, 37, 38, 0, // 0xe0 | |||
| 0, 0, 0, 39, 0, 0, 40, 0, 41, 0, 42, 0, 43, 0, 0, 0, // 0xf0 | |||
| 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, // 0x100 | |||
| 0, 48, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, // 0x110 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x120 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x130 | |||
| 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x140 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, // 0x150 | |||
| 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x160 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 56, 0, 57, 0, // 0x170 | |||
| }; | |||
| tr = (Translator *)Alloc(sizeof(Translator)); | |||
| if(tr == NULL) | |||
| @@ -147,8 +170,9 @@ static Translator* NewTranslator(void) | |||
| tr->data_dictrules = NULL; // language_1 translation rules file | |||
| tr->data_dictlist = NULL; // language_2 dictionary lookup file | |||
| tr->transpose_min = 'a'; | |||
| tr->transpose_max = 'z'; | |||
| tr->transpose_min = 0x60; | |||
| tr->transpose_max = 0x17f; | |||
| tr->transpose_map = transpose_map_latin; | |||
| tr->frequent_pairs = NULL; | |||
| // only need lower case | |||
| @@ -306,6 +330,7 @@ static void SetCyrillicLetters(Translator *tr) | |||
| tr->charset_a0 = charsets[18]; // KOI8-R | |||
| tr->transpose_min = 0x430; // convert cyrillic from unicode into range 0x01 to 0x22 | |||
| tr->transpose_max = 0x451; | |||
| tr->transpose_map = NULL; | |||
| tr->frequent_pairs = pairs_ru; | |||
| tr->letter_bits_offset = OFFSET_CYRILLIC; | |||
| @@ -611,6 +636,7 @@ Translator *SelectTranslator(const char *name) | |||
| break; | |||
| case L('e','s'): // Spanish | |||
| case L('a','n'): // Aragonese | |||
| case L('c','a'): // Catalan | |||
| case L_pap: // Papiamento | |||
| { | |||
| @@ -639,6 +665,11 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||
| } | |||
| else | |||
| if(name2 == L('a','n')) | |||
| { | |||
| tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | |||
| } | |||
| else | |||
| if(name2 == L_pap) | |||
| { | |||
| tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel | |||
| @@ -663,7 +694,25 @@ Translator *SelectTranslator(const char *name) | |||
| case L('f','a'): // Farsi | |||
| { | |||
| // Convert characters in the range 0x620 to 0x6cc to the range 1 to 63. | |||
| // 0 indicates no translation for this character | |||
| static const char transpose_map_fa[] = { | |||
| 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0x620 | |||
| 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, // 0x630 | |||
| 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, // 0x640 | |||
| 42, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x650 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x660 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, // 0x670 | |||
| 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x680 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, // 0x690 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 49, // 0x6a0 | |||
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x6b0 | |||
| 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51 }; // 0x6c0 | |||
| tr->transpose_min = 0x620; | |||
| tr->transpose_max = 0x6cc; | |||
| tr->transpose_map = transpose_map_fa; | |||
| tr->letter_bits_offset = OFFSET_ARABIC; | |||
| tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND; | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| @@ -1229,10 +1278,10 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_flags = 0x20; | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103; | |||
| 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->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN; | |||
| tr->langopts.numbers2 = 0x100; // plural forms of millions etc | |||
| tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator | |||
| // SetLetterVowel(tr,'r'); | |||
| break; | |||
| case L('s','q'): // Albanian | |||
| @@ -520,6 +520,7 @@ typedef struct | |||
| int translator_name; | |||
| int transpose_max; | |||
| int transpose_min; | |||
| const char *transpose_map; | |||
| char dictionary_name[40]; | |||
| char phon_out[400]; | |||
| @@ -61,7 +61,7 @@ int formant_rate[9]; // values adjusted for actual sample rate | |||
| #define DEFAULT_LANGUAGE_PRIORITY 5 | |||
| #define N_VOICES_LIST 150 | |||
| #define N_VOICES_LIST 200 | |||
| static int n_voices_list = 0; | |||
| static espeak_VOICE *voices_list[N_VOICES_LIST]; | |||
| static int len_path_voices; | |||
| @@ -1770,7 +1770,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| int ix; | |||
| int j; | |||
| espeak_VOICE *v; | |||
| static espeak_VOICE *voices[N_VOICES_LIST]; | |||
| static espeak_VOICE **voices = NULL; | |||
| char path_voices[sizeof(path_home)+12]; | |||
| // free previous voice list data | |||
| @@ -1781,6 +1781,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| GetVoices(path_voices); | |||
| voices_list[n_voices_list] = NULL; // voices list terminator | |||
| voices = (espeak_VOICE **)realloc(voices, sizeof(espeak_VOICE *)*(n_voices_list+1)); | |||
| // sort the voices list | |||
| qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *), | |||