Perché un assistente vocale locale?
Alexa e Google Assistant sono comodi, ma ogni comando che pronunci viene inviato ai server cloud, processato, analizzato e… conservato. Per chi tiene alla privacy o semplicemente vuole un sistema che funzioni anche senza Internet, Home Assistant offre una soluzione rivoluzionaria: Assist, un assistente vocale che può funzionare 100% in locale.
Home Assistant Voice è l’ecosistema completo che include:
-
Assist: il software assistente vocale integrato in Home Assistant
-
Voice PE (Preview Edition): l’hardware ufficiale dedicato
-
Pipeline vocali: configurazioni per speech-to-text e text-to-speech
-
Custom sentences: comandi vocali personalizzati
Vantaggi del controllo vocale locale:
-
Privacy totale: nessun dato inviato a server esterni
-
Funziona offline: controllo vocale anche senza Internet
-
Velocità: nessuna latenza cloud (con hardware adeguato)
-
Personalizzazione: comandi custom nella tua lingua
-
Nessun abbonamento: una volta configurato, è gratis per sempre
Parte 1: Componenti del sistema vocale
Architettura Home Assistant Voice
Il sistema vocale di Home Assistant è composto da tre motori che lavorano in sequenza:
🎤 Voce utente
↓
┌─────────────────────────────┐
│ 1. SPEECH-TO-TEXT (STT) │ Whisper / Cloud
│ Converte audio → testo │
└─────────────────────────────┘
↓
┌─────────────────────────────┐
│ 2. CONVERSATION AGENT │ Assist / LLM / OpenAI
│ Comprende e risponde │
└─────────────────────────────┘
↓
┌─────────────────────────────┐
│ 3. TEXT-TO-SPEECH (TTS) │ Piper / Cloud
│ Converte testo → audio │
└─────────────────────────────┘
↓
🔊 Risposta vocale
Ogni componente è configurabile separatamente: puoi usare cloud per STT e locale per TTS, o viceversa, secondo le tue preferenze di privacy e performance.
Opzioni per ogni componente
Speech-to-Text (riconoscimento vocale):
Conversation Agent (comprensione):
Text-to-Speech (sintesi vocale):
Parte 2: Hardware per il controllo vocale
Home Assistant Voice PE (Preview Edition)
Voice PE è il dispositivo hardware ufficiale progettato specificamente per Home Assistant.
Specifiche tecniche:
-
Chip: ESP32-S3 (dual-core, WiFi integrato)
-
Microfoni: 2 microfoni MEMS con cancellazione eco
-
Speaker: integrato (qualità sufficiente, espandibile)
-
LED: anello RGB per feedback visivo
-
Connettività: WiFi 2.4 GHz, Bluetooth (solo setup)
-
Espansione: porta Grove per sensori aggiuntivi
-
Alimentazione: USB-C (cavo e alimentatore NON inclusi)
-
Piattaforma: ESPHome (open source, modificabile)
Prezzo: ~$59 USD (disponibile su store Home Assistant)
Cosa è incluso nella confezione:
-
Dispositivo Voice PE
-
Adesivo Home Assistant
-
Guida rapida
-
⚠️ NON inclusi: cavo USB-C, alimentatore
Alternative hardware compatibili
Se non vuoi acquistare Voice PE, esistono alternative:
ESP32-S3-BOX-3 (~$50)
-
Display touch integrato
-
Microfoni e speaker di qualità
-
Configurabile con ESPHome
-
Ottimo rapporto qualità/prezzo
M5Stack ATOM Echo (~$15)
-
Molto economico
-
Compatto (pollice)
-
Qualità audio limitata
-
Ideale per sperimentare
Raspberry Pi + ReSpeaker (~$80 totale)
-
Microfoni array di qualità
-
Più potente per elaborazione locale
-
Richiede più configurazione
Tablet/telefono Android riciclato (gratis)
-
App Home Assistant Companion con Assist
-
Usa microfono e speaker del dispositivo
-
Zero costi hardware aggiuntivi
Parte 3: Setup Home Assistant Voice PE
Requisiti preliminari
Prima di iniziare, assicurati di avere:
-
Home Assistant 2024.1 o superiore (consigliato 2025.x)
-
Home Assistant Companion app (iOS/Android)
-
Bluetooth abilitato sullo smartphone
-
Cavo USB-C e alimentatore (5V 1A minimo)
-
Rete WiFi 2.4 GHz (Voice PE non supporta 5 GHz)
Passo 1: Collegamento e accensione
-
Collega il cavo USB-C al Voice PE
-
Collega l’alimentatore alla presa
-
Il LED si illumina e inizia a pulsare (modalità setup)
Passo 2: Configurazione via Companion App
Su iPhone:
-
Vai in Impostazioni iOS > Home Assistant > Bluetooth → Abilita
-
Vai in Impostazioni iOS > Home Assistant > Posizione → “Sempre” o “Durante l’uso”
Su Android:
-
Abilita Bluetooth e Posizione
-
Concedi permessi all’app Home Assistant
Procedura setup:
-
Apri app Home Assistant
-
Apparirà notifica “Dispositivo trovato: Home Assistant Voice”
-
Tocca “Aggiungi”
-
Seleziona la tua rete WiFi 2.4 GHz
-
Inserisci password WiFi
-
Tocca “Connetti”
-
Premi il pulsante centrale su Voice PE quando richiesto (autorizzazione)
-
Seleziona area dove posizioni il dispositivo (es: Soggiorno)
-
Tocca “Avanti”
Passo 3: Configurazione Voice Pipeline
Ora scegli come processare i comandi vocali:
Opzione A: Cloud (Home Assistant Cloud/Nabu Casa)
-
Richiede abbonamento Nabu Casa ($6.50/mese)
-
Setup immediato, nessuna configurazione
-
Riconoscimento vocale eccellente
-
Voci TTS naturali e multilingua
Opzione B: Locale (Do-it-yourself)
-
Gratuito, nessun abbonamento
-
Privacy totale, funziona offline
-
Richiede installazione add-on
-
Performance dipende da hardware HA
Per setup locale, tocca “Do-it-yourself”:
Il wizard installerà automaticamente:
-
Whisper add-on (speech-to-text)
-
Piper add-on (text-to-speech)
-
Wyoming integration (protocollo comunicazione)
-
Creerà un nuovo Voice Assistant configurato
⏱️ Tempo installazione: 5-15 minuti (download modelli vocali)
Passo 4: Test funzionamento
-
Attendi che LED Voice PE diventi fisso (pronto)
-
Dì “OK Nabu” (wake word default)
-
Attendi feedback LED (ascolto)
-
Dì un comando: “Accendi le luci del soggiorno”
-
Ascolta la risposta e verifica l’azione
Se non risponde:
-
Verifica che Voice PE sia online in Impostazioni > Dispositivi > ESPHome
-
Controlla che pipeline vocale sia configurata correttamente
-
Prova ad avvicinarti e parlare più chiaramente
Parte 4: Configurazione Voice Pipeline avanzata
Accedere alle impostazioni pipeline
-
Impostazioni > Assistenti vocali
-
Clicca sull’assistente da configurare
-
Modifica ogni componente separatamente
Configurare Whisper (Speech-to-Text locale)
Impostazioni > Add-on > Whisper > Configurazione
language: it # Lingua riconoscimento model: small-int8 # Modello (vedi sotto) beam_size: 5 # Precisione vs velocità
Modelli Whisper disponibili:
Consiglio:
-
Raspberry Pi 4 (4GB): usa
tiny-int8obase-int8 -
Mini PC / NUC: usa
small-int8 -
Server potente: usa
medium-int8per massima precisione
Configurare Piper (Text-to-Speech locale)
Impostazioni > Add-on > Piper > Configurazione
voice: it_IT-riccardo-x_low # Voce italiana
Voci italiane disponibili:
-
it_IT-riccardo-x_low– Voce maschile, qualità base -
it_IT-riccardo_fastspeech2-x_low– Voce maschile alternativa -
it_IT-paola-medium– Voce femminile (se disponibile)
Scaricare voci aggiuntive:
Le voci si scaricano automaticamente al primo utilizzo. Per preview, visita: rhasspy.github.io/piper-samples
Configurare Wake Word (parola di attivazione)
Di default, Voice PE risponde a “OK Nabu”. Puoi cambiarlo:
Impostazioni > Dispositivi > ESPHome > Voice PE > Wake word
Wake word disponibili:
-
“OK Nabu” (default)
-
“Hey Jarvis”
-
“Alexa” (sì, puoi usarlo!)
-
“Hey Mycroft”
-
Custom (richiede training modello)
Sensibilità wake word:
Regola per evitare falsi positivi o mancati riconoscimenti:
-
Alta sensibilità: risponde facilmente, più falsi positivi
-
Bassa sensibilità: richiede pronuncia chiara, meno errori
Parte 5: Comandi vocali integrati
Comandi base supportati da Assist
Home Assistant Assist comprende centinaia di comandi in italiano e altre lingue:
Controllo luci:
-
“Accendi le luci del soggiorno”
-
“Spegni tutte le luci”
-
“Imposta le luci della camera al 50%”
-
“Cambia colore delle luci in rosso”
Controllo clima:
-
“Imposta il termostato a 21 gradi”
-
“Alza la temperatura di 2 gradi”
-
“Spegni il riscaldamento”
-
“Qual è la temperatura in camera?”
Controllo tapparelle/coperture:
-
“Apri le tapparelle del soggiorno”
-
“Chiudi tutte le tapparelle”
-
“Imposta le tapparelle al 50%”
Controllo media:
-
“Metti in pausa”
-
“Riproduci” / “Play”
-
“Prossima traccia”
-
“Alza il volume”
Controllo prese/switch:
-
“Accendi la presa della TV”
-
“Spegni il ventilatore”
-
“Attiva la macchina del caffè”
Scene e script:
-
“Attiva la scena cinema”
-
“Esegui script buonanotte”
Informazioni:
-
“Che ore sono?”
-
“Che giorno è oggi?”
-
“Qual è la temperatura esterna?”
-
“Quanta energia ho consumato oggi?”
Usare gli alias per nomi dispositivi
Se Assist non riconosce il nome di un dispositivo, aggiungi alias (nomi alternativi):
-
Impostazioni > Dispositivi e servizi > Entità
-
Cerca l’entità (es:
light.luce_soggiorno_principale) -
Clicca sull’entità > Impostazioni (ingranaggio)
-
Aggiungi Alias: “luce grande”, “lampada principale”, “luce centrale”
-
Salva
Ora puoi dire: “Accendi la luce grande” e Assist capirà quale intendi.
Consiglio: Aggiungi alias in italiano colloquiale come li chiameresti naturalmente.
Parte 6: Comandi personalizzati (Custom Sentences)
Metodo 1: Trigger Sentence nelle automazioni (più semplice)
Il modo più facile per creare comandi custom è usare il trigger Sentence nelle automazioni:
Esempio: “Alexa, vado a dormire”
-
Impostazioni > Automazioni > Crea automazione
-
Trigger: seleziona “Frase” (Sentence)
-
Inserisci le frasi che attiveranno l’automazione:
-
vado a dormire -
buonanotte -
vado a letto -
è ora di dormire
-
-
Azioni: aggiungi le azioni desiderate
-
Spegni tutte le luci
-
Imposta termostato notte
-
Attiva allarme
-
-
Aggiungi risposta vocale:
-
Clicca “Aggiungi azione”
-
Seleziona “Altre azioni” > “Imposta risposta conversazione”
-
Scrivi: “Buonanotte! Ho spento le luci e attivato l’allarme.”
-
-
Salva
Test: Dì “OK Nabu, vado a dormire” → esegue azioni + risponde vocalmente.
Metodo 2: Custom Sentences via YAML (avanzato)
Per comandi più complessi con variabili (slot), usa file YAML:
Passo 1: Crea struttura cartelle
config/
└── custom_sentences/
└── it/
└── comandi_personalizzati.yaml
Passo 2: Crea file comandi_personalizzati.yaml
language: "it"
intents:
# Comando: "Imposta timer cucina 10 minuti"
ImpostaTimerCucina:
data:
- sentences:
- "imposta timer cucina {minuti} minuti"
- "timer cucina {minuti} minuti"
- "avvia timer {minuti} minuti"
slots:
minuti:
type: number
range:
from: 1
to: 120
# Comando: "Quanti gradi ci sono in [stanza]?"
TemperaturaStanza:
data:
- sentences:
- "quanti gradi ci sono in {stanza}"
- "che temperatura c'è in {stanza}"
- "temperatura {stanza}"
slots:
stanza:
type: area
Passo 3: Crea intent_script per rispondere
intent_script:
ImpostaTimerCucina:
speech:
text: "Timer cucina impostato per {{ minuti }} minuti"
action:
- service: timer.start
target:
entity_id: timer.cucina
data:
duration: "{{ minuti * 60 }}"
TemperaturaStanza:
speech:
text: >
La temperatura in {{ stanza }} è di
{{ states('sensor.temperatura_' ~ stanza) }} gradi
Passo 4: Riavvia Home Assistant
Dopo il riavvio, i nuovi comandi saranno disponibili.
Esempio pratico: “Dove ho lasciato le chiavi?”
Crea un sistema per tracciare oggetti:
# custom_sentences/it/trova_oggetti.yaml
language: "it"
intents:
TrovaOggetto:
data:
- sentences:
- "dove sono le {oggetto}"
- "dove ho messo le {oggetto}"
- "dove ho lasciato le {oggetto}"
- "trova le {oggetto}"
slots:
oggetto:
type: custom
values:
- chiavi
- occhiali
- portafoglio
- telecomando
# configuration.yaml
intent_script:
TrovaOggetto:
speech:
text: >
{% set posizioni = {
'chiavi': 'sul mobile ingresso',
'occhiali': 'sul comodino in camera',
'portafoglio': 'nella tasca della giacca',
'telecomando': 'tra i cuscini del divano'
} %}
{% if oggetto in posizioni %}
Le {{ oggetto }} dovrebbero essere {{ posizioni[oggetto] }}
{% else %}
Non so dove siano le {{ oggetto }}
{% endif %}
Parte 7: Integrazione con AI/LLM
Perché integrare un LLM?
Assist base capisce solo comandi strutturati. Con un Large Language Model (LLM), puoi avere conversazioni naturali:
Senza LLM:
-
“Accendi le luci” → funziona
-
“Fa un po’ buio qui” → non capito
Con LLM:
-
“Accendi le luci” → funziona
-
“Fa un po’ buio qui” → capisce e accende luci
-
“Prepara la casa per una cena romantica” → abbassa luci, musica soft, temperatura comfort
Opzione 1: Extended OpenAI Conversation (cloud)
-
HACS > Integrazioni > Cerca “Extended OpenAI Conversation”
-
Installa e riavvia
-
Impostazioni > Dispositivi e servizi > Aggiungi > Extended OpenAI
-
Inserisci API Key OpenAI (da platform.openai.com)
-
Configura modello (gpt-4o-mini consigliato per costi)
Impostazioni > Assistenti vocali > Modifica assistente:
-
Agente conversazione: Extended OpenAI Conversation
Costo: ~$0.01-0.05 per conversazione (dipende da lunghezza)
Opzione 2: Ollama (LLM 100% locale)
Per privacy totale con AI avanzata:
Requisiti hardware:
-
16+ GB RAM
-
GPU consigliata (NVIDIA con CUDA)
-
20+ GB storage per modelli
Installazione:
-
Installa Ollama sul server HA o PC dedicato:
curl -fsSL https://ollama.ai/install.sh | sh
- Scarica modello (es: llama3.2):
ollama pull llama3.2
-
In Home Assistant, installa integrazione Ollama da HACS
-
Configura come Conversation Agent nell’assistente vocale
Pro: Privacy totale, nessun costo ricorrente
Contro: Richiede hardware potente, risposte più lente
Opzione 3: Home Assistant Cloud con AI
Se hai abbonamento Nabu Casa, l’AI è inclusa:
-
Impostazioni > Home Assistant Cloud
-
Abilita “Assist with AI”
-
Seleziona come Conversation Agent
Pro: Setup immediato, nessuna configurazione
Contro: Richiede abbonamento $6.50/mese
Parte 8: Configurazioni avanzate
Multi-room audio: Voice PE in ogni stanza
Puoi avere più Voice PE (o altri dispositivi) in stanze diverse:
-
Configura ogni Voice PE con area corretta
-
I comandi contestuali funzioneranno automaticamente:
-
Dici “Accendi la luce” in soggiorno → accende luce soggiorno
-
Stesso comando in camera → accende luce camera
-
Exposed entities: limitare cosa Assist può controllare
Per sicurezza o semplicità, limita le entità controllabili vocalmente:
Impostazioni > Assistenti vocali > Expose
-
Esponi: luci, termostati, scene comuni
-
Nascondi: serrature, allarme, dispositivi critici
Consiglio sicurezza: Non esporre serrature o allarmi al controllo vocale senza autenticazione aggiuntiva.
Satellite mode: usare Echo/Google come input
Puoi usare dispositivi Alexa o Google esistenti come microfoni per Assist:
Con Alexa:
-
Crea routine Alexa con trigger vocale
-
Azione: chiama webhook Home Assistant
-
Home Assistant esegue comando
Più avanzato: Integrazione Voice Satellite per trasformare qualsiasi speaker in satellite Assist.
Debug e log vocali
Per troubleshooting, abilita log dettagliati:
Impostazioni > Sistema > Log > Aggiungi:
logger:
default: info
logs:
homeassistant.components.assist_pipeline: debug
homeassistant.components.conversation: debug
homeassistant.components.stt: debug
homeassistant.components.tts: debug
Visualizza cosa Assist ha “sentito” e come ha interpretato il comando.
Parte 9: Troubleshooting problemi comuni
“Assist non capisce i miei comandi”
Cause possibili:
-
Pronuncia: parla chiaramente, non troppo veloce
-
Nome dispositivo: usa alias più semplici
-
Lingua: verifica che pipeline sia configurata in italiano
-
Modello Whisper: modello troppo piccolo per riconoscimento accurato
Soluzioni:
-
Aggiungi alias ai dispositivi
-
Prova modello Whisper più grande (se hardware lo permette)
-
Usa comandi più semplici e diretti
“Whisper è troppo lento”
Cause:
-
Hardware non sufficiente
-
Modello troppo grande
Soluzioni:
-
Usa modello più piccolo (
tiny-int8obase-int8) -
Considera Home Assistant Cloud per STT
-
Upgrade hardware (SSD, più RAM, CPU migliore)
“Voice PE non si connette”
Checklist:
-
WiFi è 2.4 GHz? (5 GHz non supportato)
-
Bluetooth smartphone abilitato?
-
Companion app ha permessi location + Bluetooth?
-
LED Voice PE lampeggia? (modalità setup)
-
Sei vicino al dispositivo? (<3 metri per BLE)
Reset Voice PE:
Tieni premuto pulsante centrale 10 secondi → LED lampeggia rosso → reset completato → riprova setup.
“La risposta vocale è robotica/incomprensibile”
Causa: Voce Piper non ottimale
Soluzione:
-
Prova voci diverse nelle impostazioni Piper
-
Considera Home Assistant Cloud per TTS più naturale
-
Verifica che speaker Voice PE non sia ostruito
“Wake word attiva con falsi positivi”
Causa: Sensibilità troppo alta o wake word comune
Soluzioni:
-
Riduci sensibilità wake word
-
Cambia wake word (es: da “Alexa” a “OK Nabu”)
-
Posiziona Voice PE lontano da TV/radio
Home Assistant Voice rappresenta una rivoluzione nel controllo vocale smart home: per la prima volta è possibile avere un assistente vocale completamente locale, rispettoso della privacy, personalizzabile e indipendente da servizi cloud.
Cosa hai imparato:
-
Configurare Voice PE e pipeline vocale
-
Scegliere tra elaborazione locale e cloud
-
Usare i comandi integrati di Assist
-
Creare comandi personalizzati con custom sentences
-
Integrare AI/LLM per conversazioni naturali
-
Risolvere i problemi più comuni
Il futuro è vocale e locale: Con l’evoluzione continua di Whisper, Piper e i modelli AI locali, il gap con assistenti cloud si riduce ogni mese. Oggi puoi già controllare la tua casa con la voce senza che nessuna azienda ascolti le tue conversazioni.
Prossimi passi consigliati:
-
Inizia con pipeline cloud (più semplice) per testare
-
Migra gradualmente a locale quando ti senti pronto
-
Crea custom sentences per i tuoi casi d’uso specifici
-
Sperimenta con LLM per conversazioni più naturali
La tua smart home ora ti ascolta… e solo tu sai cosa le dici!
