diff --git a/README.md b/README.md index 09131a0..9d84526 100644 --- a/README.md +++ b/README.md @@ -165,8 +165,11 @@ pip install --user vosk pydub sounddevice wget # Modo interactivo básico (español por defecto) bin/claude_voice.py -# Especificar idioma (inglés) -bin/claude_voice.py --language en-US +# Ver idiomas soportados +bin/claude_voice.py --list-languages + +# Usar idioma específico (inglés) +bin/claude_voice.py --language en-us # Modo continuo (escucha hasta que digas "salir") bin/claude_voice.py --continuous diff --git a/bin/claude_voice.py b/bin/claude_voice.py index fffdd83..48966da 100755 --- a/bin/claude_voice.py +++ b/bin/claude_voice.py @@ -71,12 +71,24 @@ def download_model(language="es"): # Mapeo de códigos de idioma estándar a formato de Vosk language_map = { "es-ES": "es", + "es-AR": "es", + "es-MX": "es", + "es-CO": "es", + "es": "es", "en-US": "en-us", + "en-GB": "en-us", + "en": "en-us", "fr-FR": "fr", + "fr": "fr", "de-DE": "de", + "de": "de", "it-IT": "it", + "it": "it", "pt-PT": "pt", - "ru-RU": "ru" + "pt-BR": "pt", + "pt": "pt", + "ru-RU": "ru", + "ru": "ru" } # Obtener código de idioma para Vosk @@ -305,14 +317,42 @@ def list_audio_devices(): return True +def get_supported_languages(): + """Devuelve una lista de idiomas soportados""" + return { + "es": "Español", + "en-us": "Inglés (EEUU)", + "fr": "Francés", + "de": "Alemán", + "it": "Italiano", + "pt": "Portugués", + "ru": "Ruso" + } + +def list_languages(): + """Muestra una lista de idiomas soportados""" + languages = get_supported_languages() + + print(f"{Colors.BLUE}[Claude Voice]{Colors.END} {Colors.GREEN}Idiomas soportados:{Colors.END}") + print(f"{Colors.CYAN}{'Código':<8} {'Idioma':<20}{Colors.END}") + print("-" * 30) + + for code, name in languages.items(): + print(f"{code:<8} {name:<20}") + + # Mostrar información sobre los alias + print(f"\n{Colors.YELLOW}Nota: Todos los códigos regionales (es-ES, es-AR, etc.) se mapean al idioma base (es).{Colors.END}") + return True + def main(): parser = argparse.ArgumentParser(description='Claude Code Voice - Convierte voz a texto para Claude Code usando reconocimiento local') - parser.add_argument('-l', '--language', default='es-ES', help='Idioma para reconocimiento (ej. es-ES, en-US)') + parser.add_argument('-l', '--language', default='es', help='Idioma para reconocimiento (ej. es, en-us)') parser.add_argument('-c', '--continuous', action='store_true', help='Modo continuo - escucha constantemente hasta que digas "salir"') parser.add_argument('-t', '--text', help='Texto a enviar directamente (sin reconocimiento de voz)') parser.add_argument('-s', '--silent', action='store_true', help='Modo silencioso - no muestra mensajes extra') parser.add_argument('-d', '--device', type=int, help='ID del dispositivo de audio a utilizar') parser.add_argument('--list-devices', action='store_true', help='Listar dispositivos de audio disponibles') + parser.add_argument('--list-languages', action='store_true', help='Listar idiomas soportados') parser.add_argument('--install-deps', action='store_true', help='Instalar dependencias') args = parser.parse_args() @@ -356,6 +396,11 @@ def main(): if args.list_devices: list_audio_devices() return + + # Listar idiomas si se solicita + if args.list_languages: + list_languages() + return # Enviar texto directo si se proporciona if args.text: