Mycroft Community Forum

Core. 20.8.1 "hey Mycroft" wake word is broken

hi there I did a fresh install of mycroft today and it seams to be broken. after installing it did not recognize “hey mycroft” wake word. so I change to other wake word " hey jarvis’ and it worked . but when i change back to “hey mycroft” it crashes with errors and “hey Mycroft” does not work again

error is

09:29:11.945 | INFO     |  2552 | mycroft.client.speech.listener:create_wake_word_recognizer:351 | Using hotword entry for hey mycroft
09:29:11.949 | INFO     |  2552 | mycroft.client.speech.hotword_factory:load_module:403 | Loading "hey mycroft" wake word via precise
09:29:14.058 | INFO     |  2552 | mycroft.client.speech.listener:create_wakeup_recognizer:365 | creating stand up word engine
09:29:14.061 | INFO     |  2552 | mycroft.client.speech.hotword_factory:load_module:403 | Loading "wake up" wake word via pocketsphinx
Exception in thread Thread-18:
Traceback (most recent call last):
 File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
   self.run()
 File "/usr/lib/python3.8/threading.py", line 870, in run
   self._target(*self._args, **self._kwargs)
 File "/home/stephen/mycroft-core/.venv/lib/python3.8/site-packages/precise_runner/runner.py", line 197, in _handle_predictions
   prob = self.engine.get_prediction(chunk)
 File "/home/stephen/mycroft-core/.venv/lib/python3.8/site-packages/precise_runner/runner.py", line 64, in get_prediction
   self.proc.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe``

Hi there Mycroft did an Update to 20.8.1 so I thought I try “hey Mycroft” again as current the new wake is still confusing me abit after years of “hey mycroft”

09:20:29.881 | INFO     |  1792 | ConfigurationSkill | Remote configuration updated
 09:20:30.821 | WARNING  |  1904 | mycroft.client.speech.listener:run:88 | Audio contains no data.
 09:20:30.833 | INFO     |  1904 | mycroft.client.speech.listener:create_wake_word_recognizer:328 | Creating wake word engine
 09:20:30.836 | INFO     |  1904 | mycroft.client.speech.listener:create_wake_word_recognizer:351 | Using hotword entry for hey mycroft
 09:20:30.839 | INFO     |  1904 | mycroft.client.speech.hotword_factory:load_module:467 | Loading "hey mycroft" wake word via precise
 09:20:32.871 | INFO     |  1904 | mycroft.client.speech.listener:create_wakeup_recognizer:365 | creating stand up word engine
 09:20:32.874 | INFO     |  1904 | mycroft.client.speech.hotword_factory:load_module:467 | Loading "wake up" wake word via pocketsphinx
Exception in thread Thread-12:
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
  File "/home/stephen/mycroft-core/.venv/lib/python3.8/site-packages/precise_runner/runner.py", line 197, in _handle_predictions
prob = self.engine.get_prediction(chunk)
  File "/home/stephen/mycroft-core/.venv/lib/python3.8/site-packages/precise_runner/runner.py", line 65, in get_prediction
return float(self.proc.stdout.readline())
ValueError: could not convert string to float: ''

still getting error albeit an ever so slightly different error – but some good news at least google voice works again after update

You mentioned not having avx in another thread. If you’re not on a pi, this is probably why precise isn’t working.

I never used a PI before . I used ARM devices. So precise only works on ARM. this is the first time I used x86_64 device and mycroft. but all the same software base. so why would there be an incompatiblity

It works on x86 devices with AVX, hence the grep command to see if it would be compatible. Precise is built on Tensorflow, which for some time now, has been built to require AVX-capable cpu’s to run.

Most x86 cpu’s from the last decade have avx, low-end models like celeron and pentium may not.

So precise only works on ARM.

Just to clarify, Mycroft is principally developed on x86_64. It’s not an architecture incompatibility.

Works great on most Linux rigs. I second @baconator’s avx theory.

1 Like

okay precise does not work because my cpu lacks AVX even though it a new device with alot juice behind it --still does not make scenes why “hey mycroft” does not work with pocketsphinx and why when you load "Hey Mycroft’ it tries to default precise and not using pocketsphinx instead, since that is what is loaded into mycroft because AVX is missing … one would think MyCroft is the flagship name it would work across all engines …

I loaded another X86 device that “hey Mycroft” used to work in (it was too small i found it unusable)- after the new install it say “hey mycroft” word loaded into pocketsphinx and it ready to roll - then once it finishes downloading loading and it loads mycroft.client .hotword.factory then tries to load “Hey mycroft” with precise…-- then question is how does one prevent Mycroft form trying to use precise for the wake word “hey mycroft” and default to pocketsphinx instead

Tell it (voice or command line) “set listener to pocketsphinx”.

Pocketsphinx is pretty mediocre at best, hence why precise was built. As precise provides a noticeable better user experience, that’s why it’s defaulted to.

What sort of cpu are you using?

it a fanless industrial celeron 6 Lan micro computer 2.4 ghz 4 core and 8 gigs of ram with. it a 128g SSD. it handle being an router , AI, data collection , automation . media centre and desktop… with lots of room to spare

okay since you say it a tensorflow issue if I install TF with out avx does as there is that option does that correct the issue with percise … even though pocketsphinix seams to work well

i installed TF without AVX still the same issue unless I missed something when I installed it

i tested tensorflow it seams to be working

 python3 -c "import tensorflow as tf; x = [[2.]]; print('tensorflow version', tf.__version__); print('hello, {}'.format(tf.matmul(x, x)))"

it out puts this saying that it using SSE…

tensorflow version 2.3.0
2021-02-17 08:49:51.711208: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the fol
lowing CPU instructions in performance-critical operations:  SSE3 SSE4.1 SSE4.2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-02-17 08:49:51.747984: I tensorflow/core/platform/profile_utils/cpu_utils.cc:104] CPU Frequency: 2000000000 Hz
2021-02-17 08:49:51.750188: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x4c51f50 initialized for platform Host (this does not guarantee that XLA will be used).
Devices:
2021-02-17 08:49:51.750276: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
hello, [[4.]]

Make sure you install it in the mycroft venv.

how do i do that as I am not familiar with python-

 Make sure you install it in the mycroft venv.

i tried this but it did not work

        include-system-site-packages = true

I also tried

./mycroft-pip install ~/Downloads/tensorflow-2.3.0-cp38-cp38-linux_x86_64.whl

but it also did not work

and has the same errors as mentioned above

I also checked mycroft-core /.venv/lib64/python3.8/site-packages/ tensorflow in there with today date for install