aboutsummaryrefslogtreecommitdiff
path: root/app/converter
diff options
context:
space:
mode:
Diffstat (limited to 'app/converter')
-rw-r--r--app/converter/clients/__init__.py4
-rw-r--r--app/converter/clients/languages.py30
2 files changed, 29 insertions, 5 deletions
diff --git a/app/converter/clients/__init__.py b/app/converter/clients/__init__.py
index 6ae8850..1fcfd1a 100644
--- a/app/converter/clients/__init__.py
+++ b/app/converter/clients/__init__.py
@@ -16,7 +16,7 @@ BACKENDS = (BACKEND_AUDIOCPP, BACKEND_QWEN, BACKEND_FASTER)
from .base import BaseTTSClient, ConversionCancelled, VOICE_MODE_CLONE, \
VOICE_MODE_CUSTOM, VOICE_MODE_DESIGN, VOICE_MODES, resolve_request_seed
-from .languages import LANGUAGE_ISO_CODES, TTS_LANGUAGES, \
+from .languages import LANGUAGE_CHOICES, LANGUAGE_ISO_CODES, TTS_LANGUAGES, \
TTS_LANGUAGE_ALIASES, normalize_language
from .speakers import QWEN3_TTS_SPEAKERS, SPEAKER_DISPLAY_NAMES, \
is_builtin_speaker, speaker_display_name, speaker_display_name_for
@@ -52,7 +52,7 @@ __all__ = [
"MODEL_SIZE", "CUSTOM_VOICE_MODEL_ID", "SAMPLE_RATE",
# languages
"TTS_LANGUAGES", "TTS_LANGUAGE_ALIASES", "LANGUAGE_ISO_CODES",
- "normalize_language",
+ "LANGUAGE_CHOICES", "normalize_language",
# speakers
"QWEN3_TTS_SPEAKERS", "SPEAKER_DISPLAY_NAMES",
"speaker_display_name", "speaker_display_name_for", "is_builtin_speaker",
diff --git a/app/converter/clients/languages.py b/app/converter/clients/languages.py
index 079dead..c73dc7c 100644
--- a/app/converter/clients/languages.py
+++ b/app/converter/clients/languages.py
@@ -4,14 +4,18 @@ from typing import Optional
# Languages the Qwen3-TTS demo accepts as display names (its API silently
# falls back to "Auto" for anything else, so unknown names are rejected
-# before a run starts instead of mispronouncing a whole book).
+# before a run starts instead of mispronouncing a whole book). Arabic,
+# Hindi and Vietnamese come from the audio.cpp WebUI language menus
+# (MagpieTTS / IndexTTS2); on Qwen they degrade to Auto.
TTS_LANGUAGES = (
"Auto", "Chinese", "English", "German", "Italian", "Portuguese",
- "Spanish", "Japanese", "Korean", "French", "Russian",
+ "Spanish", "Japanese", "Korean", "French", "Russian", "Arabic",
+ "Hindi", "Vietnamese",
)
# Short aliases accepted on the command line (ISO 639-1 codes and common
-# shorthands), mapped to the display names above.
+# shorthands), mapped to the display names above. The Arabic regional
+# variants collapse to plain Arabic.
TTS_LANGUAGE_ALIASES = {
"zh": "Chinese",
"en": "English",
@@ -23,11 +27,17 @@ TTS_LANGUAGE_ALIASES = {
"ko": "Korean",
"fr": "French",
"ru": "Russian",
+ "ar": "Arabic",
+ "hi": "Hindi",
+ "vi": "Vietnamese",
"zh-cn": "Chinese",
"zh-tw": "Chinese",
"pt-br": "Portuguese",
"en-us": "English",
"en-gb": "English",
+ "ar-ae": "Arabic",
+ "ar-msa": "Arabic",
+ "ar-sa": "Arabic",
}
# Qwen display names -> ISO 639-1 codes, for audio.cpp families whose
@@ -45,8 +55,22 @@ LANGUAGE_ISO_CODES = {
"Korean": "ko",
"French": "fr",
"Russian": "ru",
+ "Arabic": "ar",
+ "Hindi": "hi",
+ "Vietnamese": "vi",
}
+# Static selection-list order for the TUI Language menus (Settings and
+# Generate audiobooks): the languages of audio.cpp's WebUI language menus
+# (MagpieTTS + IndexTTS2) plus the shared display names, with common
+# languages near the top. A static list — new audio.cpp menu languages
+# need this tuple updated by hand.
+LANGUAGE_CHOICES = (
+ "English", "Spanish", "Chinese", "French", "German", "Italian",
+ "Portuguese", "Japanese", "Korean", "Russian", "Arabic", "Hindi",
+ "Vietnamese", "Auto",
+)
+
def normalize_language(value: Optional[str]) -> str:
"""Normalize a user-provided language name to a Qwen3-TTS display name.