14
\$\begingroup\$

I have been learning a lot about adaptive beam-forming, and have been mucking around with various sims in MATLAB, etc.

But what better way to understand something - truly understand it - than to play with the entire system?

To this end, I would like to find (build?) a USB connected microphone array, with say, 5 mics or so. They would be able to acquire signals from the environment, (aka, wherever my laptop is), and I would then be able to take those signals and process them in MATLAB or whatever.

I would really rather not build the entire thing, so I am hoping someone has already used USB connected microphone arrays in the past, and can point in the right direction?

The microphones need not be anything fancy when it comes to bit resolutions of their A/D, etc. KISS microphones of respectable quality will do just fine.

\$\endgroup\$

3 Answers 3

10
\$\begingroup\$

The Playstation Eye video camera has a 4-element linear microphone array. It provides 16-bit samples at 48 KHz with a SNR of 90 dB. It's easy to use: it enumerates as a standard USB audio device with four separate channels.

For an example of using it this way, see: PS3 Eye 4-channel Audio Tests on Ubuntu Karmic

\$\endgroup\$
2
  • 2
    \$\begingroup\$ @Mohammad This would probably be a good solution if you are happy to limit yourself to four channels. Four channels will give you a beamforming gain of about 12dB. The downside is that due to the fact that the total extent of the array is quite small, you will have quite a large beamforming focal spot: You cannot separate sound sources that are too close together. Your main application for this array would therefore probably not be isolating sound sources but rather tracking a single sound source through space. I.e. know where a person is standing from their voice... \$\endgroup\$
    – ARF
    Commented Aug 26, 2012 at 13:46
  • 2
    \$\begingroup\$ @ArikRaffaelFunke Hmm, I don't know enough about adaptive beam forming to know what a focal spot is. :-) However I think I would still be able to separate sources using non-instantaneous ICA. (actually I am focusing on ICA at the moment). Also, yes 4 is not as much as I had hoped for... But maybe this can be a start..c \$\endgroup\$
    – Spacey
    Commented Aug 26, 2012 at 13:57
5
\$\begingroup\$

Having worked extensively in adaptive beamforming, I would really shy away from hacking something myself for this until I had some experience. (Note: Professional solutions with about 60 channels cost about 100k€. With many channels your spatial resolution becomes much better, but you only get a limited amount of information through a USB port...)

For reliable beamforming it is essential that all microphones use the same time base. The easiest way to achieve this is with an external USB soundcard with multiple input channels. Those are not really cheap though. Have you had a look at what can be found on ebay?

An alternative is to sacrifice the common time base by using a number of USB soundcards with e.g. two channels each. You will however need to calibrate your acquisition system. This is really not as difficult as it sounds:

To calibrate, you set up your array and produce a short sound (e.g. a crack/clap/etc.) at a distance from your array that is of the order of the extent of your array. You then record this sound and use Matlab or similar to calculate the cross-correlation between the clap/crack/etc. on the different channels. This will give you a list of time offsets you need to apply to your channels to align them before feeding the data to your beamforming algorithm.

To explore adaptive beamforming, this is probably the way to go unless you can make a bargain on a multi-channel soundcard.


Edit 1

This edit is to answer the questions raised in the comments.

The basic idea of delay and sum beamforming is to apply delays to different acquisition channels such that the sounds the originate from one point in space align and "amplify" when signal from the different channels are added. Sounds that orignate from other regions of space do not align and therefore are not "amplified".

The point in space for which the sounds align using a certain set of delays is called the focus of the microphone array (or focal spot). In reality however, the focus is not an ideal point but rather a small(ish) (depending on the array) region of space for which the sounds align well. The size of this region is called the size of the focal spot.

The geometry (size, shape, etc) depend on the exact details of the array: number of microphones, microphone spacing, frequency content of the signals of interest. See e.g. this article.

For more information look for texts on focusing "phased arrays" or "linear arrays" in ultrasonics. Beamforming can be used on reception (to amplify signals from a certain point in space) or on emission (to create a "loud" spot in a room). The principles are identical: just replace "microphone" by "loudspeaker" in your thinking.

Regarding the calibration procedure: you are correct. The procedure I outlined is too simplistic. It only works well if you can create the calibration clap from a much longer distance than the region of space you are interested in. (I.e. to ensure a plain wave.)

If this is not possible, you have to take the position of the clap into account. In this case, the simplest procedure is to correct the delays by cross-correlation as described but then add the curvature of the wavefront back onto the the signal by applying an "inverse beamforming" set of delays calculated with the position of the origin of the clap. (I.e. if you use a depth variable +t0 (or +z0) in your "normal" beamforming algorithm, you need to use -t0 (or -z0) for the inverse beamforming algorithm.)

What is the point of this calibration: it eliminates any errors due to the different sound cards starting their recording at slightly different times. This would normally prevent signals aligning properly even with correct delays and thus prevent the amplification effect you are looking for.

\$\endgroup\$
8
  • \$\begingroup\$ Thanks Arik. However, I am not sure why you want to compensate for time-delays here. For example, some adaptive beamforming as you know is delay-and-sum, so it takes case of time-delay issues automatically. The second thing (I think this is what you are saying), is that I do want a common time-sync. (ie, press a button, all microphones start to record at the same time), but I dont want them to have common time-delays. \$\endgroup\$
    – Spacey
    Commented Aug 25, 2012 at 20:21
  • \$\begingroup\$ I actually have built into my laptop, a microphone array, I think is just two mics, but it might be a starting point, however I have no idea how to actually access their data with minimal fuss separately... \$\endgroup\$
    – Spacey
    Commented Aug 25, 2012 at 20:22
  • \$\begingroup\$ @Mohammad - the issue isn't compensating for known time-delays, it's compensating for unknown time delays. Basically, there will be some processing-time for each separate USB soundcard, and it may vary from device to device (in which case it could be compensated for), or even not be constant/change depending on USB bus loading. \$\endgroup\$ Commented Aug 26, 2012 at 12:27
  • \$\begingroup\$ @Mohammad What FakeName said... To make things maybe even clearer: The time base for any beamforming must be better than the half-period of the highest frequency component you want to take into account. I believe this is impossible to achieve this with independent sound cards by simply starting them recording at the same time. Thing are different if you have a single soundcard with multiple channels. \$\endgroup\$
    – ARF
    Commented Aug 26, 2012 at 13:31
  • \$\begingroup\$ @ArikRaffaelFunke I see what you mean about calibration, I misunderstood your statement. However, I do not see how one could remove the time delay from uncommon time base, without also inadvertently removing time delay from the channel, (which you want to keep). The only way is to make sure that distance to each mic from the clap is the same, but that is impossible for linear array > 2. Maybe if far enough (thus planar wave fronts ) it won't matter too much? \$\endgroup\$
    – Spacey
    Commented Aug 26, 2012 at 13:39
1
\$\begingroup\$

There are now more microphone array kits with USB connectivity available on the market. Some examples are MiniDSP UMA16 - a square array with 16 channels, or the MiniDSP UMA8 a circular array with 8 channels. Both are suited for custom beamforming implementations.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.