用PowerBuilder9-调用windows语音
识别API实现语音识别
-
首先,需要在Windows操作系统上安装语音识别引擎(如Microsoft Speech Recognition Engine)。
-
在PowerBuilder中,需要使用OLE对象来调用语音识别API。
-
创建OLE对象,指定需要调用的API名称和GUID。
例如,以下代码创建了一个SpeechRecognitionEngine对象并指定了其GUID:
OLEObject lole_speech_recognition_engine lole_speech_recognition_engine = CREATE OLEObject lole_speech_recognition_engine.ConnectToNewObject("SAPI.SpInprocRecognizer") lole_speech_recognition_engine.Profile = "SR_MS_en-US_TELE_11.0"
- 设置语音识别引擎的属性,如语音输入设备、语音识别模式等。
例如,以下代码设置了语音输入设备:
lole_speech_recognition_engine.AudioInput = lole_speech_recognition_engine.GetAudioInputs.Item[0]
- 创建语法规则,用于指定识别的语音命令。
例如,以下代码创建了一个简单的语法规则,用于识别“Hello”和“Goodbye”两个命令:
OLEObject lole_grammar lole_grammar = lole_speech_recognition_engine.CreateGrammar(1) lole_grammar.DictationSetState(0) lole_grammar.DictationLoad("", SpeechLoadOption.SLOStatic) lole_grammar.DictationSetState(SpeechRuleState.SGDSActive) lole_grammar.CmdSetRuleState("Hello", SpeechRuleState.SGDSActive) lole_grammar.CmdSetRuleState("Goodbye", SpeechRuleState.SGDSActive)
- 注册语法规则,用于启用语音识别。
例如,以下代码注册了上一步创建的语法规则:
lole_speech_recognition_engine.GrammarsLoad("", SpeechLoadOption.SLOStatic) lole_speech_recognition_engine.GrammarsSetRuleState("", SpeechRuleState.SGDSInactive) lole_speech_recognition_engine.GrammarsSetRuleState("Hello", SpeechRuleState.SGDSActive) lole_speech_recognition_engine.GrammarsSetRuleState("Goodbye", SpeechRuleState.SGDSActive)
- 开始语音识别,等待用户输入语音命令。
例如,以下代码启动了语音识别并等待用户输入命令:
lole_speech_recognition_engine.RecognizerSetState(SpeechRecognizerState.SRSActive) lole_speech_recognition_engine.WaitUntilDone(-1)
- 当用户输入命令时,语音识别引擎将触发Recognition事件,该事件将返回识别结果。
例如,以下代码处理Recognition事件并输出识别结果:
// Declare the event function FUNCTION ue_speech_recognition_event(OLEObject ole, String event_name, Integer event_id) RETURNS Integer // Check the event ID IF event_id = SpeechRecognitionType.SRTStreamEnd THEN // End of speech stream RETURN 0 ELSEIF event_id = SpeechRecognitionType.SRTRecognize THEN // Recognition result String ls_result ls_result = ole.Recognition.RecognizedPhrase.Text MessageBox("Speech Recognition", "You said: " + ls_result) RETURN 0 ELSE // Other events RETURN 0 END IF END FUNCTION
// Register the event function lole_speech_recognition_engine.RegisterEvent("Recognition", this, "ue_speech_recognition_event")
- 最后,需要在程序结束时释放OLE对象。
例如,以下代码释放了SpeechRecognitionEngine和Grammar对象:
lole_speech_recognition_engine.RecognizerSetState(SpeechRecognizerState.SRSInactive) lole_speech_recognition_engine.DisconnectObject() DESTROY lole_speech_recognition_engine DESTROY lole_grammar
这样,就可以使用PowerBuilder调用Windows语音识别API实现语音识别了。
原文地址: https://www.cveoy.top/t/topic/gSZ 著作权归作者所有。请勿转载和采集!