A fun little experiment on speech control. This is definitely not up to the caliber of the more advanced speech recognition devices, but does work.
- In Solution Explorer, right click the AdvancedHMI project and select Add reference
- Select System.Speech reference from the list
- In Solution Explorer right click the MainForm.vb and select View Code
- Add this code:
Private WithEvents sp As New System.Speech.Recognition.SpeechRecognitionEngine(New System.Globalization.CultureInfo("en-US"))
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'// Create And load a dictation grammar.
sp.LoadGrammar(New System.Speech.Recognition.DictationGrammar())
'// Configure input to the speech recognizer.
sp.SetInputToDefaultAudioDevice()
'// Start asynchronous, continuous speech recognition.
sp.RecognizeAsync(System.Speech.Recognition.RecognizeMode.Multiple)
End Sub
Private Sub sp_SpeechRecognized(sender As Object, e As System.Speech.Recognition.SpeechRecognizedEventArgs) Handles sp.SpeechRecognized
Me.Text = e.Result.Text
If e.Result.Text.IndexOf("press", StringComparison.CurrentCultureIgnoreCase) >= 0 And e.Result.Text.IndexOf("button", StringComparison.CurrentCultureIgnoreCase) >= 0 Then
'* Write the button press bit to the PLC
'* EthernetIPforCLXCom1.Write("MyButton","1")
MsgBox("Button will be pressed")
End If
End Sub
- Run the application and talk to it. You will see the result in the form's title bar.
The next step for improved recognition would be to use Microsoft's Azure services. I tried this demo and it works quite well:
https://azure.microsoft.com/en-us/services/cognitive-services/speech-to-text/