Browse Source

Remove the platforms directory.

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
Reece H. Dunn 9 years ago
parent
commit
5edf8f8548
82 changed files with 0 additions and 8197 deletions
  1. 0
    11
      platforms/big_endian/Makefile
  2. 0
    18
      platforms/big_endian/README
  3. 0
    460
      platforms/big_endian/espeak-phoneme-data.c
  4. 0
    61
      platforms/dos/MAKEFILE.DJ
  5. 0
    95
      platforms/dos/SPEECH.H
  6. 0
    24
      platforms/dos/readme.dos
  7. 0
    122
      platforms/riscos/!Help
  8. 0
    90
      platforms/riscos/Makefile
  9. 0
    14
      platforms/riscos/ReadMe
  10. 0
    1493
      platforms/riscos/c/speak_riscos
  11. 0
    22
      platforms/riscos/copysource
  12. 0
    45
      platforms/riscos/h/RegNames
  13. 0
    3
      platforms/riscos/h/StdAfx
  14. 0
    68
      platforms/riscos/h/speech
  15. 0
    3
      platforms/riscos/h/wchar
  16. 0
    12
      platforms/riscos/h/wctype
  17. BIN
      platforms/riscos/o/assemb
  18. BIN
      platforms/riscos/o/cmhgfile
  19. 0
    127
      platforms/riscos/s/assemb
  20. 0
    22
      platforms/riscos/s/cmhgfile
  21. 0
    56
      platforms/windows/Readme.txt
  22. BIN
      platforms/windows/espeakedit/PAStaticWMME.lib
  23. 0
    14
      platforms/windows/espeakedit/ReadMe.txt
  24. 0
    715
      platforms/windows/espeakedit/espeakedit.dsp
  25. 0
    29
      platforms/windows/espeakedit/espeakedit.dsw
  26. BIN
      platforms/windows/espeakedit/espeakedit.opt
  27. 0
    149
      platforms/windows/espeakedit/espeakedit.plg
  28. BIN
      platforms/windows/espeakedit/mondrian.icns
  29. BIN
      platforms/windows/espeakedit/mondros2.ico
  30. BIN
      platforms/windows/espeakedit/sample.ico
  31. 0
    32
      platforms/windows/espeakedit/sample.rc
  32. 0
    3
      platforms/windows/espeakedit/src/StdAfx.h
  33. 0
    72
      platforms/windows/espeakedit/src/speech.h
  34. 0
    4
      platforms/windows/espeakedit/src/stdint.h
  35. 0
    3
      platforms/windows/espeakedit/src_copy/StdAfx.h
  36. 0
    72
      platforms/windows/espeakedit/src_copy/speech.h
  37. 0
    573
      platforms/windows/make_espeak.iss
  38. 0
    64
      platforms/windows/make_espeakedit.iss
  39. 0
    37
      platforms/windows/mingw/espeak_test_lib.c
  40. 0
    169
      platforms/windows/mingw/espeak_win_1_0.txt
  41. 0
    16
      platforms/windows/mingw/readme.txt
  42. 0
    11
      platforms/windows/windows_cmd/!ReadMe.txt
  43. BIN
      platforms/windows/windows_cmd/PAStaticWMME.lib
  44. 0
    8
      platforms/windows/windows_cmd/StdAfx.cpp
  45. 0
    22
      platforms/windows/windows_cmd/StdAfx.h
  46. 0
    214
      platforms/windows/windows_cmd/espeak.dsp
  47. 0
    29
      platforms/windows/windows_cmd/espeak.dsw
  48. 0
    73
      platforms/windows/windows_cmd/src/speech.h
  49. 0
    4
      platforms/windows/windows_cmd/src/stdint.h
  50. 0
    16
      platforms/windows/windows_dll/!ReadMe.txt
  51. 0
    8
      platforms/windows/windows_dll/StdAfx.cpp
  52. 0
    24
      platforms/windows/windows_dll/StdAfx.h
  53. 0
    237
      platforms/windows/windows_dll/espeak.dsp
  54. 0
    29
      platforms/windows/windows_dll/espeak.dsw
  55. 0
    24
      platforms/windows/windows_dll/src/StdAfx.h
  56. 0
    629
      platforms/windows/windows_dll/src/speak_lib.h
  57. 0
    75
      platforms/windows/windows_dll/src/speech.h
  58. 0
    4
      platforms/windows/windows_dll/src/stdint.h
  59. 0
    11
      platforms/windows/windows_sapi/!ReadMe.txt
  60. BIN
      platforms/windows/windows_sapi/TtsEng.aps
  61. 0
    94
      platforms/windows/windows_sapi/TtsEng.h
  62. BIN
      platforms/windows/windows_sapi/TtsEng.tlb
  63. 0
    47
      platforms/windows/windows_sapi/TtsEng_i.c
  64. 0
    18
      platforms/windows/windows_sapi/resource.h
  65. BIN
      platforms/windows/windows_sapi/sapi.lib
  66. 0
    3
      platforms/windows/windows_sapi/src/StdAfx.h
  67. 0
    77
      platforms/windows/windows_sapi/src/speech.h
  68. 0
    4
      platforms/windows/windows_sapi/src/stdint.h
  69. 0
    14
      platforms/windows/windows_sapi/stdafx.cpp
  70. 0
    32
      platforms/windows/windows_sapi/stdafx.h
  71. 0
    77
      platforms/windows/windows_sapi/ttseng.cpp
  72. 0
    5
      platforms/windows/windows_sapi/ttseng.def
  73. 0
    284
      platforms/windows/windows_sapi/ttseng.dsp
  74. 0
    29
      platforms/windows/windows_sapi/ttseng.dsw
  75. 0
    50
      platforms/windows/windows_sapi/ttseng.idl
  76. 0
    91
      platforms/windows/windows_sapi/ttseng.rc
  77. 0
    931
      platforms/windows/windows_sapi/ttsengobj.cpp
  78. 0
    124
      platforms/windows/windows_sapi/ttsengobj.h
  79. 0
    25
      platforms/windows/windows_sapi/ttsengobj.rgs
  80. 0
    78
      platforms/windows/windows_sapi/ttsengver.h
  81. 0
    44
      platforms/windows/windows_sapi/version.rc2
  82. 0
    54
      platforms/windowsMobile/Info.txt

