libespeak_include_HEADERS = \ | libespeak_include_HEADERS = \ | ||||
src/speak_lib.h | src/speak_lib.h | ||||
common_FLAGS = | |||||
common_SOURCE = \ | common_SOURCE = \ | ||||
src/compiledict.cpp \ | src/compiledict.cpp \ | ||||
src/dictionary.cpp \ | src/dictionary.cpp \ | ||||
src/intonation.cpp \ | src/intonation.cpp \ | ||||
src/klatt.cpp \ | |||||
src/mbrowrap.cpp \ | |||||
src/numbers.cpp \ | src/numbers.cpp \ | ||||
src/readclause.cpp \ | src/readclause.cpp \ | ||||
src/phonemelist.cpp \ | src/phonemelist.cpp \ | ||||
src/setlengths.cpp \ | src/setlengths.cpp \ | ||||
src/sonic.cpp \ | |||||
src/synthdata.cpp \ | src/synthdata.cpp \ | ||||
src/synthesize.cpp \ | src/synthesize.cpp \ | ||||
src/synth_mbrola.cpp \ | src/synth_mbrola.cpp \ | ||||
src/voices.cpp \ | src/voices.cpp \ | ||||
src/wavegen.cpp | src/wavegen.cpp | ||||
libespeak_FLAGS = | |||||
libespeak_SOURCE = \ | libespeak_SOURCE = \ | ||||
src/speak_lib.cpp \ | src/speak_lib.cpp \ | ||||
src/espeak_command.cpp \ | |||||
src/event.cpp \ | |||||
src/fifo.cpp \ | |||||
src/debug.cpp | src/debug.cpp | ||||
espeakedit_SOURCE = \ | espeakedit_SOURCE = \ | ||||
src/voicedlg.cpp \ | src/voicedlg.cpp \ | ||||
src/vowelchart.cpp | src/vowelchart.cpp | ||||
if OPT_KLATT | |||||
common_FLAGS += -DINCLUDE_KLATT | |||||
common_SOURCE += src/klatt.cpp | |||||
endif | |||||
if OPT_MBROLA | |||||
common_FLAGS += -DINCLUDE_MBROLA | |||||
common_SOURCE += src/mbrowrap.cpp | |||||
endif | |||||
if OPT_SONIC | |||||
common_FLAGS += -DINCLUDE_SONIC | |||||
common_SOURCE += src/sonic.cpp | |||||
endif | |||||
if OPT_ASYNC | |||||
libespeak_FLAGS += -DUSE_ASYNC | |||||
libespeak_SOURCE += \ | |||||
src/espeak_command.cpp \ | |||||
src/event.cpp \ | |||||
src/fifo.cpp | |||||
endif | |||||
if AUDIO_RUNTIME | if AUDIO_RUNTIME | ||||
wave_SOURCE = src/wave.cpp src/wave_pulse.cpp | wave_SOURCE = src/wave.cpp src/wave_pulse.cpp | ||||
wave_LIBS = -lpulse -lpulse-simple -lportaudio | wave_LIBS = -lpulse -lpulse-simple -lportaudio | ||||
lib_LTLIBRARIES += src/libespeak.la | lib_LTLIBRARIES += src/libespeak.la | ||||
src_libespeak_la_LDFLAGS = -version-info $(SHARED_VERSION) $(wave_LIBS) -lpthread | src_libespeak_la_LDFLAGS = -version-info $(SHARED_VERSION) $(wave_LIBS) -lpthread | ||||
src_libespeak_la_CXXFLAGS = $(wave_FLAGS) \ | |||||
src_libespeak_la_CXXFLAGS = $(common_FLAGS) $(libespeak_FLAGS) $(wave_FLAGS) \ | |||||
-fpic -fvisibility=hidden -D LIBRARY \ | -fpic -fvisibility=hidden -D LIBRARY \ | ||||
-pedantic -fno-exceptions -D PATH_ESPEAK_DATA=\"$(DATADIR)\" | -pedantic -fno-exceptions -D PATH_ESPEAK_DATA=\"$(DATADIR)\" | ||||
src_libespeak_la_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(wave_SOURCE) | src_libespeak_la_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(wave_SOURCE) | ||||
bin_PROGRAMS += src/speak | bin_PROGRAMS += src/speak | ||||
src_speak_LDFLAGS = $(wave_LIBS) -lpthread | src_speak_LDFLAGS = $(wave_LIBS) -lpthread | ||||
src_speak_CXXFLAGS = $(wave_FLAGS) | |||||
src_speak_CXXFLAGS = $(common_FLAGS) $(wave_FLAGS) | |||||
src_speak_SOURCES = src/speak.cpp $(common_SOURCE) $(wave_SOURCE) | src_speak_SOURCES = src/speak.cpp $(common_SOURCE) $(wave_SOURCE) | ||||
bin_PROGRAMS += src/espeak | bin_PROGRAMS += src/espeak | ||||
bin_PROGRAMS += src/espeakedit | bin_PROGRAMS += src/espeakedit | ||||
src_espeakedit_LDFLAGS = $(wave_LIBS) ${WX_LIBS} | src_espeakedit_LDFLAGS = $(wave_LIBS) ${WX_LIBS} | ||||
src_espeakedit_CXXFLAGS = ${WX_CXXFLAGS} $(wave_FLAGS) \ | |||||
src_espeakedit_CXXFLAGS = ${WX_CXXFLAGS} $(common_FLAGS) $(libespeak_FLAGS) $(wave_FLAGS) \ | |||||
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT | -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT | ||||
src_espeakedit_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(espeakedit_SOURCE) $(wave_SOURCE) | src_espeakedit_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(espeakedit_SOURCE) $(wave_SOURCE) | ||||
AM_CONDITIONAL(AUDIO_PORTAUDIO, [test x"$AUDIO" = xportaudio]) | AM_CONDITIONAL(AUDIO_PORTAUDIO, [test x"$AUDIO" = xportaudio]) | ||||
AM_CONDITIONAL(AUDIO_SADA, [test x"$AUDIO" = xsada]) | AM_CONDITIONAL(AUDIO_SADA, [test x"$AUDIO" = xsada]) | ||||
dnl ================================================================ | |||||
dnl Optional compilation checks. | |||||
dnl ================================================================ | |||||
AC_ARG_WITH([klatt], | |||||
[AS_HELP_STRING([--with-klatt], [enable the Klatt formant synthesizer @<:@default=yes@:>@])], | |||||
[]) | |||||
if test "$with_klatt" = "no" ; then | |||||
have_klatt=no | |||||
else | |||||
have_klatt=yes | |||||
fi | |||||
AC_ARG_WITH([mbrola], | |||||
[AS_HELP_STRING([--with-mbrola], [enable the MBROLA speech synthesizer @<:@default=yes@:>@])], | |||||
[]) | |||||
if test "$with_mbrola" = "no" ; then | |||||
have_mbrola=no | |||||
else | |||||
have_mbrola=yes | |||||
fi | |||||
AC_ARG_WITH([sonic], | |||||
[AS_HELP_STRING([--with-sonic], [enable the sonic library to speed up the audio @<:@default=yes@:>@])], | |||||
[]) | |||||
if test "$with_sonic" = "no" ; then | |||||
have_sonic=no | |||||
else | |||||
have_sonic=yes | |||||
fi | |||||
AC_ARG_WITH([async], | |||||
[AS_HELP_STRING([--with-async], [enable support for async command processing @<:@default=yes@:>@])], | |||||
[]) | |||||
if test "$with_async" = "no" ; then | |||||
have_async=no | |||||
else | |||||
have_async=yes | |||||
fi | |||||
AM_CONDITIONAL(OPT_KLATT, [test x"$have_klatt" = xyes]) | |||||
AM_CONDITIONAL(OPT_MBROLA, [test x"$have_mbrola" = xyes]) | |||||
AM_CONDITIONAL(OPT_SONIC, [test x"$have_sonic" = xyes]) | |||||
AM_CONDITIONAL(OPT_ASYNC, [test x"$have_async" = xyes]) | |||||
dnl ================================================================ | dnl ================================================================ | ||||
dnl wxWidgets checks. | dnl wxWidgets checks. | ||||
dnl ================================================================ | dnl ================================================================ | ||||
portaudio: ${have_portaudio} | portaudio: ${have_portaudio} | ||||
sada: ${have_sada} | sada: ${have_sada} | ||||
audio configuration: ${AUDIO} | audio configuration: ${AUDIO} | ||||
Klatt: ${have_klatt} | |||||
MBROLA: ${have_mbrola} | |||||
Sonic: ${have_sonic} | |||||
Async: ${have_async} | |||||
]) | ]) |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2007, Gilles Casse <[email protected]> * | * Copyright (C) 2007, Gilles Casse <[email protected]> * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
* Free Software Foundation, Inc., * | * Free Software Foundation, Inc., * | ||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | ||||
***************************************************************************/ | ***************************************************************************/ | ||||
#include "speech.h" | |||||
#ifdef USE_ASYNC | |||||
// This source file is only used for asynchronious modes | // This source file is only used for asynchronious modes | ||||
#include "speech.h" | |||||
#include "espeak_command.h" | #include "espeak_command.h" | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
#endif | |||||
//> | //> |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2007, Gilles Casse <[email protected]> * | * Copyright (C) 2007, Gilles Casse <[email protected]> * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | ||||
***************************************************************************/ | ***************************************************************************/ | ||||
#include "speech.h" | |||||
#ifdef USE_ASYNC | |||||
// This source file is only used for asynchronious modes | // This source file is only used for asynchronious modes | ||||
#include <sys/time.h> | #include <sys/time.h> | ||||
#include <errno.h> | #include <errno.h> | ||||
#include "speech.h" | |||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
#include "event.h" | #include "event.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
init(); // purge event | init(); // purge event | ||||
} | } | ||||
} | } | ||||
#endif | |||||
//> | //> | ||||
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2007, Gilles Casse <[email protected]> * | * Copyright (C) 2007, Gilles Casse <[email protected]> * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
* Free Software Foundation, Inc., * | * Free Software Foundation, Inc., * | ||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | ||||
***************************************************************************/ | ***************************************************************************/ | ||||
#include "speech.h" | |||||
#ifdef USE_ASYNC | |||||
// This source file is only used for asynchronious modes | // This source file is only used for asynchronious modes | ||||
//<includes | //<includes | ||||
#include <unistd.h> | #include <unistd.h> | ||||
#include <sys/time.h> | #include <sys/time.h> | ||||
#include <time.h> | #include <time.h> | ||||
#include "speech.h" | |||||
#include "fifo.h" | #include "fifo.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
#include "debug.h" | #include "debug.h" | ||||
init(0); // purge fifo | init(0); // purge fifo | ||||
} | } | ||||
#endif | |||||
//> | //> | ||||
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2008 by Jonathan Duddington * | * Copyright (C) 2008 by Jonathan Duddington * | ||||
* email: [email protected] * | * email: [email protected] * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* Based on a re-implementation by: * | * Based on a re-implementation by: * | ||||
* (c) 1993,94 Jon Iles and Nick Ing-Simmons * | * (c) 1993,94 Jon Iles and Nick Ing-Simmons * | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "voice.h" | #include "voice.h" | ||||
#ifdef INCLUDE_KLATT // conditional compilation for the whole file | |||||
extern unsigned char *out_ptr; // **JSD | extern unsigned char *out_ptr; // **JSD | ||||
extern unsigned char *out_start; | extern unsigned char *out_start; | ||||
extern unsigned char *out_end; | extern unsigned char *out_end; | ||||
kt_frame.AVpdb = 0; | kt_frame.AVpdb = 0; | ||||
kt_frame.Gain0 = 62; // 60 | kt_frame.Gain0 = 62; // 60 | ||||
} // end of KlattInit | } // end of KlattInit | ||||
#endif // INCLUDE_KLATT |
* providing a subset of the API from the Windows mbrola DLL. | * providing a subset of the API from the Windows mbrola DLL. | ||||
* | * | ||||
* Copyright (C) 2010 by Nicolas Pitre <[email protected]> | * Copyright (C) 2010 by Nicolas Pitre <[email protected]> | ||||
* Copyright (C) 2013 Reece H. Dunn | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or modify | * 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 | * it under the terms of the GNU General Public License as published by | ||||
*/ | */ | ||||
#include "speech.h" | #include "speech.h" | ||||
#ifdef INCLUDE_MBROLA | |||||
#include <stdarg.h> | #include <stdarg.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
{ | { | ||||
mbr_errorbuf[0] = 0; | mbr_errorbuf[0] = 0; | ||||
} | } | ||||
#endif // INCLUDE_MBROLA |
#include "speech.h" | #include "speech.h" | ||||
#include "sonic.h" | #include "sonic.h" | ||||
#ifdef INCLUDE_SONIC | |||||
struct sonicStreamStruct { | struct sonicStreamStruct { | ||||
short *inputBuffer; | short *inputBuffer; | ||||
sonicDestroyStream(stream); | sonicDestroyStream(stream); | ||||
return numSamples; | return numSamples; | ||||
} | } | ||||
#endif // INCLUDE_SONIC |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2005 to 2007 by Jonathan Duddington * | * Copyright (C) 2005 to 2007 by Jonathan Duddington * | ||||
* email: [email protected] * | * email: [email protected] * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
#define MAX_HARMONIC 400 // 400 * 50Hz = 20 kHz, more than enough | #define MAX_HARMONIC 400 // 400 * 50Hz = 20 kHz, more than enough | ||||
#ifdef INCLUDE_KLATT | |||||
extern void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v, int control); | extern void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v, int control); | ||||
extern int Wavegen_Klatt(int resume); | extern int Wavegen_Klatt(int resume); | ||||
extern void KlattReset(int control); | |||||
#endif | |||||
extern void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v); | extern void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v); | ||||
extern int Wavegen(); | extern int Wavegen(); | ||||
extern void CloseWaveFile2(); | extern void CloseWaveFile2(); | ||||
extern void KlattReset(int control); | |||||
extern FILE *f_wave; | extern FILE *f_wave; | ||||
static int frame_width; | static int frame_width; | ||||
out_ptr = out_start = wav_outbuf; | out_ptr = out_start = wav_outbuf; | ||||
out_end = &wav_outbuf[sizeof(wav_outbuf)]; | out_end = &wav_outbuf[sizeof(wav_outbuf)]; | ||||
#ifdef INCLUDE_KLATT | |||||
if(synthesis_method == 1) | if(synthesis_method == 1) | ||||
result = Wavegen_Klatt(resume); | result = Wavegen_Klatt(resume); | ||||
else | else | ||||
#endif | |||||
result = Wavegen(); | result = Wavegen(); | ||||
if(f_wave != NULL) | if(f_wave != NULL) | ||||
if(voice->klattv[0]) | if(voice->klattv[0]) | ||||
{ | { | ||||
#ifdef INCLUDE_KLATT | |||||
SetSynth_Klatt((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice, control); // convert mS to samples | SetSynth_Klatt((length_mS * samplerate) / 1000, 0, &fr1, &fr2, voice, control); // convert mS to samples | ||||
#endif | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
if(voice->klattv[0]) | if(voice->klattv[0]) | ||||
{ | { | ||||
synthesizer_type = 1; | synthesizer_type = 1; | ||||
#ifdef INCLUDE_KLATT | |||||
KlattReset(2); | KlattReset(2); | ||||
#endif | |||||
} | } | ||||
SpeakNextClause(NULL,NULL,2); // stop speaking file | SpeakNextClause(NULL,NULL,2); // stop speaking file | ||||
if(voice->klattv[0]) | if(voice->klattv[0]) | ||||
{ | { | ||||
synthesizer_type = 1; | synthesizer_type = 1; | ||||
#ifdef INCLUDE_KLATT | |||||
KlattReset(2); | KlattReset(2); | ||||
#endif | |||||
} | } | ||||
SpeakNextClause(NULL,NULL,2); // stop speaking file | SpeakNextClause(NULL,NULL,2); // stop speaking file |
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2005 to 2007 by Jonathan Duddington * | * Copyright (C) 2005 to 2007 by Jonathan Duddington * | ||||
* email: [email protected] * | * email: [email protected] * | ||||
* Copyright (C) 2013 Reece H. Dunn * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
// conditional compilation options | |||||
#define INCLUDE_KLATT | |||||
#define INCLUDE_MBROLA | |||||
#define INCLUDE_SONIC | |||||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | #if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN | ||||
#define ARCH_BIG | #define ARCH_BIG | ||||
#endif | #endif | ||||
#define __cdecl | #define __cdecl | ||||
//#define ESPEAK_API extern "C" | //#define ESPEAK_API extern "C" | ||||
#ifdef LIBRARY | |||||
#define USE_ASYNC | |||||
#endif | |||||
#ifdef _ESPEAKEDIT | #ifdef _ESPEAKEDIT | ||||
#define USE_ASYNC | |||||
#define LOG_FRAMES // write keyframe info to log-espeakedit | #define LOG_FRAMES // write keyframe info to log-espeakedit | ||||
#endif | #endif | ||||