from fastapi import FastAPI, Response
from fastapi.responses import HTMLResponse
import edge_tts
import asyncio
import uvicorn
from pathlib import Path
import os
app = FastAPI()
HTML_CONTENT = """
TSM - Texto em Voz
TSM - Texto em Voz
Converta texto em fala usando vozes em português e multilíngues
Gerando áudio...
"""
@app.get("/", response_class=HTMLResponse)
async def read_root():
return HTML_CONTENT
@app.post("/synthesize")
async def synthesize_speech(request_data: dict):
try:
text = request_data.get("text", "")
voice = request_data.get("voice", "pt-BR-AntonioNeural")
output_file = f"temp_{hash(text + voice)}.mp3"
communicate = edge_tts.Communicate(text, voice)
await communicate.save(output_file)
with open(output_file, "rb") as f:
audio_data = f.read()
os.remove(output_file)
return Response(content=audio_data, media_type="audio/mpeg")
except Exception as e:
return Response(content=str(e), status_code=500)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)