| 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() |