Almost exactly two years ago to the day, we published an article showing how microphone arrays performed against a single USB microphone, and the latter started to have a poor wake word detection success rate at around 3 meters array even in a silent room, and it got worse with white noise or background music, while the microphone arrays would pick up the wake word with a much higher success rate in all conditions.
The price of smart audio development kits varies a lot from $500 for Intel Speech Enabling Developer Kit to $129 for an Allwinner R18-based 3-Mic Far-Field Amazon AVS Development Kit, and $99 for ReSpeaker Core v2. If you’ve already got a Raspberry Pi 3/4 board, you can get cheaper options such as ReSpeaker 4-Mic Array for $25, but nothing beats the price of Sony PS3 Eye camera that comes with a 4 microphone array and sells on Amazon for around $7.5. You may even already have one, so no need to spend extra money.
PS3 Eye was actually part of the article we published two years ago, and the camera performed well in comparison to more expensive development kits. The subject came back recently in the comments section of a post about Tmall Genie smart speaker, via a post by Michaela Merz which compares PS3 Eye against Respeaker Mic Array v2.0 ($69), and explains how to setup PS3 Eye’s microphone array in Raspberry Pi 3.
Let’s show the configuration part
- Edit /etc/udev/rules.d/70-alsa-permanent.rules to make sure the PS3 Eye USB mic array is properly detected:
123SUBSYSTEM!="sound", GOTO="my_usb_audio_end"ACTION!="add", GOTO="my_usb_audio_end"ATTRS{idVendor}=="1415", ATTRS{idProduct}=="2000", ATTR{id}="VOICE" - Edit ${HOME}/.asoundrc ALSA configuration to use VOICE device:
1234pcm.array {type hwcard VOICE}
adjust the gain:
1234567891011121314pcm.array_gain {type softvolslave {pcm "array"}control {name "Mic Gain"count 2card 0}min_dB -40.0max_dB 10.0resolution 80}
and downmix all 4 microphone audio streams into a single one:
12345678pcm.cap {type plugslave {pcm "array_gain"channels 4}route_policy sum} - Use “cap” stream to record audio using what sound-to-text solution you are using.
So how well does PS3 Eye work compared to ReSpeaker mic array? Michaela goes into more details on her blog post with samples, and insights, but the conclusion is the main takeaway:
Don’t expect wonders. If your STT like Sphinx or Kaldi doesn’t understand you with a cheap Sony Playstation Eye, it will most likely not understand you even with the ReSpeaker attached.
One advantage of the ReSpeaker board is that it works in a 360-degree circle around the device, while PlayStation Eye is more directional, so depending on where and how far you stand it may not pick up audio just as well.
Thanks to Jon for the idea.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
You can also use the XBox Kinect.
Use the respeaker software, it will work with this camera. Leave the 4 channels unmixed.
Quick summary of how array mics work…
1) You listen to one (or a mix) of the channels. Use hardware VAD (Voice activity detection) if you have it.
2) Do local echo cancelling on this (in case device is playing music)
3) Detect the hotword
4) After you hear the hotword you do math on the four channels to figure out AOA (angle of arrival). This works because you know what the hotword is and you can compute the phase delay on the four channels. Use the phase delays to determine the angle. This is normally done in 2D but you can get fancy and do it in 3D.
5) Now that you have AOA you can put a filter on the four channels that will filter out sound that does not come form that angle (like the the TV blaring off to the side). This is the whole point of having an array mic.
6) Do more AGC or AEC if you want
7) Send the data off to Amazon or Baidu.
BTW, you can even watch an Echo device doing this. When you first talk to it the whole ring lights up. After it detects the hot word it computes the AOA and changes the LEDs to point towards the speaker. They stay pointed towards you until you pause speaking. While it is pointed towards you it is filtering out sound not coming from that direction.
The new BLE indoor positioning system works in a similar way. It has multiple antennas just like Alexa has multiple microphones. The wifi one is different, it measures how far away the other radio is.
It’s been a while, but where can I find that software? I skimmed through respeaker’s github and docs but couldn’t find it. Thanks in advance
There is also this $12 6-mic alternative I came across today: https://www.seeedstudio.com/Sipeed-6-1-Microphone-Array-for-Dock-Go-Bit-p-2875.html
The webpage seem a bit.. work in progress.. But it seems to connect to their MAIX Kendrite board with some ribbon cable (so not as universal as the other options with USB)
What chip is in the middle of this board? Is it an AC103 or AC101? Need more info to be able to tell if this board will work on other CPUs.
The PS3 Eye is a very cheap way to attach an array mic to your desktop PC.
I think there may not be a chip. There’s another microphone in the middle. As I understand it, the audio is fed directly into Kendryte K210 processor that will take care of audio processing via its APU. Link to schematics and specs: http://dl.sipeed.com/MAIX/HDK/Sipeed-R6%2B1_MicArray/
And it looks like the central mic is of the same type (not something more sensitive or something). It’s not my area of expertise, but the 6 outer ring mics are connected in pairs to the same data lines while the central one has its own line. Seems a bit weird.. but you’d have to look into the mic data sheet to figure out the implications
Yes, they’re connected as a 4 L+R mic array whose I²S are output directly on the connector as MIC0..MIC3 (the latter being the center one). So you need to have 4 I²S inputs to drive this board.
I believe they are PDM microphones, not I2S.
Yes it’s I2S. I’ve read this on the microphone datasheet. They even explained that depending on the channel configuration it writes the sample into the left or the right slot. Ah here’s the link : http://dl.sipeed.com/MAIX/HDK/Chip_DS/%E9%BA%A6%E5%85%8B_MSM261S4030H0%28%E4%BD%BF%E7%94%A8%E7%9A%84%29.pdf
I wonder why they made the chip use I2S mics instead of PDM ones? The PDM ones are half the price. Allwinner chips use the PDM mics. I have not seen this vendor before and the part is not listed for sale anywhere. Maybe this I2S mic is cheaper.
PDM mic is 6 pins, these are 8.
Bit of a necro but found the above to be a bit of a bum steer,
pactl load-module module-echo-cancel use_master_format=1 aec_method=’webrtc’ aec_args='”analog_gain_control=0 digital_gain_control=1 voice_detection=1 beamforming=1 mic_geometry=-0.03,0,0,-0.01,0,0,0.01,0,0,0.03,0,0″‘
Just run that as Raspbian will detect the PS3 eye anyway, don’t do any of the above.
add it to .profile or .bashrc so it runs on login and try it out.
Been trying the home assistant Mycroft.ai on a Pi4 and wow for 5$ the PS3 eye with the above is good for that.
Make sure pusle audio is installed but for voice that is about as good as it gets and the beam forming, noise reduction, echo reduction and auto-gain work great.
Have you tried this on kaldi-active-grammar to see what error-rate you get?
What debian packages do you have to install in order for this to work? I’ve tried everything and I still get an error telling me: Invalid echo canceller implementation ‘’webrtc’’. I’m using Debian Buster on AArch64 (arm 64).
Apols found that things didn’t go to plan and my favoured Pi mic setup due respeaker driver hell is.
https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-test
You can get cheap aliexpress ones but its Adafruit who did all the work.
Or just a USB sound card again there are stereo ADC ones that work really well with powered mic modules but fine with passive.
EC given up with pulseaudio on all but with a single clock this works.
https://github.com/voice-engine/ec
Or give Rhasspy or Mycroft a look as often posting on there.
PS3eye turned into a bit of a mare in now in the almost bin box.
@Nobert
Don’t copy-paste directly from the comment, it has ‘fancy’ quotemarks. Retype it.
do you have a solution for the new raspian os “Bullseye”?
also in the “Bullseye” from Dietpi this dosn’t exist
there i don’t find this files:
/etc/udev/rules.d/70-alsa-permanent.rules
and:
${HOME}/.asoundrc