How to Replace Google Home with Local Voice Assistant Using Rhasspy or Mycroft
Replace Google Home with Rhasspy or Mycroft to process voice commands entirely on your local hardware without cloud connectivity. Both open-source alternatives offer full voice assistant capabilities, custom wake words, and integration with home automation systems—all running privately on modest hardware like a Raspberry Pi. This guide walks through installing, configuring, and deploying each solution with practical examples for developers and power users.
Why Go Local?
Before diving into implementation, understanding the benefits of local voice processing matters. When you use Google Home, your voice recordings may be stored indefinitely, used to improve Google’s AI models, and potentially accessed by third parties through legal requests. Local voice assistants process audio entirely within your network—your conversations never leave your home.
Beyond privacy, local assistants offer customization freedom. You can modify wake words, add custom commands, integrate with self-hosted services, and run everything on modest hardware like a Raspberry Pi.
The privacy implications of cloud voice assistants deserve emphasis. Google Home sends every voice interaction—including recordings before and after the wake word—to Google’s servers for processing. Google has acknowledged retaining some recordings for quality review by human contractors. Amazon Alexa operates similarly. Research has shown these devices occasionally activate on false wake words, sending unintended audio to the cloud. A local assistant eliminates this entirely: audio is processed on your hardware, by software you control, and never transmitted anywhere.
Rhasspy: The Developer-Friendly Option
Rhasspy (pronounced “raspy”) is a privacy-first, offline voice assistant toolkit designed for developers who want complete control. It supports multiple speech-to-text engines, natural language understanding systems, and text-to-speech outputs—all running locally.
Hardware Requirements
A Raspberry Pi 4 with 4GB RAM handles basic wake word detection and command processing. For faster response times, consider a desktop PC or server-grade hardware. Rhasspy also supports Docker, making deployment straightforward on any system.
Installation
The simplest getting-started method uses Docker:
# Create directories for Rhasspy configuration
mkdir -p ~/rhasspy/{profiles,scripts}
# Run Rhasspy with Docker
docker run -d \
--name rhasspy \
--restart unless-stopped \
-p 12101:12101 \
-v ~/rhasspy/profiles:/profiles \
--device /dev/snd:/dev/snd \
rhasspy/rhasspy
After starting the container, access the web interface at http://localhost:12101.
Configuration Steps
Rhasspy requires configuring three core components: wake word, speech-to-text, and intent recognition.
Wake Word: Rhasspy includes Precise built-in, a neural network wake word detector. In the web interface, select “Precise” under Wake Word, then download the default “Hey Mycroft” model or train your own custom wake word using collected audio samples.
Speech-to-Text: For local transcription, use Pocketsphinx or Whisper. Whisper provides superior accuracy but requires more processing power:
{
"speech_to_text": {
"system": "whisper",
"whisper": {
"model": "base",
"device": "cpu"
}
}
}
Intent Recognition: Mycroft Core’s Adapt engine works well for rule-based commands. For more complex natural language, consider integrating with local LLM endpoints.
Creating Voice Commands
Define intents in JSON files within your profile:
{
"name": "TurnOnLights",
"sentences": [
"turn on the {room} lights",
"switch on {room} lighting",
"lights on in {room}"
],
"slots": {
"room": ["living room", "bedroom", "kitchen", "bathroom"]
}
}
Rhasspy parses these sentences and extracts the room entity, then sends the intent to your home automation system via MQTT, HTTP, or direct command execution.
Connecting Rhasspy to Home Assistant
Rhasspy integrates natively with Home Assistant through the Rhasspy Home Assistant integration. Configure the connection in Rhasspy’s profile settings:
{
"handle": {
"system": "hass",
"hass": {
"url": "http://homeassistant.local:8123",
"access_token": "YOUR_LONG_LIVED_ACCESS_TOKEN",
"event_type": "rhasspy_intent"
}
}
}
Then in Home Assistant, create an automation that listens for these events:
automation:
- alias: "Handle Rhasspy TurnOnLights intent"
trigger:
platform: event
event_type: rhasspy_intent
event_data:
intent:
name: TurnOnLights
action:
service: light.turn_on
target:
area_id: "{{ trigger.event.data.slots.room }}"
This keeps the entire voice pipeline local: microphone input → Rhasspy wake word detection → local STT → local intent parsing → Home Assistant automation → device control.
Mycroft: The Full-Featured Assistant
Mycroft provides a more complete out-of-the-box experience compared to Rhasspy. It includes its own voice AI (Precise), STT engine (Precise STT), TTS system ( Mimic), and the Adapt intent parser—all pre-integrated.
Installation
Mycroft offers a dedicated Raspberry Pi image called “Picroft”:
# For manual installation on Debian/Ubuntu
git clone https://github.com/MycroftAI/mycroft-core.git
cd mycroft-core
bash dev_setup.sh
After installation, run the core:
./start-mycroft.sh all
The CLI interface appears at http://localhost:8181.
Skills Development
Mycroft uses a skill-based architecture. Each skill handles specific domains—smart home control, music playback, weather queries. Creating custom skills follows a clear pattern:
from mycroft import MycroftSkill
class HomeLightsSkill(MycroftSkill):
def __init__(self):
MycroftSkill.__init__(self)
def initialize(self):
self.register_intent_file('turn.on.lights.intent',
self.handle_turn_on)
def handle_turn_on(self, message):
room = message.data.get('room')
# Your home automation logic here
self.speak(f"Turning on {room} lights")
def create_skill():
return HomeLightsSkill()
The intent file defines sentence patterns:
turn on the {room} lights
switch on {room} light
lights on in {room}
Integration with Home Automation
Mycroft communicates with home automation systems through standardized protocols. The Mycroft Home Assistant skill provides native Home Assistant integration:
# Install via Mycroft marketplace
mycroft-pip install mycroft-home-assistant
Configuration in ~/.mycroft/mycroft.conf:
{
"homeassistant": {
"host": "http://localhost:8123",
"token": "YOUR_LONG_LIVED_ACCESS_TOKEN"
}
}
Comparing Rhasspy and Mycroft
| Feature | Rhasspy | Mycroft |
|---|---|---|
| Setup Complexity | Moderate | Higher |
| Customization | Highly flexible | Skill-based |
| Resource Usage | Lighter | More demanding |
| Documentation | Good | Extensive |
| Community | Active | Larger |
| STT Engine Options | Multiple (Whisper, Kaldi, Vosk) | Primarily Precise STT |
| Wake Word Training | Built-in Precise trainer | Precise, custom models |
| MQTT Support | Native | Via plugin |
Choose Rhasspy if you want granular control over every component and are comfortable with Docker-based deployments. Choose Mycroft if you prefer a more integrated system with easier third-party skill installation.
OpenWakeWord: A Newer Alternative for Wake Word Detection
For users who find training wake words in Rhasspy cumbersome, OpenWakeWord (compatible with both Rhasspy and Home Assistant’s Wyoming protocol) offers pre-trained models for dozens of phrases and a simpler training pipeline for custom phrases. It runs on a Raspberry Pi 4 with under 5% CPU utilization, making it viable as a dedicated always-listening microphone node that forwards detected wake words to a more powerful processing machine on the same network.
Performance Optimization
Regardless of your choice, several optimizations improve responsiveness:
Use a dedicated microphone array instead of USB microphones. The ReSpeaker series offers far-field capture that detects wake words from across the room.
Run heavy processing on a networked server. Offload Whisper transcription or intent parsing to a more powerful machine while keeping the wake word detector local for instant response.
Implement caching. Store frequent command patterns and pre-computed responses to reduce processing latency.
Select the right Whisper model size. Whisper comes in five sizes (tiny, base, small, medium, large). For English-only home automation commands, the base.en model gives roughly 90% accuracy of the full model at 4x the speed. On a Raspberry Pi 4:
tiny.en: ~0.5s transcription latency, adequate for simple commandsbase.en: ~1.5s latency, good accuracy for most home automation vocabularysmall.en: ~4s latency, use only if running on a more powerful host
Separate the wake word node from the processing node. Run a lightweight wake word detector (OpenWakeWord on a Pi Zero 2W) near your microphone, and send audio snippets over the local network to a more powerful machine running Whisper. This keeps the physical microphone device inexpensive and power-efficient while maintaining accurate transcription.
Network Isolation
Local voice assistants should be isolated on your network like any other IoT device. Even though Rhasspy and Mycroft don’t call home, their MQTT brokers and HTTP APIs should not be exposed to the internet or other untrusted network segments:
# Firewall rules to restrict Rhasspy web UI access to local subnet only
# On the host running Rhasspy:
sudo iptables -A INPUT -p tcp --dport 12101 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 12101 -j DROP
For MQTT broker security, require authentication even on your local network. Add user credentials to Mosquitto’s configuration and configure Rhasspy to authenticate:
# /etc/mosquitto/mosquitto.conf
listener 1883 127.0.0.1
allow_anonymous false
password_file /etc/mosquitto/passwords
Related Articles
- How To Set Up Home Assistant Esphome For Completely Local Sm
- How To Replace Cloud Dependent Smart Switches With Local Zig
- Tell If Your Home Assistant or Alexa Was Compromised
- How To Use Tailscale To Access Home Assistant Remotely Witho
- How To Set Up Google Voice Number Specifically For Online Da
Built by theluckystrike — More at zovo.one