I am working on a project that involves real-time audio processing to do noise cancellation, so basically taking input from a microphone, doing processing, and sending out the output. It heavily relies on very little delay between input and output. I bought a Raspberry Pi Model B Rev 2 and this microphone (image).

From my search, I think I've narrowed it down to two things: I can either wire that microphone to a 3.5mm jack, connect it to a USB sound card, and connect it to the Pi. OR, I can get an ADC expansion sound card like the ones listed on the elinux.org page.

Which approach will give me the least delay in input and output? As far as I can tell, I'm guessing USB is slower than using the IO pins. Also, would using an Arduino instead actually be better for noise cancellation?

2 Answers 2


Yes, using USB as a relay instead of polling the audio directly on a pin would cause a higher latency. I doubt the Arduino has enough processing power to do a software noise cancellation. I'd stick with the pi.


I doubt if using USB would be the main cause of delay. In what language you write your noise cancellation? In C++ you might make good use of the FFTW3 library, which is very fast and well written.

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.