Conversaciones de voz y visión con IA 100% local en tu máquina. Adaptado de macOS a Windows con Ollama, Whisper y Kokoro TTS. Optimizado para español con soporte para compartir pantalla.
Estado actual: Prototipo funcional. Conversaciones básicas operativas con latencia moderada y soporte multi-idioma.
| Componente | Original (macOS) | Windows Edition |
|---|---|---|
| Motor LLM | litert-lm (Apple GPU) |
Ollama (multiplataforma) |
| Modelo | gemma-4-E2B (.litertlm) |
gemma4:e2b (Ollama) |
| TTS | mlx-audio (Apple Silicon) |
kokoro-onnx (CPU) |
| Visión | Nativa via LiteRT | Via Ollama API |
faster-whispertranscribe audio en ~1 segundo- Detección automática de idioma (español, inglés, italiano, etc.)
- Funciona en CPU sin GPU CUDA
- Respuesta prioritaria en español — El sistema detecta automáticamente cuando el usuario habla en español y fuerza respuestas exclusivas en ese idioma.
- System prompt dinámico reforzado — Instrucciones explícitas que previenen respuestas en inglés: "EL USUARIO TE ESTÁ HABLANDO EN ESPAÑOL. DEBES RESPONDER EXCLUSIVAMENTE EN ESPAÑOL."
- Whisper configurado para español — Transcripción forzada con
language="es"yinitial_prompten español para mayor precisión. - TTS con voz nativa hispana —
ef_dora(Kokoro, español) yes-MX-DaliaNeural(Edge-TTS fallback, voz mexicana profesional). - Historial con contexto lingüístico — Mantiene los últimos 20 intercambios para consistencia en idioma y tema.
- Soporte multi-idioma extendido — También funciona en inglés, italiano, francés y más (detección automática).
- Envío de imágenes a Ollama en cada turno
- Compartir pantalla — Muestra tu pantalla completa en vez de la cámara
- Descripción contextual de lo que ve la cámara o pantalla
- Combinación audio + imagen para respuestas ricas
- Kokoro-ONNX genera voz en streaming (frase por frase)
- Primera frase suena antes de que termine la respuesta completa
- Fallback a Edge-TTS si Kokoro falla
- Cámara en vivo con efectos de glow dinámicos
- Visualización de ondas de audio
- Transcripción en tiempo real
- Detección automática de voz (VAD) — manos libres
- Barge-in: puedes interrumpir la AI hablando
| Etapa | Primera vez | Subsiguientes |
|---|---|---|
| Whisper (STT) | ~1.2s | ~1.0s |
| LLM (Ollama) | ~15-20s | ~2-4s |
| TTS (Kokoro) | ~3-5s | ~3-4s |
| Total | ~20-30s | ~6-10s |
Esta base de visión local + análisis inteligente + alerta por voz se adapta a entornos reales donde los datos nunca salen de la red:
| Caso | Ejemplo |
|---|---|
| Asistente Personal | "¿Qué tengo pendiente hoy?" |
| Práctica de Idiomas | Conversación fluida en español/inglés |
| Accesibilidad | Interacción por voz para discapacidad visual |
| Educación | Tutor conversacional local |
| Monitor de Seguridad | Alerta cuando detecta personas o cambios |
| Caso | Ejemplo |
|---|---|
| Control de Calidad | Detecta defectos en línea de producción |
| Mantenimiento Industrial | Lee indicadores y detecta fallas en equipos |
| Supervisor de EPP | Verifica uso de equipo de protección |
| Análisis de Pantalla | Debugging de código consultando a la IA |
Browser (mic + camera/screen)
│
│ WebSocket (audio WAV base64 + JPEG base64)
▼
FastAPI server (Python)
│
├── Whisper (faster-whisper, CPU)
│ └── Transcribe audio → texto
│
├── Ollama API (localhost:11434)
│ └── Gemma 4:2b con GPU (RTX 4050)
│ └── Genera respuesta de texto
│
└── Kokoro TTS (ONNX Runtime, CPU)
└── Convierte texto → audio
│
│ WebSocket (audio chunks PCM base64)
▼
Browser (playback + transcript)
La interfaz usa un estilo dark-mode moderno con cámara en vivo, waveform animado, transcripción tipo chat e indicadores de estado con glow dinámico (verde → listening, ámbar → processing, índigo → speaking).
1. Usuario habla → VAD detecta inicio de voz
2. VAD captura audio → Whisper transcribe (~1s)
3. Imagen de cámara/pantalla capturada → Envío via WebSocket
4. Ollama genera respuesta → Texto + imágenes (~2-20s)
5. TTS convierte texto → audio en streaming
6. Primera frase suena antes de completar respuesta
7. Usuario puede interrumpir hablando (barge-in)
8. Historial actualizado → Persiste entre sesiones
- Python 3.12 (exacto)
- Ollama instalado con modelo
gemma4:e2b - Windows 10/11 con NVIDIA RTX (recomendado)
- ~8 GB RAM libre
ollama list
# Debes ver: gemma4:e2bconda create -n parlor python=3.12 -y
conda activate parlorcd C:\Users\EdwinQuintero\Documents\Anaconda 3\parlor\parlor_2\src
pip install -e .python server.pyPermite cámara y micrófono, ¡y habla!
| Variable | Default | Descripción |
|---|---|---|
OLLAMA_BASE_URL |
http://localhost:11434 |
URL del servidor Ollama |
OLLAMA_MODEL |
gemma4:e2b |
Modelo Ollama a usar |
PORT |
8000 |
Puerto del servidor |
set OLLAMA_MODEL=gemma3:4b
set PORT=8080
python server.pyProblema: La primera interacción tarda ~20 segundos, las subsiguientes ~3s.
Causa:
- Carga inicial del modelo en memoria de GPU
- Primera inferencia requiere warm-up de Ollama
Posibles soluciones:
- Precarga del modelo: Enviar petición dummy al iniciar servidor
- Modelo más ligero: Probar
gemma3:4bollama3.2:3b - Mantener modelo activo: Evitar que Ollama descargue el modelo
Problema: A veces responde en inglés aunque le hables en español.
Causa:
- Gemma 4 tiende al inglés por defecto
- Detección heurística no cubre todos los casos
Estado actual:
- ✅ Detecta español con palabras clave
- ✅ Agrega instrucción explícita al system prompt
- ❌ No funciona 100% consistente
Posibles soluciones:
- Prompt más agresivo:
"RESPONDE EXCLUSIVAMENTE EN ESPAÑOL. No uses inglés." - Modelo con mejor soporte español:
qwen2.5:7bollama3.2:3b - Traducción post-LLM: Si detecta inglés, traducir respuesta
Problema: faster-whisper no funciona con GPU por falta de cublas64_12.dll.
Causa: CUDA Toolkit no instalado o configuración incompleta.
Posibles soluciones:
- Instalar CUDA Toolkit 12.x: https://developer.nvidia.com/cuda-downloads
- Usar
whisper.cpp: Alternativa con mejor soporte Windows GPU - Mantener CPU: ~1s es aceptable para muchos casos
Evaluación de alternativas:
| Modelo | Tamaño | GPU VRAM | Velocidad | Multi-idioma | Visión |
|---|---|---|---|---|---|
gemma4:e2b |
7.2 GB | 6 GB | ⚡⚡⚡ | ✅ Sí | |
gemma3:4b |
3.3 GB | 4 GB | ⚡⚡⚡⚡ | ✅ Bueno | ✅ Sí |
qwen2.5:7b |
4.7 GB | 6 GB | ⚡⚡⚡ | ✅ Excelente | ❌ No |
llama3.2-vision |
3 GB | 4 GB | ⚡⚡⚡⚡ | ✅ Bueno | ✅ Sí |
llama3.2:3b |
2 GB | 2 GB | ⚡⚡⚡⚡⚡ | ❌ No |
Recomendación a probar:
llama3.2-vision— Balance velocidad/visión/multi-idiomagemma3:4b— Más rápido que gemma4 con buena capacidad
Problema: Kokoro usa af_heart (voz femenina) por defecto.
Posibles soluciones:
- Agregar selección de voces: Kokoro tiene 10+ voces disponibles
- Integrar Edge-TTS: Voces masculinas/femeninas de Azure
- Voz configurable: Parámetro en UI o
.env
Problema: Whisper a veces transcribe frases incompletas.
Causa: VAD del navegador corta audio demasiado pronto.
Posibles soluciones:
- Ajustar VAD:
redemptionMs,minSpeechMsen frontend - Whisper con context: Usar audio previo como contexto
- Punctuation restoration: Modelo que añade puntuación
- Indicador de idioma: Mostrar "🇪🇸 Español" o "🇬🇧 English" en UI
- Selector de voz: Dropdown para elegir voz del TTS
- Configuración de cámara: Resolución, flip horizontal
- Historial persistente: Guardar conversaciones entre sesiones
- Modo oscuro/claro: Toggle de tema visual
- Memoria a largo plazo: Recordar conversaciones previas
- RAG con documentos: Cargar PDFs/TXT para consultas
- Múltiples cámaras: Soporte para cámara frontal + trasera
- Modo offline total: Sin dependencia de internet
- Grabación de conversaciones: Exportar audio + texto
- GPU para Whisper: Instalar CUDA correctamente
- Streaming de LLM: Token por token en vez de respuesta completa
- Cache de respuestas: Respuestas frecuentes en cache
- Compresión de imágenes: JPEG con menor calidad para velocidad
- Batch processing: Múltiples frases en un solo request
Los números de latencia están en la tabla "Latencia Optimizada" más arriba. Para medir en tu entorno:
# Iniciar servidor
python server.py
# En otra terminal — benchmark end-to-end
python benchmarks/bench.py
# Benchmark solo TTS
python benchmarks/benchmark_tts.pyparlor_2/
├── src/
│ ├── server.py # FastAPI + Ollama + Whisper + TTS
│ ├── tts.py # Kokoro-ONNX + Edge-TTS fallback
│ ├── index.html # Frontend (VAD, cámara, audio)
│ ├── pyproject.toml # Dependencias
│ └── benchmarks/
│ ├── bench.py # Benchmark WebSocket
│ └── benchmark_tts.py # Benchmark TTS
├── models/
│ └── whisper/ # Whisper descargado automáticamente
├── .env.example # Variables de entorno
├── .gitignore
└── README.md
ollama list
ollama serve # Si no está corriendo# Verificar instalación
python -c "from faster_whisper import WhisperModel; print('OK')"
# Reinstalar si hay errores
pip install --force-reinstall faster-whisper# Kokoro falla, instalar fallback
pip install edge-tts
# El servidor usará edge-tts automáticamente# Verificar que Ollama usa GPU
ollama run gemma4:e2b "test"
# Revisar Task Manager → Performance → GPU- Original: Parlor por Fikri Karim
- Ollama: https://ollama.com — Serving local models
- Gemma 4: https://ai.google.dev/gemma — Google DeepMind
- Whisper: https://github.com/openai/whisper — OpenAI
- faster-whisper: https://github.com/SYSTRAN/faster-whisper — SYSTRAN
- Kokoro: https://huggingface.co/hexgrad/Kokoro-82M — Hexgrad
- Silero VAD: https://github.com/snakers4/silero-vad
Apache 2.0 — Mismo proyecto original
- ✅ Migración completa de macOS a Windows
- ✅ Integración con Ollama para LLM
- ✅ Transcripción de voz con
faster-whisper - ✅ Detección automática de idioma
- ✅ Respuestas multi-idioma (español/inglés)
- ✅ Visión funcional con cámara en vivo
- ✅ TTS con Kokoro-ONNX
- ✅ Latencia optimizada (~7s en respuestas subsequentes)
⚠️ Intento inicial conllama-cpp-python(abandonado)⚠️ Problemas de compilación y compatibilidad
- 📋 Port básico de macOS a Windows
- ❌ Sin STT, sin multi-idioma, sin visión funcional
