-
Notifications
You must be signed in to change notification settings - Fork 15
Disco
This page describes how a Disco scenario can be created for Greta, how the Disco module for Greta works, how the Disco module for Semaine works.
A good reference is: Charles Rich, Candace L. Sidner: Using Collaborative Discourse Theory to Partially Automate Dialogue Tree Authoring. IVA 2012: 327-340
A scenario for Disco consists of a task model and dialogue trees. The task model (formally represented in a Hierarchical Task Network), represents the high-level task (goal) structure and control flow of a (potentially large) dialogue. At the fringe of this task network, relatively small dialogue trees can be added. It is possible to automatically generate some utterances knowing the task structure, making the authoring of the dialogue easier.
Here is an example of a task model, for a job interview scenario (Tardis project, file can be found in <GRETA_DIR>/bin/Examples/disco/TardisFirstScenario.d4g.xml
):
<t:task id="Top">
<t:subtasks id="interviewSteps">
<t:step name="welcome" task="Welcome"/>
<t:step name="introduction" task="Introduction"/>
<t:step name="elaboration" task="Elaboration"/>
<t:step name="synthesis" task="Synthesis" />
<t:step name="conclusion" task="Conclusion" />
</t:subtasks>
</t:task>
<t:task id="Welcome">
...
</t:task>
<t:task id="Introduction">
<t:subtasks id="Normal">
<t:step name="introSelf" task="IntroSelf"/>
<t:step name="locateCompany" task="LocateCompany" minOccurs="0"/>
<t:step name="essentialJobQualities" task="Essentialjobqualities"/>
<t:step name="try2JobQualities" task="Try2JobQualities"/>
<t:step name="goodCandidate" task="GoodCandidate"/>
</t:subtasks>
</t:task>
<t:task id="Elaboration">
...
</t:task>
<agent id="IntroSelf" text="fml/TardisFirstScenario/introSelf.xml" >
<user text="I have been working for the past while as a {user.previousPosition} but now I'm unemployed."/>
<user text="I have been employed as a {user.previousPosition}. I saw your advertisement an looked up your company."/>
<user text="Well, I haven't ever had a job, but I'd like to work for you."/>
</agent>
<agent id=... text=...>
...
</agent>
To create a Disco Scenario, you should create an XML file with the d4g.xml
extension in the <GRETA_DIR>/bin/Examples/disco/
repository. Follow the above example's structure.
This "Top" task should reflect the global flow of tasks. Then define the dialogue flow for each subtask.
Then, for each end subtask, you should create an <agent>...</agent>
markup with the corresponding subtask Id, and a reference to an FML file which will be the agent utterance. These utterances should be in the <GRETA_DIR>/bin/Examples/disco/
repository, but then you can use the structure you want.
This d4g.XML file should then be transformed into an another XML file (readable by Disco) using the d4g2018.bat executable file in <GRETA_DIR>/External/Disco_v1.11/release/bin/
directory (for older version of disco: <GRETA_DIR>/External/Disco_v1.10/disco/bin/
directory) (make sure the required bats and XML files are extracted from the Disco.zip file) in a command window. This executable transforms file <basename>.d4g.xml in D4g format to <basename>.xml in ANSI/CEA-2018 format. Usage: d4g2018 <basename> [ <external> ]
Through NetBeans, import disco project (greta.auxiliary) and compile it.
Run greta modular and open testDiscoModular.xml.
Click on the DiscoPlanner and open <GRETA_DIR>/bin/Examples/disco/TardisFirstScenario.xml
and send it.
Select your task.
There are two important classes for the disco module for GretaModular: a GUI, DiscoMenu (greta.auxiliary.disco.DiscoMenu) and a DiscoPlanner (greta.auxiliary.disco.DiscoPlanner).
The DiscoMenu extends a TenChoicesFrame and is used by the user to select a response, which number is then sent (relative to the task structure) to the DiscoPlanner. Other mechanisms could be used to send this number to the Planner (example in Tardis, it should bethe Scenemaker module which sends scenario information... although that is not the case for now)
The DiscoPlanner extends the FMLFileReader (it is so an IntentionEmitter) then load the right Fml file referenced in the Disco dialogue trees, and sends it further.
To explain
Rework the semaine component so that it uses the DiscoPlanner and the DiscoMenu
Allow for the use of the Disco dialogue coloring capabilities
Allow to write dynamically FML, and not just reading FML files. Allow to to hybrid reading and writing of FML files from the Disco Planner
Original Author : M. Cholleb
Advanced
- Generating New Facial expressions
- Generating New Gestures
- Generating new Hand configurations
- Torso Editor Interface
- Creating an Instance for Interaction
- Create a new virtual character
- Creating a Greta Module in Java
- Modular Application
- Basic Configuration
- Signal
- Feedbacks
- From text to FML
- Expressivity Parameters
- Text-to-speech, TTS
-
AUs from external sources
-
Large language model (LLM)
-
Automatic speech recognition (ASR)
-
Extentions
-
Integration examples
Nothing to show here