This script uses the festival text to speech system, SoX and lame to generate an mp3 to practice mental addition. It basically says two numbers and after a delay says the sum of those two numbers, the delay is supposed to give you time to calculate the sum mentally:
#!/bin/bash -e
# output file
output=$1
if [ -z "$output" ]; then
echo "usage: $0 OUTFILE"
exit
fi
CWD=`pwd`
TMP=`mktemp -d /tmp/speed_addition.XXXX`
pushd $TMP
# pause length in seconds
pause=8
for i in `seq 32`; do
x=$(($RANDOM % 999))
while [ $x -lt 11 ]; do
x=$(($RANDOM % 999))
done
y=$(($RANDOM % 999))
while [ $y -lt 11 ]; do
y=$(($RANDOM % 999))
done
echo "$x . + . $y" | text2wave -o add$i.wav
echo "$(($x+$y))" | text2wave -o result$i.wav
sox add$i.wav add_with_pause$i.wav pad 3 $pause
sox add_with_pause$i.wav result$i.wav out$i.wav
done;
sox out*wav out.wav
lame --ta speed-math --tl speed-math --tt $output --silent out.wav $CWD/$output
popd
rm -r $TMP