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/mbrowrap.cpp \ | ||||
src/numbers.cpp \ | src/numbers.cpp \ | ||||
src/readclause.cpp \ | src/readclause.cpp \ | ||||
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 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) $(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) $(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 | |||||
AM_CONDITIONAL(OPT_KLATT, [test x"$have_klatt" = 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} | |||||
]) | ]) |
/*************************************************************************** | /*************************************************************************** | ||||
* 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 |
/*************************************************************************** | /*************************************************************************** | ||||
* 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 | // conditional compilation options | ||||
#define INCLUDE_KLATT | |||||
#define INCLUDE_MBROLA | #define INCLUDE_MBROLA | ||||
#define INCLUDE_SONIC | #define INCLUDE_SONIC | ||||