|
|
import gradio as gr |
|
|
from TTS.api import TTS |
|
|
import uuid |
|
|
|
|
|
|
|
|
tts = TTS(model_name="tts_models/en/ljspeech/tacotron2-DDC", progress_bar=False, gpu=False) |
|
|
|
|
|
def tts_generate(text, speed): |
|
|
if not text.strip(): |
|
|
return "Please enter some text.", None |
|
|
|
|
|
try: |
|
|
|
|
|
filename = f"output_{uuid.uuid4().hex}.wav" |
|
|
tts.tts_to_file(text=text, file_path=filename, speaker_wav=None, speed=speed) |
|
|
return "Speech generated successfully!", filename |
|
|
|
|
|
except Exception as e: |
|
|
return f"Error: {e}", None |
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=tts_generate, |
|
|
inputs=[ |
|
|
gr.Textbox(label="Enter Text", lines=6, placeholder="Type or paste text here..."), |
|
|
gr.Slider(minimum=0.5, maximum=1.5, value=1.0, step=0.1, label="Speech Speed") |
|
|
], |
|
|
outputs=[ |
|
|
gr.Text(label="Status"), |
|
|
gr.Audio(label="Generated Speech") |
|
|
], |
|
|
title="🎙️ Offline TTS with Coqui", |
|
|
description="Generate speech from text using an offline TTS model (Tacotron2-DDC). No API keys. No limits." |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
iface.launch() |
|
|
|