from fastapi import FastAPI, Response from fastapi.staticfiles import StaticFiles from fastapi.responses import HTMLResponse import edge_tts import asyncio import uvicorn from pathlib import Path import os app = FastAPI() # Servir arquivos estáticos app.mount("/static", StaticFiles(directory="static"), name="static") # HTML como string (vou mostrar o conteúdo abaixo) HTML_CONTENT = """ ... # (conteúdo HTML que mostrarei em seguida) """ @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-FranciscaNeural") # Gerar nome único para o arquivo output_file = f"temp_{hash(text + voice)}.mp3" # Criar comunicação com edge-tts communicate = edge_tts.Communicate(text, voice) await communicate.save(output_file) # Ler o arquivo with open(output_file, "rb") as f: audio_data = f.read() # Limpar o arquivo temporário 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) TSM - Texto em Voz

TSM - Texto em Voz

Converta texto em fala usando vozes em português e multilíngues

Escolha a voz:

Gerando áudio...