Browse Source

[1.28.03] Added macro in speech.h for max. length of the espeak-data path.

Added language: "bs" Bosnian.
Fix to speak_lib.h for Windows dll version.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@69 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
810fb2404d

+ 2
- 15
dictsource/dict_phonemes View File

@@ -143,8 +143,8 @@ Dictionary hr_dict

& @ @- @2 a A a: aI
aU E e e: E~ i I i:
l- o o: oU r- u U u:
y
l- O o o: oU r- u U
u: y

* b d dZ dZ; f g h
j k l l^ m n N n^
@@ -336,19 +336,6 @@ h j k l m n N p
r R s t w z


Dictionary sr_dict

& @ @- @2 a A a: aI
aU E e e: E~ i I i:
l- o o: oU r- u U u:
y

* b d dZ dZ; f g h
j k l l^ m n N n^
p r R s S t tS ts
tS; v x z Z


Dictionary mk_dict

& @ @- @2 a A a: E

+ 13
- 13
dictsource/en_list View File

@@ -835,31 +835,32 @@ famine famIn
farewell $2
fasten faas@n
fathom faD@m
favorite feIv@-rIt // sp.
favorite feIv@-rIt // sp.
favourite feIv@-rIt
favorites feIv@-rIts // sp.
favorites feIv@-rIts // sp.
favourites feIv@-rIts
feisty faIstI2
feline fi:laIn
feminine fEm@nIn
fete feIt
fetus fi:t@s
fi f,aI // as in "hi-fi"
fi f,aI // as in "hi-fi"
fiasco fi:'askoU
fiery faI@rI2
finale fIn'A:lI2
finance faInans $only
finance $verb
finess fI2nEs // for finessed
finesse fI2nEs
finite faInaIt
fishnet fISnEt
fiord fi:O@d
fix fIks // for fixer
fix fIks // for fixer
flagellum fla2dZEl@m
flexible flEksIb@L
flier flaI3
flourish flVrI2S
focus foUk@s // ed,ing
focus foUk@s // ed,ing
foothold fUthoUld
forage f0rIdZ
force fo@s
@@ -870,11 +871,11 @@ forestall fo@st'O:l
foretell fo@t'El
forever $2
forewarn $2
formid fO@m'Id // formidable
formid fO@m'Id // formidable
foyer fOIeI
freelance fri:laans
frigate frIg@t
fringer frIndZ3 // infringer
fringer frIndZ3 // infringer
fringing frIndZIN
frontend fr'Vnt,End
frontpage fr'Vntp,eIdZ
@@ -916,7 +917,7 @@ gourmet gU@meI
graduate gradju:@t
graduate gradju:eIt $verb
graffiti gra2fi:tI2
gredient gri:di@nt // ingredient
gredient gri:di@nt // ingredient
grenade gr@neId
grosvenor groUv@n3
groupie gru:pI
@@ -1011,7 +1012,7 @@ inference Inf@r@ns
influenza Influ:'Enz@
infrastructure $1
ingenuity IndZIn'ju:I2tI2
inherit I2nhErIt // inherited
inherit I2nhErIt // inherited
innard In3d
inner In3
inning InIN
@@ -1020,7 +1021,7 @@ insert Ins3:t $onlys
insert Ins'3:t $verb
insightful $2
inspire Insp'aI@
instal I2nstO:l // instalment
instal I2nstO:l // instalment
installation Inst@l'eIS@n
instinctive $2
insult $2
@@ -1032,12 +1033,12 @@ intern Int3:n
interrogatory $3
inventory Inv@ntrI2
interface $1
intermin I2nt3:mIn // interminable
intermin I2nt3:mIn // interminable
internet Int3nEt
interrupt $1 $onlys
interrupt $3 $verb
interval Int3v@L
interven Int3v'i:n // for intervening
interven Int3v'i:n // for intervening
intro $1
iris aIrIs
irony aIr@nI2
@@ -2252,7 +2253,6 @@ Pandora $2
Penelope p@nEl@pI2
Phoebe fi:bi:
Rachel reItS@L
Reilly raIlI2
Rica ri:ka2
Robert r0b3t
Roderick r0drIk

+ 8
- 7
dictsource/en_rules View File

