feat: expand language and accent lists to full coverage

Language: ~170 world languages with type-to-filter dropdown
Accent: 50+ regional varieties grouped by area

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-05 20:04:12 +02:00
parent c1558efad9
commit d2cb5c4249
2 changed files with 120 additions and 15 deletions
+73 -4
View File
@@ -63,11 +63,80 @@ class OmniVoiceGenerate:
"tooltip": "Transcription of ref_audio. Connect a Whisper (or other STT) node for best results.", "tooltip": "Transcription of ref_audio. Connect a Whisper (or other STT) node for best results.",
}), }),
"language": ( "language": (
["auto", "English", "Chinese", "Japanese", "Korean", "French", [
"Spanish", "German", "Portuguese", "Russian", "Arabic", "Hindi"], "auto",
# A
"Abkhazian", "Afar", "Afrikaans", "Akan", "Albanian", "Amharic",
"Arabic", "Aragonese", "Armenian", "Assamese", "Avaric", "Avestan",
"Aymara", "Azerbaijani",
# B
"Bambara", "Bashkir", "Basque", "Belarusian", "Bengali", "Bihari",
"Bislama", "Bosnian", "Breton", "Bulgarian", "Burmese",
# C
"Catalan", "Chamorro", "Chechen", "Chichewa", "Chinese (Mandarin)",
"Chinese (Cantonese)", "Chuvash", "Cornish", "Corsican", "Cree",
"Croatian", "Czech",
# D
"Danish", "Divehi", "Dutch", "Dzongkha",
# E
"English", "Esperanto", "Estonian", "Ewe",
# F
"Faroese", "Fijian", "Finnish", "French", "Fula",
# G
"Galician", "Georgian", "German", "Greek", "Guaraní", "Gujarati",
# H
"Haitian Creole", "Hausa", "Hebrew", "Herero", "Hindi", "Hiri Motu",
"Hungarian",
# I
"Interlingua", "Indonesian", "Igbo", "Inuktitut", "Irish",
"Italian",
# J
"Japanese", "Javanese",
# K
"Kannada", "Kanuri", "Kashmiri", "Kazakh", "Khmer", "Kikuyu",
"Kinyarwanda", "Komi", "Kongo", "Korean", "Kurdish", "Kyrgyz",
# L
"Lao", "Latin", "Latvian", "Limburgish", "Lingala", "Lithuanian",
"Luganda", "Luxembourgish",
# M
"Macedonian", "Malagasy", "Malay", "Malayalam", "Maltese", "Manx",
"Maori", "Marathi", "Marshallese", "Mongolian",
# N
"Nauruan", "Navajo", "Nepali", "Northern Sami", "Norwegian",
"Norwegian Bokmål", "Norwegian Nynorsk",
# O
"Occitan", "Ojibwe", "Odia", "Oromo", "Ossetian",
# P
"Pali", "Pashto", "Persian", "Polish", "Portuguese",
"Punjabi",
# Q
"Quechua",
# R
"Romanian", "Romansh", "Russian",
# S
"Samoan", "Sango", "Sanskrit", "Serbian", "Shona", "Sindhi",
"Sinhala", "Slovak", "Slovenian", "Somali", "Southern Sotho",
"Spanish", "Sundanese", "Swahili", "Swati", "Swedish",
# T
"Tagalog", "Tahitian", "Tajik", "Tamil", "Tatar", "Telugu",
"Thai", "Tibetan", "Tigrinya", "Tonga", "Tsonga", "Tswana",
"Turkish", "Turkmen", "Twi",
# U
"Ukrainian", "Urdu", "Uyghur", "Uzbek",
# V
"Vietnamese", "Volapük",
# W
"Walloon", "Welsh", "Western Frisian", "Wolof",
# X
"Xhosa",
# Y
"Yiddish", "Yoruba",
# Z
"Zhuang", "Zulu",
],
{ {
"default": "auto", "default": "auto",
"tooltip": "Language of the text to synthesize. 'auto' lets the model detect it.", "tooltip": "Language of the text. Type to filter. OmniVoice supports 600+ languages — use 'auto' when unsure.",
}, },
), ),
"instruct": ("STRING", { "instruct": ("STRING", {
@@ -124,7 +193,7 @@ class OmniVoiceGenerate:
if seed != 0: if seed != 0:
torch.manual_seed(seed) torch.manual_seed(seed)
kwargs = {"text": text, "speed": speed, "num_step": num_step, "guidance_scale": guidance_scale} kwargs = {"text": text, "speed": speed, "num_step": num_step, "guidance_scale": guidance_scale}
if language != "auto": if language and language != "auto":
kwargs["language"] = language kwargs["language"] = language
if mode == "voice_cloning" and ref_audio is None: if mode == "voice_cloning" and ref_audio is None:
+47 -11
View File
@@ -1,24 +1,60 @@
class OmniVoiceVoiceDesign: class OmniVoiceVoiceDesign:
"""Compose a voice design instruct string from structured dropdowns.""" """Compose a voice design instruct string from structured dropdowns."""
GENDERS = ["none", "male", "female"] GENDERS = ["none", "male", "female"]
AGES = ["none", "child", "teenager", "young adult", "middle-aged", "elderly"]
PITCHES = ["none", "very low pitch", "low pitch", "moderate pitch", "high pitch", "very high pitch", "whisper"] AGES = ["none", "child", "teenager", "young adult", "middle-aged", "elderly"]
ACCENTS = [
PITCHES = [
"none", "none",
"american accent", "british accent", "australian accent", "canadian accent", "very low pitch", "low pitch", "moderate pitch",
"indian accent", "chinese accent", "japanese accent", "korean accent", "high pitch", "very high pitch", "whisper",
"portuguese accent", "russian accent", ]
ACCENTS = [
"none",
# English varieties
"american accent", "american southern accent", "american new york accent",
"american midwest accent", "american texas accent",
"british accent", "british rp accent", "british cockney accent",
"scottish accent", "welsh accent", "irish accent",
"australian accent", "new zealand accent",
"canadian accent", "south african accent",
# South / Southeast Asia
"indian accent", "pakistani accent", "bangladeshi accent",
"sri lankan accent", "singaporean accent", "malaysian accent",
"filipino accent", "vietnamese accent", "thai accent",
"indonesian accent",
# East Asia
"chinese accent", "japanese accent", "korean accent",
# Europe
"french accent", "german accent", "italian accent",
"spanish accent", "portuguese accent", "dutch accent",
"swedish accent", "norwegian accent", "danish accent",
"finnish accent", "polish accent", "czech accent",
"hungarian accent", "romanian accent", "greek accent",
"turkish accent",
# Eastern Europe / Central Asia
"russian accent", "ukrainian accent", "arabic accent",
"persian accent", "kazakh accent",
# Africa / Americas
"nigerian accent", "ghanaian accent", "kenyan accent",
"mexican accent", "brazilian accent", "caribbean accent",
"argentinian accent",
] ]
@classmethod @classmethod
def INPUT_TYPES(cls): def INPUT_TYPES(cls):
return { return {
"required": { "required": {
"gender": (cls.GENDERS, {"default": "female"}), "gender": (cls.GENDERS, {"default": "female",
"age": (cls.AGES, {"default": "none"}), "tooltip": "Voice gender."}),
"pitch": (cls.PITCHES, {"default": "none"}), "age": (cls.AGES, {"default": "none",
"accent": (cls.ACCENTS, {"default": "none"}), "tooltip": "Approximate age of the speaker."}),
"pitch": (cls.PITCHES, {"default": "none",
"tooltip": "Pitch / register of the voice."}),
"accent": (cls.ACCENTS, {"default": "none",
"tooltip": "Regional or language accent. Type to filter the list."}),
}, },
} }