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)