flare / stt_factory.py
ciyidogan's picture
Update stt_factory.py
b236687 verified
raw
history blame
2.25 kB
"""
STT Provider Factory for Flare
"""
from typing import Optional
from stt_interface import STTInterface, STTEngineType, log
from stt_google import GoogleCloudSTT
from config_provider import ConfigProvider
class STTFactory:
"""Factory for creating STT provider instances"""
@staticmethod
def create_provider() -> Optional[STTInterface]:
"""Create STT provider based on configuration"""
cfg = ConfigProvider.get()
stt_config = cfg.global_config.stt_provider
if not stt_config or stt_config.name == "no_stt":
log("🔇 No STT provider configured")
return None
provider_name = stt_config.name
log(f"🏭 Creating STT provider: {provider_name}")
# Get provider definition
provider_def = cfg.global_config.get_provider_config("stt", provider_name)
if not provider_def:
log(f"⚠️ Unknown STT provider: {provider_name}")
return None
# Get credentials/API key
credentials = STTFactory._get_credentials(stt_config)
if not credentials and provider_def.requires_api_key:
log(f"⚠️ No credentials for STT provider: {provider_name}")
return None
# Create provider based on name
if provider_name == "google":
return GoogleCloudSTT(credentials)
elif provider_name == "azure":
log("⚠️ Azure STT not implemented yet")
return None
elif provider_name == "amazon":
log("⚠️ Amazon STT not implemented yet")
return None
elif provider_name == "flicker":
log("⚠️ Flicker STT not implemented yet")
return None
else:
log(f"⚠️ Unsupported STT provider: {provider_name}")
return None
@staticmethod
def _get_credentials(stt_config) -> Optional[str]:
"""Get decrypted credentials/API key"""
if not stt_config.api_key:
return None
if stt_config.api_key.startswith("enc:"):
from encryption_utils import decrypt
return decrypt(stt_config.api_key)
return stt_config.api_key