Files
2026-09-11 19:47:15 +03:00

44 lines
1.3 KiB
Python

"""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)