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?

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 acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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