| @@ -325,37 +325,54 @@ _zh tS'aIni:z | |||
| // Arabic letters | |||
| ء h'amza | |||
| آ 'Elifm,adda# | |||
| أ 'Elifh,amza | |||
| ا 'Elif | |||
| ب bE? | |||
| آ al'if_mamd'uda# | |||
| أ h'amza_taht_al'if | |||
| ؤ h'amza_?la_waw | |||
| إ al'if_taht_h'amza | |||
| ئ h'amza_?la_jE? | |||
| ا al'if | |||
| ب ba | |||
| ة t'E?maR2b'uta# | |||
| ت tE? | |||
| ت ta | |||
| ث TE? | |||
| ج ZIm | |||
| ج dZi:m | |||
| ح hE? | |||
| خ xE? | |||
| د dEl/1 | |||
| ذ DEl/1 | |||
| د dal/1 | |||
| ذ Dal/1 | |||
| ر R2A:? | |||
| ز zEjn | |||
| س si:n | |||
| ش Si:n | |||
| ص sO:d@- | |||
| ض dO:d@- | |||
| ص sa:d@- | |||
| ض da:d@- | |||
| ط thA:? | |||
| ظ DA:? | |||
| ع ?ajn | |||
| غ Q"ajn | |||
| ف fE? | |||
| ق qO:f | |||
| ك kEf | |||
| ل lEm | |||
| ع '?Ein | |||
| غ 'Q"Ein | |||
| ف fa | |||
| ق qa:f | |||
| ك kaf | |||
| ل lam | |||
| م mi:m | |||
| ن nu|:n | |||
| ه hE? | |||
| و wO:w | |||
| ه ha | |||
| و waw | |||
| ى al'if_maks'ura | |||
| ي jE? | |||
| // Farsi | |||
| پ pa | |||
| چ tSa | |||
| ژ Za | |||
| گ ga:f | |||
| ی f'A@si||j'e | |||
| ک k'a:f | |||
| // Urdu | |||
| ٹ te | |||
| ڈ de | |||
| ڑ z.e | |||
| ے barij'e | |||
| ھ h'@ | |||
| َ a | |||
| ِ i | |||
| @@ -725,6 +742,7 @@ aka aka# | |||
| alas a#l'as | |||
| albeit O:lb'i:It | |||
| alfalfa alf'alf@ | |||
| algebra aldZI2br@ | |||
| alias eIli@s | |||
| alibi al@baI | |||
| alibis al@baIz | |||
| @@ -2793,7 +2811,6 @@ tear te@ $verb | |||
| (tear apart) t,e@||a#pA@t | |||
| (tear off) t'e@||'0f | |||
| teargas ti@3gas | |||
| techy tEki | |||
| teddybear t'EdIb,e@ | |||
| telemetry t@lEm@tri | |||
| telepathy t@lEp@Ti | |||
| @@ -3255,8 +3272,9 @@ Lvov l@-v0v | |||
| ?5 Luxembourg lVks@mbVRg | |||
| Madagascar mad@g'ask3 | |||
| Madras m@draas | |||
| Madrid m@drId | |||
| Madrid m@drId | |||
| Malawi $alt3 | |||
| Malayalam maleI'A:l@m | |||
| Maldives mO:ld'i:v | |||
| Mali mA:li | |||
| Mandalay $3 | |||
| @@ -3384,6 +3402,7 @@ Wisconsin wI2sk'0nsI2n | |||
| Wyoming waI'oUmIN | |||
| Xhosa kO:s@ | |||
| Yemen $alt2 | |||
| Yosemite joUs'Em@ti | |||
| zaire zaI'i@3 | |||
| zimbabwe zI2mbA:bwi | |||
| zimbabwean zI2mbA:bwI@n | |||
| @@ -1464,6 +1464,7 @@ | |||
| a) ch (il k | |||
| bra) ch k | |||
| te) ch (K k | |||
| _te) ch k | |||
| ch (isC k | |||
| ch (ic_ k | |||
| @@Car) ch (_ k | |||
| @@ -3035,6 +3036,7 @@ | |||
| &n) iel (_ j@L | |||
| &r) iel (_ =i:@L | |||
| ie (n i@ | |||
| &) ie (n_ =i@n | |||
| d) iene (_ 'aIi:n | |||
| ie (ntal I'E | |||
| g) ie (n i: | |||
| @@ -329,8 +329,7 @@ vocês $u2+ $verbf | |||
| eles $u+ $verbf | |||
| elas $u+ $verbf | |||
| me $u // reflexive | |||
| me $u $verbf | |||
| me $u $verbf // reflexive | |||
| te $u $verbf | |||
| nos $u $nounf | |||
| la $u | |||
| @@ -345,7 +344,7 @@ se $u | |||
| ?2 nesta $u+ $nounf | |||
| ?2 neste $u+ $nounf n'estSi //in this | |||
| ?2 esse $u+ $nounf 'esi // that | |||
| essa 'Es& $u+ | |||
| essa 'Es& $u+ $noun | |||
| desse $u+ $nounf | |||
| desta $nounf | |||
| nesse n'esy $u+ $nounf | |||
| @@ -384,7 +383,7 @@ duma $u $nounf | |||
| duns $u $nounf | |||
| dumas $u $nounf | |||
| em $u // in,on,at | |||
| em $u $noun // in,on,at | |||
| no nu $u $nounf | |||
| na $u $nounf | |||
| num $u $nounf | |||
| @@ -427,7 +426,7 @@ com $u // with | |||
| // conjunctions | |||
| ?1 e i $u // and | |||
| ?2 e i $u // and | |||
| se $u // if | |||
| se $u+ $verbf // if | |||
| ?2 mas $u // but | |||
| @@ -522,7 +521,7 @@ estão $u | |||
| estava $u | |||
| estávamos $u | |||
| astavam $u | |||
| estavam $u | |||
| estive $u | |||
| ?2 esteve estevy $u2 | |||
| @@ -619,9 +618,14 @@ o O $atend | |||
| // some common adjectives and adverbs | |||
| alguns $u // some | |||
| algumas $u // some | |||
| não n,&U~ $strend // not | |||
| alguns $u $noun // some | |||
| algumas $u $noun // some | |||
| não n,&U~ $verbf $strend // not | |||
| nunca $u+ $verbf | |||
| sempre $u+ $verbf | |||
| qualquer $u $nounf | |||
| quaisquer $u $nounf | |||
| jamais $u+ $verbf | |||
| // MAIN WORD DICTIONARY | |||
| @@ -643,9 +647,9 @@ aeroporto $alt2 | |||
| aeroportos $alt | |||
| albatrozes $alt | |||
| alcateia $alt | |||
| alcova $alt2 | |||
| alferes $alt | |||
| algozes $alt | |||
| alicerce $alt | |||
| almoço $alt $verb | |||
| ameba $alt | |||
| amores $alt2 | |||
| @@ -675,6 +679,7 @@ beco $alt2 | |||
| besta $alt2 | |||
| bilhete $alt2 | |||
| boca $alt2 | |||
| boceta $alt2 | |||
| bochecha $alt2 | |||
| bojo $alt2 | |||
| boleia $alt | |||
| @@ -686,6 +691,7 @@ bordo $alt | |||
| borra $alt2 $noun | |||
| bosque $alt | |||
| boto $alt2 $noun | |||
| boxe $alt | |||
| brejo $alt | |||
| bromelha $alt | |||
| cabelo $alt2 | |||
| @@ -696,6 +702,7 @@ caderneta $alt2 | |||
| cadete $alt2 | |||
| camelha $alt | |||
| camelo $alt2 | |||
| caminhonete $alt | |||
| camiseta $alt2 | |||
| cantora $alt2 | |||
| capacete $alt2 | |||
| @@ -832,11 +839,13 @@ explore $alt | |||
| faceta $alt2 | |||
| fantoche $alt | |||
| farofa $alt | |||
| farolete $alt2 | |||
| febre $alt | |||
| fera $alt | |||
| feitora $alt2 | |||
| ferozes $alt | |||
| fezes $alt | |||
| filete $alt2 | |||
| ?1 fixe fiSy | |||
| foda $alt2 $verb | |||
| fogos $alt | |||
| @@ -856,6 +865,7 @@ fulgores $alt2 | |||
| galera $alt | |||
| galileia $alt | |||
| gameta $alt2 | |||
| garçonete $alt2 | |||
| geleia $alt | |||
| gelo $alt2 | |||
| gelo $alt $verb | |||
| @@ -884,6 +894,7 @@ jogo $alt2 $noun | |||
| joguete $alt2 | |||
| lagosta $alt2 | |||
| lambreta $alt2 | |||
| lanchonete $alt | |||
| lebre $alt | |||
| lembrete $alt2 | |||
| lepra $alt | |||
| @@ -893,6 +904,7 @@ lopes $alt | |||
| macete $alt2 | |||
| maior $alt | |||
| maleta $alt2 | |||
| marionete $alt | |||
| marreta $alt2 | |||
| megera $alt | |||
| melhor $alt | |||
| @@ -911,6 +923,7 @@ miolos $alt | |||
| modelo $alt2 | |||
| modelo $alt $verb | |||
| moeda $alt | |||
| moem $alt | |||
| mofo $alt $verb | |||
| molho $alt2 $noun | |||
| monera $alt | |||
| @@ -930,12 +943,14 @@ namoro $alt2 $noun | |||
| naquela $nounf | |||
| naquele $alt2 $nounf | |||
| nervo $alt2 | |||
| nojo $alt2 | |||
| novelo $alt2 | |||
| novos $alt | |||
| obstetra $alt | |||
| odisseia $alt | |||
| onu $1 | |||
| olho $alt2 $noun | |||
| olho $alt2 $noun | |||
| olhos $alt | |||
| onomatopeia $alt | |||
| opereta $alt2 | |||
| ordens $alt | |||
| @@ -953,10 +968,9 @@ pangeia $alt | |||
| pantera $alt | |||
| parede $alt2 | |||
| pastora $alt2 | |||
| patinete $alt | |||
| pedra $alt | |||
| pela $alt $verb | |||
| pelego $alt2 | |||
| pela $alt $verb | |||
| pelo $alt2 | |||
| pelo $alt $verb | |||
| peso $alt $verb | |||
| @@ -998,11 +1012,12 @@ relevo $alt2 $noun | |||
| remorso $alt | |||
| renovo $alt $verb | |||
| retorno $alt $verb | |||
| reuva $alt | |||
| reuva x'EUv& | |||
| rigores $alt2 | |||
| rixa x'iS& | |||
| rocha $alt | |||
| rock $alt | |||
| roem $alt | |||
| rola $alt2 $noun | |||
| rolo $alt2 $noun | |||
| rota $alt2 | |||
| @@ -1037,6 +1052,7 @@ suor swOr | |||
| tapete $alt2 | |||
| temores $alt2 | |||
| tempero $alt2 $noun | |||
| tenores $alt2 | |||
| terrores $alt2 | |||
| teta $alt2 | |||
| tetra $alt | |||
| @@ -1068,7 +1084,6 @@ voga $alt | |||
| vozes $alt | |||
| xarope $alt | |||
| zelo $alt2 $noun | |||
| zero $alt | |||
| zorra $alt2 | |||
| @@ -1095,6 +1110,9 @@ book buk | |||
| ?1 download d'a,wnl'oud | |||
| ?2 download daUNl'owd | |||
| ?3 download dau~Nl'owd | |||
| drive dR'aivy | |||
| driver dR'aiver | |||
| drivers dR'aiveRs | |||
| ?1 end 'end | |||
| ?2 esc 'Esk | |||
| ?3 esc 'EskI | |||
| @@ -1135,6 +1153,7 @@ laptop lEptOp | |||
| ?1 ovo 'ovu | |||
| ?1 pause p'au:z | |||
| page p'eIdZ | |||
| pizza p'its& | |||
| python p'aIT&~N | |||
| ?1 readme r'i:dmi: | |||
| ?1 sapi s,ap'i | |||
| @@ -1150,6 +1169,7 @@ símbolo s'imbolU | |||
| ?1 space sp'eIsy | |||
| ?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 | |||
| @@ -1190,7 +1210,8 @@ facebook feisybuk | |||
| ?2 microsoft m'aIkRows'Oft | |||
| ?1 movie m'uvi | |||
| ?1 nero n'Eru | |||
| ?1 office 'Of,is | |||
| /1 office 'Of,is | |||
| ?2 office 'Ofsy | |||
| openoffice 'opeIN|'Ofis | |||
| ?1 outlook 'autl'uk | |||
| ?2 Outlook ,aUtl'uk | |||
| @@ -47,7 +47,6 @@ | |||
| ?1 a (lK ,A // Algarve, Almerinda, etc... | |||
| ?2 al (K aU | |||
| a (lh+ a | |||
| a (m &~ | |||
| a (mAr_ & | |||
| a (mA@ & | |||
| @@ -274,7 +273,6 @@ | |||
| e (xA_ E | |||
| e (xAm_ E | |||
| ?2 _n) e (t E | |||
| em (C eIm | |||
| en (K eIN | |||
| enh en^ | |||
| @@ -368,6 +366,7 @@ | |||
| _perd) e (L05_ e | |||
| _quis) e (L05_ E | |||
| _soub) e (L05_ E | |||
| _talh) e (L05_ E | |||
| _trem) e (L05_ e | |||
| diss) e (L06_ E // contra- | |||
| fend) e (L06_ e // de- o- | |||
| @@ -461,6 +460,7 @@ respond) e (L07_ e // cor- | |||
| _hosp) e (dL03_ E | |||
| _gr) e (gL03_ e | |||
| _gal) e (gL03_ e | |||
| _pel) e (gL03_ e | |||
| _n) e (grL03_ e | |||
| _ch) e (guL02_ e | |||
| estr) ei (L04_ EI | |||
| @@ -474,10 +474,12 @@ respond) e (L07_ e // cor- | |||
| _reit) e (rL03_ E | |||
| _sinc) e (rL03_ E | |||
| _g) e (rL04_ E | |||
| _z) e (rL04_ E | |||
| qu) e (rL04_ E // re- | |||
| _op) e (rL04_ E | |||
| gen) e (rL04_ E // de- re- | |||
| _alt) e (rL04_ E | |||
| _enc) e (rL04_ E | |||
| _sug) e (rL04_ E | |||
| _sup) e (rL04_ E | |||
| _tol) e (rL04_ E | |||
| @@ -489,12 +491,16 @@ respond) e (L07_ e // cor- | |||
| _recup) e (rL04_ E | |||
| _refrig) e (rL04_ E | |||
| _v) e (rbL03_ E | |||
| _alic) e (rcL02_ E | |||
| _p) e (rdL02_ E | |||
| _l) e (rdL03_ E | |||
| _h) e (rdL04_ E | |||
| _bez) e (rrL03_ e | |||
| _inv) e (rtL03_ e | |||
| _f) e (rvL03_ e | |||
| _alic) e (rçL03_ E | |||
| _p) e (sL01_ E | |||
| _l) e (sL03_ E | |||
| _refr) e (scL01_ E | |||
| _d) e (scL02_ E | |||
| _cr) e (scL02_ E | |||
| @@ -520,6 +526,7 @@ _obsol) e (tL03_ e | |||
| _atr) e (vL03_ e | |||
| _r) e (zL04_ E | |||
| _pr) e (zL04_ E | |||
| _rev) e (zL04_ E | |||
| _despr) e (zL04_ E | |||
| _embel) e (zL04_ E | |||
| _menospr) e (zL04_ E | |||
| @@ -688,9 +695,9 @@ _entorp) e (çL03_ e | |||
| _) l (_ 'Ele | |||
| l l | |||
| l) l | |||
| lh l^ | |||
| lh lj | |||
| A) lh lj | |||
| ?1 A) lh l^ | |||
| A) lh l^ | |||
| ?4 A) lh l^ | |||
| @@ -756,6 +763,9 @@ _entorp) e (çL03_ e | |||
| o (lA_ O | |||
| o (lAm_ O | |||
| o (lhe_ O | |||
| o (lhem_ O | |||
| o (ltA_ O | |||
| o (ltAm_ O | |||
| @@ -778,9 +788,7 @@ _entorp) e (çL03_ e | |||
| ?1 o (l_ 'O | |||
| ?2 ol (_ Ow | |||
| o (lh o | |||
| ?2 _) o (lhA_ O | |||
| ?2 _) o (lhAm_ O | |||
| om (_ oN | |||
| o (ma_ o | |||
| @@ -838,6 +846,7 @@ _entorp) e (çL03_ e | |||
| //sort | |||
| _f) o (L05_ o | |||
| _pormen) o (L05_ O | |||
| _f) o (L07_ o | |||
| _s) o (bL02_ O | |||
| _af) o (bL04_ O | |||
| @@ -859,9 +868,8 @@ _entorp) e (çL03_ e | |||
| _t) o (lL03_ o | |||
| _f) o (lgL04_ O | |||
| _emp) o (lgL04_ O | |||
| c) o (lhL02_ O // es- en- re- | |||
| _t) o (lhL02_ O | |||
| _m) o (lhL04_ O | |||
| _) o (lhL04_ O | |||
| m) o (lhL04_ O | |||
| ent) o (pL02_ O | |||
| _c) o (pL03_ O | |||
| _ens) o (pL04_ O | |||
| @@ -1057,6 +1065,8 @@ _remem) o (rL04_ O | |||
| u (iu w | |||
| u (iCK u | |||
| uy uI | |||
| ul (K uw | |||
| u (lh+ u | |||
| um (_ u~N | |||
| um (C u~m | |||
| @@ -28,7 +28,7 @@ _10 d;'es;It; | |||
| _11 Od;'innVttsVt; | |||
| _12 dv;In'AttsVt; | |||
| _13 tR;In'AttsVt; | |||
| _14 ts;It'y@-*nVttsVt; | |||
| _14 tS;It'y@-*nVttsVt; | |||
| _15 p;Itn'AttsVt; | |||
| _16 SE#stn'AttsVt; | |||
| _17 s;Imn'AttsVt; | |||
| @@ -45,7 +45,7 @@ _9X d;E2v;In'ostO | |||
| _0C st'o | |||
| _2C dv;'es;t;I | |||
| _3C tr;'ista | |||
| _4C ts;It'yr;E2sta | |||
| _4C tS;It'yr;E2sta | |||
| _5C p;,It;s'ot | |||
| _6C S,E#s;t;s'ot | |||
| _7C s;,Ims'ot | |||
| @@ -1878,17 +1878,20 @@ include ph_greenlandic | |||
| phonemetable am base | |||
| include ph_amhari | |||
| phonemetable si hi | |||
| include ph_sinhala | |||
| //************************************************************************************** | |||
| // The following lines are experimental, for future additions. | |||
| // These langauges are not in a usable state. | |||
| // These lines can be deleted. | |||
| phonemetable rw base2 | |||
| include ph_kinyarwanda | |||
| phonemetable si hi | |||
| include ph_sinhala | |||
| phonemetable sl sk | |||
| include ph_slovenian | |||
| //phonemetable rw base2 | |||
| //include ph_kinyarwanda | |||
| //phonemetable mr hi | |||
| //include ph_marathi | |||
| @@ -1902,9 +1905,6 @@ include ph_kinyarwanda | |||
| //phonemetable prs base | |||
| //include ph_dari | |||
| phonemetable sl sk | |||
| include ph_slovenian | |||
| //phonemetable gd base | |||
| //include ph_s_gaelic | |||
| @@ -1929,7 +1929,6 @@ include ph_slovenian | |||
| //phonemetable tn base | |||
| //include ph_setswana | |||
| //phonemetable mt base | |||
| //include ph_maltese | |||
| @@ -2,8 +2,8 @@ | |||
| # Toolflags: | |||
| CCflags = -c -C90 -depend !Depend -IC: -throwback -zM | |||
| C++flags = -c -depend !Depend -IC: -throwback -zM | |||
| CCflags = -c -C90 -depend !Depend -IC: -throwback -memaccess -zM -L22-S22-L41 | |||
| C++flags = -c -depend !Depend -IC: -throwback -zM -L22-S22-L41 | |||
| Linkflags = -rmf -c++ -o $@ | |||
| ObjAsmflags = -throwback -NoCache -depend !Depend | |||
| CMHGflags = | |||
| @@ -61,3 +61,4 @@ Squeezeflags = -o $@ | |||
| objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | |||
| # Dynamic dependencies: | |||
| @@ -1,6 +1,6 @@ | |||
| /*************************************************************************** | |||
| * Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||
| * email: [email protected] * | |||
| * * | |||
| * This program is free software; you can redistribute it and/or modify * | |||
| @@ -26,6 +26,7 @@ | |||
| #include <ctype.h> | |||
| #include <locale.h> | |||
| #include "kernel.h" | |||
| #include <math.h> | |||
| #include "speech.h" | |||
| #include "speak_lib.h" | |||
| @@ -221,6 +222,7 @@ void ReadVoiceNames2(char *directory) | |||
| voice_variant_names[n_voice_variant_files++] = p; | |||
| } | |||
| else | |||
| if(strcmp(p, "default") != 0) | |||
| { | |||
| if(n_voice_files >= (N_VOICE_NAMES-1)) | |||
| continue; | |||
| @@ -233,11 +235,17 @@ void ReadVoiceNames2(char *directory) | |||
| void ReadVoiceNames() | |||
| {//=================== | |||
| char directory[sizeof(path_home)+10]; | |||
| char directory[sizeof(path_home)+20]; | |||
| n_voice_files = 0; | |||
| n_voice_variant_files = 0; | |||
| sprintf(directory,"%s.voices.default", path_home); | |||
| if(GetFileLength(directory) > 0) | |||
| { | |||
| // put the 'default' voice at the start of the list | |||
| voice_names[n_voice_files++] = "default"; | |||
| } | |||
| sprintf(directory,"%s.voices",path_home); | |||
| ReadVoiceNames2(directory); | |||
| @@ -400,11 +408,27 @@ void FillSoundBuf(int size) | |||
| int initialise(void) | |||
| {//================= | |||
| sprintf(path_home,"%s.espeak-data","<eSpeak$Dir>"); | |||
| char buf[N_PATH_HOME]; | |||
| _kernel_swi_regs regs; | |||
| _kernel_oserror *error; | |||
| buf[0] = 0; | |||
| regs.r[0] = (int)"eSpeak$Dir"; | |||
| regs.r[1] = (int)buf; | |||
| regs.r[2] = sizeof(buf); | |||
| regs.r[3] = 0; | |||
| regs.r[4] = 0; | |||
| regs.r[5] = 0; | |||
| error = _kernel_swi(0x20023,®s,®s); // OS_ReadVarVal | |||
| buf[regs.r[2]] = 0; | |||
| sprintf(path_home,"%s.espeak-data",buf); | |||
| if(GetFileLength(path_home) != -2) | |||
| { | |||
| // not found, try the 10 character version of the directory name | |||
| sprintf(path_home,"%s.espeak-dat","<eSpeak$Dir>"); | |||
| sprintf(path_home,"%s.espeak-dat",buf); | |||
| } | |||
| if(GetFileLength(path_home) != -2) | |||
| { | |||
| @@ -414,7 +438,7 @@ int initialise(void) | |||
| } | |||
| WavegenInit(22050,0); | |||
| LoadPhData(); | |||
| LoadPhData(NULL); | |||
| SetVoiceStack(NULL, ""); | |||
| SynthesizeInit(); | |||
| return(0); | |||
| @@ -453,7 +477,7 @@ void speak_text_string(char *data, int terminator, int len, int wait, int voice_ | |||
| static_length = 0; | |||
| else | |||
| { | |||
| strcat(&static_buf[static_length]," : "); | |||
| strcat(&static_buf[static_length]," \n "); | |||
| static_length+=3; | |||
| } | |||
| @@ -578,13 +602,14 @@ void set_say_options(int reg2, int reg3) | |||
| void jsd_swi_functions(int *r) | |||
| /****************************/ | |||
| { | |||
| int use_ipa; | |||
| espeak_VOICE voice_select; | |||
| switch(r[0]) | |||
| { | |||
| case 0: /* major version */ | |||
| r[0] = 4; | |||
| r[1] = 331; | |||
| r[1] = 347; | |||
| break; | |||
| case 1: /* register user */ | |||
| @@ -594,7 +619,13 @@ void jsd_swi_functions(int *r) | |||
| break; | |||
| case 3: | |||
| // r[0] = (int)speech_to_phonemes((char *)r[1]); | |||
| // translate into phonemes | |||
| use_ipa = 0; | |||
| if((r[2] >= 1) && (use_ipa <= 3)) | |||
| use_ipa = r[2]; | |||
| TranslateClause(translator,NULL,(char *)r[1],NULL,NULL); | |||
| GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa); | |||
| r[0] = (int)translator->phon_out; | |||
| break; | |||
| case 4: | |||
| @@ -642,6 +673,7 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| /*********************************************************/ | |||
| { | |||
| int value; | |||
| int value2; | |||
| int q_length; | |||
| value = r[0]; | |||
| @@ -650,21 +682,23 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| case 0: // ready ? | |||
| // returns the index into the source text of the currently speaking word | |||
| if(current_source_index > 0) | |||
| r[1] = current_source_index-1; | |||
| else | |||
| r[1] = current_source_index; /* source index */ | |||
| if(current_source_index > 0) | |||
| r[1] = current_source_index-1; | |||
| else | |||
| r[1] = current_source_index; /* source index */ | |||
| r[2] = 0; /* source tag */ | |||
| r[3] = 0; /* for future expansion */ | |||
| r[4] = 0; | |||
| r[5] = 0; | |||
| if(wcmdq_head == wcmdq_tail) | |||
| if(WcmdqUsed() < 5) | |||
| { | |||
| r[0] = -1; /* ready, or nearly */ | |||
| } | |||
| else | |||
| { | |||
| r[0] = 0; | |||
| } | |||
| break; | |||
| case 1: /* restore old sound channel. DO NOTHING */ | |||
| @@ -692,19 +726,32 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| break; | |||
| case 7: /* pitch */ | |||
| // not implemented | |||
| value = (value * 50)/128; | |||
| SetParameter(espeakPITCH, value, 0); | |||
| break; | |||
| case 8: /* speed */ | |||
| SetParameter(espeakRATE,value,0); | |||
| case 8: // speed, convert to range 80 to 400, mid-value=180 | |||
| if(value < 128) | |||
| value2 = 80 + (value*100)/128; // linear range for 0-127 -> 80-179 | |||
| else | |||
| value2 = 80 + pow((float)value/128.0, 1.75)*100; | |||
| SetParameter(espeakRATE,value2,0); | |||
| break; | |||
| case 9: /* word_gap */ | |||
| if(value >= 128) | |||
| value = value - 128; | |||
| if(value > 1) | |||
| value = (value-1) * 5; | |||
| SetParameter(espeakWORDGAP,value,0); | |||
| break; | |||
| case 10: /* pitch_range */ | |||
| // not implemented | |||
| value = (value * 50)/128; | |||
| SetParameter(espeakRANGE, value, 0); | |||
| break; | |||
| case 12: /* reset */ | |||
| @@ -712,7 +759,22 @@ _kernel_oserror *swi_handler(int swi_no, int *r, void *pw) | |||
| break; | |||
| case 13: /* volume */ | |||
| SetParameter(espeakVOLUME,value,0); | |||
| // convert to range 6-255 to 10-400, mid-value=100 | |||
| if(value < 6) | |||
| value2 = value + 4; | |||
| else | |||
| if(value < 128) | |||
| { | |||
| value2 = pow((float)(value+40)/168.0, 1.75)*100; | |||
| } | |||
| else | |||
| value2 = pow((float)value/128.0, 2.0)*100; | |||
| SetParameter(espeakVOLUME,value2,0); | |||
| WavegenSetVoice(voice); | |||
| break; | |||
| case 14: // set voice by name | |||
| SetVoiceByName((char *)r[0]); | |||
| WavegenSetVoice(voice); | |||
| break; | |||
| } | |||
| @@ -835,6 +897,13 @@ int param_number(char **argp) | |||
| return(value); | |||
| } | |||
| void PrintVersion() | |||
| {//================ | |||
| char buf[120]; | |||
| printf("\nspeak text-to-speech: %s Data at: %s\n", version_string, path_home); | |||
| } | |||
| void command_line(char *arg_string, int wait) | |||
| {//========================================== | |||
| @@ -854,6 +923,7 @@ void command_line(char *arg_string, int wait) | |||
| char command[80]; | |||
| char *p; | |||
| int ix; | |||
| int quiet; | |||
| voicename[0] = 0; | |||
| wavefile[0] = 0; | |||
| @@ -861,7 +931,7 @@ void command_line(char *arg_string, int wait) | |||
| option_linelength = 0; | |||
| option_phonemes = 0; | |||
| option_waveout = 0; | |||
| option_quiet = 0; | |||
| quiet = 0; | |||
| option_multibyte = 0; // auto | |||
| option_capitals = 0; | |||
| option_punctuation = 0; | |||
| @@ -887,7 +957,8 @@ void command_line(char *arg_string, int wait) | |||
| break; | |||
| case 'h': | |||
| printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | |||
| PrintVersion(); | |||
| printf("\n%s",help_text); | |||
| return; | |||
| case 'k': | |||
| @@ -912,7 +983,7 @@ void command_line(char *arg_string, int wait) | |||
| break; | |||
| case 'q': | |||
| option_quiet = 1; | |||
| quiet = 1; | |||
| break; | |||
| case 'f': | |||
| @@ -963,7 +1034,8 @@ void command_line(char *arg_string, int wait) | |||
| else | |||
| if(strcmp(command,"help")==0) | |||
| { | |||
| printf("\nspeak text-to-speech: %s\n%s",version_string,help_text); | |||
| PrintVersion(); | |||
| printf("\n%s",help_text); | |||
| return; | |||
| } | |||
| else | |||
| @@ -980,6 +1052,17 @@ void command_line(char *arg_string, int wait) | |||
| SetParameter(espeakPUNCTUATION,option_punctuation,0); | |||
| } | |||
| else | |||
| if(memcmp(command,"version",7)==0) | |||
| { | |||
| PrintVersion(); | |||
| return; | |||
| } | |||
| else | |||
| if(memcmp(command,"ipa",3)==0) | |||
| { | |||
| option_phonemes = 3; | |||
| } | |||
| else | |||
| { | |||
| printf("Command not recognised\n"); | |||
| } | |||
| @@ -997,22 +1080,25 @@ void command_line(char *arg_string, int wait) | |||
| } | |||
| } | |||
| if((option_phonemes > 1) && !option_waveout) | |||
| quiet = 1; // can't call sprintf() during callback | |||
| SetVoiceByName(voicename); | |||
| if((filename[0]==0) && (p[0]=='\r')) | |||
| { | |||
| // nothing to speak | |||
| if(option_quiet) | |||
| if(quiet) | |||
| { | |||
| SpeakNextClause(NULL,NULL,2); // stop speaking | |||
| more_text = 0; | |||
| } | |||
| } | |||
| if(option_waveout || option_quiet) | |||
| if(option_waveout || quiet) | |||
| { | |||
| // write speech to a WAV file | |||
| if(option_quiet) | |||
| if(quiet) | |||
| { | |||
| OpenWaveFile(NULL,samplerate); | |||
| option_waveout = 2; | |||
| @@ -2,7 +2,7 @@ | |||
| [Setup] | |||
| AppName=eSpeak | |||
| AppVerName=eSpeak version 1.47.01 | |||
| AppVerName=eSpeak version 1.47.04 | |||
| AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
| WindowVisible=yes | |||
| @@ -146,7 +146,7 @@ begin | |||
| $0e: Result := 'hu'; | |||
| $0f: Result := 'is'; | |||
| $10: Result := 'it'; | |||
| //$12: Result := 'ko'; | |||
| $12: Result := 'ko'; | |||
| $13: Result := 'nl'; | |||
| $14: Result := 'no'; | |||
| $15: Result := 'pl'; | |||
| @@ -158,7 +158,7 @@ begin | |||
| $1c: Result := 'sq'; | |||
| $1d: Result := 'sv'; | |||
| $1f: Result := 'tr'; | |||
| //$20: Result := 'ur'; | |||
| $20: Result := 'ur'; | |||
| $21: Result := 'id'; | |||
| $25: Result := 'et'; | |||
| $26: Result := 'lv'; | |||
| @@ -174,6 +174,7 @@ begin | |||
| $39: Result := 'hi'; | |||
| //$3a: Result := 'mt'; | |||
| $3c: Result := 'ga'; | |||
| $3e: Result := 'ms'; | |||
| //$3f: Result := 'kk'; | |||
| $41: Result := 'sw'; | |||
| //$44: Result := 'tt'; | |||
| @@ -263,6 +264,7 @@ begin | |||
| 'mk': value := $42f; | |||
| 'ml': value := $44c; | |||
| 'mn': value := $450; | |||
| 'ms': value := $43e; | |||
| 'mt': value := $43a; | |||
| 'my': value := $455; | |||
| 'ne': value := $461; | |||
| @@ -1,7 +1,7 @@ | |||
| [Setup] | |||
| AppName=eSpeakEdit | |||
| AppVerName=eSpeakEdit version 1.47.01 | |||
| AppVerName=eSpeakEdit version 1.47.04 | |||
| DefaultDirName={pf}\eSpeak | |||
| DefaultGroupName=eSpeak | |||
| OutputBaseFilename=setup_espeakedit | |||
| @@ -32,18 +32,24 @@ Source: "License.txt"; DestDir: "{app}"; | |||
| [Languages] | |||
| Name: "en"; MessagesFile: "compiler:Default.isl" | |||
| Name: "af"; MessagesFile: "compiler:Languages\Afrikaans.isl" | |||
| Name: "bg"; MessagesFile: "compiler:Languages\Bulgarian.isl" | |||
| Name: "bs"; MessagesFile: "compiler:Languages\Bosnian.isl" | |||
| Name: "cs"; MessagesFile: "compiler:Languages\Czech.isl" | |||
| Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" | |||
| Name: "de"; MessagesFile: "compiler:Languages\German.isl" | |||
| Name: "el"; MessagesFile: "compiler:Languages\Greek.isl" | |||
| Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" | |||
| Name: "fa"; MessagesFile: "compiler:Languages\Farsi.isl" | |||
| Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" | |||
| Name: "fr"; MessagesFile: "compiler:Languages\French.isl" | |||
| Name: "hi"; MessagesFile: "compiler:Languages\Hindi.islu" | |||
| Name: "hr"; MessagesFile: "compiler:Languages\Croatian.isl" | |||
| Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" | |||
| Name: "id"; MessagesFile: "compiler:Languages\Indonesian-5.1.11.isl" | |||
| Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" | |||
| Name: "lv"; MessagesFile: "compiler:Languages\Latvian-1-5.1.11.isl" | |||
| Name: "ka"; MessagesFile: "compiler:Languages\Georgian.islu" | |||
| Name: "lv"; MessagesFile: "compiler:Languages\Latvian.isl" | |||
| Name: "ne"; MessagesFile: "compiler:Languages\Nepali.islu" | |||
| Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" | |||
| Name: "no"; MessagesFile: "compiler:Languages\Norwegian.isl" | |||
| Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" | |||
| @@ -51,8 +57,8 @@ Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" | |||
| Name: "ro"; MessagesFile: "compiler:Languages\Romanian.isl" | |||
| Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" | |||
| Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" | |||
| ;Name: "sq"; MessagesFile: "compiler:Languages\Albanian-2-5.1.11.isl" | |||
| Name: "sr"; MessagesFile: "compiler:Languages\Serbian.isl" | |||
| Name: "tr"; MessagesFile: "compiler:Languages\Turkish.isl" | |||
| Name: "vi"; MessagesFile: "compiler:Languages\Vietnamese.isl" | |||
| Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimp-12-5.1.11.isl" | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.47.03f 31.Mar.13"; | |||
| const char *version_string = "1.47.04 02.Apr.13"; | |||
| const int version_phdata = 0x014701; | |||
| int option_device_number = -1; | |||
| @@ -518,6 +518,7 @@ Translator *SelectTranslator(const char *name) | |||
| { | |||
| SetCyrillicLetters(tr); | |||
| SetLetterVowel(tr,0x2a); | |||
| tr->charset_a0 = charsets[5]; // ISO-8859-5 | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word | |||
| tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107; // devoice at end of word, and change voicing to match a following consonant (except v) | |||
| tr->langopts.param[LOPT_REDUCE] = 2; | |||
| @@ -3469,7 +3469,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| prev_clause_pause = clause_pause; | |||
| *tone_out = tone; | |||
| if(tone_out != NULL) | |||
| *tone_out = tone; | |||
| new_sentence = 0; | |||
| if(terminator & CLAUSE_BIT_SENTENCE) | |||