<> <> <> DIRECTORY RefID USING [ ID, nullID ], Rope USING [ ROPE ], Synthesizer USING [ ActionID, nullActionID ], Thrush USING [ Credentials, NB, none, SHHH ] ; SynthesizerServer: CEDAR DEFINITIONS = { <> <<>> <> <<>> <> <<(Client must call StopSpeech first to flush existing queues.)>> <> <<{ $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 }>> <> 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]; <> <> <<{ $synthesizer, $abandoned, actionID } as indicated above.>> <> StopSpeech: PROC -- TAKES -- [ shhh: Thrush.SHHH_Thrush.none, credentials: Thrush.Credentials, serviceID: RefID.ID, reset: BOOL _ FALSE ] RETURNS [nb: Thrush.NB]; <> GetSynthesizerSpecifications: PROC -- TAKES -- [ shhh: Thrush.SHHH_Thrush.none, serviceID: RefID.ID _ RefID.nullID ] RETURNS [ nb: Thrush.NB, synthesizerModel: ATOM, synthesizerVersion: ATOM ]; <> }. <<>> <> <> <<>>