Level 1: Basic prompts and responses

Level 1 allows the user to construct the most basic type of content: simple prompt/response pairs. When a course of this kind is run, each turn consists of the system displaying a text prompt, and the student replying. The speech recognizer, which knows from the “response” part of the pair which responses should count as correct, either accepts or rejects. Prompt/response pairs are grouped into larger units called “lessons”.

We have found that implementers with a little ingenuity find it quite possible to construct interesting and useful courses even with this very limited framework. If you look on the server, you’ll find a simple but rather enjoyable pronunciation game designed for French-speaking students of English, where the prompt/response units are grouped together in contrasting pairs linked by pairs of words which illustrate a sound difficult for French students. For example, “hate” is contrasted with “ate” (the French “h” is silent), and “think” is contrasted with “sink” (French has no “th” sound).

Nearly all the course definition consists of Prompt units which define the prompt/response pairs. A Prompt contains a piece of L1 text (the prompt) and a piece of L2 text (the response). There is also a line marked Group, which holds a number that allows the course designer to specify the order in which the prompts are displayed; so the Prompts marked “1” are used first, then the ones marked “2”, and so on. A typical unit, for the “hate” sentence, looks like this:

Prompt
Lesson          pronunciation_h
Group           4
Text/french     Je déteste les légumes
Response        i hate vegetables
Response        * i ate vegetables
EndPrompt

When the unit is used, the system shows the student the French text Je déteste les légumes and they are supposed to respond with the spoken English sentence “I hate vegetables”. The second Response line uses the asterisk (*) to explicitly mark an incorrect response. This is not obligatory; but in cases like these, where a specific incorrect response is expected, it improves recognition accuracy.

Apart from the Prompt definitions, the pronunciation course contains four Lesson units; the Lessons each collect together a group of Prompts linked by a common theme, the sound that is being practised. Each Prompt is tagged with the Lesson it belongs to; in the example above, the lesson is pronunciation_h. The lesson declaration for pronunciation_h is

Lesson
Name           pronunciation_h
PrintName      Practise H
EndLesson

where the line PrintName is used to specify the text that identifies the lesson in the system menu. Finally, the Course unit declares the course itself:

Course
Name           pronunciation
L2             english
Languages      french
EndCourse

Here, the three lines specify the Name of the course, pronunciation, the L2 (the language being learned), which is english and the single student Language supported, which is french. That’s pretty much all there is to the pronunciation course; the thing worth noting is that the interest of the course is determined much more by the well-chosen content than by the extreme simplicity of the structure.

Hello world: your first Lite course

Now you need to try and do it too! Here is “Hello world”, traditionally the first thing you write in any new programming language. In CALL-SLT Lite, it’s a course with one prompt/response pair, which teaches you to say “Hello world”. The whole course looks like this:

# ---------------------------------------------------
# Course

# One course, 'hello_world_course'

Course
Name           hello_world_course
L2             english
Languages      french
EndCourse

# ---------------------------------------------------
# Lessons

# One lesson, 'hello_world'

Lesson
Name           hello_world
PrintName      Hello world
EndLesson

# ---------------------------------------------------
# Prompts

# One prompt: say 'hello world'

Prompt
Lesson         hello_world
Text/french    Bonjour tout le monde
Response       hello world
EndPrompt

Try making a couple of little changes, then upload it to the server and run your own course! The following section tells you how to do that.