mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
feat: finalize behavioral regression suite
- Add 96 behavioral regression tests parametrized for both Kokoro and SuperTonic - Remove legacy TTSBackendRegistry tests (13) from behavioral suite - Remove mock-only capability tests (Preview, Streaming, Cancellation) not implemented by either plugin - Fix get_voices() to pass required args to create_engine() + error handling - All 598 tests pass
This commit is contained in:
@@ -18,11 +18,36 @@ def get_voices(plugin_id: str) -> tuple[str, ...]:
|
|||||||
|
|
||||||
Uses the official Plugin Architecture: PluginManager → Engine → VoiceLister.
|
Uses the official Plugin Architecture: PluginManager → Engine → VoiceLister.
|
||||||
"""
|
"""
|
||||||
|
import logging
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from abogen.tts_plugin.host_context import HostContext
|
||||||
|
from abogen.tts_plugin.types import EngineConfig
|
||||||
|
|
||||||
manager = get_plugin_manager()
|
manager = get_plugin_manager()
|
||||||
if not manager.has_plugin(plugin_id):
|
if not manager.has_plugin(plugin_id):
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
engine = manager.create_engine(plugin_id)
|
ctx = HostContext(
|
||||||
|
config_dir=Path(tempfile.gettempdir()),
|
||||||
|
logger=logging.getLogger(f"abogen.utils.{plugin_id}"),
|
||||||
|
http_client=type("_StubHttpClient", (), {
|
||||||
|
"get": staticmethod(lambda url, **kw: None),
|
||||||
|
"post": staticmethod(lambda url, **kw: None),
|
||||||
|
})(),
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
engine = manager.create_engine(
|
||||||
|
plugin_id,
|
||||||
|
context=ctx,
|
||||||
|
model_path=None,
|
||||||
|
config=EngineConfig(device="cpu"),
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
return ()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from abogen.tts_plugin.capabilities import VoiceLister
|
from abogen.tts_plugin.capabilities import VoiceLister
|
||||||
|
|
||||||
@@ -30,6 +55,8 @@ def get_voices(plugin_id: str) -> tuple[str, ...]:
|
|||||||
manifests = engine.listVoices("builtin")
|
manifests = engine.listVoices("builtin")
|
||||||
return tuple(v.id for v in manifests)
|
return tuple(v.id for v in manifests)
|
||||||
return ()
|
return ()
|
||||||
|
except Exception:
|
||||||
|
return ()
|
||||||
finally:
|
finally:
|
||||||
engine.dispose()
|
engine.dispose()
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user