//调用SpInprocRecognizer
 
import win.ui;
/*DSG{{*/
var winform = ..win.form(text="调用SpInprocRecognizer";right=599;bottom=399)
winform.add(
edit={cls="edit";left=21;top=19;right=583;bottom=374;edge=1;multiline=1;z=1}
)
/*}}*/

var spRecognizer = com.CreateObject("SAPI.SpInprocRecognizer" )  
spRecognizer.AudioInput = spRecognizer.GetAudioInputs().Item(0); 
 
var recoContext = spRecognizer.CreateRecoContext();   
var dicGrammar =  recoContext.CreateGrammar();
dicGrammar.DictationSetState(spRecognizer.SGDSActive);
 
var menuRule = dicGrammar.Rules.Add("wordsRule", 0x1|0x20)
menuRule.Clear();
menuRule.InitialState.AddWordTransition(null, "你好", " ", spRecognizer.SGLexical, "你好", 1, "", 1.0);  
dicGrammar.CmdSetRuleState("wordsRule", spRecognizer.SGDSActive)
dicGrammar.Rules.Commit()
 
RecognitionEvents = {

    Recognition = function(streamNumber,streamPosition,recogType,recoResult) {  
           var text = recoResult.PhraseInfo.GetText()  
           winform.edit.log("识别完成:",text ,'\r\n' )
    }
    
    Hypothesis = function(streamNumber , streamPosition, recoResult){
        for index,el in com.each(recoResult.PhraseInfo.Elements) { 
            winform.edit.log(el.DisplayText ,'\r\n' )
        }  
    }  
}
//添加事件触发器
com.Connect(recoContext, RecognitionEvents  )
 
winform.show()  
recoContext.Voice.Speak("你好");  

win.loopMessage();
 
