AI Locale su Mac Mini M4: Guida completa all'integrazione tra Ollama e Home Assistant
Home Assistant Guide
Scritto da Vincenzo Caputo
Qualche giorno fa ho pubblicato un articolo nel quale ho esplorato tutte le possibili strade per ottenere un'AI locale a servizio della nostra domotica personale (Home Assistant o simili). Per essere precisi ho esplorato tutte le strade con il miglior rapporto costo benefici, perché di strade nel mondo dell'intelligenza artificiale ce ne sono davvero tante.
Alla fine dell'articolo abbiamo incoronato come miglior l'hardware (considerando costo di acquisto, consumi, rumorosità, performance, ecc...) il Mac Mini M4 che, neanche a farlo apposta, è attualmente in forte sconto su Amazon.
Prezzo intero: 729,00€
Prezzo scontato: 599,00€
Sulla carta è la macchina perfetta per l'AI locale: silenziosa, efficiente e dotata di una Neural Engine mostruosa.
Lo scenario è questo: il Mac Mini lavora in modalità "Headless" (senza monitor, tastiera o mouse), collegato solo alla rete e all'alimentazione. Il suo unico scopo? Essere il motore neurale della nostra casa, mentre Home Assistant gira su un altro MiniPC dedicato.
Questo articolo si può definire (per il sottoscritto) la fine di un viaggio abbastanza tribolato fatto di prove a volte deludenti miste a frustrazione per i risultati non sempre entusiasmanti: risposte lente e comandi non capiti (il famoso "spenni" invece di "spegni"). Dopo lunghe sessioni di test però abbiamo trovato il giusto equilibrio, la "ricetta perfetta" per rendere Jarvis un assistente di livello professionale.
Ecco la guida divisa in due macro-aree: cosa configurare sul Mac Mini (il motore) e come impostare Home Assistant (il regista).
PARTE 1: Il Motore (Mac Mini M4)
L'obiettivo è preparare i tre servizi fondamentali (Udito, Voce e Cervello) usando OrbStack (un'alternativa a Docker Desktop molto più leggera e veloce per Apple Silicon).
Vai su orbstack.dev e scaricalo.
Trascinalo in Applicazioni e avvialo.
Segui la configurazione guidata (clicca sempre "Next" o "Sì" quando chiede i permessi). Una volta che vedi la dashboard vuota, OrbStack è pronto.
1. Le "Orecchie": Whisper Small (La Velocità prima di tutto)
Abbiamo fatto molti test. I modelli "Medium" sono precisi ma introducono una latenza fastidiosa di 1-2 secondi. La soluzione vincente è usare il modello Small forzandolo a essere rapidissimo con il parametro --beam-size 1. Non preoccupatevi se trascrive qualche lettera sbagliata: il "Cervello" che useremo dopo è abbastanza intelligente da correggere gli errori al volo.
Comando Terminale (Mac):
docker run -d \
--name wyoming-whisper \
--restart unless-stopped \
-p 10300:10300 \
rhasspy/wyoming-whisper \
--model small \
--language it \
--beam-size 1
2. La "Voce": Piper (Naturale e Locale)
Perché usare voci robotiche quando possiamo averne una fluida in locale? Useremo Piper. Comando Terminale:
docker run -d \
--name wyoming-piper \
--restart unless-stopped \
-p 10200:10200 \
rhasspy/wyoming-piper \
--voice it_IT-paola-medium
Al termine, dentro OrbStack, la situazione dovrebbe essere come mostrato qui di seguito:
3. Il "Cervello": Qwen 2.5 14B (Spingiamo l'M4 al limite)
Qui abbiamo fatto una scelta audace. Invece di accontentarci del modello base (7B), abbiamo installato Qwen 2.5 da 14 Miliardi di parametri. Avendo 16GB di RAM e usando il Mac solo come server, possiamo permettercelo. Il risultato? Un'intelligenza artificiale che capisce il contesto, l'ironia e comandi complessi, compensando perfettamente eventuali errori di ascolto di Whisper.
Scaricate e installate Ollama:
Vai su ollama.com e scarica la versione per Mac.
Avvialo e segui i brevi passaggi di setup.
Successivamente scaricate il modello qwen2.5:14b digitando la seguente stringa nel terminale:
ollama pull qwen2.5:14b
4. Rendere tutto "Immortale" (Script di Avvio)
Un server vero deve ripartire da solo se salta la corrente. Abbiamo creato un servizio di sistema che:
Rende Ollama visibile in rete (IP 0.0.0.0).
Mantiene il modello 14B sempre caricato in RAM (Keep Alive -1) per risposte istantanee.
Si avvia automaticamente senza bisogno di login manuale.
Copiate questo blocco nel Terminale per creare il file di configurazione:
cat <<EOF > ~/Library/LaunchAgents/setenv.OLLAMA.plist
xml version="1.0" encoding="UTF-8"?>
DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Labelkey>
<string>setenv.OLLAMAstring>
<key>ProgramArgumentskey>
<array>
<string>/bin/shstring>
<string>-cstring>
<string>launchctl setenv OLLAMA_HOST "0.0.0.0" && launchctl setenv OLLAMA_KEEP_ALIVE "-1" && sleep 10 && /usr/local/bin/ollama servestring>
array>
<key>RunAtLoadkey>
<true/>
<key>KeepAlivekey>
<true/>
<key>StandardOutPathkey>
<string>/tmp/ollama.logstring>
<key>StandardErrorPathkey>
<string>/tmp/ollama_err.logstring>
dict>
plist>
EOF
Attivate il servizio: launchctl load ~/Library/LaunchAgents/setenv.OLLAMA.plist (Nota: Rimuovete l'app Ollama dagli Elementi di Login di macOS per evitare conflitti).
PARTE 2: Il Regista (Home Assistant)
Ora spostiamoci sul MiniPC dove gira Home Assistant.
1. Collegare i Servizi
Aggiungete le integrazioni puntando all'indirizzo IP del Mac Mini:
Wyoming Protocol (Whisper): Porta 10300.
Wyoming Protocol (Piper): Porta 10200.
Ollama: Porta 11434. Dopo aver collegato il servizio dovrete aggiungere un agente di conversazione (dategli il nome che preferite) nel quale potrete scegliere il modello qwen2.5:14b ed aggiungere un un prompt come descritto qui di seguito.
Per tenere a bada la "chiacchiera" del modello 14B, usiamo questo prompt nell'integrazione Ollama:
"Sei Jarvis, un assistente domotico avanzato.
Rispondi in italiano in modo rapido e conciso.
Se ricevi comandi con lievi errori fonetici, interpretali correttamente in base al contesto.
Non descrivere mai l'hardware o la posizione fisica dei dispositivi.
Se esegui un'azione, rispondi semplicemente 'Fatto' o 'Eseguito'."
2. Configurare l'Assistente
Create un nuovo Assistente Vocale in Impostazioni > Assistenti Vocali:
Speech-to-text: Wyoming Whisper
Text-to-speech: Wyoming Piper
Conversation agent: Ollama (oppure il nome che avete dato quando avete creato l'agente di conversazione)
Conclusioni
Abbiamo ottenuto un sistema incredibilmente bilanciato:
Velocità: Whisper "Small" trascrive quasi in tempo reale.
Intelligenza: Qwen 14B capisce tutto, anche se la trascrizione non è perfetta.
Affidabilità: Il Mac si gestisce da solo, riavviando i servizi in caso di necessità.
Manca solo l'ultimo pezzo del puzzle: i microfoni fisici. Attualmente stiamo testando il sistema tramite PC e App, dove il rilevamento del "fine discorso" è un po' lento (a meno di non intervenire manualmente spegnendo il microfono). Nel prossimo articolo integreremo i ReSpeaker Lite: hardware dedicato che ci permetterà di avere un ascolto ambientale istantaneo e un "taglio" del silenzio chirurgico.
A presto per il gran finale!
Restiamo Connessi
Se volete ricevere una notifica istantanea ogni volta che pubblico una nuova guida o un aggiornamento su queste integrazioni AI (e altri interessanti contenuti), vi invito a iscrivervi al mio Canale Telegram ufficiale:
Iscriviti al Canale Telegram di Vincenzo Caputo
Guarda il video su MissingTech
Volete vedere il Mac Mini M4 in azione? Nel video dedicato sul mio canale YouTube MissingTech, vi mostrerò il test dal vivo: comandi ad Assist sia da tastiera che da microfono con riconoscimento vocale.
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.