If you aren't running Linux, then this won't work. Sorry.
You can download the script if it interests you. Run it at your own risk (I can't be held responsible if it eats your computer, but it really shouldn't).
#!/bin/sh # This is a script to make the system speak the time accurately. This # would be a nice background task for a dedicated NTP box. With all of # the calls to date and festival, it's not terribly efficient, but it should # do the job. # # This assumes that the festival text-to-speech system is installed, and # that /bin/date speaks the GNU extensions. This works fine under # Fedora Core 3 linux. # # (C) 2005 Aaron Gage, free for non-commercial use while /bin/true; do sleep 0.25 let SECS=`date +%s` # seconds since epoch let NEXTSECS=10-$SECS%10 # roughly how long until the next beep # Get how many seconds will be at the next update (so it can # say "exactly" instead of "zero zero") let REMAINDER=`date --date="+$NEXTSECS sec" +"%s"`%60 # Convert the AM/PM into something festival will say properly MERIDIAN=`date --date="+$NEXTSECS sec" +"%p"` if [ $MERIDIAN = "AM" ]; then AUDIBLE_MERIDIAN="A M" elif [ $MERIDIAN = "PM" ]; then AUDIBLE_MERIDIAN="P M" else AUDIBLE_MERIDIAN="" # just in case fi # Determine if the minutes need some audible filler (so that # "twelve one PM" will become "twelve oh one PM") MINUTES=`date --date="+$NEXTSECS sec" +"%M"` if [ $MINUTES -lt 10 ]; then if [ $MINUTES -eq 0 ]; then FILLER=" o clock " else FILLER=" o " fi else FILLER="" fi if [ $REMAINDER -eq 0 ]; then # exactly on a minute NEXTDATE=`date --date="+$NEXTSECS sec" +"%l: $FILLER %M $AUDIBLE_MERIDIAN exactly on %A %B %e"` else # non-zero seconds NEXTDATE=`date --date="+$NEXTSECS sec" +"%l: $FILLER %M and %S seconds $AUDIBLE_MERIDIAN on %A %B %e"` fi echo At the tone, the time will be $NEXTDATE | festival --tts # Now, try to accurately sleep off the remaining time until the beep let SLEEPSECS=\(10-\(`date +%s`%10\)\)*1000000-\(10\#`date +%N`\)/1000 usleep $SLEEPSECS # Make noise (yes, this is silly) echo beep | festival --tts done