<--Back to Projects

TAB: Talking Alarm Buddy Report

By the Sleep Hunters (Chris Tralie and Chris Koscielny)

  1. Description
  2. Motivations / Target Audience
  3. Related Past Work
  4. Design
  5. Source Code
  6. Group Member Contributions
  7. Testing for success
  8. Conclusions / Future Work
  9. References/Acknowledgements


The goal is to have the user select a time that he/she wants to wake up. When the alarm goes off, it plays an annoying sound and waits for the user to say "stop," at which point it shuts off. The alarm clock will then go into "conversation mode" where it will speak to the user (using voice synthesis) to fully wake him up and make sure he doesn't go back to sleep. The alarm clock will start by telling the user the current time and reading the day's weather based on a previously specified zip code. It will then proceed to play an interactive verbal game with the user, where the alarm reads two numbers from 2-13, and the user says back the product. If the user makes too many mistakes or is unresponsive (he probably went back to bed), the alarm with make loud/unpleasant sounds to wake him up again. The alarm asks 10 questions to try to wake the user up initially, then reads the news from a previously-specified RSS feed, and then resumes the math game until the user gets up from bed and terminates the program manually.

Motivations / Target Audience

As put by Chris Koscielny:
I sometimes wake up to my loud alarm clock, only to turn it off and fall back to sleep. While my alarm clock successfully jolts me into a mental state capable of turning it off and going back to bed, it fails to wake me up enough to start the day. I hypothesize that the proposed conversational alarm clock will have more success for the following reasons:

  1. It's preferable to shut off the alarm by saying/shouting "stop" rather than by getting out of bed and manually disabling the entire system (especially on cold days). Therefore, I won't be as tempted to get out of bed, disable the verbal interface, then go back to sleep.
  2. The verbal interface will serve to gradually wake me up by forcing me to do basic thinking. It will also encourage me to wake up by providing me with useful information (e.g. news, weather). The goal of the interface is to bring me to a conscious mental state so that it won't be unpleasant to get out of bed.
  3. The ultimate goal is not only to get the user out of bed, but to have the user feel ready for the day by giving him/her useful information during the waking process, improving overall quality of life.
Most people with busy and stressful schedules who need to maximize their productivity while awake (99.999% of Princeton students) will benifit from this alarm clock.

Related Past Work


Software Environment:
This project was developed under Ubuntu Linux 8.10 using primarily the C language (the only place we had to use C++ was to plug in Festival audio). We used a make to organize library dependencies and interdependencies between source files, and gcc/g++ to compile everything. We used subversion to organize code collaboration efforts (especially helpful over break).

Hardware Environment:
cheap microphone that came with a computer Chris K. bought almost ten years ago.
telex brand, patent # D395893

Overview of libraries/modules and their functions:

Other Technical Details:

Source Code

A snapshot of our source code is located here

Group Member Contributions

Chris Tralie:

Chris Koscielny:

Testing for success

Instead of testing qualitative aspects of the alarm, we decided to quantitatively test features using ourselves as the subjects. This was also better given the time constraints, because not only does Chris T.'s soundcard not work properly under Linux (making recording impossible), but most people do not have linux (and getting the dependencies working so that it can be compile under Windows would be a mess right now), so the logistics of using test subjects to qualitatively test features at this time is not feasible.
Our main metric for success is the accuracy of the voice recognition during the number game. We created a test that reads 30 numbers 0 to 999, and we repeat them back to the microphone. We lied in bed, head facing towards the ceiling instead of towards the microphone resting 7 feet away on a table. This is how we would use the system if we were waking up in the morning. The logic for performing this test is contained in function number_test() in the file number_game.c

Results (the first column is what we said, and the second column is what the computer thought we said):

Chris K. First time: 21/30 (70%)
9 Wrong:
880 808
522 542
383 308
869 868
63 62
490 408
623 620
877 873
580 558
Chris K. Second Time: 21/30 (70%)
9 Wrong:
763 752
324 824
297 293
408 48
480 48
522 520
158 150
518 588
885 883
Chris T: First Time: 16/30 (53%)
Wrong 14 out of 30
5 3
417 416
727 626
803 883
397 396
307 306
697 696
409 12
247 646
653 683
706 76
899 811
360 368
667 663
Chris T: Second Time: 16/30 (53%)
Wrong 14 out of 30
161 86
49 45
837 836
992 982
907 307
707 76
239 235
135 133
937 936
665 663
680 63
704 604
432 436
843 823
Mike (a friend down the hall) : 17/30 (57%)
13/30 Wrong:
721 71
997 97
956 56
889 808
59 55
964 26
291 281
59 58
552 3
219 298
887 87
671 68
281 40
Overall accuracy: 61%
The two consistent trends here are mixing 5 and 3 and 6 and 7 (especially for Chris T on the latter).

Conclusions / Future Work

Overall, the voice synthesis and the integration with news, weather, and time worked out extremely well. The voice recognition accuracy definitely needs to be improved, however. Chris K. also used the alarm to wake him up one morning when he knew he wouldn't be getting much sleep (so that he would have trouble getting up when he heard the alarm). He reported that it was nice to get news and weather, but that it would have been more soothing to have played music to wake him up initially instead of the annoying alarm.

What we have done is only a very basic prototype for what could be done with this concept. We can still greatly improve voice detection and voice synthesis (better voices are coming out on Festival, and we have the option to make our own voices for the Festival system). There are also heuristics we can use to help improve the accuracy of the number game itself. For example, if we have a three digit number and two out of the three digits are correct and in the correct location, then assume it's right, even if the third digit is off. This would have marked 4 additional numbers correct in the first test for Chris K, 6 more in the second test for Chris K, 8 more in the first test for Chris T, and 10 more for the second test for Chris T, for an overall corrected accuracy of 85% for the Chrises. Since we're just trying to get an overall feel for if the user is awake, these heuristics may be acceptable, even though the probability of accepting wrong answers is slightly higher with this scheme. Also note that if the user got the least significant digits right, then the probability that the whole thing is right is much higher (the philosophy used in md5 checksums). For instance, when 324 was confused with 824, it is clear that it is a computer error.
Another thing that could really help is to have the user calibrate the system by saying a bunch of numbers. This increases user independence. Note that Chris T's accuracy is lower, so Chris T may have benifited from calibration. Note also that sometimes the first digit gets cut off because the user starts talking before the device is ready to record, so perhaps also include heuristics for this.
One of the main features we originally planned on having but had to abandon was a hueristic to deduce sleep cycle, and to wake a user up before the set time if necessary so that they don't fall into deep sleep again. The The Easy Wake Wrist Watch made use of the fact that a person tends to move more while in light sleep, so we could use a similar concept with the alarm clock. And in the spirit of this project (which is supposed to rely on existing hardware), we could use a webcam to help detect motion. There's apparently a library called video4linux that can be used to help with this effort. Another idea is to use a microphone as a motion detector (placing it near the bed).

Aside from adding sleep cycle capabilities, we would also like to add more games that the user can play aside from the arithmetic one, such as a pitch matching game or auditory tic tac toe. We have also discussed making a plugin system so that people from the community can develop their own games for the alarm clock. There is also definitely work to be done with the speech recognition accuracy before the latter can be feasible.

We are both planning to put this up on sourceforge.net and to continue development as an open source project.

References / Acknowledgements

<--Back to Projects