text-voice / app.py
mdAmin313's picture
Update app.py
3b799ea verified
# app.py
import gradio as gr
from transformers import pipeline
# -------------------------------
# Define your TTS models here
# -------------------------------
# Add model names from Hugging Face Hub
tts_models = {
"Indic Parler TTS (Indian English)": "ai4bharat/indic-parler-tts",
# "Hindi TTS (FuturixAI)": "Futurix-AI/Hindi-TTS",
# "Hinglish TTS (sachin2000keshav)": "sachin2000keshav/hinglish_tts_v1",
# "MMS-TTS Hindi": "facebook/mms-tts-hin"
}
# Load pipelines
pipelines = {}
for name, model_name in tts_models.items():
print(f"Loading model: {name}")
pipelines[name] = pipeline("text-to-speech", model=model_name)
# -------------------------------
# Function to run TTS
# -------------------------------
def generate_speech(text, model_choice):
if model_choice not in pipelines:
return None
tts_pipeline = pipelines[model_choice]
# Generate speech
audio = tts_pipeline(text)
# The output format may vary; handle bytes or dict
if isinstance(audio, dict) and "audio" in audio:
return audio["audio"]
return audio
# -------------------------------
# Gradio UI
# -------------------------------
with gr.Blocks() as demo:
gr.Markdown("## Test Multiple Indian TTS Models")
text_input = gr.Textbox(label="Enter text", placeholder="Type text in Hindi, Hinglish, or English", lines=3)
model_dropdown = gr.Dropdown(label="Select TTS Model", choices=list(tts_models.keys()))
output_audio = gr.Audio(label="Generated Speech")
text_input.submit(generate_speech, inputs=[text_input, model_dropdown], outputs=output_audio)
model_dropdown.change(generate_speech, inputs=[text_input, model_dropdown], outputs=output_audio)
demo.launch()