1 // Copyright © 2015, Connor Hilarides 2 // Licensed under the MIT License <LICENSE.md> 3 //! Mappings for the contents of sapi.h 4 ENUM!{enum SPDATAKEYLOCATION { 5 SPDKL_DefaultLocation = 0, 6 SPDKL_CurrentUser = 1, 7 SPDKL_LocalMachine = 2, 8 SPDKL_CurrentConfig = 5, 9 }} 10 pub const SPDUI_EngineProperties: &'static str = "EngineProperties"; 11 pub const SPDUI_AddRemoveWord: &'static str = "AddRemoveWord"; 12 pub const SPDUI_UserTraining: &'static str = "UserTraining"; 13 pub const SPDUI_MicTraining: &'static str = "MicTraining"; 14 pub const SPDUI_RecoProfileProperties: &'static str = "RecoProfileProperties"; 15 pub const SPDUI_AudioProperties: &'static str = "AudioProperties"; 16 pub const SPDUI_AudioVolume: &'static str = "AudioVolume"; 17 pub const SPDUI_UserEnrollment: &'static str = "UserEnrollment"; 18 pub const SPDUI_ShareData: &'static str = "ShareData"; 19 pub const SPDUI_Tutorial: &'static str = "Tutorial"; 20 ENUM!{enum SPSTREAMFORMAT { 21 SPSF_Default = -1i32 as u32, 22 SPSF_NoAssignedFormat = 0, 23 SPSF_Text = 1, 24 SPSF_NonStandardFormat = 2, 25 SPSF_ExtendedAudioFormat = 3, 26 SPSF_8kHz8BitMono = 4, 27 SPSF_8kHz8BitStereo = 5, 28 SPSF_8kHz16BitMono = 6, 29 SPSF_8kHz16BitStereo = 7, 30 SPSF_11kHz8BitMono = 8, 31 SPSF_11kHz8BitStereo = 9, 32 SPSF_11kHz16BitMono = 10, 33 SPSF_11kHz16BitStereo = 11, 34 SPSF_12kHz8BitMono = 12, 35 SPSF_12kHz8BitStereo = 13, 36 SPSF_12kHz16BitMono = 14, 37 SPSF_12kHz16BitStereo = 15, 38 SPSF_16kHz8BitMono = 16, 39 SPSF_16kHz8BitStereo = 17, 40 SPSF_16kHz16BitMono = 18, 41 SPSF_16kHz16BitStereo = 19, 42 SPSF_22kHz8BitMono = 20, 43 SPSF_22kHz8BitStereo = 21, 44 SPSF_22kHz16BitMono = 22, 45 SPSF_22kHz16BitStereo = 23, 46 SPSF_24kHz8BitMono = 24, 47 SPSF_24kHz8BitStereo = 25, 48 SPSF_24kHz16BitMono = 26, 49 SPSF_24kHz16BitStereo = 27, 50 SPSF_32kHz8BitMono = 28, 51 SPSF_32kHz8BitStereo = 29, 52 SPSF_32kHz16BitMono = 30, 53 SPSF_32kHz16BitStereo = 31, 54 SPSF_44kHz8BitMono = 32, 55 SPSF_44kHz8BitStereo = 33, 56 SPSF_44kHz16BitMono = 34, 57 SPSF_44kHz16BitStereo = 35, 58 SPSF_48kHz8BitMono = 36, 59 SPSF_48kHz8BitStereo = 37, 60 SPSF_48kHz16BitMono = 38, 61 SPSF_48kHz16BitStereo = 39, 62 SPSF_TrueSpeech_8kHz1BitMono = 40, 63 SPSF_CCITT_ALaw_8kHzMono = 41, 64 SPSF_CCITT_ALaw_8kHzStereo = 42, 65 SPSF_CCITT_ALaw_11kHzMono = 43, 66 SPSF_CCITT_ALaw_11kHzStereo = 44, 67 SPSF_CCITT_ALaw_22kHzMono = 45, 68 SPSF_CCITT_ALaw_22kHzStereo = 46, 69 SPSF_CCITT_ALaw_44kHzMono = 47, 70 SPSF_CCITT_ALaw_44kHzStereo = 48, 71 SPSF_CCITT_uLaw_8kHzMono = 49, 72 SPSF_CCITT_uLaw_8kHzStereo = 50, 73 SPSF_CCITT_uLaw_11kHzMono = 51, 74 SPSF_CCITT_uLaw_11kHzStereo = 52, 75 SPSF_CCITT_uLaw_22kHzMono = 53, 76 SPSF_CCITT_uLaw_22kHzStereo = 54, 77 SPSF_CCITT_uLaw_44kHzMono = 55, 78 SPSF_CCITT_uLaw_44kHzStereo = 56, 79 SPSF_ADPCM_8kHzMono = 57, 80 SPSF_ADPCM_8kHzStereo = 58, 81 SPSF_ADPCM_11kHzMono = 59, 82 SPSF_ADPCM_11kHzStereo = 60, 83 SPSF_ADPCM_22kHzMono = 61, 84 SPSF_ADPCM_22kHzStereo = 62, 85 SPSF_ADPCM_44kHzMono = 63, 86 SPSF_ADPCM_44kHzStereo = 64, 87 SPSF_GSM610_8kHzMono = 65, 88 SPSF_GSM610_11kHzMono = 66, 89 SPSF_GSM610_22kHzMono = 67, 90 SPSF_GSM610_44kHzMono = 68, 91 SPSF_NUM_FORMATS = 69, 92 }} 93 pub const SPREG_USER_ROOT: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech"; 94 pub const SPREG_LOCAL_MACHINE_ROOT: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech"; 95 pub const SPCAT_AUDIOOUT: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput"; 96 pub const SPCAT_AUDIOIN: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput"; 97 pub const SPCAT_VOICES: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices"; 98 pub const SPCAT_RECOGNIZERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Recognizers"; 99 pub const SPCAT_APPLEXICONS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AppLexicons"; 100 pub const SPCAT_PHONECONVERTERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\PhoneConverters"; 101 pub const SPCAT_TEXTNORMALIZERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\TextNormalizers"; 102 pub const SPCAT_RECOPROFILES: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\RecoProfiles"; 103 pub const SPMMSYS_AUDIO_IN_TOKEN_ID: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput\\TokenEnums\\MMAudioIn\\"; 104 pub const SPMMSYS_AUDIO_OUT_TOKEN_ID: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput\\TokenEnums\\MMAudioOut\\"; 105 pub const SPCURRENT_USER_LEXICON_TOKEN_ID: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserLexicon"; 106 pub const SPCURRENT_USER_SHORTCUT_TOKEN_ID: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserShortcut"; 107 pub const SPTOKENVALUE_CLSID: &'static str = "CLSID"; 108 pub const SPTOKENKEY_FILES: &'static str = "Files"; 109 pub const SPTOKENKEY_UI: &'static str = "UI"; 110 pub const SPTOKENKEY_ATTRIBUTES: &'static str = "Attributes"; 111 pub const SPTOKENKEY_RETAINEDAUDIO: &'static str = "SecondsPerRetainedAudioEvent"; 112 pub const SPTOKENKEY_AUDIO_LATENCY_WARNING: &'static str = "LatencyWarningThreshold"; 113 pub const SPTOKENKEY_AUDIO_LATENCY_TRUNCATE: &'static str = "LatencyTruncateThreshold"; 114 pub const SPTOKENKEY_AUDIO_LATENCY_UPDATE_INTERVAL: &'static str = "LatencyUpdateInterval"; 115 pub const SPVOICECATEGORY_TTSRATE: &'static str = "DefaultTTSRate"; 116 pub const SPPROP_RESOURCE_USAGE: &'static str = "ResourceUsage"; 117 pub const SPPROP_HIGH_CONFIDENCE_THRESHOLD: &'static str = "HighConfidenceThreshold"; 118 pub const SPPROP_NORMAL_CONFIDENCE_THRESHOLD: &'static str = "NormalConfidenceThreshold"; 119 pub const SPPROP_LOW_CONFIDENCE_THRESHOLD: &'static str = "LowConfidenceThreshold"; 120 pub const SPPROP_RESPONSE_SPEED: &'static str = "ResponseSpeed"; 121 pub const SPPROP_COMPLEX_RESPONSE_SPEED: &'static str = "ComplexResponseSpeed"; 122 pub const SPPROP_ADAPTATION_ON: &'static str = "AdaptationOn"; 123 pub const SPPROP_PERSISTED_BACKGROUND_ADAPTATION: &'static str = "PersistedBackgroundAdaptation"; 124 pub const SPPROP_PERSISTED_LANGUAGE_MODEL_ADAPTATION: &'static str = "PersistedLanguageModelAdaptation"; 125 pub const SPPROP_UX_IS_LISTENING: &'static str = "UXIsListening"; 126 pub const SPTOPIC_SPELLING: &'static str = "Spelling"; 127 pub const SPWILDCARD: &'static str = "..."; 128 pub const SPDICTATION: &'static str = "*"; 129 pub const SPINFDICTATION: &'static str = "*+"; 130 pub const SPREG_SAFE_USER_TOKENS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\UserTokens"; 131 pub const SP_LOW_CONFIDENCE: i32 = -1; 132 pub const SP_NORMAL_CONFIDENCE: i32 = 0; 133 pub const SP_HIGH_CONFIDENCE: i32 = 1; 134 pub const DEFAULT_WEIGHT: i32 = 1; 135 pub const SP_MAX_WORD_LENGTH: i32 = 128; 136 pub const SP_MAX_PRON_LENGTH: i32 = 384; 137 pub const SP_EMULATE_RESULT: i32 = 0x40000000; 138 RIDL!( 139 interface ISpNotifyCallback(ISpNotifyCallbackVtbl) { 140 fn NotifyCallback(&mut self, wParam: ::WPARAM, lParam: ::LPARAM) -> ::HRESULT 141 } 142 ); 143 pub type SPNOTIFYCALLBACK = unsafe extern "system" fn(wParam: ::WPARAM, lParam: ::LPARAM); 144 RIDL!( 145 interface ISpNotifySource(ISpNotifySourceVtbl): IUnknown(IUnknownVtbl) { 146 fn SetNotifySink(&mut self, pNotifySink: *mut ISpNotifySink) -> ::HRESULT, 147 fn SetNotifyWindowMessage( 148 &mut self, hWnd: ::HWND, Msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM 149 ) -> ::HRESULT, 150 fn SetNotifyCallbackFunction( 151 &mut self, pfnCallback: SPNOTIFYCALLBACK, wParam: ::WPARAM, lParam: ::LPARAM 152 ) -> ::HRESULT, 153 fn SetNotifyCallbackInterface( 154 &mut self, pSpCallback: *mut ISpNotifyCallback, wParam: ::WPARAM, lParam: ::LPARAM 155 ) -> ::HRESULT, 156 fn SetNotifyWin32Event(&mut self) -> ::HRESULT, 157 fn WaitForNotifyEvent(&mut self, dwMilliseconds: ::DWORD) -> ::HRESULT, 158 fn GetNotifyEventHandle(&mut self) -> ::HANDLE 159 } 160 ); 161 RIDL!( 162 interface ISpNotifySink(ISpNotifySinkVtbl): IUnknown(IUnknownVtbl) { 163 fn Notify(&mut self) -> ::HRESULT 164 } 165 ); 166 RIDL!( 167 interface ISpNotifyTranslator(ISpNotifyTranslatorVtbl): ISpNotifySink(ISpNotifySinkVtbl) { 168 fn InitWindowMessage( 169 &mut self, hWnd: ::HWND, Msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM 170 ) -> ::HRESULT, 171 fn InitCallback( 172 &mut self, pfnCallback: SPNOTIFYCALLBACK, wParam: ::WPARAM, lParam: ::LPARAM 173 ) -> ::HRESULT, 174 fn InitSpNotifyCallback( 175 &mut self, pSpCallback: *mut ISpNotifyCallback, wParam: ::WPARAM, lParam: ::LPARAM 176 ) -> ::HRESULT, 177 fn InitWin32Event(&mut self, hEvent: ::HANDLE, fCloseHandleOnRelease: ::BOOL) -> ::HRESULT, 178 fn Wait(&mut self, dwMilliseconds: ::DWORD) -> ::HRESULT, 179 fn GetEventHandle(&mut self) -> ::HANDLE 180 } 181 ); 182 RIDL!( 183 interface ISpDataKey(ISpDataKeyVtbl): IUnknown(IUnknownVtbl) { 184 fn SetData( 185 &mut self, pszValueName: ::LPCWSTR, cbData: ::ULONG, pData: *const ::BYTE 186 ) -> ::HRESULT, 187 fn GetData( 188 &mut self, pszValueName: ::LPCWSTR, pcbData: *mut ::ULONG, pData: *mut ::BYTE 189 ) -> ::HRESULT, 190 fn SetStringValue(&mut self, pszValueName: ::LPCWSTR, pszValue: ::LPCWSTR) -> ::HRESULT, 191 fn GetStringValue(&mut self, pszValueName: ::LPCWSTR, ppszValue: *mut ::LPWSTR) -> ::HRESULT, 192 fn SetDWORD(&mut self, pszValueName: ::LPCWSTR, dwValue: ::DWORD) -> ::HRESULT, 193 fn GetDWORD(&mut self, pszValueName: ::LPCWSTR, pdwValue: *mut ::DWORD) -> ::HRESULT, 194 fn OpenKey(&mut self, pszSubKeyName: ::LPCWSTR, ppSubKey: *mut *mut ISpDataKey) -> ::HRESULT, 195 fn CreateKey(&mut self, pszSubKey: ::LPCWSTR, ppSubKey: *mut *mut ISpDataKey) -> ::HRESULT, 196 fn DeleteKey(&mut self, pszSubKey: ::LPCWSTR) -> ::HRESULT, 197 fn DeleteValue(&mut self, pszValueName: ::LPCWSTR) -> ::HRESULT, 198 fn EnumKeys(&mut self, Index: ::ULONG, ppszSubKeyName: *mut ::LPWSTR) -> ::HRESULT, 199 fn EnumValues(&mut self, Index: ::ULONG, ppszValueName: *mut ::LPWSTR) -> ::HRESULT 200 } 201 ); 202 RIDL!( 203 interface ISpRegDataKey(ISpRegDataKeyVtbl): ISpDataKey(ISpDataKeyVtbl) { 204 fn SetKey(&mut self, hkey: ::HKEY, fReadOnly: ::BOOL) -> ::HRESULT 205 } 206 ); 207 RIDL!( 208 interface ISpObjectTokenCategory(ISpObjectTokenCategoryVtbl): ISpDataKey(ISpDataKeyVtbl) { 209 fn SetId(&mut self, pszCategoryId: ::LPCWSTR, fCreateIfNotExist: ::BOOL) -> ::HRESULT, 210 fn GetId(&mut self, ppszCoMemCategoryId: *mut ::LPWSTR) -> ::HRESULT, 211 fn GetDataKey( 212 &mut self, spdkl: SPDATAKEYLOCATION, pppDataKey: *mut *mut ISpDataKey 213 ) -> ::HRESULT, 214 fn EnumTokens( 215 &mut self, pzsReqAttribs: ::LPCWSTR, pszOptAttribs: ::LPCWSTR, 216 ppEnum: *mut *mut IEnumSpObjectTokens 217 ) -> ::HRESULT, 218 fn SetDefaultTokenId(&mut self, pszTokenId: ::LPCWSTR) -> ::HRESULT, 219 fn GetDefaultTokenId(&mut self, ppszCoMemTokenId: *mut ::LPWSTR) -> ::HRESULT 220 } 221 ); 222 RIDL!( 223 interface ISpObjectToken(ISpObjectTokenVtbl): ISpDataKey(ISpDataKeyVtbl) { 224 fn SetId( 225 &mut self, pszCategoryId: ::LPCWSTR, pszTokenId: ::LPCWSTR, fCreateIfNotExist: ::BOOL 226 ) -> ::HRESULT, 227 fn GetId(&mut self, ppszCoMemTokenId: *mut ::LPWSTR) -> ::HRESULT, 228 fn GetCategory(&mut self, ppTokenCategory: *mut *mut ISpObjectTokenCategory) -> ::HRESULT, 229 fn CreateInstance( 230 &mut self, pUnkOuter: *mut ::IUnknown, dwClsContext: ::DWORD, riid: ::REFIID, 231 ppvObject: *mut *mut ::c_void 232 ) -> ::HRESULT, 233 fn GetStorageFileName( 234 &mut self, clsidCaller: ::REFCLSID, pszValueName: ::LPCWSTR, 235 pszFileNameSpecifier: ::LPCWSTR, nFolder: ::ULONG, ppszFilePath: *mut ::LPWSTR 236 ) -> ::HRESULT, 237 fn RemoveStorageFileName(&mut self, pszKeyName: ::LPCWSTR, fDeleteFile: ::BOOL) -> ::HRESULT, 238 fn Remove(&mut self, pclsidCaller: *const ::CLSID) -> ::HRESULT, 239 fn IsUISupported( 240 &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG, 241 punkObject: *mut ::IUnknown, pfSupported: *mut ::BOOL 242 ) -> ::HRESULT, 243 fn DisplayUI( 244 &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR, 245 pvExtraData: *mut ::c_void, cbExtraData: ::ULONG, punkObject: *mut ::IUnknown 246 ) -> ::HRESULT, 247 fn MatchesAttributes(&mut self, pszAttributes: ::LPCWSTR, pfMatches: *mut ::BOOL) -> ::HRESULT 248 } 249 ); 250 RIDL!( 251 interface ISpObjectTokenInit(ISpObjectTokenInitVtbl): ISpObjectToken(ISpObjectTokenVtbl) { 252 fn InitFromDataKey( 253 &mut self, pszCategoryId: ::LPCWSTR, pszTokenId: ::LPCWSTR, pDataKey: *mut ISpDataKey 254 ) -> ::HRESULT 255 } 256 ); 257 RIDL!( 258 interface IEnumSpObjectTokens(IEnumSpObjectTokensVtbl): IUnknown(IUnknownVtbl) { 259 fn Next( 260 &mut self, celt: ::ULONG, pelt: *mut *mut ISpObjectToken, pceltFetched: *mut ::ULONG 261 ) -> ::HRESULT, 262 fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT, 263 fn Reset(&mut self) -> ::HRESULT, 264 fn Clone(&mut self, ppEnum: *mut *mut IEnumSpObjectTokens) -> ::HRESULT, 265 fn Item(&mut self, Index: ::ULONG, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT, 266 fn GetCount(&mut self, pCount: *mut ::ULONG) -> ::HRESULT 267 } 268 ); 269 RIDL!( 270 interface ISpObjectWithToken(ISpObjectWithTokenVtbl): IUnknown(IUnknownVtbl) { 271 fn SetObjectToken(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT, 272 fn GetObjectToken(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT 273 } 274 ); 275 RIDL!( 276 interface ISpResourceManager(ISpResourceManagerVtbl): IServiceProvider(IServiceProviderVtbl) { 277 fn SetObject(&mut self, guidServiceId: ::REFGUID, pUnkObject: *mut ::IUnknown) -> ::HRESULT, 278 fn GetObject( 279 &mut self, guidServiceId: ::REFGUID, ObjectCLSID: ::REFCLSID, ObjectIID: ::REFIID, 280 fReleaseWhenLastExternalRefReleased: ::BOOL, ppObject: *mut *mut ::c_void 281 ) -> ::HRESULT 282 } 283 ); 284 ENUM!{enum SPEVENTLPARAMTYPE { 285 SPET_LPARAM_IS_UNDEFINED = 0, 286 SPET_LPARAM_IS_TOKEN, 287 SPET_LPARAM_IS_OBJECT, 288 SPET_LPARAM_IS_POINTER, 289 SPET_LPARAM_IS_STRING, 290 }} 291 ENUM!{enum SPEVENTENUM { 292 SPEI_UNDEFINED = 0, 293 SPEI_START_INPUT_STREAM = 1, 294 SPEI_END_INPUT_STREAM = 2, 295 SPEI_VOICE_CHANGE = 3, 296 SPEI_TTS_BOOKMARK = 4, 297 SPEI_WORD_BOUNDARY = 5, 298 SPEI_PHONEME = 6, 299 SPEI_SENTENCE_BOUNDARY = 7, 300 SPEI_VISEME = 8, 301 SPEI_TTS_AUDIO_LEVEL = 9, 302 SPEI_TTS_PRIVATE = 15, 303 SPEI_END_SR_STREAM = 34, 304 SPEI_SOUND_START = 35, 305 SPEI_SOUND_END = 36, 306 SPEI_PHRASE_START = 37, 307 SPEI_RECOGNITION = 38, 308 SPEI_HYPOTHESIS = 39, 309 SPEI_SR_BOOKMARK = 40, 310 SPEI_PROPERTY_NUM_CHANGE = 41, 311 SPEI_PROPERTY_STRING_CHANGE = 42, 312 SPEI_FALSE_RECOGNITION = 43, 313 SPEI_INTERFERENCE = 44, 314 SPEI_REQUEST_UI = 45, 315 SPEI_RECO_STATE_CHANGE = 46, 316 SPEI_ADAPTATION = 47, 317 SPEI_START_SR_STREAM = 48, 318 SPEI_RECO_OTHER_CONTEXT = 49, 319 SPEI_SR_AUDIO_LEVEL = 50, 320 SPEI_SR_RETAINEDAUDIO = 51, 321 SPEI_SR_PRIVATE = 52, 322 SPEI_ACTIVE_CATEGORY_CHANGED = 53, 323 SPEI_RESERVED5 = 54, 324 SPEI_RESERVED6 = 55, 325 SPEI_RESERVED1 = 30, 326 SPEI_RESERVED2 = 33, 327 SPEI_RESERVED3 = 63, 328 }} 329 pub const SPEI_MIN_TTS: SPEVENTENUM = SPEI_START_INPUT_STREAM; 330 pub const SPEI_MAX_TTS: SPEVENTENUM = SPEI_TTS_PRIVATE; 331 pub const SPEI_MIN_SR: SPEVENTENUM = SPEI_END_SR_STREAM; 332 pub const SPEI_MAX_SR: SPEVENTENUM = SPEI_RESERVED6; 333 pub const SPFEI_FLAGCHECK: u64 = (1 << SPEI_RESERVED1.0 as u64) | (1 << SPEI_RESERVED2.0 as u64); 334 pub const SPFEI_ALL_TTS_EVENTS: u64 = 0x000000000000FFFE | SPFEI_FLAGCHECK; 335 pub const SPFEI_ALL_SR_EVENTS: u64 = 0x003FFFFC00000000 | SPFEI_FLAGCHECK; 336 pub const SPFEI_ALL_EVENTS: u64 = 0xEFFFFFFFFFFFFFFF; 337 #[inline] 338 pub fn SPFEI(SPEI_ord: u64) -> u64 { 339 (1 << SPEI_ord) | SPFEI_FLAGCHECK 340 } 341 STRUCT!{struct SPEVENT { 342 eEventId: ::WORD, 343 elParamType: ::WORD, 344 ulStreamNum: ::ULONG, 345 ullAudioStreamOffset: ::ULONGLONG, 346 wParam: ::WPARAM, 347 lParam: ::LPARAM, 348 }} 349 STRUCT!{struct SPSERIALIZEDEVENT { 350 eEventId: ::WORD, 351 elParamType: ::WORD, 352 ulStreamNum: ::ULONG, 353 ullAudioStreamOffset: ::ULONGLONG, 354 SerializedwParam: ::ULONG, 355 SerializedlParam: ::LONG, 356 }} 357 STRUCT!{struct SPSERIALIZEDEVENT64 { 358 eEventId: ::WORD, 359 elParamType: ::WORD, 360 ulStreamNum: ::ULONG, 361 ullAudioStreamOffset: ::ULONGLONG, 362 SerializedwParam: ::ULONGLONG, 363 SerializedlParam: ::LONGLONG, 364 }} 365 STRUCT!{struct SPEVENTEX { 366 eEventId: ::WORD, 367 elParamType: ::WORD, 368 ulStreamNum: ::ULONG, 369 ullAudioStreamOffset: ::ULONGLONG, 370 wParam: ::WPARAM, 371 lParam: ::LPARAM, 372 ullAudioTimeOffset: ::ULONGLONG, 373 }} 374 ENUM!{enum SPINTERFERENCE { 375 SPINTERFERENCE_NONE = 0, 376 SPINTERFERENCE_NOISE = 1, 377 SPINTERFERENCE_NOSIGNAL = 2, 378 SPINTERFERENCE_TOOLOUD = 3, 379 SPINTERFERENCE_TOOQUIET = 4, 380 SPINTERFERENCE_TOOFAST = 5, 381 SPINTERFERENCE_TOOSLOW = 6, 382 SPINTERFERENCE_LATENCY_WARNING = 7, 383 SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN = 8, 384 SPINTERFERENCE_LATENCY_TRUNCATE_END = 9, 385 }} 386 FLAGS!{enum SPENDSRSTREAMFLAGS { 387 SPESF_NONE = 0, 388 SPESF_STREAM_RELEASED = 1 << 0, 389 SPESF_EMULATED = 1 << 1, 390 }} 391 FLAGS!{enum SPVFEATURE { 392 SPVFEATURE_STRESSED = 1 << 0, 393 SPVFEATURE_EMPHASIS = 1 << 1, 394 }} 395 ENUM!{enum SPVISEMES { 396 SP_VISEME_0 = 0, 397 SP_VISEME_1, 398 SP_VISEME_2, 399 SP_VISEME_3, 400 SP_VISEME_4, 401 SP_VISEME_5, 402 SP_VISEME_6, 403 SP_VISEME_7, 404 SP_VISEME_8, 405 SP_VISEME_9, 406 SP_VISEME_10, 407 SP_VISEME_11, 408 SP_VISEME_12, 409 SP_VISEME_13, 410 SP_VISEME_14, 411 SP_VISEME_15, 412 SP_VISEME_16, 413 SP_VISEME_17, 414 SP_VISEME_18, 415 SP_VISEME_19, 416 SP_VISEME_20, 417 SP_VISEME_21, 418 }} 419 STRUCT!{struct SPEVENTSOURCEINFO { 420 ullEventInterest: ::ULONGLONG, 421 ullQueuedInterest: ::ULONGLONG, 422 ulCount: ::ULONG, 423 }} 424 RIDL!( 425 interface ISpEventSource(ISpEventSourceVtbl): ISpNotifySource(ISpNotifySourceVtbl) { 426 fn SetInterest( 427 &mut self, ullEventInterest: ::ULONGLONG, ullQueuedInterest: ::ULONGLONG 428 ) -> ::HRESULT, 429 fn GetEvents( 430 &mut self, ulCount: ::ULONG, pEventArray: *mut SPEVENT, pulFetched: *mut ::ULONG 431 ) -> ::HRESULT, 432 fn GetInfo(&mut self, pInfo: *mut SPEVENTSOURCEINFO) -> ::HRESULT 433 } 434 ); 435 RIDL!( 436 interface ISpEventSource2(ISpEventSource2Vtbl): ISpEventSource(ISpEventSourceVtbl) { 437 fn GetEventsEx( 438 &mut self, ulCount: ::ULONG, pEventArray: *mut SPEVENTEX, pulFetched: *mut ::ULONG 439 ) -> ::HRESULT 440 } 441 ); 442 RIDL!( 443 interface ISpEventSink(ISpEventSinkVtbl): IUnknown(IUnknownVtbl) { 444 fn AddEvents(&mut self, pEventArray: *const SPEVENT, ulCount: ::ULONG) -> ::HRESULT, 445 fn GetEventInterest(&mut self, pullEventInterest: *mut ::ULONGLONG) -> ::HRESULT 446 } 447 ); 448 RIDL!( 449 interface ISpStreamFormat(ISpStreamFormatVtbl): IStream(IStreamVtbl) { 450 fn GetFormat( 451 &mut self, pguidFormatId: *mut ::GUID, ppCoMemWaveFormatEx: *mut *mut ::WAVEFORMATEX 452 ) -> ::HRESULT 453 } 454 ); 455 ENUM!{enum SPFILEMODE { 456 SPFM_OPEN_READONLY = 0, 457 SPFM_OPEN_READWRITE = 1, 458 SPFM_CREATE = 2, 459 SPFM_CREATE_ALWAYS = 3, 460 SPFM_NUM_MODES = 4, 461 }} 462 RIDL!( 463 interface ISpStream(ISpStreamVtbl): ISpStreamFormat(ISpStreamFormatVtbl) { 464 fn SetBaseStream( 465 &mut self, pStream: *mut ::IStream, rguidFormat: ::REFGUID, 466 pWaveFormatEx: *const ::WAVEFORMATEX 467 ) -> ::HRESULT, 468 fn GetBaseStream(&mut self, ppStream: *mut *mut ::IStream) -> ::HRESULT, 469 fn BindToFile( 470 &mut self, pszFileName: ::LPCWSTR, eMode: SPFILEMODE, pFormatId: *const ::GUID, 471 pWaveFormatEx: *const ::WAVEFORMATEX, ullEventInterest: ::ULONGLONG 472 ) -> ::HRESULT, 473 fn Close(&mut self) -> ::HRESULT 474 } 475 ); 476 RIDL!( 477 interface ISpStreamFormatConverter(ISpStreamFormatConverterVtbl) 478 : ISpStreamFormat(ISpStreamFormatVtbl) { 479 fn SetBaseStream( 480 &mut self, pStream: *mut ISpStreamFormat, fSetFormatToBaseStreamFormat: ::BOOL, 481 fWriteToBaseStream: ::BOOL 482 ) -> ::HRESULT, 483 fn GetBaseStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT, 484 fn SetFormat( 485 &mut self, rguidFormatIdOfConvertedStream: ::REFGUID, 486 pWaveFormatExOfConvertedStream: *const ::WAVEFORMATEX 487 ) -> ::HRESULT, 488 fn ResetSeekPosition(&mut self) -> ::HRESULT, 489 fn ScaleConvertedToBaseOffset( 490 &mut self, ullOffsetConvertedStream: ::ULONGLONG, pullOffsetBaseStream: *mut ::ULONGLONG 491 ) -> ::HRESULT, 492 fn ScaleBaseToConvertedOffset( 493 &mut self, ullOffsetBaseStream: ::ULONGLONG, pullOffsetConvertedStream: *mut ::ULONGLONG 494 ) -> ::HRESULT 495 } 496 ); 497 ENUM!{enum SPAUDIOSTATE { 498 SPAS_CLOSED = 0, 499 SPAS_STOP = 1, 500 SPAS_PAUSE = 2, 501 SPAS_RUN = 3, 502 }} 503 STRUCT!{struct SPAUDIOSTATUS { 504 cbFreeBuffSpace: ::LONG, 505 cbNonBlockingIO: ::ULONG, 506 State: SPAUDIOSTATE, 507 CurSeekPos: ::ULONGLONG, 508 CurDevicePos: ::ULONGLONG, 509 dwAudioLevel: ::DWORD, 510 dwReserved2: ::DWORD, 511 }} 512 STRUCT!{struct SPAUDIOBUFFERINFO { 513 ulMsMinNotification: ::ULONG, 514 ulMsBufferSize: ::ULONG, 515 ulMsEventBias: ::ULONG, 516 }} 517 RIDL!( 518 interface ISpAudio(ISpAudioVtbl): ISpStreamFormat(ISpStreamFormatVtbl) { 519 fn SetState(&mut self, NewState: SPAUDIOSTATE, ullReserved: ::ULONGLONG) -> ::HRESULT, 520 fn SetFormat( 521 &mut self, rguidFmtId: ::REFGUID, pWaveFormatEx: *const ::WAVEFORMATEX 522 ) -> ::HRESULT, 523 fn GetStatus(&mut self, pStatus: *mut SPAUDIOSTATUS) -> ::HRESULT, 524 fn SetBufferInfo(&mut self, pBuffInfo: *const SPAUDIOBUFFERINFO) -> ::HRESULT, 525 fn GetBufferInfo(&mut self, pBuffInfo: *mut SPAUDIOBUFFERINFO) -> ::HRESULT, 526 fn GetDefaultFormat( 527 &mut self, pFormatId: *mut ::GUID, ppCoMemWaveFormatEx: *mut *mut ::WAVEFORMATEX 528 ) -> ::HRESULT, 529 fn EventHandle(&mut self) -> ::HANDLE, 530 fn GetVolumeLevel(&mut self, pLevel: *mut ::ULONG) -> ::HRESULT, 531 fn SetVolumeLevel(&mut self, Level: ::ULONG) -> ::HRESULT, 532 fn GetBufferNotifySize(&mut self, pcbSize: *mut ::ULONG) -> ::HRESULT, 533 fn SetBufferNotifySize(&mut self, cbSize: ::ULONG) -> ::HRESULT 534 } 535 ); 536 RIDL!( 537 interface ISpMMSysAudio(ISpMMSysAudioVtbl): ISpAudio(ISpAudioVtbl) { 538 fn GetDeviceId(&mut self, puDeviceId: *mut ::UINT) -> ::HRESULT, 539 fn SetDeviceId(&mut self, uDeviceId: ::UINT) -> ::HRESULT, 540 fn GetMMHandle(&mut self, pHandle: *mut *mut ::c_void) -> ::HRESULT, 541 fn GetLineId(&mut self, puLineId: *mut ::UINT) -> ::HRESULT, 542 fn SetLineId(&mut self, uLineId: ::UINT) -> ::HRESULT 543 } 544 ); 545 RIDL!( 546 interface ISpTranscript(ISpTranscriptVtbl): IUnknown(IUnknownVtbl) { 547 fn GetTranscript(&mut self, ppszTranscript: *mut ::LPWSTR) -> ::HRESULT, 548 fn AppendTranscript(&mut self, pszTranscript: ::LPCWSTR) -> ::HRESULT 549 } 550 ); 551 FLAGS!{enum SPDISPLYATTRIBUTES { 552 SPAF_ONE_TRAILING_SPACE = 0x2, 553 SPAF_TWO_TRAILING_SPACES = 0x4, 554 SPAF_CONSUME_LEADING_SPACES = 0x8, 555 SPAF_BUFFER_POSITION = 0x10, 556 SPAF_ALL = 0x1f, 557 SPAF_USER_SPECIFIED = 0x80, 558 }} 559 pub type SPPHONEID = ::WCHAR; 560 pub type PSPPHONEID = ::LPWSTR; 561 pub type PCSPPHONEID = ::LPCWSTR; 562 STRUCT!{struct SPPHRASEELEMENT { 563 ulAudioTimeOffset: ::ULONG, 564 ulAudioSizeTime: ::ULONG, 565 ulAudioStreamOffset: ::ULONG, 566 ulAudioSizeBytes: ::ULONG, 567 ulRetainedStreamOffset: ::ULONG, 568 ulRetainedSizeBytes: ::ULONG, 569 pszDisplayText: ::LPCWSTR, 570 pszLexicalForm: ::LPCWSTR, 571 pszPronunciation: *const SPPHONEID, 572 bDisplayAttributes: ::BYTE, 573 RequiredConfidence: ::c_char, 574 ActualConfidence: ::c_char, 575 Reserved: ::BYTE, 576 SREngineConfidence: ::c_float, 577 }} 578 STRUCT!{struct SPPHRASERULE { 579 pszName: ::LPCWSTR, 580 ulId: ::ULONG, 581 ulFirstElement: ::ULONG, 582 ulCountOfElements: ::ULONG, 583 pNextSibling: *const SPPHRASERULE, 584 pFirstChild: *const SPPHRASERULE, 585 SREngineConfidence: ::c_float, 586 Confidence: ::c_char, 587 }} 588 ENUM!{enum SPPHRASEPROPERTYUNIONTYPE { 589 SPPPUT_UNUSED = 0, 590 SPPPUT_ARRAY_INDEX, 591 }} 592 STRUCT!{struct SPPHRASEPROPERTY { 593 pszName: ::LPCWSTR, 594 bType: ::BYTE, 595 bReserved: ::BYTE, 596 usArrayIndex: u16, 597 pszValue: ::LPCWSTR, 598 vValue: ::VARIANT, 599 ulFirstElement: ::ULONG, 600 ulCountOfElements: ::ULONG, 601 pNextSibling: *const SPPHRASEPROPERTY, 602 pFirstChild: *const SPPHRASEPROPERTY, 603 SREngineConfidence: ::c_float, 604 Confidence: ::c_char, 605 }} 606 UNION!(SPPHRASEPROPERTY, bType, ulId, ulId_mut, ::ULONG); 607 STRUCT!{struct SPPHRASEREPLACEMENT { 608 bDisplayAttributes: ::BYTE, 609 pszReplacementText: ::LPCWSTR, 610 ulFirstElement: ::ULONG, 611 ulCountOfElements: ::ULONG, 612 }} 613 STRUCT!{struct SPSEMANTICERRORINFO { 614 ulLineNumber: ::ULONG, 615 pszScriptLine: ::LPWSTR, 616 pszSource: ::LPWSTR, 617 pszDescription: ::LPWSTR, 618 hrResultCode: ::HRESULT, 619 }} 620 ENUM!{enum SPSEMANTICFORMAT { 621 SPSMF_SAPI_PROPERTIES = 0, 622 SPSMF_SRGS_SEMANTICINTERPRETATION_MS = 1, 623 SPSMF_SRGS_SAPIPROPERTIES = 2, 624 SPSMF_UPS = 4, 625 SPSMF_SRGS_SEMANTICINTERPRETATION_W3C = 8, 626 }} 627 STRUCT!{struct SPPHRASE_50 { 628 cbSize: ::ULONG, 629 LangID: ::WORD, 630 wHomophoneGroupId: ::WORD, 631 ullGrammarID: ::ULONGLONG, 632 ftStartTime: ::ULONGLONG, 633 ullAudioStreamPosition: ::ULONGLONG, 634 ulAudioSizeBytes: ::ULONG, 635 ulRetainedSizeBytes: ::ULONG, 636 ulAudioSizeTime: ::ULONG, 637 Rule: ::SPPHRASERULE, 638 pProperties: *const ::SPPHRASEPROPERTY, 639 pElements: *const ::SPPHRASEELEMENT, 640 cReplacements: ::ULONG, 641 pReplacements: *const ::SPPHRASEREPLACEMENT, 642 SREngineID: ::GUID, 643 ulSREnginePrivateDataSize: ::ULONG, 644 pSREnginePrivateData: *const ::BYTE, 645 }} 646 STRUCT!{struct SPPHRASE_53 { 647 cbSize: ::ULONG, 648 LangID: ::WORD, 649 wHomophoneGroupId: ::WORD, 650 ullGrammarID: ::ULONGLONG, 651 ftStartTime: ::ULONGLONG, 652 ullAudioStreamPosition: ::ULONGLONG, 653 ulAudioSizeBytes: ::ULONG, 654 ulRetainedSizeBytes: ::ULONG, 655 ulAudioSizeTime: ::ULONG, 656 Rule: ::SPPHRASERULE, 657 pProperties: *const ::SPPHRASEPROPERTY, 658 pElements: *const ::SPPHRASEELEMENT, 659 cReplacements: ::ULONG, 660 pReplacements: *const ::SPPHRASEREPLACEMENT, 661 SREngineID: ::GUID, 662 ulSREnginePrivateDataSize: ::ULONG, 663 pSREnginePrivateData: *const ::BYTE, 664 pSML: ::LPWSTR, 665 pSemanticErrorInfo: *mut SPSEMANTICERRORINFO, 666 }} 667 STRUCT!{struct SPPHRASE { 668 cbSize: ::ULONG, 669 LangID: ::WORD, 670 wHomophoneGroupId: ::WORD, 671 ullGrammarID: ::ULONGLONG, 672 ftStartTime: ::ULONGLONG, 673 ullAudioStreamPosition: ::ULONGLONG, 674 ulAudioSizeBytes: ::ULONG, 675 ulRetainedSizeBytes: ::ULONG, 676 ulAudioSizeTime: ::ULONG, 677 Rule: ::SPPHRASERULE, 678 pProperties: *const ::SPPHRASEPROPERTY, 679 pElements: *const ::SPPHRASEELEMENT, 680 cReplacements: ::ULONG, 681 pReplacements: *const ::SPPHRASEREPLACEMENT, 682 SREngineID: ::GUID, 683 ulSREnginePrivateDataSize: ::ULONG, 684 pSREnginePrivateData: *const ::BYTE, 685 pSML: ::LPWSTR, 686 pSemanticErrorInfo: *mut SPSEMANTICERRORINFO, 687 SemanticTagFormat: SPSEMANTICFORMAT, 688 }} 689 STRUCT!{struct SPSERIALIZEDPHRASE { 690 ulSerializedSize: ::ULONG, 691 }} 692 STRUCT!{struct SPRULE { 693 pszRuleName: ::LPCWSTR, 694 ulRuleId: ::ULONG, 695 dwAttributes: ::DWORD, 696 }} 697 FLAGS!{enum SPVALUETYPE { 698 SPDF_PROPERTY = 0x1, 699 SPDF_REPLACEMENT = 0x2, 700 SPDF_RULE = 0x4, 701 SPDF_DISPLAYTEXT = 0x8, 702 SPDF_LEXICALFORM = 0x10, 703 SPDF_PRONUNCIATION = 0x20, 704 SPDF_AUDIO = 0x40, 705 SPDF_ALTERNATES = 0x80, 706 SPDF_ALL = 0xff, 707 }} 708 STRUCT!{struct SPBINARYGRAMMAR { 709 ulTotalSerializedSize: ::ULONG, 710 }} 711 ENUM!{enum SPPHRASERNG { 712 SPPR_ALL_ELEMENTS = -1i32 as u32, 713 }} 714 pub const SP_GETWHOLEPHRASE: SPPHRASERNG = SPPR_ALL_ELEMENTS; 715 pub const SPRR_ALL_ELEMENTS: SPPHRASERNG = SPPR_ALL_ELEMENTS; 716 DECLARE_HANDLE!(SPSTATEHANDLE, SPSTATEHANDLE__); 717 FLAGS!{enum SPRECOEVENTFLAGS { 718 SPREF_AutoPause = 1 << 0, 719 SPREF_Emulated = 1 << 1, 720 SPREF_SMLTimeout = 1 << 2, 721 SPREF_ExtendableParse = 1 << 3, 722 SPREF_ReSent = 1 << 4, 723 SPREF_Hypothesis = 1 << 5, 724 SPREF_FalseRecognition = 1 << 6, 725 }} 726 ENUM!{enum SPPARTOFSPEECH { 727 SPPS_NotOverriden = -1i32 as u32, 728 SPPS_Unknown = 0, 729 SPPS_Noun = 0x1000, 730 SPPS_Verb = 0x2000, 731 SPPS_Modifier = 0x3000, 732 SPPS_Function = 0x4000, 733 SPPS_Interjection = 0x5000, 734 SPPS_Noncontent = 0x6000, 735 SPPS_LMA = 0x7000, 736 SPPS_SuppressWord = 0xf000, 737 }} 738 FLAGS!{enum SPLEXICONTYPE { 739 eLEXTYPE_USER = 1 << 0, 740 eLEXTYPE_APP = 1 << 1, 741 eLEXTYPE_VENDORLEXICON = 1 << 2, 742 eLEXTYPE_LETTERTOSOUND = 1 << 3, 743 eLEXTYPE_MORPHOLOGY = 1 << 4, 744 eLEXTYPE_RESERVED4 = 1 << 5, 745 eLEXTYPE_USER_SHORTCUT = 1 << 6, 746 eLEXTYPE_RESERVED6 = 1 << 7, 747 eLEXTYPE_RESERVED7 = 1 << 8, 748 eLEXTYPE_RESERVED8 = 1 << 9, 749 eLEXTYPE_RESERVED9 = 1 << 10, 750 eLEXTYPE_RESERVED10 = 1 << 11, 751 eLEXTYPE_PRIVATE1 = 1 << 12, 752 eLEXTYPE_PRIVATE2 = 1 << 13, 753 eLEXTYPE_PRIVATE3 = 1 << 14, 754 eLEXTYPE_PRIVATE4 = 1 << 15, 755 eLEXTYPE_PRIVATE5 = 1 << 16, 756 eLEXTYPE_PRIVATE6 = 1 << 17, 757 eLEXTYPE_PRIVATE7 = 1 << 18, 758 eLEXTYPE_PRIVATE8 = 1 << 19, 759 eLEXTYPE_PRIVATE9 = 1 << 20, 760 eLEXTYPE_PRIVATE10 = 1 << 21, 761 eLEXTYPE_PRIVATE11 = 1 << 22, 762 eLEXTYPE_PRIVATE12 = 1 << 23, 763 eLEXTYPE_PRIVATE13 = 1 << 24, 764 eLEXTYPE_PRIVATE14 = 1 << 25, 765 eLEXTYPE_PRIVATE15 = 1 << 26, 766 eLEXTYPE_PRIVATE16 = 1 << 27, 767 eLEXTYPE_PRIVATE17 = 1 << 28, 768 eLEXTYPE_PRIVATE18 = 1 << 29, 769 eLEXTYPE_PRIVATE19 = 1 << 30, 770 eLEXTYPE_PRIVATE20 = 1 << 31, 771 }} 772 FLAGS!{enum SPWORDTYPE { 773 eWORDTYPE_ADDED = 1 << 0, 774 eWORDTYPE_DELETED = 1 << 1, 775 }} 776 FLAGS!{enum SPPRONUNCIATIONFLAGS { 777 ePRONFLAG_USED = 1 << 0, 778 }} 779 STRUCT!{struct SPWORDPRONUNCIATION { 780 pNextWordPronunciation: *mut SPWORDPRONUNCIATION, 781 eLexiconType: SPLEXICONTYPE, 782 LangID: ::WORD, 783 wPronunciationFlags: ::WORD, 784 ePartOfSpeech: SPPARTOFSPEECH, 785 szPronunciation: [SPPHONEID; 1], 786 }} 787 STRUCT!{struct SPWORDPRONUNCIATIONLIST { 788 ulSize: ::ULONG, 789 pvBuffer: *mut ::BYTE, 790 pFirstWordPronunciation: *mut SPWORDPRONUNCIATION, 791 }} 792 STRUCT!{struct SPWORD { 793 pNextWord: *mut SPWORD, 794 LangID: ::WORD, 795 wReserved: ::WORD, 796 eWordType: SPWORDTYPE, 797 pszWord: ::LPWSTR, 798 pFirstWordPronunciation: *mut SPWORDPRONUNCIATION, 799 }} 800 STRUCT!{struct SPWORDLIST { 801 ulSize: ::ULONG, 802 pvBuffer: *mut ::BYTE, 803 pFirstWord: *mut SPWORD, 804 }} 805 RIDL!( 806 interface ISpLexicon(ISpLexiconVtbl): IUnknown(IUnknownVtbl) { 807 fn GetPronunciations( 808 &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, dwFlags: ::DWORD, 809 pWordPronunciationList: *mut SPWORDPRONUNCIATIONLIST 810 ) -> ::HRESULT, 811 fn AddPronunciation( 812 &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, ePartOfSpeech: SPPARTOFSPEECH, 813 pszPronunciation: PCSPPHONEID 814 ) -> ::HRESULT, 815 fn RemovePronunciation( 816 &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, ePartOfSpeech: SPPARTOFSPEECH, 817 pszPronunciation: PCSPPHONEID 818 ) -> ::HRESULT, 819 fn GetGeneration(&mut self, pdwGeneration: *mut ::DWORD) -> ::HRESULT, 820 fn GetGenerationChange( 821 &mut self, dwFlags: ::DWORD, pdwGeneration: *mut ::DWORD, pWordList: *mut SPWORDLIST 822 ) -> ::HRESULT, 823 fn GetWords( 824 &mut self, dwFlags: ::DWORD, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD, 825 pWordList: *mut SPWORDLIST 826 ) -> ::HRESULT 827 } 828 ); 829 RIDL!( 830 interface ISpContainerLexicon(ISpContainerLexiconVtbl): ISpLexicon(ISpLexiconVtbl) { 831 fn AddLexicon(&mut self, pAddLexicon: *mut ISpLexicon, dwFlags: ::DWORD) -> ::HRESULT 832 } 833 ); 834 ENUM!{enum SPSHORTCUTTYPE { 835 SPSHT_NotOverriden = -1i32 as u32, 836 SPSHT_Unknown = 0, 837 SPSHT_EMAIL = 0x1000, 838 SPSHT_OTHER = 0x2000, 839 SPPS_RESERVED1 = 0x3000, 840 SPPS_RESERVED2 = 0x4000, 841 SPPS_RESERVED3 = 0x5000, 842 SPPS_RESERVED4 = 0xf000, 843 }} 844 STRUCT!{struct SPSHORTCUTPAIR { 845 pNextSHORTCUTPAIR: *mut SPSHORTCUTPAIR, 846 LangID: ::WORD, 847 shType: SPSHORTCUTTYPE, 848 pszDisplay: ::LPWSTR, 849 pszSpoken: ::LPWSTR, 850 }} 851 STRUCT!{struct SPSHORTCUTPAIRLIST { 852 ulSize: ::ULONG, 853 pvBuffer: *mut ::BYTE, 854 pFirstShortcutPair: *mut SPSHORTCUTPAIR, 855 }} 856 RIDL!( 857 interface ISpShortcut(ISpShortcutVtbl): IUnknown(IUnknownVtbl) { 858 fn AddShortcut( 859 &mut self, pszDisplay: ::LPCWSTR, LangID: ::WORD, pszSpoken: ::LPCWSTR, 860 shType: SPSHORTCUTTYPE 861 ) -> ::HRESULT, 862 fn RemoveShortcut( 863 &mut self, pszDisplay: ::LPCWSTR, LangID: ::WORD, pszSpoken: ::LPCWSTR, 864 shType: SPSHORTCUTTYPE 865 ) -> ::HRESULT, 866 fn GetShortcuts( 867 &mut self, LangId: ::WORD, pShortcutpairList: *mut SPSHORTCUTPAIRLIST 868 ) -> ::HRESULT, 869 fn GetGeneration(&mut self, pdwGeneration: *mut ::DWORD) -> ::HRESULT, 870 fn GetWordsFromGenerationChange( 871 &mut self, pdwGeneration: *mut ::DWORD, pWordList: *mut SPWORDLIST 872 ) -> ::HRESULT, 873 fn GetWords( 874 &mut self, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD, pWordList: *mut SPWORDLIST 875 ) -> ::HRESULT, 876 fn GetShortcutsForGeneration( 877 &mut self, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD, 878 pShortcutpairList: *mut SPSHORTCUTPAIRLIST 879 ) -> ::HRESULT, 880 fn GetGenerationChange( 881 &mut self, pdwGeneration: *mut ::DWORD, pShortcutpairList: *mut SPSHORTCUTPAIRLIST 882 ) -> ::HRESULT 883 } 884 ); 885 RIDL!( 886 interface ISpPhoneConverter(ISpPhoneConverterVtbl): ISpObjectWithToken(ISpObjectWithTokenVtbl) { 887 fn PhoneToId(&mut self, pszPhone: ::LPCWSTR, pId: *mut SPPHONEID) -> ::HRESULT, 888 fn IdToPhone(&mut self, pId: PCSPPHONEID, pszPhone: *mut ::WCHAR) -> ::HRESULT 889 } 890 ); 891 RIDL!( 892 interface ISpPhoneticAlphabetConverter(ISpPhoneticAlphabetConverterVtbl): IUnknown(IUnknownVtbl) { 893 fn GetLangId(&mut self, pLangID: *mut ::WORD) -> ::HRESULT, 894 fn SetLangId(&mut self, LangID: *mut ::WORD) -> ::HRESULT, 895 fn SAPI2UPS( 896 &mut self, pszSAPIId: *const SPPHONEID, pszUPSId: *mut SPPHONEID, cMaxLength: ::DWORD 897 ) -> ::HRESULT, 898 fn UPS2SAPI( 899 &mut self, pszUPSId: *const SPPHONEID, pszSAPIId: *mut SPPHONEID, cMaxLength: ::DWORD 900 ) -> ::HRESULT, 901 fn GetMaxConvertLength( 902 &mut self, cSrcLength: ::DWORD, bSAPI2UPS: ::BOOL, pcMaxDestLength: *mut ::DWORD 903 ) -> ::HRESULT 904 } 905 ); 906 RIDL!( 907 interface ISpPhoneticAlphabetSelection(ISpPhoneticAlphabetSelectionVtbl): IUnknown(IUnknownVtbl) { 908 fn IsAlphabetUPS(&mut self, pfIsUPS: *mut ::BOOL) -> ::HRESULT, 909 fn SetAlphabetToUPS(&mut self, fForceUPS: ::BOOL) -> ::HRESULT 910 } 911 ); 912 STRUCT!{struct SPVPITCH { 913 MiddleAdj: ::c_long, 914 RangeAdj: ::c_long, 915 }} 916 ENUM!{enum SPVACTIONS { 917 SPVA_Speak = 0, 918 SPVA_Silence, 919 SPVA_Pronounce, 920 SPVA_Bookmark, 921 SPVA_SpellOut, 922 SPVA_Section, 923 SPVA_ParseUnknownTag, 924 }} 925 STRUCT!{struct SPVCONTEXT { 926 pCategory: ::LPCWSTR, 927 pBefore: ::LPCWSTR, 928 pAfter: ::LPCWSTR, 929 }} 930 STRUCT!{struct SPVSTATE { 931 eAction: SPVACTIONS, 932 LangID: ::WORD, 933 wReserved: ::WORD, 934 EmphAdj: ::c_long, 935 RateAdj: ::c_long, 936 Volume: ::ULONG, 937 PitchAdj: SPVPITCH, 938 SilenceMSecs: ::ULONG, 939 pPhoneIds: *mut SPPHONEID, 940 ePartOfSpeech: SPPARTOFSPEECH, 941 Context: SPVCONTEXT, 942 }} 943 ENUM!{enum SPRUNSTATE { 944 SPRS_DONE = 1 << 0, 945 SPRS_IS_SPEAKING = 1 << 1, 946 }} 947 ENUM!{enum SPVLIMITS { 948 SPMIN_VOLUME = 0, 949 SPMAX_VOLUME = 100, 950 SPMIN_RATE = -10i32 as u32, 951 SPMAX_RATE = 10, 952 }} 953 ENUM!{enum SPVPRIORITY { 954 SPVPRI_NORMAL = 0, 955 SPVPRI_ALERT = 1 << 0, 956 SPVPRI_OVER = 1 << 1, 957 }} 958 STRUCT!{struct SPVOICESTATUS { 959 ulCurrentStream: ::ULONG, 960 ulLastStreamQueued: ::ULONG, 961 hrLastResult: ::HRESULT, 962 dwRunningState: ::DWORD, 963 ulInputWordPos: ::ULONG, 964 ulInputWordLen: ::ULONG, 965 ulInputSentPos: ::ULONG, 966 ulInputSentLen: ::ULONG, 967 lBookmarkId: ::LONG, 968 PhonemeId: SPPHONEID, 969 VisemeId: SPVISEMES, 970 dwReserved1: ::DWORD, 971 dwReserved2: ::DWORD, 972 }} 973 FLAGS!{enum SPEAKFLAGS { 974 SPF_DEFAULT = 0, 975 SPF_ASYNC = 1 << 0, 976 SPF_PURGEBEFORESPEAK = 1 << 1, 977 SPF_IS_FILENAME = 1 << 2, 978 SPF_IS_XML = 1 << 3, 979 SPF_IS_NOT_XML = 1 << 4, 980 SPF_PERSIST_XML = 1 << 5, 981 SPF_NLP_SPEAK_PUNC = 1 << 6, 982 SPF_PARSE_SAPI = 1 << 7, 983 SPF_PARSE_SSML = 1 << 8, 984 }} 985 pub const SPF_PARSE_AUTODETECT: SPEAKFLAGS = SPF_DEFAULT; 986 pub const SPF_NLP_MASK: SPEAKFLAGS = SPF_NLP_SPEAK_PUNC; 987 pub const SPF_PARSE_MASK: i32 = SPF_PARSE_SAPI.0 as i32 | SPF_PARSE_SSML.0 as i32; 988 pub const SPF_VOICE_MASK: i32 = 989 SPF_ASYNC.0 as i32 | SPF_PURGEBEFORESPEAK.0 as i32 | SPF_IS_FILENAME.0 as i32 | SPF_IS_XML.0 as i32 | 990 SPF_IS_NOT_XML.0 as i32 | SPF_NLP_MASK.0 as i32 | SPF_PERSIST_XML.0 as i32 | SPF_PARSE_MASK; 991 pub const SPF_UNUSED_FLAGS: i32 = !SPF_VOICE_MASK; 992 RIDL!( 993 interface ISpVoice(ISpVoiceVtbl): ISpEventSource(ISpEventSourceVtbl) { 994 fn SetOutput(&mut self, pUnkOutput: *mut ::IUnknown, fAllowFormatChanges: ::BOOL) -> ::HRESULT, 995 fn GetOutputObjectToken(&mut self, ppObjectToken: *mut *mut ISpObjectToken) -> ::HRESULT, 996 fn GetOutputStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT, 997 fn Pause(&mut self) -> ::HRESULT, 998 fn Resume(&mut self) -> ::HRESULT, 999 fn SetVoice(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT, 1000 fn GetVoice(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT, 1001 fn Speak( 1002 &mut self, pwcs: ::LPCWSTR, dwFlags: ::DWORD, pulStreamNumber: *mut ::ULONG 1003 ) -> ::HRESULT, 1004 fn SpeakStream( 1005 &mut self, pStream: *mut ::IStream, dwFlags: ::DWORD, pulStreamNumber: *mut ::ULONG 1006 ) -> ::HRESULT, 1007 fn GetStatus( 1008 &mut self, pStatus: *mut SPVOICESTATUS, ppszLastBookmark: *mut ::LPWSTR 1009 ) -> ::HRESULT, 1010 fn Skip( 1011 &mut self, pItemType: ::LPCWSTR, lNumItems: ::c_long, pulNumSkipped: *mut ::ULONG 1012 ) -> ::HRESULT, 1013 fn SetPriority(&mut self, ePriority: SPVPRIORITY) -> ::HRESULT, 1014 fn GetPriority(&mut self, pePriority: *mut SPVPRIORITY) -> ::HRESULT, 1015 fn SetAlertBoundary(&mut self, eBoundary: SPEVENTENUM) -> ::HRESULT, 1016 fn GetAlertBoundary(&mut self, peBoundary: *mut SPEVENTENUM) -> ::HRESULT, 1017 fn SetRate(&mut self, RateAdjust: ::c_long) -> ::HRESULT, 1018 fn GetRate(&mut self, pRateAdjust: *mut ::c_long) -> ::HRESULT, 1019 fn SetVolume(&mut self, usVolume: ::USHORT) -> ::HRESULT, 1020 fn GetVolume(&mut self, pusVolume: *mut ::USHORT) -> ::HRESULT, 1021 fn WaitUntilDone(&mut self, msTimeout: ::ULONG) -> ::HRESULT, 1022 fn SetSyncSpeakTimeout(&mut self, msTimeout: ::ULONG) -> ::HRESULT, 1023 fn GetSyncSpeakTimeout(&mut self, pmsTimeout: *mut ::ULONG) -> ::HRESULT, 1024 fn SpeakCompleteEvent(&mut self) -> ::HANDLE, 1025 fn IsUISupported( 1026 &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG, 1027 pfSupported: *mut ::BOOL 1028 ) -> ::HRESULT, 1029 fn DisplayUI( 1030 &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR, 1031 pvExtraData: *mut ::c_void, cbExtraData: ::ULONG 1032 ) -> ::HRESULT 1033 } 1034 ); 1035 DEFINE_GUID!( 1036 UuidOfISpVoice, 1037 0x6C44DF74, 0x72B9, 0x4992, 0xA1, 0xEC, 0xEF, 0x99, 0x6E, 0x04, 0x22, 0xD4 1038 ); 1039 RIDL!( 1040 interface ISpPhrase(ISpPhraseVtbl): IUnknown(IUnknownVtbl) { 1041 fn GetPhrase(&mut self, ppCoMemPhrase: *mut *mut SPPHRASE) -> ::HRESULT, 1042 fn GetSerializedPhrase(&mut self, ppCoMemPhrase: *mut *mut SPSERIALIZEDPHRASE) -> ::HRESULT, 1043 fn GetText( 1044 &mut self, ulStart: ::ULONG, ulCount: ::ULONG, fUseTextReplacements: ::BOOL, 1045 ppszCoMemText: *mut ::LPWSTR, pbDisplayAttributes: *mut ::BYTE 1046 ) -> ::HRESULT, 1047 fn Discard(&mut self, dwValueTypes: ::DWORD) -> ::HRESULT 1048 } 1049 ); 1050 RIDL!( 1051 interface ISpPhraseAlt(ISpPhraseAltVtbl): ISpPhrase(ISpPhraseVtbl) { 1052 fn GetAltInfo( 1053 &mut self, pParent: *mut *mut ISpPhrase, pulStartElementInParent: *mut ::ULONG, 1054 pcElementsInParent: *mut ::ULONG, pcElementsInAlt: *mut ::ULONG 1055 ) -> ::HRESULT, 1056 fn Commit(&mut self) -> ::HRESULT 1057 } 1058 ); 1059 ENUM!{enum SPXMLRESULTOPTIONS { 1060 SPXRO_SML = 0, 1061 SPXRO_Alternates_SML = 1, 1062 }} 1063 RIDL!( 1064 interface ISpPhrase2(ISpPhrase2Vtbl): ISpPhrase(ISpPhraseVtbl) { 1065 fn GetXMLResult( 1066 &mut self, ppszCoMemXMLResult: *mut ::LPWSTR, Options: SPXMLRESULTOPTIONS 1067 ) -> ::HRESULT, 1068 fn GetXMLErrorInfo(&mut self, pSemanticErrorInfo: *mut SPSEMANTICERRORINFO) -> ::HRESULT, 1069 fn GetAudio( 1070 &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ppStream: *mut *mut ISpStreamFormat 1071 ) -> ::HRESULT 1072 } 1073 ); 1074 STRUCT!{struct SPRECORESULTTIMES { 1075 ftStreamTime: ::FILETIME, 1076 ullLength: ::ULONGLONG, 1077 dwTickCount: ::DWORD, 1078 ullStart: ::ULONGLONG, 1079 }} 1080 STRUCT!{struct SPSERIALIZEDRESULT { 1081 ulSerializedSize: ::ULONG, 1082 }} 1083 RIDL!( 1084 interface ISpRecoResult(ISpRecoResultVtbl): ISpPhrase(ISpPhraseVtbl) { 1085 fn GetResultTimes(&mut self, pTimes: *mut SPRECORESULTTIMES) -> ::HRESULT, 1086 fn GetAlternates( 1087 &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ulRequestCount: ::ULONG, 1088 ppPhrases: *mut *mut ISpPhraseAlt, pcPhrasesReturned: *mut ::ULONG 1089 ) -> ::HRESULT, 1090 fn GetAudio( 1091 &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ppStream: *mut *mut ISpStreamFormat 1092 ) -> ::HRESULT, 1093 fn SpeakAudio( 1094 &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, dwFlags: ::DWORD, 1095 pulStreamNumber: *mut ::ULONG 1096 ) -> ::HRESULT, 1097 fn Serialize(&mut self, ppCoMemSerializedResult: *mut *mut SPSERIALIZEDRESULT) -> ::HRESULT, 1098 fn ScaleAudio( 1099 &mut self, pAudioFormatId: *const ::GUID, pWaveFormatEx: *const ::WAVEFORMATEX 1100 ) -> ::HRESULT, 1101 fn GetRecoContext(&mut self, ppRecoContext: *mut *mut ISpRecoContext) -> ::HRESULT 1102 } 1103 ); 1104 FLAGS!{enum SPCOMMITFLAGS { 1105 SPCF_NONE = 0, 1106 SPCF_ADD_TO_USER_LEXICON = 1 << 0, 1107 SPCF_DEFINITE_CORRECTION = 1 << 1, 1108 }} 1109 RIDL!( 1110 interface ISpRecoResult2(ISpRecoResult2Vtbl): ISpRecoResult(ISpRecoResultVtbl) { 1111 fn CommitAlternate( 1112 &mut self, pPhraseAlt: *mut ISpPhraseAlt, ppNewResult: *mut *mut ISpRecoResult 1113 ) -> ::HRESULT, 1114 fn CommitText( 1115 &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, pszCorrectedData: ::LPCWSTR, 1116 eCommitFlags: ::DWORD 1117 ) -> ::HRESULT, 1118 fn SetTextFeedback(&mut self, pszFeedback: ::LPCWSTR, fSuccessful: ::BOOL) -> ::HRESULT 1119 } 1120 ); 1121 RIDL!( 1122 interface ISpXMLRecoResult(ISpXMLRecoResultVtbl): ISpRecoResult(ISpRecoResultVtbl) { 1123 fn GetXMLResult( 1124 &mut self, ppszCoMemXMLResult: *mut ::LPWSTR, Options: SPXMLRESULTOPTIONS 1125 ) -> ::HRESULT, 1126 fn GetXMLErrorInfo(&mut self, pSemanticErrorInfo: *mut SPSEMANTICERRORINFO) -> ::HRESULT 1127 } 1128 ); 1129 STRUCT!{struct SPTEXTSELECTIONINFO { 1130 ulStartActiveOffset: ::ULONG, 1131 cchActiveChars: ::ULONG, 1132 ulStartSelection: ::ULONG, 1133 cchSelection: ::ULONG, 1134 }} 1135 ENUM!{enum SPWORDPRONOUNCEABLE { 1136 SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE = 0, 1137 SPWP_UNKNOWN_WORD_PRONOUNCEABLE = 1, 1138 SPWP_KNOWN_WORD_PRONOUNCEABLE = 2, 1139 }} 1140 ENUM!{enum SPGRAMMARSTATE { 1141 SPGS_DISABLED = 0, 1142 SPGS_ENABLED = 1, 1143 SPGS_EXCLUSIVE = 3, 1144 }} 1145 ENUM!{enum SPCONTEXTSTATE { 1146 SPCS_DISABLED = 0, 1147 SPCS_ENABLED = 1, 1148 }} 1149 ENUM!{enum SPRULESTATE { 1150 SPRS_INACTIVE = 0, 1151 SPRS_ACTIVE = 1, 1152 SPRS_ACTIVE_WITH_AUTO_PAUSE = 3, 1153 SPRS_ACTIVE_USER_DELIMITED = 4, 1154 }} 1155 pub const SP_STREAMPOS_ASAP: ::INT = 0; 1156 pub const SP_STREAMPOS_REALTIME: ::INT = -1; 1157 pub const SPRULETRANS_TEXTBUFFER: SPSTATEHANDLE = -1isize as SPSTATEHANDLE; 1158 pub const SPRULETRANS_WILDCARD: SPSTATEHANDLE = -2isize as SPSTATEHANDLE; 1159 pub const SPRULETRANS_DICTATION: SPSTATEHANDLE = -3isize as SPSTATEHANDLE; 1160 ENUM!{enum SPGRAMMARWORDTYPE { 1161 SPWT_DISPLAY = 0, 1162 SPWT_LEXICAL = 1, 1163 SPWT_PRONUNCIATION = 2, 1164 SPWT_LEXICAL_NO_SPECIAL_CHARS = 3, 1165 }} 1166 STRUCT!{struct SPPROPERTYINFO { 1167 pszName: ::LPCWSTR, 1168 ulId: ::ULONG, 1169 pszValue: ::LPCWSTR, 1170 vValue: ::VARIANT, 1171 }} 1172 FLAGS!{enum SPCFGRULEATTRIBUTES { 1173 SPRAF_TopLevel = 1 << 0, 1174 SPRAF_Active = 1 << 1, 1175 SPRAF_Export = 1 << 2, 1176 SPRAF_Import = 1 << 3, 1177 SPRAF_Interpreter = 1 << 4, 1178 SPRAF_Dynamic = 1 << 5, 1179 SPRAF_Root = 1 << 6, 1180 SPRAF_AutoPause = 1 << 16, 1181 SPRAF_UserDelimited = 1 << 17, 1182 }} 1183 RIDL!( 1184 interface ISpGrammarBuilder(ISpGrammarBuilderVtbl): IUnknown(IUnknownVtbl) { 1185 fn ResetGrammar(&mut self, NewLanguage: ::WORD) -> ::HRESULT, 1186 fn GetRule( 1187 &mut self, pszRuleName: ::LPCWSTR, dwRuleId: ::DWORD, dwAttributes: ::DWORD, 1188 fCreateIfNotExist: ::BOOL, phInitialState: *mut SPSTATEHANDLE 1189 ) -> ::HRESULT, 1190 fn ClearRule(&mut self, hState: SPSTATEHANDLE) -> ::HRESULT, 1191 fn CreateNewState(&mut self, hState: SPSTATEHANDLE, phState: *mut SPSTATEHANDLE) -> ::HRESULT, 1192 fn AddWordTransition( 1193 &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, psz: ::LPCWSTR, 1194 pszSeparators: ::LPCWSTR, eWordType: SPGRAMMARWORDTYPE, Weight: ::c_float, 1195 pPropInfo: *const SPPROPERTYINFO 1196 ) -> ::HRESULT, 1197 fn AddRuleTransition( 1198 &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, hRule: SPSTATEHANDLE, 1199 Weight: ::c_float, pPropInfo: *const SPPROPERTYINFO 1200 ) -> ::HRESULT, 1201 fn AddResource( 1202 &mut self, hRuleState: SPSTATEHANDLE, pszResourceName: ::LPCWSTR, 1203 pszResourceValue: ::LPCWSTR 1204 ) -> ::HRESULT, 1205 fn Commit(&mut self, dwReserved: ::DWORD) -> ::HRESULT 1206 } 1207 ); 1208 ENUM!{enum SPLOADOPTIONS { 1209 SPLO_STATIC = 0, 1210 SPLO_DYNAMIC = 1, 1211 }} 1212 RIDL!( 1213 interface ISpRecoGrammar(ISpRecoGrammarVtbl): ISpGrammarBuilder(ISpGrammarBuilderVtbl) { 1214 fn GetGrammarId(&mut self, pullGrammarId: *mut ::ULONGLONG) -> ::HRESULT, 1215 fn GetRecoContext(&mut self, ppRecoCtxt: *mut *mut ISpRecoContext) -> ::HRESULT, 1216 fn LoadCmdFromFile(&mut self, pszFileName: ::LPCWSTR, Options: SPLOADOPTIONS) -> ::HRESULT, 1217 fn LoadCmdFromObject( 1218 &mut self, rcid: ::REFCLSID, pszGrammarName: ::LPCWSTR, Options: SPLOADOPTIONS 1219 ) -> ::HRESULT, 1220 fn LoadCmdFromResource( 1221 &mut self, hModule: ::HMODULE, pszResourceName: ::LPCWSTR, pszResourceType: ::LPCWSTR, 1222 wLanguage: ::WORD, Options: SPLOADOPTIONS 1223 ) -> ::HRESULT, 1224 fn LoadCmdFromMemory( 1225 &mut self, pGrammar: *const SPBINARYGRAMMAR, Options: SPLOADOPTIONS 1226 ) -> ::HRESULT, 1227 fn LoadCmdFromProprietaryGrammar( 1228 &mut self, rguidParam: ::REFGUID, pszStringParam: ::LPCWSTR, pvDataPrarm: *const ::c_void, 1229 cbDataSize: ::ULONG, Options: SPLOADOPTIONS 1230 ) -> ::HRESULT, 1231 fn SetRuleState( 1232 &mut self, pszName: ::LPCWSTR, pReserved: *mut ::c_void, NewState: SPRULESTATE 1233 ) -> ::HRESULT, 1234 fn SetRuleIdState(&mut self, ulRuleId: ::ULONG, NewState: SPRULESTATE) -> ::HRESULT, 1235 fn LoadDictation(&mut self, pszTopicName: ::LPCWSTR, Options: SPLOADOPTIONS) -> ::HRESULT, 1236 fn UnloadDictation(&mut self) -> ::HRESULT, 1237 fn SetDictationState(&mut self, NewState: SPRULESTATE) -> ::HRESULT, 1238 fn SetWordSequenceData( 1239 &mut self, pText: *const ::WCHAR, cchText: ::ULONG, pInfo: *const SPTEXTSELECTIONINFO 1240 ) -> ::HRESULT, 1241 fn SetTextSelection(&mut self, pInfo: *const SPTEXTSELECTIONINFO) -> ::HRESULT, 1242 fn IsPronounceable( 1243 &mut self, pszWord: ::LPCWSTR, pWordPronounceable: *mut SPWORDPRONOUNCEABLE 1244 ) -> ::HRESULT, 1245 fn SetGrammarState(&mut self, eGrammarState: SPGRAMMARSTATE) -> ::HRESULT, 1246 fn SaveCmd(&mut self, pStream: *mut ::IStream, ppszCoMemErrorText: *mut ::LPWSTR) -> ::HRESULT, 1247 fn GetGrammarState(&mut self, peGrammarState: *mut SPGRAMMARSTATE) -> ::HRESULT 1248 } 1249 ); 1250 ENUM!{enum SPMATCHINGMODE { 1251 AllWords = 0, 1252 Subsequence = 1, 1253 OrderedSubset = 3, 1254 SubsequenceContentRequired = 5, 1255 OrderedSubsetContentRequired = 7, 1256 }} 1257 ENUM!{enum PHONETICALPHABET { 1258 PA_Ipa = 0, 1259 PA_Ups = 1, 1260 PA_Sapi = 2, 1261 }} 1262 RIDL!( 1263 interface ISpGrammarBuilder2(ISpGrammarBuilder2Vtbl): IUnknown(IUnknownVtbl) { 1264 fn AddTextSubset( 1265 &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, psz: ::LPCWSTR, 1266 eMatchMode: SPMATCHINGMODE 1267 ) -> ::HRESULT, 1268 fn SetPhoneticAlphabet(&mut self, phoneticALphabet: PHONETICALPHABET) -> ::HRESULT 1269 } 1270 ); 1271 RIDL!( 1272 interface ISpRecoGrammar2(ISpRecoGrammar2Vtbl): IUnknown(IUnknownVtbl) { 1273 fn GetRules(&mut self, ppCoMemRules: *mut *mut SPRULE, puNumRules: *mut ::UINT) -> ::HRESULT, 1274 fn LoadCmdFromFile2( 1275 &mut self, pszFileName: ::LPCWSTR, Options: SPLOADOPTIONS, pszSharingUri: ::LPCWSTR, 1276 pszBaseUri: ::LPCWSTR 1277 ) -> ::HRESULT, 1278 fn LoadCmdFromMemory2( 1279 &mut self, pGrammar: *const SPBINARYGRAMMAR, Options: SPLOADOPTIONS, 1280 pszSharingUri: ::LPCWSTR, pszBaseUri: ::LPCWSTR 1281 ) -> ::HRESULT, 1282 fn SetRulePriority( 1283 &mut self, pszRuleName: ::LPCWSTR, ulRuleId: ::ULONG, nRulePriority: ::c_int 1284 ) -> ::HRESULT, 1285 fn SetRuleWeight( 1286 &mut self, pszRuleName: ::LPCWSTR, ulRuleId: ::ULONG, flWeight: ::c_float 1287 ) -> ::HRESULT, 1288 fn SetDictationWeight(&mut self, flWeight: ::c_float) -> ::HRESULT, 1289 fn SetGrammarLoader(&mut self, pLoader: *mut ISpeechResourceLoader) -> ::HRESULT, 1290 fn SetSMLSecurityManager( 1291 &mut self, pSMLSecurityManager: *mut ::IInternetSecurityManager 1292 ) -> ::HRESULT 1293 } 1294 ); 1295 RIDL!( 1296 interface ISpeechResourceLoader(ISpeechResourceLoaderVtbl): IDispatch(IDispatchVtbl) { 1297 fn LoadResource( 1298 &mut self, bstrResourceUri: ::BSTR, fAlwaysReload: ::VARIANT_BOOL, 1299 pStream: *mut *mut ::IUnknown, pbstrMIMEType: *mut ::BSTR, pfModified: *mut ::VARIANT_BOOL, 1300 pbstrRedirectUrl: *mut ::BSTR 1301 ) -> ::HRESULT, 1302 fn GetLocalCopy( 1303 &mut self, bstrResourceUri: ::BSTR, pbstrLocalPath: *mut ::BSTR, 1304 pbstrMIMEType: *mut ::BSTR, pbstrRedirectUrl: *mut ::BSTR 1305 ) -> ::HRESULT, 1306 fn ReleaseLocalCopy(&mut self, pbstrLocalPath: ::BSTR) -> ::HRESULT 1307 } 1308 ); 1309 STRUCT!{nodebug struct SPRECOCONTEXTSTATUS { 1310 eInterference: SPINTERFERENCE, 1311 szRequestTypeOfUI: [::WCHAR; 255], 1312 dwReserved1: ::DWORD, 1313 dwReserved2: ::DWORD, 1314 }} 1315 FLAGS!{enum SPBOOKMARKOPTIONS { 1316 SPBO_NONE = 0, 1317 SPBO_PAUSE = 1 << 0, 1318 SPBO_AHEAD = 1 << 1, 1319 SPBO_TIME_UNITS = 1 << 2, 1320 }} 1321 FLAGS!{enum SPAUDIOOPTIONS { 1322 SPAO_NONE = 0, 1323 SPAO_RETAIN_AUDIO = 1 << 0, 1324 }} 1325 RIDL!( 1326 interface ISpRecoContext(ISpRecoContextVtbl): ISpEventSource(ISpEventSourceVtbl) { 1327 fn GetRecognizer(&mut self, ppRecognizer: *mut *mut ISpRecognizer) -> ::HRESULT, 1328 fn CreateGrammer( 1329 &mut self, ullGrammarId: ::ULONGLONG, ppGrammar: *mut *mut ISpRecoGrammar 1330 ) -> ::HRESULT, 1331 fn GetStatus(&mut self, pState: *mut SPRECOCONTEXTSTATUS) -> ::HRESULT, 1332 fn GetMaxAlternates(&mut self, pcAlternates: *mut ::ULONG) -> ::HRESULT, 1333 fn SetMaxAlternates(&mut self, cAlternates: ::ULONG) -> ::HRESULT, 1334 fn SetAudioOptions( 1335 &mut self, Options: SPAUDIOOPTIONS, pAudioFormatId: *const ::GUID, 1336 pWaveFormatEx: *const ::WAVEFORMATEX 1337 ) -> ::HRESULT, 1338 fn GetAudioOptions( 1339 &mut self, pOptions: *mut SPAUDIOOPTIONS, pAudioFormatId: *mut ::GUID, 1340 ppCoMemWFEX: *mut *mut ::WAVEFORMATEX 1341 ) -> ::HRESULT, 1342 fn DeserializeResult( 1343 &mut self, pSerializedResult: *const SPSERIALIZEDRESULT, ppResult: *mut *mut ISpRecoResult 1344 ) -> ::HRESULT, 1345 fn Bookmark( 1346 &mut self, Options: SPBOOKMARKOPTIONS, ullStreamPosition: ::ULONGLONG, 1347 lparamEvent: ::LPARAM 1348 ) -> ::HRESULT, 1349 fn SetAdaptionData(&mut self, pAdaptionData: ::LPCWSTR, cch: ::ULONG) -> ::HRESULT, 1350 fn Pause(&mut self, dwReserved: ::DWORD) -> ::HRESULT, 1351 fn Resume(&mut self, dwReserved: ::DWORD) -> ::HRESULT, 1352 fn SetVoice(&mut self, pVoice: *mut ISpVoice, fAllowFormatChanges: ::BOOL) -> ::HRESULT, 1353 fn GetVoice(&mut self, ppVoice: *mut *mut ISpVoice) -> ::HRESULT, 1354 fn SetVoicePurgeEvent(&mut self, ullEventIntereset: ::ULONGLONG) -> ::HRESULT, 1355 fn GetVoicePurgeEvent(&mut self, pullEventIntereset: *mut ::ULONGLONG) -> ::HRESULT, 1356 fn SetContextState(&mut self, eContextState: SPCONTEXTSTATE) -> ::HRESULT, 1357 fn GetContextState(&mut self, peContextState: *mut SPCONTEXTSTATE) -> ::HRESULT 1358 } 1359 ); 1360 FLAGS!{enum SPGRAMMAROPTIONS { 1361 SPGO_SAPI = 0x1, 1362 SPGO_SRGS = 0x2, 1363 SPGO_UPS = 0x4, 1364 SPGO_SRGS_MS_SCRIPT = 0x8, 1365 SPGO_SRGS_W3C_SCRIPT = 0x100, 1366 SPGO_SRGS_STG_SCRIPT = 0x200, 1367 SPGO_SRGS_SCRIPT = 1368 SPGO_SRGS.0 | SPGO_SRGS_MS_SCRIPT.0 | SPGO_SRGS_W3C_SCRIPT.0 | 1369 SPGO_SRGS_STG_SCRIPT.0, 1370 SPGO_FILE = 0x10, 1371 SPGO_HTTP = 0x20, 1372 SPGO_RES = 0x40, 1373 SPGO_OBJECT = 0x80, 1374 SPGO_DEFAULT = 0x3fb, 1375 SPGO_ALL = 0x3ff, 1376 }} 1377 FLAGS!{enum SPADAPTATIONSETTINGS { 1378 SPADS_Default = 0, 1379 SPADS_CurrentRecognizer = 0x1, 1380 SPADS_RecoProfile = 0x2, 1381 SPADS_Immediate = 0x4, 1382 SPADS_Reset = 0x8, 1383 SPADS_HighVolumeDataSource = 0x10, 1384 }} 1385 ENUM!{enum SPADAPTATIONRELEVANCE { 1386 SPAR_Unknown = 0, 1387 SPAR_Low = 1, 1388 SPAR_Medium = 2, 1389 SPAR_High = 3, 1390 }} 1391 RIDL!( 1392 interface ISpRecoContext2(ISpRecoContext2Vtbl): IUnknown(IUnknownVtbl) { 1393 fn SetGrammarOptions(&mut self, eGrammarOptions: ::DWORD) -> ::HRESULT, 1394 fn GetGrammarOptions(&mut self, peGrammarOptions: *mut ::DWORD) -> ::HRESULT, 1395 fn SetAdaptationData2( 1396 &mut self, pAdaptationData: ::LPCWSTR, cch: ::ULONG, pTopicName: ::LPCWSTR, 1397 eAdaptationSettings: ::DWORD, eRelevance: SPADAPTATIONRELEVANCE 1398 ) -> ::HRESULT 1399 } 1400 ); 1401 RIDL!( 1402 interface ISpProperties(ISpPropertiesVtbl): IUnknown(IUnknownVtbl) { 1403 fn SetPropertyNum(&mut self, pName: ::LPCWSTR, lValue: ::LONG) -> ::HRESULT, 1404 fn GetPropertyNum(&mut self, pName: ::LPCWSTR, plValue: *mut ::LONG) -> ::HRESULT, 1405 fn SetPropertyString(&mut self, pName: ::LPCWSTR, pValue: ::LPCWSTR) -> ::HRESULT, 1406 fn GetPropertyString(&mut self, pName: ::LPCWSTR, ppCoMemValue: *mut ::LPWSTR) -> ::HRESULT 1407 } 1408 ); 1409 STRUCT!{struct SPRECOGNIZERSTATUS { 1410 AudioStatus: SPAUDIOSTATUS, 1411 ullRecognitionStreamPos: ::ULONGLONG, 1412 ulStreamNumber: ::ULONG, 1413 ulNumActive: ::ULONG, 1414 clsidEngine: ::CLSID, 1415 cLangIDs: ::ULONG, 1416 aLangID: [::WORD; 20], 1417 ullRecognitionStreamTime: ::ULONGLONG, 1418 }} 1419 ENUM!{enum SPWAVEFORMATTYPE { 1420 SPWF_INPUT = 0, 1421 SPWF_SRENGINE = 1, 1422 }} 1423 pub type SPSTREAMFORMATTYPE = SPWAVEFORMATTYPE; 1424 ENUM!{enum SPRECOSTATE { 1425 SPRST_INACTIVE = 0, 1426 SPRST_ACTIVE = 1, 1427 SPRST_ACTIVE_ALWAYS = 2, 1428 SPRST_INACTIVE_WITH_PURGE = 3, 1429 SPRST_NUM_STATES = 4, 1430 }} 1431 RIDL!( 1432 interface ISpRecognizer(ISpRecognizerVtbl): ISpProperties(ISpPropertiesVtbl) { 1433 fn SetRecognizer(&mut self, pRecognizer: *mut ISpObjectToken) -> ::HRESULT, 1434 fn GetRecognizer(&mut self, ppRecognizer: *mut *mut ISpObjectToken) -> ::HRESULT, 1435 fn SetInput(&mut self, pUnkInput: *mut ::IUnknown, fAllowFormatChanges: ::BOOL) -> ::HRESULT, 1436 fn GetInputObjectToken(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT, 1437 fn GetInputStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT, 1438 fn CreateRecoContext(&mut self, ppNewCtxt: *mut *mut ISpRecoContext) -> ::HRESULT, 1439 fn GetRecoProfile(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT, 1440 fn SetRecoProfile(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT, 1441 fn IsSharedInstance(&mut self) -> ::HRESULT, 1442 fn GetRecoState(&mut self, pState: *mut SPRECOSTATE) -> ::HRESULT, 1443 fn SetRecoState(&mut self, NewState: SPRECOSTATE) -> ::HRESULT, 1444 fn GetStatus(&mut self, pStatus: *mut SPRECOGNIZERSTATUS) -> ::HRESULT, 1445 fn GetFormat( 1446 &mut self, WaveFormatType: SPSTREAMFORMATTYPE, pFormatId: *mut ::GUID, 1447 ppCoMemWFEX: *mut ::WAVEFORMATEX 1448 ) -> ::HRESULT, 1449 fn IsUISupported( 1450 &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG, 1451 pfSupported: *mut ::BOOL 1452 ) -> ::HRESULT, 1453 fn DisplayUI( 1454 &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR, 1455 pvExtraData: *mut ::c_void, cbExtraData: ::ULONG 1456 ) -> ::HRESULT, 1457 fn EmulateRecognition(&mut self, pPhrase: *mut ISpPhrase) -> ::HRESULT 1458 } 1459 ); 1460 RIDL!( 1461 interface ISpSerializeState(ISpSerializeStateVtbl): IUnknown(IUnknownVtbl) { 1462 fn GetSerializedState( 1463 &mut self, ppbData: *mut *mut ::BYTE, pulSize: *mut ::ULONG, dwReserved: ::DWORD 1464 ) -> ::HRESULT, 1465 fn SetSerializedState( 1466 &mut self, pbData: *mut ::BYTE, ulSize: ::ULONG, dwReserved: ::DWORD 1467 ) -> ::HRESULT 1468 } 1469 ); 1470 RIDL!( 1471 interface ISpRecognizer2(ISpRecognizer2Vtbl): IUnknown(IUnknownVtbl) { 1472 fn EmulateRecognitionEx( 1473 &mut self, pPhrase: *mut ISpPhrase, dwCompareFlags: ::DWORD 1474 ) -> ::HRESULT, 1475 fn SetTrainingState( 1476 &mut self, fDoingTraining: ::BOOL, fAdaptFromTrainingData: ::BOOL 1477 ) -> ::HRESULT, 1478 fn ResetAcousticModelAdaptation(&mut self) -> ::HRESULT 1479 } 1480 ); 1481 ENUM!{enum SPCATEGORYTYPE { 1482 SPCT_COMMAND = 0, 1483 SPCT_DICTATION, 1484 SPCT_SLEEP, 1485 SPCT_SUB_COMMAND, 1486 SPCT_SUB_DICTATION, 1487 }} 1488 RIDL!( 1489 interface ISpRecoCategory(ISpRecoCategoryVtbl): IUnknown(IUnknownVtbl) { 1490 fn GetType(&mut self, peCategoryType: *mut SPCATEGORYTYPE) -> ::HRESULT 1491 } 1492 ); 1493 RIDL!( 1494 interface ISpRecognizer3(ISpRecognizer3Vtbl): IUnknown(IUnknownVtbl) { 1495 fn GetCategory( 1496 &mut self, categoryType: SPCATEGORYTYPE, ppCategory: *mut *mut ISpRecoCategory 1497 ) -> ::HRESULT, 1498 fn SetActiveCategory(&mut self, pCategory: *mut ISpRecoCategory) -> ::HRESULT, 1499 fn GetActiveCategory(&mut self, ppCategory: *mut *mut ISpRecoCategory) -> ::HRESULT 1500 } 1501 ); 1502 STRUCT!{struct SPNORMALIZATIONLIST { 1503 ulSize: ::ULONG, 1504 ppszzNormalizedList: *mut *mut ::WCHAR, 1505 }} 1506 RIDL!( 1507 interface ISpEnginePronunciation(ISpEnginePronunciationVtbl): IUnknown(IUnknownVtbl) { 1508 fn Normalize( 1509 &mut self, pszWord: ::LPCWSTR, pszLeftContext: ::LPCWSTR, pszRightContext: ::LPCWSTR, 1510 LangID: ::WORD, pNormalizationList: *mut SPNORMALIZATIONLIST 1511 ) -> ::HRESULT, 1512 fn GetPronunciations( 1513 &mut self, pszWord: ::LPCWSTR, pszLeftContext: ::LPCWSTR, pszRightContext: ::LPCWSTR, 1514 LangID: ::WORD, pEnginePronunciationList: *mut SPWORDPRONUNCIATIONLIST 1515 ) -> ::HRESULT 1516 } 1517 ); 1518 STRUCT!{struct SPDISPLAYTOKEN { 1519 pszLexical: *const ::WCHAR, 1520 pszDisplay: *const ::WCHAR, 1521 bDisplayAttributes: ::BYTE, 1522 }} 1523 STRUCT!{struct SPDISPLAYPHRASE { 1524 ulNumTokens: ::ULONG, 1525 pTokens: *mut SPDISPLAYTOKEN, 1526 }} 1527 RIDL!( 1528 interface ISpDisplayAlternates(ISpDisplayAlternatesVtbl): IUnknown(IUnknownVtbl) { 1529 fn GetDisplayAlternates( 1530 &mut self, pPhrase: *const SPDISPLAYPHRASE, cRequestCount: ::ULONG, 1531 ppCoMemPhrases: *mut *mut SPDISPLAYPHRASE, pcPhrasesReturned: *mut ::ULONG 1532 ) -> ::HRESULT, 1533 fn SetFullStopTrailSpace(&mut self, ulTrailSpace: ::ULONG) -> ::HRESULT 1534 } 1535 ); 1536 pub type SpeechLanguageId = ::c_long; 1537 ENUM!{enum DISPID_SpeechDataKey { 1538 DISPID_SDKSetBinaryValue = 1, 1539 DISPID_SDKGetBinaryValue, 1540 DISPID_SDKSetStringValue, 1541 DISPID_SDKGetStringValue, 1542 DISPID_SDKSetLongValue, 1543 DISPID_SDKGetlongValue, 1544 DISPID_SDKOpenKey, 1545 DISPID_SDKCreateKey, 1546 DISPID_SDKDeleteKey, 1547 DISPID_SDKDeleteValue, 1548 DISPID_SDKEnumKeys, 1549 DISPID_SDKEnumValues, 1550 }} 1551 ENUM!{enum DISPID_SpeechObjectToken { 1552 DISPID_SOTId = 1, 1553 DISPID_SOTDataKey, 1554 DISPID_SOTCategory, 1555 DISPID_SOTGetDescription, 1556 DISPID_SOTSetId, 1557 DISPID_SOTGetAttribute, 1558 DISPID_SOTCreateInstance, 1559 DISPID_SOTRemove, 1560 DISPID_SOTGetStorageFileName, 1561 DISPID_SOTRemoveStorageFileName, 1562 DISPID_SOTIsUISupported, 1563 DISPID_SOTDisplayUI, 1564 DISPID_SOTMatchesAttributes, 1565 }} 1566 ENUM!{enum SpeechDataKeyLocation { 1567 SDKLDefaultLocation = SPDKL_DefaultLocation.0, 1568 SDKLCurrentUser = SPDKL_CurrentUser.0, 1569 SDKLLocalMachine = SPDKL_LocalMachine.0, 1570 SDKLCurrentConfig = SPDKL_CurrentConfig.0, 1571 }} 1572 ENUM!{enum SpeechTokenContext { 1573 STCInprocServer = ::CLSCTX_INPROC_SERVER, 1574 STCInprocHandler = ::CLSCTX_INPROC_HANDLER, 1575 STCLocalServer = ::CLSCTX_LOCAL_SERVER, 1576 STCRemoteServer = ::CLSCTX_REMOTE_SERVER, 1577 STCAll = ::CLSCTX_INPROC_SERVER | ::CLSCTX_INPROC_HANDLER | 1578 ::CLSCTX_LOCAL_SERVER | ::CLSCTX_REMOTE_SERVER, 1579 }} 1580 ENUM!{enum SpeechTokenShellFolder { 1581 STSF_AppData = 0x1a, 1582 STSF_LocalAppData = 0x1c, 1583 STSF_CommonAppData = 0x23, 1584 STSF_FlagCreate = 0x8000, 1585 }} 1586 ENUM!{enum DISPID_SpeechObjectTokens { 1587 DISPID_SOTsCount = 1, 1588 DISPID_SOTsItem = ::DISPID_VALUE as u32, 1589 DISPID_SOTs_NewEnum = ::DISPID_NEWENUM as u32, 1590 }} 1591 ENUM!{enum DISPID_SpeechObjectTokenCategory { 1592 DISPID_SOTCId = 1, 1593 DISPID_SOTCDefault, 1594 DISPID_SOTCSetId, 1595 DISPID_SOTCGetDataKey, 1596 DISPID_SOTCEnumerateTokens, 1597 }} 1598 ENUM!{enum SpeechAudioFormatType { 1599 SAFTDefault = -1i32 as u32, 1600 SAFTNoAssignedFormat = 0, 1601 SAFTText = 1, 1602 SAFTNonStandardFormat = 2, 1603 SAFTExtendedAudioFormat = 3, 1604 SAFT8kHz8BitMono = 4, 1605 SAFT8kHz8BitStereo = 5, 1606 SAFT8kHz16BitMono = 6, 1607 SAFT8kHz16BitStereo = 7, 1608 SAFT11kHz8BitMono = 8, 1609 SAFT11kHz8BitStereo = 9, 1610 SAFT11kHz16BitMono = 10, 1611 SAFT11kHz16BitStereo = 11, 1612 SAFT12kHz8BitMono = 12, 1613 SAFT12kHz8BitStereo = 13, 1614 SAFT12kHz16BitMono = 14, 1615 SAFT12kHz16BitStereo = 15, 1616 SAFT16kHz8BitMono = 16, 1617 SAFT16kHz8BitStereo = 17, 1618 SAFT16kHz16BitMono = 18, 1619 SAFT16kHz16BitStereo = 19, 1620 SAFT22kHz8BitMono = 20, 1621 SAFT22kHz8BitStereo = 21, 1622 SAFT22kHz16BitMono = 22, 1623 SAFT22kHz16BitStereo = 23, 1624 SAFT24kHz8BitMono = 24, 1625 SAFT24kHz8BitStereo = 25, 1626 SAFT24kHz16BitMono = 26, 1627 SAFT24kHz16BitStereo = 27, 1628 SAFT32kHz8BitMono = 28, 1629 SAFT32kHz8BitStereo = 29, 1630 SAFT32kHz16BitMono = 30, 1631 SAFT32kHz16BitStereo = 31, 1632 SAFT44kHz8BitMono = 32, 1633 SAFT44kHz8BitStereo = 33, 1634 SAFT44kHz16BitMono = 34, 1635 SAFT44kHz16BitStereo = 35, 1636 SAFT48kHz8BitMono = 36, 1637 SAFT48kHz8BitStereo = 37, 1638 SAFT48kHz16BitMono = 38, 1639 SAFT48kHz16BitStereo = 39, 1640 SAFTTrueSpeech_8kHz1BitMono = 40, 1641 SAFTCCITT_ALaw_8kHzMono = 41, 1642 SAFTCCITT_ALaw_8kHzStereo = 42, 1643 SAFTCCITT_ALaw_11kHzMono = 43, 1644 SAFTCCITT_ALaw_11kHzStereo = 44, 1645 SAFTCCITT_ALaw_22kHzMono = 45, 1646 SAFTCCITT_ALaw_22kHzStereo = 46, 1647 SAFTCCITT_ALaw_44kHzMono = 47, 1648 SAFTCCITT_ALaw_44kHzStereo = 48, 1649 SAFTCCITT_uLaw_8kHzMono = 49, 1650 SAFTCCITT_uLaw_8kHzStereo = 50, 1651 SAFTCCITT_uLaw_11kHzMono = 51, 1652 SAFTCCITT_uLaw_11kHzStereo = 52, 1653 SAFTCCITT_uLaw_22kHzMono = 53, 1654 SAFTCCITT_uLaw_22kHzStereo = 54, 1655 SAFTCCITT_uLaw_44kHzMono = 55, 1656 SAFTCCITT_uLaw_44kHzStereo = 56, 1657 SAFTADPCM_8kHzMono = 57, 1658 SAFTADPCM_8kHzStereo = 58, 1659 SAFTADPCM_11kHzMono = 59, 1660 SAFTADPCM_11kHzStereo = 60, 1661 SAFTADPCM_22kHzMono = 61, 1662 SAFTADPCM_22kHzStereo = 62, 1663 SAFTADPCM_44kHzMono = 63, 1664 SAFTADPCM_44kHzStereo = 64, 1665 SAFTGSM610_8kHzMono = 65, 1666 SAFTGSM610_11kHzMono = 66, 1667 SAFTGSM610_22kHzMono = 67, 1668 SAFTGSM610_44kHzMono = 68, 1669 }} 1670 ENUM!{enum DISPID_SpeechAudioFormat { 1671 DISPID_SAFType = 1, 1672 DISPID_SAFGuid, 1673 DISPID_SAFGetWaveFormatEx, 1674 DISPID_SAFSetWaveFormatEx, 1675 }} 1676 ENUM!{enum DISPID_SpeechBaseStream { 1677 DISPID_SBSFormat = 1, 1678 DISPID_SBSRead, 1679 DISPID_SBSWrite, 1680 DISPID_SBSSeek, 1681 }} 1682 ENUM!{enum SpeechStreamSeekPositionType { 1683 SSSPTRelativeToStart = ::STREAM_SEEK_SET.0, 1684 SSSPTRelativeToCurrentPosition = ::STREAM_SEEK_CUR.0, 1685 SSSPTRelativeToEnd = ::STREAM_SEEK_END.0, 1686 }} 1687 ENUM!{enum DISPID_SpeechAudio { 1688 DISPID_SAStatus = 200, 1689 DISPID_SABufferInfo, 1690 DISPID_SADefaultFormat, 1691 DISPID_SAVolume, 1692 DISPID_SABufferNotifySize, 1693 DISPID_SAEventHandle, 1694 DISPID_SASetState, 1695 }} 1696 ENUM!{enum SpeechAudioState { 1697 SASClosed = SPAS_CLOSED.0, 1698 SASStop = SPAS_STOP.0, 1699 SASPause = SPAS_PAUSE.0, 1700 SASRun = SPAS_RUN.0, 1701 }} 1702 ENUM!{enum DISPID_SpeechMMSysAudio { 1703 DISPID_SMSADeviceId = 300, 1704 DISPID_SMSALineId, 1705 DISPID_SMSAMMHandle, 1706 }} 1707 ENUM!{enum DISPID_SpeechFileStream { 1708 DISPID_SFSOpen = 100, 1709 DISPID_SFSClose, 1710 }} 1711 ENUM!{enum SpeechStreamFileMode { 1712 SSFMOpenForRead = SPFM_OPEN_READONLY.0, 1713 SSFMOpenReadWrite = SPFM_OPEN_READWRITE.0, 1714 SSFMCreate = SPFM_CREATE.0, 1715 SSFMCreateForWrite = SPFM_CREATE_ALWAYS.0, 1716 }} 1717 ENUM!{enum DISPID_SpeechCustomStream { 1718 DISPID_SCSBaseStream = 100, 1719 }} 1720 ENUM!{enum DISPID_SpeechMemoryStream { 1721 DISPID_SMSSetData = 100, 1722 DISPID_SMSGetData, 1723 }} 1724 ENUM!{enum DISPID_SpeechAudioStatus { 1725 DISPID_SASFreeBufferSpace = 1, 1726 DISPID_SASNonBlockingIO, 1727 DISPID_SASState, 1728 DISPID_SASCurrentSeekPosition, 1729 DISPID_SASCurrentDevicePosition, 1730 }} 1731 ENUM!{enum DISPID_SpeechAudioBufferInfo { 1732 DISPID_SABIMinNotification = 1, 1733 DISPID_SABIBufferSize, 1734 DISPID_SABIEventBias, 1735 }} 1736 ENUM!{enum DISPID_SpeechWaveFormatEx { 1737 DISPID_SWFEFormatTag = 1, 1738 DISPID_SWFEChannels, 1739 DISPID_SWFESamplesPerSec, 1740 DISPID_SWFEAvgBytesPerSec, 1741 DISPID_SWFEBlockAlign, 1742 DISPID_SWFEBitsPerSample, 1743 DISPID_SWFEExtraData, 1744 }} 1745 ENUM!{enum DISPID_SpeechVoice { 1746 DISPID_SVStatus = 1, 1747 DISPID_SVVoice, 1748 DISPID_SVAudioOutput, 1749 DISPID_SVAudioOutputStream, 1750 DISPID_SVRate, 1751 DISPID_SVVolume, 1752 DISPID_SVAllowAudioOuputFormatChangesOnNextSet, 1753 DISPID_SVEventInterests, 1754 DISPID_SVPriority, 1755 DISPID_SVAlertBoundary, 1756 DISPID_SVSyncronousSpeakTimeout, 1757 DISPID_SVSpeak, 1758 DISPID_SVSpeakStream, 1759 DISPID_SVPause, 1760 DISPID_SVResume, 1761 DISPID_SVSkip, 1762 DISPID_SVGetVoices, 1763 DISPID_SVGetAudioOutputs, 1764 DISPID_SVWaitUntilDone, 1765 DISPID_SVSpeakCompleteEvent, 1766 DISPID_SVIsUISupported, 1767 DISPID_SVDisplayUI, 1768 }} 1769 ENUM!{enum SpeechVoicePriority { 1770 SVPNormal = SPVPRI_NORMAL.0, 1771 SVPAlert = SPVPRI_ALERT.0, 1772 SVPOver = SPVPRI_OVER.0, 1773 }} 1774 FLAGS!{enum SpeechVoiceSpeakFlags { 1775 SVSFDefault = SPF_DEFAULT.0, 1776 SVSFlagsAsync = SPF_ASYNC.0, 1777 SVSFPurgeBeforeSpeak = SPF_PURGEBEFORESPEAK.0, 1778 SVSFIsFilename = SPF_IS_FILENAME.0, 1779 SVSFIsXML = SPF_IS_XML.0, 1780 SVSFIsNotXML = SPF_IS_NOT_XML.0, 1781 SVSFPersistXML = SPF_PERSIST_XML.0, 1782 SVSFNLPSpeakPunc = SPF_NLP_SPEAK_PUNC.0, 1783 SVSFParseSapi = SPF_PARSE_SAPI.0, 1784 SVSFParseSsml = SPF_PARSE_SSML.0, 1785 SVSFParseMask = SPF_PARSE_MASK as u32, 1786 SVSFVoiceMask = SPF_VOICE_MASK as u32, 1787 SVSFUnusedFlags = SPF_UNUSED_FLAGS as u32, 1788 }} 1789 pub const SVSFParseAutodetect: SpeechVoiceSpeakFlags = SVSFDefault; 1790 pub const SVSFNLPMask: SpeechVoiceSpeakFlags = SVSFNLPSpeakPunc; 1791 FLAGS!{enum SpeechVoiceEvents { 1792 SVEStartInputStream = 1 << 1, 1793 SVEEndInputStream = 1 << 2, 1794 SVEVoiceChange = 1 << 3, 1795 SVEBookmark = 1 << 4, 1796 SVEWordBoundary = 1 << 5, 1797 SVEPhoneme = 1 << 6, 1798 SVESentenceBoundary = 1 << 7, 1799 SVEViseme = 1 << 8, 1800 SVEAudioLevel = 1 << 9, 1801 SVEPrivate = 1 << 15, 1802 SVEAllEvents = 0x83fe, 1803 }} 1804 ENUM!{enum DISPID_SpeechVoiceStatus { 1805 DISPID_SVSCurrentStreamNumber = 1, 1806 DISPID_SVSLastStreamNumberQueued, 1807 DISPID_SVSLastResult, 1808 DISPID_SVSRunningState, 1809 DISPID_SVSInputWordPosition, 1810 DISPID_SVSInputWordLength, 1811 DISPID_SVSInputSentencePosition, 1812 DISPID_SVSInputSentenceLength, 1813 DISPID_SVSLastBookmark, 1814 DISPID_SVSLastBookmarkId, 1815 DISPID_SVSPhonemeId, 1816 DISPID_SVSVisemeId, 1817 }} 1818 ENUM!{enum SpeechRunState { 1819 SRSEDone = SPRS_DONE.0, 1820 SRSEIsSpeaking = SPRS_IS_SPEAKING.0, 1821 }} 1822 ENUM!{enum SpeechVisemeType { 1823 SVP_0 = 0, 1824 SVP_1, 1825 SVP_2, 1826 SVP_3, 1827 SVP_4, 1828 SVP_5, 1829 SVP_6, 1830 SVP_7, 1831 SVP_8, 1832 SVP_9, 1833 SVP_10, 1834 SVP_11, 1835 SVP_12, 1836 SVP_13, 1837 SVP_14, 1838 SVP_15, 1839 SVP_16, 1840 SVP_17, 1841 SVP_18, 1842 SVP_19, 1843 SVP_20, 1844 SVP_21, 1845 }} 1846 ENUM!{enum SpeechVisemeFeature { 1847 SVF_None = 0, 1848 SVF_Stressed = SPVFEATURE_STRESSED.0, 1849 SVF_Emphasis = SPVFEATURE_EMPHASIS.0, 1850 }} 1851 ENUM!{enum DISPID_SpeechVoiceEvent { 1852 DISPID_SVEStreamStart = 1, 1853 DISPID_SVEStreamEnd, 1854 DISPID_SVEVoiceChange, 1855 DISPID_SVEBookmark, 1856 DISPID_SVEWord, 1857 DISPID_SVEPhoneme, 1858 DISPID_SVESentenceBoundary, 1859 DISPID_SVEViseme, 1860 DISPID_SVEAudioLevel, 1861 DISPID_SVEEnginePrivate, 1862 }} 1863 ENUM!{enum DISPID_SpeechRecognizer { 1864 DISPID_SRRecognizer = 1, 1865 DISPID_SRAllowAudioInputFormatChangesOnNextSet, 1866 DISPID_SRAudioInput, 1867 DISPID_SRAudioInputStream, 1868 DISPID_SRIsShared, 1869 DISPID_SRState, 1870 DISPID_SRStatus, 1871 DISPID_SRProfile, 1872 DISPID_SREmulateRecognition, 1873 DISPID_SRCreateRecoContext, 1874 DISPID_SRGetFormat, 1875 DISPID_SRSetPropertyNumber, 1876 DISPID_SRGetPropertyNumber, 1877 DISPID_SRSetPropertyString, 1878 DISPID_SRGetPropertyString, 1879 DISPID_SRIsUISupported, 1880 DISPID_SRDisplayUI, 1881 DISPID_SRGetRecognizers, 1882 DISPID_SVGetAudioInputs, 1883 DISPID_SVGetProfiles, 1884 }} 1885 ENUM!{enum SpeechRecognizerState { 1886 SRSInactive = SPRST_INACTIVE.0, 1887 SRSActive = SPRST_ACTIVE.0, 1888 SRSActiveAlways = SPRST_ACTIVE_ALWAYS.0, 1889 SRSInactiveWithPurge = SPRST_INACTIVE_WITH_PURGE.0, 1890 }} 1891 ENUM!{enum SpeechDisplayAttributes { 1892 SDA_No_Trailing_Space = 0, 1893 SDA_One_Trailing_Space = SPAF_ONE_TRAILING_SPACE.0, 1894 SDA_Two_Trailing_Spaces = SPAF_TWO_TRAILING_SPACES.0, 1895 SDA_Consume_Leading_Spaces = SPAF_CONSUME_LEADING_SPACES.0, 1896 }} 1897 ENUM!{enum SpeechFormatType { 1898 SFTInput = SPWF_INPUT.0, 1899 SFTSREngine = SPWF_SRENGINE.0, 1900 }} 1901 FLAGS!{enum SpeechEmulationCompareFlags { 1902 SECFIgnoreCase = 0x1, 1903 SECFIgnoreKanaType = 0x10000, 1904 SECFIgnoreWidth = 0x20000, 1905 SECFNoSpecialChars = 0x20000000, 1906 SECFEmulateResult = 0x40000000, 1907 SECFDefault = SECFIgnoreCase.0 | SECFIgnoreKanaType.0 | SECFIgnoreWidth.0, 1908 }} 1909 ENUM!{enum DISPID_SpeechRecognizerStatus { 1910 DISPID_SRSAudioStatus = 1, 1911 DISPID_SRSCurrentStreamPosition, 1912 DISPID_SRSCurrentStreamNumber, 1913 DISPID_SRSNumberOfActiveRules, 1914 DISPID_SRSClsidEngine, 1915 DISPID_SRSSupportedLanguages, 1916 }} 1917 ENUM!{enum DISPID_SpeechRecoContext { 1918 DISPID_SRCRecognizer = 1, 1919 DISPID_SRCAudioInInterferenceStatus, 1920 DISPID_SRCRequestedUIType, 1921 DISPID_SRCVoice, 1922 DISPID_SRAllowVoiceFormatMatchingOnNextSet, 1923 DISPID_SRCVoicePurgeEvent, 1924 DISPID_SRCEventInterests, 1925 DISPID_SRCCmdMaxAlternates, 1926 DISPID_SRCState, 1927 DISPID_SRCRetainedAudio, 1928 DISPID_SRCRetainedAudioFormat, 1929 DISPID_SRCPause, 1930 DISPID_SRCResume, 1931 DISPID_SRCCreateGrammar, 1932 DISPID_SRCCreateResultFromMemory, 1933 DISPID_SRCBookmark, 1934 DISPID_SRCSetAdaptationData, 1935 }} 1936 ENUM!{enum SpeechRetainedAudioOptions { 1937 SRAONone = SPAO_NONE.0, 1938 SRAORetainAudio = SPAO_RETAIN_AUDIO.0, 1939 }} 1940 ENUM!{enum SpeechBookmarkOptions { 1941 SBONone = SPBO_NONE.0, 1942 SBOPause = SPBO_PAUSE.0, 1943 }} 1944 ENUM!{enum SpeechInterference { 1945 SINone = SPINTERFERENCE_NONE.0, 1946 SINoise = SPINTERFERENCE_NOISE.0, 1947 SINoSignal = SPINTERFERENCE_NOSIGNAL.0, 1948 SITooLoud = SPINTERFERENCE_TOOLOUD.0, 1949 SITooQuiet = SPINTERFERENCE_TOOQUIET.0, 1950 SITooFast = SPINTERFERENCE_TOOFAST.0, 1951 SITooSlow = SPINTERFERENCE_TOOSLOW.0, 1952 }} 1953 FLAGS!{enum SpeechRecoEvents { 1954 SREStreamEnd = 1 << 0, 1955 SRESoundStart = 1 << 1, 1956 SRESoundEnd = 1 << 2, 1957 SREPhraseStart = 1 << 3, 1958 SRERecognition = 1 << 4, 1959 SREHypothesis = 1 << 5, 1960 SREBookmark = 1 << 6, 1961 SREPropertyNumChange = 1 << 7, 1962 SREPropertyStringChange = 1 << 8, 1963 SREFalseRecognition = 1 << 9, 1964 SREInterference = 1 << 10, 1965 SRERequestUI = 1 << 11, 1966 SREStateChange = 1 << 12, 1967 SREAdaptation = 1 << 13, 1968 SREStreamStart = 1 << 14, 1969 SRERecoOtherContext = 1 << 15, 1970 SREAudioLevel = 1 << 16, 1971 SREPrivate = 1 << 18, 1972 SREAllEvents = 0x5ffff, 1973 }} 1974 ENUM!{enum SpeechRecoContextState { 1975 SRCS_Disabled = SPCS_DISABLED.0, 1976 SRCS_Enabled = SPCS_ENABLED.0, 1977 }} 1978 ENUM!{enum DISPIDSPRG { 1979 DISPID_SRGId = 1, 1980 DISPID_SRGRecoContext, 1981 DISPID_SRGState, 1982 DISPID_SRGRules, 1983 DISPID_SRGReset, 1984 DISPID_SRGCommit, 1985 DISPID_SRGCmdLoadFromFile, 1986 DISPID_SRGCmdLoadFromObject, 1987 DISPID_SRGCmdLoadFromResource, 1988 DISPID_SRGCmdLoadFromMemory, 1989 DISPID_SRGCmdLoadFromProprietaryGrammar, 1990 DISPID_SRGCmdSetRuleState, 1991 DISPID_SRGCmdSetRuleIdState, 1992 DISPID_SRGDictationLoad, 1993 DISPID_SRGDictationUnload, 1994 DISPID_SRGDictationSetState, 1995 DISPID_SRGSetWordSequenceData, 1996 DISPID_SRGSetTextSelection, 1997 DISPID_SRGIsPronounceable, 1998 }} 1999 ENUM!{enum SpeechLoadOption { 2000 SLOStatic = SPLO_STATIC.0, 2001 SLODynamic = SPLO_DYNAMIC.0, 2002 }} 2003 ENUM!{enum SpeechWordPronounceable { 2004 SWPUnknownWordUnpronounceable = SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE.0, 2005 SWPUnknownWordPronounceable = SPWP_UNKNOWN_WORD_PRONOUNCEABLE.0, 2006 SWPKnownWordPronounceable = SPWP_KNOWN_WORD_PRONOUNCEABLE.0, 2007 }} 2008 ENUM!{enum SpeechGrammarState { 2009 SGSEnabled = SPGS_ENABLED.0, 2010 SGSDisabled = SPGS_DISABLED.0, 2011 SGSExclusive = SPGS_EXCLUSIVE.0, 2012 }} 2013 ENUM!{enum SpeechRuleState { 2014 SGDSInactive = SPRS_INACTIVE.0, 2015 SGDSActive = SPRS_ACTIVE.0, 2016 SGDSActiveWithAutoPause = SPRS_ACTIVE_WITH_AUTO_PAUSE.0, 2017 SGDSActiveUserDelimited = SPRS_ACTIVE_USER_DELIMITED.0, 2018 }} 2019 ENUM!{enum SpeechRuleAttributes { 2020 SRATopLevel = SPRAF_TopLevel.0, 2021 SRADefaultToActive = SPRAF_Active.0, 2022 SRAExport = SPRAF_Export.0, 2023 SRAImport = SPRAF_Import.0, 2024 SRAInterpreter = SPRAF_Interpreter.0, 2025 SRADynamic = SPRAF_Dynamic.0, 2026 SRARoot = SPRAF_Root.0, 2027 }} 2028 ENUM!{enum SpeechGrammarWordType { 2029 SGDisplay = SPWT_DISPLAY.0, 2030 SGLexical = SPWT_LEXICAL.0, 2031 SGPronounciation = SPWT_PRONUNCIATION.0, 2032 SGLexicalNoSpecialChars = SPWT_LEXICAL_NO_SPECIAL_CHARS.0, 2033 }} 2034 ENUM!{enum DISPID_SpeechRecoContextEvents { 2035 DISPID_SRCEStartStream = 1, 2036 DISPID_SRCEEndStream, 2037 DISPID_SRCEBookmark, 2038 DISPID_SRCESoundStart, 2039 DISPID_SRCESoundEnd, 2040 DISPID_SRCEPhraseStart, 2041 DISPID_SRCERecognition, 2042 DISPID_SRCEHypothesis, 2043 DISPID_SRCEPropertyNumberChange, 2044 DISPID_SRCEPropertyStringChange, 2045 DISPID_SRCEFalseRecognition, 2046 DISPID_SRCEInterference, 2047 DISPID_SRCERequestUI, 2048 DISPID_SRCERecognizerStateChange, 2049 DISPID_SRCEAdaptation, 2050 DISPID_SRCERecognitionForOtherContext, 2051 DISPID_SRCEAudioLevel, 2052 DISPID_SRCEEnginePrivate, 2053 }} 2054 ENUM!{enum SpeechRecognitionType { 2055 SRTStandard = 0, 2056 SRTAutopause = SPREF_AutoPause.0, 2057 SRTEmulated = SPREF_Emulated.0, 2058 SRTSMLTimeout = SPREF_SMLTimeout.0, 2059 SRTExtendableParse = SPREF_ExtendableParse.0, 2060 SRTReSent = SPREF_ReSent.0, 2061 }} 2062 ENUM!{enum DISPID_SpeechGrammarRule { 2063 DISPID_SGRAttributes = 1, 2064 DISPID_SGRInitialState, 2065 DISPID_SGRName, 2066 DISPID_SGRId, 2067 DISPID_SGRClear, 2068 DISPID_SGRAddResource, 2069 DISPID_SGRAddState, 2070 }} 2071 ENUM!{enum DISPID_SpeechGrammarRules { 2072 DISPID_SGRsCount = 1, 2073 DISPID_SGRsDynamic, 2074 DISPID_SGRsAdd, 2075 DISPID_SGRsCommit, 2076 DISPID_SGRsCommitAndSave, 2077 DISPID_SGRsFindRule, 2078 DISPID_SGRsItem = ::DISPID_VALUE as u32, 2079 DISPID_SGRs_NewEnum = ::DISPID_NEWENUM as u32, 2080 }} 2081 ENUM!{enum DISPID_SpeechGrammarRuleState { 2082 DISPID_SGRSRule = 1, 2083 DISPID_SGRSTransitions, 2084 DISPID_SGRSAddWordTransition, 2085 DISPID_SGRSAddRuleTransition, 2086 DISPID_SGRSAddSpecialTransition, 2087 }} 2088 ENUM!{enum SpeechSpecialTransitionType { 2089 SSTTWildcard = 1, 2090 SSTTDictation, 2091 SSTTTextBuffer, 2092 }} 2093 ENUM!{enum DISPID_SpeechGrammarRuleStateTransitions { 2094 DISPID_SGRSTsCount = 1, 2095 DISPID_SGRSTsItem = ::DISPID_VALUE as u32, 2096 DISPID_SGRSTs_NewEnum = ::DISPID_NEWENUM as u32, 2097 }} 2098 ENUM!{enum DISPID_SpeechGrammarRuleStateTransition { 2099 DISPID_SGRSTType = 1, 2100 DISPID_SGRSTText, 2101 DISPID_SGRSTRule, 2102 DISPID_SGRSTWeight, 2103 DISPID_SGRSTPropertyName, 2104 DISPID_SGRSTPropertyId, 2105 DISPID_SGRSTPropertyValue, 2106 DISPID_SGRSTNextState, 2107 }} 2108 ENUM!{enum SpeechGrammarRuleStateTransitionType { 2109 SGRSTTEpsilon = 0, 2110 SGRSTTWord, 2111 SGRSTTRule, 2112 SGRSTTDictation, 2113 SGRSTTWildcard, 2114 SGRSTTTextBuffer, 2115 }} 2116 ENUM!{enum DISPIDSPTSI { 2117 DISPIDSPTSI_ActiveOffset = 1, 2118 DISPIDSPTSI_ActiveLength, 2119 DISPIDSPTSI_SelectionOffset, 2120 DISPIDSPTSI_SelectionLength, 2121 }} 2122 ENUM!{enum DISPID_SpeechRecoResult { 2123 DISPID_SRRRecoContext = 1, 2124 DISPID_SRRTimes, 2125 DISPID_SRRAudioFormat, 2126 DISPID_SRRPhraseInfo, 2127 DISPID_SRRAlternates, 2128 DISPID_SRRAudio, 2129 DISPID_SRRSpeakAudio, 2130 DISPID_SRRSaveToMemory, 2131 DISPID_SRRDiscardResultInfo, 2132 }} 2133 ENUM!{enum SpeechDiscardType { 2134 SDTProperty = SPDF_PROPERTY.0, 2135 SDTReplacement = SPDF_REPLACEMENT.0, 2136 SDTRule = SPDF_RULE.0, 2137 SDTDisplayText = SPDF_DISPLAYTEXT.0, 2138 SDTLexicalForm = SPDF_LEXICALFORM.0, 2139 SDTPronunciation = SPDF_PRONUNCIATION.0, 2140 SDTAudio = SPDF_AUDIO.0, 2141 SDTAlternates = SPDF_ALTERNATES.0, 2142 SDTAll = SPDF_ALL.0, 2143 }} 2144 ENUM!{enum DISPID_SpeechXMLRecoResult { 2145 DISPID_SRRGetXMLResult, 2146 DISPID_SRRGetXMLErrorInfo, 2147 }} 2148 ENUM!{enum DISPID_SpeechRecoResult2 { 2149 DISPID_SRRSetTextFeedback, 2150 }} 2151 ENUM!{enum DISPID_SpeechPhraseBuilder { 2152 DISPID_SPPBRestorePhraseFromMemory = 1, 2153 }} 2154 ENUM!{enum DISPID_SpeechRecoResultTimes { 2155 DISPID_SRRTStreamTime = 1, 2156 DISPID_SRRTLength, 2157 DISPID_SRRTTickCount, 2158 DISPID_SRRTOffsetFromStart, 2159 }} 2160 ENUM!{enum DISPID_SpeechPhraseAlternate { 2161 DISPID_SPARecoResult = 1, 2162 DISPID_SPAStartElementInResult, 2163 DISPID_SPANumberOfElementsInResult, 2164 DISPID_SPAPhraseInfo, 2165 DISPID_SPACommit, 2166 }} 2167 ENUM!{enum DISPID_SpeechPhraseAlternates { 2168 DISPID_SPAsCount = 1, 2169 DISPID_SPAsItem = ::DISPID_VALUE as u32, 2170 DISPID_SPAs_NewEnum = ::DISPID_NEWENUM as u32, 2171 }} 2172 ENUM!{enum DISPID_SpeechPhraseInfo { 2173 DISPID_SPILanguageId = 1, 2174 DISPID_SPIGrammarId, 2175 DISPID_SPIStartTime, 2176 DISPID_SPIAudioStreamPosition, 2177 DISPID_SPIAudioSizeBytes, 2178 DISPID_SPIRetainedSizeBytes, 2179 DISPID_SPIAudioSizeTime, 2180 DISPID_SPIRule, 2181 DISPID_SPIProperties, 2182 DISPID_SPIElements, 2183 DISPID_SPIReplacements, 2184 DISPID_SPIEngineId, 2185 DISPID_SPIEnginePrivateData, 2186 DISPID_SPISaveToMemory, 2187 DISPID_SPIGetText, 2188 DISPID_SPIGetDisplayAttributes, 2189 }} 2190 ENUM!{enum DISPID_SpeechPhraseElement { 2191 DISPID_SPEAudioTimeOffset = 1, 2192 DISPID_SPEAudioSizeTime, 2193 DISPID_SPEAudioStreamOffset, 2194 DISPID_SPEAudioSizeBytes, 2195 DISPID_SPERetainedStreamOffset, 2196 DISPID_SPERetainedSizeBytes, 2197 DISPID_SPEDisplayText, 2198 DISPID_SPELexicalForm, 2199 DISPID_SPEPronunciation, 2200 DISPID_SPEDisplayAttributes, 2201 DISPID_SPERequiredConfidence, 2202 DISPID_SPEActualConfidence, 2203 DISPID_SPEEngineConfidence, 2204 }} 2205 ENUM!{enum SpeechEngineConfidence { 2206 SECLowConfidence = -1i32 as u32, 2207 SECNormalConfidence = 0, 2208 SECHighConfidence = 1, 2209 }} 2210 ENUM!{enum DISPID_SpeechPhraseElements { 2211 DISPID_SPEsCount = 1, 2212 DISPID_SPEsItem = ::DISPID_VALUE as u32, 2213 DISPID_SPEs_NewEnum = ::DISPID_NEWENUM as u32, 2214 }} 2215 ENUM!{enum DISPID_SpeechPhraseReplacement { 2216 DISPID_SPRDisplayAttributes = 1, 2217 DISPID_SPRText, 2218 DISPID_SPRFirstElement, 2219 DISPID_SPRNumberOfElements, 2220 }} 2221 ENUM!{enum DISPID_SpeechPhraseReplacements { 2222 DISPID_SPRsCount = 1, 2223 DISPID_SPRsItem = ::DISPID_VALUE as u32, 2224 DISPID_SPRs_NewEnum = ::DISPID_NEWENUM as u32, 2225 }} 2226 ENUM!{enum DISPID_SpeechPhraseProperty { 2227 DISPID_SPPName = 1, 2228 DISPID_SPPId, 2229 DISPID_SPPValue, 2230 DISPID_SPPFirstElement, 2231 DISPID_SPPNumberOfElements, 2232 DISPID_SPPEngineConfidence, 2233 DISPID_SPPConfidence, 2234 DISPID_SPPParent, 2235 DISPID_SPPChildren, 2236 }} 2237 ENUM!{enum DISPID_SpeechPhraseProperties { 2238 DISPID_SPPsCount = 1, 2239 DISPID_SPPsItem = ::DISPID_VALUE as u32, 2240 DISPID_SPPs_NewEnum = ::DISPID_NEWENUM as u32, 2241 }} 2242 ENUM!{enum DISPID_SpeechPhraseRule { 2243 DISPID_SPRuleName = 1, 2244 DISPID_SPRuleId, 2245 DISPID_SPRuleFirstElement, 2246 DISPID_SPRuleNumberOfElements, 2247 DISPID_SPRuleParent, 2248 DISPID_SPRuleChildren, 2249 DISPID_SPRuleConfidence, 2250 DISPID_SPRuleEngineConfidence, 2251 }} 2252 ENUM!{enum DISPID_SpeechPhraseRules { 2253 DISPID_SPRulesCount = 1, 2254 DISPID_SPRulesItem = ::DISPID_VALUE as u32, 2255 DISPID_SPRules_NewEnum = ::DISPID_NEWENUM as u32, 2256 }} 2257 ENUM!{enum DISPID_SpeechLexicon { 2258 DISPID_SLGenerationId = 1, 2259 DISPID_SLGetWords, 2260 DISPID_SLAddPronunciation, 2261 DISPID_SLAddPronunciationByPhoneIds, 2262 DISPID_SLRemovePronunciation, 2263 DISPID_SLRemovePronunciationByPhoneIds, 2264 DISPID_SLGetPronunciations, 2265 DISPID_SLGetGenerationChange, 2266 }} 2267 ENUM!{enum SpeechLexiconType { 2268 SLTUser = eLEXTYPE_USER.0, 2269 SLTApp = eLEXTYPE_APP.0, 2270 }} 2271 ENUM!{enum SpeechPartOfSpeech { 2272 SPSNotOverriden = SPPS_NotOverriden.0, 2273 SPSUnknown = SPPS_Unknown.0, 2274 SPSNoun = SPPS_Noun.0, 2275 SPSVerb = SPPS_Verb.0, 2276 SPSModifier = SPPS_Modifier.0, 2277 SPSFunction = SPPS_Function.0, 2278 SPSInterjection = SPPS_Interjection.0, 2279 SPSLMA = SPPS_LMA.0, 2280 SPSSuppressWord = SPPS_SuppressWord.0, 2281 }} 2282 ENUM!{enum DISPID_SpeechLexiconWords { 2283 DISPID_SLWsCount = 1, 2284 DISPID_SLWsItem = ::DISPID_VALUE as u32, 2285 DISPID_SLWs_NewEnum = ::DISPID_NEWENUM as u32, 2286 }} 2287 ENUM!{enum SpeechWordType { 2288 SWTAdded = eWORDTYPE_ADDED.0, 2289 SWTDeleted = eWORDTYPE_DELETED.0, 2290 }} 2291 ENUM!{enum DISPID_SpeechLexiconWord { 2292 DISPID_SLWLangId = 1, 2293 DISPID_SLWType, 2294 DISPID_SLWWord, 2295 DISPID_SLWPronunciations, 2296 }} 2297 ENUM!{enum DISPID_SpeechLexiconProns { 2298 DISPID_SLPsCount = 1, 2299 DISPID_SLPsItem = ::DISPID_VALUE as u32, 2300 DISPID_SLPs_NewEnum = ::DISPID_NEWENUM as u32, 2301 }} 2302 ENUM!{enum DISPID_SpeechLexiconPronunciation { 2303 DISPID_SLPType = 1, 2304 DISPID_SLPLangId, 2305 DISPID_SLPPartOfSpeech, 2306 DISPID_SLPPhoneIds, 2307 DISPID_SLPSymbolic, 2308 }} 2309 ENUM!{enum DISPID_SpeechPhoneConverter { 2310 DISPID_SPCLangId = 1, 2311 DISPID_SPCPhoneToId, 2312 DISPID_SPCIdToPhone, 2313 }} 2314 RIDL!( 2315 interface ISpeechDataKey(ISpeechDataKeyVtbl): IDispatch(IDispatchVtbl) { 2316 fn SetBinaryValue(&mut self, ValueName: ::BSTR, Value: ::VARIANT) -> ::HRESULT, 2317 fn GetBinaryValue(&mut self, ValueName: ::BSTR, Value: *mut ::VARIANT) -> ::HRESULT, 2318 fn SetStringValue(&mut self, ValueName: ::BSTR, Value: ::BSTR) -> ::HRESULT, 2319 fn GetStringValue(&mut self, ValueName: ::BSTR, Value: *mut ::BSTR) -> ::HRESULT, 2320 fn SetLongValue(&mut self, ValueName: ::BSTR, Value: ::c_long) -> ::HRESULT, 2321 fn GetLongValue(&mut self, ValueName: ::BSTR, Value: *mut ::c_long) -> ::HRESULT, 2322 fn OpenKey(&mut self, SubKeyName: ::BSTR, SubKey: *mut *mut ISpeechDataKey) -> ::HRESULT, 2323 fn CreateKey(&mut self, SubKeyName: ::BSTR, SubKey: *mut *mut ISpeechDataKey) -> ::HRESULT, 2324 fn DeleteKey(&mut self, SubKeyName: ::BSTR) -> ::HRESULT, 2325 fn DeleteValue(&mut self, ValueName: ::BSTR) -> ::HRESULT, 2326 fn EnumKeys(&mut self, Index: ::c_long, SubKeyName: *mut ::BSTR) -> ::HRESULT, 2327 fn EnumValues(&mut self, Index: ::c_long, ValueName: *mut ::BSTR) -> ::HRESULT 2328 } 2329 ); 2330 RIDL!( 2331 interface ISpeechObjectToken(ISpeechObjectTokenVtbl): IDispatch(IDispatchVtbl) { 2332 fn get_Id(&mut self, ObjectId: *mut ::BSTR) -> ::HRESULT, 2333 fn get_DataKey(&mut self, DataKey: *mut *mut ISpeechDataKey) -> ::HRESULT, 2334 fn get_Category(&mut self, Category: *mut *mut ISpeechObjectTokenCategory) -> ::HRESULT, 2335 fn GetDescription(&mut self, Locale: ::c_long, Description: *mut ::BSTR) -> ::HRESULT, 2336 fn SetId( 2337 &mut self, Id: ::BSTR, CategoryId: ::BSTR, CreateIfNotExist: ::VARIANT_BOOL 2338 ) -> ::HRESULT, 2339 fn GetAttribute(&mut self, AttributeName: ::BSTR, AttributeValue: *mut ::BSTR) -> ::HRESULT, 2340 fn CreateInstance( 2341 &mut self, pUnkOuter: *mut ::IUnknown, ClsContext: SpeechTokenContext, 2342 Object: *mut *mut ::IUnknown 2343 ) -> ::HRESULT, 2344 fn Remove(&mut self, ObjectStorageCLSID: ::BSTR) -> ::HRESULT, 2345 fn GetStorageFileName( 2346 &mut self, ObjectStorageCLSID: ::BSTR, KeyName: ::BSTR, FileName: ::BSTR, Folder: ::BSTR, 2347 FilePath: *mut ::BSTR 2348 ) -> ::HRESULT, 2349 fn RemoveStorageFileName( 2350 &mut self, ObjectStorageCLSID: ::BSTR, KeyName: ::BSTR, DeleteFile: ::VARIANT_BOOL 2351 ) -> ::HRESULT, 2352 fn IsUISupported( 2353 &mut self, TypeOfUI: ::BSTR, ExtraData: *const ::VARIANT, Object: *mut ::IUnknown, 2354 Supported: *mut ::VARIANT_BOOL 2355 ) -> ::HRESULT, 2356 fn DisplayUI( 2357 &mut self, hWnd: ::c_long, Title: ::BSTR, TypeOfUI: ::BSTR, ExtraData: *const ::VARIANT, 2358 Object: *mut ::IUnknown 2359 ) -> ::HRESULT, 2360 fn MatchesAttributes(&mut self, Attributes: ::BSTR, Matches: *mut ::VARIANT_BOOL) -> ::HRESULT 2361 } 2362 ); 2363 RIDL!( 2364 interface ISpeechObjectTokens(ISpeechObjectTokensVtbl): IDispatch(IDispatchVtbl) { 2365 fn get_Count(&mut self, Count: *mut ::c_long) -> ::HRESULT, 2366 fn Item(&mut self, Index: ::c_long, Token: *mut *mut ISpeechObjectToken) -> ::HRESULT, 2367 fn get__NewEnum(&mut self, ppEnumVARIANT: *mut *mut ::IUnknown) -> ::HRESULT 2368 } 2369 ); 2370 RIDL!( 2371 interface ISpeechObjectTokenCategory(ISpeechObjectTokenCategoryVtbl): IDispatch(IDispatchVtbl) { 2372 fn get_Id(&mut self, Id: *mut ::BSTR) -> ::HRESULT, 2373 fn put_Default(&mut self, TokenId: ::BSTR) -> ::HRESULT, 2374 fn get_Default(&mut self, TokenId: *mut ::BSTR) -> ::HRESULT, 2375 fn SetId(&mut self, Id: ::BSTR, CreateIfNotExist: ::VARIANT_BOOL) -> ::HRESULT, 2376 fn GetDataKey( 2377 &mut self, Location: SpeechDataKeyLocation, DataKey: *mut *mut ISpeechDataKey 2378 ) -> ::HRESULT, 2379 fn EnumerateTokens( 2380 &mut self, RequiredAttributes: ::BSTR, OptionalAttributes: ::BSTR, 2381 Tokens: *mut *mut ISpeechObjectTokens 2382 ) -> ::HRESULT 2383 } 2384 ); 2385 RIDL!( 2386 interface ISpeechAudioBufferInfo(ISpeechAudioBufferInfoVtbl): IDispatch(IDispatchVtbl) { 2387 fn get_MinNotification(&mut self, MinNotification: *mut ::c_long) -> ::HRESULT, 2388 fn put_MinNotification(&mut self, MinNotification: ::c_long) -> ::HRESULT, 2389 fn get_BufferSize(&mut self, BufferSize: *mut ::c_long) -> ::HRESULT, 2390 fn put_BufferSize(&mut self, BufferSize: ::c_long) -> ::HRESULT, 2391 fn get_EventBias(&mut self, EventBias: *mut ::c_long) -> ::HRESULT, 2392 fn put_EventBias(&mut self, EventBias: ::c_long) -> ::HRESULT 2393 } 2394 ); 2395 RIDL!( 2396 interface ISpeechAudioStatus(ISpeechAudioStatusVtbl): IDispatch(IDispatchVtbl) { 2397 fn get_FreeBufferSpace(&mut self, FreeBufferSpace: *mut ::c_long) -> ::HRESULT, 2398 fn get_NonBlockingIO(&mut self, NonBlockingIO: *mut ::c_long) -> ::HRESULT, 2399 fn get_State(&mut self, State: *mut SpeechAudioState) -> ::HRESULT, 2400 fn get_CurrentSeekPosition(&mut self, CurrentSeekPosition: *mut ::VARIANT) -> ::HRESULT, 2401 fn get_CurrentDevicePosition(&mut self, CurrentDevicePosition: *mut ::VARIANT) -> ::HRESULT 2402 } 2403 ); 2404 RIDL!( 2405 interface ISpeechAudioFormat(ISpeechAudioFormatVtbl): IDispatch(IDispatchVtbl) { 2406 fn get_Type(&mut self, AudioFormat: *mut SpeechAudioFormatType) -> ::HRESULT, 2407 fn put_Type(&mut self, AudioFormat: SpeechAudioFormatType) -> ::HRESULT, 2408 fn get_Guid(&mut self, Guid: *mut ::BSTR) -> ::HRESULT, 2409 fn put_Guid(&mut self, Guid: ::BSTR) -> ::HRESULT, 2410 fn GetWaveFormatEx(&mut self, SpeechWaveFormatEx: *mut *mut ISpeechWaveFormatEx) -> ::HRESULT, 2411 fn SetWaveFormatEx(&mut self, SpeechWaveFormatEx: *mut ISpeechWaveFormatEx) -> ::HRESULT 2412 } 2413 ); 2414 RIDL!( 2415 interface ISpeechWaveFormatEx(ISpeechWaveFormatExVtbl): IDispatch(IDispatchVtbl) { 2416 fn get_FormatTag(&mut self, FormatTag: *mut ::c_short) -> ::HRESULT, 2417 fn put_FormatTag(&mut self, FormatTag: ::c_short) -> ::HRESULT, 2418 fn get_Channels(&mut self, Channels: *mut ::c_short) -> ::HRESULT, 2419 fn put_Channels(&mut self, Channels: ::c_short) -> ::HRESULT, 2420 fn get_SamplesPerSec(&mut self, SamplesPerSec: *mut ::c_long) -> ::HRESULT, 2421 fn put_SamplesPerSec(&mut self, SamplesPerSec: ::c_long) -> ::HRESULT, 2422 fn get_AvgBytesPerSec(&mut self, AvgBytesPerSec: *mut ::c_long) -> ::HRESULT, 2423 fn put_AvgBytesPerSec(&mut self, AvgBytesPerSec: ::c_long) -> ::HRESULT, 2424 fn get_BlockAlign(&mut self, BlockAlign: *mut ::c_short) -> ::HRESULT, 2425 fn put_BlockAlign(&mut self, BlockAlign: ::c_short) -> ::HRESULT, 2426 fn get_BitsPerSample(&mut self, BitsPerSample: *mut ::c_short) -> ::HRESULT, 2427 fn put_BitsPerSample(&mut self, BitsPerSample: ::c_short) -> ::HRESULT, 2428 fn get_ExtraData(&mut self, ExtraData: *mut ::VARIANT) -> ::HRESULT, 2429 fn put_ExtraData(&mut self, ExtraData: ::VARIANT) -> ::HRESULT 2430 } 2431 ); 2432