Wakeword false positives: threshold not working?

I’m having problems with Mycroft starting to listen when he wasn’t called. I made a change to the dismissal skill to update the listener threshold 3 orders of magnitude up every time I responded to Mycroft with “I didn’t call you”. Since then, the listener threshold in my user config file has gone up to 1e+28, and I’m still getting false listens. That doesn’t seem right to me. What am I missing?

Are you using pocketsphinx? precise? a custom wake word?

I believe I’m using the default precise “Hey Mycroft”. That’s the best I can figure looking at the config. The output of “mycroft-config get” follows. I had to edit it to remove links.

{
“enclosure”: {
“rate”: 9600,
“port”: “/dev/ttyAMA0”,
“update”: true,
“test”: false,
“timeout”: 5
},
“padatious”: {
“intent_cache”: “~/.mycroft/intent_cache”,
“train_delay”: 4,
“single_thread”: false
},
“debug”: false,
“Audio”: {
“backends”: {
“vlc”: {
“active”: true,
“duck”: true,
“type”: “vlc”
},
“local”: {
“active”: true,
“type”: “simple”
}
},
“default-backend”: “local”
},
“lang”: “en-us”,
“time_format”: “half”,
“data_dir”: “/opt/mycroft”,
“confirm_listening”: true,
“precise”: {
“model_url”:
“dist_url”:/latest"
},
“system_unit”: “imperial”,
“play_wav_cmdline”: “paplay %1 --stream-name=mycroft-voice”,
“skills”: {
“priority_skills”: [
“mycroft-pairing”,
“mycroft-volume”
],
“update_interval”: 1,
“directory”: “~/.mycroft/skills”,
“upload_skill_manifest”: true,
“blacklisted_skills”: [
“skill-media”,
“send_sms”,
“skill-wolfram-alpha”,
“pianobar-skill”
],
“auto_update”: true,
“msm”: {
“versioned”: true,
“directory”: “skills”,
“repo”: {
“cache”: “.skills-repo”,
“branch”: “20.08”,
“url”: "
}
}
},
“gui_websocket”: {
“route”: “/gui”,
“host”: “0.0.0.0”,
“base_port”: 18181,
“ssl”: false
},
“sounds”: {
“start_listening”: “snd/start_listening.wav”,
“end_listening”: “snd/end_listening.wav”,
“acknowledge”: “snd/acknowledge.mp3”
},
“tts”: {
“mozilla”: {
“url”: “http://0.0.0.0:5002
},
“mimic”: {
“voice”: “ap”
},
“espeak”: {
“lang”: “english-us”,
“voice”: “m1”
},
“pulse_duck”: false,
“polly”: {
“region”: “us-east-1”,
“access_key_id”: “”,
“voice”: “Matthew”,
“secret_access_key”: “”
},
“module”: “mimic”,
“mimic2”: {
“lang”: “en-us”,
“url”:
“preloaded_cache”: “/opt/mycroft/preloaded_cache/Mimic2”
}
},
“opt_in”: false,
“ignore_logs”: [
“enclosure.mouth.viseme”,
“enclosure.mouth.display”
],
“date_format”: “MDY”,
“session”: {
“ttl”: 180
},
“play_ogg_cmdline”: “ogg123 -q %1”,
“server”: {
“update”: true,
“sync_skill_settings”: true,
“version”: “v1”,
“metrics”: false,
“url”: “https://api.mycroft.ai
},
“listener”: {
“mute_during_output”: true,
“phonemes”: “HH EY . M AY K R AO F T”,
“wake_word”: “hey mycroft”,
“energy_ratio”: 1.5,
“threshold”: “1e+37”,
“recording_timeout”: 10,
“record_wake_words”: false,
“channels”: 1,
“sample_rate”: 16000,
“save_utterances”: false,
“wake_word_upload”: {
“url”: "
},
“duck_while_listening”: 0.3,
“stand_up_word”: “wake up”,
“multiplier”: 1,
“recording_timeout_with_silence”: 3,
“phoneme_duration”: 120
},
“websocket”: {
“route”: “/core”,
“host”: “0.0.0.0”,
“ssl”: false,
“port”: 8181
},
“stt”: {
“module”: “mycroft”
},
“hotwords”: {
“wake up”: {
“phonemes”: “W EY K . AH P”,
“lang”: “en-us”,
“module”: “pocketsphinx”,
“threshold”: 1e-20
},
“hey mycroft”: {
“phonemes”: “HH EY . M AY K R AO F T”,
“lang”: “en-us”,
“module”: “precise”,
“threshold”: 1e-90
}
},
“location”: {
“timezone”: {
“dstOffset”: 3600000,
“dst_offset”: -14400000,
“name”: “America/New_York”,
“code”: “America/New_York”,
“offset”: -18000000
},
“coordinate”: {
“latitude”: 42.59981,
“longitude”: -71.36728
},
“city”: {
“state”: {
“country”: {
“name”: “United States”,
“code”: “US”
},
“name”: “Massachusetts”,
“code”: “US.MA”
},
“name”: “Chelmsford”,
“code”: “Lawrence”
}
},
“play_mp3_cmdline”: “mpg123 %1”,
“max_allowed_core_version”: 20.8
}

Threshold is used for pocketsphinx. Ask which listener it’s using or check in the log at /var/log/mycroft/voice.log.

If it is pocketsphinx, definitely ask to change listener to precise. If it’s erroring out trying to run precise, should check into why. I’d also start saving utterances, if there’s a particular sound or phrasing that’s causing it, might be worth creating your own model.

I just asked: it’s using precise. Is there a similar setting for precise, or is saving utterances the only way to go?

Sensitivity, but it sounds like there’s a reason it’s triggering so much that should be investigated.

Ok thanks I’ll look into it.

1 Like

Several months ago, we switched the model we were using for Precise to include more female voices and be less sensitive. As a result, the number of false positives has increased since the new model was rolled out.

This was the first step in improvements to Precise that were put on hold a few months ago to focus on the Mark II. According to the company roadmap, this work will continue before year end.

1 Like