CuhyTTS / app.py
amirgame197's picture
Update app.py
9417890 verified
import gradio as gr
import uuid
import os
import subprocess
import soundfile as sf
from pydub import AudioSegment
from app_utils import tts_interface, models
borna_model = next(model for model in models if "برنا" in model[0] or "برنا" in model[2])
voice_id = borna_model[2]
STATIC_DIR = "static"
os.makedirs(STATIC_DIR, exist_ok=True)
def tts(text):
input_path = os.path.join(STATIC_DIR, "input.txt")
with open(input_path, "w", encoding="utf-8") as f:
f.write(text.strip())
subprocess.run(
["espeak-ng", "-v", "fa", "-x", "-q", "-f", input_path],
capture_output=True,
text=True
)
(sr, audio), _ = tts_interface(voice_id, text.strip(), '')
temp_wav = os.path.join(STATIC_DIR, f"{uuid.uuid4().hex}.wav")
sf.write(temp_wav, audio, samplerate=sr, subtype="PCM_16")
out_path = temp_wav.replace(".wav", ".ogg")
sound = AudioSegment.from_wav(temp_wav)
sound = sound.set_channels(1)
sound.export(out_path, format="ogg", codec="libopus")
os.remove(temp_wav)
return out_path
demo = gr.Interface(
fn=tts,
inputs=gr.Textbox(show_label=False, placeholder="متن فارسی..."),
outputs=gr.Audio(label="", type="filepath"),
live=False
)
demo.launch()