SR_Recognizer.h

00001 /*---------------------------------------------------------------------------*
00002  *  SR_Recognizer.h  *
00003  *                                                                           *
00004  *  Copyright 2007 Nuance Communciations, Inc.                               *
00005  *                                                                           *
00006  *  Licensed under the Apache License, Version 2.0 (the 'License');          *
00007  *  you may not use this file except in compliance with the License.         *
00008  *                                                                           *
00009  *  You may obtain a copy of the License at                                  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0                           *
00011  *                                                                           *
00012  *  Unless required by applicable law or agreed to in writing, software      *
00013  *  distributed under the License is distributed on an 'AS IS' BASIS,        *
00014  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 
00015  *  See the License for the specific language governing permissions and      *
00016  *  limitations under the License.                                           *
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 /* forward decl needed because of SR_Recognizer.h <-> SR_Grammar.h include loop */
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 /* __SR_RECOGNIZER_H */

Generated on Thu May 1 15:37:25 2008 for SREC by  doxygen 1.5.3