js-tts-wrapper
Version:
A JavaScript/TypeScript library that provides a unified API for working with multiple cloud-based Text-to-Speech (TTS) services
419 lines (418 loc) • 9.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toIso639_3 = toIso639_3;
exports.toLanguageDisplay = toLanguageDisplay;
exports.normalizeBcp47 = normalizeBcp47;
const ISO_639_1_TO_639_3 = {
aa: "aar",
ab: "abk",
af: "afr",
ak: "aka",
am: "amh",
an: "arg",
ar: "ara",
as: "asm",
av: "ava",
ay: "aym",
az: "aze",
ba: "bak",
be: "bel",
bg: "bul",
bh: "bih",
bi: "bis",
bm: "bam",
bn: "ben",
bo: "bod",
br: "bre",
bs: "bos",
ca: "cat",
ce: "che",
ch: "cha",
co: "cos",
cr: "cre",
cs: "ces",
cu: "chu",
cv: "chv",
cy: "cym",
da: "dan",
de: "deu",
dv: "div",
dz: "dzo",
ee: "ewe",
el: "ell",
en: "eng",
eo: "epo",
es: "spa",
et: "est",
eu: "eus",
fa: "fas",
ff: "ful",
fi: "fin",
fj: "fij",
fo: "fao",
fr: "fra",
fy: "fry",
ga: "gle",
gd: "gla",
gl: "glg",
gn: "grn",
gu: "guj",
gv: "glv",
ha: "hau",
he: "heb",
hi: "hin",
ho: "hmo",
hr: "hrv",
ht: "hat",
hu: "hun",
hy: "hye",
hz: "her",
ia: "ina",
id: "ind",
ie: "ile",
ig: "ibo",
ii: "iii",
ik: "ipk",
io: "ido",
is: "isl",
it: "ita",
iu: "iku",
ja: "jpn",
jv: "jav",
ka: "kat",
kg: "kon",
ki: "kik",
kj: "kua",
kk: "kaz",
kl: "kal",
km: "khm",
kn: "kan",
ko: "kor",
kr: "kau",
ks: "kas",
ku: "kur",
kv: "kom",
kw: "cor",
ky: "kir",
la: "lat",
lb: "ltz",
lg: "lug",
li: "lim",
ln: "lin",
lo: "lao",
lt: "lit",
lu: "lub",
lv: "lav",
mg: "mlg",
mh: "mah",
mi: "mri",
mk: "mkd",
ml: "mal",
mn: "mon",
mr: "mar",
ms: "msa",
mt: "mlt",
my: "mya",
na: "nau",
nb: "nob",
nd: "nde",
ne: "nep",
ng: "ndo",
nl: "nld",
nn: "nno",
no: "nor",
nr: "nbl",
nv: "nav",
ny: "nya",
oc: "oci",
oj: "oji",
om: "orm",
or: "ori",
os: "oss",
pa: "pan",
pi: "pli",
pl: "pol",
ps: "pus",
pt: "por",
qu: "que",
rm: "roh",
rn: "run",
ro: "ron",
ru: "rus",
rw: "kin",
sa: "san",
sc: "srd",
sd: "snd",
se: "sme",
sg: "sag",
si: "sin",
sk: "slk",
sl: "slv",
sm: "smo",
sn: "sna",
so: "som",
sq: "sqi",
sr: "srp",
ss: "ssw",
st: "sot",
su: "sun",
sv: "swe",
sw: "swa",
ta: "tam",
te: "tel",
tg: "tgk",
th: "tha",
ti: "tir",
tk: "tuk",
tl: "tgl",
tn: "tsn",
to: "ton",
tr: "tur",
ts: "tso",
tt: "tat",
tw: "twi",
ty: "tah",
ug: "uig",
uk: "ukr",
ur: "urd",
uz: "uzb",
ve: "ven",
vi: "vie",
vo: "vol",
wa: "wln",
wo: "wol",
xh: "xho",
yi: "yid",
yo: "yor",
za: "zha",
zh: "zho",
zu: "zul",
};
const BCP47_TO_DISPLAY = {
"af-ZA": "Afrikaans (South Africa)",
"am-ET": "Amharic (Ethiopia)",
"ar-AE": "Arabic (UAE)",
"ar-BH": "Arabic (Bahrain)",
"ar-DZ": "Arabic (Algeria)",
"ar-EG": "Arabic (Egypt)",
"ar-IQ": "Arabic (Iraq)",
"ar-JO": "Arabic (Jordan)",
"ar-KW": "Arabic (Kuwait)",
"ar-LB": "Arabic (Lebanon)",
"ar-LY": "Arabic (Libya)",
"ar-MA": "Arabic (Morocco)",
"ar-OM": "Arabic (Oman)",
"ar-QA": "Arabic (Qatar)",
"ar-SA": "Arabic (Saudi Arabia)",
"ar-SY": "Arabic (Syria)",
"ar-TN": "Arabic (Tunisia)",
"ar-YE": "Arabic (Yemen)",
"az-AZ": "Azerbaijani (Azerbaijan)",
"bg-BG": "Bulgarian (Bulgaria)",
"bn-BD": "Bengali (Bangladesh)",
"bn-IN": "Bengali (India)",
"ca-ES": "Catalan (Spain)",
"cs-CZ": "Czech (Czech Republic)",
"cy-GB": "Welsh (United Kingdom)",
"da-DK": "Danish (Denmark)",
"de-AT": "German (Austria)",
"de-CH": "German (Switzerland)",
"de-DE": "German (Germany)",
"el-GR": "Greek (Greece)",
"en-AU": "English (Australia)",
"en-CA": "English (Canada)",
"en-GB": "English (United Kingdom)",
"en-IE": "English (Ireland)",
"en-IN": "English (India)",
"en-NZ": "English (New Zealand)",
"en-PH": "English (Philippines)",
"en-SG": "English (Singapore)",
"en-US": "English (United States)",
"en-ZA": "English (South Africa)",
"es-AR": "Spanish (Argentina)",
"es-BO": "Spanish (Bolivia)",
"es-CL": "Spanish (Chile)",
"es-CO": "Spanish (Colombia)",
"es-CR": "Spanish (Costa Rica)",
"es-DO": "Spanish (Dominican Republic)",
"es-EC": "Spanish (Ecuador)",
"es-ES": "Spanish (Spain)",
"es-GT": "Spanish (Guatemala)",
"es-HN": "Spanish (Honduras)",
"es-MX": "Spanish (Mexico)",
"es-NI": "Spanish (Nicaragua)",
"es-PA": "Spanish (Panama)",
"es-PE": "Spanish (Peru)",
"es-PR": "Spanish (Puerto Rico)",
"es-PY": "Spanish (Paraguay)",
"es-SV": "Spanish (El Salvador)",
"es-US": "Spanish (United States)",
"es-UY": "Spanish (Uruguay)",
"es-VE": "Spanish (Venezuela)",
"et-EE": "Estonian (Estonia)",
"eu-ES": "Basque (Spain)",
"fa-IR": "Persian (Iran)",
"fi-FI": "Finnish (Finland)",
"fil-PH": "Filipino (Philippines)",
"fr-BE": "French (Belgium)",
"fr-CA": "French (Canada)",
"fr-CH": "French (Switzerland)",
"fr-FR": "French (France)",
"ga-IE": "Irish (Ireland)",
"gl-ES": "Galician (Spain)",
"gu-IN": "Gujarati (India)",
"he-IL": "Hebrew (Israel)",
"hi-IN": "Hindi (India)",
"hr-HR": "Croatian (Croatia)",
"hu-HU": "Hungarian (Hungary)",
"hy-AM": "Armenian (Armenia)",
"id-ID": "Indonesian (Indonesia)",
"is-IS": "Icelandic (Iceland)",
"it-IT": "Italian (Italy)",
"ja-JP": "Japanese (Japan)",
"jv-ID": "Javanese (Indonesia)",
"ka-GE": "Georgian (Georgia)",
"kk-KZ": "Kazakh (Kazakhstan)",
"km-KH": "Khmer (Cambodia)",
"kn-IN": "Kannada (India)",
"ko-KR": "Korean (South Korea)",
"lo-LA": "Lao (Laos)",
"lt-LT": "Lithuanian (Lithuania)",
"lv-LV": "Latvian (Latvia)",
"mk-MK": "Macedonian (Macedonia)",
"ml-IN": "Malayalam (India)",
"mn-MN": "Mongolian (Mongolia)",
"mr-IN": "Marathi (India)",
"ms-MY": "Malay (Malaysia)",
"mt-MT": "Maltese (Malta)",
"my-MM": "Burmese (Myanmar)",
"nb-NO": "Norwegian Bokmål (Norway)",
"ne-NP": "Nepali (Nepal)",
"nl-BE": "Dutch (Belgium)",
"nl-NL": "Dutch (Netherlands)",
"pa-IN": "Punjabi (India)",
"pl-PL": "Polish (Poland)",
"ps-AF": "Pashto (Afghanistan)",
"pt-BR": "Portuguese (Brazil)",
"pt-PT": "Portuguese (Portugal)",
"ro-RO": "Romanian (Romania)",
"ru-RU": "Russian (Russia)",
"si-LK": "Sinhala (Sri Lanka)",
"sk-SK": "Slovak (Slovakia)",
"sl-SI": "Slovenian (Slovenia)",
"so-SO": "Somali (Somalia)",
"sq-AL": "Albanian (Albania)",
"sr-RS": "Serbian (Serbia)",
"su-ID": "Sundanese (Indonesia)",
"sv-SE": "Swedish (Sweden)",
"sw-KE": "Swahili (Kenya)",
"sw-TZ": "Swahili (Tanzania)",
"ta-IN": "Tamil (India)",
"ta-LK": "Tamil (Sri Lanka)",
"ta-SG": "Tamil (Singapore)",
"te-IN": "Telugu (India)",
"th-TH": "Thai (Thailand)",
"tr-TR": "Turkish (Turkey)",
"uk-UA": "Ukrainian (Ukraine)",
"ur-PK": "Urdu (Pakistan)",
"uz-UZ": "Uzbek (Uzbekistan)",
"vi-VN": "Vietnamese (Vietnam)",
"yue-CN": "Cantonese (China)",
"yue-HK": "Cantonese (Hong Kong)",
"zh-CN": "Chinese (China)",
"zh-HK": "Chinese (Hong Kong)",
"zh-TW": "Chinese (Taiwan)",
};
const LANGUAGE_DISPLAY = {
af: "Afrikaans",
am: "Amharic",
ar: "Arabic",
az: "Azerbaijani",
bg: "Bulgarian",
bn: "Bengali",
ca: "Catalan",
cs: "Czech",
cy: "Welsh",
da: "Danish",
de: "German",
el: "Greek",
en: "English",
es: "Spanish",
et: "Estonian",
eu: "Basque",
fa: "Persian",
fi: "Finnish",
fil: "Filipino",
fr: "French",
ga: "Irish",
gl: "Galician",
gu: "Gujarati",
he: "Hebrew",
hi: "Hindi",
hr: "Croatian",
hu: "Hungarian",
hy: "Armenian",
id: "Indonesian",
is: "Icelandic",
it: "Italian",
ja: "Japanese",
jv: "Javanese",
ka: "Georgian",
kk: "Kazakh",
km: "Khmer",
kn: "Kannada",
ko: "Korean",
lo: "Lao",
lt: "Lithuanian",
lv: "Latvian",
mk: "Macedonian",
ml: "Malayalam",
mn: "Mongolian",
mr: "Marathi",
ms: "Malay",
mt: "Maltese",
my: "Burmese",
nb: "Norwegian Bokmål",
ne: "Nepali",
nl: "Dutch",
pa: "Punjabi",
pl: "Polish",
ps: "Pashto",
pt: "Portuguese",
ro: "Romanian",
ru: "Russian",
si: "Sinhala",
sk: "Slovak",
sl: "Slovenian",
so: "Somali",
sq: "Albanian",
sr: "Serbian",
su: "Sundanese",
sv: "Swedish",
sw: "Swahili",
ta: "Tamil",
te: "Telugu",
th: "Thai",
tr: "Turkish",
uk: "Ukrainian",
ur: "Urdu",
uz: "Uzbek",
vi: "Vietnamese",
yue: "Cantonese",
zh: "Chinese",
};
function toIso639_3(code) {
const short = code.split("-")[0].toLowerCase();
return ISO_639_1_TO_639_3[short] || short;
}
function toLanguageDisplay(bcp47) {
if (BCP47_TO_DISPLAY[bcp47])
return BCP47_TO_DISPLAY[bcp47];
const short = bcp47.split("-")[0].toLowerCase();
return LANGUAGE_DISPLAY[short] || bcp47;
}
function normalizeBcp47(lang) {
if (lang.includes("-"))
return lang;
return `${lang}-US`;
}