ciyidogan commited on
Commit
2b4787b
·
verified ·
1 Parent(s): 4c9e861

Create tts_factory.py

Browse files
Files changed (1) hide show
  1. tts_factory.py +55 -0
tts_factory.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ TTS Provider Factory for Flare
3
+ """
4
+ from typing import Optional
5
+ from tts_interface import TTSInterface, log
6
+ from tts_elevenlabs import ElevenLabsTTS
7
+ from tts_blaze import BlazeTTS
8
+ from config_provider import ConfigProvider
9
+
10
+ class TTSFactory:
11
+ @staticmethod
12
+ def create_provider() -> Optional[TTSInterface]:
13
+ """Create TTS provider based on configuration"""
14
+ cfg = ConfigProvider.get()
15
+ tts_config = cfg.global_config.tts_provider
16
+
17
+ if not tts_config or tts_config.name == "no_tts":
18
+ log("🔇 No TTS provider configured")
19
+ return None
20
+
21
+ provider_name = tts_config.name
22
+ log(f"🏭 Creating TTS provider: {provider_name}")
23
+
24
+ # Get provider definition
25
+ provider_def = cfg.global_config.get_provider_config("tts", provider_name)
26
+ if not provider_def:
27
+ log(f"⚠️ Unknown TTS provider: {provider_name}")
28
+ return None
29
+
30
+ # Get API key
31
+ api_key = TTSFactory._get_api_key(tts_config)
32
+ if not api_key and provider_def.requires_api_key:
33
+ log(f"⚠️ No API key for TTS provider: {provider_name}")
34
+ return None
35
+
36
+ # Create provider based on name
37
+ if provider_name == "elevenlabs":
38
+ return ElevenLabsTTS(api_key)
39
+ elif provider_name == "blaze":
40
+ return BlazeTTS(api_key)
41
+ else:
42
+ log(f"⚠️ Unsupported TTS provider: {provider_name}")
43
+ return None
44
+
45
+ @staticmethod
46
+ def _get_api_key(tts_config) -> Optional[str]:
47
+ """Get decrypted API key"""
48
+ if not tts_config.api_key:
49
+ return None
50
+
51
+ if tts_config.api_key.startswith("enc:"):
52
+ from encryption_utils import decrypt
53
+ return decrypt(tts_config.api_key)
54
+
55
+ return tts_config.api_key