| 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)}") |