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.

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 PayPal, become a Patron on Patreon, or buy review samples
Subscribe
Notify of
guest
17 Comments
oldest
newest most voted
Singman
Singman
1 year ago

You can also use the XBox Kinect.

Jon Smirl
1 year ago

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

Jon Smirl
1 year 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
1 year 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.

geokon
1 year 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
1 year 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
1 year 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
1 year 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
1 year ago

I believe they are PDM microphones, not I2S.

willy
willy
1 year 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
1 year 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
6 months 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
6 months ago

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

Nobert
Nobert
4 months 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 months 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.
1 month ago

@Nobert

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

Advertisements