Yassine Mhirsi
feat: Introduce individual GROQ API keys for Topic, STT, TTS, and Chat services, enhancing configuration flexibility and service initialization checks across the application.
16153ee
| import requests | |
| from config import GROQ_STT_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_STT_API_KEY: | |
| raise RuntimeError("GROQ_STT_API_KEY is not set in config") | |
| url = "https://api.groq.com/openai/v1/audio/transcriptions" | |
| headers = { | |
| "Authorization": f"Bearer {GROQ_STT_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)}") |