refactor: unify Language enum across all layers

- EngineConfig.language: Language (was lang_code: str = 'a')
- Engine owns _KOKORO_LANG_MAP, engine_language(), supported_languages()
- Engine provides language_for_voice_id() for voice catalog
- Plugins/kokoro/__init__.py calls engine_language() internally
- create_pipeline(plugin_id, language=Language) — no kokoro codes
- pipeline_factory.py clean of kokoro-specific code
- Domain functions raise TypeError if non-enum passed
- WebUI api.py: _parse_language() helper at API boundary
- Voice catalog returns ISO codes (lang.value)
- Constants: LANGUAGE_DESCRIPTIONS keyed by Language enum
- All tests updated for Language enum
- 1414 tests pass
This commit is contained in:
Artem Akymenko
2026-07-27 07:36:36 +00:00
parent 713abdfd73
commit 0dc491e420
35 changed files with 339 additions and 291 deletions
+7 -6
View File
@@ -14,6 +14,7 @@ from unittest.mock import MagicMock, patch
from dataclasses import dataclass, field
from typing import Any
from abogen.domain.enums import Language
from abogen.domain.conversion_engine import (
synthesize_text,
SynthParams,
@@ -254,7 +255,7 @@ class TestProcessAndWriteSubtitles:
writer,
subtitle_mode="Sentence",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
fallback_end_time=10.0,
)
@@ -271,7 +272,7 @@ class TestProcessAndWriteSubtitles:
writer,
subtitle_mode="Sentence",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
fallback_end_time=2.0,
)
@@ -293,7 +294,7 @@ class TestProcessAndWriteSubtitles:
writer,
subtitle_mode="Line",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
fallback_end_time=3.0,
)
@@ -312,7 +313,7 @@ class TestProcessAndWriteSubtitles:
writer,
subtitle_mode="Disabled",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
fallback_end_time=2.0,
)
@@ -348,7 +349,7 @@ class TestFullPipeline:
audio_sink=merged_sink,
subtitle_mode="Sentence",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
)
@@ -367,7 +368,7 @@ class TestFullPipeline:
subtitle_writer,
subtitle_mode="Sentence",
max_subtitle_words=5,
lang_code="a",
language=Language.EN_US,
use_spacy_segmentation=False,
fallback_end_time=stats.current_time,
)