@@ -574,8 +574,17 @@ int main(int argc, char **argv) | |||
phonemes_separator = 0x200d; // ZWJ | |||
break; | |||
case 0x10e: // --compile-mbrola | |||
{ | |||
espeak_ng_InitializePath(data_path); | |||
return (espeak_ng_CompileMbrolaVoice(optarg2, stdout) == ENS_OK) ? EXIT_SUCCESS : EXIT_FAILURE; | |||
espeak_ng_ERROR_CONTEXT context = NULL; | |||
espeak_ng_STATUS result = espeak_ng_CompileMbrolaVoice(optarg2, stdout, &context); | |||
if (result != ENS_OK) { | |||
espeak_ng_PrintStatusCodeMessage(result, stderr, context); | |||
espeak_ng_ClearErrorContext(&context); | |||
return EXIT_FAILURE; | |||
} | |||
return EXIT_SUCCESS; | |||
} | |||
case 0x10f: // --compile-intonations | |||
espeak_ng_InitializePath(data_path); | |||
return (espeak_ng_CompileIntonation(stdout) == ENS_OK) ? EXIT_SUCCESS : EXIT_FAILURE; |
@@ -143,7 +143,8 @@ espeak_ng_CompileDictionary(const char *dsource, | |||
ESPEAK_NG_API espeak_ng_STATUS | |||
espeak_ng_CompileMbrolaVoice(const char *path, | |||
FILE *log); | |||
FILE *log, | |||
espeak_ng_ERROR_CONTEXT *context); | |||
ESPEAK_NG_API espeak_ng_STATUS | |||
espeak_ng_CompilePhonemeData(long rate, |
@@ -30,6 +30,7 @@ | |||
#include "speak_lib.h" | |||
#include "espeak_ng.h" | |||
#include "error.h" | |||
#include "phoneme.h" | |||
#include "speech.h" | |||
#include "synthesize.h" | |||
@@ -62,7 +63,7 @@ static unsigned int StringToWord(const char *string) | |||
} | |||
#pragma GCC visibility push(default) | |||
espeak_ng_STATUS espeak_ng_CompileMbrolaVoice(const char *filepath, FILE *log) | |||
espeak_ng_STATUS espeak_ng_CompileMbrolaVoice(const char *filepath, FILE *log, espeak_ng_ERROR_CONTEXT *context) | |||
{ | |||
if (!log) log = stderr; | |||
@@ -85,10 +86,8 @@ espeak_ng_STATUS espeak_ng_CompileMbrolaVoice(const char *filepath, FILE *log) | |||
MBROLA_TAB data[N_PHONEME_TAB]; | |||
strcpy(buf, filepath); | |||
if ((f_in = fopen(buf, "r")) == NULL) { | |||
fprintf(log, "Can't read: %s\n", filepath); | |||
return errno; | |||
} | |||
if ((f_in = fopen(buf, "r")) == NULL) | |||
return create_file_error_context(context, errno, buf); | |||
while (fgets(buf, sizeof(phoneme), f_in) != NULL) { | |||
buf[sizeof(phoneme)-1] = 0; | |||
@@ -126,10 +125,8 @@ espeak_ng_STATUS espeak_ng_CompileMbrolaVoice(const char *filepath, FILE *log) | |||
strcpy(mbrola_voice, basename(filepath)); | |||
sprintf(buf, "%s/mbrola_ph/%s_phtrans", path_home, mbrola_voice); | |||
if ((f_out = fopen(buf, "wb")) == NULL) { | |||
fprintf(log, "Can't write to: %s\n", buf); | |||
return errno; | |||
} | |||
if ((f_out = fopen(buf, "wb")) == NULL) | |||
return create_file_error_context(context, errno, buf); | |||
data[count].name = 0; // list terminator | |||
Write4Bytes(f_out, mbrola_ctrl); |
@@ -561,8 +561,17 @@ int main(int argc, char **argv) | |||
phonemes_separator = 0x200d; // ZWJ | |||
break; | |||
case 0x10e: // --compile-mbrola | |||
{ | |||
espeak_ng_InitializePath(data_path); | |||
return (espeak_ng_CompileMbrolaVoice(optarg2, stdout) == ENS_OK) ? EXIT_SUCCESS : EXIT_FAILURE; | |||
espeak_ng_ERROR_CONTEXT context = NULL; | |||
espeak_ng_STATUS result = espeak_ng_CompileMbrolaVoice(optarg2, stdout, &context); | |||
if (result != ENS_OK) { | |||
espeak_ng_PrintStatusCodeMessage(result, stderr, context); | |||
espeak_ng_ClearErrorContext(&context); | |||
return EXIT_FAILURE; | |||
} | |||
return EXIT_SUCCESS; | |||
} | |||
case 0x10f: // --compile-intonations | |||
espeak_ng_InitializePath(data_path); | |||
return (espeak_ng_CompileIntonation(stdout) == ENS_OK) ? EXIT_SUCCESS : EXIT_FAILURE; |