You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2198 lines
72 KiB
2198 lines
72 KiB
/****************************************************************************
|
|
* sapi.idl
|
|
*
|
|
* This is the interface definition file for the Microsoft Speech API
|
|
* Version 5.0.
|
|
*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*****************************************************************************/
|
|
|
|
//--- Compiler Directive ----------------------------------------------------
|
|
cpp_quote("#pragma warning(disable:4201) // Allow nameless structs/unions")
|
|
|
|
//--- Includes --------------------------------------------------------------
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
|
|
//--- Locally scoped define for LANGID
|
|
#ifndef LANGID
|
|
#define LANGID WORD
|
|
#endif
|
|
|
|
//--- Link with sapi.lib
|
|
cpp_quote("#pragma comment(lib, \"sapi.lib\")")
|
|
|
|
//--- Forward and External Declarations -------------------------------------
|
|
|
|
cpp_quote("#if 0") // Ignore our definition in the .H file
|
|
typedef [restricted, hidden] struct WAVEFORMATEX
|
|
{
|
|
WORD wFormatTag; /* format type */
|
|
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
|
|
DWORD nSamplesPerSec; /* sample rate */
|
|
DWORD nAvgBytesPerSec; /* for buffer estimation */
|
|
WORD nBlockAlign; /* block size of data */
|
|
WORD wBitsPerSample; /* Number of bits per sample of mono data */
|
|
WORD cbSize; /* The count in bytes of the size of
|
|
extra information (after cbSize) */
|
|
|
|
} WAVEFORMATEX;
|
|
cpp_quote("#else")
|
|
cpp_quote("#include <mmsystem.h>")
|
|
cpp_quote("#endif")
|
|
|
|
|
|
//--- Notifications
|
|
interface ISpNotifySource;
|
|
interface ISpNotifySink;
|
|
interface ISpNotifyTranslator;
|
|
|
|
//--- Object tokens
|
|
interface ISpDataKey;
|
|
interface ISpObjectTokenCategory;
|
|
interface ISpObjectToken;
|
|
interface IEnumSpObjectTokens;
|
|
interface ISpObjectWithToken;
|
|
|
|
//--- Resource management
|
|
interface ISpResourceManager;
|
|
|
|
//--- Speech specific events
|
|
interface ISpEventSource;
|
|
interface ISpEventSink;
|
|
|
|
//--- Audio streams
|
|
interface ISpStreamFormat;
|
|
interface ISpStream;
|
|
interface ISpStreamFormatConverter;
|
|
interface ISpAudio;
|
|
interface ISpMMSysAudio;
|
|
interface ISpTranscript;
|
|
|
|
|
|
//--- TTS interface
|
|
interface ISpVoice;
|
|
|
|
//--- SR interfaces
|
|
interface ISpRecoResult;
|
|
interface ISpRecoContext;
|
|
interface ISpRecognizer;
|
|
interface ISpProperties;
|
|
|
|
//--- Lexicon interfaces
|
|
interface ISpLexicon;
|
|
|
|
//--- Phone Converter
|
|
interface ISpPhoneConverter;
|
|
|
|
//--- Phrase interface
|
|
interface ISpPhrase;
|
|
|
|
//
|
|
//--- Constants -------------------------------------------------------------
|
|
//
|
|
|
|
//--- DataKey locations
|
|
typedef [hidden] enum SPDATAKEYLOCATION
|
|
{
|
|
SPDKL_DefaultLocation = 0,
|
|
SPDKL_CurrentUser = 1,
|
|
SPDKL_LocalMachine = 2,
|
|
SPDKL_CurrentConfig = 5
|
|
} SPDATAKEYLOCATION;
|
|
|
|
//--- TokenUI constants
|
|
cpp_quote("#define SPDUI_EngineProperties L\"EngineProperties\"")
|
|
cpp_quote("#define SPDUI_AddRemoveWord L\"AddRemoveWord\"")
|
|
cpp_quote("#define SPDUI_UserTraining L\"UserTraining\"")
|
|
cpp_quote("#define SPDUI_MicTraining L\"MicTraining\"")
|
|
cpp_quote("#define SPDUI_RecoProfileProperties L\"RecoProfileProperties\"")
|
|
cpp_quote("#define SPDUI_AudioProperties L\"AudioProperties\"")
|
|
cpp_quote("#define SPDUI_AudioVolume L\"AudioVolume\"")
|
|
cpp_quote("#define SPDUI_UserEnrollment L\"UserEnrollment\"")
|
|
|
|
//--- Data formats - these are used by the CSpStreamFormat class in sphelper.h
|
|
typedef [hidden] enum SPSTREAMFORMAT
|
|
{
|
|
SPSF_Default = -1,
|
|
SPSF_NoAssignedFormat = 0, // Similar to GUID_NULL
|
|
SPSF_Text,
|
|
SPSF_NonStandardFormat, // Non-SAPI 5.0 standard format with no WAVEFORMATEX description
|
|
SPSF_ExtendedAudioFormat, // Non-SAPI 5.0 standard format but has WAVEFORMATEX description
|
|
// Standard PCM wave formats
|
|
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,
|
|
// TrueSpeech format
|
|
SPSF_TrueSpeech_8kHz1BitMono,
|
|
// A-Law formats
|
|
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,
|
|
// u-Law formats
|
|
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,
|
|
// ADPCM formats
|
|
SPSF_ADPCM_8kHzMono,
|
|
SPSF_ADPCM_8kHzStereo,
|
|
SPSF_ADPCM_11kHzMono,
|
|
SPSF_ADPCM_11kHzStereo,
|
|
SPSF_ADPCM_22kHzMono,
|
|
SPSF_ADPCM_22kHzStereo,
|
|
SPSF_ADPCM_44kHzMono,
|
|
SPSF_ADPCM_44kHzStereo,
|
|
// GSM 6.10 formats
|
|
SPSF_GSM610_8kHzMono,
|
|
SPSF_GSM610_11kHzMono,
|
|
SPSF_GSM610_22kHzMono,
|
|
SPSF_GSM610_44kHzMono,
|
|
SPSF_NUM_FORMATS
|
|
} SPSTREAMFORMAT;
|
|
|
|
cpp_quote("EXTERN_C const GUID SPDFID_Text;")
|
|
cpp_quote("EXTERN_C const GUID SPDFID_WaveFormatEx;")
|
|
|
|
//--- Root of registry entries for speech use
|
|
cpp_quote("#define SPREG_USER_ROOT L\"HKEY_CURRENT_USER\\\\SOFTWARE\\\\Microsoft\\\\Speech\"")
|
|
cpp_quote("#define SPREG_LOCAL_MACHINE_ROOT L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\"")
|
|
|
|
//--- Categories for speech resource management
|
|
cpp_quote("#define SPCAT_AUDIOOUT L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioOutput\"")
|
|
cpp_quote("#define SPCAT_AUDIOIN L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioInput\"")
|
|
cpp_quote("#define SPCAT_VOICES L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\Voices\"")
|
|
cpp_quote("#define SPCAT_RECOGNIZERS L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\Recognizers\"")
|
|
cpp_quote("#define SPCAT_APPLEXICONS L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AppLexicons\"")
|
|
cpp_quote("#define SPCAT_PHONECONVERTERS L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\PhoneConverters\"")
|
|
cpp_quote("#define SPCAT_RECOPROFILES L\"HKEY_CURRENT_USER\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\RecoProfiles\"")
|
|
|
|
//--- Specific token ids of interest
|
|
cpp_quote("#define SPMMSYS_AUDIO_IN_TOKEN_ID L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioInput\\\\TokenEnums\\\\MMAudioIn\\\\\"")
|
|
cpp_quote("#define SPMMSYS_AUDIO_OUT_TOKEN_ID L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioOutput\\\\TokenEnums\\\\MMAudioOut\\\\\"")
|
|
cpp_quote("#define SPCURRENT_USER_LEXICON_TOKEN_ID L\"HKEY_CURRENT_USER\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\CurrentUserLexicon\"")
|
|
|
|
//--- Standard token values
|
|
cpp_quote("#define SPTOKENVALUE_CLSID L\"CLSID\"")
|
|
cpp_quote("#define SPTOKENKEY_FILES L\"Files\"")
|
|
cpp_quote("#define SPTOKENKEY_UI L\"UI\"")
|
|
cpp_quote("#define SPTOKENKEY_ATTRIBUTES L\"Attributes\"")
|
|
|
|
//--- Standard voice category values
|
|
cpp_quote("#define SPVOICECATEGORY_TTSRATE L\"DefaultTTSRate\"")
|
|
|
|
//--- Standard SR Engine properties
|
|
cpp_quote("#define SPPROP_RESOURCE_USAGE L\"ResourceUsage\"")
|
|
cpp_quote("#define SPPROP_HIGH_CONFIDENCE_THRESHOLD L\"HighConfidenceThreshold\"")
|
|
cpp_quote("#define SPPROP_NORMAL_CONFIDENCE_THRESHOLD L\"NormalConfidenceThreshold\"")
|
|
cpp_quote("#define SPPROP_LOW_CONFIDENCE_THRESHOLD L\"LowConfidenceThreshold\"")
|
|
cpp_quote("#define SPPROP_RESPONSE_SPEED L\"ResponseSpeed\"")
|
|
cpp_quote("#define SPPROP_COMPLEX_RESPONSE_SPEED L\"ComplexResponseSpeed\"")
|
|
cpp_quote("#define SPPROP_ADAPTATION_ON L\"AdaptationOn\"")
|
|
|
|
//--- Standard SAPI Recognition Topics
|
|
cpp_quote("#define SPTOPIC_SPELLING L\"Spelling\"")
|
|
|
|
// CFG Wildcard token
|
|
cpp_quote("#define SPWILDCARD L\"...\"")
|
|
|
|
// CFG Dication token
|
|
cpp_quote("#define SPDICTATION L\"*\"")
|
|
cpp_quote("#define SPINFDICTATION L\"*+\"")
|
|
|
|
// CFG confidence scores
|
|
const signed char SP_LOW_CONFIDENCE = -1;
|
|
const signed char SP_NORMAL_CONFIDENCE = 0;
|
|
const signed char SP_HIGH_CONFIDENCE = +1;
|
|
|
|
// CFG default weight
|
|
const float DEFAULT_WEIGHT = 1.0;
|
|
|
|
// Lexicon word and pronunciation limits
|
|
const ULONG SP_MAX_WORD_LENGTH = 128;
|
|
const ULONG SP_MAX_PRON_LENGTH = 384;
|
|
|
|
//
|
|
//--- Interface definitions -------------------------------------------------
|
|
//
|
|
|
|
//--- ISpNotifyCallback -----------------------------------------------------
|
|
|
|
cpp_quote("#if defined(__cplusplus)")
|
|
cpp_quote("interface ISpNotifyCallback")
|
|
cpp_quote("{")
|
|
cpp_quote("virtual HRESULT STDMETHODCALLTYPE NotifyCallback(")
|
|
cpp_quote(" WPARAM wParam,")
|
|
cpp_quote(" 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")
|
|
|
|
//--- ISpNotifySource -------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(5EFF4AEF-8487-11D2-961C-00C04F8EE628),
|
|
helpstring("ISpNotifySource Interface"),
|
|
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();
|
|
}
|
|
|
|
//--- ISpNotifySink ---------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(259684DC-37C3-11D2-9603-00C04F8EE628),
|
|
helpstring("ISpNotifySink Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpNotifySink : IUnknown
|
|
{
|
|
HRESULT Notify(void);
|
|
}
|
|
|
|
|
|
//--- ISpNotifyTranslator ---------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(ACA16614-5D3D-11D2-960E-00C04F8EE628),
|
|
helpstring("ISpNotifyTranslator Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
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(
|
|
HANDLE hEvent,
|
|
BOOL fCloseHandleOnRelease);
|
|
HRESULT Wait([in] DWORD dwMilliseconds);
|
|
HANDLE GetEventHandle();
|
|
}
|
|
|
|
|
|
//--- ISpDataKey ------------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(14056581-E16C-11D2-BB90-00C04F8EE6C0),
|
|
helpstring("ISpDataKey Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpDataKey : IUnknown
|
|
{
|
|
HRESULT SetData( const WCHAR * pszValueName, ULONG cbData, const BYTE * pData);
|
|
HRESULT GetData( const WCHAR * pszValueName, ULONG * pcbData, BYTE * pData);
|
|
HRESULT SetStringValue( const WCHAR * pszValueName, const WCHAR * pszValue );
|
|
HRESULT GetStringValue( const WCHAR * pszValueName, WCHAR ** ppszValue);
|
|
HRESULT SetDWORD(const WCHAR * pszValueName, DWORD dwValue );
|
|
HRESULT GetDWORD(const WCHAR * pszValueName, DWORD *pdwValue );
|
|
HRESULT OpenKey(const WCHAR * pszSubKeyName, ISpDataKey ** ppSubKey);
|
|
HRESULT CreateKey(const WCHAR * pszSubKey, ISpDataKey ** ppSubKey);
|
|
HRESULT DeleteKey(const WCHAR * pszSubKey);
|
|
HRESULT DeleteValue(const WCHAR * pszValueName);
|
|
HRESULT EnumKeys(ULONG Index, WCHAR ** ppszSubKeyName);
|
|
HRESULT EnumValues(ULONG Index, WCHAR ** ppszValueName);
|
|
};
|
|
|
|
//--- ISpRegDataKey ---------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(92A66E2B-C830-4149-83DF-6FC2BA1E7A5B),
|
|
helpstring("ISpRegDataKey"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpRegDataKey : ISpDataKey
|
|
{
|
|
[local] HRESULT SetKey([in] HKEY hkey, [in] BOOL fReadOnly);
|
|
}
|
|
|
|
//--- ISpObjectTokenCategory ------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(2D3D3845-39AF-4850-BBF9-40B49780011D),
|
|
helpstring("ISpObjectTokenCategory"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpObjectTokenCategory : ISpDataKey
|
|
{
|
|
HRESULT SetId([in] const WCHAR * pszCategoryId, BOOL fCreateIfNotExist);
|
|
HRESULT GetId([out] WCHAR ** ppszCoMemCategoryId);
|
|
HRESULT GetDataKey(SPDATAKEYLOCATION spdkl, ISpDataKey ** ppDataKey);
|
|
|
|
HRESULT EnumTokens(
|
|
[in, string] const WCHAR * pzsReqAttribs,
|
|
[in, string] const WCHAR * pszOptAttribs,
|
|
[out] IEnumSpObjectTokens ** ppEnum);
|
|
|
|
HRESULT SetDefaultTokenId([in] const WCHAR * pszTokenId);
|
|
HRESULT GetDefaultTokenId([out] WCHAR ** ppszCoMemTokenId);
|
|
};
|
|
|
|
//--- ISpObjectToken --------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(14056589-E16C-11D2-BB90-00C04F8EE6C0),
|
|
helpstring("ISpObjectToken Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpObjectToken : ISpDataKey
|
|
{
|
|
HRESULT SetId(const WCHAR * pszCategoryId, const WCHAR * pszTokenId, BOOL fCreateIfNotExist);
|
|
HRESULT GetId(WCHAR ** ppszCoMemTokenId);
|
|
HRESULT GetCategory(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] const WCHAR * pszValueName,
|
|
[in] const WCHAR * pszFileNameSpecifier,
|
|
[in] ULONG nFolder, // Same as SHGetFolderPath -- If non-zero, must set CSIDL_FLAG_CREATE
|
|
[out] WCHAR ** ppszFilePath);
|
|
HRESULT RemoveStorageFileName(
|
|
[in] REFCLSID clsidCaller,
|
|
[in] const WCHAR * pszKeyName,
|
|
[in] BOOL fDeleteFile);
|
|
|
|
HRESULT Remove(const CLSID * pclsidCaller);
|
|
|
|
[local] HRESULT IsUISupported(
|
|
[in] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData,
|
|
[in] IUnknown * punkObject,
|
|
[out] BOOL *pfSupported);
|
|
[local] HRESULT DisplayUI(
|
|
[in] HWND hwndParent,
|
|
[in] const WCHAR * pszTitle,
|
|
[in] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData,
|
|
[in] IUnknown * punkObject);
|
|
HRESULT MatchesAttributes(
|
|
[in] const WCHAR * pszAttributes,
|
|
[out] BOOL *pfMatches);
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(B8AAB0CF-346F-49D8-9499-C8B03F161D51),
|
|
helpstring("ISpObjectTokenInit Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpObjectTokenInit : ISpObjectToken
|
|
{
|
|
HRESULT InitFromDataKey(
|
|
[in] const WCHAR * pszCategoryId,
|
|
[in] const WCHAR * pszTokenId,
|
|
[in] ISpDataKey * pDataKey);
|
|
};
|
|
|
|
//--- IEnumSpObjectTokens ---------------------------------------------------
|
|
// This interface is used to enumerate speech object tokens
|
|
|
|
[
|
|
object,
|
|
uuid(06B64F9E-7FDA-11D2-B4F2-00C04F797396),
|
|
helpstring("IEnumSpObjectTokens Interface"),
|
|
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);
|
|
};
|
|
|
|
//--- ISpObjectWithToken ----------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(5B559F40-E952-11D2-BB91-00C04F8EE6C0),
|
|
helpstring("ISpObjectWithToken Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpObjectWithToken : IUnknown
|
|
{
|
|
HRESULT SetObjectToken(ISpObjectToken * pToken);
|
|
HRESULT GetObjectToken(ISpObjectToken ** ppToken);
|
|
};
|
|
|
|
//--- ISpResourceManager ----------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(93384E18-5014-43D5-ADBB-A78E055926BD),
|
|
helpstring("ISpResourceManager Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
#ifdef _WIN32_WCE
|
|
interface ISpResourceManager : IUnknown //IServiceProvider
|
|
#else
|
|
interface ISpResourceManager : IServiceProvider
|
|
#endif // _WIN32_WCE
|
|
{
|
|
HRESULT SetObject(
|
|
[in] REFGUID guidServiceId,
|
|
[in] IUnknown *pUnkObject);
|
|
HRESULT GetObject(
|
|
[in] REFGUID guidServiceId,
|
|
[in] REFCLSID ObjectCLSID,
|
|
[in] REFIID ObjectIID,
|
|
[in] BOOL fReleaseWhenLastExternalRefReleased,
|
|
[out, iid_is(ObjectIID)] void** ppObject);
|
|
};
|
|
|
|
//--- ISpEventSource --------------------------------------------------------
|
|
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,
|
|
|
|
//--- TTS engine
|
|
SPEI_START_INPUT_STREAM = 1,
|
|
SPEI_END_INPUT_STREAM = 2,
|
|
SPEI_VOICE_CHANGE = 3, // LPARAM_IS_TOKEN
|
|
SPEI_TTS_BOOKMARK = 4, // LPARAM_IS_STRING
|
|
SPEI_WORD_BOUNDARY = 5,
|
|
SPEI_PHONEME = 6,
|
|
SPEI_SENTENCE_BOUNDARY = 7,
|
|
SPEI_VISEME = 8,
|
|
SPEI_TTS_AUDIO_LEVEL = 9, // wParam contains current output audio level
|
|
|
|
//--- Engine vendors use these reserved bits
|
|
SPEI_TTS_PRIVATE = 15,
|
|
|
|
SPEI_MIN_TTS = 1,
|
|
SPEI_MAX_TTS = 15,
|
|
|
|
//--- Speech Recognition
|
|
SPEI_END_SR_STREAM = 34, // LPARAM contains HRESULT, WPARAM contains flags (SPESF_xxx)
|
|
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, // LPARAM points to a string, WPARAM is the attrib value
|
|
SPEI_PROPERTY_STRING_CHANGE= 42, // LPARAM pointer to buffer. Two concatinated null terminated strings.
|
|
SPEI_FALSE_RECOGNITION = 43, // apparent speech with no valid recognition
|
|
SPEI_INTERFERENCE = 44, // LPARAM is any combination of SPINTERFERENCE flags
|
|
SPEI_REQUEST_UI = 45, // LPARAM is string.
|
|
SPEI_RECO_STATE_CHANGE = 46, // wParam contains new reco state
|
|
SPEI_ADAPTATION = 47, // we are now ready to accept the adaptation buffer
|
|
SPEI_START_SR_STREAM = 48,
|
|
SPEI_RECO_OTHER_CONTEXT = 49, // Phrase finished and recognized, but for other context
|
|
SPEI_SR_AUDIO_LEVEL = 50, // wParam contains current input audio level
|
|
|
|
//--- Engine vendors use these reserved bits
|
|
SPEI_SR_PRIVATE = 52,
|
|
|
|
SPEI_MIN_SR = 34,
|
|
SPEI_MAX_SR = 52,
|
|
|
|
SPEI_RESERVED1 = 30, // do not use
|
|
SPEI_RESERVED2 = 33, // do not use
|
|
SPEI_RESERVED3 = 63 // do not use
|
|
} SPEVENTENUM;
|
|
|
|
cpp_quote("#define SPFEI_FLAGCHECK ( (1ui64 << SPEI_RESERVED1) | (1ui64 << SPEI_RESERVED2) )")
|
|
|
|
cpp_quote("#define SPFEI_ALL_TTS_EVENTS (0x000000000000FFFEui64 | SPFEI_FLAGCHECK)")
|
|
cpp_quote("#define SPFEI_ALL_SR_EVENTS (0x001FFFFC00000000ui64 | SPFEI_FLAGCHECK)")
|
|
cpp_quote("#define SPFEI_ALL_EVENTS 0xEFFFFFFFFFFFFFFFui64")
|
|
|
|
// The SPFEI macro converts an SPEVENTENUM event value into a 64-bit value.
|
|
// Multiple values can then be OR-ed together and passed to SetInterest.
|
|
cpp_quote("#define SPFEI(SPEI_ord) ((1ui64 << SPEI_ord) | SPFEI_FLAGCHECK)")
|
|
|
|
// SPEVENT is defined 2 ways, because the current version of MIDL does not allow enumerations
|
|
// to be used as bit fields. So we define eEventId and elParamType as int bitfields for MIDL
|
|
// and redefine them as their appropriate enumerations for C++
|
|
cpp_quote("#if 0")
|
|
typedef [restricted, hidden] struct SPEVENT
|
|
{
|
|
WORD eEventId; //SPEVENTENUM
|
|
WORD elParamType; //SPEVENTLPARAMTYPE
|
|
ULONG ulStreamNum; // Input stream number this event is associated with
|
|
ULONGLONG ullAudioStreamOffset;
|
|
WPARAM wParam;
|
|
LPARAM lParam;
|
|
} SPEVENT;
|
|
|
|
typedef [restricted, hidden] struct SPSERIALIZEDEVENT
|
|
{
|
|
WORD eEventId; //SPEVENTENUM
|
|
WORD elParamType; //SPEVENTLPARAMTYPE
|
|
ULONG ulStreamNum; // Input stream number this event is associated with
|
|
ULONGLONG ullAudioStreamOffset;
|
|
ULONG SerializedwParam;
|
|
LONG SerializedlParam;
|
|
} SPSERIALIZEDEVENT;
|
|
|
|
typedef [restricted, hidden] struct SPSERIALIZEDEVENT64
|
|
{
|
|
WORD eEventId; //SPEVENTENUM
|
|
WORD elParamType; //SPEVENTLPARAMTYPE
|
|
ULONG ulStreamNum; // Input stream number this event is associated with
|
|
ULONGLONG ullAudioStreamOffset;
|
|
ULONGLONG SerializedwParam;
|
|
LONGLONG SerializedlParam;
|
|
} SPSERIALIZEDEVENT64;
|
|
|
|
cpp_quote("#else")
|
|
cpp_quote("typedef struct SPEVENT")
|
|
cpp_quote("{")
|
|
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("typedef struct SPSERIALIZEDEVENT")
|
|
cpp_quote("{")
|
|
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("typedef struct SPSERIALIZEDEVENT64")
|
|
cpp_quote("{")
|
|
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")
|
|
|
|
//--- Types of interference
|
|
typedef [hidden] enum SPINTERFERENCE
|
|
{
|
|
SPINTERFERENCE_NONE = 0,
|
|
SPINTERFERENCE_NOISE,
|
|
SPINTERFERENCE_NOSIGNAL,
|
|
SPINTERFERENCE_TOOLOUD,
|
|
SPINTERFERENCE_TOOQUIET,
|
|
SPINTERFERENCE_TOOFAST,
|
|
SPINTERFERENCE_TOOSLOW
|
|
} SPINTERFERENCE;
|
|
|
|
//--- Flags for END_SR_STREAM event (in WPARAM)
|
|
typedef [hidden] enum SPENDSRSTREAMFLAGS
|
|
{
|
|
SPESF_NONE = 0,
|
|
SPESF_STREAM_RELEASED = (1 << 0)
|
|
} SPENDSRSTREAMFLAGS;
|
|
|
|
//--- Viseme features
|
|
typedef [hidden] enum SPVFEATURE
|
|
{
|
|
SPVFEATURE_STRESSED = (1L << 0),
|
|
SPVFEATURE_EMPHASIS = (1L << 1)
|
|
} SPVFEATURE;
|
|
|
|
|
|
//--- Viseme event groups
|
|
typedef [hidden] enum SPVISEMES
|
|
{
|
|
// English examples
|
|
//------------------
|
|
SP_VISEME_0 = 0, // Silence
|
|
SP_VISEME_1, // AE, AX, AH
|
|
SP_VISEME_2, // AA
|
|
SP_VISEME_3, // AO
|
|
SP_VISEME_4, // EY, EH, UH
|
|
SP_VISEME_5, // ER
|
|
SP_VISEME_6, // y, IY, IH, IX
|
|
SP_VISEME_7, // w, UW
|
|
SP_VISEME_8, // OW
|
|
SP_VISEME_9, // AW
|
|
SP_VISEME_10, // OY
|
|
SP_VISEME_11, // AY
|
|
SP_VISEME_12, // h
|
|
SP_VISEME_13, // r
|
|
SP_VISEME_14, // l
|
|
SP_VISEME_15, // s, z
|
|
SP_VISEME_16, // SH, CH, JH, ZH
|
|
SP_VISEME_17, // TH, DH
|
|
SP_VISEME_18, // f, v
|
|
SP_VISEME_19, // d, t, n
|
|
SP_VISEME_20, // k, g, NG
|
|
SP_VISEME_21, // p, b, m
|
|
} SPVISEMES;
|
|
|
|
typedef [restricted, hidden] struct SPEVENTSOURCEINFO
|
|
{
|
|
ULONGLONG ullEventInterest;
|
|
ULONGLONG ullQueuedInterest;
|
|
ULONG ulCount;
|
|
} SPEVENTSOURCEINFO;
|
|
|
|
[
|
|
object,
|
|
uuid(BE7A9CCE-5F9E-11D2-960F-00C04F8EE628),
|
|
helpstring("ISpEventSource Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
restricted
|
|
]
|
|
interface ISpEventSource : ISpNotifySource
|
|
{
|
|
// It is neccessary to use the SPFEI macro to convert the
|
|
// SPEVENTENUM values into ULONGULONG values.
|
|
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);
|
|
};
|
|
|
|
//--- ISpEventSink ---------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(BE7A9CC9-5F9E-11D2-960F-00C04F8EE628),
|
|
helpstring("ISpEventSink Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
restricted
|
|
]
|
|
interface ISpEventSink : IUnknown
|
|
{
|
|
HRESULT AddEvents([in] const SPEVENT* pEventArray, [in] ULONG ulCount);
|
|
HRESULT GetEventInterest([out] ULONGLONG * pullEventInterest);
|
|
};
|
|
|
|
|
|
//--- ISpStreamFormat -------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(BED530BE-2606-4F4D-A1C0-54C5CDA5566F),
|
|
helpstring("ISpStreamFormat Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpStreamFormat : IStream
|
|
{
|
|
HRESULT GetFormat(GUID * pguidFormatId, WAVEFORMATEX ** ppCoMemWaveFormatEx);
|
|
}
|
|
|
|
typedef [hidden] enum SPFILEMODE
|
|
{
|
|
SPFM_OPEN_READONLY, // Open existing file, read-only
|
|
SPFM_OPEN_READWRITE, // (Not supported for wav files) Open existing file, read-write
|
|
SPFM_CREATE, // (Not supported for wav files) Open file if exists, else create if does not exist (opens read-write)
|
|
SPFM_CREATE_ALWAYS, // Create file even if file exists. Destroys old file.
|
|
SPFM_NUM_MODES // Used for limit checking
|
|
} SPFILEMODE;
|
|
|
|
//--- ISpStream -------------------------------------------------------------
|
|
|
|
[
|
|
object,
|
|
uuid(12E3CCA9-7518-44C5-A5E7-BA5A79CB929E),
|
|
helpstring("ISpStream Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpStream : ISpStreamFormat
|
|
{
|
|
HRESULT SetBaseStream(IStream * pStream, REFGUID rguidFormat, const WAVEFORMATEX * pWaveFormatEx);
|
|
HRESULT GetBaseStream(IStream ** ppStream);
|
|
HRESULT BindToFile(const WCHAR * pszFileName, SPFILEMODE eMode,
|
|
const GUID * pFormatId, const WAVEFORMATEX * pWaveFormatEx,
|
|
ULONGLONG ullEventInterest);
|
|
HRESULT Close();
|
|
}
|
|
|
|
//--- ISpStreamFormatConverter ----------------------------------------------
|
|
[
|
|
object,
|
|
uuid(678A932C-EA71-4446-9B41-78FDA6280A29),
|
|
helpstring("ISpStreamFormatConverter Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpStreamFormatConverter : ISpStreamFormat
|
|
{
|
|
HRESULT SetBaseStream(
|
|
[in] ISpStreamFormat * pStream,
|
|
[in] BOOL fSetFormatToBaseStreamFormat, // If true, then format of format converter stream
|
|
[in] BOOL fWriteToBaseStream ); // will be set to same format as bass stream
|
|
// (set up as a pass-through). If pStream == NULL
|
|
// and this is set to TRUE, then format of stream is reset
|
|
HRESULT GetBaseStream([out] ISpStreamFormat **ppStream);
|
|
|
|
HRESULT SetFormat([in] REFGUID rguidFormatIdOfConvertedStream, [in] const WAVEFORMATEX * pWaveFormatExOfConvertedStream);
|
|
// Note: GetFormat method of ISpStreamFormat returns the format of the converted stream.
|
|
|
|
HRESULT ResetSeekPosition();
|
|
|
|
HRESULT ScaleConvertedToBaseOffset(
|
|
[in] ULONGLONG ullOffsetConvertedStream,
|
|
[out] ULONGLONG * pullOffsetBaseStream);
|
|
|
|
HRESULT ScaleBaseToConvertedOffset(
|
|
[in] ULONGLONG ullOffsetBaseStream,
|
|
[out] ULONGLONG * pullOffsetConvertedStream);
|
|
};
|
|
|
|
//--- ISpAudio --------------------------------------------------------------
|
|
|
|
typedef [hidden] enum _SPAUDIOSTATE
|
|
{
|
|
SPAS_CLOSED,
|
|
SPAS_STOP,
|
|
SPAS_PAUSE,
|
|
SPAS_RUN
|
|
} SPAUDIOSTATE;
|
|
|
|
typedef [restricted, hidden] struct SPAUDIOSTATUS
|
|
{
|
|
long cbFreeBuffSpace;
|
|
ULONG cbNonBlockingIO;
|
|
SPAUDIOSTATE State;
|
|
ULONGLONG CurSeekPos;
|
|
ULONGLONG CurDevicePos;
|
|
DWORD dwReserved1;
|
|
DWORD dwReserved2;
|
|
} SPAUDIOSTATUS;
|
|
|
|
typedef [restricted, hidden] struct SPAUDIOBUFFERINFO
|
|
{
|
|
ULONG ulMsMinNotification;
|
|
ULONG ulMsBufferSize;
|
|
ULONG ulMsEventBias;
|
|
} SPAUDIOBUFFERINFO;
|
|
|
|
[
|
|
object,
|
|
uuid(C05C768F-FAE8-4EC2-8E07-338321C12452),
|
|
helpstring("ISpAudio Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
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);
|
|
};
|
|
|
|
//--- ISpMMSysAudio ---------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(15806F6E-1D70-4B48-98E6-3B1A007509AB),
|
|
helpstring("ISpMMSysAudio Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
restricted
|
|
]
|
|
interface ISpMMSysAudio : ISpAudio
|
|
{
|
|
HRESULT GetDeviceId([out] UINT * puDeviceId);
|
|
HRESULT SetDeviceId([in] UINT uDeviceId);
|
|
HRESULT GetMMHandle(void ** pHandle);
|
|
HRESULT GetLineId([out] UINT *puLineId);
|
|
HRESULT SetLineId([in] UINT uLineId);
|
|
};
|
|
|
|
//--- ISpTranscript ---------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(10F63BCE-201A-11D3-AC70-00C04F8EE6C0),
|
|
helpstring("ISpTranscript Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpTranscript : IUnknown
|
|
{
|
|
HRESULT GetTranscript([out, string] WCHAR ** ppszTranscript);
|
|
HRESULT AppendTranscript([in, string] const WCHAR * pszTranscript);
|
|
};
|
|
|
|
//--- Structures used by ISpPhrase interface --------------------------------
|
|
|
|
typedef [hidden] enum SPDISPLYATTRIBUTES
|
|
{
|
|
SPAF_ONE_TRAILING_SPACE = 0x02,
|
|
SPAF_TWO_TRAILING_SPACES = 0x04,
|
|
SPAF_CONSUME_LEADING_SPACES = 0x08,
|
|
SPAF_ALL = 0x0F
|
|
} SPDISPLAYATTRIBUTES;
|
|
|
|
typedef unsigned short SPPHONEID;
|
|
|
|
typedef [restricted, hidden] struct SPPHRASEELEMENT
|
|
{
|
|
ULONG ulAudioTimeOffset;
|
|
ULONG ulAudioSizeTime; // In 100ns units
|
|
ULONG ulAudioStreamOffset;
|
|
ULONG ulAudioSizeBytes;
|
|
ULONG ulRetainedStreamOffset;
|
|
ULONG ulRetainedSizeBytes;
|
|
const WCHAR * pszDisplayText;
|
|
const WCHAR * pszLexicalForm;
|
|
const SPPHONEID * pszPronunciation;
|
|
BYTE bDisplayAttributes;
|
|
signed char RequiredConfidence;
|
|
signed char ActualConfidence;
|
|
BYTE Reserved;
|
|
float SREngineConfidence;
|
|
} SPPHRASEELEMENT;
|
|
|
|
typedef [restricted, hidden] struct SPPHRASERULE SPPHRASERULE;
|
|
|
|
[hidden] struct SPPHRASERULE
|
|
{
|
|
const WCHAR * pszName;
|
|
ULONG ulId;
|
|
ULONG ulFirstElement;
|
|
ULONG ulCountOfElements;
|
|
const SPPHRASERULE * pNextSibling;
|
|
const SPPHRASERULE * pFirstChild;
|
|
float SREngineConfidence;
|
|
signed char Confidence;
|
|
};
|
|
|
|
|
|
typedef [restricted, hidden] struct SPPHRASEPROPERTY SPPHRASEPROPERTY;
|
|
|
|
[hidden] struct SPPHRASEPROPERTY
|
|
{
|
|
const WCHAR * pszName;
|
|
ULONG ulId;
|
|
const WCHAR * pszValue;
|
|
VARIANT vValue; // Will be VT_BOOL, VT_I4, VT_R4, VT_R8, or VT_BYREF (only for dynamic grammars)
|
|
ULONG ulFirstElement;
|
|
ULONG ulCountOfElements;
|
|
const SPPHRASEPROPERTY* pNextSibling;
|
|
const SPPHRASEPROPERTY* pFirstChild;
|
|
float SREngineConfidence;
|
|
signed char Confidence;
|
|
};
|
|
|
|
typedef [restricted, hidden] struct SPPHRASEREPLACEMENT
|
|
{
|
|
BYTE bDisplayAttributes;
|
|
const WCHAR * pszReplacementText;
|
|
ULONG ulFirstElement;
|
|
ULONG ulCountOfElements;
|
|
} SPPHRASEREPLACEMENT;
|
|
|
|
typedef [restricted, hidden] struct SPPHRASE
|
|
{
|
|
ULONG cbSize; // Size of structure
|
|
LANGID LangID;
|
|
WORD wReserved;
|
|
ULONGLONG ullGrammarID;
|
|
ULONGLONG ftStartTime;
|
|
ULONGLONG ullAudioStreamPosition;
|
|
ULONG ulAudioSizeBytes;
|
|
ULONG ulRetainedSizeBytes;
|
|
ULONG ulAudioSizeTime; // In 100ns units
|
|
SPPHRASERULE Rule;
|
|
const SPPHRASEPROPERTY* pProperties;
|
|
const SPPHRASEELEMENT * pElements;
|
|
ULONG cReplacements;
|
|
const SPPHRASEREPLACEMENT * pReplacements;
|
|
GUID SREngineID;
|
|
ULONG ulSREnginePrivateDataSize;
|
|
const BYTE * pSREnginePrivateData;
|
|
} SPPHRASE;
|
|
|
|
|
|
//--- Serialized phrase
|
|
|
|
typedef [restricted, hidden] struct SPSERIALIZEDPHRASE
|
|
{
|
|
ULONG ulSerializedSize; // Size of structure in bytes
|
|
} SPSERIALIZEDPHRASE;
|
|
|
|
|
|
|
|
typedef [hidden] enum SPVALUETYPE
|
|
{
|
|
SPDF_PROPERTY = 0x00000001,
|
|
SPDF_REPLACEMENT = 0x00000002,
|
|
SPDF_RULE = 0x00000004,
|
|
SPDF_DISPLAYTEXT = 0x00000008,
|
|
SPDF_LEXICALFORM = 0x00000010,
|
|
SPDF_PRONUNCIATION = 0x00000020,
|
|
SPDF_AUDIO = 0x00000040,
|
|
SPDF_ALTERNATES = 0x00000080,
|
|
SPDF_ALL = 0x000000FF
|
|
} SPVALUETYPE;
|
|
|
|
|
|
// Binary grammar public declaration
|
|
|
|
typedef [hidden] struct SPBINARYGRAMMAR
|
|
{
|
|
ULONG ulTotalSerializedSize;
|
|
} SPBINARYGRAMMAR;
|
|
|
|
// Possible arguments for methods that take phrase element start and count
|
|
|
|
typedef [hidden] enum SPPHRASERNG
|
|
{
|
|
SPPR_ALL_ELEMENTS = -1
|
|
} SPPHRASERNG;
|
|
cpp_quote("#define SP_GETWHOLEPHRASE SPPR_ALL_ELEMENTS")
|
|
cpp_quote("#define SPRR_ALL_ELEMENTS SPPR_ALL_ELEMENTS")
|
|
|
|
cpp_quote("#if 0")
|
|
typedef void * SPSTATEHANDLE;
|
|
cpp_quote("#else")
|
|
cpp_quote("DECLARE_HANDLE(SPSTATEHANDLE);")
|
|
cpp_quote("#endif")
|
|
|
|
|
|
|
|
|
|
typedef [hidden] enum SPRECOEVENTFLAGS
|
|
{
|
|
SPREF_AutoPause = (1 << 0),
|
|
SPREF_Emulated = (1 << 1)
|
|
} SPRECOEVENTFLAGS;
|
|
|
|
|
|
|
|
//--- ISpLexicon ------------------------------------------------------------
|
|
typedef [hidden] enum SPPARTOFSPEECH
|
|
{
|
|
//--- SAPI5 public POS category values (bits 28-31)
|
|
SPPS_NotOverriden = -1,
|
|
SPPS_Unknown = 0,
|
|
SPPS_Noun = 0x1000,
|
|
SPPS_Verb = 0x2000,
|
|
SPPS_Modifier = 0x3000,
|
|
SPPS_Function = 0x4000,
|
|
SPPS_Interjection = 0x5000
|
|
} SPPARTOFSPEECH;
|
|
|
|
typedef [hidden] enum SPLEXICONTYPE
|
|
{
|
|
eLEXTYPE_USER = (1L << 0),
|
|
eLEXTYPE_APP = (1L << 1),
|
|
eLEXTYPE_RESERVED1 = (1L << 2),
|
|
eLEXTYPE_RESERVED2 = (1L << 3),
|
|
eLEXTYPE_RESERVED3 = (1L << 4),
|
|
eLEXTYPE_RESERVED4 = (1L << 5),
|
|
eLEXTYPE_RESERVED5 = (1L << 6),
|
|
eLEXTYPE_RESERVED6 = (1L << 7),
|
|
eLEXTYPE_RESERVED7 = (1L << 8),
|
|
eLEXTYPE_RESERVED8 = (1L << 9),
|
|
eLEXTYPE_RESERVED9 = (1L << 10),
|
|
eLEXTYPE_RESERVED10 = (1L << 11),
|
|
eLEXTYPE_PRIVATE1 = (1L << 12),
|
|
eLEXTYPE_PRIVATE2 = (1L << 13),
|
|
eLEXTYPE_PRIVATE3 = (1L << 14),
|
|
eLEXTYPE_PRIVATE4 = (1L << 15),
|
|
eLEXTYPE_PRIVATE5 = (1L << 16),
|
|
eLEXTYPE_PRIVATE6 = (1L << 17),
|
|
eLEXTYPE_PRIVATE7 = (1L << 18),
|
|
eLEXTYPE_PRIVATE8 = (1L << 19),
|
|
eLEXTYPE_PRIVATE9 = (1L << 20),
|
|
eLEXTYPE_PRIVATE10 = (1L << 21),
|
|
eLEXTYPE_PRIVATE11 = (1L << 22),
|
|
eLEXTYPE_PRIVATE12 = (1L << 23),
|
|
eLEXTYPE_PRIVATE13 = (1L << 24),
|
|
eLEXTYPE_PRIVATE14 = (1L << 25),
|
|
eLEXTYPE_PRIVATE15 = (1L << 26),
|
|
eLEXTYPE_PRIVATE16 = (1L << 27),
|
|
eLEXTYPE_PRIVATE17 = (1L << 28),
|
|
eLEXTYPE_PRIVATE18 = (1L << 29),
|
|
eLEXTYPE_PRIVATE19 = (1L << 30),
|
|
eLEXTYPE_PRIVATE20 = (1L << 31),
|
|
} SPLEXICONTYPE;
|
|
|
|
typedef [hidden] enum SPWORDTYPE
|
|
{
|
|
eWORDTYPE_ADDED = (1L << 0),
|
|
eWORDTYPE_DELETED = (1L << 1)
|
|
} SPWORDTYPE;
|
|
|
|
typedef [restricted, hidden] struct SPWORDPRONUNCIATION
|
|
{
|
|
struct SPWORDPRONUNCIATION * pNextWordPronunciation;
|
|
SPLEXICONTYPE eLexiconType;
|
|
LANGID LangID;
|
|
WORD wReserved;
|
|
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;
|
|
WCHAR * pszWord;
|
|
SPWORDPRONUNCIATION * pFirstWordPronunciation;
|
|
} SPWORD;
|
|
|
|
typedef [restricted, hidden] struct SPWORDLIST
|
|
{
|
|
ULONG ulSize;
|
|
BYTE * pvBuffer;
|
|
SPWORD * pFirstWord;
|
|
} SPWORDLIST;
|
|
|
|
[
|
|
object,
|
|
uuid(DA41A7C2-5383-4DB2-916B-6C1719E3DB58),
|
|
helpstring("ISpLexicon Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpLexicon : IUnknown
|
|
{
|
|
HRESULT GetPronunciations(
|
|
[in] const WCHAR * pszWord,
|
|
[in] LANGID LangID,
|
|
[in] DWORD dwFlags,
|
|
[in, out] SPWORDPRONUNCIATIONLIST * pWordPronunciationList
|
|
);
|
|
HRESULT AddPronunciation(
|
|
[in] const WCHAR * pszWord,
|
|
[in] LANGID LangID,
|
|
[in] SPPARTOFSPEECH ePartOfSpeech,
|
|
[in] const SPPHONEID * pszPronunciation
|
|
);
|
|
HRESULT RemovePronunciation(
|
|
[in] const WCHAR * pszWord,
|
|
[in] LANGID LangID,
|
|
[in] SPPARTOFSPEECH ePartOfSpeech,
|
|
[in] const SPPHONEID * pszPronunciation
|
|
);
|
|
|
|
HRESULT GetGeneration(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),
|
|
|
|
helpstring("ISpContainerLexicon Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpContainerLexicon : ISpLexicon
|
|
{
|
|
HRESULT AddLexicon([in] ISpLexicon *pAddLexicon, [in] DWORD dwFlags);
|
|
};
|
|
|
|
//--- ISpPhoneConverter -----------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(8445C581-0CAC-4A38-ABFE-9B2CE2826455),
|
|
helpstring("ISpPhoneConverter Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpPhoneConverter : ISpObjectWithToken
|
|
{
|
|
HRESULT PhoneToId([in] const WCHAR * pszPhone, [out] SPPHONEID * pId);
|
|
HRESULT IdToPhone([in] const SPPHONEID * pId, [out] WCHAR * pszPhone);
|
|
};
|
|
|
|
//--- ISpVoice --------------------------------------------------------------
|
|
// These structures maintain the absolute state of the voice relative to
|
|
// the voice's baseline XML state.
|
|
typedef [restricted, hidden] struct SPVPITCH
|
|
{
|
|
long MiddleAdj;
|
|
long RangeAdj;
|
|
} SPVPITCH;
|
|
|
|
typedef [hidden] enum SPVACTIONS
|
|
{
|
|
SPVA_Speak = 0,
|
|
SPVA_Silence,
|
|
SPVA_Pronounce,
|
|
SPVA_Bookmark,
|
|
SPVA_SpellOut,
|
|
SPVA_Section,
|
|
SPVA_ParseUnknownTag
|
|
} SPVACTIONS;
|
|
|
|
typedef [restricted, hidden] struct SPVCONTEXT
|
|
{
|
|
LPCWSTR pCategory;
|
|
LPCWSTR pBefore;
|
|
LPCWSTR pAfter;
|
|
} SPVCONTEXT;
|
|
|
|
typedef [restricted, hidden] struct SPVSTATE
|
|
{
|
|
//--- Action
|
|
SPVACTIONS eAction;
|
|
|
|
//--- Running state values
|
|
LANGID LangID;
|
|
WORD wReserved;
|
|
long EmphAdj;
|
|
long RateAdj;
|
|
ULONG Volume;
|
|
SPVPITCH PitchAdj;
|
|
ULONG SilenceMSecs;
|
|
SPPHONEID* pPhoneIds; // NULL terminated array of phone ids
|
|
SPPARTOFSPEECH ePartOfSpeech;
|
|
SPVCONTEXT Context;
|
|
} SPVSTATE;
|
|
|
|
typedef [hidden] enum SPRUNSTATE
|
|
{
|
|
SPRS_DONE = (1L << 0), // The voice is done rendering all queued phrases
|
|
SPRS_IS_SPEAKING = (1L << 1) // The SpVoice currently has the audio queue claimed
|
|
} 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 = (1L << 0),
|
|
SPVPRI_OVER = (1L << 1)
|
|
} SPVPRIORITY;
|
|
|
|
typedef [restricted, hidden] struct SPVOICESTATUS
|
|
{
|
|
ULONG ulCurrentStream; // Current stream being rendered
|
|
ULONG ulLastStreamQueued; // Number of the last stream queued
|
|
HRESULT hrLastResult; // Result of last speak
|
|
DWORD dwRunningState; // SPRUNSTATE
|
|
ULONG ulInputWordPos; // Input position of current word being rendered
|
|
ULONG ulInputWordLen; // Length of current word being rendered
|
|
ULONG ulInputSentPos; // Input position of current sentence being rendered
|
|
ULONG ulInputSentLen; // Length of current sentence being rendered
|
|
LONG lBookmarkId; // Current bookmark converted to a long integer
|
|
SPPHONEID PhonemeId; // Current phoneme id
|
|
SPVISEMES VisemeId; // Current viseme
|
|
DWORD dwReserved1; // Reserved for future expansion
|
|
DWORD dwReserved2; // Reserved for future expansion
|
|
} SPVOICESTATUS;
|
|
|
|
typedef [hidden] enum SPEAKFLAGS
|
|
{
|
|
//--- SpVoice flags
|
|
SPF_DEFAULT = 0, // Synchronous, no purge, xml auto detect
|
|
SPF_ASYNC = (1L << 0), // Asynchronous call
|
|
SPF_PURGEBEFORESPEAK = (1L << 1), // Purge current data prior to speaking this
|
|
SPF_IS_FILENAME = (1L << 2), // The string passed to Speak() is a file name
|
|
SPF_IS_XML = (1L << 3), // The input text will be parsed for XML markup
|
|
SPF_IS_NOT_XML = (1L << 4), // The input text will not be parsed for XML markup
|
|
SPF_PERSIST_XML = (1L << 5), // Persists XML global state changes
|
|
|
|
//--- Normalizer flags
|
|
SPF_NLP_SPEAK_PUNC = (1L << 6), // The normalization processor should speak the punctuation
|
|
|
|
//--- Masks
|
|
SPF_NLP_MASK = (SPF_NLP_SPEAK_PUNC),
|
|
SPF_VOICE_MASK = (SPF_ASYNC|SPF_PURGEBEFORESPEAK|SPF_IS_FILENAME|SPF_IS_XML|SPF_IS_NOT_XML|SPF_NLP_MASK|SPF_PERSIST_XML),
|
|
SPF_UNUSED_FLAGS = ~(SPF_VOICE_MASK)
|
|
} SPEAKFLAGS;
|
|
|
|
[
|
|
object,
|
|
uuid(6C44DF74-72B9-4992-A1EC-EF996E0422D4),
|
|
helpstring("ISpVoice Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpVoice : ISpEventSource
|
|
{
|
|
HRESULT SetOutput( [in] IUnknown * pUnkOutput, [in]BOOL 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] const WCHAR* pwcs,
|
|
[in] DWORD dwFlags,
|
|
[out] ULONG * pulStreamNumber);
|
|
HRESULT SpeakStream(
|
|
[in] IStream* pStream, // If not ISpStreamFormat supported then SPDFID_Text assumed
|
|
[in] DWORD dwFlags,
|
|
[out] ULONG * pulStreamNumber);
|
|
|
|
HRESULT GetStatus(
|
|
[out] SPVOICESTATUS *pStatus,
|
|
[out, string] WCHAR ** ppszLastBookmark);
|
|
|
|
HRESULT Skip( [in,string]WCHAR* 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] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData,
|
|
[out] BOOL *pfSupported);
|
|
[local] HRESULT DisplayUI(
|
|
[in] HWND hwndParent,
|
|
[in] const WCHAR * pszTitle,
|
|
[in] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData);
|
|
|
|
};
|
|
|
|
|
|
//--- ISpPhrase interface ---------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(1A5C0354-B621-4b5a-8791-D306ED379E53),
|
|
local,
|
|
helpstring("ISpPhrase Interface"),
|
|
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] BOOL fUseTextReplacements,
|
|
[out] WCHAR ** ppszCoMemText, [out] BYTE * pbDisplayAttributes);
|
|
HRESULT Discard([in] DWORD dwValueTypes);
|
|
};
|
|
|
|
[
|
|
object,
|
|
uuid(8FCEBC98-4E49-4067-9C6C-D86A0E092E3D),
|
|
local,
|
|
helpstring("ISpPhraseAlt Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpPhraseAlt : ISpPhrase
|
|
{
|
|
HRESULT GetAltInfo(ISpPhrase **ppParent, ULONG *pulStartElementInParent, ULONG *pcElementsInParent,
|
|
ULONG *pcElementsInAlt);
|
|
HRESULT Commit();
|
|
};
|
|
|
|
|
|
|
|
//--- ISpRecoResult ---------------------------------------------------------
|
|
typedef [restricted, hidden] struct SPRECORESULTTIMES
|
|
{
|
|
FILETIME ftStreamTime; // GetSystemTimeAsFileTime() at start of result
|
|
// UTC time as number of 100-nanosecond intervals
|
|
// since January 1, 1601
|
|
ULONGLONG ullLength; // length in 100ns units
|
|
DWORD dwTickCount; // GetTickCount() at start of result
|
|
// milliseconds that have elapsed since the
|
|
// system was started.
|
|
ULONGLONG ullStart; // 100ns units since start of stream
|
|
} SPRECORESULTTIMES;
|
|
|
|
|
|
typedef [hidden] struct SPSERIALIZEDRESULT
|
|
{
|
|
ULONG ulSerializedSize; // Count in bytes (including this ULONG) of the entire phrase
|
|
} SPSERIALIZEDRESULT;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(20B053BE-E235-43cd-9A2A-8D17A48B7842),
|
|
helpstring("ISpRecoResult Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
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);
|
|
};
|
|
|
|
|
|
|
|
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
|
|
} SPRULESTATE;
|
|
|
|
const ULONGLONG SP_STREAMPOS_ASAP = 0;
|
|
const ULONGLONG SP_STREAMPOS_REALTIME = -1;
|
|
|
|
|
|
|
|
// Special transition types used only by AddRuleTransition
|
|
|
|
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
|
|
} SPGRAMMARWORDTYPE;
|
|
|
|
typedef [hidden] struct tagSPPROPERTYINFO
|
|
{
|
|
const WCHAR * pszName;
|
|
ULONG ulId;
|
|
const WCHAR * pszValue;
|
|
VARIANT vValue; // Must be VT_BOOL, VT_I4, VT_R4, VT_R8, or VT_BYREF (only for dynamic grammars)
|
|
} SPPROPERTYINFO;
|
|
|
|
typedef [hidden] enum SPCFGRULEATTRIBUTES
|
|
{
|
|
SPRAF_TopLevel = (1 << 0),
|
|
SPRAF_Active = (1 << 1),
|
|
SPRAF_Export = (1 << 2),
|
|
SPRAF_Import = (1 << 3),
|
|
SPRAF_Interpreter = (1 << 4),
|
|
SPRAF_Dynamic = (1 << 5),
|
|
// The following flag is only valid at run-time as part of a rule state and
|
|
// is not valid to pass as part of a rule definition.
|
|
SPRAF_AutoPause = (1 << 16)
|
|
} SPCFGRULEATTRIBUTES;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(8137828F-591A-4A42-BE58-49EA7EBAAC68),
|
|
helpstring("ISpGrammarBuilder Interface"),
|
|
pointer_default(unique),
|
|
restricted,
|
|
local
|
|
]
|
|
interface ISpGrammarBuilder : IUnknown
|
|
{
|
|
HRESULT ResetGrammar([in] LANGID NewLanguage);
|
|
|
|
HRESULT GetRule([in] const WCHAR * pszRuleName,
|
|
[in] DWORD dwRuleId,
|
|
[in] DWORD dwAttributes,
|
|
[in] BOOL fCreateIfNotExist,
|
|
[out] SPSTATEHANDLE * phInitialState);
|
|
HRESULT ClearRule(SPSTATEHANDLE hState);
|
|
|
|
HRESULT CreateNewState(
|
|
SPSTATEHANDLE hState,
|
|
SPSTATEHANDLE * phState);
|
|
|
|
HRESULT AddWordTransition(
|
|
SPSTATEHANDLE hFromState,
|
|
SPSTATEHANDLE hToState,
|
|
const WCHAR * psz, // If NULL then epsilon
|
|
const WCHAR * pszSeparators, // If NULL then psz points to a single word, else specifies valid separator characters
|
|
SPGRAMMARWORDTYPE eWordType,
|
|
float Weight,
|
|
const SPPROPERTYINFO * pPropInfo);
|
|
|
|
HRESULT AddRuleTransition(
|
|
SPSTATEHANDLE hFromState,
|
|
SPSTATEHANDLE hToState,
|
|
SPSTATEHANDLE hRule, // Must be the initial state of the rule
|
|
float Weight,
|
|
const SPPROPERTYINFO * pPropInfo);
|
|
|
|
HRESULT AddResource([in] SPSTATEHANDLE hRuleState, // Any state handle in a rule is OK
|
|
[in] const WCHAR * pszResourceName,
|
|
[in] const WCHAR * pszResourceValue);
|
|
|
|
HRESULT Commit(DWORD dwReserved);
|
|
};
|
|
|
|
|
|
// --- Options for Load methods on ISpRecoGrammar
|
|
typedef [hidden] enum SPLOADOPTIONS
|
|
{
|
|
SPLO_STATIC = 0,
|
|
SPLO_DYNAMIC = 1
|
|
} SPLOADOPTIONS;
|
|
|
|
|
|
|
|
//--- ISpRecoGrammar -------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(2177DB29-7F45-47D0-8554-067E91C80502),
|
|
helpstring("ISpRecoGrammar Interface"),
|
|
pointer_default(unique),
|
|
restricted,
|
|
local
|
|
]
|
|
interface ISpRecoGrammar : ISpGrammarBuilder
|
|
{
|
|
HRESULT GetGrammarId([out] ULONGLONG * pullGrammarId);
|
|
HRESULT GetRecoContext([out] ISpRecoContext **ppRecoCtxt);
|
|
|
|
// Command and control interfaces
|
|
HRESULT LoadCmdFromFile([in, string] const WCHAR * pszFileName, [in] SPLOADOPTIONS Options);
|
|
HRESULT LoadCmdFromObject([in] REFCLSID rcid, [in, string] const WCHAR * pszGrammarName, [in] SPLOADOPTIONS Options);
|
|
HRESULT LoadCmdFromResource([in] HMODULE hModule,
|
|
[in, string] const WCHAR * pszResourceName,
|
|
[in, string] const WCHAR * pszResourceType,
|
|
[in] WORD wLanguage,
|
|
[in] SPLOADOPTIONS Options);
|
|
HRESULT LoadCmdFromMemory([in] const SPBINARYGRAMMAR * pGrammar, [in] SPLOADOPTIONS Options);
|
|
HRESULT LoadCmdFromProprietaryGrammar(
|
|
[in] REFGUID rguidParam,
|
|
[in, string] const WCHAR * pszStringParam,
|
|
[in] const void * pvDataPrarm,
|
|
[in] ULONG cbDataSize,
|
|
[in] SPLOADOPTIONS Options);
|
|
HRESULT SetRuleState([in, string] const WCHAR * pszName, void * pReserved,
|
|
[in] SPRULESTATE NewState);
|
|
HRESULT SetRuleIdState([in] ULONG ulRuleId, [in] SPRULESTATE NewState);
|
|
|
|
|
|
// Dictation / statistical language model
|
|
HRESULT LoadDictation([in, string] const WCHAR * pszTopicName, [in] SPLOADOPTIONS Options);
|
|
HRESULT UnloadDictation();
|
|
HRESULT SetDictationState([in] SPRULESTATE NewState);
|
|
|
|
// Word sequence buffer
|
|
HRESULT SetWordSequenceData([in] const WCHAR * pText, [in] ULONG cchText, [in] const SPTEXTSELECTIONINFO * pInfo);
|
|
HRESULT SetTextSelection([in] const SPTEXTSELECTIONINFO * pInfo);
|
|
|
|
HRESULT IsPronounceable([in, string] const WCHAR * pszWord, [out] SPWORDPRONOUNCEABLE *pWordPronounceable);
|
|
|
|
HRESULT SetGrammarState([in] SPGRAMMARSTATE eGrammarState);
|
|
|
|
HRESULT SaveCmd([in] IStream * pStream, [out, optional] WCHAR ** ppszCoMemErrorText);
|
|
|
|
HRESULT GetGrammarState([out] SPGRAMMARSTATE * peGrammarState);
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//--- ISpRecoContext --------------------------------------------------------
|
|
typedef [restricted, hidden] struct SPRECOCONTEXTSTATUS
|
|
{
|
|
SPINTERFERENCE eInterference;
|
|
WCHAR szRequestTypeOfUI[255]; // If first byte null, there is no UI request
|
|
DWORD dwReserved1;
|
|
DWORD dwReserved2;
|
|
} SPRECOCONTEXTSTATUS;
|
|
|
|
typedef [hidden] enum SPBOOKMARKOPTIONS
|
|
{
|
|
SPBO_NONE = 0,
|
|
SPBO_PAUSE = 1
|
|
} SPBOOKMARKOPTIONS;
|
|
|
|
|
|
typedef [hidden] enum SPAUDIOOPTIONS
|
|
{
|
|
SPAO_NONE = 0,
|
|
SPAO_RETAIN_AUDIO = (1 << 0)
|
|
} SPAUDIOOPTIONS;
|
|
|
|
[
|
|
object,
|
|
uuid(F740A62F-7C15-489E-8234-940A33D9272D),
|
|
helpstring("ISpRecoContext Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
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] const WCHAR *pAdaptationData, [in] const ULONG cch);
|
|
|
|
HRESULT Pause( DWORD dwReserved );
|
|
HRESULT Resume( DWORD dwReserved );
|
|
|
|
HRESULT SetVoice([in] ISpVoice *pVoice, [in] BOOL fAllowFormatChanges);
|
|
HRESULT GetVoice([out] ISpVoice **ppVoice);
|
|
HRESULT SetVoicePurgeEvent([in] ULONGLONG ullEventInterest);
|
|
HRESULT GetVoicePurgeEvent([out] ULONGLONG *pullEventInterest);
|
|
|
|
HRESULT SetContextState([in] SPCONTEXTSTATE eContextState);
|
|
HRESULT GetContextState([in] SPCONTEXTSTATE * peContextState);
|
|
};
|
|
|
|
|
|
//--- ISpProperties ------------------------------------------------------------
|
|
[
|
|
object,
|
|
uuid(5B4FB971-B115-4DE1-AD97-E482E3BF6EE4),
|
|
helpstring("ISpProperties Interface"),
|
|
pointer_default(unique),
|
|
local,
|
|
restricted
|
|
]
|
|
interface ISpProperties : IUnknown
|
|
{
|
|
HRESULT SetPropertyNum( [in]const WCHAR* pName, [in]LONG lValue );
|
|
HRESULT GetPropertyNum( [in]const WCHAR* pName, [out]LONG* plValue );
|
|
HRESULT SetPropertyString( [in]const WCHAR* pName, [in]const WCHAR* pValue );
|
|
HRESULT GetPropertyString( [in]const WCHAR* pName, [out]WCHAR** ppCoMemValue );
|
|
};
|
|
|
|
const ULONG SP_MAX_LANGIDS = 20; // Engine can support up to 20 languages at once
|
|
|
|
//--- ISpRecognizer ---------------------------------------------------------
|
|
typedef [restricted, hidden] struct SPRECOGNIZERSTATUS
|
|
{
|
|
SPAUDIOSTATUS AudioStatus;
|
|
ULONGLONG ullRecognitionStreamPos;
|
|
ULONG ulStreamNumber;
|
|
ULONG ulNumActive;
|
|
CLSID clsidEngine;
|
|
ULONG cLangIDs;
|
|
LANGID aLangID[SP_MAX_LANGIDS];
|
|
DWORD dwReserved1;
|
|
DWORD dwReserved2;
|
|
} SPRECOGNIZERSTATUS;
|
|
|
|
typedef [hidden] enum SPWAVEFORMATTYPE
|
|
{
|
|
SPWF_INPUT, // WAVEFORMATEX of audio input source
|
|
SPWF_SRENGINE // WAVEFORMATEX of the audio received by the SR engine
|
|
} SPSTREAMFORMATTYPE;
|
|
|
|
typedef [hidden] enum SPRECOSTATE
|
|
{
|
|
SPRST_INACTIVE, // Audio deactivated
|
|
SPRST_ACTIVE, // Audio running only if one or more rules are active
|
|
SPRST_ACTIVE_ALWAYS, // Audio running regardless of rule state
|
|
SPRST_INACTIVE_WITH_PURGE, // State will be set to inactive, but all active audio purged
|
|
SPRST_NUM_STATES
|
|
} SPRECOSTATE;
|
|
|
|
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(C2B5F241-DAA0-4507-9E16-5A1EAA2B7A5C),
|
|
helpstring("ISpRecognizer Interface"),
|
|
pointer_default(unique),
|
|
restricted
|
|
]
|
|
interface ISpRecognizer : ISpProperties
|
|
{
|
|
HRESULT SetRecognizer([in] ISpObjectToken * pRecognizer);
|
|
HRESULT GetRecognizer([out] ISpObjectToken **ppRecognizer);
|
|
|
|
HRESULT SetInput([in] IUnknown * pUnkInput, [in] BOOL 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] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData,
|
|
[out] BOOL *pfSupported);
|
|
[local] HRESULT DisplayUI(
|
|
[in] HWND hwndParent,
|
|
[in] const WCHAR * pszTitle,
|
|
[in] const WCHAR * pszTypeOfUI,
|
|
[in] void * pvExtraData,
|
|
[in] ULONG cbExtraData);
|
|
HRESULT EmulateRecognition([in] ISpPhrase *pPhrase);
|
|
};
|
|
|
|
|
|
|
|
//
|
|
//=== CoClass definitions =====================================================
|
|
//
|
|
[
|
|
helpstring("Microsoft Speech Object Library"),
|
|
uuid(C866CA3A-32F7-11D2-9602-00C04F8EE628),
|
|
version(5.0)
|
|
]
|
|
library SpeechLib
|
|
{
|
|
importlib("stdole32.tlb");
|
|
importlib("stdole2.tlb");
|
|
|
|
#include "sapiaut.idl"
|
|
|
|
//--- SpNotifyTranslator ------------------------------------------------
|
|
[
|
|
uuid(E2AE5372-5D40-11D2-960E-00C04F8EE628),
|
|
helpstring("SpNotify"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpNotifyTranslator
|
|
{
|
|
interface ISpNotifyTranslator;
|
|
}
|
|
|
|
//--- SpObjectTokenCategory ---------------------------------------------
|
|
[
|
|
uuid(A910187F-0C7A-45AC-92CC-59EDAFB77B53),
|
|
helpstring("SpObjectTokenCategory Class"),
|
|
]
|
|
coclass SpObjectTokenCategory
|
|
{
|
|
[default] interface ISpeechObjectTokenCategory;
|
|
interface ISpObjectTokenCategory;
|
|
}
|
|
//--- SpObjectToken ---------------------------------------------
|
|
[
|
|
uuid(EF411752-3736-4CB4-9C8C-8EF4CCB58EFE),
|
|
helpstring("SpObjectToken Class")
|
|
]
|
|
coclass SpObjectToken
|
|
{
|
|
[default] interface ISpeechObjectToken;
|
|
interface ISpObjectToken;
|
|
}
|
|
|
|
//--- SpResourceManager -------------------------------------------------
|
|
[
|
|
uuid(96749373-3391-11D2-9EE3-00C04F797396),
|
|
helpstring("SpResourceManger"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpResourceManager
|
|
{
|
|
[default] interface ISpResourceManager;
|
|
};
|
|
|
|
//--- SpStreamFormatConverter -------------------------------------------
|
|
[
|
|
uuid(7013943A-E2EC-11D2-A086-00C04F8EF9B5),
|
|
helpstring("FormatConverter Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpStreamFormatConverter
|
|
{
|
|
[default] interface ISpStreamFormatConverter;
|
|
};
|
|
|
|
//--- SpMMAudioEnum -----------------------------------------------------
|
|
[
|
|
uuid(AB1890A0-E91F-11D2-BB91-00C04F8EE6C0),
|
|
helpstring("SpMMAudioEnum Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpMMAudioEnum
|
|
{
|
|
interface IEnumSpObjectTokens;
|
|
};
|
|
|
|
//--- SpMMAudioIn -------------------------------------------------------
|
|
[
|
|
uuid(CF3D2E50-53F2-11D2-960C-00C04F8EE628),
|
|
helpstring("SpMMAudioIn Class")
|
|
]
|
|
coclass SpMMAudioIn
|
|
{
|
|
[default] interface ISpeechMMSysAudio;
|
|
interface ISpEventSource;
|
|
interface ISpEventSink;
|
|
interface ISpObjectWithToken;
|
|
interface ISpMMSysAudio;
|
|
};
|
|
|
|
//--- SpMMAudioOut ------------------------------------------------------
|
|
[
|
|
uuid(A8C680EB-3D32-11D2-9EE7-00C04F797396),
|
|
helpstring("SpMMAudioOut Class")
|
|
]
|
|
coclass SpMMAudioOut
|
|
{
|
|
[default] interface ISpeechMMSysAudio;
|
|
interface ISpEventSource;
|
|
interface ISpEventSink;
|
|
interface ISpObjectWithToken;
|
|
interface ISpMMSysAudio;
|
|
};
|
|
|
|
//--- SpRecPlayAudio -------------------------------------------------
|
|
[
|
|
uuid(FEE225FC-7AFD-45E9-95D0-5A318079D911),
|
|
helpstring("SpRecPlayAudio Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpRecPlayAudio
|
|
{
|
|
interface ISpObjectWithToken;
|
|
interface ISpAudio;
|
|
};
|
|
|
|
//--- SpStream ----------------------------------------------------------
|
|
[
|
|
uuid(715D9C59-4442-11D2-9605-00C04F8EE628),
|
|
helpstring("SpStream Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpStream
|
|
{
|
|
interface ISpStream;
|
|
};
|
|
|
|
//--- SpVoice -----------------------------------------------------------
|
|
[
|
|
uuid(96749377-3391-11D2-9EE3-00C04F797396),
|
|
helpstring("SpVoice Class")
|
|
]
|
|
coclass SpVoice
|
|
{
|
|
[default] interface ISpeechVoice;
|
|
interface ISpVoice;
|
|
|
|
[default, source] dispinterface _ISpeechVoiceEvents;
|
|
};
|
|
|
|
//--- SpSharedRecoContext -----------------------------------------------
|
|
[
|
|
uuid(47206204-5ECA-11D2-960F-00C04F8EE628),
|
|
helpstring("SpSharedRecoContext Class")
|
|
]
|
|
coclass SpSharedRecoContext
|
|
{
|
|
[default] interface ISpeechRecoContext;
|
|
interface ISpRecoContext;
|
|
|
|
[default, source] dispinterface _ISpeechRecoContextEvents;
|
|
};
|
|
|
|
//--- SpInprocRecognizer ------------------------------------------------
|
|
[
|
|
uuid(41B89B6B-9399-11D2-9623-00C04F8EE628),
|
|
helpstring("SpInprocRecognizer Class")
|
|
]
|
|
coclass SpInprocRecognizer
|
|
{
|
|
[default] interface ISpeechRecognizer;
|
|
interface ISpRecognizer;
|
|
};
|
|
|
|
//--- SpSharedRecognizer ----------------------------------------------
|
|
[
|
|
uuid(3BEE4890-4FE9-4A37-8C1E-5E7E12791C1F),
|
|
helpstring("SpSharedRecognizer Class")
|
|
]
|
|
coclass SpSharedRecognizer
|
|
{
|
|
[default] interface ISpeechRecognizer;
|
|
interface ISpRecognizer;
|
|
};
|
|
|
|
//--- SpLexicon ----------------------------------------------------------
|
|
[
|
|
uuid(0655E396-25D0-11D3-9C26-00C04F8EF87C),
|
|
helpstring("SpLexicon Class")
|
|
]
|
|
coclass SpLexicon
|
|
{
|
|
[default] interface ISpeechLexicon;
|
|
interface ISpLexicon;
|
|
};
|
|
|
|
//--- SpUnCompressedLexicon ---------------------------------------------------
|
|
[
|
|
uuid(C9E37C15-DF92-4727-85D6-72E5EEB6995A),
|
|
helpstring("SpUnCompressedLexicon Class")
|
|
]
|
|
coclass SpUnCompressedLexicon
|
|
{
|
|
[default] interface ISpeechLexicon;
|
|
interface ISpLexicon;
|
|
interface ISpObjectWithToken;
|
|
};
|
|
|
|
//--- SpCompressedLexicon ---------------------------------------------------
|
|
[
|
|
uuid(90903716-2F42-11D3-9C26-00C04F8EF87C),
|
|
helpstring("SpCompressedLexicon Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpCompressedLexicon
|
|
{
|
|
[default] interface ISpLexicon;
|
|
interface ISpObjectWithToken;
|
|
};
|
|
|
|
//--- SpPhoneConverter ------------------------------------------------
|
|
[
|
|
uuid(9185F743-1143-4C28-86B5-BFF14F20E5C8),
|
|
helpstring("SpPhoneConverter Class")
|
|
]
|
|
coclass SpPhoneConverter
|
|
{
|
|
[default] interface ISpeechPhoneConverter;
|
|
interface ISpPhoneConverter;
|
|
};
|
|
|
|
//--- SpNullPhoneConverter ------------------------------------------------
|
|
[
|
|
uuid(455F24E9-7396-4A16-9715-7C0FDBE3EFE3),
|
|
helpstring("SpNullPhoneConverter Class"),
|
|
restricted,
|
|
hidden
|
|
]
|
|
coclass SpNullPhoneConverter
|
|
{
|
|
[default] interface ISpPhoneConverter;
|
|
};
|
|
|
|
#ifdef SAPI_AUTOMATION
|
|
|
|
//--- SpTextSelectionInformation ------------------------------------------------
|
|
[
|
|
uuid(0F92030A-CBFD-4AB8-A164-FF5985547FF6),
|
|
helpstring("SpTextSelectionInformation Class"),
|
|
]
|
|
coclass SpTextSelectionInformation
|
|
{
|
|
[default] interface ISpeechTextSelectionInformation;
|
|
};
|
|
|
|
//--- SpPhraseInfoBuilder ------------------------------------------------
|
|
[
|
|
uuid(C23FC28D-C55F-4720-8B32-91F73C2BD5D1),
|
|
helpstring("SpPhraseInfoBuilder Class"),
|
|
]
|
|
coclass SpPhraseInfoBuilder
|
|
{
|
|
[default] interface ISpeechPhraseInfoBuilder;
|
|
};
|
|
|
|
//--- SpAudioFormat ------------------------------------------------
|
|
[
|
|
uuid(9EF96870-E160-4792-820D-48CF0649E4EC),
|
|
helpstring("SpAudioFormat Class"),
|
|
]
|
|
coclass SpAudioFormat
|
|
{
|
|
[default] interface ISpeechAudioFormat;
|
|
};
|
|
|
|
//--- SpWaveFormatEx ------------------------------------------------
|
|
[
|
|
uuid(C79A574C-63BE-44b9-801F-283F87F898BE),
|
|
helpstring("SpWaveFormatEx Class"),
|
|
]
|
|
coclass SpWaveFormatEx
|
|
{
|
|
[default] interface ISpeechWaveFormatEx;
|
|
};
|
|
|
|
//--- SpInProcRecoContext -----------------------------------------------
|
|
[
|
|
uuid(73AD6842-ACE0-45E8-A4DD-8795881A2C2A),
|
|
helpstring("SpInProcRecoContext Class")
|
|
]
|
|
coclass SpInProcRecoContext
|
|
{
|
|
[default] interface ISpeechRecoContext;
|
|
interface ISpRecoContext;
|
|
|
|
[default, source] dispinterface _ISpeechRecoContextEvents;
|
|
};
|
|
|
|
//--- SpCustomStream ------------------------------------------------
|
|
[
|
|
uuid(8DBEF13F-1948-4aa8-8CF0-048EEBED95D8),
|
|
helpstring("SpCustomStream Class"),
|
|
]
|
|
coclass SpCustomStream
|
|
{
|
|
[default] interface ISpeechCustomStream;
|
|
interface ISpStream;
|
|
};
|
|
|
|
//--- SpFileStream ------------------------------------------------
|
|
[
|
|
uuid(947812B3-2AE1-4644-BA86-9E90DED7EC91),
|
|
helpstring("SpFileStream Class"),
|
|
]
|
|
coclass SpFileStream
|
|
{
|
|
[default] interface ISpeechFileStream;
|
|
interface ISpStream;
|
|
};
|
|
|
|
//--- SpMemoryStream ------------------------------------------------
|
|
[
|
|
uuid(5FB7EF7D-DFF4-468a-B6B7-2FCBD188F994),
|
|
helpstring("SpMemoryStream Class"),
|
|
]
|
|
coclass SpMemoryStream
|
|
{
|
|
[default] interface ISpeechMemoryStream;
|
|
interface ISpStream;
|
|
};
|
|
|
|
|
|
#endif // SAPI_AUTOMATION
|
|
}
|
|
|