overview .  download .  systems .  research .  links
   prerequisites . license . download . documentation

Unfortunately, the documentation for the RavenClaw/Olympus architecture is not yet complete. We will add more information to this page as it becomes available. For now, here are a few useful documents, and pointers to other relevant resources:

Installing and running a RavenClaw/Olympus system (e.g. RoomLine)
Creating a new RavenClaw/Olympus project
File/Directory structure and system components (for RoomLine)
How does the Galaxy hub work?

A blog describing updates and changes to various RavenClaw/Olympus components
Documentation for the Galaxy communication infrastructure
An older, no longer maintained RavenClaw-Olympus wiki

Slides describing the RavenClaw/Olympus dialog system architecture
An older set of RavenClaw slides
A list of related research publications

If you have any questions, you can email olympus-developers (at) cs (dot) cmu (dot) edu. We will do our best to answer your questions.
Installing and running a RavenClaw/Olympus system (e.g. RoomLine)

To install a RavenClaw/Olympus system, follow the steps below. We will assume in these instructions that you have downloaded and want to install the RoomLine system. For other systems the instructions are the same, modulo the obvious name changes.

1. Check the license agreement and make sure that you have all the prerequisites installed and running properly
2. Download a system - you will get a big zip file containing a full distribution (e.g. RoomLine.zip)
3. Create a RoomLine folder. Make sure you have enough disk space, and unzip the downloaded file in that folder. This should give you a file/directory structure similar with the one described here.

This concludes the installation process.

Various configurations for starting the system (e.g. as a desktop system, as a phone system, etc) are available in the Configurations folder. The first step is to make sure that the desktop-fakedb-ttyonly version of the system runs correctly. This system configuration assumes that you are running the system on the desktop, but without a synthesis component (you will use text input and output). To test the destkop-tty configuration, follow the steps below:

4. Go to Configurations/Desktop-FakeDB-TTYOnly
5. Double-click on the RoomLine-Desktop-FakeDB-TTYOnly.bat file. This .bat file launches all the system components. A large number of command prompt windows will open up. Each of these windows is in fact a system component (e.g. AudioServer, Phoenix, etc). In fact, the .bat file starts the ProcessMonitor, and gives it a startlist file (in this case startlist-desktop-fakedb-ttyonly.txt) which describes the list of components to start. If everything works out fine, in the Server Status text box in ProcessMonitor you will see something like: System startup at Wed Jun 21 14:05:57 2006. If however, one of the components does not start properly, an error message will appear here. In that case, you will have to identify in the startlist file how that component is launched, and launch it separately from a command prompt window to identify the error message.
6. Assuming step 5 worked correctly, find the TTYRecognitionServer window. This is the text input/output component. To begin a new session with the system, you will have to type in init_session and hit <ENTER>. The system prompt should appear. You can then type your input and hit enter. When you would like to finish the conversation, type close_session and hit <ENTER>.

The next step is to run the full version of the system, including recognition and synthesis. To run a version of the system that uses Festival, follow the steps below (assuming you have a Festival server installed and running):

7. First, change the Festival configuration file (Configurations/Desktop-FakeDB-Festival/festival.cfg) to point to the correct server and voice. Open up this file with a text editor and change the values for the festival_host, festival_port and voice_name parameters.
8. Now, launch the RoomLine-Desktop-FakeDB-Festival.bat file. Just like before, this should start all the components. Check with ProcessMonitor to see that everything started up correctly.
9. Type init_session into the TTYRecognitionServer window. You should hear the first system prompt in your speakers, and also you should be able to speak to the system through your microphone. When you want to conclude the session, type close_session in TTYRecognitionServer.

Creating a new RavenClaw/Olympus project

If you would like to start developing your own system, we recommend that, rather than starting from scratch, you start one of the available systems. In order to implement the new functionality, you will have to incrementally modify all the resources used by the system. The first step in this process is to rename an existing system. You can use for this purpose the rename_project.perl script in the root directory. For instance:

C:\RoomLine>perl rename_project.perl RoomLine MySystem

will rename the string "RoomLine" to "MySystem" in all filenames, foldernames, and inside files.

File/Directory structure and system components

The files/directory structure for the RoomLine system is shown below. Generally RavenClaw/Olympus systems will follow the same directory structure. Differences might exist (e.g. new agents in the Agents folder, or new libraries in the Libraries folder). The domain-specific (in this case RoomLine-specific) components are marked with a * below. A number of other agents besides those listed below are available in the Olympus framework.

\Agents Contains the source code for all agents (a.k.a. components, a.k.a. galaxy servers) that the system uses.
    \BackendServer Galaxy backend stub component. This is a Galaxy agent that allows the rest of the system to interface to a perl backend, for instance RoomLineBackend (no direct connections to the Galaxy HUB can be made from perl).
    \DateTime4 Domain agent which resolves date and time expressions into absolute dates and times
    \Helios3 Agent that performs confidence annotation on the incoming semantic frames
    \Kalliope Synthesis agent. Can connect to a Festival server, or use Theta or Swift libraries for synthesis.
    \MultiDecoder Contains a set of agents implementing a parallel decoder.
        \Audio_Server Agent that captures audio and uses multiple recognition engines for decoding.
        \DTMF_Engine Agent that implements a DTMF (tone) decoder.
        \Sphinx_Engine Agent that implements a SPHINX-II based recognition engine.
    \NLGServer2 Galaxy stub for the perl NLG component.
    \Phoenix2 Phoenix parser agent (implements the language understanding functionality).
    \ProcessMonitor Agent used for starting up and monitoring all the other agents in the system.
    \RoomLineBackend* Domain-specific perl backend agent. Implements the room/schedule database for the RoomLine system. Connects to the hub through the BackendServer2 agent.
    \RoomLineDM* The RavenClaw-based dialog management agent for the RoomLine system.
    \RoomLineNLG* The Rosetta-based language generation component for the RoomLine system.
    \TTYRecognitionServer2 A text input and output agent for the dialog system
\Bin Contains all binaries for the various system components
    \x86-nt Contains the x86/Windows version of the system binaries. The system is only available on x86/Windows systems.
\Configurations Contains various start-up configurations for the system
    \Desktop-FakeDB-Festival Contains a configuration for the system running on the desktop, with a simulated database (sorry, no off-campus access to the room scheduling server), and uses a Festival server for synthesis
    \Desktop-FakeDB-TTYOnly Same as above, only without any synthesis component (uses only the TTYRecognitionServer for text input and output)
\Documents Contains various system-specific documents
\Libraries Contains source-code for the various libraries used by system agents
    \DTMFDecoder Library for decoding DTMF tones (used by the DTMF_Engine)
    \Galaxy Galaxy library (used by most agents in the system to communicate to each other via the Galaxy hub)
    \RavenClaw RavenClaw dialog management framework library (used by RoomLineDM)
    \Rosetta Rosetta template-based language generation library (used by RoomLineNLG)
    \sphinx2 Sphinx-II speech recognition system libraries (used by Sphinx_Engine)
\Logs Contains various system logs
\Resources Contains various system resources, such as language and acoustic models, grammars, etc
    \DecoderConfig Contains various resources for the speech recognition engines
        \Dictionary Contains the system's pronounciation dictionaries
        \HMM-8khz Contains 8khz sphinx-2 acoustic models
        \HMM-16khz Contains 16khz sphinx-2 acoustic models
        \LanguageModel Contains the system's n-gram language models
    \Grammar Contains the semantic grammar used by the Phoenix parser
    \Users Contains the users database for the RoomLine system

How does the Galaxy hub work?

[Under construction]