diff --git a/src/include/espeak-ng/espeak_ng.h b/src/include/espeak-ng/espeak_ng.h index be604cf0..c3598ac3 100644 --- a/src/include/espeak-ng/espeak_ng.h +++ b/src/include/espeak-ng/espeak_ng.h @@ -19,6 +19,8 @@ #ifndef ESPEAK_NG_H #define ESPEAK_NG_H +#include + #ifdef __cplusplus extern "C" { @@ -60,6 +62,9 @@ espeak_ng_InitializeOutput(espeak_ng_OUTPUT_MODE output_mode, ESPEAK_NG_API int espeak_ng_GetSampleRate(void); +ESPEAK_NG_API espeak_ng_STATUS +espeak_ng_SpeakCharacter(wchar_t character); + ESPEAK_NG_API espeak_ng_STATUS espeak_ng_CompileDictionary(const char *dsource, const char *dict_name, diff --git a/src/libespeak-ng/espeak_api.c b/src/libespeak-ng/espeak_api.c index d3933a76..b2bda02a 100644 --- a/src/libespeak-ng/espeak_api.c +++ b/src/libespeak-ng/espeak_api.c @@ -21,6 +21,7 @@ #include "speak_lib.h" #include "espeak_ng.h" +#include #include #if HAVE_STDINT_H #include @@ -31,6 +32,17 @@ #include "synthesize.h" #include "translate.h" +static espeak_ERROR status_to_espeak_error(espeak_ng_STATUS status) +{ + switch (status) + { + case ENS_OK: return EE_OK; + case ENOENT: return EE_NOT_FOUND; + case ENS_FIFO_BUFFER_FULL: return EE_BUFFER_FULL; + default: return EE_INTERNAL_ERROR; + } +} + #pragma GCC visibility push(default) ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options) @@ -68,6 +80,11 @@ ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length return espeak_ng_GetSampleRate(); } +ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) +{ + return status_to_espeak_error(espeak_ng_SpeakCharacter(character)); +} + ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags) { espeak_ng_CompileDictionary(path, dictionary_name, log, flags); diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index 7ad25c44..8f95492a 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -756,29 +756,24 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key) return a_error; } -ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) +ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SpeakCharacter(wchar_t character) { // is there a system resource of character names per language? - if (f_logespeak) - fprintf(f_logespeak, "\nCHAR U+%x\n", character); - #ifdef USE_ASYNC - espeak_ERROR a_error; - if (my_mode & ENOUTPUT_MODE_SYNCHRONOUS) { sync_espeak_Char(character); - return EE_OK; + return ENS_OK; } t_espeak_command *c = create_espeak_char(character, NULL); - a_error = status_to_espeak_error(fifo_add_command(c)); - if (a_error != EE_OK) + espeak_ng_STATUS status = fifo_add_command(c); + if (status != ENS_OK) delete_espeak_command(c); - return a_error; + return status; #else sync_espeak_Char(character); - return EE_OK; + return ENS_OK; #endif }