File size: 1,674 Bytes
55e03e9 df4d1dd 7ba8e71 043490a df4d1dd 55e03e9 df4d1dd 55e03e9 df4d1dd 55e03e9 043490a df4d1dd 55e03e9 df4d1dd 55e03e9 df4d1dd 55e03e9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import os
import gradio as gr
import base64
from Zonos_main.tts import ZonosTTS
# Force CPU mode to avoid CUDA issues
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
def load_model():
try:
tts = ZonosTTS()
print("β
TTS model loaded successfully")
return tts
except Exception as e:
print(f"β Model loading failed: {str(e)}")
raise RuntimeError("Could not initialize TTS model") from e
tts = load_model()
def generate_audio(text):
try:
if not text.strip():
raise ValueError("Input text cannot be empty")
# Generate audio (must return raw bytes)
audio_bytes = tts.generate(text)
if not isinstance(audio_bytes, bytes):
raise TypeError("Model must return bytes")
if len(audio_bytes) < 100: # Minimum valid audio size
raise ValueError("Generated audio too small")
return {
"name": "output.wav",
"data": f"data:audio/wav;base64,{base64.b64encode(audio_bytes).decode()}",
"size": len(audio_bytes)
}
except Exception as e:
print(f"β Generation error: {str(e)}")
raise gr.Error(f"Audio generation failed: {str(e)}") from e
# Robust Gradio interface
demo = gr.Interface(
fn=generate_audio,
inputs=gr.Textbox(label="Input Text", placeholder="Type something..."),
outputs=gr.Audio(label="Output", type="filepath"),
title="Zonos TTS",
allow_flagging="never"
)
# Launch with error handling
try:
demo.launch(show_error=True)
except Exception as e:
print(f"β Gradio launch failed: {str(e)}")
raise |