+ 0
- 11
platforms/big_endian/Makefile View File

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

+ 0
- 18
platforms/big_endian/README View File

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

+ 0
- 460
platforms/big_endian/espeak-phoneme-data.c View File

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

+ 0
- 61
platforms/dos/MAKEFILE.DJ View File

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


+ 0
- 95
platforms/dos/SPEECH.H View File

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


+ 0
- 24
platforms/dos/readme.dos View File

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

+ 0
- 122
platforms/riscos/!Help View File

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

+ 0
- 90
platforms/riscos/Makefile View File

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

+ 0
- 14
platforms/riscos/ReadMe View File

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

+ 0
- 1493
platforms/riscos/c/speak_riscos
File diff suppressed because it is too large
View File


+ 0
- 22
platforms/riscos/copysource View File

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

+ 0
- 45
platforms/riscos/h/RegNames View File

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


+ 0
- 3
platforms/riscos/h/StdAfx View File

@@ -1,3 +0,0 @@
// This is a dummy file.
// A file of this name is needed on Windows

+ 0
- 68
platforms/riscos/h/speech View File

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


+ 0
- 3
platforms/riscos/h/wchar View File

@@ -1,3 +0,0 @@

const wchar_t *wcschr(const wchar_t *str, int c);


+ 0
- 12
platforms/riscos/h/wctype View File

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


BIN
platforms/riscos/o/assemb View File


BIN
platforms/riscos/o/cmhgfile View File


+ 0
- 127
platforms/riscos/s/assemb View File

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

+ 0
- 22
platforms/riscos/s/cmhgfile View File

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

+ 0
- 56
platforms/windows/Readme.txt View File

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

BIN
platforms/windows/espeakedit/PAStaticWMME.lib View File


+ 0
- 14
platforms/windows/espeakedit/ReadMe.txt View File

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

+ 0
- 715
platforms/windows/espeakedit/espeakedit.dsp View File

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

+ 0
- 29
platforms/windows/espeakedit/espeakedit.dsw View File

@@ -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>
{{{
}}}
###############################################################################

BIN
platforms/windows/espeakedit/espeakedit.opt View File


+ 0
- 149
platforms/windows/espeakedit/espeakedit.plg View File

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

BIN
platforms/windows/espeakedit/mondrian.icns View File


BIN
platforms/windows/espeakedit/mondros2.ico View File


BIN
platforms/windows/espeakedit/sample.ico View File


+ 0
- 32
platforms/windows/espeakedit/sample.rc View File

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

+ 0
- 3
platforms/windows/espeakedit/src/StdAfx.h View File

@@ -1,3 +0,0 @@
// This is a dummy file.
// A file of this name is needed on Windows

+ 0
- 72
platforms/windows/espeakedit/src/speech.h View File

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

+ 0
- 4
platforms/windows/espeakedit/src/stdint.h View File

@@ -1,4 +0,0 @@
// dummy stdint.h file for Windows
typedef unsigned int uint32_t;

+ 0
- 3
platforms/windows/espeakedit/src_copy/StdAfx.h View File

@@ -1,3 +0,0 @@
// This is a dummy file.
// A file of this name is needed on Windows

