www.pudn.com > OS.rar > InterSound4.h, change:2006-11-08,size:18303b
/*----------------------------------------------+
| |
| InterSound4.h - InterSound 4 Standard API |
| |
| Platform: Any |
| Release: 4.0.200604111312 |
| |
| Copyright (c) 1999-2006, iFLYTEK Ltd. |
| All rights reserved. |
| |
+----------------------------------------------*/
#ifndef __IFLYTEK_INTERSOUND4__STANDARD_API__H__
#define __IFLYTEK_INTERSOUND4__STANDARD_API__H__
#ifdef WIN32
#include <windows.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* COMMON DEFINES
*/
#ifndef IN
#define IN
#define OUT
#endif
#ifndef FAR
#define FAR
#endif
#ifndef PASCAL
#ifdef WIN32
#define PASCAL __stdcall
#else
#define PASCAL
#endif
#endif
#ifndef CONST
#define CONST const
#endif
typedef char TTSBOOL;
#define TTSFALSE 0
#define TTSTRUE -1
typedef void TTSVOID;
typedef TTSVOID FAR* LPTTSVOID;
typedef CONST TTSVOID FAR* LPCTTSVOID;
typedef LPTTSVOID FAR* LPLPTTSVOID;
#define TTSNULL 0
typedef unsigned char TTSBYTE, FAR* LPTTSBYTE;
typedef unsigned short TTSWORD, FAR* LPTTSWORD;
typedef unsigned long TTSDWORD, FAR* LPTTSDWORD;
typedef TTSDWORD TTSVAR, FAR* LPTTSVAR;
#if defined(UNICODE) || defined(_UNICODE)
typedef unsigned short TTSCHAR;
#define TTSTEXT(s) L##s
#else
typedef char TTSCHAR;
#define TTSTEXT(s) s
#endif
typedef const TTSCHAR* TTSSTR;
/*
* ERROR CODES
*/
typedef TTSWORD TTSERROR;
#define TTSERR_OK 0x0000 /* success */
#define TTSERR_FAILED 0xFFFF /* failed */
#define TTSERR_BASE 0x8000 /* error number base */
#define TTSERR_UNIMPEMENTED TTSERR_BASE + 0 /* unimplemented function */
#define TTSERR_UNSUPPORTED TTSERR_BASE + 1 /* unsupported on this platform */
#define TTSERR_INVALID_HANDLE TTSERR_BASE + 2 /* invalid handle */
#define TTSERR_INVALID_PARAMETER TTSERR_BASE + 3 /* invalid parameter(s) */
#define TTSERR_PART_FAILED TTSERR_BASE + 4 /* part failed */
#define TTSERR_INSUFFICIENT_HEAP TTSERR_BASE + 5 /* insufficient heap size */
#define TTSERR_STATE_REFUSE TTSERR_BASE + 6 /* refuse to do in current state */
#define TTSERR_INVALID_ATTR_ID TTSERR_BASE + 7 /* invalid attribute id */
#define TTSERR_INVALID_ATTR_VALUE TTSERR_BASE + 8 /* invalid attribute value */
#define TTSERR_BEFORE_INIT TTSERR_BASE + 9 /* any operate before initializion */
#define TTSERR_MORE_INIT TTSERR_BASE + 10 /* initialized more than once */
#define TTSERR_REQUIRE_HEAP TTSERR_BASE + 11 /* request user heap */
#define TTSERR_INVALID_HEAP TTSERR_BASE + 12 /* invalid user heap pointer */
#define TTSERR_END_OF_INPUT TTSERR_BASE + 13 /* end of input */
/*
* INSTANCE HANDLE
*/
typedef LPTTSVOID HTTS;
/*
* MINIMIZED HEAP SIZE REQUIRED
*/
#define TTS_MIN_HEAP (48 * 1024L)
/*
* INSTANCE ATTRIBUTES
*/
typedef struct tagTTSAttr TTSATTR;
typedef TTSATTR FAR* LPTTSATTR;
struct tagTTSAttr
{
TTSDWORD dwAttrId; /* attribute id */
TTSVAR varAttrValue; /* attribute value */
TTSERROR ttsError; /* error code */
};
/* constants for values of field dwParamId */
#define TTSATTR_USER_HEAP 0x00000000 /* user heap for instance (NULL for dynamically allocation) */
#define TTSATTR_USER_HEAP_SIZE 0x00000001 /* size of the user heap */
#define TTSATTR_CALLBACK_PARAMETER 0x00000002 /* user callback parameter */
#define TTSATTR_ATTRCH_CALLBACK 0x00000003 /* attribute change callback entry */
#define TTSATTR_LANGUAGE 0x00000100 /* language, e.g. Chinese */
#define TTSATTR_INPUT_CODEPAGE 0x00000101 /* input code page, e.g. GBK */
#define TTSATTR_TEXT_MARK 0x00000102 /* text mark, e.g. CSSML */
#define TTSATTR_TEXT_SCOPE 0x00000103 /* text scope, e.g. number */
#define TTSATTR_USE_PROMPTS 0x00000104 /* whether use prompts */
#define TTSATTR_RECOGNIZE_PHONEME 0x00000105 /* how to recognize phoneme input */
#define TTSATTR_INPUT_MODE 0x00000200 /* input mode, e.g. from fixed buffer, from callback */
#define TTSATTR_INPUT_TEXT_BUFFER 0x00000201 /* input text buffer */
#define TTSATTR_INPUT_TEXT_SIZE 0x00000202 /* input text size */
#define TTSATTR_INPUT_CALLBACK 0x00000203 /* input callback entry */
#define TTSATTR_PROGRESS_BEGIN 0x00000204 /* current processing position */
#define TTSATTR_PROGRESS_LENGTH 0x00000205 /* current processing length */
#define TTSATTR_PROGRESS_CALLBACK 0x00000206 /* progress callback entry */
#define TTSATTR_READ_PUNCTUATIONS 0x00000300 /* whether read punctuations */
#define TTSATTR_READ_AS_NAME 0x00000301 /* whether read as name */
#define TTSATTR_READ_DIGIT 0x00000302 /* how to read digit, e.g. read as number, read as value */
#define TTSATTR_CHINESE_NUMBER_1 0x00000303 /* how to read number "1" in Chinese */
#define TTSATTR_OUTPUT_VOICE 0x00000400 /* output voice or not */
#define TTSATTR_OUTPUT_CALLBACK 0x00000401 /* output callback entry */
#define TTSATTR_PHONEME_WATCH 0x00000402 /* how to watch phoneme, e.g. Chinese Pin-Yin */
#define TTSATTR_WATCH_CALLBACK 0x00000403 /* watch callback entry */
#define TTSATTR_ROLE 0x00000500 /* speaker role */
#define TTSATTR_SPEAK_STYLE 0x00000501 /* speak style */
#define TTSATTR_VOICE_SPEED 0x00000502 /* voice speed */
#define TTSATTR_VOICE_TONE 0x00000503 /* voice tone */
#define TTSATTR_VOLUME 0x00000504 /* volume value */
#define TTSATTR_VEMODE 0x00000600 /* voice effect - predefined mode */
#define TTSATTR_VE_AMPLIFY 0x00000601 /* voice effect - amplify */
#define TTSATTR_VE_ECHO 0x00000602 /* voice effect - echo */
#define TTSATTR_VE_REVERB 0x00000603 /* voice effect - reverb */
#define TTSATTR_VE_CHROUS 0x00000604 /* voice effect - chrous */
#define TTSATTR_VE_PITCH 0x00000605 /* voice effect - pitch adjust */
/* alias for dwParamId */
#define TTSATTR_RECOGNIZE_PINYIN TTSATTR_RECOGNIZE_PHONEME /* whether recognize Chinese Pin-Yin */
/* constants for values of attribute TTSATTR_LANGUAGE */
#define TTSLANGUAGE_CHINESE 1 /* Chinese (with English) */
#define TTSLANGUAGE_ENGLISH 2 /* English */
#define TTSLANGUAGE_FRENCH 3 /* French */
/* constants for values of attribute TTSATTR_INPUT_CODEPAGE */
#define TTSCODEPAGE_GBK 936 /* GBK (default) */
#define TTSCODEPAGE_BIG5 950 /* Big5 */
#define TTSCODEPAGE_UTF16LE 1200 /* UTF-16 little-endian */
#define TTSCODEPAGE_UTF16BE 1201 /* UTF-16 big-endian */
#define TTSCODEPAGE_UTF7 65000 /* UTF-7 */
#define TTSCODEPAGE_UTF8 65001 /* UTF-8 */
#define TTSCODEPAGE_GB2312 TTSCODEPAGE_GBK
#define TTSCODEPAGE_UTF16 TTSCODEPAGE_UTF16LE
#define TTSCODEPAGE_UNICODE TTSCODEPAGE_UTF16
#define TTSCODEPAGE_PHONETIC_PLAIN 23456
/* constants for values of attribute TTSATTR_TEXT_MARK */
#define TTSTEXTMARK_NONE 0 /* none */
#define TTSTEXTMARK_SIMPLE_TAGS 1 /* simple tags (default) */
#define TTSTEXTMARK_CSSML 2 /* CSSML */
/* constants for values of attribute TTSATTR_TEXT_SCOPE */
#define TTSSCOPE_UNLIMITED 0 /* unlimited scope (default) */
#define TTSSCOPE_CHINESE_NUMBER 1 /* Chinese number */
#define TTSSCOPE_CHINESE_VALUE 2 /* Chinese value */
#define TTSSCOPE_CHINESE_DATETIME 3 /* Chinese date or time */
/* constants for values of attribute TTSATTR_INPUT_MODE */
#define TTSINPUT_FIXED_BUFFER 0 /* from fixed buffer */
#define TTSINPUT_CALLBACK 1 /* from callback */
/* constants for values of attribute TTSATTR_READ_DIGIT */
#define TTSREADDIGIT_AUTO 0 /* decide automatically (default) */
#define TTSREADDIGIT_AS_NUMBER 1 /* say digit as number */
#define TTSREADDIGIT_AS_VALUE 2 /* say digit as value */
/* constants for values of attribute TTSATTR_CHINESE_NUMBER_1 */
#define TTSCHNUM1_READ_YAO 0 /* read number "1" [yao1] in chinese (default) */
#define TTSCHNUM1_READ_YI 1 /* read number "1" [yi1] in chinese */
/* constants for values of attribute TTSATTR_PHONEME_WATCH */
#define TTSPHONEME_NONE 0 /* none (default) */
#define TTSPHONEME_PINYIN 1 /* Chinese Pin-Yin */
/* constants for values of attribute TTSATTR_SPEAKER */
#define TTSROLE_DEFAULT 0 /* default speaker */
#define TTSROLE_TIANCHANG 1 /* Tianchang (female) */
#define TTSROLE_WENJING 2 /* Wenjing (female) */
#define TTSROLE_YANPING 3 /* Yanping (female) */
#define TTSROLE_YUFENG 4 /* Yufeng (male) */
#define TTSROLE_SHERRI 5 /* Sherri (female) */
#define TTSROLE_XIAOJIN 6 /* Xiaojin (female) */
#define TTSROLE_NANNAN 7 /* Nannan (child) */
#define TTSROLE_JINGER 8 /* Jinger (female) */
#define TTSROLE_JIAJIA 9 /* Jiajia (girl) */
#define TTSROLE_YUER 10 /* Yuer (female) */
#define TTSROLE_XIAOQIAN 11 /* Xiaoqian (female) */
#define TTSROLE_LAOMA 12 /* Laoma (male) */
/* constants for values of attribute TTSATTR_SPEAK_STYLE */
#define TTSSTYLE_PLAIN 0 /* plain speak style */
#define TTSSTYLE_NORMAL 1 /* normal speak style (default) */
#define TTSSTYLE_VIVID 2 /* vivid speak style */
/* constants for values of attribute TTSATTR_VOICE_SPEED */
/* the range of voice speed value is from -32768 to +32767 */
#define TTSSPEED_MIN -32768 /* slowest voice speed */
#define TTSSPEED_NORMAL 0 /* normal voice speed (default) */
#define TTSSPEED_MAX +32767 /* fastest voice speed */
/* constants for values of attribute TTSATTR_VOICE_TONE */
/* the range of voice tone value is from -32768 to +32767 */
#define TTSTONE_MIN -32768 /* lowest voice tone */
#define TTSTONE_NORMAL 0 /* normal voice tone (default) */
#define TTSTONE_MAX +32767 /* highest voice tone */
/* constants for values of attribute TTSATTR_VOLUME */
/* the range of volume value is from -32768 to +32767 */
#define TTSVOLUME_MIN -32768 /* minimized volume */
#define TTSVOLUME_NORMAL 0 /* normal volume (default) */
#define TTSVOLUME_MAX +32767 /* maximized volume */
/* constants for values of attribute TTSATTR_VEMODE */
#define TTSVEMODE_NONE 0 /* none */
#define TTSVEMODE_WANDER 1 /* wander */
#define TTSVEMODE_ECHO 2 /* echo */
#define TTSVEMODE_ROBERT 3 /* robert */
#define TTSVEMODE_CHROUS 4 /* chorus */
#define TTSVEMODE_UNDERWATER 5 /* underwater */
#define TTSVEMODE_REVERB 6 /* reverb */
#define TTSVEMODE_ECCENTRIC 7 /* eccentric */
/* attribute change callback type */
typedef TTSERROR (FAR PASCAL FAR* TTSCB_ATTRCH)(
IN LPTTSVOID lpParameter, /* [in] user callback parameter */
IN TTSDWORD dwAttrId, /* [in] attribute id */
IN TTSVAR varAttrValue ); /* [in] attribute value */
/* progress callback type */
typedef TTSERROR (FAR PASCAL FAR* TTSCB_PROGRESS)(
IN LPTTSVOID lpParameter, /* [in] user callback parameter */
IN TTSDWORD dwProcBegin, /* [in] current processing position */
IN TTSDWORD dwProcLen ); /* [in] current processing length */
/* input callback type */
typedef TTSERROR (FAR PASCAL FAR* TTSCB_INPUT)(
IN LPTTSVOID lpParameter, /* [in] user callback parameter */
OUT LPTTSVOID lpText, /* [out] input text buffer */
OUT LPTTSDWORD lpdwSize ); /* [out] input text size */
/* output callback type */
typedef TTSERROR (FAR PASCAL FAR* TTSCB_OUTPUT)(
IN LPTTSVOID lpParameter, /* [in] user callback parameter */
IN TTSWORD wCode, /* [in] output data code */
IN LPCTTSVOID lpcData, /* [in] output data buffer */
IN TTSDWORD dwSize ); /* [in] output data size */
/* constants for values of parameter wCode */
#define TTSCODE_COMMAND 0x0000 /* command */
#define TTSCODE_PCM8K16B 0x0208 /* pcm 8k 16bit */
#define TTSCODE_PCM11K16B 0x020B /* pcm 11k 16bit */
#define TTSCODE_PCM16K16B 0x0210 /* pcm 16k 16bit */
/* structure for output command */
typedef struct tagTTSOutputCommand TTSOUTPUTCOMMAND;
typedef TTSOUTPUTCOMMAND FAR* LPTTSOUTPUTCOMMAND;
struct tagTTSOutputCommand
{
TTSDWORD dwCommand; /* command name */
TTSDWORD dwParam1; /* parameter 1 */
TTSDWORD dwParam2; /* parameter 2 */
};
/* constants for values of command name */
#define TTSOUTCMD_SILENCE 0 /* output silence (dwParam1 is the length by ms) */
#define TTSOUTCMD_RESET 1 /* reset the decoder */
/* watch callback type */
typedef TTSERROR (FAR PASCAL FAR* TTSCB_WATCH)(
IN LPTTSVOID lpParameter, /* [in] user callback parameter */
IN TTSWORD wSylType, /* [in] syllable type */
IN LPCTTSVOID lpcSylText, /* [in] syllable text buffer */
IN TTSDWORD dwTextLen, /* [in] syllable text length */
IN LPCTTSVOID lpcSylPhone, /* [in] syllable phoneme buffer */
IN TTSDWORD dwPhoneLen ); /* [in] syllable phoneme length */
/* constants for values of parameter wSylType */
#define TTSSYL_SYMBOL 0 /* symbol */
#define TTSSYL_PROMPT 1 /* prompt */
#define TTSSYL_CHINESE 2 /* chinese syllable */
#define TTSSYL_ENGLISH 3 /* english syllable */
#define TTSSYL_ENDSENT -1 /* end sentense */
/*
* STRUCTURE CONTAINING FUNCTION ENTRIES
*/
struct tagInterSound4
{
/* global initialize */
TTSERROR (FAR PASCAL FAR* Initialize)(TTSVOID);
TTSERROR (FAR PASCAL FAR* InitializeEx)(LPTTSVOID lpParameter);
/* global uninitialize */
TTSVOID (FAR PASCAL FAR* Uninitialize)(TTSVOID);
/* create an instance */
TTSERROR (FAR PASCAL FAR* Create)(
OUT HTTS FAR* lphTTS, /* [out] handle to an instance */
IN LPTTSATTR lpAttrs, /* [in] attributes to initialize the instance */
IN TTSDWORD dwAttrs ); /* [in] attribute count */
/* release an instance */
TTSERROR (FAR PASCAL FAR* Release)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* get a attribute associated with an instance */
TTSERROR (FAR PASCAL FAR* GetAttr)(
IN HTTS hTTS, /* [in] handle to an instance */
IN TTSDWORD dwAttrId, /* [in] attribute id */
OUT LPTTSVAR lpAttrValue ); /* [out] buffer to receive the attribute value */
/* set a attribute associated with an instance */
TTSERROR (FAR PASCAL FAR* SetAttr)(
IN HTTS hTTS, /* [in] handle to an instance */
IN TTSDWORD dwAttrId, /* [in] attribute id */
IN TTSVAR varAttrValue ); /* [in] attribute value */
/* get attributes associated with an instance */
TTSERROR (FAR PASCAL FAR* GetAttrs)(
IN HTTS hTTS, /* [in] handle to an instance */
OUT LPTTSATTR lpAttrs, /* [out] buffer to receive the attributes of the instance */
IN TTSDWORD dwAttrs ); /* [in] attribute count */
/* set attributes associated with an instance */
TTSERROR (FAR PASCAL FAR* SetAttrs)(
IN HTTS hTTS, /* [in] handle to an instance */
IN LPTTSATTR lpAttrs, /* [in] attributes to set for the instance */
IN TTSDWORD dwAttrs ); /* [in] attribute count */
/* open media on an instance and give current thread's control to it */
TTSERROR (FAR PASCAL FAR* Open)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* close media on an instance and return current thread's control */
TTSERROR (FAR PASCAL FAR* Close)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* synthesize a buffer of text on an instance */
TTSERROR (FAR PASCAL FAR* SynthText)(
IN HTTS hTTS, /* [in] handle to an instance */
IN LPCTTSVOID lpcData, /* [in] pointer of text buffer data to be synthesized */
IN TTSDWORD dwSize ); /* [in] size of text buffer data to be synthesized */
/* begin to synthesize from callback on an instance */
TTSERROR (FAR PASCAL FAR* SynthStart)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* load a text user dict, if another loaded, it would be unloaded */
TTSERROR (FAR PASCAL FAR* LoadTextUserDict)(
IN HTTS hTTS, /* [in] handle to an instance */
IN TTSSTR szTextPath ); /* [in] path of the text user dict */
/* unload the text user dict, if any loaded */
TTSERROR (FAR PASCAL FAR* UnloadTextUserDict)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* load a binary user dict, if another loaded, it would be unloaded */
TTSERROR (FAR PASCAL FAR* LoadBinUserDict)(
IN HTTS hTTS, /* [in] handle to an instance */
IN TTSSTR szBinPath ); /* [in] path of the binary user dict */
/* unload the binary user dict, if any loaded */
TTSERROR (FAR PASCAL FAR* UnloadBinUserDict)(
IN HTTS hTTS ); /* [in] handle to an instance */
/* load a prompt resource, if another loaded, it would be unloaded */
TTSERROR (FAR PASCAL FAR* LoadPrompt)(
IN HTTS hTTS, /* [in] handle to an instance */
IN TTSSTR szTextRes, /* [in] path of the prompt text resource */
IN TTSSTR szVLibRes ); /* [in] path of the prompt voice library */
/* unload the prompt resource, if any loaded */
TTSERROR (FAR PASCAL FAR* UnloadPrompt)(
IN HTTS hTTS ); /* [in] handle to an instance */
};
/* const structure instance containing function entries */
extern CONST struct tagInterSound4 InterSound4;
/* parameters for voice effect amplify */
typedef struct tagTTSVEAmplifyParam TTSVEAMPLIFYPARAM;
struct tagTTSVEAmplifyParam
{
TTSWORD m_nPeriod; /* 1-2000ms */
TTSBYTE m_fAmpMin; /* 0-100% */
TTSBYTE m_fAmpMax; /* 0-100% */
};
/* parameters for voice effect echo */
typedef struct tagTTSVEEchoParam TTSVEECHOPARAM;
struct tagTTSVEEchoParam
{
TTSBYTE m_fInitDecay; /* 0-100% */
TTSBYTE m_fDecay; /* 0-100% */
TTSWORD m_nDelay; /* 1-2000ms */
};
/* parameters for voice effectVE reverb */
typedef struct tagTTSVEReverbParam TTSVEREVERBPARAM;
struct tagTTSVEReverbParam
{
TTSBYTE m_fInitDecay; /* 0-100% */
TTSBYTE m_nFilters; /* 1-16 */
TTSBYTE m_fDecay[16]; /* 0-100% */
TTSBYTE m_nDelay[16]; /* 1-100ms */
};
/* parameters for voice effect chrous */
typedef struct tagTTSVEChrousParam TTSVECHROUSPARAM;
struct tagTTSVEChrousParam
{
TTSBYTE m_fInitDecay; /* 0-100% */
TTSBYTE m_fInitRatio; /* 0-100% */
TTSBYTE m_nDelayMin; /* 1-40ms */
TTSBYTE m_nDelayMax; /* 1-40ms */
TTSBYTE m_nFilters; /* 1-16 */
TTSBYTE m_nFilterFreq; /* 初始频率1-50 */
TTSBYTE m_nFilterFreqDelta; /* 频率变化1-50 */
};
/* parameters for voice effect pitch */
typedef struct tagTTSVEPitchParam TTSVEPITCHPARAM;
struct tagTTSVEPitchParam
{
TTSBYTE m_fDeltaPitch; /* 0-90% */
TTSWORD m_nPeriod; /* 1-20000ms */
};
#ifdef __cplusplus
}
#endif
#endif /* !__IFLYTEK_INTERSOUND4__STANDARD_API__H__ */