| import requests |
| from config import GROQ_API_KEY, GROQ_STT_MODEL |
| import tempfile |
| import os |
|
|
| def speech_to_text(audio_file: str) -> str: |
| """ |
| Convert audio file to text using Groq's Whisper API |
| """ |
| 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": (os.path.basename(audio_file), audio_data, "audio/wav") |
| } |
| data = { |
| "model": GROQ_STT_MODEL, |
| "temperature": 0, |
| "response_format": "json" |
| } |
| |
| try: |
| response = requests.post(url, headers=headers, files=files, data=data) |
| 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)}") |