How to make Mycroft less verbose whenit doesn't understand

I have Mycroft running in my living room. There are several times a day where it mistakenly recognizes its wakeword (Hey Mycroft), so it listens, and then reports that it didn’t understand. My wife now “hates that thing” because it triggers at unhelpful times, and then spends a second or two explaining that it is still learning, or didn’t understand.

I’ve looked through the Advanced config and the focums for a way to just have Mycroft fail silently or with a simple audio cue/tone. I can’t seem to find a way to do this.

I came across this forum discussion which seems to have resulted in no change to Mycroft as it was deemed too large a change after some intense discussion around how to best implement the idea. Silent utterance processing

Is there a way to just have Mycroft simply fail silently when it doesn’t understand the audio? I could explore having visual ways to communicate it (e.g. turn on/off an LED when it is listening). Ultimately I could also just edit the code to only allow a single response in these scenarios like “huh?”, but I don’t know where this change would be made.

So is there a way to make Mycroft fail silently when it doesn’t understand an utterance, or a particular file to edit to just allow a single word response?

As far as i understand “silent utterance processing” is not about mycroft failing to understand, but mycroft whithout a audio response when listening. (the “ding”)

Its hard to to skill code

if gibberish:
       return silence

when you would expect a skill to return the results (even if negative, and you intentionally ask for it)

What mycroft has heard since it noticed “the call”, at least had to be passed by the intent parser to a skill. Might be the result of a too open skill intent.

What I’m hoping to figure out is how to stop Mycroft from saying things like “Sorry, I didn’t understand you”. Just be silent. Barring that, just say one word like “Sorry?”.

Currently when Mycroft doesn’t understand me or mistakenly hears its wake word, it is REALLY talkative about how it failed. Just fail silently or succinctly.

This is a default resource dialog. Similar versions of that might be found in the skills’ locale.
That said, you might want to consider tuning “sensitivity”/“threshold” of your precise wakeword rather than silence the skills. This responsiveness is unusual.

1 Like

I thought about changing the sensitivity, but with the default I see false starts quite a bit, but then my youngest 2 kids have a really hard time triggering it when they actually want to. So I’m kind of stuck for sensitivity I think.

So if I wanted to override the resource dialog I could just change that file locally to be blank, or just have 1 single entry of “Sorry”?

1 Like

Aside: The kids thing (also women, and anyone with an accent not associated with colonial, Anglo-Saxon Britain) is due mainly to sample size. Both with respect to wake words and STT engines, from the FOSS and the niche options to the major brands, each training corpus has historically skewed massively toward adult men.

Adult men with General American-adjacent, RP-adjacent, or Australian accents.

Some of the open source voice efforts accept submissions, and this community definitely encourages you to participate, especially if your family joins in! Basically, you just read sentences into a decent microphone, and/or sit and confirm that other people’s submissions are correct.

Only with time and participation will utilities emerge which can reliably detect and parse every person’s speech.

Thought about or tested? Seriously, try to adjust in small steps (.05) and see what is going on then. Or you manage updateability by yourself. (If you change dialogs, you will want at least short dialogs. Imagine a skill canceling out and you have no clue whats going on)

I hadn’t tried to change the sensitivity because I need it both more sensitive for some voices, and less sensitive for others. I assumed the sensitivity was a scale from less to more, so didn’t change it as it need it both more and less sensitive.

I agree there’s some voice training issues, but even for my voice I’d like it to fail more succinctly. Sounds like I just change the res file to have a single response of “Sorry?”. And then yes, I have to replace that file every time Mycroft updates.

I’ll try that out and see how it goes. Ultimately I’d rather have a visual error than audio, but I don’t have any hardware attached to the pi that could function that way. But that’s a future problem to tackle.

Update: I removed all text from mycroft/res/text/en-us/i didn’t catch that.dialog I then restarted mycroft. The first response (done using the mycroft cli) resulted in “I don’t understand”. The second resulted in “You might have to say that a different way.”

So these strings are coming from somewhere else … Any ideas where?

Revert your changes fully and change this. It is the fallback-unknown skill which ansers if everything fails. (At least now i know what is happening when “… not finished up booting” is uttered). Be aware that if mycroft is hearing something which it can associate with a skill, the skill will answer anyway.

Positive side effect is that your core is updateing again

Btw, why don’t you send mycroft to sleep (naptime) or “volume 0” it, when it is not needed?

1 Like

Ah, that did the trick. Replacing all contents of that file with just “Sorry?” results in a short single word response when I input something not understood.

For my own memory, that’s in the mycroft-core/skills/fallback-unknown.mycroftai/dialog/en-us directory.

I could put it to sleep and wake it up, or set volume to 0, true. But the point is I want to have to interact with it less. And putting it to sleep and waking it up is 2 separate commands, both of which are possibly misunderstood meaning multiple attempts. Also, asking ym wife to make it nap, and then remember to wake it up … tough sell.

But this works. I wonder what will happen when the skill updates, I guess this would be updated and I’d have to re-edit it.

Thanks for the help!

The skill won’t update since there are “uncomitted changes”. You would have to merge new stuff (but the skill isn’t actively developed, if there were changes it’s most likely about added languages. So, neglectable)

I would love to hear just a low frequency beep. A “quiet time” setting in Device Preferences would also be nice… I started to play with cli in the morning and made noises at an ungodly hour :wink:

“I don’t understand, but I’m learning new things everyday.” is fun the first time you hear it, but it gets old quickly.

2 Likes

you can change that beep in the conf to whatever you like

A beep for a fallback? ah but where in ````` mycroft.conf?

So far i changed fallback* to “Sorry?” - that sounds nice and brief.

*) fallback-unknown.mycroftai/dialog/en-us/unknown.dialog

Maybe i misunderstood, but you wanted to change the confirmation beep to a

low frequency beep

this is done by adding
"sounds": {"start_listening": "../../path/to/a/permissive/ding.wav"}
to either SYSTEM or USER conf

(i guess one can use an absolute path, but you have to check the code)

Hey there, this is good feedback and I’m adding it to our feature requests for consideration.

One thing you can do if you’re doing development is to set the TTS output to the dummy service:

mycroft-config set tts.module dummy

This acts as a TTS service but produces no audio so interactions will be quicker and you won’t wake up the whole house :smiley:

1 Like