OpenDial
About
OpenDial is a Java-based, domain-independent toolkit for developing spoken dialogue systems. OpenDial was originally designed to perform dialogue management tasks, but it can also be used to build full-fledged dialogue systems, integrating e.g. speech recognition, language understanding, generation, speech synthesis, multimodal processing and situation awareness.
The purpose of OpenDial is to combine the benefits of logical and statistical approaches to dialogue modelling. The toolkit relies on probabilistic rules to represent the domain models in a compact and human-readable format. Supervised or reinforcement learning techniques can be applied to estimate unknown parameters from small amounts of data (see Lison (2014) for details). The hybrid approach adopted by OpenDial makes it possible to easy incorporate expert knowledge and domain-specific constraints within a robust, probabilistic framework.
OpenDial is designed as a blackboard architecture in which all modules are connected to a central information hub representing the dialogue state (encoded as a Bayesian Network). A collection of plugins is available to connect external components for speech recognition, parsing, speech synthesis, etc.. New modules can also be easily implemented and integrated into the architecture.
The toolkit has been originally developed by the Language Technology Group of the University of Oslo (Norway), with Pierre Lison as main developer.
How to Install
Download:
OpenDial version 1.5 (released on 05.04.2016)
Basic package
(no external modules, 5.5 Mb)
Full package
(with all external modules and dependencies, 44 Mb)
Examples
OpenDial features an in-depth step by step example found here.
OpenDial describes it as follows:
Assume you want to create a simple dialogue system for a robot that can be instructed to move in four directions: left, right, forward, backward. When uncertain, the robot should ask the user to repeat the instruction. Probabilistic rules allow us to design such a dialogue system in a straightforward manner.
We focus in this example on the specification of the dialogue domain to process the user inputs and select the most relevant actions depending on the conversational situation. Of course, a real robot will also need to include distinct modules for the actual speech recognition, speech synthesis and motor control. The integration of such modules is described in the sections Speech Recognition and Synthesis and External modules.
