# fast_api_TTS.py

from fastapi import FastAPI, Form
from fastapi.responses import FileResponse, JSONResponse
from fastapi.middleware.cors import CORSMiddleware
from processing import HindiTTS
import uuid

app = FastAPI()
tts_engine = HindiTTS()

# Enable CORS if needed (e.g. for frontend access)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # Change this in production
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.post("/generate-audio/")
async def generate_audio(text: str = Form(...)):
    if not text.strip():
        return JSONResponse(status_code=400, content={"error": "Text cannot be empty."})
    
    # Generate a unique filename for each request
    filename = f"{uuid.uuid4().hex}_hindi_speech.wav"
    output_file = tts_engine.convert_text_to_speech(text, output_filename=filename, speed=1.2)

    if output_file:
        return FileResponse(output_file, media_type="audio/wav", filename=filename)
    else:
        return JSONResponse(status_code=500, content={"error": "TTS conversion failed."})

