NAME irSay, irFDSay, irFSay, irBSay - say ASCII text using text- to-speech from a file via file descriptor, from a file via file name, or from a buffer SYNOPSIS #include <irapi.h> int irSay (channel_id cid, int tag, int vfd, unsigned long count); int irFSay (channel_id cid, int tag, const char *text_file); int irBSay (channel_id cid, int tag, const char *buf, unsigned long count); int irFDSay (channel_id cid, int tag, int fd, unsigned long count); DESCRIPTION The text-to-speech (TTS) functions say ASCII text on a voice channel indicated by a channel identifier (cid). These functions internally use TTS to convert ASCII text into speech. The cid is obtained by calling irInit(3IRAPI). tag is an arbitrary value which applications may use to associate the IRE_SAY_PROG event with the coresponding irSay function. Note that IRE_SAY_PROG is only supported with the IRD_SWTTS implementation of TTS. With other implementa- tions, application developers requiring a tag for "say" instructions may use the tag argument provided with irEnd(3IRAPI). The irSay function says count bytes of ASCII text from the file associated with an open voice file descriptor vfd. Vfd is obtained by irOpen(3IRAPI) and discarded by irClose(3IRAPI). "Saying" starts from the current position of the file pointer. The file pointer is initially set to 0 when the text file is opened. However, the file pointer may be repositioned by calling irLSeek(3IRAPI). irSay does not modify the file pointer for the file descrip- tor it is using. If count is 0, then say continues until the end of file. irFSay says ASCII text from a file identified by the file name text_file. irFSay opens the text_file, says the entire file from the beginning, then automatically closes the file. irBSay says ASCII text from a buffer identified by the buffer name buf. The data represented by buf and count may be reused since irBSay copies the buffer to a private area. NULL characters are not interpreted as string terminators by irBSay as exactly count bytes of data are taken as input. The irFDSay function says count bytes of ASCII text from the file associated with an open UNIX file descriptor fd. "Saying" starts from the current position of the file pointer. The file pointer is initially set to 0 when the text file is opened. irFDSay does not modify the file pointer for the file descriptor it is using. If count is 0, then say continues until the end of file. TTS functions interoperate with echo cancellation and barge-in. Any TTS function must be followed by irEnd(3IRAPI). Any TTS function can be terminated when an enabled or non-maskable interrupt occurs [see irSetEvent(3IRAPI)]. When irFSay is terminated the text_file is closed. If the library state is IRS_IDLE (not saying), calling a TTS function changes the library state to IRS_SAY_QUEUED. If the library state is IRS_SAY_QUEUED, subsequent calls to a TTS function are queued and the library remains in the IRS_SAY_QUEUED state. The TTS functions may be called only when the library is in the IRS_IDLE or IRS_SAY_QUEUED states. Invocation of multiple TTS functions to a single cid results in concatenated speech to be said on that channel. The speech stream, up to a "terminating" irEnd(3IRAPI), said seamlessly. Any of the TTS functions may be intermixed before the list is terminated by irEnd(3IRAPI). Upon cal- ling irEnd(3IRAPI), the library enters the IRS_SAYING or IRS_SAY_PENDING states depending on TTS resource availabil- ity. Upon calling irEnd, IRAPI will attempt to use the implemen- tation of TTS specified in IRP_TTS_TTPE, see IrPARAMETERS(4IRAPI). EVENT An IRE_SAY_DONE event is generated after irEnd(3IRAPI) is called and all queued irSay requests have completed or are interrupted [as indicated in the modifier to IRE_SAY_DONE, see IrEVENTS(4IRAPI)]. An IRE_SAY_PROG event, if enabled, is generated after each intermediate irSay request completes. Note that this event is only supported for the IRD_SWTTS implementation. RETURN VALUE IRR_OK is returned if the say request is successfully queued. IRR_FAIL is returned if an error occurs. ERROR irError is set as follows if an error occurs: IRER_INVALID if the cid or the fd are not valid IRER_SYSERROR if a system or driver call failure occurs (check irSysError for additional information) IRER_BADSTATE if the cid is not in the IRS_SAY_QUEUED or IRS_IDLE state IRER_NO_TIMESLOT if there is no longer a "talk" timeslot allocated for this cid. Note, for irFSay, if text_file does not exist, irFSay fails. This differs from irFPlay(3IRAPI) where non-existence of a voice file is indicated through modifiers on the IRE_PLAY_DONE event. SEE ALSO irPlay(3IRAPI), IrPARAMETERS(4IRAPI), IrEVENTS(4IRAPI) VERSION This is version 8/31/00 of this man page.