import gradio as gr import torch import torchaudio from transformers import VitsModel, VitsTokenizer def tts_lisu(text): model_id = "facebook/mms-tts-lis" try: tokenizer = VitsTokenizer.from_pretrained(model_id) model = VitsModel.from_pretrained(model_id) inputs = tokenizer(text, return_tensors="pt") with torch.no_grad(): output = model(**inputs) waveform = output.waveform.squeeze().cpu() sample_rate = model.config.sampling_rate path = "lisu.wav" torchaudio.save(path, waveform.unsqueeze(0), sample_rate) return "✅ Giọng Lisu (ꓡꓲ-ꓢꓴ)", path except Exception as e: return f"❌ Lỗi: {str(e)}", None with gr.Blocks() as demo: gr.Markdown("# 🔊 Lisu TTS (ꓡꓲ-ꓢꓴ /lis/)") text_input = gr.Textbox(label="Nhập văn bản bằng tiếng Lisu") output_text = gr.Textbox(label="Thông tin") output_audio = gr.Audio(label="Phát âm", type="filepath") btn = gr.Button("Phát") btn.click(fn=tts_lisu, inputs=[text_input], outputs=[output_text, output_audio]) demo.launch()