| @@ -1,7 +1,30 @@ | |||
| // Aragon translation rules | |||
| // This file is UTF-8 encoded | |||
| // letters | |||
| _cap m'aJ^uskla // should be after the letter | |||
| _?? simb'Olo | |||
| _#32 Esp'aTjo | |||
| // accent names | |||
| _lig liQaD'ura | |||
| _acu akT'ento aQ'uDo | |||
| _ac2 d'Ople||aQ'uDo | |||
| _brv br'eu | |||
| _ced TeD'il^a | |||
| _cir Tirkumfl'ekso | |||
| _dia djEr'esi | |||
| _dac d'Ople||aQ'uDo | |||
| _dot p'unto | |||
| _grv gr'iEu | |||
| _hac kar'On | |||
| _mcn makr'On | |||
| _ogo kod'eta | |||
| _rng an'iel^o | |||
| _stk b'aRR2a // ?? | |||
| _tld t'il^a | |||
| // letter names | |||
| @@ -31,6 +54,14 @@ z Teta | |||
| y i $u // word 'and' | |||
| _y je | |||
| y je $atend | |||
| ch tSe | |||
| ll 'El^e | |||
| á 'a||akTEntw'aDa | |||
| é 'e||akTEntw'aDa | |||
| í 'i||akTEntw'aDa | |||
| _ó 'o||akTEntw'aDa | |||
| ú 'u||akTEntw'aDa | |||
| ü ,uDjEr'Esi | |||
| // numbers | |||
| @@ -56,7 +87,7 @@ _2X B,int | |||
| _3X tr'enta | |||
| _4X kwar'anta | |||
| _5X Tinkw'anta | |||
| _6X siks'anta | |||
| _6X siS'anta | |||
| _7X set'anta | |||
| _8X gwit'anta | |||
| _9X noB'anta | |||
| @@ -70,16 +101,85 @@ _7C sjEteTj'Entos | |||
| _8C gwitoTj'Entos | |||
| _9C nowTj'Entos | |||
| _0M1 m'il | |||
| _1M1 m'il | |||
| _0M2 mil^'ons | |||
| _1M2 un||mil^'on | |||
| _0M4 bil^'ons | |||
| _1M4 un||bil^'on | |||
| _0and i | |||
| _0and %i | |||
| _dpt kon | |||
| // ordinal numbers | |||
| _#º o | |||
| _#ª a | |||
| //_ord eno | |||
| _1ox prim'Er | |||
| _2ox seQ'und | |||
| _3ox tErT'Er | |||
| _1o un'en | |||
| _2o dos'en | |||
| _3o tres'en | |||
| _4o kwatr'en | |||
| _5o Tink'en | |||
| _6o seIs'en | |||
| _7o sEt'en | |||
| _8o gwit'en | |||
| _9o nU'en | |||
| _11o onT'en | |||
| _12o DoT'en | |||
| _13o tReT'en | |||
| _14o katorT'en | |||
| _15o kinT'en | |||
| _16o sET'en | |||
| _10o DET'en | |||
| _20o Bint'en | |||
| _30o trent'en | |||
| _40o kwarant'en | |||
| _50o Tinkwant'en | |||
| _60o siSant'en | |||
| _70o sEtant'en | |||
| _80o gwitant'en | |||
| _90o noBant'en | |||
| _1Xo DeTi | |||
| _2Xo Binti | |||
| _3Xo trentaI | |||
| _4Xo kwarantaI | |||
| _5Xo TinkwantaI | |||
| _6Xo siSantaI | |||
| _7Xo sEtantaI | |||
| _8Xo gwitantaI | |||
| _9Xo noBantaI | |||
| _1Co TEnt'en | |||
| _2Co dosTEnt'en | |||
| _3Co tresTEnt'en | |||
| _4Co kw,atroTEnt'en | |||
| _5Co T,inkoTEnt'en | |||
| _6Co seIsTEnt'en | |||
| _7Co sjEtTEnt'en | |||
| _8Co gw,eItoTEnt'en | |||
| _9Co nweUTEnt'en | |||
| _0M1o mil'en | |||
| _1M1 mil'en | |||
| _0M2o mil^on'en | |||
| _1M2o mil^on'en | |||
| // unstressed words | |||
| o $u | |||
| o $atend | |||
| a $u | |||
| a $atend | |||
| os $u | |||
| os $atend | |||
| as $u | |||
| as $atend | |||
| lo $u | |||
| la $u | |||
| los $u | |||
| @@ -90,4 +190,44 @@ me $u | |||
| te $u | |||
| se $u | |||
| le $u | |||
| les $u | |||
| li $u | |||
| nos $u | |||
| mos $u | |||
| tos $u | |||
| vos $u | |||
| os $u | |||
| les $u | |||
| lis $u | |||
| // exceptions | |||
| holio x'olio | |||
| jazz dZ'as | |||
| // Foreign words | |||
| android andr'oId | |||
| apple 'apEl | |||
| at 'at | |||
| chat tS'at | |||
| chrome kr'ome | |||
| espeak isp'ik | |||
| (e speak) isp'ik | |||
| facebook f'eIsbuk | |||
| firefox f'aIrfoks | |||
| google g'ugEl | |||
| (i phone) 'aIfon | |||
| iphone 'aIfon | |||
| (i pod) 'aIpod | |||
| ipod 'aIpod | |||
| hardware x'ardwer | |||
| live l'aIB | |||
| messenger m'esendZer | |||
| mozilla moT'ila | |||
| nvda ene|be|de|'a | |||
| office 'ofis | |||
| skype esk'aIp | |||
| software s'oftwer | |||
| thunderbird Tanderb'ird | |||
| twitter tw'iter | |||
| whatsapp was'app | |||
| windows w'indows | |||
| @@ -1,8 +1,6 @@ | |||
| // 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] | |||
| @@ -10,18 +8,19 @@ | |||
| .group a | |||
| a a | |||
| ai aI | |||
| ai (X 'aI | |||
| ay (K aI | |||
| ay (X 'aI | |||
| au aU | |||
| au (X 'aU | |||
| a a | |||
| aix aS | |||
| 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 b // phoneme definition may change it to [B] | |||
| _) b (A b | |||
| b (A B | |||
| b (cY B | |||
| @@ -33,15 +32,15 @@ | |||
| .group c | |||
| c k | |||
| c (Y T // ce ci | |||
| cc kT | |||
| ch tS | |||
| c k | |||
| c (Y T // ce ci | |||
| ck k // Forano (Foreign) | |||
| ch tS | |||
| .group d | |||
| d d | |||
| _) d d // phoneme definition may change it to [D] | |||
| _) d d // phoneme definition may change it to [D] | |||
| _) d (A d | |||
| d (A D | |||
| d (cY D | |||
| @@ -51,138 +50,156 @@ | |||
| l) d d | |||
| r) d d | |||
| n) d (_ = // silent, but stress on last vowel | |||
| 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 | |||
| e e | |||
| eix eS | |||
| 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 | |||
| f f | |||
| .group g | |||
| g g | |||
| _) g g // phoneme definition may change it to [Q] | |||
| _) gh (A g // allow _gh in foreign words | |||
| gü gw | |||
| _) 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 | |||
| g (Y+ x // ge gi | |||
| gu (A gw | |||
| gu (e g | |||
| gu (i g | |||
| gu (é g | |||
| gu (í g | |||
| .group h | |||
| h // silent | |||
| h // silent | |||
| .group i | |||
| i i | |||
| i (A j | |||
| A) ix S | |||
| _) ix iS | |||
| i i | |||
| i (u i | |||
| i (A j | |||
| .group j | |||
| j x | |||
| j x | |||
| .group k | |||
| k k | |||
| k k | |||
| .group l | |||
| l l | |||
| ll l^ | |||
| l l | |||
| ll l^ | |||
| ll (_ l | |||
| .group m | |||
| m m | |||
| m m | |||
| .group n | |||
| n n | |||
| n (L04 m | |||
| n (_L04 m | |||
| ny n^ | |||
| n n | |||
| n (L04 m | |||
| n (_L04 m | |||
| ny n^ | |||
| .group ñ | |||
| ñ n^ | |||
| ñ 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 | |||
| o o | |||
| oix oS | |||
| 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 | |||
| p p | |||
| _) ps s | |||
| .group q | |||
| qu (A kw | |||
| qü kw | |||
| qu (e k | |||
| qu (i k | |||
| qu (A kw | |||
| qü kw | |||
| qu (e k | |||
| qu (i k | |||
| qu (é k | |||
| qu (í k | |||
| .group r | |||
| r r | |||
| _) r R | |||
| rr RR2 | |||
| @) r (- = // followed by hyphen. Silent, but stress on last vowel | |||
| rs (_ =s | |||
| r r | |||
| r (_ r | |||
| r (t r | |||
| A) r (A r | |||
| C) r (A r | |||
| _) r (A R | |||
| l) r (A R | |||
| m) r (A R | |||
| n) r (A R | |||
| s) r (A R | |||
| rr RR2 | |||
| @) r (- = // followed by hyphen. Silent, but stress on last vowel | |||
| rs (_ =s | |||
| .group s | |||
| s s | |||
| &) s (_S1 s | |||
| s s | |||
| &) s (_S1 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 | |||
| 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 | |||
| ue) t (_ t# | |||
| ui) t (_ t# | |||
| s) t (_ = // silent, but stress on last vowel | |||
| .group u | |||
| u u | |||
| u (A w | |||
| _) u (A gw | |||
| u u | |||
| u (u u | |||
| u (i u | |||
| u (A w | |||
| _) u (A gw | |||
| uix uS | |||
| .group v // same as 'b' | |||
| v b | |||
| _) v b // phoneme definition may change it to [B] | |||
| _) v b // phoneme definition may change it to [B] | |||
| _) v (A b | |||
| v (A B | |||
| v (cY B | |||
| @@ -194,26 +211,26 @@ | |||
| .group w | |||
| w w | |||
| w B | |||
| .group x | |||
| x ks | |||
| _) x S | |||
| x ks | |||
| _) x S | |||
| i) x S | |||
| .group y | |||
| y j | |||
| y j | |||
| y (_ i | |||
| .group z | |||
| z T | |||
| z T | |||
| .group | |||
| á ''a | |||
| é ''e | |||
| í ''i | |||
| ó ''o | |||
| ú ''u | |||
| á ''a | |||
| é ''e | |||
| í ''i | |||
| ó ''o | |||
| ú ''u | |||
| @@ -4,13 +4,17 @@ | |||
| // words of one letter | |||
| в $combine | |||
| а $u $combine | |||
| а $u $combine | |||
| е $u | |||
| й i $u | |||
| й i $u | |||
| и $u $pause | |||
| у $u $combine | |||
| с $combine | |||
| г god'ina $hasdot | |||
| у $u $combine | |||
| с $combine | |||
| г god'ina $hasdot | |||
| (а в) %av | |||
| (а с) %as | |||
| // letter names | |||
| б b@ | |||
| @@ -84,7 +84,7 @@ __ b'Onsdrai | |||
| ¢ s'ent | |||
| ¥ j'en: | |||
| µ my | |||
| ' apostr'Vf // PB o changed to V | |||
| ' apostr'Vf | |||
| ½ en'hal | |||
| + plus | |||
| @@ -102,27 +102,27 @@ _9 n'i | |||
| _10 t'i | |||
| _11 'Elv@ | |||
| _12 t'Vl | |||
| _13 tR'?&#d@-n // PB & changed to &# | |||
| _13 tR'?&#d@-n | |||
| _14 fj'ord@-n | |||
| _15 f'Emd@-n | |||
| _16 s'ajsd@-n | |||
| _17 s'Wd@-n // PP Y changed to W | |||
| _18 '?&d@-n // PB a changed to & | |||
| _17 s'Wd@-n | |||
| _18 '?&d@-n | |||
| _19 n'ed@-n | |||
| _2X t'y:?u | |||
| _3X tR'&#Dv@ //PB [tR'ADv@] changed to [tR'&#Dv@] | |||
| _4X f'?W:_|V //PB [f'W:*3] changed to [ f'?W:V] | |||
| _5X h&l't*Es // PB [a] changed to [&], e changed to E | |||
| _6X t*'Es // PB changed from e to E | |||
| _7X h&lfj'&rs // PV a changed to & | |||
| _3X tR'&#Dv@ | |||
| _4X f'?W:_|V | |||
| _5X h&l't*Es | |||
| _6X t*'Es | |||
| _7X h&lfj'&rs | |||
| _8X f'irs | |||
| _9X h&lf'Ems // PB a changed to & | |||
| _0C h'un*VD | |||
| _1C ed||h'unRV:D // PB added 'et hundrede' | |||
| _0M1 t'u:s@-n | |||
| _1M1 ed||t'u:s@-n // PB added 'et' to tusind | |||
| _0C h'unRVD | |||
| _1C ed||h'unRV:D | |||
| _0M1 t'?us@-n | |||
| _1M1 ed||t'?us@-n | |||
| _1M2 'e:n||milij'o:n | |||
| _0M2 milij'o:nV // PB [3] changed to [V] | |||
| _0M2 milij'o:nV | |||
| _1M3 'e:n||milij'A:d | |||
| _0M3 milij'A:d3 | |||
| _1M4 'e:n||bilij'o:n | |||
| @@ -174,7 +174,7 @@ men $pause // but | |||
| eller // or | |||
| mens $pause // while | |||
| for | |||
| fordi fVd'i $pause // because - PB: changed stress | |||
| fordi fVd'i $pause // because | |||
| når nVr $pause // while | |||
| der dEr $u+ $u // PB changed from [dA] | |||
| hvor v'O // where | |||
| @@ -187,16 +187,15 @@ fra $u+ // from | |||
| ved $u+ // at | |||
| om $u+ $brk // about, within | |||
| med $u+ // with | |||
| af & // PB changed from [a?] to [&] - sound too short in a sentence | |||
| // Also removed $u from 'af' and other words. They disappeared. | |||
| ad & // PB added 'ad' | |||
| ad &D $atend $sentence // PB "Det må ikke skille os ad." | |||
| at & $u // PB changed from [at] to [&:] | |||
| hos // at - PB: removed [$u+] | |||
| som sVm $u // which / that - PB: removed [$u+] | |||
| af & | |||
| ad & | |||
| ad &D $atend $sentence // "Det må ikke skille os ad." | |||
| at & $u | |||
| hos | |||
| som sVm $u // which / that | |||
| // pronouns | |||
| jeg jaj $u+ // I | |||
| jeg jAj $u+ // I | |||
| du du $u | |||
| de $u | |||
| han $u | |||
| @@ -205,8 +204,8 @@ det de $u | |||
| dét de | |||
| vi vi $u | |||
| i _i $u+ | |||
| mig maj $u // me | |||
| dig daj $u+ | |||
| mig mAj $u // me | |||
| dig dAj $u+ | |||
| dem $u | |||
| ham $u | |||
| hende $u | |||
| @@ -244,7 +243,7 @@ jeres $u+ | |||
| er Er $u // is/are | |||
| var vAr $u+ // was/were | |||
| har hAr $u+ // has/have | |||
| havde h&:D@ $u+ // had | |||
| havde h&D@ $u+ // had | |||
| vil $u+ // will | |||
| skal $u+ // shall | |||
| kan $u+ // can | |||
| @@ -360,7 +359,7 @@ window _^_EN | |||
| word _^_EN | |||
| warrior _^_EN | |||
| // PB names | |||
| // Names | |||
| august OgOsd $capital | |||
| austin _^_EN | |||
| bailey _^_EN | |||
| @@ -381,7 +380,7 @@ piccadilly _^_EN | |||
| reynolds _^_EN | |||
| white _^_EN | |||
| // PB French words | |||
| // French words | |||
| croquis _^_FR | |||
| crouton _^_FR | |||
| jugement _^_FR | |||
| @@ -389,7 +388,7 @@ monsieur _^_FR | |||
| madame _^_FR | |||
| mademoiselle _^_FR | |||
| // PB (French) nouns with final -age - stressed a, "age" pronounced ['&S@] | |||
| // French) nouns with final -age - stressed a, "age" pronounced ['&S@] | |||
| affutage $alt | |||
| apanage $alt | |||
| arbitrage $alt | |||
| @@ -448,7 +447,7 @@ takkelage $alt | |||
| tonnage $alt | |||
| trikotage $alt | |||
| // PB final -abel - stressed a | |||
| // Final -abel - stressed a | |||
| // "el" has been removed in order to make rules for | |||
| // "konstabel" and the plural "konstabler" without "e" | |||
| acceptab $alt | |||
| @@ -691,7 +690,7 @@ substans $alt | |||
| tolerans $alt | |||
| varians $alt | |||
| // PB nouns with final -ade - stressed a | |||
| // Nouns with final -ade - stressed a | |||
| ambassade $alt | |||
| arkade $alt | |||
| ballade $alt | |||
| @@ -755,7 +754,7 @@ tamponade $alt | |||
| tirade $alt | |||
| triade $alt | |||
| // PB nouns and adjectives with final -al - stressed a | |||
| // Nouns and adjectives with final -al - stressed a | |||
| admiral $alt | |||
| adverbial $alt | |||
| aksial $alt | |||
| @@ -997,7 +996,7 @@ vokal $alt | |||
| ækvatorial $alt | |||
| ødipal $alt | |||
| // PB words with final -ar - stressed a | |||
| // Words with final -ar - stressed a | |||
| dokumentar $alt | |||
| aktuar $alt | |||
| proletar $alt | |||
| @@ -1067,7 +1066,7 @@ vegetar $alt | |||
| velar $alt | |||
| vokabular $alt | |||
| // PB final -agtig - stressed a | |||
| // Final -agtig - stressed a | |||
| barnagtig $alt | |||
| blødagtig $alt | |||
| delagtig $alt | |||
| @@ -1100,7 +1099,7 @@ svinagtig $alt | |||
| tvivlagtig $alt | |||
| tyvagtig $alt | |||
| // PB words with final -an - stressed a | |||
| // Words with final -an - stressed a | |||
| aeroplan $alt2 | |||
| agraman $alt2 | |||
| altan $alt2 | |||
| @@ -1128,7 +1127,6 @@ filigran $alt2 | |||
| galan $alt2 | |||
| hortulan $alt2 | |||
| human $alt2 | |||
| hvordan vVd'&n $alt | |||
| inhuman $alt2 | |||
| kapellan $alt2 | |||
| karljohan $alt2 | |||
| @@ -5778,7 +5776,6 @@ adstringer $alt | |||
| adviser $alt | |||
| advoker $alt | |||
| afficer $alt | |||
| 'aflever $alt | |||
| 'afmarcher $alt | |||
| afrikaniser $alt | |||
| agere $alt | |||
| @@ -11195,7 +11192,7 @@ skateboardet sk'eitbo@d3D // PB | |||
| (secret service) sigred||s'Wvis | |||
| (happy hour) h&pi||'AuV | |||
| chevrolet sjEvrol'e | |||
| saigon sajg3-n // PB Saigon | |||
| saigon sAjgVn // PB Saigon | |||
| managua m&n'&:gw& | |||
| (deja-vu) deSja||'vy | |||
| (il duce) il||d'u:tSj@ // PB Italian Fascist | |||
| @@ -3381,6 +3381,7 @@ Amy eImi | |||
| Andre 0ndreI | |||
| Andrea andri@ | |||
| Andreas A:ndr'eI@s | |||
| Angela $1 | |||
| Anita $alt3 | |||
| Anthony ant@ni | |||
| Anton ant0n | |||
| @@ -3926,10 +3926,12 @@ | |||
| o (blo 0 | |||
| _r) o (bo oU | |||
| _) o (bs %0 | |||
| ?3 _) o (bs %0# | |||
| _) obs (er %0bz | |||
| obso (l 0bs@ | |||
| o (bstin 0 | |||
| _) o (bt %0 | |||
| ?3 _) o (bt %0# | |||
| o (by_ oU | |||
| f) o (cA oU | |||
| _l) o (cA oU | |||
| @@ -5862,7 +5864,7 @@ | |||
| _) zs (Y z | |||
| _) z (wY z | |||
| n) z (_ ts | |||
| n) z (_N ts | |||
| @) zales (_ z'A:l@s | |||
| zei zaI | |||
| zes (_ zI2z | |||
| @@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| श S@ | |||
| ष s.@ // retroflex [S] | |||
| स s@ | |||
| ह H@ | |||
| ह H@- | |||
| क़ q@ | |||
| ख़ x@ | |||
| ग़ Q@ | |||
| @@ -195,12 +195,7 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | |||
| ॐ #X1o~m | |||
| _?? Vks.@r | |||
| _a ej | |||
| _b bi: | |||
| _c si: | |||
| _d di: | |||
| _e i: | |||
| _f Ef | |||
| // Punctuation | |||
| । dVn.d.V | |||
| @@ -346,7 +346,7 @@ | |||
| स (B s | |||
| .group ह | |||
| ह HV | |||
| ह H | |||
| ह (B H | |||
| @@ -26,7 +26,7 @@ p pi: | |||
| q kju: | |||
| r a:r | |||
| s Es | |||
| t thi: | |||
| t t#i: | |||
| u ju: | |||
| v vi: | |||
| w dabalju: | |||
| @@ -63,7 +63,7 @@ p pi: | |||
| q kju: | |||
| r a:R | |||
| s Es | |||
| t ti: | |||
| t t#i: | |||
| u ju: | |||
| v vi: | |||
| w dVbVlju: | |||
| @@ -662,6 +662,7 @@ arroz $alt2 | |||
| assembleia $alt | |||
| ateia $alt | |||
| aterro $alt2 $noun | |||
| aterros $alt2 | |||
| atmosfera $alt | |||
| atrozes $alt | |||
| autora $alt2 | |||
| @@ -716,6 +717,7 @@ chovesse $alt2 | |||
| chupeta $alt2 | |||
| clamores $alt2 | |||
| clero $alt | |||
| crepe $alt | |||
| coco $alt2 | |||
| cofre $alt | |||
| cogumelo $alt | |||
| @@ -732,6 +734,7 @@ comodo $alt2 | |||
| concerto $alt2 $noun | |||
| concordo $alt | |||
| conforto $alt $verb | |||
| congelo $alt | |||
| consolo $alt2 $noun | |||
| controle $alt2 $noun | |||
| controlo $alt2 $noun | |||
| @@ -754,11 +757,15 @@ desemprego $alt $verb | |||
| desespero $alt2 $noun | |||
| desfecho $alt2 | |||
| desprezo $alt2 $noun | |||
| desse $alt2 | |||
| desse $alt $verb | |||
| deste $alt2 | |||
| deste $alt $verb | |||
| desterro $alt2 | |||
| deveras $alt | |||
| dez $alt | |||
| diarreia $alt | |||
| discordo $alt | |||
| dissermos $alt | |||
| dobro $alt2 $noun | |||
| doce $alt2 | |||
| doutora $alt2 | |||
| @@ -786,6 +793,7 @@ erros $alt2 | |||
| esboço $alt $verb | |||
| escopeta $alt2 | |||
| escova $alt2 $noun | |||
| escovo $alt | |||
| escroto $alt2 | |||
| esforço $alt $verb | |||
| esforços $alt | |||
| @@ -820,12 +828,13 @@ folga $alt | |||
| fogos $alt | |||
| foguete $alt2 | |||
| foice $alt2 | |||
| fora $alt | |||
| fora $alt2 $verb | |||
| forca $alt2 | |||
| força $alt2 $noun | |||
| forças $alt2 | |||
| forço $alt | |||
| fordes $alt2 | |||
| fores $alt2 | |||
| fossem $alt2 | |||
| forro $alt $verb | |||
| fosse $alt2 | |||
| frevo $alt2 | |||
| @@ -853,7 +862,6 @@ hemorroida $alt | |||
| hoje $alt2 | |||
| horrores $alt2 | |||
| ideia $alt | |||
| insonoro $alt | |||
| interesse $alt2 $noun | |||
| jogo $alt2 $noun | |||
| joguete $alt2 | |||
| @@ -949,6 +957,7 @@ primavera $alt | |||
| provo $alt | |||
| quarteto $alt2 | |||
| queda $alt | |||
| quede $alt2 | |||
| quinteto $alt2 | |||
| recomeço $alt2 $noun | |||
| recordo $alt | |||
| @@ -969,6 +978,8 @@ rocha $alt | |||
| rock $alt | |||
| rola $alt2 $noun | |||
| rolo $alt2 $noun | |||
| rota $alt2 | |||
| rota $alt $noun | |||
| rumores $alt2 | |||
| saleta $alt2 | |||
| sarjeta $alt | |||
| @@ -982,6 +993,7 @@ selvagem seUv'aZeIN | |||
| sexteto $alt2 | |||
| ?1 senhora $alt2 | |||
| senhores $alt2 | |||
| singelo $alt | |||
| sinopse $alt | |||
| soco $alt2 | |||
| soco $alt $verb | |||
| @@ -1019,6 +1031,7 @@ trombeta $alt2 | |||
| tumores $alt2 | |||
| valeta $alt2 | |||
| vanessa $alt2 | |||
| velo $alt | |||
| velozes $alt | |||
| verme $alt | |||
| violeta $alt2 | |||
| @@ -359,11 +359,11 @@ | |||
| _perd) e (L05_ e | |||
| _quis) e (L05_ E | |||
| _soub) e (L05_ E | |||
| proteg) e (L05_ e // des- | |||
| diss) e (L06_ E // contra- | |||
| tend) e (L06_ e // a- con- en- es- | |||
| vend) e (L06_ e // re- | |||
| _mord) e (L06_ e | |||
| _rend) e (L06_ e | |||
| _vend) e (L06_ e | |||
| prend) e (L06_ e // a- rea- des- desa- | |||
| _arrepend) e (L06_ e | |||
| _defend) e (L06_ e | |||
| @@ -372,6 +372,7 @@ _escond) e (L06_ e | |||
| preend) e (L06_ e // com- a- re- sur- | |||
| respond) e (L06_ e // cor- | |||
| bat) e (L07_ e // re- com- | |||
| ceb) e (L07_ e // re- per- con- | |||
| ced) e (L07_ e // pro- con- su- | |||
| met) e (L07_ e // co- pro- arre- re- intro- compro- sub- | |||
| mov) e (L07_ e // re- co- | |||
| @@ -386,6 +387,7 @@ respond) e (L06_ e // cor- | |||
| tend) e (L07_ e // en- con- a- es- | |||
| torc) e (L07_ e // con- | |||
| venc) e (L07_ e // con- | |||
| vend) e (L07_ e // re- | |||
| vert) e (L07_ e // in- re- con- | |||
| volv) e (L07_ e // de- en- re- | |||
| _eleg) e (L07_ e | |||
| @@ -399,7 +401,6 @@ respond) e (L06_ e // cor- | |||
| parec) e (L07_ e // a- rea- com- desa- | |||
| prend) e (L07_ e // a- rea- des- | |||
| screv) e (L07_ e // e- in- ree- pre- de- | |||
| _abastec) e (L07_ e | |||
| _aborrec) e (L07_ e | |||
| _absolv) e (L07_ e | |||
| _adoec) e (L07_ e | |||
| @@ -417,6 +418,7 @@ _emagrec) e (L07_ e | |||
| _endurec) e (L07_ e | |||
| _enlouquec) e (L07_ e | |||
| _enraivec) e (L07_ e | |||
| _entorpec) e (L07_ e | |||
| _entristec) e (L07_ e | |||
| _envaidec) e (L07_ e | |||
| _envelhec) e (L07_ e | |||
| @@ -425,11 +427,13 @@ _escond) e (L07_ e | |||
| _escurec) e (L07_ e | |||
| _espairec) e (L07_ e | |||
| _esquec) e (L07_ e | |||
| _estremec) e (L07_ e | |||
| _interromp) e (L07_ e | |||
| _perec) e (L07_ e | |||
| _rejuvenec) e (L07_ e | |||
| _resolv) e (L07_ e | |||
| _suspend) e (L07_ e | |||
| abastec) e (L07_ e // re- | |||
| conhec) e (L07_ e // & re- des- | |||
| estabelec) e (L07_ e // re- | |||
| favorec) e (L07_ e // des- | |||
| @@ -440,6 +444,7 @@ respond) e (L07_ e // cor- | |||
| qu) e (brL04_ E | |||
| _hosp) e (dL03_ E | |||
| _gr) e (gL03_ e | |||
| _gal) e (gL03_ e | |||
| _n) e (grL03_ e | |||
| _estr) ei (L03_ EI | |||
| _inv) e (jL04_ E | |||
| @@ -453,16 +458,20 @@ respond) e (L07_ e // cor- | |||
| _sev) e (rL03_ E | |||
| _reit) e (rL03_ E | |||
| _sinc) e (rL03_ E | |||
| g) e (rL04_ E // su- refri- | |||
| _g) e (rL04_ E | |||
| qu) e (rL04_ E // re- | |||
| _op) e (rL04_ E | |||
| gen) e (rL04_ E // de- re- | |||
| _alt) e (rL04_ E | |||
| _sug) e (rL04_ E | |||
| _sup) e (rL04_ E | |||
| _tol) e (rL04_ E | |||
| _ven) e (rL04_ E | |||
| acel) e (rL04_ E // des- | |||
| _coop) e (rL04_ E | |||
| _temp) e (rL04_ E | |||
| _recup) e (rL04_ E | |||
| _refrig) e (rL04_ E | |||
| _v) e (rbL03_ E | |||
| _p) e (rdL02_ E | |||
| _l) e (rdL03_ E | |||
| @@ -496,17 +505,18 @@ _obsol) e (tL03_ e | |||
| _d) e (vL03_ e | |||
| scr) e (vL03_ e // e- in- pre- ree- de- | |||
| _atr) e (vL03_ e | |||
| pr) e (zL04_ E // des- menos- | |||
| _r) e (zL04_ E | |||
| _pr) e (zL04_ E | |||
| _despr) e (zL04_ E | |||
| _embel) e (zL04_ E | |||
| _acont) e (çL01_ e | |||
| _arref) e (çL01_ e | |||
| _menospr) e (zL04_ E | |||
| _emagr) e (çL03 | |||
| pr) e (çL03_ e // a- | |||
| aqu) e (çL03_ e // re- | |||
| mer) e (çL03_ e // des- | |||
| pad) e (çL03_ e // com- | |||
| par) e (çL03_ e // a- re- com- rea- desa- | |||
| _ado) e (çL03_ e | |||
| _aqu) e (çL03_ e | |||
| _car) e (çL03_ e | |||
| _per) e (çL03_ e_ | |||
| conh) e (çL03_ e // re- | |||
| @@ -516,10 +526,12 @@ _emagr) e (çL03 | |||
| _ofer) e (çL03_ e | |||
| abast) e (çL03_ e // re- | |||
| _aborr) e (çL03_ e | |||
| _acont) e (çL03_ e | |||
| _agrad) e (çL03_ e | |||
| _amanh) e (çL03_ e | |||
| _amort) e (çL03_ e | |||
| _anoit) e (çL03_ e | |||
| _arref) e (çL03_ e | |||
| _desguarn) e (çL03_ e | |||
| _desguarnec) e (çL03_ e | |||
| _enfraqu) e (çL03_ e | |||
| @@ -825,6 +837,7 @@ estabel) e (çL03_ e // re- | |||
| ?1 v) o (lt O | |||
| //sort | |||
| _f) o (L06_ o | |||
| _engl) o (bL01_ O | |||
| _s) o (bL02_ O | |||
| _esn) o (bL04_ O | |||
| @@ -851,6 +864,10 @@ _desabr) o (chL04_ O | |||
| _ens) o (pL04_ O | |||
| _s) o (prL04_ O | |||
| _) o (ptL04_ O | |||
| _inod) o (rL03_ O | |||
| _inson) o (rL03_ O | |||
| _comem) o (rL04 O | |||
| _remem) o (rL04_ O | |||
| _enf) o (rquL02_ O | |||
| c) o (rrL01_ o // escorra, incorra, corra, recorra | |||
| _m) o (rrL01_ o | |||
| @@ -858,6 +875,7 @@ _desabr) o (chL04_ O | |||
| _r) o (snL04_ O | |||
| _c) o (spL02_ O | |||
| p) ostos (_ Ost=Us# // dispostos etc. | |||
| _gar) o (tL03_ o | |||
| _g) o (zL04_ O | |||
| _ad) o (çL03_ O | |||
| _end) o (çL03_ O | |||
| @@ -935,10 +953,9 @@ _desabr) o (chL04_ O | |||
| r (C *@- | |||
| A) r (A * | |||
| A) r (_A * | |||
| rr rx | |||
| rr x | |||
| XC) r (A R | |||
| C) r (A * | |||
| //?1 C) r (A r | |||
| _) r x | |||
| l) r x | |||
| n) r (+ x | |||
| @@ -49,7 +49,7 @@ U+bcd ot.RU | |||
| // speak Latin letters as English | |||
| a e:j | |||
| a e:j $atend | |||
| b bi: | |||
| c si: | |||
| d di: | |||
| @@ -57,7 +57,7 @@ e i: | |||
| f Ef | |||
| g dZi: | |||
| h e:tS | |||
| i a:j | |||
| i a:j $atend | |||
| j dZe:j | |||
| k ke:j | |||
| l El | |||
| @@ -68,7 +68,7 @@ p pi: | |||
| q kju: | |||
| r a:R | |||
| s Es | |||
| t thi: | |||
| t t#i: | |||
| u ju: | |||
| v vi: | |||
| w dVbVlju: | |||
| @@ -540,7 +540,7 @@ tamil தமிழ் $text | |||
| கிர் $alt | |||
| கங்க $alt | |||
| காந்த $alt | |||
| கேம் $alt | |||
| @@ -334,6 +334,7 @@ | |||
| _) கி (ளாமர g | |||
| _) கி (ளாஸ்_ g | |||
| _) கி (ளாஸ்_மேட k | |||
| _) கிளாஸ்க (ோ gl.a:sg | |||
| _) கிளிக் (_L29 kl.ik | |||
| _) கிளிட kl.it.V# | |||
| _) கிளிண்ட (ன klint.V | |||
| @@ -483,6 +484,7 @@ _மன்மதக்) க (ுகை g | |||
| _) க (ேட்டைக் g | |||
| _) க (ேட்டைத் g | |||
| _) க (ேட்டைப் g | |||
| _) க (ேமை g | |||
| _) க (ேம்ஸ g | |||
| _) கேரண்ட ge:rVn.t.V# | |||
| _) க (ேலரி g | |||
| @@ -667,6 +669,7 @@ _ஹன்L04ி) க (ா k | |||
| அ) க (ாடமி k | |||
| _நேர்) க (ாணல k | |||
| _கண்) க (ாணா k | |||
| _கர்ம) க (ாண்ட g | |||
| உத்திரா) க (ாண்ட k | |||
| _ராம) க (ாதை k | |||
| இராம) க (ாதை k | |||
| @@ -947,6 +950,7 @@ _துப்பாக்கி) க்க (ுண்ட gg | |||
| _ப) சக் tSVk | |||
| _) ச (க்கரவர்த்தி tSV | |||
| _) ச (க்கிலி tSV | |||
| _) சக் (ரவர்த்தி tSVk | |||
| _க) ச (க்ஸ்தான zV | |||
| சங்க (ர s.VNkV | |||
| _) ச (ட்டL08ஸ்கர tSV | |||
| @@ -1054,11 +1058,16 @@ _தணிகா) ச (ல tSV | |||
| _வரதா) ச (ாரி tS | |||
| _வேதா) ச (ாரி tS | |||
| _கிருஷ்ணமா) ச (ாரி tS | |||
| _கோபால) ச (ாரி tS | |||
| _சங்கரா) ச (ாரி tS | |||
| _தேசிகா) ச (ாரி tS | |||
| _பட்டா) ச (ாரி tS | |||
| _பிரம்ம) ச (ாரி tS | |||
| _மத்வா) ச (ாரி tS | |||
| அனந்தா) ச (ாரி tS | |||
| அன்னமா) ச (ாரி tS | |||
| ராஜகோபால) ச (ாரி tS | |||
| ராமானுஜா) ச (ாரி tS | |||
| ஆ) ச (ாரிய_ tS | |||
| ஆ) ச (ாரியார tS | |||
| அ) ச (ாருதீன z | |||
| @@ -2157,6 +2166,7 @@ _ஸ்வர்ணல) த (ா t | |||
| _மால) த (ி t | |||
| _ரேவ) த (ி t | |||
| _வசந்) த (ி t | |||
| அவந்) த (ி t | |||
| வாசந்) த (ி t | |||
| _கோம) த (ி t | |||
| ஜெயந்) த (ி t | |||
| @@ -2594,6 +2604,10 @@ _டீயும்_) ப (ன்னும்_ bV | |||
| _) ப (ாகீரதி b | |||
| _) ப (ாக்கிக் b | |||
| _) ப (ாக்கிய b | |||
| _) ப (ாக்டரி_ f | |||
| _) ப (ாக்டரியா b | |||
| _) ப (ாக்டரியி f | |||
| _) ப (ாக்டரியை f | |||
| _) பாக்ட (ீரியா ba:kt. | |||
| _) பாக்த (ாத ba:gd | |||
| _) ப (ாக்ய b | |||
| @@ -2790,6 +2804,7 @@ _விளையாடு_) ப (ாம்பே p | |||
| _) ப (ாவேய b | |||
| _) ப (ாவ்நகர b | |||
| _) ப (ாஷாக்கள b | |||
| _) ப (ாஷாபிமான b | |||
| _) ப (ாஷாவ b | |||
| _) ப (ாஷிய b | |||
| _) ப (ாஷை b | |||
| @@ -2939,6 +2954,7 @@ _விளையாடு_) ப (ாம்பே p | |||
| _) பி (ராதித் p | |||
| _) பி (ராத்தல b | |||
| _) பி (ராந்தி_ b | |||
| _) பி (ராந்திய_ p | |||
| _) பி (ராந்தியங் p | |||
| _) பி (ராந்தியத் p | |||
| _) பி (ராந்தியம்_ p | |||
| @@ -2978,8 +2994,10 @@ _விளையாடு_) ப (ாம்பே p | |||
| _) பி (ரித்தானி b | |||
| _) பிரின்சிப (ால prinsip | |||
| _) பி (ரிமிய p | |||
| _) பி (ரியங்கள p | |||
| _) பிரியங்க (ா prijVNk | |||
| _) பி (ரியதர p | |||
| _) பி (ரியத்த p | |||
| _) பி (ரியன p | |||
| _) பி (ரியப்பட p | |||
| _) பி (ரியம p | |||
| @@ -3315,6 +3333,7 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ோதகன b | |||
| _) ப (ோதகர b | |||
| _) ப (ோதன b | |||
| _) ப (ோதம b | |||
| _) ப (ோதிக்க b | |||
| _) ப (ோதிசத் b | |||
| _) ப (ோதிசத்வ b | |||
| @@ -3349,6 +3368,8 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ோர்_அடி b | |||
| _) ப (ோர்ஜரி f | |||
| _) ப (ோர்டL31 b | |||
| _) ப (ோர்டு b | |||
| _) ப (ோர்ட்டிகோ p | |||
| _) ப (ோர்தான்_அடி b | |||
| _) ப (ோர்மேன f | |||
| _) ப (ோர்வெல் b | |||
| @@ -3547,6 +3568,7 @@ _ஜெனி) ப (ர fV | |||
| ஆ) ப (ரேஷன pV | |||
| _கார்) ப (ரேஷன pV | |||
| _பம்) ப (ர்_ pV | |||
| அ) ப (ர்ணா pV | |||
| _கன்) ப (ர்ம fV | |||
| இன்) ப (ர்ம fV | |||
| கரம்) ப (ற் pV | |||
| @@ -3659,6 +3681,7 @@ _பிளாட்) ப (ார f | |||
| இம்) ப (ால f | |||
| இரு) ப (ால p | |||
| ஒரு) ப (ால p | |||
| _தங்க) ப (ால b | |||
| ஆண்) ப (ால p | |||
| _பெண்) ப (ால p | |||
| L03தன்) ப (ால p | |||
| @@ -4032,6 +4055,7 @@ _சந்தேக) ப்ப (ுத்தி bb | |||
| கம்) ப்யூட (ர pjU:t.V | |||
| _பெர்) ப் (யூம f | |||
| _யூ) ப்ரட (ீஸ frVt. | |||
| _சு) ப் (ரியா p | |||
| _ஸ்ரீ) ப் (ரியா p | |||
| _சு) ப் (ரீம p | |||
| _) ப் (ரீயா f | |||
| @@ -4218,6 +4242,7 @@ _சந்தேக) ப்ப (ுத்தி bb | |||
| இ (ரதத்த | |||
| இ (ரதம | |||
| இ (ரத்த | |||
| இ (ரபீந்திர | |||
| இரப்ப (ர rVbbV | |||
| இ (ரமண | |||
| இ (ரம்மிய | |||
| @@ -24,7 +24,7 @@ p pi: | |||
| q kju: | |||
| r a:r | |||
| s Es | |||
| t thi: | |||
| t t#i: | |||
| u ju: | |||
| v vi: | |||
| w dVbVlju: | |||
| @@ -77,7 +77,7 @@ ỵ ỵ | |||
| //================================ | |||
| // Consonants | |||
| //================================ | |||
| .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve | |||
| .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge | |||
| .L02 n | |||
| @@ -460,7 +460,7 @@ ỵ ỵ | |||
| .group i | |||
| i i | |||
| i (A j | |||
| //i (A j | |||
| ia i@ | |||
| ià i@2 | |||
| iá i@3 | |||
| @@ -822,7 +822,7 @@ ỵ ỵ | |||
| .group y | |||
| y i | |||
| y (A j | |||
| // y (A j | |||
| ya i@ | |||
| yà i@2 | |||
| yá i@3 | |||
| @@ -837,7 +837,7 @@ ỵ ỵ | |||
| yệ i@6 | |||
| // yêu i@U | |||
| y (L01 _^_EN | |||
| .group ỳ | |||
| ỳ i2 | |||
| @@ -24,8 +24,8 @@ Phoneme mnemonics can be used directly in the text input to <strong>espeak</stro | |||
| <table> | |||
| <tbody valign=top> | |||
| <tr> | |||
| <td width=25><code>[p]</code><td width=150> | |||
| <td width=25><code>[b]</code><td width=150> | |||
| <td width=25><code>[p]</code><td width=80> | |||
| <td width=25><code>[b]</code><td width=80> | |||
| <tr> | |||
| <td><code>[t]</code><td> | |||
| <td><code>[d]</code><td> | |||
| @@ -92,7 +92,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@] | |||
| <table> | |||
| <tbody valign=top> | |||
| <tr><td width=25><code>[@]</code> | |||
| <td width=60>alph<b>a</b><td width=400>schwa | |||
| <td width=60>alph<b>a</b><td width=80>schwa | |||
| <tr><td><code>[3]</code> | |||
| <td>bett<b>er</b><td>rhotic schwa. In British English this is the same as <code>[@]</code>, but it includes 'r' colouring in American and other rhotic accents. In these cases a separate <code>[r]</code> should not be included unless it is followed immediately by another vowel. | |||
| @@ -105,7 +105,7 @@ In rhotic accents, such as General American, the phonemes <code>[3:], [A@], [e@] | |||
| <tr><td><code>[a]</code><td>tr<b>a</b>p | |||
| <tr><td><code>[aa]</code><td>b<b>a</b>th<td>This is <code>[a]</code> in some accents, <code>[A:]</code> in others. | |||
| <tr><td><code>[a#]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa. | |||
| <tr><td><code>[a2]</code><td><b>a</b>bout<td>This may be <code>[@]</code> or may be a more open schwa. | |||
| <tr><td><code>[A:]</code><td>p<b>al</b>m | |||
| <tr><td><code>[A@]</code><td>st<b>ar</b>t | |||
| <tr><td><p> | |||
| @@ -161,8 +161,7 @@ Other languages will have their own vowel definitions, eg: | |||
| </tbody> | |||
| </table> | |||
| <p> | |||
| <code> [:] </code> can be used to lengthen a vowel, eg <code> [e:]</code> | |||
| </body> | |||
| </html> | |||
| @@ -45,14 +45,14 @@ endphoneme | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 90 //150 | |||
| length 95 //150 | |||
| // PB long vowel followed by consonant and certain vowels "gide" | |||
| IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN | |||
| IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(V) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "gider" TEST | |||
| // "gider", vrider" | |||
| IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN | |||
| length 90 | |||
| length 95 | |||
| ENDIF | |||
| // PB long vowel followed by certain vowels - "pigen" [p'i@-n] | |||
| IF nextPhW(#@) OR nextPhW(#e) THEN | |||
| @@ -69,7 +69,7 @@ IF thisPh(isWordEnd) THEN | |||
| ENDIF | |||
| // "vilje" - short followed by 2 consonants | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 90 | |||
| length 95 | |||
| ENDIF | |||
| // PB "tie", "stige", "krige" vowel + vowel: extra length | |||
| // What is causing this very short [i] in words with final [@-]? | |||
| @@ -99,14 +99,14 @@ endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 90 //150 | |||
| length 95 //150 | |||
| // "delte", "mente" | |||
| IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) THEN | |||
| IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V) THEN | |||
| length 150 | |||
| ENDIF | |||
| // PB "ring", "ringe" | |||
| IF nextPhW(N) THEN | |||
| length 90 | |||
| length 95 | |||
| ENDIF | |||
| // PB "enig", "enige", "evig" | |||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
| @@ -118,7 +118,7 @@ IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | |||
| ENDIF | |||
| // "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 90 | |||
| length 95 | |||
| ENDIF | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| @@ -133,14 +133,14 @@ endphoneme | |||
| phoneme E | |||
| vowel starttype #e endtype #e | |||
| length 90 //150 | |||
| length 100 //150 | |||
| // "værelse", "breve" | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN | |||
| // length 150 | |||
| ENDIF | |||
| // "ræve" | |||
| IF nextVowel(#@) OR nextVowel(#e) THEN | |||
| length 150 | |||
| length 160 | |||
| ENDIF | |||
| // "ære", "kærester", "ærefrygt" - longer E | |||
| IF nextPhW(V) THEN | |||
| @@ -148,23 +148,23 @@ IF nextPhW(V) THEN | |||
| ENDIF | |||
| // Only the letter "æ" - long | |||
| IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | |||
| length 150 | |||
| length 160 | |||
| ENDIF | |||
| // "stædig" [st'EDi] long | |||
| IF nextPhW(isNotVowel) AND next2PhW(i) THEN | |||
| length 150 | |||
| length 160 | |||
| ENDIF | |||
| // "længe" - short - 2 consonants => 1 consonant | |||
| IF nextPhW(N) THEN | |||
| length 90 | |||
| length 120 | |||
| ENDIF | |||
| // "værelse" [v'E3-Vls@_!] | |||
| IF nextPhW(3-) AND next2PhW(V) THEN | |||
| length 90 | |||
| length 120 | |||
| ENDIF | |||
| // "mælkebøtte" - short followed by 2 consonants | |||
| IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN | |||
| length 90 | |||
| length 120 | |||
| ENDIF | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| @@ -173,12 +173,8 @@ endphoneme | |||
| // "læsse" vs. "læse" | |||
| phoneme ?E | |||
| vowel starttype #e endtype #e | |||
| length 90 | |||
| // PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] | |||
| // Changed now [f'?E3-V] but it won't do any harm | |||
| IF nextPhW(V) THEN | |||
| length 120 | |||
| ENDIF | |||
| ipa ε | |||
| length 100 | |||
| FMT(vowel/e_mid2) | |||
| endphoneme | |||
| @@ -193,7 +189,7 @@ ENDIF | |||
| // ThisPh + gooup #e or group #@ | |||
| // "ae", "aer" vowel + vowel: extra length | |||
| IF nextPhW(#@) OR nextPhW(#e) THEN | |||
| length 240 | |||
| length 220 | |||
| ENDIF | |||
| // This vowel is word end - longer because it sounds too short | |||
| // "ja", "Omaha" | |||
| @@ -278,6 +274,10 @@ ENDIF | |||
| // "bange" [bAN@-] - [N] = 2 consonants (ng) => short | |||
| IF nextPhW(N) THEN | |||
| length 90 | |||
| ENDIF | |||
| // "fare" [f'A:A] | |||
| IF nextPhW(A) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/a_8) | |||
| endphoneme | |||
| @@ -297,27 +297,21 @@ endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 90 //150 | |||
| // Short vowel followed by consonant and NOT consonant + 3 or V or @ | |||
| // "blus" vs. "bluse" and "bluser" | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| // glstop | |||
| // length 90 | |||
| ENDIF | |||
| // "suge", "uge", bluse | |||
| // "suge", "uge", "bluse", "julegave" | |||
| IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN | |||
| length 150 | |||
| ENDIF | |||
| // extra length followed by 3 or V or @ | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN | |||
| // length 240 | |||
| ENDIF | |||
| // "umulig" | |||
| // "umulig" [u:m'uli] | |||
| IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN | |||
| length 180 | |||
| ENDIF | |||
| // Only "u" | |||
| IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "fugl" [ful] - a bit longer | |||
| IF nextPhW(isWordEnd) THEN | |||
| length 120 | |||
| ENDIF | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| @@ -332,20 +326,13 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 150 | |||
| IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN | |||
| glstop | |||
| length 90 | |||
| ENDIF | |||
| // "tro" | |||
| IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN | |||
| length 90 | |||
| ENDIF | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN | |||
| length 90 //150 | |||
| // "bore", "borer" | |||
| IF nextPhW(3) OR nextPhW(V) OR nextPhW(@-) THEN | |||
| length 150 | |||
| ENDIF | |||
| // "modig" - long vowel after consonant + [i] | |||
| IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN | |||
| IF nextPhW(D) AND next2PhW(i) THEN | |||
| length 150 | |||
| ENDIF | |||
| FMT(vowel/o_2) | |||
| @@ -362,7 +349,7 @@ endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 90 // 150 | |||
| // PB "sove", "sover" - consonant + #e or #@: long | |||
| // "sove", "sover" - consonant + #e or #@: long | |||
| IF next2PhW(#@) OR next2PhW(#e) THEN | |||
| length 150 | |||
| ENDIF | |||
| @@ -377,7 +364,7 @@ ENDIF | |||
| FMT(vowel/o_5) | |||
| endphoneme | |||
| // PB Experimental glottal O | |||
| // Short O | |||
| // "toget" vs. "tåget" | |||
| phoneme ?O | |||
| vowel starttype #o endtype #o | |||
| @@ -400,13 +387,17 @@ ENDIF | |||
| IF nextPhW(isNotVowel) AND next2Ph(V) THEN | |||
| length 90 | |||
| ENDIF | |||
| // PB "snorke", "snorker", årlig | |||
| // "snorke", "snorker", årlig | |||
| IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN | |||
| length 180 | |||
| ENDIF | |||
| // "sove" [sVw3] - longer followed by w + 3 | |||
| IF nextPhW(w) AND next2PhW(3) THEN | |||
| length 220 | |||
| ENDIF | |||
| // PB "konge" | |||
| IF nextPhW(N) THEN | |||
| length 95 | |||
| ENDIF | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| @@ -415,7 +406,7 @@ endphoneme | |||
| // "forstår" vs. "kåre" | |||
| phoneme ?V | |||
| vowel starttype #@ endtype #@ | |||
| length 100 | |||
| length 90 | |||
| FMT(vowel/V_4) | |||
| endphoneme | |||
| @@ -432,7 +423,7 @@ ENDIF | |||
| FMT(vowel/oo_2) | |||
| endphoneme | |||
| // ?B short 0 "sukker" | |||
| // Short 0 "sukker" | |||
| phoneme ?0 | |||
| vowel starttype #o endtype #o | |||
| length 90 | |||
| @@ -492,8 +483,8 @@ endphoneme | |||
| phoneme W | |||
| vowel starttype #@ endtype #@ | |||
| length 99 //160 | |||
| // "kløe" vowel + vowel: extra length | |||
| length 90 //160 | |||
| // "kløe" vowel + vowel: extra length | |||
| IF nextPhW(#@) OR nextPhW(#e) THEN | |||
| length 220 | |||
| ENDIF | |||
| @@ -501,8 +492,8 @@ ENDIF | |||
| IF next2PhW(#@) OR next2PhW(#e) THEN | |||
| length 160 | |||
| ENDIF | |||
| // "røveri" TEST | |||
| IF next2PhW(V) OR next2PhW(?V) THEN | |||
| // "røveri" but NOT "surfer" [sWf?V] TEST | |||
| IF next2PhW(V) OR next2PhW(?V) AND NOT next2PhW(isFinalVowel) THEN | |||
| length 90 | |||
| ENDIF | |||
| // PB "nødig", "nødigt", "kølige" | |||
| @@ -520,7 +511,7 @@ ENDIF | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| // PB short W | |||
| // Short W | |||
| // "prøv" vs. "prøve" | |||
| phoneme ?W | |||
| vowel starttype #@ endtype #@ | |||
| @@ -528,7 +519,7 @@ phoneme ?W | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| // PB added for the ø in "røv", "røg", "øje" instead of [V3] | |||
| // Added for the ø in "røv", "røg", "øje" instead of [V3] | |||
| phoneme W# | |||
| vowel starttype #@ endtype #@ | |||
| length 90 //150 | |||
| @@ -543,12 +534,12 @@ ENDIF | |||
| FMT(vowel/V) | |||
| endphoneme | |||
| // PB short W# | |||
| // Short W# | |||
| // "rømme" | |||
| phoneme ?W# | |||
| vowel starttype #@ endtype #@ | |||
| length 90 | |||
| FMT(vowel/V) | |||
| FMT(vowel/V) | |||
| endphoneme | |||
| phoneme aI | |||
| @@ -594,10 +585,10 @@ phoneme l/3 // Replacement for [l/] | |||
| PrevVowelEndings | |||
| VowelEnding(l/l_@) | |||
| VowelEnding(l/l_a) | |||
| VowelEnding(l/l_a,-70) // kvalt, kapital | |||
| VowelEnding(l/l_e, -40) | |||
| VowelEnding(l/l_i, -70) | |||
| VowelEnding(l/l_o) | |||
| VowelEnding(l/l_o,-70) // stole, skole, pistol | |||
| VowelEnding(l/l_u, -70) | |||
| EndSwitch | |||
| @@ -694,7 +685,7 @@ phoneme j | |||
| VowelStart(j/ja) | |||
| VowelStart(j/je,-35) | |||
| VowelStart(j/ji) | |||
| VowelStart(j/jo) | |||
| VowelStart(j/jo,-65) // "kjole" | |||
| VowelStart(j/ju) | |||
| EndSwitch | |||
| Vowelout len=70 | |||
| @@ -145,6 +145,9 @@ phoneme @2 // Schwa, changes to I before a vowel | |||
| IF nextPh(isVowel) THEN | |||
| ChangePhoneme(I2) | |||
| ENDIF | |||
| IF nextPh(isVowel) THEN | |||
| FMT(vowel/ii_4) | |||
| ENDIF | |||
| FMT(vowel/@) | |||
| endphoneme | |||
| @@ -33,14 +33,12 @@ phoneme V | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| IF nextVowel(isFlag1) THEN | |||
| ELSE | |||
| IF NOT nextVowel(isFlag1) THEN | |||
| IF thisPh(isSeqFlag1) THEN | |||
| // delete the last inherent vowel of a sequence | |||
| ChangePhoneme(NULL) | |||
| ELSE | |||
| IF thisPh(isFirstVowel) THEN | |||
| ELSE | |||
| IF NOT thisPh(isFirstVowel) THEN | |||
| // delete if not the first vowel, and is an isolated 'a' | |||
| ChangePhoneme(NULL) | |||
| ENDIF | |||
| @@ -36,6 +36,7 @@ | |||
| #define NO_VARIADIC_MACROS | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| #define INCLUDE_SONIC | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -39,6 +39,7 @@ | |||
| #define LIBRARY | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| #define INCLUDE_SONIC | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -41,6 +41,7 @@ | |||
| //#define USE_NANOSLEEP | |||
| #define INCLUDE_KLATT | |||
| #define INCLUDE_MBROLA | |||
| #define INCLUDE_SONIC | |||
| // will look for espeak_data directory here, and also in user's home directory | |||
| #define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
| @@ -745,6 +745,7 @@ static void CompileReport(void) | |||
| REF_HASH_TAB **list; | |||
| const char *data_path; | |||
| int prev_table; | |||
| int procedure_num; | |||
| int prev_mnemonic; | |||
| if(f_report == NULL) | |||
| @@ -802,7 +803,17 @@ static void CompileReport(void) | |||
| j++; | |||
| } | |||
| fprintf(f_report," [%s] %s",WordToString(prev_mnemonic = list[ix]->ph_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name); | |||
| prev_mnemonic = list[ix]->ph_mnemonic; | |||
| if((prev_mnemonic >> 24) == 'P') | |||
| { | |||
| // a procedure, not a phoneme | |||
| procedure_num = atoi(WordToString(prev_mnemonic)); | |||
| fprintf(f_report," %s %s", phoneme_tab_list2[prev_table = list[ix]->ph_table].name, proc_names[procedure_num]); | |||
| } | |||
| else | |||
| { | |||
| fprintf(f_report," [%s] %s",WordToString(prev_mnemonic), phoneme_tab_list2[prev_table = list[ix]->ph_table].name); | |||
| } | |||
| fputc('\n',f_report); | |||
| } | |||
| @@ -1856,7 +1867,7 @@ static int LoadWavefile(FILE *f, const char *fname) | |||
| } | |||
| sprintf(command,"sox \"%s%s.wav\" -r %d -c1 -t wav %s\n",path_source,fname2,samplerate_native, fname_temp); | |||
| if(system(command) < 0) | |||
| if(system(command) != 0) | |||
| { | |||
| failed = 1; | |||
| } | |||
| @@ -2761,6 +2772,8 @@ int CompilePhoneme(int compile_phoneme) | |||
| } | |||
| strcpy(proc_names[n_procs], item_string); | |||
| phoneme_out = &phoneme_out2; | |||
| sprintf(number_buf,"%.3dP", n_procs); | |||
| phoneme_out->mnemonic = StringToWord(number_buf); | |||
| } | |||
| phoneme_out->code = phcode; | |||
| @@ -3498,10 +3511,11 @@ static void CompilePhonemeData2(const char *source) | |||
| make_envs(); | |||
| #endif | |||
| wxLogStatus(_T("Compiling phoneme data: ")+wxString(path_source,wxConvLocal)); | |||
| n_envelopes = 0; | |||
| error_count = 0; | |||
| resample_count = 0; | |||
| memset(markers_used,0,sizeof(markers_used)); | |||
| memset(markers_used,0,sizeof(markers_used)); | |||
| f_errors = stderr; | |||
| @@ -3668,7 +3682,7 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references | |||
| if(error_count > 0) | |||
| { | |||
| report += _T(" See file: 'phsource/error_log'."); | |||
| report += _T(" See file: '")+wxString(path_source,wxConvLocal)+_T("phsource/error_log'."); | |||
| wxLogError(report); | |||
| } | |||
| wxLogStatus(report + report_dict); | |||
| @@ -4138,7 +4152,11 @@ void CompilePhonemeData() | |||
| void CompileSampleRate() | |||
| { | |||
| long value; | |||
| value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs sox)"), 22050, 5000, 48000); | |||
| #ifndef PLATFORM_POSIX | |||
| wxLogError(_T("Change Sample Rate needs the 'sox' program. It probably doesn't work on Windows")); | |||
| #endif | |||
| value = wxGetNumberFromUser(_T("Compile phoneme data with a specified sample rate"), _T("Sample rate"), _T("Resample (needs 'sox' program)"), 22050, 5000, 48000); | |||
| if(value > 1000) | |||
| { | |||
| @@ -3182,7 +3182,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| continue; | |||
| } | |||
| if((dictionary_flags2 & FLAG_ATEND) && (word_end < tr->clause_end)) | |||
| if((dictionary_flags2 & FLAG_ATEND) && (word_end < translator->clause_end)) | |||
| { | |||
| // only use this pronunciation if it's the last word of the clause | |||
| continue; | |||
| @@ -3194,7 +3194,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| continue; | |||
| } | |||
| if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE)) | |||
| if((dictionary_flags2 & FLAG_SENTENCE) && !(translator->clause_terminator & CLAUSE_BIT_SENTENCE)) | |||
| { | |||
| // only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :} | |||
| continue; | |||
| @@ -91,8 +91,8 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) | |||
| data_menu = new wxMenu; | |||
| data_menu->Append(MENU_COMPILE_DICT, _("Compile &dictionary")); | |||
| data_menu->Append(MENU_COMPILE_DICT_DEBUG, _("Compile dictionary (debu&g)")); | |||
| data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data")); | |||
| data_menu->Append(MENU_COMPILE_PH2, _("Change sample &rate")); | |||
| data_menu->Append(MENU_COMPILE_PH, _("Compile &phoneme data 22050Hz")); | |||
| data_menu->Append(MENU_COMPILE_PH2, _("Compile at sample &rate")); | |||
| data_menu->AppendSeparator(); | |||
| data_menu->Append(MENU_COMPILE_MBROLA, _("Compile &mbrola phonemes list...")); | |||
| data_menu->Append(MENU_COMPILE_INTONATION, _("Compile &intonation data")); | |||
| @@ -122,6 +122,8 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| int regression; | |||
| int end_sourceix; | |||
| int alternative; | |||
| int delete_count; | |||
| int word_start; | |||
| PHONEME_DATA phdata; | |||
| int n_ph_list3; | |||
| @@ -166,18 +168,40 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| } | |||
| // look for switch of phoneme tables | |||
| delete_count = 0; | |||
| current_phoneme_tab = tr->phoneme_tab_ix; | |||
| for(j = 0; j < n_ph_list2; j++) | |||
| { | |||
| if(plist2[j].phcode == phonSWITCH) | |||
| { | |||
| current_phoneme_tab = plist2[j].tone_ph; | |||
| } | |||
| if(current_phoneme_tab != tr->phoneme_tab_ix) | |||
| { | |||
| plist2[j].synthflags |= SFLAG_SWITCHED_LANG; | |||
| } | |||
| if(delete_count > 0) | |||
| { | |||
| memcpy(&plist2[j-delete_count], &plist2[j], sizeof(plist2[0])); | |||
| } | |||
| if(plist2[j].phcode == phonSWITCH) | |||
| { | |||
| if((!(plist2[j].synthflags & SFLAG_EMBEDDED)) && ( | |||
| (plist2[j].tone_ph == current_phoneme_tab) || | |||
| (plist2[j+1].phcode == phonSWITCH) || | |||
| ((plist2[j+1].phcode == phonPAUSE) && (plist2[j+2].phcode == phonSWITCH)) | |||
| )) | |||
| { | |||
| // delete this phonSWITCH if it's switching to the current phoneme table, or | |||
| // delete this phonSWITCH if its followed by another phonSWITCH | |||
| delete_count++; | |||
| } | |||
| else | |||
| { | |||
| current_phoneme_tab = plist2[j].tone_ph; | |||
| } | |||
| } | |||
| } | |||
| n_ph_list2 -= delete_count; | |||
| if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0) | |||
| { | |||
| @@ -311,23 +335,39 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| // transfer all the phonemes of the clause into phoneme_list | |||
| ph = phoneme_tab[phonPAUSE]; | |||
| ph_list3[0].ph = ph; | |||
| word_start = 1; | |||
| for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++) | |||
| { | |||
| plist3 = &ph_list3[j]; | |||
| if(plist3->sourceix != 0) | |||
| word_start = j; | |||
| if(insert_ph != 0) | |||
| { | |||
| // we have a (linking) phoneme which we need to insert here | |||
| next = phoneme_tab[plist3->phcode]; // this phoneme, i.e. after the insert | |||
| // re-use the previous entry for the inserted phoneme. | |||
| // That's OK because we don't look backwards from plist3 *** but CountVowelPosiion() and isAfterStress does !!! | |||
| // That's OK because we don't look backwards from plist3 *** but CountVowelPosition() and isAfterStress does !!! | |||
| j--; | |||
| plist3 = plist3_inserted = &ph_list3[j]; | |||
| if(j > 0) | |||
| { | |||
| memcpy(&plist3[-1], &plist3[0], sizeof(*plist3)); | |||
| // move all previous phonemes in the word back one place | |||
| int k; | |||
| if(word_start > 0) | |||
| { | |||
| k = word_start; | |||
| word_start--; | |||
| } | |||
| else | |||
| { | |||
| k = 2; // No more space, don't loose the start of word mark at ph_list2[word_start] | |||
| } | |||
| for(; k<=j; k++) | |||
| memcpy(&ph_list3[k-1], &ph_list3[k], sizeof(*plist3)); | |||
| } | |||
| memset(&plist3[0], 0, sizeof(*plist3)); | |||
| plist3->phcode = insert_ph; | |||
| @@ -343,12 +383,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| if(plist3->phcode == phonSWITCH) | |||
| { | |||
| if(!(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ?? | |||
| { | |||
| if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) | |||
| continue; // next phoneme is also a phonSWITCH, so ignore | |||
| } | |||
| // change phoneme table | |||
| SelectPhonemeTable(plist3->tone_ph); | |||
| } | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.46.48 13.Mar.13"; | |||
| const char *version_string = "1.46.53 16.Mar.13"; | |||
| const int version_phdata = 0x014640; | |||
| int option_device_number = -1; | |||
| @@ -82,7 +82,7 @@ const char *WordToString(unsigned int word) | |||
| int ix; | |||
| static char buf[5]; | |||
| for(ix=0; ix<3; ix++) | |||
| for(ix=0; ix<4; ix++) | |||
| buf[ix] = word >> (ix*8); | |||
| buf[4] = 0; | |||
| return(buf); | |||
| @@ -455,6 +455,7 @@ Translator *SelectTranslator(const char *name) | |||
| static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
| static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230}; | |||
| static const short stress_lengths_ta2[8] = {230, 230, 240, 240, 0, 0, 260, 260}; | |||
| static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; | |||
| // convert name string into a word of up to 4 characters, for the switch() | |||
| @@ -731,6 +732,7 @@ Translator *SelectTranslator(const char *name) | |||
| if(name2 == L('a','n')) | |||
| { | |||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.numbers2 = 0; | |||
| } | |||
| else | |||
| if(name2 == L_pap) | |||
| @@ -1423,7 +1425,7 @@ SetLengthMods(tr,3); // all equal | |||
| case L('m','r'): // Marathi | |||
| case L('t','e'): // Telugu | |||
| { | |||
| SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | |||
| SetupTranslator(tr,stress_lengths_ta2, stress_amps_ta); | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| @@ -1433,9 +1435,12 @@ SetLengthMods(tr,3); // all equal | |||
| if(name2 == L('t','a')) | |||
| { | |||
| SetupTranslator(tr,stress_lengths_ta, NULL); | |||
| tr->letter_bits_offset = OFFSET_TAMIL; | |||
| tr->langopts.numbers = NUM_OMIT_1_THOUSAND ; | |||
| tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words | |||
| } | |||
| else | |||
| if(name2 == L('m','r')) | |||
| { | |||
| tr->letter_bits_offset = OFFSET_DEVANAGARI; | |||
| @@ -1458,9 +1463,8 @@ SetLengthMods(tr,3); // all equal | |||
| tr->letter_bits_offset = OFFSET_TELUGU; | |||
| tr->langopts.numbers = 0x1; | |||
| } | |||
| tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words | |||
| SetIndicLetters(tr); // call this after setting OFFSET_ | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial) | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial) | |||
| } | |||
| break; | |||
| @@ -846,7 +846,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| char prefix_chars[0x3f + 2]; | |||
| int found=0; | |||
| int end_flags; | |||
| char c_temp; // save a character byte while we temporarily replace it with space | |||
| int c_temp; // save a character byte while we temporarily replace it with space | |||
| int first_char; | |||
| int last_char = 0; | |||
| int add_plural_suffix = 0; | |||
| @@ -916,7 +916,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) | |||
| { | |||
| // retranslating a 1-character word using a different language, say its name | |||
| spell_word = 1; | |||
| utf8_in(&c_temp, wordx+1); // the next character | |||
| if(!IsAlpha(c_temp) || (AlphabetFromChar(last_char) != AlphabetFromChar(c_temp))) | |||
| spell_word = 1; | |||
| } | |||
| if(option_sayas == SAYAS_KEY) | |||
| @@ -1077,10 +1079,16 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| { | |||
| if(word_length > 1) | |||
| return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces | |||
| if(phonemes[0] == phonSWITCH) | |||
| { | |||
| // problem with espeak -vbg "b.c.d.e.f" | |||
| } | |||
| return(0); | |||
| } | |||
| strcpy(word_phonemes, phonemes); | |||
| return(dictionary_flags[0] & FLAG_SKIPWORDS); // ?? | |||
| if(wflags & FLAG_TRANSLATOR2) | |||
| return(0); | |||
| return(dictionary_flags[0] & FLAG_SKIPWORDS); // for "b.c.d" | |||
| } | |||
| else if(found == 0) | |||
| { | |||
| @@ -1936,6 +1944,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| if(ok) | |||
| { | |||
| *p2 = '-'; // replace next space by hyphen | |||
| wtab[0].flags &= ~FLAG_ALL_UPPER; // prevent it being considered an abbreviation | |||
| flags = TranslateWord(translator, word, next_pause, wtab, NULL); // translate the combined word | |||
| if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f))) | |||
| { | |||
| @@ -587,7 +587,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| static const char *voices_asia = | |||
| "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | |||
| static const char *voices_europe = | |||
| "bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| "an bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| strncpy0(voicename, vname, sizeof(voicename)); | |||