diff --git a/ai-hub/app/api/routes/stt.py b/ai-hub/app/api/routes/stt.py index a0fec90..63c8118 100644 --- a/ai-hub/app/api/routes/stt.py +++ b/ai-hub/app/api/routes/stt.py @@ -53,15 +53,16 @@ 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, {}) - if active_prefs: - 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 - ) + + 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 + ) # Use the STT service to get the transcript transcript = await services.stt_service.transcribe( diff --git a/ai-hub/app/core/providers/stt/general.py b/ai-hub/app/core/providers/stt/general.py index c05b4fc..cff877c 100644 --- a/ai-hub/app/core/providers/stt/general.py +++ b/ai-hub/app/core/providers/stt/general.py @@ -8,6 +8,11 @@ self.model_name = model_name self.api_key = api_key self.kwargs = kwargs + + # Validation for missing keys + if not api_key or "*" in str(api_key): + import logging + logging.getLogger(__name__).warning(f"GeneralSTTProvider: api_key is missing or masked for model {model_name}") async def transcribe_audio(self, audio_data: bytes) -> str: """Transcribes audio data using LiteLLM atranscription.""" diff --git a/ai-hub/app/core/services/stt.py b/ai-hub/app/core/services/stt.py index fed6830..3a7504f 100644 --- a/ai-hub/app/core/services/stt.py +++ b/ai-hub/app/core/services/stt.py @@ -22,7 +22,11 @@ """ provider = provider_override or self.default_stt_provider if not provider: - raise HTTPException(status_code=400, detail="No active STT provider is configured.") + logger.error("STT transcription attempt but no STT provider is configured (globally or override).") + raise HTTPException( + status_code=400, + detail="No active STT provider is configured. Please set an API key/provider in settings or user preferences." + ) logger.info(f"Starting transcription for audio data ({len(audio_bytes)} bytes).") if not audio_bytes: