diff --git a/src/vocalinux/utils/vosk_model_info.py b/src/vocalinux/utils/vosk_model_info.py index 305f4e1..526ff94 100644 --- a/src/vocalinux/utils/vosk_model_info.py +++ b/src/vocalinux/utils/vosk_model_info.py @@ -196,6 +196,34 @@ SUPPORTED_LANGUAGES = { } +# medium and large ship the same best-available table. Each entry gets a copy so +# no caller can change one size's languages through the other. +_BEST_AVAILABLE_LANGUAGES: dict[str, str] = { + "en-us": "vosk-model-en-us-0.22", + "en-in": "vosk-model-en-in-0.5", + "ar": "vosk-model-ar-0.22-linto-1.1.0", + "ca": "vosk-model-small-ca-0.4", + "zh": "vosk-model-cn-0.22", + "cs": "vosk-model-small-cs-0.4-rhasspy", + "nl": "vosk-model-nl-spraakherkenning-0.6", + "fr": "vosk-model-fr-0.22", + "de": "vosk-model-de-0.21", + "hi": "vosk-model-hi-0.22", + "it": "vosk-model-it-0.22", + "ja": "vosk-model-ja-0.22", + "ko": "vosk-model-small-ko-0.22", + "fa": "vosk-model-fa-0.42", + "pl": "vosk-model-small-pl-0.22", + "pt": "vosk-model-pt-fb-v0.1.1-pruned", + "ru": "vosk-model-ru-0.22", + "es": "vosk-model-es-0.42", + "sv": "vosk-model-small-sv-rhasspy-0.15", + "tr": "vosk-model-small-tr-0.3", + "uk": "vosk-model-uk-v3", + "vi": "vosk-model-vn-0.4", +} + + # VOSK model metadata for display and download path resolution. # When Alphacephei only ships a small model, medium/large point at that same # zip so size selection never resolves to None (issue #550). @@ -231,58 +259,12 @@ VOSK_MODEL_INFO = { "medium": { "size_mb": 1500, "desc": "Balanced accuracy/speed", - "languages": { - "en-us": "vosk-model-en-us-0.22", - "en-in": "vosk-model-en-in-0.5", - "ar": "vosk-model-ar-0.22-linto-1.1.0", - "ca": "vosk-model-small-ca-0.4", - "zh": "vosk-model-cn-0.22", - "cs": "vosk-model-small-cs-0.4-rhasspy", - "nl": "vosk-model-nl-spraakherkenning-0.6", - "fr": "vosk-model-fr-0.22", - "de": "vosk-model-de-0.21", - "hi": "vosk-model-hi-0.22", - "it": "vosk-model-it-0.22", - "ja": "vosk-model-ja-0.22", - "ko": "vosk-model-small-ko-0.22", - "fa": "vosk-model-fa-0.42", - "pl": "vosk-model-small-pl-0.22", - "pt": "vosk-model-pt-fb-v0.1.1-pruned", - "ru": "vosk-model-ru-0.22", - "es": "vosk-model-es-0.42", - "sv": "vosk-model-small-sv-rhasspy-0.15", - "tr": "vosk-model-small-tr-0.3", - "uk": "vosk-model-uk-v3", - "vi": "vosk-model-vn-0.4", - }, + "languages": dict(_BEST_AVAILABLE_LANGUAGES), }, "large": { "size_mb": 1500, "desc": "Same as medium (best available)", - "languages": { - "en-us": "vosk-model-en-us-0.22", - "en-in": "vosk-model-en-in-0.5", - "ar": "vosk-model-ar-0.22-linto-1.1.0", - "ca": "vosk-model-small-ca-0.4", - "zh": "vosk-model-cn-0.22", - "cs": "vosk-model-small-cs-0.4-rhasspy", - "nl": "vosk-model-nl-spraakherkenning-0.6", - "fr": "vosk-model-fr-0.22", - "de": "vosk-model-de-0.21", - "hi": "vosk-model-hi-0.22", - "it": "vosk-model-it-0.22", - "ja": "vosk-model-ja-0.22", - "ko": "vosk-model-small-ko-0.22", - "fa": "vosk-model-fa-0.42", - "pl": "vosk-model-small-pl-0.22", - "pt": "vosk-model-pt-fb-v0.1.1-pruned", - "ru": "vosk-model-ru-0.22", - "es": "vosk-model-es-0.42", - "sv": "vosk-model-small-sv-rhasspy-0.15", - "tr": "vosk-model-small-tr-0.3", - "uk": "vosk-model-uk-v3", - "vi": "vosk-model-vn-0.4", - }, + "languages": dict(_BEST_AVAILABLE_LANGUAGES), }, }