From 7b2289a454068cbc19bc29de9a43fb7fcfbdda9b Mon Sep 17 00:00:00 2001 From: Enno Hermann Date: Wed, 1 May 2024 12:31:49 +0200 Subject: [PATCH] fix(espeak_wrapper): capture stderr separately Fixes https://github.com/coqui-ai/TTS/issues/2728 Previously, error messages from espeak were treated as normal output and also converted to phonemes. This captures and logs them separately. --- TTS/tts/utils/text/phonemizers/espeak_wrapper.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TTS/tts/utils/text/phonemizers/espeak_wrapper.py b/TTS/tts/utils/text/phonemizers/espeak_wrapper.py index d1d23350..d9f4f079 100644 --- a/TTS/tts/utils/text/phonemizers/espeak_wrapper.py +++ b/TTS/tts/utils/text/phonemizers/espeak_wrapper.py @@ -60,9 +60,12 @@ def _espeak_exe(espeak_lib: str, args: List, sync=False) -> List[str]: with subprocess.Popen( cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, + stderr=subprocess.PIPE, ) as p: res = iter(p.stdout.readline, b"") + err = iter(p.stderr.readline, b"") + for line in err: + logger.warning("espeakng: %s", line.decode("utf-8").strip()) if not sync: p.stdout.close() if p.stderr: