Using Sony PS3 Eye Camera as an Inexpensive Microphone Array

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 Inexpensive Microphone ArrayPS3 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

  1. Edit /etc/udev/rules.d/70-alsa-permanent.rules to make sure the PS3 Eye USB mic array is properly detected:

  2. Edit ${HOME}/.asoundrc ALSA configuration to use VOICE device:

    adjust the gain:

    and downmix all 4 microphone audio streams into a single one:
  3. 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.

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
19 Comments
oldest
newest
Singman
Singman
4 years ago

You can also use the XBox Kinect.

Jon Smirl
4 years ago

Use the respeaker software, it will work with this camera. Leave the 4 channels unmixed.

Jon Smirl
4 years ago

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… Read more »

Jon Smirl
4 years ago

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.

Ian
Ian
3 years ago

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

geokon
4 years ago

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)

Jon Smirl
4 years ago

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.

geokon
4 years ago

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

willy
willy
4 years ago

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.

Jon Smirl
4 years ago

I believe they are PDM microphones, not I2S.

willy
willy
4 years ago

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

Jon Smirl
4 years ago

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.

Rolyan Trauts
4 years ago

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… Read more »

Aasd
Aasd
4 years ago

Have you tried this on kaldi-active-grammar to see what error-rate you get?

Nobert
Nobert
3 years ago

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).

Stuart Naylor
3 years ago

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.

John S.
John S.
3 years ago

@Nobert

Don’t copy-paste directly from the comment, it has ‘fancy’ quotemarks. Retype it.

beabel
beabel
2 years ago

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

Khadas VIM4 SBC