From 289d9d865ea498d2d72b1e3ed38d63d6b2a0d379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Golonka?= Date: Thu, 29 Apr 2021 15:56:48 +0200 Subject: [PATCH] Revert "code cleanup: change global int current_phoneme table to static" This works around issue 915 --- src/libespeak-ng/phoneme.h | 1 + src/libespeak-ng/synthdata.c | 5 +++-- src/libespeak-ng/synthdata.h | 2 +- src/libespeak-ng/synthesize.c | 3 +++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libespeak-ng/phoneme.h b/src/libespeak-ng/phoneme.h index e46a3927..850706aa 100644 --- a/src/libespeak-ng/phoneme.h +++ b/src/libespeak-ng/phoneme.h @@ -249,6 +249,7 @@ phoneme_add_feature(PHONEME_TAB *phoneme, // Several phoneme tables may be loaded into memory. phoneme_tab points to // one for the current voice extern int n_phoneme_tab; +extern int current_phoneme_table; extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; typedef struct { diff --git a/src/libespeak-ng/synthdata.c b/src/libespeak-ng/synthdata.c index e8e4fe7d..3870edf5 100644 --- a/src/libespeak-ng/synthdata.c +++ b/src/libespeak-ng/synthdata.c @@ -45,6 +45,7 @@ const int version_phdata = 0x014801; // copy the current phoneme table into here int n_phoneme_tab; +int current_phoneme_table; PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; unsigned short *phoneme_index = NULL; @@ -346,12 +347,12 @@ static void SetUpPhonemeTable(int number) } } -int SelectPhonemeTable(int number) +void SelectPhonemeTable(int number) { n_phoneme_tab = 0; SetUpPhonemeTable(number); // recursively for included phoneme tables n_phoneme_tab++; - return number; + current_phoneme_table = number; } int LookupPhonemeTable(const char *name) diff --git a/src/libespeak-ng/synthdata.h b/src/libespeak-ng/synthdata.h index 0bc3575b..5607f056 100644 --- a/src/libespeak-ng/synthdata.h +++ b/src/libespeak-ng/synthdata.h @@ -53,7 +53,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, PHONEME_LIST *plist); int PhonemeCode(unsigned int mnem); -int SelectPhonemeTable(int number); +void SelectPhonemeTable(int number); int SelectPhonemeTableName(const char *name); #ifdef __cplusplus diff --git a/src/libespeak-ng/synthesize.c b/src/libespeak-ng/synthesize.c index 9f122a73..561de991 100644 --- a/src/libespeak-ng/synthesize.c +++ b/src/libespeak-ng/synthesize.c @@ -1561,6 +1561,9 @@ int SpeakNextClause(int control) return 0; } + if (current_phoneme_table != voice->phoneme_tab_ix) + SelectPhonemeTable(voice->phoneme_tab_ix); + // read the next clause from the input text file, translate it, and generate // entries in the wavegen command queue TranslateClause(translator, &clause_tone, &voice_change);