DIRECTORY RefID USING [ ID, nullID ], Rope USING [ ROPE ], Synthesizer USING [ ActionID, nullActionID, SynthSpec, SynthSpecs ], SynthesizerServerRpcControl USING [ InterfaceRecord ], Thrush USING [ ConversationID, NB, nullConvID, SHHH ] ; FinchSynthesizer: CEDAR DEFINITIONS = { NB: TYPE = Thrush.NB; SConvDesc: TYPE = REF SConvDescBody; SConvDescBody: TYPE = RECORD [ stateChange: CONDITION, -- for waiting for state of conversation to change. pendingSpecs: Synthesizer.SynthSpecs ¬ NIL, synthesizerServiceID: RefID.ID ¬ RefID.nullID, -- See FinchSynthesizerImpl for the RPC interface. synthInterface: SynthesizerServerRpcControl.InterfaceRecord ¬ NIL, synthShhh: Thrush.SHHH ¬ NIL ]; TextToSpeechProc: TYPE = PROC -- TAKES -- [ convID: Thrush.ConversationID¬Thrush.nullConvID, synthSpec: Synthesizer.SynthSpec, queueIt: BOOL¬TRUE, synthesizerTranslateProc: SynthesizerTranslateProc¬NIL, synthesizerModel: ATOM¬NIL, synthesizerVersion: ATOM¬NIL] RETURNS [ nb: Thrush.NB¬$success, newConvID: Thrush.ConversationID, newActionID: Synthesizer.ActionID ]; TextToSpeech: TextToSpeechProc; SpeakText: PROC[textToSpeak: Rope.ROPE] RETURNS [nb: NB]; StopSpeechProc: TYPE = PROC [convID: Thrush.ConversationID ¬ Thrush.nullConvID, actionID: Synthesizer.ActionID ¬ Synthesizer.nullActionID] RETURNS [ nb: Thrush.NB¬$success, newConvID: Thrush.ConversationID, newActionID: Synthesizer.ActionID ]; StopSpeech: StopSpeechProc; ResetSynthesizer: PROC[convID: Thrush.ConversationID] RETURNS [nb: Thrush.NB]; RegisterTranslateProcType: TYPE = PROC [conversationID: Thrush.ConversationID, translate: SynthesizerTranslateProc¬NIL]; RegisterTranslateProc: RegisterTranslateProcType; GetSynthesizerSpecifications: PROC[conversationID: Thrush.ConversationID] RETURNS [nb: Thrush.NB¬$success, synthesizerModel: ATOM, synthesizerVersion: ATOM]; SynthesizerTranslateProc: TYPE = PROC [inText: Rope.ROPE] RETURNS [outText: Rope.ROPE]; InitializeFinchSynthesizer: PROC; }. Ø FinchSynthesizer.mesa Copyright Ó 1985, 1986, 1992 by Xerox Corporation. All rights reserved. Last Edited by: Swinehart, September 20, 1990 4:39:42 pm PDT Types Per-conversation data relating to text-to-speech synthesis. $requested, ~ ($finished or $abandoned) Text-to-speech server These procedures allow simple access to one or more text-to-speech synthesizers. The system provides defaults for the choice of synthesizer, how to interpret the text that is supplied, and so on. The user can supply a translation procedure to improve the interpretation of the text, either by registering a default, or by providing it in a call. There should be procedures to provide for pitch-changes, phoneme-level submissions, other special features. The procedure types TextToSpeechProc, StopSpeechProc, and RegisterTranslateProcType are defined in order to allow the creation of object-style interfaces to these facilities. Send rope to text-tospeech server. Called with rope = the current selection by FinchTool's SpeakText button. Input rope will be modified by the translate proc if (a) one is specified with this call or (b) one has previously been specified via RegisterTranslateProc[proc] below. Model and version parameters default to the current system choice. Some operations may not be available, depending on which model is assigned. I'm not satisfied with where this stuff is specified. Simple procedure that just says what you tell it, if it can. Flushes text-to-speech server queues, halts current speech. Flushes text-to-speech server queues, initiates Synthesizer self-test, and resets all speech parameters. Intended as an escape hatch. Register default translate procedure to be used by TextToSpeech to make the text rope more intelligible. Most useful as a way to modify the action of the FinchTool's SpeakText button. Describe the assigned synthesizer. A translate proc is used to modify the text rope to make it more intelligible. Examples: 1) words that the synthesizer doesn't pronounce correctly could be respelled or given as phonemes, and 2) synthesizer commands to alter speech speed or pitch could be added. Swinehart, September 25, 1986 9:10:34 am PDT Extracted from FinchSmarts, FinchProse, ProseTranslateProc ÊK•NewlineDelimiter –(cedarcode) style™šœ™Icodešœ Ïeœ<™HJšœ<™<—K˜šÏk ˜ Kšœžœžœ ˜Kšœžœžœ˜Kšœ žœ3˜DKšœžœ˜6Kšœžœžœžœ˜5K˜K˜—šœžœ˜'J™—™J™Kšžœžœ žœ˜K˜Kšœ žœžœ˜$šœžœžœ˜J™;Kšœ ž œÏc3˜Kšœ'žœ˜+Jšœ'™'—KšœžœŸ2˜aKšœ>žœ˜BKšœžœž˜K˜—K˜J™—™K˜KšœÛÏtn™ÉK˜KšœÏn!œ¡œ[™®K˜š¡œžœž˜šŸÑcjkŸœ˜ K˜0Kšœ!˜!Kšœ žœžœ˜Kšœ3ž˜7Kšœžœžœ˜Kšœžœžœ˜—šžœ˜ Kšœ žœ ˜Kšœ!˜!K˜!Kšœ˜——š¡ œ˜Kšœš œ 8™â—K˜š ¡ œžœžœžœžœ˜9J™