Librería Python para interfaces multimodales accesibles - Reconocimiento de voz, gestos y comandos
Project description
==================== README.md ====================
"""
🎙️ vogo
Librería Python para interfaces multimodales accesibles
Procesa y analiza texto, voz, gestos e imágenes con reconocimiento de patrones gramaticales. Ideal para crear aplicaciones accesibles e inclusivas.
✨ Características
- 🎤 Reconocimiento de voz - Transcribe audio a texto con Google Speech Recognition
- 👁️ OCR de imágenes - Extrae texto de imágenes usando Tesseract
- ✋ Procesamiento de gestos - Analiza secuencias de gestos como listas
- 📝 Análisis de texto - Tokenización y matching con NLTK
- 🔍 Gramáticas personalizables - Soporta regex y gramáticas libres de contexto (CFG)
- 🌐 Multimodal - Procesa diferentes tipos de entrada con una API única
📦 Instalación
Requisitos Previos
1. Python 3.8 o superior
python --version # Debe ser >= 3.8
2. Tesseract OCR (para procesamiento de imágenes)
Windows:
- Descargar el instalador desde GitHub
- Instalar y agregar al PATH
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install tesseract-ocr
macOS:
brew install tesseract
Verificar instalación:
tesseract --version
Instalación de vogo
Opción 1: Modo desarrollo (recomendado para contribuir)
# Clonar el repositorio
git clone https://github.com/Carlos3451/vogo.git
cd vogo
# Crear entorno virtual
python -m venv env
source env/bin/activate # Linux/Mac
env\\Scripts\\activate # Windows
# Instalar en modo editable
pip install -e .
Opción 2: Desde PyPI (cuando esté publicado)
pip install vogo
Opción 3: Instalación con extras
# Con herramientas de desarrollo
pip install -e ".[dev]"
# Con documentación
pip install -e ".[docs]"
# Con todo
pip install -e ".[all]"
Verificar Instalación
# Descarga el script de verificación
python -c "from vogo import Grammar, Processor; print('✅ vogo instalado correctamente')"
🚀 Uso Rápido
Ejemplo Básico - Procesamiento de Texto
from vogo import Grammar, Processor
# Define reglas gramaticales con regex
grammar = Grammar({
'email': r'\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b',
'phone': r'\\b\\d{3}[-.]?\\d{3}[-.]?\\d{4}\\b',
'saludo': r'\\b(hola|hello|hi)\\b'
})
# Crea el procesador
processor = Processor(grammar)
# Procesa texto
texto = "Hola, mi email es contacto@ejemplo.com y mi teléfono es 555-123-4567"
resultado = processor.process_input(texto, type='text')
# Resultados
print(f"Texto: {resultado['text']}")
print(f"Tokens: {resultado['tokens']}")
print(f"Coincidencias: {resultado['matches']}")
# Output:
# Coincidencias: [
# {'type': 'saludo', 'matches': ['Hola']},
# {'type': 'email', 'matches': ['contacto@ejemplo.com']},
# {'type': 'phone', 'matches': ['555-123-4567']}
# ]
Procesamiento de Voz
from vogo import Grammar, Processor
grammar = Grammar({'comando': r'\\b(abrir|cerrar|iniciar)\\b'})
processor = Processor(grammar)
# Lee archivo de audio
with open('audio.wav', 'rb') as f:
audio_bytes = f.read()
# Procesa audio
resultado = processor.process_input(audio_bytes, type='voice')
print(f"Transcripción: {resultado['text']}")
print(f"Comandos detectados: {resultado['matches']}")
Procesamiento de Imágenes (OCR)
from vogo import Grammar, Processor
grammar = Grammar({'fecha': r'\\d{2}/\\d{2}/\\d{4}'})
processor = Processor(grammar)
# Lee imagen
with open('documento.jpg', 'rb') as f:
imagen_bytes = f.read()
# Extrae y analiza texto
resultado = processor.process_input(imagen_bytes, type='image')
print(f"Texto extraído: {resultado['text']}")
print(f"Fechas encontradas: {resultado['matches']}")
Procesamiento de Gestos
from vogo import Grammar, Processor
grammar = Grammar({'direccion': r'\\b(arriba|abajo|izquierda|derecha)\\b'})
processor = Processor(grammar)
# Lista de gestos capturados
gestos = ['arriba', 'arriba', 'derecha', 'abajo']
resultado = processor.process_input(gestos, type='gestures')
print(f"Secuencia: {resultado['tokens']}")
print(f"Direcciones: {resultado['matches']}")
📚 Documentación Completa
Clase Grammar
Define las reglas gramaticales para el análisis.
from vogo import Grammar
# Gramática con regex
grammar_regex = Grammar(
rules={
'numero': r'\\d+',
'palabra': r'\\w+'
},
type='regex' # Por defecto
)
# Gramática libre de contexto (CFG)
grammar_cfg = Grammar(
rules={
'expr': 'NUMBER "+" NUMBER',
'NUMBER': '/\\d+/'
},
type='cfg'
)
Parámetros:
rules(Dict[str, str]): Diccionario con nombre_regla → patróntype(str): 'regex' o 'cfg'
Clase Processor
Procesador principal para todas las modalidades.
from vogo import Processor
processor = Processor(grammar)
# Procesa diferentes tipos de entrada
resultado = processor.process_input(
input=data, # str, List[str], o bytes
type='text' # 'text', 'voice', 'gestures', 'image', 'video'
)
Tipos soportados:
text: Texto plano (str)voice: Audio en bytes (requiere formato compatible con SpeechRecognition)gestures: Lista de stringsimage: Imagen en bytes (JPG, PNG, etc.)video: Video en bytes (extrae frames y aplica OCR)
Resultado:
{
'text': str, # Texto procesado
'tokens': List[str], # Lista de tokens/palabras
'matches': List[Dict], # Coincidencias gramaticales
'stats': {
'token_count': int, # Total de tokens
'match_count': int, # Total de coincidencias
'unique_tokens': int # Tokens únicos
}
}
🎯 Casos de Uso
1. Asistente de Voz Accesible
# Comandos para personas con movilidad reducida
grammar = Grammar({
'accion': r'\\b(encender|apagar|abrir|cerrar)\\b',
'dispositivo': r'\\b(luz|puerta|ventana|televisor)\\b'
})
processor = Processor(grammar)
# Usuario dice: "encender luz"
audio = grabar_audio()
resultado = processor.process_input(audio, type='voice')
if resultado['matches']:
ejecutar_comando(resultado['matches'])
2. Lector de Documentos para Ciegos
# Extrae información de documentos impresos
grammar = Grammar({
'monto': r'\\$\\d+\\.\\d{2}',
'fecha': r'\\d{2}/\\d{2}/\\d{4}'
})
processor = Processor(grammar)
# Foto de una factura
with open('factura.jpg', 'rb') as f:
resultado = processor.process_input(f.read(), type='image')
# Convierte a voz con text-to-speech
hablar(f"Total: {resultado['matches'][0]['matches'][0]}")
3. Control por Gestos
# Navegación para personas con discapacidad auditiva
grammar = Grammar({'navegacion': r'\\b(menu|atras|siguiente|inicio)\\b'})
processor = Processor(grammar)
gestos_detectados = capturar_gestos_camara()
resultado = processor.process_input(gestos_detectados, type='gestures')
navegar(resultado['matches'])
🧪 Testing
# Instalar dependencias de desarrollo
pip install -e ".[dev]"
# Ejecutar tests
pytest tests/
# Con cobertura
pytest --cov=vogo tests/
# Tests específicos
pytest tests/test_grammar.py
🛠️ Desarrollo
Estructura del Proyecto
vogo/
├── src/
│ └── vogo/
│ ├── __init__.py
│ ├── grammar.py
│ ├── processor.py
│ ├── base_processor.py
│ ├── text_processor.py
│ ├── voice_processor.py
│ ├── image_processor.py
│ └── utils.py
├── tests/
│ ├── test_vogo_completo.py
├── docs/
├── probar_vogo_rapido.py
├── setup.py
├── README.md
└── LICENSE
📋 Dependencias
Obligatorias
nltk>=3.8.1- Tokenización y procesamiento de lenguaje naturallark>=1.1.7- Parsing de gramáticas CFGPillow>=10.0.0- Procesamiento de imágenespytesseract>=0.3.10- OCR (extracción de texto de imágenes)SpeechRecognition>=3.10.0- Reconocimiento de voz
Sistema
Tesseract OCR- Motor de OCR (instalación externa requerida)
🤝 Accesibilidad
vogo está diseñado pensando en la inclusión:
- ♿ Interfaces multimodales - Múltiples formas de interacción
- 🎤 Comandos por voz - Para personas con movilidad reducida
- 👁️ OCR - Lee texto impreso para personas con discapacidad visual
- ✋ Gestos - Alternativa para personas con discapacidad auditiva
- 📖 Documentación clara - Ejemplos paso a paso
📄 Licencia
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
👤 Autor
Carlos3451
- Email: qarlos123@outlook.com
- GitHub: @Carlos3451
⭐ ¿Te gusta vogo?
Si este proyecto te resulta útil, considera darle una estrella ⭐ en GitHub.
¡Gracias por usar vogo! 🎉 """
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vogo-0.1.0.tar.gz.
File metadata
- Download URL: vogo-0.1.0.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75d445f99cf73e0cee2489bf3a19d08641e0434b5b17fbd5a5b679a7b1009dd8
|
|
| MD5 |
09db9384c75cdca0aec34ad8c0c1f0c1
|
|
| BLAKE2b-256 |
3306821b4a285f6303e33cfff80181a17896982410a1903c7fc4c4ec9edf5d64
|
File details
Details for the file vogo-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vogo-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
866e073dd2834d99a714686ee8ec9016d92a80041f7ff6e368e074ec6b22b30c
|
|
| MD5 |
69aa262eba49989826da57f5a4be10ef
|
|
| BLAKE2b-256 |
47501c0320a67b9d3363d15ab32f2e28c654196654e1f535ca677bcb5c3dfda8
|