malek-messaoudii
Update chat voice part
a71355d
import requests
import uuid
import os
from pathlib import Path
from config import GROQ_API_KEY, GROQ_TTS_MODEL
def text_to_speech(
text: str,
voice: str = "Aaliyah-PlayAI",
fmt: str = "wav"
) -> str:
"""
Convert text to speech using Groq's TTS API (English only)
"""
if not GROQ_API_KEY:
raise RuntimeError("GROQ_API_KEY is not set in config")
if not text or not text.strip():
raise ValueError("Text cannot be empty")
url = "https://api.groq.com/openai/v1/audio/speech"
headers = {
"Authorization": f"Bearer {GROQ_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": GROQ_TTS_MODEL,
"input": text.strip(),
"voice": voice,
"response_format": fmt
}
try:
# Create temp directory for audio files
temp_dir = Path("temp_audio")
temp_dir.mkdir(exist_ok=True)
# Unique filename
output_filename = f"tts_{uuid.uuid4().hex[:8]}.{fmt}"
output_path = temp_dir / output_filename
# Call Groq API
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
# Save audio file
with open(output_path, "wb") as f:
f.write(response.content)
return str(output_path)
except requests.exceptions.RequestException as e:
raise Exception(f"Groq TTS API error: {str(e)}")
except Exception as e:
raise Exception(f"Unexpected error in text_to_speech: {str(e)}")