fix(vosk): add missing Italian and English-India entries to medium/large model tables (#551)
Fixes #550. Root cause: VOSK_MODEL_INFO["medium"]["languages"] and VOSK_MODEL_INFO["large"]["languages"] in vosk_model_info.py were missing entries for "it" (Italian) and "en-in" (English-India), even though both languages are present in the "small" table and VOSK actually publishes bigger models for them (vosk-model-it-0.22, vosk-model-en-in-0.5 at alphacephei.com/vosk/models). When a user selected Italian + the medium (or large) VOSK model, _init_vosk() built vosk_model_map["medium"] = None (via .get() on a missing key), and _get_vosk_model_path() then called os.path.join(MODELS_DIR, None), crashing with: join() argument must be str, bytes, or os.PathLike object, not 'NoneType' before any download was even attempted. This matches the exact debug log in the issue and the settings-dialog download flow the reporter exercised. Fix: - Add the missing "it"/"en-in" entries to the medium/large tables so all 10 supported languages now resolve consistently across all three sizes. - Add a guard in _get_vosk_model_path() that raises a clear ValueError ("No VOSK '<size>' model available for language '<lang>'...") instead of crashing deep inside os.path.join, so any future data gap fails loudly and helpfully rather than with a cryptic TypeError.
This commit is contained in:
@@ -1824,6 +1824,13 @@ class SpeechRecognitionManager:
|
||||
"""Get the path to the VOSK model based on the selected size and language."""
|
||||
model_name = self.vosk_model_map.get(self.model_size, self.vosk_model_map["small"])
|
||||
|
||||
if not model_name:
|
||||
vosk_language = "en-us" if self.language == "auto" else self.language
|
||||
raise ValueError(
|
||||
f"No VOSK '{self.model_size}' model available for language '{vosk_language}'. "
|
||||
"Try the 'small' model size or a different language."
|
||||
)
|
||||
|
||||
# First, check user's local models directory
|
||||
user_model_path = os.path.join(MODELS_DIR, model_name)
|
||||
if os.path.exists(user_model_path):
|
||||
|
||||
@@ -78,8 +78,10 @@ VOSK_MODEL_INFO = {
|
||||
"desc": "Balanced accuracy/speed",
|
||||
"languages": {
|
||||
"en-us": "vosk-model-en-us-0.22",
|
||||
"en-in": "vosk-model-en-in-0.5",
|
||||
"fr": "vosk-model-fr-0.22",
|
||||
"de": "vosk-model-de-0.21",
|
||||
"it": "vosk-model-it-0.22",
|
||||
"ru": "vosk-model-ru-0.22",
|
||||
"hi": "vosk-model-hi-0.22",
|
||||
"es": "vosk-model-es-0.42",
|
||||
@@ -92,8 +94,10 @@ VOSK_MODEL_INFO = {
|
||||
"desc": "Same as medium (best available)",
|
||||
"languages": {
|
||||
"en-us": "vosk-model-en-us-0.22",
|
||||
"en-in": "vosk-model-en-in-0.5",
|
||||
"fr": "vosk-model-fr-0.22",
|
||||
"de": "vosk-model-de-0.21",
|
||||
"it": "vosk-model-it-0.22",
|
||||
"ru": "vosk-model-ru-0.22",
|
||||
"hi": "vosk-model-hi-0.22",
|
||||
"es": "vosk-model-es-0.42",
|
||||
|
||||
Reference in New Issue
Block a user