Custom wake word support
pl4nty opened this issue · 3 comments
Are custom wake words supported like rhasspy2? I followed the tutorial for porcupine and tested with a few words, then generated a ppm and placed it under keyword_files
. It shows up with config/programs/wake/porcupine1/script/list_models
, but crashes on load (eg script/run bin/wake_detect.py
) with a JSONDecodeError
:
DEBUG:rhasspy3.core:Loading config from /app/rhasspy3/configuration.yaml
DEBUG:rhasspy3.core:Skipping /app/config/configuration.yaml
DEBUG:wake_detect:mic program: PipelineProgramConfig(name='arecord', template_args=None, after=None)
DEBUG:wake_detect:wake program: PipelineProgramConfig(name='porcupine1', template_args=None, after=None)
DEBUG:rhasspy3.program:mic_adapter_raw.py ['--samples-per-chunk', '1024', '--rate', '16000', '--width', '2', '--channels', '1', 'arecord -q -D "default" -r 16000 -c 1 -f S16_LE -t raw -']
DEBUG:wake_detect:Detecting wake word
DEBUG:rhasspy3.program:python3 ['bin/porcupine_stream.py', '--model', 'Professor_en_linux_v2_2_0.ppn']
Traceback (most recent call last):
File "/app/config/programs/wake/porcupine1/bin/porcupine_stream.py", line 71, in <module>
main()
File "/app/config/programs/wake/porcupine1/bin/porcupine_stream.py", line 25, in main
porcupine, names = load_porcupine(args)
File "/app/config/programs/wake/porcupine1/bin/porcupine_shared.py", line 57, in load_porcupine
Traceback (most recent call last):
File "/app/bin/wake_detect.py", line 80, in <module>
asyncio.run(main())
File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/app/bin/wake_detect.py", line 69, in main
detection = await detect(rhasspy, wake_program, mic_proc.stdout)
File "/app/rhasspy3/wake.py", line 109, in detect
wake_event = wake_task.result()
File "/app/rhasspy3/event.py", line 48, in async_read_event
event_dict = json.loads(json_line)
File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/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)
I am also really interested by using the latest porcupine version with rhasspy 3
You can test newest porcupine if you change change version in config/programs/wake/porcupine1/requirements.txt
, but if you want use custom word you need add "access_key" to pvporcupine.create()
command in config/programs/wake/porcupine1/bin/porcupine_shared.py
You also need download new params from porcupine and add them to config/data/wake/porcupine1/lib/common/
.
I got different language and custom wake word work with those changes.
work like a charm thanks