From eb91c8dfceff0276233189ba9eccaa1758b6b912 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 19 Jan 2017 21:12:12 +0000 Subject: [PATCH] espeak_ng_CompilePhonemeDataPath: Allow the user to specify the source and destination paths for the phoneme data. --- src/include/espeak-ng/espeak_ng.h | 13 ++++++++++++- src/libespeak-ng/compiledata.c | 28 +++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/include/espeak-ng/espeak_ng.h b/src/include/espeak-ng/espeak_ng.h index 942fe175..afa8e547 100644 --- a/src/include/espeak-ng/espeak_ng.h +++ b/src/include/espeak-ng/espeak_ng.h @@ -1,6 +1,6 @@ /* eSpeak NG API. * - * Copyright (C) 2015-2016 Reece H. Dunn + * Copyright (C) 2015-2017 Reece H. Dunn * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,6 +63,8 @@ typedef enum { ENOUTPUT_MODE_SPEAK_AUDIO = 0x0002, } espeak_ng_OUTPUT_MODE; +/* eSpeak NG 1.49.0 */ + typedef struct espeak_ng_ERROR_CONTEXT_ *espeak_ng_ERROR_CONTEXT; ESPEAK_NG_API void @@ -161,6 +163,15 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_CompileIntonation(FILE *log, espeak_ng_ERROR_CONTEXT *context); +/* eSpeak NG 1.49.1 */ + +ESPEAK_NG_API espeak_ng_STATUS +espeak_ng_CompilePhonemeDataPath(long rate, + const char *source_path, + const char *destination_path, + FILE *log, + espeak_ng_ERROR_CONTEXT *context); + #ifdef __cplusplus } #endif diff --git a/src/libespeak-ng/compiledata.c b/src/libespeak-ng/compiledata.c index 7fcb8801..f232b72e 100644 --- a/src/libespeak-ng/compiledata.c +++ b/src/libespeak-ng/compiledata.c @@ -2640,7 +2640,20 @@ static void CompilePhonemeFiles() #pragma GCC visibility push(default) -espeak_ng_STATUS espeak_ng_CompilePhonemeData(long rate, FILE *log, espeak_ng_ERROR_CONTEXT *context) +espeak_ng_STATUS +espeak_ng_CompilePhonemeData(long rate, + FILE *log, + espeak_ng_ERROR_CONTEXT *context) +{ + return espeak_ng_CompilePhonemeDataPath(rate, NULL, NULL, log, context); +} + +espeak_ng_STATUS +espeak_ng_CompilePhonemeDataPath(long rate, + const char *source_path, + const char *destination_path, + FILE *log, + espeak_ng_ERROR_CONTEXT *context) { if (!log) log = stderr; @@ -2648,8 +2661,17 @@ espeak_ng_STATUS espeak_ng_CompilePhonemeData(long rate, FILE *log, espeak_ng_ER char phsrc[sizeof(path_home)+40]; // Source: path to the 'phonemes' source file. char phdst[sizeof(path_home)+40]; // Destination: path to the phondata/phontab/phonindex output files. - sprintf(phsrc, "%s/../phsource", path_home); - sprintf(phdst, "%s", path_home); + if (source_path) { + sprintf(phsrc, "%s", source_path); + } else { + sprintf(phsrc, "%s/../phsource", path_home); + } + + if (destination_path) { + sprintf(phdst, "%s", destination_path); + } else { + sprintf(phdst, "%s", path_home); + } samplerate_native = samplerate = rate; LoadPhData(NULL, NULL);