Skip to content
BotServBotServ
Asistente de vozLocalWhisperOllamaPiperSmart Home

Asistente de voz local para Smart Home

Asistente de voz local para Smart Home. Whisper + Ollama + Piper, completamente offline, sin nube.

S

schutzgeist

5 min read
Asistente de voz local para Smart Home

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:

  1. Settings → Devices & Services → Add Integration → Wyoming
    • Whisper: http://whisper:10300
    • Piper: http://piper:10200
  2. 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

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?

Un asistente de voz que funciona completamente en tu servidor: Whisper para STT, Ollama para comprensión, Piper para TTS. Sin nube, sin transferencia de datos.

¿Local o Alexa?

Local para privacidad y control. Alexa para simplicidad y música. Local es más complejo, pero completamente privado.

¿Qué hardware necesito?

Servidor: 8-16 GB VRAM para Whisper + Ollama. Satélite: ESP32-S3 o Raspberry Pi para micrófono + altavoz.

¿Qué tan rápida es la respuesta?

3-7 segundos de voz a acción. Whisper small: 1-2s, Ollama 8B: 2-5s, Piper: <1s. Para respuestas más rápidas, usa modelos más pequeños.

¿Funciona bien el alemán?

Sí, Whisper small/large para idioma alemán. Piper con voz alemana (de_DE-thorsten-high). Ollama con prompts en alemán.

¿Están seguros mis datos de voz?

Sí, completamente. Todo el procesamiento es local. Ningún dato de voz sale de tu red. Este es el principal beneficio sobre los asistentes en la nube.

¿Funciona sin conexión?

Sí, completamente. Sin conexión a Internet necesaria. Whisper, Ollama y Piper funcionan localmente. Solo necesitas Internet para actualizaciones.

¿Qué pasa si el asistente entiende mal?

La IA puede malinterpretar comandos. Para acciones críticas (abrir puerta), incorpora confirmación. Comandos precisos y contexto ayudan.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas