mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-18 23:06:58 +00:00
Assist: about wake words: add approach (#29661)
* Assist: about wake words: add approach - add some comceptual information about the Home Assistant approach to realize wake words - Content source: Bog post https://www.home-assistant.io/blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/ * Apply suggestions from code review Co-authored-by: Michael Hansen <hansen.mike@gmail.com> --------- Co-authored-by: Michael Hansen <hansen.mike@gmail.com>
This commit is contained in:
parent
a955fcd415
commit
e7fd171c42
@ -4,10 +4,41 @@ title: "About wake words"
|
||||
|
||||
Wake words are special words or phrases that tell a voice assistant that a command is about to be spoken. The device then switches from passive to active listening. Examples are: *Hey Google*, *Hey Siri*, or *Alexa*. Home Assistant supports its own wake words, such as *Hey Nabu*.
|
||||
|
||||
## The Home Assistant approach to wake words
|
||||
|
||||
### The challenge
|
||||
|
||||
- The wake words have to be processed extremely fast: You can’t have a voice assistant start listening 5 seconds after a wake word is spoken.
|
||||
- There is little room for false positives.
|
||||
- Wake word processing is based on compute-intensive AI models.
|
||||
- Voice satellite hardware generally does not have a lot of computing power, so wake word engines need hardware experts to optimize the models to run smoothly.
|
||||
|
||||
### The approach
|
||||
|
||||
To avoid being limited to specific hardware, the wake word detection is done inside Home Assistant. Voice satellite devices constantly sample current audio in your room for voice. When it detects voice, the satellite sends audio to Home Assistant where it checks if the wake word was said and handle the command that followed it.
|
||||
|
||||
This means any device that streams audio can be turned into a voice satellite, even if it isn't powerful enough to run wake word detection locally. It also allows our developer community to experiment with wake word models without having to shrink the model to run on a low-powered voice satellite device.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/blog/2023-10-12-year-of-the-voice-chapter-4/wake-word-architecture.png'>
|
||||
Overview of the wake word architecture
|
||||
</p>
|
||||
|
||||
### Drawbacks of this approach
|
||||
|
||||
1. The quality of the captured audio differs between devices. 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.
|
||||
|
||||
2. Each satellite requires ongoing resources inside Home Assistant while it’s streaming audio. Currently, users can have 5 voice satellites streaming audio at the same time without overwhelming a Raspberry Pi 4. To scale up, we’ve updated [the Wyoming protocol][wyoming] to allow users to run wake word detection on an external server.
|
||||
|
||||
## About the openWakeWord add-on
|
||||
|
||||
Home Assistant’s wake words are leveraging a new project called [openWakeWord] by David Scripka. This project has real-world accuracy, runs on commodity hardware and anyone can [train a basic model of their own wake word][own-wake-word].
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/blog/2023-10-12-year-of-the-voice-chapter-4/pick-wake-word.png'>
|
||||
Users can pick per configured voice assistant what wake word to listen for
|
||||
</p>
|
||||
|
||||
### The challenge
|
||||
|
||||
openWakeWord is created with 4 goals in mind:
|
||||
@ -61,4 +92,5 @@ To try wake words today, follow the guide to the [$13 voice assistant][13-tutori
|
||||
[13-tutorial]: /voice_control/thirteen-usd-voice-remote/
|
||||
[openWakeWord]: https://github.com/dscripka/openWakeWord
|
||||
[own-wake-word]: /voice_control/create_wake_word/
|
||||
[Piper]: https://github.com/rhasspy/piper/
|
||||
[Piper]: https://github.com/rhasspy/piper/
|
||||
[wyoming]: https://github.com/rhasspy/wyoming
|
Loading…
x
Reference in New Issue
Block a user