首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Win32 API访问语音识别?

如何通过Win32 API访问语音识别?
EN

Stack Overflow用户
提问于 2022-01-11 02:19:57
回答 1查看 154关注 0票数 2

我试图更新一个非常古老的VB6程序,以提供语音识别。我认为最好的方法是访问用于语音识别的Win32 API。

在MS文档中寻找这个。看起来,这一点以前是通过SAPI 5.3来完成的,这个问题已经被不推荐使用的MS Agent所取代,而MS Agent本身就是不推荐的。

EN

回答 1

Stack Overflow用户

发布于 2022-01-11 14:39:14

http://msdn.microsoft.com/en-us/library/ms720589(VS.85).aspx

上面的链接是旧的(因为我在10年前使用过),但是是有效的。您基本上创建了适当的对象,可能以它们的格式创建语法,然后在RC对象上创建事件,如下所示:

下面的方法“工作”,但它不是很令人印象深刻。此外,它还导致我们不得不创建自己的MsgBox函数,因为我们需要自动化everything.而且,由于您不能告诉Windows“单击”标准消息框的OK按钮(除非您想要处理更多的API),所以您必须控制软件的更多方面。

确实起作用了,但我不确定有人用过它。

代码语言:javascript
复制
Public WithEvents RC As SpSharedRecoContext
Public myGrammar, b As ISpeechRecoGrammar

Private Sub Form_Load()
    On Error GoTo EH

    Set RC = New SpSharedRecoContext

    Set myGrammar = RC.CreateGrammar
    myGrammar.CmdLoadFromFile "sol.xml", SLODynamic
    myGrammar.CmdSetRuleIdState 0, SGDSActive

EH:
    If Err.Number Then ShowErrMsg
End Sub

Private Sub RC_FalseRecognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal Result As SpeechLib.ISpeechRecoResult)
    'Label1.Caption = "(no recognition)"
End Sub

Private Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
    'Label1.Caption = Result.PhraseInfo.GetText
End Sub

Private Sub RC_StartStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
    'Label2.Caption = Val(StreamNumber)
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70660935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档