Asistente de voz local en español con Home Assistant, Whisper y una wake word

Última revisión: 29/09/2026

Altavoz inteligente casero con micrófono y una Raspberry Pi, para el artículo sobre el asistente de voz 100% local

Montar un asistente de voz que responda en español sin que el audio salga de casa se reduce a encadenar tres piezas: OpenWakeWord detecta la palabra, Whisper transcribe lo que dices y Piper convierte la respuesta en voz. Las tres corren en local y se conectan a Home Assistant por el protocolo Wyoming. Aquí está el montaje completo, con los comandos Docker y lo que no te cuentan cuando la placa se queda corta.

El pipeline, en un esquema

El flujo completo de una frase tiene seis pasos y ningún servidor externo: el micrófono capta, la wake word despierta el sistema, Whisper transcribe, Home Assistant decide la intención, Piper sintetiza la respuesta y el altavoz la reproduce.

Micrófono entrada OpenWakeWord wake word Whisper STT Home Assistant intención Piper TTS Altavoz salida

La vía rápida: Home Assistant OS y tres add-ons

Si usas Home Assistant OS (o un Home Assistant Green/Yellow), la forma más corta es instalar desde la tienda de add-ons tres piezas: Whisper, Piper y openWakeWord. Al arrancar, se registran solas mediante la integración Wyoming — Home Assistant las detecta en Ajustes > Dispositivos y servicios. Después el asistente se deja listo en Ajustes > Voz > Asistentes, eligiendo el STT Whisper y el TTS Piper del pipeline. El matiz: el add-on de Whisper descarga el modelo de transcripción en el primer arranque y puede tardar minutos.

La vía manual: contenedores Docker

En una máquina Linux cualquiera —un NAS, un mini PC o una Raspberry Pi con Docker— cada pieza es un contenedor independiente que publica su servicio Wyoming en un puerto. Los comandos usan las imágenes oficiales de rhasspy, las mismas que hay detrás de los add-ons.

Servidor STT con Whisper (anotando --language es):

docker run -d \
  --name wyoming-faster-whisper \
  -p 10300:10300 \
  -v /data/whisper:/data \
  rhasspy/wyoming-faster-whisper \
  --model medium \
  --language es

Servidor TTS con Piper (con la voz inglesa de ejemplo; para español, mira la sección siguiente):

docker run -d \
  --name wyoming-piper \
  -p 10200:10200 \
  -v /data/piper:/data \
  rhasspy/wyoming-piper \
  --voice en_US-lessac-medium

Motor de wake word con OpenWakeWord:

docker run -d \
  --name wyoming-openwakeword \
  -p 10400:10400 \
  rhasspy/wyoming-openwakeword \
  --preload-model ok_nabu

Después añades la integración Wyoming Protocol una vez por servicio y le das la IP, el puerto y la función (STT, TTS o wake word) de cada contenedor. Los tres puertos se pueden comprobar con curl http://IP:10300 y similares: cada servicio Wyoming responde una descripción propia.

Qué cambia para que todo funcione en español

No verificado a fecha de 29/09: los nombres exactos de las voces Piper en español y de los modelos de openWakeWord con soporte real de español. Lo dejo apuntado en la sección que viene; confirma contra el listado de voces de Piper y el catálogo de openWakeWord antes de copiar esos valores.

El fallo habitual: latencia en placas pequeñas

El error más común al montar esto es elegir un modelo Whisper demasiado grande para la placa. Una Raspberry Pi 3 con medium transcribe cada frase con una espera que hace inutilizable el asistente. En la práctica las horas se van en descubrir que el cuello de botella no es la red ni Home Assistant, sino la CPU resolviendo el modelo. No lo trates como un problema "del código": es hardware.

Modelos Whisper: memoria y latencia estimadas para una Raspberry Pi 4 (estimación propia, no banco de pruebas)
Modelo RAM aproximada Latencia percibida en RPi 4 Nota
tiny< 1 GBbajacomete más errores con acentos
base~1 GBbaja-mediamínimo viable en español
small1-2 GBmediael punto de partida recomendado
medium3-4 GBaltamejor precisión, solo con RAM holgada
large> 6 GBmuy alta en CPUno apto para una Raspberry Pi

La regla que yo me aplico: en una Raspberry Pi 4 de 4 GB empieza en small y no subas hasta que midas el impacto real. Las licencias no cuestan nada — el gasto es el hardware que elijas para mover los modelos.

Qué no he podido verificar hoy

Si lo que te interesa de este montaje es la mitad de la salida —avisos y notificaciones habladas—, la guía de Piper y tts.speak en español deja esa parte lista con anuncios que no pisan la música.