Voice Wifi Transmission Project

Hi All, I am trying to accomplish the following and would greatly appreciate some guidance in terms of what hardware to consider so I can start reading up on it.

  1. Microcontroller record sentences (10-20 seconds) with a trigger (e.g. while button pressed)
  2. Audio is converted to a decent quality wav file
  3. Wav file is sent using wifi over to a webservice
  4. Webservice processes the file and sends back a wav file that is played back on the microcontroller

Thanks!

Considering that Arduino is an 8 bit uProcessor with very limited memory, i think you will be hard pressed to acomplish this.

20 seconds of audio in decent quality take up a lot of memory, converting it to a wav file means that you need at least twice the memory during the conversion.

This is after you solved the problem of sampling the audio in a decent quality first.

  1. Arduino

  2. Wave shield
    Audio Shield for Arduino

  3. Wi-fi shield
    SparkFun WiFly Shield - WRL-09954 - SparkFun Electronics

That would be a playback solution only.

The wave shield can not record audio.

What about this one?
http://spikenzielabs.com/SpikenzieLabs/VoiceShield.html

I've got it working. You cannot store 10s obviously. You must send it immediately to the PC. This is no different from a cheap wireless microphone except in the following ways:

  1. XBee can go to sleep when sound is below a threshold. UNO can also, waking up to sample every 10s. The average power is less than 1ma. Try this with a wireless Mic 1/2mi away!

  2. Other data can be sent too. IR sensor, temp, light, jpg.

  3. You can look for a signature in the frequency domain before sending. There is enough processing power for this! For example birds, a specific type of owl already sampled, male voices, a car engine idling, heater turning on, transient sounds like a door shutting.

  4. You can talk back

  5. Do a FFT at 32khz and only send the results instead of the audio

  6. Using Openlog you can make a tiny Spy Bug with a thumbnail sized lithium thionyl battery that lasts a YEAR! Depending on how much talking is being done. Try that with a voice recorder?

Which of these 6 features do you like?

Without uLaw compression, if the scaling is done in hardware, the main loop is only 2 lines of code:

mydelay();
serial.write(analogRead());

About 20 lines with both of those features.
With a few more lines of code I've used oversampling to eliminate the need for a Nyquist filter, even at 2Khz.

At 10khz over XBee it sounds better than a mobile phone!

At 32khz you cannot send it in real time serially, but you can send chunks for analysis on a PC.

I recommend this, they're Free!

sbright33:
I've got it working. You cannot store 10s obviously. You must send it immediately to the PC. This is no different from a cheap wireless microphone except in the following ways:

  1. XBee can go to sleep when sound is below a threshold. UNO can also, waking up to sample every 10s. The average power is less than 1ma. Try this with a wireless Mic 1/2mi away!

  2. Other data can be sent too. IR sensor, temp, light, jpg.

  3. You can look for a signature in the frequency domain before sending. There is enough processing power for this! For example birds, a specific type of owl already sampled, male voices, a car engine idling, heater turning on, transient sounds like a door shutting.

  4. You can talk back

  5. Do a FFT at 32khz and only send the results instead of the audio

  6. Using Openlog you can make a tiny Spy Bug with a thumbnail sized lithium thionyl battery that lasts a YEAR! Depending on how much talking is being done. Try that with a voice recorder?

Which of these 6 features do you like?

Thank you all for the responses. So can I accomplish my task (send recorded audio to webservice and then play back response from webservice) without a voice shield? I was also wondering about a quick easy way to connect to my or any other wifi service. Would it be possible to speak out the wifi password to connect to the internet. I have a wireless kodak photoframe that needs to be configured for wifi connection with a usb wire before going wireless. But in my project, I would rather just speak out the password and the arduino should connect.

So for now i'm gonna order the arduino uno and xbee for wifi. For voice password to connect to wifi would the voice shield work? Would it recognise all the alphabets and numbers?

Thanks.

So can I accomplish my task (send recorded audio to webservice and then play back response from webservice) without a voice shield?

No. The microcontroler / arduino board is not design to work with sound. You need additional hardware, mic + preamplifier + memory ( 10 seconds phone quality sound require 80 k byte, about 10 times more than mega board has, and 40 times more than uno ), this is why I recommended to look for voice shield. My advice , split your design in a few subsystems, and look for solution in each category.

  1. Audio frond end.
  • Voice shield, or
  • Mic + preamp.
  1. Analog digital converter and radio link.
  • Arduino + wi-fi shield, plus wi-fi (already existed) on receiver side;
  • Zigbee (pair) plus arduino on other end connected to PC.
  • something else.
  1. Voice recognition.
    Look for shield that capable to do it. What I recommend above isn't design for this task.
    May be this one:
    http://www.ewerksonline.com/catalog/product_info.php?products_id=203
    I don't have device and can't comment.

I disagree. I've got it working with the circuit above. Voice recognition is much more difficult with our hardware.