Control por voz local: la alternativa a Google Assistant

Fuentes: My Journey to a reliable and enjoyable locally hosted voice assistant

Este artículo describe el viaje de un usuario (Crzynik) para crear un asistente de voz local y fiable en su hogar, utilizando Home Assistant. La motivación principal fue la creciente insatisfacción con Google Assistant (debido a su rendimiento decreciente y preocupaciones de privacidad) y el deseo de tener un sistema de control por voz completamente local, sin depender de servicios en la nube.

El sistema se basa en Home Assistant (HA), un sistema de automatización del hogar de código abierto. Crzynik ha reemplazado la integración con Google Home por una solución completamente local, utilizando 'Assist' de Home Assistant, impulsado por 'llama.cpp' (anteriormente 'Ollama') para el procesamiento del lenguaje natural. Esto permite que el asistente de voz comprenda y responda a comandos sin enviar datos a servidores externos.

La configuración es compleja y requiere hardware específico: un servidor Home Assistant (ejecutándose en un UnRaid NAS), un mini-PC Beelink con USB4 y un recinto eGPU USB4 para albergar una GPU potente (como una RTX 3090 o RX 7900XTX). La GPU es crucial para el rendimiento, con modelos más grandes requiriendo más potencia de procesamiento. También se utilizan 'Voice Preview Edition' de Home Assistant y dispositivos Pixel 7a como hubs de voz.

El artículo detalla la importancia de elegir el modelo de lenguaje adecuado. Los modelos más pequeños (4B) son suficientes para tareas básicas, mientras que modelos más grandes (20B-30B) ofrecen mejor comprensión del contexto, manejo de comandos ambiguos y capacidad de realizar llamadas a herramientas (como buscar información meteorológica o realizar búsquedas web). Se proporcionan tablas comparativas de diferentes modelos y GPUs, mostrando el impacto en el tiempo de respuesta.

Crzynik también comparte mejoras implementadas, como la optimización de los prompts para reducir el uso de tokens, la corrección automática de errores de transcripción y la mejora del manejo de solicitudes poco claras. Además, se mencionan integraciones como 'LLM Conversation' y 'LLM Intents' para mejorar la experiencia del usuario y ampliar las funcionalidades de Assist. El artículo concluye enfatizando que el objetivo no es proporcionar una receta exacta, sino compartir las lecciones aprendidas y ofrecer una guía para aquellos que deseen explorar la creación de un asistente de voz local.