burkialisher5's picture
download
raw
2.78 kB
from typing import Dict, List, Any
import base64
import tempfile
import os
import subprocess
import sys
class EndpointHandler:
def __init__(self, path=""):
print("Starting GPU Cloud Environment... (The Monkey Patch Fix)")
try:
# 1. Install Linux audio drivers just to be 100% safe
print("Installing OS audio drivers...")
subprocess.check_call("apt-get update && apt-get install -y libsndfile1 ffmpeg", shell=True)
# 2. THE ULTIMATE FIX: Force PIP to keep the pre-installed PyTorch 2.5.1!
print("Installing TTS while locking PyTorch versions...")
subprocess.check_call([
sys.executable, "-m", "pip", "install",
"TTS==0.22.0", "torch==2.5.1", "torchaudio==2.5.1",
"--ignore-installed", "blinker", "--no-cache-dir"
])
# 3. Apply the Scipy compiler patch
print("Forcing clean Scipy binary...")
subprocess.check_call([
sys.executable, "-m", "pip", "install", "--force-reinstall",
"--only-binary", "scipy", "scipy==1.13.0", "--no-cache-dir"
])
print("Dependencies safely locked and installed!")
except Exception as e:
print(f"Installation crashed: {e}")
# NOW we safely import the libraries AFTER they are installed
import torch
from TTS.api import TTS
# --- THE COQUI BUG FIX (MONKEY PATCH) ---
# Because these are read-only properties, we have to hack the TTS class itself BEFORE we use it!
TTS.is_multi_lingual = property(lambda self: False)
TTS.is_multi_speaker = property(lambda self: False)
# ----------------------------------------
print("Loading Ormuri Voice into the Cloud GPU...")
model_file = os.path.join(path, "best_model.pth")
config_file = os.path.join(path, "config.json")
# Load the Coqui TTS model onto the Nvidia GPU
self.tts = TTS(model_path=model_file, config_path=config_file, progress_bar=False, gpu=True)
print("GPU TTS Engine Ready!")
def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
text = data.pop("inputs", "")
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as temp_audio:
temp_path = temp_audio.name
self.tts.tts_to_file(text=text, file_path=temp_path)
with open(temp_path, "rb") as f:
audio_bytes = f.read()
base64_audio = base64.b64encode(audio_bytes).decode("utf-8")
os.remove(temp_path)
return [{"audio": base64_audio, "sampling_rate": 22050}]

Xet Storage Details

Size:
2.78 kB
·
Xet hash:
700779ca5af5f8ec8147dbc57237190b8ffd04d107d919c4ee98ce0fb4827d06

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.