Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Response | |
| import asyncio | |
| import hashlib | |
| import os | |
| from tts_with_rvc import TTS_RVC | |
| app = FastAPI() | |
| CACHE_DIR = "cache" | |
| os.makedirs(CACHE_DIR, exist_ok=True) | |
| def read_root(): | |
| return {"message": "Hello from FastAPI on Hugging Face Spaces 🚀"} | |
| async def speak(text: str): | |
| text_hash = hashlib.sha256(text.encode("utf-8")).hexdigest() | |
| cache_path = os.path.join(CACHE_DIR, f"{text_hash}.wav") | |
| if os.path.exists(cache_path): | |
| with open(cache_path, "rb") as f: | |
| return Response(content=f.read(), media_type="audio/wav") | |
| tts = TTS_RVC( | |
| model_path="app/models/chu2.pth", | |
| voice="ja-JP-NanamiNeural", | |
| device="cpu", | |
| index_path="app/models/chu2.index", | |
| f0_method="pm" | |
| ) | |
| path = tts( | |
| text=text, | |
| pitch=6, | |
| tts_rate=30 | |
| ) | |
| os.rename(path, cache_path) | |
| with open(cache_path, "rb") as f: | |
| audio_bytes = f.read() | |
| return Response(content=audio_bytes, media_type="audio/wav") |