Asistente de voz local para automatización del hogar
Qué cubre este artículo
- Cómo construir un asistente de voz completamente local.
- Whisper (STT) + Ollama (comprensión) + Piper (TTS).
- Cómo conectar el asistente con Home Assistant.
- Ejemplos prácticos para iluminación, clima, música y seguridad.
- Buenas prácticas para latencia, precisión y privacidad.
Introducción: Asistente de voz local explicado
Un asistente de voz local comprende comandos de voz sin la nube: hablas, Whisper transcribe, Ollama entiende y decide, Piper responde. Ningún dato sale de tu red, a diferencia de Alexa o Google Home.
Este artículo está dirigido a usuarios que deseen construir un asistente de voz local. Los fundamentos los encontrarás en Home Assistant con IA y Asistentes de voz.
¿Por qué necesito un asistente de voz local?
Alexa y Google Home envían tus comandos de voz a la nube. Un asistente local procesa todo en tu servidor: “enciende la luz” se transcribe, entiende y ejecuta localmente. Sin datos hacia afuera, sin publicidad, control total.
Cómo funciona un asistente de voz local
Micrófono → Whisper (STT) → Ollama (LLM) → Home Assistant (acción) → Piper (TTS) → Altavoz. Todo local, sin nube.
La idea central es: control por voz sin transferencia de datos.
Para quién es este artículo
- Conscientes de privacidad que no quieren asistentes de voz en la nube.
- Entusiastas de automatización del hogar que construyen control por voz local.
- Usuarios de Home Assistant que quieren usar Assist localmente.
- Hackers que construyen asistentes de voz personalizados.
Términos clave
- Whisper - Speech-to-Text de OpenAI (local). Cuándo es útil: para entrada de voz.
- Ollama - Servidor de modelos local. Cuándo es útil: para comprensión.
- Piper - Text-to-Speech (local). Cuándo es útil: para salida de voz.
- Wyoming - Protocolo para servicios de voz. Cuándo es útil: para integración.
- Home Assistant - Plataforma de automatización del hogar. Cuándo es útil: para acciones.
- Assist - Asistente de voz de HA. Cuándo es útil: para la tubería.
Arquitectura
Entrada de voz (micrófono)
│
▼
Whisper (STT) ──► "Enciende la luz"
│
▼
Ollama (LLM) ──► Entiende: light.turn_on
│
▼
Home Assistant ──► Ejecuta: luz encendida
│
▼
Piper (TTS) ──► "La luz está encendida"
│
▼
Salida de voz (altavoz)
Configuración: Asistente de voz completamente local
1. Stack Docker
version: "3.8"
services:
whisper:
image: rhasspy/wyoming-whisper:latest
ports:
- "10300:10300"
volumes:
- whisper_data:/data
command: --model small --language de
networks:
- voice
piper:
image: rhasspy/wyoming-piper:latest
ports:
- "10200:10200"
volumes:
- piper_data:/data
command: --voice de_DE-thorsten-high
networks:
- voice
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
networks:
- voice
homeassistant:
image: homeassistant/home-assistant:latest
ports:
- "8123:8123"
volumes:
- ha_config:/config
networks:
- voice
volumes:
whisper_data:
piper_data:
ollama_data:
ha_config:
networks:
voice:
driver: bridge
2. Configurar Home Assistant
# configuration.yaml
# Integración Wyoming para Whisper y Piper
# Ollama como agente de conversación
ollama:
url: http://ollama:11434
En la UI:
- Settings → Devices & Services → Add Integration → Wyoming
- Whisper:
http://whisper:10300 - Piper:
http://piper:10200
- Whisper:
- Settings → Voice Assistants → Assist
- STT: Whisper
- Conversation Agent: Ollama
- TTS: Piper
3. Satélite (micrófono + altavoz)
Para entrada de voz necesitas un satélite:
# ESP32-S3 con Micro Wake Word
# O: Raspberry Pi con ReSpeaker
# O: Wyoming Satellite en Linux
Ejemplo práctico 1: Comandos simples
# En Home Assistant: comandos Assist
automation:
- alias: "Enciende la luz"
trigger:
- platform: conversation
command:
- "Enciende la luz"
- "Luz encendida"
- "Enciende las luces"
action:
- service: light.turn_on
target:
area_id: wohnzimmer
Ejemplo práctico 2: Comandos basados en contexto
automation:
- alias: "Comando de contexto de IA"
trigger:
- platform: conversation
command:
- "Ponlo acogedor"
- "Ambiente acogedor"
action:
- service: light.turn_on
data:
brightness: 128
color_temp: 300
- service: media_player.play_media
data:
media_content_type: music
media_content_id: "playlist acogedora"
- service: climate.set_temperature
data:
temperature: 22
Ejemplo práctico 3: Responder preguntas
automation:
- alias: "Pregunta a la IA"
trigger:
- platform: conversation
command:
- "Cómo está el clima"
- "Cuál es la temperatura"
action:
- service: ollama.generate
data:
prompt: |
Datos actuales:
- Temperatura exterior: {{ states('sensor.aussentemperatur') }}°C
- Clima: {{ states('weather.home') }}
- Humedad: {{ states('sensor.luftfeuchtigkeit') }}%
Responde la pregunta: "{{ trigger.command }}"
Brevemente y amablemente.
response_variable: antwort
- service: tts.speak
data:
message: "{{ antwort.text }}"
media_player_entity_id: media_player.kueche
Ejemplo práctico 4: Comandos complejos
automation:
- alias: "Comando complejo de IA"
trigger:
- platform: conversation
command:
- "Baja las persianas cuando brille el sol"
action:
- condition:
- condition: sun
before: sunset
after: sunrise
- service: cover.close_cover
target:
entity_id: cover.wohnzimmer
Notas de seguridad
- Todo local: Ningún dato de voz sale de tu red.
- Validación: Acciones críticas (abrir puerta) deben requerir confirmación.
- Acceso al micrófono: Solo dispositivos autorizados pueden acceder.
- Registro: Registra comandos para depuración.
Errores comunes
- Latencia: Whisper + Ollama necesitan 3-7 segundos. Para respuestas más rápidas, usa modelos más pequeños.
- Idioma: Whisper small funciona bien, large es más preciso pero más lento.
- Mal interpretación: “Enciende la luz” puede afectar varios cuartos. Precisa el contexto.
- Calidad del micrófono: Micrófono pobre significa transcripción pobre.
- Ruido de fondo: El ruido perturba el reconocimiento. Buen micrófono más buena posición.
Enlaces relacionados
- Home Assistant con IA - HA + Ollama.
- Agente de automatización del hogar - Agentes de IA.
- Asistentes de voz - Descripción general.
- Whisper - Modelos STT.
- Ollama - Servidor de modelos.
- Node-RED Home Assistant - Para flujos complejos.
Puntos clave:
- Asistente de voz local: Whisper + Ollama + Piper, completamente offline.
- Sin datos que salgan de tu red, a diferencia de Alexa o Google.
- Home Assistant como capa de acciones, Assist como tubería.
- Para usuarios de automatización del hogar conscientes de privacidad.
- Latencia de 3-7 segundos, según el modelo y hardware.
FAQ
¿Qué es un asistente de voz local?
¿Local o Alexa?
¿Qué hardware necesito?
¿Qué tan rápida es la respuesta?
¿Funciona bien el alemán?
¿Están seguros mis datos de voz?
¿Funciona sin conexión?
¿Qué pasa si el asistente entiende mal?
Fuentes y lecturas adicionales
- Whisper - Speech-to-Text.
- Piper - Text-to-Speech.
- Home Assistant Assist - Asistente de voz.
- Ollama - Servidor de modelos.


