#ifndef SPEAK_LIB_H #define SPEAK_LIB_H /*************************************************************************** * Copyright (C) 2005 to 2007 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, see: * * . * ***************************************************************************/ /*************************************************************/ /* This is the header file for the library version of espeak */ /* */ /*************************************************************/ #include #define ESPEAK_API_REVISION 5 /* Revision 2 Added parameter "options" to eSpeakInitialize() Revision 3 Added espeakWORDGAP to espeak_PARAMETER Revision 4 Added flags parameter to espeak_CompileDictionary() Revision 5 Added espeakCHARS_16BIT */ /********************/ /* Initialization */ /********************/ typedef enum { espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list. espeakEVENT_WORD = 1, // Start of word espeakEVENT_SENTENCE, // Start of sentence espeakEVENT_MARK, // Mark espeakEVENT_PLAY, // Audio element espeakEVENT_END, // End of sentence or clause espeakEVENT_MSG_TERMINATED, // End of message espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize() } espeak_EVENT_TYPE; typedef struct { espeak_EVENT_TYPE type; unsigned int unique_identifier; // message identifier (or 0 for key or character) int text_position; // the number of characters from the start of the text int length; // word length, in characters (for espeakEVENT_WORD) int audio_position; // the time in mS within the generated speech output data int sample; // sample id (internal use) void* user_data; // pointer supplied by the calling program union { int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic. const char *name; // used for MARK and PLAY events. UTF8 string } id; } espeak_EVENT; /* When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called. In RETRIEVAL mode, the callback function supplies to the calling program the audio data and an event list terminated by 0 (LIST_TERMINATED). In PLAYBACK mode, the callback function is called as soon as an event happens. For example suppose that the following message is supplied to espeak_Synth: "hello, hello." * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function : ** Block 1: