1) You need >3.5V for the SD card on the module from a source that can give 100mA while it talks without dropping out.
- This is because the SD card cannot run on just 3.3 volts - but the board is designed for 3.3 volts - do not use 5 Volts!!
2) WAV files play OK. I have a set of numbers that are very clear.
3) NB! as delivered 2 of the pins were dry solder jointed to the card!!!!! - I scratched off the paint round the pin and resoldered
4) An old Sandisk 2GB worked for a while off the Arduino 3V - after a few days it stopped
5) New identical Sandisks also failed on the Arduino supply - but all OK now on a dedicated more powerful supply
6) A Kingston 2GB failed on any power supply - people say it is very hit and miss but genuine Sandisk are always OK

The board demands 100 mA at 3.55 volts so I use an LM350 variable supply with 6.5 volts in and 3.55 volts out.
- I have 120 ohms across pins 1 and 2 and 227 ohms from pin 1 to earth (on a 350 ohm variable potentiometer).
On a 'scope it is rock solid 3.55 volts. At a bit below 3.4 volts the board stops talking.

I record WAV files of my voice in Audacity on my Mac and then amplify them to the default maximum without clipping
(to do this select the word you need from your voice recording at - MONO 8000Hz 16bit
- save selection as wav - re-open the saved wav file - click "effect - amplify" and choose the default no clipping maximum setting - re-save)

I see no need to bother with the manufacturers special file system (.ad4 files and the Somo tool)

// feed the characters that make up the string one by one to the speaking chip
for (int i = 0; i < number_to_speak_as_String.length(); i++)
{
Serial.print("number_to_speak_as_String character by character = ");
Serial.println(number_to_speak_as_chars[i]);
int line_to_speak = number_to_speak_as_chars[i] - '0'; //remove any null character
// speak the sound file
wtv020sd16p.asyncPlayVoice(line_to_speak);
delay(1000); // enough to speak any single number
wtv020sd16p.stopVoice();
delay(20);
}

}

20/09/2013 - Work in progress - Lesson 1 quality code!

I can now run a first attempt sketch that speaks the height and says how many minutes the sketch has been running
I will use the buttons OK/UP/DOWN to make a talking menu to adjust the variables.

NB there is something wrong with the pressure to height calculation - I need to lift the sensor about 3 feet for it to change by 1 foot.

// lowpastFast and lowpassSlow are smoothed pressure readings - a "low-pass filter" is applied to the noise in pressure
// if next pressure reading is high by 10 then 1 is added to lowpassFast but only 0.5 is added to lowpassSlow
// if next pressure reading is low by 20 then 2 is subtracted from lowpassFast - - etc

// feed the characters that make up the string one by one to the speaking chip
for (int i = 0; i < number_to_speak_as_String.length(); i++)
{
Serial.print("number_to_speak_as_String - character by character = ");
Serial.println(number_to_speak_as_chars[i]);
int line_to_speak = number_to_speak_as_chars[i] - '0'; //remove any null character
// speak the sound file
wtv020sd16p.asyncPlayVoice(line_to_speak);
delay(1000); // enough to speak any single number
wtv020sd16p.stopVoice();
delay(20);
}
loops = 0; // after talking stop the beeps fo a while while things re-settle down - reset here
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ use WTV20SD to speak numbers end