The goal is to have the user select a time that he/she wants to wake up. When the alarm goes off, the user can shut off the alarm by saying "stop." The alarm clock will then go into "conversation mode" where it will converse with the user to fully wake him up and make sure he doesn't go back to sleep. The alarm clock will start by reading the day's weather and top news headlines (via Internet). It will then proceed to play interactive verbal games with the user (e.g. mental tic-tac-toe, yes-no/multiple-choice trivia). 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 games will stop when the user gets out of bed and manually turns off the alarm with the mouse.
Group Members' Responsibilities
Chris Tralie:
Has experience with web services; could figure out a way to get the daily news, etc. into the program, work on date/time, etc. (NOTE that there are different voices specialized for different actions, like time, so maybe change voice for this)
Chris Koscielny:
Responsible for voice synthesis experimentation and abstraction for use with other parts of the program
Joint Responsibilities:
Because we expect speech detection to be difficult, we will both dig through CVS and try to figure out how it works independently. We will then come together and test it (this may not be a pleasant step in the process, but it's very necessary, and it could use both of our full attention)
We'll each work on our own "sobriety games" and come together at the end to figure out the best way to alternate using them. Examples: auditory tic tac toe, some sort of a Simon game where the user has to match pitches or tones that the computer generates, or whatever else would "wake the user up." Note that the games can be like "plugins" into the alarm clock, and the user can enable or disable the games
Motivations
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:
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.
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.
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, and if the project is successful, both of us Chrises plan to use it on a daily basis to help us to maximize our productivity at Princeton
Testing
Testing will involve a number of volunteer students who will use the program and fill out a brief daily questionnaire. The questionnaire will contain the following questions:
Did you get back into bed after turning off your alarm? (yes/no)
Approximately how many hours of sleep did you get the night before?
Are there any relevant conditions that may have influenced your sleep/waking up patterns? (e.g. stress, sickness, etc.)
The questionnaire should be filled out at night or in the afternoon rather than in the morning so that filling out the survey doesn't affect the waking-up process. Volunteers should fill out surveys for a period using their own alarm clock, and for a period using the conversational alarm clock so that the data can be compared.
For more quantitative analysis, have the alarm clock record the average time it takes for the computer to deem the user "awake," and compare them to some recorded time with an ordinary alarm clock. Look to see if there is a statistically significant difference in time for the user to get up.
Equipment
This project will be more software than hardware oriented. Therefore, all we need for the interactive part of the alarm clock is a computer with speakers and a microphone (we may need to get a microphone that isn't just optimized for close distances like most laptop mics, so that we can detect the user further away from the computer, but we can do this on our own). We will use libraries to synthesize and interpret voice rather than coding everything from scratch (completely unfeasible). One of the libraries we came up with to synthesize voice was the Festival Speech Synthesis System . Voice recognition seems like a tougher problem, but we may be able to reuse some of the work that's already been done on GNOME Voice Control, which uses CMU Sphinx.
This project will be developed under C++ (because of Sphynx and Festival) under Ubuntu
Since this is largely a software project, we will be using SVN to help with code collaboration. Using StatSVN will also ensure that we're dividing up the coding responsibilities evenly
Deadlines
Fri 20 December
Write basic test programs that interface with the Festival Speech Synthesis and CMU Sphynx libraries to synthesize voice output and interpret voice input.
Fri 26
Write the main alarm clock software (options, program flow, etc) and develop an interface between out software and Fesitval/Sphynx. Work on parsing a config file, which stores alarm clocks we're using, paths to games, modules, etc.
Fri 2
Write games, add GUI (to edit config files) if time permits
Fri 9th
Finish testing and write up.
Related Past Work
"The Voice Interactive Alarm Clock":
A physical alarm clock that does some voice recognition for commands like "set alarm," "set time," "check alarm," "what is the date," "alarm sound." It can also tell the user the temperature in the room. But since the alarm clock doesn't have web access, it can't do stuff like finding the temperature outside on weather.com or finding news clips. It also doesn't play games with the user. Our alarm clock would also be less expensive since it relies on existing hardware
Another voice activated alarm clock, but this one can turn on a TV in the morning. Perhaps our alarm clock can feature turning on internet TV.
Clocky: A physical annoying alarm clock that goes counter to our mission: to engage the user in positive, constructive interaction upon waking. But it's still damn cool