Hindi-2TTS / app.py
Namanrai's picture
Upload 5 files
d72eaef verified
import os
import gradio as gr
from TTS.api import TTS
print("⏳ XTTS-v2 Model Download ho raha hai... Isme 10-15 min lagenge!")
# Coqui TTS ki terms & conditions ko auto-accept karne ka code
os.environ["COQUI_TOS_AGREED"] = "1"
# πŸš€ ASLI AI MODEL LOADING (Tere server ke andar)
# gpu=False kiya hai kyunki free HF space par CPU hota hai
tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2", gpu=False)
def clone_voice(script, ref_audio):
if not script or not ref_audio:
return None, "⚠️ Bhai, Script aur Reference Voice dono zaroori hain!"
try:
output_file = "voiceforge_final.wav"
# Tera local AI engine ab script read karega
tts.tts_to_file(
text=script,
file_path=output_file,
speaker_wav=ref_audio,
language="en" # πŸ‘ˆ Isko "en" kar de!
)
return output_file, "βœ… Boom! Teri apni AI ne locally aawaz bana di!"
except Exception as e:
return None, f"⚠️ Error: {str(e)}"
# ── Dark Mode UI ──
with gr.Blocks(theme=gr.themes.Monochrome()) as iface:
gr.Markdown("# πŸŽ™οΈ VoiceForge Mobile Studio")
gr.Markdown("### ⚑ True Local AI Clone Engine (XTTS-v2) | Dev: Naman Rai")
with gr.Row():
with gr.Column():
ref_audio_input = gr.Audio(type="filepath", label="🎡 Reference Voice (5-10 sec saaf aawaz)")
script_input = gr.Textbox(
label="πŸ“ Script Yahan Daal",
lines=4,
placeholder="Bhai log, aaj ke is montage mein..."
)
generate_btn = gr.Button("πŸš€ Generate Clone", variant="primary")
with gr.Column():
audio_output = gr.Audio(label="VoiceForge Output")
status_output = gr.Textbox(label="System Console")
generate_btn.click(
fn=clone_voice,
inputs=[script_input, ref_audio_input],
outputs=[audio_output, status_output],
api_name="clone_voice" # πŸ‘ˆ YEH LINE MISSING THI! Iske bina app nahi chalega.
)
# Aur server crash se bachane ke liye queue bhi laga de:
iface.queue(default_concurrency_limit=1, max_size=50).launch()