00001 #pragma once
00002
00015 #ifdef ENABLE_NI_SPEECH
00016
00017 #include "NiToolWin.h"
00018
00019 #include <sapi.h>
00020 #include <sphelper.h>
00021
00022
00023
00024 #pragma comment(lib, "sapi.lib")
00025
00026
00027 #define NI_SPEECH_LANG_US "Language=409"
00028 #define NI_SPEECH_LANG_JP "Language=411"
00029
00030 #define NI_SPEECH_LANG_US_KINECT "Language=409;Kinect=True"
00031 #define NI_SPEECH_LANG_JP_KINECT "Language=411;Kinect=True"
00032
00033
00034
00035 namespace jbxwl {
00036
00037
00038
00039
00040
00041 class CNiSpeech
00042 {
00043 public:
00044 CNiSpeech(IStream* stream=NULL, WAVEFORMATEX* format=NULL);
00045 virtual ~CNiSpeech(void) {}
00046
00047 void free(void);
00048
00049
00050 BOOL init(IStream* stream, WAVEFORMATEX* format);
00051 BOOL create(LPCTSTR lang);
00052 BOOL load(LPCTSTR file);
00053
00054
00055 BOOL start(double confidence);
00056 void stop(void);
00057
00058 void setConfidence(double confd);
00059
00060 private:
00061 static UINT speechThread(LPVOID pParam);
00062 UINT speechThread(void);
00063 void process(void);
00064
00065 protected:
00066 virtual void map2action(LPCTSTR tag, double confd);
00067
00068 protected:
00069 ISpStream* m_pSpeechStream;
00070 ISpRecognizer* m_pSpeechRecognizer;
00071 ISpRecoContext* m_pSpeechContext;
00072 ISpRecoGrammar* m_pSpeechGrammar;
00073
00074 HANDLE m_hSpeechEvent;
00075 HANDLE m_hStopEvent;
00076
00077 CWinThread* m_speechThread;
00078
00079 double m_confidence;
00080 };
00081
00082
00083 }
00084
00085
00086 #endif // ENABLE_NI_SPEECH