The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Connect an open-source voice assistant to Home Assistant by building an Assist pipeline: a microphone endpoint sends audio to Home Assistant, a speech-to-text engine turns it into text, Assist interprets the request and controls exposed entities, and a text-to-speech engine speaks the result. For a local setup, install the Wyoming services you need—such as Speech-to-Phrase or Whisper for speech recognition, Piper for speech output, and openWakeWord for server-side wake words—then select them in an Assist pipeline.
You can use the Home Assistant companion app, a dedicated voice device, an ESPHome satellite, or a Linux computer with a microphone and speaker. The right combination depends on whether you want the simplest setup, fully local processing, open-ended dictation, or a low-compute satellite.
As an Amazon Associate I earn from qualifying purchases.
How the connection works
“Assist is the voice assistant built into Home Assistant.” An Assist pipeline combines four jobs:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minute- Listening: A phone, voice device, ESPHome satellite, or computer captures your speech.
- Speech recognition: A speech-to-text (STT) engine converts the audio into words.
- Conversation and intent handling: Assist matches the request to Home Assistant’s intents and entities, such as lights, scenes, scripts, and climate controls.
- Spoken output: A text-to-speech (TTS) engine generates the response and sends it back to the endpoint.
Wyoming is the integration layer for local voice services. It lets Home Assistant discover and use services running on the Home Assistant host or on another computer on your local network. Moving a demanding service such as Whisper to a more powerful computer can keep a small Home Assistant system responsive.
#1 Best Overall
- Compact and Portable: The ATOM VOICE is designed with a small form factor, measuring only 24 * 24 * 17 mm. Its compact size makes it highly portable and convenient for on-the-go use.
- Voice Interaction and AI Capabilities: The built-in microphone and speaker allow for voice interaction, enabling voice control, story-telling, and other AI-based functions. The device can be programmed to access cloud platforms like AWS and Baidu, expanding its capabilities.
- Wireless Music Playback: Utilizing the BT capabilities of the ESP32, you can wirelessly play music from your mobile phone or tablet, providing a seamless and convenient audio experience.
- Versatile Connectivity: The ATOM VOICE supports 2.4G Wi-Fi IEEE 802.11b/g/n, allowing for easy and reliable wireless connectivity to the internet and other devices.
- RGB LED Status Display: The embedded RGB LED (SK6812) visually displays the connection status, providing a clear indication of the device's operational mode and status.
Choose local processing or Home Assistant Cloud
| Approach | Where speech is processed | Best for | Important trade-off |
|---|---|---|---|
| Fully local | Your Home Assistant system and/or another device on your LAN | Keeping spoken commands inside your home and controlling the hardware yourself | You must install, update and provide enough computing capacity for STT and TTS |
| Home Assistant Cloud | Speech-to-text and text-to-speech run on Nabu Casa’s servers; home actions still execute in Home Assistant | The quickest way to start with minimal local setup | Audio processing is handled by the cloud rather than entirely on your own hardware |
Home Assistant’s setup flow explicitly distinguishes “I plan to process my voice locally” from “I plan to use Home Assistant Cloud.” Select the local route when keeping processing at home is a requirement; select Cloud when convenience matters more than an all-local pipeline.
What you need before installing anything
- A running Home Assistant installation. The documented local, app-based setup uses Home Assistant OS. Other installation methods may expose different add-on and discovery options.
- An endpoint with a microphone and speaker. This can be the companion app on a phone, a dedicated Home Assistant voice device, an ESPHome satellite, or a Linux computer. A speaker-only device cannot start a voice conversation.
- A language choice. Speech recognition models and Piper voices are language-specific, so decide which language your household will use before configuring the pipeline.
- Entities exposed to Assist. A device can be present in Home Assistant but unavailable to voice control until it is exposed through the Assist settings.
- A local network path. If Wyoming services run on another machine, that machine must be reachable from Home Assistant and remain powered on when voice control is needed.
Build a fully local voice pipeline
1. Pick the speech-to-text engine
Home Assistant documents two principal local choices:
| Engine | Speech style | Hardware profile | Choose it when |
|---|---|---|---|
| Speech-to-Phrase | Recognizes a constrained set of home-control requests | Designed for a narrower task and generally lighter than open-ended transcription | You mainly want commands such as turning lights on or off, changing temperature, or activating scenes |
| Whisper | Attempts open-ended transcription | More resource-intensive; a separate, more powerful computer may be useful | You want flexible dictation or requests outside a fixed home-control vocabulary |
Speech-to-Phrase can be the better first test for a small system because its scope matches common home-control commands. Whisper is the more flexible option, but its processing demand means that a low-powered Home Assistant host may need help from another local machine.
2. Install the STT and TTS services
- Open the Home Assistant interface and go to Settings > Add-ons if your Home Assistant OS installation provides the relevant apps.
- Install and start either the Speech-to-Phrase app or the Whisper app. Use one as the STT engine for the initial pipeline; you can add another later for testing.
- Install and start the Piper text-to-speech app. Piper supplies the spoken response after Assist handles a command.
- Check Settings > Devices & services. Home Assistant should discover the running Wyoming services. Add each discovered service and complete any configuration dialog.
- If a service runs on another computer, verify its local-network address, port and firewall rules, then repeat discovery or add the Wyoming integration from the same Devices & services page.
Keep the service host stable. A changing address, a stopped container or an operating-system sleep policy can make a previously working pipeline appear broken.
3. Create the Assist assistant and pipeline
- Open Settings > Voice assistants and create or edit an Assist assistant.
- Choose the language used by your household.
- Under the pipeline’s speech-to-text setting, select Speech-to-Phrase or Whisper, depending on what you installed.
- Under text-to-speech, select Piper and choose a voice in the language of the pipeline.
- Save the assistant and make it the default for the endpoint you plan to use.
The exact voice list depends on the Piper voices installed and the selected language. If the language and voice do not match, recognition or pronunciation can be poor even though the services are online.
Rank #2
- POWERFUL PROCESSOR: Integrated ESP32-S3-PICO-1-N8R8 dual-core Xtensa LX7 processor running up to 240MHz with 8MB Flash and 8MB PSRAM for robust IoT voice interaction applications
- HIGH-QUALITY AUDIO: ES8311 24-bit mono audio codec with NS4150B Class D amplifier and 8 1W speaker delivers clear voice pickup through MEMS microphone (65dB SNR) and high-fidelity audio output
- WIRELESS CONNECTIVITY: Built-in 2.4GHz Wi-Fi enables seamless wireless communication for smart home control, AI voice assistants, and human-computer interaction scenarios
- COMPACT DESIGN: Ultra-compact dimensions of 0.94 x 0.94 x 0.66 inches and lightweight at 0.33 ounces, with integrated infrared transmitter for enhanced control capabilities
- EXPANDABLE INTERFACE: Programmable IoT controller with expandable pins and interfaces, operating at DC 5V power input and temperature range of 32F to 104F for versatile development needs
4. Expose only the devices you want to control
In Home Assistant’s Assist exposure controls, expose the lights, switches, climate devices, covers, media players, scenes and scripts that should be voice-accessible. Use names that are easy to say and unique within a room. For example, “desk lamp” and “ceiling lamp” are easier for Assist to distinguish than two entities both named “light.”
Exposure is also a safety boundary: an unexposed lock, garage door or script should not be selected by an ordinary voice command. Review the exposed list after adding new devices or importing a new integration.
5. Test with commands suited to the engine
Start with short requests that match your exposed entity names: “Turn on the kitchen light,” “Set the thermostat to 20 degrees,” or “Activate movie scene.” Wait for the spoken response and check the entity state in Home Assistant.
Speech-to-Phrase is intended for this kind of constrained home control. With Whisper, you can test longer, more conversational requests, but the resulting text still has to map to an Assist-supported intent. Open-ended transcription does not automatically give every Home Assistant integration a natural-language interface.
Add wake-word activation
Server-side detection with openWakeWord
In the server-side model, the satellite streams audio to Home Assistant and openWakeWord checks for the configured wake word. This allows a relatively limited endpoint to rely on the Home Assistant server for detection.
Rank #3
- Install and start the openWakeWord app.
- Go to Settings > Devices & services and configure the Wyoming integration discovered for openWakeWord.
- Open the Assist assistant configuration and select openWakeWord as the streaming wake-word engine.
- Choose a supported wake word and save the assistant.
- Test from the actual room and distance where the satellite will be used, not only beside the microphone.
Home Assistant recommends “ok nabu” for a first wake-word test. A wake word is an additional stage before speech recognition; installing an STT engine alone does not make a satellite hands-free.
Recommended Free Tools
On-device detection with microWakeWord
Home Assistant also documents microWakeWord for compatible hardware. Detection runs on the endpoint instead of streaming every moment to the server for wake-word analysis. This can reduce server-side work and may suit a device designed for local inference, but it depends on compatible hardware and available models.
The practical choice is therefore about compute location: use server-side openWakeWord when the endpoint is simple and the Home Assistant host can handle detection; use microWakeWord when your satellite supports it and you prefer detection on the device.
Creating a personal wake word
Home Assistant’s documented personal wake-word workflow currently supports English. Treat custom wake words as a compatibility feature rather than assuming every language or satellite can use them. Test false activations and missed detections before deploying a custom phrase throughout the house.
Choose a microphone and speaker endpoint
| Endpoint | Setup effort | Microphone and speaker | Wake-word options | When it fits |
|---|---|---|---|---|
| Home Assistant Voice Preview Edition | Low; dedicated Home Assistant hardware | Built in | Use the wake-word method supported by the device and your Assist configuration | You want an off-the-shelf voice endpoint rather than assembling components |
| Companion app on a phone | Low if the app is already installed | Uses the phone’s microphone and speaker | Initiated from the app; hands-free behavior depends on the phone and configuration | You want to try Assist without buying a satellite |
| M5Stack ATOM Echo Development Kit | DIY flashing and ESPHome configuration | Integrated microphone and speaker for a small satellite | Can use the documented server-side or compatible on-device approach | You want a low-cost, compact satellite and are comfortable configuring hardware |
| ESP32-S3-BOX devices | DIY hardware and firmware setup | Integrated microphone and speaker on compatible units | Depends on the firmware and supported wake-word model | You want an ESPHome-based build with more capable ESP32-S3 hardware |
| Linux computer with microphone and speaker | Higher; install and configure the Linux voice software | External or built-in peripherals | Can stream to Home Assistant; Home Assistant labels its Linux-Voice-Assistant project experimental | You have an existing computer and want to experiment before buying a dedicated device |
These are alternative endpoints, not mandatory parts of one build. A phone is enough for an initial test; a dedicated device is more convenient for a fixed room; an ESPHome or Linux satellite is appropriate when you want to build and customize the hardware yourself.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #4
- Powerful ESP32 Chip: Features the Espressif ESP32 main control chip with dual-core processing (up to 240MHz), ensuring efficient performance for IoT applications.
- Ample Memory: Equipped with 8MB PSRAM and 16MB FLASH, providing substantial memory for complex applications and multitasking.
- High-Definition Display: Integrated 2.0-inch full-color HD IPS display panel (320x240) for clear visualization of data and user interfaces, with a maximum brightness of 853 nits.
- Comprehensive Sensor Suite: Includes a 6-axis IMU, microphone, speaker, and 10 programmable RGB lights, making it suitable for diverse applications from smart home control to robotics.
- Extensive Connectivity: Offers rich interface options (ADC/DAC/I2C/UART/SPI) and three GROVE expansion ports for easy integration with other M5Stack modules and sensors.
Move heavy processing to another local computer
Wyoming services do not have to run on the same machine as Home Assistant. This is particularly useful for Whisper, whose open-ended transcription can require more resources than a small home server has available.
- Install the selected Wyoming-compatible STT or TTS service on the more powerful local computer.
- Give that computer a stable address on your home network, preferably through a DHCP reservation.
- Allow the service’s listening port through the computer’s local firewall, but restrict access to your trusted LAN.
- Start the service and confirm it is listening before opening Home Assistant.
- In Home Assistant, go to Settings > Devices & services, add or configure the discovered Wyoming service, and select it in the Assist pipeline.
- Run a short command from the endpoint. If recognition is slow, inspect CPU, memory and network latency on both machines.
Keeping the STT server on the local network preserves the local-processing model while letting you choose hardware appropriate to the model. The endpoint still needs a reliable audio path, and the server must remain available whenever voice control is expected.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Make commands reliable
Use distinct entity names
Assist has to map spoken words to entity names. Give each room and device a distinctive name, avoid near-duplicates, and say the room when two devices share a generic label. Rename entities in Home Assistant rather than trying to compensate with increasingly complicated sentences.
Match the language everywhere
Set the same language intentionally in the assistant, STT engine and Piper voice. A pipeline configured for one language with a voice from another can produce understandable text but unnatural or incorrect speech output.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Start with one room
Commission one endpoint, one STT engine and a small set of exposed devices first. Add a second satellite only after the first has dependable recognition and playback. This isolates microphone placement, wake-word sensitivity and network problems before they are multiplied across the house.
Best Value
- ESP32 WI-FI & 4MB FLASH: Powered by ESP32-PICO-D4 dual-core 240 MHz with 4 MB Flash and built-in 3D antenna – delivers reliable 2.4 GHz Wi-Fi for IoT nodes, wearable devices, and embedded applications.
- ULTRA-COMPACT 24×24mm BODY: Measures just 24×24×9.5 mm and weighs only 5.5 g with M2 screw hole mounting – fits into the tightest spaces for seamless integration into smart wearable and custom IoT builds.
- IR TRANSMITTER & RGB LED: Built-in IR transmitter and SK6812 RGB LED provide wireless remote control and visual status feedback – ideal for smart home control and interactive embedded IoT applications.
- USB TYPE-C & MULTI-PLATFORM: USB Type-C enables direct programming and serial communication; supports UiFlow1/2, Arduino IDE, ESP-IDF & PlatformIO – accessible for beginners and experienced developers alike.
- 6 GPIO & GROVE EXPANSION: Provides 6 GPIO pins (G19/G21/G22/G23/G25/G33) plus GROVE I2C/I/O/UART interface – enables flexible sensor and peripheral expansion for diverse embedded IoT project builds.
Use scenes and scripts for multi-step actions
Instead of asking Assist to infer a long sequence of individual device changes, create a clearly named Home Assistant scene or script and expose that entity. A command such as “activate good night” is easier to test and safer to maintain than a sentence that depends on several unrelated intents.
Troubleshoot common failures
The Wyoming service does not appear
- Confirm the app or service is installed and running.
- Check that Home Assistant and the service host are on reachable network segments.
- Review firewall rules and container port mappings.
- Restart the service, then revisit Settings > Devices & services.
- If the host address changed, update the integration or reserve the address in DHCP.
Speech is recognized but nothing happens
- Verify the target entity is exposed to Assist.
- Use the exact room or device name shown in Home Assistant.
- Try a simple supported intent such as turning a light on or off.
- Check the entity’s current state and whether an automation, condition or script permission prevents the action.
The response is silent
- Confirm Piper is installed, started and selected as the TTS service in the pipeline.
- Check that a voice exists for the pipeline language.
- Raise the endpoint volume and verify that its speaker is connected to the same device receiving the response.
- Test another endpoint to distinguish a pipeline problem from a speaker or firmware problem.
Wake-word detection is unreliable
- Move the microphone away from the speaker to reduce feedback.
- Test at the intended distance and with normal room noise.
- Confirm the selected wake-word engine is installed and assigned to the assistant.
- For server-side detection, check that the satellite is streaming audio continuously enough for openWakeWord to hear the phrase.
- For microWakeWord, verify that the hardware and model are compatible.
Whisper is too slow
- Try Speech-to-Phrase if your requests are ordinary home-control commands.
- Run Whisper on a more powerful computer on the local network.
- Reduce competing workloads on the Home Assistant host.
- Measure whether the delay is model processing or network transport before changing hardware.
Privacy, security and maintenance
Local processing keeps spoken commands on hardware you control, but it does not remove ordinary network-security responsibilities. Restrict Wyoming services to the home network, avoid exposing their ports directly to the internet, keep Home Assistant and the voice apps updated, and use strong administrator credentials.
Review which entities are exposed to Assist whenever you add a lock, garage door, alarm, payment-related integration or powerful script. Voice control is convenient, but anyone within microphone range may be able to issue an exposed command unless you add an additional confirmation or automation condition.
Because the consulted Home Assistant documentation pages do not state publication dates, check the current documentation and compatibility notes before purchasing hardware or relying on a particular wake-word model. Hardware availability, app names and supported models can change between Home Assistant releases.
A practical rollout plan
- Install the Home Assistant companion app and test Assist manually with one or two exposed lights.
- Install Piper and Speech-to-Phrase locally; confirm the complete STT-to-intent-to-TTS loop.
- Switch to Whisper only if you need open-ended transcription and have suitable computing capacity.
- Add a fixed microphone-and-speaker endpoint, then test audio quality and entity naming in its room.
- Install openWakeWord for server-side activation, or microWakeWord if the endpoint supports on-device detection.
- Expose additional devices gradually and create scenes or scripts for multi-step routines.
- Document the chosen language, service host, endpoint names and recovery steps so another household member can maintain the system.
The result is a modular open-source voice system: Assist handles Home Assistant’s intents, Wyoming connects local voice services, Piper speaks responses, and your chosen endpoint supplies the microphone and speaker. You can begin with a phone and expand to dedicated or DIY satellites without replacing the core pipeline.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

