Update app.py
Browse files
app.py
CHANGED
|
@@ -4,17 +4,16 @@ from huggingface_hub import list_models
|
|
| 4 |
import langcodes
|
| 5 |
import re
|
| 6 |
|
| 7 |
-
#
|
| 8 |
-
all_models = list_models(filter="facebook/mms-tts", full=True)
|
| 9 |
-
|
| 10 |
lang_map = {}
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
| 13 |
for model in all_models:
|
| 14 |
-
repo = model.modelId
|
| 15 |
code = repo.split("-")[-1].lower()
|
| 16 |
|
| 17 |
-
# Tên ngôn ngữ từ metadata hoặc fallback
|
| 18 |
name = ""
|
| 19 |
if model.cardData and "language" in model.cardData:
|
| 20 |
name = model.cardData["language"]
|
|
@@ -24,10 +23,16 @@ for model in all_models:
|
|
| 24 |
except:
|
| 25 |
name = code
|
| 26 |
|
| 27 |
-
# Chuẩn hóa tên ngôn ngữ (thường hóa + bỏ khoảng trắng thừa)
|
| 28 |
name_clean = re.sub(r"\s+", " ", name.strip().lower())
|
| 29 |
lang_map[name_clean] = code
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
def tts_fn(text, language):
|
| 32 |
lang_input = re.sub(r"\s+", " ", language.strip().lower())
|
| 33 |
code = lang_map.get(lang_input)
|
|
@@ -42,10 +47,10 @@ def tts_fn(text, language):
|
|
| 42 |
return f"❌ Error: {str(e)}", None
|
| 43 |
|
| 44 |
with gr.Blocks() as demo:
|
| 45 |
-
gr.Markdown("# 🌐 MMS-TTS: 1100+ Languages (
|
| 46 |
with gr.Row():
|
| 47 |
language = gr.Textbox(label="Enter language name (e.g., English, Meadow Mari)")
|
| 48 |
-
text = gr.Textbox(label="Enter your text"
|
| 49 |
with gr.Row():
|
| 50 |
btn = gr.Button("Speak")
|
| 51 |
with gr.Row():
|
|
|
|
| 4 |
import langcodes
|
| 5 |
import re
|
| 6 |
|
| 7 |
+
# Tạo mapping tên ngôn ngữ → mã ISO
|
|
|
|
|
|
|
| 8 |
lang_map = {}
|
| 9 |
|
| 10 |
+
print("🔄 Fetching available models...")
|
| 11 |
+
all_models = list_models(filter="facebook/mms-tts", full=True)
|
| 12 |
+
|
| 13 |
for model in all_models:
|
| 14 |
+
repo = model.modelId
|
| 15 |
code = repo.split("-")[-1].lower()
|
| 16 |
|
|
|
|
| 17 |
name = ""
|
| 18 |
if model.cardData and "language" in model.cardData:
|
| 19 |
name = model.cardData["language"]
|
|
|
|
| 23 |
except:
|
| 24 |
name = code
|
| 25 |
|
|
|
|
| 26 |
name_clean = re.sub(r"\s+", " ", name.strip().lower())
|
| 27 |
lang_map[name_clean] = code
|
| 28 |
|
| 29 |
+
print(f"✅ Total languages found: {len(lang_map)}")
|
| 30 |
+
print("📋 Sample languages:")
|
| 31 |
+
for i, (k, v) in enumerate(lang_map.items()):
|
| 32 |
+
if i >= 30:
|
| 33 |
+
break
|
| 34 |
+
print(f" - {k} → {v}")
|
| 35 |
+
|
| 36 |
def tts_fn(text, language):
|
| 37 |
lang_input = re.sub(r"\s+", " ", language.strip().lower())
|
| 38 |
code = lang_map.get(lang_input)
|
|
|
|
| 47 |
return f"❌ Error: {str(e)}", None
|
| 48 |
|
| 49 |
with gr.Blocks() as demo:
|
| 50 |
+
gr.Markdown("# 🌐 MMS-TTS: 1100+ Languages (Flexible Name Input)")
|
| 51 |
with gr.Row():
|
| 52 |
language = gr.Textbox(label="Enter language name (e.g., English, Meadow Mari)")
|
| 53 |
+
text = gr.Textbox(label="Enter your text")
|
| 54 |
with gr.Row():
|
| 55 |
btn = gr.Button("Speak")
|
| 56 |
with gr.Row():
|