Installing on OpenSUSE


#1

Does anyone have any guidance on successfully installing Mycroft on OpenSUSE (Tumbleweed)? I originally tried installing via the alarrosa overlay, but couldn’t get it to integrate well with Gnome Shell.

https://antlarr.io/2018/03/how-to-install-the-mycroft-a-i-on-opensuse-tumbleweed/

Then I removed the packages installed via overlay and tried installing per the GIT instructions. Now my problem is that Mycroft isn’t listening to my computer’s microphone.

Any advice?

Thank you,
Rob


#2

There are some help in this doc.

It can be as simple as your mic is muted, or more complex as setting mycroft to use right device.


#3

Are there any error messages in your log files that could explain what the issue is? Your logs are located at;
/var/log/mycroft


#4

The only notable things I’ve been able to notice are from voice.log:
14:58:38.678 - mycroft.configuration.config:load_local:114 - DEBUG - Configuration ‘/etc/mycroft/mycroft.conf’ not found
14:58:38.679 - mycroft.configuration.config:load_local:109 - DEBUG - Configuration /home/rob/.mycroft/mycroft.conf loaded
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1099:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1099:(snd_pcm_dmix_open) unable to open slave
Expression ‘alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )’ failed in ‘src/hostapi/alsa/pa_linux_alsa.c’, line: 923
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
14:58:38.721 - mycroft.client.speech.listener:create_wake_word_recognizer:243 - INFO - creating wake word engine
14:58:38.723 - mycroft.client.speech.hotword_factory:load_module:261 - INFO - Loading “hey mycroft” wake word via pocketsphinx

and the following when attempting to run mycroft-mic-test:
Starting audiotest
===========================================================
== STARTING TO RECORD, MAKE SOME NOISE! ==
===========================================================
Traceback (most recent call last):
File “/usr/lib64/python3.6/runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “/usr/lib64/python3.6/runpy.py”, line 85, in _run_code
exec(code, run_globals)
File “/home/rob/mycroft-core/mycroft/util/audio_test.py”, line 102, in
main()
File “/home/rob/mycroft-core/mycroft/util/audio_test.py”, line 89, in main
record(args.filename, args.duration)
File “/home/rob/mycroft-core/mycroft/util/audio_test.py”, line 64, in record
with mic as source:
File “/home/rob/mycroft-core/mycroft/client/speech/mic.py”, line 122, in enter
input=True, # stream is an input stream
File “/home/rob/mycroft-core/.venv/lib64/python3.6/site-packages/pyaudio.py”, line 750, in open
stream = Stream(self, *args, **kwargs)
File “/home/rob/mycroft-core/.venv/lib64/python3.6/site-packages/pyaudio.py”, line 441, in init
self._stream = pa.open(**arguments)
OSError: [Errno -9996] Invalid input device (no default output device)

I’m not having any issues with other applications, such as Skype, so I’m left thinking that it’s an idiosyncrasy with Mycroft…


#5

OK, a couple of things here;

  • There are some error messages in here about jackd - http://jackaudio.org/ - are you running jackd at all?
  • The error message at the bottom of the log indicates that a default playback device is not selected. What is the output of aplay -l?
  • Is pulseaudio installed?

#6

No - I’ve made no attempts at installing JACK on my system. I also haven’t seen this listed as a dependency in any of the requirements I’ve found.

I’m not sure why mycroft is complaining about an output device; it’s able to talk to me, but unable to pick up my microphone.

rob@EliteBook:~/mycroft-core> aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX8200 Analog [CX8200 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Yes, pulseaudio was installed by default.
rob@EliteBook:~/mycroft-core> pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 32
Server Protocol Version: 32
Is Local: yes
Client Index: 71
Tile Size: 65472
User Name: rob
Host Name: EliteBook.hulljensen.net
Server Name: pulseaudio
Server Version: 12.2-rebootstrapped
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_1f.3.analog-stereo
Default Source: alsa_input.pci-0000_00_1f.3.analog-stereo
Cookie: 2262:c27d

Additionally, I’m able to record audio with arecord -d 10 test.wav and play the file back with aplay test.wav


#7

I’m all out of ideas here @rjensen, sorry.

Are there any errors in the voice.log or audio.log that might give us more clues for troubleshooting?


#8

Hi,

I got the same issue using mycroft-precise on docker container.

The line which matters is:

Expression ‘alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )’ failed in ‘src/hostapi/alsa/pa_linux_alsa.c’, line: 923

Unfortunately, I still don’t have a solution yet.
It seems related to pyaudio which is not able to configure the mic but in my case aplay and arecord is working fine so from my point of view, pyaudio should too.

Hoping that someone will be able to understand this…


#9

Hi there @edaubert,

Just wondering if you have set the PULSE_SERVER ENV variable?
This is covered in our Docker documentation.


#10

Yes I already try it.

Plus alsa and pulseaudio are working fine as paplay, aplay, parec and arec are working.

There is only pyaudio which fails sometimes to find the audio input and so precise fails.


#11

Hmm. I’m not sure what to try next.

Possibly stupid question, can you select the output and input devices with alsamixer?


#12

In Ubuntu I have found it helpful to use the pavucontrol GUI
PulseAudio Volume Control which is available for openSUSE as well

It helped me sort out when my audio was going to my USB speakers or were using the onboard audio – graphically when I didn’t see it from the command line.

Best Wishes


#13

So after some digging on portaudio, I found this issue: https://app.assembla.com/spaces/portaudio/tickets/283-alsa_snd_pcm_hw_params_set_period_size_near-is-called-with-an-uninitialized-variable/details#

This can to be the issue we have and has been posted end of october 2018.

In the description, they talk about some recent changes on alsa-lib.

I believe the alsa-lib version on opensuse and the one I am using on alpine linux is more recent than the one available on ubuntu…

Still I don’t have the way to fix it yet…

I guess we need to try recompiling some stuff (portaudio, alsa-lib)…


#14

Hi @edaubert,

I was wondering if you’d had any more success on this over the holidays?


#15

Hi @gez-mycroft

As I am using docker there I get the source of portaudio and recompile it trying some configuration for it.

It appears that by using --without-oss --without-jack --with-alsa
the error doesn’t appear anymore.

Here is the commands I use

wget http://portaudio.com/archives/pa_stable_v190600_20161030.tgz \
  && tar xvfz pa_stable_v190600_20161030.tgz  \
  && cd portaudio \
  && ./configure --without-jack --without-oss --with-alsa \
  && make && make install \
  && cd ../ && rm -rf portaudio \
  && rm -rf pa_stable_v190600_20161030.tgz

and you will need

gcc g++ make alsa-lib-dev
to ensure the compilation

I think that’s all

The issue I have linked is still open and nobody has worked on it.
I am not sure my solution is enough as I don’t see the link with the issue I linked but at least it work for me.

Hope it helps.


#16

Thanks for posting what worked for you.

It may not solve the issue entirely but hopefully it can help someone in the future.