Hi everybody!
Let me first start with that I am absolute beginner to home automation and I have some experience in simple coding and basic common computer knowledge - very basic. Recently home automation sparked my interest and I started reading on the topic.
The ultimate goal for my home automation project is to automate a small house with total of 7 different rooms. I want to use home assistant for the basic automation and for the voice controls I want to use Rhasspy but there are some very basic things that I do not understand and if someone is willing to explain them it will be much appreciated.
Currently for the test purposes I have installed Home Assistant on docker on an old laptop running Ubuntu. Since the end goal it to be able to control it from 7 different points I assume that I will need 7 different microphones. This is where I get lost. From what I read Rhasspy works using server/client communication. If I want to use it over Wi-Fi will this mean that I will need 7 microphones with a raspberry pi for each of them? What is the best recommended option in this case. Also I would like to ask what happens if two of the microphones pick up words at the same time? Does anyone have experience with building similar environment?
That’s correct. I am running Home Assistant on a server where the main Rhasspy server instance is configured, then I have 3 different Pi Zero W’s in different rooms all configured as Rhasspy sattelites. I’d suggest the Respeaker 2mic Pi hat for each of them. If cost is less of an issue, look into the more expensive Respeaker options and consider the Pi 3. Performance is not horrible at all on the Pi Zero, but is definitely noticeably faster with a Pi 3 or above.
For me the higher end USB respeaker Mics are out of whack with Pi price and $70 is too much.
Pi4b±2gb=$35
Pi3a+=$25
Pi0w=$15 but finding them is hard work.
Pi0=$5 and you can use a wifi dongle.
So a $10 2 mic re-speaker is pretty hard to beat and for me sits well with the Pi3A+ as at least you can find where to buy them if you want a ‘w’.
If have just purchased the most ridiculous looking thing from Scan for £4.79 but they did charge me almost £5 P+P.
Its got a pretty damn amazing VIA VT1620A audio chip in it but charting unknown waters.
Have to say though Pi4b±2gb is quite awesome for price but it does need a good cooling solution. (£10)
I hate the driver and forced kernel that the Respeaker 2mic forces though.
Yeah just ran the pi zero with software EC extremely surprised it did this well but not much good.
Thank you both for the answers. One of my concerns is what happens if two of the mics pick up the phrase if they happen to be in proximity?I am asking because one of the rooms is with open space concept and I don’t think that I will be able to use only one mic if i want coverage in the entire room.
I looked into the Respeaker 2mic Pi hat and it is reasonably priced. How does it perform when you speak from a distance? I read that its field of operation is about 3 meters. Actually I am using USB stereo sound card for my laptop because I broke its stereo jack and it performs pretty well.
P.S. Please excuse my poor word choices but English is not my native language.
On a single card the mics are are summed AEC is apllied and its returned as a mono stream.
The auto leveling of the WM8960 doesn’t seem to work which is a shame.
I haven’t tried distance but its semsitivity vs noise also seems much better than previous sound cards and webcams that used probably electret microphone but the mems on the 2mic seem really good.
I haven’t tested distance but likely quite good.
It doesn’t seem as clear as my linear 4 mic for Pi but I haven’t played with software AGC yet.
I haven’t looked at the Master/Satelite setup of Rhasspy but was toying with the idea of using VAD level to choose microphone.
It all starts to get much easier when you have an authoritive server other it just boils to the physics of mics and enclosure on range, directional position and orientation.
You might find yourself better off with your USB stereo card and some mic modules.
If you are buying a few at the same time Microphone boards are really cheap as much is P+P.
You can actually get I2S mics that supposedly work on all pi’s apart from the Pi4 for some reason.
Or with a Mems analogue output such as to go to your USB sound card but it will prob be a mono mic.
Or even go electric with auto gain controlled by gpio.
I can not tell you anything apart from that is what I will be playing with.
Your English is great mate as mine is crap but it is my native language
There is also RockPiS which for $15 is approx Pi3 speed no GPU but built in sound codec.
Its sort of zero size but square as you can see it next to a Pi4 with a Zero hat on top.
I did a whetstone bench and yeah its approx Pi3 Level
##############################################
Whetstone Single Precision C Benchmark vfpv4 32 Bit, Tue Apr 28 19:02:46 2020
Loop content Result MFLOPS MOPS Seconds
N1 floating point -1.12475013732910156 282.214 0.062
N2 floating point -1.12274742126464844 296.081 0.417
N3 if then else 1.00000000000000000 132837800.000 0.000
N4 fixed point 12.00000000000000000 1256.192 0.230
N5 sin,cos etc. 0.49911010265350342 19.118 3.995
N6 floating point 0.99999982118606567 241.286 2.052
N7 assignments 3.00000000000000000 603.154 0.281
N8 exp,sqrt etc. 0.75110864639282227 11.552 2.956
MWIPS 918.560 9.994
SYSTEM INFORMATION
From File /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 1
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 2
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 3
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
Serial : 2f2aeacee81f7ce9
From File /proc/version
Linux version 4.4.143-47-rockchip-g495ff574976c (root@91e15308a281) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120aaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Tue Apr 21 01:38:40 UTC 2020
Additional information -
##############################################
Whetstone Single Precision C Benchmark vfpv4 32 Bit, Tue Apr 28 19:03:30 2020
Loop content Result MFLOPS MOPS Seconds
N1 floating point -1.12475013732910156 282.161 0.063
N2 floating point -1.12274742126464844 296.037 0.417
N3 if then else 1.00000000000000000 398947488.000 0.000
N4 fixed point 12.00000000000000000 1256.238 0.230
N5 sin,cos etc. 0.49911010265350342 19.120 3.999
N6 floating point 0.99999982118606567 241.298 2.054
N7 assignments 3.00000000000000000 603.168 0.282
N8 exp,sqrt etc. 0.75110864639282227 11.588 2.950
MWIPS 919.447 9.995
SYSTEM INFORMATION
From File /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 1
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 2
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 3
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
Serial : 2f2aeacee81f7ce9
From File /proc/version
Linux version 4.4.143-47-rockchip-g495ff574976c (root@91e15308a281) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120aaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Tue Apr 21 01:38:40 UTC 2020
Additional information - RockPiS-Debian64
##############################################
Whetstone Single Precision C Benchmark vfpv4 32 Bit, Tue Apr 28 19:37:51 2020
Loop content Result MFLOPS MOPS Seconds
N1 floating point -1.12475013732910156 282.238 0.063
N2 floating point -1.12274742126464844 296.100 0.417
N3 if then else 1.00000000000000000 99736872.000 0.000
N4 fixed point 12.00000000000000000 1256.765 0.230
N5 sin,cos etc. 0.49911010265350342 19.124 3.998
N6 floating point 0.99999982118606567 241.346 2.054
N7 assignments 3.00000000000000000 603.216 0.282
N8 exp,sqrt etc. 0.75110864639282227 11.588 2.950
MWIPS 919.558 9.994
SYSTEM INFORMATION
From File /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 1
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 2
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
processor : 3
BogoMIPS : 48.00
Features : fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd04
CPU revision : 2
Serial : 2f2aeacee81f7ce9
From File /proc/version
Linux version 4.4.143-47-rockchip-g495ff574976c (root@91e15308a281) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120aaro GCC 7.3-2018.05) ) #1 SMP PREEMPT Tue Apr 21 01:38:40 UTC 2020
Additional information - RockPiS-Debian64-whetstonePi64
I get pretty decent range with my Respeaker 2mic - up to about 4 meters and even a bit more if I raise the gain in alsamixer. I get a bit less range with a PS3 Eye mic on another satellite I have in another room - still, better than expected though.
pcm.agc {
type speex
slave.pcm "capture"
agc 1
denoise no
dereverb no
}
pcm.capture {
type plug
slave {
pcm "array"
channels 2
}
route_policy sum
}
The speex alsa-plugins can come in really handy for AGC as the hardware version doesn’t seem to work.
I can’t remember if AGC is speex or speexdsp alsa-plugins expects a newer version than Raspbian supplies so you have to download recompile the newer speexdsp/speex and then recompile alsa-plugins (1.8.1 current version) and magically they will arrive.
The AGC can help much with range and after the compile hassle its relatively easy to add to an asound.conf
Also summing the mics via route can also help.
I was originally recommended a PS3eye and now think of it as an urban myth that its any good, for a few reasons.