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
raw
history blame
1.25 kB
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)}")