Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:gladiac
espeak-ng
espeak-ng-add-piper-support.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File espeak-ng-add-piper-support.patch of Package espeak-ng
From 615b9a89bffc7fe892d48894b3e09f9a3089a211 Mon Sep 17 00:00:00 2001 From: Michael Hansen <mike@rhasspy.org> Date: Wed, 24 May 2023 14:05:13 -0500 Subject: [PATCH] Add espeak_TextToPhonemesWithTerminator --- src/include/espeak-ng/speak_lib.h | 6 ++++++ src/libespeak-ng/speech.c | 36 ++++++++++++++++++++++--------- src/libespeak-ng/translate.c | 13 ++++++++++- 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/include/espeak-ng/speak_lib.h b/src/include/espeak-ng/speak_lib.h index 14500f69..a98b2230 100644 --- a/src/include/espeak-ng/speak_lib.h +++ b/src/include/espeak-ng/speak_lib.h @@ -541,6 +541,12 @@ ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, */ +#ifdef __cplusplus +extern "C" +#endif +ESPEAK_API const char *espeak_TextToPhonemesWithTerminator(const void **textptr, int textmode, int phonememode, int *terminator); +/* Version of espeak_TextToPhonemes that also returns the clause terminator (e.g., CLAUSE_INTONATION_FULL_STOP) */ + #ifdef __cplusplus extern "C" #endif diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index 4258191f..9063830f 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -859,6 +859,31 @@ ESPEAK_API void espeak_SetPhonemeTrace(int phonememode, FILE *stream) f_trans = stderr; } +// Same as espeak_TextToPhonemes except we also get the clause terminator used (full stop, comma, etc.). +// Depends on the added TranslateClauseWithTerminator in +ESPEAK_API const char* espeak_TextToPhonemesWithTerminator(const void** textptr, int textmode, int phonememode, int* terminator) +{ + /* phoneme_mode + bit 1: 0=eSpeak's ascii phoneme names, 1= International Phonetic + Alphabet (as UTF-8 characters). bit 7: use (bits 8-23) as a tie within + multi-letter phonemes names bits 8-23: separator character, between + phoneme names + */ + + if (p_decoder == NULL) + p_decoder = create_text_decoder(); + + if (text_decoder_decode_string_multibyte( + p_decoder, *textptr, translator->encoding, textmode) + != ENS_OK) + return NULL; + + TranslateClauseWithTerminator(translator, NULL, NULL, terminator); + *textptr = text_decoder_get_buffer(p_decoder); + + return GetTranslatedPhonemeString(phonememode); +} + ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode) { /* phoneme_mode @@ -867,16 +892,7 @@ ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, bits 8-23: separator character, between phoneme names */ - if (p_decoder == NULL) - p_decoder = create_text_decoder(); - - if (text_decoder_decode_string_multibyte(p_decoder, *textptr, translator->encoding, textmode) != ENS_OK) - return NULL; - - TranslateClause(translator, NULL, NULL); - *textptr = text_decoder_get_buffer(p_decoder); - - return GetTranslatedPhonemeString(phonememode); + return espeak_TextToPhonemesWithTerminator(textptr, textmode, phonememode, NULL); } ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Cancel(void) diff --git a/src/libespeak-ng/translate.c b/src/libespeak-ng/translate.c index 0914619a..cdff8b46 100644 --- a/src/libespeak-ng/translate.c +++ b/src/libespeak-ng/translate.c @@ -1937,7 +1937,9 @@ static int UpperCaseInWord(Translator *tr, char *word, int c) return 0; } -void TranslateClause(Translator *tr, int *tone_out, char **voice_change) +// Same as TranslateClause except we also get the clause terminator used (full stop, comma, etc.). +// Used by espeak_TextToPhonemesWithTerminator. +void TranslateClauseWithTerminator(Translator *tr, int *tone_out, char **voice_change, int *terminator_out) { int ix; int c; @@ -2000,6 +2002,10 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change) charix[ix] = 0; terminator = ReadClause(tr, source, charix, &charix_top, N_TR_SOURCE, &tone, voice_change_name); + if (terminator_out != NULL) { + *terminator_out = terminator; + } + if (tone_out != NULL) { if (tone == 0) *tone_out = (terminator & CLAUSE_INTONATION_TYPE) >> 12; // tone type not overridden in ReadClause, use default @@ -2701,6 +2707,11 @@ void TranslateClause(Translator *tr, int *tone_out, char **voice_change) } } +void TranslateClause(Translator *tr, int *tone_out, char **voice_change) +{ + TranslateClauseWithTerminator(tr, tone_out, voice_change, NULL); +} + void InitText(int control) { count_sentences = 0; -- 2.44.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor