Merge branch 'master' into android

Conflicts:
	Makefile.am
	README.md
This commit is contained in:
Reece H. Dunn
2013-09-13 16:55:56 +01:00
7 changed files with 103 additions and 215 deletions
+7
View File
@@ -5,6 +5,7 @@
# intermediate build output:
*.o
*.lo
# android build output:
@@ -34,24 +35,30 @@ INSTALL
NEWS
README
.deps/
.libs/
Makefile
Makefile.in
aclocal.m4
autom4te.cache/
config.*
configure
depcomp
install-sh
libtool
ltmain.sh
m4/
missing
stamp-h1
.dirstamp
# libraries
docs/speak_lib.h
libespeak.a
libespeak.la
libespeak.so*
# programs
+67 -35
View File
@@ -1,15 +1,22 @@
AUTOMAKE_OPTIONS = subdir-objects
PREFIX=@prefix@
BINDIR=@bindir@
INCDIR=@includedir@/espeak
LIBDIR=@libdir@
DATADIR=$(PREFIX)/share/espeak-data
PLATFORM=big_endian
SHARED_VERSION=2:47:1 # = *.so.1.1.47
.PHONY: android all clean distclean espeak-phoneme-data
MKDIR=mkdir -p
AM_CXXFLAGS = -Wall
EXTRA_DIST=
bin_PROGRAMS =
lib_LTLIBRARIES =
##### ChangeLog:
ChangeLog:
@@ -25,24 +32,29 @@ EXTRA_DIST += ChangeLog
all: jni espeakdata apk-release
install:
cd src && make DESTDIR=$(DESTDIR) PREFIX=$(PREFIX) BINDIR=$(BINDIR) INCDIR=$(INCDIR) LIBDIR=$(LIBDIR) install && cd ..
install -m 755 src/espeakedit $(DESTDIR)$(BINDIR)
uninstall-hook:
rm -rf $(DESTDIR)$(DATADIR)
clean:
install-data-hook: uninstall-hook
$(MKDIR) $(DESTDIR)$(DATADIR)
cp -prf espeak-data/* $(DESTDIR)$(DATADIR)
clean-local:
cd src && rm -f *.o *~ && cd ..
cd android && gradle clean
distclean: clean
cd src && rm -f libespeak.a libespeak.so.* speak espeak espeakedit && cd ..
cd platforms/$(PLATFORM) && rm -f espeak-phoneme-data && cd ../..
rm -rf espeak-data/dictsource espeak-data/phsource espeak-data/phondata-manifest
cd espeak-data && rm -f *_dict && cd ..
distclean-local:
rm -rf espeak-data/phondata-manifest
rm -f espeak-data/*_dict
check: apk-check
##### build targets:
libespeak_includedir = $(includedir)/espeak
libespeak_include_HEADERS = \
src/speak_lib.h
common_SOURCE = \
src/compiledict.cpp \
src/dictionary.cpp \
@@ -67,9 +79,6 @@ libespeak_SOURCE = \
src/espeak_command.cpp \
src/event.cpp \
src/fifo.cpp \
src/wave.cpp \
src/wave_pulse.cpp \
src/wave_sada.cpp \
src/debug.cpp
espeakedit_SOURCE = \
@@ -87,38 +96,61 @@ espeakedit_SOURCE = \
src/voicedlg.cpp \
src/vowelchart.cpp
if AUDIO_RUNTIME
wave_SOURCE = src/wave.cpp src/wave_pulse.cpp
wave_LIBS = -lpulse -lpulse-simple -lportaudio
wave_FLAGS = -DUSE_PULSEAUDIO -DUSE_PORTAUDIO
else
if AUDIO_PULSEAUDIO
wave_SOURCE = src/wave_pulse.cpp
wave_LIBS = -lpulse
wave_FLAGS = -DUSE_PULSEAUDIO
else
if AUDIO_PORTAUDIO
wave_SOURCE = src/wave.cpp
wave_LIBS = -lportaudio
wave_FLAGS = -DUSE_PORTAUDIO
else
if AUDIO_SADA
wave_SOURCE = wave_sada.cpp
wave_FLAGS = -DUSE_SADA
else
wave_SOURCE = src/wave.cpp
endif
endif
endif
endif
docs/speak_lib.h: src/speak_lib.h
cp $< $@
src/libespeak.a: $(common_SOURCE) $(libespeak_SOURCE)
cd src && make libespeak.a && cd ..
lib_LTLIBRARIES += src/libespeak.la
src/libespeak.so: $(common_SOURCE) $(libespeak_SOURCE)
cd src && make libespeak.so && cd ..
src_libespeak_la_LDFLAGS = -version-info $(SHARED_VERSION) $(wave_LIBS) -lpthread
src_libespeak_la_CXXFLAGS = $(wave_FLAGS) \
-fpic -fvisibility=hidden -D LIBRARY \
-pedantic -fno-exceptions -D PATH_ESPEAK_DATA=\"$(DATADIR)\"
src_libespeak_la_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(wave_SOURCE)
src/speak: $(common_SOURCE) src/speak.cpp
cd src && make speak && cd ..
bin_PROGRAMS += src/speak
src/espeak: src/libespeak.so src/espeak.cpp
cd src && make espeak && cd ..
src_speak_LDFLAGS = $(wave_LIBS) -lpthread
src_speak_CXXFLAGS = $(wave_FLAGS)
src_speak_SOURCES = src/speak.cpp $(common_SOURCE) $(wave_SOURCE)
src/espeakedit: $(common_SOURCE) $(libespeak_SOURCE) $(espeakedit_SOURCE)
cd src && make espeakedit && cd ..
bin_PROGRAMS += src/espeak
espeak-phoneme-data:
cd platforms/$(PLATFORM) && make PREFIX=$(PREFIX) && cd ../..
src_espeak_LDADD = src/libespeak.la
src_espeak_SOURCES = src/espeak.cpp
espeak-data/dictsource/dir.stamp: dictsource/*
rm -rf espeak-data/dictsource
./shadowdir $(PWD)/dictsource $(PWD)/espeak-data/dictsource
touch espeak-data/dictsource/dir.stamp
bin_PROGRAMS += src/espeakedit
espeak-data/phsource/dir.stamp: phsource/ph_* phsource/phonemes phsource/intonation
rm -rf espeak-data/phsource
./shadowdir $(PWD)/phsource $(PWD)/espeak-data/phsource
touch espeak-data/phsource/dir.stamp
src_espeakedit_LDFLAGS = $(wave_LIBS) ${WX_LIBS}
src_espeakedit_CXXFLAGS = ${WX_CXXFLAGS} $(wave_FLAGS) \
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT
src_espeakedit_SOURCES = $(common_SOURCE) $(libespeak_SOURCE) $(espeakedit_SOURCE) $(wave_SOURCE)
espeak-data/phontab: src/espeakedit espeak-data/dictsource/dir.stamp espeak-data/phsource/dir.stamp
espeak-data/phontab: src/espeakedit
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile
##### android targets:
+10
View File
@@ -1,5 +1,15 @@
# Android Port of eSpeak Text-to-Speech
- [Prerequisites](#prerequisites)
- [Building with Gradle](#building-with-gradle)
- [Building with Eclipse](#building-with-eclipse)
- [Building with Ant](#building-with-ant)
- [Signing the APK](#signing-the-apk)
- [Installing the APK](#installing-the-apk)
- [Enabling eSpeak on the Device](#enabling-espeak-on-the-device)
----------
This branch contains the files needed to build espeak on the android platform.
It is derived from the eyes-free project.
+15 -4
View File
@@ -1,5 +1,5 @@
AC_PREREQ([2.63])
AC_INIT([eSpeak], [1.46], [https://github.com/rhdunn/espeak/issues], [espeak], [https://github.com/rhdunn/espeak])
AC_INIT([eSpeak], [1.47], [https://github.com/rhdunn/espeak/issues], [espeak], [https://github.com/rhdunn/espeak])
AM_INIT_AUTOMAKE()
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
@@ -91,6 +91,16 @@ dnl ================================================================
dnl Audio checks.
dnl ================================================================
AC_ARG_WITH([sada],
[AS_HELP_STRING([--with-sada], [use the Solaris SADA audio API @<:@default=no@:>@])],
[])
if test "$with_sada" = "yes" ; then
have_sada=yes
else
have_sada=no
fi
if test "$have_portaudio" = 18 -o "$have_portaudio" = 19 ; then
if test "$have_pulseaudio" = yes ; then
PKG_CHECK_MODULES(PULSEAUDIO_SIMPLE, [libpulse-simple >= 0.9],
@@ -106,6 +116,8 @@ if test "$have_portaudio" = 18 -o "$have_portaudio" = 19 ; then
fi
elif test "$have_pulseaudio" = yes ; then
AUDIO=pulseaudio
elif test "$have_sada" = yes ; then
AUDIO=sada
else
AUDIO=disabled
fi
@@ -115,8 +127,6 @@ AC_SUBST(AUDIO)
AM_CONDITIONAL(AUDIO_RUNTIME, [test x"$AUDIO" = xruntime])
AM_CONDITIONAL(AUDIO_PULSEAUDIO, [test x"$AUDIO" = xpulseaudio])
AM_CONDITIONAL(AUDIO_PORTAUDIO, [test x"$AUDIO" = xportaudio])
AM_CONDITIONAL(AUDIO_PORTAUDIO0, [test x"$AUDIO" = xportaudio0])
AM_CONDITIONAL(AUDIO_PORTAUDIO2, [test x"$AUDIO" = xportaudio2])
AM_CONDITIONAL(AUDIO_SADA, [test x"$AUDIO" = xsada])
dnl ================================================================
@@ -139,7 +149,7 @@ dnl ================================================================
dnl Generate output.
dnl ================================================================
AC_CONFIG_FILES([Makefile src/Makefile])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
AC_MSG_NOTICE([
@@ -154,5 +164,6 @@ AC_MSG_NOTICE([
wxWidgets: ${WX_VERSION}
pulseaudio: ${have_pulseaudio}
portaudio: ${have_portaudio}
sada: ${have_sada}
audio configuration: ${AUDIO}
])
-22
View File
@@ -1,22 +0,0 @@
#!/usr/bin/python
#
# Copyright (C) 2011 Reece H. Dunn
# Licence: GPLv3
#
# A script for shadowing a directory tree to another (equivalent to lndir).
import sys
import os
def shadow(src, dst):
if not os.path.exists(dst):
os.makedirs(dst)
for fn in os.listdir(src):
srcpath = os.path.join(src, fn)
dstpath = os.path.join(dst, fn)
if os.path.isdir(srcpath):
shadow(srcpath, dstpath)
else:
os.symlink(srcpath, dstpath)
shadow(sys.argv[1], sys.argv[2])
-150
View File
@@ -1,150 +0,0 @@
PREFIX=@prefix@
BINDIR=@bindir@
INCDIR=@includedir@/espeak
LIBDIR=@libdir@
DATADIR=${PREFIX}/share/espeak-data
# remove -fno-exceptions if it causes problems with stdio library on some platforms (ARM)
RELEASE = 1.47
SPEAK = speak
ESPEAK = espeak
ESPEAKEDIT = espeakedit
LIBESPEAK = libespeak.so
STATIC_LIBESPEAK = libespeak.a
LIB_VERSION = 1
LIBTAG = $(LIB_VERSION).$(RELEASE)
# Use SONAME_OPT=-Wl,h, on Solaris
SONAME_OPT=-Wl,-soname,
# Use EXTRA_LIBS=-lm on Solaris
EXTRA_LIBS =
INSTALL = install
LN_SF = /bin/ln -sf
MKDIR = mkdir -p
# AUDIO='runtime' uses pulseaudio if it is running, else uses portaudio
if AUDIO_RUNTIME
WAVE=wave.cpp wave_pulse.cpp
LIB_AUDIO=-lpulse -lpulse-simple -lportaudio
USE_AUDIO=-DUSE_PULSEAUDIO -DUSE_PORTAUDIO
else
if AUDIO_PULSEAUDIO
WAVE=wave_pulse.cpp
LIB_AUDIO=-lpulse
USE_AUDIO=-DUSE_PULSEAUDIO
else
if AUDIO_PORTAUDIO
WAVE=wave.cpp
LIB_AUDIO=-lportaudio
USE_AUDIO=-DUSE_PORTAUDIO
else
if AUDIO_PORTAUDIO0
WAVE=wave.cpp
LIB_AUDIO=/usr/lib/libportaudio.so.0
USE_AUDIO=-DUSE_PORTAUDIO
else
if AUDIO_PORTAUDIO2
WAVE=wave.cpp
LIB_AUDIO=/usr/lib/libportaudio.so.2
USE_AUDIO=-DUSE_PORTAUDIO
else
if AUDIO_SADA
WAVE=wave_sada.cpp
USE_AUDIO=-DUSE_SADA
else
WAVE=wave.cpp
endif
endif
endif
endif
endif
endif
CXXFLAGS ?= -O2 -Wall
CPPFLAGS = -pedantic -fno-exceptions -D PATH_ESPEAK_DATA=\"$(DATADIR)\"
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(USE_AUDIO) -I. $(CPPFLAGS) $<
e_%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $(espeakedit_CXXFLAGS) $(USE_AUDIO) $(CPPFLAGS) -I. $< -o e_$*.o
x_%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $(USE_AUDIO) -fpic -fvisibility=hidden \
-I. -D LIBRARY $(CPPFLAGS) $< -o x_$*.o
all: $(SPEAK) $(LIBESPEAK) $(STATIC_LIBESPEAK) $(ESPEAK) $(ESPEAKEDIT)
common_SOURCE = compiledict.cpp dictionary.cpp intonation.cpp \
klatt.cpp mbrowrap.cpp numbers.cpp readclause.cpp \
phonemelist.cpp setlengths.cpp sonic.cpp \
synthdata.cpp synthesize.cpp synth_mbrola.cpp \
translate.cpp tr_languages.cpp voices.cpp wavegen.cpp
speak_SOURCE = speak.cpp $(common_SOURCE)
speak_OBJS = ${speak_SOURCE:%.cpp=%.o}
speak_LIBS = -lstdc++ $(LIB_AUDIO) -lpthread $(EXTRA_LIBS)
$(SPEAK): $(speak_OBJS)
$(CXX) $(LDFLAGS) -o $@ $(speak_OBJS) $(speak_LIBS)
espeak_SOURCE = espeak.cpp
espeak_OBJS = ${espeak_SOURCE:%.cpp=%.o}
espeak_LIBS = -lstdc++ -L . -lespeak
$(ESPEAK): $(espeak_OBJS) $(LIB_NAME)
$(CXX) $(LDFLAGS) -o $@ $(espeak_OBJS) $(espeak_LIBS)
libespeak_SOURCE = speak_lib.cpp $(common_SOURCE) \
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp
libespeak_OBJS = ${libespeak_SOURCE:%.cpp=x_%.o}
libespeak_LIBS = -lstdc++ $(LIB_AUDIO) -lpthread
$(LIBESPEAK): $(libespeak_OBJS)
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIBESPEAK).$(LIB_VERSION) -o $@ \
$(libespeak_OBJS) $(libespeak_LIBS)
mv $(LIBESPEAK) $(LIBESPEAK).$(LIBTAG)
$(LN_SF) $(LIBESPEAK).$(LIBTAG) $(LIBESPEAK).$(LIB_VERSION)
$(LN_SF) $(LIBESPEAK).$(LIB_VERSION) $(LIBESPEAK)
$(STATIC_LIBESPEAK): $(libespeak_OBJS)
$(AR) cqs $(STATIC_LIBESPEAK) $(libespeak_OBJS)
espeakedit_SOURCE = $(common_SOURCE) compiledata.cpp debug.cpp espeakedit.cpp \
event.cpp extras.cpp fifo.cpp formantdlg.cpp \
menus.cpp options.cpp prosodydisplay.cpp \
espeak_command.cpp speak_lib.cpp spect.cpp \
spectdisplay.cpp spectseq.cpp \
transldlg.cpp voicedlg.cpp vowelchart.cpp $(WAVE)
espeakedit_OBJS=${espeakedit_SOURCE:%.cpp=e_%.o}
espeakedit_LIBS=-lstdc++ $(LIB_AUDIO)
espeakedit_CXXFLAGS = ${WX_CXXFLAGS} -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT
$(ESPEAKEDIT): $(espeakedit_OBJS)
$(CXX) $(LDFLAGS) -o $@ $(espeakedit_OBJS) $(espeakedit_LIBS) ${WX_LIBS}
clean:
rm -f *.o *.a *~
distclean: clean
rm -f $(SPEAK)
rm -f $(ESPEAK)
rm -f $(LIBESPEAK)*
rm -f $(STATIC_LIBESPEAK)
rm -f $(ESPEAKEDIT)
install:
rm -rf $(DESTDIR)$(DATADIR)
$(MKDIR) $(DESTDIR)$(BINDIR)
$(MKDIR) $(DESTDIR)$(LIBDIR)
$(MKDIR) $(DESTDIR)$(INCDIR)
$(MKDIR) $(DESTDIR)$(DATADIR)
$(INSTALL) -m 755 $(ESPEAK) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 755 $(LIBESPEAK).$(LIBTAG) $(DESTDIR)$(LIBDIR)
$(INSTALL) -m 755 $(STATIC_LIBESPEAK) $(DESTDIR)$(LIBDIR)
$(LN_SF) $(LIBESPEAK).$(LIBTAG) $(DESTDIR)$(LIBDIR)/$(LIBESPEAK).$(LIB_VERSION)
$(LN_SF) $(LIBESPEAK).$(LIB_VERSION) $(DESTDIR)$(LIBDIR)/$(LIBESPEAK)
$(INSTALL) -pm 644 speak_lib.h $(DESTDIR)$(INCDIR)
cp -prf ../espeak-data/* $(DESTDIR)$(DATADIR)
+4 -4
View File
@@ -167,12 +167,12 @@ void ConfigInit(bool use_defaults)
basedir = wxString(path_base,wxConvLocal); // this is only used to set defaults for other paths if they are not in the config file
if (use_defaults)
{
path_spectload = basedir + _T("/phsource");
path_spectload2 = basedir + _T("/phsource");
path_spectload = basedir + _T("/../phsource");
path_spectload2 = basedir + _T("/../phsource");
path_pitches = basedir + _T("/pitch");
path_phsource = basedir + _T("/phsource");
path_phsource = basedir + _T("/../phsource");
path_phfile = path_phsource + _T("/phonemes");
path_dictsource = basedir + _T("/dictsource");
path_dictsource = basedir + _T("/../dictsource");
path_modifiervoice = basedir;
path_dir1 = basedir;
}