mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
Merge pull request #1158
This commit is contained in:
@@ -67,6 +67,9 @@ static int SubstitutePhonemes(PHONEME_LIST *plist_out)
|
||||
deleted_sourceix = -1;
|
||||
}
|
||||
|
||||
if (plist2->phcode == phonSWITCH)
|
||||
SelectPhonemeTable(plist2->tone_ph);
|
||||
|
||||
// don't do any substitution if the language has been temporarily changed
|
||||
if (!(plist2->synthflags & SFLAG_SWITCHED_LANG)) {
|
||||
if (ix < (n_ph_list2 -1))
|
||||
@@ -207,6 +210,8 @@ void MakePhonemeList(Translator *tr, int post_pause, bool start_sentence)
|
||||
}
|
||||
n_ph_list2 -= delete_count;
|
||||
|
||||
SelectPhonemeTable(current_phoneme_tab);
|
||||
|
||||
if ((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0) {
|
||||
// set consonant clusters to all voiced or all unvoiced
|
||||
// Regressive
|
||||
@@ -215,6 +220,17 @@ void MakePhonemeList(Translator *tr, int post_pause, bool start_sentence)
|
||||
voicing = 0;
|
||||
|
||||
for (j = n_ph_list2-1; j >= 0; j--) {
|
||||
if (plist2[j].phcode == phonSWITCH) {
|
||||
/* Find previous phonSWITCH to determine language we're switching back to */
|
||||
int k;
|
||||
for (k = j-1; k >= 0; k--)
|
||||
if (plist2[k].phcode == phonSWITCH)
|
||||
break;
|
||||
if (k >= 0)
|
||||
SelectPhonemeTable(plist2[k].tone_ph);
|
||||
else
|
||||
SelectPhonemeTable(tr->phoneme_tab_ix);
|
||||
}
|
||||
ph = phoneme_tab[plist2[j].phcode];
|
||||
if (ph == NULL)
|
||||
continue;
|
||||
|
||||
@@ -342,14 +342,17 @@ static void SetUpPhonemeTable(int number)
|
||||
for (ix = 0; ix < phoneme_tab_list[number].n_phonemes; ix++) {
|
||||
ph_code = phtab[ix].code;
|
||||
phoneme_tab[ph_code] = &phtab[ix];
|
||||
if (ph_code > n_phoneme_tab)
|
||||
if (ph_code > n_phoneme_tab) {
|
||||
memset(&phoneme_tab[n_phoneme_tab+1], 0, (ph_code - (n_phoneme_tab+1)) * sizeof(*phoneme_tab));
|
||||
n_phoneme_tab = ph_code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SelectPhonemeTable(int number)
|
||||
{
|
||||
n_phoneme_tab = 0;
|
||||
MAKE_MEM_UNDEFINED(&phoneme_tab, sizeof(phoneme_tab));
|
||||
SetUpPhonemeTable(number); // recursively for included phoneme tables
|
||||
n_phoneme_tab++;
|
||||
current_phoneme_table = number;
|
||||
|
||||
Reference in New Issue
Block a user