From: Jakub Bogusz Date: Sat, 2 Mar 2013 19:20:11 +0000 (+0100) Subject: - new, partially based on Debian packaging (with all patches) X-Git-Tag: auto/th/svox-1.0-0.git20110131.1~1 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=commitdiff_plain;h=f4a1d095740b66e857273daeff9430ff2c62f578;p=packages%2Fsvox.git - new, partially based on Debian packaging (with all patches) - added link patch to fix libpicotts linking --- f4a1d095740b66e857273daeff9430ff2c62f578 diff --git a/0001-autoconf-building-of-library-using-libtool.patch b/0001-autoconf-building-of-library-using-libtool.patch new file mode 100644 index 0000000..23201b6 --- /dev/null +++ b/0001-autoconf-building-of-library-using-libtool.patch @@ -0,0 +1,123 @@ +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 + +diff --git a/pico/Makefile.am b/pico/Makefile.am +new file mode 100644 +index 0000000..6d8a10c +--- /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 ++ +diff --git a/pico/autogen.sh b/pico/autogen.sh +new file mode 100755 +index 0000000..a2f757c +--- /dev/null ++++ b/pico/autogen.sh +@@ -0,0 +1,36 @@ ++#!/bin/sh ++ ++#created by aclocal ++rm -rf autom4te.cache ++rm -f aclocal.m4 ++ ++#created by libtoolize ++rm -rf 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 ++ ++#created by ./configure ++rm -rf .deps ++rm -f Makefile config.log config.status libtool ++ ++if [ "$1" = "clean" ]; then ++ exit ++fi ++ ++IPATHS="-I lib" ++ ++aclocal $IPATHS ++libtoolize ++autoconf $IPATHS ++automake --add-missing ++ ++rm -rf autom4te.cache ++ ++echo "Now run ./configure and then make." ++exit 0 ++ +diff --git a/pico/configure.in b/pico/configure.in +new file mode 100644 +index 0000000..0afb56d +--- /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]) +-- +1.7.1 + diff --git a/0002-gitignore-for-autotools-files.patch b/0002-gitignore-for-autotools-files.patch new file mode 100644 index 0000000..df57df7 --- /dev/null +++ b/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/0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch b/0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch new file mode 100644 index 0000000..8ef4757 --- /dev/null +++ b/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/0004-add-header-files.patch b/0004-add-header-files.patch new file mode 100644 index 0000000..f057308 --- /dev/null +++ b/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/0005-Install-lang-files.patch b/0005-Install-lang-files.patch new file mode 100644 index 0000000..95344e3 --- /dev/null +++ b/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/0006-Set-picolangdir.patch b/0006-Set-picolangdir.patch new file mode 100644 index 0000000..1ec646d --- /dev/null +++ b/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/0008-64bits.patch b/0008-64bits.patch new file mode 100644 index 0000000..883a42e --- /dev/null +++ b/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/svox-link.patch b/svox-link.patch new file mode 100644 index 0000000..f2958d5 --- /dev/null +++ b/svox-link.patch @@ -0,0 +1,10 @@ +--- svox-1.0+git20110131/pico/Makefile.am.orig 2013-03-02 18:42:05.685584071 +0100 ++++ svox-1.0+git20110131/pico/Makefile.am 2013-03-02 18:52:46.005557199 +0100 +@@ -3,6 +3,7 @@ + ACLOCAL_AMFLAGS = -I m4 + + lib_LTLIBRARIES = libttspico.la ++libttspico_la_LIBADD = -lm + libttspico_la_SOURCES = \ + lib/picoacph.c \ + lib/picoapi.c \ diff --git a/svox.spec b/svox.spec new file mode 100644 index 0000000..4a173e9 --- /dev/null +++ b/svox.spec @@ -0,0 +1,230 @@ +Summary: SVOX Pico software speech synthesizer engine +Summary(pl.UTF-8): Silnik programowego syntezatora mowy SVOX Pico +Name: svox +%define subver git20110131 +Version: 1.0 +Release: 0.%{subver}.1 +License: Apache v2.0 +Group: Libraries +Source0: http://ftp.de.debian.org/debian/pool/non-free/s/svox/%{name}_%{version}+%{subver}.orig.tar.gz +# Source0-md5: e9dd590721705c50ee5d7f262bd3c697 +Patch0: 0001-autoconf-building-of-library-using-libtool.patch +Patch1: 0002-gitignore-for-autotools-files.patch +Patch2: 0003-pico2wave-Convert-text-to-.wav-using-svox-text-to-sp.patch +Patch3: 0004-add-header-files.patch +Patch4: 0005-Install-lang-files.patch +Patch5: 0006-Set-picolangdir.patch +Patch6: 0008-64bits.patch +Patch7: %{name}-link.patch +URL: http://www.android.com/ +BuildRequires: autoconf >= 2.59 +BuildRequires: automake >= 1:1.9 +BuildRequires: libtool >= 2:2 +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%description +The SVOX Pico engine is a software speech synthesizer for German, +English (GB and US), Spanish, French and Italian. + +SVOX produces a clear and distinct speech output made possible by the +use of Hidden Markov Model (HMM) algorithms. + +%description -l pl.UTF-8 +Silnik SVOX Pico to programowy syntezator mowy dla języka +niemieckiego, angielskiego (brytyjskiego i amerykańskiego), +hiszpańskiego, francuskiego i włoskiego. + +SVOX wytwarza czystą i wyraźną mowę dzięki użyciu algorytmów opartych +na ukrytych modelach Markowa (HMM - Hidden Markov Model). + +%package devel +Summary: Header files for SVOX Pico TTS library +Summary(pl.UTF-8): Pliki nagłówkowe biblioteki SVOX Pico TTS +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Header files for SVOX Pico TTS library. + +%description devel -l pl.UTF-8 +Pliki nagłówkowe biblioteki SVOX Pico TTS. + +%package static +Summary: Static SVOX Pico TTS library +Summary(pl.UTF-8): Statyczna biblioteka SVOX Pico TTS +Group: Development/Libraries +Requires: %{name}-devel = %{version}-%{release} + +%description static +Static SVOX Pico TTS library. + +%description static -l pl.UTF-8 +Statyczna biblioteka SVOX Pico TTS. + +%package lang-de +Summary: SVOX Pico TTS language files (lingware) for German +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla języka niemieckiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-de +SVOX Pico TTS language files (lingware) for German. + +%description lang-de -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +niemieckiego. + +%package lang-en_GB +Summary: SVOX Pico TTS language files (lingware) for UK English +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla angielskiego brytyjskiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-en_GB +SVOX Pico TTS language files (lingware) for UK English. + +%description lang-en_GB -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +angielskiego brytyjskiego. + +%package lang-en_US +Summary: SVOX Pico TTS language files (lingware) for US English +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla angielskiego amerykańskiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-en_US +SVOX Pico TTS language files (lingware) for US English. + +%description lang-en_US -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +angielskiego amerykańskiego. + +%package lang-es +Summary: SVOX Pico TTS language files (lingware) for Spanish +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla języka hiszpańskiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-es +SVOX Pico TTS language files (lingware) for Spanish + +%description lang-es -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +hiszpańskiego. + +%package lang-fr +Summary: SVOX Pico TTS language files (lingware) for French +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla języka francuskiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-fr +SVOX Pico TTS language files (lingware) for French. + +%description lang-fr -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +francuskiego. + +%package lang-it +Summary: SVOX Pico TTS language files (lingware) for Italian +Summary(pl.UTF-8): Pliki językowe (lingware) syntezatora SVOX Pico dla języka włoskiego +Group: Applications/Text +Requires: %{name} = %{version}-%{release} + +%description lang-it +SVOX Pico TTS language files (lingware) for Italian. + +%description lang-it -l pl.UTF-8 +Pliki językowe (lingware) syntezatora SVOX Pico dla języka +włoskiego. + +%package docs +Summary: SVOX Pico TTS engine documentation +Summary(pl.UTF-8): Dokumentacja silnika syntezy mowy SVOX Pico +Group: Documentation + +%description docs +SVOX Pico TTS engine documentation. + +%description docs -l pl.UTF-8 +Dokumentacja silnika syntezy mowy SVOX Pico. + +%prep +%setup -q -n %{name}-%{version}+%{subver} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 + +%build +cd pico +%{__libtoolize} +%{__aclocal} +%{__autoconf} +%{__automake} +%configure + +%{__make} + +%install +rm -rf $RPM_BUILD_ROOT + +%{__make} -C pico install \ + DESTDIR=$RPM_BUILD_ROOT + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/pico2wave +%attr(755,root,root) %{_libdir}/libttspico.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libttspico.so.0 +%dir %{_datadir}/pico +%dir %{_datadir}/pico/lang + +%files devel +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libttspico.so +%{_libdir}/libttspico.la +%{_includedir}/pico*.h + +%files static +%defattr(644,root,root,755) +%{_libdir}/libttspico.a + +%files lang-de +%defattr(644,root,root,755) +%{_datadir}/pico/lang/de-DE_*.bin + +%files lang-en_GB +%defattr(644,root,root,755) +%{_datadir}/pico/lang/en-GB_*.bin + +%files lang-en_US +%defattr(644,root,root,755) +%{_datadir}/pico/lang/en-US_*.bin + +%files lang-es +%defattr(644,root,root,755) +%{_datadir}/pico/lang/es-ES_*.bin + +%files lang-fr +%defattr(644,root,root,755) +%{_datadir}/pico/lang/fr-FR_*.bin + +%files lang-it +%defattr(644,root,root,755) +%{_datadir}/pico/lang/it-IT_*.bin + +%files docs +%defattr(644,root,root,755) +%doc pico_resources/docs/SVOX_Pico_{Lingware,Manual,architecture_and_design}.pdf