{
  "markdown": "# 🏠 Home Assistant Voice Control\n\nSistema de control por voz para Home Assistant con latencia ultra-baja (<300ms) para domótica y capacidad de razonamiento profundo para consultas complejas.\n\n## ✨ Características\n\n- **Latencia <300ms** para comandos de domótica\n- **Wake word** personalizable (\"Hey Jarvis\")\n- **Base vectorial** sincronizada con Home Assistant\n- **Creación de rutinas por voz**\n- **Razonamiento profundo** con LLM 70B para consultas complejas\n- **TTS natural** con Piper o XTTS\n- **Multi-usuario** con contexto separado y cola priorizada\n- **Spotify avanzado** con interpretación de contexto (\"música para cocinar\")\n\n## 🖥️ Hardware del Sistema\n\n### Especificaciones Completas\n\n| Componente | Modelo | Especificaciones |\n|------------|--------|------------------|\n| **CPU** | AMD Threadripper PRO 9965WX | 24 cores/48 threads, Zen 5, 4.2-5.4 GHz, 128MB L3 |\n| **Motherboard** | ASUS Pro WS WRX90E-SAGE SE | WRX90, 8 canales DDR5, 128 PCIe 5.0 lanes |\n| **RAM** | A-Tech 128GB (2x64GB) | DDR5-5600 RDIMM ECC, expandible a 512GB |\n| **GPU 0** | NVIDIA RTX 3070 | 8GB VRAM - Speech-to-Text |\n| **GPU 1** | NVIDIA RTX 3070 | 8GB VRAM - Embeddings/RAG |\n| **GPU 2** | NVIDIA RTX 3070 | 8GB VRAM - Router/Clasificador |\n| **GPU 3** | NVIDIA RTX 3070 | 8GB VRAM - Text-to-Speech |\n| **PSU** | 1600W+ recomendado | 80+ Platinum (CPU 350W + 4×GPU 220W) |\n\n### Distribución de Recursos\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│  CPU: Threadripper PRO 9965WX (24 cores)                        │\n│  └─ LLM 70B Inference (llama.cpp, 24 threads)                   │\n│  └─ ~45GB RAM para modelo Q4_K_M                                │\n├─────────────────────────────────────────────────────────────────┤\n│  RAM: 128GB DDR5-5600 RDIMM ECC (2 canales activos)             │\n│  └─ LLM: ~45GB                                                  │\n│  └─ ChromaDB: ~2-5GB                                            │\n│  └─ OS + Buffers: ~10GB                                         │\n│  └─ Disponible: ~60GB                                           │\n├─────────────────────────────────────────────────────────────────┤\n│  GPU 0 (cuda:0): STT                                            │\n│  └─ Faster-Whisper Large-v3: ~4GB VRAM                          │\n├─────────────────────────────────────────────────────────────────┤\n│  GPU 1 (cuda:1): Embeddings                                     │\n│  └─ BGE-M3 o BGE-small: ~2GB VRAM                               │\n├─────────────────────────────────────────────────────────────────┤\n│  GPU 2 (cuda:2): Router                                         │\n│  └─ Qwen2.5-7B-Instruct: ~6GB VRAM                              │\n├─────────────────────────────────────────────────────────────────┤\n│  GPU 3 (cuda:3): TTS                                            │\n│  └─ Piper: ~500MB VRAM                                          │\n│  └─ XTTS-v2 (opcional): ~4GB VRAM                               │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n### Expansión Futura de RAM\n\n| Configuración | Capacidad | Canales | Ancho de Banda |\n|---------------|-----------|---------|----------------|\n| Actual (2x64GB) | 128GB | 2 de 8 | ~102 GB/s |\n| Fase 2 (4x64GB) | 256GB | 4 de 8 | ~205 GB/s |\n| Máximo (8x64GB) | 512GB | 8 de 8 | ~358 GB/s |\n\n> **Nota**: Más RAM permite correr modelos más grandes (Llama 405B) o múltiples modelos simultáneos.\n\n## 🚀 Instalación\n\n**Requiere Python 3.13** (vLLM constraint: < 3.14). Verificar con `python3 --version`.\n\n### 1. Clonar y configurar\n\n```bash\ncd home-assistant-voice\ncp .env.example .env\n# Editar .env con tu token de Home Assistant\n```\n\n### 2. Crear entorno virtual e instalar dependencias\n\n```bash\npython3.13 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n### 3. Descargar modelos\n\n```bash\nchmod +x scripts/download_models.sh\n./scripts/download_models.sh\n```\n\n### 4. Ejecutar\n\n```bash\n# Recommended (includes environment checks, GPU verification, health check):\n./scripts/start.sh\n\n# Or directly:\npython -m src.main\n```\n\n## 🎤 Comandos de Voz\n\n### Domótica (< 300ms)\n\n- \"Prende la luz del living\"\n- \"Apaga el aire del dormitorio\"\n- \"Sube las persianas de la cocina\"\n- \"Pon el aire a 22 grados\"\n\n### Rutinas\n\n- \"Crea una rutina que cuando llegue a casa prenda las luces\"\n- \"Nueva automatización: a las 7am abre las persianas\"\n- \"¿Qué rutinas tengo?\"\n- \"Elimina la rutina de llegada\"\n\n### Sincronización\n\n- \"Sincroniza los comandos\"\n- \"Actualiza la base de datos\"\n\n### Música / Spotify\n\n- \"Pon música de Bad Bunny\"\n- \"Pon algo tranquilo\"\n- \"Música para una cena romántica\"\n- \"Pausa\" / \"Siguiente canción\"\n- \"¿Qué está sonando?\"\n\n> Ver [docs/architecture/SPOTIFY.md](docs/architecture/SPOTIFY.md) para configuración completa.\n\n## 📁 Estructura\n\n```\nhome-assistant-voice/\n├── CLAUDE.md              # Contexto para Claude Code\n├── README.md              # Este archivo\n├── requirements.txt       # Dependencias\n├── .env.example          # Variables de entorno\n├── config/\n│   └── settings.yaml     # Configuración\n├── docs/\n│   ├── ORCHESTRATOR.md   # Sistema multi-usuario\n│   └── SPOTIFY.md        # Integración Spotify\n├── src/\n│   ├── main.py           # Entry point\n│   ├── stt/              # Speech-to-Text\n│   ├── tts/              # Text-to-Speech\n│   ├── vectordb/         # ChromaDB sync\n│   ├── routines/         # Gestión de rutinas\n│   ├── home_assistant/   # Cliente HA\n│   ├── llm/              # LLM reasoner + buffering\n│   ├── orchestrator/     # Multi-usuario, cola, contexto\n│   ├── spotify/          # Integración Spotify\n│   └── pipeline/         # Pipeline principal\n├── scripts/\n│   ├── download_models.sh\n│   └── setup_spotify.py  # Configurar Spotify\n├── models/               # Modelos descargados\n└── data/\n    ├── chroma_db/        # Base vectorial\n    └── spotify_tokens.json  # Tokens OAuth\n```\n\n## ⚙️ Configuración\n\nEditar `config/settings.yaml`:\n\n```yaml\nhome_assistant:\n  url: \"http://192.168.1.100:8123\"\n  token: \"${HOME_ASSISTANT_TOKEN}\"\n\nstt:\n  model: \"distil-whisper/distil-small.en\"\n  device: \"cuda:0\"\n\ntts:\n  engine: \"piper\"  # o \"xtts\" para mejor calidad\n\nlatency_targets:\n  total: 300  # ms\n```\n\n## 📊 Latencia Esperada\n\n| Componente | Tiempo |\n|------------|--------|\n| Wake word | ~10ms |\n| STT | ~100-150ms |\n| Vector search | ~15-20ms |\n| Home Assistant | ~30-50ms |\n| TTS | ~50-80ms |\n| **TOTAL** | **~200-300ms** |\n\n## 🔧 Troubleshooting\n\n### \"No se puede conectar a Home Assistant\"\n\n1. Verifica que la URL sea correcta\n2. Verifica que el token sea válido\n3. Prueba: `curl -H \"Authorization: Bearer TU_TOKEN\" http://TU_HA:8123/api/`\n\n### \"CUDA out of memory\"\n\nReduce `gpu_memory_utilization` en settings.yaml o usa modelos más pequeños.\n\n### Latencia > 300ms\n\n1. Usa Whisper Tiny en vez de Small\n2. Usa Piper en vez de XTTS\n3. Verifica que Home Assistant esté en la red local\n\n## 📚 Documentación Adicional\n\n| Documento | Descripción |\n|-----------|-------------|\n| [CLAUDE.md](CLAUDE.md) | Contexto del proyecto para Claude Code |\n| [docs/architecture/ORCHESTRATOR.md](docs/architecture/ORCHESTRATOR.md) | Sistema multi-usuario, cola priorizada, cancelación |\n| [docs/architecture/SPOTIFY.md](docs/architecture/SPOTIFY.md) | Integración Spotify con interpretación de contexto |\n\n## 📝 Licencia\n\nMIT\n\n## 🤝 Contribuir\n\n¡PRs bienvenidos! Revisa CLAUDE.md para contexto del proyecto.\n",
  "bytes": 7386,
  "sha": "ce51f2c44164e8532172db2b580dfa28169d1cd1f2c737209785ee61c2a4473f",
  "repo_slug": "mastar02/kza",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_mastar02_kza_okf_index_md_89926ee8/readme"
}