From a97eed696a1974e26b8881f9b3abfd103255c4b3 Mon Sep 17 00:00:00 2001 From: Edresson Casanova Date: Thu, 12 May 2022 10:15:18 -0300 Subject: [PATCH] Fix the bug in eSpeak wrapper for eSpeak version 1.48.15 (#1560) --- .../utils/text/phonemizers/espeak_wrapper.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/TTS/tts/utils/text/phonemizers/espeak_wrapper.py b/TTS/tts/utils/text/phonemizers/espeak_wrapper.py index 442dcef2..024f79c6 100644 --- a/TTS/tts/utils/text/phonemizers/espeak_wrapper.py +++ b/TTS/tts/utils/text/phonemizers/espeak_wrapper.py @@ -107,15 +107,6 @@ class ESpeak(BasePhonemizer): if backend not in ["espeak", "espeak-ng"]: raise Exception("Unknown backend: %s" % backend) self._ESPEAK_LIB = backend - # skip first two characters of the retuned text - # "_ p_ɹ_ˈaɪ_ɚ t_ə n_oʊ_v_ˈɛ_m_b_ɚ t_w_ˈɛ_n_t_i t_ˈuː\n" - # ^^ - self.num_skip_chars = 2 - if backend == "espeak-ng": - # skip the first character of the retuned text - # "_p_ɹ_ˈaɪ_ɚ t_ə n_oʊ_v_ˈɛ_m_b_ɚ t_w_ˈɛ_n_t_i t_ˈuː\n" - # ^ - self.num_skip_chars = 1 def auto_set_espeak_lib(self) -> None: if is_tool("espeak-ng"): @@ -163,7 +154,16 @@ class ESpeak(BasePhonemizer): phonemes = "" for line in _espeak_exe(self._ESPEAK_LIB, args, sync=True): logging.debug("line: %s", repr(line)) - phonemes += line.decode("utf8").strip()[self.num_skip_chars :] # skip initial redundant characters + ph_decoded = line.decode("utf8").strip() + # espeak need to skip first two characters of the retuned text: + # version 1.48.03: "_ p_ɹ_ˈaɪ_ɚ t_ə n_oʊ_v_ˈɛ_m_b_ɚ t_w_ˈɛ_n_t_i t_ˈuː\n" + # version 1.48.15: " p_ɹ_ˈaɪ_ɚ t_ə n_oʊ_v_ˈɛ_m_b_ɚ t_w_ˈɛ_n_t_i t_ˈuː\n" + # espeak-ng need to skip the first character of the retuned text: + # "_p_ɹ_ˈaɪ_ɚ t_ə n_oʊ_v_ˈɛ_m_b_ɚ t_w_ˈɛ_n_t_i t_ˈuː\n" + + # dealing with the conditions descrived above + ph_decoded = ph_decoded[:1].replace("_", "") + ph_decoded[1:] + phonemes += ph_decoded.strip() return phonemes.replace("_", separator) def _phonemize(self, text, separator=None):