Bonjour,
Voulant tester la commande vocale, j’ai installé Jeerhasspy sur un PI3 couplé à un respeaker 4-mic et sous Jeedom 4.0.35.
J’ai suivi les procédures décrites ici et là mais cela ne fonctionne pas.
Voici ma configuration:
MQTT DISABLED
Intent Handling remote
Wake Word snowboy
Voice Detection webrtcvad
Speech to Text kaldi
Intent Recognition fsticuffs
Text to Speech picotts
Microphone arecord
Sounds aplay
Depuis Rhasspy, lorsque je dicte « allume la lumière du salon » via « Hold to record », les mots sont bien entendus et je vois des logs dans Jeedom.
Voici les logs de rhasspy :
[INFO:26718252] quart.serving: 10.10.10.2:60212 POST /api/stop-recording 1.1 200 22 15914654
[DEBUG:26718239] InboxActor: -> stopped
[DEBUG:26718230] RemoteIntentHandler: {'speech': {'text': ''}}
[DEBUG:26718223] urllib3.connectionpool: http://10.10.10.1:80 "POST /core/api/jeeApi.php?plugin=jeerhasspy&apikey=12345654321azertyuiopoiuytreza&plugin=jeerhasspy&type=jeerhasspy HTTP/1.1" 200 22
[INFO:26718194] quart.serving: 10.10.10.2:60206 GET /api/events/intent 1.1 101 - 91555955
[DEBUG:26718186] urllib3.connectionpool: Starting new HTTP connection (1): 10.10.10.1:80
[DEBUG:26718164] __main__: {"intent": {"name": "OnOffJeedom", "confidence": 1.0}, "entities": [{"entity": "action", "value": "allume", "raw_value": "allume", "start": 0, "raw_start": 0, "end": 6, "raw_end": 6, "tokens": ["allume"], "raw_tokens": ["allume"]}, {"entity": "object", "value": "lumi\u00e8re", "raw_value": "lumi\u00e8re", "start": 10, "raw_start": 10, "end": 17, "raw_end": 17, "tokens": ["lumi\u00e8re"], "raw_tokens": ["lumi\u00e8re"]}, {"entity": "room", "value": "salon", "raw_value": "salon", "start": 21, "raw_start": 21, "end": 26, "raw_end": 26, "tokens": ["salon"], "raw_tokens": ["salon"]}], "text": "allume la lumi\u00e8re du salon", "raw_text": "allume la lumi\u00e8re du salon", "recognize_seconds": 0.003979811001045164, "tokens": ["allume", "la", "lumi\u00e8re", "du", "salon"], "raw_tokens": ["allume", "la", "lumi\u00e8re", "du", "salon"], "wav_seconds": 0.0, "transcribe_seconds": 0.0, "speech_confidence": 1, "slots": {"action": "allume", "object": "lumi\u00e8re", "room": "salon"}, "wakeId": "", "siteId": "default"}
[DEBUG:26718162] InboxActor: -> stopped
[DEBUG:26718143] __main__: allume la lumière du salon
[DEBUG:26718141] InboxActor: -> stopped
[DEBUG:26718136] KaldiDecoder: allume la lumière du salon
[DEBUG:26702416] KaldiDecoder: ['bash', '/profiles/fr/kaldi/model/decode.sh', '/opt/kaldi', '/profiles/fr/kaldi/model', '/profiles/fr/kaldi/model/graph', '/tmp/tmpceg5a_53.wav']
[DEBUG:26702345] __main__: Recorded 96044 byte(s) of audio data
[DEBUG:26702343] InboxActor: -> stopped
[INFO:26699496] quart.serving: 10.10.10.2:60212 POST /api/start-recording 1.1 200 2 12300
Et ceux de Jeedom via Jeerhasspy (remplacer cuisine par salon mais le problème n’est pas situé là) :
[2020-02-28 22:24:43][DEBUG] : [jeerhasspy] <event> Event received: {"intent":{"name":"OnOffJeedom","confidence":1},"entities":[{"entity":"action","value":"allume","raw_value":"allume","start":0,"raw_start":0,"end":6,"raw_end":6,"tokens":["allume"],"raw_tokens":["allume"]},{"entity":"object","value":"lumi\u00e8re","raw_value":"lumi\u00e8re","start":10,"raw_start":10,"end":17,"raw_end":17,"tokens":["lumi\u00e8re"],"raw_tokens":["lumi\u00e8re"]},{"entity":"room","value":"cuisine","raw_value":"cuisine","start":24,"raw_start":24,"end":31,"raw_end":31,"tokens":["cuisine"],"raw_tokens":["cuisine"]}],"text":"allume la lumi\u00e8re de la cuisine","raw_text":"allume la lumi\u00e8re de la cuisine","recognize_seconds":0.0055666379921604,"tokens":["allume","la","lumi\u00e8re","de","la","cuisine"],"raw_tokens":["allume","la","lumi\u00e8re","de","la","cuisine"],"wav_seconds":0,"transcribe_seconds":0,"speech_confidence":1,"slots":{"action":"allume","object":"lumi\u00e8re","room":"cuisine"},"wakeId":"","siteId":"default"}
[2020-02-28 22:24:43][DEBUG] : [jeerhasspy] <exec_callback_scenario> callback_settings: ""
Voici une partie des logs Rhasspy lorsque je dicte (après avoir cliqué sur « Wake ») :
[INFO:29163733] quart.serving: 10.10.10.2:60362 POST /api/listen-for-command 1.1 200 22 12303703
[DEBUG:29163715] InboxActor: -> stopped
[DEBUG:29163706] SnowboyWakeListener: loaded -> listening
[DEBUG:29163704] DialogueManager: ready -> asleep
[INFO:29163703] DialogueManager: Automatically listening for wake word
[DEBUG:29163700] DialogueManager: handling -> ready
[DEBUG:29163698] RemoteIntentHandler: {'speech': {'text': ''}}
[DEBUG:29163693] urllib3.connectionpool: http://10.10.10.1:80 "POST /core/api/jeeApi.php?plugin=jeerhasspy&apikey=12345654321azertyuiopoiuytreza&plugin=jeerhasspy&type=jeerhasspy HTTP/1.1" 200 22
[DEBUG:29163678] urllib3.connectionpool: Starting new HTTP connection (1): 10.10.10.1:80
[DEBUG:29163648] DialogueManager: recognizing -> handling
[DEBUG:29163652] WebSocketObserver: {"text": "", "intent": {"name": "", "confidence": 0}, "entities": [], "raw_text": "", "speech_confidence": 1, "wakeId": "", "siteId": "default", "slots": {}}
[DEBUG:29163622] APlayAudioPlayer: ['aplay', '-q', '-D', 'default:CARD=AUDIO', '/usr/share/rhasspy/etc/wav/beep_error.wav']
[DEBUG:29163618] DialogueManager: {'text': '', 'intent': {'name': '', 'confidence': 0}, 'entities': [], 'raw_text': '', 'speech_confidence': 1, 'wakeId': '', 'siteId': 'default'}
[ERROR:29163609] FsticuffsRecognizer: in_loaded
Traceback (most recent call last):
File "/usr/share/rhasspy/rhasspy/intent.py", line 183, in in_loaded
**assert recognitions, "No intent recognized"**
**AssertionError: No intent recognized**
[DEBUG:29163604] DialogueManager: decoding -> recognizing
[DEBUG:29163602] DialogueManager: (confidence=1)
[DEBUG:29163598] KaldiDecoder:
[DEBUG:29153374] KaldiDecoder: ['bash', '/profiles/fr/kaldi/model/decode.sh', '/opt/kaldi', '/profiles/fr/kaldi/model', '/profiles/fr/kaldi/model/graph', '/tmp/tmp6xu4ey4f.wav']
[DEBUG:29153289] APlayAudioPlayer: ['aplay', '-q', '-D', 'default:CARD=AUDIO', '/usr/share/rhasspy/etc/wav/beep_lo.wav']
[DEBUG:29153283] DialogueManager: awake -> decoding
[DEBUG:29153280] WebrtcvadCommandListener: listening -> loaded
[DEBUG:29153278] WebrtcvadCommandListener: Voice command finished
[DEBUG:29151779] WebrtcvadCommandListener: Voice command started
[ERROR:29151611] __main__: api_websocket
Traceback (most recent call last):
File "app.py", line 1232, in wrapper
return await func(queue, *_args, **kwargs)
File "app.py", line 1267, in api_events_wake
message_type, text = await queue.get()
File "/usr/lib/python3.6/asyncio/queues.py", line 167, in get
yield from getter
concurrent.futures._base.CancelledError
[ERROR:29151609] __main__: api_websocket
Traceback (most recent call last):
File "app.py", line 1232, in wrapper
return await func(queue, *_args, **kwargs)
File "app.py", line 1267, in api_events_wake
message_type, text = await queue.get()
L’erreur ci-dessous m’interpelle mais je n’ai pas trouvé de solution…
**assert recognitions, "No intent recognized"**
**AssertionError: No intent recognized**
Avez-vous une piste ?
Merci par avance et félicitations à Kiboost pour le développement du plugin.
Franck