diff --git a/bin/claude_voice.py b/bin/claude_voice.py index c63e825..fffdd83 100755 --- a/bin/claude_voice.py +++ b/bin/claude_voice.py @@ -84,7 +84,25 @@ def download_model(language="es"): if "-" in lang_code and lang_code not in language_map.values(): lang_code = lang_code.split("-")[0] - model_path = os.path.expanduser(f"~/.vosk/models/vosk-model-small-{lang_code}") + # Establecer URLs de modelos verificados + model_urls = { + "es": "https://alphacephei.com/vosk/models/vosk-model-small-es-0.42.zip", + "en-us": "https://alphacephei.com/vosk/models/vosk-model-small-en-us-0.15.zip", + "fr": "https://alphacephei.com/vosk/models/vosk-model-small-fr-0.22.zip", + "de": "https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip", + "it": "https://alphacephei.com/vosk/models/vosk-model-small-it-0.22.zip", + "pt": "https://alphacephei.com/vosk/models/vosk-model-small-pt-0.3.zip", + "ru": "https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip" + } + + # Si no hay URL para este idioma, usar el inglés como fallback + if lang_code not in model_urls: + print(f"{Colors.YELLOW}No se encontró un modelo para el idioma '{lang_code}', usando el inglés como alternativa.{Colors.END}") + lang_code = "en-us" + + # Usar el directorio de modelos con versión específica + model_name = os.path.basename(model_urls[lang_code]).replace(".zip", "") + model_path = os.path.expanduser(f"~/.vosk/models/{model_name}") if os.path.exists(model_path): return model_path @@ -97,8 +115,10 @@ def download_model(language="es"): try: # Importar wget solo cuando se necesita import wget - url = f"https://alphacephei.com/vosk/models/vosk-model-small-{lang_code}.zip" - zip_path = os.path.expanduser(f"~/.vosk/models/vosk-model-small-{lang_code}.zip") + url = model_urls[lang_code] + zip_path = os.path.expanduser(f"~/.vosk/models/{os.path.basename(url)}") + + print(f"{Colors.BLUE}[Claude Voice]{Colors.END} {Colors.YELLOW}Descargando desde: {url}{Colors.END}") # Descargar el modelo wget.download(url, zip_path) @@ -112,7 +132,7 @@ def download_model(language="es"): # Eliminar el zip os.remove(zip_path) - print(f"{Colors.BLUE}[Claude Voice]{Colors.END} {Colors.GREEN}Modelo descargado y extraído correctamente{Colors.END}") + print(f"{Colors.BLUE}[Claude Voice]{Colors.END} {Colors.GREEN}Modelo descargado y extraído correctamente en {model_path}{Colors.END}") return model_path except Exception as e: print(f"{Colors.RED}Error al descargar el modelo: {e}{Colors.END}")