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