@@ -1604,9 +1604,8 @@
.group e
e E
&) e (_
e (_ =@
_C) e (_ i:
_CC) e (_ i:
_C) e (_N i:
_CC) e (_N i:
_C) e (Be_ i:
_CC) e (Be_ i:
_CCC) e (Be_ i:
@@ -2109,6 +2108,7 @@
_C) er 3:
_h) er (A Er
_CC) er 3:
_CC) er (A Er
_qu) er 3:
c) er (am I2r
&) ere (_ 3
@@ -2132,7 +2132,6 @@
c) ere (mon ErI2
h) er (en i@r
st) ereo ErI2oU
_st) er (A Er
m) er (ge '3:
erging '3:dZI2N
v) er (ge '3:
@@ -2686,7 +2685,8 @@
ied (_$2i d // suffix
ie (c aI
ie (ce i:
_C) ie (_ aI
ie (_ aI
&) ie (_ I2
_r) ie i:
iedly IdlI2
_z) ie i:
@@ -2714,7 +2714,7 @@
cl) ie (nt aI@
&) ier (y I2@r
ier i@
ier (_ i@
&) ier (_S2i @
_h) ie (r aI@
pl) ier (_ aI@
_Cr) ier aI@
@@ -2736,7 +2736,7 @@
ser) ies (_ i:z
_ar) ies (_ i:z
iesc I2Es
&) ie (st_ I2@
&) iest (_S3i @st
pr) ie (st i:
_v) ie (t %i@
ie (ve i:
@@ -4245,6 +4245,7 @@
regim rEdZIm
re (gist rE
_) re (i@P2 r,i:
_) rei (l raI
_) rele (g rElI2
rele (nt rI2lE
rele (v rElI

+ 2
- 0
dictsource/es_list View File

@@ -281,6 +281,8 @@ _a a
a a $atend
_o o
o o $atend
v uve
x Ekis
_y ,ig@-*'iEQa
y ,ig@-*'iEQa $atend


+ 2
- 2
dictsource/hi_rules View File

@@ -93,7 +93,7 @@

.group ू
ू u:
ूं u~
ूं u~ // or O~ ??
ूँ u~

.group ृ
@@ -312,7 +312,7 @@
्) य (_ j@3

.group र
र rV
र r@2
र (B r
?1 र (_ r
्) र (_ r@-

+ 16
- 0
dictsource/hr_list View File

@@ -38,10 +38,12 @@ _?A slovo // unknown letter
% p'osto
+ plus
€ 'euRo
?2 € 'ev@-*o
@ _'at
& _'end
! 'usklItSnIk
: dv'ototSk&
?2 : dv'otatSk&
# b@-*'oj_
/ k@-*'oz_
\\ b'EkslES
@@ -52,10 +54,12 @@ _?A slovo // unknown letter
µ m'ik@-*o
¶ tSl'an&k
° st'up&n^
?2 ° st'epen
_" n'avodnIk
_‚ 'otvoReni||n'avodnIk
_„ sp'uSteni||n'avodnIk
… t@-*'i||t'otSke
?2 … t@-*'i||t'atSke
† k@-*'iZ
‡ dv'ost@-*Uki||k@-*'iZ
‰ p@-*'omil
@@ -65,6 +69,7 @@ _’ j'ednost@-*'uki||n'avodnIk
_“ 'otvoReni||n'avodnIk
_” z'atvoReni||n'avodnIk
• k@-*'upna||t'otSk&
?2 • k@-*'upna||t'atSk&
_– En||ts'r-t&
_— Em||ts'r-t&
™ p@-*'o'izvodZ&tS
@@ -93,6 +98,8 @@ _, z'aRez
_- ts'r-t'its&
_. t'otSk&
_; t'otSk&z,a*Ez
?2 _. t'atSk&
?2 _; t'atSk&z,a*Ez
_< m'an^i||'od
_= j'edn&ko
_> v'etSi||'od
@@ -145,14 +152,22 @@ _6C S'Est'o
_0M1 t'isUtS;&
_0MA1 t'isUtS;e
_1M1 t'isUtS;U
?2 _0M1 h'il^ad&
?2 _0MA1 h'il^ade
?2 _1M1 h'il^adU
_0M2 m'ilijUna
_0MA2 m'ilijUna
_1M2 m'ilijUn
?2 _0M2 m'ilijOna
?2 _0MA2 m'ilijOna
?2 _1M2 m'ilijOn
_0M3 m'iliardI
_0MA3 m'iliarde
_1M3 m'iliardU
_0M4 b'ilijUna
_1M4 b'ilijUn
?2 _0M4 b'ilijOna
?2 _1M4 b'ilijOn
_dpt _:z'a*Ez_


@@ -450,6 +465,7 @@ tzv $dot

// Demonstratives
tko $u+
?2 šta $u+
što $u+
koga $pause
čega $pause

+ 5
- 0
dictsource/hr_rules View File

@@ -1,6 +1,10 @@
// translation rules for Croatian
// This file is UTF-8 encoded

// Conditional rules:
// ?1 Croatian
// ?2 Bosnian (Bosna and Hercegovina)

.group a
a a
a (j A
@@ -136,6 +140,7 @@
$ d'ol&R

. totSk&
?2 . tatSk&
. (. _:
\.) .


+ 16
- 4
dictsource/pt_rules View File

@@ -210,9 +210,20 @@
eu (s eU
e (uCK e

j) e (tA_ E
j) e (tAm_ E
j) e (tAs_ E
?1 d) e (CAA y
?1 d) e (CACAA y
?1 d) e (CACAC y
?1 d) e (CACC y
?1 d) e (CCAA y
?1 d) e (nCAA ,e
?1 d) e (CCACA y
?1 d) e (nCACA ,e
?1 d) e (CCACCA y
?1 d) e (nCACCA ,e

j) e (tA_ E
j) e (tAm_ E
j) e (tAs_ E

?1 _) es (C@@ S // drop initial "e".
?1 _) e (f i // efectuar, etc.
@@ -233,7 +244,7 @@
?1 _f) e (ch y // fechar
?1 _p) e (rcentag y // percentagem
?1 p) e (ssoa y //pessoal, pessoais, etc.
?1 pr) e (cis y // precisar
?1 pr) e (cis y // precisar
?1 pr) e (f y // preferências, etc.
?1 _r) e (cicl y // recicla, reciclagem, etc...
?1 r) e (cor y // recorrer, recordar
@@ -717,3 +728,4 @@





+ 6
- 5
phsource/compile_report View File

@@ -13,7 +13,7 @@
de 32 123
eo 13 108
fi 40 127
fr 35 118
fr 34 118
fr_ca 11 118
hi 50 132
hu 23 112
@@ -36,10 +36,10 @@
no 28 122
is 32 121
vi 41 133
zhy 32 124
zhy 33 125
sw 14 105

4 b/b base fr hi ro
3 b/b base hi ro
2 b/b_ base hi
2 b/b@ base hi
2 b/b@2 base hi
@@ -456,10 +456,10 @@
10 vowel/e_mid2 af de fi nl sk ro el sw
2 vowel/@_fnt hr mk
1 vowel/@_hgh no
19 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++
18 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++
1 vowel/i# cy
5 vowel/i_2 de nl la sv
2 vowel/i_3 af sk
3 vowel/i_3 af fr sk
4 vowel/i_4 fi hu it is
5 vowel/i_5 en_sc
3 vowel/i#_5 pt_pt ro
@@ -602,6 +602,7 @@
1 vwl_sv/r_sv3 sv
1 vwl_zh/aang zhy
1 vwl_zh/ong zhy
1 vwl_zh/ung zhy
2 w/w base fr
2 w/_w base fr
1 w/w_ base

+ 2
- 11
phsource/ph_french View File

@@ -41,7 +41,7 @@ endphoneme
phoneme i
vowel starttype (i) endtype (i)
length 160
formants vowel/i
formants vowel/i_3
linkout ;
endphoneme

@@ -279,16 +279,6 @@ phoneme v
endphoneme


phoneme B
vcd blb frc
vowelin f1=2 f2=1000 -300 -200 f3=-100 100
vowelout f1=2 f2=1000 -500 -300 f3=-100 60 len=50
lengthmod 6
formants b/b
switchvoicing f
endphoneme


phoneme p
vls blb stop
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
@@ -308,3 +298,4 @@ endphoneme





+ 9
- 5
phsource/ph_zh_yue View File

@@ -1,6 +1,4 @@
// Cantonese Chinese
//==================

//====================================================
// Tone Numbers
//====================================================
@@ -105,7 +103,7 @@ phoneme aau
endphoneme

phoneme aang
vowel starttype (a) endtype (u)
vowel starttype (a) endtype (a)
length 270
formants vwl_zh/aang
endphoneme
@@ -187,7 +185,7 @@ phoneme ou
endphoneme

phoneme ong
vowel starttype (o) endtype (u)
vowel starttype (o) endtype (o)
length 220
formants vwl_zh/ong
endphoneme
@@ -201,6 +199,12 @@ phoneme u
before N vowel/uu_bck
endphoneme

phoneme ung
vowel starttype (u) endtype (u)
length 200
formants vwl_zh/ung
endphoneme

phoneme ui
vowel starttype (u) endtype (i)
length 220

BIN
phsource/vwl_zh/aang View File


+ 12
- 12
src/compiledata.cpp View File

@@ -101,7 +101,7 @@ private:
int CPhoneme();
void StartPhonemeTable(const char *name);
void EndPhonemeTable();
void CPhonemeFiles(char *path_source);
void CPhonemeFiles();
int NextItem(int type);
void UngetItem();
void Error(const char *msg);
@@ -173,7 +173,7 @@ private:

};

char path_source[80];
char path_source[sizeof(path_home)+20];

Compile *compile;

@@ -741,7 +741,7 @@ int Compile::LoadWavefile(FILE *f, const char *fname)
int resample_wav = 0;
char fname_temp[100];
int scale_factor=0;
char command[200];
char command[sizeof(path_source)+200];

fseek(f,24,SEEK_SET);
sr1 = Read4Bytes(f);
@@ -894,7 +894,7 @@ int Compile::LoadDataFile(const char *path, int control)
int hash;
int type_code=' ';
REF_HASH_TAB *p, *p2;
char buf[256];
char buf[sizeof(path_source)+120];

count_references++;

@@ -1630,12 +1630,12 @@ void Compile::StartPhonemeTable(const char *name)



void Compile::CPhonemeFiles(char *path_source)
{//===========================================
void Compile::CPhonemeFiles()
{//==========================
int phcode;
int item;
FILE *f;
char buf[120];
char buf[sizeof(path_source)+120];

linenum = 1;
n_phcodes = 1; // don't use phoneme code=0, it's used as string terminator
@@ -1827,7 +1827,7 @@ void Compile::Report(void)
REF_HASH_TAB *p;
REF_HASH_TAB **list;
FILE *f_report;
char fname[80];
char fname[sizeof(path_source)+20];

// make a list of all the references and sort it
list = (REF_HASH_TAB **)malloc(count_references * sizeof(REF_HASH_TAB *));
@@ -1989,7 +1989,7 @@ wxString CompileAllDictionaries()
FILE *log;
FILE *f_phused;
char dictname[80];
char fname_log[80];
char fname_log[sizeof(path_dsource)+20];
char save_voice_name[80];

if(!wxDirExists(path_dictsource))
@@ -2073,7 +2073,7 @@ wxString CompileAllDictionaries()

void Compile::CPhonemeTab(const char *source)
{//========================================
char fname[130];
char fname[sizeof(path_source)+40];
wxString report;
wxString report_dict;

@@ -2176,7 +2176,7 @@ memset(markers_used,0,sizeof(markers_used));
n_phoneme_tabs = 0;
stack_ix = 0;
StartPhonemeTable("base");
CPhonemeFiles(path_source);
CPhonemeFiles();

EndPhonemeTable();
WritePhonemeTable();
@@ -2233,7 +2233,7 @@ void CompileMbrola()
char name1[40];
char name2[40];
char mbrola_voice[40];
char buf[150];
char buf[sizeof(path_home)+30];
int mbrola_ctrl = 20; // volume in 1/16 ths
MBROLA_TAB data[N_PHONEME_TAB];


+ 3
- 3
src/compiledict.cpp View File

@@ -1301,9 +1301,9 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
FILE *f_out;
int offset_rules=0;
int value;
char fname_buf[130];
char fname_temp[130];
char path[80];
char fname_buf[sizeof(path_home)+15];
char fname_temp[sizeof(path_home)+15];
char path[sizeof(path_home)+40]; // path_dsource+20

error_count = 0;


+ 1
- 1
src/dictionary.cpp View File

@@ -127,7 +127,7 @@ int Translator::LoadDictionary(const char *name, int no_error)
int length;
FILE *f;
unsigned int size;
char fname[130];
char fname[sizeof(path_home)+20];

strcpy(dictionary_name,name); // currently loaded dictionary name


+ 1
- 1
src/espeak.cpp View File

@@ -22,7 +22,7 @@
#include <string.h>
#include <getopt.h>
#include <time.h>
#include "sys/stat.h"
#include <sys/stat.h>

#include "speak_lib.h"


+ 2
- 2
src/espeakedit.cpp View File

@@ -427,8 +427,8 @@ void MyFrame::OnTools(wxCommandEvent& event)
{//=========================================
int err;
FILE *log;
char fname_log[80];
char err_fname[130];
char fname_log[sizeof(path_dsource)+12];
char err_fname[sizeof(path_home)+15];

switch(event.GetId())
{

+ 12
- 10
src/extras.cpp View File

@@ -21,8 +21,9 @@
#include <wx/dirdlg.h>
#include "wx/filename.h"
#include "wx/sound.h"
#include "wx/dir.h"

#include "sys/stat.h"
#include <sys/stat.h>

#include "speak_lib.h"
#include "main.h"
@@ -487,7 +488,8 @@ void Lexicon_Ru()
int counts[20][20][10];

char phonemes[N_WORD_PHONEMES];
char buf[100];
char buf[120];
char fname[sizeof(path_dsource)+20];

// KOI8-R codes for Russian vowels
static char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0};
@@ -543,18 +545,18 @@ void Lexicon_Ru()
}
input_length = GetFileLength(buf);

sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_listx_1");
if((f_out = fopen(buf,"w")) == NULL)
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_listx_1");
if((f_out = fopen(fname,"w")) == NULL)
{
wxLogError(_T("Can't write to: ")+wxString(buf,wxConvLocal));
wxLogError(_T("Can't write to: ")+wxString(fname,wxConvLocal));
fclose(f_in);
return;
}

sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_log");
f_log = fopen(buf,"w");
sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_roots_1");
f_roots = fopen(buf,"w");
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_log");
f_log = fopen(fname,"w");
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_roots_1");
f_roots = fopen(fname,"w");

LoadVoice("ru",0);

@@ -1211,6 +1213,7 @@ result = espeak_SetVoiceByProperties(&voice);
return 0;
}


char* text1 = "Hello World2. <audio src=\"here\"> Some text</audio> This is the second sentence";

void TestTest(int control)
@@ -1227,7 +1230,6 @@ void TestTest(int control)
//CharsetToUnicode("ISO-8859-4");
//CharsetToUnicode("ISCII");

test4();
return;

if(control==2)

+ 6
- 8
src/options.cpp View File

@@ -20,7 +20,7 @@

#include "wx/wx.h"
#include "wx/fileconf.h"
#include "sys/stat.h"
#include <sys/stat.h>
#include "speech.h"

#ifdef PLATFORM_WINDOWS
@@ -36,10 +36,8 @@ extern void strncpy0(char *to,const char *from, int size);
extern int GetNumeric(wxTextCtrl *t);
extern void SetNumeric(wxTextCtrl *t, int value);
extern int samplerate;
extern char path_home[120]; // .speak directory in user's HOME
extern char voice_name[40];

wxString basedir;
wxString path_spectload;
wxString path_spectload2;
wxString path_pitches;
@@ -53,7 +51,7 @@ wxString path_modifiervoice;
wxString path_dir1;
int option_speed=160;

char path_dsource[120];
char path_dsource[sizeof(path_home)+20];

BEGIN_EVENT_TABLE(Options, wxDialog)
EVT_BUTTON(wxID_SAVE,Options::OnCommand)
@@ -110,7 +108,7 @@ void Options::OnCommand(wxCommandEvent& event)

void ConfigSetPaths()
{//==================
// set paths from wxStrings
// set c_string paths from wxStrings
strncpy0(path_source,path_phsource.mb_str(wxConvLocal),sizeof(path_source)-1);
strcat(path_source,"/");

@@ -123,6 +121,7 @@ void ConfigInit()
{//==============
long value;
wxString string;
wxString basedir;
const char *path_base;
#ifdef PLATFORM_WINDOWS
@@ -133,7 +132,7 @@ void ConfigInit()
{
wxString RegVal;
pRegKey->QueryValue(_T("Path"),RegVal);
strcpy(buf,RegVal.mb_str(wxConvLocal));
strncpy0(buf,RegVal.mb_str(wxConvLocal),sizeof(buf));
path_base = buf;
}
else
@@ -156,7 +155,7 @@ void ConfigInit()
#endif
WavegenInit(value,0);

pConfig->Read(_T("/basedir"),&basedir,wxString(path_base,wxConvLocal));
basedir = wxString(path_base,wxConvLocal); // this is only used to set defaults for other paths if they are not in the config file
pConfig->Read(_T("/spectload"),&path_spectload,basedir+_T("/phsource"));
pConfig->Read(_T("/spectload2"),&path_spectload2,basedir+_T("/phsource"));
pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch"));
@@ -183,7 +182,6 @@ void ConfigSave(int exit)
#ifndef PLATFORM_WINDOWS
pConfig->Write(_T("/samplerate"),samplerate);
#endif
pConfig->Write(_T("/basedir"),basedir);
pConfig->Write(_T("/spectload"),path_spectload);
pConfig->Write(_T("/spectload2"),path_spectload2);
pConfig->Write(_T("/pitchpath"),path_pitches);

+ 2
- 2
src/options.h View File

@@ -40,8 +40,8 @@ extern wxString path_dictsource;
extern wxString path_modifiervoice;
extern wxString path_dir1;

extern char path_source[80];
extern char path_dsource[120];
extern char path_source[sizeof(path_home)+20];
extern char path_dsource[sizeof(path_home)+20];

extern int option_speed;


+ 128
- 3
src/readclause.cpp View File

@@ -34,6 +34,7 @@
#include "synthesize.h"
#include "translate.h"

#include <locale.h>
#define N_XML_BUF 256

espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant);
@@ -151,7 +152,131 @@ const int param_defaults[N_SPEECH_PARAM] = {
};


#ifdef PLATFORM_RISCOS
#ifdef NEED_WCHAR_FUNCTIONS

// additional Latin characters beyond the Latin1 character set
#define MAX_WALPHA 0x233
// indexed by character - 0x100
// 0=not alphabetic, 0xff=lower case, other=value to add to upper case to convert to lower case
static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120
0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220
1,0xff, 1,0xff }; // 230

// use ctype.h functions for Latin1 (character < 0x100)
int iswalpha(int c)
{
if(c < 0x100)
return(isalpha(c));
if(c > MAX_WALPHA)
return(0);
return(walpha_tab[c-0x100]);
}

int iswdigit(int c)
{
if(c < 0x100)
return(isdigit(c));
return(0);
}

int iswalnum(int c)
{
if(iswdigit(c))
return(1);
return(iswalpha(c));
}

int towlower(int c)
{
int x;
if(c < 0x100)
return(tolower(c));
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
return(c); // already lower case
return(c + x); // convert to lower case
}

int towupper(int c)
{
// check whether the previous character code is the upper-case equivalent of this character
if(tolower(c-1) == c)
return(c-1); // yes, use it
return(c); // no
}

int iswupper(int c)
{
int x;
if(c < 0x100)
return(isupper(c));
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
return(0);
return(1);
}

int iswlower(int c)
{
if(c < 0x100)
return(islower(c));
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
return(0);
return(1);
}

int iswspace(int c)
{
if(c < 0x100)
return(isspace(c));
return(0);
}

int iswpunct(int c)
{
if(c < 0x100)
return(ispunct(c));
return(0);
}

const wchar_t *wcschr(const wchar_t *str, int c)
{
while(*str != 0)
{
if(*str == c)
return(str);
str++;
}
return(NULL);
}

const int wcslen(const wchar_t *str)
{
int ix=0;

while(*str != 0)
{
ix++;
}
return(ix);
}

float wcstod(const wchar_t *str, wchar_t **tailptr)
{
int ix;
@@ -395,8 +520,8 @@ static int LoadSoundFile(const char *fname, int index)
int *ip;
int length;
char fname_temp[100];
char fname2[200];
char command[150];
char fname2[sizeof(path_home)+13+40];
char command[sizeof(fname2)+sizeof(fname2)+30];

if(fname == NULL)
fname = soundicon_tab[index].filename;

+ 24
- 7
src/speak.cpp View File

@@ -24,19 +24,23 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef PLATFORM_DOS
#ifdef PLATFORM_WINDOWS
#include <windows.h>
#include <winreg.h>
#else
#include <unistd.h>
#endif
#endif

#ifndef NEED_GETOPT
#include <getopt.h>
#endif
#include <time.h>
#include <signal.h>
#include <locale.h>
#include "sys/stat.h"
#include <sys/stat.h>

#include "speak_lib.h"
#include "voice.h"
@@ -46,7 +50,8 @@



char path_home[120];
char path_home[N_PATH_HOME]; // this is the espeak-data directory

char wavefile[120];
int (* uri_callback)(int, const char *, const char *) = NULL;
int (* phoneme_callback)(const char *) = NULL;
@@ -225,11 +230,11 @@ static void init_path(void)
unsigned long size;
unsigned long var_type;
char *env;
unsigned char buf[100];
unsigned char buf[sizeof(path_home)-12];

if((env = getenv("ESPEAK_DATA_PATH")) != NULL)
if(((env = getenv("ESPEAK_DATA_PATH")) != NULL) && ((strlen(env)+12) < sizeof(path_home)))
{
sprintf(path_home,"%s/espeak-data",env);
sprintf(path_home,"%s\\espeak-data",env);
if(GetFileLength(path_home) == -2)
return; // an espeak-data directory exists
}
@@ -242,6 +247,9 @@ static void init_path(void)

sprintf(path_home,"%s\\espeak-data",buf);
#else
#ifdef PLATFORM_DOS
strcpy(path_home,PATH_ESPEAK_DATA);
#else
// char *env;
// if((env = getenv("ESPEAK_DATA_PATH")) != NULL)
// {
@@ -256,6 +264,7 @@ static void init_path(void)
strcpy(path_home,PATH_ESPEAK_DATA);
}
#endif
#endif
}


@@ -553,14 +562,22 @@ int main (int argc, char **argv)

if(flag_compile)
{
#ifdef PLATFORM_DOS
char path_dsource[sizeof(path_home)+20];
strcpy(path_dsource,path_home);
path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end
strcat(path_dsource,"dictsource\\");
CompileDictionary(path_dsource,dictionary_name,NULL,NULL);
#else
#ifdef PLATFORM_WINDOWS
char path_dsource[120];
char path_dsource[sizeof(path_home)+20];
strcpy(path_dsource,path_home);
path_dsource[strlen(path_home)-11] = 0; // renove "espeak-data" from the end
path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end
strcat(path_dsource,"dictsource\\");
CompileDictionary(path_dsource,dictionary_name,NULL,NULL);
#else
CompileDictionary(NULL,dictionary_name,NULL,NULL);
#endif
#endif
exit(0);
}

+ 4
- 4
src/speak_lib.cpp View File

@@ -30,7 +30,7 @@

#include "speech.h"

#include "sys/stat.h"
#include <sys/stat.h>
#ifndef PLATFORM_WINDOWS
#include <unistd.h>
#endif
@@ -63,7 +63,7 @@ t_espeak_callback* synth_callback = NULL;
int (* uri_callback)(int, const char *, const char *) = NULL;
int (* phoneme_callback)(const char *) = NULL;

char path_home[120];
char path_home[N_PATH_HOME]; // this is the espeak-data directory

voice_t voicedata;
voice_t *voice = &voicedata;
@@ -285,7 +285,7 @@ static void init_path(const char *path)
unsigned long size;
unsigned long var_type;
char *env;
unsigned char buf[100];
unsigned char buf[sizeof(path_home)-13];

if(path != NULL)
{
@@ -309,7 +309,7 @@ static void init_path(const char *path)
sprintf(path_home,"%s\\espeak-data",buf);

#else
char *env;
// char *env;

if(path != NULL)
{

+ 2
- 118
src/speak_riscos.cpp View File

@@ -129,122 +129,6 @@ static const char *help_text =
"\t If <language> is omitted, then list all voices.\n";


// additional Latin characters beyond the Latin1 character set
#define MAX_WALPHA 0x233
// indexed by character - 0x100
// 0=not alphabetic, 0xff=lower case, other=value to add to upper case to convert to lower case
static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120
0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220
1,0xff, 1,0xff }; // 230

// use ctype.h functions for Latin1 (character < 0x100)
int iswalpha(int c)
{
if(c < 0x100)
return(isalpha(c));
if(c > MAX_WALPHA)
return(0);
return(walpha_tab[c-0x100]);
}

int iswdigit(int c)
{
if(c < 0x100)
return(isdigit(c));
return(0);
}

int iswalnum(int c)
{
if(iswdigit(c))
return(1);
return(iswalpha(c));
}

int towlower(int c)
{
int x;
if(c < 0x100)
return(tolower(c));
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
return(c); // already lower case
return(c + x); // convert to lower case
}

int iswupper(int c)
{
int x;
if(c < 0x100)
return(isupper(c));
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
return(0);
return(1);
}

int iswlower(int c)
{
if(c < 0x100)
return(islower(c));
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
return(0);
return(1);
}

int iswspace(int c)
{
if(c < 0x100)
return(isspace(c));
return(0);
}

int iswpunct(int c)
{
if(c < 0x100)
return(ispunct(c));
return(0);
}

const wchar_t *wcschr(const wchar_t *str, int c)
{
while(*str != 0)
{
if(*str == c)
return(str);
str++;
}
return(NULL);
}

const int wcslen(const wchar_t *str)
{
int ix=0;

while(*str != 0)
{
ix++;
}
return(ix);
}


int GetFileLength(const char *filename)
{//====================================
int length=0;
@@ -284,7 +168,7 @@ void ReadVoiceNames2(char *directory)
_kernel_swi_regs regs;
_kernel_oserror *error;
char buf[80];
char directory2[80];
char directory2[sizeof(path_home)+100];

regs.r[0] = 10;
regs.r[1] = (int)directory;
@@ -324,7 +208,7 @@ void ReadVoiceNames2(char *directory)

void ReadVoiceNames()
{//===================
char directory[80];
char directory[sizeof(path_home)+10];

for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++)
voice_names[n_voice_files] = NULL;

+ 3
- 2
src/speech.h View File

@@ -87,9 +87,10 @@ int GetFileLength(const char *filename);
char *Alloc(int size);
void Free(void *ptr);

#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern void strncpy0(char *to,const char *from, int size);
extern char path_home[];
extern const char *version_string;
extern const int version_phdata;
extern void strncpy0(char *to,const char *from, int size);


+ 1
- 1
src/synth_mbrola.cpp View File

@@ -116,7 +116,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans)

int size;
FILE *f_in;
char path[150];
char path[sizeof(path_home)+15];

mbrola_name[0] = 0;
if(mbrola_voice == NULL)

+ 3
- 3
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.28.01 17.Jul.07";
const char *version_string = "1.28.03 30.Jul.07";
const int version_phdata = 0x012801;

int option_device_number = -1;
@@ -79,7 +79,7 @@ static int ReadPhFile(char **ptr, const char *fname)
FILE *f_in;
char *p;
unsigned int length;
char buf[200];
char buf[sizeof(path_home)+40];

sprintf(buf,"%s%c%s",path_home,PATHSEP,fname);
length = GetFileLength(buf);
@@ -604,7 +604,7 @@ int SelectPhonemeTableName(const char *name)
void LoadConfig(void)
{//==================
// Load configuration file, if one exists
char buf[130];
char buf[sizeof(path_home)+10];
FILE *f;
int ix;
char c1;

+ 1
- 0
src/tr_languages.cpp View File

@@ -288,6 +288,7 @@ Translator *SelectTranslator(const char *name)


case L('h','r'): // Croatian
case L('b','s'): // Bosnian
case L('s','r'): // Serbian
{
static int stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 };

+ 2
- 3
src/translate.cpp View File

@@ -1594,7 +1594,7 @@ int Translator::TranslateChar(char *ptr, int prev_in, unsigned int c, unsigned i
new_c = langopts.replacement_chars[ix];
break;
}
if((word >> 16) == tolower(next_in))
if((word >> 16) == (unsigned int)tolower(next_in))
{
new_c = langopts.replacement_chars[ix];
ignore_next = 1;
@@ -1616,10 +1616,9 @@ int Translator::TranslateChar(char *ptr, int prev_in, unsigned int c, unsigned i
*insert = c2;
new_c &= 0xffff;
}
#ifndef PLATFORM_RISCOS
if(upper_case)
new_c = towupper(new_c);
#endif
return(new_c);
}


+ 1
- 1
src/transldlg.cpp View File

@@ -247,7 +247,7 @@ void TranslDlg::ReadVoice()
{//========================
wxString path;
wxString filename;
char fname[130];
char fname[sizeof(path_home)+10];

sprintf(fname,"%s/voices",path_home);
path = wxFileSelector(_T("Load voice"),wxString(fname,wxConvLocal),_T(""),_T(""),_T("*"),wxOPEN);

+ 8
- 7
src/voices.cpp View File

@@ -59,7 +59,7 @@ int formant_rate[9]; // values adjusted for actual sample rate


#define DEFAULT_LANGUAGE_PRIORITY 5
#define N_VOICES_LIST 100
#define N_VOICES_LIST 150
static int n_voices_list = 0;
static espeak_VOICE *voices_list[N_VOICES_LIST];
static int len_path_voices;
@@ -226,11 +226,12 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
// Read a Voice file, allocate a VOICE_DATA and set data from the
// file's language, gender, name lines

char linebuf[120];
char linebuf[80];
char vname[80];
char vgender[80];
char vlanguage[80];
char languages[300]; // allow space for several alternate language names and priorities
char fname_buf[sizeof(path_home)+15];


unsigned int len;
@@ -249,9 +250,9 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
// check whether the mbrola speech data is present for this voice
memcpy(vname,&leafname[3],3);
vname[3] = 0;
sprintf(linebuf,"%s/mbrola/%s",path_home,vname);
sprintf(fname_buf,"%s/mbrola/%s",path_home,vname);

if(GetFileLength(linebuf) <= 0)
if(GetFileLength(fname_buf) <= 0)
return(0);
}
#endif
@@ -534,7 +535,7 @@ voice_t *LoadVoice(const char *vname, int control)
char phonemes_name[40];
char *language_type;
char buf[200];
char path_voices[140];
char path_voices[sizeof(path_home)+12];
char langname[4];

int stress_amps[8];
@@ -1327,7 +1328,7 @@ void GetVoices(const char *path)
FILE *f_voice;
espeak_VOICE *voice_data;
int ftype;
char fname[140];
char fname[sizeof(path_home)+100];

#ifdef PLATFORM_RISCOS
#else
@@ -1500,7 +1501,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
int ix;
static espeak_VOICE *voices[N_VOICES_LIST];
char selected_voice_id[80];
char path_voices[130];
char path_voices[sizeof(path_home)+12];

// free previous voice list data
if((voice_selected != NULL) && (voice_selected->identifier != NULL))

+ 3
- 3
src/vowelchart.cpp View File

@@ -35,11 +35,11 @@
#include "phoneme.h"
#include "synthesize.h"
#include "translate.h"
#include "options.h"

/* Read a file of vowel symbols and f1,f2 formants, and produce a vowel diagram
*/
extern wxString path_phsource;
extern char path_source[];
extern char voice_name[];

extern char *spects_data;
@@ -458,8 +458,8 @@ void MakeVowelLists(void)
SPECT_SEQ *seq;
frame_t *frame;
int match_level;
char dirname[100];
char fname[120];
char dirname[sizeof(path_source)+20];
char fname[sizeof(dirname)+40];

progress = new wxProgressDialog(_T("Vowel charts"),_T(""),n_phoneme_tables);


+ 4
- 3
src/wave.cpp View File

@@ -100,11 +100,11 @@ static void init_buffer()
SHOW("init_buffer > myRead=0x%x, myWrite=0x%x, BUFFER_LENGTH=0x%x, myReadPosition = myWritePosition = 0\n", (int)myRead, (int)myWrite, BUFFER_LENGTH);
}

static int get_used_mem()
static unsigned int get_used_mem()
{
char* aRead = myRead;
char* aWrite = myWrite;
int used = 0;
unsigned int used = 0;

assert ((aRead >= myBuffer)
&& (aRead <= myBuffer + BUFFER_LENGTH)
@@ -129,12 +129,13 @@ static int get_used_mem()

static void start_stream()
{
PaError err;
SHOW_TIME("start_stream");

my_stream_could_start=0;
mInCallbackFinishedState = false;

PaError err = Pa_StartStream(pa_stream);
err = Pa_StartStream(pa_stream);
SHOW("start_stream > Pa_StartStream=%d (%s)\n", err, Pa_GetErrorText(err));
#if USE_PORTAUDIO == 19

+ 2
- 0
src/wave.h View File

@@ -1,7 +1,9 @@
#ifndef WAVE_H
#define WAVE_H

#ifndef PLATFORM_DOS
#include "stdint.h"
#endif

extern int option_device_number;


+ 10
- 9
windows/espeakedit/src_copy/speech.h View File

@@ -26,17 +26,17 @@

// comment this out when compiling the "speak" process
//#define SPECT_EDITOR
#include <windows.h>
#define PLATFORM_WINDOWS
#define __WIN32__
#define mkdir(p1,p2) mkdir(p1)
#define PLATFORM_WINDOWS
#define __WIN32__
#define mkdir(p1,p2) mkdir(p1)

#define PATHSEP '\\'
#define USE_PORTAUDIO
//#define USE_NANOSLEEP
#define __cdecl
#define ESPEAK_API
#define ESPEAK_API
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data"

typedef unsigned short USHORT;
@@ -72,8 +72,9 @@ int GetFileLength(const char *filename);
char *Alloc(int size);
void Free(void *ptr);

#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern const char *version_string;
extern const int version_phdata;
extern void strncpy0(char *to,const char *from, int size);
extern char path_home[];
extern const int version_phdata;
extern const char *version_string;

+ 4
- 3
windows/windows_cmd/src/speech.h View File

@@ -75,9 +75,10 @@ char *Alloc(int size);
void Free(void *ptr);


extern void strncpy0(char *to,const char *from, int size);
extern char path_home[];
#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern const int version_phdata;
extern const char *version_string;
extern const int version_phdata;
extern void strncpy0(char *to,const char *from, int size);


+ 39
- 37
windows/windows_dll/src/speak_lib.h View File

@@ -1,12 +1,12 @@
#ifndef SPEAK_LIB_H
#define SPEAK_LIB_H
/***************************************************************************
* Copyright (C) 2006 by Jonathan Duddington *
* [email protected] *
* Copyright (C) 2005 to 2007 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* the Free Software Foundation; either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -15,9 +15,8 @@
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* along with this program; if not, see: *
* <http://www.gnu.org/licenses/>. *
***************************************************************************/


@@ -29,14 +28,12 @@

#include <stdio.h>


#define ESPEAK_LIB_REVISION 2
#define ESPEAK_API_REVISION 2
/*
Revision 2
Added parameter "options" to eSpeakInitialize()

*/

/********************/
/* Initialization */
/********************/
@@ -49,7 +46,8 @@ typedef enum {
espeakEVENT_MARK, // Mark
espeakEVENT_PLAY, // Audio element
espeakEVENT_END, // End of sentence
espeakEVENT_MSG_TERMINATED // End of message
espeakEVENT_MSG_TERMINATED, // End of message
espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize()
} espeak_EVENT_TYPE;


@@ -63,7 +61,7 @@ typedef struct {
int sample; // sample id (internal use)
void* user_data; // pointer supplied by the calling program
union {
int number; // used for WORD and SENTENCE events
int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic.
const char *name; // used for MARK and PLAY events. UTF8 string
} id;
} espeak_EVENT;
@@ -146,7 +144,7 @@ typedef enum {
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path);
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options);
/* Must be called before any synthesis functions are called.
output: the audio data can either be played by eSpeak or passed back by the SynthCallback function.

@@ -154,7 +152,10 @@ ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, cons

path: The directory which contains the espeak-data directory, or NULL for the default location.

Returns: sample rate in Hz
options: bit 0: 1=allow espeakEVENT_PHONEME events.


Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR).
*/

typedef int (t_espeak_callback)(short*, int, espeak_EVENT*);
@@ -162,7 +163,7 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
/* Must be called before any synthesis functions are called.
This specifies a function in the calling program which is called when a buffer of
speech sound data has been produced.
@@ -180,7 +181,8 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events);
sometimes be zero (which does NOT indicate end of synthesis).

events: an array of espeak_EVENT items which indicate word and sentence events, and
also the occurance if <mark> and <audio> elements within the text.
also the occurance if <mark> and <audio> elements within the text. The list of
events is terminated by an event of type = 0.


Callback returns: 0=continue synthesis, 1=abort synthesis.
@@ -189,7 +191,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*));
void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*));
/* This function may be called before synthesis functions are used, in order to deal with
<audio> tags. It specifies a callback function which is called when an <audio> element is
encountered and allows the calling program to indicate whether the sound file which
@@ -229,7 +231,7 @@ int UriCallback(int type, const char *uri, const char *base);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
espeak_ERROR espeak_Synth(const void *text,
size_t size,
unsigned int position,
espeak_POSITION_TYPE position_type,
@@ -266,7 +268,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,

espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored.

espeakPHONEMES Text within [[ ]] is treated as phonemes codes (in espeak's Hirschenbaum encoding).
espeakPHONEMES Text within [[ ]] is treated as phonemes codes (in espeak's Hirshenbaum encoding).

espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then
this pause is suppressed.
@@ -285,7 +287,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text,
espeak_ERROR espeak_Synth_Mark(const void *text,
size_t size,
const char *index_mark,
unsigned int end_position,
@@ -309,7 +311,7 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text,
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
espeak_ERROR espeak_Key(const char *key_name);
/* Speak the name of a keyboard key.
Currently this just speaks the "key_name" as given

@@ -322,7 +324,7 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
espeak_ERROR espeak_Char(wchar_t character);
/* Speak the name of the given character

Return: EE_OK: operation achieved
@@ -362,7 +364,7 @@ typedef enum {
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative);
espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative);
/* Sets the value of the specified parameter.
relative=0 Sets the absolute value of the parameter.
relative=1 Sets a relative value of the parameter.
@@ -372,9 +374,9 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu

espeakVOLUME: volume in range 0-100 0=silence

espeakPITCH: base pitch in Hz
espeakPITCH: base pitch, range 0-100. 50=normal

espeakRANGE: pitch range in Hz
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal

espeakPUNCTUATION: which punctuation characters to announce:
value in espeak_PUNCT_TYPE (none, all, some),
@@ -396,7 +398,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current);
int espeak_GetParameter(espeak_PARAMETER parameter, int current);
/* current=0 Returns the default value of the specified parameter.
current=1 Returns the current value of the specified parameter, as set by SetParameter()
*/
@@ -404,7 +406,7 @@ ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
/* Specified a list of punctuation characters whose names are to be spoken when the
value of the Punctuation parameter is set to "some".

@@ -419,7 +421,7 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
void espeak_SetPhonemeTrace(int value, FILE *stream);
/* Controls the output of phoneme symbols for the text
value=0 No phoneme output (default)
value=1 Output the translated phoneme symbols for the text
@@ -431,7 +433,7 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log);
void espeak_CompileDictionary(const char *path, FILE *log);
/* Compile pronunciation dictionary for a language which corresponds to the currently
selected voice. The required voice should be selected before calling this function.

@@ -481,7 +483,7 @@ typedef struct {
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec);
const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec);
/* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers.
The list is terminated by a NULL pointer

@@ -493,7 +495,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name);
espeak_ERROR espeak_SetVoiceByName(const char *name);
/* Searches for a voice with a matching "name" field. Language is not considered.
"name" is a UTF8 string.

@@ -506,7 +508,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec);
espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec);
/* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following
fields may be set:

@@ -526,7 +528,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void);
espeak_VOICE *espeak_GetCurrentVoice(void);
/* Returns the espeak_VOICE data for the currently selected voice.
This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s>
*/
@@ -534,7 +536,7 @@ ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Cancel(void);
espeak_ERROR espeak_Cancel(void);
/* Stop immediately synthesis and audio output of the current text. When this
function returns, the audio output is fully stopped and the synthesizer is ready to
synthesize a new message.
@@ -547,14 +549,14 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API int espeak_IsPlaying(void);
int espeak_IsPlaying(void);
/* Returns 1 if audio is played, 0 otherwise.
*/

#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Synchronize(void);
espeak_ERROR espeak_Synchronize(void);
/* This function returns when all data have been spoken.
Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
@@ -563,7 +565,7 @@ ESPEAK_API espeak_ERROR espeak_Synchronize(void);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API espeak_ERROR espeak_Terminate(void);
espeak_ERROR espeak_Terminate(void);
/* last function to be called.
Return: EE_OK: operation achieved
EE_INTERNAL_ERROR.
@@ -573,7 +575,7 @@ ESPEAK_API espeak_ERROR espeak_Terminate(void);
#ifdef __cplusplus
extern "C"
#endif
ESPEAK_API const char *espeak_Info(void* ptr);
const char *espeak_Info(void* ptr);
/* Returns the version number string.
The parameter is for future use, and should be set to NULL
*/

+ 4
- 3
windows/windows_dll/src/speech.h View File

@@ -76,9 +76,10 @@ char *Alloc(int size);
void Free(void *ptr);


extern void strncpy0(char *to,const char *from, int size);
extern char path_home[];
#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern const int version_phdata;
extern const char *version_string;
extern const int version_phdata;
extern void strncpy0(char *to,const char *from, int size);


+ 4
- 3
windows/windows_sapi/src/speech.h View File

@@ -80,9 +80,10 @@ char *Alloc(int size);
void Free(void *ptr);


extern void strncpy0(char *to,const char *from, int size);
extern char path_home[];
#define N_PATH_HOME 120
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory

extern const int version_phdata;
extern const char *version_string;
extern const int version_phdata;
extern void strncpy0(char *to,const char *from, int size);


Loading…
Cancel
Save