| @@ -25,6 +25,49 @@ dependencies { | |||
| androidTestImplementation 'org.hamcrest:hamcrest-all:1.3' | |||
| } | |||
| android { | |||
| compileSdk 33 | |||
| ndkVersion "25.1.8937393" | |||
| namespace "com.reecedunn.espeak" | |||
| defaultConfig { | |||
| minSdk 19 | |||
| targetSdk 33 | |||
| versionCode 22 | |||
| versionName "1.52-dev" | |||
| externalNativeBuild { | |||
| cmake { | |||
| arguments "-DUSE_ASYNC:BOOL=OFF", "-DUSE_MBROLA:BOOL=OFF" | |||
| targets "ttsespeak", "espeak-data" | |||
| } | |||
| } | |||
| } | |||
| externalNativeBuild { | |||
| cmake { | |||
| path "jni/CMakeLists.txt" | |||
| version "3.22.1" | |||
| } | |||
| } | |||
| sourceSets { | |||
| main { | |||
| manifest.srcFile 'AndroidManifest.xml' | |||
| java.srcDirs = ['src'] | |||
| res.srcDirs = ['res'] | |||
| } | |||
| androidTest.setRoot('eSpeakTests') | |||
| androidTest { | |||
| java.srcDirs = ['eSpeakTests/src'] | |||
| } | |||
| } | |||
| lint { | |||
| abortOnError false | |||
| } | |||
| } | |||
| tasks.register('checkData') { | |||
| doFirst { | |||
| assert file("../espeak-ng-data/en_dict").exists() | |||
| @@ -37,13 +80,12 @@ tasks.register('checkData') { | |||
| } | |||
| tasks.register('createDataArchive', Zip) { | |||
| dependsOn tasks.checkData | |||
| preserveFileTimestamps = false | |||
| reproducibleFileOrder = true | |||
| archiveFileName = "espeakdata.zip" | |||
| destinationDirectory = file("res/raw") | |||
| from("../espeak-ng-data/") { | |||
| from("build/generated/espeak-ng-data/") { | |||
| into "espeak-ng-data" | |||
| } | |||
| } | |||
| @@ -61,40 +103,10 @@ tasks.register('createDataVersion', Copy) { | |||
| rename { return 'espeakdata_version' } | |||
| into file("./res/raw") | |||
| } | |||
| preBuild.dependsOn createDataVersion | |||
| android { | |||
| compileSdk 33 | |||
| ndkVersion "25.1.8937393" | |||
| namespace "com.reecedunn.espeak" | |||
| defaultConfig { | |||
| minSdk 19 | |||
| targetSdk 30 | |||
| versionCode 22 | |||
| versionName "1.52-dev" | |||
| } | |||
| externalNativeBuild { | |||
| ndkBuild { | |||
| path "jni/Android.mk" | |||
| } | |||
| } | |||
| sourceSets { | |||
| main { | |||
| manifest.srcFile 'AndroidManifest.xml' | |||
| java.srcDirs = ['src'] | |||
| res.srcDirs = ['res'] | |||
| } | |||
| androidTest.setRoot('eSpeakTests') | |||
| androidTest { | |||
| java.srcDirs = ['eSpeakTests/src'] | |||
| } | |||
| } | |||
| lint { | |||
| abortOnError false | |||
| } | |||
| project.afterEvaluate { | |||
| tasks.checkData.dependsOn(externalNativeBuildDebug) | |||
| tasks.createDataArchive.dependsOn(externalNativeBuildDebug) | |||
| javaPreCompileDebug.dependsOn(tasks.createDataVersion) | |||
| javaPreCompileRelease.dependsOn(tasks.createDataVersion) | |||
| } | |||
| @@ -1,83 +0,0 @@ | |||
| LOCAL_PATH:= $(call my-dir) | |||
| include $(CLEAR_VARS) | |||
| #LOCAL_CFLAGS = -std=c11 # speechplayer is c++ code | |||
| # ucd-tools wide-character compatibility support: | |||
| UCDTOOLS_SRC_PATH := ../../src/ucd-tools/src | |||
| UCDTOOLS_SRC_FILES := \ | |||
| $(subst $(LOCAL_PATH)/$(UCDTOOLS_SRC_PATH),$(UCDTOOLS_SRC_PATH),$(wildcard $(LOCAL_PATH)/$(UCDTOOLS_SRC_PATH)/*.c*)) | |||
| LOCAL_SRC_FILES += $(UCDTOOLS_SRC_FILES) | |||
| SPEECHPLAYER_SRC_FILES := \ | |||
| ../../src/speechPlayer/src/frame.cpp \ | |||
| ../../src/speechPlayer/src/speechPlayer.cpp \ | |||
| ../../src/speechPlayer/src/speechWaveGenerator.cpp | |||
| LOCAL_SRC_FILES += $(SPEECHPLAYER_SRC_FILES) | |||
| ESPEAK_SOURCES := \ | |||
| src/libespeak-ng/common.c \ | |||
| src/libespeak-ng/compiledata.c \ | |||
| src/libespeak-ng/compiledict.c \ | |||
| src/libespeak-ng/compilembrola.c \ | |||
| src/libespeak-ng/dictionary.c \ | |||
| src/libespeak-ng/encoding.c \ | |||
| src/libespeak-ng/error.c \ | |||
| src/libespeak-ng/espeak_api.c \ | |||
| src/libespeak-ng/ieee80.c \ | |||
| src/libespeak-ng/intonation.c \ | |||
| src/libespeak-ng/klatt.c \ | |||
| src/libespeak-ng/langopts.c \ | |||
| src/libespeak-ng/mnemonics.c \ | |||
| src/libespeak-ng/numbers.c \ | |||
| src/libespeak-ng/phoneme.c \ | |||
| src/libespeak-ng/phonemelist.c \ | |||
| src/libespeak-ng/readclause.c \ | |||
| src/libespeak-ng/setlengths.c \ | |||
| src/libespeak-ng/soundicon.c \ | |||
| src/libespeak-ng/spect.c \ | |||
| src/libespeak-ng/speech.c \ | |||
| src/libespeak-ng/sPlayer.c \ | |||
| src/libespeak-ng/ssml.c \ | |||
| src/libespeak-ng/synthdata.c \ | |||
| src/libespeak-ng/synthesize.c \ | |||
| src/libespeak-ng/synth_mbrola.c \ | |||
| src/libespeak-ng/translate.c \ | |||
| src/libespeak-ng/translateword.c \ | |||
| src/libespeak-ng/tr_languages.c \ | |||
| src/libespeak-ng/voices.c \ | |||
| src/libespeak-ng/wavegen.c | |||
| ESPEAK_SRC_PATH := ../../src | |||
| ESPEAK_SRC_FILES := \ | |||
| $(subst src/,$(ESPEAK_SRC_PATH)/,$(ESPEAK_SOURCES)) | |||
| LOCAL_CFLAGS += -DINCLUDE_KLATT -DINCLUDE_SPEECHPLAYER -DINCLUDE_SONIC -DHAVE_ENDIAN_H | |||
| LOCAL_SRC_FILES += \ | |||
| $(filter-out $(BLACKLIST_SRC_FILES),$(ESPEAK_SRC_FILES)) | |||
| # JNI | |||
| LOCAL_SRC_FILES += \ | |||
| $(subst $(LOCAL_PATH)/jni,jni,$(wildcard $(LOCAL_PATH)/jni/*.c)) | |||
| # Common | |||
| LOCAL_C_INCLUDES += \ | |||
| $(LOCAL_PATH)/include \ | |||
| $(LOCAL_PATH)/$(UCDTOOLS_SRC_PATH)/include \ | |||
| $(LOCAL_PATH)/../../src/speechPlayer/include \ | |||
| $(LOCAL_PATH)/$(ESPEAK_SRC_PATH)/include \ | |||
| $(LOCAL_PATH)/$(ESPEAK_SRC_PATH)/include/compat | |||
| LOCAL_LDLIBS := \ | |||
| -llog | |||
| LOCAL_MODULE := libttsespeak | |||
| LOCAL_MODULE_TAGS := optional | |||
| LOCAL_PRELINK_MODULE := false | |||
| include $(BUILD_SHARED_LIBRARY) | |||
| @@ -0,0 +1,26 @@ | |||
| cmake_minimum_required(VERSION 3.8) | |||
| project(espeak-android) | |||
| add_subdirectory(../../ espeakng) | |||
| add_custom_target( | |||
| espeak-data | |||
| COMMAND ${CMAKE_COMMAND} -B${CMAKE_CURRENT_BINARY_DIR}/../espeak-data ${CMAKE_CURRENT_SOURCE_DIR}/../../ | |||
| COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/../espeak-data --target data | |||
| COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/../espeak-data/espeak-ng-data ${CMAKE_SOURCE_DIR}/../build/generated/espeak-ng-data | |||
| ) | |||
| message(STATUS "Data: ${CMAKE_CURRENT_SOURCE_DIR}") | |||
| find_library(A_LOG log) | |||
| add_library(ttsespeak SHARED | |||
| jni/eSpeakService.c | |||
| ) | |||
| target_include_directories(ttsespeak PRIVATE | |||
| include | |||
| ) | |||
| target_link_libraries(ttsespeak PRIVATE | |||
| espeak-ng ${A_LOG} | |||
| ) | |||
| @@ -26,6 +26,7 @@ | |||
| #include <unistd.h> | |||
| #include <stdlib.h> | |||
| #include <stdbool.h> | |||
| #include <string.h> | |||
| #include <jni.h> | |||
| #include <espeak/speak_lib.h> | |||