File size: 1,340 Bytes
a4cdcb4 29bf20c a4cdcb4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
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:
# Dùng /tmp thay vì thư mục audio
output_file = f"/tmp/{audio_request.request_id}.mp3"
# Không cần tạo thư mục vì /tmp đã tồn tại trong container
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)}") |