
Updated on May 17, 2026
Creating a Home Assistant Voice Assistant has evolved from a niche-tinkerer’s dream into one of the platform’s most powerful, privacy-first features. In 2026, voice-controlling your home is no longer exclusively tied to the walled gardens of Amazon Alexa or Google Assistant. Now, thanks to the “Assist” engine, you can talk directly to your Home Assistant instance—locally, securely, and with unprecedented control. This definitive guide will walk you through everything from basic commands to complex voice-powered automations.
The Home Assistant Voice Assistant in 2026: What’s Changed?
If you’re coming from older versions, you’ll notice a seismic shift. The simple conversation integration has matured into a complete “Voice Assistant Pipeline.” This pipeline is composed of several customizable stages:
- Wake Word: Your system can be always-listening for a custom wake word, processed 100% locally on your own hardware.
- Speech-to-Text (STT): Converts your speech into text. You can use Home Assistant’s built-in engine or local alternatives like Whisper for maximum privacy.
- Intent Recognition: This is where Home Assistant figures out what you want to do. It’s the brain of the operation and the focus of our configuration in this guide.
- Text-to-Speech (TTS): Turns the text response back into an audible voice. Again, you can use cloud services or local-first solutions like Piper.
The game-changer in 2026 is that this entire process can run on your own hardware (like a Raspberry Pi 5 or a beefier NUC), ensuring your conversations never leave your home.
Setting Up Basic Voice Commands in Home Assistant
The foundation for teaching Home Assistant new phrases still lives in your configuration.yaml file. By default, it already understands basic commands to turn on and off lights, switches, and other devices (e.g., “turn on the kitchen light”). To add your own custom commands, we’ll use the conversation and intent_script integrations.
First, enable the base integration in your configuration.yaml if you haven’t already:
# configuration.yaml
conversation:
Now, let’s create two incredibly useful custom Home Assistant voice commands: asking for a room’s temperature and checking the house’s current power draw. This is a practical example I have set up in my own home.
# configuration.yaml
conversation:
intents:
MainBedroomTemperature:
- "What's the temperature in the main bedroom"
- "How warm is it in the bedroom"
HousePowerUsage:
- "What is the house power consumption"
- "How much power is the house using right now"
intent_script:
MainBedroomTemperature:
speech:
text: "The temperature in the main bedroom is {{ states('sensor.main_bedroom_temperature') }} degrees."
HousePowerUsage:
speech:
text: "The house is currently using {{ states('sensor.total_house_power_w') }} watts."
Code Breakdown:
- Under
conversationandintents, we define a unique name for each intent (e.g.,MainBedroomTemperature). - Inside each intent, we list the exact phrases that will trigger it.
- Under
intent_script, we use the same intent name to define the action to be executed. - The
speech.textaction is the assistant’s verbal response. We use templates to insert the live state of a sensor, like my thermostat or a whole-home energy monitor.
After adding this to your configuration.yaml, navigate to “Developer Tools” -> “YAML” and click “Reload Intent Scripts.” You can now test your new commands!
Advanced Voice Commands with Variables (Slots)
The real magic of the Home Assistant voice integration kicks in when you use “slots” and optional words. Slots are variables captured from the user’s phrase, marked with curly braces {slot_name}. Optional words are marked with square brackets [optional_word].
This example allows you to change lights to different colors with a single intent, handling phrases like “change the lights to red” or “set the lights to the color blue.”
# configuration.yaml
conversation:
intents:
SetLightColor:
- "Set the lights [to the color] {color}"
- "Change the lights to {color}"
intent_script:
SetLightColor:
speech:
text: "Changing the lights to {{ color }}."
action:
service: light.turn_on
target:
entity_id: light.living_room_lights
data:
color_name: "{{ color }}"
In this modernized 2026 version, instead of wrestling with complex scripts to calculate RGB values, we leverage the fact that the light.turn_on service now directly accepts the color_name parameter. The value from the {color} slot (e.g., “red,” “green,” “blue”) is passed straight to the service. It’s far cleaner and more efficient.
Device Compatibility: iOS, Android, and Beyond
One of the most significant improvements is seamless compatibility across mobile platforms. The old limitation of “it doesn’t work on iOS” is a thing of the past. In 2026, the experience is fluid on any device:
| Platform | “Assist” Compatibility | Notes |
| Android | ✅ Full Native Support | The official Home Assistant app allows you to trigger Assist with a long-press on the app icon or via a home screen widget. |
| iOS / iPadOS | ✅ Full Native Support | Works perfectly from the official app. Can be integrated with Siri Shortcuts for a more natural voice activation experience. |
| Desktop Browsers | ✅ Supported | Works in most modern browsers (Chrome, Edge, Firefox) that allow microphone access. |
| Smart Speakers | ✅ Via ESPHome | Thanks to open hardware projects and ESPHome, you can build your own 100% local and private satellite smart speakers. |
Integrating with Alexa, Google Assistant, and Nabu Casa
While the local assistant is incredibly powerful, many of us already have Google or Amazon speakers throughout our homes. The good news is that integration is easier than ever.
- The Easy Way (Recommended): Nabu Casa
Home Assistant Cloud, officially known as Nabu Casa, is a subscription service run by the developers of Home Assistant. For a small monthly fee, you get secure remote access and a one-click integration with both Google Assistant and Amazon Alexa. It’s the most reliable and user-friendly way to get your Home Assistant devices to show up in the Google Home and Alexa apps. - The DIY Route (Advanced)
If you’d rather not use Nabu Casa, you can configure the integration manually. This requires setting up secure external access to your Home Assistant (using your own domain and a reverse proxy) and following the guides to create your own developer project on Google’s platform or an Alexa Skill. It’s a complex process but completely free.
Common Troubleshooting (FAQ)
Q: My custom voice commands aren’t working. What’s the fix?
A: First, double-check your YAML syntax under “Developer Tools” -> “Check Configuration.” Next, ensure you’ve reloaded the “Intent Scripts.” Finally, try calling the conversation.process service from Developer Tools with the exact text of your phrase to see if Home Assistant recognizes it and what response it generates.
Q: The voice assistant is very slow to respond.
A: If you’re using the default cloud-based components, the slowness could be due to your internet connection’s latency. For near-instantaneous responses, consider setting up a 100% local voice pipeline with Piper and Whisper. This requires slightly more powerful hardware, but the difference in speed and privacy is night and day.
Q: How can I see which phrases my Home Assistant already understands?
A: Go to Settings > Voice Assistants, select your assistant, and you can see a list of all exposed entities and the sentences that are auto-generated for them. It’s a great starting point for understanding what commands are available out-of-the-box.
Privacy & Security Considerations
The main draw of the Home Assistant Voice Assistant is privacy. By processing commands locally, you ensure that no corporation is listening to or storing your conversations. However, it’s crucial to maintain your system’s security.
If you expose your Home Assistant to the internet for remote voice control (either manually or with Nabu Casa), make sure you have strong passwords, two-factor authentication (2FA) enabled, and if possible, segment your home network to isolate your IoT devices. The privacy you gain with local control should not be compromised by lax network security.