+ 0
- 72
platforms/windows/espeakedit/src_copy/speech.h View File

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

+ 0
- 573
platforms/windows/make_espeak.iss View File

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

+ 0
- 64
platforms/windows/make_espeakedit.iss View File

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

+ 0
- 37
platforms/windows/mingw/espeak_test_lib.c View File

@@ -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();
}

+ 0
- 169
platforms/windows/mingw/espeak_win_1_0.txt View File

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

+ 0
- 16
platforms/windows/mingw/readme.txt View File

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

+ 0
- 11
platforms/windows/windows_cmd/!ReadMe.txt View File

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

BIN
platforms/windows/windows_cmd/PAStaticWMME.lib View File


+ 0
- 8
platforms/windows/windows_cmd/StdAfx.cpp View File

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

+ 0
- 22
platforms/windows/windows_cmd/StdAfx.h View 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_)

+ 0
- 214
platforms/windows/windows_cmd/espeak.dsp View File

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

+ 0
- 29
platforms/windows/windows_cmd/espeak.dsw View File

@@ -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>
{{{
}}}
###############################################################################

+ 0
- 73
platforms/windows/windows_cmd/src/speech.h View File

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

+ 0
- 4
platforms/windows/windows_cmd/src/stdint.h View File

@@ -1,4 +0,0 @@
// dummy stdint.h file for Windows
typedef unsigned int uint32_t;

+ 0
- 16
platforms/windows/windows_dll/!ReadMe.txt View File

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


+ 0
- 8
platforms/windows/windows_dll/StdAfx.cpp View File

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

+ 0
- 24
platforms/windows/windows_dll/StdAfx.h View 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_)

+ 0
- 237
platforms/windows/windows_dll/espeak.dsp View File

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

+ 0
- 29
platforms/windows/windows_dll/espeak.dsw View File

@@ -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>
{{{
}}}
###############################################################################

+ 0
- 24
platforms/windows/windows_dll/src/StdAfx.h View 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_)

+ 0
- 629
platforms/windows/windows_dll/src/speak_lib.h View File

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

+ 0
- 75
platforms/windows/windows_dll/src/speech.h View File

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

+ 0
- 4
platforms/windows/windows_dll/src/stdint.h View File

@@ -1,4 +0,0 @@
// dummy stdint.h file for Windows
typedef unsigned int uint32_t;

+ 0
- 11
platforms/windows/windows_sapi/!ReadMe.txt View File

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


BIN
platforms/windows/windows_sapi/TtsEng.aps View File


+ 0
- 94
platforms/windows/windows_sapi/TtsEng.h View File

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

BIN
platforms/windows/windows_sapi/TtsEng.tlb View File


+ 0
- 47
platforms/windows/windows_sapi/TtsEng_i.c View File

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

+ 0
- 18
platforms/windows/windows_sapi/resource.h View File

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

BIN
platforms/windows/windows_sapi/sapi.lib View File


+ 0
- 3
platforms/windows/windows_sapi/src/StdAfx.h View File

@@ -1,3 +0,0 @@
// This is a dummy file.
// A file of this name is needed on Windows

+ 0
- 77
platforms/windows/windows_sapi/src/speech.h View File

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

+ 0
- 4
platforms/windows/windows_sapi/src/stdint.h View File

@@ -1,4 +0,0 @@
// dummy stdint.h file for Windows
typedef unsigned int uint32_t;

+ 0
- 14
platforms/windows/windows_sapi/stdafx.cpp View File

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

+ 0
- 32
platforms/windows/windows_sapi/stdafx.h View File

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

+ 0
- 77
platforms/windows/windows_sapi/ttseng.cpp View File

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

+ 0
- 5
platforms/windows/windows_sapi/ttseng.def View File

@@ -1,5 +0,0 @@
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE

+ 0
- 284
platforms/windows/windows_sapi/ttseng.dsp View File

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

+ 0
- 29
platforms/windows/windows_sapi/ttseng.dsw View File

@@ -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>
{{{
}}}
###############################################################################

+ 0
- 50
platforms/windows/windows_sapi/ttseng.idl View File

@@ -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;
};
};

+ 0
- 91
platforms/windows/windows_sapi/ttseng.rc View File

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

+ 0
- 931
platforms/windows/windows_sapi/ttsengobj.cpp View File

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

+ 0
- 124
platforms/windows/windows_sapi/ttsengobj.h View File

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

+ 0
- 25
platforms/windows/windows_sapi/ttsengobj.rgs View 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}'
}
}
}

+ 0
- 78
platforms/windows/windows_sapi/ttsengver.h View File

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

+ 0
- 44
platforms/windows/windows_sapi/version.rc2 View File

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

+ 0
- 54
platforms/windowsMobile/Info.txt View File

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



Loading…
Cancel
Save