| | from fastapi import FastAPI, HTTPException |
| | from fastapi.responses import FileResponse |
| | from pydantic import BaseModel |
| | from gtts import gTTS |
| | import os |
| |
|
| | class AudioRequest(BaseModel): |
| | request_id: str |
| | text: str |
| | language: str |
| |
|
| | app = FastAPI( |
| | title="Stupid TTS API", |
| | description="A simple API to generate TTS audio using Google's gTTS", |
| | version="1.0.0" |
| | ) |
| |
|
| | @app.get("/") |
| | async def read_root(): |
| | return {"message": "Welcome to the Stupid TTS API! Use POST /generate_audio to create audio."} |
| |
|
| | @app.post("/generate_audio") |
| | async def generate_audio(audio_request: AudioRequest): |
| | if not audio_request.request_id or not audio_request.text or not audio_request.language: |
| | raise HTTPException(status_code=400, detail="All fields (request_id, text, language) are required") |
| | |
| | try: |
| | |
| | output_file = f"/tmp/{audio_request.request_id}.mp3" |
| | |
| | tts = gTTS(text=audio_request.text, lang=audio_request.language, slow=False) |
| | tts.save(output_file) |
| | return FileResponse(output_file, media_type="audio/mpeg", filename=f"{audio_request.request_id}.mp3") |
| | except Exception as e: |
| | raise HTTPException(status_code=500, detail=f"Error generating audio: {str(e)}") |