init
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Совместимый шим над silero_tts (для OpenCode-проекта silero_open_ai).
|
||||
# Пакет silero-tts>=6.0 из pyproject.toml — приватный билд OpenCode'а, на PyPI таково нет.
|
||||
# Даёт интерфейс, который ожидает app/synthesis.py: SileroTTS(...).tts_model.apply_tts(...)
|
||||
# Модель грузится из models/<model_id>.pt (torch.package) — сеть не нужна.
|
||||
import os
|
||||
import torch
|
||||
|
||||
_MODELS_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "models")
|
||||
|
||||
|
||||
class SileroTTS:
|
||||
def __init__(self, model_id: str, language: str = "ru", speaker: str = "baya",
|
||||
sample_rate: int = 24000, device: str = "cpu", num_threads: int = 4,
|
||||
**kwargs):
|
||||
self.language = language
|
||||
self.speaker = speaker
|
||||
self.sample_rate = int(sample_rate)
|
||||
self.put_accent = kwargs.pop("put_accent", True)
|
||||
self.put_yo = kwargs.pop("put_yo", True)
|
||||
|
||||
torch.set_num_threads(int(num_threads))
|
||||
|
||||
path = os.path.join(_MODELS_DIR, f"{model_id}.pt")
|
||||
if not os.path.isfile(path):
|
||||
raise FileNotFoundError(f"model not found: {path}")
|
||||
|
||||
self.tts_model = torch.package.PackageImporter(path).load_pickle("tts_models", "model")
|
||||
try:
|
||||
self.tts_model.to(torch.device(device))
|
||||
except (AttributeError, NotImplementedError):
|
||||
pass # модель без .to() — остаётся на CPU
|
||||
Reference in New Issue
Block a user