Salve a tutti. Sto sviluppando una piccola applicazioneche ha il compito di riconoscere la parola HELLO pronunciata da una persona e di rispondere con la voce di Microsoft Anna. La parte della sintesi vocale funziona perfettamente ma ho qualche problema con il riconoscimento vocale. Prima posto il codice e poi spiego.
codice:
Private Sub FormIniziale_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Load
'Creo un nuovo Engine di riconoscimento vocale,
Dim Engine As New SpeechRecognitionEngine
'un GrammarBuilder per costruire la grammatica
Dim GrammarBuilder As New GrammarBuilder
'e un oggetto Grammar che rappresenta la grammatica
Dim Grammar As Grammar
'All'avvio del form, imposto l'input dell'engine sul
'normale microfono (che deve essere collegato al computer).
'Uso un thread perchè altrimenti dà errore.
Dim T As New Threading.Thread( _
AddressOf Engine.SetInputToDefaultAudioDevice)
T.Start()
T.Join()
'Aggiungo le parole al GrammarBuilder
GrammarBuilder.Append(New Choices("HELLO"))
'Imposto la lingua a inglese
GrammarBuilder.Culture = _
Globalization.CultureInfo.GetCultureInfo("en-US")
'Costruisce la nuova grammatica con il GrammarBuilder
Grammar = New Grammar(GrammarBuilder)
'Elimino tutte le precedenti grammatiche
Engine.UnloadAllGrammars()
'E carico quella creata da me
Engine.LoadGrammar(Grammar) '<--Errore!!!
'Aggiungo l'evento SpeechRecognized alla routine Speech_Recognized.
AddHandler Engine.SpeechRecognized, AddressOf Speech_Recognized
End Sub
L'errore viene generato nella riga contrassegnata. L'eccezione è di tipo InvalidOperationException dal messaggio: "La lingua della grammatica non corrisponde alla lingua del riconoscimento vocale."
Aggiungo che sto lavorando su un sistema operativo Windows 7 la cui lingua è l'italiano. Probabilmente il motivo è questo ma come posso risolverlo??
Grazie in anticipo.