Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Connect an open-source voice assistant to Home Assistant by using Assist as the conversation layer and the Wyoming integration as the bridge to local speech services. Choose a speech-to-text engine such as Speech-to-Phrase or Whisper, pair it with Piper for text-to-speech, select both in an Assist pipeline, and attach a microphone-and-speaker endpoint such as the Home Assistant phone app, a dedicated satellite, or DIY hardware. Add openWakeWord or microWakeWord if you want hands-free activation.
What the connection actually includes
Home Assistant Assist is the voice assistant built into Home Assistant. It does not consist of one executable that you install on every device. Instead, an Assist pipeline joins four jobs:
- Listening hardware: A phone, dedicated voice device, ESPHome satellite, or computer supplies a microphone and usually a speaker.
- Speech recognition: A speech-to-text service converts the recorded audio into words.
- Conversation and intent handling: Home Assistant matches those words to an Assist command, determines the requested action, and calls the appropriate entity or service.
- Spoken output: A text-to-speech service turns Home Assistant’s response into audio for the endpoint.
For a local installation, the Wyoming integration connects Home Assistant to services such as Speech-to-Phrase, Whisper, Piper, and openWakeWord. Each service can run on the Home Assistant host or on another computer on the same network. Moving a demanding service to a more powerful computer leaves a smaller Home Assistant system free to manage automations and devices.
PC 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 & 11Crashes, 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 minuteChoose local processing or Home Assistant Cloud
The first decision is where speech is processed. It affects privacy, hardware, setup time, and what happens when the internet is unavailable.
#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.
| Approach | Where speech-to-text and text-to-speech run | What you need | Best fit |
|---|---|---|---|
| Fully local | On the Home Assistant host or another computer on your local network | Wyoming-compatible services, enough CPU or a separate machine, and a configured Assist pipeline | People who want spoken commands to stay on their own hardware or who need the voice path to keep working without an internet connection |
| Home Assistant Cloud | Home Assistant Cloud processes speech-to-text and text-to-speech on Nabu Casa servers; the resulting actions still run in Home Assistant | A Home Assistant Cloud account and an endpoint such as the phone app or a voice device | People who want the simplest starting path and do not want to maintain local speech services |
Home Assistant’s setup choices use wording equivalent to I plan to process my voice locally and I plan to use Home Assistant Cloud. Select the local option when keeping audio and transcription at home is the priority. Select Cloud when minimizing installation and hardware work matters more. You can change the pipeline later; the endpoint does not have to change just because the speech engine changes.
Prerequisites for a local voice pipeline
Before installing anything, verify these conditions:
- Home Assistant is running and reachable from the device that will provide the microphone and speaker.
- For the documented fully local phone-app route, Home Assistant OS is the supported base.
- You have an endpoint with a working microphone and speaker. A phone can serve as both; a satellite normally has both built in; a Linux computer needs peripherals connected.
- The endpoint and any Wyoming service hosted elsewhere can reach Home Assistant over the local network.
- You know which language you want Assist to recognize and which devices should be controllable by voice.
- You have enough processing capacity for the speech-to-text engine you select. Whisper is substantially more demanding than a constrained command recognizer, so a separate computer may be appropriate.
Keep the first test simple: expose one or two lights or switches and use their exact Home Assistant names. This separates a voice-recognition problem from an entity naming or permission problem.
Free tools Windows power users keep installed
One-click scans. No signup required.
Build a fully local Assist setup
1. Decide between Speech-to-Phrase and Whisper
Speech-to-Phrase is designed for a narrower set of home-control requests. It is a good first choice when you mainly want commands such as turning lights on, setting a temperature, or checking a sensor and you prefer lower resource requirements.
Whisper attempts open-ended transcription. It is the better fit when you expect free-form dictation or commands outside a constrained home-control vocabulary, but it needs more computing power. Home Assistant’s local setup guidance explicitly frames the choice around both hardware capacity and whether you expect to go beyond simple home control.
| Speech-to-text service | Strength | Limitation to plan for | Practical choice |
|---|---|---|---|
| Speech-to-Phrase | Fast, focused recognition for supported home-control phrases | Less suitable for open-ended speech or requests outside its supported command set | Start here on modest hardware when voice control is mainly about home entities |
| Whisper | Open-ended transcription | Higher CPU, memory, and possibly acceleration requirements | Use it locally on a stronger host or a separate computer when flexible language matters |
2. Install and start the Wyoming speech services
Install the speech-to-text application you selected and install Piper for spoken responses. Start both services. When Home Assistant discovers a Wyoming service, add it from Settings > Devices & services. If the service is on another machine, make sure its network address and port are reachable from Home Assistant and that local firewall rules permit the connection.
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
Wyoming is a protocol and integration layer, not a single speech engine. Its value is that Home Assistant can use the same Assist pipeline structure while the actual recognition, synthesis, or wake-word process runs on different hardware.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →3. Add or confirm your endpoint
Install the Home Assistant Companion app on a phone if you want the quickest microphone-and-speaker endpoint. The app can send a spoken request to Assist and play the response. For a room-based installation, use dedicated Home Assistant voice hardware, an ESPHome satellite, or a DIY board with a microphone and speaker.
A Linux computer with a microphone and speaker is another documented route. Home Assistant labels its Linux Voice Assistant project experimental, so expect more manual setup and less predictable behavior than with a supported phone or dedicated device.
4. Create an Assist assistant and pipeline
In Home Assistant, open the Assist settings and create or edit an assistant. Choose the language, then create a pipeline that uses your Wyoming speech-to-text service and Piper for text-to-speech. The exact labels can change between Home Assistant releases, but the required choices remain the same: language, speech-to-text provider, conversation agent, and text-to-speech provider.
Expose only the devices you intend to control. In each entity’s exposure settings, give it a clear name and area. Voice recognition may be perfect while the command still fails if the light is not exposed, has an ambiguous name, or is assigned to an unexpected area.
5. Test without a wake word
Run Assist manually from the phone app or device before adding hands-free activation. Try a command that matches the selected engine’s strengths, such as turning on a clearly named light. Confirm three separate results:
Rank #3
- The endpoint records your voice and sends audio.
- The selected speech-to-text service produces the expected words.
- Home Assistant performs the action and Piper speaks a response.
If manual Assist works, the core pipeline is sound. Add a wake word only after these three stages succeed.
Add wake-word activation
A wake word requires a microphone-equipped satellite. The satellite either detects the phrase itself or streams audio to Home Assistant for detection.
Server-side detection with openWakeWord
In the server-side model, the satellite continuously streams audio to Home Assistant. The openWakeWord service checks that stream for the configured phrase. This lets a relatively limited satellite rely on the Home Assistant host or another local computer for detection.
- Install and start the openWakeWord application.
- Let Home Assistant discover it and add the Wyoming integration from Settings > Devices & services.
- Open the Assist assistant configuration and set openWakeWord as the streaming wake-word engine.
- Select a supported wake word and save the assistant.
- Test in the same room and at the distance where you expect to use the satellite.
Home Assistant recommends ok nabu for an initial test. Treat wake-word performance as a room and microphone issue as well as a software issue: background audio, speaker placement, and distance can all affect detection.
On-device detection with microWakeWord
microWakeWord performs detection on compatible hardware. Audio does not need to be streamed continuously to the server solely for wake-word analysis, but the device must have enough memory and a compatible model. This approach can reduce server work and local network streaming, while server-side openWakeWord supports satellites with very limited compute.
Choose between them according to the hardware you own. Do not assume that every ESP32 board supports every microWakeWord model; compatibility depends on the device and the available model. Home Assistant’s documented personal wake-word creation workflow currently supports English, so a custom phrase in another language is not covered by that workflow.
Rank #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.
Choose a microphone-and-speaker endpoint
There is no single required satellite. The right option depends on whether you value minimal setup, a compact room device, on-device processing, or the freedom to build and repair your own hardware.
| Endpoint | Setup effort | Microphone and speaker | Wake-word processing | When it makes sense |
|---|---|---|---|---|
| Home Assistant Voice Preview Edition | Low compared with a DIY build | Integrated | Depends on the configured voice and wake-word path | A purpose-built device with less assembly work |
| Phone with the Home Assistant Companion app | Low; install and sign in to the app | Integrated | Can invoke Assist from the app; hands-free behavior depends on the phone and configured wake-word route | Testing, personal use, or rooms where a phone is already present |
| M5Stack ATOM Echo Development Kit | Moderate; flash and configure the satellite | Integrated on the development kit | Can use a server-side wake-word path; on-device behavior depends on compatible firmware and models | A low-cost satellite experiment or a compact DIY-style room endpoint |
| ESP32-S3-BOX hardware | Moderate to high, depending on the build | Integrated on supported devices | Can support local or server-assisted designs according to the hardware and firmware | DIY builders who want a capable ESPHome-based endpoint |
| Linux computer with microphone and speaker | High; the Linux Voice Assistant project is experimental | Usually separate peripherals | Can stream to server-side services or run suitable local components | Reusing an existing computer and accepting experimental software |
The table compares documented categories rather than promising identical behavior across every board revision or software release. Check current compatibility for a specific device before buying or flashing it; Home Assistant’s documentation pages do not provide publication dates, and hardware availability and integration labels can change.
Configure entity names and permissions for reliable commands
Assist can only control entities that Home Assistant exposes to it. Open the exposure controls for each light, switch, climate device, or scene you want to use. Use names that are easy to distinguish when spoken, and assign an area such as kitchen or bedroom.
- Avoid giving two lights the same spoken name in different rooms unless you always include the area.
- Prefer names that sound different when spoken; similar names increase recognition ambiguity.
- Expose a small set first, then expand after the basic pipeline works.
- Use the exact entity name in your test command so you can tell whether a failure came from transcription or entity matching.
For example, expose a light named desk lamp in an area named office, then test with a phrase that includes both the device and the desired state. If the transcript shows the correct words but Home Assistant reports that no device matches, adjust exposure, naming, or area assignment rather than replacing the speech engine.
Troubleshoot by isolating each stage
No Wyoming service appears
- Confirm the application is installed and running.
- Check that Home Assistant and the service are on the same reachable network.
- Verify the service’s listening address and port and allow them through the host firewall.
- Open Settings > Devices & services and look for a discovered integration or add the service using the integration’s setup flow.
The endpoint records silence or distorted audio
- Test the microphone with the phone or satellite’s own audio tools.
- Move the device away from its speaker and obvious sources of vibration or fan noise.
- Check microphone permissions for the companion app.
- Run manual Assist before testing the wake word, so you do not confuse wake-word detection with an audio-input problem.
The transcript is wrong
- Use a command within Speech-to-Phrase’s supported home-control scope, or switch to Whisper for open-ended language.
- Speak the entity name exactly as configured and reduce background audio.
- Move Whisper to a more powerful local computer if transcription is slow or times out.
- Confirm the pipeline language matches the language you are speaking.
The transcript is correct but nothing happens
- Verify that the target entity is exposed to Assist.
- Check the entity’s area and spoken name.
- Try a simpler command against one known light or switch.
- Confirm that the selected assistant and pipeline are the ones used by the endpoint.
The response is correct but there is no speech
- Confirm Piper is running and discovered through Wyoming.
- Check that a Piper voice is selected in the pipeline and that its language matches the assistant.
- Test the endpoint speaker independently and check its volume.
- If Piper runs on another machine, verify network reachability in both directions needed by the integration.
The wake word does not trigger
- First verify that manual Assist works.
- For openWakeWord, confirm the Wyoming integration is configured and selected as the streaming wake-word engine.
- Test the documented phrase
ok nabubefore attempting a custom phrase. - For microWakeWord, verify that the board and selected model are compatible.
- Reduce distance and background noise during the initial test, then retest from the intended speaking position.
Performance, privacy, and network design
Local processing keeps spoken commands on hardware you control, but it makes that hardware part of the system’s performance budget. Speech-to-Phrase is usually the easier starting point on modest systems because its scope is constrained. Whisper offers broader transcription but can require moving the workload to a stronger computer. Piper adds its own CPU and memory demand when generating speech, especially if several satellites request responses at once.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Running Wyoming services on a separate local machine is a useful compromise. Home Assistant remains the automation controller, while a desktop or small server supplies the processing needed by Whisper or multiple voice sessions. Keep that machine on the trusted home network, update it, and restrict service ports to the network segments that need them.
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.
With Home Assistant Cloud, speech-to-text and text-to-speech are handled on Nabu Casa’s servers, while actions in the home continue to execute in Home Assistant. This reduces local maintenance and hardware requirements but means the voice-processing path depends on the cloud service and an internet connection.
A practical decision guide
Choose the simplest local start
Use a phone or supported dedicated endpoint, Speech-to-Phrase, and Piper. Expose a few lights and switches, test manual Assist, and add a wake word after the command path works. This minimizes the number of variables while keeping processing local.
Choose flexible local language
Use Whisper when you need open-ended transcription. Put it on a more powerful computer if the Home Assistant host cannot process requests promptly. Keep Piper and Assist on the same pipeline, and test latency from the actual room rather than from the server’s console.
Choose a room satellite
Use a dedicated Home Assistant voice device, an ATOM Echo Development Kit, or ESP32-S3-BOX hardware. Pick server-side openWakeWord when the satellite has limited compute; consider microWakeWord when the device and model support on-device detection.
Choose minimal maintenance
Use Home Assistant Cloud and a phone or supported voice device. This avoids installing local speech services and is described by Home Assistant as the simplest way to start, but it does not provide the same local-processing boundary as a Wyoming pipeline.
Maintenance and compatibility checks
Home Assistant’s documentation pages for these setup paths do not show publication dates. Integration names, setup screens, supported boards, wake-word models, and hardware availability can therefore change as Home Assistant and the underlying services evolve. Before replacing a working setup or purchasing a satellite, check the current documentation for the Home Assistant version, device revision, language, and model you plan to use.
Keep a short record of your working configuration: the selected assistant, pipeline language, speech-to-text service, Piper voice, wake-word engine, endpoint, and exposed entities. That record makes recovery straightforward after an operating-system update, a service migration, or a change from server-side to on-device wake-word detection.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →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.

