Change Wakeword in NeonAI Personal Voice Assistant
Neon.AI is a channel partner and software alternative for Mycroft AI, an open-source voice assistant. Since Mycroft’s announcement that they will be closing software operations, Neon has taken over those responsibilities for the Mycroft private personal voice assistant ecosystem.
Neon is considered the commercial option for the current ecosystem of voice assistants, which also includes Mycroft Classic Core (unmaintained and several years out of date), Mycroft Dinkum (not compatible with the existing ecosystem of Mycroft skills, only functions on Mycroft Mark II hardware, and introduces several breaking changes that are incompatible with other voice assistant platforms), and OpenVoice OS (OVOS). Neon is built on top of OVOS, which is currently geared towards developers or those using the KDE BigScreen voice assistant option.
Wakewords
By default, Neon comes with several possible wake words (wake word engine in parentheses):
- Hey Mycroft (Precise)
- Hey Neon (Vosk)
- Hey Ziggy (Vosk)
- Thank you (Vosk - courtesy wake word, does not trigger listening for skills)
- Wake up (Vosk)
Depending on the version of Neon Core you are running, it will respond to either “Hey Neon” or “Hey Mycroft” out of the box.
The default wake words use one of two different plugins, Precise or Vosk. Precise is typically the more accurate of the two because it is trained on recordings and uses an ML model. Vosk translates sounds to phonemes and will generally be more sensitive and prone to error, especially for something like “Hey Neon,” which will trigger almost any time it picks up an “EE” sound.
Neon users frequently report that “Hey Neon” is too sensitive. “Hey Mycroft” currently uses the same trained model that the Mark 2 Dinkum software used, which included more samples of higher-pitched voices, so it is more responsive to children and women. “Hey Ziggy” is a Vosk wake word. Due to the less common combination of sounds in English, it is generally more responsive and less prone to accidental activation. At this time, users have not reported much feedback on “Wake Up” or “Thank you.”
Neon users who are comfortable with the command line have the option to import any number of supported wake word models and plugins. If you prefer not fussing much adding models and want to set up one of the provided wake words, here is how:
- Log into the Neon CLI via SSH, which must be enabled from the “Device Settings” menu first.
- To get to Device Settings, drag from the top center of the screen down. You’ll hear a click and the menu will appear. Press “Enable SSH”
- Open
~/.config/neon/neon.yaml
in your preferred text editor, usuallynano
orvim
butemacs
is also a popular choice. If you’re not sure, choosenano
. - Since the Neon configuration is constructed from multiple files on the device, you must include all of the possible default options in your
~/.config/neon/neon.yaml
file to override the defaults. Example: - If you’re setting up a
precise-lite
model wakeword, be sure to runpip install ovos-ww-plugin-precise-lite[tflite]
(the exact command, as written) first. This is especially important on Neon Mark 2 images. EDIT: As of Neon v2, you need to add this to your~/.config/neon/neon.yaml
file underskills.default_skills
:
skills:
default_skills:
- ovos-ww-plugin-precise-lite[tflite]
hotwords:
hey_mycroft:
active: false
module: ovos-ww-plugin-precise-lite
sound: snd/start_listening.wav
model: "https://github.com/OpenVoiceOS/precise-lite-models/raw/master/wakewords/en/hey_mycroft.tflite"
expected_duration: 3
trigger_level: 3
sensitivity: 0.5
hey_neon:
module: ovos-ww-plugin-vosk
active: false
sound: snd/start_listening.wav
debug: false
rule: fuzzy
lang: en
samples:
- hey neon
hey_ziggy:
module: ovos-ww-plugin-vosk
sound: snd/start_listening.wav
debug: false
rule: fuzzy
lang: en
samples:
- hey ziggy
thank_you:
module: ovos-ww-plugin-vosk
sound: snd/acknowledge.mp3
wake_up:
module: ovos-ww-plugin-vosk
- Now that you have all of the defaults in one location, set
active: false
to whichever wake words you don’t want to use. You’ll also now want to addlisten: true
to the wakeword you do want to use. Note that you don’t need to addactive: true
to the wake words you do want to use, because that is the default value foractive
. Ifactive
orlisten
are not available in your configuration they may be added.- Be cautious - YAML is whitespace sensitive! Make sure your indentations are correct. Use a YAML validator like yamllint.com to validate your file is correct.
- (EDIT) One of the developers at Neon had a brief correction: “…you only need to add
active: false
to disable the default WW;listen
shouldn’t be evaluated if the WW is marked as notactive
.”
- Save the file and exit your editor (ctrl+x in nano, :wq! in vim)
- Since you’re on the command line already, run
sudo systemctl restart neon-voice
. It will take some time for the service to come back up.- If you prefer, you can open the Device Settings menu and select “Restart Services” to restart all of Neon’s services.
You will now be able to activate your Neon device using your preferred wake word! From the available defaults, I usually prefer “Hey Ziggy” or “Hey Mycroft” depending on my mood and how many voice assistants I have within “earshot.”
OpenVoice OS (OVOS)
The same settings you see above should also work in OVOS! Expect another blog post detailing the defaults and nuances of OVOS, but for now, try editing ~/.config/mycroft/mycroft.conf
with the following:
{
"hotwords": {
"hey_mycroft": {
"active": false,
"module": "ovos-ww-plugin-precise-lite",
"sound": "snd/start_listening.wav",
"model": "https://github.com/OpenVoiceOS/precise-lite-models/raw/master/wakewords/en/hey-mycroft.tflite",
"expected_duration": 3,
"trigger_level": 3,
"sensitivity": 0.5
},
"hey_neon": {
"module": "ovos-ww-plugin-vosk",
"active": false,
"sound": "snd/start_listening.wav",
"debug": false,
"rule": "fuzzy",
"lang": "en",
"samples": ["hey neon"]
},
"hey_ziggy": {
"module": "ovos-ww-plugin-vosk",
"sound": "snd/start_listening.wav",
"debug": false,
"rule": "fuzzy",
"lang": "en",
"samples": ["hey ziggy"]
},
"thank_you": {
"module": "ovos-ww-plugin-vosk",
"sound": "snd/acknowledge.mp3"
},
"wake_up": {
"module": "ovos-ww-plugin-vosk"
}
}
}
The same rules apply: set "active": false
for the wakeword(s) you don’t want, a set "listen": true
for the wakeword(s) you do want.
Feedback
Questions? Comments? Feedback? Let me know on the Mycroft Community Forums or Neon OS public chat on Matrix.