Wake word - no response


After dealing the last days with success some few commands between a rhasspy client receiving wake word + dealing with pico-tts (rpi 3 B+) and a rhasspy server managing the STT Kaldi + Intent recognizing (to profit on good debian server performances), today i was surprised to see that after every first command, the following wake words invoked are not responding :

Client Side

DEBUG:SnowboyWakeListener:Hotword(s) detected: [‘snowboy/hey_vega.pmdl’]
DEBUG:DialogueManager:asleep -> awake
DEBUG:SnowboyWakeListener:listening -> loaded
DEBUG:WebrtcvadCommandListener:Will timeout in 30 second(s)
DEBUG:APlayAudioPlayer:[‘aplay’, ‘-q’, ‘-D’, ‘hw:CARD=ALSA,DEV=0’, ‘/home/pi/.config/rhasspy/profiles/fr/sounds/start.wav’]
DEBUG:WebrtcvadCommandListener:loaded -> listening
DEBUG:WebrtcvadCommandListener:Voice command started
DEBUG:WebrtcvadCommandListener:Voice command finished
DEBUG:WebrtcvadCommandListener:listening -> loaded
DEBUG:DialogueManager:awake -> decoding
DEBUG:RemoteDecoder:POSTing 77804 byte(s) of WAV data to http://home.lan:12101/api/speech-to-text
DEBUG:APlayAudioPlayer:[‘aplay’, ‘-q’, ‘-D’, ‘hw:CARD=ALSA,DEV=0’, ‘/home/pi/.config/rhasspy/profiles/fr/sounds/end.wav’]
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): home.lan:12101
DEBUG:urllib3.connectionpool:http://home.lan:12101 “POST /api/speech-to-text?profile=fr HTTP/1.1” 200 30
DEBUG:DialogueManager:combien fait-il dans la maison (confidence=1)
DEBUG:DialogueManager:decoding -> recognizing
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): home.lan:12101
DEBUG:urllib3.connectionpool:http://home.lan:12101 “POST /api/text-to-intent?profile=fr&nohass=True HTTP/1.1” 200 775
DEBUG:DialogueManager:{‘entities’: [{‘end’: 11, ‘entity’: ‘unite_type’, ‘raw_end’: 7, ‘raw_start’: 0, ‘raw_tokens’: [‘combien’], ‘raw_value’: ‘combien’, ‘start’: 0, ‘tokens’: [‘temperature’], ‘value’: ‘temperature’}, {‘end’: 34, ‘entity’: ‘house_room’, ‘raw_end’: 30, ‘raw_start’: 24, ‘raw_tokens’: [‘maison’], ‘raw_value’: ‘maison’, ‘start’: 28, ‘tokens’: [‘maison’], ‘value’: ‘maison’}], ‘intent’: {‘confidence’: 1.0, ‘name’: ‘EntityStateValueJeedom’}, ‘raw_text’: ‘combien fait-il dans la maison’, ‘raw_tokens’: [‘combien’, ‘fait-il’, ‘dans’, ‘la’, ‘maison’], ‘recognize_seconds’: 0.00653655402129516, ‘siteId’: ‘salon’, ‘slots’: {‘house_room’: ‘maison’, ‘unite_type’: ‘temperature’}, ‘speech_confidence’: 1, ‘text’: ‘temperature fait-il dans la maison’, ‘time_sec’: 0.008160114288330078, ‘tokens’: [‘temperature’, ‘fait-il’, ‘dans’, ‘la’, ‘maison’], ‘wakeId’: ‘snowboy/hey_vega.pmdl’}
DEBUG:DialogueManager:recognizing -> handling
DEBUG:WebSocketObserver:{“entities”: [{“end”: 11, “entity”: “unite_type”, “raw_end”: 7, “raw_start”: 0, “raw_tokens”: [“combien”], “raw_value”: “combien”, “start”: 0, “tokens”: [“temperature”], “value”: “temperature”}, {“end”: 34, “entity”: “house_room”, “raw_end”: 30, “raw_start”: 24, “raw_tokens”: [“maison”], “raw_value”: “maison”, “start”: 28, “tokens”: [“maison”], “value”: “maison”}], “intent”: {“confidence”: 1.0, “name”: “EntityStateValueJeedom”}, “raw_text”: “combien fait-il dans la maison”, “raw_tokens”: [“combien”, “fait-il”, “dans”, “la”, “maison”], “recognize_seconds”: 0.00653655402129516, “siteId”: “salon”, “slots”: {“unite_type”: “temperature”, “house_room”: “maison”}, “speech_confidence”: 1, “text”: “temperature fait-il dans la maison”, “time_sec”: 0.008160114288330078, “tokens”: [“temperature”, “fait-il”, “dans”, “la”, “maison”], “wakeId”: “snowboy/hey_vega.pmdl”}
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): khomotica.lan:80
DEBUG:urllib3.connectionpool:http://khomotica.lan:80 “POST /core/api/jeeApi.php?plugin=jeerhasspy&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&plugin=jeerhasspy&type=jeerhasspy HTTP/1.1” 200 22
DEBUG:RemoteIntentHandler:{‘speech’: {‘text’: ‘’}}
DEBUG:DialogueManager:handling -> ready
INFO:DialogueManager:Automatically listening for wake word
DEBUG:DialogueManager:ready -> asleep
DEBUG:SnowboyWakeListener:loaded -> listening
DEBUG:PicoTTSSentenceSpeaker:[‘pico2wave’, ‘-w’, ‘/tmp/tmp64eamu5i.wav’, ‘-l’, ‘fr-FR’, ‘la température dans le salon est de 17.2°C’]
DEBUG:PicoTTSSentenceSpeaker:ready -> speaking
DEBUG:SnowboyWakeListener:listening -> loaded
DEBUG:APlayAudioPlayer:[‘aplay’, ‘-q’, ‘-D’, ‘hw:CARD=ALSA,DEV=0’]
DEBUG:PicoTTSSentenceSpeaker:speaking -> ready
DEBUG:SnowboyWakeListener:loaded -> listening
[2019-12-30 00:02:29,510] POST /api/text-to-speech 1.1 200 44 3896596
INFO:quart.serving: POST /api/text-to-speech 1.1 200 44 3896596
DEBUG:SnowboyWakeListener:Hotword(s) detected: [‘snowboy/hey_vega.pmdl’]
DEBUG:SnowboyWakeListener:Hotword(s) detected: [‘snowboy/hey_vega.pmdl’]
DEBUG:SnowboyWakeListener:Hotword(s) detected: [‘snowboy/hey_vega.pmdl’]

Is it something related to the last commit (130cbeb) on the wake.py ?

1 Like

Hi @synesthesiam,

Ok I found it ==> It is a bug after introducing the new feature “disable_wake” when TTS are loading :wink:
In tts.py, you added a call to stop listening on wake word when disable_wake is ok (true by default) and you forgot to enable it after the speech :

def in_ready(self, message: Any, sender: RhasspyActor) -> None:
    """Handle messages in ready state."""
    if isinstance(message, SpeakSentence):
        self.receiver = message.receiver or sender
        language = message.language or message.voice or self.language
        self.wav_data = self.speak(message.sentence, language=language)

        if message.play:
            self.enable_wake = False
            if self.wake and self.disable_wake:
                # Disable wake word
                self.send(self.wake, StopListeningForWakeWord(clear_all=True))
                self.enable_wake = self.wake_on_start

            self.send(self.player, PlayWavData(self.wav_data))
            self.send(self.receiver, SentenceSpoken(self.wav_data))

I added “disable_wake: false” on my profile ans it’s working.

Do you want for me to trace that on git ?

Can you open an issue on GitHub? Or create a pull request :wink:

Done :wink:

regression on disable wake feature #124

1 Like