first commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"""TTS-модуль: текст → звук.
|
||||
|
||||
Использование из других модулей:
|
||||
|
||||
from modules.tts import get_provider
|
||||
|
||||
tts = get_provider("edge") # онлайн, голос MS
|
||||
tts = get_provider("piper", model_path="...") # офлайн-фолбэк
|
||||
result = tts.synthesize("Привет! Как дела?")
|
||||
# result.audio (float32), result.samplerate, result.generation_sec
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from .base import SynthResult, TtsProvider
|
||||
from .config import make_tts
|
||||
from .provider_edge import EdgeTtsProvider
|
||||
from .provider_piper import PiperTtsProvider
|
||||
from .text_split import split_sentences
|
||||
|
||||
__all__ = [
|
||||
"SynthResult",
|
||||
"TtsProvider",
|
||||
"EdgeTtsProvider",
|
||||
"PiperTtsProvider",
|
||||
"make_tts",
|
||||
"split_sentences",
|
||||
"get_provider",
|
||||
]
|
||||
|
||||
_PROVIDERS = {
|
||||
EdgeTtsProvider.name: EdgeTtsProvider,
|
||||
PiperTtsProvider.name: PiperTtsProvider,
|
||||
}
|
||||
|
||||
|
||||
def get_provider(name: str, **kwargs) -> TtsProvider:
|
||||
"""Фабрика провайдеров по имени (выбор из конфига)."""
|
||||
try:
|
||||
provider_cls = _PROVIDERS[name]
|
||||
except KeyError:
|
||||
raise ValueError(
|
||||
f"Неизвестный TTS-провайдер: {name!r}. Доступны: {sorted(_PROVIDERS)}"
|
||||
) from None
|
||||
return provider_cls(**kwargs)
|
||||
Reference in New Issue
Block a user