The code portability will be provided through the autotools build system. Any additional portability code will be provided in the top-level source structure along side the other code (e.g. `src/compat`).master
@@ -1,11 +0,0 @@ | |||
CC = gcc | |||
CFLAGS += -g3 -Wall -O0 | |||
all: espeak-phoneme-data | |||
espeak-phoneme-data: espeak-phoneme-data.c | |||
$(CC) $(CFLAGS) -o $@ $< | |||
clean: | |||
rm -f espeak-phoneme-data |
@@ -1,18 +0,0 @@ | |||
espeak-utils | |||
============ | |||
A utility to convert the phonindex, phontab and phondata to | |||
big-endian form if necessary. | |||
* espeak-phoneme-data | |||
This is the little-endian to big-endian conversion tool. It uses an | |||
external file (by default called 'phondata-manifest') in order to convert | |||
the phondata file. | |||
The 'phondata-manifest' file is produced by espeakedit when it compiles | |||
the phoneme data. If it is not present here, find it in the espeak-data directory. | |||
NOTE: | |||
The format of espeak-data/phondata changed in eSpeak version 1.47. The utility | |||
has been modified for this. [jonsd] |
@@ -1,460 +0,0 @@ | |||
// 20.02.13 Add samplerate 4-bytes at start of phondata | |||
// 14.09.10 Recognize long and short frames in phondata | |||
// 02.09.10 Fix: Q sections were omitted from the converted phondata | |||
// 13.08.10 jonsd: Added Q lines. Use Address to set the displacement in phondata file. | |||
// 13.02.10 jonsd: Changed for eSpeak version 1.43 | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <ctype.h> | |||
#include <sys/types.h> | |||
#include <sys/stat.h> | |||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | |||
#define IS_BIG_ENDIAN 1 | |||
#else | |||
#define IS_BIG_ENDIAN 0 | |||
#endif | |||
#if IS_BIG_ENDIAN | |||
# define SWAP_USHORT(val) ((unsigned short) ( \ | |||
(unsigned short) ((unsigned short) (val) >> 8) | \ | |||
(unsigned short) ((unsigned short) (val) << 8))) | |||
# define SWAP_UINT(val) ((unsigned int) ( \ | |||
(((unsigned int) (val) & (unsigned int) 0x000000ffU) << 24) | \ | |||
(((unsigned int) (val) & (unsigned int) 0x0000ff00U) << 8) | \ | |||
(((unsigned int) (val) & (unsigned int) 0x00ff0000U) >> 8) | \ | |||
(((unsigned int) (val) & (unsigned int) 0xff000000U) >> 24))) | |||
#else | |||
# define SWAP_USHORT(val) (val) | |||
# define SWAP_UINT(val) (val) | |||
#endif | |||
#define N_PHONEME_TAB_NAME 32 | |||
// This is a new format for eSpeak 1.43 | |||
typedef struct { | |||
unsigned int mnemonic; // 1st char is in the l.s.byte | |||
unsigned int phflags; // bits 16-19 place of articulation | |||
unsigned short program; | |||
unsigned char code; // the phoneme number | |||
unsigned char type; // phVOWEL, phPAUSE, phSTOP etc | |||
unsigned char start_type; | |||
unsigned char end_type; | |||
unsigned char std_length; // for vowels, in mS/2; for phSTRESS, the stress/tone type | |||
unsigned char length_mod; // a length_mod group number, used to access length_mod_tab | |||
} PHONEME_TAB; | |||
// This is a new format for eSpeak 1.41 | |||
#define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer | |||
typedef struct { // 64 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb | |||
unsigned char klatt_ap[7]; // Klatt parallel amplitude | |||
unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2 | |||
unsigned char spare; // pad to multiple of 4 bytes | |||
} frame_t; // with extra Klatt parameters for parallel resonators | |||
typedef struct { // 44 bytes | |||
short frflags; | |||
short ffreq[7]; | |||
unsigned char length; | |||
unsigned char rms; | |||
unsigned char fheight[8]; | |||
unsigned char fwidth[6]; // width/4 f0-5 | |||
unsigned char fright[3]; // width/4 f0-2 | |||
unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3 | |||
unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew | |||
} frame_t2; | |||
#define N_SEQ_FRAMES 25 | |||
typedef struct { | |||
short length; | |||
unsigned char n_frames; | |||
unsigned char sqflags; | |||
frame_t frame[N_SEQ_FRAMES]; | |||
} SPECT_SEQ; | |||
void swap_phondata (const char *infile, const char *outfile, | |||
const char *manifest); | |||
void swap_phonindex (const char *infile, const char *outfile); | |||
void swap_phontab (const char *infile, const char *outfile); | |||
void usage (const char *program_name); | |||
int xread; // prevent compiler warning from fread() | |||
int GetFileLength(const char *filename) | |||
{//==================================== | |||
struct stat statbuf; | |||
if(stat(filename,&statbuf) != 0) | |||
return(0); | |||
if((statbuf.st_mode & S_IFMT) == S_IFDIR) | |||
// if(S_ISDIR(statbuf.st_mode)) | |||
return(-2); // a directory | |||
return(statbuf.st_size); | |||
} // end of GetFileLength | |||
int main (int argc, char *argv[]) | |||
{//============================== | |||
const char *indir = "/usr/share/espeak-data"; | |||
const char *outdir = "."; | |||
const char *manifest = "phondata-manifest"; | |||
char *f1, *f2; | |||
if (argc > 4) | |||
usage (argv[0]); | |||
if (argc > 1) { | |||
if (strcmp (argv[1], "-h") == 0 || | |||
strcmp (argv[1], "--help") == 0) | |||
usage (argv[0]); | |||
indir = argv[1]; | |||
} | |||
if (argc > 2) | |||
outdir = argv[2]; | |||
if (argc > 3) | |||
manifest = argv[3]; | |||
f1 = (char *) malloc (strlen (indir) + 20); | |||
if (f1 == NULL) { | |||
fprintf (stderr, "Unable to allocate memory\n"); | |||
exit (1); | |||
} | |||
f2 = (char *) malloc (strlen (outdir) + 20); | |||
if (f2 == NULL) { | |||
fprintf (stderr, "Unable to allocate memory\n"); | |||
exit (1); | |||
} | |||
#if IS_BIG_ENDIAN | |||
printf ("Host seems to be big-endian ..\n"); | |||
#else | |||
printf ("Host seems to be little-endian ..\n"); | |||
#endif | |||
printf ("Reading from: %s\n", indir); | |||
sprintf (f1, "%s/phondata", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
printf ("Processing phondata ..\n"); | |||
swap_phondata (f1, f2, manifest); | |||
if(GetFileLength(f1) != GetFileLength(f2)) | |||
{ | |||
fprintf(stderr, "Error: phondata length is different from the original\n"); | |||
exit(1); | |||
} | |||
sprintf (f1, "%s/phondata", outdir); | |||
rename (f2, f1); | |||
sprintf (f1, "%s/phontab", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
printf ("Processing phontab ..\n"); | |||
swap_phontab (f1, f2); | |||
sprintf (f1, "%s/phontab", outdir); | |||
rename (f2, f1); | |||
sprintf (f1, "%s/phonindex", indir); | |||
sprintf (f2, "%s/temp_1", outdir); | |||
printf ("Processing phonindex ..\n"); | |||
swap_phonindex (f1, f2); | |||
sprintf (f1, "%s/phonindex", outdir); | |||
rename (f2, f1); | |||
free (f1); | |||
free (f2); | |||
printf ("Done.\n"); | |||
return 0; | |||
} // end of main | |||
void swap_phondata (const char *infile, const char *outfile, | |||
const char *manifest) | |||
{//========================================================== | |||
FILE *in, *mfest, *out; | |||
int displ; | |||
int displ_out; | |||
int errorflag_displ = 0; // only report the first displ mismatch error | |||
char line[1024]; | |||
unsigned char buf_4[4]; | |||
in = fopen (infile, "rb"); | |||
if (in == NULL) { | |||
fprintf (stderr, "Unable to read from file %s\n", infile); | |||
exit (1); | |||
} | |||
mfest = fopen (manifest, "rb"); | |||
if (mfest == NULL) { | |||
fprintf (stderr, "Unable to read from file %s\n", manifest); | |||
exit (1); | |||
} | |||
out = fopen (outfile, "wb"); | |||
if (out == NULL) { | |||
fprintf (stderr, "Unable to open file %s for writing\n", outfile); | |||
exit (1); | |||
} | |||
xread = fread(buf_4, 4, 1, in); // version number | |||
fwrite(buf_4, 4, 1, out); | |||
xread = fread(buf_4, 4, 1, in); // sample rate | |||
fwrite(buf_4, 4, 1, out); | |||
while (fgets (line, sizeof(line), mfest)) | |||
{ | |||
if(!isupper(line[0])) continue; | |||
sscanf(&line[2],"%x",&displ); | |||
fseek(in, displ, SEEK_SET); | |||
fflush(out); | |||
displ_out = ftell(out); | |||
if((errorflag_displ==0) && (displ != displ_out)) | |||
{ | |||
fprintf(stderr, "Length error at the line before: %s", line); | |||
errorflag_displ = 1; | |||
} | |||
if (line[0] == 'S') { | |||
SPECT_SEQ buf_spect; | |||
size_t frame_start; | |||
int n; | |||
xread = fread(&buf_spect, 4, 1, in); | |||
buf_spect.length = (short) SWAP_USHORT (buf_spect.length); | |||
fwrite(&buf_spect, 4, 1, out); | |||
for (n = 0; n < buf_spect.n_frames; n++) { | |||
int k; | |||
frame_start = ftell(in); | |||
xread = fread(&buf_spect.frame[0], sizeof(frame_t), 1, in); | |||
buf_spect.frame[0].frflags = (short) | |||
SWAP_USHORT (buf_spect.frame[0].frflags); | |||
// Changed for eSpeak 1.41 | |||
for (k = 0; k < 7; k++) { | |||
buf_spect.frame[0].ffreq[k] = (short) | |||
SWAP_USHORT (buf_spect.frame[0].ffreq[k]); | |||
} | |||
// is this a long or a short frame? | |||
if(buf_spect.frame[0].frflags & FRFLAG_KLATT) | |||
{ | |||
fwrite(&buf_spect.frame[0], sizeof(frame_t), 1, out); | |||
fseek(in, frame_start + sizeof(frame_t), SEEK_SET); | |||
} | |||
else | |||
{ | |||
fwrite(&buf_spect.frame[0], sizeof(frame_t2), 1, out); | |||
fseek(in, frame_start + sizeof(frame_t2), SEEK_SET); | |||
} | |||
} | |||
} | |||
else if (line[0] == 'W') { | |||
long pos; | |||
int length; | |||
char *wave_data; | |||
xread = fread (buf_4, 4, 1, in); | |||
fwrite (buf_4, 4, 1, out); | |||
length = buf_4[1] * 256 + buf_4[0]; | |||
wave_data = (char *) malloc (length); | |||
if (wave_data == NULL) { | |||
fprintf (stderr, "Memory allocation error\n"); | |||
exit (1); | |||
} | |||
xread = fread (wave_data, 1, length, in); | |||
fwrite (wave_data, 1, length, out); | |||
pos = ftell (in); | |||
while((pos & 3) != 0) { | |||
fgetc (in); | |||
pos++; | |||
} | |||
pos = ftell (out); | |||
while((pos & 3) != 0) { | |||
fputc (0, out); | |||
pos++; | |||
} | |||
free (wave_data); | |||
} | |||
else if (line[0] == 'E') { | |||
char env_buf[128]; | |||
xread = fread (env_buf, 1, 128, in); | |||
fwrite (env_buf, 1, 128, out); | |||
} | |||
else if (line[0] == 'Q') { | |||
unsigned char pb[4]; | |||
unsigned length; | |||
char *buf; | |||
xread = fread (pb, 1, 4, in); | |||
fwrite (pb, 1, 4, out); | |||
length = (pb[2] << 8) + pb[3]; // size in words | |||
length *= 4; | |||
buf = (char *) malloc (length); | |||
xread = fread (buf, length, 1, in); | |||
fwrite (buf, length, 1, out); | |||
free (buf); | |||
} | |||
} | |||
fclose (in); | |||
fclose (out); | |||
fclose (mfest); | |||
} // end of swap_phondata | |||
void swap_phonindex (const char *infile, const char *outfile) | |||
{//========================================================== | |||
FILE *in, *out; | |||
char buf_4[4]; | |||
unsigned short val; | |||
in = fopen (infile, "rb"); | |||
if (in == NULL) { | |||
fprintf (stderr, "Unable to read from file %s\n", infile); | |||
exit (1); | |||
} | |||
out = fopen (outfile, "wb"); | |||
if (out == NULL) { | |||
fprintf (stderr, "Unable to open file %s for writing\n", outfile); | |||
exit (1); | |||
} | |||
xread = fread (buf_4, 4, 1, in); // skip first 4 bytes | |||
fwrite(buf_4, 4, 1, out); | |||
while (! feof (in)) { | |||
size_t n; | |||
n = fread (&val, 2, 1, in); | |||
if (n != 1) | |||
break; | |||
val = SWAP_USHORT (val); | |||
fwrite (&val, 2, 1, out); | |||
} | |||
fclose (in); | |||
fclose (out); | |||
} // end of swap_phonindex | |||
void swap_phontab (const char *infile, const char *outfile) | |||
{//======================================================== | |||
FILE *in, *out; | |||
char buf_8[8]; | |||
int i, n_phoneme_tables; | |||
in = fopen (infile, "rb"); | |||
if (in == NULL) { | |||
fprintf (stderr, "Unable to read from file %s\n", infile); | |||
exit (1); | |||
} | |||
out = fopen (outfile, "wb"); | |||
if (out == NULL) { | |||
fprintf (stderr, "Unable to open file %s for writing\n", outfile); | |||
exit (1); | |||
} | |||
xread = fread (buf_8, 4, 1, in); | |||
fwrite (buf_8, 4, 1, out); | |||
n_phoneme_tables = buf_8[0]; | |||
for (i = 0; i < n_phoneme_tables; i++) { | |||
int n_phonemes, j; | |||
char tab_name[N_PHONEME_TAB_NAME]; | |||
xread = fread (buf_8, 8, 1, in); | |||
fwrite (buf_8, 8, 1, out); | |||
n_phonemes = buf_8[0]; | |||
xread = fread (tab_name, N_PHONEME_TAB_NAME, 1, in); | |||
fwrite (tab_name, N_PHONEME_TAB_NAME, 1, out); | |||
for (j = 0; j < n_phonemes; j++) { | |||
PHONEME_TAB table; | |||
xread = fread (&table, sizeof (PHONEME_TAB), 1, in); | |||
table.mnemonic = SWAP_UINT (table.mnemonic); | |||
table.phflags = SWAP_UINT (table.phflags); | |||
table.program = SWAP_USHORT (table.program); | |||
fwrite (&table, sizeof (PHONEME_TAB), 1, out); | |||
} | |||
} | |||
fclose (in); | |||
fclose (out); | |||
} // end of swap_phontab | |||
void | |||
usage (const char *program_name) | |||
{ | |||
fprintf (stderr, | |||
"This program copies the phontab, phonindex and phondata files from a given\n" | |||
"directory, swapping values to big-endian form if necessary.\n\n" | |||
"Usage:\n" | |||
" %s [INPUT_DIR] [OUTPUT_DIR] [MANIFEST_FILE]\n\n" | |||
"By default, the MANIFEST_FILE used is a file called 'phondata-manifest' in\n" | |||
"the current directory. The default INPUT_DIR is /usr/share/espeak-data and\n" | |||
"OUTPUT_DIR is the current directory.\n", program_name); | |||
exit (1); | |||
} |
@@ -1,61 +0,0 @@ | |||
BINDIR=/usr/bin | |||
INCDIR=/usr/include/espeak | |||
LIBDIR=/usr/lib | |||
DATADIR=espeak-data | |||
RELEASE = 1.28 | |||
BIN_NAME = speak | |||
INSTALL = /usr/bin/install | |||
LN_SF = /bin/ln -sf | |||
MKDIR = mkdir -p | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp | |||
SRCS1=$(speak_SOURCES) | |||
OBJS1=$(patsubst %.cpp,%.o,$(SRCS1)) | |||
LIBS1= | |||
CXXFLAGS=-O2 | |||
all: $(BIN_NAME) | |||
.cpp.o: | |||
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
$(BIN_NAME): $(OBJS1) | |||
$(CXX) -o $@ $(OBJS1) $(LIBS1) | |||
clean: | |||
rm -f *.o *.a *~ | |||
distclean: clean | |||
rm -f $(BIN_NAME) | |||
rm -f $(BIN2_NAME) | |||
rm -f $(LIB_NAME)* | |||
install: all | |||
# Create directories | |||
rm -rf $(DESTDIR)$(DATADIR) | |||
$(MKDIR) $(DESTDIR)$(BINDIR) | |||
$(MKDIR) $(DESTDIR)$(LIBDIR) | |||
$(MKDIR) $(DESTDIR)$(INCDIR) | |||
$(MKDIR) $(DESTDIR)$(DATADIR) | |||
# Install espeak executable | |||
$(INSTALL) -m 755 $(BIN2_NAME) $(DESTDIR)$(BINDIR) | |||
# Install shared library | |||
$(INSTALL) -m 755 $(LIB_NAME).$(LIBTAG) $(DESTDIR)$(LIBDIR) | |||
# Install static library | |||
$(INSTALL) -m 755 $(STATIC_LIB_NAME) $(DESTDIR)$(LIBDIR) | |||
$(LN_SF) $(LIB_NAME).$(LIBTAG) $(DESTDIR)$(LIBDIR)/$(LIB_NAME).$(LIB_VERSION) | |||
$(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(DESTDIR)$(LIBDIR)/$(LIB_NAME) | |||
# Install development headers | |||
$(INSTALL) -pm 644 speak_lib.h $(DESTDIR)$(INCDIR) | |||
# Install data files | |||
cp -prf ../espeak-data/* $(DESTDIR)$(DATADIR) | |||
@@ -1,95 +0,0 @@ | |||
/*************************************************************************** | |||
* 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 3 of the License, or * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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 see: * | |||
* <http://www.gnu.org/licenses/>. * | |||
***************************************************************************/ | |||
#include <sys/types.h> | |||
// conditional compilation options | |||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | |||
#define ARCH_BIG | |||
#endif | |||
#define PLATFORM_DOS | |||
#define NEED_WCHAR_FUNCTIONS | |||
#define NEED_GETOPT | |||
typedef unsigned int uint32_t; | |||
#define PATHSEP '\\' | |||
//#define USE_PORTAUDIO | |||
#define USE_NANOSLEEP | |||
#define __cdecl | |||
#define ESPEAK_API extern "C" | |||
#ifdef LIBRARY | |||
#define USE_ASYNC | |||
//#define USE_MBROLA_LIB | |||
#endif | |||
#ifdef _ESPEAKEDIT | |||
#define USE_ASYNC | |||
#define LOG_FRAMES // write keyframe info to log-espeakedit | |||
#endif | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#ifndef PATH_ESPEAK_DATA | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
#endif | |||
#ifdef PLATFORM_DOS | |||
int iswalpha(int c); | |||
int iswdigit(int c); | |||
int iswalnum(int c); | |||
int towlower(int c); | |||
int iswupper(int c); | |||
int iswlower(int c); | |||
int iswspace(int c); | |||
int iswpunct(int c); | |||
const wchar_t *wcschr(const wchar_t *str, int c); | |||
const int wcslen(const wchar_t *str); | |||
float wcstod(const wchar_t *str, wchar_t **tailptr); | |||
int towupper(int c); | |||
#endif | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, char *string); | |||
#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); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
@@ -1,24 +0,0 @@ | |||
Building speak.exe with djgpp: | |||
1. | |||
unzip the source with the unzip32.exe utility from djgpp. | |||
2. | |||
change into the src directory. | |||
copy the makefile.dj and the speech.h file into the src directory | |||
type in the src directory make -f makefile.dj | |||
3. | |||
copy the speak.exe into the main directory (cp speak.exe ..\speak.exe | |||
Now you can use speak.exe to produce wave-files: | |||
speak -v de -f test.txt -w test.wav | |||
or you can produce phonemes for mbrola: | |||
speak -v mb\mb-de4 -f test.txt >test.pho | |||
speak --voices will list all voices. | |||
Test it and enjoy. |
@@ -1,122 +0,0 @@ | |||
eSpeak - RISCOS Version | |||
======================== | |||
NOTE: The contents of the files in the espeak-dat directory, | |||
and the format of their contents has changed for this version. | |||
Please delete your old espeak-dat directory and replace it | |||
with the new one in this package. | |||
Requirements | |||
============ | |||
RISCOS 3.6 or later with 16 bit sound system enabled. | |||
On my 200MHz StrongArm, it takes 51 sec to process 6m 3s of speech output, | |||
so it will probably run OK on an ARM7 processor also. | |||
Installation and Use | |||
==================== | |||
1. Copy the !eSpeak directory onto your harddrive. | |||
2. To load the Speak module: double-click on !eSpeak. | |||
This sets the <eSpeak$Dir> system variable, and then runs | |||
the "speakmod" file to load the Speak module. | |||
Note, <eSpeak$Dir> refers to the directory that contains the | |||
espeak-dat directory, which contains the speech data. It must | |||
be set before the module is loaded. | |||
3. Example commands: | |||
*help speak | |||
should now show version 3.30 (or whatever is the latest version) | |||
*speak -h | |||
shows the available commands | |||
*speak "this is some text" | |||
speaks the string "this is some text" | |||
*speak -v en-f "this is some text" | |||
speaks with a different voice | |||
*speak -f textfile | |||
speaks the text from file "textfile" | |||
*speak -a30 "this is some text" | |||
speaks more quietly (range 0 to 200) | |||
*speak -s200 "this is some text" | |||
speaks more quickly (200 words per minute) | |||
The improvement in speech quality over Speak v.2 are most clearly | |||
heard when listening through a good sound system (eg. domestic | |||
stereo system) rather than small computer speakers. | |||
4. Adding words to the pronunciation dictionary | |||
The directory "data" contains pronunciation rules and exceptions | |||
lists. To add words, add the word and its pronunciation | |||
phonemes to en_extra and then do the speak command | |||
speak --compile=en | |||
from within the data directory. This will recompile the files: | |||
en_dict in the espeak_dat directory. | |||
Details of the phoneme codes are given in docs.phonemes/html | |||
You can see the translated phoneme codes for a word by | |||
speak -x "word" | |||
Use with Pluto | |||
============== | |||
!Pluto will use the new module if speakmod has already | |||
been run. Pluto's Speak dialog should show the new voices. | |||
If you wish, you can give them more meaningful names by | |||
renaming the files in espeak-dat.voices | |||
To install permanently in Pluto, you can copy "speakmod" into | |||
!Pluto to replace the old speakmod for Speak version 2. | |||
Note that the system variable <eSpeak$dir> must be set before | |||
speakmod is loaded. This can be done by either: | |||
a. Making sure that !eSpeak is seen by the RISC OS filer | |||
before Pluto is run. | |||
or | |||
b. Putting the line: | |||
Set eSpeak$dir <obey$dir> | |||
in the !Pluto.!Run file and copying the espeak-dat directory | |||
into !Pluto | |||
Re-select the voices that Pluto uses. These may have changed. | |||
To Re-Compile the Speak Module | |||
============================== | |||
Download the "speak-*-source.zip" package and follow the instruction | |||
int the ReadMe file in the "riscos" directory. | |||
Problems | |||
======== | |||
1. It uses the sound system directly rather than through the | |||
SharedSound module, would allow the system volume control apply | |||
to speech. | |||
2. There is no session management implemented, so changes to speed, | |||
amplitude etc by one user of the module will affect the others. | |||
@@ -1,90 +0,0 @@ | |||
# Project: Speak3 | |||
# Toolflags: | |||
CCflags = -c -C90 -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
C++flags = -c -depend !Depend -IC: -throwback -zM -memaccess -L22-S22-L41 | |||
Linkflags = -rmf -c++ -o $@ | |||
ObjAsmflags = -throwback -NoCache -depend !Depend | |||
CMHGflags = | |||
LibFileflags = -c -o $@ | |||
Squeezeflags = -o $@ | |||
# Final targets: | |||
@.speakmod: @.o.speak_riscos @.o.compiledict @.o.dictionary \ | |||
@.o.intonation @.o.readclause @.o.setlengths @.o.synthdata \ | |||
@.o.synthesize @.o.translate @.o.tr_languages @.o.numbers \ | |||
@.o.synth_mbrola @.o.phonemelist \ | |||
@.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.wavegen @.o.tr_languages \ | |||
@.o.voices @.o.phonemelist @.o.assemb @.o.cmhgfile | |||
# User-editable dependencies: | |||
# Static dependencies: | |||
@.o.speak_riscos: @.c.speak_riscos | |||
cc $(ccflags) -o @.o.speak_riscos @.c.speak_riscos | |||
@.o.compiledict: @.c.compiledict | |||
cc $(ccflags) -o @.o.compiledict @.c.compiledict | |||
@.o.dictionary: @.c.dictionary | |||
cc $(ccflags) -o @.o.dictionary @.c.dictionary | |||
@.o.intonation: @.c.intonation | |||
cc $(ccflags) -o @.o.intonation @.c.intonation | |||
@.o.numbers: @.c.numbers | |||
cc $(ccflags) -o @.o.numbers @.c.numbers | |||
@.o.phonemelist: @.c.phonemelist | |||
cc $(ccflags) -o @.o.phonemelist @.c.phonemelist | |||
@.o.readclause: @.c.readclause | |||
cc $(ccflags) -o @.o.readclause @.c.readclause | |||
@.o.setlengths: @.c.setlengths | |||
cc $(ccflags) -o @.o.setlengths @.c.setlengths | |||
@.o.synthdata: @.c.synthdata | |||
cc $(ccflags) -o @.o.synthdata @.c.synthdata | |||
@.o.synth_mbrola: @.c.synth_mbrola | |||
cc $(ccflags) -o @.o.synth_mbrola @.c.synth_mbrola | |||
@.o.synthesize: @.c.synthesize | |||
cc $(ccflags) -o @.o.synthesize @.c.synthesize | |||
@.o.translate: @.c.translate | |||
cc $(ccflags) -o @.o.translate @.c.translate | |||
@.o.tr_languages: @.c.tr_languages | |||
cc $(ccflags) -o @.o.tr_languages @.c.tr_languages | |||
@.o.voices: @.c.voices | |||
cc $(ccflags) -o @.o.voices @.c.voices | |||
@.o.wavegen: @.c.wavegen | |||
cc $(ccflags) -o @.o.wavegen @.c.wavegen | |||
@.o.assemb: @.s.assemb | |||
objasm $(objasmflags) -from @.s.assemb -to @.o.assemb | |||
# Dynamic dependencies: | |||
o.wavegen: c.wavegen | |||
o.wavegen: h.StdAfx | |||
o.wavegen: h.speak_lib | |||
o.wavegen: h.speech | |||
o.wavegen: h.phoneme | |||
o.wavegen: h.synthesize | |||
o.wavegen: h.voice | |||
o.wavegen: h.sintab | |||
o.speak_riscos: c.speak_riscos | |||
o.speak_riscos: C:h.kernel | |||
o.speak_riscos: h.speech | |||
o.speak_riscos: h.speak_lib | |||
o.speak_riscos: h.phoneme | |||
o.speak_riscos: h.synthesize | |||
o.speak_riscos: h.voice | |||
o.speak_riscos: h.translate | |||
o.synthdata: c.synthdata | |||
o.synthdata: h.StdAfx | |||
o.synthdata: h.wctype | |||
o.synthdata: h.speak_lib | |||
o.synthdata: h.speech | |||
o.synthdata: h.phoneme | |||
o.synthdata: h.synthesize | |||
o.synthdata: h.voice | |||
o.synthdata: h.translate | |||
o.synthdata: h.wave | |||
o.synthdata: C:h.stdint |
@@ -1,14 +0,0 @@ | |||
These files are for a version for RISC OS computers (formerly | |||
known as "Acorn" computers), which use ARM processors. | |||
To compile the speakmod module for RISC OS. | |||
1. Run the "copysource" script to copy the source files from the | |||
general source.src directory into the riscos.cpp and | |||
riscos.h directories. These already contain the RISC OS | |||
specific files. | |||
2. Run the Makefile to compile and link and produce the | |||
"speakmod" module. | |||
I used the AcornC/C++ compiler. |
@@ -1,22 +0,0 @@ | |||
copy <obey$dir>.^.src.compiledict/cpp <obey$dir>.c.compiledict fq~c | |||
copy <obey$dir>.^.src.dictionary/cpp <obey$dir>.c.dictionary fq~c | |||
copy <obey$dir>.^.src.intonation/cpp <obey$dir>.c.intonation fq~c | |||
copy <obey$dir>.^.src.numbers/cpp <obey$dir>.c.numbers fq~c | |||
copy <obey$dir>.^.src.phonemelist/cpp <obey$dir>.c.phonemelist fq~c | |||
copy <obey$dir>.^.src.readclause/cpp <obey$dir>.c.readclause fq~c | |||
copy <obey$dir>.^.src.setlengths/cpp <obey$dir>.c.setlengths fq~c | |||
copy <obey$dir>.^.src.synthdata/cpp <obey$dir>.c.synthdata fq~c | |||
copy <obey$dir>.^.src.synth_mbrola/cpp <obey$dir>.c.synth_mbrola fq~c | |||
copy <obey$dir>.^.src.synthesize/cpp <obey$dir>.c.synthesize fq~c | |||
copy <obey$dir>.^.src.translate/cpp <obey$dir>.c.translate fq~c | |||
copy <obey$dir>.^.src.tr_languages/cpp <obey$dir>.c.tr_languages fq~c | |||
copy <obey$dir>.^.src.voices/cpp <obey$dir>.c.voices fq~c | |||
copy <obey$dir>.^.src.wavegen/cpp <obey$dir>.c.wavegen fq~c | |||
copy <obey$dir>.^.src.phoneme/h <obey$dir>.h.phoneme fq~c | |||
copy <obey$dir>.^.src.sintab/h <obey$dir>.h.sintab fq~c | |||
copy <obey$dir>.^.src.speak_lib/h <obey$dir>.h.speak_lib fq~c | |||
copy <obey$dir>.^.src.synthesize/h <obey$dir>.h.synthesize fq~c | |||
copy <obey$dir>.^.src.translate/h <obey$dir>.h.translate fq~c | |||
copy <obey$dir>.^.src.voice/h <obey$dir>.h.voice fq~c | |||
copy <obey$dir>.^.src.wave/h <obey$dir>.h.wave fq~c |
@@ -1,45 +0,0 @@ | |||
; h.RegNames | |||
; | |||
; This header file for GETting from assembler source defines register names | |||
; | |||
;************************************************************************** | |||
; | |||
; Use the RN directive to define ARM register names | |||
; | |||
r0 RN 0 | |||
r1 RN 1 | |||
r2 RN 2 | |||
r3 RN 3 | |||
r4 RN 4 | |||
r5 RN 5 | |||
r6 RN 6 | |||
r7 RN 7 | |||
r8 RN 8 | |||
r9 RN 9 | |||
r10 RN 10 | |||
sl RN 10 | |||
r11 RN 11 | |||
fp RN 11 | |||
r12 RN 12 | |||
ip RN 12 | |||
r13 RN 13 | |||
sp RN 13 | |||
r14 RN 14 | |||
lr RN r14 ; Note: register names can be defined from each other | |||
r15 RN 15 | |||
pc RN r15 | |||
; Use the FN directive to define floating point register names | |||
f0 FN 0 | |||
f1 FN 1 | |||
f2 FN 2 | |||
f3 FN 3 | |||
f4 FN 4 | |||
f5 FN 5 | |||
f6 FN 6 | |||
f7 FN 7 | |||
END | |||
@@ -1,3 +0,0 @@ | |||
// This is a dummy file. | |||
// A file of this name is needed on Windows | |||
@@ -1,68 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
// Header file for RISCOS build | |||
// comment this out when compiling the "speak" process | |||
//#define SPECT_EDITOR | |||
#define PATHSEP '.' | |||
#define USE_ASSEMBLER_1 | |||
#define PLATFORM_RISCOS | |||
#define NEED_WCHAR_FUNCTIONS | |||
#define __cdecl // define as null, needed for Borland compiler | |||
#define ESPEAK_API | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef int DOUBLEX; | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, char *string); | |||
#ifdef PLATFORM_WINDOWS | |||
#define N_PATH_HOME 220 | |||
#else | |||
#define N_PATH_HOME 150 | |||
#endif | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
extern int GetFileLength(const char *filename); | |||
extern char *Alloc(int size); | |||
extern void Free(void *ptr); | |||
const int wcslen(const wchar_t *str); | |||
extern "C" { | |||
// optional assembler routine to speed-up Wavegen() | |||
int AddSineWaves(int waveph, int h_switch_sign, int maxh, int *harmspect); | |||
} | |||
#define strcasecmp(a,b) strcmp(a,b) | |||
@@ -1,3 +0,0 @@ | |||
const wchar_t *wcschr(const wchar_t *str, int c); | |||
@@ -1,12 +0,0 @@ | |||
typedef int wchar_t; | |||
int iswalpha(int c); | |||
int iswdigit(int c); | |||
int iswalnum(int c); | |||
int towlower(int c); | |||
int towupper(int c); | |||
int iswupper(int c); | |||
int iswlower(int c); | |||
int iswspace(int c); | |||
int iswpunct(int c); | |||
@@ -1,127 +0,0 @@ | |||
; 32 bit version | |||
; SWI numbers | |||
OS_File * &8 | |||
OS_Module * &1e | |||
XOS_AddCallBack * &20054 | |||
XOS_RemoveCallBack * &2005f | |||
GET h.RegNames | |||
EXPORT DMA_Handler | |||
EXPORT AddSineWaves | |||
IMPORT |callback_entry| | |||
IMPORT |sound_entry| | |||
IMPORT |sin_tab| | |||
AREA Assemb , CODE, READONLY | |||
; pointers to data items | |||
ADR_callback_entry | |||
DCD callback_entry | |||
ADR_sound_entry | |||
DCD sound_entry | |||
ADR_sin_tab | |||
DCD sin_tab | |||
DMA_Handler | |||
;********** | |||
; fill the sound buffer of the linear sound handler | |||
; preserve r11,r12,r13 (fp,ip,sp) | |||
MOV r5,ip ; need to save ip | |||
MOV ip,sp ;set up a stack | |||
STMFD sp!, {fp,ip,lr} | |||
STMFD sp!, {r5} | |||
MOV r12,r0 ; put the module_data word in r12 | |||
BL sound_entry ; call C function through veneer in CMHG | |||
; returns with r0=1 set callback, r1=module_data address | |||
CMP r0,#1 | |||
BNE DMA_return | |||
;--------- | |||
TEQ pc,pc | |||
MRSEQ r8, CPSR ; 32bit version of call SWI from IRQ mode | |||
MOVNE r8,pc | |||
ORR r9,r8,#3 | |||
MSREQ CPSR_c, r9 | |||
TEQNEP r9,#0 | |||
NOP | |||
STR r14, [r13,#-4]! | |||
;--------- | |||
; r1=module_data address | |||
LDR r0,ADR_callback_entry ; call C function through CMHG veneer | |||
SWI XOS_AddCallBack | |||
;--------- | |||
LDR r14, [r13],#4 ; 32bit version of 'reenter original processor mode' | |||
TEQ pc,pc | |||
MSREQ CPSR_c, r8 | |||
TEQNEP r8,#0 | |||
NOP | |||
;--------- | |||
DMA_return | |||
LDMFD sp!,{ip} | |||
LDMFD sp, {fp,sp,pc} | |||
AddSineWaves | |||
;total += AddSineWaves(waveph, h_switch_sign, maxh, harmspect); | |||
; using this assembler routine increases overall speed by about 7.5% | |||
; define the USE_ASSEMBLER_1 macro in speech.h to enable this routine | |||
; input: r0=waveph r1=h_switch_sign r2=maxh r3=harmspect | |||
; local: r5=sin_tab r6=total r7=h r8=theta | |||
; return(total) | |||
MOV ip,sp | |||
STMFD sp!, {r5-r9,ip,lr} | |||
LDR r5,ADR_sin_tab | |||
MOV r6,#0 ; total = 0 | |||
MOV r0,r0,LSL #16 | |||
MOV r8,r0 ; theta = waveph | |||
MOV r7,#1 | |||
as1 | |||
MOV ip,r8,LSR #21 | |||
LDR r9,[r5,ip,LSL #1] ; sin_tab[theta >> 5] | |||
MOV r9,r9,LSL #16 | |||
MOV r9,r9,ASR #16 | |||
LDR ip,[r3,r7,LSL #2] ; harmspect[h] | |||
MLA r6,r9,ip,r6 | |||
ADD r8,r8,r0 ; theta += waveph | |||
ADD r7,r7,#1 ; h++ | |||
CMP r7,r1 | |||
BLE as1 | |||
RSB r6,r6,#0 ; change sign | |||
as2 | |||
MOV ip,r8,LSR #21 | |||
LDR r9,[r5,ip,LSL #1] ; sin_tab[theta >> 5] | |||
MOV r9,r9,LSL #16 | |||
MOV r9,r9,ASR #16 | |||
LDR ip,[r3,r7,LSL #2] ; harmspect[h] | |||
MLA r6,r9,ip,r6 | |||
ADD r8,r8,r0 ; theta += waveph | |||
ADD r7,r7,#1 ; h++ | |||
CMP r7,r2 | |||
BLE as2 | |||
MOV r0,r6 | |||
LDMFD sp, {r5-r9,sp,pc} | |||
END |
@@ -1,22 +0,0 @@ | |||
initialisation-code: user_init | |||
title-string: Speak | |||
help-string: Speak 3.40 Text to Speech (32 bit) | |||
swi-chunk-base-number: &4ad80 | |||
swi-handler-code: swi_handler | |||
swi-decoding-table: Speak, | |||
Ready,X,Misc,Say,Sayw,Stop,X,Pitch,Speed,WordGap,PitchRange,X,X,Volume | |||
vector-handlers: callback_entry/callback_handler | |||
vector-handlers: sound_entry/sound_handler | |||
command-keyword-table: command_handler | |||
SAY(min-args: 1, max-args: 255, | |||
help-text: "Says English string <string>\n"), | |||
SAYW(min-args: 1, max-args: 255, | |||
help-text: "Says English string <string>\n"), | |||
SPEAK(min-args: 1, max-args: 255, | |||
help-text: "Says English string <string>\n") |
@@ -1,56 +0,0 @@ | |||
eSpeak is a compact, multi-language, open source | |||
text-to-speech synthesizer. | |||
This version is a SAPI5 compatible Windows speech engine | |||
which should work with screen readers such as Jaws, | |||
NVDA, and Window-Eyes. | |||
There is also a version of eSpeak which can be run as a | |||
command-line program. This is in eSpeak\command-line. | |||
Read docs\commands.html for details. | |||
Voices and Languages | |||
==================== | |||
The available Voices can be seen as files in the directory | |||
espeak-edit/voices. | |||
To change which eSpeak Voices are available through | |||
Windows, re-run the installer and specify up to six | |||
Voice files which you want to use. | |||
The tone of a Voice can be modified by adding a variant | |||
name after the Voice name, eg: | |||
pt+f3 | |||
The available variants are: | |||
male: +m1 +m2 +m3 +m4 +m5 | |||
female: +f1 +f2 +f3 +f4 | |||
other effects: +croak +wisper | |||
These variants are defined by text files in | |||
espeak-edit/voices/!v | |||
Updates | |||
======= | |||
The eSpeak project homepage is at: | |||
http://espeak.sourceforge.net/ | |||
Comments, corrections, and other feedback and assistance | |||
is sought from native speakers of the various languages | |||
because I've no idea how they are supposed to sound :-) | |||
To make changes to pronunciation rules and exceptions, | |||
or to change the sounds of phonemes, or just to experiment | |||
with speech synthesis, download the "espeakedit" program. | |||
License | |||
======= | |||
This software is licencsed under the GNU General Public License | |||
version3. See file: License.txt. |
@@ -1,14 +0,0 @@ | |||
Compiling the espeakedit program. | |||
You need the "espeakedit" download, | |||
Copy the source files from the "espeakedit" download into directory "src", | |||
but do not overwrite files: | |||
speech.h | |||
StdAfx.h | |||
There are copies of these in directory "src_copy". | |||
Use the "Unicode Release" build configuration. | |||
This links with the "Unicode Release" version of the wxWidgets libraries. |
@@ -1,715 +0,0 @@ | |||
# Microsoft Developer Studio Project File - Name="minimal" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Application" 0x0101 | |||
CFG=minimal - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeakedit.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeakedit.mak" CFG="minimal - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "minimal - Win32 DLL Universal Unicode Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Universal Unicode Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Universal Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Universal Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Unicode Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Unicode Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 DLL Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Universal Unicode Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Universal Unicode Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Universal Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Universal Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Unicode Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Unicode Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Release" (based on "Win32 (x86) Application") | |||
!MESSAGE "minimal - Win32 Debug" (based on "Win32 (x86) Application") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
MTL=midl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "minimal - Win32 DLL Universal Unicode Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswunivudll" | |||
# PROP BASE Intermediate_Dir "vc_mswunivudll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswunivudll" | |||
# PROP Intermediate_Dir "vc_mswunivudll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivudll\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivudll\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmswuniv28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Unicode Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswunivuddll" | |||
# PROP BASE Intermediate_Dir "vc_mswunivuddll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswunivuddll" | |||
# PROP Intermediate_Dir "vc_mswunivuddll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivuddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivuddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmswuniv28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswunivdll" | |||
# PROP BASE Intermediate_Dir "vc_mswunivdll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswunivdll" | |||
# PROP Intermediate_Dir "vc_mswunivdll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswuniv" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivdll\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswuniv" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivdll\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswuniv" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswuniv" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmswuniv28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswunivddll" | |||
# PROP BASE Intermediate_Dir "vc_mswunivddll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswunivddll" | |||
# PROP Intermediate_Dir "vc_mswunivddll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswunivd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswunivd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswunivd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmswuniv28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Unicode Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswudll" | |||
# PROP BASE Intermediate_Dir "vc_mswudll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswudll" | |||
# PROP Intermediate_Dir "vc_mswudll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswudll\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswudll\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmsw28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Unicode Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswuddll" | |||
# PROP BASE Intermediate_Dir "vc_mswuddll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswuddll" | |||
# PROP Intermediate_Dir "vc_mswuddll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswuddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswuddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmsw28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswdll" | |||
# PROP BASE Intermediate_Dir "vc_mswdll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswdll" | |||
# PROP Intermediate_Dir "vc_mswdll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\msw" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswdll\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_dll\msw" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswdll\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\msw" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\msw" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 DLL Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswddll" | |||
# PROP BASE Intermediate_Dir "vc_mswddll\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswddll" | |||
# PROP Intermediate_Dir "vc_mswddll\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_dll\mswd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswddll\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_dll\mswd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "WXUSINGDLL" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
# ADD LINK32 wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_dll" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Universal Unicode Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswunivu" | |||
# PROP BASE Intermediate_Dir "vc_mswunivu\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswunivu" | |||
# PROP Intermediate_Dir "vc_mswunivu\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivu\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivu\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmswuniv28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Universal Unicode Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswunivud" | |||
# PROP BASE Intermediate_Dir "vc_mswunivud\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswunivud" | |||
# PROP Intermediate_Dir "vc_mswunivud\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivud\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivud\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmswuniv28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Universal Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswuniv" | |||
# PROP BASE Intermediate_Dir "vc_mswuniv\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswuniv" | |||
# PROP Intermediate_Dir "vc_mswuniv\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswuniv" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswuniv\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswuniv" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswuniv\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswuniv" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswuniv" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmswuniv28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Universal Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswunivd" | |||
# PROP BASE Intermediate_Dir "vc_mswunivd\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswunivd" | |||
# PROP Intermediate_Dir "vc_mswunivd\minimal" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswunivd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivd\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswunivd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswunivd\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswunivd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmswuniv28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmswuniv28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Unicode Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_mswu" | |||
# PROP BASE Intermediate_Dir "vc_mswu\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_mswu" | |||
# PROP Intermediate_Dir "vc_mswu\minimal" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswu\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W3 /GR /O2 /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswu\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28u_core.lib wxbase28u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmsw28u_core.lib wxbase28u.lib wxmsw28u_adv.lib winmm.lib PAStaticWMME.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib wxmsw28u_html.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /out:"espeakedit.exe" /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Unicode Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswud" | |||
# PROP BASE Intermediate_Dir "vc_mswud\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswud" | |||
# PROP Intermediate_Dir "vc_mswud\minimal" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswud\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswud\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28ud_core.lib wxbase28ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmsw28ud_core.lib wxbase28ud.lib wxmsw28ud_adv.lib wxmsw28ud_html.lib winmm.lib PAStaticWMME.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib PAStaticWMME.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "vc_msw" | |||
# PROP BASE Intermediate_Dir "vc_msw\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "vc_msw" | |||
# PROP Intermediate_Dir "vc_msw\minimal" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\msw" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_msw\minimal.pdb" /FD /EHsc /c | |||
# ADD CPP /nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\msw" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_msw\minimal.pdb" /FD /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\msw" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\msw" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "__WXMSW__" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmsw28_core.lib winmm.lib PAStaticWMME.lib wxbase28.lib wxmsw28_adv.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ELSEIF "$(CFG)" == "minimal - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "vc_mswd" | |||
# PROP BASE Intermediate_Dir "vc_mswd\minimal" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "vc_mswd" | |||
# PROP Intermediate_Dir "vc_mswd\minimal" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswd\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD CPP /nologo /MDd /W4 /Gm /GR /Zi /Od /I ".\..\..\lib\vc_lib\mswd" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /Fd"vc_mswd\minimal.pdb" /FD /GZ /EHsc /c | |||
# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_WINDOWS" /d "NOPCH" | |||
# ADD RSC /l 0x409 /i ".\..\..\lib\vc_lib\mswd" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_WINDOWS" /d "NOPCH" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
# ADD LINK32 wxmsw28d_core.lib winmm.lib PAStaticWMME.lib wxbase28d.lib wxmsw28d_adv.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /debug /machine:I386 /libpath:".\..\..\lib\vc_lib" | |||
!ENDIF | |||
# Begin Target | |||
# Name "minimal - Win32 DLL Universal Unicode Release" | |||
# Name "minimal - Win32 DLL Universal Unicode Debug" | |||
# Name "minimal - Win32 DLL Universal Release" | |||
# Name "minimal - Win32 DLL Universal Debug" | |||
# Name "minimal - Win32 DLL Unicode Release" | |||
# Name "minimal - Win32 DLL Unicode Debug" | |||
# Name "minimal - Win32 DLL Release" | |||
# Name "minimal - Win32 DLL Debug" | |||
# Name "minimal - Win32 Universal Unicode Release" | |||
# Name "minimal - Win32 Universal Unicode Debug" | |||
# Name "minimal - Win32 Universal Release" | |||
# Name "minimal - Win32 Universal Debug" | |||
# Name "minimal - Win32 Unicode Release" | |||
# Name "minimal - Win32 Unicode Debug" | |||
# Name "minimal - Win32 Release" | |||
# Name "minimal - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "" | |||
# Begin Source File | |||
SOURCE=.\sample.rc | |||
# End Source File | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\src\compiledata.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\compiledict.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\debug.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\debug.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\dictionary.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\espeak_command.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\espeak_command.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\espeakedit.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\espeakedit.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\event.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\event.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\extras.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\fifo.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\fifo.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\formantdlg.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\intonation.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\main.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\menus.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\numbers.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\options.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\options.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phoneme.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phonemelist.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio18.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio19.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\prosodydisplay.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\prosodydisplay.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\readclause.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\spect.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\spect.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\spectdisplay.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\spectseq.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\include\speech.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\speech.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synth_mbrola.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthdata.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\transldlg.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voice.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voicedlg.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voices.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\vowelchart.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wave.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wave.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wavegen.cpp | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -1,29 +0,0 @@ | |||
Microsoft Developer Studio Workspace File, Format Version 6.00 | |||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! | |||
############################################################################### | |||
Project: "minimal"=".\espeakedit.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
Global: | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<3> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
@@ -1,149 +0,0 @@ | |||
<html> | |||
<body> | |||
<pre> | |||
<h1>Build Log</h1> | |||
<h3> | |||
--------------------Configuration: minimal - Win32 Unicode Release-------------------- | |||
</h3> | |||
<h3>Command Lines</h3> | |||
Creating command line "rc.exe /l 0x409 /fo"vc_mswu\minimal/sample.res" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /i ".\..\..\samples" /i "\wxWidgets-2.6.2\samples" /d "__WXMSW__" /d "_UNICODE" /d "_WINDOWS" /d "NOPCH" "C:\wxWidgets-2.6.2\samples\sample.rc"" | |||
Creating temporary file "C:\DOCUME~1\JSD1~1.PC0\LOCALS~1\Temp\RSP64.tmp" with contents | |||
[ | |||
/nologo /MD /W4 /GR /O2 /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /Fo"vc_mswu\minimal/" /Fd"vc_mswu\minimal.pdb" /FD /EHsc /c | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledata.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\debug.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\espeak_command.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\espeakedit.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\event.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\extras.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\fifo.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\formantdlg.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\intonation.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\menus.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\numbers.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\options.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\phonemelist.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\prosodydisplay.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\readclause.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\setlengths.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\speak_lib.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\spect.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\spectdisplay.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\spectseq.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\synth_mbrola.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\synthdata.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\synthesize.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\tr_english.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\tr_languages.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\translate.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\transldlg.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\voicedlg.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\voices.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\vowelchart.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\wave.cpp" | |||
"C:\wxWidgets-2.6.2\projects\espeakedit\src\wavegen.cpp" | |||
] | |||
Creating command line "cl.exe @C:\DOCUME~1\JSD1~1.PC0\LOCALS~1\Temp\RSP64.tmp" | |||
Creating temporary file "C:\DOCUME~1\JSD1~1.PC0\LOCALS~1\Temp\RSP65.tmp" with contents | |||
[ | |||
wxmsw28u_core.lib wxbase28u.lib wxmsw28u_adv.lib winmm.lib PAStaticWMME.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /subsystem:windows /incremental:no /pdb:"vc_mswu/espeakedit.pdb" /machine:I386 /out:"espeakedit.exe" /libpath:".\..\..\lib\vc_lib" | |||
".\vc_mswu\minimal\compiledata.obj" | |||
".\vc_mswu\minimal\compiledict.obj" | |||
".\vc_mswu\minimal\debug.obj" | |||
".\vc_mswu\minimal\dictionary.obj" | |||
".\vc_mswu\minimal\espeak_command.obj" | |||
".\vc_mswu\minimal\espeakedit.obj" | |||
".\vc_mswu\minimal\event.obj" | |||
".\vc_mswu\minimal\extras.obj" | |||
".\vc_mswu\minimal\fifo.obj" | |||
".\vc_mswu\minimal\formantdlg.obj" | |||
".\vc_mswu\minimal\intonation.obj" | |||
".\vc_mswu\minimal\menus.obj" | |||
".\vc_mswu\minimal\numbers.obj" | |||
".\vc_mswu\minimal\options.obj" | |||
".\vc_mswu\minimal\phonemelist.obj" | |||
".\vc_mswu\minimal\prosodydisplay.obj" | |||
".\vc_mswu\minimal\readclause.obj" | |||
".\vc_mswu\minimal\setlengths.obj" | |||
".\vc_mswu\minimal\speak_lib.obj" | |||
".\vc_mswu\minimal\spect.obj" | |||
".\vc_mswu\minimal\spectdisplay.obj" | |||
".\vc_mswu\minimal\spectseq.obj" | |||
".\vc_mswu\minimal\synth_mbrola.obj" | |||
".\vc_mswu\minimal\synthdata.obj" | |||
".\vc_mswu\minimal\synthesize.obj" | |||
".\vc_mswu\minimal\tr_english.obj" | |||
".\vc_mswu\minimal\tr_languages.obj" | |||
".\vc_mswu\minimal\translate.obj" | |||
".\vc_mswu\minimal\transldlg.obj" | |||
".\vc_mswu\minimal\voicedlg.obj" | |||
".\vc_mswu\minimal\voices.obj" | |||
".\vc_mswu\minimal\vowelchart.obj" | |||
".\vc_mswu\minimal\wave.obj" | |||
".\vc_mswu\minimal\wavegen.obj" | |||
".\vc_mswu\minimal\sample.res" | |||
] | |||
Creating command line "link.exe @C:\DOCUME~1\JSD1~1.PC0\LOCALS~1\Temp\RSP65.tmp" | |||
<h3>Output Window</h3> | |||
Compiling resources... | |||
Compiling... | |||
compiledata.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
compiledict.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(205) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(218) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(341) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(354) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(379) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(384) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(586) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(615) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(621) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(668) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(670) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(731) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(732) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(733) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(867) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(1195) : warning C4244: '=' : conversion from 'unsigned int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\compiledict.cpp(1197) : warning C4244: '=' : conversion from 'unsigned int' to 'unsigned char', possible loss of data | |||
debug.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
dictionary.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(256) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(398) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(442) : warning C4244: '=' : conversion from 'unsigned int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(458) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(588) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(636) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(875) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(886) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1006) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1066) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1337) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1533) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1534) : warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(1844) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2021) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2422) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2434) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2445) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2514) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2552) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\dictionary.cpp(2557) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data | |||
espeak_command.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
espeakedit.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
event.cpp | |||
C:\wxWidgets-2.6.2\projects\espeakedit\src\speech.h(21) : error C2501: 'xxtest' : missing storage-class or type specifiers | |||
extras.cpp | |||
cl.exe terminated at user request. | |||
</pre> | |||
</body> | |||
</html> |
@@ -1,32 +0,0 @@ | |||
///////////////////////////////////////////////////////////////////////////// | |||
// Name: samples/samples.rc | |||
// Purpose: a standard Win32 .rc file for the wxWindows samples | |||
// Author: Vadim Zeitlin | |||
// Modified by: | |||
// Created: 04.08.03 | |||
// RCS-ID: $Id: sample.rc,v 1.2 2003/08/14 14:08:53 VS Exp $ | |||
// Copyright: (c) 2003 Vadim Zeitlin <[email protected]> | |||
// Licence: wxWindows licence | |||
///////////////////////////////////////////////////////////////////////////// | |||
// this minimal resource file is all what is needed for most of the wxWindows | |||
// samples | |||
// note that the icon used by the Explorer (i.e. the programs icon) is the | |||
// first icon in the executable and the icons are sorted both by their order | |||
// (Win9x) and by alphabetically (!) (NT), so put this icon first and give it | |||
// a name starting with "a" | |||
aaaaaaaa ICON "sample.ico" | |||
// this icon is used with wxFrame::SetIcon() | |||
sample ICON "sample.ico" | |||
// set this to 1 if you don't want to use manifest resource (manifest resource | |||
// is needed to enable visual styles on Windows XP - see docs/msw/winxp.txt | |||
// for more information) | |||
#define wxUSE_NO_MANIFEST 0 | |||
// this is not always needed but doesn't hurt (except making the executable | |||
// very slightly larger): this file contains the standard icons, cursors, ... | |||
#include "wx/msw/wx.rc" | |||
@@ -1,3 +0,0 @@ | |||
// This is a dummy file. | |||
// A file of this name is needed on Windows | |||
@@ -1,72 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
#ifndef SPEECH_H | |||
#define SPEECH_H | |||
#define LOG_FRAMES // write keyframe info to src/log | |||
// comment this out when compiling the "speak" process | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS | |||
#define __WIN32__ | |||
#define mkdir(p1,p2) mkdir(p1) | |||
#define PATHSEP '\\' | |||
#define USE_PORTAUDIO | |||
//#define USE_NANOSLEEP | |||
#define NO_VARIADIC_MACROS | |||
#define __cdecl | |||
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
#endif SPEECH_H |
@@ -1,4 +0,0 @@ | |||
// dummy stdint.h file for Windows | |||
typedef unsigned int uint32_t; |
@@ -1,3 +0,0 @@ | |||
// This is a dummy file. | |||
// A file of this name is needed on Windows | |||
@@ -1,72 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
#ifndef SPEECH_H | |||
#define SPEECH_H | |||
#define LOG_FRAMES // write keyframe info to src/log | |||
// comment this out when compiling the "speak" process | |||
//#define SPECT_EDITOR | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#include <windows.h> | |||
#define PLATFORM_WINDOWS | |||
#define __WIN32__ | |||
#define mkdir(p1,p2) mkdir(p1) | |||
#define PATHSEP '\\' | |||
#define USE_PORTAUDIO | |||
//#define USE_NANOSLEEP | |||
#define NO_VARIADIC_MACROS | |||
#define __cdecl | |||
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
#endif SPEECH_H |
@@ -1,573 +0,0 @@ | |||
; This is the script for "Inno Setup 5" to create the setup_espeak.exe installer for Windows | |||
[Setup] | |||
AppName=eSpeak | |||
AppVerName=eSpeak version 1.48.03 | |||
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). | |||
WindowVisible=yes | |||
DefaultDirName={pf}\eSpeak | |||
DefaultGroupName=eSpeak | |||
OutputBaseFilename=setup_espeak | |||
Compression=lzma | |||
SolidCompression=yes | |||
ShowLanguageDialog=auto | |||
[Icons] | |||
Name: "{group}\TTSApp"; Filename: "{app}\TTSApp.exe"; WorkingDir: "{app}" | |||
[InstallDelete] | |||
Type: files; Name: "{app}\espeak.dll" | |||
Type: files; Name: "{app}\espeak-data\voices\*" | |||
Type: filesandordirs; Name: "{app}\espeak-data\voices\en" | |||
Type: filesandordirs; Name: "{app}\espeak-data\voices\asia" | |||
Type: filesandordirs; Name: "{app}\espeak-data\voices\europe" | |||
Type: filesandordirs; Name: "{app}\espeak-data\voices\other" | |||
Type: filesandordirs; Name: "{app}\espeak-data\voices\test" | |||
Type: filesandordirs; Name: "{app}\docs" | |||
[Dirs] | |||
Name: "{app}\espeak-data\soundicons" | |||
Name: "{app}\espeak-data\mbrola" | |||
[Files] | |||
Source: "espeak_sapi.dll"; DestDir: "{app}"; Flags: regserver promptifolder replacesameversion | |||
Source: "TTSApp.exe"; DestDir:"{app}" | |||
Source: "espeak-data\*"; DestDir: "{app}\espeak-data"; Flags: recursesubdirs | |||
Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs | |||
Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs | |||
Source: "command_line\*"; DestDir: "{app}\command_line" | |||
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme | |||
Source: "License.txt"; DestDir: "{app}"; | |||
Source: "ChangeLog.txt"; DestDir: "{app}"; | |||
[Registry] | |||
Root: HKLM; Subkey: "Software\Microsoft\Speech\PhoneConverters\Tokens\eSpeak"; Flags: deletekey uninsdeletekey | |||
[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: "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" | |||
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: "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" | |||
[CustomMessages] | |||
v1=Select which voices to install | |||
v2=or press Enter to accept defaults | |||
v3=Enter voice names, eg: (for Portuguese) pt, or with a variant, eg: pt+f3 | |||
bs.v1=Odaberite jezik kojeg želite instalirati | |||
bs.v2=ili pritisnite Enter za prihvat zadanih. | |||
bs.v3=Upišite, npr. bs (za Bosanski) ili s varjantom: bs+f3 | |||
fr.v1=Sélectionnez les voix à installer | |||
fr.v2=ou appuyez sur Entrée pour accepter les valeurs par défaut. | |||
fr.v3=Entrez le nom des voix, ex : (pour le Français) fr, ou avec une variante ex : fr+f3 | |||
hr.v1=Odaberite jezik kojeg želite instalirati | |||
hr.v2=ili pritisnite Enter za prihvat zadanih. | |||
hr.v3=Upišite, npr. hr (za Hrvatski) ili s varjantom: hr+f3 | |||
pt.v1=Seleccione as vozes que pretende instalar | |||
pt.v2=ou precione enter para aceitar as predefinidas. | |||
pt.v3=Introduza os nomes das vozes, ex: (Brazil) pt (ou Portugal) pt-pt, ou com outras caracter?sticas, ex: pt+f3 | |||
sr.v1=Molimo vas da odaberete glasove, koje želite da instalirate | |||
sr.v2=ili pritisnite Enter za instalaciju podrazumevanih glasova. | |||
sr.v3=Da odaberete glas, unesite ime glasa kojeg želite instalirati, na primer sr, ili sr+f3 | |||
ne.v1=भित्र्याउन चाहेको आवाजको चयन गर्नु होस् । | |||
ne.v2=अथवा यसमा निर्धारण गरिएको आवाजलाई नै चयन गर्ने हो भने ईन्टर कुञ्जीलाई दबाउनु होस् । | |||
ne.v3=आवाजको नाम प्रविष्टी गर्नु होस् , जस्तै: नेपालीका लागि ne, अथवा स्वरको पनि चयन गर्ने हो भने ne+f3 | |||
hi.v1=स्थापना करने के लिए पसन्दिदा आवाजों को चयन करें । | |||
hi.v2=अगर आप कि चयन इसमें निर्दारित आवाज हि हो तो केवल ईन्टर कुञ्जी दबाए । | |||
hi.v3=आवाज कि नाम प्रविष्टी करें, जैसा कि हिन्दी के लिए hi, और किसि स्वर भि चयन करना चाहते हो तो hi+f3 | |||
[Code] | |||
var | |||
UILanguage: Integer; | |||
UIVoice: String; | |||
Page: TInputQueryWizardPage; | |||
voices_installed: array [0..200] of String; | |||
n_voices_installed: Integer; | |||
const | |||
sEspeak = 'eSpeak-'; | |||
RegVoice1 = 'Software\Microsoft\Speech\Voices\Tokens\eSpeak'; | |||
RegPhConv = 'Software\Microsoft\Speech\PhoneConverters\Tokens'; | |||
function VoiceFromLanguage(language: Integer): String; | |||
var | |||
lang_main: Integer; | |||
begin | |||
lang_main := language and $3ff; | |||
Result := 'en'; | |||
// Translation from microsoft codes to language codes | |||
// Used to set default voices for installation. | |||
case lang_main of | |||
$02: Result := 'bg'; | |||
$03: Result := 'ca'; | |||
$04: Result := 'zh'; | |||
$05: Result := 'cs'; | |||
$06: Result := 'da'; | |||
$07: Result := 'de'; | |||
$08: Result := 'el'; | |||
$09: Result := 'en'; | |||
$0a: Result := 'es-la es-la+m3 es-la+f3'; | |||
$0b: Result := 'fi'; | |||
$0c: Result := 'fr'; | |||
$0e: Result := 'hu'; | |||
$0f: Result := 'is'; | |||
$10: Result := 'it'; | |||
$12: Result := 'ko'; | |||
$13: Result := 'nl'; | |||
$14: Result := 'no'; | |||
$15: Result := 'pl'; | |||
$16: Result := 'pt'; | |||
$18: Result := 'ro'; | |||
$19: Result := 'ru'; | |||
$1a: Result := 'hr'; | |||
$1b: Result := 'sk'; | |||
$1c: Result := 'sq'; | |||
$1d: Result := 'sv'; | |||
$1f: Result := 'tr'; | |||
$20: Result := 'ur'; | |||
$21: Result := 'id'; | |||
$25: Result := 'et'; | |||
$26: Result := 'lv'; | |||
$27: Result := 'lt'; | |||
$29: Result := 'fa'; | |||
$2a: Result := 'vi'; | |||
$2b: Result := 'hy'; | |||
//$2c: Result := 'az'; | |||
$2d: Result := 'eu'; | |||
$2f: Result := 'mk'; | |||
$36: Result := 'af'; | |||
$37: Result := 'kn'; | |||
$39: Result := 'hi'; | |||
//$3a: Result := 'mt'; | |||
$3c: Result := 'ga'; | |||
$3e: Result := 'ms'; | |||
//$3f: Result := 'kk'; | |||
$41: Result := 'sw'; | |||
//$44: Result := 'tt'; | |||
$46: Result := 'pa'; | |||
//$48: Result := 'or'; | |||
$49: Result := 'ta'; | |||
$46: Result := 'pa'; | |||
$4a: Result := 'te'; | |||
$4b: Result := 'kn'; | |||
$4c: Result := 'ml'; | |||
//$4d: Result := 'as'; | |||
//$50: Result := 'mn'; | |||
$52: Result := 'cy'; | |||
//$5e: Result := 'am'; | |||
$61: Result := 'ne'; | |||
//$87: Result := 'rw'; | |||
//$88: Result := 'wo'; | |||
end; | |||
// is there a match on the full language code? | |||
case language of | |||
$80a: Result := 'es-la es-la+f3 es-la+m3'; | |||
$c0a: Result := 'es'; | |||
$816: Result := 'pt-pt es-la'; | |||
$41a: Result := 'hr'; | |||
$81a: Result := 'sr'; | |||
$c1a: Result := 'sr'; | |||
$141a: Result := 'bs'; | |||
end; | |||
end; | |||
function LanguageFromVoice(voice: String): String; | |||
var | |||
value: Integer; | |||
lang1: String; | |||
len: Integer; | |||
begin | |||
value := $409; // default en-us | |||
lang1 := Copy(voice,0,2); | |||
if lang1 = 'mb' then | |||
begin | |||
lang1 := Copy(voice,3,3); | |||
len := Length(voice); | |||
if len > 8 then | |||
lang1 := Copy(voice,8,6); // eg. mb-de4-en, return 'en' | |||
end; | |||
// Used to set the correct Microsoft language code in the registry | |||
// when a SAPI5 voice is installed. | |||
case lang1 of | |||
'af': value := $436; | |||
'am': value := $45e; | |||
'an': value := $40a; // Aragon, use code for Spanish | |||
'as': value := $44d; | |||
'az': value := $42c; | |||
'bg': value := $402; | |||
'bn': value := $445; | |||
'bs': value := $41a; // should be $141a but Jaws crashes on startup | |||
'ca': value := $403; | |||
'cs': value := $405; | |||
'cy': value := $452; | |||
'da': value := $406; | |||
'de': value := $407; | |||
'dv': value := $465; | |||
'el': value := $408; | |||
'en': value := $409; | |||
'es': value := $40a; | |||
'et': value := $425; | |||
'eu': value := $42d; | |||
'fa': value := $429; | |||
'fi': value := $40b; | |||
'fil': value := $464; | |||
'fr': value := $40c; | |||
'ga': value := $83c; | |||
'gd': value := $43c; | |||
'gu': value := $447; | |||
'hi': value := $439; | |||
'hr': value := $41a; | |||
'hu': value := $40e; | |||
'hy': value := $42b; | |||
'id': value := $421; | |||
'is': value := $40f; | |||
'it': value := $410; | |||
'ka': value := $437; | |||
'kk': value := $43f; | |||
'kn': value := $44b; | |||
'ko': value := $412; | |||
'lt': value := $427; | |||
'lv': value := $426; | |||
'mk': value := $42f; | |||
'ml': value := $44c; | |||
'mn': value := $450; | |||
'ms': value := $43e; | |||
'mt': value := $43a; | |||
'my': value := $455; | |||
'ne': value := $461; | |||
'nl': value := $413; | |||
'no': value := $414; | |||
'or': value := $448; | |||
'pa': value := $446; | |||
'pl': value := $415; | |||
'pt': value := $416; | |||
'ro': value := $418; | |||
'ru': value := $419; | |||
'rw': value := $487; | |||
'si': value := $45b; | |||
'sk': value := $41b; | |||
'sl': value := $424; | |||
'sq': value := $41c; | |||
'sr': value := $81a; | |||
'sv': value := $41d; | |||
'sw': value := $441; | |||
'ta': value := $449; | |||
'te': value := $44a; | |||
'tg': value := $45e; // 'am' | |||
'tl': value := $464; | |||
'tn': value := $432; | |||
'tr': value := $41f; | |||
'tt': value := $444; | |||
'ur': value := $420; | |||
'vi': value := $42a; | |||
'wo': value := $488; | |||
'zh': value := $804; | |||
// mbrola voices | |||
'-af': value := $436; | |||
'-br': value := $416; | |||
'-ca': value := $c0c; | |||
'-cr': value := $41a; | |||
'-cz': value := $405; | |||
'-de': value := $407; | |||
'-en': value := $809; | |||
'-es': value := $40a; | |||
'-fr': value := $40c; | |||
'-gr': value := $408; | |||
'-hu': value := $40e; | |||
'-ic': value := $40f; | |||
'-in': value := $439; | |||
'-ir': value := $429; | |||
'-it': value := $410; | |||
'-mx': value := $80a; | |||
'-nl': value := $413; | |||
'-pl': value := $415; | |||
'-pt': value := $816; | |||
'-ro': value := $418; | |||
'-sw': value := $41d; | |||
'-us': value := $409; | |||
'-vz': value := $200a; | |||
end; | |||
// check for specific voices | |||
case voice of | |||
'pt-pt': value := $816; | |||
end; | |||
Result := Format('%X',[value]); | |||
end; | |||
// is the language number already in a PhoneConvertor ? | |||
function CheckPhoneConvertors(Lcode: String): Integer; | |||
var | |||
Convertors: TArrayOfString; | |||
ix: Integer; | |||
len: Integer; | |||
s1: String; | |||
s2: String; | |||
sLangs: String; | |||
begin | |||
Result := 0; | |||
len := Length(Lcode); | |||
if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, RegPhConv, Convertors) then | |||
begin | |||
for ix := 0 to GetArrayLength(Convertors) - 1 do | |||
begin | |||
s1 := RegPhConv + '\' + Convertors[ix] + '\Attributes'; | |||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', sLangs) then | |||
begin | |||
s2 := Copy(sLangs, 1, len); | |||
if s2 = Lcode then | |||
Result := 1; | |||
if sLangs = Lcode then | |||
Result := 1; | |||
if Pos(';' + Lcode, sLangs) > 0 then | |||
Result := 1; | |||
end; | |||
end; | |||
end; | |||
end; | |||
// ensure the language number is included in a PhoneConvertor | |||
procedure SetPhoneConvertor(Lcode: String); | |||
var | |||
done: Boolean; | |||
s1: String; | |||
sLangs: String; | |||
begin | |||
if CheckPhoneConvertors(Lcode) = 0 then | |||
begin | |||
done := False; | |||
s1 := RegPhConv + '\Universal\Attributes'; | |||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', sLangs) then | |||
begin | |||
done := RegWriteStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', Lcode + ';' + sLangs); | |||
end; | |||
if done = False then | |||
begin | |||
s1 := RegPhConv + '\eSpeak\Attributes'; | |||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', sLangs) = False then | |||
begin | |||
// add 'eSpeak' dummy PhoneConvertor | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE, RegPhConv + '\eSpeak', 'CLSID','{9185F743-1143-4C28-86B5-BFF14F20E5C8}'); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE, RegPhConv + '\eSpeak', 'PhoneMap','- 0001'); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE, s1, 'Language',''); | |||
end; | |||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', sLangs) then | |||
begin | |||
done := RegWriteStringValue(HKEY_LOCAL_MACHINE, s1, 'Language', Lcode + ';' + sLangs); | |||
end; | |||
end; | |||
end; | |||
end; | |||
procedure SetupVoice(Voice: String; Index: Integer); | |||
var | |||
ix: Integer; | |||
RegVoice2: String; | |||
RegVoice2a: String; | |||
VoiceUC: String; | |||
Lcode: String; | |||
begin | |||
Lcode := LanguageFromVoice(Voice); | |||
if Index = 0 then | |||
RegVoice2 := RegVoice1 | |||
else | |||
RegVoice2 := RegVoice1 + Format('_%d',[Index]); | |||
RegVoice2a := RegVoice2 + '\Attributes'; | |||
if Voice = 'default' then | |||
VoiceUC := 'default' | |||
else | |||
VoiceUC := Uppercase(Voice); | |||
// check for duplicate voice names | |||
for ix := 0 to n_voices_installed - 1 do begin | |||
if voices_installed[ix] = VoiceUC then | |||
Exit; | |||
end; | |||
if n_voices_installed < 200 then begin | |||
voices_installed[n_voices_installed] := VoiceUC; | |||
n_voices_installed := n_voices_installed + 1; | |||
end; | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'',sEspeak+VoiceUC); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'CLSID','{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}'); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'Path',ExpandConstant('{app}')); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2,'VoiceName',Voice); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2a,'Name',sEspeak+Voice); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2a,'Gender','Male'); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2a,'Age','Adult'); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2a,'Language',Lcode); | |||
RegWriteStringValue(HKEY_LOCAL_MACHINE,RegVoice2a,'Vendor','http://espeak.sf.net'); | |||
SetPhoneConvertor(Lcode); | |||
end; | |||
procedure CurStepChanged(CurStep: TSetupStep); | |||
var | |||
field: Integer; | |||
Index: Integer; | |||
ix: Integer; | |||
ix2: Integer; | |||
Line: String; | |||
Voice: String; | |||
Voice2: String; | |||
separator: String; | |||
begin | |||
if CurStep = ssPostInstall then | |||
begin | |||
separator := ' '; | |||
Index := 0; | |||
for field := 0 to 4 do begin | |||
Line := Page.Values[field]; | |||
ix := 1; | |||
ix2 := 1; | |||
while ix2 > 0 do begin | |||
ix2 := Pos(separator,Copy(Line,ix,999)); | |||
if ix2 = 0 then | |||
Voice := Copy(Line,ix,999) | |||
else | |||
Voice := Copy(Line,ix,ix2-1); | |||
Voice2 := Trim(Voice); | |||
if Voice2 <> '' then begin | |||
SetUpVoice(Trim(Voice),Index); | |||
Index := Index + 1; | |||
end; | |||
ix := ix + ix2; | |||
end; | |||
end; | |||
end; | |||
end; | |||
procedure InitializeWizard; | |||
var | |||
lang: String; | |||
voice2: String; | |||
uilang: String; | |||
begin | |||
// Create the language selection page | |||
UILanguage := GetUILanguage; | |||
UIVoice := VoiceFromLanguage(UILanguage); | |||
uilang := Format(' (Language code %x)',[UILanguage]); | |||
lang := ActiveLanguage; | |||
Page := CreateInputQueryPage(wpSelectDir,CustomMessage('v1'),CustomMessage('v2')+uilang,CustomMessage('v3')); | |||
// Add items (False means it's not a password edit) | |||
Page.Add('', False); | |||
Page.Add('', False); | |||
Page.Add('', False); | |||
Page.Add('', False); | |||
Page.Add('', False); | |||
// Set initial values (optional) | |||
if UIVoice = 'en' then | |||
voice2 := 'en-us' | |||
else | |||
voice2 := 'en'; | |||
if Pos('+',UIVoice) = 0 then | |||
Page.Values[0] := Format('%s %s',[UIVoice, UIVoice+'+f2']) | |||
else | |||
Page.Values[0] := Format('%s',[UIVoice]); | |||
Page.Values[1] := Format('%s',[voice2]); | |||
n_voices_installed := 0; | |||
end; | |||
procedure ClearRegistry; | |||
var | |||
Index: Integer; | |||
RegVoice2: String; | |||
exists: Boolean; | |||
begin | |||
// remove all espeak voices from the registry | |||
exists := True; | |||
Index := 0; | |||
while exists do begin | |||
if Index = 0 then | |||
RegVoice2 := RegVoice1 | |||
else | |||
RegVoice2 := RegVoice1 + Format('_%d',[Index]); | |||
exists := RegKeyExists(HKEY_LOCAL_MACHINE,RegVoice2); | |||
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE,RegVoice2); | |||
Index := Index + 1; | |||
end; | |||
end; | |||
function InitializeSetup: Boolean; | |||
begin | |||
// remove all espeak voices from the registry | |||
ClearRegistry; | |||
result := True; | |||
end; | |||
function InitializeUninstall: Boolean; | |||
begin | |||
// remove all espeak voices from the registry | |||
ClearRegistry; | |||
result := True; | |||
end; | |||
@@ -1,64 +0,0 @@ | |||
[Setup] | |||
AppName=eSpeakEdit | |||
AppVerName=eSpeakEdit version 1.48.03 | |||
DefaultDirName={pf}\eSpeak | |||
DefaultGroupName=eSpeak | |||
OutputBaseFilename=setup_espeakedit | |||
Compression=lzma | |||
SolidCompression=yes | |||
DirExistsWarning=no | |||
ShowLanguageDialog=auto | |||
[Icons] | |||
Name: "{group}\espeakedit"; Filename: "{app}\espeakedit.exe"; WorkingDir: "{app}"; Flags: runmaximized | |||
Name: "{group}\Uninstall espeakedit"; Filename: "{uninstallexe}" | |||
[InstallDelete] | |||
Type: filesandordirs; Name: "{app}\phsource\vowelcharts" | |||
Type: filesandordirs; Name: "{app}\espeakedit" | |||
[Files] | |||
Source: "espeakedit.exe"; DestDir: "{app}" | |||
;Source: "dictsource\*"; DestDir: "{app}\dictsource"; Flags: recursesubdirs | |||
Source: "espeakedit\*"; DestDir: "{app}\espeakedit"; Flags: recursesubdirs | |||
Source: "phsource\*"; DestDir: "{app}\phsource"; Flags: recursesubdirs | |||
Source: "docs\*"; DestDir: "{app}\docs"; Flags: recursesubdirs | |||
Source: "License.txt"; DestDir: "{app}"; | |||
;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme | |||
[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: "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" | |||
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: "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" | |||
@@ -1,37 +0,0 @@ | |||
#include <speak_lib.h> | |||
#ifdef PLATFORM_WINDOWS | |||
#include <windows.h> | |||
#define sleep(x) Sleep(1000*x) | |||
#endif | |||
int callback(short* wav, int num, espeak_EVENT *pEv) | |||
{ | |||
int cEv = 0; | |||
while (pEv->type) { | |||
cEv++; | |||
pEv++; | |||
} | |||
printf("callback, events: %d\n", cEv); | |||
return 0; | |||
} | |||
main() | |||
{ | |||
int nRate = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 10000, NULL, 0); | |||
printf("nRate: %d\n", nRate); | |||
if (nRate < 0) | |||
return; | |||
espeak_SetSynthCallback(callback); | |||
espeak_SetParameter(espeakRATE, 175, 0); | |||
int rv; | |||
rv = espeak_Char('c'); | |||
printf("rv: %d\n", rv); | |||
const char* sText = "tralalalallala"; | |||
rv = espeak_Synth(sText, 100, 0, POS_CHARACTER, 0, 0, 0, 0); | |||
printf("rv: %d (full: %d, internal: %d)\n", | |||
rv, EE_BUFFER_FULL, EE_INTERNAL_ERROR); | |||
sleep(2); // 2 seconds | |||
puts("slept"); | |||
espeak_Terminate(); | |||
} |
@@ -1,169 +0,0 @@ | |||
Index: src/Makefile | |||
=================================================================== | |||
--- src/Makefile (revision 364) | |||
+++ src/Makefile (working copy) | |||
@@ -18,6 +18,13 @@ | |||
# Use SONAME_OPT=-Wl,h, on Solaris | |||
SONAME_OPT=-Wl,-soname, | |||
+ifdef PLATFORM_WINDOWS | |||
+ LIB_NAME = libespeak.dll | |||
+else | |||
+ # On Windows not all source files are compiled | |||
+ non_windows_SOURCES = mbrowrap.cpp | |||
+endif | |||
+ | |||
# Use EXTRA_LIBS=-lm on Solaris | |||
EXTRA_LIBS = | |||
@@ -72,12 +79,12 @@ | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
- synthdata.cpp synthesize.cpp translate.cpp mbrowrap.cpp \ | |||
+ synthdata.cpp synthesize.cpp translate.cpp $(non_windows_SOURCES) \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp klatt.cpp sonic.cpp | |||
libespeak_SOURCES = speak_lib.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
- synthdata.cpp synthesize.cpp translate.cpp mbrowrap.cpp \ | |||
+ synthdata.cpp synthesize.cpp translate.cpp $(non_windows_SOURCES) \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp \ | |||
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp klatt.cpp sonic.cpp | |||
@@ -94,8 +101,14 @@ | |||
LIBS3=-lstdc++ -L . -lespeak | |||
CXXFLAGS=-O2 | |||
+ifdef PLATFORM_WINDOWS | |||
+ CXXFLAGS += -DPLATFORM_WINDOWS -DNEED_STRUCT_TIMESPEC | |||
+ LDFLAGS += -static-libgcc -static-libstdc++ | |||
+endif | |||
+ifdef DEBUG | |||
+ CXXFLAGS += -DDEBUG_ENABLED | |||
+endif | |||
- | |||
all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
.cpp.o: | |||
@@ -116,9 +129,11 @@ | |||
$(LIB_NAME): $(OBJS2) | |||
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \ | |||
$(OBJS2) $(LIBS2) | |||
- mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) | |||
- $(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION) | |||
- $(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME) | |||
+ $(if $(PLATFORM_WINDOWS), , \ | |||
+ mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG); \ | |||
+ $(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION); \ | |||
+ $(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME); \ | |||
+ ) | |||
$(STATIC_LIB_NAME): $(OBJS2) | |||
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) | |||
Index: src/speech.h | |||
=================================================================== | |||
--- src/speech.h (revision 364) | |||
+++ src/speech.h (working copy) | |||
@@ -37,7 +37,6 @@ | |||
#endif | |||
-#define PLATFORM_POSIX | |||
#define PATHSEP '/' | |||
// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile | |||
//#define USE_PORTAUDIO | |||
@@ -77,7 +76,14 @@ | |||
#ifdef PLATFORM_WINDOWS | |||
#define N_PATH_HOME 230 | |||
-#else | |||
+// sleep(seconds) | |||
+// Sleep(millisecond = 1/1000 s), windows api, kernel32.dll | |||
+// usleep(microseconds = 1/1000000 s) | |||
+#define sleep(x) Sleep(1000*x) | |||
+// we are lucky, in current code usleep is always used in multiplies of 1000 | |||
+#define usleep(x) Sleep((x+500)/1000) | |||
+#else /* PLATFORM_POSIX */ | |||
+#define PLATFORM_POSIX | |||
#define N_PATH_HOME 160 | |||
#endif | |||
Index: src/speak_lib.cpp | |||
=================================================================== | |||
--- src/speak_lib.cpp (revision 364) | |||
+++ src/speak_lib.cpp (working copy) | |||
@@ -31,7 +31,13 @@ | |||
#include "speech.h" | |||
#include <sys/stat.h> | |||
-#ifndef PLATFORM_WINDOWS | |||
+ | |||
+#ifdef PLATFORM_WINDOWS | |||
+#include <fcntl.h> | |||
+#include <io.h> | |||
+#include <windows.h> | |||
+#include <winreg.h> | |||
+#else /* PLATFORM_POSIX */ | |||
#include <unistd.h> | |||
#endif | |||
Index: src/wave.cpp | |||
=================================================================== | |||
--- src/wave.cpp (revision 364) | |||
+++ src/wave.cpp (working copy) | |||
@@ -32,7 +32,9 @@ | |||
#include <time.h> | |||
#include "portaudio.h" | |||
-#ifndef PLATFORM_WINDOWS | |||
+#ifdef PLATFORM_WINDOWS | |||
+#include <windows.h> | |||
+#else /* PLATFORM_POSIX */ | |||
#include <unistd.h> | |||
#endif | |||
#include "wave.h" | |||
@@ -40,6 +42,14 @@ | |||
//<Definitions | |||
+#ifdef NEED_STRUCT_TIMESPEC | |||
+#define HAVE_STRUCT_TIMESPEC 1 | |||
+struct timespec { | |||
+ long tv_sec; | |||
+ long tv_nsec; | |||
+}; | |||
+#endif /* HAVE_STRUCT_TIMESPEC */ | |||
+ | |||
enum {ONE_BILLION=1000000000}; | |||
#ifdef USE_PORTAUDIO | |||
Index: src/event.cpp | |||
=================================================================== | |||
--- src/event.cpp (revision 364) | |||
+++ src/event.cpp (working copy) | |||
@@ -24,7 +24,9 @@ | |||
//<includes | |||
+#ifndef PLATFORM_WINDOWS | |||
#include <unistd.h> | |||
+#endif | |||
#include <assert.h> | |||
#include <string.h> | |||
#include <stdlib.h> | |||
Index: src/fifo.cpp | |||
=================================================================== | |||
--- src/fifo.cpp (revision 364) | |||
+++ src/fifo.cpp (working copy) | |||
@@ -24,7 +24,9 @@ | |||
//<includes | |||
+#ifndef PLATFORM_WINDOWS | |||
#include <unistd.h> | |||
+#endif | |||
#include <assert.h> | |||
#include <string.h> | |||
#include <stdlib.h> |
@@ -1,16 +0,0 @@ | |||
These are instructions to built the library on MS Windows, using msys and mingw. | |||
This library is fully functional, contrary to the library described | |||
in windows_dll directory. | |||
To build exe file go to windows_cmd directory, to build sapi dll, | |||
go to windows_sapi directory. | |||
- Use sources from src directory. | |||
- Have a ready to use portaudio v19 library (dll file is sufficient, here | |||
libportaudio-2.dll filename is assumed in a directory relative to espeak) | |||
- Copy portaudio.h file from your portaudio directory to src directory, | |||
overwriting the existing one. At the time of writing this is the same | |||
file as src/portaudio19.h distributed within espeak. | |||
Make command: | |||
make libespeak.dll PLATFORM_WINDOWS=1 LIB_AUDIO="-L ../../portaudio/lib/.libs -lportaudio-2 -lwinmm" |
@@ -1,11 +0,0 @@ | |||
======================================================================== | |||
CONSOLE APPLICATION : espeak | |||
======================================================================== | |||
This is a Virtual C++ project to make a command-line version | |||
of eSpeak for Windows. | |||
Copy the source files from the Linux "src" directory into this | |||
"src" directory, EXCEPT for speech.h. Keep the original Windows | |||
command-line version of speech.h. | |||
@@ -1,8 +0,0 @@ | |||
// stdafx.cpp : source file that includes just the standard includes | |||
// espeak.pch will be the pre-compiled header | |||
// stdafx.obj will contain the pre-compiled type information | |||
#include "stdafx.h" | |||
// TODO: reference any additional headers you need in STDAFX.H | |||
// and not in this file |
@@ -1,22 +0,0 @@ | |||
// stdafx.h : include file for standard system include files, | |||
// or project specific include files that are used frequently, but | |||
// are changed infrequently | |||
// | |||
#if !defined(AFX_STDAFX_H__6C2D1701_32D2_4335_A2C8_C6A23021ADBE__INCLUDED_) | |||
#define AFX_STDAFX_H__6C2D1701_32D2_4335_A2C8_C6A23021ADBE__INCLUDED_ | |||
#if _MSC_VER > 1000 | |||
#pragma once | |||
#endif // _MSC_VER > 1000 | |||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers | |||
#include <stdio.h> | |||
// TODO: reference additional headers your program requires here | |||
//{{AFX_INSERT_LOCATION}} | |||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. | |||
#endif // !defined(AFX_STDAFX_H__6C2D1701_32D2_4335_A2C8_C6A23021ADBE__INCLUDED_) |
@@ -1,214 +0,0 @@ | |||
# Microsoft Developer Studio Project File - Name="espeak" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Console Application" 0x0103 | |||
CFG=espeak - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeak.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeak.mak" CFG="espeak - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "espeak - Win32 Release" (based on "Win32 (x86) Console Application") | |||
!MESSAGE "espeak - Win32 Debug" (based on "Win32 (x86) Console Application") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "espeak - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "Release" | |||
# PROP BASE Intermediate_Dir "Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c | |||
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c | |||
# ADD BASE RSC /l 0x809 /d "NDEBUG" | |||
# ADD RSC /l 0x809 /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 | |||
# ADD LINK32 kernel32.lib winmm.lib user32.lib gdi32.lib winspool.lib comdlg32.lib PAStaticWMME.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"espeak.exe" | |||
!ELSEIF "$(CFG)" == "espeak - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "Debug" | |||
# PROP BASE Intermediate_Dir "Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c | |||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c | |||
# ADD BASE RSC /l 0x809 /d "_DEBUG" | |||
# ADD RSC /l 0x809 /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib winmm.lib user32.lib gdi32.lib winspool.lib comdlg32.lib PAStaticWMME.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept | |||
!ENDIF | |||
# Begin Target | |||
# Name "espeak - Win32 Release" | |||
# Name "espeak - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=.\src\compiledict.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\dictionary.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\intonation.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\numbers.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phonemelist.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\readclause.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.cpp | |||
# ADD CPP /Yc"stdafx.h" | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synth_mbrola.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthdata.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voices.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wavegen.cpp | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# Begin Source File | |||
SOURCE=.\src\klatt.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phoneme.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speech.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voice.h | |||
# End Source File | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\ReadMe.txt | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -1,29 +0,0 @@ | |||
Microsoft Developer Studio Workspace File, Format Version 6.00 | |||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! | |||
############################################################################### | |||
Project: "espeak"=.\espeak.dsp - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
Global: | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<3> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
@@ -1,73 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
// Windows command-line version of eSpeak | |||
#ifndef SPEECH_H | |||
#define SPEECH_H | |||
// conditional compilation options | |||
#define PLATFORM_WINDOWS | |||
#define __WIN32__ | |||
#define NEED_WCSTOF | |||
#define NEED_GETOPT | |||
#define USE_MBROLA_LIB | |||
#define PATHSEP '\\' | |||
#define USE_PORTAUDIO | |||
#define NO_VARIADIC_MACROS | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
#endif // SPEECH_H |
@@ -1,4 +0,0 @@ | |||
// dummy stdint.h file for Windows | |||
typedef unsigned int uint32_t; |
@@ -1,16 +0,0 @@ | |||
This is a Virtual C++ project for the Windows dll | |||
version of eSpeak. This provides the API which is | |||
defined in speak_lib.h, using the | |||
AUDIO_OUTPUT_SYNCHRONOUS mode only. | |||
This is not the sapi5 version of eSpeak. | |||
Copy the program source files from the Linux "src" | |||
directory into this "src" directory, EXCEPT for: | |||
speak_lib.h | |||
speech.h | |||
StdAfx.h | |||
stdint.h | |||
Keep the Windows versions of these files. | |||
@@ -1,8 +0,0 @@ | |||
// stdafx.cpp : source file that includes just the standard includes | |||
// espeak.pch will be the pre-compiled header | |||
// stdafx.obj will contain the pre-compiled type information | |||
#include "stdafx.h" | |||
// TODO: reference any additional headers you need in STDAFX.H | |||
// and not in this file |
@@ -1,24 +0,0 @@ | |||
// stdafx.h : include file for standard system include files, | |||
// or project specific include files that are used frequently, but | |||
// are changed infrequently | |||
// | |||
#if !defined(AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_) | |||
#define AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_ | |||
#if _MSC_VER > 1000 | |||
#pragma once | |||
#endif // _MSC_VER > 1000 | |||
// Insert your headers here | |||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers | |||
#include <windows.h> | |||
// TODO: reference additional headers your program requires here | |||
//{{AFX_INSERT_LOCATION}} | |||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. | |||
#endif // !defined(AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_) |
@@ -1,237 +0,0 @@ | |||
# Microsoft Developer Studio Project File - Name="espeak" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 | |||
CFG=espeak - Win32 Debug | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeak.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "espeak.mak" CFG="espeak - Win32 Debug" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "espeak - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE "espeak - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "" | |||
CPP=cl.exe | |||
MTL=midl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "espeak - Win32 Release" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "Release" | |||
# PROP BASE Intermediate_Dir "Release" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release" | |||
# PROP Intermediate_Dir "Release" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ESPEAK_EXPORTS" /Yu"stdafx.h" /FD /c | |||
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ESPEAK_EXPORTS" /Yu"stdafx.h" /FD /c | |||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x809 /d "NDEBUG" | |||
# ADD RSC /l 0x809 /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"Release/espeak_lib.dll" | |||
# SUBTRACT LINK32 /pdb:none | |||
!ELSEIF "$(CFG)" == "espeak - Win32 Debug" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "Debug" | |||
# PROP BASE Intermediate_Dir "Debug" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug" | |||
# PROP Intermediate_Dir "Debug" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ESPEAK_EXPORTS" /Yu"stdafx.h" /FD /GZ /c | |||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ESPEAK_EXPORTS" /Yu"stdafx.h" /FD /GZ /c | |||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 | |||
# ADD BASE RSC /l 0x809 /d "_DEBUG" | |||
# ADD RSC /l 0x809 /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"Debug/espeak_lib.dll" /pdbtype:sept | |||
!ENDIF | |||
# Begin Target | |||
# Name "espeak - Win32 Release" | |||
# Name "espeak - Win32 Debug" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=.\src\compiledict.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\dictionary.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\intonation.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\numbers.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phonemelist.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\readclause.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.cpp | |||
# ADD CPP /Yc"stdafx.h" | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synth_mbrola.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthdata.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voices.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wavegen.cpp | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# Begin Source File | |||
SOURCE=.\espeak.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phoneme.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speech.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\stdint.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voice.h | |||
# End Source File | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# End Group | |||
# Begin Source File | |||
SOURCE=.\ReadMe.txt | |||
# End Source File | |||
# End Target | |||
# End Project |
@@ -1,29 +0,0 @@ | |||
Microsoft Developer Studio Workspace File, Format Version 6.00 | |||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! | |||
############################################################################### | |||
Project: "espeak"=.\espeak.dsp - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
Global: | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<3> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
@@ -1,24 +0,0 @@ | |||
// stdafx.h : include file for standard system include files, | |||
// or project specific include files that are used frequently, but | |||
// are changed infrequently | |||
// | |||
#if !defined(AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_) | |||
#define AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_ | |||
#if _MSC_VER > 1000 | |||
#pragma once | |||
#endif // _MSC_VER > 1000 | |||
// Insert your headers here | |||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers | |||
#include <windows.h> | |||
// TODO: reference additional headers your program requires here | |||
//{{AFX_INSERT_LOCATION}} | |||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. | |||
#endif // !defined(AFX_STDAFX_H__55502A81_7778_46B7_B400_FD19199C842B__INCLUDED_) |
@@ -1,629 +0,0 @@ | |||
#ifndef SPEAK_LIB_H | |||
#define SPEAK_LIB_H | |||
/*************************************************************************** | |||
* Copyright (C) 2005 to 2012 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 3 of the License, or * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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, see: * | |||
* <http://www.gnu.org/licenses/>. * | |||
***************************************************************************/ | |||
/*************************************************************/ | |||
/* This is the header file for the library version of espeak */ | |||
/* */ | |||
/*************************************************************/ | |||
#include <stdio.h> | |||
#include <stddef.h> | |||
#ifdef __WIN32__ | |||
#define ESPEAK_API __declspec(dllexport) | |||
#else | |||
#define ESPEAK_API | |||
#endif | |||
#define ESPEAK_API_REVISION 7 | |||
/* | |||
Revision 2 | |||
Added parameter "options" to eSpeakInitialize() | |||
Revision 3 | |||
Added espeakWORDGAP to espeak_PARAMETER | |||
Revision 4 | |||
Added flags parameter to espeak_CompileDictionary() | |||
Revision 5 | |||
Added espeakCHARS_16BIT | |||
Revision 6 | |||
Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL | |||
Revision 7 24.Dec.2011 | |||
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics. | |||
Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names. | |||
*/ | |||
/********************/ | |||
/* Initialization */ | |||
/********************/ | |||
// values for 'value' in espeak_SetParameter(espeakRATE, value, 0), nominally in words-per-minute | |||
#define espeakRATE_MINIMUM 80 | |||
#define espeakRATE_MAXIMUM 450 | |||
#define espeakRATE_NORMAL 175 | |||
typedef enum { | |||
espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. | |||
espeakEVENT_WORD = 1, // Start of word | |||
espeakEVENT_SENTENCE = 2, // Start of sentence | |||
espeakEVENT_MARK = 3, // Mark | |||
espeakEVENT_PLAY = 4, // Audio element | |||
espeakEVENT_END = 5, // End of sentence or clause | |||
espeakEVENT_MSG_TERMINATED = 6, // End of message | |||
espeakEVENT_PHONEME = 7, // Phoneme, if enabled in espeak_Initialize() | |||
espeakEVENT_SAMPLERATE = 8 // internal use, set sample rate | |||
} espeak_EVENT_TYPE; | |||
typedef struct { | |||
espeak_EVENT_TYPE type; | |||
unsigned int unique_identifier; // message identifier (or 0 for key or character) | |||
int text_position; // the number of characters from the start of the text | |||
int length; // word length, in characters (for espeakEVENT_WORD) | |||
int audio_position; // the time in mS within the generated speech output data | |||
int sample; // sample id (internal use) | |||
void* user_data; // pointer supplied by the calling program | |||
union { | |||
int number; // used for WORD and SENTENCE events. | |||
const char *name; // used for MARK and PLAY events. UTF8 string | |||
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes. | |||
} id; | |||
} espeak_EVENT; | |||
/* | |||
When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. | |||
In RETRIEVAL mode, the callback function supplies to the calling program the audio data and an event list terminated by 0 (LIST_TERMINATED). | |||
In PLAYBACK mode, the callback function is called as soon as an event happens. | |||
For example suppose that the following message is supplied to espeak_Synth: | |||
"hello, hello." | |||
* Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : | |||
** Block 1: | |||
<audio data> + | |||
List of events: SENTENCE + WORD + LIST_TERMINATED | |||
** Block 2: | |||
<audio data> + | |||
List of events: WORD + END + LIST_TERMINATED | |||
** Block 3: | |||
no audio data | |||
List of events: MSG_TERMINATED + LIST_TERMINATED | |||
* Once processed in PLAYBACK mode, it could lead to 5 calls of the callback function: | |||
** SENTENCE | |||
** WORD (call when the sounds are actually played) | |||
** WORD | |||
** END (call when the end of sentence is actually played.) | |||
** MSG_TERMINATED | |||
The MSG_TERMINATED event is the last event. It can inform the calling program to clear the user data related to the message. | |||
So if the synthesis must be stopped, the callback function is called for each pending message with the MSG_TERMINATED event. | |||
A MARK event indicates a <mark> element in the text. | |||
A PLAY event indicates an <audio> element in the text, for which the calling program should play the named sound file. | |||
*/ | |||
typedef enum { | |||
POS_CHARACTER = 1, | |||
POS_WORD, | |||
POS_SENTENCE | |||
} espeak_POSITION_TYPE; | |||
typedef enum { | |||
/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/ | |||
AUDIO_OUTPUT_PLAYBACK, | |||
/* RETRIEVAL mode: supplies audio data and events to the calling program */ | |||
AUDIO_OUTPUT_RETRIEVAL, | |||
/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */ | |||
AUDIO_OUTPUT_SYNCHRONOUS, | |||
/* Synchronous playback */ | |||
AUDIO_OUTPUT_SYNCH_PLAYBACK | |||
} espeak_AUDIO_OUTPUT; | |||
typedef enum { | |||
EE_OK=0, | |||
EE_INTERNAL_ERROR=-1, | |||
EE_BUFFER_FULL=1, | |||
EE_NOT_FOUND=2 | |||
} espeak_ERROR; | |||
#define espeakINITIALIZE_PHONEME_EVENTS 0x0001 | |||
#define espeakINITIALIZE_PHONEME_IPA 0x0002 | |||
#define espeakINITIALIZE_DONT_EXIT 0x8000 | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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. | |||
buflength: The length in mS of sound buffers passed to the SynthCallback function. | |||
path: The directory which contains the espeak-data directory, or NULL for the default location. | |||
options: bit 0: 1=allow espeakEVENT_PHONEME events. | |||
bit 1: 1= espeakEVENT_PHONEME events give IPA phoneme names, not eSpeak phoneme names | |||
bit 15: 1=don't exit if espeak_data is not found (used for --help) | |||
Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). | |||
*/ | |||
typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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. | |||
The callback function is of the form: | |||
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
wav: is the speech sound data which has been produced. | |||
NULL indicates that the synthesis has been completed. | |||
numsamples: is the number of entries in wav. This number may vary, may be less than | |||
the value implied by the buflength parameter given in espeak_Initialize, and may | |||
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. The list of | |||
events is terminated by an event of type = 0. | |||
Callback returns: 0=continue synthesis, 1=abort synthesis. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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 | |||
is specified in the <audio> element is available and is to be played. | |||
The callback function is of the form: | |||
int UriCallback(int type, const char *uri, const char *base); | |||
type: type of callback event. Currently only 1= <audio> element | |||
uri: the "src" attribute from the <audio> element | |||
base: the "xml:base" attribute (if any) from the <speak> element | |||
Return: 1=don't play the sound, but speak the text alternative. | |||
0=place a PLAY event in the event list at the point where the <audio> element | |||
occurs. The calling program can then play the sound at that point. | |||
*/ | |||
/********************/ | |||
/* Synthesis */ | |||
/********************/ | |||
#define espeakCHARS_AUTO 0 | |||
#define espeakCHARS_UTF8 1 | |||
#define espeakCHARS_8BIT 2 | |||
#define espeakCHARS_WCHAR 3 | |||
#define espeakCHARS_16BIT 4 | |||
#define espeakSSML 0x10 | |||
#define espeakPHONEMES 0x100 | |||
#define espeakENDPAUSE 0x1000 | |||
#define espeakKEEP_NAMEDATA 0x2000 | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
size_t size, | |||
unsigned int position, | |||
espeak_POSITION_TYPE position_type, | |||
unsigned int end_position, | |||
unsigned int flags, | |||
unsigned int* unique_identifier, | |||
void* user_data); | |||
/* Synthesize speech for the specified text. The speech sound data is passed to the calling | |||
program in buffers by means of the callback function specified by espeak_SetSynthCallback(). The command is asynchronous: it is internally buffered and returns as soon as possible. If espeak_Initialize was previously called with AUDIO_OUTPUT_PLAYBACK as argument, the sound data are played by eSpeak. | |||
text: The text to be spoken, terminated by a zero character. It may be either 8-bit characters, | |||
wide characters (wchar_t), or UTF8 encoding. Which of these is determined by the "flags" | |||
parameter. | |||
size: Equal to (or greatrer than) the size of the text data, in bytes. This is used in order | |||
to allocate internal storage space for the text. This value is not used for | |||
AUDIO_OUTPUT_SYNCHRONOUS mode. | |||
position: The position in the text where speaking starts. Zero indicates speak from the | |||
start of the text. | |||
position_type: Determines whether "position" is a number of characters, words, or sentences. | |||
Values: | |||
end_position: If set, this gives a character position at which speaking will stop. A value | |||
of zero indicates no end position. | |||
flags: These may be OR'd together: | |||
Type of character codes, one of: | |||
espeakCHARS_UTF8 UTF8 encoding | |||
espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language. | |||
espeakCHARS_AUTO 8 bit or UTF8 (this is the default) | |||
espeakCHARS_WCHAR Wide characters (wchar_t) | |||
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 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. | |||
unique_identifier: message identifier; helpful for identifying later | |||
data supplied to the callback. | |||
user_data: pointer which will be passed to the callback function. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
size_t size, | |||
const char *index_mark, | |||
unsigned int end_position, | |||
unsigned int flags, | |||
unsigned int* unique_identifier, | |||
void* user_data); | |||
/* Synthesize speech for the specified text. Similar to espeak_Synth() but the start position is | |||
specified by the name of a <mark> element in the text. | |||
index_mark: The "name" attribute of a <mark> element within the text which specified the | |||
point at which synthesis starts. UTF8 string. | |||
For the other parameters, see espeak_Synth() | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
/* Speak the name of a keyboard key. | |||
If key_name is a single character, it speaks the name of the character. | |||
Otherwise, it speaks key_name as a text string. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
/* Speak the name of the given character | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
/***********************/ | |||
/* Speech Parameters */ | |||
/***********************/ | |||
typedef enum { | |||
espeakSILENCE=0, /* internal use */ | |||
espeakRATE=1, | |||
espeakVOLUME=2, | |||
espeakPITCH=3, | |||
espeakRANGE=4, | |||
espeakPUNCTUATION=5, | |||
espeakCAPITALS=6, | |||
espeakWORDGAP=7, | |||
espeakOPTIONS=8, // reserved for misc. options. not yet used | |||
espeakINTONATION=9, | |||
espeakRESERVED1=10, | |||
espeakRESERVED2=11, | |||
espeakEMPHASIS, /* internal use */ | |||
espeakLINELENGTH, /* internal use */ | |||
espeakVOICETYPE, // internal, 1=mbrola | |||
N_SPEECH_PARAM /* last enum */ | |||
} espeak_PARAMETER; | |||
typedef enum { | |||
espeakPUNCT_NONE=0, | |||
espeakPUNCT_ALL=1, | |||
espeakPUNCT_SOME=2 | |||
} espeak_PUNCT_TYPE; | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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. | |||
parameter: | |||
espeakRATE: speaking speed in word per minute. Values 80 to 450. | |||
espeakVOLUME: volume in range 0-200 or more. | |||
0=silence, 100=normal full volume, greater values may produce amplitude compression or distortion | |||
espeakPITCH: base pitch, range 0-100. 50=normal | |||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||
espeakPUNCTUATION: which punctuation characters to announce: | |||
value in espeak_PUNCT_TYPE (none, all, some), | |||
see espeak_GetParameter() to specify which characters are announced. | |||
espeakCAPITALS: announce capital letters by: | |||
0=none, | |||
1=sound icon, | |||
2=spelling, | |||
3 or higher, by raising pitch. This values gives the amount in Hz by which the pitch | |||
of a word raised to indicate it has a capital letter. | |||
espeakWORDGAP: pause between words, units of 10mS (at the default speed) | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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() | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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". | |||
punctlist: A list of character codes, terminated by a zero character. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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 | |||
value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries) | |||
value=3 as (1), but produces IPA rather than ascii phoneme names | |||
stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
/* Compile pronunciation dictionary for a language which corresponds to the currently | |||
selected voice. The required voice should be selected before calling this function. | |||
path: The directory which contains the language's '_rules' and '_list' files. | |||
'path' should end with a path separator character ('/'). | |||
log: Stream for error reports and statistics information. If log=NULL then stderr will be used. | |||
flags: Bit 0: include source line information for debug purposes (This is displayed with the | |||
-X command line option). | |||
*/ | |||
/***********************/ | |||
/* Voice Selection */ | |||
/***********************/ | |||
// voice table | |||
typedef struct { | |||
const char *name; // a given name for this voice. UTF8 string. | |||
const char *languages; // list of pairs of (byte) priority + (string) language (and dialect qualifier) | |||
const char *identifier; // the filename for this voice within espeak-data/voices | |||
unsigned char gender; // 0=none 1=male, 2=female, | |||
unsigned char age; // 0=not specified, or age in years | |||
unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties | |||
unsigned char xx1; // for internal use | |||
int score; // for internal use | |||
void *spare; // for internal use | |||
} espeak_VOICE; | |||
/* Note: The espeak_VOICE structure is used for two purposes: | |||
1. To return the details of the available voices. | |||
2. As a parameter to espeak_SetVoiceByProperties() in order to specify selection criteria. | |||
In (1), the "languages" field consists of a list of (UTF8) language names for which this voice | |||
may be used, each language name in the list is terminated by a zero byte and is also preceded by | |||
a single byte which gives a "priority" number. The list of languages is terminated by an | |||
additional zero byte. | |||
A language name consists of a language code, optionally followed by one or more qualifier (dialect) | |||
names separated by hyphens (eg. "en-uk"). A voice might, for example, have languages "en-uk" and | |||
"en". Even without "en" listed, voice would still be selected for the "en" language (because | |||
"en-uk" is related) but at a lower priority. | |||
The priority byte indicates how the voice is preferred for the language. A low number indicates a | |||
more preferred voice, a higher number indicates a less preferred voice. | |||
In (2), the "languages" field consists simply of a single (UTF8) language name, with no preceding | |||
priority byte. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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 | |||
If voice_spec is NULL then all voices are listed. | |||
If voice spec is given, then only the voices which are compatible with the voice_spec | |||
are listed, and they are listed in preference order. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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. | |||
Return: EE_OK: operation achieved | |||
EE_BUFFER_FULL: the command can not be buffered; | |||
you may try after a while to call the function again. | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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: | |||
name NULL, or a voice name | |||
languages NULL, or a single language string (with optional dialect), eg. "en-uk", or "en" | |||
gender 0=not specified, 1=male, 2=female | |||
age 0=not specified, or an age in years | |||
variant After a list of candidates is produced, scored and sorted, "variant" is used to index | |||
that list and choose a voice. | |||
variant=0 takes the top voice (i.e. best match). variant=1 takes the next voice, etc | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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> | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API 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. | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API int espeak_IsPlaying(void); | |||
/* Returns 1 if audio is played, 0 otherwise. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
/* This function returns when all data have been spoken. | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
/* last function to be called. | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
ESPEAK_API const char *espeak_Info(const char **path_data); | |||
/* Returns the version number string. | |||
path_data returns the path to espeak_data | |||
*/ | |||
#endif |
@@ -1,75 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
// Windows command-line version of eSpeak | |||
#ifndef SPEECH_H | |||
#define SPEECH_H | |||
// conditional compilation options | |||
#define PLATFORM_WINDOWS | |||
#define __WIN32__ | |||
#define NEED_WCSTOF | |||
#define NEED_GETOPT | |||
#define PATHSEP '\\' | |||
// #define USE_PORTAUDIO | |||
#define NO_VARIADIC_MACROS | |||
#define ESPEAK_API __declspec(dllexport) | |||
#define LIBRARY | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
#endif // SPEECH_H |
@@ -1,4 +0,0 @@ | |||
// dummy stdint.h file for Windows | |||
typedef unsigned int uint32_t; |
@@ -1,11 +0,0 @@ | |||
This is a Virtual C++ project for the Windows SAPI5 | |||
version of eSpeak. | |||
Copy the program source files from the Linux "src" | |||
directory into this "src" directory, EXCEPT for: | |||
speech.h | |||
StdAfx.h | |||
stdint.h | |||
Keep the Windows versions of these files. | |||
@@ -1,94 +0,0 @@ | |||
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ | |||
/* File created by MIDL compiler version 5.01.0164 */ | |||
/* at Sat Dec 16 21:19:27 2006 | |||
*/ | |||
/* Compiler settings for C:\Program Files\Microsoft Speech SDK 5.1\Samples\CPP\Engines\TTS\TtsEng.idl: | |||
Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext | |||
error checks: allocation ref bounds_check enum stub_data | |||
*/ | |||
//@@MIDL_FILE_HEADING( ) | |||
/* verify that the <rpcndr.h> version is high enough to compile this file*/ | |||
#ifndef __REQUIRED_RPCNDR_H_VERSION__ | |||
#define __REQUIRED_RPCNDR_H_VERSION__ 440 | |||
#endif | |||
#include "rpc.h" | |||
#include "rpcndr.h" | |||
#ifndef __TtsEng_h__ | |||
#define __TtsEng_h__ | |||
#ifdef __cplusplus | |||
extern "C"{ | |||
#endif | |||
/* Forward Declarations */ | |||
#ifndef __SampleTTSEngine_FWD_DEFINED__ | |||
#define __SampleTTSEngine_FWD_DEFINED__ | |||
#ifdef __cplusplus | |||
typedef class SampleTTSEngine SampleTTSEngine; | |||
#else | |||
typedef struct SampleTTSEngine SampleTTSEngine; | |||
#endif /* __cplusplus */ | |||
#endif /* __SampleTTSEngine_FWD_DEFINED__ */ | |||
/* header files for imported files */ | |||
#include "oaidl.h" | |||
#include "ocidl.h" | |||
#include "sapiddk.h" | |||
void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t); | |||
void __RPC_USER MIDL_user_free( void __RPC_FAR * ); | |||
/* interface __MIDL_itf_TtsEng_0000 */ | |||
/* [local] */ | |||
typedef struct VOICEITEM | |||
{ | |||
LPCWSTR pText; | |||
ULONG ulTextLen; | |||
ULONG ulNumAudioBytes; | |||
BYTE __RPC_FAR *pAudio; | |||
} VOICEITEM; | |||
extern RPC_IF_HANDLE __MIDL_itf_TtsEng_0000_v0_0_c_ifspec; | |||
extern RPC_IF_HANDLE __MIDL_itf_TtsEng_0000_v0_0_s_ifspec; | |||
#ifndef __SAMPLETTSENGLib_LIBRARY_DEFINED__ | |||
#define __SAMPLETTSENGLib_LIBRARY_DEFINED__ | |||
/* library SAMPLETTSENGLib */ | |||
/* [helpstring][version][uuid] */ | |||
EXTERN_C const IID LIBID_SAMPLETTSENGLib; | |||
EXTERN_C const CLSID CLSID_SampleTTSEngine; | |||
#ifdef __cplusplus | |||
class DECLSPEC_UUID("BE985C8D-BE32-4A22-AA93-55C16A6D1D91") | |||
SampleTTSEngine; | |||
#endif | |||
#endif /* __SAMPLETTSENGLib_LIBRARY_DEFINED__ */ | |||
/* Additional Prototypes for ALL interfaces */ | |||
/* end of Additional Prototypes */ | |||
#ifdef __cplusplus | |||
} | |||
#endif | |||
#endif |
@@ -1,47 +0,0 @@ | |||
/* this file contains the actual definitions of */ | |||
/* the IIDs and CLSIDs */ | |||
/* link this file in with the server and any clients */ | |||
/* File created by MIDL compiler version 5.01.0164 */ | |||
/* at Sat Dec 16 21:19:27 2006 | |||
*/ | |||
/* Compiler settings for C:\Program Files\Microsoft Speech SDK 5.1\Samples\CPP\Engines\TTS\TtsEng.idl: | |||
Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext | |||
error checks: allocation ref bounds_check enum stub_data | |||
*/ | |||
//@@MIDL_FILE_HEADING( ) | |||
#ifdef __cplusplus | |||
extern "C"{ | |||
#endif | |||
#ifndef __IID_DEFINED__ | |||
#define __IID_DEFINED__ | |||
typedef struct _IID | |||
{ | |||
unsigned long x; | |||
unsigned short s1; | |||
unsigned short s2; | |||
unsigned char c[8]; | |||
} IID; | |||
#endif // __IID_DEFINED__ | |||
#ifndef CLSID_DEFINED | |||
#define CLSID_DEFINED | |||
typedef IID CLSID; | |||
#endif // CLSID_DEFINED | |||
const IID LIBID_SAMPLETTSENGLib = {0x7192AA2F,0xF759,0x43e9,{0x91,0xE7,0x22,0x63,0x71,0xEF,0x6B,0x2F}}; | |||
const CLSID CLSID_SampleTTSEngine = {0xBE985C8D,0xBE32,0x4A22,{0xAA,0x93,0x55,0xC1,0x6A,0x6D,0x1D,0x91}}; | |||
#ifdef __cplusplus | |||
} | |||
#endif | |||
@@ -1,18 +0,0 @@ | |||
//{{NO_DEPENDENCIES}} | |||
// Microsoft Developer Studio generated include file. | |||
// Used by TtsEng.rc | |||
// | |||
#define IDS_PROJNAME 100 | |||
#define IDR_SAMPLETTSENGINE 101 | |||
#define IDR_SAMPLEVOICEDATAOBJ 102 | |||
// Next default values for new objects | |||
// | |||
#ifdef APSTUDIO_INVOKED | |||
#ifndef APSTUDIO_READONLY_SYMBOLS | |||
#define _APS_NEXT_RESOURCE_VALUE 201 | |||
#define _APS_NEXT_COMMAND_VALUE 32768 | |||
#define _APS_NEXT_CONTROL_VALUE 201 | |||
#define _APS_NEXT_SYMED_VALUE 103 | |||
#endif | |||
#endif |
@@ -1,3 +0,0 @@ | |||
// This is a dummy file. | |||
// A file of this name is needed on Windows | |||
@@ -1,77 +0,0 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2005,2006 by Jonathan Duddington * | |||
* [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 * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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. * | |||
***************************************************************************/ | |||
// speech.h file for the Windows SAPI5 version of eSpeak | |||
#ifndef SPEECH_H | |||
#define SPEECH_H | |||
// conditional compilation options | |||
#define PLATFORM_WINDOWS | |||
#define __WIN32__ | |||
#define NEED_WCSTOF | |||
#define NEED_GETOPT | |||
#define NO_VARIADIC_MACROS | |||
#define USE_MBROLA_LIB | |||
#define PATHSEP '\\' | |||
//#define PLATFORM_POSIX | |||
//#define __cdecl // define as null, needed for Borland compiler ? | |||
//#define USE_PORTAUDIO | |||
//#define USE_NANOSLEEP | |||
#define INCLUDE_KLATT | |||
#define INCLUDE_MBROLA | |||
#define INCLUDE_SONIC | |||
// will look for espeak_data directory here, and also in user's home directory | |||
#define PATH_ESPEAK_DATA "/usr/share/espeak-data" | |||
typedef unsigned short USHORT; | |||
typedef unsigned char UCHAR; | |||
typedef double DOUBLEX; | |||
#ifdef __WIN64__ | |||
typedef uint64_t long64; // use this for conversion between pointers and integers | |||
#else | |||
typedef unsigned long long64; | |||
#endif | |||
typedef struct { | |||
const char *mnem; | |||
int value; | |||
} MNEM_TAB; | |||
int LookupMnem(MNEM_TAB *table, const char *string); | |||
#define N_PATH_HOME 230 | |||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||
extern void strncpy0(char *to,const char *from, int size); | |||
int GetFileLength(const char *filename); | |||
char *Alloc(int size); | |||
void Free(void *ptr); | |||
#endif // SPEECH_H |
@@ -1,4 +0,0 @@ | |||
// dummy stdint.h file for Windows | |||
typedef unsigned int uint32_t; |
@@ -1,14 +0,0 @@ | |||
// stdafx.cpp : source file that includes just the standard includes | |||
// stdafx.pch will be the pre-compiled header | |||
// stdafx.obj will contain the pre-compiled type information | |||
//Copyright (c) Microsoft Corporation. All rights reserved. | |||
#include "stdafx.h" | |||
#ifdef _ATL_STATIC_REGISTRY | |||
#include <statreg.h> | |||
#include <statreg.cpp> | |||
#endif | |||
#include <atlimpl.cpp> | |||
@@ -1,32 +0,0 @@ | |||
// stdafx.h : include file for standard system include files, | |||
// or project specific include files that are used frequently, | |||
// but are changed infrequently | |||
#if !defined(AFX_STDAFX_H__3F7C4D2C_D007_11D2_B503_00C04F797396__INCLUDED_) | |||
#define AFX_STDAFX_H__3F7C4D2C_D007_11D2_B503_00C04F797396__INCLUDED_ | |||
#if _MSC_VER > 1000 | |||
#pragma once | |||
#endif // _MSC_VER > 1000 | |||
#ifndef STRICT | |||
#define STRICT | |||
#endif | |||
#ifndef _WIN32_WINNT | |||
#define _WIN32_WINNT 0x0400 | |||
#endif | |||
#include <atlbase.h> | |||
//You may derive a class from CComModule and use it if you want to override | |||
//something, but do not change the name of _Module | |||
extern CComModule _Module; | |||
#include <atlcom.h> | |||
//{{AFX_INSERT_LOCATION}} | |||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. | |||
#endif // !defined(AFX_STDAFX_H__3F7C4D2C_D007_11D2_B503_00C04F797396__INCLUDED) | |||
@@ -1,77 +0,0 @@ | |||
// TtsEng.cpp : Implementation of DLL Exports. | |||
//Copyright (c) Microsoft Corporation. All rights reserved. | |||
// Note: Proxy/Stub Information | |||
// To build a separate proxy/stub DLL, | |||
// run nmake -f msttsdrvps.mk in the project directory. | |||
#include "stdafx.h" | |||
#include "resource.h" | |||
#include <initguid.h> | |||
#include "TtsEng.h" | |||
#include "TtsEng_i.c" | |||
#include "TtsEngObj.h" | |||
CComModule _Module; | |||
BEGIN_OBJECT_MAP(ObjectMap) | |||
OBJECT_ENTRY( CLSID_SampleTTSEngine , CTTSEngObj ) | |||
END_OBJECT_MAP() | |||
///////////////////////////////////////////////////////////////////////////// | |||
// DLL Entry Point | |||
#ifdef _WIN32_WCE | |||
extern "C" BOOL WINAPI DllMain(HANDLE hInstance, ULONG dwReason, LPVOID) | |||
#else | |||
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) | |||
#endif | |||
{ | |||
if (dwReason == DLL_PROCESS_ATTACH) | |||
{ | |||
_Module.Init(ObjectMap, (HINSTANCE)hInstance, &LIBID_SAMPLETTSENGLib); | |||
} | |||
else if (dwReason == DLL_PROCESS_DETACH) | |||
_Module.Term(); | |||
return TRUE; // ok | |||
} | |||
///////////////////////////////////////////////////////////////////////////// | |||
// Used to determine whether the DLL can be unloaded by OLE | |||
STDAPI DllCanUnloadNow(void) | |||
{ | |||
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE; | |||
} | |||
///////////////////////////////////////////////////////////////////////////// | |||
// Returns a class factory to create an object of the requested type | |||
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) | |||
{ | |||
return _Module.GetClassObject(rclsid, riid, ppv); | |||
} | |||
///////////////////////////////////////////////////////////////////////////// | |||
// DllRegisterServer - Adds entries to the system registry | |||
STDAPI DllRegisterServer(void) | |||
{ | |||
// registers object, typelib and all interfaces in typelib | |||
return _Module.RegisterServer(TRUE); | |||
} | |||
///////////////////////////////////////////////////////////////////////////// | |||
// DllUnregisterServer - Removes entries from the system registry | |||
STDAPI DllUnregisterServer(void) | |||
{ | |||
return _Module.UnregisterServer(TRUE); | |||
} | |||
@@ -1,5 +0,0 @@ | |||
EXPORTS | |||
DllCanUnloadNow PRIVATE | |||
DllGetClassObject PRIVATE | |||
DllRegisterServer PRIVATE | |||
DllUnregisterServer PRIVATE |
@@ -1,284 +0,0 @@ | |||
# Microsoft Developer Studio Project File - Name="TtsEng" - Package Owner=<4> | |||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 | |||
# ** DO NOT EDIT ** | |||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 | |||
CFG=TtsEng - Win32 Debug x86 | |||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, | |||
!MESSAGE use the Export Makefile command and run | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "ttseng.mak". | |||
!MESSAGE | |||
!MESSAGE You can specify a configuration when running NMAKE | |||
!MESSAGE by defining the macro CFG on the command line. For example: | |||
!MESSAGE | |||
!MESSAGE NMAKE /f "ttseng.mak" CFG="TtsEng - Win32 Debug x86" | |||
!MESSAGE | |||
!MESSAGE Possible choices for configuration are: | |||
!MESSAGE | |||
!MESSAGE "TtsEng - Win32 Debug x86" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE "TtsEng - Win32 Release x86" (based on "Win32 (x86) Dynamic-Link Library") | |||
!MESSAGE | |||
# Begin Project | |||
# PROP AllowPerConfigDependencies 0 | |||
# PROP Scc_ProjName "" | |||
# PROP Scc_LocalPath "Desktop" | |||
CPP=cl.exe | |||
MTL=midl.exe | |||
RSC=rc.exe | |||
!IF "$(CFG)" == "TtsEng - Win32 Debug x86" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 1 | |||
# PROP BASE Output_Dir "TtsEng___Win32_Debug_x86" | |||
# PROP BASE Intermediate_Dir "TtsEng___Win32_Debug_x86" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 1 | |||
# PROP Output_Dir "Debug_x86" | |||
# PROP Intermediate_Dir "Debug_x86" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\..\sdk\include" /I "..\..\..\ddk\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /Yu"stdafx.h" /FD /GZ /c | |||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\..\..\..\ddk\include" /I "..\..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /FR /Yu"stdafx.h" /FD /GZ /c | |||
# ADD MTL /I "..\..\..\..\..\ddk\idl" /I "..\..\..\..\idl" | |||
# ADD BASE RSC /l 0x409 /d "_DEBUG" | |||
# ADD RSC /l 0x409 /d "_DEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept | |||
# ADD LINK32 kernel32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\i386" | |||
# Begin Custom Build - Performing registration | |||
OutDir=.\Debug_x86 | |||
TargetPath=.\Debug_x86\ttseng.dll | |||
InputPath=.\Debug_x86\ttseng.dll | |||
SOURCE="$(InputPath)" | |||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | |||
regsvr32 /s /c "$(TargetPath)" | |||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" | |||
# End Custom Build | |||
!ELSEIF "$(CFG)" == "TtsEng - Win32 Release x86" | |||
# PROP BASE Use_MFC 0 | |||
# PROP BASE Use_Debug_Libraries 0 | |||
# PROP BASE Output_Dir "TtsEng___Win32_Release_x86" | |||
# PROP BASE Intermediate_Dir "TtsEng___Win32_Release_x86" | |||
# PROP BASE Target_Dir "" | |||
# PROP Use_MFC 0 | |||
# PROP Use_Debug_Libraries 0 | |||
# PROP Output_Dir "Release_x86" | |||
# PROP Intermediate_Dir "Release_x86" | |||
# PROP Ignore_Export_Lib 0 | |||
# PROP Target_Dir "" | |||
# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c | |||
# ADD CPP /nologo /MT /W3 /O1 /I "..\..\..\..\..\ddk\include" /I "..\..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /Yu"stdafx.h" /FD /c | |||
# ADD MTL /I "..\..\..\..\..\ddk\idl" /I "..\..\..\..\idl" | |||
# ADD BASE RSC /l 0x409 /d "NDEBUG" | |||
# ADD RSC /l 0x409 /d "NDEBUG" | |||
BSC32=bscmake.exe | |||
# ADD BASE BSC32 /nologo | |||
# ADD BSC32 /nologo | |||
LINK32=link.exe | |||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 | |||
# ADD LINK32 kernel32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /dll /map /machine:I386 /out:"Release_x86/espeak_sapi.dll" /libpath:"..\..\..\..\lib\i386" | |||
# Begin Custom Build - Performing registration | |||
OutDir=.\Release_x86 | |||
TargetPath=.\Release_x86\espeak_sapi.dll | |||
InputPath=.\Release_x86\espeak_sapi.dll | |||
SOURCE="$(InputPath)" | |||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | |||
regsvr32 /s /c "$(TargetPath)" | |||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" | |||
# End Custom Build | |||
!ENDIF | |||
# Begin Target | |||
# Name "TtsEng - Win32 Debug x86" | |||
# Name "TtsEng - Win32 Release x86" | |||
# Begin Group "Source Files" | |||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" | |||
# Begin Source File | |||
SOURCE=.\src\compiledict.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\dictionary.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\intonation.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\klatt.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\numbers.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phonemelist.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\readclause.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\setlengths.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.cpp | |||
# ADD BASE CPP /Yc"stdafx.h" | |||
# ADD CPP /Yc"stdafx.h" | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synth_mbrola.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthdata.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\tr_languages.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEng.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEng.def | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEng.idl | |||
# ADD BASE MTL /I "..\..\..\sdk\idl" /tlb ".\TtsEng.tlb" /h "TtsEng.h" /iid "" /Oicf | |||
# ADD MTL /I "..\..\..\sdk\idl" /tlb ".\TtsEng.tlb" /h "TtsEng.h" /iid "TtsEng_i.c" /Oicf | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEng.rc | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEngObj.cpp | |||
# SUBTRACT CPP /YX /Yc /Yu | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voices.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\wavegen.cpp | |||
# End Source File | |||
# End Group | |||
# Begin Group "Header Files" | |||
# PROP Default_Filter "h;hpp;hxx;hm;inl" | |||
# Begin Source File | |||
SOURCE=.\src\klatt.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\phoneme.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio18.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\portaudio19.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\Resource.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sintab.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\sonic.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speak_lib.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\speech.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\StdAfx.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\synthesize.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\translate.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\TtsEngObj.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=.\src\voice.h | |||
# End Source File | |||
# End Group | |||
# Begin Group "Resource Files" | |||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" | |||
# Begin Source File | |||
SOURCE=.\TtsEngObj.rgs | |||
# End Source File | |||
# End Group | |||
# End Target | |||
# End Project |
@@ -1,29 +0,0 @@ | |||
Microsoft Developer Studio Workspace File, Format Version 6.00 | |||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! | |||
############################################################################### | |||
Project: "TtsEng"=".\ttseng.dsp" - Package Owner=<4> | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<4> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
Global: | |||
Package=<5> | |||
{{{ | |||
}}} | |||
Package=<3> | |||
{{{ | |||
}}} | |||
############################################################################### | |||
@@ -1,50 +0,0 @@ | |||
/***************************************************************************** | |||
* TtsEng.idl * | |||
*------------* | |||
* Description: | |||
* This idl file is for the sample SAPI5 Text To Speech Engine. | |||
*----------------------------------------------------------------------------- | |||
* Creation: 09/17/99 | |||
* Copyright (c) Microsoft Corporation. All rights reserved. | |||
*****************************************************************************/ | |||
//--- Import base idl | |||
import "oaidl.idl"; | |||
import "ocidl.idl"; | |||
import "sapiddk.idl"; | |||
//=== Forward References ====================================================== | |||
//=== Constants =============================================================== | |||
//=== Interface definitions =================================================== | |||
typedef struct VOICEITEM | |||
{ | |||
LPCWSTR pText; | |||
ULONG ulTextLen; | |||
ULONG ulNumAudioBytes; | |||
BYTE* pAudio; | |||
} VOICEITEM; | |||
//=== CoClass definitions ===================================================== | |||
[ | |||
uuid(7192AA2F-F759-43e9-91E7-226371EF6B2F), | |||
version(1.0), | |||
helpstring("Simple TTS Engine 1.0 Type Library") | |||
] | |||
library SAMPLETTSENGLib | |||
{ | |||
importlib("stdole32.tlb"); | |||
importlib("stdole2.tlb"); | |||
[ | |||
uuid(BE985C8D-BE32-4A22-AA93-55C16A6D1D91), | |||
// uuid(A832755E-9C2A-40b4-89B2-3A92EE705852), | |||
helpstring("SampleTTSEngine Class") | |||
] | |||
coclass SampleTTSEngine | |||
{ | |||
[default] interface ISpTTSEngine; | |||
interface ISpObjectWithToken; | |||
}; | |||
}; |
@@ -1,91 +0,0 @@ | |||
//Microsoft Developer Studio generated resource script. | |||
// | |||
#include "resource.h" | |||
#define APSTUDIO_READONLY_SYMBOLS | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Generated from the TEXTINCLUDE 2 resource. | |||
// | |||
#define APSTUDIO_HIDDEN_SYMBOLS | |||
#include "windows.h" | |||
#undef APSTUDIO_HIDDEN_SYMBOLS | |||
#include "resource.h" | |||
///////////////////////////////////////////////////////////////////////////// | |||
#undef APSTUDIO_READONLY_SYMBOLS | |||
///////////////////////////////////////////////////////////////////////////// | |||
// English (U.S.) resources | |||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) | |||
#ifdef _WIN32 | |||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US | |||
#pragma code_page(1252) | |||
#endif //_WIN32 | |||
#ifdef APSTUDIO_INVOKED | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// TEXTINCLUDE | |||
// | |||
1 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"resource.h\0" | |||
END | |||
2 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n" | |||
"#include ""windows.h""\r\n" | |||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" | |||
"#include ""resource.h""\r\n" | |||
"\r\n" | |||
"\0" | |||
END | |||
3 TEXTINCLUDE DISCARDABLE | |||
BEGIN | |||
"1 TYPELIB ""TtsEng.tlb""\r\n" | |||
"#include ""version.rc2""\r\n" | |||
"\0" | |||
END | |||
#endif // APSTUDIO_INVOKED | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// REGISTRY | |||
// | |||
IDR_SAMPLETTSENGINE REGISTRY DISCARDABLE "TtsEngObj.rgs" | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// String Table | |||
// | |||
STRINGTABLE DISCARDABLE | |||
BEGIN | |||
IDS_PROJNAME "TtsEng" | |||
END | |||
#endif // English (U.S.) resources | |||
///////////////////////////////////////////////////////////////////////////// | |||
#ifndef APSTUDIO_INVOKED | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Generated from the TEXTINCLUDE 3 resource. | |||
// | |||
1 TYPELIB "TtsEng.tlb" | |||
#include "version.rc2" | |||
///////////////////////////////////////////////////////////////////////////// | |||
#endif // not APSTUDIO_INVOKED | |||
@@ -1,931 +0,0 @@ | |||
/*************************************************************************** | |||
* 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 3 of the License, or * | |||
* (at your option) any later version. * | |||
* * | |||
* This program is distributed in the hope that it will be useful, * | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
* 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 see: * | |||
* <http://www.gnu.org/licenses/>. * | |||
***************************************************************************/ | |||
#include "stdafx.h" | |||
#include "TtsEngObj.h" | |||
#include "src/speak_lib.h" | |||
#include "stdio.h" | |||
#define CTRL_EMBEDDED 1 | |||
CTTSEngObj *m_EngObj; | |||
ISpTTSEngineSite* m_OutputSite; | |||
FILE *f_log2=NULL; | |||
ULONGLONG event_interest; | |||
extern int AddNameData(const char *name, int wide); | |||
extern void InitNamedata(void); | |||
int master_volume = 100; | |||
int master_rate = 0; | |||
int initialised = 0; | |||
int gVolume = 100; | |||
int gSpeed = -1; | |||
int gPitch = -1; | |||
int gRange = -1; | |||
int gEmphasis = 0; | |||
int gSayas = 0; | |||
char g_voice_name[80]; | |||
char *path_install = NULL; | |||
unsigned long audio_offset = 0; | |||
unsigned long audio_latest = 0; | |||
int prev_phoneme = 0; | |||
int prev_phoneme_position = 0; | |||
unsigned long prev_phoneme_time = 0; | |||
unsigned int gBufSize = 0; | |||
wchar_t *TextBuf=NULL; | |||
typedef struct { | |||
unsigned int bufix; | |||
unsigned int textix; | |||
unsigned int cmdlen; | |||
} FRAG_OFFSET; | |||
int srate; // samplerate, Hz/50 | |||
int n_frag_offsets = 0; | |||
int frag_ix = 0; | |||
int frag_count=0; | |||
FRAG_OFFSET *frag_offsets = NULL; | |||
//#define TEST_INPUT // printf input text received from SAPI to espeak_text_log.txt | |||
#ifdef TEST_INPUT | |||
static int utf8_out(unsigned int c, char *buf) | |||
{//==================================== | |||
// write a unicode character into a buffer as utf8 | |||
// returns the number of bytes written | |||
int n_bytes; | |||
int j; | |||
int shift; | |||
static char unsigned code[4] = {0,0xc0,0xe0,0xf0}; | |||
if(c < 0x80) | |||
{ | |||
buf[0] = c; | |||
return(1); | |||
} | |||
if(c >= 0x110000) | |||
{ | |||
buf[0] = ' '; // out of range character code | |||
return(1); | |||
} | |||
if(c < 0x0800) | |||
n_bytes = 1; | |||
else | |||
if(c < 0x10000) | |||
n_bytes = 2; | |||
else | |||
n_bytes = 3; | |||
shift = 6*n_bytes; | |||
buf[0] = code[n_bytes] | (c >> shift); | |||
for(j=0; j<n_bytes; j++) | |||
{ | |||
shift -= 6; | |||
buf[j+1] = 0x80 + ((c >> shift) & 0x3f); | |||
} | |||
return(n_bytes+1); | |||
} // end of utf8_out | |||
#endif | |||
int VisemeCode(unsigned int phoneme_name) | |||
{//====================================== | |||
// Convert eSpeak phoneme name into a SAPI viseme code | |||
int ix; | |||
unsigned int ph; | |||
unsigned int ph_name; | |||
#define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name | |||
const unsigned char initial_to_viseme[128] = { | |||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0,19, 0, 0, 0, 0, 0, | |||
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, | |||
4, 2,18,16,17, 4,18,20,12, 6,16,20,14,21,20, 3, | |||
21,20,13,16,17, 4, 1, 5,20, 7,16, 0, 0, 0, 0, 0, | |||
0, 1,21,16,19, 4,18,20,12, 6, 6,20,14,21,19, 8, | |||
21,20,13,15,19, 7,18, 7,20, 7,15, 0, 0, 0, 0, 0 }; | |||
const unsigned int viseme_exceptions[] = { | |||
PH('a','I'), 11, | |||
PH('a','U'), 9, | |||
PH('O','I'), 10, | |||
PH('t','S'), 16, | |||
PH('d','Z'), 16, | |||
PH('_','|'), 255, | |||
0 | |||
}; | |||
ph_name = phoneme_name & 0xffff; | |||
for(ix=0; (ph = viseme_exceptions[ix]) != 0; ix+=2) | |||
{ | |||
if(ph == ph_name) | |||
{ | |||
return(viseme_exceptions[ix+1]); | |||
} | |||
} | |||
return(initial_to_viseme[phoneme_name & 0x7f]); | |||
} | |||
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
{//================================================================ | |||
int hr; | |||
wchar_t *tailptr; | |||
unsigned int text_offset; | |||
int length; | |||
int phoneme_duration; | |||
int this_viseme; | |||
espeak_EVENT *event; | |||
#define N_EVENTS 100 | |||
int n_Events = 0; | |||
SPEVENT *Event; | |||
SPEVENT Events[N_EVENTS]; | |||
if(m_OutputSite->GetActions() & SPVES_ABORT) | |||
return(1); | |||
m_EngObj->CheckActions(m_OutputSite); | |||
// return the events | |||
for(event=events; (event->type != 0) && (n_Events < N_EVENTS); event++) | |||
{ | |||
audio_latest = event->audio_position + audio_offset; | |||
if((event->type == espeakEVENT_WORD) && (event->length > 0)) | |||
{ | |||
while(((frag_ix+1) < frag_count) && | |||
((event->text_position -1 + frag_offsets[frag_ix+1].cmdlen) >= frag_offsets[frag_ix+1].bufix)) | |||
{ | |||
frag_ix++; | |||
} | |||
text_offset = frag_offsets[frag_ix].textix + | |||
event->text_position -1 - frag_offsets[frag_ix].bufix + frag_offsets[frag_ix].cmdlen; | |||
length = event->length - frag_offsets[frag_ix].cmdlen; | |||
frag_offsets[frag_ix].cmdlen = 0; | |||
if(text_offset < 0) | |||
text_offset = 0; | |||
Event = &Events[n_Events++]; | |||
Event->eEventId = SPEI_WORD_BOUNDARY; | |||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * srate)/10; // ms -> bytes | |||
Event->lParam = text_offset; | |||
Event->wParam = length; | |||
} | |||
if(event->type == espeakEVENT_MARK) | |||
{ | |||
Event = &Events[n_Events++]; | |||
Event->eEventId = SPEI_TTS_BOOKMARK; | |||
Event->elParamType = SPET_LPARAM_IS_STRING; | |||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * srate)/10; // ms -> bytes | |||
Event->lParam = (long)event->id.name; | |||
Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | |||
} | |||
if(event->type == espeakEVENT_PHONEME) | |||
{ | |||
if(event_interest & SPEI_VISEME) | |||
{ | |||
phoneme_duration = audio_latest - prev_phoneme_time; | |||
// ignore some phonemes (which translate to viseme=255) | |||
if((this_viseme = VisemeCode(event->id.number)) != 255) | |||
{ | |||
Event = &Events[n_Events++]; | |||
Event->eEventId = SPEI_VISEME; | |||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||
Event->ullAudioStreamOffset = ((prev_phoneme_position + audio_offset) * srate)/10; // ms -> bytes | |||
Event->lParam = phoneme_duration << 16 | this_viseme; | |||
Event->wParam = VisemeCode(prev_phoneme); | |||
prev_phoneme = event->id.number; | |||
prev_phoneme_time = audio_latest; | |||
prev_phoneme_position = event->audio_position; | |||
} | |||
} | |||
} | |||
#ifdef deleted | |||
if(event->type == espeakEVENT_SENTENCE) | |||
{ | |||
Event = &Events[n_Events++]; | |||
Event->eEventId = SPEI_SENTENCE_BOUNDARY; | |||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * srate)/10; // ms -> bytes | |||
Event->lParam = 0; | |||
Event->wParam = 0; // TEMP | |||
} | |||
#endif | |||
} | |||
if(n_Events > 0) | |||
m_OutputSite->AddEvents(Events, n_Events ); | |||
// return the sound data | |||
hr = m_OutputSite->Write(wav, numsamples*2, NULL); | |||
return(hr); | |||
} | |||
static int ConvertRate(int new_rate) | |||
{//================================= | |||
int rate; | |||
static int rate_table[21] = { | |||
80,110,124,135,145,155,165,173,180,187, | |||
196, | |||
208,220,245,270,300,335,375,420,470,530 }; | |||
rate = new_rate + master_rate; | |||
if(rate < -10) rate = -10; | |||
if(rate > 10) rate = 10; | |||
return(rate_table[rate+10]); | |||
} // end of ConvertRate | |||
static int ConvertPitch(int pitch) | |||
{//=============================== | |||
static int pitch_table[41] = | |||
{0, 0, 0, 0, 0, 0, 0, 0, 4, 8,12,16,20,24,28,32,36,40,44,47,50, | |||
54,58,62,66,70,74,78,82,84,88,92,96,99,99,99,99,99,99,99,99}; | |||
// {0,3,5,8,10,13,15,18,20,23,25,28,30,33,35,38,40,43,45,48,50, | |||
// 53,55,58,60,63,65,68,70,73,75,78,80,83,85,88,90,93,95,97,99}; | |||
if(pitch < -20) pitch = -20; | |||
if(pitch > 20) pitch = 20; | |||
return(pitch_table[pitch+20]); | |||
} | |||
static int ConvertRange(int range) | |||
{//=============================== | |||
static int range_table[21] = {16,28,39,49,58,66,74,81,88,94,100,105,110,115,120,125,130,135,140,145,150}; | |||
if(range < -10) range = -10; | |||
if(range > 10) range = 10; | |||
return(range_table[range+10]/2); | |||
} | |||
HRESULT CTTSEngObj::FinalConstruct() | |||
{//================================= | |||
SPDBG_FUNC( "CTTSEngObj::FinalConstruct" ); | |||
HRESULT hr = S_OK; | |||
#ifdef LOG_DEBUG | |||
f_log2=fopen("C:\\log_espeak","a"); | |||
if(f_log2) fprintf(f_log2,"\n****\n"); | |||
#endif | |||
//--- Init vars | |||
m_hVoiceData = NULL; | |||
m_pVoiceData = NULL; | |||
m_pWordList = NULL; | |||
m_ulNumWords = 0; | |||
m_EngObj = this; | |||
return hr; | |||
} /* CTTSEngObj::FinalConstruct */ | |||
void CTTSEngObj::FinalRelease() | |||
{//============================ | |||
SPDBG_FUNC( "CTTSEngObj::FinalRelease" ); | |||
delete m_pWordList; | |||
#ifdef LOG_DEBUG | |||
if(f_log2!=NULL) fclose(f_log2); | |||
#endif | |||
if( m_pVoiceData ) | |||
{ | |||
::UnmapViewOfFile( (void*)m_pVoiceData ); | |||
} | |||
if( m_hVoiceData ) | |||
{ | |||
::CloseHandle( m_hVoiceData ); | |||
} | |||
} /* CTTSEngObj::FinalRelease */ | |||
// | |||
//=== ISpObjectWithToken Implementation ====================================== | |||
// | |||
void WcharToChar(char *out, const wchar_t *in, int len) | |||
{//==================================================== | |||
int ix; | |||
for(ix=0; ix<len; ix++) | |||
{ | |||
if((out[ix] = (char)in[ix]) == 0) | |||
break; | |||
} | |||
out[len-1] = 0; | |||
} | |||
/***************************************************************************** | |||
* CTTSEngObj::SetObjectToken * | |||
*----------------------------* | |||
* Description: | |||
* Read the "VoiceName" attribute from the registry, and use it to select | |||
* an eSpeak voice file | |||
*****************************************************************************/ | |||
STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken) | |||
{ | |||
strcpy(voice_name,"default"); | |||
SPDBG_FUNC( "CTTSEngObj::SetObjectToken" ); | |||
HRESULT hr = SpGenericSetObjectToken(pToken, m_cpToken); | |||
if( SUCCEEDED( hr ) ) | |||
{ | |||
CSpDynamicString voicename; | |||
CSpDynamicString path; | |||
HRESULT hr2; | |||
int len; | |||
hr2 = m_cpToken->GetStringValue( L"VoiceName", &voicename); | |||
if( SUCCEEDED(hr2) ) | |||
{ | |||
WcharToChar(voice_name,voicename,sizeof(voice_name)); | |||
} | |||
hr2 = m_cpToken->GetStringValue( L"Path", &path); | |||
if( SUCCEEDED(hr2) ) | |||
{ | |||
len = wcslen(path)+1; | |||
path_install = (char *)malloc(len); | |||
WcharToChar(path_install,path,len); | |||
} | |||
} | |||
gVolume = 100; | |||
gSpeed = -1; | |||
gPitch = -1; | |||
gRange = -1; | |||
gEmphasis = 0; | |||
gSayas = 0; | |||
if(initialised==0) | |||
{ | |||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,1); | |||
espeak_SetSynthCallback(SynthCallback); | |||
initialised = 1; | |||
// g_voice_name[0] = 0; | |||
} | |||
strcpy(g_voice_name, voice_name); | |||
espeak_SetVoiceByName(g_voice_name); | |||
return hr; | |||
} /* CTTSEngObj::SetObjectToken */ | |||
// | |||
//=== ISpTTSEngine Implementation ============================================ | |||
// | |||
#define L(c1,c2) (c1<<8)+c2 // combine two characters into an integer | |||
static char *phoneme_names_en[] = { | |||
NULL,NULL,NULL," ",NULL,NULL,NULL,NULL,"'",",", | |||
"A:","a","V","0","aU","@","aI", | |||
"b","tS","d","D","E","3:","eI", | |||
"f","g","h","I","i:","dZ","k", | |||
"l","m","n","N","oU","OI","p", | |||
"r","s","S","t","T","U","u:", | |||
"v","w","j","z","Z", | |||
NULL | |||
}; | |||
int CTTSEngObj::WritePhonemes(SPPHONEID *phons, wchar_t *pW) | |||
{//========================================================= | |||
int ph; | |||
int ix=2; | |||
int skip=0; | |||
int maxph = 49; | |||
char *p; | |||
int j; | |||
int lang; | |||
char **phoneme_names; | |||
char phbuf[200]; | |||
espeak_VOICE *voice; | |||
voice = espeak_GetCurrentVoice(); | |||
lang = (voice->languages[1] << 8) + (voice->languages[2]); | |||
phoneme_names = phoneme_names_en; | |||
maxph = 0; | |||
if(lang == L('e','n')) | |||
{ | |||
phoneme_names = phoneme_names_en; | |||
maxph = 49; | |||
} | |||
if(maxph == 0) | |||
return(0); | |||
strcpy(phbuf,"[["); | |||
while(((ph = *phons++) != 0) && (ix < (sizeof(phbuf) - 3))) | |||
{ | |||
if(skip) | |||
{ | |||
skip = 0; | |||
continue; | |||
} | |||
if(ph > maxph) | |||
continue; | |||
p = phoneme_names[phons[0]]; // look at the phoneme after this one | |||
if(p != NULL) | |||
{ | |||
if(p[0] == '\'') | |||
{ | |||
phbuf[ix++] = '\''; // primary stress, put before the vowel, not after | |||
skip=1; | |||
} | |||
if(p[0] == ',') | |||
{ | |||
phbuf[ix++] = ','; // secondary stress | |||
skip=1; | |||
} | |||
} | |||
p = phoneme_names[ph]; // look at this phoneme | |||
if(p != NULL) | |||
{ | |||
strcpy(&phbuf[ix],p); | |||
ix += strlen(p); | |||
} | |||
} | |||
strcpy(&phbuf[ix],"]]"); | |||
ix += 2; | |||
if(pW != NULL) | |||
{ | |||
for(j=0; j<=ix; j++) | |||
{ | |||
pW[j] = phbuf[j]; | |||
} | |||
} | |||
return(strlen(phbuf)); | |||
} | |||
int CTTSEngObj::ProcessFragList(const SPVTEXTFRAG* pTextFragList, wchar_t *pW_start, ISpTTSEngineSite* pOutputSite, int *n_text) | |||
{//============================================================================================================================ | |||
int action; | |||
int control; | |||
wchar_t *pW; | |||
const SPVSTATE *state; | |||
unsigned int ix; | |||
unsigned int len; | |||
unsigned int total=0; | |||
char cmdbuf[50]; | |||
wchar_t markbuf[32]; | |||
int speed; | |||
int volume; | |||
int pitch; | |||
int range; | |||
int emphasis; | |||
int sayas; | |||
unsigned int text_offset = 0; | |||
frag_count = 0; | |||
frag_ix = 0; | |||
pW = pW_start; | |||
// check that the current voice is correct for this request | |||
if(strcmp(voice_name, g_voice_name) != 0) | |||
{ | |||
strcpy(g_voice_name, voice_name); | |||
espeak_SetVoiceByName(g_voice_name); | |||
} | |||
while(pTextFragList != NULL) | |||
{ | |||
action = pTextFragList->State.eAction; | |||
control = pOutputSite->GetActions(); | |||
len = pTextFragList->ulTextLen; | |||
if(control & SPVES_ABORT) | |||
break; | |||
CheckActions(pOutputSite); | |||
sayas = 0; | |||
state = &pTextFragList->State; | |||
switch(action) | |||
{ | |||
case SPVA_SpellOut: | |||
sayas = 0x12; // SAYAS_CHARS; // drop through to SPVA_Speak | |||
case SPVA_Speak: | |||
text_offset = pTextFragList->ulTextSrcOffset; | |||
audio_offset = audio_latest; | |||
#ifdef deleted | |||
// attempt to recognise when JAWS is spelling, it doesn't use SPVA_SpellOut | |||
if((pW != NULL) && (*n_text == 1) && ((len == 1) || ((len==2) && (pTextFragList->pTextStart[1]==' ')))) | |||
{ | |||
// A single text fragment with one character. Speak as a character, not a word | |||
sayas = 0x11; | |||
gSayas = 0; | |||
} | |||
#endif | |||
if(frag_count >= n_frag_offsets) | |||
{ | |||
if((frag_offsets = (FRAG_OFFSET *)realloc(frag_offsets,sizeof(FRAG_OFFSET)*(frag_count+500))) != NULL) | |||
{ | |||
n_frag_offsets = frag_count+500; | |||
} | |||
} | |||
// first set the volume, rate, pitch | |||
volume = (state->Volume * master_volume)/100; | |||
speed = ConvertRate(state->RateAdj); | |||
pitch = ConvertPitch(state->PitchAdj.MiddleAdj); | |||
range = ConvertRange(state->PitchAdj.RangeAdj); | |||
emphasis = state->EmphAdj; | |||
if(emphasis != 0) | |||
emphasis = 3; | |||
len = 0; | |||
if(volume != gVolume) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dA",CTRL_EMBEDDED,volume); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
if(speed != gSpeed) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dS",CTRL_EMBEDDED,speed); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
if(pitch != gPitch) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dP",CTRL_EMBEDDED,pitch); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
if(range != gRange) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dR",CTRL_EMBEDDED,range); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
if(emphasis != gEmphasis) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dF",CTRL_EMBEDDED,emphasis); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
if((sayas != gSayas) || (sayas != 0)) | |||
{ | |||
sprintf(&cmdbuf[len],"%c%dY",CTRL_EMBEDDED,sayas); | |||
len += strlen(&cmdbuf[len]); | |||
} | |||
gVolume = volume; | |||
gSpeed = speed; | |||
gPitch = pitch; | |||
gRange = range; | |||
gEmphasis = emphasis; | |||
gSayas = sayas; | |||
total += (len + pTextFragList->ulTextLen); | |||
if(pTextFragList->ulTextLen > 0) | |||
{ | |||
total++; | |||
} | |||
if(pW != NULL) | |||
{ | |||
for(ix=0; ix<len; ix++) | |||
{ | |||
*pW++ = cmdbuf[ix]; | |||
} | |||
frag_offsets[frag_count].textix = text_offset; | |||
frag_offsets[frag_count].bufix = pW - pW_start; | |||
frag_offsets[frag_count].cmdlen = len; | |||
#ifdef TEST_INPUT | |||
{ | |||
FILE *f; | |||
unsigned int c; | |||
int n; | |||
char buf[10]; | |||
f = fopen("C:\\espeak_text_log.txt","a"); | |||
if(f != NULL) | |||
{ | |||
fprintf(f,"----------\n"); | |||
for(ix=0; ix<pTextFragList->ulTextLen; ix++) | |||
{ | |||
c = pTextFragList->pTextStart[ix]; | |||
n = utf8_out(c,buf); | |||
buf[n] = 0; | |||
fprintf(f,"%s",buf); | |||
} | |||
fprintf(f,"\n"); | |||
fclose(f); | |||
} | |||
} | |||
#endif | |||
for(ix=0; ix<pTextFragList->ulTextLen; ix++) | |||
{ | |||
*pW++ = pTextFragList->pTextStart[ix]; | |||
} | |||
if(pTextFragList->ulTextLen > 0) | |||
{ | |||
*pW++ = ' '; | |||
} | |||
} | |||
frag_count++; | |||
break; | |||
case SPVA_Bookmark: | |||
total += (2 + pTextFragList->ulTextLen); | |||
if(pW != NULL) | |||
{ | |||
int index; | |||
for(ix=0; ix<pTextFragList->ulTextLen; ix++) | |||
{ | |||
markbuf[ix] = (char )pTextFragList->pTextStart[ix]; | |||
} | |||
markbuf[ix] = 0; | |||
if((index = AddNameData((const char *)markbuf,1)) >= 0) | |||
{ | |||
sprintf(cmdbuf,"%c%dM",CTRL_EMBEDDED,index); | |||
len = strlen(cmdbuf); | |||
for(ix=0; ix<len; ix++) | |||
{ | |||
*pW++ = cmdbuf[ix]; | |||
} | |||
} | |||
} | |||
break; | |||
case SPVA_Pronounce: | |||
total += WritePhonemes(state->pPhoneIds, pW); | |||
if(pW != NULL) | |||
{ | |||
pW += total; | |||
} | |||
break; | |||
} | |||
pTextFragList = pTextFragList->pNext; | |||
} | |||
if(pW != NULL) | |||
{ | |||
*pW = 0; | |||
} | |||
*n_text = frag_count; | |||
return(total); | |||
} // end of ProcessFragList | |||
/***************************************************************************** | |||
* CTTSEngObj::Speak * | |||
*-------------------* | |||
* Description: | |||
* This is the primary method that SAPI calls to render text. | |||
*----------------------------------------------------------------------------- | |||
* Input Parameters | |||
* | |||
* pUser | |||
* Pointer to the current user profile object. This object contains | |||
* information like what languages are being used and this object | |||
* also gives access to resources like the SAPI master lexicon object. | |||
* | |||
* dwSpeakFlags | |||
* This is a set of flags used to control the behavior of the | |||
* SAPI voice object and the associated engine. | |||
* | |||
* VoiceFmtIndex | |||
* Zero based index specifying the output format that should | |||
* be used during rendering. | |||
* | |||
* pTextFragList | |||
* A linked list of text fragments to be rendered. There is | |||
* one fragement per XML state change. If the input text does | |||
* not contain any XML markup, there will only be a single fragment. | |||
* | |||
* pOutputSite | |||
* The interface back to SAPI where all output audio samples and events are written. | |||
* | |||
* Return Values | |||
* S_OK - This should be returned after successful rendering or if | |||
* rendering was interrupted because *pfContinue changed to FALSE. | |||
* E_INVALIDARG | |||
* E_OUTOFMEMORY | |||
* | |||
*****************************************************************************/ | |||
STDMETHODIMP CTTSEngObj::Speak( DWORD dwSpeakFlags, | |||
REFGUID rguidFormatId, | |||
const WAVEFORMATEX * pWaveFormatEx, | |||
const SPVTEXTFRAG* pTextFragList, | |||
ISpTTSEngineSite* pOutputSite ) | |||
{ | |||
SPDBG_FUNC( "CTTSEngObj::Speak" ); | |||
HRESULT hr = S_OK; | |||
unsigned int size; | |||
int xVolume; | |||
int xSpeed; | |||
int xPitch; | |||
int xRange; | |||
int xEmphasis; | |||
int xSayas; | |||
int punctuation; | |||
int n_text_frag=0; | |||
//--- Check args | |||
if( SP_IS_BAD_INTERFACE_PTR( pOutputSite ) || | |||
SP_IS_BAD_READ_PTR( pTextFragList ) ) | |||
{ | |||
hr = E_INVALIDARG; | |||
} | |||
else | |||
{ | |||
InitNamedata(); | |||
//--- Init some vars | |||
m_pCurrFrag = pTextFragList; | |||
m_pNextChar = m_pCurrFrag->pTextStart; | |||
m_pEndChar = m_pNextChar + m_pCurrFrag->ulTextLen; | |||
m_ullAudioOff = 0; | |||
m_OutputSite = pOutputSite; | |||
pOutputSite->GetEventInterest(&event_interest); | |||
xVolume = gVolume; | |||
xSpeed = gSpeed; | |||
xPitch = gPitch; | |||
xRange = gRange; | |||
xEmphasis = gEmphasis; | |||
xSayas = gSayas; | |||
// find the size of the text buffer needed for this Speak() request | |||
size = ProcessFragList(pTextFragList,NULL,pOutputSite,&n_text_frag); | |||
gVolume = xVolume; | |||
gSpeed = xSpeed; | |||
gPitch = xPitch; | |||
gRange = xRange; | |||
gEmphasis = xEmphasis; | |||
gSayas = xSayas; | |||
punctuation = 0; | |||
if(dwSpeakFlags & SPF_NLP_SPEAK_PUNC) | |||
punctuation = 1; | |||
espeak_SetParameter(espeakPUNCTUATION,punctuation,0); | |||
size = (size + 50)*sizeof(wchar_t); | |||
if(size > gBufSize) | |||
{ | |||
size += 1000; // some extra so we don't need to realloc() again too often | |||
TextBuf = (wchar_t *)realloc(TextBuf,size); | |||
if(TextBuf == NULL) | |||
{ | |||
gBufSize=0; | |||
return(1); | |||
} | |||
gBufSize = size; | |||
} | |||
audio_latest = 0; | |||
prev_phoneme = 0; | |||
prev_phoneme_time = 0; | |||
prev_phoneme_position = 0; | |||
size = ProcessFragList(pTextFragList,TextBuf,pOutputSite,&n_text_frag); | |||
if(size > 0) | |||
{ | |||
espeak_Synth(TextBuf,0,0,POS_CHARACTER,0,espeakCHARS_WCHAR | espeakKEEP_NAMEDATA | espeakPHONEMES,NULL,NULL); | |||
} | |||
} | |||
return hr; | |||
} /* CTTSEngObj::Speak */ | |||
HRESULT CTTSEngObj::CheckActions( ISpTTSEngineSite* pOutputSite ) | |||
{//============================================================== | |||
int control; | |||
USHORT volume; | |||
long rate; | |||
control = pOutputSite->GetActions(); | |||
if(control & SPVES_VOLUME) | |||
{ | |||
if(pOutputSite->GetVolume(&volume) == S_OK) | |||
{ | |||
master_volume = volume; | |||
} | |||
} | |||
if(control & SPVES_RATE) | |||
{ | |||
if(pOutputSite->GetRate(&rate) == S_OK) | |||
{ | |||
master_rate = rate; | |||
} | |||
} | |||
return(S_OK); | |||
} // end of CTTSEngObj::CheckActions | |||
STDMETHODIMP CTTSEngObj::GetOutputFormat( const GUID * pTargetFormatId, const WAVEFORMATEX * pTargetWaveFormatEx, | |||
GUID * pDesiredFormatId, WAVEFORMATEX ** ppCoMemDesiredWaveFormatEx ) | |||
{//======================================================================== | |||
SPDBG_FUNC( "CTTSEngObj::GetVoiceFormat" ); | |||
HRESULT hr = S_OK; | |||
enum SPSTREAMFORMAT sample_rate = SPSF_22kHz16BitMono; | |||
srate = 441; | |||
if(espeak_GetParameter(espeakVOICETYPE,1) == 1) | |||
{ | |||
srate = 320; | |||
sample_rate = SPSF_16kHz16BitMono; // an mbrola voice | |||
} | |||
hr = SpConvertStreamFormatEnum(sample_rate, pDesiredFormatId, ppCoMemDesiredWaveFormatEx); | |||
return hr; | |||
} /* CTTSEngObj::GetVoiceFormat */ | |||
int FAR PASCAL CompileDictionary(const char *voice, const char *path_log) | |||
{//=========================================================== | |||
FILE *f_log3; | |||
char fname[120]; | |||
f_log3 = fopen(path_log,"w"); | |||
sprintf(fname,"%s/",path_install); | |||
espeak_SetVoiceByName(voice); | |||
espeak_CompileDictionary(fname,f_log3,0); | |||
fclose(f_log3); | |||
return(0); | |||
} | |||
@@ -1,124 +0,0 @@ | |||
/****************************************************************************** | |||
* TtsEngObj.h * | |||
*-------------* | |||
* This is the header file for the sample CTTSEngObj class definition. | |||
*------------------------------------------------------------------------------ | |||
* Copyright (c) Microsoft Corporation. All rights reserved. | |||
* | |||
******************************************************************************/ | |||
#ifndef TtsEngObj_h | |||
#define TtsEngObj_h | |||
//--- Additional includes | |||
#ifndef __TtsEng_h__ | |||
#include "ttseng.h" | |||
#endif | |||
#ifndef SPDDKHLP_h | |||
#include <spddkhlp.h> | |||
#endif | |||
#ifndef SPCollec_h | |||
#include <spcollec.h> | |||
#endif | |||
#include "resource.h" | |||
__declspec( dllexport )int FAR PASCAL _export CompileDictionary(const char *voice, const char *path_log); | |||
//=== Constants ==================================================== | |||
//=== Class, Enum, Struct and Union Declarations =================== | |||
//=== Enumerated Set Definitions =================================== | |||
//=== Function Type Definitions ==================================== | |||
//=== Class, Struct and Union Definitions ========================== | |||
/*** CSentItem | |||
* This object is a helper class | |||
*/ | |||
class CSentItem | |||
{ | |||
public: | |||
CSentItem() { memset( this, 0, sizeof(*this) ); } | |||
CSentItem( CSentItem& Other ) { memcpy( this, &Other, sizeof( Other ) ); } | |||
/*--- Data members ---*/ | |||
const SPVSTATE* pXmlState; | |||
LPCWSTR pItem; | |||
ULONG ulItemLen; | |||
ULONG ulItemSrcOffset; // Original source character position | |||
ULONG ulItemSrcLen; // Length of original source item in characters | |||
}; | |||
typedef CSPList<CSentItem,CSentItem&> CItemList; | |||
/*** CTTSEngObj COM object ******************************** | |||
*/ | |||
class ATL_NO_VTABLE CTTSEngObj : | |||
public CComObjectRootEx<CComMultiThreadModel>, | |||
public CComCoClass<CTTSEngObj, &CLSID_SampleTTSEngine>, | |||
public ISpTTSEngine, | |||
public ISpObjectWithToken | |||
{ | |||
/*=== ATL Setup ===*/ | |||
public: | |||
DECLARE_REGISTRY_RESOURCEID(IDR_SAMPLETTSENGINE) | |||
DECLARE_PROTECT_FINAL_CONSTRUCT() | |||
BEGIN_COM_MAP(CTTSEngObj) | |||
COM_INTERFACE_ENTRY(ISpTTSEngine) | |||
COM_INTERFACE_ENTRY(ISpObjectWithToken) | |||
END_COM_MAP() | |||
/*=== Methods =======*/ | |||
public: | |||
/*--- Constructors/Destructors ---*/ | |||
HRESULT FinalConstruct(); | |||
void FinalRelease(); | |||
/*=== Interfaces ====*/ | |||
public: | |||
//--- ISpObjectWithToken ---------------------------------- | |||
STDMETHODIMP SetObjectToken( ISpObjectToken * pToken ); | |||
STDMETHODIMP GetObjectToken( ISpObjectToken ** ppToken ) | |||
{ return SpGenericGetObjectToken( ppToken, m_cpToken ); } | |||
//--- ISpTTSEngine -------------------------------------------- | |||
STDMETHOD(Speak)( DWORD dwSpeakFlags, | |||
REFGUID rguidFormatId, const WAVEFORMATEX * pWaveFormatEx, | |||
const SPVTEXTFRAG* pTextFragList, ISpTTSEngineSite* pOutputSite ); | |||
STDMETHOD(GetOutputFormat)( const GUID * pTargetFormatId, const WAVEFORMATEX * pTargetWaveFormatEx, | |||
GUID * pDesiredFormatId, WAVEFORMATEX ** ppCoMemDesiredWaveFormatEx ); | |||
HRESULT CheckActions( ISpTTSEngineSite* pOutputSite ); | |||
int ProcessFragList(const SPVTEXTFRAG* pTextFragList, wchar_t *pW, ISpTTSEngineSite* pOutputSite, int *n_text); | |||
int WritePhonemes(SPPHONEID *phons, wchar_t *pW_start); | |||
private: | |||
/*--- Non interface methods ---*/ | |||
/*=== Member Data ===*/ | |||
private: | |||
CComPtr<ISpObjectToken> m_cpToken; | |||
HANDLE m_hVoiceData; | |||
void* m_pVoiceData; | |||
//--- Voice (word/audio data) list | |||
// Note: You will probably have something more sophisticated here | |||
// we are just trying to keep it simple for the example. | |||
VOICEITEM* m_pWordList; | |||
ULONG m_ulNumWords; | |||
//--- Working variables to walk the text fragment list during Speak() | |||
const SPVTEXTFRAG* m_pCurrFrag; | |||
const WCHAR* m_pNextChar; | |||
const WCHAR* m_pEndChar; | |||
ULONGLONG m_ullAudioOff; | |||
char voice_name[80]; | |||
}; | |||
#endif //--- This must be the last line in the file |
@@ -1,25 +0,0 @@ | |||
HKCR | |||
{ | |||
TtsEng.SampleTTSEngine.1 = s 'SampleTTSEngine Class' | |||
{ | |||
CLSID = s '{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}' | |||
} | |||
TtsEng.SampleTTSEngine = s 'SampleTTSEngine Class' | |||
{ | |||
CLSID = s '{BE985C8D-BE32-4A22-AA93-55C16A6D1D91}' | |||
CurVer = s 'TtsEng.SampleTTSEngine.1' | |||
} | |||
NoRemove CLSID | |||
{ | |||
ForceRemove {BE985C8D-BE32-4A22-AA93-55C16A6D1D91} = s 'SampleTTSEngine Class' | |||
{ | |||
ProgID = s 'TtsEng.SampleTTSEngine.1' | |||
VersionIndependentProgID = s 'TtsEng.SampleTTSEngine' | |||
InprocServer32 = s '%MODULE%' | |||
{ | |||
val ThreadingModel = s 'Both' | |||
} | |||
'TypeLib' = s '{7192AA2F-F759-43E9-91E7-226371EF6B2F}' | |||
} | |||
} | |||
} |
@@ -1,78 +0,0 @@ | |||
/**************************************************************************** | |||
* * | |||
* VERSION.H -- Version information for internal builds * | |||
* * | |||
* This file is only modified by the official builder to update the * | |||
* VERSION, VER_PRODUCTVERSION and VER_PRODUCTVERSION_STR values * | |||
* * | |||
* version.h is created on the fly from verhead.bat and vertail.h, * | |||
* with the current version numbers inserted in between * | |||
* * | |||
****************************************************************************/ | |||
#ifndef VER_H | |||
/* ver.h defines constants needed by the VS_VERSION_INFO structure */ | |||
//#include <winver.h> | |||
#endif | |||
#include <windows.h> | |||
#define VER_FILETYPE VFT_APP | |||
#define VER_FILESUBTYPE VFT2_UNKNOWN | |||
#define VER_FILEDESCRIPTION_STR "TTS SAMPLE ENGINE 5" | |||
#define VER_INTERNALNAME_STR "TTSSAMPLEENG5" | |||
/*--------------------------------------------------------------*/ | |||
/* the following entry should be phased out in favor of */ | |||
/* VER_PRODUCTVERSION_STR, but is used in the shell today. */ | |||
/*--------------------------------------------------------------*/ | |||
/*--------------------------------------------------------------*/ | |||
/* the following values should be modified by the official */ | |||
/* builder for each build */ | |||
/*--------------------------------------------------------------*/ | |||
#define VERSION "5.0" | |||
#define VER_FILEVERSION_STR "5.0" | |||
#define VER_FILEVERSION 5,0 | |||
#define VER_PRODUCTVERSION_STR "5.0" | |||
#define VER_PRODUCTVERSION 5,0 | |||
#define OFFICIAL 1 | |||
#define FINAL 1 | |||
/*--------------------------------------------------------------*/ | |||
/* the following section defines values used in the version */ | |||
/* data structure for all files, and which do not change. */ | |||
/*--------------------------------------------------------------*/ | |||
/* default is nodebug */ | |||
#if _DEBUG | |||
#define VER_DEBUG VS_FF_DEBUG | |||
#else | |||
#define VER_DEBUG 0 | |||
#endif | |||
/* default is privatebuild */ | |||
#ifndef OFFICIAL | |||
#define VER_PRIVATEBUILD VS_FF_PRIVATEBUILD | |||
#else | |||
#define VER_PRIVATEBUILD 0 | |||
#endif | |||
/* default is prerelease */ | |||
#ifndef FINAL | |||
#define VER_PRERELEASE VS_FF_PRERELEASE | |||
#else | |||
#define VER_PRERELEASE 0 | |||
#endif | |||
#define VER_FILEFLAGSMASK VS_FFI_FILEFLAGSMASK | |||
#define VER_FILEOS VOS_DOS_WINDOWS32 | |||
#define VER_FILEFLAGS (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG) | |||
#define VER_COMPANYNAME_STR "Microsoft Corporation\0" | |||
#define VER_PRODUCTNAME_STR "Microsoft\256 Windows(TM) Operating System\0" | |||
#define VER_LEGALTRADEMARKS_STR \ | |||
"Microsoft\256 is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation.\0" | |||
//#include "\sapi5\build\common.ver" |
@@ -1,44 +0,0 @@ | |||
#ifndef _MAC | |||
///////////////////////////////////////////////////////////////////////////// | |||
// | |||
// Version | |||
// | |||
VS_VERSION_INFO VERSIONINFO | |||
FILEVERSION 1,0,48,00 | |||
PRODUCTVERSION 1,0,48,00 | |||
FILEFLAGSMASK 0x3fL | |||
#ifdef _DEBUG | |||
FILEFLAGS 0x1L | |||
#else | |||
FILEFLAGS 0x0L | |||
#endif | |||
FILEOS 0x40004L | |||
FILETYPE 0x1L | |||
FILESUBTYPE 0x0L | |||
BEGIN | |||
BLOCK "StringFileInfo" | |||
BEGIN | |||
BLOCK "040904b0" | |||
BEGIN | |||
VALUE "Comments", "\0" | |||
VALUE "CompanyName", "Jonathan Duddington\0" | |||
VALUE "FileDescription", "Text to Speech\0" | |||
VALUE "FileVersion", "1, 0,48,00\0" | |||
VALUE "InternalName", "espeak1.48\0" | |||
VALUE "LegalCopyright", "Copyright (c) Jonathan Duddington\0" | |||
VALUE "LegalTrademarks", "\0" | |||
VALUE "OriginalFilename", "espeak_sapi.dll\0" | |||
VALUE "PrivateBuild", "\0" | |||
VALUE "ProductName", "espeak TTS\0" | |||
VALUE "ProductVersion", "1, 0, 48, 00\0" | |||
VALUE "SpecialBuild", "\0" | |||
END | |||
END | |||
BLOCK "VarFileInfo" | |||
BEGIN | |||
VALUE "Translation", 0x409, 1200 | |||
END | |||
END | |||
#endif // !_MAC |
@@ -1,54 +0,0 @@ | |||
From: http://sourceforge.net/forum/message.php?msg_id=6511989 | |||
//=========================================================== | |||
RE: ESpeak for Windows Mobile 6? | |||
By: Silas S. Brown (ssb22) - 2009-02-24 10:35 | |||
On Ubuntu 8 there is a package called pocketpc-g++. | |||
# apt-get install pocketpc-g++ | |||
Then download eSpeak sources, do "cd src", and make the following changes: | |||
[jonsd NOTE: These changes are now included in eSpeak 1.40.13 and later] | |||
1. In readclause.cpp, put #ifndef WINCE and #endif around const int wcslen(const wchar_t *str). This is because we will need the wchar functions but we will NOT need that particular one which is already provided by the WinCE library (I don't know why that one is and the others aren't). | |||
2. In voices.cpp, where it says "dir = opendir(path))", put (char*) before "path" (in WinCE the parameter is not declared as const char* even though it should be, and the cast is needed to get it to compile.) | |||
Now type this command: | |||
make speak CXX=arm-wince-pe-g++ USE_AUDIO="-DNEED_GETOPT -DNEED_WCHAR_FUNCTIONS -DWINCE" LIB_AUDIO= | |||
(there is nothing after the LIB_AUDIO= parameter) | |||
This will give you a binary called "speak" which you can copy to the Windows Mobile device. You will also need to set up an espeak-data directory, and compile the dictsource on the device. | |||
[jonsd NOTE: It's OK to use the espeak-data from the standard eSpeak, you don't need to compile it on the Windows Mobile device.] | |||
Of course the result will not be able to produce any sound, only write it to a file. But that should be good enough for use in other programs, as long as the file does not get too big. | |||
From: http://sourceforge.net/forum/message.php?msg_id=6512189 | |||
//=========================================================== | |||
By the way, Ubuntu also has a package called pocketpc-cab which can be used to make CAB files that will extract on the PocketPC. | |||
# apt-get install pocketpc-cab | |||
For example, to put src/speak onto /bin, and dictsource/ and espeak-data/ directories onto the root directory of the PocketPC, do: | |||
echo src/speak /bin > espeak-files | |||
find dictsource espeak-data -type f | grep -v /mb | sed -e 's,\(.*\)/[^/]*$,& /\1,' >> espeak-files | |||
pocketpc-cab -p JonD -a eSpeak espeak-files espeak.cab | |||
Then bluetooth espeak.cab across and you're done (except for running it with the right arguments including data path, compiling dictsource, etc). This is more convenient than trying to copy across the individual files if you don't have ActiveSync or whatever. It should also make for a more convenient distribution. | |||
From and email from Silas Brown | |||
//============================= | |||
By default, GNU C++ for PocketPC compiles code to generate a debug trace file; if you want to turn this off, try running this command on the "speak" binary after compiling: | |||
python -c 'd=open("speak","rb").read().replace("/temp/wcetrace.log","/notexist/tracelog") ; open("speak","wb").write(d)' | |||