Spaces:
Paused
Paused
| """ | |
| TTS Provider Factory for Flare | |
| """ | |
| from typing import Optional | |
| from tts_interface import TTSInterface | |
| from tts_elevenlabs import ElevenLabsTTS | |
| from tts_blaze import BlazeTTS | |
| from config_provider import ConfigProvider | |
| from logger import log_info, log_error, log_debug, log_warning | |
| class TTSFactory: | |
| def create_provider() -> Optional[TTSInterface]: | |
| """Create TTS provider based on configuration""" | |
| cfg = ConfigProvider.get() | |
| tts_config = cfg.global_config.tts_provider | |
| if not tts_config or tts_config.name == "no_tts": | |
| log_info("๐ No TTS provider configured") | |
| return None | |
| provider_name = tts_config.name | |
| log_info(f"๐ญ Creating TTS provider: {provider_name}") | |
| # Get provider definition | |
| provider_def = cfg.global_config.get_provider_config("tts", provider_name) | |
| if not provider_def: | |
| log_info(f"โ ๏ธ Unknown TTS provider: {provider_name}") | |
| return None | |
| # Get API key | |
| api_key = TTSFactory._get_api_key(tts_config) | |
| if not api_key and provider_def.requires_api_key: | |
| log_info(f"โ ๏ธ No API key for TTS provider: {provider_name}") | |
| return None | |
| # Create provider based on name | |
| if provider_name == "elevenlabs": | |
| return ElevenLabsTTS(api_key) | |
| elif provider_name == "blaze": | |
| return BlazeTTS(api_key) | |
| else: | |
| log_info(f"โ ๏ธ Unsupported TTS provider: {provider_name}") | |
| return None | |
| def _get_api_key(tts_config) -> Optional[str]: | |
| """Get decrypted API key""" | |
| if not tts_config.api_key: | |
| return None | |
| if tts_config.api_key.startswith("enc:"): | |
| from encryption_utils import decrypt | |
| return decrypt(tts_config.api_key) | |
| return tts_config.api_key |