First, thank you all for your help. I followed your hints, unfortunately without significant changes.
This is the current situation:
Yes, you were right. There were some errors. Some sentences were simply cut at the end. Don’t ask me how this can happen when copying the old slot files to the new slot folder.
However, this was not the reason.
In a previous post a couple of weeks ago I asked, whether this way of installation is mandatory. The reason to ask was, that I found contradictory information (tutorial says “docker” while another link (can’t find it at the moment) recommends “py venv”). Unfortunately I got no answer. Nevertheless, today I believe it shouldn’t make a difference, in what kind of virtual environment the satellite has been installed.
Regarding Training of satellites: I agree, I usually don’t train my satellite. In this specific situation I just thought it might help. And of course: I don’t have sentences and slots on my satellite. My existing 2.4.19 system works exactly the way you described it. And that’s of course what I intend to get again with 2.5.
I checked and tested as recommended:
- At first I repaired the faulty sentences and got a different error message: string index out of range
- I deleted all of my individual sentences and slots. Finally only the initial sentences provided by default remained and no slots. That didn’t help neither
- I edited just one sentence and added the necessary slots: No change
- In each case I also restarted the docker container to see whether this helps: It did not
The LOGs are looking differently in each case. I’ll post them at the end.
There is one thing I should mention: Since I have no separate testing hardware for 2.5 I installed 2.5 in parallel to 2.4.19, but in different folders:
2.4.19 master and satellite in ~/.config/rhasspy/profiles/de
2.5 master in~/.config/rhasspy/master/de
2.5 sat in ~/.config/rhasspy/satellite/de
Of course only one instance is running at the same time on one piece of hardware. From my perspective this should not cause the error. Maybe you know better.
Here are the LOGs:
At 1 (sentences.ini repaired):
[ERROR:2020-04-08 12:08:54,146] rhasspyserver_hermes: string index out of range
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1821, in full_dispatch_request
result = await self.dispatch_request(request_context)
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1869, in dispatch_request
return await handler(**request_.view_args)
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1208, in api_train
result = await core.train()
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 285, in train
word_transform=word_transform,
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/train.py”, line 87, in sentences_to_graph
slot_visitor=word_visitor,
File “/usr/lib/rhasspy-voltron/rhasspy-nlu/rhasspynlu/slots.py”, line 72, in get_slot_replacements
sentence = Sentence.parse(line)
File “/usr/lib/rhasspy-voltron/rhasspy-nlu/rhasspynlu/jsgf.py”, line 112, in parse
parse_expression(s, text)
File “/usr/lib/rhasspy-voltron/rhasspy-nlu/rhasspynlu/jsgf.py”, line 333, in parse_expression
if text[next_index] == “(”:
IndexError: string index out of range
[DEBUG:2020-04-08 12:08:54,145] rhasspynlu.slots: Loading slot device_name_switch from /profiles/de/slots/device_name_switch
[DEBUG:2020-04-08 12:08:54,061] rhasspynlu.slots: Running program for slot rhasspy/number,1,200,1: [’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slot_programs/rhasspy/number’, ‘1’, ‘200’, ‘1’]
[DEBUG:2020-04-08 12:08:54,060] rhasspynlu.slots: Loading slot synonyms_time from /profiles/de/slots/synonyms_time
[DEBUG:2020-04-08 12:08:53,981] rhasspynlu.slots: Running program for slot rhasspy/number,17,30,1: [’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slot_programs/rhasspy/number’, ‘17’, ‘30’, ‘1’]
[DEBUG:2020-04-08 12:08:53,980] rhasspynlu.slots: Loading slot device_name_blind from /profiles/de/slots/device_name_blind
[DEBUG:2020-04-08 12:08:53,898] rhasspynlu.slots: Running program for slot rhasspy/number,1,100,1: [’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slot_programs/rhasspy/number’, ‘1’, ‘100’, ‘1’]
[DEBUG:2020-04-08 12:08:53,814] rhasspynlu.slots: Running program for slot rhasspy/number,5,30,1: [’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slot_programs/rhasspy/number’, ‘5’, ‘30’, ‘1’]
[DEBUG:2020-04-08 12:08:53,813] rhasspynlu.slots: Loading slot device_name_shoppinglist from /profiles/de/slots/device_name_shoppinglist
[DEBUG:2020-04-08 12:08:53,812] rhasspynlu.slots: Loading slot device_name_thermostat from /profiles/de/slots/device_name_thermostat
[DEBUG:2020-04-08 12:08:53,812] rhasspynlu.slots: Loading slot device_name_dimmer from /profiles/de/slots/device_name_dimmer
[DEBUG:2020-04-08 12:08:53,811] rhasspynlu.slots: Loading slot synonyms_change_command from /profiles/de/slots/synonyms_change_command
[DEBUG:2020-04-08 12:08:53,811] rhasspynlu.slots: Loading slot device_name_window from /profiles/de/slots/device_name_window
[DEBUG:2020-04-08 12:08:53,810] rhasspynlu.slots: Loading slot synonyms_temperature from /profiles/de/slots/synonyms_temperature
[WARNING:2020-04-08 12:08:53,810] rhasspynlu.slots: Failed to load file/program for slot shopping_item (tried: [PosixPath(’/profiles/de/slots’), PosixPath(’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slots’)], [PosixPath(’/profiles/de/slot_programs’), PosixPath(’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/slot_programs’)])
[DEBUG:2020-04-08 12:08:53,800] rhasspynlu.ini_jsgf: Loaded ini file
[DEBUG:2020-04-08 12:08:53,798] rhasspyserver_hermes: Generating intent graph
[DEBUG:2020-04-08 12:08:53,797] rhasspyserver_hermes: Loading sentences from [PosixPath(’/profiles/de/sentences.ini’)]
[INFO:2020-04-08 12:08:53,797] rhasspyserver_hermes: Starting training
[DEBUG:2020-04-08 12:08:53,783] rhasspyserver_hermes: Writing /profiles/de/sentences.ini
At 2: (initial sentences only. no slots)
Mit leeren Slots und Standard Sentences:
[ERROR:2020-04-08 12:32:34,081] rhasspyserver_hermes:
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1821, in full_dispatch_request
result = await self.dispatch_request(request_context)
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1869, in dispatch_request
return await handler(**request_.view_args)
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1208, in api_train
result = await core.train()
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 369, in train
timeout_seconds=self.training_timeout_seconds,
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 854, in publish_wait
result_awaitable, timeout=timeout_seconds
File “/usr/lib/python3.7/asyncio/tasks.py”, line 449, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
[ERROR:2020-04-08 12:22:34,086] rhasspyserver_hermes: on_message
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 959, in on_message
topic, payload, self.subscribed_types
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/client.py”, line 269, in parse_mqtt_message
json_payload = json.loads(payload)
File “/usr/lib/python3.7/json/init.py”, line 348, in loads
return _default_decoder.decode(s)
File “/usr/lib/python3.7/json/decoder.py”, line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “/usr/lib/python3.7/json/decoder.py”, line 355, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[DEBUG:2020-04-08 12:22:34,086] rhasspyserver_hermes: Handling NluTrainSuccess (topic=rhasspy/nlu/Master/trainSuccess, id=78864af8-9b17-4991-85a8-5aa6beb8bc9a)
[DEBUG:2020-04-08 12:22:34,080] rhasspyserver_hermes: Handling AsrTrainSuccess (topic=rhasspy/asr/Master/trainSuccess, id=78864af8-9b17-4991-85a8-5aa6beb8bc9a)
[DEBUG:2020-04-08 12:22:34,079] rhasspyserver_hermes: Publishing 130 bytes(s) to rhasspy/nlu/Master/train
[DEBUG:2020-04-08 12:22:34,079] rhasspyserver_hermes: -> NluTrain(id=‘5474c136-f6d3-41fc-906d-df390fa218f2’, graph_path=’/profiles/de/intent_graph.pickle.gz’, graph_format=‘pickle-gzip’)
[DEBUG:2020-04-08 12:22:34,078] rhasspyserver_hermes: Publishing 130 bytes(s) to rhasspy/asr/Master/train
[DEBUG:2020-04-08 12:22:34,078] rhasspyserver_hermes: -> AsrTrain(id=‘5474c136-f6d3-41fc-906d-df390fa218f2’, graph_path=’/profiles/de/intent_graph.pickle.gz’, graph_format=‘pickle-gzip’)
[DEBUG:2020-04-08 12:22:34,078] rhasspyserver_hermes: Subscribed to hermes/error/nlu
[DEBUG:2020-04-08 12:22:34,077] rhasspyserver_hermes: Subscribed to rhasspy/nlu/Master/trainSuccess
[DEBUG:2020-04-08 12:22:34,077] rhasspyserver_hermes: Subscribed to hermes/error/asr
[DEBUG:2020-04-08 12:22:34,077] rhasspyserver_hermes: Subscribed to rhasspy/asr/Master/trainSuccess
[DEBUG:2020-04-08 12:22:34,076] rhasspyserver_hermes: Finished writing /profiles/de/intent_graph.pickle.gz
[DEBUG:2020-04-08 12:22:34,076] rhasspyserver_hermes: Writing /profiles/de/intent_graph.pickle.gz
[DEBUG:2020-04-08 12:22:34,073] rhasspynlu.ini_jsgf: Loaded ini file
[DEBUG:2020-04-08 12:22:34,069] rhasspyserver_hermes: Generating intent graph
[DEBUG:2020-04-08 12:22:34,067] rhasspyserver_hermes: Loading sentences from [PosixPath(’/usr/lib/rhasspy-voltron/rhasspy-profile/rhasspyprofile/profiles/de/sentences.ini’)]
[INFO:2020-04-08 12:22:34,065] rhasspyserver_hermes: Starting training
At 3: (with minimum set of sentences and slots)
[ERROR:2020-04-08 12:52:20,658] rhasspyserver_hermes:
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1821, in full_dispatch_request
result = await self.dispatch_request(request_context)
File “/usr/lib/rhasspy-voltron/.venv/lib/python3.7/site-packages/quart/app.py”, line 1869, in dispatch_request
return await handler(**request_.view_args)
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1208, in api_train
result = await core.train()
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 369, in train
timeout_seconds=self.training_timeout_seconds,
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 854, in publish_wait
result_awaitable, timeout=timeout_seconds
File “/usr/lib/python3.7/asyncio/tasks.py”, line 449, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
[DEBUG:2020-04-08 12:50:32,486] rhasspyserver_hermes: Publishing 130 bytes(s) to rhasspy/nlu/Master/train
[DEBUG:2020-04-08 12:50:32,485] rhasspyserver_hermes: -> NluTrain(id=‘5fd91773-7015-4b6b-a3eb-f4e360c337ee’, graph_path=’/profiles/de/intent_graph.pickle.gz’, graph_format=‘pickle-gzip’)
[DEBUG:2020-04-08 12:50:32,485] rhasspyserver_hermes: Publishing 130 bytes(s) to rhasspy/asr/Master/train
[DEBUG:2020-04-08 12:50:32,485] rhasspyserver_hermes: -> AsrTrain(id=‘5fd91773-7015-4b6b-a3eb-f4e360c337ee’, graph_path=’/profiles/de/intent_graph.pickle.gz’, graph_format=‘pickle-gzip’)
[DEBUG:2020-04-08 12:50:32,484] rhasspyserver_hermes: Finished writing /profiles/de/intent_graph.pickle.gz
[DEBUG:2020-04-08 12:50:32,483] rhasspyserver_hermes: Writing /profiles/de/intent_graph.pickle.gz
[DEBUG:2020-04-08 12:50:32,481] rhasspynlu.slots: Loading slot device_state from /profiles/de/slots/device_state
[DEBUG:2020-04-08 12:50:32,481] rhasspynlu.slots: Loading slot synonyms_change_command from /profiles/de/slots/synonyms_change_command
[DEBUG:2020-04-08 12:50:32,481] rhasspynlu.slots: Loading slot device_name_switch from /profiles/de/slots/device_name_switch
[DEBUG:2020-04-08 12:50:32,479] rhasspynlu.ini_jsgf: Loaded ini file
[DEBUG:2020-04-08 12:50:32,478] rhasspyserver_hermes: Generating intent graph
[DEBUG:2020-04-08 12:50:32,478] rhasspyserver_hermes: Loading sentences from [PosixPath(’/profiles/de/sentences.ini’)]
[INFO:2020-04-08 12:50:32,477] rhasspyserver_hermes: Starting training
At 4: (after restart, previous = by chronological means)
[ERROR:2020-04-08 13:02:57,626] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:57,584] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:57,500] rhasspyserver_hermes: on_message
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 959, in on_message
topic, payload, self.subscribed_types
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/client.py”, line 269, in parse_mqtt_message
json_payload = json.loads(payload)
File “/usr/lib/python3.7/json/init.py”, line 348, in loads
return _default_decoder.decode(s)
File “/usr/lib/python3.7/json/decoder.py”, line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “/usr/lib/python3.7/json/decoder.py”, line 355, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[ERROR:2020-04-08 13:02:56,153] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,142] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,132] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,099] rhasspyserver_hermes: on_message
Traceback (most recent call last):
same as previous
[ERROR:2020-04-08 13:02:56,083] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,073] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,063] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,053] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,042] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,032] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,022] rhasspyserver_hermes: on_message
same as previous
[ERROR:2020-04-08 13:02:56,001] rhasspyserver_hermes: on_message
Traceback (most recent call last):
same as previous
[ERROR:2020-04-08 13:02:55,990] rhasspyserver_hermes: on_message
Traceback (most recent call last):
File “/usr/lib/rhasspy-voltron/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 959, in on_message
topic, payload, self.subscribed_types
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/client.py”, line 276, in parse_mqtt_message
message = message_type.from_dict(json_payload)
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/nlu.py”, line 92, in from_dict
message.slots = [Slot.from_dict(s) for s in slot_dicts]
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/nlu.py”, line 92, in
message.slots = [Slot.from_dict(s) for s in slot_dicts]
File “/usr/lib/rhasspy-voltron/rhasspy-hermes/rhasspyhermes/intent.py”, line 101, in from_dict
slot = Slot(value=value, **object_dict)
TypeError: init() missing 1 required positional argument: ‘entity’
And finally: This is the minimum set of sentences and slots I used at 3:
[ChangeDeviceState]
($synonyms_change_command) [(die | das)] ($device_name_switch){device} ($device_state){value} (:){state:.STATE}
Slot device_state
aus:false
ein:true
Slot device_name_switch
(rechtekuechenlampe):hm-rpc.0.OEQ1234567.1
Slot synonyms_change_command
schalt:true
Sorry for asking you again. I hope we will get soon out of this mess.
Best
Thomas




