OpenVoiceOS - A bare minimal (production type of) OS based on Buildroot

For the people that are running the RPI3 version. I now understand why it has some troubles at the first boot, installing all PIP packages;

I was wondering why it takes several minutes to install everything with the associated high CPU cycles / load. Well it turns out, there are no wheels for a full 64bit OS, so it has to download all the source tar balls instead.

1 Like

@j1nx I am thinking of making MycroftOS my primary Mycroft system. I am fine with being on the bleeding edge with this and I know you are still developing but, I am looking for an easy way to get the gui running and this build has a gui out of the box experience. I noticed two builds on your github repo and wondering which you would recommend? I am certainly willing to provide feedback as I encounter items during my usage.

The latest is alpha8. What hardware do you like to use? Rpi3, rpi4? Respeaker mic or something else?

Plan to use an rpi4. Just have a simple usb microphone that I have been using for a while. I considered seeing if I could get this working but have not tried yet.

Right! If you do not need the ReSpeaker drivers and have an RPI4 you can use the alpha8 from my downloads page.

If you can wait a day (or two) I can give you my current dev image, call it almost alpha9. That one combines all output so it doesn’t matter what you connect. Headphones, HDMI, USB, it all outputs the same sound. (Bluetooth not yet implemented though)

Now working on something similar for the input side, but not really there yet. You USB mic should not be a problem. Connect it all, boot it and it should just pick it up and configure it to be used.

the best course would be to download the alpha 8 image if you are running a RPI4 and want to experience a more advanced GUI and skills to match a good experience than Kivy display

@j1nx will MycroftOS continue to support the Qt GUI, or will be moving to the alternative Kivy display service ? I would imagine the project to support both display services regardless as part of the larger open source community

@AIIX Yes I will keep supporting the QT gui. It works perfectly is very feature rich and till now I have not been able to let it crash, so very stable.

Development of Skills utilizing it are at a rapid pace. Not to forget, plasma-bigscreen is using it. So in short; It is here, works good and the future of it is very promising.

At the last dev-sync video they talk about kivy and qt and it appears to look like mycroft itself lean towards using Kivy as main framework. As I try to use as much if not all default building blocks from the devs into mycroftos. At some point in time I will support Kivy as well, but to be blunt honest, that might still take some time and not before 21.02 or even 21.08.

For now, my focus is on QT. It runs not as fast on the rpi3 as it runs on the rpi4, but I have not even spent 1 minute on performance tweaking. MycroftOS already boots and runs fast, but believe me; It’s potentional is not even showed. If I start minimizing the kernel, start switching some dynamic linking towards static and split the rootfs into a read-only squasfs with writable overlay we could be into a real happy place.

I am 100% sure now that Mycroft with full hardware accelerated Q5 can runs snappy on hardware as low as a rpi3. The biggest performance jump however comes from precise.

Edit: With supporting Kivy, I mean supporting both QT and Kivy.

Edit2: Really, REALLY looking forward to all the GUI / CPS type of PR’s to be merged in. That will really making the whole GUI experience complete. At that point I will add the youtube skill by default as in my oppinion a smart voice A.I. Speaker should be able to handle a “play some musix” type of request out of the box.

Edit3: And with all those nice GUI’s and feedback hooks even the spotify skill (when updated to use them) will be nice. Spotifyd which is already by default included will act and show itself as spotify device from within the spotify app. So even if speech is no longer available, you can still send some music towards mycrofos from within the app and the gui shows you what is playing etc. (I believe)

2 Likes

I already posted this link at the Mattermost server, but will post it here as well. It is a bit of in between type of release, but as the last alpha8 release might have some audio problems for certain people / situations. This might be the better option.

RPI4 only at the moment
https://j1nx.stackstorage.com/s/LPPpy2VkyV8Vww4I

  • Audio output is sent to all sinks combined.
  • Respeaker driver updated and fixed. (4mic hat confirmed working. 4mic lineair and 6mic should work as well. 2mic HAT is not yet working)
  • Other small changes and bits

This image however has a little quirck at first boot which prevents some skills to load properly first time. Just let all skills being installed and give it a quick reboot. Then everything is fine.

Nice piece of work.

Whatever you have done to the audio stream processing/driver setup should be kicked back to mycroftAI. (running Respeaker v2) The occasional stream breaks due to ducking (alledgedly) are blown away. Have to check the set up.

Sadly my goto skill (node red, and hivemind by extension) can’t be built on that arch.

Is this intentional that you can’t add to .mycroft/mycroft.conf? This conf was constantly overwritten after reboot.

Node-red is already included by default. It is just that I forgot to add the launcher scripts for it.

If you can add the scripts yourself it ahould all work.

To comment about your mycroft.conf. No that should not happen. We need to dig into that to see what might happen there.

msm wasn’t aware of that. Jarbas’ skill we talk about?

/etc/mycroft/mycroft.conf took changes just fine

I will have a look and chat woth @JarbasAl

For his skills i added nodejs and node-red but to be honest haven’t really looked at it myself. Will do and get it fixed added in the next release.

I will have a look at the /home/mycroft/.mycroft/mycroft.conf issue and see what is happening there.

Love to receive more feedback. Both positive and negative. Keep it up. Thx.

1 Like

While disecting the audio processing i wondered if it would be beneficial if you
echo in a line like
ATTR{id}=="usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00",ENV{PULSE_PROFILE_SET}="seeed-voicecard-4mic.conf"

to the udev rule 91-seeedvoicecard.rules during make?

Does this rule only route to the alsa mixer profile sets or is this essential also for the specific daemon.conf and default.pa?

The udev rule is only used for the specific mixer configs. I don’t believe the USB respeaker needs any mixer tweaking as the defaults are all ok. (assumption as I do not have one myself yet)

The daemon and default are dynamically changed upon found via i2select command. That is done by /usr/bin/seeedvoice which is called by a systemd service file early at boot.

Yeah, i saw the service and wondered what’s that all about. Have to work in that part. The thing is the sound running your config sounds way richer and powerfull than running it OOTB (ok, flashed the 48k firmware) and i wondered where that is coming from.

Thanks for confirmation.

Can you post the output of;

pactl list sinks

Just realized that the service would have no effect for the v2

*Ziel #1*
*        Status: IDLE*
*        Name: alsa_output.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.analog-stereo*
*        Beschreibung: ReSpeaker 4 Mic Array (UAC1.0) Analog Stereo*
*        Treiber: module-alsa-card.c*
*        Abtastwert-Angabe: s24le 2ch 48000Hz*
*        Kanalzuordnung: front-left,front-right
*        Besitzer-Modul: 7
*        Stumm: nein
*        Lautstärke: front-left: 49152 /  75% / -7,50 dB,   front-right: 49152 /  75% / -7,50 dB
*                Verteilung 0,00
*        Basis-Lautstärke: 65536 / 100% / 0,00 dB
*        Quellen-Monitor: alsa_output.usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00.analog-stereo.monitor
*        Latenz: 105672 usec, eingestellt 100000 usec
*        Flags: HARDWARE DECIBEL_VOLUME LATENCY
*        Eigenschaften:
*                alsa.resolution_bits = "24"
*                device.api = "alsa"
*                device.class = "sound"
*                alsa.class = "generic"
*                alsa.subclass = "generic-mix"
*                alsa.name = "USB Audio"
*                alsa.id = "USB Audio"
*                alsa.subdevice = "0"
*                alsa.subdevice_name = "subdevice #0"
*                alsa.device = "0"
*                alsa.card = "0"
*                alsa.card_name = "ReSpeaker 4 Mic Array (UAC1.0)"
*                alsa.long_card_name = "SEEED ReSpeaker 4 Mic Array (UAC1.0) at usb-0000:01:00.0-1.2, full speed"
*                alsa.driver_name = "snd_usb_audio"
*                device.bus_path = "platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0"
*                sysfs.path = "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/sound/card0"
*                udev.id = "usb-SEEED_ReSpeaker_4_Mic_Array__UAC1.0_-00"
*                device.bus = "usb"
*                device.vendor.id = "2886"
*                device.vendor.name = "SEEED"
*                device.product.id = "0018"
*                device.product.name = "ReSpeaker 4 Mic Array (UAC1.0)"
*                device.serial = "SEEED_ReSpeaker_4_Mic_Array__UAC1.0_"
*                device.form_factor = "speaker"
*                device.string = "front:0"
*                device.buffering.buffer_size = "28800"
*                device.buffering.fragment_size = "7200"
*                device.access_mode = "mmap"
*                device.profile.name = "analog-stereo"
*                device.profile.description = "Analog Stereo"
*                device.description = "ReSpeaker 4 Mic Array (UAC1.0) Analog Stereo"
*                alsa.mixer_name = "USB Mixer"
*                alsa.components = "USB2886:0018"
*                module-udev-detect.discovered = "1"
*                device.icon_name = "audio-speakers-usb"
*        Ports:
*                analog-output: Analoge Ausgabe (priority: 9900)
*        Aktiver Port: analog-output
*        Formate:
*                pcm

Target 0 is a ds4 controller (in case you wonder)

Right, so it is picked up under the normal usb stereo analog output mixer scheme.

24bit 48000 hz

No clue, what is used under your previous test. But looks quite default to me.

What caught my eye now is that the volume is set -7,5db on picroft/ 0bd mycroftOS
(sorry, brainfart)