"""STT-модуль: речь → текст. Использование из других модулей: from modules.stt import get_provider stt = get_provider("faster-whisper", model_size="small") result = stt.transcribe("phrase.wav") print(result.text) """ from __future__ import annotations from .base import SAMPLE_RATE, AudioInput, SttProvider, TranscriptResult from .provider_faster_whisper import FasterWhisperProvider __all__ = [ "SAMPLE_RATE", "AudioInput", "SttProvider", "TranscriptResult", "FasterWhisperProvider", "get_provider", ] _PROVIDERS = { FasterWhisperProvider.name: FasterWhisperProvider, # "vosk" добавим, если faster-whisper окажется тяжёлым для ПК отца (замер в Модуле 1) } def get_provider(name: str, **kwargs) -> SttProvider: """Фабрика провайдеров по имени (выбор из конфига).""" try: provider_cls = _PROVIDERS[name] except KeyError: raise ValueError( f"Неизвестный STT-провайдер: {name!r}. Доступны: {sorted(_PROVIDERS)}" ) from None return provider_cls(**kwargs)