12 months of the Voice – Chapter 4: Wake phrases

This 12 months is Dwelling Assistant’s 12 months of the Voice. It’s our objective for 2023 to let customers management Dwelling Assistant by talking in their very own language.

We’ve acquired nice information: wake phrases are lastly right here! After 4 chapters, we now have the ultimate constructing block for voice in Dwelling Assistant.

In Chapter 1, we began with textual content instructions reminiscent of “activate the kitchen mild” and “open storage door”. We now support 56 languages and have 188 contributors serving to to translate frequent sensible residence instructions for everybody.

Chapter 2 launched audio for voice instructions: each speech-to-text and text-to-speech. This included native choices for max privateness in addition to help for Dwelling Assistant Cloud for unimaginable pace and language protection. Lastly in Chapter 3, we added the power to set Dwelling Assistant as your default assistant on Android telephones and watches.

For Chapter 4, we’ve now added wake phrase processing inside Dwelling Assistant. Wake phrases are particular phrases or phrases that inform a voice assistant {that a} command is about to be spoken. Examples are: Hey Google, Hey Siri or Alexa.

Dwelling Assistant’s wake phrases are leveraging a brand new challenge known as openWakeWord by David Scripka. This challenge has real-world accuracy, runs on commodity {hardware} and anybody can prepare a fundamental mannequin of their very own wake phrase in an hour, without cost.

To strive wake phrases at this time, comply with our up to date information to the $13 voice assistant.

To look at the video presentation of this weblog publish, together with reside demos, test the recording of our live stream.

Wake words in Home Assistant

Wake words are hard to build. They are based on AI, there is little room for false positives, and they need to run extremely fast: as fast audio as comes in. You can’t have a voice assistant start listening 5 seconds after a wake word is spoken. Voice satellite hardware generally does not have a lot of computing power so wake word engines need hardware experts to optimise the models to run smoothly.

We didn’t want to limit ourselves to a single type of hardware, so we decided to change the approach: we do the wake word detection inside Home Assistant. Voice satellite devices will constantly sample current audio in your room for voice. When it detects voice, the satellite will send audio to Home Assistant where it will check if the wake word was said and handle the command that followed it.

Overview of the wake word architecture

The advantage of this approach is that any device that streams audio can be turned into a voice satellite, even if it doesn’t have enough power to do wake word detection locally. It also allows our developer community to easily experiment with new wake word models as they don’t have to first shrink it to be able to run on a low-powered voice satellite device.

To try it out, follow our updated tutorial to create your own $13 voice assistant.

There are downsides to this approach. The first is that the quality of the captured audio differs. A speakerphone with multiple microphones and audio processing chips captures voice very cleanly. A device with a single microphone and no post-processing? Not so much. We compensate for poor audio quality with audio post-processing inside Home Assistant and users can use better speech-to-text models to improve accuracy like the one included with Home Assistant Cloud.

The other downside of this approach is that each satellite requires ongoing resources inside Home Assistant when it’s streaming audio. With our current approach, users can run 5 voice satellites without overwhelming a Raspberry Pi 4 (assuming all satellites are streaming at the same time). To scale up, we’ve updated the Wyoming protocol to permit customers to run wake phrase detection on an exterior server.

Wyoming is our protocol permitting to run components of a voice assistant in different packages and/or computer systems

Customers can decide per configured voice assistant what wake phrase to pay attention for


For the built-in wake words, we rely on openWakeWord by David Scripka. It’s a technological marvel that’s created with 4 targets in thoughts:

  • Be quick sufficient for real-world utilization
  • Be correct sufficient for real-world utilization
  • Have a easy mannequin structure and inference course of
  • Require little to no handbook information assortment to coach new fashions

To attain its targets, openWakeWord is constructed round an open supply audio embedding mannequin skilled by Google and fine-tuned utilizing our text-to-speech system Piper. Piper is used to generate many 1000’s of audio clips for every wake phrase utilizing a novel strategy that creates infinite variations of various audio system. These audio clips are then augmented to sound as in the event that they had been spoken in a number of sorts of rooms, at particular distances from a microphone, and with various speeds. Lastly, the clips are combined with background noise like music, environmental sounds, and dialog earlier than being fed into the coaching course of to generate the wake phrase mannequin.

Overview of the openWakeWord coaching pipeline.

Dwelling Assistant runs openWakeWord as an add-on and comes with numerous wake phrase fashions by default, together with our “Okay Nabu” mannequin. Click on the button beneath to put in it.

As soon as put in, the add-on will probably be found through the Wyoming integration.

OpenWakeWord at the moment solely works for English wake phrases. It is because we lack fashions of different languages with many alternative audio system. Comparable fashions for different languages will be skilled as extra multi-speaker fashions per language develop into accessible.

In the event you’re not working Dwelling Assistant OS, openWakeWord can also be accessible as a Docker container. As soon as the container is working, you will want so as to add the Wyoming integration and level it at its IP tackle and port (sometimes 10400).

Make your personal wake phrase

What makes openWakeWord distinctive is its capacity to effective tune Google’s mannequin, skilled on clips from actual voices, with faux voice clips generated by Piper. This makes it doable to create your personal wake phrases with out accumulating samples from actual folks (although actual samples can enhance the result).

