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