Следующий код был взят из URL:
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720590(v=vs.85)
Страница пытается что-то рассказать об этом, но она расплывчатая.
Следующий пример кода представляет собой простое, но функциональное приложение распознавания, использующее распознаватель в процессе (или InProc). Он использует грамматику диктовки и позволяет свободно диктовать. Комментированные строки ссылаются на гипотетические метки в форме для возможного отображения информации. Чтобы увидеть распознанную фразу, добавьте одну метку с именем Label1. Конечно, вы можете изменить это приложение в соответствии с вашими требованиями.
Перед запуском приложения должна быть включена речевая ссылка. С помощью меню «Проект»> «Ссылки» найдите и выберите библиотеку объектов речи Microsoft.
Для распознавателя InProc требуются дополнительные строки, которых нет для общих распознавателей. Для распознавателей InProc аудиообъект для ввода или вывода должен быть назначен явно.
'Dim WithEvents RC As SpInProcRecoContext
Dim Recognizer As SpInprocRecognizer
Dim myGrammar As ISpeechRecoGrammar
Sub Form_Load()
On Error GoTo EH
Set RC = New SpInProcRecoContext
Set Recognizer = RC.Recognizer
Set myGrammar = RC.CreateGrammar
myGrammar.DictationSetState SGDSActive
Dim Category As SpObjectTokenCategory
Set Category = New SpObjectTokenCategory
Category.SetId SpeechCategoryAudioIn
Dim Token As SpObjectToken
Set Token = New SpObjectToken
Token.SetId Category.Default()
Set Recognizer.AudioInput = Token
EH:
If Err.Number Then ShowErrMsg
End Sub
Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
On Error GoTo EH
Range("G8").Value = Result.PhraseInfo.GetText
EH:
If Err.Number Then ShowErrMsg
End Sub
Private Sub ShowErrMsg()
' Declare identifiers:
Const NL = vbNewLine
Dim T As String
T = "Desc: " & Err.Description & NL
T = T & "Err #: " & Err.Number
MsgBox T, vbExclamation, "Run-Time Error"
End
End Sub
Sub MyMacro()
Call Form_Load
Call RC_Recognition
End Sub````
Not able figure out how to call subroutine "RC_Recognition" that is taking some arguments.