
Rhasspy è l’assistente vocale open‑source più completo per chi desidera una soluzione completamente offline. La versione 2.5.0, pubblicata a inizio 2024, introduce cambiamenti strutturali, nuovi servizi e ottimizzazioni mirate a rendere più semplice e affidabile l’integrazione con i sistemi di automazione domestica più diffusi. Questo articolo fornisce una panoramica esaustiva, suddivisa in sezioni tematiche, per aiutare sia gli utenti esperti sia i neofiti a comprendere, installare e sfruttare al meglio le nuove funzionalità.
Rhasspy 2.5 è una suite di servizi indipendenti che comunicano tramite MQTT usando un’estensione del protocollo Hermes. Il design modulare permette di sostituire o personalizzare singoli componenti (Riconoscimento vocale, Intent parsing, TTS, ecc.) senza dover ricompilare l’intera piattaforma.
Le principali caratteristiche introdotte nella 2.5 includono:
.ini più leggibili.Queste novità mirano a ridurre la latenza di risposta (sub‑200 ms in media), a migliorare la robustezza del sistema e a semplificare le operazioni di manutenzione.
Con la versione 2.5, Rhasspy ha abbandonato il modello monolitico per adottare una architettura a micro‑servizi. Ogni componente è containerizzato e comunica tramite MQTT. La tabella seguente riassume i servizi principali e le loro responsabilità.
| Servizio | Funzione | Protocollo di comunicazione | Opzioni di sostituzione |
|---|---|---|---|
| Audio Capture | Cattura audio dal microfono e lo invia al pipeline di elaborazione. | MQTT (topic: rhasspy/audio) | Alsa, PulseAudio, WASAPI |
| Wake‑word | Rileva la parola di attivazione. | MQTT (topic: rhasspy/wakeword/detected) | Porcupine, Snowboy (legacy) |
| Speech‑to‑Text (STT) | Trascrive l’audio in testo. | MQTT (topic: rhasspy/stt/text) | Kaldi, Vosk, DeepSpeech |
| Intent Parser | Analizza il testo e genera l’intent JSON. | MQTT (topic: rhasspy/nlu/intent) | Hermes, Snips NLU, Rasa |
| Text‑to‑Speech (TTS) | Converte il testo di risposta in audio. | MQTT (topic: rhasspy/tts/audio) | eSpeak, Pico, Coqui TTS |
| Web UI | Interfaccia grafica per configurazione e test. | HTTP + WebSocket | Docker‑Compose, Portainer |
Questa separazione consente di aggiornare o sostituire singoli servizi senza interrompere l’intera piattaforma, riducendo al minimo i tempi di inattività.
Il nuovo motore di wake‑word utilizza Porcupine, una libreria leggera e cross‑platform sviluppata da Picovoice. Le caratteristiche chiave includono:
Oltre alle lingue già supportate (inglese, tedesco, spagnolo, francese, italiano, ecc.), la versione 2.5 aggiunge:
I profili lingua sono ora contenuti in file .ini più leggibili, facilitando la personalizzazione e la condivisione.
La nuova API WebSocket permette di:
Ogni servizio ora invia i propri log a un topic MQTT dedicato (rhasspy/logs/+), permettendo di aggregare e visualizzare i messaggi tramite strumenti come Grafana Loki o ELK Stack. Il nuovo Log Viewer integrato nella Web UI consente di filtrare per servizio, livello di severità e intervallo temporale.
Il file docker-compose.yml fornito include opzioni di replica per i servizi più pesanti (STT, TTS). È possibile impostare il numero di repliche con la variabile REPLICAS e il sistema distribuirà automaticamente le richieste tramite il broker MQTT.
Oltre alle novità funzionali, Rhasspy 2.5 introduce una serie di ottimizzazioni tecniche:
Questi miglioramenti rendono Rhasspy più adatto a scenari “always‑on” dove la disponibilità è critica (es. assistenza per persone con disabilità).
Di seguito è riportata una procedura completa per installare Rhasspy 2.5 su una Raspberry Pi 4 (OS Raspberry Pi OS 64‑bit). La stessa procedura è valida, con leggere variazioni, per altre piattaforme Linux.
sudo apt update && sudo apt upgrade -ysudo apt install -y ca-certificates curl gnupg lsb-releasecurl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ $(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.iosudo usermod -aG docker $USERnewgrp dockerdocker versionInstalla Docker‑Compose:
sudo curl -L " -s)-$(uname -m)" \ -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose versionmkdir -p ~/rhasspy && cd ~/rhasspydocker‑compose.yml di Rhasspy 2.5cat > docker-compose.yml <<'EOF'version: '3.8' services: mqtt: image: eclipse-mosquitto:2 container_name: rhasspy_mqtt restart: unless-stopped ports: - "1883:1883" volumes: - ./mosquitto/config:/mosquitto/config - ./mosquitto/data:/mosquitto/data rhasspy: image: rhasspy/rhasspy:2.5.0 container_name: rhasspy_core restart: unless-stopped depends_on: - mqtt ports: - "12101:12101" # Web UI - "12321:12321" # Audio (optional) environment: - LANG=en - PROFILE=en - MQTT_HOST=rhasspy_mqtt - MQTT_PORT=1883 volumes: - ./profiles:/profiles - ./config:/etc/rhasspyEOFCopia il profilo italiano predefinito e personalizzalo:
mkdir -p profiles/itdocker run --rm -v $(pwd)/profiles/it:/profiles rhasspy/rhasspy:2.5.0 \ --profile it --download-profileIl file settings.ini all’interno della cartella profiles/it può essere modificato per attivare il nuovo wake‑word Porcupine o cambiare il modello STT.
docker-compose up -dVerifica che i container siano in esecuzione:
docker psApri il browser e naviga verso . La schermata di benvenuto ti guiderà nella configurazione della sorgente audio e nella prova del wake‑word.
docker-compose.yml presente nella directory di lavoro.profiles/it).arecord -l).Rhasspy 2.5 permette di personalizzare quasi ogni aspetto dell’assistente. Di seguito le impostazioni più rilevanti, suddivise per categoria.
| Parametro | Valore di default | Descrizione |
|---|---|---|
wake_word | porcupine | Motore di attivazione (porcupine, snowboy, none). |
porcupine_keyword_path | /usr/share/porcupine/keyword/hey_rhasspy.ppn | Percorso al file .ppn della parola chiave. |
porcupine_sensitivity | 0.5 | Sensibilità (0‑1). Valori più alti aumentano i falsi positivi. |
Per aggiungere una parola chiave personalizzata, carica il file .ppn nella cartella /profiles/it/wake-word e aggiorna il percorso nel file settings.ini.
Rhasspy 2.5 supporta diversi back‑end STT. Il più consigliato per l’italiano è Vosk, in quanto non richiede GPU e ha una precisione superiore al 93 % su dataset di casa.
[stt]system=voskmodel=itSe si dispone di una GPU NVIDIA, è possibile abilitare il modello Kaldi con supporto CUDA:
[stt]system=kaldimodel=ituse_cuda=trueRhasspy utilizza una sintassi basata su intent templates. Esempio di file intent.yaml per la gestione delle luci:
intents: LightState: - "[accendi|spegni] [la] luce [in] {room}"slots: room: - "soggiorno" - "cucina" - "camera"Con la versione 2.5 è possibile includere espressioni regolari nei slot, migliorando la flessibilità:
slots: temperature: type: number range: "10-30"Il motore di default è eSpeak NG, ma Rhasspy 2.5 aggiunge il supporto a Coqui TTS. Per attivarlo:
[tts]system=coquivoice=en_us/vctkCoqui produce una voce più naturale, ma richiede più risorse CPU. È consigliato su piattaforme con almeno 2 GB di RAM.
È possibile modificare il file ui-config.json per aggiungere pulsanti personalizzati o cambiare il tema colore. Un esempio di configurazione per il tema scuro:
{"theme": "dark", "showAudio": true, "customButtons": [ {"label": "Apri garage", "intent": "OpenGarage"} ]}Rhasspy è progettato per comunicare con le piattaforme di automazione più diffuse. Di seguito le modalità di integrazione più comuni.
Per collegare Rhasspy a Home Assistant, aggiungi il broker MQTT di Rhasspy come integration e configura il componente mqtt_eventstream in configuration.yaml:
mqtt: broker: 192.168.1.10 port: 1883 intent_script: LightState: speech: text: "Accendo la luce in {{ room }}" action: service: light.toggle data_template: entity_id: "light.{{ room }}"In Home Assistant, il messaggio JSON inviato da Rhasspy (rhasspy/nlu/intent) viene tradotto automaticamente in un intent script.
Node‑RED può ricevere gli intent tramite il nodo mqtt in sottoscrivendosi al topic rhasspy/nlu/intent. Un esempio di flow:
rhasspy/nlu/intent.intent.name.LightState, usa un nodo call service di Home Assistant per accendere/spegnere la luce.Il diagramma sottostante mostra il flusso completo.
Rhasspy 2.5 aggiunge nuovi topic di monitoraggio:
| Topic | Tipo di messaggio | Uso tipico |
|---|---|---|
| rhasspy/audio/recorded | binary | Audio raw registrato, utile per debug. |
| rhasspy/logs/+ | string | Log di tutti i servizi, filtrabili per livello. |
| rhasspy/wakeword/detected | json | Evento di wake‑word con timestamp. |
| rhasspy/tts/audio | binary | Audio sintetizzato da inviare a speaker. |
Questi topic consentono di costruire dashboard di monitoraggio in tempo reale con Grafana o di creare script di automazione personalizzati.
Di seguito tre scenari tipici, completi di configurazione e flusso di dati.
{"text": "accendi la luce in cucina", "intent": {"name": "LightState"}, "slots": {"state": "on", "room": "cucina"}}rhasspy/nlu/intent e consumato da Home Assistant.light.toggle sull’entità light.cucina.rhasspy/tts/audio, che viene riprodotto dallo speaker.Utilizzando le API locali di OpenWeatherMap (senza invio dati a terzi) è possibile creare un “intent” chiamato GetWeather:
intents: GetWeather: - "Qual è il meteo a {city}"slots: city: - "Roma" - "Milano" - "Napoli"Il flusso:
city=Roma.rhasspy/tts/speak per la sintesi vocale.Con il servizio media_player di Home Assistant, è possibile gestire playlist vocali:
intents: PlayMusic: - "Metti la playlist {playlist}"slots: playlist: - "rock" - "classica" - "jazz"Flusso:
media_player.play_media con l’URL della playlist corrispondente.Di seguito una tabella comparativa dei punti chiave.
| Caratteristica | Rhasspy 2.4 | Rhasspy 2.5 |
|---|---|---|
| Modello di wake‑word | Snowboy (legacy) | Porcupine (default) |
| Architettura | Monolitica con plugin | Micro‑servizi indipendenti |
| Supporto GPU | Limitato (solo CPU) | Kaldi con CUDA, Jetson TensorRT |
| Latenza media (Raspberry Pi 4) | ≈ 300 ms | ≈ 180 ms |
| API WebSocket | No | Sì, bidirezionale |
| Log centralizzati | File locale | Topic MQTT + Viewer UI |
| Numero di repliche Docker | 1 per servizio | Scalabile (REPLICAS env) |
| Lingue aggiunte | 8 | +3 (napoletano, pt‑BR, pl) |
| Interfaccia di training wake‑word | Limitata | Editor grafico integrato |
Il passaggio a 2.5 è consigliato per chi necessita di maggiore scalabilità, bassa latenza e personalizzazione della parola di attivazione.
/profiles su storage esterno (es. NAS). Un semplice cron può automatizzare il processo.settings.ini.rhasspy-test (disponibile nella repo) per verificare che gli intent funzionino dopo ogni aggiornamento.rhasspy/rhasspy:2.5.0) per poter effettuare rollback rapidi.Seguendo queste linee guida, è possibile garantire un funzionamento stabile e sicuro per settimane o mesi senza interventi manuali significativi.
Come scegliere Sicurezza domestica intelligente per le case in Italia ...
Leggi ->Scoperto un difetto di privacy negl ...
Leggi ->Come scegliere energie rinnovabili per le case in ItaliaLa s ...
Leggi ->Se sei giunto qui significa che ti sei trovato difronte alla necessità di avere u ...
Leggi ->In questo articolo, esploreremo a fondo le caratteristiche, le tecniche e i segre ...
Leggi ->Negli ultimi anni, Instagram e TikTok sono diventati ...
Leggi ->La gestione dei log e dei binlog in MySQL è fondamentale per mantenere le prestaz ...
Leggi ->Cos'è l'Unified Write Filter? ...
Leggi ->