Spaces:
Runtime error
Runtime error
| import os | |
| from fastapi import FastAPI, UploadFile, Form | |
| from fastapi.responses import FileResponse | |
| import torch | |
| from TTS.api import TTS | |
| import uvicorn | |
| import shutil | |
| # Coqui की Terms & Conditions को auto-accept करना | |
| os.environ["COQUI_TOS_AGREED"] = "1" | |
| # FastAPI app बनाना | |
| app = FastAPI() | |
| # Model लोड करना | |
| tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2").to("cuda" if torch.cuda.is_available() else "cpu") | |
| # Root endpoint | |
| def greet_json(): | |
| return {"Hello": "World!"} | |
| # Text-to-speech API endpoint | |
| async def speak( | |
| text: str = Form(...), | |
| language: str = Form(...), | |
| speaker_wav: UploadFile = None | |
| ): | |
| # speaker.wav को सेव करना | |
| if speaker_wav: | |
| temp_audio_path = f"temp_{speaker_wav.filename}" | |
| with open(temp_audio_path, "wb") as buffer: | |
| shutil.copyfileobj(speaker_wav.file, buffer) | |
| else: | |
| return {"error": "Speaker audio file is required."} | |
| output_path = "output.wav" | |
| tts.tts_to_file(text=text, speaker_wav=temp_audio_path, language=language, file_path=output_path) | |
| return FileResponse(output_path, media_type="audio/wav", filename="output.wav") | |
| # Optional: Localhost पर रन करने के लिए | |
| # if __name__ == "__main__": | |
| # uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True) | |