From df170d1c48fde5176e2cb7675b08ff128c71d0ae Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sat, 2 Jan 2016 18:42:26 +0000 Subject: [PATCH] Create an espeak-ng version of espeak_SetVoiceBy(Name|Properties). --- src/include/espeak-ng/espeak_ng.h | 7 +++++++ src/libespeak-ng/espeak_api.c | 10 ++++++++++ src/libespeak-ng/espeak_command.h | 2 -- src/libespeak-ng/voices.c | 13 ++++++------- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/include/espeak-ng/espeak_ng.h b/src/include/espeak-ng/espeak_ng.h index a4ca67c5..674dec06 100644 --- a/src/include/espeak-ng/espeak_ng.h +++ b/src/include/espeak-ng/espeak_ng.h @@ -43,6 +43,7 @@ typedef enum { ENS_FIFO_BUFFER_FULL = 0x100003FF, ENS_NOT_INITIALIZED = 0x100004FF, ENS_AUDIO_ERROR = 0x100005FF, + ENS_VOICE_NOT_FOUND = 0x100006FF, } espeak_ng_STATUS; typedef enum { @@ -72,6 +73,12 @@ espeak_ng_SetParameter(espeak_PARAMETER parameter, ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SetPunctuationList(const wchar_t *punctlist); +ESPEAK_NG_API espeak_ng_STATUS +espeak_ng_SetVoiceByName(const char *name); + +ESPEAK_NG_API espeak_ng_STATUS +espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector); + ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Synthesize(const void *text, size_t size, diff --git a/src/libespeak-ng/espeak_api.c b/src/libespeak-ng/espeak_api.c index 6d2f1ad3..20777fb2 100644 --- a/src/libespeak-ng/espeak_api.c +++ b/src/libespeak-ng/espeak_api.c @@ -123,6 +123,16 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist) return status_to_espeak_error(espeak_ng_SetPunctuationList(punctlist)); } +ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name) +{ + return status_to_espeak_error(espeak_SetVoiceByName(name)); +} + +ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector) +{ + return status_to_espeak_error(espeak_SetVoiceByProperties(voice_selector)); +} + ESPEAK_API espeak_ERROR espeak_Cancel(void) { return status_to_espeak_error(espeak_ng_Cancel()); diff --git a/src/libespeak-ng/espeak_command.h b/src/libespeak-ng/espeak_command.h index 61d6c9c6..f8cd94ca 100644 --- a/src/libespeak-ng/espeak_command.h +++ b/src/libespeak-ng/espeak_command.h @@ -141,8 +141,6 @@ espeak_ng_STATUS sync_espeak_Key(const char *key); espeak_ng_STATUS sync_espeak_Char(wchar_t character); void sync_espeak_SetPunctuationList(const wchar_t *punctlist); void sync_espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); -int sync_espeak_SetVoiceByName(const char *name); -int sync_espeak_SetVoiceByProperties(espeak_VOICE *voice_selector); espeak_ng_STATUS SetParameter(int parameter, int value, int relative); int sync_espeak_terminated_msg(unsigned int unique_identifier, void *user_data); diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index a168b73f..d4e21140 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -1510,7 +1510,7 @@ static void GetVoices(const char *path) #pragma GCC visibility push(default) -espeak_ERROR espeak_SetVoiceByName(const char *name) +ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SetVoiceByName(const char *name) { espeak_VOICE *v; int ix; @@ -1541,7 +1541,7 @@ espeak_ERROR espeak_SetVoiceByName(const char *name) DoVoiceChange(voice); voice_selector.languages = voice->language_name; SetVoiceStack(&voice_selector, variant_name); - return EE_OK; + return ENS_OK; } if (n_voices_list == 0) @@ -1557,24 +1557,23 @@ espeak_ERROR espeak_SetVoiceByName(const char *name) return EE_OK; } } - return EE_INTERNAL_ERROR; // voice name not found + return ENS_VOICE_NOT_FOUND; } -espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector) +ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SetVoiceByProperties(espeak_VOICE *voice_selector) { const char *voice_id; int voice_found; voice_id = SelectVoice(voice_selector, &voice_found); - if (voice_found == 0) - return EE_NOT_FOUND; + return ENS_VOICE_NOT_FOUND; LoadVoiceVariant(voice_id, 0); DoVoiceChange(voice); SetVoiceStack(voice_selector, ""); - return EE_OK; + return ENS_OK; } #pragma GCC visibility pop