diff --git a/ai-hub/app/api/routes/stt.py b/ai-hub/app/api/routes/stt.py index 63c8118..a41390a 100644 --- a/ai-hub/app/api/routes/stt.py +++ b/ai-hub/app/api/routes/stt.py @@ -46,23 +46,29 @@ # Read the audio bytes from the uploaded file audio_bytes = await audio_file.read() - provider_override = None + # Resolve provider: User Prefs > Global Settings + prefs = {} if user_id: user = services.user_service.get_user_by_id(db=db, user_id=user_id) - prefs = user.preferences.get("stt", {}) if user and user.preferences else {} - from app.config import settings - active_provider = provider_name or prefs.get("active_provider") or settings.STT_PROVIDER - active_prefs = prefs.get("providers", {}).get(active_provider, {}) - - from app.core.providers.factory import get_stt_provider - # kwargs extract non-key/model settings (like temperature, etc.) - kwargs = {k: v for k, v in active_prefs.items() if k not in ["api_key", "model"]} - provider_override = get_stt_provider( - provider_name=active_provider, - api_key=active_prefs.get("api_key"), - model_name=active_prefs.get("model", ""), - **kwargs - ) + if user and user.preferences: + prefs = user.preferences.get("stt", {}) + + from app.config import settings + active_provider = provider_name or prefs.get("active_provider") or settings.STT_PROVIDER + active_prefs = prefs.get("providers", {}).get(active_provider, {}) + + logger.info(f"Resolving STT. user_id={user_id}, provider={active_provider}") + + from app.core.providers.factory import get_stt_provider + kwargs = {k: v for k, v in active_prefs.items() if k not in ["api_key", "model"]} + provider_override = get_stt_provider( + provider_name=active_provider, + api_key=active_prefs.get("api_key"), + model_name=active_prefs.get("model", ""), + **kwargs + ) + + logger.info(f"Using STT provider: {type(provider_override).__name__}") # Use the STT service to get the transcript transcript = await services.stt_service.transcribe( diff --git a/ai-hub/app/api/routes/tts.py b/ai-hub/app/api/routes/tts.py index 9e3d620..c6272f7 100644 --- a/ai-hub/app/api/routes/tts.py +++ b/ai-hub/app/api/routes/tts.py @@ -35,22 +35,30 @@ user_id: str = Depends(get_current_user_id) ): try: - provider_override = None + # Resolve provider: User Prefs > Global Settings + prefs = {} if user_id: user = services.user_service.get_user_by_id(db=db, user_id=user_id) - prefs = user.preferences.get("tts", {}) if user and user.preferences else {} - from app.config import settings - active_provider = provider_name or prefs.get("active_provider") or settings.TTS_PROVIDER - active_prefs = prefs.get("providers", {}).get(active_provider, {}) - from app.core.providers.factory import get_tts_provider - kwargs = {k: v for k, v in active_prefs.items() if k not in ["api_key", "model", "voice"]} - provider_override = get_tts_provider( - provider_name=active_provider, - api_key=active_prefs.get("api_key"), - model_name=active_prefs.get("model", ""), - voice_name=active_prefs.get("voice", ""), - **kwargs - ) + if user and user.preferences: + prefs = user.preferences.get("tts", {}) + + from app.config import settings + active_provider = provider_name or prefs.get("active_provider") or settings.TTS_PROVIDER + active_prefs = prefs.get("providers", {}).get(active_provider, {}) + + from app.core.providers.factory import get_tts_provider + # kwargs extract non-key/model/voice settings + kwargs = {k: v for k, v in active_prefs.items() if k not in ["api_key", "model", "voice"]} + + provider_override = get_tts_provider( + provider_name=active_provider, + api_key=active_prefs.get("api_key"), + model_name=active_prefs.get("model", ""), + voice_name=active_prefs.get("voice", ""), + **kwargs + ) + + logger.info(f"Using TTS provider: {type(provider_override).__name__} for user={user_id}") if stream: # Pre-flight: generate first chunk before streaming to catch errors cleanly