ciyidogan commited on
Commit
8fd2d55
·
verified ·
1 Parent(s): b236687

Update admin_routes.py

Browse files
Files changed (1) hide show
  1. admin_routes.py +62 -34
admin_routes.py CHANGED
@@ -795,47 +795,75 @@ async def generate_tts(
795
  username: str = Depends(verify_token)
796
  ):
797
  """Generate TTS audio from text"""
798
- cfg = ConfigProvider.get()
799
-
800
- # Check if TTS is enabled
801
- tts_engine = getattr(cfg.global_config, 'tts_engine', 'no_tts')
802
- if tts_engine == 'no_tts':
803
- # Return empty response for no TTS
804
- return {
805
- "audio_url": None,
806
- "audio_base64": None,
807
- "message": "TTS is disabled"
808
- }
809
 
810
- log(f"🎤 TTS request: '{request.text[:50]}...' with engine: {tts_engine}")
811
-
812
- # For now, return mock response
813
- # TODO: Implement actual TTS integration (ElevenLabs, Blaze, etc.)
814
- return {
815
- "audio_url": None,
816
- "audio_base64": None,
817
- "message": f"TTS would generate audio for: {request.text[:50]}..."
818
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
819
 
820
  @router.get("/tts/voices")
821
  async def get_tts_voices(username: str = Depends(verify_token)):
822
  """Get available TTS voices"""
823
- cfg = ConfigProvider.get()
824
 
825
- tts_engine = getattr(cfg.global_config, 'tts_engine', 'no_tts')
826
- if tts_engine == 'no_tts':
827
- return {"voices": []}
828
-
829
- # TODO: Implement actual voice list based on TTS engine
830
- # For now return mock voices
831
- return {
832
- "voices": [
833
- {"id": "voice_1", "name": "Türkçe Erkek", "language": "tr-TR"},
834
- {"id": "voice_2", "name": "Türkçe Kadın", "language": "tr-TR"},
835
- {"id": "voice_3", "name": "English Male", "language": "en-US"},
836
- {"id": "voice_4", "name": "English Female", "language": "en-US"}
837
  ]
838
- }
 
 
 
 
 
839
 
840
  # ===================== Helper Functions =====================
841
  async def notify_llm_startup(project, version):
 
795
  username: str = Depends(verify_token)
796
  ):
797
  """Generate TTS audio from text"""
798
+ from tts_factory import TTSFactory
799
+ from tts_preprocessor import TTSPreprocessor
800
+ import base64
 
 
 
 
 
 
 
 
801
 
802
+ try:
803
+ # Create TTS provider
804
+ tts_provider = TTSFactory.create_provider()
805
+
806
+ if not tts_provider:
807
+ # Return empty response for no TTS
808
+ return Response(
809
+ content=b"",
810
+ media_type="audio/mpeg",
811
+ headers={"X-TTS-Status": "disabled"}
812
+ )
813
+
814
+ log(f"🎤 TTS request: '{request.text[:50]}...' with provider: {tts_provider.get_provider_name()}")
815
+
816
+ # Preprocess text if needed
817
+ preprocessor = TTSPreprocessor(language=request.language)
818
+ processed_text = preprocessor.process(
819
+ request.text,
820
+ tts_provider.get_preprocessing_flags()
821
+ )
822
+
823
+ # Generate audio
824
+ audio_data = await tts_provider.synthesize(
825
+ text=processed_text,
826
+ voice_id=request.voice_id
827
+ )
828
+
829
+ # Return audio as binary response
830
+ return Response(
831
+ content=audio_data,
832
+ media_type="audio/mpeg",
833
+ headers={
834
+ "Content-Disposition": 'inline; filename="tts_output.mp3"',
835
+ "X-TTS-Provider": tts_provider.get_provider_name()
836
+ }
837
+ )
838
+
839
+ except Exception as e:
840
+ log(f"❌ TTS generation error: {e}")
841
+ raise HTTPException(status_code=500, detail=str(e))
842
 
843
  @router.get("/tts/voices")
844
  async def get_tts_voices(username: str = Depends(verify_token)):
845
  """Get available TTS voices"""
846
+ from tts_factory import TTSFactory
847
 
848
+ try:
849
+ tts_provider = TTSFactory.create_provider()
850
+
851
+ if not tts_provider:
852
+ return {"voices": []}
853
+
854
+ voices = tts_provider.get_supported_voices()
855
+
856
+ # Convert dict to list format
857
+ voice_list = [
858
+ {"id": voice_id, "name": voice_name}
859
+ for voice_id, voice_name in voices.items()
860
  ]
861
+
862
+ return {"voices": voice_list}
863
+
864
+ except Exception as e:
865
+ log(f"❌ Error getting TTS voices: {e}")
866
+ return {"voices": []}
867
 
868
  # ===================== Helper Functions =====================
869
  async def notify_llm_startup(project, version):