Spaces:
Running on Zero
Running on Zero
| """Language code mappings between TTS display names, Whisper ISO-639-1, and NLLB BCP-47.""" | |
| from dataclasses import dataclass | |
| from typing import Mapping | |
| class LangInfo: | |
| display: str # Display name matching TTS_LANGUAGES (e.g., "Portuguese") | |
| nllb: str # NLLB-200 BCP-47 flores code (e.g., "por_Latn") | |
| whisper: str # Whisper ISO 639-1 code (e.g., "pt") | |
| LANG_MAP: Mapping[str, LangInfo] = { | |
| "Arabic": LangInfo("Arabic", "arb_Arab", "ar"), | |
| "Danish": LangInfo("Danish", "dan_Latn", "da"), | |
| "German": LangInfo("German", "deu_Latn", "de"), | |
| "Greek": LangInfo("Greek", "ell_Grek", "el"), | |
| "English": LangInfo("English", "eng_Latn", "en"), | |
| "Spanish": LangInfo("Spanish", "spa_Latn", "es"), | |
| "Finnish": LangInfo("Finnish", "fin_Latn", "fi"), | |
| "French": LangInfo("French", "fra_Latn", "fr"), | |
| "Hebrew": LangInfo("Hebrew", "heb_Hebr", "he"), | |
| "Hindi": LangInfo("Hindi", "hin_Deva", "hi"), | |
| "Italian": LangInfo("Italian", "ita_Latn", "it"), | |
| "Japanese": LangInfo("Japanese", "jpn_Jpan", "ja"), | |
| "Korean": LangInfo("Korean", "kor_Hang", "ko"), | |
| "Malay": LangInfo("Malay", "zsm_Latn", "ms"), | |
| "Dutch": LangInfo("Dutch", "nld_Latn", "nl"), | |
| "Norwegian": LangInfo("Norwegian", "nob_Latn", "no"), | |
| "Polish": LangInfo("Polish", "pol_Latn", "pl"), | |
| "Portuguese": LangInfo("Portuguese", "por_Latn", "pt"), | |
| "Russian": LangInfo("Russian", "rus_Cyrl", "ru"), | |
| "Swedish": LangInfo("Swedish", "swe_Latn", "sv"), | |
| "Swahili": LangInfo("Swahili", "swh_Latn", "sw"), | |
| "Turkish": LangInfo("Turkish", "tur_Latn", "tr"), | |
| "Chinese": LangInfo("Chinese", "zho_Hans", "zh"), | |
| } | |
| def get_nllb_code(lang_display: str) -> str: | |
| info = LANG_MAP.get(lang_display) | |
| if info is None: | |
| raise ValueError(f"Unknown language: {lang_display!r}") | |
| return info.nllb | |
| def get_whisper_code(lang_display: str) -> str: | |
| info = LANG_MAP.get(lang_display) | |
| if info is None: | |
| raise ValueError(f"Unknown language: {lang_display!r}") | |
| return info.whisper | |
| def whisper_code_to_display(whisper_code: str) -> str | None: | |
| for info in LANG_MAP.values(): | |
| if info.whisper == whisper_code: | |
| return info.display | |
| return None | |
| def nllb_code_to_display(nllb_code: str) -> str | None: | |
| for info in LANG_MAP.values(): | |
| if info.nllb == nllb_code: | |
| return info.display | |
| return None | |