1 puntos por GN⁺ 2026-03-18 | Aún no hay comentarios. | Compartir por WhatsApp
  • Un caso que organiza paso a paso el proceso de construir un asistente de voz completamente local basado en Home Assistant, dejando atrás Google Home
  • Uso de llama.cpp y una configuración local-first para lograr respuestas rápidas y privacidad sin depender de la nube
  • Se probaron varias combinaciones de GPU, modelos, STT y TTS, comparando rendimiento y calidad para llegar a la configuración óptima
  • Mediante diseño de prompts y scripts de automatización, se implementaron funciones reales de uso diario como clima, búsquedas y reproducción de música
  • Como resultado, se completó un entorno de asistente de voz local altamente confiable que además garantiza la privacidad

Configuración de hardware

  • Home Assistant se ejecuta en un UnRaid NAS, y el servidor de voz usa una Beelink MiniPC con soporte USB4 y un gabinete eGPU
    • Se probaron varios modelos de GPU, incluidos RTX 3050~3090 y RX 7900XTX
    • La RTX 3090 y la RX 7900XTX ofrecen respuestas en 1~2 segundos, mientras que la RTX 3050 responde en alrededor de 3 segundos
  • El hardware de voz está compuesto por HA Voice Preview Satellite, 2 unidades de Satellite1 Small Squircle Enclosure y un Pixel 7a

Modelos y rendimiento

  • Se probaron varios modelos, incluidos GGML GPT-OSS:20B, Unsloth Qwen3 series y GLM 4.7 Flash (30B)
  • Todos los modelos admiten la función básica de tool calling
  • Los criterios de evaluación incluyen control de múltiples dispositivos, comprensión de contexto, manejo de comandos mal reconocidos y capacidad para ignorar entradas incorrectas

Software del servidor de voz

  • Se recomienda llama.cpp como ejecutor de modelos
  • Entrada de voz (STT)
    • Wyoming ONNX ASR (Nvidia Parakeet V2, rama OpenVINO): tiempo de inferencia en CPU de alrededor de 0.3 segundos
    • Rhasspy Faster Whisper: relativamente más lento, basado en ONNX sobre CPU
  • Salida de voz (TTS)
    • Kokoro TTS: permite varias combinaciones de voz y procesa muy bien el texto
    • Piper (CPU): admite muchas voces, pero tiene debilidades con números y direcciones
  • Integración de LLM en Home Assistant
    • LLM Conversation: mejora la calidad base de la conversación
    • LLM Intents: proporciona herramientas como búsqueda web, búsqueda de lugares y pronóstico del tiempo

Transición de Google Assistant a un asistente local

  • Se reconoció la necesidad de reemplazar Google Assistant porque su precisión de respuesta y funcionalidad fueron deteriorándose
  • Los problemas de privacidad y la imposibilidad de controlar cosas cuando falla la nube también fueron factores clave para el cambio

Intentos iniciales y mejora de modelos

  • Al principio se usaron los modelos predeterminados de Ollama, pero fallaban con frecuencia en el tool calling
  • El rendimiento mejoró mucho al usar modelos GGUF de alta precisión de HuggingFace
  • Debido a la inestabilidad del Wi‑Fi, se configuraron ajustes de streaming y una red IoT dedicada para manejar la salida de voz sin cortes

Expansión de funciones y diseño de prompts para LLM

  • El asistente de voz se configuró para realizar pronóstico del tiempo, horarios comerciales, conocimiento general y reproducción de música
  • La integración llm-intents amplió las funciones, pero los resultados iniciales fueron limitados
  • El diseño de prompts funcionó como un elemento clave
    • Se mejoró la precisión del tool calling del LLM al agregar secciones # por servicio y listas de instrucciones concretas
    • Al eliminar exclamaciones y emojis innecesarios, se logró un formato de respuesta amigable para TTS
    • Se usó ChatGPT para mejorar iterativamente los prompts

Resolución de problemas con automatización

  • Como el LLM no podía realizar directamente la reproducción de música, se complementó con scripts de automatización de Home Assistant
    • La orden “Play {music}” se usa como disparador para reproducir música en el media_player correspondiente al dispositivo satélite que hizo la solicitud
    • La orden “Stop playing” permite detenerla
  • Más adelante, una actualización permitió que el LLM hiciera de forma natural la búsqueda y reproducción de música, pero la automatización sigue siendo un enfoque útil

Entrenamiento de una wake word personalizada

  • En lugar de la wake word predeterminada, se usó “Hey Robot”
  • Se entrenó durante unos 30 minutos con microWakeWord-Trainer-Nvidia-Docker
  • La tasa de falsos positivos está al nivel de Google Home, y puede mejorarse con una función de auto mute

Resultado final

  • Aunque puede ser algo complejo para el usuario promedio, se completó un entorno de asistente de voz local con capacidad de ajuste fino
  • Ofrece protección de la privacidad, control estable y ajuste de rendimiento personalizado
  • Como asistente de voz completamente independiente de la nube, logra tanto confiabilidad como disfrute

Aún no hay comentarios.

Aún no hay comentarios.