diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 0ef01f8a..4b119d6a 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -49,6 +49,20 @@ s s. S; t t# t. t.# tS v v# w z +Dictionary pt_dict 2013-04-02 + +& &/ &U~ &~ @ @- a A +aI aU e E eI EI eU EU +i I i/ iU o O oI OI +o~ u U uI u~ y + +* : ; b c C d dZ +f g h j k l l^ m +n N n^ p Q r R r- +s S s# s; t T tS ts +v w x z Z + + Dictionary bg_dict 2013-03-16 @ a e i o u @@ -150,7 +164,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-03-30 +Dictionary en_dict 2013-04-02 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -164,7 +178,7 @@ d# dZ f g h j k l l# l/ m n N n^ p Q q Q" r R r- R2 s S t T t2 tS tS; v w x -z Z z# +z Z z# z. Dictionary eo_dict 2013-03-08 @@ -563,20 +577,6 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-03-31 - -& &/ &U~ &~ @ @- a A -aI aU e E eI EI eU EU -i I i/ iU o O oI OI -o~ u U uI u~ y - -* : ; b C d dZ f -g h j k l l^ m n -N n^ p Q r R r- s -S s# s; t T tS ts v -w x z Z - - Dictionary ro_dict 2013-03-04 @ @- @I @U a aI aU e @@ -592,7 +592,7 @@ ts; v v; w w2 x z Z z; Z; -Dictionary ru_dict 2013-03-31 +Dictionary ru_dict 2013-04-01 8 @- a A e E E# E% E2 i I I# I3 I^ ja ju diff --git a/dictsource/en_list b/dictsource/en_list index 1cd478c9..92b93d45 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -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 diff --git a/dictsource/en_rules b/dictsource/en_rules index b913125a..4683f324 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -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: diff --git a/dictsource/pt_list b/dictsource/pt_list index 19d2c056..c4400fd9 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -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 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index cce034fc..d2f26045 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -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 diff --git a/dictsource/ru_list b/dictsource/ru_list index 58af2d00..d1cd23ed 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -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 diff --git a/phsource/compile_report b/phsource/compile_report index 944e95c6..fb1da3e3 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -75 phoneme tables +74 phoneme tables new total base 109 109 consonants 11 119 @@ -74,7 +74,6 @@ consonants 11 119 kl 18 119 am 15 114 si 24 155 - rw 15 132 sl 10 137 Data file Used by @@ -218,7 +217,6 @@ dzh/xdz_pzd [J] base [J] tr [J] ku envelope/i_risefall [11] zh -envelope/i_risefall2 [+2] rw envelope/p_214 [5] vi [5] vi-hue [214] zh @@ -236,7 +234,6 @@ envelope/p_fall [2] vi [22] zh [33] zh [53] zh - [+] rw envelope/p_fallrise [4] vi envelope/p_level [1] vi [1] vi-hue @@ -1511,8 +1508,6 @@ vowel/a# [a] base2 [a#] en-sc [a#] en-wi [&] sr - [a#] rw - [a/] rw vowel/a_2 [a] base2 [a] en-wi [A:] en-wi @@ -1524,7 +1519,6 @@ vowel/a_2 [a] base2 [a] pt-pt [a] ro [a] el - [a] rw vowel/a#_2 [A] nl [a:] nl [a] kn @@ -1673,8 +1667,6 @@ vowel/e [e] base [e] da [?e] da [E] kl - [e] rw - [e#] rw vowel/e# [I] en-sc [e] et [E] kl @@ -1825,8 +1817,6 @@ vowel/i [i] base [i] fa [i] kl [i:] si - [i] rw - [i#] rw vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -1985,8 +1975,6 @@ vowel/o [o] base2 [o] id [o] hy [o] kl - [o] rw - [o#] rw vowel/o_2 [o:] cy [o:] hi [o:] hu @@ -2183,8 +2171,6 @@ vowel/u_bck [u] base2 [?u] da [u] ka [u] ko - [u] rw - [u#] rw vowel/u_bck2 [u] et [u] fr [u:] fr diff --git a/phsource/ph_sinhala b/phsource/ph_sinhala new file mode 100755 index 00000000..cee7ba6f --- /dev/null +++ b/phsource/ph_sinhala @@ -0,0 +1,155 @@ + +// Phonemes for Sinhala +// This inherits from ph_hindi + +// (these are only guesses) + +phoneme @ + vowel starttype #a endtype #a + length 150 + FMT(vowel/@_low) +endphoneme + + +phoneme a + vowel long starttype #a endtype #a + ipa ɐ + length 150 + ChangeIfNotStressed(@) + FMT(vowel/a#_2) +endphoneme + + +phoneme a: + vowel starttype #a endtype #a + length 300 + FMT(vowel/a_3) +endphoneme + + +phoneme & + vowel starttype #e endtype #e + length 150 + FMT(vowel/ee_6) +endphoneme + + +phoneme &: + vowel starttype #e endtype #e + length 300 + FMT(vowel/ee_6) +endphoneme + + +phoneme e + vowel starttype #e endtype #e + length 150 + FMT(vowel/e_mid) +endphoneme + + +phoneme e: + vowel starttype #e endtype #e + length 300 + FMT(vowel/e_mid2) +endphoneme + + +phoneme i + vowel starttype #i endtype #i + length 150 + FMT(vowel/i_6) +endphoneme + + +phoneme i: + vowel starttype #i endtype #i + length 300 + FMT(vowel/i) +endphoneme + + + +phoneme o + vowel starttype #o endtype #o + length 150 + FMT(vowel/oo_1) +endphoneme + + +phoneme o: + vowel starttype #o endtype #o + length 300 + FMT(vowel/oo_1) +endphoneme + + +phoneme u + vowel starttype #u endtype #u + length 130 + FMT(vowel/u_6) +endphoneme + +phoneme u: + vowel starttype #u endtype #u + length 300 + FMT(vowel/u_6) +endphoneme + + + +phoneme aI + vowel long starttype #a endtype #i + length 300 + FMT(vdiph/ai_8) +endphoneme + +phoneme aU + vowel long starttype #a endtype #u + length 300 + FMT(vdiph/au) +endphoneme + + + +// ?? This is standard [v]. Should be it [v] without the fricative noise? +phoneme v + import_phoneme base/v +endphoneme + + +phoneme r + import_phoneme base/r +endphoneme + +phoneme t + import_phoneme base2/t // dental +endphoneme + + +// temporary, map [n#] etc. to [n] etc. + +phoneme m# + ipa U+1D50 + CALL base/m +endphoneme + +phoneme n# + ipa U+207F + CALL base/n +endphoneme + +phoneme n.# + ipa U+1DAF + CALL base/n. +endphoneme + +phoneme n^# + ipa U+1DAE + CALL base/n^ +endphoneme + +phoneme N# + ipa U+1D51 + CALL base/N +endphoneme diff --git a/phsource/ph_urdu b/phsource/ph_urdu new file mode 100755 index 00000000..2dd61fb3 --- /dev/null +++ b/phsource/ph_urdu @@ -0,0 +1,45 @@ +//==================================================== +// Phonemes adjusted for Urdu by Him Prasad Gautam. +//==================================================== + + +phoneme : // Lengthen the previous vowel by "length" + virtual + length 120 +endphoneme + +phoneme @ + vowel flag1 starttype #@ endtype #@ + length 130 + + ChangeIfDiminished(@-) + IF nextPh(H) THEN + FMT(vowel/@_low) + ENDIF + FMT(vowel/@_bck) +endphoneme + + +phoneme V + vowel flag1 starttype #@ endtype #@ + length 150 + CALL hi/V +endphoneme + + +phoneme @2 + vowel flag1 starttype #@ endtype #@ + length 150 + FMT(vowel/@_low) +endphoneme + +phoneme @3 + vowel flag1 starttype #@ endtype #@ + length 150 + ChangeIfDiminished(@-) + FMT(vowel/@_3) +endphoneme + + +//==================================================== +// The rest Phonemes are inherted from Hindi. diff --git a/phsource/phonemes b/phsource/phonemes index 4b57c0ac..22f593bd 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -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 diff --git a/platforms/riscos/Makefile b/platforms/riscos/Makefile index 2cd3b0da..3522e043 100644 --- a/platforms/riscos/Makefile +++ b/platforms/riscos/Makefile @@ -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 = @@ -16,11 +16,11 @@ Squeezeflags = -o $@ @.o.intonation @.o.readclause @.o.setlengths @.o.synthdata \ @.o.synthesize @.o.translate @.o.tr_languages @.o.numbers \ @.o.synth_mbrola @.o.phonemelist \ - @.o.tr_english @.o.wavegen @.o.voices @.o.assemb @.o.cmhgfile + @.o.wavegen @.o.voices @.o.assemb @.o.cmhgfile Link $(Linkflags) C:o.stubs C:o.c++lib @.o.speak_riscos @.o.compiledict \ @.o.dictionary @.o.intonation @.o.readclause @.o.setlengths \ @.o.synthdata @.o.synthesize @.o.numbers @.o.synth_mbrola \ - @.o.translate @.o.tr_english @.o.wavegen @.o.tr_languages \ + @.o.translate @.o.wavegen @.o.tr_languages \ @.o.voices @.o.phonemelist @.o.assemb @.o.cmhgfile @@ -51,8 +51,6 @@ Squeezeflags = -o $@ c++ $(c++flags) -o @.o.synthesize @.CPP.synthesize @.o.translate: @.CPP.translate c++ $(c++flags) -o @.o.translate @.CPP.translate -@.o.tr_english: @.CPP.tr_english - c++ $(c++flags) -o @.o.tr_english @.CPP.tr_english @.o.tr_languages: @.CPP.tr_languages c++ $(c++flags) -o @.o.tr_languages @.CPP.tr_languages @.o.voices: @.CPP.voices @@ -63,3 +61,4 @@ Squeezeflags = -o $@ objasm $(objasmflags) -from @.s.assemb -to @.o.assemb # Dynamic dependencies: + diff --git a/platforms/riscos/copysource b/platforms/riscos/copysource index 4bfece70..b63ca50e 100644 --- a/platforms/riscos/copysource +++ b/platforms/riscos/copysource @@ -18,6 +18,5 @@ copy .^.src.sintab/h .h.sintab fq~c copy .^.src.speak_lib/h .h.speak_lib fq~c copy .^.src.synthesize/h .h.synthesize fq~c copy .^.src.translate/h .h.translate fq~c -copy .^.src.tr_languages/h .h.tr_languages fq~c copy .^.src.voice/h .h.voice fq~c copy .^.src.wave/h .h.wave fq~c diff --git a/platforms/riscos/cpp/speak_riscos b/platforms/riscos/cpp/speak_riscos index 5c22b550..420137be 100644 --- a/platforms/riscos/cpp/speak_riscos +++ b/platforms/riscos/cpp/speak_riscos @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2005 to 2007 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,7 @@ #include #include #include "kernel.h" +#include #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",""); + 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",""); + 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; diff --git a/platforms/windows/make_espeak.iss b/platforms/windows/make_espeak.iss index 2a83b5fa..ec9bca85 100755 --- a/platforms/windows/make_espeak.iss +++ b/platforms/windows/make_espeak.iss @@ -2,7 +2,7 @@ [Setup] AppName=eSpeak -AppVerName=eSpeak version 1.47.03 +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; diff --git a/platforms/windows/make_espeakedit.iss b/platforms/windows/make_espeakedit.iss index bafbdf3e..235aa67d 100755 --- a/platforms/windows/make_espeakedit.iss +++ b/platforms/windows/make_espeakedit.iss @@ -1,7 +1,7 @@ [Setup] AppName=eSpeakEdit -AppVerName=eSpeakEdit version 1.47.03 +AppVerName=eSpeakEdit version 1.47.04 DefaultDirName={pf}\eSpeak DefaultGroupName=eSpeak OutputBaseFilename=setup_espeakedit diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 92c61ac4..6d6eae4c 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -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; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 2a6e4645..6621f999 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -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; diff --git a/src/translate.cpp b/src/translate.cpp index 1a0471d9..2e876cd1 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -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)