David created a Google Collab pocket book to create your personal openWakeWord mannequin. Enter your required wake phrase and an hour later you get your personal wake phrase (utilizing the free computing accessible to all Google Collab customers).

To get began, see our new “create your own wake word”-tutorial.

The models generated with the notebook will perform reasonably well. They will not perform as well as the ones bundled with Home Assistant which have received a lot of extensive training.

Screenshot of the wake word generation notebook

Other wake word engines

In Home Assistant, we ship our defaults but allow a user to configure each part of their voice assistants. This also applies to our wake words.

Wake word engines can integrate with Home Assistant by adding them as an integration or run them as a standalone program that communicates with Home Assistant via the Wyoming protocol.

How wake phrases combine into Dwelling Assistant

For example, we’re additionally making the Porcupine (v1) wake phrase engine accessible. It helps 29 wake phrases throughout English, French, Spanish and German, together with Laptop, Framboise, Manzana and Stachelschwein.

Reuse and repurpose: different ways to create a voice satellite

We’re building our voice assistant based on our Open Home vision: a smart home that values privacy, choice and sustainability. Two words that are often mentioned as part of sustainability are reuse and repurpose.

Since our voice satellite is only responsible for capturing audio, a lot of devices one might have in their “old tech” drawer can be given a new life and purpose as a voice satellite.

When audio is captured via USB, we recommend using a USB speakerphone because they contain audio processing chips that clean up the audio and enhance voices. They also come with a speaker and look a bit like one expects a voice satellite to look. We had great results in our testing with the Anker PowerConf S330. It did require a firmware replace earlier than it may very well be used with Dwelling Assistant.

Some USB speakerphones would require a powered USB hub due to energy limits on the Raspberry Pi’s USB ports.

Turn Home Assistant into a voice satellite

You can configure your device running Home Assistant to capture audio and turn it into a voice assistant. To do this, you need to plug in a USB microphone or speakerphone and configure the Assist microphone add-on. Your Home Assistant device may need to be rebooted before the microphone is usable.

Dwelling Assistant Blue with a speakerphone

Turn any ESP32 into a voice satellite using ESPHome

ESPHome is our firmware to permit customers to simply create gadgets for his or her sensible residence. In 12 months of the Voice – Chapter 2, we’ve added help for ESPHome to just accept voice instructions when a person pushes a button.

In the present day, that help is prolonged to permit any ESP32 gadget with an i2s microphone to develop into a voice satellite tv for pc for Dwelling Assistant.

Voice assistant on a breadboard.

Really helpful components:

Example configuration

This methodology requires customers to have fundamental expertise with configuring ESPHome gadgets.

Turn any old Raspberry Pi into a voice satellite

We’ve made homeassistant-satellite accessible that lets you join a USB microphone or speakerphone to an outdated Raspberry Pi, or every other Linux pc, and switch it right into a voice satellite tv for pc for Dwelling Assistant.

Whereas any Linux pc works, we suggest limiting it to ARM-based processors as a result of they use so much much less power.

This methodology requires customers to know find out how to set up purposes on a Linux system.

Voice office hours for scientists

We want Home Assistant to be used as a platform for scientists that are developing new wake word, speech-to-text and text-to-speech engines. Working with Home Assistant allows you to try your model as part of a voice assistant in a real world scenario. The Home Assistant community loves new technology and will be great in testing it out and providig feedback.

Engines can be plugged Home Assistant’s voice pipelines using the Wyoming protocol. Whereas small, the Wyoming protocol will be tough to get proper for first time integrators. In the event you’re such an individual, attain out to us at [email protected] and we’ll show you how to combine.

What’s next

Now that the foundation is in place for all parts of a voice assistant, it will be easier for us to share what we are going to work on next.

We want to work towards supporting the most common tasks that people use with other voice assistants. This includes support for multiple shopping lists, timers and weather forecasts.

To improve accuracy, openWakeWord allows further fine-tuning of the model with recordings made by the user via their own voice satellite. We want users to be able to easily record themselves and let Home Assistant create this improved model.

On the voice satellite side we’re going to integrate more advanced audio processing to improve wake word and Speech-to-Text accuracy. We will also do another attempt at getting wake words running inside ESPHome.

The voice satellite improvements will require more advanced hardware and we’re aiming for the ESP32 S3 Box 3. This is the new variant of the now discontinued ESP32 S3 Box (and lite version). Espressif told us that it will be in stock soon.

If you already have an ESP32 S3 Box variant, you can install our ESPHome configuration to obtain these updates as they arrive accessible.

That’s a wrap!

We hope that you enjoy the wake words and that you set up voice satellites around your house. Let us know how it goes and share your experience with us.

See you soon in chapter 5!

Thank You

A big thanks to David Scripka for openWakeWord. Thanks to Jesse Hills for his patience and support while Mike and I explored wake word architectures and help ESPHome fit in. Big thanks to everyone at Nabu Casa who has helped make and review today’s content.

Thank you to the Home Assistant community for subscribing to Home Assistant Cloud to help 12 months of the Voice and growth of Dwelling Assistant, ESPHome and different initiatives normally.

Due to our language leaders for extending the sentence help to all the varied languages.

Thank you for supporting the Home Assistant project