I'm looking at doing something rather simple, but I'm not sure the processor speed will be enough.
Here is what I want to do:
Record sound (sentences, not too long, maybe 5 seconds max) - I would like to stream this to the server
Send this via WiFi to a server for processing
Server streams the result back via WiFi to be played back (max 10 seconds) - As soon as the resulting audio is received it should be played, like streaming audio, 128kb/s quality wav.
Now to the question, the main board I am looking at has a ATmega328P http://www.atmel.com/devices/atmega328p.aspx processor that runs at max 20 Mhz. Will 20 Mhz be enough to do what I want without the playback (to the server/from the server) stuttering, assuming no network problems?
The quality of the audio is not of great importance, I can filter is a bit on the server side, but it needs to be good enough to be able to push through voice recognition (speech-to-text)..
That will really slow down the rate at which you can sample data. To the point where "forget it" rears it's ugly head.
That is also fine, streaming would be the very best, but I have no problem dropping it and only send the audio after 5 seconds (or some other 'cutoff' parameter)
There is a tradeoff. Higher sample rates will produce better sounding data. But, you have more data to store, and a limited amount of space to store the data in.
The higher speed DUE would be a better choice, since it also has a lot more SRAM where you would store the sampled data prior to sending it.
128kb per second for 5 seconds is 640k of data. You'll be really hard-pressed to store that in the 2k or SRAM that the 328-based Arduinos have.
The quality of the audio is not of great importance, I can filter is a bit on the server side, but it needs to be good enough to be able to push through voice recognition (speech-to-text)..
If you want to be able to do speech-to-text then the quality is vitally important. I'm pretty sure that the sampling rate and resolution available from an Arduino will render the speech incomprehensible to any readily available speech recognition software. You might be better off starting with a computer with the processing power to do the voice recognition locally, rather than trying to use an Arduino as a wireless microphone and process the audio remotely.
You need to read the FFT reference in the Library page. I don't know what your Math experience is but its better to understand the background to Fourier transforms before you start doing signal processing. Makes the whole concept much more rewarding.
As someone (sorry, it was you in fact) commented about using the Due, thats exactly the reason why I've just bought some for development. There are a couple of chinese ebayers selling Due boards for a lower price.
I'm glad you found that useful.
OML has a great reference on his page to www.alwayslearn.com ; this guy's explanation is something I wish I had access to when I was studing the math in Fourier transforms years ago.
Again, not trying to teach you how to suck eggs, but if you have'nt used dspguru, there is a wealth of knowledge on that site..just google it.