22 #define MAX_EDIT_TEXT 1000
23 #define GID_DICTATION 0
25 #define WM_RECOEVENT WM_APP
27 using namespace yarp::os;
28 using namespace yarp::sig;
30 class SpeechRecognizerModule:
public RFModule
34 Port m_portContinuousRecognition;
35 Port m_portContinuousRecognitionGrammar;
37 Port m_port2iSpeakRpc;
38 BufferedPort<Sound> m_portSound;
41 CComPtr<ISpAudio> m_cpAudio;
42 CComPtr<ISpRecognizer> m_cpRecoEngine;
43 CComPtr<ISpRecoContext> m_cpRecoCtxt;
44 CComPtr<ISpRecoGrammar> m_cpGrammarFromFile;
45 CComPtr<ISpRecoGrammar> m_cpGrammarRuntime;
46 CComPtr<ISpRecoGrammar> m_cpGrammarDictation;
49 CSpStreamFormat m_cAudioFmt;
50 CComPtr <ISpStream> m_streamFormat;
54 map<string, list<string> > m_vocabulories;
58 bool interruptRecognition;
59 string m_tmpFileFolder;
65 bool configure(ResourceFinder &rf);
71 bool handleInterrupt(
const Bottle& cmd, Bottle& reply);
74 bool handleRGMCmd(
const Bottle& cmd, Bottle& reply);
77 bool handleAsyncRecognitionCmd(
const Bottle& cmd, Bottle& reply);
80 bool refreshFromVocabulories(CComPtr<ISpRecoGrammar> grammarToModify);
83 bool handleVocabuloryCmd(
const Bottle& cmd, Bottle& reply);
86 bool handleRecognitionCmd(
const Bottle& cmd, Bottle& reply);
89 bool setGrammarCustom(CComPtr<ISpRecoGrammar> grammarToModify,
string grammar,
bool append);
92 string getFromDictaction(
int timeout, LPCWSTR options=NULL);
95 list< pair<string, double> > waitNextRecognitionLEGACY(
int timeout);
98 Bottle waitNextRecognition(
int timeout);
101 void say(
string s,
bool wait=
true);
104 Bottle toBottle(SPPHRASE* pPhrase,
const SPPHRASERULE* pRule );
107 bool respond(
const Bottle& cmd, Bottle& reply);
110 bool interruptModule()
112 yInfo() <<
"Interrupting ports...";
113 m_portRPC.interrupt();
114 m_portContinuousRecognition.interrupt();
115 m_portContinuousRecognitionGrammar.interrupt();
116 m_port2iSpeak.interrupt();
117 m_port2iSpeakRpc.interrupt();
118 m_portSound.interrupt();
126 yInfo() <<
"Closing ports...";
128 m_portContinuousRecognition.close();
129 m_portContinuousRecognitionGrammar.close();
130 m_port2iSpeak.close();
131 m_port2iSpeakRpc.close();
144 bool loadGrammarFromRf(ResourceFinder &RF);
147 yarp::sig::Sound toSound(CComPtr<ISpRecoResult> cpRecoResult);