Inial commited on
Commit
235660f
·
verified ·
1 Parent(s): b6930c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -28
app.py CHANGED
@@ -1,34 +1,51 @@
1
- import os
2
- os.system("pip install --upgrade transformers==4.39.2")
3
- from transformers import AutoModelForTextToSpeech, AutoProcessor
4
  import torch
 
 
 
 
5
 
6
- # Tải hình processor
7
- model = AutoModelForTextToSpeech.from_pretrained("facebook/mms-tts")
8
- processor = AutoProcessor.from_pretrained("facebook/mms-tts")
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- # Lấy danh sách tất cả ngôn ngữ hỗ trợ
11
- supported_languages = list(processor.feature_extractor.sampling_rate_map.keys())
12
- supported_languages.sort()
13
 
14
- # Hàm xử chuyển văn bản thành giọng nói
15
- def tts_fn(text, language_code):
16
- inputs = processor(text=text, language=language_code, return_tensors="pt")
17
- with torch.no_grad():
18
- output = model(**inputs)
19
- audio = output.waveform.numpy()[0]
20
- return (processor.feature_extractor.sampling_rate, audio)
 
 
 
 
 
21
 
22
  # Giao diện Gradio
23
- iface = gr.Interface(
24
- fn=tts_fn,
25
- inputs=[
26
- gr.Textbox(label="Nhập văn bản"),
27
- gr.Dropdown(choices=supported_languages, label="Chọn ngôn ngữ"),
28
- ],
29
- outputs=gr.Audio(label="Kết quả đọc"),
30
- title="MMS-TTS 1100+ Ngôn ngữ",
31
- description="Dự án tạo TTS sử dụng mô hình facebook/mms-tts, hỗ trợ hơn 1100 ngôn ngữ khác nhau"
32
- )
33
-
34
- iface.launch()
 
1
+ import gradio as gr
 
 
2
  import torch
3
+ from transformers import AutoProcessor, AutoModelForTextToSpeech, pipeline
4
+ from huggingface_hub import list_models
5
+ from iso639 import Lang
6
+ import re
7
 
8
+ # Lấy danh sách các model MMS-TTS
9
+ def get_mms_tts_languages():
10
+ models = list_models(author="facebook", search="mms-tts-")
11
+ lang_map = {}
12
+ for model in models:
13
+ match = re.search(r"mms-tts-([a-z0-9]{3})$", model.modelId)
14
+ if match:
15
+ iso = match.group(1)
16
+ try:
17
+ lang = Lang(iso)
18
+ lang_map[lang.name.title()] = iso
19
+ except:
20
+ lang_map[iso.upper()] = iso
21
+ return dict(sorted(lang_map.items()))
22
 
23
+ LANG_MAP = get_mms_tts_languages()
24
+ LANGUAGE_NAMES = list(LANG_MAP.keys())
 
25
 
26
+ # Sinh âm thanh từ văn bản
27
+ @torch.inference_mode()
28
+ def generate_tts(text, language_name):
29
+ iso_code = LANG_MAP[language_name]
30
+ model_id = f"facebook/mms-tts-{iso_code}"
31
+
32
+ processor = AutoProcessor.from_pretrained(model_id)
33
+ model = AutoModelForTextToSpeech.from_pretrained(model_id).to("cpu")
34
+
35
+ tts_pipeline = pipeline("text-to-speech", model=model, tokenizer=processor, feature_extractor=processor)
36
+ output = tts_pipeline(text)
37
+ return output["audio"]
38
 
39
  # Giao diện Gradio
40
+ with gr.Blocks() as demo:
41
+ gr.Markdown("## 🌍 MMS-TTS: 1100+ Ngôn ngữ TTS từ Meta")
42
+ with gr.Row():
43
+ language = gr.Dropdown(label="Chọn ngôn ngữ", choices=LANGUAGE_NAMES, value="Vietnamese")
44
+ text = gr.Textbox(label="Nhập văn bản", placeholder="Xin chào thế giới")
45
+ output = gr.Audio(label="Giọng nói")
46
+
47
+ btn = gr.Button("Phát")
48
+ btn.click(generate_tts, inputs=[text, language], outputs=output)
49
+
50
+ if __name__ == "__main__":
51
+ demo.launch()