// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_float, c_int, c_void};
use shared::guiddef::CLSID;
use shared::minwindef::{BOOL, DWORD, ULONG};
use um::sapi::*;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR};
pub use um::sapiddk51::{
SPRECOEXTENSION,
SPALTERNATESCLSID,
};
pub const SR_LOCALIZED_DESCRIPTION: &
'static str = "Description";
pub use um::sapiddk51::{
ISpTokenUI, ISpTokenUIVtbl,
ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl,
SPWORDHANDLE,
SPRULEHANDLE,
SPGRAMMARHANDLE,
SPRECOCONTEXTHANDLE,
SPPHRASERULEHANDLE,
SPPHRASEPROPERTYHANDLE,
SPTRANSITIONID,
ISpErrorLog, ISpErrorLogVtbl,
ISpGrammarCompiler, ISpGrammarCompilerVtbl,
ISpGramCompBackend, ISpGramCompBackendVtbl,
ISpITNProcessor, ISpITNProcessorVtbl,
ISpPhraseBuilder, ISpPhraseBuilderVtbl,
ISpTask,
ISpThreadTask,
ISpThreadControl, ISpThreadControlVtbl,
SPTMTHREADINFO,
ISpTaskManager, ISpTaskManagerVtbl,
SPVSKIPTYPE,
SPVST_SENTENCE,
SPVESACTIONS,
SPVES_CONTINUE,
SPVES_ABORT,
SPVES_SKIP,
SPVES_RATE,
SPVES_VOLUME,
ISpTTSEngineSite, ISpTTSEngineSiteVtbl,
SPVTEXTFRAG,
ISpTTSEngine, ISpTTSEngineVtbl,
SPWORDENTRY,
SPRULEENTRY,
SPTRANSITIONTYPE,
SPTRANSEPSILON,
SPTRANSWORD,
SPTRANSRULE,
SPTRANSTEXTBUF,
SPTRANSWILDCARD,
SPTRANSDICTATION,
SPTRANSITIONENTRY,
SPTRANSITIONPROPERTY,
SPSTATEINFO,
SPPATHENTRY,
ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl,
ISpCFGInterpreter, ISpCFGInterpreterVtbl,
SPCFGNOTIFY,
SPCFGN_ADD,
SPCFGN_REMOVE,
SPCFGN_INVALIDATE,
SPCFGN_ACTIVATE,
SPCFGN_DEACTIVATE,
SPRESULTTYPE,
SPRT_CFG,
SPRT_SLM,
SPRT_PROPRIETARY,
SPRT_FALSE_RECOGNITION,
};
pub const SPRT_TYPE_MASK: SPRESULTTYPE =
3 ;
pub const SPRT_EMULATED: SPRESULTTYPE =
1 <<
3 ;
pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE =
1 <<
4 ;
pub use um::sapiddk51::{
SPPHRASEALT,
SPRECORESULTINFO,
};
STRUCT !{
struct SPRECORESULTINFOEX {
cbSize: ULONG,
eResultType: SPRESULTTYPE,
fHypothesis: BOOL,
fProprietaryAutoPause: BOOL,
ullStreamPosStart: ULONGLONG,
ullStreamPosEnd: ULONGLONG,
hGrammar: SPGRAMMARHANDLE,
ulSizeEngineData: ULONG,
pvEngineData: *
mut c_void,
pPhrase: *
mut ISpPhraseBuilder,
aPhraseAlts: *
mut SPPHRASEALT,
ulNumAlts: ULONG,
ullStreamTimeStart: ULONGLONG,
ullStreamTimeEnd: ULONGLONG,
}}
pub use um::sapiddk51::{
SPWORDINFOOPT,
SPWIO_NONE,
SPWIO_WANT_TEXT,
SPRULEINFOOPT,
SPRIO_NONE,
SPPARSEINFO,
ISpSREngineSite, ISpSREngineSiteVtbl,
};
RIDL!{
#[ uuid(
0 x7bc6e012,
0 x684a,
0 x493e,
0 xbd,
0 xd4,
0 x2b,
0 xf5,
0 xfb,
0 xf4,
0 x8c,
0 xfe)]
interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteV
tbl) {
fn AddEventEx(
pEvent: *const SPEVENTEX,
hSAPIRecoContext: SPRECOCONTEXTHANDLE,
) -> HRESULT,
fn UpdateRecoPosEx(
ullCurrentRecoPos: ULONGLONG,
ullCurrentRecoTime: ULONGLONG,
) -> HRESULT,
fn GetRuleTransition(
ulGrammarID: ULONG,
RuleIndex: ULONG,
pTrans: *mut SPTRANSITIONENTRY,
) -> HRESULT,
fn RecognitionEx(
pResultInfo: *const SPRECORESULTINFOEX,
) -> HRESULT,
}}
pub use um::sapiddk51::{
SPPROPSRC,
SPPROPSRC_RECO_INST,
SPPROPSRC_RECO_CTX,
SPPROPSRC_RECO_GRAMMAR,
ISpSREngine, ISpSREngineVtbl,
};
RIDL!{#[ uuid(0 x7ba627d8, 0 x33f9, 0 x4375, 0 x90, 0 xc5, 0 x99, 0 x85, 0 xae, 0 xe5, 0 xed, 0 xe5)]
interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) {
fn PrivateCallImmediate(
pvEngineContext: *mut c_void,
pInCallFrame: *const c_void,
ulInCallFrameSize: ULONG,
ppvCoMemResponse: *mut *mut c_void,
pulResponseSize: *mut ULONG,
) -> HRESULT,
fn SetAdaptationData2(
pvEngineContext: *mut c_void,
pAdaptationData: *const WCHAR,
cch: ULONG,
pTopicName: LPCWSTR,
eSettings: SPADAPTATIONSETTINGS,
eRelevance: SPADAPTATIONRELEVANCE,
) -> HRESULT,
fn SetGrammarPrefix(
pvEngineGrammar: *mut c_void,
pszPrefix: LPCWSTR,
fIsPrefixRequired: BOOL,
) -> HRESULT,
fn SetRulePriority(
hRule: SPRULEHANDLE,
pvClientRuleContext: *mut c_void,
nRulePriority: c_int,
) -> HRESULT,
fn EmulateRecognition(
pPhrase: *mut ISpPhrase,
dwCompareFlags: DWORD,
) -> HRESULT,
fn SetSLMWeight(
pvEngineGrammar: *mut c_void,
flWeight: c_float,
) -> HRESULT,
fn SetRuleWeight(
hRule: SPRULEHANDLE,
pvClientRuleContext: *mut c_void,
flWeight: c_float,
) -> HRESULT,
fn SetTrainingState(
fDoingTraining: BOOL,
fAdaptFromTrainingData: BOOL,
) -> HRESULT,
fn ResetAcousticModelAdaptation() -> HRESULT,
fn OnLoadCFG(
pvEngineGrammar: *mut c_void,
pvGrammarData: *const SPBINARYGRAMMAR,
ulGrammarID: ULONG,
) -> HRESULT,
fn OnUnloadCFG(
pvEngineGrammar: *mut c_void,
ulGrammarID: ULONG,
) -> HRESULT,
}}
pub use um::sapiddk51::SPPHRASEALTREQUEST;
RIDL!{#[ uuid(0 xfece8294, 0 x2be1, 0 x408f, 0 x8e, 0 x68, 0 x2d, 0 xe3, 0 x77, 0 x09, 0 x2f, 0 x0e)]
interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) {
fn GetAlternates(
pAltRequest: *mut SPPHRASEALTREQUEST,
ppAlts: *mut *mut SPPHRASEALT,
pcAlts: *mut ULONG,
) -> HRESULT,
fn Commit(
pAltRequest: *mut SPPHRASEALTREQUEST,
pAlt: *mut SPPHRASEALT,
ppvResultExtra: *mut c_void,
pcbResultExtra: *mut ULONG,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xf338f437, 0 xcb33, 0 x4020, 0 x9c, 0 xab, 0 xc7, 0 x1f, 0 xf9, 0 xce, 0 x12, 0 xd3)]
interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) {
fn CommitText(
pAltRequest: *mut SPPHRASEALTREQUEST,
pcszNewText: LPCWSTR,
commitFlags: SPCOMMITFLAGS,
) -> HRESULT,
}}
pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl};
RIDL!{#[ uuid(0 xdefd682a, 0 xfe0a, 0 x42b9, 0 xbf, 0 xa1, 0 x56, 0 xd3, 0 xd6, 0 xce, 0 xcf, 0 xaf)]
interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) {
fn CallEngineSynchronize(
pInFrame: *const c_void,
ulInFrameSize: ULONG,
ppCoMemOutFrame: *mut *mut c_void,
pulOutFrameSize: *mut ULONG,
) -> HRESULT,
fn CallEngineImmediate(
pInFrame: *const c_void,
ulInFrameSize: ULONG,
ppCoMemOutFrame: *mut *mut c_void,
pulOutFrameSize: *mut ULONG,
) -> HRESULT,
}}
pub use um::sapiddk51::{
LIBID_SpeechDDKLib,
CLSID_SpDataKey,
CLSID_SpObjectTokenEnum,
CLSID_SpPhraseBuilder,
CLSID_SpITNProcessor,
CLSID_SpGrammarCompiler,
};
extern {
pub static CLSID_SpW3CGrammarCompiler: CLSID;
}
pub use um::sapiddk51::CLSID_SpGramCompBackend;
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland