@@ -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) |