From 342ea0dfacbdf61834f430abc935072dd6e9e6a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20=C5=9Eafak?= Date: Thu, 23 Jul 2026 03:33:06 +0300 Subject: [PATCH] Fix spaCy unknown language error: map Kokoro single-letter codes to Language enum in get_spacy_model --- abogen/spacy_utils.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/abogen/spacy_utils.py b/abogen/spacy_utils.py index d03e859..d2f331a 100644 --- a/abogen/spacy_utils.py +++ b/abogen/spacy_utils.py @@ -21,6 +21,19 @@ SPACY_MODELS = { Language.HI: "xx_sent_ud_sm", } +# Kokoro single-letter codes -> Language enum (inverse of pipeline_factory._KOKORO_LANG_MAP) +_KOKORO_TO_LANGUAGE = { + "a": Language.EN_US, + "b": Language.EN_GB, + "e": Language.ES, + "f": Language.FR, + "h": Language.HI, + "i": Language.IT, + "j": Language.JA, + "p": Language.PT_BR, + "z": Language.ZH, +} + def _load_spacy(): """Lazy load spaCy module.""" @@ -61,11 +74,14 @@ def get_spacy_model(lang_code, log_callback=None): # Normalize to Language enum if not isinstance(lang_code, Language): - try: - lang_code = Language.from_str(lang_code) - except ValueError: - log(f"\nspaCy: Unknown language '{lang_code}'...") - return None + if isinstance(lang_code, str) and lang_code in _KOKORO_TO_LANGUAGE: + lang_code = _KOKORO_TO_LANGUAGE[lang_code] + else: + try: + lang_code = Language.from_str(lang_code) + except ValueError: + log(f"\nspaCy: Unknown language '{lang_code}'...") + return None # Check if model is cached if lang_code in _nlp_cache: