IrisTK

Intelligent Real-time Interactive Systems Toolkit


Creating new modules

It is easy to create your own module by sub-classing IrisModule. Let’s say you want to create your own dialogue manager (instead of using IrisFlow). This example shows a dialog manager that will simply repeat everything that the user says:

import iristk.speech.RecResult;
import iristk.system.Event;
import iristk.system.InitializationException;
import iristk.system.IrisModule;
public class MyDialogManager extends IrisModule {
@Override
public void onEvent(Event event) {
// We have received an event from some other module,
// check whether we should react to it
if (event.triggers("monitor.system.start")) {
// The system started, listen for speech
listen();
} else if (event.triggers("sense.speech.rec**")) {
// We received a speech recognition result, get the text
String text = event.getString("text");
// Check whether there is any result
if (text != null && text.length() > 0) {
// Create an event for the speech synthesizer
Event newEvent = new Event("action.speech");
if (text.equals(RecResult.NOMATCH))
// We got a NOMATCH, inform the user
newEvent.put("text", "I didn't understand that");
else
// Add the parameter text, which will repeat the speech recognition result
newEvent.put("text", "You said " + text);
send(newEvent);
} else {
// If not, listen again
listen();
}
} else if (event.triggers("monitor.speech.end")) {
// The synthesizer completed, listen for speech again
listen();
}
}
// Make the recognizer start listening
private void listen() {
send(new Event("action.listen"));
}
@Override
public void init() throws InitializationException {
// Initialize the module
}
}

Now, if you create a simple dialogue system, you can remove the Flow module and add this module instead:

//system.addModule(new FlowModule(new GuessFlow()));
system.addModule(new MyDialogManager());

To see which events you can react to and produce, please refer to the list of standardized events.

Note that the init() method is called when the module is added to the system. If you want to do something special when the system actually starts, you should catch the “monitor.system.start” event (as done in the example above).

Creating a new speech recognizer

If you want to add your own speech recognizer, it is more convenient to implement the iristk.speech.Recognizer interface and then use it as an argument in the RecognzierModule constructor.

Create a new speech synthesizer

If you want to add your own speech synthesizer, it is more convenient to implement the iristk.speech.Synthesizer interface and then use it as an argument in the SynthesizerModule constructor.

Clone on GitHub

Guide to IrisTK


Copyright © Gabriel Skantze, 2013-