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

Escolha a voz:

Francisca
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)