import requests from config import GROQ_API_KEY, GROQ_STT_MODEL def speech_to_text(audio_file: str) -> str: """ Convert audio file to text using Groq's Whisper API (English only) """ if not GROQ_API_KEY: raise RuntimeError("GROQ_API_KEY is not set in config") url = "https://api.groq.com/openai/v1/audio/transcriptions" headers = { "Authorization": f"Bearer {GROQ_API_KEY}" } with open(audio_file, "rb") as audio_data: files = { "file": (audio_file, audio_data, "audio/wav") } data = { "model": GROQ_STT_MODEL, "language": "en", # Force English "temperature": 0, "response_format": "json" } try: response = requests.post(url, headers=headers, files=files, data=data, timeout=30) response.raise_for_status() result = response.json() return result.get("text", "") except requests.exceptions.RequestException as e: raise Exception(f"Groq STT API error: {str(e)}") except Exception as e: raise Exception(f"Unexpected error in speech_to_text: {str(e)}")