diff --git a/sound/svox/Makefile b/sound/svox/Makefile new file mode 100644 index 000000000..159f1e37f --- /dev/null +++ b/sound/svox/Makefile @@ -0,0 +1,60 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=svox +PKG_VERSION:=1.0+git20130326 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz +PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/s/svox +PKG_MD5SUM:=df4bf610ff4273b420e80ff64af93130 + +PKG_MAINTAINER:=Alessandro Di Marco +PKG_LICENSE:=Apache-2.0 +PKG_LICENSE_FILES:= + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/svox + TITLE:=SVOX PicoTTS text-to-speech engine + SECTION:=sound + CATEGORY:=Sound + URL:=https://android.googlesource.com/platform/external/svox/ + DEPENDS:=+libpopt +endef + +define Package/svox/description + SVOX is an embedded speech technology company founded in 2000 and + headquartered in Zurich, Switzerland. SVOX was acquired by Nuance + Communications in 2011. Company's products included Automated Speech + Recognition (ASR), Text-to-Speech (TTS) and Speech Dialog systems, + with customers mostly being manufacturers and system integrators in + automotive and mobile device industries. + SVOX TTS technology is characterized by natural and clear sound as well + as unique polyglot capability - the same voice can speak multiple + languages like a native speaker. +endef + +define Build/Prepare + $(call Build/Prepare/Default) + mv $(PKG_BUILD_DIR)/pico/* $(PKG_BUILD_DIR) +endef + +define Build/Configure + $(call Build/Configure/Default) +endef + +define Package/svox/install + $(call Build/Install/Default) +endef + +$(eval $(call BuildPackage,svox)) diff --git a/sound/svox/patches/0001-autoconf-building-of-library-using-libtool.patch b/sound/svox/patches/0001-autoconf-building-of-library-using-libtool.patch new file mode 100644 index 000000000..73c76bbde --- /dev/null +++ b/sound/svox/patches/0001-autoconf-building-of-library-using-libtool.patch @@ -0,0 +1,113 @@ +From 9fe1aa475b2667446b081623abc5c6f6083a76e6 Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Sat, 24 Oct 2009 17:03:37 +0200 +Subject: [PATCH 1/7] autoconf building of library (using libtool) + +--- + pico/Makefile.am | 36 ++++++++++++++++++++++++++++++++++++ + pico/autogen.sh | 36 ++++++++++++++++++++++++++++++++++++ + pico/configure.in | 16 ++++++++++++++++ + 3 files changed, 88 insertions(+), 0 deletions(-) + create mode 100644 pico/Makefile.am + create mode 100755 pico/autogen.sh + create mode 100644 pico/configure.in + +--- /dev/null ++++ b/pico/Makefile.am +@@ -0,0 +1,36 @@ ++## Makefile.am -- Process this file with automake to produce Makefile.in ++ ++ACLOCAL_AMFLAGS = -I m4 ++ ++lib_LTLIBRARIES = libttspico.la ++libttspico_la_SOURCES = \ ++ lib/picoacph.c \ ++ lib/picoapi.c \ ++ lib/picobase.c \ ++ lib/picocep.c \ ++ lib/picoctrl.c \ ++ lib/picodata.c \ ++ lib/picodbg.c \ ++ lib/picoextapi.c \ ++ lib/picofftsg.c \ ++ lib/picokdbg.c \ ++ lib/picokdt.c \ ++ lib/picokfst.c \ ++ lib/picoklex.c \ ++ lib/picoknow.c \ ++ lib/picokpdf.c \ ++ lib/picokpr.c \ ++ lib/picoktab.c \ ++ lib/picoos.c \ ++ lib/picopal.c \ ++ lib/picopam.c \ ++ lib/picopr.c \ ++ lib/picorsrc.c \ ++ lib/picosa.c \ ++ lib/picosig.c \ ++ lib/picosig2.c \ ++ lib/picospho.c \ ++ lib/picotok.c \ ++ lib/picotrns.c \ ++ lib/picowa.c ++ +--- /dev/null ++++ b/pico/autogen.sh +@@ -0,0 +1,38 @@ ++#!/bin/sh ++ ++#created by aclocal ++rm -rf autom4te.cache ++rm -f aclocal.m4 ++ ++#created by libtoolize ++rm -rf m4 ++mkdir m4 ++rm -f ltmain.sh ++ ++#created by autoconf ++rm -f configure ++ ++#created by automake ++rm -f install-sh missing depcomp Makefile.in config.guess config.sub ++rm -f INSTALL COPYING compile ++ ++#created by ./configure ++rm -rf .deps ++rm -f Makefile config.log config.status libtool ++ ++if [ "$1" = "clean" ]; then ++ exit ++fi ++ ++IPATHS="-I lib" ++ ++libtoolize ++aclocal $IPATHS ++automake --add-missing ++autoconf $IPATHS ++ ++rm -rf autom4te.cache ++ ++echo "Now run ./configure and then make." ++exit 0 ++ +--- /dev/null ++++ b/pico/configure.in +@@ -0,0 +1,16 @@ ++dnl Process this file with autoconf to produce a configure script. ++ ++AC_PREREQ(2.59) ++ ++AC_INIT([svox], [1.0], [math.parent@gmail.com]) ++ ++AM_INIT_AUTOMAKE([1.9 foreign]) ++ ++AC_PROG_CC ++LT_INIT ++AC_PROG_LIBTOOL ++ ++AC_CONFIG_FILES([Makefile]) ++AC_OUTPUT ++ ++AC_CONFIG_MACRO_DIR([m4]) diff --git a/sound/svox/patches/0002-gitignore-for-autotools-files.patch b/sound/svox/patches/0002-gitignore-for-autotools-files.patch new file mode 100644 index 000000000..df57df7f7 --- /dev/null +++ b/sound/svox/patches/0002-gitignore-for-autotools-files.patch @@ -0,0 +1,51 @@ +From b56b0a4bdf3e11271caab744f532cb055c517b51 Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Sat, 24 Oct 2009 17:12:42 +0200 +Subject: [PATCH 2/7] gitignore for autotools files + +--- + pico/.gitignore | 32 ++++++++++++++++++++++++++++++++ + 1 files changed, 32 insertions(+), 0 deletions(-) + create mode 100644 pico/.gitignore + +diff --git a/pico/.gitignore b/pico/.gitignore +new file mode 100644 +index 0000000..4235569 +--- /dev/null ++++ b/pico/.gitignore +@@ -0,0 +1,32 @@ ++#created by aclocal ++autom4te.cache ++aclocal.m4 ++ ++#created by libtoolize ++m4 ++ltmain.sh ++ ++#created by autoconf ++configure ++ ++#created by automake ++install-sh ++missing ++depcomp ++Makefile.in ++config.guess ++config.sub ++ ++#created by ./configure ++.deps ++Makefile ++config.log ++config.status ++libtool ++ ++#created by make ++*.o ++*.lo ++.libs ++libttspico.la ++ +-- +1.7.1 + diff --git a/sound/svox/patches/0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch b/sound/svox/patches/0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch new file mode 100644 index 000000000..8ef4757e6 --- /dev/null +++ b/sound/svox/patches/0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch @@ -0,0 +1,399 @@ +From 8bec80dccc9f4fe147a500486813f4e89a0d56d8 Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Sun, 25 Oct 2009 15:19:01 +0100 +Subject: [PATCH 3/7] pico2wave: Convert text to .wav using svox text-to-speech system. + +--- + pico/.gitignore | 1 + + pico/Makefile.am | 7 + + pico/bin/pico2wave.c | 341 ++++++++++++++++++++++++++++++++++++++++++++++++++ + pico/configure.in | 3 + + 4 files changed, 352 insertions(+), 0 deletions(-) + create mode 100644 pico/bin/pico2wave.c + +diff --git a/pico/.gitignore b/pico/.gitignore +index 4235569..a110298 100644 +--- a/pico/.gitignore ++++ b/pico/.gitignore +@@ -29,4 +29,5 @@ libtool + *.lo + .libs + libttspico.la ++pico2wave + +diff --git a/pico/Makefile.am b/pico/Makefile.am +index 6d8a10c..0d9472d 100644 +--- a/pico/Makefile.am ++++ b/pico/Makefile.am +@@ -34,3 +34,10 @@ libttspico_la_SOURCES = \ + lib/picotrns.c \ + lib/picowa.c + ++bin_PROGRAMS = pico2wave ++pico2wave_SOURCES = \ ++ bin/pico2wave.c ++pico2wave_LDADD = \ ++ libttspico.la -lm -lpopt ++pico2wave_CFLAGS = -Wall -I lib ++ +diff --git a/pico/bin/pico2wave.c b/pico/bin/pico2wave.c +new file mode 100644 +index 0000000..0c035a7 +--- /dev/null ++++ b/pico/bin/pico2wave.c +@@ -0,0 +1,341 @@ ++/* pico2wave.c ++ ++ * Copyright (C) 2009 Mathieu Parent ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ * ++ * Convert text to .wav using svox text-to-speech system. ++ * ++ */ ++ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++ ++/* adaptation layer defines */ ++#define PICO_MEM_SIZE 2500000 ++#define DummyLen 100000000 ++ ++/* string constants */ ++#define MAX_OUTBUF_SIZE 128 ++const char * PICO_LINGWARE_PATH = "./lang/"; ++const char * PICO_VOICE_NAME = "PicoVoice"; ++ ++/* supported voices ++ Pico does not seperately specify the voice and locale. */ ++const char * picoSupportedLangIso3[] = { "eng", "eng", "deu", "spa", "fra", "ita" }; ++const char * picoSupportedCountryIso3[] = { "USA", "GBR", "DEU", "ESP", "FRA", "ITA" }; ++const char * picoSupportedLang[] = { "en-US", "en-GB", "de-DE", "es-ES", "fr-FR", "it-IT" }; ++const char * picoInternalLang[] = { "en-US", "en-GB", "de-DE", "es-ES", "fr-FR", "it-IT" }; ++const char * picoInternalTaLingware[] = { "en-US_ta.bin", "en-GB_ta.bin", "de-DE_ta.bin", "es-ES_ta.bin", "fr-FR_ta.bin", "it-IT_ta.bin" }; ++const char * picoInternalSgLingware[] = { "en-US_lh0_sg.bin", "en-GB_kh0_sg.bin", "de-DE_gl0_sg.bin", "es-ES_zl0_sg.bin", "fr-FR_nk0_sg.bin", "it-IT_cm0_sg.bin" }; ++const char * picoInternalUtppLingware[] = { "en-US_utpp.bin", "en-GB_utpp.bin", "de-DE_utpp.bin", "es-ES_utpp.bin", "fr-FR_utpp.bin", "it-IT_utpp.bin" }; ++const int picoNumSupportedVocs = 6; ++ ++/* adapation layer global variables */ ++void * picoMemArea = NULL; ++pico_System picoSystem = NULL; ++pico_Resource picoTaResource = NULL; ++pico_Resource picoSgResource = NULL; ++pico_Resource picoUtppResource = NULL; ++pico_Engine picoEngine = NULL; ++pico_Char * picoTaFileName = NULL; ++pico_Char * picoSgFileName = NULL; ++pico_Char * picoUtppFileName = NULL; ++pico_Char * picoTaResourceName = NULL; ++pico_Char * picoSgResourceName = NULL; ++pico_Char * picoUtppResourceName = NULL; ++int picoSynthAbort = 0; ++ ++ ++int main(int argc, const char *argv[]) { ++ char * wavefile = NULL; ++ char * lang = "en-US"; ++ int langIndex = -1, langIndexTmp = -1; ++ char * text; ++ int8_t * buffer; ++ size_t bufferSize = 256; ++ ++ /* Parsing options */ ++ poptContext optCon; /* context for parsing command-line options */ ++ int opt; /* used for argument parsing */ ++ ++ struct poptOption optionsTable[] = { ++ { "wave", 'w', POPT_ARG_STRING, &wavefile, 0, ++ "Write output to this WAV file (extension SHOULD be .wav)", "filename.wav" }, ++ { "lang", 'l', POPT_ARG_STRING | POPT_ARGFLAG_SHOW_DEFAULT, &lang, 0, ++ "Language", "lang" }, ++ POPT_AUTOHELP ++ POPT_TABLEEND ++ }; ++ optCon = poptGetContext(NULL, argc, argv, optionsTable, POPT_CONTEXT_POSIXMEHARDER); ++ poptSetOtherOptionHelp(optCon, ""); ++ ++ /* Reporting about invalid extra options */ ++ while ((opt = poptGetNextOpt(optCon)) != -1) { ++ switch (opt) { ++ default: ++ fprintf(stderr, "Invalid option %s: %s\n", ++ poptBadOption(optCon, 0), poptStrerror(opt)); ++ poptPrintHelp(optCon, stderr, 0); ++ exit(1); ++ } ++ } ++ ++ /* Mandatory option: --wave */ ++ if(!wavefile) { ++ fprintf(stderr, "Mandatory option: %s\n\n", ++ "--wave=filename.wav"); ++ poptPrintHelp(optCon, stderr, 0); ++ exit(1); ++ } ++ /* option: --lang */ ++ for(langIndexTmp =0; langIndexTmp */ ++ const char **extra_argv; ++ extra_argv = poptGetArgs(optCon); ++ if(extra_argv) { ++ text = (char *) &(*extra_argv)[0]; ++ } else { ++ //TODO: stdin not supported yet. ++ fprintf(stderr, "Missing argument: %s\n\n", ++ ""); ++ poptPrintHelp(optCon, stderr, 0); ++ exit(1); ++ } ++ ++ poptFreeContext(optCon); ++ ++ buffer = malloc( bufferSize ); ++ ++ int ret, getstatus; ++ pico_Char * inp = NULL; ++ pico_Char * local_text = NULL; ++ short outbuf[MAX_OUTBUF_SIZE/2]; ++ pico_Int16 bytes_sent, bytes_recv, text_remaining, out_data_type; ++ pico_Retstring outMessage; ++ ++ picoSynthAbort = 0; ++ ++ picoMemArea = malloc( PICO_MEM_SIZE ); ++ if((ret = pico_initialize( picoMemArea, PICO_MEM_SIZE, &picoSystem ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot initialize pico (%i): %s\n", ret, outMessage); ++ goto terminate; ++ } ++ ++ /* Load the text analysis Lingware resource file. */ ++ picoTaFileName = (pico_Char *) malloc( PICO_MAX_DATAPATH_NAME_SIZE + PICO_MAX_FILE_NAME_SIZE ); ++ strcpy((char *) picoTaFileName, PICO_LINGWARE_PATH); ++ strcat((char *) picoTaFileName, (const char *) picoInternalTaLingware[langIndex]); ++ if((ret = pico_loadResource( picoSystem, picoTaFileName, &picoTaResource ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot load text analysis resource file (%i): %s\n", ret, outMessage); ++ goto unloadTaResource; ++ } ++ ++ /* Load the signal generation Lingware resource file. */ ++ picoSgFileName = (pico_Char *) malloc( PICO_MAX_DATAPATH_NAME_SIZE + PICO_MAX_FILE_NAME_SIZE ); ++ strcpy((char *) picoSgFileName, PICO_LINGWARE_PATH); ++ strcat((char *) picoSgFileName, (const char *) picoInternalSgLingware[langIndex]); ++ if((ret = pico_loadResource( picoSystem, picoSgFileName, &picoSgResource ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot load signal generation Lingware resource file (%i): %s\n", ret, outMessage); ++ goto unloadSgResource; ++ } ++ ++ /* Load the utpp Lingware resource file if exists - NOTE: this file is optional ++ and is currently not used. Loading is only attempted for future compatibility. ++ If this file is not present the loading will still succeed. // ++ picoUtppFileName = (pico_Char *) malloc( PICO_MAX_DATAPATH_NAME_SIZE + PICO_MAX_FILE_NAME_SIZE ); ++ strcpy((char *) picoUtppFileName, PICO_LINGWARE_PATH); ++ strcat((char *) picoUtppFileName, (const char *) picoInternalUtppLingware[langIndex]); ++ ret = pico_loadResource( picoSystem, picoUtppFileName, &picoUtppResource ); ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ printf("pico_loadResource: %i: %s\n", ret, outMessage); ++ */ ++ ++ /* Get the text analysis resource name. */ ++ picoTaResourceName = (pico_Char *) malloc( PICO_MAX_RESOURCE_NAME_SIZE ); ++ if((ret = pico_getResourceName( picoSystem, picoTaResource, (char *) picoTaResourceName ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot get the text analysis resource name (%i): %s\n", ret, outMessage); ++ goto unloadUtppResource; ++ } ++ ++ /* Get the signal generation resource name. */ ++ picoSgResourceName = (pico_Char *) malloc( PICO_MAX_RESOURCE_NAME_SIZE ); ++ if((ret = pico_getResourceName( picoSystem, picoSgResource, (char *) picoSgResourceName ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot get the signal generation resource name (%i): %s\n", ret, outMessage); ++ goto unloadUtppResource; ++ } ++ ++ ++ /* Create a voice definition. */ ++ if((ret = pico_createVoiceDefinition( picoSystem, (const pico_Char *) PICO_VOICE_NAME ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot create voice definition (%i): %s\n", ret, outMessage); ++ goto unloadUtppResource; ++ } ++ ++ /* Add the text analysis resource to the voice. */ ++ if((ret = pico_addResourceToVoiceDefinition( picoSystem, (const pico_Char *) PICO_VOICE_NAME, picoTaResourceName ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot add the text analysis resource to the voice (%i): %s\n", ret, outMessage); ++ goto unloadUtppResource; ++ } ++ ++ /* Add the signal generation resource to the voice. */ ++ if((ret = pico_addResourceToVoiceDefinition( picoSystem, (const pico_Char *) PICO_VOICE_NAME, picoSgResourceName ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot add the signal generation resource to the voice (%i): %s\n", ret, outMessage); ++ goto unloadUtppResource; ++ } ++ ++ /* Create a new Pico engine. */ ++ if((ret = pico_newEngine( picoSystem, (const pico_Char *) PICO_VOICE_NAME, &picoEngine ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot create a new pico engine (%i): %s\n", ret, outMessage); ++ goto disposeEngine; ++ } ++ ++ local_text = (pico_Char *) text ; ++ text_remaining = strlen((const char *) local_text) + 1; ++ ++ inp = (pico_Char *) local_text; ++ ++ size_t bufused = 0; ++ ++ picoos_Common common = (picoos_Common) pico_sysGetCommon(picoSystem); ++ ++ picoos_SDFile sdOutFile = NULL; ++ ++ picoos_bool done = TRUE; ++ if(TRUE != (done = picoos_sdfOpenOut(common, &sdOutFile, ++ (picoos_char *) wavefile, SAMPLE_FREQ_16KHZ, PICOOS_ENC_LIN))) ++ { ++ fprintf(stderr, "Cannot open output wave file\n"); ++ ret = 1; ++ goto disposeEngine; ++ } ++ ++ /* synthesis loop */ ++ while (text_remaining) { ++ /* Feed the text into the engine. */ ++ if((ret = pico_putTextUtf8( picoEngine, inp, text_remaining, &bytes_sent ))) { ++ pico_getSystemStatusMessage(picoSystem, ret, outMessage); ++ fprintf(stderr, "Cannot put Text (%i): %s\n", ret, outMessage); ++ goto disposeEngine; ++ } ++ ++ text_remaining -= bytes_sent; ++ inp += bytes_sent; ++ ++ do { ++ if (picoSynthAbort) { ++ goto disposeEngine; ++ } ++ /* Retrieve the samples and add them to the buffer. */ ++ getstatus = pico_getData( picoEngine, (void *) outbuf, ++ MAX_OUTBUF_SIZE, &bytes_recv, &out_data_type ); ++ if((getstatus !=PICO_STEP_BUSY) && (getstatus !=PICO_STEP_IDLE)){ ++ pico_getSystemStatusMessage(picoSystem, getstatus, outMessage); ++ fprintf(stderr, "Cannot get Data (%i): %s\n", getstatus, outMessage); ++ goto disposeEngine; ++ } ++ if (bytes_recv) { ++ if ((bufused + bytes_recv) <= bufferSize) { ++ memcpy(buffer+bufused, (int8_t *) outbuf, bytes_recv); ++ bufused += bytes_recv; ++ } else { ++ done = picoos_sdfPutSamples( ++ sdOutFile, ++ bufused / 2, ++ (picoos_int16*) (buffer)); ++ bufused = 0; ++ memcpy(buffer, (int8_t *) outbuf, bytes_recv); ++ bufused += bytes_recv; ++ } ++ } ++ } while (PICO_STEP_BUSY == getstatus); ++ /* This chunk of synthesis is finished; pass the remaining samples. */ ++ if (!picoSynthAbort) { ++ done = picoos_sdfPutSamples( ++ sdOutFile, ++ bufused / 2, ++ (picoos_int16*) (buffer)); ++ } ++ picoSynthAbort = 0; ++ } ++ ++ if(TRUE != (done = picoos_sdfCloseOut(common, &sdOutFile))) ++ { ++ fprintf(stderr, "Cannot close output wave file\n"); ++ ret = 1; ++ goto disposeEngine; ++ } ++ ++disposeEngine: ++ if (picoEngine) { ++ pico_disposeEngine( picoSystem, &picoEngine ); ++ pico_releaseVoiceDefinition( picoSystem, (pico_Char *) PICO_VOICE_NAME ); ++ picoEngine = NULL; ++ } ++unloadUtppResource: ++ if (picoUtppResource) { ++ pico_unloadResource( picoSystem, &picoUtppResource ); ++ picoUtppResource = NULL; ++ } ++unloadSgResource: ++ if (picoSgResource) { ++ pico_unloadResource( picoSystem, &picoSgResource ); ++ picoSgResource = NULL; ++ } ++unloadTaResource: ++ if (picoTaResource) { ++ pico_unloadResource( picoSystem, &picoTaResource ); ++ picoTaResource = NULL; ++ } ++terminate: ++ if (picoSystem) { ++ pico_terminate(&picoSystem); ++ picoSystem = NULL; ++ } ++ exit(ret); ++} ++ +diff --git a/pico/configure.in b/pico/configure.in +index 0afb56d..349eb1d 100644 +--- a/pico/configure.in ++++ b/pico/configure.in +@@ -14,3 +14,6 @@ AC_CONFIG_FILES([Makefile]) + AC_OUTPUT + + AC_CONFIG_MACRO_DIR([m4]) ++ ++AC_CHECK_LIB(popt, poptGetContext) ++ +-- +1.7.1 + diff --git a/sound/svox/patches/0004-add-header-files.patch b/sound/svox/patches/0004-add-header-files.patch new file mode 100644 index 000000000..f05730827 --- /dev/null +++ b/sound/svox/patches/0004-add-header-files.patch @@ -0,0 +1,59 @@ +From 0866cb3f7cfe4b8bae1edc8d0dbf18c85e9ca74f Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Tue, 27 Oct 2009 18:29:45 +0100 +Subject: [PATCH 4/7] add header files + +--- + pico/Makefile.am | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +diff --git a/pico/Makefile.am b/pico/Makefile.am +index 0d9472d..9151042 100644 +--- a/pico/Makefile.am ++++ b/pico/Makefile.am +@@ -34,6 +34,42 @@ libttspico_la_SOURCES = \ + lib/picotrns.c \ + lib/picowa.c + ++libttspico_ladir = $(includedir) ++libttspico_la_HEADERS = \ ++ lib/picoacph.h \ ++ lib/picoapid.h \ ++ lib/picoapi.h \ ++ lib/picobase.h \ ++ lib/picocep.h \ ++ lib/picoctrl.h \ ++ lib/picodata.h \ ++ lib/picodbg.h \ ++ lib/picodefs.h \ ++ lib/picodsp.h \ ++ lib/picoextapi.h \ ++ lib/picofftsg.h \ ++ lib/picokdbg.h \ ++ lib/picokdt.h \ ++ lib/picokfst.h \ ++ lib/picoklex.h \ ++ lib/picoknow.h \ ++ lib/picokpdf.h \ ++ lib/picokpr.h \ ++ lib/picoktab.h \ ++ lib/picoos.h \ ++ lib/picopal.h \ ++ lib/picopam.h \ ++ lib/picopltf.h \ ++ lib/picopr.h \ ++ lib/picorsrc.h \ ++ lib/picosa.h \ ++ lib/picosig2.h \ ++ lib/picosig.h \ ++ lib/picospho.h \ ++ lib/picotok.h \ ++ lib/picotrns.h \ ++ lib/picowa.h ++ + bin_PROGRAMS = pico2wave + pico2wave_SOURCES = \ + bin/pico2wave.c +-- +1.7.1 + diff --git a/sound/svox/patches/0005-Install-lang-files.patch b/sound/svox/patches/0005-Install-lang-files.patch new file mode 100644 index 000000000..95344e31f --- /dev/null +++ b/sound/svox/patches/0005-Install-lang-files.patch @@ -0,0 +1,32 @@ +From 486b9f924bdf38f5f213feed2631060b44024c11 Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Tue, 27 Oct 2009 23:06:46 +0100 +Subject: [PATCH 5/7] Install lang files + +--- + pico/Makefile.am | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/pico/Makefile.am b/pico/Makefile.am +index 9151042..8898050 100644 +--- a/pico/Makefile.am ++++ b/pico/Makefile.am +@@ -70,6 +70,15 @@ libttspico_la_HEADERS = \ + lib/picotrns.h \ + lib/picowa.h + ++picolangdir = $(datadir)/pico/lang ++picolang_DATA = \ ++ lang/de-DE*.bin \ ++ lang/en-GB*.bin \ ++ lang/en-US*.bin \ ++ lang/es-ES*.bin \ ++ lang/fr-FR*.bin \ ++ lang/it-IT*.bin ++ + bin_PROGRAMS = pico2wave + pico2wave_SOURCES = \ + bin/pico2wave.c +-- +1.7.1 + diff --git a/sound/svox/patches/0006-Set-picolangdir.patch b/sound/svox/patches/0006-Set-picolangdir.patch new file mode 100644 index 000000000..1ec646d75 --- /dev/null +++ b/sound/svox/patches/0006-Set-picolangdir.patch @@ -0,0 +1,40 @@ +From 0102d423b79de7af982c8d4619d816f95a9b9278 Mon Sep 17 00:00:00 2001 +From: Mathieu Parent +Date: Thu, 29 Oct 2009 23:55:19 +0100 +Subject: [PATCH 6/7] Set picolangdir + +--- + pico/Makefile.am | 2 +- + pico/bin/pico2wave.c | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletions(-) + +diff --git a/pico/Makefile.am b/pico/Makefile.am +index 8898050..a19c42a 100644 +--- a/pico/Makefile.am ++++ b/pico/Makefile.am +@@ -84,5 +84,5 @@ pico2wave_SOURCES = \ + bin/pico2wave.c + pico2wave_LDADD = \ + libttspico.la -lm -lpopt +-pico2wave_CFLAGS = -Wall -I lib ++pico2wave_CFLAGS = -Wall -Dpicolangdir=\"$(picolangdir)\" -I lib + +diff --git a/pico/bin/pico2wave.c b/pico/bin/pico2wave.c +index 0c035a7..ec7ab79 100644 +--- a/pico/bin/pico2wave.c ++++ b/pico/bin/pico2wave.c +@@ -35,7 +35,11 @@ + + /* string constants */ + #define MAX_OUTBUF_SIZE 128 ++#ifdef picolangdir ++const char * PICO_LINGWARE_PATH = picolangdir "/"; ++#else + const char * PICO_LINGWARE_PATH = "./lang/"; ++#endif + const char * PICO_VOICE_NAME = "PicoVoice"; + + /* supported voices +-- +1.7.1 + diff --git a/sound/svox/patches/0008-64bits.patch b/sound/svox/patches/0008-64bits.patch new file mode 100644 index 000000000..883a42e6d --- /dev/null +++ b/sound/svox/patches/0008-64bits.patch @@ -0,0 +1,26 @@ +Description: fix execution on 64bit archs +Bug: http://code.google.com/p/android/issues/detail?id=12224 +Author: Samuel Thibault + +--- svox/pico/lib/picoapi.c.original 2010-10-25 19:06:57.000000000 +0200 ++++ svox/pico/lib/picoapi.c 2010-10-25 19:07:18.000000000 +0200 +@@ -90,7 +90,7 @@ + status = PICO_ERR_NULLPTR_ACCESS; + } else { + byte_ptr_t rest_mem; +- picoos_uint32 rest_mem_size; ++ picoos_objsize_t rest_mem_size; + pico_System sys; + picoos_MemoryManager sysMM; + picoos_ExceptionManager sysEM; +--- svox/pico/lib/picosig2.c.original 2010-10-26 00:17:18.000000000 +0200 ++++ svox/pico/lib/picosig2.c 2010-10-26 00:17:19.000000000 +0200 +@@ -568,7 +568,7 @@ + for (nI = 1; nI < m1; nI++) { + XXr[nI] = c1[nI] << shift; + } +- i = sizeof(picoos_int32) * (PICODSP_FFTSIZE + 1 - m1); ++ i = sizeof(picoos_int32) * (PICODSP_FFTSIZE - m1); + picoos_mem_set(XXr + m1, 0, i); + dfct_nmf(m4, XXr); /* DFCT directly in fixed point */ + diff --git a/sound/svox/patches/0009-Fix-link-order.patch b/sound/svox/patches/0009-Fix-link-order.patch new file mode 100644 index 000000000..bcf3870fe --- /dev/null +++ b/sound/svox/patches/0009-Fix-link-order.patch @@ -0,0 +1,21 @@ +Index: svox-1.0+git20130326/pico/Makefile.am +=================================================================== +--- svox-1.0+git20130326.orig/pico/Makefile.am 2013-11-12 12:37:05.939979854 -0500 ++++ svox-1.0+git20130326/pico/Makefile.am 2013-11-12 13:00:52.336945041 -0500 +@@ -70,6 +70,8 @@ + lib/picotrns.h \ + lib/picowa.h + ++libttspico_la_LIBADD = -lm ++ + picolangdir = $(datadir)/pico/lang + picolang_DATA = \ + lang/de-DE*.bin \ +@@ -83,6 +85,6 @@ + pico2wave_SOURCES = \ + bin/pico2wave.c + pico2wave_LDADD = \ +- libttspico.la -lm -lpopt ++ libttspico.la -lpopt + pico2wave_CFLAGS = -Wall -Dpicolangdir=\"$(picolangdir)\" -I lib + diff --git a/sound/svox/patches/0010-platform.patch b/sound/svox/patches/0010-platform.patch new file mode 100644 index 000000000..ff76f7525 --- /dev/null +++ b/sound/svox/patches/0010-platform.patch @@ -0,0 +1,30 @@ +--- a/pico/lib/picopltf.h ++++ b/pico/lib/picopltf.h +@@ -39,6 +39,8 @@ + #define PICO_MacOSX 5 /* Macintosh OS X */ + #define PICO_Linux 7 /* Linux */ + ++#define PICO_GENERIC 99 /* Generic */ ++ + /* * definition of current platform ***/ + #if !defined(PICO_PLATFORM) + #if defined(_WIN32) +@@ -48,7 +50,7 @@ + #elif defined(linux) || defined(__linux__) || defined(__linux) + #define PICO_PLATFORM PICO_Linux + #else +-#error PICO_PLATFORM not defined ++#define PICO_PLATFORM PICO_GENERIC + #endif + #endif /* !defined(PICO_PLATFORM) */ + +@@ -64,7 +66,8 @@ + #define PICO_PLATFORM_STRING "UnknownPlatform" + #endif + +-#if (PICO_PLATFORM == PICO_MacOSX) ++#include ++#if __BYTE_ORDER == __BIG_ENDIAN + #define PICO_ENDIANNESS ENDIANNESS_BIG + #else + #define PICO_ENDIANNESS ENDIANNESS_LITTLE diff --git a/sound/svox/patches/0011-subdir.patch b/sound/svox/patches/0011-subdir.patch new file mode 100644 index 000000000..fa9e91ffc --- /dev/null +++ b/sound/svox/patches/0011-subdir.patch @@ -0,0 +1,12 @@ +diff -urN a/pico/configure.in b/pico/configure.in +--- a/pico/configure.in 2015-01-21 18:59:39.604452795 +0100 ++++ b/pico/configure.in 2015-01-21 19:00:53.288777298 +0100 +@@ -4,7 +4,7 @@ + + AC_INIT([svox], [1.0], [math.parent@gmail.com]) + +-AM_INIT_AUTOMAKE([1.9 foreign]) ++AM_INIT_AUTOMAKE([1.9 foreign subdir-objects]) + + AC_PROG_CC + LT_INIT diff --git a/sound/svox/patches/0012-no-headers.patch b/sound/svox/patches/0012-no-headers.patch new file mode 100644 index 000000000..edf4d046e --- /dev/null +++ b/sound/svox/patches/0012-no-headers.patch @@ -0,0 +1,46 @@ +diff -urN a/pico/Makefile.am b/pico/Makefile.am +--- a/pico/Makefile.am 2015-01-22 01:33:21.470895431 +0100 ++++ b/pico/Makefile.am 2015-01-22 01:36:03.042228475 +0100 +@@ -34,42 +34,6 @@ + lib/picotrns.c \ + lib/picowa.c + +-libttspico_ladir = $(includedir) +-libttspico_la_HEADERS = \ +- lib/picoacph.h \ +- lib/picoapid.h \ +- lib/picoapi.h \ +- lib/picobase.h \ +- lib/picocep.h \ +- lib/picoctrl.h \ +- lib/picodata.h \ +- lib/picodbg.h \ +- lib/picodefs.h \ +- lib/picodsp.h \ +- lib/picoextapi.h \ +- lib/picofftsg.h \ +- lib/picokdbg.h \ +- lib/picokdt.h \ +- lib/picokfst.h \ +- lib/picoklex.h \ +- lib/picoknow.h \ +- lib/picokpdf.h \ +- lib/picokpr.h \ +- lib/picoktab.h \ +- lib/picoos.h \ +- lib/picopal.h \ +- lib/picopam.h \ +- lib/picopltf.h \ +- lib/picopr.h \ +- lib/picorsrc.h \ +- lib/picosa.h \ +- lib/picosig2.h \ +- lib/picosig.h \ +- lib/picospho.h \ +- lib/picotok.h \ +- lib/picotrns.h \ +- lib/picowa.h +- + libttspico_la_LIBADD = -lm + + picolangdir = $(datadir)/pico/lang