|  | /** | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER within this package. | 
|  | */ | 
|  |  | 
|  | #ifndef _SAPI_BLD_ | 
|  | #define _SAPI_BLD_ 0x54 | 
|  | #endif | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "ocidl.idl"; | 
|  |  | 
|  | cpp_quote("#ifndef _SAPI_VER") | 
|  | cpp_quote("#error \"you have to include <sapi.h> header before this.\"") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | #ifndef LANGID | 
|  | #define LANGID WORD | 
|  | #endif | 
|  |  | 
|  | cpp_quote("#if 0") | 
|  | typedef [restricted, hidden] struct WAVEFORMATEX { | 
|  | WORD wFormatTag; | 
|  | WORD nChannels; | 
|  | DWORD nSamplesPerSec; | 
|  | DWORD nAvgBytesPerSec; | 
|  | WORD nBlockAlign; | 
|  | WORD wBitsPerSample; | 
|  | WORD cbSize; | 
|  | } WAVEFORMATEX; | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | interface ISpNotifySource; | 
|  | interface ISpNotifySink; | 
|  | interface ISpNotifyTranslator; | 
|  | interface ISpDataKey; | 
|  | interface ISpObjectTokenCategory; | 
|  | interface ISpObjectToken; | 
|  | interface IEnumSpObjectTokens; | 
|  | interface ISpObjectWithToken; | 
|  | interface ISpResourceManager; | 
|  | interface ISpEventSource; | 
|  | interface ISpEventSink; | 
|  | interface ISpStreamFormat; | 
|  | interface ISpStream; | 
|  | interface ISpStreamFormatConverter; | 
|  | interface ISpAudio; | 
|  | interface ISpMMSysAudio; | 
|  | interface ISpTranscript; | 
|  | interface ISpVoice; | 
|  | interface ISpRecoResult; | 
|  | interface ISpRecoContext; | 
|  | interface ISpRecognizer; | 
|  | interface ISpProperties; | 
|  | interface ISpLexicon; | 
|  | interface ISpPhoneConverter; | 
|  | interface ISpPhrase; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpRecoContext2; | 
|  | interface ISpRecognizer2; | 
|  | interface ISpShortcut; | 
|  | interface ISpPhoneticAlphabetConverter; | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | interface ISpRecoGrammar2; | 
|  | interface ISpeechResourceLoader; | 
|  | #endif | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | interface ISpRecognizer3; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] enum SPDATAKEYLOCATION { | 
|  | SPDKL_DefaultLocation = 0, | 
|  | SPDKL_CurrentUser = 1, | 
|  | SPDKL_LocalMachine = 2, | 
|  | SPDKL_CurrentConfig = 5 | 
|  | } SPDATAKEYLOCATION; | 
|  |  | 
|  | typedef [hidden] enum SPSTREAMFORMAT { | 
|  | SPSF_Default = -1, | 
|  | SPSF_NoAssignedFormat = 0, | 
|  | SPSF_Text, | 
|  | SPSF_NonStandardFormat, | 
|  | SPSF_ExtendedAudioFormat, | 
|  | SPSF_8kHz8BitMono, | 
|  | SPSF_8kHz8BitStereo, | 
|  | SPSF_8kHz16BitMono, | 
|  | SPSF_8kHz16BitStereo, | 
|  | SPSF_11kHz8BitMono, | 
|  | SPSF_11kHz8BitStereo, | 
|  | SPSF_11kHz16BitMono, | 
|  | SPSF_11kHz16BitStereo, | 
|  | SPSF_12kHz8BitMono, | 
|  | SPSF_12kHz8BitStereo, | 
|  | SPSF_12kHz16BitMono, | 
|  | SPSF_12kHz16BitStereo, | 
|  | SPSF_16kHz8BitMono, | 
|  | SPSF_16kHz8BitStereo, | 
|  | SPSF_16kHz16BitMono, | 
|  | SPSF_16kHz16BitStereo, | 
|  | SPSF_22kHz8BitMono, | 
|  | SPSF_22kHz8BitStereo, | 
|  | SPSF_22kHz16BitMono, | 
|  | SPSF_22kHz16BitStereo, | 
|  | SPSF_24kHz8BitMono, | 
|  | SPSF_24kHz8BitStereo, | 
|  | SPSF_24kHz16BitMono, | 
|  | SPSF_24kHz16BitStereo, | 
|  | SPSF_32kHz8BitMono, | 
|  | SPSF_32kHz8BitStereo, | 
|  | SPSF_32kHz16BitMono, | 
|  | SPSF_32kHz16BitStereo, | 
|  | SPSF_44kHz8BitMono, | 
|  | SPSF_44kHz8BitStereo, | 
|  | SPSF_44kHz16BitMono, | 
|  | SPSF_44kHz16BitStereo, | 
|  | SPSF_48kHz8BitMono, | 
|  | SPSF_48kHz8BitStereo, | 
|  | SPSF_48kHz16BitMono, | 
|  | SPSF_48kHz16BitStereo, | 
|  | SPSF_TrueSpeech_8kHz1BitMono, | 
|  | SPSF_CCITT_ALaw_8kHzMono, | 
|  | SPSF_CCITT_ALaw_8kHzStereo, | 
|  | SPSF_CCITT_ALaw_11kHzMono, | 
|  | SPSF_CCITT_ALaw_11kHzStereo, | 
|  | SPSF_CCITT_ALaw_22kHzMono, | 
|  | SPSF_CCITT_ALaw_22kHzStereo, | 
|  | SPSF_CCITT_ALaw_44kHzMono, | 
|  | SPSF_CCITT_ALaw_44kHzStereo, | 
|  | SPSF_CCITT_uLaw_8kHzMono, | 
|  | SPSF_CCITT_uLaw_8kHzStereo, | 
|  | SPSF_CCITT_uLaw_11kHzMono, | 
|  | SPSF_CCITT_uLaw_11kHzStereo, | 
|  | SPSF_CCITT_uLaw_22kHzMono, | 
|  | SPSF_CCITT_uLaw_22kHzStereo, | 
|  | SPSF_CCITT_uLaw_44kHzMono, | 
|  | SPSF_CCITT_uLaw_44kHzStereo, | 
|  | SPSF_ADPCM_8kHzMono, | 
|  | SPSF_ADPCM_8kHzStereo, | 
|  | SPSF_ADPCM_11kHzMono, | 
|  | SPSF_ADPCM_11kHzStereo, | 
|  | SPSF_ADPCM_22kHzMono, | 
|  | SPSF_ADPCM_22kHzStereo, | 
|  | SPSF_ADPCM_44kHzMono, | 
|  | SPSF_ADPCM_44kHzStereo, | 
|  | SPSF_GSM610_8kHzMono, | 
|  | SPSF_GSM610_11kHzMono, | 
|  | SPSF_GSM610_22kHzMono, | 
|  | SPSF_GSM610_44kHzMono, | 
|  | SPSF_NUM_FORMATS | 
|  | } SPSTREAMFORMAT; | 
|  |  | 
|  | typedef [hidden] enum SPEVENTLPARAMTYPE { | 
|  | SPET_LPARAM_IS_UNDEFINED = 0, | 
|  | SPET_LPARAM_IS_TOKEN, | 
|  | SPET_LPARAM_IS_OBJECT, | 
|  | SPET_LPARAM_IS_POINTER, | 
|  | SPET_LPARAM_IS_STRING | 
|  | } SPEVENTLPARAMTYPE; | 
|  |  | 
|  | typedef [hidden] enum SPEVENTENUM { | 
|  | SPEI_UNDEFINED = 0, | 
|  | SPEI_START_INPUT_STREAM = 1, | 
|  | SPEI_END_INPUT_STREAM = 2, | 
|  | SPEI_VOICE_CHANGE = 3, | 
|  | SPEI_TTS_BOOKMARK = 4, | 
|  | SPEI_WORD_BOUNDARY = 5, | 
|  | SPEI_PHONEME = 6, | 
|  | SPEI_SENTENCE_BOUNDARY = 7, | 
|  | SPEI_VISEME = 8, | 
|  | SPEI_TTS_AUDIO_LEVEL = 9, | 
|  | SPEI_TTS_PRIVATE = 15, | 
|  | SPEI_MIN_TTS = 1, | 
|  | SPEI_MAX_TTS = 15, | 
|  | SPEI_END_SR_STREAM = 34, | 
|  | SPEI_SOUND_START = 35, | 
|  | SPEI_SOUND_END = 36, | 
|  | SPEI_PHRASE_START = 37, | 
|  | SPEI_RECOGNITION = 38, | 
|  | SPEI_HYPOTHESIS = 39, | 
|  | SPEI_SR_BOOKMARK = 40, | 
|  | SPEI_PROPERTY_NUM_CHANGE = 41, | 
|  | SPEI_PROPERTY_STRING_CHANGE= 42, | 
|  | SPEI_FALSE_RECOGNITION = 43, | 
|  | SPEI_INTERFERENCE = 44, | 
|  | SPEI_REQUEST_UI = 45, | 
|  | SPEI_RECO_STATE_CHANGE = 46, | 
|  | SPEI_ADAPTATION = 47, | 
|  | SPEI_START_SR_STREAM = 48, | 
|  | SPEI_RECO_OTHER_CONTEXT = 49, | 
|  | SPEI_SR_AUDIO_LEVEL = 50, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPEI_SR_RETAINEDAUDIO = 51, | 
|  | #endif | 
|  | SPEI_SR_PRIVATE = 52, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | SPEI_ACTIVE_CATEGORY_CHANGED = 53, | 
|  | #else | 
|  | SPEI_RESERVED4 = 53, | 
|  | #endif | 
|  | SPEI_RESERVED5 = 54, | 
|  | SPEI_RESERVED6 = 55, | 
|  | #endif | 
|  | SPEI_MIN_SR = 34, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPEI_MAX_SR = 55, | 
|  | #else | 
|  | SPEI_MAX_SR = 52, | 
|  | #endif | 
|  | SPEI_RESERVED1 = 30, | 
|  | SPEI_RESERVED2 = 33, | 
|  | SPEI_RESERVED3 = 63 | 
|  | } SPEVENTENUM; | 
|  |  | 
|  | typedef [hidden] enum SPINTERFERENCE { | 
|  | SPINTERFERENCE_NONE = 0, | 
|  | SPINTERFERENCE_NOISE, | 
|  | SPINTERFERENCE_NOSIGNAL, | 
|  | SPINTERFERENCE_TOOLOUD, | 
|  | SPINTERFERENCE_TOOQUIET, | 
|  | SPINTERFERENCE_TOOFAST, | 
|  | SPINTERFERENCE_TOOSLOW, | 
|  | SPINTERFERENCE_LATENCY_WARNING, | 
|  | SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN, | 
|  | SPINTERFERENCE_LATENCY_TRUNCATE_END | 
|  | } SPINTERFERENCE; | 
|  |  | 
|  | typedef [hidden] enum SPENDSRSTREAMFLAGS { | 
|  | SPESF_NONE = 0, | 
|  | SPESF_STREAM_RELEASED = 1 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPESF_EMULATED = 2 | 
|  | #endif | 
|  | } SPENDSRSTREAMFLAGS; | 
|  |  | 
|  | typedef [hidden] enum SPVFEATURE { | 
|  | SPVFEATURE_STRESSED = 1, | 
|  | SPVFEATURE_EMPHASIS = 2 | 
|  | } SPVFEATURE; | 
|  |  | 
|  | typedef [hidden] enum SPVISEMES { | 
|  | SP_VISEME_0 = 0, | 
|  | SP_VISEME_1, | 
|  | SP_VISEME_2, | 
|  | SP_VISEME_3, | 
|  | SP_VISEME_4, | 
|  | SP_VISEME_5, | 
|  | SP_VISEME_6, | 
|  | SP_VISEME_7, | 
|  | SP_VISEME_8, | 
|  | SP_VISEME_9, | 
|  | SP_VISEME_10, | 
|  | SP_VISEME_11, | 
|  | SP_VISEME_12, | 
|  | SP_VISEME_13, | 
|  | SP_VISEME_14, | 
|  | SP_VISEME_15, | 
|  | SP_VISEME_16, | 
|  | SP_VISEME_17, | 
|  | SP_VISEME_18, | 
|  | SP_VISEME_19, | 
|  | SP_VISEME_20, | 
|  | SP_VISEME_21, | 
|  | } SPVISEMES; | 
|  |  | 
|  | typedef [hidden] enum SPFILEMODE { | 
|  | SPFM_OPEN_READONLY, | 
|  | SPFM_OPEN_READWRITE, | 
|  | SPFM_CREATE, | 
|  | SPFM_CREATE_ALWAYS, | 
|  | SPFM_NUM_MODES | 
|  | } SPFILEMODE; | 
|  |  | 
|  | typedef [hidden] enum _SPAUDIOSTATE { | 
|  | SPAS_CLOSED, | 
|  | SPAS_STOP, | 
|  | SPAS_PAUSE, | 
|  | SPAS_RUN | 
|  | } SPAUDIOSTATE; | 
|  |  | 
|  | typedef [hidden] enum SPDISPLYATTRIBUTES { | 
|  | SPAF_ONE_TRAILING_SPACE = 0x2, | 
|  | SPAF_TWO_TRAILING_SPACES = 0x4, | 
|  | SPAF_CONSUME_LEADING_SPACES = 0x8, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPAF_BUFFER_POSITION = 0x10, | 
|  | SPAF_ALL = 0x1f, | 
|  | SPAF_USER_SPECIFIED = 0x80 | 
|  | #else | 
|  | SPAF_ALL = 0x0f | 
|  | #endif | 
|  | } SPDISPLAYATTRIBUTES; | 
|  |  | 
|  | typedef [hidden] enum SPPHRASEPROPERTYUNIONTYPE { | 
|  | SPPPUT_UNUSED = 0, | 
|  | SPPPUT_ARRAY_INDEX | 
|  | } SPPHRASEPROPERTYUNIONTYPE; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef enum SPSEMANTICFORMAT { | 
|  | SPSMF_SAPI_PROPERTIES = 0, | 
|  | SPSMF_SRGS_SEMANTICINTERPRETATION_MS = 1, | 
|  | SPSMF_SRGS_SAPIPROPERTIES = 2, | 
|  | SPSMF_UPS = 4, | 
|  | SPSMF_SRGS_SEMANTICINTERPRETATION_W3C = 8 | 
|  | } SPSEMANTICFORMAT; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] enum SPRECOEVENTFLAGS { | 
|  | SPREF_AutoPause = 0x1, | 
|  | SPREF_Emulated = 0x2 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPREF_SMLTimeout = 0x4, | 
|  | SPREF_ExtendableParse = 0x8, | 
|  | SPREF_ReSent = 0x10, | 
|  | SPREF_Hypothesis = 0x20, | 
|  | SPREF_FalseRecognition = 0x40 | 
|  | #endif | 
|  | } SPRECOEVENTFLAGS; | 
|  |  | 
|  | typedef [hidden] enum SPPARTOFSPEECH { | 
|  | SPPS_NotOverriden = -1, | 
|  | SPPS_Unknown = 0, | 
|  | SPPS_Noun = 0x1000, | 
|  | SPPS_Verb = 0x2000, | 
|  | SPPS_Modifier = 0x3000, | 
|  | SPPS_Function = 0x4000, | 
|  | SPPS_Interjection = 0x5000 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPPS_Noncontent = 0x6000, | 
|  | SPPS_LMA = 0x7000, | 
|  | SPPS_SuppressWord = 0xf000 | 
|  | #endif | 
|  | } SPPARTOFSPEECH; | 
|  |  | 
|  | typedef [hidden] enum SPLEXICONTYPE { | 
|  | eLEXTYPE_USER = 0x1, | 
|  | eLEXTYPE_APP = 0x2, | 
|  | eLEXTYPE_VENDORLEXICON = 0x4, | 
|  | eLEXTYPE_LETTERTOSOUND = 0x8, | 
|  | eLEXTYPE_MORPHOLOGY = 0x10, | 
|  | eLEXTYPE_RESERVED4 = 0x20, | 
|  | eLEXTYPE_USER_SHORTCUT = 0x40, | 
|  | eLEXTYPE_RESERVED6 = 0x80, | 
|  | eLEXTYPE_RESERVED7 = 0x100, | 
|  | eLEXTYPE_RESERVED8 = 0x200, | 
|  | eLEXTYPE_RESERVED9 = 0x400, | 
|  | eLEXTYPE_RESERVED10 = 0x800, | 
|  | eLEXTYPE_PRIVATE1 = 0x1000, | 
|  | eLEXTYPE_PRIVATE2 = 0x2000, | 
|  | eLEXTYPE_PRIVATE3 = 0x4000, | 
|  | eLEXTYPE_PRIVATE4 = 0x8000, | 
|  | eLEXTYPE_PRIVATE5 = 0x10000, | 
|  | eLEXTYPE_PRIVATE6 = 0x20000, | 
|  | eLEXTYPE_PRIVATE7 = 0x40000, | 
|  | eLEXTYPE_PRIVATE8 = 0x80000, | 
|  | eLEXTYPE_PRIVATE9 = 0x100000, | 
|  | eLEXTYPE_PRIVATE10 = 0x200000, | 
|  | eLEXTYPE_PRIVATE11 = 0x400000, | 
|  | eLEXTYPE_PRIVATE12 = 0x800000, | 
|  | eLEXTYPE_PRIVATE13 = 0x1000000, | 
|  | eLEXTYPE_PRIVATE14 = 0x2000000, | 
|  | eLEXTYPE_PRIVATE15 = 0x4000000, | 
|  | eLEXTYPE_PRIVATE16 = 0x8000000, | 
|  | eLEXTYPE_PRIVATE17 = 0x10000000, | 
|  | eLEXTYPE_PRIVATE18 = 0x20000000, | 
|  | eLEXTYPE_PRIVATE19 = 0x40000000, | 
|  | eLEXTYPE_PRIVATE20 = 0x80000000u | 
|  | } SPLEXICONTYPE; | 
|  |  | 
|  | typedef [hidden] enum SPWORDTYPE { | 
|  | eWORDTYPE_ADDED = 1, | 
|  | eWORDTYPE_DELETED = 2 | 
|  | } SPWORDTYPE; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [hidden] enum SPPRONUNCIATIONFLAGS { | 
|  | ePRONFLAG_USED = 1 | 
|  | } SPPRONUNCIATIONFLAGS; | 
|  |  | 
|  | typedef [hidden] enum SPSHORTCUTTYPE { | 
|  | SPSHT_NotOverriden = -1, | 
|  | SPSHT_Unknown = 0, | 
|  | SPSHT_EMAIL = 0x1000, | 
|  | SPSHT_OTHER = 0x2000, | 
|  | SPPS_RESERVED1 = 0x3000, | 
|  | SPPS_RESERVED2 = 0x4000, | 
|  | SPPS_RESERVED3 = 0x5000, | 
|  | SPPS_RESERVED4 = 0xf000 | 
|  | } SPSHORTCUTTYPE; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] enum SPVALUETYPE { | 
|  | SPDF_PROPERTY = 0x1, | 
|  | SPDF_REPLACEMENT = 0x2, | 
|  | SPDF_RULE = 0x4, | 
|  | SPDF_DISPLAYTEXT = 0x8, | 
|  | SPDF_LEXICALFORM = 0x10, | 
|  | SPDF_PRONUNCIATION = 0x20, | 
|  | SPDF_AUDIO = 0x40, | 
|  | SPDF_ALTERNATES = 0x80, | 
|  | SPDF_ALL = 0xff | 
|  | } SPVALUETYPE; | 
|  |  | 
|  | typedef [hidden] enum SPPHRASERNG { | 
|  | SPPR_ALL_ELEMENTS = -1 | 
|  | } SPPHRASERNG; | 
|  |  | 
|  | typedef [hidden] enum SPVACTIONS { | 
|  | SPVA_Speak = 0, | 
|  | SPVA_Silence, | 
|  | SPVA_Pronounce, | 
|  | SPVA_Bookmark, | 
|  | SPVA_SpellOut, | 
|  | SPVA_Section, | 
|  | SPVA_ParseUnknownTag | 
|  | } SPVACTIONS; | 
|  |  | 
|  | typedef [hidden] enum SPRUNSTATE { | 
|  | SPRS_DONE = 1, | 
|  | SPRS_IS_SPEAKING = 2 | 
|  | } SPRUNSTATE; | 
|  |  | 
|  | typedef [hidden] enum SPVLIMITS { | 
|  | SPMIN_VOLUME = 0, | 
|  | SPMAX_VOLUME = 100, | 
|  | SPMIN_RATE = -10, | 
|  | SPMAX_RATE = 10 | 
|  | } SPVLIMITS; | 
|  |  | 
|  | typedef [hidden] enum SPVPRIORITY { | 
|  | SPVPRI_NORMAL = 0, | 
|  | SPVPRI_ALERT = 1, | 
|  | SPVPRI_OVER = 2 | 
|  | } SPVPRIORITY; | 
|  |  | 
|  | cpp_quote("EXTERN_C const GUID SPDFID_Text;") | 
|  | cpp_quote("EXTERN_C const GUID SPDFID_WaveFormatEx;") | 
|  |  | 
|  | cpp_quote("") | 
|  | const signed char SP_LOW_CONFIDENCE = -1; | 
|  | const signed char SP_NORMAL_CONFIDENCE = 0; | 
|  | const signed char SP_HIGH_CONFIDENCE = +1; | 
|  | const float DEFAULT_WEIGHT = 1; | 
|  | const ULONG SP_MAX_WORD_LENGTH = 128; | 
|  | const ULONG SP_MAX_PRON_LENGTH = 384; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | const ULONG SP_EMULATE_RESULT = 0x40000000; | 
|  | #endif | 
|  |  | 
|  | cpp_quote("") | 
|  | cpp_quote("#ifdef __cplusplus") | 
|  | cpp_quote("interface ISpNotifyCallback {") | 
|  | cpp_quote("  virtual HRESULT STDMETHODCALLTYPE NotifyCallback(WPARAM wParam, LPARAM lParam) = 0;") | 
|  | cpp_quote("};") | 
|  | cpp_quote("#else") | 
|  | typedef void *ISpNotifyCallback; | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | cpp_quote("#if 0") | 
|  | typedef void *SPNOTIFYCALLBACK; | 
|  | cpp_quote("#else") | 
|  | cpp_quote("typedef void __stdcall SPNOTIFYCALLBACK(WPARAM wParam, LPARAM lParam);") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | [object, uuid (5eff4aef-8487-11d2-961c-00c04f8ee628), pointer_default (unique), restricted] | 
|  | interface ISpNotifySource : IUnknown { | 
|  | HRESULT SetNotifySink ([in] ISpNotifySink *pNotifySink); | 
|  | [local] HRESULT SetNotifyWindowMessage ([in] HWND hWnd,[in] UINT Msg,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | [local] HRESULT SetNotifyCallbackFunction ([in] SPNOTIFYCALLBACK *pfnCallback,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | [local] HRESULT SetNotifyCallbackInterface ([in] ISpNotifyCallback *pSpCallback,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | [local] HRESULT SetNotifyWin32Event (void); | 
|  | [local] HRESULT WaitForNotifyEvent ([in] DWORD dwMilliseconds); | 
|  | [local] HANDLE GetNotifyEventHandle (); | 
|  | } | 
|  |  | 
|  | [object, uuid (259684dc-37c3-11d2-9603-00c04f8ee628), pointer_default (unique), restricted] | 
|  | interface ISpNotifySink : IUnknown { | 
|  | HRESULT Notify (void); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (ACA16614-5d3d-11d2-960e-00c04f8ee628), pointer_default (unique), restricted] | 
|  | interface ISpNotifyTranslator : ISpNotifySink { | 
|  | HRESULT InitWindowMessage ([in] HWND hWnd,[in] UINT Msg,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | HRESULT InitCallback ([in] SPNOTIFYCALLBACK *pfnCallback,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | HRESULT InitSpNotifyCallback ([in] ISpNotifyCallback *pSpCallback,[in] WPARAM wParam,[in] LPARAM lParam); | 
|  | HRESULT InitWin32Event ([in] HANDLE hEvent,[in] WINBOOL fCloseHandleOnRelease); | 
|  | HRESULT Wait ([in] DWORD dwMilliseconds); | 
|  | HANDLE GetEventHandle (); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (14056581-E16C-11d2-BB90-00c04f8ee6c0), pointer_default (unique), restricted] | 
|  | interface ISpDataKey : IUnknown { | 
|  | HRESULT SetData ([in] LPCWSTR pszValueName,[in] ULONG cbData,[in] const BYTE *pData); | 
|  | HRESULT GetData ([in] LPCWSTR pszValueName,[in] ULONG *pcbData,[out] BYTE *pData); | 
|  | HRESULT SetStringValue ([in] LPCWSTR pszValueName,[in] LPCWSTR pszValue); | 
|  | HRESULT GetStringValue ([in] LPCWSTR pszValueName,[out] LPWSTR *ppszValue); | 
|  | HRESULT SetDWORD ([in] LPCWSTR pszValueName,[in] DWORD dwValue); | 
|  | HRESULT GetDWORD ([in] LPCWSTR pszValueName,[out] DWORD *pdwValue); | 
|  | HRESULT OpenKey ([in] LPCWSTR pszSubKeyName,[out] ISpDataKey **ppSubKey); | 
|  | HRESULT CreateKey ([in] LPCWSTR pszSubKey,[out] ISpDataKey **ppSubKey); | 
|  | HRESULT DeleteKey ([in] LPCWSTR pszSubKey); | 
|  | HRESULT DeleteValue ([in] LPCWSTR pszValueName); | 
|  | HRESULT EnumKeys ([in] ULONG Index,[out] LPWSTR *ppszSubKeyName); | 
|  | HRESULT EnumValues ([in] ULONG Index,[out] LPWSTR *ppszValueName); | 
|  | }; | 
|  |  | 
|  | [object, uuid (5b559f40-E952-11d2-BB91-00c04f8ee6c0), pointer_default (unique), restricted] | 
|  | interface ISpObjectWithToken : IUnknown { | 
|  | HRESULT SetObjectToken ([in] ISpObjectToken *pToken); | 
|  | HRESULT GetObjectToken ([out] ISpObjectToken **ppToken); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (06b64f9e-7fda-11d2-B4F2-00c04f797396), pointer_default (unique), restricted] | 
|  | interface IEnumSpObjectTokens : IUnknown { | 
|  | HRESULT Next ([in] ULONG celt,[out, size_is (celt), length_is (*pceltFetched)] ISpObjectToken **pelt,[out] ULONG *pceltFetched); | 
|  | HRESULT Skip ([in] ULONG celt); | 
|  | HRESULT Reset (void); | 
|  | HRESULT Clone ([out] IEnumSpObjectTokens **ppEnum); | 
|  | HRESULT Item ([in] ULONG Index,[out] ISpObjectToken **ppToken); | 
|  | HRESULT GetCount ([out] ULONG *pCount); | 
|  | }; | 
|  |  | 
|  | [object, uuid (92a66e2b-C830-4149-83df-6fc2ba1e7a5b), pointer_default (unique), restricted] | 
|  | interface ISpRegDataKey : ISpDataKey { | 
|  | [local] HRESULT SetKey ([in] HKEY hkey,[in] WINBOOL fReadOnly); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (2d3d3845-39af-4850-BBF9-40b49780011d), pointer_default (unique), restricted] | 
|  | interface ISpObjectTokenCategory : ISpDataKey { | 
|  | HRESULT SetId ([in] LPCWSTR pszCategoryId,[in] WINBOOL fCreateIfNotExist); | 
|  | HRESULT GetId ([out] LPWSTR *ppszCoMemCategoryId); | 
|  | HRESULT GetDataKey ([in] SPDATAKEYLOCATION spdkl,[out] ISpDataKey **ppDataKey); | 
|  | HRESULT EnumTokens ([in, string] LPCWSTR pzsReqAttribs,[in, string] LPCWSTR pszOptAttribs,[out] IEnumSpObjectTokens **ppEnum); | 
|  | HRESULT SetDefaultTokenId ([in] LPCWSTR pszTokenId); | 
|  | HRESULT GetDefaultTokenId ([out] LPWSTR *ppszCoMemTokenId); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (14056589-E16C-11d2-BB90-00c04f8ee6c0), pointer_default (unique), restricted] | 
|  | interface ISpObjectToken : ISpDataKey { | 
|  | HRESULT SetId (LPCWSTR pszCategoryId,[in] LPCWSTR pszTokenId,[in] WINBOOL fCreateIfNotExist); | 
|  | HRESULT GetId ([out] LPWSTR *ppszCoMemTokenId); | 
|  | HRESULT GetCategory ([out] ISpObjectTokenCategory **ppTokenCategory); | 
|  | HRESULT CreateInstance ([in] IUnknown *pUnkOuter,[in] DWORD dwClsContext,[in] REFIID riid,[out, iid_is (riid)] void **ppvObject); | 
|  | HRESULT GetStorageFileName ([in] REFCLSID clsidCaller,[in] LPCWSTR pszValueName,[in, string] LPCWSTR pszFileNameSpecifier,[in] ULONG nFolder,[out] LPWSTR *ppszFilePath); | 
|  | HRESULT RemoveStorageFileName ([in] REFCLSID clsidCaller,[in] LPCWSTR pszKeyName,[in] WINBOOL fDeleteFile); | 
|  | HRESULT Remove (const CLSID *pclsidCaller); | 
|  | [local] HRESULT IsUISupported ([in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData,[in] IUnknown *punkObject,[out] WINBOOL *pfSupported); | 
|  | [local] HRESULT DisplayUI ([in] HWND hwndParent,[in] LPCWSTR pszTitle,[in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData,[in] IUnknown *punkObject); | 
|  | HRESULT MatchesAttributes ([in] LPCWSTR pszAttributes,[out] WINBOOL *pfMatches); | 
|  | }; | 
|  |  | 
|  | [object, uuid (B8AAB0CF-346f-49d8-9499-C8B03F161D51), pointer_default (unique), restricted] | 
|  | interface ISpObjectTokenInit : ISpObjectToken { | 
|  | HRESULT InitFromDataKey ([in] LPCWSTR pszCategoryId,[in] LPCWSTR pszTokenId,[in] ISpDataKey *pDataKey); | 
|  | }; | 
|  |  | 
|  | [object, uuid (93384e18-5014-43d5-ADBB-A78E055926BD), pointer_default (unique), restricted] | 
|  | interface ISpResourceManager : IServiceProvider | 
|  | { | 
|  | HRESULT SetObject ([in] REFGUID guidServiceId,[in] IUnknown *pUnkObject); | 
|  | HRESULT GetObject ([in] REFGUID guidServiceId,[in] REFCLSID ObjectCLSID,[in] REFIID ObjectIID,[in] WINBOOL fReleaseWhenLastExternalRefReleased,[out, iid_is (ObjectIID)] void **ppObject); | 
|  | }; | 
|  |  | 
|  | cpp_quote("#if 0") | 
|  | typedef [restricted, hidden] struct SPEVENT { | 
|  | WORD eEventId; | 
|  | WORD elParamType; | 
|  | ULONG ulStreamNum; | 
|  | ULONGLONG ullAudioStreamOffset; | 
|  | WPARAM wParam; | 
|  | LPARAM lParam; | 
|  | } SPEVENT; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPSERIALIZEDEVENT { | 
|  | WORD eEventId; | 
|  | WORD elParamType; | 
|  | ULONG ulStreamNum; | 
|  | ULONGLONG ullAudioStreamOffset; | 
|  | ULONG SerializedwParam; | 
|  | LONG SerializedlParam; | 
|  | } SPSERIALIZEDEVENT; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPSERIALIZEDEVENT64 { | 
|  | WORD eEventId; | 
|  | WORD elParamType; | 
|  | ULONG ulStreamNum; | 
|  | ULONGLONG ullAudioStreamOffset; | 
|  | ULONGLONG SerializedwParam; | 
|  | LONGLONG SerializedlParam; | 
|  | } SPSERIALIZEDEVENT64; | 
|  | cpp_quote("#else") | 
|  | cpp_quote("typedef struct SPEVENT {") | 
|  | cpp_quote("  SPEVENTENUM eEventId : 16;") | 
|  | cpp_quote("  SPEVENTLPARAMTYPE elParamType : 16;") | 
|  | cpp_quote("  ULONG ulStreamNum;") | 
|  | cpp_quote("  ULONGLONG ullAudioStreamOffset;") | 
|  | cpp_quote("  WPARAM      wParam;") | 
|  | cpp_quote("  LPARAM      lParam;") | 
|  | cpp_quote("} SPEVENT;") | 
|  | cpp_quote("") | 
|  | cpp_quote("typedef struct SPSERIALIZEDEVENT {") | 
|  | cpp_quote("  SPEVENTENUM eEventId : 16;") | 
|  | cpp_quote("  SPEVENTLPARAMTYPE elParamType : 16;") | 
|  | cpp_quote("  ULONG ulStreamNum;") | 
|  | cpp_quote("  ULONGLONG ullAudioStreamOffset;") | 
|  | cpp_quote("  ULONG SerializedwParam;") | 
|  | cpp_quote("  LONG SerializedlParam;") | 
|  | cpp_quote("} SPSERIALIZEDEVENT;") | 
|  | cpp_quote("") | 
|  | cpp_quote("typedef struct SPSERIALIZEDEVENT64 {") | 
|  | cpp_quote("  SPEVENTENUM eEventId : 16;") | 
|  | cpp_quote("  SPEVENTLPARAMTYPE elParamType : 16;") | 
|  | cpp_quote("  ULONG ulStreamNum;") | 
|  | cpp_quote("  ULONGLONG ullAudioStreamOffset;") | 
|  | cpp_quote("  ULONGLONG SerializedwParam;") | 
|  | cpp_quote("  LONGLONG SerializedlParam;") | 
|  | cpp_quote("} SPSERIALIZEDEVENT64;") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | cpp_quote("#if 0") | 
|  | typedef [restricted, hidden] struct SPEVENTEX { | 
|  | WORD eEventId; | 
|  | WORD elParamType; | 
|  | ULONG ulStreamNum; | 
|  | ULONGLONG ullAudioStreamOffset; | 
|  | WPARAM wParam; | 
|  | LPARAM lParam; | 
|  | ULONGLONG ullAudioTimeOffset; | 
|  | } SPEVENTEX; | 
|  | cpp_quote("#else") | 
|  | cpp_quote("typedef struct SPEVENTEX {") | 
|  | cpp_quote("  SPEVENTENUM eEventId : 16;") | 
|  | cpp_quote("  SPEVENTLPARAMTYPE elParamType : 16;") | 
|  | cpp_quote("  ULONG ulStreamNum;") | 
|  | cpp_quote("  ULONGLONG ullAudioStreamOffset;") | 
|  | cpp_quote("  WPARAM wParam;") | 
|  | cpp_quote("  LPARAM lParam;") | 
|  | cpp_quote("  ULONGLONG ullAudioTimeOffset;") | 
|  | cpp_quote("} SPEVENTEX;") | 
|  | cpp_quote("#endif") | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPEVENTSOURCEINFO { | 
|  | ULONGLONG ullEventInterest; | 
|  | ULONGLONG ullQueuedInterest; | 
|  | ULONG ulCount; | 
|  | } SPEVENTSOURCEINFO; | 
|  |  | 
|  | [object, local, uuid (BE7A9CCE-5f9e-11d2-960f-00c04f8ee628), pointer_default (unique), restricted] | 
|  | interface ISpEventSource : ISpNotifySource { | 
|  | HRESULT SetInterest ([in] ULONGLONG ullEventInterest,[in] ULONGLONG ullQueuedInterest); | 
|  | HRESULT GetEvents ([in] ULONG ulCount,[out, size_is (ulCount)] SPEVENT *pEventArray,[out] ULONG *pulFetched); | 
|  | HRESULT GetInfo ([out] SPEVENTSOURCEINFO *pInfo); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (2373a435-6a4b-429e-A6AC-D4231A61975B), pointer_default (unique), restricted] | 
|  | interface ISpEventSource2 : ISpEventSource { | 
|  | HRESULT GetEventsEx ([in] ULONG ulCount,[out, size_is (ulCount)] SPEVENTEX *pEventArray,[out] ULONG *pulFetched); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | [object, local, uuid (BE7A9CC9-5f9e-11d2-960f-00c04f8ee628), pointer_default (unique), restricted] | 
|  | interface ISpEventSink : IUnknown { | 
|  | HRESULT AddEvents ([in] const SPEVENT *pEventArray,[in] ULONG ulCount); | 
|  | HRESULT GetEventInterest ([out] ULONGLONG *pullEventInterest); | 
|  | }; | 
|  |  | 
|  | [object, uuid (BED530BE-2606-4f4d-A1C0-54c5cda5566f), pointer_default (unique), restricted] | 
|  | interface ISpStreamFormat : IStream { | 
|  | HRESULT GetFormat ([in] GUID *pguidFormatId,[out] WAVEFORMATEX **ppCoMemWaveFormatEx); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (12e3cca9-7518-44c5-A5E7-BA5A79CB929E), pointer_default (unique), restricted] | 
|  | interface ISpStream : ISpStreamFormat { | 
|  | HRESULT SetBaseStream ([in] IStream *pStream,[in] REFGUID rguidFormat,[in] const WAVEFORMATEX *pWaveFormatEx); | 
|  | HRESULT GetBaseStream ([out] IStream **ppStream); | 
|  | HRESULT BindToFile ([in] LPCWSTR pszFileName,[in] SPFILEMODE eMode,[in] const GUID *pFormatId, const WAVEFORMATEX *pWaveFormatEx,[in] ULONGLONG ullEventInterest); | 
|  | HRESULT Close (); | 
|  | } | 
|  |  | 
|  | [object, uuid (678a932c-EA71-4446-9b41-78fda6280a29), pointer_default (unique), restricted] | 
|  | interface ISpStreamFormatConverter : ISpStreamFormat { | 
|  | HRESULT SetBaseStream ([in] ISpStreamFormat *pStream,[in] WINBOOL fSetFormatToBaseStreamFormat,[in] WINBOOL fWriteToBaseStream); | 
|  | HRESULT GetBaseStream ([out] ISpStreamFormat **ppStream); | 
|  | HRESULT SetFormat ([in] REFGUID rguidFormatIdOfConvertedStream,[in] const WAVEFORMATEX *pWaveFormatExOfConvertedStream); | 
|  | HRESULT ResetSeekPosition (); | 
|  | HRESULT ScaleConvertedToBaseOffset ([in] ULONGLONG ullOffsetConvertedStream,[out] ULONGLONG *pullOffsetBaseStream); | 
|  | HRESULT ScaleBaseToConvertedOffset ([in] ULONGLONG ullOffsetBaseStream,[out] ULONGLONG *pullOffsetConvertedStream); | 
|  | }; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPAUDIOSTATUS { | 
|  | long cbFreeBuffSpace; | 
|  | ULONG cbNonBlockingIO; | 
|  | SPAUDIOSTATE State; | 
|  | ULONGLONG CurSeekPos; | 
|  | ULONGLONG CurDevicePos; | 
|  | DWORD dwAudioLevel; | 
|  | DWORD dwReserved2; | 
|  | } SPAUDIOSTATUS; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPAUDIOBUFFERINFO { | 
|  | ULONG ulMsMinNotification; | 
|  | ULONG ulMsBufferSize; | 
|  | ULONG ulMsEventBias; | 
|  | } SPAUDIOBUFFERINFO; | 
|  |  | 
|  | [object, local, uuid (C05C768F-FAE8-4ec2-8e07-338321c12452), pointer_default (unique), restricted] | 
|  | interface ISpAudio : ISpStreamFormat { | 
|  | HRESULT SetState ([in] SPAUDIOSTATE NewState,[in] ULONGLONG ullReserved); | 
|  | HRESULT SetFormat ([in] REFGUID rguidFmtId,[in] const WAVEFORMATEX *pWaveFormatEx); | 
|  | HRESULT GetStatus ([out] SPAUDIOSTATUS *pStatus); | 
|  | HRESULT SetBufferInfo ([in] const SPAUDIOBUFFERINFO *pBuffInfo); | 
|  | HRESULT GetBufferInfo ([out] SPAUDIOBUFFERINFO *pBuffInfo); | 
|  | HRESULT GetDefaultFormat ([out] GUID *pFormatId,[out] WAVEFORMATEX **ppCoMemWaveFormatEx); | 
|  | HANDLE EventHandle (); | 
|  | HRESULT GetVolumeLevel ([out] ULONG *pLevel); | 
|  | HRESULT SetVolumeLevel ([in] ULONG Level); | 
|  | HRESULT GetBufferNotifySize ([out] ULONG *pcbSize); | 
|  | HRESULT SetBufferNotifySize ([in] ULONG cbSize); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (15806f6e-1d70-4b48-98e6-3b1a007509ab), pointer_default (unique), restricted] | 
|  | interface ISpMMSysAudio : ISpAudio { | 
|  | HRESULT GetDeviceId ([out] UINT *puDeviceId); | 
|  | HRESULT SetDeviceId ([in] UINT uDeviceId); | 
|  | HRESULT GetMMHandle ([out] void **pHandle); | 
|  | HRESULT GetLineId ([out] UINT *puLineId); | 
|  | HRESULT SetLineId ([in] UINT uLineId); | 
|  | }; | 
|  |  | 
|  | [object, uuid (10f63bce-201a-11d3-AC70-00c04f8ee6c0), pointer_default (unique), restricted] | 
|  | interface ISpTranscript : IUnknown { | 
|  | HRESULT GetTranscript ([out, string] LPWSTR *ppszTranscript); | 
|  | HRESULT AppendTranscript ([in, string] LPCWSTR pszTranscript); | 
|  | }; | 
|  |  | 
|  | typedef WCHAR SPPHONEID; | 
|  | typedef LPWSTR PSPPHONEID; | 
|  | typedef LPCWSTR PCSPPHONEID; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPPHRASEELEMENT { | 
|  | ULONG ulAudioTimeOffset; | 
|  | ULONG ulAudioSizeTime; | 
|  | ULONG ulAudioStreamOffset; | 
|  | ULONG ulAudioSizeBytes; | 
|  | ULONG ulRetainedStreamOffset; | 
|  | ULONG ulRetainedSizeBytes; | 
|  | LPCWSTR pszDisplayText; | 
|  | LPCWSTR pszLexicalForm; | 
|  | const SPPHONEID *pszPronunciation; | 
|  | BYTE bDisplayAttributes; | 
|  | signed char RequiredConfidence; | 
|  | signed char ActualConfidence; | 
|  | BYTE Reserved; | 
|  | float SREngineConfidence; | 
|  | } SPPHRASEELEMENT; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPPHRASERULE SPPHRASERULE; | 
|  | typedef [restricted, hidden] struct SPPHRASEPROPERTY SPPHRASEPROPERTY; | 
|  |  | 
|  | struct SPPHRASERULE { | 
|  | LPCWSTR pszName; | 
|  | ULONG ulId; | 
|  | ULONG ulFirstElement; | 
|  | ULONG ulCountOfElements; | 
|  | const SPPHRASERULE *pNextSibling; | 
|  | const SPPHRASERULE *pFirstChild; | 
|  | float SREngineConfidence; | 
|  | signed char Confidence; | 
|  | }; | 
|  |  | 
|  | struct SPPHRASEPROPERTY { | 
|  | LPCWSTR pszName; | 
|  | union { | 
|  | ULONG ulId; | 
|  | struct { | 
|  | byte bType; | 
|  | byte bReserved; | 
|  | unsigned short usArrayIndex; | 
|  | }; | 
|  | }; | 
|  | LPCWSTR pszValue; | 
|  | VARIANT vValue; | 
|  | ULONG ulFirstElement; | 
|  | ULONG ulCountOfElements; | 
|  | const SPPHRASEPROPERTY *pNextSibling; | 
|  | const SPPHRASEPROPERTY *pFirstChild; | 
|  | float SREngineConfidence; | 
|  | signed char Confidence; | 
|  | }; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPPHRASEREPLACEMENT { | 
|  | BYTE bDisplayAttributes; | 
|  | LPCWSTR pszReplacementText; | 
|  | ULONG ulFirstElement; | 
|  | ULONG ulCountOfElements; | 
|  | } SPPHRASEREPLACEMENT; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [restricted, hidden] struct SPSEMANTICERRORINFO { | 
|  | ULONG ulLineNumber; | 
|  | LPWSTR pszScriptLine; | 
|  | LPWSTR pszSource; | 
|  | LPWSTR pszDescription; | 
|  | HRESULT hrResultCode; | 
|  | } SPSEMANTICERRORINFO; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [restricted, hidden] struct SPPHRASE_50 | 
|  | #else | 
|  | typedef [restricted, hidden] struct SPPHRASE | 
|  | #endif | 
|  | { | 
|  | ULONG cbSize; | 
|  | LANGID LangID; | 
|  | WORD wHomophoneGroupId; | 
|  | ULONGLONG ullGrammarID; | 
|  | ULONGLONG ftStartTime; | 
|  | ULONGLONG ullAudioStreamPosition; | 
|  | ULONG ulAudioSizeBytes; | 
|  | ULONG ulRetainedSizeBytes; | 
|  | ULONG ulAudioSizeTime; | 
|  | SPPHRASERULE Rule; | 
|  | const SPPHRASEPROPERTY *pProperties; | 
|  | const SPPHRASEELEMENT *pElements; | 
|  | ULONG cReplacements; | 
|  | const SPPHRASEREPLACEMENT *pReplacements; | 
|  | GUID SREngineID; | 
|  | ULONG ulSREnginePrivateDataSize; | 
|  | const BYTE *pSREnginePrivateData; | 
|  | } | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPPHRASE_50; | 
|  | #else | 
|  | SPPHRASE; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | cpp_quote("#define SP_SPPHRASESIZE_500 sizeof (SPPHRASE_50)") | 
|  |  | 
|  | cpp_quote("#ifdef __cplusplus") | 
|  | #if _SAPI_BLD_ > 0x53 | 
|  | cpp_quote("typedef struct SPPHRASE_53 : public SPPHRASE_50 {") | 
|  | #else | 
|  | cpp_quote("typedef struct SPPHRASE : public SPPHRASE_50 {") | 
|  | #endif | 
|  | cpp_quote("  LPWSTR pSML;") | 
|  | cpp_quote("  SPSEMANTICERRORINFO* pSemanticErrorInfo;") | 
|  | #if _SAPI_BLD_ > 0x53 | 
|  | cpp_quote("} SPPHRASE_53;") | 
|  | #else | 
|  | cpp_quote("} SPPHRASE;") | 
|  | #endif | 
|  | cpp_quote("#else") | 
|  | #if _SAPI_BLD_ > 0x53 | 
|  | typedef [restricted, hidden] struct SPPHRASE_53 | 
|  | #else | 
|  | typedef [restricted, hidden] struct SPPHRASE | 
|  | #endif | 
|  | { | 
|  | ULONG cbSize; | 
|  | LANGID LangID; | 
|  | WORD wHomophoneGroupId; | 
|  | ULONGLONG ullGrammarID; | 
|  | ULONGLONG ftStartTime; | 
|  | ULONGLONG ullAudioStreamPosition; | 
|  | ULONG ulAudioSizeBytes; | 
|  | ULONG ulRetainedSizeBytes; | 
|  | ULONG ulAudioSizeTime; | 
|  | SPPHRASERULE Rule; | 
|  | const SPPHRASEPROPERTY *pProperties; | 
|  | const SPPHRASEELEMENT *pElements; | 
|  | ULONG cReplacements; | 
|  | const SPPHRASEREPLACEMENT *pReplacements; | 
|  | GUID SREngineID; | 
|  | ULONG ulSREnginePrivateDataSize; | 
|  | const BYTE *pSREnginePrivateData; | 
|  | LPWSTR pSML; | 
|  | SPSEMANTICERRORINFO *pSemanticErrorInfo; | 
|  | } | 
|  | #if _SAPI_BLD_ > 0x53 | 
|  | SPPHRASE_53; | 
|  | #else | 
|  | SPPHRASE; | 
|  | #endif | 
|  | cpp_quote("#endif") | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | cpp_quote("#define SP_SPPHRASESIZE_530 sizeof (SPPHRASE_53)") | 
|  |  | 
|  | cpp_quote("#ifdef __cplusplus") | 
|  | cpp_quote("typedef struct SPPHRASE : public SPPHRASE_53 {") | 
|  | cpp_quote("  SPSEMANTICFORMAT SemanticTagFormat;") | 
|  | cpp_quote("} SPPHRASE;") | 
|  | cpp_quote("#else") | 
|  | typedef [restricted, hidden] struct SPPHRASE { | 
|  | ULONG cbSize; | 
|  | LANGID LangID; | 
|  | WORD wHomophoneGroupId; | 
|  | ULONGLONG ullGrammarID; | 
|  | ULONGLONG ftStartTime; | 
|  | ULONGLONG ullAudioStreamPosition; | 
|  | ULONG ulAudioSizeBytes; | 
|  | ULONG ulRetainedSizeBytes; | 
|  | ULONG ulAudioSizeTime; | 
|  | SPPHRASERULE Rule; | 
|  | const SPPHRASEPROPERTY *pProperties; | 
|  | const SPPHRASEELEMENT *pElements; | 
|  | ULONG cReplacements; | 
|  | const SPPHRASEREPLACEMENT *pReplacements; | 
|  | GUID SREngineID; | 
|  | ULONG ulSREnginePrivateDataSize; | 
|  | const BYTE *pSREnginePrivateData; | 
|  | LPWSTR pSML; | 
|  | SPSEMANTICERRORINFO *pSemanticErrorInfo; | 
|  | SPSEMANTICFORMAT SemanticTagFormat; | 
|  | } SPPHRASE; | 
|  | cpp_quote("#endif") | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPSERIALIZEDPHRASE { | 
|  | ULONG ulSerializedSize; | 
|  | } SPSERIALIZEDPHRASE; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [restricted, hidden] struct SPRULE { | 
|  | LPCWSTR pszRuleName; | 
|  | ULONG ulRuleId; | 
|  | DWORD dwAttributes; | 
|  | } SPRULE; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] struct SPBINARYGRAMMAR { | 
|  | ULONG ulTotalSerializedSize; | 
|  | } SPBINARYGRAMMAR; | 
|  |  | 
|  | cpp_quote("#if 0") | 
|  | typedef void *SPSTATEHANDLE; | 
|  | cpp_quote("#else") | 
|  | cpp_quote("DECLARE_HANDLE(SPSTATEHANDLE);") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | typedef [restricted, hidden] struct SPWORDPRONUNCIATION { | 
|  | struct SPWORDPRONUNCIATION *pNextWordPronunciation; | 
|  | SPLEXICONTYPE eLexiconType; | 
|  | LANGID LangID; | 
|  | WORD wPronunciationFlags; | 
|  | SPPARTOFSPEECH ePartOfSpeech; | 
|  | SPPHONEID szPronunciation[1]; | 
|  | } SPWORDPRONUNCIATION; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPWORDPRONUNCIATIONLIST { | 
|  | ULONG ulSize; | 
|  | BYTE *pvBuffer; | 
|  | SPWORDPRONUNCIATION *pFirstWordPronunciation; | 
|  | } SPWORDPRONUNCIATIONLIST; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPWORD { | 
|  | struct SPWORD *pNextWord; | 
|  | LANGID LangID; | 
|  | WORD wReserved; | 
|  | SPWORDTYPE eWordType; | 
|  | LPWSTR pszWord; | 
|  | SPWORDPRONUNCIATION *pFirstWordPronunciation; | 
|  | } SPWORD; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPWORDLIST { | 
|  | ULONG ulSize; | 
|  | BYTE *pvBuffer; | 
|  | SPWORD *pFirstWord; | 
|  | } SPWORDLIST; | 
|  |  | 
|  | [object, local, uuid (DA41A7C2-5383-4db2-916b-6c1719e3db58), pointer_default (unique), restricted] | 
|  | interface ISpLexicon : IUnknown { | 
|  | HRESULT GetPronunciations ([in] LPCWSTR pszWord,[in] LANGID LangID,[in] DWORD dwFlags,[in, out] SPWORDPRONUNCIATIONLIST *pWordPronunciationList); | 
|  | HRESULT AddPronunciation ([in] LPCWSTR pszWord,[in] LANGID LangID,[in] SPPARTOFSPEECH ePartOfSpeech,[in] PCSPPHONEID pszPronunciation); | 
|  | HRESULT RemovePronunciation ([in] LPCWSTR pszWord,[in] LANGID LangID,[in] SPPARTOFSPEECH ePartOfSpeech,[in] PCSPPHONEID pszPronunciation); | 
|  | HRESULT GetGeneration ([out] DWORD *pdwGeneration); | 
|  | HRESULT GetGenerationChange ([in] DWORD dwFlags,[in, out] DWORD *pdwGeneration,[in, out] SPWORDLIST *pWordList); | 
|  | HRESULT GetWords ([in] DWORD dwFlags,[in, out] DWORD *pdwGeneration,[in, out] DWORD *pdwCookie,[in, out] SPWORDLIST *pWordList); | 
|  | }; | 
|  |  | 
|  | [object, uuid (8565572f-C094-41cc-B56E-10bd9c3ff044), pointer_default (unique), restricted] | 
|  | interface ISpContainerLexicon : ISpLexicon { | 
|  | HRESULT AddLexicon ([in] ISpLexicon *pAddLexicon,[in] DWORD dwFlags); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [restricted, hidden] struct SPSHORTCUTPAIR { | 
|  | struct SPSHORTCUTPAIR *pNextSHORTCUTPAIR; | 
|  | LANGID LangID; | 
|  | SPSHORTCUTTYPE shType; | 
|  | LPWSTR pszDisplay; | 
|  | LPWSTR pszSpoken; | 
|  | } SPSHORTCUTPAIR; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPSHORTCUTPAIRLIST { | 
|  | ULONG ulSize; | 
|  | BYTE *pvBuffer; | 
|  | SPSHORTCUTPAIR *pFirstShortcutPair; | 
|  | } SPSHORTCUTPAIRLIST; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, uuid (3df681e2-EA56-11d9-8bde-F66BAD1E3F3A), pointer_default (unique), restricted] | 
|  | interface ISpShortcut : IUnknown { | 
|  | HRESULT AddShortcut ([in] LPCWSTR pszDisplay,[in] LANGID LangID,[in] LPCWSTR pszSpoken,[in] SPSHORTCUTTYPE shType); | 
|  | HRESULT RemoveShortcut ([in] LPCWSTR pszDisplay,[in] LANGID LangID,[in] LPCWSTR pszSpoken,[in] SPSHORTCUTTYPE shType); | 
|  | HRESULT GetShortcuts ([in] LANGID LangID,[in, out] SPSHORTCUTPAIRLIST *pShortcutpairList); | 
|  | HRESULT GetGeneration ([out] DWORD *pdwGeneration); | 
|  | HRESULT GetWordsFromGenerationChange ([in, out] DWORD *pdwGeneration,[in, out] SPWORDLIST *pWordList); | 
|  | HRESULT GetWords ([in, out] DWORD *pdwGeneration,[in, out] DWORD *pdwCookie,[in, out] SPWORDLIST *pWordList); | 
|  | HRESULT GetShortcutsForGeneration ([in, out] DWORD *pdwGeneration,[in, out] DWORD *pdwCookie,[in, out] SPSHORTCUTPAIRLIST *pShortcutpairList); | 
|  | HRESULT GetGenerationChange ([in, out] DWORD *pdwGeneration,[in, out] SPSHORTCUTPAIRLIST *pShortcutpairList); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | [object, uuid (8445c581-0cac-4a38-ABFE-9b2ce2826455), pointer_default (unique), restricted] | 
|  | interface ISpPhoneConverter : ISpObjectWithToken { | 
|  | HRESULT PhoneToId ([in] LPCWSTR pszPhone,[out] SPPHONEID *pId); | 
|  | HRESULT IdToPhone ([in] PCSPPHONEID pId,[out] WCHAR *pszPhone); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (133adcd4-19b4-4020-9fdc-842e78253b17), pointer_default (unique), restricted] | 
|  | interface ISpPhoneticAlphabetConverter : IUnknown { | 
|  | HRESULT GetLangId ([out] LANGID *pLangID); | 
|  | HRESULT SetLangId ([in] LANGID LangID); | 
|  | HRESULT SAPI2UPS ([in] const SPPHONEID *pszSAPIId,[out] SPPHONEID *pszUPSId,[in] DWORD cMaxLength); | 
|  | HRESULT UPS2SAPI ([in] const SPPHONEID *pszUPSId,[out] SPPHONEID *pszSAPIId,[in] DWORD cMaxLength); | 
|  | HRESULT GetMaxConvertLength ([in] DWORD cSrcLength,[in] WINBOOL bSAPI2UPS,[out] DWORD *pcMaxDestLength); | 
|  | }; | 
|  |  | 
|  | [object, uuid (B2745EFD-42ce-48ca-81f1-A96E02538A90), pointer_default (unique), restricted] | 
|  | interface ISpPhoneticAlphabetSelection : IUnknown { | 
|  | HRESULT IsAlphabetUPS ([out] WINBOOL *pfIsUPS); | 
|  | HRESULT SetAlphabetToUPS ([in] WINBOOL fForceUPS); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPVPITCH { | 
|  | long MiddleAdj; | 
|  | long RangeAdj; | 
|  | } SPVPITCH; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPVCONTEXT { | 
|  | LPCWSTR pCategory; | 
|  | LPCWSTR pBefore; | 
|  | LPCWSTR pAfter; | 
|  | } SPVCONTEXT; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPVSTATE { | 
|  | SPVACTIONS eAction; | 
|  | LANGID LangID; | 
|  | WORD wReserved; | 
|  | long EmphAdj; | 
|  | long RateAdj; | 
|  | ULONG Volume; | 
|  | SPVPITCH PitchAdj; | 
|  | ULONG SilenceMSecs; | 
|  | SPPHONEID *pPhoneIds; | 
|  | SPPARTOFSPEECH ePartOfSpeech; | 
|  | SPVCONTEXT Context; | 
|  | } SPVSTATE; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPVOICESTATUS { | 
|  | ULONG ulCurrentStream; | 
|  | ULONG ulLastStreamQueued; | 
|  | HRESULT hrLastResult; | 
|  | DWORD dwRunningState; | 
|  | ULONG ulInputWordPos; | 
|  | ULONG ulInputWordLen; | 
|  | ULONG ulInputSentPos; | 
|  | ULONG ulInputSentLen; | 
|  | LONG lBookmarkId; | 
|  | SPPHONEID PhonemeId; | 
|  | SPVISEMES VisemeId; | 
|  | DWORD dwReserved1; | 
|  | DWORD dwReserved2; | 
|  | } SPVOICESTATUS; | 
|  |  | 
|  | typedef [hidden] enum SPEAKFLAGS { | 
|  | SPF_DEFAULT = 0, | 
|  | SPF_ASYNC = 1, | 
|  | SPF_PURGEBEFORESPEAK = 2, | 
|  | SPF_IS_FILENAME = 4, | 
|  | SPF_IS_XML = 8, | 
|  | SPF_IS_NOT_XML = 0x10, | 
|  | SPF_PERSIST_XML = 0x20, | 
|  | SPF_NLP_SPEAK_PUNC = 0x40, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPF_PARSE_SAPI = 0x80, | 
|  | SPF_PARSE_SSML = 0x100, | 
|  | SPF_PARSE_AUTODETECT = 0, | 
|  | #endif | 
|  | SPF_NLP_MASK = (SPF_NLP_SPEAK_PUNC), | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPF_PARSE_MASK = (SPF_PARSE_SAPI | SPF_PARSE_SSML), | 
|  | SPF_VOICE_MASK = (SPF_ASYNC | SPF_PURGEBEFORESPEAK | SPF_IS_FILENAME | SPF_IS_XML | SPF_IS_NOT_XML | SPF_NLP_MASK | SPF_PERSIST_XML | SPF_PARSE_MASK), | 
|  | #else | 
|  | SPF_VOICE_MASK = (SPF_ASYNC | SPF_PURGEBEFORESPEAK | SPF_IS_FILENAME | SPF_IS_XML | SPF_IS_NOT_XML | SPF_NLP_MASK | SPF_PERSIST_XML), | 
|  | #endif | 
|  | SPF_UNUSED_FLAGS = ~ (SPF_VOICE_MASK) | 
|  | } SPEAKFLAGS; | 
|  |  | 
|  | [object, local, uuid (6c44df74-72b9-4992-A1EC-EF996E0422D4), pointer_default (unique), restricted] | 
|  | interface ISpVoice : ISpEventSource { | 
|  | HRESULT SetOutput ([in] IUnknown *pUnkOutput,[in] WINBOOL fAllowFormatChanges); | 
|  | HRESULT GetOutputObjectToken ([out] ISpObjectToken **ppObjectToken); | 
|  | HRESULT GetOutputStream ([out] ISpStreamFormat **ppStream); | 
|  | HRESULT Pause (void); | 
|  | HRESULT Resume (void); | 
|  | HRESULT SetVoice ([in] ISpObjectToken *pToken); | 
|  | HRESULT GetVoice ([out] ISpObjectToken **ppToken); | 
|  | HRESULT Speak ([in, string] LPCWSTR pwcs,[in] DWORD dwFlags,[out] ULONG *pulStreamNumber); | 
|  | HRESULT SpeakStream ([in] IStream *pStream,[in] DWORD dwFlags,[out] ULONG *pulStreamNumber); | 
|  | HRESULT GetStatus ([out] SPVOICESTATUS *pStatus,[out] LPWSTR *ppszLastBookmark); | 
|  | HRESULT Skip ([in, string] LPCWSTR pItemType,[in] long lNumItems,[out] ULONG *pulNumSkipped); | 
|  | HRESULT SetPriority ([in] SPVPRIORITY ePriority); | 
|  | HRESULT GetPriority ([out] SPVPRIORITY *pePriority); | 
|  | HRESULT SetAlertBoundary ([in] SPEVENTENUM eBoundary); | 
|  | HRESULT GetAlertBoundary ([out] SPEVENTENUM *peBoundary); | 
|  | HRESULT SetRate ([in] long RateAdjust); | 
|  | HRESULT GetRate ([out] long *pRateAdjust); | 
|  | HRESULT SetVolume ([in] USHORT usVolume); | 
|  | HRESULT GetVolume ([out] USHORT *pusVolume); | 
|  | HRESULT WaitUntilDone ([in] ULONG msTimeout); | 
|  | HRESULT SetSyncSpeakTimeout ([in] ULONG msTimeout); | 
|  | HRESULT GetSyncSpeakTimeout ([out] ULONG *pmsTimeout); | 
|  | [local] HANDLE SpeakCompleteEvent (); | 
|  | [local] HRESULT IsUISupported ([in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData,[out] WINBOOL *pfSupported); | 
|  | [local] HRESULT DisplayUI ([in] HWND hwndParent,[in] LPCWSTR pszTitle,[in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (1a5c0354-B621-4b5a-8791-D306ED379E53), pointer_default (unique), restricted] | 
|  | interface ISpPhrase : IUnknown { | 
|  | HRESULT GetPhrase ([out] SPPHRASE **ppCoMemPhrase); | 
|  | HRESULT GetSerializedPhrase ([out] SPSERIALIZEDPHRASE **ppCoMemPhrase); | 
|  | HRESULT GetText ([in] ULONG ulStart,[in] ULONG ulCount,[in] WINBOOL fUseTextReplacements,[out] LPWSTR *ppszCoMemText,[out, optional] BYTE *pbDisplayAttributes); | 
|  | HRESULT Discard ([in] DWORD dwValueTypes); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (8fcebc98-4e49-4067-9c6c-D86A0E092E3D), pointer_default (unique), restricted] | 
|  | interface ISpPhraseAlt : ISpPhrase { | 
|  | HRESULT GetAltInfo ([out] ISpPhrase **ppParent,[out] ULONG *pulStartElementInParent,[out] ULONG *pcElementsInParent,[out] ULONG *pcElementsInAlt); | 
|  | HRESULT Commit (); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef enum SPXMLRESULTOPTIONS { | 
|  | SPXRO_SML = 0, | 
|  | SPXRO_Alternates_SML = 1 | 
|  | } SPXMLRESULTOPTIONS; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (F264DA52-E457-4696-B856-A737B717AF79), pointer_default (unique), restricted] | 
|  | interface ISpPhrase2 : ISpPhrase { | 
|  | HRESULT GetXMLResult ([out] LPWSTR *ppszCoMemXMLResult,[in] SPXMLRESULTOPTIONS Options); | 
|  | HRESULT GetXMLErrorInfo ([out] SPSEMANTICERRORINFO *pSemanticErrorInfo); | 
|  | HRESULT GetAudio ([in] ULONG ulStartElement,[in] ULONG cElements,[out] ISpStreamFormat **ppStream); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPRECORESULTTIMES { | 
|  | FILETIME ftStreamTime; | 
|  | ULONGLONG ullLength; | 
|  | DWORD dwTickCount; | 
|  | ULONGLONG ullStart; | 
|  | } SPRECORESULTTIMES; | 
|  |  | 
|  | typedef [hidden] struct SPSERIALIZEDRESULT { | 
|  | ULONG ulSerializedSize; | 
|  | } SPSERIALIZEDRESULT; | 
|  |  | 
|  | [object, local, uuid (20b053be-E235-43cd-9a2a-8d17a48b7842), pointer_default (unique), restricted] | 
|  | interface ISpRecoResult : ISpPhrase { | 
|  | HRESULT GetResultTimes ([out] SPRECORESULTTIMES *pTimes); | 
|  | HRESULT GetAlternates ([in] ULONG ulStartElement,[in] ULONG cElements,[in] ULONG ulRequestCount,[out] ISpPhraseAlt **ppPhrases,[out] ULONG *pcPhrasesReturned); | 
|  | HRESULT GetAudio ([in] ULONG ulStartElement,[in] ULONG cElements,[out] ISpStreamFormat **ppStream); | 
|  | HRESULT SpeakAudio ([in] ULONG ulStartElement,[in] ULONG cElements,[in] DWORD dwFlags,[out] ULONG *pulStreamNumber); | 
|  | HRESULT Serialize ([out] SPSERIALIZEDRESULT **ppCoMemSerializedResult); | 
|  | HRESULT ScaleAudio ([in] const GUID *pAudioFormatId,[in] const WAVEFORMATEX *pWaveFormatEx); | 
|  | HRESULT GetRecoContext ([out] ISpRecoContext **ppRecoContext); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [hidden] enum SPCOMMITFLAGS { | 
|  | SPCF_NONE = 0, | 
|  | SPCF_ADD_TO_USER_LEXICON = (1 << 0), | 
|  | SPCF_DEFINITE_CORRECTION = (1 << 1) | 
|  | } SPCOMMITFLAGS; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (27cac6c4-88f2-41f2-8817-0c95e59f1e6e), pointer_default (unique), restricted] | 
|  | interface ISpRecoResult2 : ISpRecoResult { | 
|  | HRESULT CommitAlternate ([in] ISpPhraseAlt *pPhraseAlt,[out] ISpRecoResult **ppNewResult); | 
|  | HRESULT CommitText ([in] ULONG ulStartElement,[in] ULONG cElements,[in] LPCWSTR pszCorrectedData,[in] DWORD eCommitFlags); | 
|  | HRESULT SetTextFeedback ([in, string] LPCWSTR pszFeedback,[in] WINBOOL fSuccessful); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (AE39362B-45a8-4074-9b9e-CCF49AA2D0B6), pointer_default (unique), restricted] | 
|  | interface ISpXMLRecoResult : ISpRecoResult { | 
|  | HRESULT GetXMLResult ([out] LPWSTR *ppszCoMemXMLResult,[in] SPXMLRESULTOPTIONS Options); | 
|  | HRESULT GetXMLErrorInfo ([out] SPSEMANTICERRORINFO *pSemanticErrorInfo); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] struct tagSPTEXTSELECTIONINFO { | 
|  | ULONG ulStartActiveOffset; | 
|  | ULONG cchActiveChars; | 
|  | ULONG ulStartSelection; | 
|  | ULONG cchSelection; | 
|  | } SPTEXTSELECTIONINFO; | 
|  |  | 
|  | typedef [hidden] enum SPWORDPRONOUNCEABLE { | 
|  | SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE = 0, | 
|  | SPWP_UNKNOWN_WORD_PRONOUNCEABLE = 1, | 
|  | SPWP_KNOWN_WORD_PRONOUNCEABLE = 2 | 
|  | } SPWORDPRONOUNCEABLE; | 
|  |  | 
|  | typedef [hidden] enum SPGRAMMARSTATE { | 
|  | SPGS_DISABLED = 0, | 
|  | SPGS_ENABLED = 1, | 
|  | SPGS_EXCLUSIVE = 3 | 
|  | } SPGRAMMARSTATE; | 
|  |  | 
|  | typedef [hidden] enum SPCONTEXTSTATE { | 
|  | SPCS_DISABLED = 0, | 
|  | SPCS_ENABLED = 1, | 
|  | } SPCONTEXTSTATE; | 
|  |  | 
|  | typedef [hidden] enum SPRULESTATE { | 
|  | SPRS_INACTIVE = 0, | 
|  | SPRS_ACTIVE = 1, | 
|  | SPRS_ACTIVE_WITH_AUTO_PAUSE = 3 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPRS_ACTIVE_USER_DELIMITED = 4 | 
|  | #endif | 
|  | } SPRULESTATE; | 
|  |  | 
|  | const ULONGLONG SP_STREAMPOS_ASAP = 0; | 
|  | const ULONGLONG SP_STREAMPOS_REALTIME = -1; | 
|  |  | 
|  | cpp_quote("#define SPRULETRANS_TEXTBUFFER (SPSTATEHANDLE) (-1)") | 
|  | cpp_quote("#define SPRULETRANS_WILDCARD (SPSTATEHANDLE) (-2)") | 
|  | cpp_quote("#define SPRULETRANS_DICTATION (SPSTATEHANDLE) (-3)") | 
|  |  | 
|  | typedef [hidden] enum SPGRAMMARWORDTYPE { | 
|  | SPWT_DISPLAY, | 
|  | SPWT_LEXICAL, | 
|  | SPWT_PRONUNCIATION | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPWT_LEXICAL_NO_SPECIAL_CHARS | 
|  | #endif | 
|  | } SPGRAMMARWORDTYPE; | 
|  |  | 
|  | typedef [hidden] struct tagSPPROPERTYINFO { | 
|  | LPCWSTR pszName; | 
|  | ULONG ulId; | 
|  | LPCWSTR pszValue; | 
|  | VARIANT vValue; | 
|  | } SPPROPERTYINFO; | 
|  |  | 
|  | typedef [hidden] enum SPCFGRULEATTRIBUTES { | 
|  | SPRAF_TopLevel = 0x1, | 
|  | SPRAF_Active = 0x2, | 
|  | SPRAF_Export = 0x4, | 
|  | SPRAF_Import = 0x8, | 
|  | SPRAF_Interpreter = 0x10, | 
|  | SPRAF_Dynamic = 0x20, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPRAF_Root = 0x40, | 
|  | #endif | 
|  | SPRAF_AutoPause = 0x10000 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPRAF_UserDelimited = 0x20000 | 
|  | #endif | 
|  | } SPCFGRULEATTRIBUTES; | 
|  |  | 
|  | [object, local, uuid (8137828f-591a-4a42-BE58-49ea7ebaac68), pointer_default (unique), restricted] | 
|  | interface ISpGrammarBuilder : IUnknown { | 
|  | HRESULT ResetGrammar ([in] LANGID NewLanguage); | 
|  | HRESULT GetRule ([in] LPCWSTR pszRuleName,[in] DWORD dwRuleId,[in] DWORD dwAttributes,[in] WINBOOL fCreateIfNotExist,[out] SPSTATEHANDLE *phInitialState); | 
|  | HRESULT ClearRule ([in] SPSTATEHANDLE hState); | 
|  | HRESULT CreateNewState ([in] SPSTATEHANDLE hState,[out] SPSTATEHANDLE *phState); | 
|  | HRESULT AddWordTransition ([in] SPSTATEHANDLE hFromState,[in] SPSTATEHANDLE hToState,[in] LPCWSTR psz,[in] LPCWSTR pszSeparators,[in] SPGRAMMARWORDTYPE eWordType,[in] float Weight,[in] const SPPROPERTYINFO *pPropInfo); | 
|  | HRESULT AddRuleTransition ([in] SPSTATEHANDLE hFromState,[in] SPSTATEHANDLE hToState,[in] SPSTATEHANDLE hRule,[in] float Weight,[in] const SPPROPERTYINFO *pPropInfo); | 
|  | HRESULT AddResource ([in] SPSTATEHANDLE hRuleState,[in] LPCWSTR pszResourceName,[in] LPCWSTR pszResourceValue); | 
|  | HRESULT Commit ([in] DWORD dwReserved); | 
|  | }; | 
|  |  | 
|  | typedef [hidden] enum SPLOADOPTIONS { | 
|  | SPLO_STATIC = 0, | 
|  | SPLO_DYNAMIC = 1 | 
|  | } SPLOADOPTIONS; | 
|  |  | 
|  | [object, local, uuid (2177db29-7f45-47d0-8554-067e91c80502), pointer_default (unique), restricted] | 
|  | interface ISpRecoGrammar : ISpGrammarBuilder { | 
|  | HRESULT GetGrammarId ([out] ULONGLONG *pullGrammarId); | 
|  | HRESULT GetRecoContext ([out] ISpRecoContext **ppRecoCtxt); | 
|  | HRESULT LoadCmdFromFile ([in, string] LPCWSTR pszFileName,[in] SPLOADOPTIONS Options); | 
|  | HRESULT LoadCmdFromObject ([in] REFCLSID rcid,[in, string] LPCWSTR pszGrammarName,[in] SPLOADOPTIONS Options); | 
|  | HRESULT LoadCmdFromResource ([in] HMODULE hModule,[in, string] LPCWSTR pszResourceName,[in, string] LPCWSTR pszResourceType,[in] WORD wLanguage,[in] SPLOADOPTIONS Options); | 
|  | HRESULT LoadCmdFromMemory ([in] const SPBINARYGRAMMAR *pGrammar,[in] SPLOADOPTIONS Options); | 
|  | HRESULT LoadCmdFromProprietaryGrammar ([in] REFGUID rguidParam,[in, string] LPCWSTR pszStringParam,[in] const void *pvDataPrarm,[in] ULONG cbDataSize,[in] SPLOADOPTIONS Options); | 
|  | HRESULT SetRuleState ([in, string] LPCWSTR pszName,[in] void *pReserved,[in] SPRULESTATE NewState); | 
|  | HRESULT SetRuleIdState ([in] ULONG ulRuleId,[in] SPRULESTATE NewState); | 
|  | HRESULT LoadDictation ([in, string] LPCWSTR pszTopicName,[in] SPLOADOPTIONS Options); | 
|  | HRESULT UnloadDictation (); | 
|  | HRESULT SetDictationState ([in] SPRULESTATE NewState); | 
|  | HRESULT SetWordSequenceData ([in] const WCHAR *pText,[in] ULONG cchText,[in] const SPTEXTSELECTIONINFO *pInfo); | 
|  | HRESULT SetTextSelection ([in] const SPTEXTSELECTIONINFO *pInfo); | 
|  | HRESULT IsPronounceable ([in, string] LPCWSTR pszWord,[out] SPWORDPRONOUNCEABLE *pWordPronounceable); | 
|  | HRESULT SetGrammarState ([in] SPGRAMMARSTATE eGrammarState); | 
|  | HRESULT SaveCmd ([in] IStream *pStream,[out, optional] LPWSTR *ppszCoMemErrorText); | 
|  | HRESULT GetGrammarState ([out] SPGRAMMARSTATE *peGrammarState); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef enum SPMATCHINGMODE { | 
|  | AllWords = 0, | 
|  | Subsequence = 1, | 
|  | OrderedSubset = 3, | 
|  | SubsequenceContentRequired = 5, | 
|  | OrderedSubsetContentRequired = 7 | 
|  | } SPMATCHINGMODE; | 
|  |  | 
|  | typedef enum PHONETICALPHABET { | 
|  | PA_Ipa = 0, | 
|  | PA_Ups = 1, | 
|  | PA_Sapi = 2, | 
|  | } PHONETICALPHABET; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (8ab10026-20cc-4b20-8c22-A49C9BA78F60), pointer_default (unique), restricted] | 
|  | interface ISpGrammarBuilder2 : IUnknown { | 
|  | HRESULT AddTextSubset ([in] SPSTATEHANDLE hFromState,[in] SPSTATEHANDLE hToState,[in] LPCWSTR psz,[in] SPMATCHINGMODE eMatchMode); | 
|  | HRESULT SetPhoneticAlphabet ([in] PHONETICALPHABET phoneticALphabet); | 
|  | } | 
|  |  | 
|  | cpp_quote("#define SPRP_NORMAL 0") | 
|  |  | 
|  | [object, local, uuid (4b37bc9e-9ed6-44a3-93d3-18f022b79ec3), pointer_default (unique), restricted] | 
|  | interface ISpRecoGrammar2 : IUnknown { | 
|  | HRESULT GetRules ([out] SPRULE **ppCoMemRules,[out] UINT *puNumRules); | 
|  | HRESULT LoadCmdFromFile2 ([in, string] LPCWSTR pszFileName,[in] SPLOADOPTIONS Options,[in, string] LPCWSTR pszSharingUri,[in, string] LPCWSTR pszBaseUri); | 
|  | HRESULT LoadCmdFromMemory2 ([in] const SPBINARYGRAMMAR *pGrammar,[in] SPLOADOPTIONS Options,[in, string] LPCWSTR pszSharingUri,[in, string] LPCWSTR pszBaseUri); | 
|  | HRESULT SetRulePriority ([in, string] LPCWSTR pszRuleName,[in] ULONG ulRuleId,[in] int nRulePriority); | 
|  | HRESULT SetRuleWeight ([in, string] LPCWSTR pszRuleName,[in] ULONG ulRuleId,[in] float flWeight); | 
|  | HRESULT SetDictationWeight ([in] float flWeight); | 
|  | HRESULT SetGrammarLoader ([in] ISpeechResourceLoader *pLoader); | 
|  | HRESULT SetSMLSecurityManager ([in] IInternetSecurityManager *pSMLSecurityManager); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (B9AC5783-FCD0-4b21-B119-B4F8DA8FD2C3), pointer_default (unique), dual] | 
|  | interface ISpeechResourceLoader : IDispatch { | 
|  | [id (1)] HRESULT LoadResource ([in] BSTR bstrResourceUri,[in] VARIANT_BOOL fAlwaysReload,[out] IUnknown **pStream,[out] BSTR *pbstrMIMEType,[out] VARIANT_BOOL *pfModified,[out] BSTR *pbstrRedirectUrl); | 
|  | [id (2)] HRESULT GetLocalCopy ([in] BSTR bstrResourceUri,[out] BSTR *pbstrLocalPath,[out] BSTR *pbstrMIMEType,[out] BSTR *pbstrRedirectUrl); | 
|  | [id (3)] HRESULT ReleaseLocalCopy ([in] BSTR pbstrLocalPath); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPRECOCONTEXTSTATUS { | 
|  | SPINTERFERENCE eInterference; | 
|  | WCHAR szRequestTypeOfUI[255]; | 
|  | DWORD dwReserved1; | 
|  | DWORD dwReserved2; | 
|  | } SPRECOCONTEXTSTATUS; | 
|  |  | 
|  | typedef [hidden] enum SPBOOKMARKOPTIONS { | 
|  | SPBO_NONE = 0, | 
|  | SPBO_PAUSE = 0x1 | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | , SPBO_AHEAD = 0x2, | 
|  | SPBO_TIME_UNITS = 0x4 | 
|  | #endif | 
|  | } SPBOOKMARKOPTIONS; | 
|  |  | 
|  | typedef [hidden] enum SPAUDIOOPTIONS { | 
|  | SPAO_NONE = 0, | 
|  | SPAO_RETAIN_AUDIO = 0x1 | 
|  | } SPAUDIOOPTIONS; | 
|  |  | 
|  | [object, local, uuid (F740A62F-7c15-489e-8234-940a33d9272d), pointer_default (unique), restricted] | 
|  | interface ISpRecoContext : ISpEventSource { | 
|  | HRESULT GetRecognizer ([out] ISpRecognizer **ppRecognizer); | 
|  | HRESULT CreateGrammar ([in] ULONGLONG ullGrammarId,[out] ISpRecoGrammar **ppGrammar); | 
|  | HRESULT GetStatus ([out] SPRECOCONTEXTSTATUS *pStatus); | 
|  | HRESULT GetMaxAlternates ([in] ULONG *pcAlternates); | 
|  | HRESULT SetMaxAlternates ([in] ULONG cAlternates); | 
|  | HRESULT SetAudioOptions ([in] SPAUDIOOPTIONS Options,[in] const GUID *pAudioFormatId,[in] const WAVEFORMATEX *pWaveFormatEx); | 
|  | HRESULT GetAudioOptions ([in] SPAUDIOOPTIONS *pOptions,[out] GUID *pAudioFormatId,[out] WAVEFORMATEX **ppCoMemWFEX); | 
|  | HRESULT DeserializeResult ([in] const SPSERIALIZEDRESULT *pSerializedResult,[out] ISpRecoResult **ppResult); | 
|  | HRESULT Bookmark ([in] SPBOOKMARKOPTIONS Options,[in] ULONGLONG ullStreamPosition,[in] LPARAM lparamEvent); | 
|  | HRESULT SetAdaptationData ([in, string] LPCWSTR pAdaptationData,[in] const ULONG cch); | 
|  | HRESULT Pause ([in] DWORD dwReserved); | 
|  | HRESULT Resume ([in] DWORD dwReserved); | 
|  | HRESULT SetVoice ([in] ISpVoice *pVoice,[in] WINBOOL fAllowFormatChanges); | 
|  | HRESULT GetVoice ([out] ISpVoice **ppVoice); | 
|  | HRESULT SetVoicePurgeEvent ([in] ULONGLONG ullEventInterest); | 
|  | HRESULT GetVoicePurgeEvent ([out] ULONGLONG *pullEventInterest); | 
|  | HRESULT SetContextState ([in] SPCONTEXTSTATE eContextState); | 
|  | HRESULT GetContextState ([out] SPCONTEXTSTATE *peContextState); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef [hidden] enum SPGRAMMAROPTIONS { | 
|  | SPGO_SAPI = 0x1, | 
|  | SPGO_SRGS = 0x2, | 
|  | SPGO_UPS = 0x4, | 
|  | SPGO_SRGS_MS_SCRIPT = 0x8, | 
|  | SPGO_FILE = 0x10, | 
|  | SPGO_HTTP = 0x20, | 
|  | SPGO_RES = 0x40, | 
|  | SPGO_OBJECT = 0x80, | 
|  | SPGO_SRGS_W3C_SCRIPT = 0x100, | 
|  | SPGO_SRGS_STG_SCRIPT = 0x200, | 
|  |  | 
|  | SPGO_SRGS_SCRIPT = SPGO_SRGS | SPGO_SRGS_MS_SCRIPT | SPGO_SRGS_W3C_SCRIPT | SPGO_SRGS_STG_SCRIPT, | 
|  | SPGO_DEFAULT = 0x03fb, | 
|  | SPGO_ALL = 0x03ff | 
|  | } SPGRAMMAROPTIONS; | 
|  |  | 
|  | typedef [hidden] enum SPADAPTATIONSETTINGS { | 
|  | SPADS_Default = 0x0, | 
|  | SPADS_CurrentRecognizer = 0x1, | 
|  | SPADS_RecoProfile = 0x2, | 
|  | SPADS_Immediate = 0x4, | 
|  | SPADS_Reset = 0x8, | 
|  | SPADS_HighVolumeDataSource = 0x10 | 
|  | } SPADAPTATIONSETTINGS; | 
|  |  | 
|  | typedef [hidden] enum SPADAPTATIONRELEVANCE { | 
|  | SPAR_Unknown = 0, | 
|  | SPAR_Low = 1, | 
|  | SPAR_Medium = 2, | 
|  | SPAR_High = 3 | 
|  | } SPADAPTATIONRELEVANCE; | 
|  | #endif | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, local, uuid (BEAD311C-52ff-437f-9464-6b21054ca73d), pointer_default (unique), restricted] | 
|  | interface ISpRecoContext2 : IUnknown { | 
|  | HRESULT SetGrammarOptions ([in] DWORD eGrammarOptions); | 
|  | HRESULT GetGrammarOptions ([out] DWORD *peGrammarOptions); | 
|  | HRESULT SetAdaptationData2 ([in] LPCWSTR pAdaptationData,[in] const ULONG cch,[in] LPCWSTR pTopicName,[in] DWORD eAdaptationSettings,[in] SPADAPTATIONRELEVANCE eRelevance); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | [object, local, uuid (5b4fb971-B115-4de1-AD97-E482E3BF6EE4), pointer_default (unique), restricted] | 
|  | interface ISpProperties : IUnknown { | 
|  | HRESULT SetPropertyNum ([in] LPCWSTR pName,[in] LONG lValue); | 
|  | HRESULT GetPropertyNum ([in] LPCWSTR pName,[out] LONG *plValue); | 
|  | HRESULT SetPropertyString ([in] LPCWSTR pName,[in] LPCWSTR pValue); | 
|  | HRESULT GetPropertyString ([in] LPCWSTR pName,[out, string] LPWSTR *ppCoMemValue); | 
|  | }; | 
|  |  | 
|  | const ULONG SP_MAX_LANGIDS = 20; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPRECOGNIZERSTATUS { | 
|  | SPAUDIOSTATUS AudioStatus; | 
|  | ULONGLONG ullRecognitionStreamPos; | 
|  | ULONG ulStreamNumber; | 
|  | ULONG ulNumActive; | 
|  | CLSID clsidEngine; | 
|  | ULONG cLangIDs; | 
|  | LANGID aLangID[SP_MAX_LANGIDS]; | 
|  | ULONGLONG ullRecognitionStreamTime; | 
|  | } SPRECOGNIZERSTATUS; | 
|  |  | 
|  | typedef [hidden] enum SPWAVEFORMATTYPE { | 
|  | SPWF_INPUT, | 
|  | SPWF_SRENGINE | 
|  | } SPSTREAMFORMATTYPE; | 
|  |  | 
|  | typedef [hidden] enum SPRECOSTATE { | 
|  | SPRST_INACTIVE, | 
|  | SPRST_ACTIVE, | 
|  | SPRST_ACTIVE_ALWAYS, | 
|  | SPRST_INACTIVE_WITH_PURGE, | 
|  | SPRST_NUM_STATES | 
|  | } SPRECOSTATE; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | typedef enum SPCATEGORYTYPE { | 
|  | SPCT_COMMAND, | 
|  | SPCT_DICTATION, | 
|  | SPCT_SLEEP, | 
|  | SPCT_SUB_COMMAND, | 
|  | SPCT_SUB_DICTATION | 
|  | } SPCATEGORYTYPE; | 
|  | #endif | 
|  |  | 
|  | [object, local, uuid (C2B5F241-DAA0-4507-9e16-5a1eaa2b7a5c), pointer_default (unique), restricted] | 
|  | interface ISpRecognizer : ISpProperties { | 
|  | HRESULT SetRecognizer ([in] ISpObjectToken *pRecognizer); | 
|  | HRESULT GetRecognizer ([out] ISpObjectToken **ppRecognizer); | 
|  | HRESULT SetInput ([in] IUnknown *pUnkInput,[in] WINBOOL fAllowFormatChanges); | 
|  | HRESULT GetInputObjectToken ([out] ISpObjectToken **ppToken); | 
|  | HRESULT GetInputStream ([out] ISpStreamFormat **ppStream); | 
|  | HRESULT CreateRecoContext ([out] ISpRecoContext **ppNewCtxt); | 
|  | HRESULT GetRecoProfile ([out] ISpObjectToken **ppToken); | 
|  | HRESULT SetRecoProfile ([in] ISpObjectToken *pToken); | 
|  | HRESULT IsSharedInstance (void); | 
|  | HRESULT GetRecoState ([out] SPRECOSTATE *pState); | 
|  | HRESULT SetRecoState ([in] SPRECOSTATE NewState); | 
|  | HRESULT GetStatus ([out] SPRECOGNIZERSTATUS *pStatus); | 
|  | HRESULT GetFormat ([in] SPSTREAMFORMATTYPE WaveFormatType,[out] GUID *pFormatId,[out] WAVEFORMATEX **ppCoMemWFEX); | 
|  | [local] HRESULT IsUISupported ([in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData,[out] WINBOOL *pfSupported); | 
|  | [local] HRESULT DisplayUI ([in] HWND hwndParent,[in] LPCWSTR pszTitle,[in] LPCWSTR pszTypeOfUI,[in] void *pvExtraData,[in] ULONG cbExtraData); | 
|  | HRESULT EmulateRecognition ([in] ISpPhrase *pPhrase); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, uuid (21b501a0-0ec7-46c9-92c3-A2BC784C54B9), pointer_default (unique), restricted] | 
|  | interface ISpSerializeState : IUnknown { | 
|  | HRESULT GetSerializedState ([out] BYTE **ppbData,[out] ULONG *pulSize,[in] DWORD dwReserved); | 
|  | HRESULT SetSerializedState ([in] BYTE *pbData,[in] ULONG ulSize,[in] DWORD dwReserved); | 
|  | }; | 
|  |  | 
|  | [object, local, uuid (8fc6d974-C81E-4098-93c5-0147f61ed4d3), pointer_default (unique), restricted] | 
|  | interface ISpRecognizer2 : IUnknown { | 
|  | HRESULT EmulateRecognitionEx ([in] ISpPhrase *pPhrase,[in] DWORD dwCompareFlags); | 
|  | HRESULT SetTrainingState ([in] WINBOOL fDoingTraining,[in] WINBOOL fAdaptFromTrainingData); | 
|  | HRESULT ResetAcousticModelAdaptation (); | 
|  | } | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | [object, local, uuid (DA0CD0F9-14a2-4f09-8c2a-85cc48979345), pointer_default (unique), restricted] | 
|  | interface ISpRecoCategory : IUnknown { | 
|  | HRESULT GetType ([out] SPCATEGORYTYPE *peCategoryType); | 
|  | } | 
|  |  | 
|  | [object, local, uuid (DF1B943C-5838-4aa2-8706-D7CD5B333499), pointer_default (unique), restricted] | 
|  | interface ISpRecognizer3 : IUnknown { | 
|  | HRESULT GetCategory ([in] SPCATEGORYTYPE categoryType,[out] ISpRecoCategory **ppCategory); | 
|  | HRESULT SetActiveCategory ([in] ISpRecoCategory *pCategory); | 
|  | HRESULT GetActiveCategory ([out] ISpRecoCategory **ppCategory); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | typedef [restricted, hidden] struct SPNORMALIZATIONLIST { | 
|  | ULONG ulSize; | 
|  | WCHAR **ppszzNormalizedList; | 
|  | } SPNORMALIZATIONLIST; | 
|  |  | 
|  | [object, local, uuid (C360CE4B-76d1-4214-AD68-52657d5083da), pointer_default (unique), restricted] | 
|  | interface ISpEnginePronunciation : IUnknown { | 
|  | HRESULT Normalize ([in, string] LPCWSTR pszWord,[in, string] LPCWSTR pszLeftContext,[in, string] LPCWSTR pszRightContext,[in] LANGID LangID,[out] SPNORMALIZATIONLIST *pNormalizationList); | 
|  | HRESULT GetPronunciations ([in, string] LPCWSTR pszWord,[in, string] LPCWSTR pszLeftContext,[in, string] LPCWSTR pszRightContext,[in] LANGID LangID,[in, out] SPWORDPRONUNCIATIONLIST *pEnginePronunciationList); | 
|  | } | 
|  |  | 
|  | typedef [restricted, hidden] struct SPDISPLAYTOKEN { | 
|  | const WCHAR *pszLexical; | 
|  | const WCHAR *pszDisplay; | 
|  | BYTE bDisplayAttributes; | 
|  | } SPDISPLAYTOKEN; | 
|  |  | 
|  | typedef [restricted, hidden] struct SPDISPLAYPHRASE { | 
|  | ULONG ulNumTokens; | 
|  | SPDISPLAYTOKEN *pTokens; | 
|  | } SPDISPLAYPHRASE; | 
|  |  | 
|  | [object, local, uuid (C8D7C7E2-0dde-44b7-AFE3-B0C991FBEB5E), pointer_default (unique)] | 
|  | interface ISpDisplayAlternates : IUnknown { | 
|  | HRESULT GetDisplayAlternates ([in] const SPDISPLAYPHRASE *pPhrase,[in] ULONG cRequestCount,[out] SPDISPLAYPHRASE **ppCoMemPhrases,[out] ULONG *pcPhrasesReturned); | 
|  | HRESULT SetFullStopTrailSpace ([in] ULONG ulTrailSpace); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | [uuid (C866CA3A-32f7-11d2-9602-00c04f8ee628), version (5.4)] | 
|  | library SpeechLib { | 
|  | importlib ("stdole32.tlb"); | 
|  | importlib ("stdole2.tlb"); | 
|  |  | 
|  | interface ISpeechDataKey; | 
|  | interface ISpeechObjectToken; | 
|  | interface ISpeechObjectTokens; | 
|  | interface ISpeechObjectTokenCategory; | 
|  | interface ISpeechAudioBufferInfo; | 
|  | interface ISpeechAudioStatus; | 
|  | interface ISpeechAudioFormat; | 
|  | interface ISpeechWaveFormatEx; | 
|  | interface ISpeechBaseStream; | 
|  | interface ISpeechFileStream; | 
|  | interface ISpeechMemoryStream; | 
|  | interface ISpeechCustomStream; | 
|  | interface ISpeechAudio; | 
|  | interface ISpeechMMSysAudio; | 
|  | interface ISpeechVoice; | 
|  | interface ISpeechVoiceStatus; | 
|  | dispinterface _ISpeechVoiceEvents; | 
|  | interface ISpeechRecognizer; | 
|  | interface ISpeechRecognizerStatus; | 
|  | interface ISpeechRecoContext; | 
|  | interface ISpeechRecoGrammar; | 
|  | dispinterface _ISpeechRecoContextEvents; | 
|  | interface ISpeechGrammarRule; | 
|  | interface ISpeechGrammarRules; | 
|  | interface ISpeechGrammarRuleState; | 
|  | interface ISpeechGrammarRuleStateTransition; | 
|  | interface ISpeechGrammarRuleStateTransitions; | 
|  | interface ISpeechTextSelectionInformation; | 
|  | interface ISpeechRecoResult; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpeechRecoResult2; | 
|  | #endif | 
|  | interface ISpeechRecoResultTimes; | 
|  | interface ISpeechPhraseAlternate; | 
|  | interface ISpeechPhraseAlternates; | 
|  | interface ISpeechPhraseInfo; | 
|  | interface ISpeechPhraseElement; | 
|  | interface ISpeechPhraseElements; | 
|  | interface ISpeechPhraseReplacement; | 
|  | interface ISpeechPhraseReplacements; | 
|  | interface ISpeechPhraseProperty; | 
|  | interface ISpeechPhraseProperties; | 
|  | interface ISpeechPhraseRule; | 
|  | interface ISpeechPhraseRules; | 
|  | interface ISpeechLexicon; | 
|  | interface ISpeechLexiconWords; | 
|  | interface ISpeechLexiconWord; | 
|  | interface ISpeechLexiconPronunciations; | 
|  | interface ISpeechLexiconPronunciation; | 
|  |  | 
|  | typedef long SpeechLanguageId; | 
|  | cpp_quote("#define __SpeechStringConstants_MODULE_DEFINED__") | 
|  | [uuid (E58442E4-0c80-402c-9559-867337a39765)] module SpeechStringConstants { | 
|  | const BSTR SpeechRegistryUserRoot = L"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech"; | 
|  | const BSTR SpeechRegistryLocalMachineRoot = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech"; | 
|  | const BSTR SpeechCategoryAudioOut = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput"; | 
|  | const BSTR SpeechCategoryAudioIn = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput"; | 
|  | const BSTR SpeechCategoryVoices = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices"; | 
|  | const BSTR SpeechCategoryRecognizers = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Recognizers"; | 
|  | const BSTR SpeechCategoryAppLexicons = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AppLexicons"; | 
|  | const BSTR SpeechCategoryPhoneConverters = L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\PhoneConverters"; | 
|  | const BSTR SpeechCategoryRecoProfiles = L"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\RecoProfiles"; | 
|  | const BSTR SpeechTokenIdUserLexicon = L"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserLexicon"; | 
|  | const BSTR SpeechTokenValueCLSID = L"CLSID"; | 
|  | const BSTR SpeechTokenKeyFiles = L"Files"; | 
|  | const BSTR SpeechTokenKeyUI = L"UI"; | 
|  | const BSTR SpeechTokenKeyAttributes = L"Attributes"; | 
|  | const BSTR SpeechVoiceCategoryTTSRate = L"DefaultTTSRate"; | 
|  | const BSTR SpeechPropertyResourceUsage = L"ResourceUsage"; | 
|  | const BSTR SpeechPropertyHighConfidenceThreshold = L"HighConfidenceThreshold"; | 
|  | const BSTR SpeechPropertyNormalConfidenceThreshold = L"NormalConfidenceThreshold"; | 
|  | const BSTR SpeechPropertyLowConfidenceThreshold = L"LowConfidenceThreshold"; | 
|  | const BSTR SpeechPropertyResponseSpeed = L"ResponseSpeed"; | 
|  | const BSTR SpeechPropertyComplexResponseSpeed = L"ComplexResponseSpeed"; | 
|  | const BSTR SpeechPropertyAdaptationOn = L"AdaptationOn"; | 
|  | const BSTR SpeechDictationTopicSpelling = L"Spelling"; | 
|  | const BSTR SpeechGrammarTagWildcard = L"..."; | 
|  | const BSTR SpeechGrammarTagDictation = L"*"; | 
|  | const BSTR SpeechGrammarTagUnlimitedDictation = L"*+"; | 
|  | const BSTR SpeechEngineProperties = L"EngineProperties"; | 
|  | const BSTR SpeechAddRemoveWord = L"AddRemoveWord"; | 
|  | const BSTR SpeechUserTraining = L"UserTraining"; | 
|  | const BSTR SpeechMicTraining = L"MicTraining"; | 
|  | const BSTR SpeechRecoProfileProperties = L"RecoProfileProperties"; | 
|  | const BSTR SpeechAudioProperties = L"AudioProperties"; | 
|  | const BSTR SpeechAudioVolume = L"AudioVolume"; | 
|  | const BSTR SpeechVoiceSkipTypeSentence = L"Sentence"; | 
|  | const BSTR SpeechAudioFormatGUIDWave = L"{C31ADBAE-527F-4ff5-A230-F62BB61FF70C}"; | 
|  | const BSTR SpeechAudioFormatGUIDText = L"{7CEEF9F9-3D13-11d2-9EE7-00C04F797396}"; | 
|  | }; | 
|  | [uuid (F3E092B2-6bdc-410f-BCB2-4c5ed4424180)] module SpeechConstants { | 
|  | const float Speech_Default_Weight = DEFAULT_WEIGHT; | 
|  | const LONG Speech_Max_Word_Length = SP_MAX_WORD_LENGTH; | 
|  | const LONG Speech_Max_Pron_Length = SP_MAX_PRON_LENGTH; | 
|  | const LONG Speech_StreamPos_Asap = SP_STREAMPOS_ASAP; | 
|  | const LONG Speech_StreamPos_RealTime = SP_STREAMPOS_REALTIME; | 
|  | const LONG SpeechAllElements = SPPR_ALL_ELEMENTS; | 
|  | }; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechDataKey { | 
|  | DISPID_SDKSetBinaryValue = 1, | 
|  | DISPID_SDKGetBinaryValue, | 
|  | DISPID_SDKSetStringValue, | 
|  | DISPID_SDKGetStringValue, | 
|  | DISPID_SDKSetLongValue, | 
|  | DISPID_SDKGetlongValue, | 
|  | DISPID_SDKOpenKey, | 
|  | DISPID_SDKCreateKey, | 
|  | DISPID_SDKDeleteKey, | 
|  | DISPID_SDKDeleteValue, | 
|  | DISPID_SDKEnumKeys, | 
|  | DISPID_SDKEnumValues | 
|  | } DISPID_SpeechDataKey; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechObjectToken { | 
|  | DISPID_SOTId = 1, | 
|  | DISPID_SOTDataKey, | 
|  | DISPID_SOTCategory, | 
|  | DISPID_SOTGetDescription, | 
|  | DISPID_SOTSetId, | 
|  | DISPID_SOTGetAttribute, | 
|  | DISPID_SOTCreateInstance, | 
|  | DISPID_SOTRemove, | 
|  | DISPID_SOTGetStorageFileName, | 
|  | DISPID_SOTRemoveStorageFileName, | 
|  | DISPID_SOTIsUISupported, | 
|  | DISPID_SOTDisplayUI, | 
|  | DISPID_SOTMatchesAttributes | 
|  | } DISPID_SpeechObjectToken; | 
|  |  | 
|  | typedef enum SpeechDataKeyLocation { | 
|  | SDKLDefaultLocation = SPDKL_DefaultLocation, | 
|  | SDKLCurrentUser = SPDKL_CurrentUser, | 
|  | SDKLLocalMachine = SPDKL_LocalMachine, | 
|  | SDKLCurrentConfig = SPDKL_CurrentConfig | 
|  | } SpeechDataKeyLocation; | 
|  |  | 
|  | #define CLSCTXALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER) | 
|  |  | 
|  | typedef enum SpeechTokenContext { | 
|  | STCInprocServer = CLSCTX_INPROC_SERVER, | 
|  | STCInprocHandler = CLSCTX_INPROC_HANDLER, | 
|  | STCLocalServer = CLSCTX_LOCAL_SERVER, | 
|  | STCRemoteServer = CLSCTX_REMOTE_SERVER, | 
|  | STCAll = CLSCTXALL | 
|  | } SpeechTokenContext; | 
|  |  | 
|  | typedef enum SpeechTokenShellFolder { | 
|  | STSF_AppData = 0x001a, | 
|  | STSF_LocalAppData = 0x001c, | 
|  | STSF_CommonAppData = 0x0023, | 
|  | STSF_FlagCreate = 0x8000 | 
|  | } SpeechTokenShellFolder; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechObjectTokens { | 
|  | DISPID_SOTsCount = 1, | 
|  | DISPID_SOTsItem = DISPID_VALUE, | 
|  | DISPID_SOTs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechObjectTokens; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechObjectTokenCategory { | 
|  | DISPID_SOTCId = 1, | 
|  | DISPID_SOTCDefault, | 
|  | DISPID_SOTCSetId, | 
|  | DISPID_SOTCGetDataKey, | 
|  | DISPID_SOTCEnumerateTokens, | 
|  | } DISPID_SpeechObjectTokenCategory; | 
|  |  | 
|  | [object, uuid (CE17C09B-4efa-44d5-A4C9-59d9585ab0cd), dual, pointer_default (unique)] | 
|  | interface ISpeechDataKey : IDispatch { | 
|  | [id (DISPID_SDKSetBinaryValue)] HRESULT SetBinaryValue ([in]const BSTR ValueName,[in]VARIANT Value); | 
|  | [id (DISPID_SDKGetBinaryValue)] HRESULT GetBinaryValue ([in]const BSTR ValueName,[out, retval]VARIANT *Value); | 
|  | [id (DISPID_SDKSetStringValue)] HRESULT SetStringValue ([in]const BSTR ValueName,[in]const BSTR Value); | 
|  | [id (DISPID_SDKGetStringValue)] HRESULT GetStringValue ([in]const BSTR ValueName,[out, retval]BSTR *Value); | 
|  | [id (DISPID_SDKSetLongValue)] HRESULT SetLongValue ([in]const BSTR ValueName,[in]long Value); | 
|  | [id (DISPID_SDKGetlongValue)] HRESULT GetLongValue ([in]const BSTR ValueName,[out, retval]long *Value); | 
|  | [id (DISPID_SDKOpenKey)] HRESULT OpenKey ([in]const BSTR SubKeyName,[out, retval]ISpeechDataKey **SubKey); | 
|  | [id (DISPID_SDKCreateKey)] HRESULT CreateKey ([in]const BSTR SubKeyName,[out, retval]ISpeechDataKey **SubKey); | 
|  | [id (DISPID_SDKDeleteKey)] HRESULT DeleteKey ([in]const BSTR SubKeyName); | 
|  | [id (DISPID_SDKDeleteValue)] HRESULT DeleteValue ([in]const BSTR ValueName); | 
|  | [id (DISPID_SDKEnumKeys)] HRESULT EnumKeys ([in]long Index,[out, retval]BSTR *SubKeyName); | 
|  | [id (DISPID_SDKEnumValues)] HRESULT EnumValues ([in]long Index,[out, retval]BSTR *ValueName); | 
|  | }; | 
|  |  | 
|  | [object, uuid (C74A3ADC-B727-4500-A84A-B526721C8B8C), dual, pointer_default (unique)] | 
|  | interface ISpeechObjectToken : IDispatch { | 
|  | [propget, id (DISPID_SOTId)] HRESULT Id ([out, retval]BSTR *ObjectId); | 
|  | [propget, id (DISPID_SOTDataKey), hidden] HRESULT DataKey ([out, retval]ISpeechDataKey **DataKey); | 
|  | [propget, id (DISPID_SOTCategory)] HRESULT Category ([out, retval]ISpeechObjectTokenCategory **Category); | 
|  | [id (DISPID_SOTGetDescription)] HRESULT GetDescription ([in, defaultvalue (0)]long Locale,[out, retval]BSTR *Description); | 
|  | [hidden, id (DISPID_SOTSetId)] HRESULT SetId ([in] BSTR Id,[in, defaultvalue (L"")] BSTR CategoryID,[in, defaultvalue (0)]VARIANT_BOOL CreateIfNotExist); | 
|  | [id (DISPID_SOTGetAttribute)] HRESULT GetAttribute ([in] BSTR AttributeName,[out, retval]BSTR *AttributeValue); | 
|  | [id (DISPID_SOTCreateInstance)] HRESULT CreateInstance ([in, defaultvalue (NULL)] IUnknown *pUnkOuter,[in, defaultvalue (STCAll)] SpeechTokenContext ClsContext,[out, retval]IUnknown **Object); | 
|  | [hidden, id (DISPID_SOTRemove)] HRESULT Remove ([in]BSTR ObjectStorageCLSID); | 
|  | [hidden, id (DISPID_SOTGetStorageFileName)] HRESULT GetStorageFileName ([in]BSTR ObjectStorageCLSID,[in]BSTR KeyName,[in]BSTR FileName,[in]SpeechTokenShellFolder Folder,[out, retval]BSTR *FilePath); | 
|  | [hidden, id (DISPID_SOTRemoveStorageFileName)] HRESULT RemoveStorageFileName ([in]BSTR ObjectStorageCLSID,[in]BSTR KeyName,[in]VARIANT_BOOL DeleteFile); | 
|  | [hidden, id (DISPID_SOTIsUISupported)] HRESULT IsUISupported ([in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData,[in, defaultvalue (NULL)]IUnknown *Object,[out, retval] VARIANT_BOOL *Supported); | 
|  | [hidden, id (DISPID_SOTDisplayUI)] HRESULT DisplayUI ([in]long hWnd,[in]BSTR Title,[in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData,[in, defaultvalue (NULL)]IUnknown *Object); | 
|  | [id (DISPID_SOTMatchesAttributes)] HRESULT MatchesAttributes ([in]BSTR Attributes,[out, retval] VARIANT_BOOL *Matches); | 
|  | }; | 
|  |  | 
|  | [object, uuid (9285b776-2e7b-4bc0-B53E-580eb6fa967f), dual, pointer_default (unique)] | 
|  | interface ISpeechObjectTokens : IDispatch { | 
|  | [propget, id (DISPID_SOTsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_VALUE)] HRESULT Item ([in] long Index,[out, retval]ISpeechObjectToken **Token); | 
|  | [propget, restricted, id (DISPID_NEWENUM)] HRESULT _NewEnum ([out, retval] IUnknown **ppEnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (CA7EAC50-2d01-4145-86d4-5ae7d70f4469), dual, pointer_default (unique)] | 
|  | interface ISpeechObjectTokenCategory : IDispatch { | 
|  | [propget, id (DISPID_SOTCId)] HRESULT Id ([out, retval] BSTR *Id); | 
|  | [propput, id (DISPID_SOTCDefault)] HRESULT Default ([in] const BSTR TokenId); | 
|  | [propget, id (DISPID_SOTCDefault)] HRESULT Default ([out, retval] BSTR *TokenId); | 
|  | [id (DISPID_SOTCSetId)] HRESULT SetId ([in] const BSTR Id,[in, defaultvalue (0)]VARIANT_BOOL CreateIfNotExist); | 
|  | [hidden, id (DISPID_SOTCGetDataKey)] HRESULT GetDataKey ([in, defaultvalue (SDKLDefaultLocation)]SpeechDataKeyLocation Location,[out, retval]ISpeechDataKey **DataKey); | 
|  | [id (DISPID_SOTCEnumerateTokens)] HRESULT EnumerateTokens ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **Tokens); | 
|  | }; | 
|  |  | 
|  | typedef enum SpeechAudioFormatType { | 
|  | SAFTDefault = -1, | 
|  | SAFTNoAssignedFormat = 0, | 
|  | SAFTText, | 
|  | SAFTNonStandardFormat, | 
|  | SAFTExtendedAudioFormat, | 
|  | SAFT8kHz8BitMono, | 
|  | SAFT8kHz8BitStereo, | 
|  | SAFT8kHz16BitMono, | 
|  | SAFT8kHz16BitStereo, | 
|  | SAFT11kHz8BitMono, | 
|  | SAFT11kHz8BitStereo, | 
|  | SAFT11kHz16BitMono, | 
|  | SAFT11kHz16BitStereo, | 
|  | SAFT12kHz8BitMono, | 
|  | SAFT12kHz8BitStereo, | 
|  | SAFT12kHz16BitMono, | 
|  | SAFT12kHz16BitStereo, | 
|  | SAFT16kHz8BitMono, | 
|  | SAFT16kHz8BitStereo, | 
|  | SAFT16kHz16BitMono, | 
|  | SAFT16kHz16BitStereo, | 
|  | SAFT22kHz8BitMono, | 
|  | SAFT22kHz8BitStereo, | 
|  | SAFT22kHz16BitMono, | 
|  | SAFT22kHz16BitStereo, | 
|  | SAFT24kHz8BitMono, | 
|  | SAFT24kHz8BitStereo, | 
|  | SAFT24kHz16BitMono, | 
|  | SAFT24kHz16BitStereo, | 
|  | SAFT32kHz8BitMono, | 
|  | SAFT32kHz8BitStereo, | 
|  | SAFT32kHz16BitMono, | 
|  | SAFT32kHz16BitStereo, | 
|  | SAFT44kHz8BitMono, | 
|  | SAFT44kHz8BitStereo, | 
|  | SAFT44kHz16BitMono, | 
|  | SAFT44kHz16BitStereo, | 
|  | SAFT48kHz8BitMono, | 
|  | SAFT48kHz8BitStereo, | 
|  | SAFT48kHz16BitMono, | 
|  | SAFT48kHz16BitStereo, | 
|  | SAFTTrueSpeech_8kHz1BitMono, | 
|  | SAFTCCITT_ALaw_8kHzMono, | 
|  | SAFTCCITT_ALaw_8kHzStereo, | 
|  | SAFTCCITT_ALaw_11kHzMono, | 
|  | SAFTCCITT_ALaw_11kHzStereo, | 
|  | SAFTCCITT_ALaw_22kHzMono, | 
|  | SAFTCCITT_ALaw_22kHzStereo, | 
|  | SAFTCCITT_ALaw_44kHzMono, | 
|  | SAFTCCITT_ALaw_44kHzStereo, | 
|  |  | 
|  | SAFTCCITT_uLaw_8kHzMono, | 
|  | SAFTCCITT_uLaw_8kHzStereo, | 
|  | SAFTCCITT_uLaw_11kHzMono, | 
|  | SAFTCCITT_uLaw_11kHzStereo, | 
|  | SAFTCCITT_uLaw_22kHzMono, | 
|  | SAFTCCITT_uLaw_22kHzStereo, | 
|  | SAFTCCITT_uLaw_44kHzMono, | 
|  | SAFTCCITT_uLaw_44kHzStereo, | 
|  |  | 
|  | SAFTADPCM_8kHzMono, | 
|  | SAFTADPCM_8kHzStereo, | 
|  | SAFTADPCM_11kHzMono, | 
|  | SAFTADPCM_11kHzStereo, | 
|  | SAFTADPCM_22kHzMono, | 
|  | SAFTADPCM_22kHzStereo, | 
|  | SAFTADPCM_44kHzMono, | 
|  | SAFTADPCM_44kHzStereo, | 
|  | SAFTGSM610_8kHzMono, | 
|  | SAFTGSM610_11kHzMono, | 
|  | SAFTGSM610_22kHzMono, | 
|  | SAFTGSM610_44kHzMono, | 
|  | } SpeechAudioFormatType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechAudioFormat { | 
|  | DISPID_SAFType = 1, | 
|  | DISPID_SAFGuid, | 
|  | DISPID_SAFGetWaveFormatEx, | 
|  | DISPID_SAFSetWaveFormatEx | 
|  | } DISPID_SpeechAudioFormat; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechBaseStream { | 
|  | DISPID_SBSFormat = 1, | 
|  | DISPID_SBSRead, | 
|  | DISPID_SBSWrite, | 
|  | DISPID_SBSSeek | 
|  | } DISPID_SpeechBaseStream; | 
|  |  | 
|  | typedef enum SpeechStreamSeekPositionType { | 
|  | SSSPTRelativeToStart = STREAM_SEEK_SET, | 
|  | SSSPTRelativeToCurrentPosition = STREAM_SEEK_CUR, | 
|  | SSSPTRelativeToEnd = STREAM_SEEK_END | 
|  | } SpeechStreamSeekPositionType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechAudio { | 
|  | DISPID_SAStatus = 200, | 
|  | DISPID_SABufferInfo, | 
|  | DISPID_SADefaultFormat, | 
|  | DISPID_SAVolume, | 
|  | DISPID_SABufferNotifySize, | 
|  | DISPID_SAEventHandle, | 
|  | DISPID_SASetState | 
|  | } DISPID_SpeechAudio; | 
|  |  | 
|  | typedef enum SpeechAudioState { | 
|  | SASClosed = SPAS_CLOSED, | 
|  | SASStop = SPAS_STOP, | 
|  | SASPause = SPAS_PAUSE, | 
|  | SASRun = SPAS_RUN | 
|  | } SpeechAudioState; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechMMSysAudio { | 
|  | DISPID_SMSADeviceId = 300, | 
|  | DISPID_SMSALineId, | 
|  | DISPID_SMSAMMHandle | 
|  | } DISPID_SpeechMMSysAudio; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechFileStream { | 
|  | DISPID_SFSOpen = 100, | 
|  | DISPID_SFSClose | 
|  | } DISPID_SpeechFileStream; | 
|  |  | 
|  | typedef enum SpeechStreamFileMode { | 
|  | SSFMOpenForRead = SPFM_OPEN_READONLY, | 
|  | SSFMOpenReadWrite = SPFM_OPEN_READWRITE, | 
|  | SSFMCreate = SPFM_CREATE, | 
|  | SSFMCreateForWrite = SPFM_CREATE_ALWAYS, | 
|  | } SpeechStreamFileMode; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechCustomStream { | 
|  | DISPID_SCSBaseStream = 100 | 
|  | } DISPID_SpeechCustomStream; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechMemoryStream { | 
|  | DISPID_SMSSetData = 100, | 
|  | DISPID_SMSGetData | 
|  | } DISPID_SpeechMemoryStream; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechAudioStatus { | 
|  | DISPID_SASFreeBufferSpace = 1, | 
|  | DISPID_SASNonBlockingIO, | 
|  | DISPID_SASState, | 
|  | DISPID_SASCurrentSeekPosition, | 
|  | DISPID_SASCurrentDevicePosition | 
|  | } DISPID_SpeechAudioStatus; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechAudioBufferInfo { | 
|  | DISPID_SABIMinNotification = 1, | 
|  | DISPID_SABIBufferSize, | 
|  | DISPID_SABIEventBias | 
|  | } DISPID_SpeechAudioBufferInfo; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechWaveFormatEx { | 
|  | DISPID_SWFEFormatTag = 1, | 
|  | DISPID_SWFEChannels, | 
|  | DISPID_SWFESamplesPerSec, | 
|  | DISPID_SWFEAvgBytesPerSec, | 
|  | DISPID_SWFEBlockAlign, | 
|  | DISPID_SWFEBitsPerSample, | 
|  | DISPID_SWFEExtraData | 
|  | } DISPID_SpeechWaveFormatEx; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechVoice { | 
|  | DISPID_SVStatus = 1, | 
|  | DISPID_SVVoice, | 
|  | DISPID_SVAudioOutput, | 
|  | DISPID_SVAudioOutputStream, | 
|  | DISPID_SVRate, | 
|  | DISPID_SVVolume, | 
|  | DISPID_SVAllowAudioOuputFormatChangesOnNextSet, | 
|  | DISPID_SVEventInterests, | 
|  | DISPID_SVPriority, | 
|  | DISPID_SVAlertBoundary, | 
|  | DISPID_SVSyncronousSpeakTimeout, | 
|  | DISPID_SVSpeak, | 
|  | DISPID_SVSpeakStream, | 
|  | DISPID_SVPause, | 
|  | DISPID_SVResume, | 
|  | DISPID_SVSkip, | 
|  | DISPID_SVGetVoices, | 
|  | DISPID_SVGetAudioOutputs, | 
|  | DISPID_SVWaitUntilDone, | 
|  | DISPID_SVSpeakCompleteEvent, | 
|  | DISPID_SVIsUISupported, | 
|  | DISPID_SVDisplayUI | 
|  | } DISPID_SpeechVoice; | 
|  |  | 
|  | typedef enum SpeechVoicePriority { | 
|  | SVPNormal = SPVPRI_NORMAL, | 
|  | SVPAlert = SPVPRI_ALERT, | 
|  | SVPOver = SPVPRI_OVER | 
|  | } SpeechVoicePriority; | 
|  |  | 
|  | typedef enum SpeechVoiceSpeakFlags { | 
|  | SVSFDefault = SPF_DEFAULT, | 
|  | SVSFlagsAsync = SPF_ASYNC, | 
|  | SVSFPurgeBeforeSpeak = SPF_PURGEBEFORESPEAK, | 
|  | SVSFIsFilename = SPF_IS_FILENAME, | 
|  | SVSFIsXML = SPF_IS_XML, | 
|  | SVSFIsNotXML = SPF_IS_NOT_XML, | 
|  | SVSFPersistXML = SPF_PERSIST_XML, | 
|  | SVSFNLPSpeakPunc = SPF_NLP_SPEAK_PUNC, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SVSFParseSapi = SPF_PARSE_SAPI, | 
|  | SVSFParseSsml = SPF_PARSE_SSML, | 
|  | SVSFParseAutodetect = SPF_PARSE_AUTODETECT, | 
|  | #endif | 
|  | SVSFNLPMask = SPF_NLP_MASK, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SVSFParseMask = SPF_PARSE_MASK, | 
|  | #endif | 
|  | SVSFVoiceMask = SPF_VOICE_MASK, | 
|  | SVSFUnusedFlags = SPF_UNUSED_FLAGS, | 
|  | } SpeechVoiceSpeakFlags; | 
|  |  | 
|  | typedef enum SpeechVoiceEvents { | 
|  | SVEStartInputStream = 0x2, | 
|  | SVEEndInputStream = 0x4, | 
|  | SVEVoiceChange = 0x8, | 
|  | SVEBookmark = 0x10, | 
|  | SVEWordBoundary = 0x20, | 
|  | SVEPhoneme = 0x40, | 
|  | SVESentenceBoundary = 0x80, | 
|  | SVEViseme = 0x100, | 
|  | SVEAudioLevel = 0x200, | 
|  | SVEPrivate = 0x8000, | 
|  | SVEAllEvents = 0x83fe | 
|  | } SpeechVoiceEvents; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechVoiceStatus { | 
|  | DISPID_SVSCurrentStreamNumber = 1, | 
|  | DISPID_SVSLastStreamNumberQueued, | 
|  | DISPID_SVSLastResult, | 
|  | DISPID_SVSRunningState, | 
|  | DISPID_SVSInputWordPosition, | 
|  | DISPID_SVSInputWordLength, | 
|  | DISPID_SVSInputSentencePosition, | 
|  | DISPID_SVSInputSentenceLength, | 
|  | DISPID_SVSLastBookmark, | 
|  | DISPID_SVSLastBookmarkId, | 
|  | DISPID_SVSPhonemeId, | 
|  | DISPID_SVSVisemeId | 
|  | } DISPID_SpeechVoiceStatus; | 
|  |  | 
|  | typedef enum SpeechRunState { | 
|  | SRSEDone = SPRS_DONE, | 
|  | SRSEIsSpeaking = SPRS_IS_SPEAKING | 
|  | } SpeechRunState; | 
|  |  | 
|  | [object, uuid (E6E9C590-3e18-40e3-8299-061f98bde7c7), dual, pointer_default (unique)] | 
|  | interface ISpeechAudioFormat : IDispatch { | 
|  | [propget, id (DISPID_SAFType)] HRESULT Type ([out, retval]SpeechAudioFormatType *AudioFormat); | 
|  | [propput, id (DISPID_SAFType)] HRESULT Type ([in]SpeechAudioFormatType AudioFormat); | 
|  | [propget, hidden, id (DISPID_SAFGuid)] HRESULT Guid ([out, retval]BSTR *Guid); | 
|  | [propput, hidden, id (DISPID_SAFGuid)] HRESULT Guid ([in]BSTR Guid); | 
|  | [hidden, id (DISPID_SAFGetWaveFormatEx)] HRESULT GetWaveFormatEx ([out, retval]ISpeechWaveFormatEx **SpeechWaveFormatEx); | 
|  | [hidden, id (DISPID_SAFSetWaveFormatEx)] HRESULT SetWaveFormatEx ([in]ISpeechWaveFormatEx *SpeechWaveFormatEx); | 
|  | } | 
|  |  | 
|  | [object, uuid (6450336f-7d49-4ced-8097-49d6dee37294), dual, pointer_default (unique)] | 
|  | interface ISpeechBaseStream : IDispatch { | 
|  | [propget, id (DISPID_SBSFormat)] HRESULT Format ([out, retval]ISpeechAudioFormat **AudioFormat); | 
|  | [propputref, id (DISPID_SBSFormat)] HRESULT Format ([in]ISpeechAudioFormat *AudioFormat); | 
|  | [id (DISPID_SBSRead)] HRESULT Read ([out]VARIANT *Buffer,[in]long NumberOfBytes,[out, retval]long *BytesRead); | 
|  | [id (DISPID_SBSWrite)] HRESULT Write ([in]VARIANT Buffer,[out, retval]long *BytesWritten); | 
|  | [id (DISPID_SBSSeek)] HRESULT Seek ([in]VARIANT Position,[in, defaultvalue (SSSPTRelativeToStart)]SpeechStreamSeekPositionType Origin,[out, retval]VARIANT *NewPosition); | 
|  | }; | 
|  |  | 
|  | [object, uuid (CFF8E175-019e-11d3-A08E-00c04f8ef9b5), dual, pointer_default (unique)] | 
|  | interface ISpeechAudio : ISpeechBaseStream { | 
|  | [propget, id (DISPID_SAStatus)] HRESULT Status ([out, retval]ISpeechAudioStatus **Status); | 
|  | [propget, id (DISPID_SABufferInfo)] HRESULT BufferInfo ([out, retval]ISpeechAudioBufferInfo **BufferInfo); | 
|  | [propget, id (DISPID_SADefaultFormat)] HRESULT DefaultFormat ([out, retval]ISpeechAudioFormat **StreamFormat); | 
|  | [propget, id (DISPID_SAVolume)] HRESULT Volume ([out, retval]long *Volume); | 
|  | [propput, id (DISPID_SAVolume)] HRESULT Volume ([in]long Volume); | 
|  | [propget, id (DISPID_SABufferNotifySize)] HRESULT BufferNotifySize ([out, retval]long *BufferNotifySize); | 
|  | [propput, id (DISPID_SABufferNotifySize)] HRESULT BufferNotifySize ([in]long BufferNotifySize); | 
|  | [propget, hidden, id (DISPID_SAEventHandle)] HRESULT EventHandle ([out, retval]long *EventHandle); | 
|  | [id (DISPID_SASetState), hidden] HRESULT SetState ([in] SpeechAudioState State); | 
|  | }; | 
|  |  | 
|  | [object, uuid (3c76af6d-1fd7-4831-81d1-3b71d5a13c44), dual, pointer_default (unique)] | 
|  | interface ISpeechMMSysAudio : ISpeechAudio { | 
|  | [propget, id (DISPID_SMSADeviceId)] HRESULT DeviceId ([out, retval] long *DeviceId); | 
|  | [propput, id (DISPID_SMSADeviceId)] HRESULT DeviceId ([in] long DeviceId); | 
|  | [propget, id (DISPID_SMSALineId)] HRESULT LineId ([out, retval] long *LineId); | 
|  | [propput, id (DISPID_SMSALineId)] HRESULT LineId ([in] long LineId); | 
|  | [propget, hidden, id (DISPID_SMSAMMHandle)] HRESULT MMHandle ([out, retval] long *Handle); | 
|  | }; | 
|  |  | 
|  | [object, uuid (AF67F125-AB39-4e93-B4A2-CC2E66E182A7), dual, pointer_default (unique)] | 
|  | interface ISpeechFileStream : ISpeechBaseStream { | 
|  | [id (DISPID_SFSOpen)] HRESULT Open ([in] BSTR FileName,[in, defaultvalue (SSFMOpenForRead)] SpeechStreamFileMode FileMode,[in, defaultvalue (0)]VARIANT_BOOL DoEvents); | 
|  | [id (DISPID_SFSClose)] HRESULT Close (void); | 
|  | }; | 
|  |  | 
|  | [object, uuid (1a9e9f4f-104f-4db8-A115-EFD7FD0C97AE), dual, pointer_default (unique)] | 
|  | interface ISpeechCustomStream : ISpeechBaseStream { | 
|  | [propget, id (DISPID_SCSBaseStream)] HRESULT BaseStream ([out, retval] IUnknown **ppUnkStream); | 
|  | [propputref, id (DISPID_SCSBaseStream)] HRESULT BaseStream ([in] IUnknown *pUnkStream); | 
|  | }; | 
|  |  | 
|  | [object, uuid (EEB14B68-808b-4abe-A5EA-B51DA7588008), dual, pointer_default (unique)] | 
|  | interface ISpeechMemoryStream : ISpeechBaseStream { | 
|  | [id (DISPID_SMSSetData)] HRESULT SetData ([in] VARIANT Data); | 
|  | [id (DISPID_SMSGetData)] HRESULT GetData ([out, retval] VARIANT *pData); | 
|  | }; | 
|  |  | 
|  | [object, uuid (C62D9C91-7458-47f6-862d-1ef86fb0b278), dual, pointer_default (unique)] | 
|  | interface ISpeechAudioStatus : IDispatch { | 
|  | [propget, id (DISPID_SASFreeBufferSpace)] HRESULT FreeBufferSpace ([out, retval]long *FreeBufferSpace); | 
|  | [propget, id (DISPID_SASNonBlockingIO)] HRESULT NonBlockingIO ([out, retval]long *NonBlockingIO); | 
|  | [propget, id (DISPID_SASState)] HRESULT State ([out, retval] SpeechAudioState *State); | 
|  | [propget, id (DISPID_SASCurrentSeekPosition)] HRESULT CurrentSeekPosition ([out, retval]VARIANT *CurrentSeekPosition); | 
|  | [propget, id (DISPID_SASCurrentDevicePosition)] HRESULT CurrentDevicePosition ([out, retval]VARIANT *CurrentDevicePosition); | 
|  | }; | 
|  |  | 
|  | [object, uuid (11b103d8-1142-4edf-A093-82fb3915f8cc), dual, pointer_default (unique)] | 
|  | interface ISpeechAudioBufferInfo : IDispatch { | 
|  | [propget, id (DISPID_SABIMinNotification)] HRESULT MinNotification ([out, retval]long *MinNotification); | 
|  | [propput, id (DISPID_SABIMinNotification)] HRESULT MinNotification ([in]long MinNotification); | 
|  | [propget, id (DISPID_SABIBufferSize)] HRESULT BufferSize ([out, retval]long *BufferSize); | 
|  | [propput, id (DISPID_SABIBufferSize)] HRESULT BufferSize ([in]long BufferSize); | 
|  | [propget, id (DISPID_SABIEventBias)] HRESULT EventBias ([out, retval]long *EventBias); | 
|  | [propput, id (DISPID_SABIEventBias)] HRESULT EventBias ([in]long EventBias); | 
|  | } | 
|  |  | 
|  | [object, uuid (7a1ef0d5-1581-4741-88e4-209a49f11a10), dual, pointer_default (unique)] | 
|  | interface ISpeechWaveFormatEx : IDispatch { | 
|  | [propget, id (DISPID_SWFEFormatTag)] HRESULT FormatTag ([out, retval]short *FormatTag); | 
|  | [propput, id (DISPID_SWFEFormatTag)] HRESULT FormatTag ([in]short FormatTag); | 
|  | [propget, id (DISPID_SWFEChannels)] HRESULT Channels ([out, retval]short *Channels); | 
|  | [propput, id (DISPID_SWFEChannels)] HRESULT Channels ([in]short Channels); | 
|  | [propget, id (DISPID_SWFESamplesPerSec)] HRESULT SamplesPerSec ([out, retval]long *SamplesPerSec); | 
|  | [propput, id (DISPID_SWFESamplesPerSec)] HRESULT SamplesPerSec ([in]long SamplesPerSec); | 
|  | [propget, id (DISPID_SWFEAvgBytesPerSec)] HRESULT AvgBytesPerSec ([out, retval]long *AvgBytesPerSec); | 
|  | [propput, id (DISPID_SWFEAvgBytesPerSec)] HRESULT AvgBytesPerSec ([in]long AvgBytesPerSec); | 
|  | [propget, id (DISPID_SWFEBlockAlign)] HRESULT BlockAlign ([out, retval]short *BlockAlign); | 
|  | [propput, id (DISPID_SWFEBlockAlign)] HRESULT BlockAlign ([in]short BlockAlign); | 
|  | [propget, id (DISPID_SWFEBitsPerSample)] HRESULT BitsPerSample ([out, retval]short *BitsPerSample); | 
|  | [propput, id (DISPID_SWFEBitsPerSample)] HRESULT BitsPerSample ([in]short BitsPerSample); | 
|  | [propget, id (DISPID_SWFEExtraData)] HRESULT ExtraData ([out, retval]VARIANT *ExtraData); | 
|  | [propput, id (DISPID_SWFEExtraData)] HRESULT ExtraData ([in]VARIANT ExtraData); | 
|  | } | 
|  |  | 
|  | [object, uuid (269316d8-57bd-11d2-9eee-00c04f797396), dual, pointer_default (unique)] | 
|  | interface ISpeechVoice : IDispatch { | 
|  | [propget, id (DISPID_SVStatus)] HRESULT Status ([out, retval] ISpeechVoiceStatus **Status); | 
|  | [propget, id (DISPID_SVVoice)] HRESULT Voice ([out, retval] ISpeechObjectToken **Voice); | 
|  | [propputref, id (DISPID_SVVoice)] HRESULT Voice ([in]ISpeechObjectToken *Voice); | 
|  | [propget, id (DISPID_SVAudioOutput)] HRESULT AudioOutput ([out, retval]ISpeechObjectToken **AudioOutput); | 
|  | [propputref, id (DISPID_SVAudioOutput)] HRESULT AudioOutput ([in]ISpeechObjectToken *AudioOutput); | 
|  | [propget, id (DISPID_SVAudioOutputStream)] HRESULT AudioOutputStream ([out, retval]ISpeechBaseStream **AudioOutputStream); | 
|  | [propputref, id (DISPID_SVAudioOutputStream)] HRESULT AudioOutputStream ([in]ISpeechBaseStream *AudioOutputStream); | 
|  | [propget, id (DISPID_SVRate)] HRESULT Rate ([out, retval] long *Rate); | 
|  | [propput, id (DISPID_SVRate)] HRESULT Rate ([in] long Rate); | 
|  | [propget, id (DISPID_SVVolume)] HRESULT Volume ([out, retval] long *Volume); | 
|  | [propput, id (DISPID_SVVolume)] HRESULT Volume ([in] long Volume); | 
|  | [propput, hidden, id (DISPID_SVAllowAudioOuputFormatChangesOnNextSet)] HRESULT AllowAudioOutputFormatChangesOnNextSet ([in] VARIANT_BOOL Allow); | 
|  | [propget, hidden, id (DISPID_SVAllowAudioOuputFormatChangesOnNextSet)] HRESULT AllowAudioOutputFormatChangesOnNextSet ([out, retval] VARIANT_BOOL *Allow); | 
|  | [propget, id (DISPID_SVEventInterests)] HRESULT EventInterests ([out, retval] SpeechVoiceEvents *EventInterestFlags); | 
|  | [propput, id (DISPID_SVEventInterests)] HRESULT EventInterests ([in] SpeechVoiceEvents EventInterestFlags); | 
|  | [propput, id (DISPID_SVPriority)] HRESULT Priority ([in] SpeechVoicePriority Priority); | 
|  | [propget, id (DISPID_SVPriority)] HRESULT Priority ([out, retval] SpeechVoicePriority *Priority); | 
|  | [propput, id (DISPID_SVAlertBoundary)] HRESULT AlertBoundary ([in] SpeechVoiceEvents Boundary); | 
|  | [propget, id (DISPID_SVAlertBoundary)] HRESULT AlertBoundary ([out, retval] SpeechVoiceEvents *Boundary); | 
|  | [propput, id (DISPID_SVSyncronousSpeakTimeout)] HRESULT SynchronousSpeakTimeout ([in] long msTimeout); | 
|  | [propget, id (DISPID_SVSyncronousSpeakTimeout)] HRESULT SynchronousSpeakTimeout ([out, retval] long *msTimeout); | 
|  | [id (DISPID_SVSpeak)] HRESULT Speak ([in] BSTR Text,[in, defaultvalue (SPF_DEFAULT)] SpeechVoiceSpeakFlags Flags,[out, retval]long *StreamNumber); | 
|  | [id (DISPID_SVSpeakStream)] HRESULT SpeakStream ([in] ISpeechBaseStream *Stream,[in, defaultvalue (SPF_DEFAULT)] SpeechVoiceSpeakFlags Flags,[out, retval]long *StreamNumber); | 
|  | [id (DISPID_SVPause)] HRESULT Pause (void); | 
|  | [id (DISPID_SVResume)] HRESULT Resume (void); | 
|  | [id (DISPID_SVSkip)] HRESULT Skip ([in]const BSTR Type,[in]long NumItems,[out, retval]long *NumSkipped); | 
|  | [id (DISPID_SVGetVoices)] HRESULT GetVoices ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **ObjectTokens); | 
|  | [id (DISPID_SVGetAudioOutputs)] HRESULT GetAudioOutputs ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **ObjectTokens); | 
|  | [id (DISPID_SVWaitUntilDone)] HRESULT WaitUntilDone ([in]long msTimeout,[out, retval]VARIANT_BOOL *Done); | 
|  | [hidden, id (DISPID_SVSpeakCompleteEvent)] HRESULT SpeakCompleteEvent ([out, retval]long *Handle); | 
|  | [id (DISPID_SVIsUISupported)] HRESULT IsUISupported ([in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData,[out, retval] VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SVDisplayUI)] HRESULT DisplayUI ([in]long hWndParent,[in]BSTR Title,[in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData); | 
|  | }; | 
|  |  | 
|  | [object, uuid (8be47b07-57f6-11d2-9eee-00c04f797396), dual, pointer_default (unique)] | 
|  | interface ISpeechVoiceStatus : IDispatch { | 
|  | [propget, id (DISPID_SVSCurrentStreamNumber)] HRESULT CurrentStreamNumber ([out, retval] long *StreamNumber); | 
|  | [propget, id (DISPID_SVSLastStreamNumberQueued)] HRESULT LastStreamNumberQueued ([out, retval] long *StreamNumber); | 
|  | [propget, id (DISPID_SVSLastResult)] HRESULT LastHResult ([out, retval]long *HResult); | 
|  | [propget, id (DISPID_SVSRunningState)] HRESULT RunningState ([out, retval] SpeechRunState *State); | 
|  | [propget, id (DISPID_SVSInputWordPosition)] HRESULT InputWordPosition ([out, retval] long *Position); | 
|  | [propget, id (DISPID_SVSInputWordLength)] HRESULT InputWordLength ([out, retval] long *Length); | 
|  | [propget, id (DISPID_SVSInputSentencePosition)] HRESULT InputSentencePosition ([out, retval] long *Position); | 
|  | [propget, id (DISPID_SVSInputSentenceLength)] HRESULT InputSentenceLength ([out, retval] long *Length); | 
|  | [propget, id (DISPID_SVSLastBookmark)] HRESULT LastBookmark ([out, retval] BSTR *Bookmark); | 
|  | [propget, id (DISPID_SVSLastBookmarkId), hidden] HRESULT LastBookmarkId ([out, retval] long *BookmarkId); | 
|  | [propget, id (DISPID_SVSPhonemeId)] HRESULT PhonemeId ([out, retval] short *PhoneId); | 
|  | [propget, id (DISPID_SVSVisemeId)] HRESULT VisemeId ([out, retval] short *VisemeId); | 
|  | }; | 
|  |  | 
|  | typedef enum SpeechVisemeType { | 
|  | SVP_0 = 0, | 
|  | SVP_1, | 
|  | SVP_2, | 
|  | SVP_3, | 
|  | SVP_4, | 
|  | SVP_5, | 
|  | SVP_6, | 
|  | SVP_7, | 
|  | SVP_8, | 
|  | SVP_9, | 
|  | SVP_10, | 
|  | SVP_11, | 
|  | SVP_12, | 
|  | SVP_13, | 
|  | SVP_14, | 
|  | SVP_15, | 
|  | SVP_16, | 
|  | SVP_17, | 
|  | SVP_18, | 
|  | SVP_19, | 
|  | SVP_20, | 
|  | SVP_21, | 
|  | } SpeechVisemeType; | 
|  |  | 
|  | typedef enum SpeechVisemeFeature { | 
|  | SVF_None = 0, | 
|  | SVF_Stressed = SPVFEATURE_STRESSED, | 
|  | SVF_Emphasis = SPVFEATURE_EMPHASIS | 
|  | } SpeechVisemeFeature; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechVoiceEvent { | 
|  | DISPID_SVEStreamStart = 1, | 
|  | DISPID_SVEStreamEnd, | 
|  | DISPID_SVEVoiceChange, | 
|  | DISPID_SVEBookmark, | 
|  | DISPID_SVEWord, | 
|  | DISPID_SVEPhoneme, | 
|  | DISPID_SVESentenceBoundary, | 
|  | DISPID_SVEViseme, | 
|  | DISPID_SVEAudioLevel, | 
|  | DISPID_SVEEnginePrivate | 
|  | } DISPID_SpeechVoiceEvent; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecognizer { | 
|  | DISPID_SRRecognizer = 1, | 
|  | DISPID_SRAllowAudioInputFormatChangesOnNextSet, | 
|  | DISPID_SRAudioInput, | 
|  | DISPID_SRAudioInputStream, | 
|  | DISPID_SRIsShared, | 
|  | DISPID_SRState, | 
|  | DISPID_SRStatus, | 
|  | DISPID_SRProfile, | 
|  | DISPID_SREmulateRecognition, | 
|  | DISPID_SRCreateRecoContext, | 
|  | DISPID_SRGetFormat, | 
|  | DISPID_SRSetPropertyNumber, | 
|  | DISPID_SRGetPropertyNumber, | 
|  | DISPID_SRSetPropertyString, | 
|  | DISPID_SRGetPropertyString, | 
|  | DISPID_SRIsUISupported, | 
|  | DISPID_SRDisplayUI, | 
|  | DISPID_SRGetRecognizers, | 
|  | DISPID_SVGetAudioInputs, | 
|  | DISPID_SVGetProfiles | 
|  | } DISPID_SpeechRecognizer; | 
|  |  | 
|  | typedef enum SpeechRecognizerState { | 
|  | SRSInactive = SPRST_INACTIVE, | 
|  | SRSActive = SPRST_ACTIVE, | 
|  | SRSActiveAlways = SPRST_ACTIVE_ALWAYS, | 
|  | SRSInactiveWithPurge = SPRST_INACTIVE_WITH_PURGE, | 
|  | } SpeechRecognizerState; | 
|  |  | 
|  | typedef enum SpeechDisplayAttributes { | 
|  | SDA_No_Trailing_Space = 0, | 
|  | SDA_One_Trailing_Space = SPAF_ONE_TRAILING_SPACE, | 
|  | SDA_Two_Trailing_Spaces = SPAF_TWO_TRAILING_SPACES, | 
|  | SDA_Consume_Leading_Spaces = SPAF_CONSUME_LEADING_SPACES | 
|  | } SpeechDisplayAttributes; | 
|  |  | 
|  | typedef enum SpeechFormatType { | 
|  | SFTInput = SPWF_INPUT, | 
|  | SFTSREngine = SPWF_SRENGINE | 
|  | } SpeechFormatType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecognizerStatus { | 
|  | DISPID_SRSAudioStatus = 1, | 
|  | DISPID_SRSCurrentStreamPosition, | 
|  | DISPID_SRSCurrentStreamNumber, | 
|  | DISPID_SRSNumberOfActiveRules, | 
|  | DISPID_SRSClsidEngine, | 
|  | DISPID_SRSSupportedLanguages | 
|  | } DISPID_SpeechRecognizerStatus; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecoContext { | 
|  | DISPID_SRCRecognizer = 1, | 
|  | DISPID_SRCAudioInInterferenceStatus, | 
|  | DISPID_SRCRequestedUIType, | 
|  | DISPID_SRCVoice, | 
|  | DISPID_SRAllowVoiceFormatMatchingOnNextSet, | 
|  | DISPID_SRCVoicePurgeEvent, | 
|  | DISPID_SRCEventInterests, | 
|  | DISPID_SRCCmdMaxAlternates, | 
|  | DISPID_SRCState, | 
|  | DISPID_SRCRetainedAudio, | 
|  | DISPID_SRCRetainedAudioFormat, | 
|  | DISPID_SRCPause, | 
|  | DISPID_SRCResume, | 
|  | DISPID_SRCCreateGrammar, | 
|  | DISPID_SRCCreateResultFromMemory, | 
|  | DISPID_SRCBookmark, | 
|  | DISPID_SRCSetAdaptationData | 
|  | } DISPID_SpeechRecoContext; | 
|  |  | 
|  | typedef enum SpeechRetainedAudioOptions { | 
|  | SRAONone = SPAO_NONE, | 
|  | SRAORetainAudio = SPAO_RETAIN_AUDIO | 
|  | } SpeechRetainedAudioOptions; | 
|  |  | 
|  | typedef enum SpeechBookmarkOptions { | 
|  | SBONone = SPBO_NONE, | 
|  | SBOPause = SPBO_PAUSE | 
|  | } SpeechBookmarkOptions; | 
|  |  | 
|  | typedef enum SpeechInterference { | 
|  | SINone = SPINTERFERENCE_NONE, | 
|  | SINoise = SPINTERFERENCE_NOISE, | 
|  | SINoSignal = SPINTERFERENCE_NOSIGNAL, | 
|  | SITooLoud = SPINTERFERENCE_TOOLOUD, | 
|  | SITooQuiet = SPINTERFERENCE_TOOQUIET, | 
|  | SITooFast = SPINTERFERENCE_TOOFAST, | 
|  | SITooSlow = SPINTERFERENCE_TOOSLOW | 
|  | } SpeechInterference; | 
|  |  | 
|  | typedef enum SpeechRecoEvents { | 
|  | SREStreamEnd = 0x1, | 
|  | SRESoundStart = 0x2, | 
|  | SRESoundEnd = 0x4, | 
|  | SREPhraseStart = 0x8, | 
|  | SRERecognition = 0x10, | 
|  | SREHypothesis = 0x20, | 
|  | SREBookmark = 0x40, | 
|  | SREPropertyNumChange = 0x80, | 
|  | SREPropertyStringChange = 0x100, | 
|  | SREFalseRecognition = 0x200, | 
|  | SREInterference = 0x400, | 
|  | SRERequestUI = 0x800, | 
|  | SREStateChange = 0x1000, | 
|  | SREAdaptation = 0x2000, | 
|  | SREStreamStart = 0x4000, | 
|  | SRERecoOtherContext = 0x8000, | 
|  | SREAudioLevel = 0x10000, | 
|  | SREPrivate = 0x40000, | 
|  | SREAllEvents = 0x5ffff | 
|  | } SpeechRecoEvents; | 
|  |  | 
|  | typedef enum SpeechRecoContextState { | 
|  | SRCS_Disabled = SPCS_DISABLED, | 
|  | SRCS_Enabled = SPCS_ENABLED | 
|  | } SpeechRecoContextState; | 
|  |  | 
|  | typedef [hidden] enum DISPIDSPRG { | 
|  | DISPID_SRGId = 1, | 
|  | DISPID_SRGRecoContext, | 
|  | DISPID_SRGState, | 
|  | DISPID_SRGRules, | 
|  | DISPID_SRGReset, | 
|  | DISPID_SRGCommit, | 
|  | DISPID_SRGCmdLoadFromFile, | 
|  | DISPID_SRGCmdLoadFromObject, | 
|  | DISPID_SRGCmdLoadFromResource, | 
|  | DISPID_SRGCmdLoadFromMemory, | 
|  | DISPID_SRGCmdLoadFromProprietaryGrammar, | 
|  | DISPID_SRGCmdSetRuleState, | 
|  | DISPID_SRGCmdSetRuleIdState, | 
|  | DISPID_SRGDictationLoad, | 
|  | DISPID_SRGDictationUnload, | 
|  | DISPID_SRGDictationSetState, | 
|  | DISPID_SRGSetWordSequenceData, | 
|  | DISPID_SRGSetTextSelection, | 
|  | DISPID_SRGIsPronounceable | 
|  | } DISPIDSPRG; | 
|  |  | 
|  | typedef enum SpeechLoadOption { | 
|  | SLOStatic = SPLO_STATIC, | 
|  | SLODynamic = SPLO_DYNAMIC | 
|  | } SpeechLoadOption; | 
|  |  | 
|  | typedef enum SpeechWordPronounceable { | 
|  | SWPUnknownWordUnpronounceable = SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE, | 
|  | SWPUnknownWordPronounceable = SPWP_UNKNOWN_WORD_PRONOUNCEABLE, | 
|  | SWPKnownWordPronounceable = SPWP_KNOWN_WORD_PRONOUNCEABLE | 
|  | } SpeechWordPronounceable; | 
|  |  | 
|  | typedef enum SpeechGrammarState { | 
|  | SGSEnabled = SPGS_ENABLED, | 
|  | SGSDisabled = SPGS_DISABLED, | 
|  | SGSExclusive = SPGS_EXCLUSIVE, | 
|  | } SpeechGrammarState; | 
|  |  | 
|  | typedef enum SpeechRuleState { | 
|  | SGDSInactive = SPRS_INACTIVE, | 
|  | SGDSActive = SPRS_ACTIVE, | 
|  | SGDSActiveWithAutoPause = SPRS_ACTIVE_WITH_AUTO_PAUSE, | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | SGDSActiveUserDelimited = SPRS_ACTIVE_USER_DELIMITED | 
|  | #endif | 
|  | } SpeechRuleState; | 
|  |  | 
|  | typedef enum SpeechRuleAttributes { | 
|  | SRATopLevel = SPRAF_TopLevel, | 
|  | SRADefaultToActive = SPRAF_Active, | 
|  | SRAExport = SPRAF_Export, | 
|  | SRAImport = SPRAF_Import, | 
|  | SRAInterpreter = SPRAF_Interpreter, | 
|  | SRADynamic = SPRAF_Dynamic, | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | SRARoot = SPRAF_Root | 
|  | #endif | 
|  | } SpeechRuleAttributes; | 
|  |  | 
|  | typedef enum SpeechGrammarWordType { | 
|  | SGDisplay = SPWT_DISPLAY, | 
|  | SGLexical = SPWT_LEXICAL, | 
|  | SGPronounciation = SPWT_PRONUNCIATION, | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | SGLexicalNoSpecialChars = SPWT_LEXICAL_NO_SPECIAL_CHARS | 
|  | #endif | 
|  | } SpeechGrammarWordType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecoContextEvents { | 
|  | DISPID_SRCEStartStream = 1, | 
|  | DISPID_SRCEEndStream, | 
|  | DISPID_SRCEBookmark, | 
|  | DISPID_SRCESoundStart, | 
|  | DISPID_SRCESoundEnd, | 
|  | DISPID_SRCEPhraseStart, | 
|  | DISPID_SRCERecognition, | 
|  | DISPID_SRCEHypothesis, | 
|  | DISPID_SRCEPropertyNumberChange, | 
|  | DISPID_SRCEPropertyStringChange, | 
|  | DISPID_SRCEFalseRecognition, | 
|  | DISPID_SRCEInterference, | 
|  | DISPID_SRCERequestUI, | 
|  | DISPID_SRCERecognizerStateChange, | 
|  | DISPID_SRCEAdaptation, | 
|  | DISPID_SRCERecognitionForOtherContext, | 
|  | DISPID_SRCEAudioLevel, | 
|  | DISPID_SRCEEnginePrivate | 
|  | } DISPID_SpeechRecoContextEvents; | 
|  |  | 
|  | typedef enum SpeechRecognitionType { | 
|  | SRTStandard = 0, | 
|  | SRTAutopause = SPREF_AutoPause, | 
|  | SRTEmulated = SPREF_Emulated | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | , | 
|  | SRTSMLTimeout = SPREF_SMLTimeout, | 
|  | SRTExtendableParse = SPREF_ExtendableParse, | 
|  | SRTReSent = SPREF_ReSent | 
|  | #endif | 
|  | } SpeechRecognitionType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechGrammarRule { | 
|  | DISPID_SGRAttributes = 1, | 
|  | DISPID_SGRInitialState, | 
|  | DISPID_SGRName, | 
|  | DISPID_SGRId, | 
|  | DISPID_SGRClear, | 
|  | DISPID_SGRAddResource, | 
|  | DISPID_SGRAddState | 
|  | } DISPID_SpeechGrammarRule; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechGrammarRules { | 
|  | DISPID_SGRsCount = 1, | 
|  | DISPID_SGRsDynamic, | 
|  | DISPID_SGRsAdd, | 
|  | DISPID_SGRsCommit, | 
|  | DISPID_SGRsCommitAndSave, | 
|  | DISPID_SGRsFindRule, | 
|  | DISPID_SGRsItem = DISPID_VALUE, | 
|  | DISPID_SGRs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechGrammarRules; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechGrammarRuleState { | 
|  | DISPID_SGRSRule = 1, | 
|  | DISPID_SGRSTransitions, | 
|  | DISPID_SGRSAddWordTransition, | 
|  | DISPID_SGRSAddRuleTransition, | 
|  | DISPID_SGRSAddSpecialTransition | 
|  | } DISPID_SpeechGrammarRuleState; | 
|  |  | 
|  | typedef enum SpeechSpecialTransitionType { | 
|  | SSTTWildcard = 1, | 
|  | SSTTDictation, | 
|  | SSTTTextBuffer | 
|  | } SpeechSpecialTransitionType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechGrammarRuleStateTransitions { | 
|  | DISPID_SGRSTsCount = 1, | 
|  | DISPID_SGRSTsItem = DISPID_VALUE, | 
|  | DISPID_SGRSTs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechGrammarRuleStateTransitions; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechGrammarRuleStateTransition { | 
|  | DISPID_SGRSTType = 1, | 
|  | DISPID_SGRSTText, | 
|  | DISPID_SGRSTRule, | 
|  | DISPID_SGRSTWeight, | 
|  | DISPID_SGRSTPropertyName, | 
|  | DISPID_SGRSTPropertyId, | 
|  | DISPID_SGRSTPropertyValue, | 
|  | DISPID_SGRSTNextState | 
|  | } DISPID_SpeechGrammarRuleStateTransition; | 
|  |  | 
|  | typedef enum SpeechGrammarRuleStateTransitionType { | 
|  | SGRSTTEpsilon = 0, | 
|  | SGRSTTWord, | 
|  | SGRSTTRule, | 
|  | SGRSTTDictation, | 
|  | SGRSTTWildcard, | 
|  | SGRSTTTextBuffer | 
|  | } SpeechGrammarRuleStateTransitionType; | 
|  |  | 
|  | typedef [hidden] enum DISPIDSPTSI { | 
|  | DISPIDSPTSI_ActiveOffset = 1, | 
|  | DISPIDSPTSI_ActiveLength, | 
|  | DISPIDSPTSI_SelectionOffset, | 
|  | DISPIDSPTSI_SelectionLength | 
|  | } DISPIDSPTSI; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecoResult { | 
|  | DISPID_SRRRecoContext = 1, | 
|  | DISPID_SRRTimes, | 
|  | DISPID_SRRAudioFormat, | 
|  | DISPID_SRRPhraseInfo, | 
|  | DISPID_SRRAlternates, | 
|  | DISPID_SRRAudio, | 
|  | DISPID_SRRSpeakAudio, | 
|  | DISPID_SRRSaveToMemory, | 
|  | DISPID_SRRDiscardResultInfo | 
|  | } DISPID_SpeechRecoResult; | 
|  |  | 
|  | typedef enum SpeechDiscardType { | 
|  | SDTProperty = SPDF_PROPERTY, | 
|  | SDTReplacement = SPDF_REPLACEMENT, | 
|  | SDTRule = SPDF_RULE, | 
|  | SDTDisplayText = SPDF_DISPLAYTEXT, | 
|  | SDTLexicalForm = SPDF_LEXICALFORM, | 
|  | SDTPronunciation = SPDF_PRONUNCIATION, | 
|  | SDTAudio = SPDF_AUDIO, | 
|  | SDTAlternates = SPDF_ALTERNATES, | 
|  | SDTAll = SPDF_ALL | 
|  | } SpeechDiscardType; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | typedef enum SpeechEmulationCompareFlags { | 
|  | SECFIgnoreCase = 0x1, | 
|  | SECFIgnoreKanaType = 0x10000, | 
|  | SECFIgnoreWidth = 0x20000, | 
|  | SECFNoSpecialChars = 0x20000000, | 
|  | SECFEmulateResult = 0x40000000, | 
|  | SECFDefault = SECFIgnoreCase | SECFIgnoreKanaType | SECFIgnoreWidth | 
|  | } SpeechEmulationCompareFlags; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechXMLRecoResult { | 
|  | DISPID_SRRGetXMLResult = DISPID_SRRDiscardResultInfo + 1, | 
|  | DISPID_SRRGetXMLErrorInfo = DISPID_SRRGetXMLResult + 1 | 
|  | } DISPID_SpeechXMLRecoResult; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecoResult2 { | 
|  | DISPID_SRRSetTextFeedback = DISPID_SRRGetXMLErrorInfo + 1 | 
|  | } DISPID_SpeechRecoResult2; | 
|  | #endif | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseBuilder { | 
|  | DISPID_SPPBRestorePhraseFromMemory = 1 | 
|  | } DISPID_SpeechPhraseBuilder; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechRecoResultTimes { | 
|  | DISPID_SRRTStreamTime = 1, | 
|  | DISPID_SRRTLength, | 
|  | DISPID_SRRTTickCount, | 
|  | DISPID_SRRTOffsetFromStart | 
|  | } DISPID_SpeechRecoResultTimes; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseAlternate { | 
|  | DISPID_SPARecoResult = 1, | 
|  | DISPID_SPAStartElementInResult, | 
|  | DISPID_SPANumberOfElementsInResult, | 
|  | DISPID_SPAPhraseInfo, | 
|  | DISPID_SPACommit | 
|  | } DISPID_SpeechPhraseAlternate; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseAlternates { | 
|  | DISPID_SPAsCount = 1, | 
|  | DISPID_SPAsItem = DISPID_VALUE, | 
|  | DISPID_SPAs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechPhraseAlternates; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseInfo { | 
|  | DISPID_SPILanguageId = 1, | 
|  | DISPID_SPIGrammarId, | 
|  | DISPID_SPIStartTime, | 
|  | DISPID_SPIAudioStreamPosition, | 
|  | DISPID_SPIAudioSizeBytes, | 
|  | DISPID_SPIRetainedSizeBytes, | 
|  | DISPID_SPIAudioSizeTime, | 
|  | DISPID_SPIRule, | 
|  | DISPID_SPIProperties, | 
|  | DISPID_SPIElements, | 
|  | DISPID_SPIReplacements, | 
|  | DISPID_SPIEngineId, | 
|  | DISPID_SPIEnginePrivateData, | 
|  | DISPID_SPISaveToMemory, | 
|  | DISPID_SPIGetText, | 
|  | DISPID_SPIGetDisplayAttributes | 
|  | } DISPID_SpeechPhraseInfo; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseElement { | 
|  | DISPID_SPEAudioTimeOffset = 1, | 
|  | DISPID_SPEAudioSizeTime, | 
|  | DISPID_SPEAudioStreamOffset, | 
|  | DISPID_SPEAudioSizeBytes, | 
|  | DISPID_SPERetainedStreamOffset, | 
|  | DISPID_SPERetainedSizeBytes, | 
|  | DISPID_SPEDisplayText, | 
|  | DISPID_SPELexicalForm, | 
|  | DISPID_SPEPronunciation, | 
|  | DISPID_SPEDisplayAttributes, | 
|  | DISPID_SPERequiredConfidence, | 
|  | DISPID_SPEActualConfidence, | 
|  | DISPID_SPEEngineConfidence | 
|  | } DISPID_SpeechPhraseElement; | 
|  |  | 
|  | typedef enum SpeechEngineConfidence { | 
|  | SECLowConfidence = -1, | 
|  | SECNormalConfidence = 0, | 
|  | SECHighConfidence = 1 | 
|  | } SpeechEngineConfidence; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseElements { | 
|  | DISPID_SPEsCount = 1, | 
|  | DISPID_SPEsItem = DISPID_VALUE, | 
|  | DISPID_SPEs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechPhraseElements; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseReplacement { | 
|  | DISPID_SPRDisplayAttributes = 1, | 
|  | DISPID_SPRText, | 
|  | DISPID_SPRFirstElement, | 
|  | DISPID_SPRNumberOfElements | 
|  | } DISPID_SpeechPhraseReplacement; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseReplacements { | 
|  | DISPID_SPRsCount = 1, | 
|  | DISPID_SPRsItem = DISPID_VALUE, | 
|  | DISPID_SPRs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechPhraseReplacements; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseProperty { | 
|  | DISPID_SPPName = 1, | 
|  | DISPID_SPPId, | 
|  | DISPID_SPPValue, | 
|  | DISPID_SPPFirstElement, | 
|  | DISPID_SPPNumberOfElements, | 
|  | DISPID_SPPEngineConfidence, | 
|  | DISPID_SPPConfidence, | 
|  | DISPID_SPPParent, | 
|  | DISPID_SPPChildren | 
|  | } DISPID_SpeechPhraseProperty; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseProperties { | 
|  | DISPID_SPPsCount = 1, | 
|  | DISPID_SPPsItem = DISPID_VALUE, | 
|  | DISPID_SPPs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechPhraseProperties; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseRule { | 
|  | DISPID_SPRuleName = 1, | 
|  | DISPID_SPRuleId, | 
|  | DISPID_SPRuleFirstElement, | 
|  | DISPID_SPRuleNumberOfElements, | 
|  | DISPID_SPRuleParent, | 
|  | DISPID_SPRuleChildren, | 
|  | DISPID_SPRuleConfidence, | 
|  | DISPID_SPRuleEngineConfidence | 
|  | } DISPID_SpeechPhraseRule; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhraseRules { | 
|  | DISPID_SPRulesCount = 1, | 
|  | DISPID_SPRulesItem = DISPID_VALUE, | 
|  | DISPID_SPRules_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechPhraseRules; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechLexicon { | 
|  | DISPID_SLGenerationId = 1, | 
|  | DISPID_SLGetWords, | 
|  | DISPID_SLAddPronunciation, | 
|  | DISPID_SLAddPronunciationByPhoneIds, | 
|  | DISPID_SLRemovePronunciation, | 
|  | DISPID_SLRemovePronunciationByPhoneIds, | 
|  | DISPID_SLGetPronunciations, | 
|  | DISPID_SLGetGenerationChange | 
|  | } DISPID_SpeechLexicon; | 
|  |  | 
|  | typedef enum SpeechLexiconType { | 
|  | SLTUser = eLEXTYPE_USER, | 
|  | SLTApp = eLEXTYPE_APP | 
|  | } SpeechLexiconType; | 
|  |  | 
|  | typedef enum SpeechPartOfSpeech { | 
|  | SPSNotOverriden = SPPS_NotOverriden, | 
|  | SPSUnknown = SPPS_Unknown, | 
|  | SPSNoun = SPPS_Noun, | 
|  | SPSVerb = SPPS_Verb, | 
|  | SPSModifier = SPPS_Modifier, | 
|  | SPSFunction = SPPS_Function, | 
|  | SPSInterjection = SPPS_Interjection, | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | SPSLMA = SPPS_LMA, | 
|  | SPSSuppressWord = SPPS_SuppressWord | 
|  | #endif | 
|  | } SpeechPartOfSpeech; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechLexiconWords { | 
|  | DISPID_SLWsCount = 1, | 
|  | DISPID_SLWsItem = DISPID_VALUE, | 
|  | DISPID_SLWs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechLexiconWords; | 
|  |  | 
|  | typedef enum SpeechWordType { | 
|  | SWTAdded = eWORDTYPE_ADDED, | 
|  | SWTDeleted = eWORDTYPE_DELETED | 
|  | } SpeechWordType; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechLexiconWord { | 
|  | DISPID_SLWLangId = 1, | 
|  | DISPID_SLWType, | 
|  | DISPID_SLWWord, | 
|  | DISPID_SLWPronunciations | 
|  | } DISPID_SpeechLexiconWord; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechLexiconProns { | 
|  | DISPID_SLPsCount = 1, | 
|  | DISPID_SLPsItem = DISPID_VALUE, | 
|  | DISPID_SLPs_NewEnum = DISPID_NEWENUM | 
|  | } DISPID_SpeechLexiconProns; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechLexiconPronunciation { | 
|  | DISPID_SLPType = 1, | 
|  | DISPID_SLPLangId, | 
|  | DISPID_SLPPartOfSpeech, | 
|  | DISPID_SLPPhoneIds, | 
|  | DISPID_SLPSymbolic, | 
|  | } DISPID_SpeechLexiconPronunciation; | 
|  |  | 
|  | typedef [hidden] enum DISPID_SpeechPhoneConverter { | 
|  | DISPID_SPCLangId = 1, | 
|  | DISPID_SPCPhoneToId, | 
|  | DISPID_SPCIdToPhone | 
|  | } DISPID_SpeechPhoneConverter; | 
|  |  | 
|  | [uuid (A372ACD1-3bef-4bbd-8ffb-CB3E2B416AF8)] | 
|  | dispinterface _ISpeechVoiceEvents { | 
|  | properties: | 
|  | methods: | 
|  | [id (DISPID_SVEStreamStart)] void StartStream ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SVEStreamEnd)] void EndStream ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SVEVoiceChange)] void VoiceChange ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]ISpeechObjectToken *VoiceObjectToken); | 
|  | [id (DISPID_SVEBookmark)] void Bookmark ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]BSTR Bookmark,[in]long BookmarkId); | 
|  | [id (DISPID_SVEWord)] void Word ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long CharacterPosition,[in]long Length); | 
|  | [id (DISPID_SVESentenceBoundary)] void Sentence ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long CharacterPosition,[in]long Length); | 
|  | [id (DISPID_SVEPhoneme)] void Phoneme ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long Duration,[in]short NextPhoneId,[in]SpeechVisemeFeature Feature,[in]short CurrentPhoneId); | 
|  | [id (DISPID_SVEViseme)] void Viseme ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long Duration,[in]SpeechVisemeType NextVisemeId,[in]SpeechVisemeFeature Feature,[in]SpeechVisemeType CurrentVisemeId); | 
|  | [id (DISPID_SVEAudioLevel)] void AudioLevel ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long AudioLevel); | 
|  | [id (DISPID_SVEEnginePrivate)] void EnginePrivate ([in]long StreamNumber,[in]long StreamPosition,[in]VARIANT EngineData); | 
|  | }; | 
|  |  | 
|  | [object, uuid (2d5f1c0c-BD75-4b08-9478-3b11fea2586c), dual, pointer_default (unique)] | 
|  | interface ISpeechRecognizer : IDispatch { | 
|  | [propputref, id (DISPID_SRRecognizer)] HRESULT Recognizer ([in]ISpeechObjectToken *Recognizer); | 
|  | [propget, id (DISPID_SRRecognizer)] HRESULT Recognizer ([out, retval]ISpeechObjectToken **Recognizer); | 
|  | [propput, hidden, id (DISPID_SRAllowAudioInputFormatChangesOnNextSet)] HRESULT AllowAudioInputFormatChangesOnNextSet ([in] VARIANT_BOOL Allow); | 
|  | [propget, hidden, id (DISPID_SRAllowAudioInputFormatChangesOnNextSet)] HRESULT AllowAudioInputFormatChangesOnNextSet ([out, retval] VARIANT_BOOL *Allow); | 
|  | [propputref, id (DISPID_SRAudioInput)] HRESULT AudioInput ([in, defaultvalue (0)]ISpeechObjectToken *AudioInput); | 
|  | [propget, id (DISPID_SRAudioInput)] HRESULT AudioInput ([out, retval]ISpeechObjectToken **AudioInput); | 
|  | [propputref, id (DISPID_SRAudioInputStream)] HRESULT AudioInputStream ([in, defaultvalue (0)]ISpeechBaseStream *AudioInputStream); | 
|  | [propget, id (DISPID_SRAudioInputStream)] HRESULT AudioInputStream ([out, retval]ISpeechBaseStream **AudioInputStream); | 
|  | [propget, id (DISPID_SRIsShared)] HRESULT IsShared ([out, retval]VARIANT_BOOL *Shared); | 
|  | [propput, id (DISPID_SRState)] HRESULT State ([in] SpeechRecognizerState State); | 
|  | [propget, id (DISPID_SRState)] HRESULT State ([out, retval] SpeechRecognizerState *State); | 
|  | [propget, id (DISPID_SRStatus)] HRESULT Status ([out, retval]ISpeechRecognizerStatus **Status); | 
|  | [propputref, id (DISPID_SRProfile)] HRESULT Profile ([in, defaultvalue (0)]ISpeechObjectToken *Profile); | 
|  | [propget, id (DISPID_SRProfile)] HRESULT Profile ([out, retval]ISpeechObjectToken **Profile); | 
|  | [id (DISPID_SREmulateRecognition)] HRESULT EmulateRecognition ([in]VARIANT TextElements,[in, defaultvalue (NULL)]VARIANT *ElementDisplayAttributes,[in, defaultvalue (0)]long LanguageId); | 
|  | [id (DISPID_SRCreateRecoContext)] HRESULT CreateRecoContext ([out, retval]ISpeechRecoContext **NewContext); | 
|  | [id (DISPID_SRGetFormat)] HRESULT GetFormat ([in] SpeechFormatType Type,[out, retval]ISpeechAudioFormat **Format); | 
|  | [id (DISPID_SRSetPropertyNumber), hidden] HRESULT SetPropertyNumber ([in]const BSTR Name,[in]long Value,[out, retval]VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SRGetPropertyNumber), hidden] HRESULT GetPropertyNumber ([in]const BSTR Name,[in, out]long *Value,[out, retval]VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SRSetPropertyString), hidden] HRESULT SetPropertyString ([in]const BSTR Name,[in]const BSTR Value,[out, retval]VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SRGetPropertyString), hidden] HRESULT GetPropertyString ([in]const BSTR Name,[in, out]BSTR *Value,[out, retval]VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SRIsUISupported)] HRESULT IsUISupported ([in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData,[out, retval] VARIANT_BOOL *Supported); | 
|  | [id (DISPID_SRDisplayUI)] HRESULT DisplayUI ([in]long hWndParent,[in]BSTR Title,[in]const BSTR TypeOfUI,[in, defaultvalue (NULL)]const VARIANT *ExtraData); | 
|  | [id (DISPID_SRGetRecognizers)] HRESULT GetRecognizers ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **ObjectTokens); | 
|  | [id (DISPID_SVGetAudioInputs)] HRESULT GetAudioInputs ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **ObjectTokens); | 
|  | [id (DISPID_SVGetProfiles)] HRESULT GetProfiles ([in, defaultvalue (L"")]BSTR RequiredAttributes,[in, defaultvalue (L"")]BSTR OptionalAttributes,[out, retval]ISpeechObjectTokens **ObjectTokens); | 
|  | }; | 
|  |  | 
|  | [object, uuid (BFF9E781-53ec-484e-BB8A-0e1b5551e35c), dual, pointer_default (unique)] | 
|  | interface ISpeechRecognizerStatus : IDispatch { | 
|  | [propget, id (DISPID_SRSAudioStatus)] HRESULT AudioStatus ([out, retval]ISpeechAudioStatus **AudioStatus); | 
|  | [propget, id (DISPID_SRSCurrentStreamPosition)] HRESULT CurrentStreamPosition ([out, retval]VARIANT *pCurrentStreamPos); | 
|  | [propget, id (DISPID_SRSCurrentStreamNumber)] HRESULT CurrentStreamNumber ([out, retval]long *StreamNumber); | 
|  | [propget, id (DISPID_SRSNumberOfActiveRules)] HRESULT NumberOfActiveRules ([out, retval]long *NumberOfActiveRules); | 
|  | [propget, id (DISPID_SRSClsidEngine)] HRESULT ClsidEngine ([out, retval]BSTR *ClsidEngine); | 
|  | [propget, id (DISPID_SRSSupportedLanguages)] HRESULT SupportedLanguages ([out, retval]VARIANT *SupportedLanguages); | 
|  | }; | 
|  |  | 
|  | [object, uuid (580aa49d-7e1e-4809-B8E2-57da806104b8), dual, pointer_default (unique)] | 
|  | interface ISpeechRecoContext : IDispatch { | 
|  | [propget, id (DISPID_SRCRecognizer)] HRESULT Recognizer ([out, retval]ISpeechRecognizer **Recognizer); | 
|  | [propget, id (DISPID_SRCAudioInInterferenceStatus)] HRESULT AudioInputInterferenceStatus ([out, retval]SpeechInterference *Interference); | 
|  | [propget, id (DISPID_SRCRequestedUIType)] HRESULT RequestedUIType ([out, retval]BSTR *UIType); | 
|  | [propputref, id (DISPID_SRCVoice)] HRESULT Voice ([in]ISpeechVoice *Voice); | 
|  | [propget, id (DISPID_SRCVoice)] HRESULT Voice ([out, retval]ISpeechVoice **Voice); | 
|  | [propput, hidden, id (DISPID_SRAllowVoiceFormatMatchingOnNextSet)] HRESULT AllowVoiceFormatMatchingOnNextSet ([in] VARIANT_BOOL Allow); | 
|  | [propget, hidden, id (DISPID_SRAllowVoiceFormatMatchingOnNextSet)] HRESULT AllowVoiceFormatMatchingOnNextSet ([out, retval] VARIANT_BOOL *pAllow); | 
|  | [propput, id (DISPID_SRCVoicePurgeEvent)] HRESULT VoicePurgeEvent ([in]SpeechRecoEvents EventInterest); | 
|  | [propget, id (DISPID_SRCVoicePurgeEvent)] HRESULT VoicePurgeEvent ([out, retval]SpeechRecoEvents *EventInterest); | 
|  | [propput, id (DISPID_SRCEventInterests)] HRESULT EventInterests ([in]SpeechRecoEvents EventInterest); | 
|  | [propget, id (DISPID_SRCEventInterests)] HRESULT EventInterests ([out, retval]SpeechRecoEvents *EventInterest); | 
|  | [propput, id (DISPID_SRCCmdMaxAlternates)] HRESULT CmdMaxAlternates ([in] long MaxAlternates); | 
|  | [propget, id (DISPID_SRCCmdMaxAlternates)] HRESULT CmdMaxAlternates ([out, retval] long *MaxAlternates); | 
|  | [propput, id (DISPID_SRCState)] HRESULT State ([in] SpeechRecoContextState State); | 
|  | [propget, id (DISPID_SRCState)] HRESULT State ([out, retval] SpeechRecoContextState *State); | 
|  | [propput, id (DISPID_SRCRetainedAudio)] HRESULT RetainedAudio ([in]SpeechRetainedAudioOptions Option); | 
|  | [propget, id (DISPID_SRCRetainedAudio)] HRESULT RetainedAudio ([out, retval]SpeechRetainedAudioOptions *Option); | 
|  | [propputref, id (DISPID_SRCRetainedAudioFormat)] HRESULT RetainedAudioFormat ([in] ISpeechAudioFormat *Format); | 
|  | [propget, id (DISPID_SRCRetainedAudioFormat)] HRESULT RetainedAudioFormat ([out, retval] ISpeechAudioFormat **Format); | 
|  | [id (DISPID_SRCPause)] HRESULT Pause (void); | 
|  | [id (DISPID_SRCResume)] HRESULT Resume (void); | 
|  | [id (DISPID_SRCCreateGrammar)] HRESULT CreateGrammar ([in, defaultvalue (0)]VARIANT GrammarId,[out, retval]ISpeechRecoGrammar **Grammar); | 
|  | [id (DISPID_SRCCreateResultFromMemory)] HRESULT CreateResultFromMemory ([in]VARIANT *ResultBlock,[out, retval]ISpeechRecoResult **Result); | 
|  | [id (DISPID_SRCBookmark)] HRESULT Bookmark ([in]SpeechBookmarkOptions Options,[in]VARIANT StreamPos,[in]VARIANT BookmarkId); | 
|  | [id (DISPID_SRCSetAdaptationData)] HRESULT SetAdaptationData ([in]BSTR AdaptationString); | 
|  | }; | 
|  |  | 
|  | [object, uuid (B6D6F79F-2158-4e50-B5BC-9a9ccd852a09), dual, pointer_default (unique)] | 
|  | interface ISpeechRecoGrammar : IDispatch { | 
|  | [propget, id (DISPID_SRGId)] HRESULT Id ([out, retval]VARIANT *Id); | 
|  | [propget, id (DISPID_SRGRecoContext)] HRESULT RecoContext ([out, retval] ISpeechRecoContext **RecoContext); | 
|  | [propput, id (DISPID_SRGState)] HRESULT State ([in]SpeechGrammarState State); | 
|  | [propget, id (DISPID_SRGState)] HRESULT State ([out, retval]SpeechGrammarState *State); | 
|  | [propget, id (DISPID_SRGRules)] HRESULT Rules ([out, retval]ISpeechGrammarRules **Rules); | 
|  | [id (DISPID_SRGReset)] HRESULT Reset ([in, defaultvalue (0)]SpeechLanguageId NewLanguage); | 
|  | [id (DISPID_SRGCmdLoadFromFile)] HRESULT CmdLoadFromFile ([in]const BSTR FileName,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGCmdLoadFromObject)] HRESULT CmdLoadFromObject ([in]const BSTR ClassId,[in]const BSTR GrammarName,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGCmdLoadFromResource)] HRESULT CmdLoadFromResource ([in]long hModule,[in]VARIANT ResourceName,[in]VARIANT ResourceType,[in]SpeechLanguageId LanguageId,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGCmdLoadFromMemory)] HRESULT CmdLoadFromMemory ([in] VARIANT GrammarData,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGCmdLoadFromProprietaryGrammar)] HRESULT CmdLoadFromProprietaryGrammar ([in]const BSTR ProprietaryGuid,[in]const BSTR ProprietaryString,[in]VARIANT ProprietaryData,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGCmdSetRuleState)] HRESULT CmdSetRuleState ([in]const BSTR Name,[in]SpeechRuleState State); | 
|  | [id (DISPID_SRGCmdSetRuleIdState)] HRESULT CmdSetRuleIdState ([in]long RuleId,[in]SpeechRuleState State); | 
|  | [id (DISPID_SRGDictationLoad)] HRESULT DictationLoad ([in, defaultvalue (L"")] const BSTR TopicName,[in, defaultvalue (SLOStatic)]SpeechLoadOption LoadOption); | 
|  | [id (DISPID_SRGDictationUnload)] HRESULT DictationUnload (void); | 
|  | [id (DISPID_SRGDictationSetState)] HRESULT DictationSetState ([in]SpeechRuleState State); | 
|  | [id (DISPID_SRGSetWordSequenceData)] HRESULT SetWordSequenceData ([in]const BSTR Text,[in]long TextLength,[in]ISpeechTextSelectionInformation *Info); | 
|  | [id (DISPID_SRGSetTextSelection)] HRESULT SetTextSelection ([in]ISpeechTextSelectionInformation *Info); | 
|  | [id (DISPID_SRGIsPronounceable)] HRESULT IsPronounceable ([in]const BSTR Word,[out, retval]SpeechWordPronounceable *WordPronounceable); | 
|  | }; | 
|  |  | 
|  | [uuid (7b8fcb42-0e9d-4f00-A048-7b04d6179d3d)] | 
|  | dispinterface _ISpeechRecoContextEvents { | 
|  | properties: | 
|  | methods: | 
|  | [id (DISPID_SRCEStartStream)] void StartStream ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCEEndStream)] void EndStream ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]VARIANT_BOOL StreamReleased); | 
|  | [id (DISPID_SRCEBookmark)] void Bookmark ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]VARIANT BookmarkId,[in]SpeechBookmarkOptions Options); | 
|  | [id (DISPID_SRCESoundStart)] void SoundStart ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCESoundEnd)] void SoundEnd ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCEPhraseStart)] void PhraseStart ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCERecognition)] void Recognition ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]SpeechRecognitionType RecognitionType,[in]ISpeechRecoResult *Result); | 
|  | [id (DISPID_SRCEHypothesis)] void Hypothesis ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]ISpeechRecoResult *Result); | 
|  | [id (DISPID_SRCEPropertyNumberChange)] void PropertyNumberChange ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]BSTR PropertyName,[in]long NewNumberValue); | 
|  | [id (DISPID_SRCEPropertyStringChange)] void PropertyStringChange ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]BSTR PropertyName,[in]BSTR NewStringValue); | 
|  | [id (DISPID_SRCEFalseRecognition)] void FalseRecognition ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]ISpeechRecoResult *Result); | 
|  | [id (DISPID_SRCEInterference)] void Interference ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]SpeechInterference Interference); | 
|  | [id (DISPID_SRCERequestUI)] void RequestUI ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]BSTR UIType); | 
|  | [id (DISPID_SRCERecognizerStateChange)] void RecognizerStateChange ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]SpeechRecognizerState NewState); | 
|  | [id (DISPID_SRCEAdaptation)] void Adaptation ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCERecognitionForOtherContext)] void RecognitionForOtherContext ([in]long StreamNumber,[in]VARIANT StreamPosition); | 
|  | [id (DISPID_SRCEAudioLevel)] void AudioLevel ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]long AudioLevel); | 
|  | [id (DISPID_SRCEEnginePrivate)] void EnginePrivate ([in]long StreamNumber,[in]VARIANT StreamPosition,[in]VARIANT EngineData); | 
|  | }; | 
|  |  | 
|  | [object, uuid (AFE719CF-5dd1-44f2-999c-7a399f1cfccc), dual, pointer_default (unique)] | 
|  | interface ISpeechGrammarRule : IDispatch { | 
|  | [propget, id (DISPID_SGRAttributes)] HRESULT Attributes ([out, retval] SpeechRuleAttributes *Attributes); | 
|  | [propget, id (DISPID_SGRInitialState)] HRESULT InitialState ([out, retval] ISpeechGrammarRuleState **State); | 
|  | [propget, id (DISPID_SGRName)] HRESULT Name ([out, retval] BSTR *Name); | 
|  | [propget, id (DISPID_SGRId)] HRESULT Id ([out, retval] long *Id); | 
|  | [id (DISPID_SGRClear)] HRESULT Clear (); | 
|  | [id (DISPID_SGRAddResource)] HRESULT AddResource ([in]const BSTR ResourceName,[in]const BSTR ResourceValue); | 
|  | [id (DISPID_SGRAddState)] HRESULT AddState ([out, retval] ISpeechGrammarRuleState **State); | 
|  | }; | 
|  |  | 
|  | [object, uuid (6ffa3b44-FC2D-40d1-8afc-32911c7f1ad1), dual, pointer_default (unique)] | 
|  | interface ISpeechGrammarRules : IDispatch { | 
|  | [propget, id (DISPID_SGRsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SGRsFindRule)] HRESULT FindRule ([in]VARIANT RuleNameOrId,[out, retval]ISpeechGrammarRule **Rule); | 
|  | [id (DISPID_SGRsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechGrammarRule **Rule); | 
|  | [propget, id (DISPID_SGRs_NewEnum), restricted] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | [propget, id (DISPID_SGRsDynamic)] HRESULT Dynamic ([out, retval] VARIANT_BOOL *Dynamic); | 
|  | [id (DISPID_SGRsAdd)] HRESULT Add ([in] BSTR RuleName,[in] SpeechRuleAttributes Attributes,[in, defaultvalue (0)] long RuleId,[out, retval] ISpeechGrammarRule **Rule); | 
|  | [id (DISPID_SGRsCommit)] HRESULT Commit (void); | 
|  | [id (DISPID_SGRsCommitAndSave)] HRESULT CommitAndSave ([out] BSTR *ErrorText,[out, retval] VARIANT *SaveStream); | 
|  | }; | 
|  |  | 
|  | [object, uuid (D4286F2C-EE67-45ae-B928-28d695362eda), dual, pointer_default (unique)] | 
|  | interface ISpeechGrammarRuleState : IDispatch { | 
|  | [propget, id (DISPID_SGRSRule)] HRESULT Rule ([out, retval] ISpeechGrammarRule **Rule); | 
|  | [propget, id (DISPID_SGRSTransitions)] HRESULT Transitions ([out, retval] ISpeechGrammarRuleStateTransitions **Transitions); | 
|  | [id (DISPID_SGRSAddWordTransition)] HRESULT AddWordTransition ([in]ISpeechGrammarRuleState *DestState,[in]const BSTR Words, [in, defaultvalue (L" ")]const BSTR Separators, [in, defaultvalue (SGLexical)]SpeechGrammarWordType Type, [in, defaultvalue (L"")]const BSTR PropertyName, [in, defaultvalue (0)]long PropertyId, [in, defaultvalue (0)]VARIANT *PropertyValue, [in, defaultvalue (1)]float Weight); | 
|  | [id (DISPID_SGRSAddRuleTransition)] HRESULT AddRuleTransition ([in]ISpeechGrammarRuleState *DestinationState,[in]ISpeechGrammarRule *Rule,[in, defaultvalue (L"")]const BSTR PropertyName,[in, defaultvalue (0)]long PropertyId,[in, defaultvalue (0)]VARIANT *PropertyValue,[in, defaultvalue (1)]float Weight); | 
|  | [id (DISPID_SGRSAddSpecialTransition)] HRESULT AddSpecialTransition ([in]ISpeechGrammarRuleState *DestinationState,[in]SpeechSpecialTransitionType Type,[in, defaultvalue (L"")]const BSTR PropertyName,[in, defaultvalue (0)]long PropertyId,[in, defaultvalue (0)]VARIANT *PropertyValue,[in, defaultvalue (1)]float Weight); | 
|  | }; | 
|  |  | 
|  | [object, uuid (EABCE657-75bc-44a2-AA7F-C56476742963), dual, pointer_default (unique)] | 
|  | interface ISpeechGrammarRuleStateTransitions : IDispatch { | 
|  | [propget, id (DISPID_SGRSTsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SGRSTsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechGrammarRuleStateTransition **Transition); | 
|  | [propget, restricted, id (DISPID_SGRSTs_NewEnum)] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (CAFD1DB1-41d1-4a06-9863-E2E81DA17A9A), dual, pointer_default (unique)] | 
|  | interface ISpeechGrammarRuleStateTransition : IDispatch { | 
|  | [propget, id (DISPID_SGRSTType)] HRESULT Type ([out, retval] SpeechGrammarRuleStateTransitionType *Type); | 
|  | [propget, id (DISPID_SGRSTText)] HRESULT Text ([out, retval] BSTR *Text); | 
|  | [propget, id (DISPID_SGRSTRule)] HRESULT Rule ([out, retval] ISpeechGrammarRule **Rule); | 
|  | [propget, id (DISPID_SGRSTWeight)] HRESULT Weight ([out, retval] VARIANT *Weight); | 
|  | [propget, id (DISPID_SGRSTPropertyName)] HRESULT PropertyName ([out, retval] BSTR *PropertyName); | 
|  | [propget, id (DISPID_SGRSTPropertyId)] HRESULT PropertyId ([out, retval] long *PropertyId); | 
|  | [propget, id (DISPID_SGRSTPropertyValue)] HRESULT PropertyValue ([out, retval] VARIANT *PropertyValue); | 
|  | [propget, id (DISPID_SGRSTNextState)] HRESULT NextState ([out, retval] ISpeechGrammarRuleState **NextState); | 
|  | }; | 
|  |  | 
|  | [object, uuid (3b9c7e7a-6eee-4ded-9092-11657279adbe), dual, pointer_default (unique)] | 
|  | interface ISpeechTextSelectionInformation : IDispatch { | 
|  | [propput, id (DISPIDSPTSI_ActiveOffset)] HRESULT ActiveOffset ([in]long ActiveOffset); | 
|  | [propget, id (DISPIDSPTSI_ActiveOffset)] HRESULT ActiveOffset ([out, retval]long *ActiveOffset); | 
|  | [propput, id (DISPIDSPTSI_ActiveLength)] HRESULT ActiveLength ([in]long ActiveLength); | 
|  | [propget, id (DISPIDSPTSI_ActiveLength)] HRESULT ActiveLength ([out, retval]long *ActiveLength); | 
|  | [propput, id (DISPIDSPTSI_SelectionOffset)] HRESULT SelectionOffset ([in]long SelectionOffset); | 
|  | [propget, id (DISPIDSPTSI_SelectionOffset)] HRESULT SelectionOffset ([out, retval]long *SelectionOffset); | 
|  | [propput, id (DISPIDSPTSI_SelectionLength)] HRESULT SelectionLength ([in]long SelectionLength); | 
|  | [propget, id (DISPIDSPTSI_SelectionLength)] HRESULT SelectionLength ([out, retval]long *SelectionLength); | 
|  | }; | 
|  |  | 
|  | [object, uuid (ED2879CF-CED9-4ee6-A534-DE0191D5468D), dual, pointer_default (unique)] | 
|  | interface ISpeechRecoResult : IDispatch { | 
|  | [propget, id (DISPID_SRRRecoContext)] HRESULT RecoContext ([out, retval]ISpeechRecoContext **RecoContext); | 
|  | [propget, id (DISPID_SRRTimes)] HRESULT Times ([out, retval]ISpeechRecoResultTimes **Times); | 
|  | [propputref, id (DISPID_SRRAudioFormat)] HRESULT AudioFormat ([in]ISpeechAudioFormat *Format); | 
|  | [propget, id (DISPID_SRRAudioFormat)] HRESULT AudioFormat ([out, retval]ISpeechAudioFormat **Format); | 
|  | [propget, id (DISPID_SRRPhraseInfo)] HRESULT PhraseInfo ([out, retval]ISpeechPhraseInfo **PhraseInfo); | 
|  | [id (DISPID_SRRAlternates)] HRESULT Alternates ([in] long RequestCount,[in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[out, retval] ISpeechPhraseAlternates **Alternates); | 
|  | [id (DISPID_SRRAudio)] HRESULT Audio ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[out, retval] ISpeechMemoryStream **Stream); | 
|  | [id (DISPID_SRRSpeakAudio)] HRESULT SpeakAudio ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[in, defaultvalue (SPF_DEFAULT)] SpeechVoiceSpeakFlags Flags,[out, retval]long *StreamNumber); | 
|  | [id (DISPID_SRRSaveToMemory)] HRESULT SaveToMemory ([out, retval] VARIANT *ResultBlock); | 
|  | [id (DISPID_SRRDiscardResultInfo)] HRESULT DiscardResultInfo ([in]SpeechDiscardType ValueTypes); | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [object, uuid (AAEC54AF-8f85-4924-944d-B79D39D72E19), dual, pointer_default (unique)] | 
|  | interface ISpeechXMLRecoResult : ISpeechRecoResult { | 
|  | [id (DISPID_SRRGetXMLResult)] HRESULT GetXMLResult ([in] SPXMLRESULTOPTIONS Options,[out, retval] BSTR *pResult); | 
|  | [id (DISPID_SRRGetXMLErrorInfo)] HRESULT GetXMLErrorInfo ([out] long *LineNumber,[out]BSTR *ScriptLine,[out]BSTR *Source,[out]BSTR *Description,[out]long *ResultCode,[out, retval]VARIANT_BOOL *IsError); | 
|  | }; | 
|  |  | 
|  | [object, uuid (8e0a246d-D3C8-45de-8657-04290c458c3c), dual, pointer_default (unique)] | 
|  | interface ISpeechRecoResult2: ISpeechRecoResult { | 
|  | [id (DISPID_SRRSetTextFeedback)] HRESULT SetTextFeedback ([in]BSTR Feedback,[in]VARIANT_BOOL WasSuccessful); | 
|  | } | 
|  |  | 
|  | [object, uuid (6d60eb64-ACED-40a6-BBF3-4e557f71dee2), dual, hidden, pointer_default (unique)] | 
|  | interface ISpeechRecoResultDispatch : IDispatch { | 
|  | [propget, id (DISPID_SRRRecoContext)] HRESULT RecoContext ([out, retval]ISpeechRecoContext **RecoContext); | 
|  | [propget, id (DISPID_SRRTimes)] HRESULT Times ([out, retval]ISpeechRecoResultTimes **Times); | 
|  | [propputref, id (DISPID_SRRAudioFormat)] HRESULT AudioFormat ([in]ISpeechAudioFormat *Format); | 
|  | [propget, id (DISPID_SRRAudioFormat)] HRESULT AudioFormat ([out, retval]ISpeechAudioFormat **Format); | 
|  | [propget, id (DISPID_SRRPhraseInfo)] HRESULT PhraseInfo ([out, retval]ISpeechPhraseInfo **PhraseInfo); | 
|  | [id (DISPID_SRRAlternates)] HRESULT Alternates ([in] long RequestCount,[in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[out, retval] ISpeechPhraseAlternates **Alternates); | 
|  | [id (DISPID_SRRAudio)] HRESULT Audio ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[out, retval] ISpeechMemoryStream **Stream); | 
|  | [id (DISPID_SRRSpeakAudio)] HRESULT SpeakAudio ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[in, defaultvalue (SPF_DEFAULT)] SpeechVoiceSpeakFlags Flags,[out, retval]long *StreamNumber); | 
|  | [id (DISPID_SRRSaveToMemory)] HRESULT SaveToMemory ([out, retval] VARIANT *ResultBlock); | 
|  | [id (DISPID_SRRDiscardResultInfo)] HRESULT DiscardResultInfo ([in]SpeechDiscardType ValueTypes); | 
|  | [id (DISPID_SRRGetXMLResult)] HRESULT GetXMLResult ([in] SPXMLRESULTOPTIONS Options,[out, retval] BSTR *pResult); | 
|  | [id (DISPID_SRRGetXMLErrorInfo)] HRESULT GetXMLErrorInfo ([out] long *LineNumber,[out]BSTR *ScriptLine,[out]BSTR *Source,[out]BSTR *Description,[out]HRESULT *ResultCode,[out, retval]VARIANT_BOOL *IsError); | 
|  | [id (DISPID_SRRSetTextFeedback)] HRESULT SetTextFeedback ([in] BSTR Feedback,[in] VARIANT_BOOL WasSuccessful); | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | [object, uuid (3b151836-DF3A-4e0a-846c-D2ADC9334333), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseInfoBuilder : IDispatch { | 
|  | [id (DISPID_SPPBRestorePhraseFromMemory)] HRESULT RestorePhraseFromMemory ([in] VARIANT *PhraseInMemory,[out, retval] ISpeechPhraseInfo **PhraseInfo); | 
|  | }; | 
|  |  | 
|  | [object, uuid (62b3b8fb-F6E7-41be-BDCB-056b1c29efc0), dual, pointer_default (unique)] | 
|  | interface ISpeechRecoResultTimes : IDispatch { | 
|  | [propget, id (DISPID_SRRTStreamTime)] HRESULT StreamTime ([out, retval]VARIANT *Time); | 
|  | [propget, id (DISPID_SRRTLength)] HRESULT Length ([out, retval]VARIANT *Length); | 
|  | [propget, id (DISPID_SRRTTickCount)] HRESULT TickCount ([out, retval]long *TickCount); | 
|  | [propget, id (DISPID_SRRTOffsetFromStart)] HRESULT OffsetFromStart ([out, retval]VARIANT *OffsetFromStart); | 
|  | }; | 
|  |  | 
|  | [object, uuid (27864a2a-2b9f-4cb8-92d3-0d2722fd1e73), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseAlternate : IDispatch { | 
|  | [propget, id (DISPID_SPARecoResult)] HRESULT RecoResult ([out, retval]ISpeechRecoResult **RecoResult); | 
|  | [propget, id (DISPID_SPAStartElementInResult)] HRESULT StartElementInResult ([out, retval]long *StartElement); | 
|  | [propget, id (DISPID_SPANumberOfElementsInResult)] HRESULT NumberOfElementsInResult ([out, retval]long *NumberOfElements); | 
|  | [propget, id (DISPID_SPAPhraseInfo)] HRESULT PhraseInfo ([out, retval]ISpeechPhraseInfo **PhraseInfo); | 
|  | [id (DISPID_SPACommit)] HRESULT Commit (void); | 
|  | }; | 
|  |  | 
|  | [object, uuid (B238B6D5-F276-4c3d-A6C1-2974801c3cc2), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseAlternates : IDispatch { | 
|  | [propget, id (DISPID_SPAsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SPAsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechPhraseAlternate **PhraseAlternate); | 
|  | [propget, restricted, id (DISPID_SPAs_NewEnum)] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (961559cf-4e67-4662-8bf0-D93F1FCD61B3), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseInfo : IDispatch { | 
|  | [propget, id (DISPID_SPILanguageId)] HRESULT LanguageId ([out, retval]long *LanguageId); | 
|  | [propget, id (DISPID_SPIGrammarId)] HRESULT GrammarId ([out, retval]VARIANT *GrammarId); | 
|  | [propget, id (DISPID_SPIStartTime)] HRESULT StartTime ([out, retval]VARIANT *StartTime); | 
|  | [propget, id (DISPID_SPIAudioStreamPosition)] HRESULT AudioStreamPosition ([out, retval]VARIANT *AudioStreamPosition); | 
|  | [propget, id (DISPID_SPIAudioSizeBytes)] HRESULT AudioSizeBytes ([out, retval]long *pAudioSizeBytes); | 
|  | [propget, id (DISPID_SPIRetainedSizeBytes)] HRESULT RetainedSizeBytes ([out, retval]long *RetainedSizeBytes); | 
|  | [propget, id (DISPID_SPIAudioSizeTime)] HRESULT AudioSizeTime ([out, retval]long *AudioSizeTime); | 
|  | [propget, id (DISPID_SPIRule)] HRESULT Rule ([out, retval]ISpeechPhraseRule **Rule); | 
|  | [propget, id (DISPID_SPIProperties)] HRESULT Properties ([out, retval]ISpeechPhraseProperties **Properties); | 
|  | [propget, id (DISPID_SPIElements)] HRESULT Elements ([out, retval]ISpeechPhraseElements **Elements); | 
|  | [propget, id (DISPID_SPIReplacements)] HRESULT Replacements ([out, retval]ISpeechPhraseReplacements **Replacements); | 
|  | [propget, id (DISPID_SPIEngineId)] HRESULT EngineId ([out, retval]BSTR *EngineIdGuid); | 
|  | [propget, id (DISPID_SPIEnginePrivateData)] HRESULT EnginePrivateData ([out, retval]VARIANT *PrivateData); | 
|  | [id (DISPID_SPISaveToMemory)] HRESULT SaveToMemory ([out, retval]VARIANT *PhraseBlock); | 
|  | [id (DISPID_SPIGetText)] HRESULT GetText ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[in, defaultvalue (-1)] VARIANT_BOOL UseReplacements,[out, retval]BSTR *Text); | 
|  | [id (DISPID_SPIGetDisplayAttributes)] HRESULT GetDisplayAttributes ([in, defaultvalue (0)] long StartElement,[in, defaultvalue (SPPR_ALL_ELEMENTS)] long Elements,[in, defaultvalue (-1)] VARIANT_BOOL UseReplacements,[out, retval]SpeechDisplayAttributes *DisplayAttributes); | 
|  | }; | 
|  |  | 
|  | [object, uuid (E6176F96-E373-4801-B223-3b62c068c0b4), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseElement : IDispatch { | 
|  | [propget, id (DISPID_SPEAudioTimeOffset)] HRESULT AudioTimeOffset ([out, retval]long *AudioTimeOffset); | 
|  | [propget, id (DISPID_SPEAudioSizeTime)] HRESULT AudioSizeTime ([out, retval]long *AudioSizeTime); | 
|  | [propget, id (DISPID_SPEAudioStreamOffset)] HRESULT AudioStreamOffset ([out, retval]long *AudioStreamOffset); | 
|  | [propget, id (DISPID_SPEAudioSizeBytes)] HRESULT AudioSizeBytes ([out, retval]long *AudioSizeBytes); | 
|  | [propget, id (DISPID_SPERetainedStreamOffset)] HRESULT RetainedStreamOffset ([out, retval]long *RetainedStreamOffset); | 
|  | [propget, id (DISPID_SPERetainedSizeBytes)] HRESULT RetainedSizeBytes ([out, retval]long *RetainedSizeBytes); | 
|  | [propget, id (DISPID_SPEDisplayText)] HRESULT DisplayText ([out, retval]BSTR *DisplayText); | 
|  | [propget, id (DISPID_SPELexicalForm)] HRESULT LexicalForm ([out, retval]BSTR *LexicalForm); | 
|  | [propget, id (DISPID_SPEPronunciation)] HRESULT Pronunciation ([out, retval]VARIANT *Pronunciation); | 
|  | [propget, id (DISPID_SPEDisplayAttributes)] HRESULT DisplayAttributes ([out, retval]SpeechDisplayAttributes *DisplayAttributes); | 
|  | [propget, id (DISPID_SPERequiredConfidence)] HRESULT RequiredConfidence ([out, retval]SpeechEngineConfidence *RequiredConfidence); | 
|  | [propget, id (DISPID_SPEActualConfidence)] HRESULT ActualConfidence ([out, retval]SpeechEngineConfidence *ActualConfidence); | 
|  | [propget, id (DISPID_SPEEngineConfidence)] HRESULT EngineConfidence ([out, retval]float *EngineConfidence); | 
|  | }; | 
|  |  | 
|  | [object, uuid (0626b328-3478-467d-A0B3-D0853B93DDA3), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseElements : IDispatch { | 
|  | [propget, id (DISPID_SPEsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SPEsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechPhraseElement **Element); | 
|  | [propget, restricted, id (DISPID_SPEs_NewEnum)] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (2890a410-53a7-4fb5-94ec-06d4998e3d02), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseReplacement : IDispatch { | 
|  | [propget, id (DISPID_SPRDisplayAttributes)] HRESULT DisplayAttributes ([out, retval]SpeechDisplayAttributes *DisplayAttributes); | 
|  | [propget, id (DISPID_SPRText)] HRESULT Text ([out, retval]BSTR *Text); | 
|  | [propget, id (DISPID_SPRFirstElement)] HRESULT FirstElement ([out, retval]long *FirstElement); | 
|  | [propget, id (DISPID_SPRNumberOfElements)] HRESULT NumberOfElements ([out, retval]long *NumberOfElements); | 
|  | }; | 
|  |  | 
|  | [object, uuid (38bc662f-2257-4525-959e-2069d2596c05), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseReplacements : IDispatch { | 
|  | [propget, id (DISPID_SPRsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SPRsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechPhraseReplacement **Reps); | 
|  | [propget, restricted, id (DISPID_SPRs_NewEnum)] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (CE563D48-961e-4732-A2E1-378a42b430be), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseProperty : IDispatch { | 
|  | [propget, id (DISPID_SPPName)] HRESULT Name ([out, retval]BSTR *Name); | 
|  | [propget, id (DISPID_SPPId)] HRESULT Id ([out, retval]long *Id); | 
|  | [propget, id (DISPID_SPPValue)] HRESULT Value ([out, retval]VARIANT *Value); | 
|  | [propget, id (DISPID_SPPFirstElement)] HRESULT FirstElement ([out, retval]long *FirstElement); | 
|  | [propget, id (DISPID_SPPNumberOfElements)] HRESULT NumberOfElements ([out, retval]long *NumberOfElements); | 
|  | [propget, id (DISPID_SPPEngineConfidence)] HRESULT EngineConfidence ([out, retval]float *Confidence); | 
|  | [propget, id (DISPID_SPPConfidence)] HRESULT Confidence ([out, retval]SpeechEngineConfidence *Confidence); | 
|  | [propget, id (DISPID_SPPParent)] HRESULT Parent ([out, retval]ISpeechPhraseProperty **ParentProperty); | 
|  | [propget, id (DISPID_SPPChildren)] HRESULT Children ([out, retval]ISpeechPhraseProperties **Children); | 
|  | }; | 
|  |  | 
|  | [object, uuid (08166b47-102e-4b23-A599-BDB98DBFD1F4), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseProperties : IDispatch { | 
|  | [propget, id (DISPID_SPPsCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SPPsItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechPhraseProperty **Property); | 
|  | [propget, id (DISPID_SPPs_NewEnum), restricted] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (A7BFE112-A4A0-48d9-B602-C313843F6964), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseRule : IDispatch { | 
|  | [propget, id (DISPID_SPRuleName)] HRESULT Name ([out, retval]BSTR *Name); | 
|  | [propget, id (DISPID_SPRuleId)] HRESULT Id ([out, retval]long *Id); | 
|  | [propget, id (DISPID_SPRuleFirstElement)] HRESULT FirstElement ([out, retval]long *FirstElement); | 
|  | [propget, id (DISPID_SPRuleNumberOfElements)] HRESULT NumberOfElements ([out, retval]long *NumberOfElements); | 
|  | [propget, id (DISPID_SPRuleParent)] HRESULT Parent ([out, retval]ISpeechPhraseRule **Parent); | 
|  | [propget, id (DISPID_SPRuleChildren)] HRESULT Children ([out, retval]ISpeechPhraseRules **Children); | 
|  | [propget, id (DISPID_SPRuleConfidence)] HRESULT Confidence ([out, retval]SpeechEngineConfidence *ActualConfidence); | 
|  | [propget, id (DISPID_SPRuleEngineConfidence)] HRESULT EngineConfidence ([out, retval]float *EngineConfidence); | 
|  | }; | 
|  |  | 
|  | [object, uuid (9047d593-01dd-4b72-81a3-E4A0CA69F407), dual, pointer_default (unique)] | 
|  | interface ISpeechPhraseRules : IDispatch { | 
|  | [propget, id (DISPID_SPRulesCount)] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_SPRulesItem)] HRESULT Item ([in] long Index,[out, retval]ISpeechPhraseRule **Rule); | 
|  | [propget, restricted, id (DISPID_SPRules_NewEnum)] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (8d199862-415e-47d5-AC4F-FAA608B424E6), dual, pointer_default (unique)] | 
|  | interface ISpeechLexiconWords : IDispatch { | 
|  | [id (DISPID_SLWsCount), propget] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_VALUE)] HRESULT Item ([in] long Index,[out, retval]ISpeechLexiconWord **Word); | 
|  | [id (DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (3da7627a-C7AE-4b23-8708-638c50362c25), dual, pointer_default (unique)] | 
|  | interface ISpeechLexicon : IDispatch { | 
|  | [id (DISPID_SLGenerationId), propget, hidden] HRESULT GenerationId ([out, retval]long *GenerationId); | 
|  | [id (DISPID_SLGetWords)] HRESULT GetWords ([in, defaultvalue (eLEXTYPE_USER | eLEXTYPE_APP)]SpeechLexiconType Flags,[out, defaultvalue (NULL)]long *GenerationID,[out, retval]ISpeechLexiconWords **Words); | 
|  | [id (DISPID_SLAddPronunciation)] HRESULT AddPronunciation ([in]BSTR bstrWord,[in]SpeechLanguageId LangId,[in, defaultvalue (SPSUnknown)]SpeechPartOfSpeech PartOfSpeech,[in, defaultvalue (L"")]BSTR bstrPronunciation); | 
|  | [hidden, id (DISPID_SLAddPronunciationByPhoneIds)] HRESULT AddPronunciationByPhoneIds ([in]BSTR bstrWord,[in]SpeechLanguageId LangId,[in, defaultvalue (SPSUnknown)]SpeechPartOfSpeech PartOfSpeech,[in, defaultvalue (NULL)]VARIANT *PhoneIds); | 
|  | [id (DISPID_SLRemovePronunciation)] HRESULT RemovePronunciation ([in]BSTR bstrWord,[in]SpeechLanguageId LangId,[in, defaultvalue (SPSUnknown)]SpeechPartOfSpeech PartOfSpeech,[in, defaultvalue (L"")]BSTR bstrPronunciation); | 
|  | [id (DISPID_SLRemovePronunciationByPhoneIds), hidden] HRESULT RemovePronunciationByPhoneIds ([in]BSTR bstrWord,[in]SpeechLanguageId LangId,[in, defaultvalue (SPSUnknown)]SpeechPartOfSpeech PartOfSpeech,[in, defaultvalue (NULL)]VARIANT *PhoneIds); | 
|  | [id (DISPID_SLGetPronunciations)] HRESULT GetPronunciations ([in]BSTR bstrWord,[in, defaultvalue (0)]SpeechLanguageId LangId,[in, defaultvalue (eLEXTYPE_USER | eLEXTYPE_APP)]SpeechLexiconType TypeFlags,[out, retval]ISpeechLexiconPronunciations **ppPronunciations); | 
|  | [id (DISPID_SLGetGenerationChange), hidden] HRESULT GetGenerationChange ([in, out]long *GenerationID,[out, retval]ISpeechLexiconWords **ppWords); | 
|  | }; | 
|  |  | 
|  | [object, uuid (4e5b933c-C9BE-48ed-8842-1ee51bb1d4ff), dual, pointer_default (unique)] | 
|  | interface ISpeechLexiconWord : IDispatch { | 
|  | [id (DISPID_SLWLangId), propget] HRESULT LangId ([out, retval]SpeechLanguageId *LangId); | 
|  | [id (DISPID_SLWType), propget] HRESULT Type ([out, retval]SpeechWordType *WordType); | 
|  | [id (DISPID_SLWWord), propget] HRESULT Word ([out, retval]BSTR *Word); | 
|  | [id (DISPID_SLWPronunciations), propget] HRESULT Pronunciations ([out, retval]ISpeechLexiconPronunciations **Pronunciations); | 
|  | }; | 
|  |  | 
|  | [object, uuid (72829128-5682-4704-A0D4-3e2bb6f2ead3), dual, pointer_default (unique)] | 
|  | interface ISpeechLexiconPronunciations : IDispatch { | 
|  | [id (DISPID_SLPsCount), propget] HRESULT Count ([out, retval] long *Count); | 
|  | [id (DISPID_VALUE)] HRESULT Item ([in] long Index,[out, retval]ISpeechLexiconPronunciation **Pronunciation); | 
|  | [id (DISPID_NEWENUM), propget, restricted] HRESULT _NewEnum ([out, retval] IUnknown **EnumVARIANT); | 
|  | }; | 
|  |  | 
|  | [object, uuid (95252c5d-9e43-4f4a-9899-48ee73352f9f), dual, pointer_default (unique)] | 
|  | interface ISpeechLexiconPronunciation : IDispatch { | 
|  | [id (DISPID_SLPType), propget] HRESULT Type ([out, retval]SpeechLexiconType *LexiconType); | 
|  | [id (DISPID_SLPLangId), propget] HRESULT LangId ([out, retval]SpeechLanguageId *LangId); | 
|  | [id (DISPID_SLPPartOfSpeech), propget] HRESULT PartOfSpeech ([out, retval]SpeechPartOfSpeech *PartOfSpeech); | 
|  | [id (DISPID_SLPPhoneIds), propget] HRESULT PhoneIds ([out, retval]VARIANT *PhoneIds); | 
|  | [id (DISPID_SLPSymbolic), propget] HRESULT Symbolic ([out, retval]BSTR *Symbolic); | 
|  | }; | 
|  |  | 
|  | [object, uuid (C3E4F353-433f-43d6-89a1-6a62a7054c3d), dual, pointer_default (unique)] | 
|  | interface ISpeechPhoneConverter : IDispatch { | 
|  | [propget, id (DISPID_SPCLangId)] HRESULT LanguageId ([out, retval]SpeechLanguageId *LanguageId); | 
|  | [propput, id (DISPID_SPCLangId)] HRESULT LanguageId ([in]SpeechLanguageId LanguageId); | 
|  | [id (DISPID_SPCPhoneToId)] HRESULT PhoneToId ([in]const BSTR Phonemes,[out, retval]VARIANT *IdArray); | 
|  | [id (DISPID_SPCIdToPhone)] HRESULT IdToPhone ([in]const VARIANT IdArray,[out, retval]BSTR *Phonemes); | 
|  | } | 
|  |  | 
|  | [uuid (E2AE5372-5d40-11d2-960e-00c04f8ee628), hidden] | 
|  | coclass SpNotifyTranslator { | 
|  | interface ISpNotifyTranslator; | 
|  | } | 
|  |  | 
|  | [uuid (A910187F-0c7a-45ac-92cc-59edafb77b53)] | 
|  | coclass SpObjectTokenCategory { | 
|  | [default] interface ISpeechObjectTokenCategory; | 
|  | interface ISpObjectTokenCategory; | 
|  | } | 
|  |  | 
|  | [uuid (EF411752-3736-4cb4-9c8c-8ef4ccb58efe)] | 
|  | coclass SpObjectToken { | 
|  | [default] interface ISpeechObjectToken; | 
|  | interface ISpObjectToken; | 
|  | } | 
|  |  | 
|  | [uuid (96749373-3391-11d2-9ee3-00c04f797396), hidden] | 
|  | coclass SpResourceManager { | 
|  | [default] interface ISpResourceManager; | 
|  | }; | 
|  |  | 
|  | [uuid (7013943a-E2EC-11d2-A086-00c04f8ef9b5), hidden] | 
|  | coclass SpStreamFormatConverter { | 
|  | [default] interface ISpStreamFormatConverter; | 
|  | }; | 
|  |  | 
|  | [uuid (AB1890A0-E91F-11d2-BB91-00c04f8ee6c0), hidden] | 
|  | coclass SpMMAudioEnum { | 
|  | interface IEnumSpObjectTokens; | 
|  | }; | 
|  |  | 
|  | [uuid (CF3D2E50-53f2-11d2-960c-00c04f8ee628)] | 
|  | coclass SpMMAudioIn { | 
|  | [default] interface ISpeechMMSysAudio; | 
|  | interface ISpEventSource; | 
|  | interface ISpEventSink; | 
|  | interface ISpObjectWithToken; | 
|  | interface ISpMMSysAudio; | 
|  | }; | 
|  |  | 
|  | [uuid (A8C680EB-3d32-11d2-9ee7-00c04f797396)] | 
|  | coclass SpMMAudioOut { | 
|  | [default] interface ISpeechMMSysAudio; | 
|  | interface ISpEventSource; | 
|  | interface ISpEventSink; | 
|  | interface ISpObjectWithToken; | 
|  | interface ISpMMSysAudio; | 
|  | }; | 
|  |  | 
|  | [uuid (715d9c59-4442-11d2-9605-00c04f8ee628), hidden] | 
|  | coclass SpStream { | 
|  | interface ISpStream; | 
|  | }; | 
|  |  | 
|  | [uuid (96749377-3391-11d2-9ee3-00c04f797396)] | 
|  | coclass SpVoice { | 
|  | [default] interface ISpeechVoice; | 
|  | interface ISpVoice; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | [default, source] dispinterface _ISpeechVoiceEvents; | 
|  | }; | 
|  | [uuid (47206204-5eca-11d2-960f-00c04f8ee628)] | 
|  | coclass SpSharedRecoContext { | 
|  | [default] interface ISpeechRecoContext; | 
|  | interface ISpRecoContext; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpRecoContext2; | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | [default, source] dispinterface _ISpeechRecoContextEvents; | 
|  | }; | 
|  |  | 
|  | [uuid (41b89b6b-9399-11d2-9623-00c04f8ee628)] | 
|  | coclass SpInprocRecognizer { | 
|  | [default] interface ISpeechRecognizer; | 
|  | interface ISpRecognizer; | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | interface ISpRecognizer2; | 
|  | #if _SAPI_BLD_ >= 0x54 | 
|  | interface ISpRecognizer3; | 
|  | #endif | 
|  | interface ISpSerializeState; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | [uuid (3bee4890-4fe9-4a37-8c1e-5e7e12791c1f)] | 
|  | coclass SpSharedRecognizer { | 
|  | [default] interface ISpeechRecognizer; | 
|  | interface ISpRecognizer; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpRecognizer2; | 
|  | #if _SAPI_BLD_ >= 0x054 | 
|  | interface ISpRecognizer3; | 
|  | #endif | 
|  | interface ISpSerializeState; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | [uuid (0655e396-25d0-11d3-9c26-00c04f8ef87c)] | 
|  | coclass SpLexicon { | 
|  | [default] interface ISpeechLexicon; | 
|  | interface ISpLexicon; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | [uuid (C9E37C15-DF92-4727-85d6-72e5eeb6995a)] | 
|  | coclass SpUnCompressedLexicon { | 
|  | [default] interface ISpeechLexicon; | 
|  | interface ISpLexicon; | 
|  | interface ISpObjectWithToken; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | [uuid (90903716-2f42-11d3-9c26-00c04f8ef87c), hidden] | 
|  | coclass SpCompressedLexicon { | 
|  | [default] interface ISpLexicon; | 
|  | interface ISpObjectWithToken; | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x053 | 
|  | [uuid (0d722f1a-9fcf-4e62-96d8-6df8f01a26aa)] | 
|  | coclass SpShortcut { | 
|  | interface ISpShortcut; | 
|  | interface ISpObjectWithToken; | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | [uuid (9185f743-1143-4c28-86b5-BFF14F20E5C8)] | 
|  | coclass SpPhoneConverter { | 
|  | [default] interface ISpeechPhoneConverter; | 
|  | interface ISpPhoneConverter; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | [uuid (4f414126-DFE3-4629-99ee-797978317ead)] | 
|  | coclass SpPhoneticAlphabetConverter { | 
|  | interface ISpPhoneticAlphabetConverter; | 
|  | }; | 
|  | #endif | 
|  |  | 
|  | [uuid (455f24e9-7396-4a16-9715-7c0fdbe3efe3), hidden] | 
|  | coclass SpNullPhoneConverter { | 
|  | [default] interface ISpPhoneConverter; | 
|  | }; | 
|  |  | 
|  | [uuid (0f92030a-CBFD-4ab8-A164-FF5985547FF6)] | 
|  | coclass SpTextSelectionInformation { | 
|  | [default] interface ISpeechTextSelectionInformation; | 
|  | }; | 
|  |  | 
|  | [uuid (C23FC28D-C55F-4720-8b32-91f73c2bd5d1)] | 
|  | coclass SpPhraseInfoBuilder { | 
|  | [default] interface ISpeechPhraseInfoBuilder; | 
|  | }; | 
|  |  | 
|  | [uuid (9ef96870-E160-4792-820d-48cf0649e4ec)] | 
|  | coclass SpAudioFormat { | 
|  | [default] interface ISpeechAudioFormat; | 
|  | }; | 
|  |  | 
|  | [uuid (C79A574C-63be-44b9-801f-283f87f898be)] | 
|  | coclass SpWaveFormatEx { | 
|  | [default] interface ISpeechWaveFormatEx; | 
|  | }; | 
|  |  | 
|  | [uuid (73ad6842-ACE0-45e8-A4DD-8795881a2c2a)] | 
|  | coclass SpInProcRecoContext { | 
|  | [default] interface ISpeechRecoContext; | 
|  | interface ISpRecoContext; | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpRecoContext2; | 
|  | interface ISpPhoneticAlphabetSelection; | 
|  | #endif | 
|  | [default, source] dispinterface _ISpeechRecoContextEvents; | 
|  | }; | 
|  |  | 
|  | [uuid (8dbef13f-1948-4aa8-8cf0-048eebed95d8)] | 
|  | coclass SpCustomStream { | 
|  | [default] interface ISpeechCustomStream; | 
|  | interface ISpStream; | 
|  | }; | 
|  |  | 
|  | [uuid (947812b3-2ae1-4644-BA86-9e90ded7ec91)] | 
|  | coclass SpFileStream { | 
|  | [default] interface ISpeechFileStream; | 
|  | interface ISpStream; | 
|  | }; | 
|  |  | 
|  | [uuid (5fb7ef7d-DFF4-468a-B6B7-2fcbd188f994)] | 
|  | coclass SpMemoryStream { | 
|  | [default] interface ISpeechMemoryStream; | 
|  | interface ISpStream; | 
|  | }; | 
|  |  | 
|  | #if _SAPI_BLD_ >= 0x53 | 
|  | interface ISpXMLRecoResult; | 
|  | interface ISpRecoGrammar2; | 
|  | interface ISpeechResourceLoader; | 
|  | #endif | 
|  | } |