A General Architecture for a Real-Time Discourse Agent
and a Case Study in Oral Reading Tutoring

Turn-Taking Rules

Function

Decide what action to take at this time.

Input(s)

Output(s)

The output of the turn-taking rules is a single abstract logical action.

Algorithm

The function consists of a set of linearly ordered first order rules; the first rule whose preconditions are met is triggered.

In principle, turn-taking situations are classified by asking four questions:

This gives sixteen different turn-taking conditions, for the two-party case.

The preconditions for the rules, as actually implemented, check a number of things:

The preconditions for the turn-taking rules are as follows (excluding "Event Enabled?" since it is included in every rule):
In Utterance? Tutor Speaking? Student Speaking? Discourse State? Intervention Level? Decoder Caught Up? Event Timer(s)? Listener Condition(s)? Event
Don't care Yes Yes In sentence (1) Don't care Don't care listener detects speech > tutor self-interrupts Self-Interrupt (stop speaking)
Yes No Don't care In sentence Don't care Don't care User turn > interrupt user None Interrupt user
Yes No No In sentence 0 Don't care User action clock > backchannel; dead air clock > backchannel None Backchannel
Yes No No In sentence < 2 Yes User action clock > unstick; dead air clock > unstick None Unstick
Yes No No In sentence Don't care Don't care User action clock > take turn; dead air clock > take turn None Take Turn
Yes No No In sentence Don't care Yes None Listener heard end of sentence HeardEOS
Don't care No No Don't care Don't care Don't care User action clock > prompt user; dead air clock > prompt user None Prompt User
All remaining conditions are assigned a "Do Nothing" event.

Status