00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SR_RECOGNIZER_H
00021 #define __SR_RECOGNIZER_H
00022
00023
00024
00025 #include "ESR_ReturnCode.h"
00026 #include "SR_RecognizerPrefix.h"
00027 #include "SR_AcousticModels.h"
00028 #include "SR_Grammar.h"
00029 #include "SR_RecognizerResult.h"
00030 #include "SR_Nametags.h"
00031 #include "pstdio.h"
00032 #include "ptypes.h"
00033
00034
00035 struct SR_Grammar_t;
00036
00040 typedef enum SR_RecognizerStatus_t
00041 {
00045 SR_RECOGNIZER_EVENT_INVALID,
00049 SR_RECOGNIZER_EVENT_NO_MATCH,
00053 SR_RECOGNIZER_EVENT_INCOMPLETE,
00057 SR_RECOGNIZER_EVENT_STARTED,
00061 SR_RECOGNIZER_EVENT_STOPPED,
00065 SR_RECOGNIZER_EVENT_START_OF_VOICING,
00069 SR_RECOGNIZER_EVENT_END_OF_VOICING,
00073 SR_RECOGNIZER_EVENT_SPOKE_TOO_SOON,
00077 SR_RECOGNIZER_EVENT_RECOGNITION_RESULT,
00081 SR_RECOGNIZER_EVENT_START_OF_UTTERANCE_TIMEOUT,
00085 SR_RECOGNIZER_EVENT_RECOGNITION_TIMEOUT,
00089 SR_RECOGNIZER_EVENT_NEED_MORE_AUDIO,
00093 SR_RECOGNIZER_EVENT_MAX_SPEECH,
00094 } SR_RecognizerStatus;
00095
00099 typedef enum SR_RecognizerResultType_t
00100 {
00104 SR_RECOGNIZER_INVALID,
00108 SR_RECOGNIZER_RESULT_TYPE_COMPLETE,
00112 SR_RECOGNIZER_RESULT_TYPE_NONE,
00113 } SR_RecognizerResultType;
00114
00118 typedef void* SR_Utterance;
00119
00120 typedef enum
00121 {
00122 ESR_LOCK,
00123 ESR_UNLOCK
00124 } ESR_LOCKMODE;
00125
00129 typedef ESR_ReturnCode(*SR_RecognizerLockFunction)(ESR_LOCKMODE mode, void* data);
00130
00141 typedef struct SR_Recognizer_t
00142 {
00150 ESR_ReturnCode(*start)(struct SR_Recognizer_t* self);
00159 ESR_ReturnCode(*stop)(struct SR_Recognizer_t* self);
00166 ESR_ReturnCode(*destroy)(struct SR_Recognizer_t* self);
00173 ESR_ReturnCode(*setup)(struct SR_Recognizer_t* self);
00180 ESR_ReturnCode(*unsetup)(struct SR_Recognizer_t* self);
00188 ESR_ReturnCode(*isSetup)(struct SR_Recognizer_t* self, ESR_BOOL* isSetup);
00189
00201 ESR_ReturnCode(*getParameter)(struct SR_Recognizer_t* self, const LCHAR* key, LCHAR* value, size_t* len);
00211 ESR_ReturnCode(*getSize_tParameter)(struct SR_Recognizer_t* self, const LCHAR* key, size_t* value);
00221 ESR_ReturnCode(*getBoolParameter)(struct SR_Recognizer_t* self, const LCHAR* key, ESR_BOOL* value);
00235 ESR_ReturnCode(*setParameter)(struct SR_Recognizer_t* self, const LCHAR* key, LCHAR* value);
00244 ESR_ReturnCode(*setSize_tParameter)(struct SR_Recognizer_t* self, const LCHAR* key, size_t value);
00253 ESR_ReturnCode(*setBoolParameter)(struct SR_Recognizer_t* self, const LCHAR* key, ESR_BOOL value);
00254
00267 ESR_ReturnCode (*setupRule)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar, const LCHAR* ruleName);
00275 ESR_ReturnCode(*hasSetupRules)(struct SR_Recognizer_t* self, ESR_BOOL* hasSetupRules);
00288 ESR_ReturnCode (*activateRule)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar,
00289 const LCHAR* ruleName, unsigned int weight);
00298 ESR_ReturnCode (*deactivateRule)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar,
00299 const LCHAR* ruleName);
00300
00307 ESR_ReturnCode(*deactivateAllRules)(struct SR_Recognizer_t* self);
00308
00318 ESR_ReturnCode (*isActiveRule)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar,
00319 const LCHAR* ruleName, ESR_BOOL* isActiveRule);
00327 ESR_ReturnCode (*setWordAdditionCeiling)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar );
00337 ESR_ReturnCode (*checkGrammarConsistency)(struct SR_Recognizer_t* self, struct SR_Grammar_t* grammar,
00338 ESR_BOOL* isConsistent);
00339
00349 ESR_ReturnCode (*getModels)(struct SR_Recognizer_t* self, SR_AcousticModels** pmodels);
00350
00370 ESR_ReturnCode (*putAudio)(struct SR_Recognizer_t* self, asr_int16_t* buffer, size_t* bufferSize,
00371 ESR_BOOL isLast);
00387 ESR_ReturnCode(*advance)(struct SR_Recognizer_t* self, SR_RecognizerStatus* status,
00388 SR_RecognizerResultType* type, SR_RecognizerResult** result);
00389
00390
00398 ESR_ReturnCode(*loadUtterance)(struct SR_Recognizer_t* self, const LCHAR* filename);
00406 ESR_ReturnCode(*loadWaveFile)(struct SR_Recognizer_t* self, const LCHAR* filename);
00407
00416 ESR_ReturnCode(*logToken)(struct SR_Recognizer_t* self, const LCHAR* token, const LCHAR* value);
00417
00426 ESR_ReturnCode(*logTokenInt)(struct SR_Recognizer_t* self, const LCHAR* token, int value);
00427
00436 ESR_ReturnCode(*logEvent)(struct SR_Recognizer_t* self, const LCHAR* event);
00437
00447 ESR_ReturnCode(*logSessionStart)(struct SR_Recognizer_t* self, const LCHAR* sessionName);
00448
00455 ESR_ReturnCode(*logSessionEnd)(struct SR_Recognizer_t* self);
00456
00469 ESR_ReturnCode(*logWaveformData)(struct SR_Recognizer_t* self,
00470 const LCHAR* waveformFilename,
00471 const LCHAR* transcription,
00472 const double bos,
00473 const double eos,
00474 ESR_BOOL isInvocab);
00475
00485 ESR_ReturnCode(*setLockFunction)(struct SR_Recognizer_t *self, SR_RecognizerLockFunction function, void* data);
00493 ESR_ReturnCode(*isSignalClipping)(struct SR_Recognizer_t* self, ESR_BOOL* isClipping);
00501 ESR_ReturnCode(*isSignalDCOffset)(struct SR_Recognizer_t* self, ESR_BOOL* isDCOffset);
00509 ESR_ReturnCode(*isSignalNoisy)(struct SR_Recognizer_t* self, ESR_BOOL* isNoisy);
00517 ESR_ReturnCode(*isSignalTooQuiet)(struct SR_Recognizer_t* self, ESR_BOOL* isTooQuiet);
00525 ESR_ReturnCode(*isSignalTooFewSamples)(struct SR_Recognizer_t* self, ESR_BOOL* isTooFewSamples);
00533 ESR_ReturnCode(*isSignalTooManySamples)(struct SR_Recognizer_t* self, ESR_BOOL* isTooManySamples);
00534 }
00535 SR_Recognizer;
00536
00544 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerStart(SR_Recognizer* self);
00553 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerStop(SR_Recognizer* self);
00554
00568 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerCreate(SR_Recognizer** self);
00575 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerDestroy(SR_Recognizer* self);
00583 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetup(SR_Recognizer* self);
00590 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerUnsetup(SR_Recognizer* self);
00598 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSetup(SR_Recognizer* self, ESR_BOOL* isSetup);
00599
00619 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerGetParameter(SR_Recognizer* self, const LCHAR* key, LCHAR* value, size_t* len);
00629 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerGetSize_tParameter(SR_Recognizer* self, const LCHAR* key, size_t* value);
00639 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerGetBoolParameter(SR_Recognizer* self, const LCHAR* key, ESR_BOOL* value);
00653 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetParameter(SR_Recognizer* self, const LCHAR* key, LCHAR* value);
00662 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetSize_tParameter(SR_Recognizer* self, const LCHAR* key, size_t value);
00671 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetBoolParameter(SR_Recognizer* self, const LCHAR* key, ESR_BOOL value);
00672
00693 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetupRule(SR_Recognizer* self,
00694 struct SR_Grammar_t* grammar,
00695 const LCHAR* ruleName);
00703 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerHasSetupRules(SR_Recognizer* self,
00704 ESR_BOOL* hasSetupRules);
00717 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerActivateRule(SR_Recognizer* self,
00718 struct SR_Grammar_t* grammar,
00719 const LCHAR* ruleName,
00720 unsigned int weight);
00729 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerDeactivateRule(SR_Recognizer* self,
00730 struct SR_Grammar_t* grammar,
00731 const LCHAR* ruleName);
00732
00739 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerDeactivateAllRules(SR_Recognizer* self);
00740
00750 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsActiveRule(SR_Recognizer* self,
00751 struct SR_Grammar_t* grammar,
00752 const LCHAR* ruleName,
00753 ESR_BOOL* isActiveRule);
00763 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerCheckGrammarConsistency(SR_Recognizer* self,
00764 struct SR_Grammar_t* grammar,
00765 ESR_BOOL* isConsistent);
00793 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerPutAudio(SR_Recognizer* self, asr_int16_t* buffer,
00794 size_t* bufferSize, ESR_BOOL isLast);
00810 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerAdvance(SR_Recognizer* self,
00811 SR_RecognizerStatus* status,
00812 SR_RecognizerResultType* type,
00813 SR_RecognizerResult** result);
00826 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogToken(SR_Recognizer* self, const LCHAR* token, const LCHAR* value);
00827
00836 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogTokenInt(SR_Recognizer* self, const LCHAR* token, int value);
00837
00846 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogEvent(SR_Recognizer* self, const LCHAR* event);
00847
00857 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogSessionStart(SR_Recognizer* self, const LCHAR* sessionName);
00858
00865 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogSessionEnd(SR_Recognizer* self);
00866
00879 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLogWaveformData(SR_Recognizer* self,
00880 const LCHAR* waveformFilename,
00881 const LCHAR* transcription,
00882 const double bos,
00883 const double eos,
00884 ESR_BOOL isInvocab);
00885
00886
00894 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLoadUtterance(SR_Recognizer* self, const LCHAR* filename);
00902 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerLoadWaveFile(SR_Recognizer* self, const LCHAR* filename);
00903
00913 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerSetLockFunction(SR_Recognizer* self,
00914 SR_RecognizerLockFunction function,
00915 void* data);
00916
00931 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalClipping(SR_Recognizer* self, ESR_BOOL* isClipping);
00939 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalDCOffset(SR_Recognizer* self, ESR_BOOL* isDCOffset);
00947 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalNoisy(SR_Recognizer* self, ESR_BOOL* isNoisy);
00955 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalTooQuiet(SR_Recognizer* self, ESR_BOOL* isTooQuiet);
00963 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalTooFewSamples(SR_Recognizer* self, ESR_BOOL* isTooFewSamples);
00971 SREC_RECOGNIZER_API ESR_ReturnCode SR_RecognizerIsSignalTooManySamples(SR_Recognizer* self, ESR_BOOL* isTooManySamples);
00972
00980 SREC_RECOGNIZER_API ESR_ReturnCode SR_Recognizer_Change_Sample_Rate ( SR_Recognizer *self, size_t new_sample_rate );
00981
00991 #endif