Picroft Multiple rooms

Hi everyone,

I’m planning to combine my house automation with picroft. Is it possible to use one raspberry with multiple microphones (one microphone for each room) or do I need to use von raspberry with picroft in each room?
Thanks in advance.

Eyk

Welcome @eyk107,

Currently you need a RPI with Picroft in every room. You are not the first to ask if Mycroft supports “satellite microphones” like some other voice assistants do. My prediction is that this will be available somewhere in the future (but I can’t see if it is near or distant future…).

1 Like

Thank you for your fast reply. I’ve searched the forum, but couldnt find any information

Welcome @eyk107
Even @Dominik answered your question, here are existing threads on this topic.

I am working on an mqtt skill that will publish and subscribe to commands and messages. This will permit multiple mycrofts (and Home assistant) to communicate with each other. Each Mycroft will have a location topic and the skill will publish the location that appears in the skill command. All commands and responses will be published to its own topic.

1 Like

i’ve had this for ages https://github.com/JarbasAl/hive_mind

ill try to find some time to write docs and make docker images, check “terminals” to see how to make satellites

this is not for everyday users, you kinda need to be a dev and read trough code to understand how to set things up until i write docs

note: this PR is recommended https://github.com/JarbasAl/jarbas-core/tree/feat/message_targetting

2 Likes

Would LOVE to see documentation for HiveMind. I’m pretty weak on coding but would love to setup a half dozen PiCrofts around my house… plus on my phone whenever a legit, standalone Android APK is released.

1 Like

Pulseaudio does work over the network so guess you could use a Pi Zero as a microphone sender.
https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network
USB microphone, still uses a Pi but a much cheaper one.

You can set Pulseaudio to summing mode with arrays and assign that to a stream.
Or hardwired multiple usb soundcards and sum those via ALSA.
https://alsa.opensrc.org/TwoCardsAsOne

Never tried, but prob possible.

Anyone ever tried?

Also guess there is pulseaudio - bluetooth and suppose even a mobile could act as a mic / speaker. They would all be on the same channel but they are really cheap now.

Needed PR has been merged into core, check the voice_satellite repo

@JarbasAl Does asyncio solve the QoS problems of pulseudio with WiFi and you would get timing problems with pulseudio over vanilla 802.11 Wifi connections?

the current voice satellite version handles the audio on device, the utterances is processed remotely

in a future version i will add a way to send the audio for transcription, i can’t really compare QoS at this point

voice satellite is basically a standalone version of the speech client from mycroft-core, just running a different machine

I know this is an old thread, but as I’m diving into things this occured to me. With a Linux server already running Docker, could I run multiple Mycroft instances as containers, each using a different Bluetooth speaker+mic combo?

If you can get bluetooth running in anything but narrowband audio then prob yeah.

You could just route sum your mics into a combined channel and same with ouput audio would come out on all as they share the same ALSA PCM.

But otherwise there is nothing in code to index and thread operation which really should be quite easy to do that way but isn’t.

Ahh yes I had not considered narrow vs wideband. That being said, I would love to have mycroft output voice through the BT device, but always play music on the stereo anyway.

My personal fave is snapcast as its a superb RTP audio app that is latency compensated.
Still no interface to mycroft for multiple instances as relative dumb satelites to a central Mycroft would be really cool and also far more cost effective.

I wonder how intensive SnapCast is… An interesting use case would be SnapCast on a Pi0W with a powered mic/speaker like this one: https://www.amazon.com/TONOR-Conference-Microphone-Omnidirectional-Compatible/dp/B07GVGMW59

That brings the cost of the “client” way down. You could have a setup like:

  • Server running an instance of Mycroft per-room (this would work for now)
  • Set Mycroft output to the snapcast device (additional dev)
  • Set Mycroft input to… ???

That last bullet is the hardest part. Somehow we would need a way to combine all audio inputs, and identify which room was active.

I love the Pi0 because of the form factor but with the P3A+ being 10x more powerfull for just £10 more it not as good value as the Pi3A+.

Snapcast is really lite but say if you want to encrypt through say stunnel then like anything you quickly start to max load on a Pi0 whilst plenty to spare on the 3A+

But yeah should run fine on a Pi0 just haven’t tried, Pi3a+ you have a lot of room even for a full mycroft itself as it will squeeze it in.

Shame its not more of a modular system that can thread input as audio wise it would be relatively easy and as said very cost effective.

So this is going to sound stupid probably… But if I spin up a dedicated VM for Mycroft and use my audio passthrough to my 12 channel audio system I could potentially swap the different speakers out to say mic and speaker setups and Mycroft should be able to hear me in all rooms??? While this is more work upfront with cabling I feel like this is the easier solution instead of trying to fix the issue with software/3rd party add-ons…testing and figuring out what mic/speaker combo works best would be the second challenge