ciyidogan commited on
Commit
b236687
Β·
verified Β·
1 Parent(s): c51c470

Update stt_factory.py

Browse files
Files changed (1) hide show
  1. stt_factory.py +52 -32
stt_factory.py CHANGED
@@ -1,43 +1,63 @@
1
  """
2
- STT Factory for creating provider instances
3
  """
4
-
5
- from typing import Optional, Dict, Any
6
- from utils import log
7
- from stt_interface import STTInterface, STTEngineType
8
  from stt_google import GoogleCloudSTT
9
- # Future imports:
10
- # from stt_azure import AzureSpeechSTT
11
- # from stt_amazon import AmazonTranscribeSTT
12
- # from stt_flicker import FlickerSTT
13
 
14
  class STTFactory:
15
  """Factory for creating STT provider instances"""
16
 
17
  @staticmethod
18
- def create(engine_type: STTEngineType, config: Dict[str, Any]) -> Optional[STTInterface]:
19
- """Create STT provider instance based on engine type"""
 
 
20
 
21
- if engine_type == STTEngineType.NO_STT:
22
- log("πŸ”‡ No STT engine configured")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  return None
24
-
25
- elif engine_type == STTEngineType.GOOGLE:
26
- log("🎀 Creating Google Cloud STT provider")
27
- return GoogleCloudSTT(config.get("credentials_path", ""))
28
-
29
- elif engine_type == STTEngineType.AZURE:
30
- log("🎀 Azure STT not implemented yet")
31
- return None # TODO: Implement AzureSpeechSTT
32
-
33
- elif engine_type == STTEngineType.AMAZON:
34
- log("🎀 Amazon STT not implemented yet")
35
- return None # TODO: Implement AmazonTranscribeSTT
36
-
37
- elif engine_type == STTEngineType.FLICKER:
38
- log("🎀 Flicker STT not implemented yet")
39
- return None # TODO: Implement FlickerSTT
40
-
41
  else:
42
- log(f"❌ Unknown STT engine type: {engine_type}")
43
- return None
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  """
2
+ STT Provider Factory for Flare
3
  """
4
+ from typing import Optional
5
+ from stt_interface import STTInterface, STTEngineType, log
 
 
6
  from stt_google import GoogleCloudSTT
7
+ from config_provider import ConfigProvider
 
 
 
8
 
9
  class STTFactory:
10
  """Factory for creating STT provider instances"""
11
 
12
  @staticmethod
13
+ def create_provider() -> Optional[STTInterface]:
14
+ """Create STT provider based on configuration"""
15
+ cfg = ConfigProvider.get()
16
+ stt_config = cfg.global_config.stt_provider
17
 
18
+ if not stt_config or stt_config.name == "no_stt":
19
+ log("πŸ”‡ No STT provider configured")
20
+ return None
21
+
22
+ provider_name = stt_config.name
23
+ log(f"🏭 Creating STT provider: {provider_name}")
24
+
25
+ # Get provider definition
26
+ provider_def = cfg.global_config.get_provider_config("stt", provider_name)
27
+ if not provider_def:
28
+ log(f"⚠️ Unknown STT provider: {provider_name}")
29
+ return None
30
+
31
+ # Get credentials/API key
32
+ credentials = STTFactory._get_credentials(stt_config)
33
+ if not credentials and provider_def.requires_api_key:
34
+ log(f"⚠️ No credentials for STT provider: {provider_name}")
35
+ return None
36
+
37
+ # Create provider based on name
38
+ if provider_name == "google":
39
+ return GoogleCloudSTT(credentials)
40
+ elif provider_name == "azure":
41
+ log("⚠️ Azure STT not implemented yet")
42
+ return None
43
+ elif provider_name == "amazon":
44
+ log("⚠️ Amazon STT not implemented yet")
45
+ return None
46
+ elif provider_name == "flicker":
47
+ log("⚠️ Flicker STT not implemented yet")
48
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  else:
50
+ log(f"⚠️ Unsupported STT provider: {provider_name}")
51
+ return None
52
+
53
+ @staticmethod
54
+ def _get_credentials(stt_config) -> Optional[str]:
55
+ """Get decrypted credentials/API key"""
56
+ if not stt_config.api_key:
57
+ return None
58
+
59
+ if stt_config.api_key.startswith("enc:"):
60
+ from encryption_utils import decrypt
61
+ return decrypt(stt_config.api_key)
62
+
63
+ return stt_config.api_key