Browse Source

Merge branch 'master' into android

Conflicts:
	Makefile.am
	README.md
master
Reece H. Dunn 11 years ago
parent
commit
0eac364d7f
7 changed files with 103 additions and 215 deletions
  1. 7
    0
      .gitignore
  2. 67
    35
      Makefile.am
  3. 10
    0
      README.md
  4. 15
    4
      configure.ac
  5. 0
    22
      shadowdir
  6. 0
    150
      src/Makefile.am
  7. 4
    4
      src/options.cpp

+ 7
- 0
.gitignore View File

# intermediate build output: # intermediate build output:


*.o *.o
*.lo


# android build output: # android build output:


NEWS NEWS
README README


.deps/
.libs/

Makefile Makefile
Makefile.in Makefile.in
aclocal.m4 aclocal.m4
autom4te.cache/ autom4te.cache/
config.* config.*
configure configure
depcomp
install-sh install-sh
libtool libtool
ltmain.sh ltmain.sh
m4/ m4/
missing missing
stamp-h1 stamp-h1
.dirstamp


# libraries # libraries


docs/speak_lib.h docs/speak_lib.h


libespeak.a libespeak.a
libespeak.la
libespeak.so* libespeak.so*


# programs # programs

+ 67
- 35
Makefile.am View File

AUTOMAKE_OPTIONS = subdir-objects

PREFIX=@prefix@ PREFIX=@prefix@
BINDIR=@bindir@ BINDIR=@bindir@
INCDIR=@includedir@/espeak INCDIR=@includedir@/espeak
LIBDIR=@libdir@ LIBDIR=@libdir@
DATADIR=$(PREFIX)/share/espeak-data DATADIR=$(PREFIX)/share/espeak-data


PLATFORM=big_endian
SHARED_VERSION=2:47:1 # = *.so.1.1.47

MKDIR=mkdir -p


.PHONY: android all clean distclean espeak-phoneme-data
AM_CXXFLAGS = -Wall


EXTRA_DIST= EXTRA_DIST=


bin_PROGRAMS =
lib_LTLIBRARIES =

##### ChangeLog: ##### ChangeLog:


ChangeLog: ChangeLog:


all: jni espeakdata apk-release 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 src && rm -f *.o *~ && cd ..
cd android && gradle clean 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 check: apk-check


##### build targets: ##### build targets:


libespeak_includedir = $(includedir)/espeak
libespeak_include_HEADERS = \
src/speak_lib.h

common_SOURCE = \ common_SOURCE = \
src/compiledict.cpp \ src/compiledict.cpp \
src/dictionary.cpp \ src/dictionary.cpp \
src/espeak_command.cpp \ src/espeak_command.cpp \
src/event.cpp \ src/event.cpp \
src/fifo.cpp \ src/fifo.cpp \
src/wave.cpp \
src/wave_pulse.cpp \
src/wave_sada.cpp \
src/debug.cpp src/debug.cpp


espeakedit_SOURCE = \ espeakedit_SOURCE = \
src/voicedlg.cpp \ src/voicedlg.cpp \
src/vowelchart.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 docs/speak_lib.h: src/speak_lib.h
cp $< $@ 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 ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile


##### android targets: ##### android targets:

+ 10
- 0
README.md View File

# Android Port of eSpeak Text-to-Speech # 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. This branch contains the files needed to build espeak on the android platform.
It is derived from the eyes-free project. It is derived from the eyes-free project.



+ 15
- 4
configure.ac View File

AC_PREREQ([2.63]) 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() AM_INIT_AUTOMAKE()


m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
dnl Audio checks. dnl Audio checks.
dnl ================================================================ 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_portaudio" = 18 -o "$have_portaudio" = 19 ; then
if test "$have_pulseaudio" = yes ; then if test "$have_pulseaudio" = yes ; then
PKG_CHECK_MODULES(PULSEAUDIO_SIMPLE, [libpulse-simple >= 0.9], PKG_CHECK_MODULES(PULSEAUDIO_SIMPLE, [libpulse-simple >= 0.9],
fi fi
elif test "$have_pulseaudio" = yes ; then elif test "$have_pulseaudio" = yes ; then
AUDIO=pulseaudio AUDIO=pulseaudio
elif test "$have_sada" = yes ; then
AUDIO=sada
else else
AUDIO=disabled AUDIO=disabled
fi fi
AM_CONDITIONAL(AUDIO_RUNTIME, [test x"$AUDIO" = xruntime]) AM_CONDITIONAL(AUDIO_RUNTIME, [test x"$AUDIO" = xruntime])
AM_CONDITIONAL(AUDIO_PULSEAUDIO, [test x"$AUDIO" = xpulseaudio]) AM_CONDITIONAL(AUDIO_PULSEAUDIO, [test x"$AUDIO" = xpulseaudio])
AM_CONDITIONAL(AUDIO_PORTAUDIO, [test x"$AUDIO" = xportaudio]) 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]) AM_CONDITIONAL(AUDIO_SADA, [test x"$AUDIO" = xsada])


dnl ================================================================ dnl ================================================================
dnl Generate output. dnl Generate output.
dnl ================================================================ dnl ================================================================


AC_CONFIG_FILES([Makefile src/Makefile])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT AC_OUTPUT


AC_MSG_NOTICE([ AC_MSG_NOTICE([
wxWidgets: ${WX_VERSION} wxWidgets: ${WX_VERSION}
pulseaudio: ${have_pulseaudio} pulseaudio: ${have_pulseaudio}
portaudio: ${have_portaudio} portaudio: ${have_portaudio}
sada: ${have_sada}
audio configuration: ${AUDIO} audio configuration: ${AUDIO}
]) ])

+ 0
- 22
shadowdir View File

#!/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])

+ 0
- 150
src/Makefile.am View File

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
src/options.cpp View File

basedir = wxString(path_base,wxConvLocal); // this is only used to set defaults for other paths if they are not in the config file 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) 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_pitches = basedir + _T("/pitch");
path_phsource = basedir + _T("/phsource");
path_phsource = basedir + _T("/../phsource");
path_phfile = path_phsource + _T("/phonemes"); path_phfile = path_phsource + _T("/phonemes");
path_dictsource = basedir + _T("/dictsource");
path_dictsource = basedir + _T("/../dictsource");
path_modifiervoice = basedir; path_modifiervoice = basedir;
path_dir1 = basedir; path_dir1 = basedir;
} }

Loading…
Cancel
Save