DIRECTORY
RefID USING [ ID, nullID ],
Rope USING [ ROPE ],
Synthesizer USING [ ActionID, nullActionID ],
Thrush USING [ Credentials, NB, none, SHHH ]
;
Procedures
Speak some text. Queue behind any existing text.
(Client must call StopSpeech first to flush existing queues.)
Action reports (iff synthSpec.actionID#nullActionID)
{ $synthesizer, $scheduled, synthSpec.actionID } as the interval is accepted by the server.
{ $synthesizer, $started, synthSpec.actionID } as output begins for this rope.
{ $synthesizer, $finished, synthSpec.actionID } when the interval has finished.
{ $synthesizer, $abandoned, synthSpec.actionID }
when all actions ending with this interval have been flushed.
TextToSpeech:
PROC
-- TAKES -- [
shhh: Thrush.SHHH←Thrush.none,
credentials: Thrush.Credentials, -- authenticates caller
serviceID: RefID.ID, -- identifies particular service
textToSpeak: Rope.ROPE,
actionID: Synthesizer.ActionID ← Synthesizer.nullActionID,
filter: BOOL←TRUE,
queueIt: BOOL←TRUE
]
RETURNS [nb: Thrush.NB];
Stop speaking some or all of the scheduled ropes.
Action reports (iff actionID#nullActionID was specified in original request)
{ $synthesizer, $abandoned, actionID } as indicated above.
If reset is TRUE, initiate self-test, reset all speech parameters (an escape hatch).
StopSpeech:
PROC
--
TAKES -- [
shhh: Thrush.SHHH←Thrush.none,
credentials: Thrush.Credentials,
serviceID: RefID.ID,
reset: BOOL ← FALSE
]
RETURNS [nb: Thrush.NB];
Describe the synthesizer that provides this interface.
GetSynthesizerSpecifications:
PROC
--
TAKES -- [
shhh: Thrush.SHHH←Thrush.none,
serviceID: RefID.ID ← RefID.nullID
]
RETURNS [ nb: Thrush.NB, synthesizerModel: ATOM, synthesizerVersion: ATOM ];
N.B. When the conversation is terminated before all actions have completed, reporting is problematical. Currently, the requesting party may well not receive any reports after idling the conversation (hanging up, for instance.)
}.