如何使用SAPI在VB6中启用*词典语音识别

问题描述:

最近,我一直在试图为学校创建一个聊天机器人,并且我想要的功能之一是语音识别。不幸的是,由于VB6被弃用的特性,关于使用SAPI进行VB6语音识别的教程非常少,没有任何关于启用*文字(简单地说,没有语法集并将语音转换为文本)的教程。如何使用SAPI在VB6中启用*词典语音识别

+0

您正在使用Microsoft语音API(SAPI)5.4是微软的Windows SDK的一部分,为Windows 7? –

+0

@PedroPolonia是的 –

Automation Interfaces and Objects (SAPI 5.4)有文档。

简单的例子:

Option Explicit 

'See "Automation Interfaces and Objects (SAPI 5.4)" at MSDN. 

Private WithEvents RC As SpeechLib.SpInProcRecoContext 
Private RG As SpeechLib.ISpeechRecoGrammar 

Private Sub Form_Load() 
    With New SpeechLib.SpInprocRecognizer 
     Set RC = .CreateRecoContext() 
     Set .AudioInput = .GetAudioInputs().Item(0) 
    End With 
    With RC 
     .EventInterests = SRERecognition Or SREFalseRecognition 
     Set RG = .CreateGrammar() 
    End With 
    RG.DictationSetState SGDSActive 
End Sub 

Private Sub Form_Resize() 
    If WindowState <> vbMinimized Then 
     Text1.Move 0, 0, ScaleWidth, ScaleHeight 
    End If 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
    RG.DictationSetState SGDSInactive 
End Sub 

Private Sub RC_FalseRecognition(_ 
    ByVal StreamNumber As Long, _ 
    ByVal StreamPosition As Variant, _ 
    ByVal Result As SpeechLib.ISpeechRecoResult) 

    With Text1 
     .SelStart = &H7FFF 
     .SelText = "False Rec: " 
     .SelText = Result.PhraseInfo.GetText() 
     .SelText = vbNewLine 
    End With 
End Sub 

Private Sub RC_Recognition(_ 
    ByVal StreamNumber As Long, _ 
    ByVal StreamPosition As Variant, _ 
    ByVal RecognitionType As SpeechLib.SpeechRecognitionType, _ 
    ByVal Result As SpeechLib.ISpeechRecoResult) 

    With Text1 
     .SelStart = &H7FFF 
     .SelText = "Rec: " 
     .SelText = Result.PhraseInfo.GetText() 
     .SelText = vbNewLine 
    End With 
End Sub