识别API实现语音识别

  1. 首先,需要在Windows操作系统上安装语音识别引擎(如Microsoft Speech Recognition Engine)。

  2. 在PowerBuilder中,需要使用OLE对象来调用语音识别API。

  3. 创建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"

  1. 设置语音识别引擎的属性,如语音输入设备、语音识别模式等。

例如,以下代码设置了语音输入设备:

lole_speech_recognition_engine.AudioInput = lole_speech_recognition_engine.GetAudioInputs.Item[0]

  1. 创建语法规则,用于指定识别的语音命令。

例如,以下代码创建了一个简单的语法规则,用于识别“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)

  1. 注册语法规则,用于启用语音识别。

例如,以下代码注册了上一步创建的语法规则:

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)

  1. 开始语音识别,等待用户输入语音命令。

例如,以下代码启动了语音识别并等待用户输入命令:

lole_speech_recognition_engine.RecognizerSetState(SpeechRecognizerState.SRSActive) lole_speech_recognition_engine.WaitUntilDone(-1)

  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")

  1. 最后,需要在程序结束时释放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实现语音识别了。

用PowerBuilder9-调用windows语音

原文地址: https://www.cveoy.top/t/topic/gSZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录