MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 12.02.2018, 21:14   #1
Kluhtu
Neuer Benutzer
Neuer Benutzer
Standard Acc2016 - Access VBA Windows Speech Recognition

Guten Abend,

brauche jetzt doch mal professionelle Hilfe.

Und zwar haben einen neuen Mitarbeiter welcher unsere Datenbank nutzen will allerdings hat dieser eine Art Lähmung in der Hand.
Deshalb kam ich auf die Idee die Windows Sprachsteuerung für unsere Access DB zu nutzen allerdings hackt es da und ich Dreh mich nur im Kreis zudem finde ich nur Code-Beispiele für VB...

Also ich will nichts vorlesen lassen sondern nur auf Spracheingabe Befehle ausführen.

Wäre echt wichtig.
Kluhtu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 21:38   #2
markusxy
MOF Meister
MOF Meister
Standard

Zitat: von Kluhtu Beitrag anzeigen

allerdings hackt es da

Das Thema ist für mich ganz neu.
Was bedeutet das konkret und was hast du bis jetzt gemacht?
markusxy ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:17   #3
Kluhtu
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ja war/ist für mich auch neu...

Also ab Vista hat Windows ja eine eigene interne Spracherkennung.
Diese kann man mit einem Verweis "Microsoft Speech Object Libary" auch auswählen und nutzen.

Der Code sieht aktuell so aus:

Code:

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

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
Allerdings steigt er mir hier immer aus:

Code:

myGrammar.CmdLoadFromFile "sol.xml", SLODynamic
und sagt bei Fehler bei dem Objekt.

Wäre schön wenn einer einen weiteren Ansatz hat...
Kluhtu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:29   #4
markusxy
MOF Meister
MOF Meister
Standard

wie ist der genaue Wortlaut der Fehlermeldung.
Warum verwendest du für myGrammar LateBinding?

Hast du einen Link zu dem Thema?
Mein erster Treffer:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
markusxy ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 15:16   #5
Kluhtu
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Der genaue Wortlaut ist:

Zitat:

Die Methode 'CmdLoadFromFile' für das Objekt 'ISpeechRecoGrammar' ist fehlgeschlagen

Habe mir deinen Link angeschaut allerdings hat er mich nicht weitergebracht.
Kluhtu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 16:33   #6
Nouba
MOF Guru
MOF Guru
Standard

Ich würde ja zumindest einmal den Pfad komplett komplett angeben. Und sol.xml dürfte eher für Solitaire als eine individuelle Anwendung ausgelegt sein.

PS: Die von Markus erwähnte Methode wird nur funktionieren, wenn die XML-Datei als Resource vorliegt.
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 17:36   #7
Kluhtu
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Also bin jetzt einen Schritt weiter...

Hab Pfad ausgeschrieben das XML umbenannt.
Und neu geschrieben mit der Anleitung von MS.

Jetzt ist es so das die Spracherkennung startet -> ich kann z. B ein Wort aus meiner XML-Datei sagen und es per VBA auch wieder abfangen siehe Code...

Code:

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 "C:Users*****test.xml", SLODynamic
    myGrammar.CmdSetRuleState "rootRule", 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)
    Debug.Print "no recognition"           'Wenn falscher Wert hier.
End Sub

Private Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
    Debug.Print Result.PhraseInfo.GetText 'Wenn Übereinstimmung mit XML-Datei dann hier.
End Sub

Private Sub RC_StartStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
    Debug.Print Val(StreamNumber)       'Nach start der Spracherkennung hier.
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
Hier mal das XML-File

Code:

grammar version="1.0" xml:lang="de-DE" root="rootRule"
 xmlns="http://www.w3.org/2001/06/grammar">

  rule id="rootRule"
    item spielen /item
  /rule

/grammar
Jetzt aber ist das Problem, dass er immer Texteingaben machen will -.-
Bedeutet aktuell ist gerade ein Textfeld in meinem Formular fokussiert.
Dann sag ich irgendwas und zack macht er mir einen Vorschlag wie er es eintragen würde. Dann kann ich zwar auswählen "Eingeben" oder "Abbrechen" oder es eben einfach sagen aber eigentlich will ich das er nichts macht nur wenn die Wörter aus der XML-Datei gesprochen wurden.

Kennt sich jemand damit aus oder kann mir weiter helfen.

Geändert von Kluhtu (13.02.2018 um 17:38 Uhr).
Kluhtu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.